{"_id":"@d7x7/pi-good-communication","_rev":"2-c596dcadafadc20d42b9720ff4c9d323","name":"@d7x7/pi-good-communication","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@d7x7/pi-good-communication","version":"0.1.0","keywords":["pi-package"],"_id":"@d7x7/pi-good-communication@0.1.0","maintainers":[{"name":"sha_dow","email":"shal0ldow@outlook.com"}],"homepage":"https://github.com/D7x7z49/llm-context-idea/tree/main/pi/extensions/communication#readme","bugs":{"url":"https://github.com/D7x7z49/llm-context-idea/issues"},"pi":{"extensions":["./src/index.ts"]},"dist":{"shasum":"191ae166503f8f15efdab5698d2c75c76598ba7b","tarball":"https://registry.npmjs.org/@d7x7/pi-good-communication/-/pi-good-communication-0.1.0.tgz","fileCount":3,"integrity":"sha512-q2Bp3kd71yw/sE+EEStNctB04Y5qquv8I7XjSJ/HGdn3tElMBvn/MMsx9XWNGXTMMUblr/232qESS7vQfWfZxw==","signatures":[{"sig":"MEYCIQCd56TVNi4V53A00Vdiga6/3JDzJ9NaNmhNw1w9E/hKLwIhAOQ0yfNHPZ/pTTG+aBHzKo9B3WTWGLeiafNkC4aZ5Bur","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6314},"type":"module","gitHead":"c36c4bdfe6258f55f3d22267eaa5a09c21a58aeb","scripts":{"test":"tsx --test test/*.unit.test.ts","test:integration":"tsx --test test/*.integration.test.ts"},"_npmUser":{"name":"sha_dow","email":"shal0ldow@outlook.com"},"repository":{"url":"git+https://github.com/D7x7z49/llm-context-idea.git","type":"git","directory":"pi/extensions/communication"},"_npmVersion":"11.6.2","description":"good communication discipline for pi — keep conversations oral, complex ideas written","directories":{},"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@earendil-works/pi-coding-agent":"^0.77.0"},"peerDependencies":{"@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"tmp":"tmp/pi-good-communication_0.1.0_1780051265771_0.3316710757580519","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"pi":{"extensions":["./src/index.ts"]},"_id":"@d7x7/pi-good-communication@0.2.0","bugs":{"url":"https://github.com/D7x7z49/llm-context-idea/issues"},"dist":{"shasum":"56003ad5a8ebdb13b93bba65a4c1cc45fede6c0a","tarball":"https://registry.npmjs.org/@d7x7/pi-good-communication/-/pi-good-communication-0.2.0.tgz","fileCount":8,"integrity":"sha512-Do78Z/gcz8N/JquD7EEptimzpdOAPNoPNuMVULRhwoIKdIZMHD2tBGwlV11vCt2lfoOmlxcMks1tJY3PG0MDvQ==","signatures":[{"sig":"MEUCIQDjOTpkipZ/+TsXsJ/jclX2OSNpW+cIp99skYLr9/mm6wIgRSfa9INTad9C2ZpO84ZKIR+bMQHY4VyqNcFZrCbLuDM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDyomXED6jOxzgJeE65ZrnHDWitApxe2si5Ox2WhkYl5AiBvCZCfhEElztDKZNYsTxNhADLyXNa3+gOBhAv2rjEajQ=="}],"unpackedSize":32431},"name":"@d7x7/pi-good-communication","type":"module","gitHead":"4ea6d4ae82b02d837de0f52fe00b5f36d33dbab0","scripts":{"test":"tsx --test test/*.unit.test.ts","test:integration":"tsx --test test/*.integration.test.ts"},"version":"0.2.0","_npmUser":{"name":"sha_dow","email":"shal0ldow@outlook.com"},"homepage":"https://github.com/D7x7z49/llm-context-idea/tree/main/pi/extensions/communication#readme","keywords":["pi-package"],"repository":{"url":"git+https://github.com/D7x7z49/llm-context-idea.git","type":"git","directory":"pi/extensions/communication"},"_npmVersion":"11.19.0","description":"good communication discipline for pi — keep conversations oral, complex ideas written","directories":{},"maintainers":[{"name":"sha_dow","email":"shal0ldow@outlook.com"}],"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@earendil-works/pi-coding-agent":"^0.85.1"},"peerDependencies":{"@earendil-works/pi-coding-agent":"*"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pi-good-communication_0.2.0_1789542419331_0.07238860786338042"}}},"time":{"created":"2026-05-29T10:41:05.623Z","modified":"2026-09-16T07:06:59.661Z","0.1.0":"2026-05-29T10:41:05.908Z","0.2.0":"2026-09-16T07:06:59.423Z"},"bugs":{"url":"https://github.com/D7x7z49/llm-context-idea/issues"},"homepage":"https://github.com/D7x7z49/llm-context-idea/tree/main/pi/extensions/communication#readme","keywords":["pi-package"],"repository":{"url":"git+https://github.com/D7x7z49/llm-context-idea.git","type":"git","directory":"pi/extensions/communication"},"description":"good communication discipline for pi — keep conversations oral, complex ideas written","maintainers":[{"name":"sha_dow","email":"shal0ldow@outlook.com"}],"readme":"# pi-good-communication\n\ngood communication discipline for the pi coding agent.\n\nconversation stays oral and immediate.\ncomplex ideas persist as written artefacts.\n\n## concept\n\na pi session is a Shannon communication channel.\n\nthe Information Source [SRC] is the user, which encodes intent as natural language.\nthe Destination [DST] is the agent, which decodes language, acts, and encodes a response.\n\neach signal should be short, single-purpose, and free of structural noise.\nthis extension enforces that at both ends.\n\ninspired by the WAL GUIDANCE block:\n\n```ebnf\n(*\n  GUIDANCE.\n  One line. One step.\n  One step. One job only.\n  For LLM steps. Keep text short.\n  If more detail is needed, write a document.\n  For shell steps. Do not use pipe, && or ||.\n  Write a script file instead.\n*)\n```\n\n## oral and written\n\nconversation is oral, so it stays immediate, transient, and lived.\ndocuments and scripts are written, so they stay durable, revisable, and shared.\n\nroute complexity away from the channel toward four targets.\n\n- keep project documents in `docs/` for design notes, rationale, and decisions.\n- keep project scripts in `scripts/` for reusable and auditable tools.\n- keep transient documents in `tmp/docs/` for dependency notes and scratch reasoning.\n- keep transient scripts in `tmp/scripts/` for one-off helpers and experimental tooling.\n\nthe first two are project assets under version control.\nthe last two reference external concerns or material not yet ready to commit.\n\n## unit\n\none unit is one code point.\na run of a word-spacing script costs one unit for the whole run.\n\n- count `hello` as 1 unit.\n- count `hello world` as 3 units.\n- count `你好` as 2 units.\n- count `2024-09-15` as 10 units.\n\nthe exemption table in `src/ranges.ts` lists 22 word-spacing scripts:\n\n- latin, cyrillic, greek, armenian, georgian, hebrew, arabic, and syriac.\n- thaana, devanagari, bengali, gurmukhi, gujarati, oriya, tamil, and telugu.\n- kannada, malayalam, sinhala, ethiopic, cherokee, and hangul.\n\nhan, kana, thai, lao, tibetan, myanmar, and khmer have no word spacing,\nso their code points count one by one.\nwhitespace, punctuation, and digits count one by one as well.\n\n## src-msg\n\nthe src-msg guard limits a user prompt to 160 units.\n\n- pass silently below 160 units.\n- block at or above 160 units.\n\n```typescript\ndecideUnits(measureUnits(event.text), THRESHOLDS.prose);\n```\n\n## src-cmd\n\nthe src-cmd guard limits a user shell command to 80 units.\nit intercepts `!` and `!!` through the `user_bash` event.\n\n- pass below 80 units.\n- block at or above 80 units.\n\n```typescript\ndecideUnits(measureUnits(event.command), THRESHOLDS.shell);\n```\n\n## dst-bash\n\nthe dst-bash guard limits an agent shell command to 80 units.\n\n- pass silently below 80 units.\n- block at or above 80 units.\n\non failure, the guard suggests extracting the command into a standalone script.\nthat keeps debugging and re-runs cheap.\n\n```typescript\ndecideUnits(measureUnits(command), THRESHOLDS.shell);\n```\n\n## together\n\nthe three guards keep the channel short.\n\n- keep prompts below 160 units with the src-msg guard.\n- keep user shell commands below 80 units with the src-cmd guard.\n- keep agent shell commands below 80 units with the dst-bash guard.\n\neach guard has two zones.\nit acts mechanically, with no prompts and no confirmations.\na passing signal gets measured once, then continues unchanged.\n\nthis is a communication discipline, not a security boundary.\nwhen used with pi-wal, the guards enforce clean structure and WAL records clean steps.\n","readmeFilename":"README.md"}