{"_id":"@agentfiber/voice-grammar-en","_rev":"5-d0dcdf3ce756a926133f4f7f849843af","name":"@agentfiber/voice-grammar-en","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.0":{"name":"@agentfiber/voice-grammar-en","version":"0.1.0","license":"MIT","_id":"@agentfiber/voice-grammar-en@0.1.0","maintainers":[{"name":"tereby","email":"a@appg.dev"}],"homepage":"https://agentfiber.org","bugs":{"url":"https://github.com/tereby/agentic-tv-ui/issues"},"dist":{"shasum":"8b95072edfd7817bbaff2df89886873dac6acf74","tarball":"https://registry.npmjs.org/@agentfiber/voice-grammar-en/-/voice-grammar-en-0.1.0.tgz","fileCount":9,"integrity":"sha512-UMOxp4p9FLCohuyAxAWeVvcThlPJVWbvXiKaXzHYy2LkyBBw8xATFHm1Q6KHbLuYpfLOPgrs/a8J7OZc+wOw+g==","signatures":[{"sig":"MEYCIQD452YVQo2yAzufF2eQUH/R3e2g6Ojbb6ssWa0lj5X9sAIhAIR0Dm5aGwcwh4Tja/Sprs1D/uKzMBsaAmeXB3n/nYJr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17921},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./directional":{"types":"./dist/directional.d.ts","import":"./dist/directional.js","default":"./dist/directional.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","prepack":"pnpm build","prepare":"pnpm build","typecheck":"tsc --noEmit","smoke:pack":"node ../../scripts/smoke-agentfiber-voice-grammar-en-pack.mjs"},"_npmUser":{"name":"tereby","email":"a@appg.dev"},"deprecated":"Broken dependency metadata; use @agentfiber/voice-grammar-en@0.1.1 or later.","repository":{"url":"git+https://github.com/tereby/agentic-tv-ui.git","type":"git","directory":"packages/agentfiber-voice-grammar-en"},"_npmVersion":"10.9.3","description":"Optional extensible English UI grammar for AgentFiber voice matchers.","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","dependencies":{"@agentfiber/voice":"workspace:^"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"2.1.5","typescript":"5.6.3"},"_npmOperationalInternal":{"tmp":"tmp/voice-grammar-en_0.1.0_1787662987929_0.4603527920739434","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@agentfiber/voice-grammar-en","version":"0.1.1","license":"MIT","_id":"@agentfiber/voice-grammar-en@0.1.1","maintainers":[{"name":"tereby","email":"a@appg.dev"}],"homepage":"https://agentfiber.org","bugs":{"url":"https://github.com/tereby/agentic-tv-ui/issues"},"dist":{"shasum":"cee9766adbc3f503d619f8a59c668740a10e3a47","tarball":"https://registry.npmjs.org/@agentfiber/voice-grammar-en/-/voice-grammar-en-0.1.1.tgz","fileCount":9,"integrity":"sha512-iQ3Veadzl1sg00nYwQkx0Ie/i70gTVpA+g+x9ldXIMN3+KUhGAQcZIaOK0l3sIOGyU7MonOxQ3IgVA88SSgsQg==","signatures":[{"sig":"MEUCIAq5OggZWD6J19YP+JCrZPJuQ8e+4YaQfZ3yxwtQ59MAAiEAvfg8C6457YB08flBzb5xY9RqHoDrHZFpsM8HhPew64c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17916},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./directional":{"types":"./dist/directional.d.ts","import":"./dist/directional.js","default":"./dist/directional.js"}},"scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","prepack":"pnpm build","prepare":"pnpm build","typecheck":"tsc --noEmit","smoke:pack":"node ../../scripts/smoke-agentfiber-voice-grammar-en-pack.mjs"},"_npmUser":{"name":"tereby","email":"a@appg.dev"},"repository":{"url":"git+https://github.com/tereby/agentic-tv-ui.git","type":"git","directory":"packages/agentfiber-voice-grammar-en"},"_npmVersion":"10.9.3","description":"Optional extensible English UI grammar for AgentFiber voice matchers.","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","dependencies":{"@agentfiber/voice":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"2.1.5","typescript":"5.6.3"},"_npmOperationalInternal":{"tmp":"tmp/voice-grammar-en_0.1.1_1787663415010_0.3525384710798216","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@agentfiber/voice-grammar-en","version":"0.1.2","license":"MIT","_id":"@agentfiber/voice-grammar-en@0.1.2","maintainers":[{"name":"tereby","email":"a@appg.dev"}],"homepage":"https://agentfiber.org","bugs":{"url":"https://github.com/tereby/agentic-tv-ui/issues"},"dist":{"shasum":"66c3453fadcf2e75bc380aabeb3fb9fc7cc827c8","tarball":"https://registry.npmjs.org/@agentfiber/voice-grammar-en/-/voice-grammar-en-0.1.2.tgz","fileCount":9,"integrity":"sha512-tGblzMAU+KtEPGHcEkxLekIlfqwlrNEE8gnpxRDCUlqVGA5JNRy1D63E3F/nKjGMlOmBvd5OZXtWa+07uEmYuA==","signatures":[{"sig":"MEYCIQDQuYEaloEd+B72Dmb3rnk+4omqdoriRFwvGxMv7jAGYQIhAIZ7rGC5nxtBAkvDHnvZH3JftBMrVHYD4ybAbJwfVHmf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19479},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./directional":{"types":"./dist/directional.d.ts","import":"./dist/directional.js","default":"./dist/directional.js"}},"gitHead":"293636879b455c75871653bdb29979a73c4004b9","scripts":{"test":"vitest run","build":"tsc -p tsconfig.build.json","prepack":"pnpm build","prepare":"pnpm build","typecheck":"tsc --noEmit","smoke:pack":"node ../../scripts/smoke-agentfiber-voice-grammar-en-pack.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8ee39893-645f-45b7-9878-328766c8b9d5"}},"repository":{"url":"git+https://github.com/tereby/agentic-tv-ui.git","type":"git","directory":"packages/agentfiber-voice-grammar-en"},"_npmVersion":"11.6.2","description":"Optional extensible English UI grammar for AgentFiber voice matchers.","directories":{},"sideEffects":false,"_nodeVersion":"22.18.0","dependencies":{"@agentfiber/voice":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"2.1.5","typescript":"5.6.3"},"_npmOperationalInternal":{"tmp":"tmp/voice-grammar-en_0.1.2_1787777545637_0.9741497692506513","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@agentfiber/voice-grammar-en","version":"0.1.3","description":"Optional extensible English UI grammar for AgentFiber voice matchers.","license":"MIT","repository":{"type":"git","url":"git+https://github.com/dobreadi/agentfiber-voice.git","directory":"packages/agentfiber-voice-grammar-en"},"homepage":"https://github.com/dobreadi/agentfiber-voice/tree/main/packages/agentfiber-voice-grammar-en#readme","bugs":{"url":"https://github.com/dobreadi/agentfiber-voice/issues"},"type":"module","sideEffects":false,"publishConfig":{"access":"public"},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./directional":{"types":"./dist/directional.d.ts","import":"./dist/directional.js","default":"./dist/directional.js"}},"scripts":{"build":"tsc -p tsconfig.build.json","prepare":"pnpm build","prepack":"pnpm build","smoke:pack":"node ../../scripts/smoke-agentfiber-voice-grammar-en-pack.mjs","typecheck":"tsc --noEmit","test":"vitest run"},"engines":{"node":">=20.0.0"},"dependencies":{"@agentfiber/voice":"^0.1.0"},"devDependencies":{"typescript":"5.6.3","vitest":"2.1.5"},"_id":"@agentfiber/voice-grammar-en@0.1.3","_integrity":"sha512-BMvZ655fzIwLjSikvpnYKLYQHA4F+5rKm/JOKSmI12MFj+zd3p+vB472DdYgTIPXA3r1k89T+ekCXhEMPtV1uA==","_resolved":"/tmp/agentfiber-release-ee7zEt/voice-grammar-en/agentfiber-voice-grammar-en-0.1.3.tgz","_from":"file:/tmp/agentfiber-release-ee7zEt/voice-grammar-en/agentfiber-voice-grammar-en-0.1.3.tgz","_nodeVersion":"24.20.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-BMvZ655fzIwLjSikvpnYKLYQHA4F+5rKm/JOKSmI12MFj+zd3p+vB472DdYgTIPXA3r1k89T+ekCXhEMPtV1uA==","shasum":"febd5170d4b01f3645361dd9f8276fcca3bf3300","tarball":"https://registry.npmjs.org/@agentfiber/voice-grammar-en/-/voice-grammar-en-0.1.3.tgz","fileCount":9,"unpackedSize":19507,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@agentfiber%2fvoice-grammar-en@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDI4cBsyW9U3Jo5PRmuNYt6SjalJm3CaT+Y6JO8e3/zEwIhAPeKx5XI49EvXDyifroqMAtv0rMN1Ht6KlfYOiNdGx3A"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:4e26588a-ca5a-4a48-b8b3-77049b460f75"}},"directories":{},"maintainers":[{"name":"tereby","email":"a@appg.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/voice-grammar-en_0.1.3_1789573231908_0.5738496520455578"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-25T13:03:07.719Z","modified":"2026-09-16T15:40:32.529Z","0.1.0":"2026-08-25T13:03:08.098Z","0.1.1":"2026-08-25T13:10:15.123Z","0.1.2":"2026-08-26T20:52:25.780Z","0.1.3":"2026-09-16T15:40:32.042Z"},"bugs":{"url":"https://github.com/dobreadi/agentfiber-voice/issues"},"license":"MIT","homepage":"https://github.com/dobreadi/agentfiber-voice/tree/main/packages/agentfiber-voice-grammar-en#readme","repository":{"type":"git","url":"git+https://github.com/dobreadi/agentfiber-voice.git","directory":"packages/agentfiber-voice-grammar-en"},"description":"Optional extensible English UI grammar for AgentFiber voice matchers.","maintainers":[{"name":"tereby","email":"a@appg.dev"}],"readme":"# `@agentfiber/voice-grammar-en`\n\nAn optional, extensible English grammar for deterministic AgentFiber voice matching.\n\n## Install and choose a package\n\n```sh\nnpm install @agentfiber/voice-grammar-en\n```\n\nUse the root export for conservative English defaults plus bounded exact product extensions.\nUse `@agentfiber/voice-grammar-en/directional` when a product retains its own\ncomplete grammar and only wants the directional parser. Use\n[`@agentfiber/voice`](../agentfiber-voice/README.md) directly when you need contracts,\nnormalization, custom tier walking, or dispatch without English defaults. The grammar package\nalready declares `@agentfiber/voice` as a runtime dependency.\n\nThe package deliberately sits beside `@agentfiber/voice`, not inside it:\n\n- applications that do not need an English grammar do not install or load it;\n- locale grammar and substrate contracts can version independently; and\n- `@agentfiber/voice` remains product- and locale-neutral.\n\nIt ships conservative UI intents for back, dismiss, activate, help, directional movement, and\nan explicit `unmatched` result. Matching is pure and synchronous. It performs no I/O, executes\nno action, grants no authority, creates no timers, and has no product, TV, home, or medical\nvocabulary.\n\n## Use the defaults\n\n```ts\nimport { matchEnglishVoice } from \"@agentfiber/voice-grammar-en\";\n\nmatchEnglishVoice(\"please scroll right\");\n// { kind: \"move\", direction: \"right\", steps: 3 }\n\nmatchEnglishVoice(\"something product-specific\");\n// { kind: \"unmatched\", transcript: \"something product-specific\", normalized: \"...\" }\n```\n\n`unmatched` is intentional. A reusable grammar must not silently turn an unknown household,\ntelevision, or clinical command into a search or an action.\n\n## Extend it for a product\n\n```ts\nimport { createEnglishVoiceMatcher } from \"@agentfiber/voice-grammar-en\";\n\ntype ProductIntent =\n  | { kind: \"open-settings\" }\n  | { kind: \"ask\"; question: string };\n\nconst match = createEnglishVoiceMatcher<ProductIntent>({\n  wakePhrases: [\"atlas\", \"hey atlas\", \"okay atlas\"],\n  extensionPhrases: [[\"open settings\", { kind: \"open-settings\" }]],\n  fallback: ({ transcript }) => ({ kind: \"ask\", question: transcript }),\n});\n\nmatch(\"Hey Atlas, could you open settings please?\");\n// { kind: \"open-settings\" }\n```\n\nConfiguration is copied at factory creation. Extension phrases may add product intents or new\nsynonyms, but may not replace a built-in phrase or directional command; normalized collisions\nfail immediately. The\nreturned intents are proposals only. A policy/host layer must still decide whether and how to\nexecute them, normally through the dispatch contracts in `@agentfiber/voice`.\n\nFor custom regex or contextual tiers, compose the lower-level `walkVoiceMatchTiers` API from\n`@agentfiber/voice`. This package keeps its extension surface to bounded exact phrases so\ncaller-authored patterns cannot silently reorder protected escape commands.\n\n## Directional-only import\n\nConsumers that already own a full grammar can import only the proven English directional\nparser:\n\n```ts\nimport { parseEnglishDirectionalCommand } from \"@agentfiber/voice-grammar-en/directional\";\n\nparseEnglishDirectionalCommand(\"page left\");\n// { direction: \"left\", steps: 6 }\n```\n\nExplicit counts win; otherwise `scroll` means 3 horizontal or 2 vertical steps, `page` means 6\nhorizontal or 2 vertical steps, and other forms mean one step. Counts are capped at 10.\n\n\n\n## Install the shared usage skill\n\nThe portable AgentFiber voice usage skill ships from `@agentfiber/voice@0.1.3`, rather than being\nduplicated in every locale adapter. Install it into a project with either command:\n\n```sh\n# Claude Code\nnpx --yes --package @agentfiber/voice@0.1.3 agentfiber-voice-skill install --target claude-code\n\n# Codex and the open .agents convention\nnpx --yes --package @agentfiber/voice@0.1.3 agentfiber-voice-skill install --target agents\n```\n\nThe grammar dependency remains `@agentfiber/voice: ^0.1.0`. Package versions are independent.\n\nSee the [development and validation guide](../../CONTRIBUTING.md).\nSee the [voice package index](../../README.md) for related packages.\n","readmeFilename":"README.md"}