heyspex 0.2.1 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +10 -0
  2. package/bin/hs-vault-binding.mjs +157 -0
  3. package/bin/hs.mjs +99 -81
  4. package/bin/spexcode.mjs +91 -0
  5. package/dev-factory/engine/worktree.mjs +36 -7
  6. package/dev-factory/lib/epic-detect.mjs +2 -2
  7. package/dev-factory/lib/fleet-readiness.mjs +3 -5
  8. package/dev-factory/lib/fleet-state.mjs +2 -2
  9. package/dev-factory/lib/sufficiency-score.mjs +3 -5
  10. package/dist/cli/hs-check.mjs +76 -46
  11. package/dist/cli/hs-claim.mjs +63 -33
  12. package/dist/cli/hs-connect.mjs +520 -214
  13. package/dist/cli/hs-defer.mjs +161 -19
  14. package/dist/cli/hs-dev.mjs +11 -5
  15. package/dist/cli/hs-env.mjs +187 -161
  16. package/dist/cli/hs-index-rebuild.mjs +123 -78
  17. package/dist/cli/hs-index-reconcile.mjs +203 -107
  18. package/dist/cli/hs-init.mjs +426 -179
  19. package/dist/cli/hs-install.mjs +759 -437
  20. package/dist/cli/hs-join.mjs +590 -383
  21. package/dist/cli/hs-vault-pull.mjs +359 -254
  22. package/dist/cli/hs-vault-push.mjs +151 -113
  23. package/dist/cli/hs-vault.mjs +271 -104
  24. package/dist/cli/hs-workspace.mjs +90 -57
  25. package/dist/cli-templates/customer-vault/specs/protocols/session-close-protocol.md +178 -91
  26. package/docs/copilot-plugin-install.md +189 -162
  27. package/docs/driving-heyspex-from-copilot.md +174 -165
  28. package/docs/mcp-client-config.md +93 -25
  29. package/package.json +255 -249
  30. package/plugins/heyspex/.mcp.json +3 -4
  31. package/plugins/heyspex/README.md +323 -309
  32. package/plugins/heyspex/bin/launch-mcp.mjs +21 -7
  33. package/plugins/heyspex/mcp.json +12 -13
  34. package/scripts/check-mcp-freshness.mjs +6 -4
  35. package/scripts/claude-hooks/_intent-classifier-router.mjs +518 -456
  36. package/scripts/claude-hooks/intent-classifier-trigger.mjs +305 -279
  37. package/scripts/claude-hooks/research-method-guard.mjs +2 -2
  38. package/scripts/claude-hooks/wip-checkpoint.mjs +33 -9
  39. package/scripts/claude-statusline/fonts/HeySpexIcons.ttf +0 -0
  40. package/scripts/claude-statusline/statusline-command.mjs +1058 -0
  41. package/scripts/dev-server-status.mjs +3 -2
  42. package/scripts/dev-server-stop.mjs +3 -2
  43. package/scripts/hs-capture-cli.mjs +2 -2
  44. package/scripts/hs-settings.mjs +2 -2
  45. package/scripts/hs-view.mjs +3 -2
  46. package/scripts/install-copilot-hooks.mjs +318 -0
  47. package/scripts/lib/copilot-cli.mjs +108 -0
  48. package/scripts/lib/customer-kit.mjs +223 -30
  49. package/scripts/lib/dev-mode.mjs +28 -2
  50. package/scripts/lib/shared-path-helpers.mjs +32 -0
  51. package/scripts/lib/standalone-doctor.mjs +131 -32
  52. package/scripts/wip-ledger-health.mjs +3 -2
  53. package/spexharness/src/gates/vault-mirror-catchup.mjs +113 -24
  54. package/spexharness/src/gates/vault-mirror-catchup.runner.mjs +52 -0
  55. package/spexharness/src/intent-directive.mjs +839 -626
  56. package/spexharness/src/rule-table.mjs +1 -1
  57. package/vendor/heyspex-mcp/cli-verbs.mjs +16 -2
  58. package/vendor/heyspex-mcp/cli.mjs +20 -4
  59. package/vendor/heyspex-mcp/console-fetch.mjs +15 -3
  60. package/vendor/heyspex-mcp/dev-tools.mjs +11 -4
  61. package/vendor/heyspex-mcp/events-tools.mjs +1 -1
  62. package/vendor/heyspex-mcp/factory-run-status.mjs +42 -0
  63. package/vendor/heyspex-mcp/mcp-config.mjs +4 -2
  64. package/vendor/heyspex-mcp/spec-edit-tools.mjs +26 -1
  65. package/vendor/heyspex-mcp/test-helpers.mjs +5 -2
  66. package/vendor/heyspex-mcp/tool-catalog.mjs +12 -0
  67. package/vendor/heyspex-mcp/tool-dispatch.mjs +59 -23
  68. package/vendor/heyspex-mcp/usable-dir-env.mjs +82 -0
  69. package/vendor/heyspex-mcp/vault-binding.mjs +839 -0
  70. package/vendor/heyspex-mcp/vault-resolve.mjs +353 -245
package/package.json CHANGED
@@ -1,249 +1,255 @@
1
- {
2
- "name": "heyspex",
3
- "version": "0.2.1",
4
- "description": "HeySpex CLI + MCP server — connect Claude Code, Cursor, and any MCP client to your HeySpex spec vault",
5
- "keywords": [
6
- "heyspex",
7
- "mcp",
8
- "model-context-protocol",
9
- "claude-code",
10
- "cursor",
11
- "spec-driven-development",
12
- "agents"
13
- ],
14
- "type": "module",
15
- "license": "MIT",
16
- "repository": {
17
- "type": "git",
18
- "url": "git+https://github.com/pwhermanson/workflow-protocol.git"
19
- },
20
- "engines": {
21
- "node": ">=20.0.0 <25.0.0"
22
- },
23
- "workspaces": [
24
- "spex-console",
25
- "pm-control-center",
26
- "companion/extension"
27
- ],
28
- "bin": {
29
- "hs": "bin/hs.mjs",
30
- "heyspex": "bin/hs.mjs",
31
- "heyspex-mcp": "vendor/heyspex-mcp/cli.mjs",
32
- "spexcode": "bin/spexcode.mjs"
33
- },
34
- "exports": {
35
- "./package.json": "./package.json",
36
- "./console-url-resolver": "./scripts/lib/console-url-resolver.mjs"
37
- },
38
- "files": [
39
- "bin/hs.mjs",
40
- "bin/postinstall.mjs",
41
- "vendor/heyspex-mcp/**/*.mjs",
42
- "!vendor/heyspex-mcp/**/*.test.mjs",
43
- "vendor/heyspex-mcp/config-seed.yaml",
44
- "scripts/check-mcp-freshness.mjs",
45
- "scripts/gateway-skills-lib.mjs",
46
- "scripts/vault-id-lib.mjs",
47
- "scripts/lib/console-url-resolver.mjs",
48
- "scripts/lib/window-placement.mjs",
49
- "scripts/lib/hs-link.mjs",
50
- "scripts/lib/hook-vault-header.mjs",
51
- "scripts/lib/dev-mode.mjs",
52
- "scripts/lib/directive-obligations.mjs",
53
- "scripts/lib/hs-command.mjs",
54
- "scripts/lib/shared-path-helpers.mjs",
55
- "scripts/dev-server-status.mjs",
56
- "scripts/lib/hs-source-*.mjs",
57
- "scripts/lib/agent-env-markers.mjs",
58
- "!scripts/lib/hs-source-*.test.mjs",
59
- "scripts/lib/standalone-doctor.mjs",
60
- "dev-factory/lib/fleet-readiness.mjs",
61
- "dev-factory/lib/fleet-state.mjs",
62
- "dev-factory/lib/code-repo-root.mjs",
63
- "dev-factory/lib/sufficiency-score.mjs",
64
- "dev-factory/lib/model-catalog.mjs",
65
- "dev-factory/model-catalog.json",
66
- "docs/mcp-client-config.md",
67
- "docs/copilot-plugin-install.md",
68
- "docs/driving-heyspex-from-copilot.md",
69
- "plugins/heyspex/README.md",
70
- "dist/cli/*.mjs",
71
- "dist/cli-templates/**",
72
- "LICENSE",
73
- "scripts/install-claude-code-hooks.mjs",
74
- "scripts/install-cursor-hooks.mjs",
75
- "scripts/lib/customer-kit.mjs",
76
- "scripts/lib/hook-dispositions.mjs",
77
- "scripts/lib/template-pin.mjs",
78
- "scripts/cursor-hooks/manifest.mjs",
79
- "scripts/dev-server-stop.mjs",
80
- "scripts/wip-ledger-health.mjs",
81
- "scripts/hs-worktree.mjs",
82
- "scripts/lib/hs-worktree-args.mjs",
83
- "dev-factory/lib/worktree-allocator.mjs",
84
- "dev-factory/engine/worktree.mjs",
85
- "scripts/hs-view.mjs",
86
- "scripts/hs-capture-cli.mjs",
87
- "scripts/lib/heyspex-home.mjs",
88
- "scripts/hs-companion.mjs",
89
- "scripts/lib/hs-companion-settings.mjs",
90
- "scripts/hs-next.mjs",
91
- "scripts/hs-mode.mjs",
92
- "scripts/heyspex-mode.mjs",
93
- "scripts/hs-gateway.mjs",
94
- "scripts/hs-settings.mjs",
95
- "scripts/hs-classifier.mjs",
96
- "scripts/hs-auto.mjs",
97
- "scripts/hs-auto-resolve.mjs",
98
- "scripts/hs-auto-source.mjs",
99
- "dev-factory/lib/spec-io.mjs",
100
- "dev-factory/lib/epic-detect.mjs",
101
- "plugins/heyspex/bin/launch-mcp.mjs",
102
- "plugins/heyspex/bin/run-hook.mjs",
103
- "plugins/heyspex/.claude-plugin/plugin.json",
104
- ".claude-plugin/marketplace.json",
105
- "plugins/heyspex/.mcp.json",
106
- "plugins/heyspex/.cursor-plugin/plugin.json",
107
- "plugins/heyspex/mcp.json",
108
- "plugins/heyspex/hooks/*.json",
109
- "scripts/claude-hooks/*.mjs",
110
- "!scripts/claude-hooks/*.test.mjs",
111
- "!scripts/claude-hooks/*.smoke.mjs",
112
- "!scripts/claude-hooks/*.fixtures.mjs",
113
- "!scripts/claude-hooks/*.measure.mjs",
114
- "scripts/stamp-provenance-on-edit.mjs",
115
- "scripts/provenance-lib.mjs",
116
- "scripts/lib/subagent-git-lock.mjs",
117
- "dev-factory/lib/seat-context.mjs",
118
- "dev-factory/lib/context-budget.mjs",
119
- "dev-factory/lib/fleet-queue.mjs",
120
- "dev-factory/lib/fleet-queue-file.mjs",
121
- "spexharness/src/adapters/*.mjs",
122
- "spexharness/src/gates/capture-workflow-gate.mjs",
123
- "spexharness/src/gates/claim-before-code-gate.decide.mjs",
124
- "spexharness/src/gates/claim-before-code-gate.mjs",
125
- "spexharness/src/gates/directive-obligation-gate.decide.mjs",
126
- "spexharness/src/gates/directive-obligation-gate.mjs",
127
- "spexharness/src/gates/deep-research-cost-gate.mjs",
128
- "spexharness/src/gates/enforce-session-sequence.mjs",
129
- "spexharness/src/gates/enforce-vault-naming.mjs",
130
- "spexharness/src/gates/epic-milestone-phrasing-gate.mjs",
131
- "spexharness/src/gates/diagnose-capture-reminder.mjs",
132
- "spexharness/src/gates/git-identity-guard.decide.mjs",
133
- "spexharness/src/gates/git-identity-guard.mjs",
134
- "spexharness/src/gates/_shell-write-targets.mjs",
135
- "spexharness/src/gates/vault-write-tier-guard.decide.mjs",
136
- "spexharness/src/gates/vault-write-tier-guard.mjs",
137
- "spexharness/src/gates/vault-mirror-catchup.mjs",
138
- "spexharness/src/gates/git-reflog-audit.mjs",
139
- "spexharness/src/gates/git-stash-gate.decide.mjs",
140
- "spexharness/src/gates/git-stash-gate.mjs",
141
- "spexharness/src/gates/id-display-format-gate.mjs",
142
- "spexharness/src/gates/inject-doctrine-gate.mjs",
143
- "spexharness/src/gates/inject-vault-context.mjs",
144
- "spexharness/src/gates/naughty-list-gate.mjs",
145
- "spexharness/src/gates/plan-review-gate.mjs",
146
- "spexharness/src/gates/preflight-reminder-gate.mjs",
147
- "spexharness/src/gates/research-protocol-gate.mjs",
148
- "spexharness/src/gates/settings-write-gate.decide.mjs",
149
- "spexharness/src/gates/settings-write-gate.mjs",
150
- "spexharness/src/profile/*.mjs",
151
- "spexharness/src/doctrine/*.mjs",
152
- "spexharness/doctrine/baseline/SPEXCODE-DOCTRINE.baseline.json",
153
- "spexharness/src/chat/tui/ansi.mjs",
154
- "spexharness/src/chat/tui/palette.mjs",
155
- "spexharness/src/chat/tui/select.mjs",
156
- "spexharness/src/config-root.mjs",
157
- "spexharness/src/context-budget.mjs",
158
- "spexharness/src/dev-server-control.mjs",
159
- "spexharness/src/events.mjs",
160
- "spexharness/src/git-reflog-audit.mjs",
161
- "spexharness/src/intent-classifier.mjs",
162
- "spexharness/src/intent-directive.mjs",
163
- "spexharness/src/redact.mjs",
164
- "spexharness/src/rule-table.mjs",
165
- "spexharness/src/seat-context.mjs",
166
- "spexharness/src/session-bootstrap.mjs",
167
- "spexharness/src/session-record.mjs",
168
- "spexharness/src/token-inventory.mjs",
169
- "!spexharness/**/*.test.mjs"
170
- ],
171
- "dependencies": {
172
- "js-yaml": ">=3.13.0 <5.0.0"
173
- },
174
- "devDependencies": {
175
- "esbuild": "^0.24.2"
176
- },
177
- "scripts": {
178
- "prepack": "node scripts/build-cli-bundle.mjs && node scripts/prepack-closure-gate.mjs",
179
- "build:cli": "node scripts/build-cli-bundle.mjs",
180
- "postinstall": "node bin/postinstall.mjs",
181
- "setup": "node scripts/heyspex-doctor.mjs --fix",
182
- "doctor": "node scripts/heyspex-doctor.mjs",
183
- "heyspex:on": "node scripts/hs-mode.mjs on",
184
- "heyspex:off": "node scripts/hs-mode.mjs off",
185
- "heyspex:status": "node scripts/hs-mode.mjs status",
186
- "commandcode:install": "node scripts/install-commandcode.mjs",
187
- "commandcode:check": "node scripts/install-commandcode.mjs --check",
188
- "commandcode:uninstall": "node scripts/install-commandcode.mjs --uninstall",
189
- "seats:sync": "node scripts/sync-seat-context.mjs",
190
- "seats:check": "node scripts/sync-seat-context.mjs --check",
191
- "skills:sync": "node scripts/sync-skills.mjs",
192
- "skills:check": "node scripts/sync-skills.mjs --check",
193
- "pm:dashboard": "node bin/cli.mjs dashboard",
194
- "pm:control-center": "node bin/cli.mjs control-center",
195
- "pm:parallel-check": "node bin/cli.mjs parallel-check",
196
- "validate:vault-ids": "node scripts/validate-vault-ids.mjs --require-family",
197
- "validate:vault-naming": "node scripts/validate-vault-naming.mjs",
198
- "validate:vault-blockers": "node scripts/validate-vault-blockers.mjs",
199
- "validate:vault-frontmatter": "node scripts/validate-vault-frontmatter.mjs",
200
- "validate:vault-encoding": "node scripts/fix-mojibake.mjs --check",
201
- "fix:vault-encoding": "node scripts/fix-mojibake.mjs --apply",
202
- "validate:review-backlinks": "node scripts/validate-review-backlinks.mjs",
203
- "build:procedure-catalog": "node scripts/build-procedure-catalog.mjs",
204
- "validate:procedure-catalog": "node scripts/build-procedure-catalog.mjs --check",
205
- "build:guardrails": "node scripts/build-guardrails.mjs",
206
- "validate:guardrails": "node scripts/build-guardrails.mjs --check",
207
- "compile:agents": "node scripts/compile-agents.mjs",
208
- "validate:agents": "node scripts/compile-agents.mjs --check",
209
- "build:vault-index": "node scripts/build-vault-index.mjs",
210
- "validate:vault-index": "node scripts/build-vault-index.mjs --check",
211
- "check:retired-names": "node scripts/check-retired-names.mjs",
212
- "check:model-ids": "node scripts/check-model-ids.mjs",
213
- "check:shared-helpers": "node scripts/check-shared-helpers.mjs",
214
- "check:no-process-exit": "node scripts/check-no-process-exit.mjs",
215
- "check:epic-milestone-phrasing": "node scripts/check-epic-milestone-phrasing.mjs",
216
- "smoke:cli-help": "node scripts/smoke-cli-help.mjs",
217
- "commit": "node scripts/human-commit.mjs",
218
- "commit:owner": "node scripts/owner-commit.mjs",
219
- "hooks:install": "node scripts/install-git-hooks.mjs",
220
- "hooks:install-claude": "node scripts/install-claude-code-hooks.mjs",
221
- "hooks:check-claude": "node scripts/install-claude-code-hooks.mjs --check",
222
- "hooks:install-cursor": "node scripts/install-cursor-hooks.mjs",
223
- "hooks:check-cursor": "node scripts/install-cursor-hooks.mjs --check",
224
- "hooks:write-github": "node scripts/lib/customer-kit.mjs --write-github-hooks",
225
- "hooks:check-github": "node scripts/lib/customer-kit.mjs --check-github-hooks",
226
- "hooks:smoke-cursor": "node scripts/cursor-hooks/_run.smoke.mjs",
227
- "companion": "pwsh -NoProfile -ExecutionPolicy Bypass -File companion/start.ps1 -Action start",
228
- "companion:stop": "pwsh -NoProfile -ExecutionPolicy Bypass -File companion/start.ps1 -Action stop",
229
- "companion:status": "pwsh -NoProfile -ExecutionPolicy Bypass -File companion/start.ps1 -Action status",
230
- "spexcompanion": "pwsh -NoProfile -ExecutionPolicy Bypass -File companion/start.ps1 -Action start",
231
- "spexcompanion:stop": "pwsh -NoProfile -ExecutionPolicy Bypass -File companion/start.ps1 -Action stop",
232
- "spexcompanion:status": "pwsh -NoProfile -ExecutionPolicy Bypass -File companion/start.ps1 -Action status",
233
- "console": "npm run dev -w spex-console",
234
- "console:log": "pwsh -NoProfile -ExecutionPolicy Bypass -File scripts/run-console-devlog.ps1",
235
- "console:log:lan": "pwsh -NoProfile -ExecutionPolicy Bypass -File scripts/run-console-devlog.ps1 -Lan",
236
- "console:stop": "node scripts/dev-server-stop.mjs",
237
- "console:status": "node scripts/dev-server-status.mjs",
238
- "//test": "`npm test` is an ALIAS for `test:all` (scripts/run-all-tests.mjs) - the repo-health sweep over all four suites. It is deliberately NOT wired into CI or any git/Claude hook: .github/workflows/ci.yml runs `npm test --workspace spex-console`, which is a different script and is unaffected.",
239
- "test": "npm run test:all",
240
- "test:all": "node scripts/run-all-tests.mjs",
241
- "test:mcp": "node --test vendor/heyspex-mcp/*.test.mjs scripts/lib/*.test.mjs dev-factory/lib/*.test.mjs",
242
- "test:harness": "node --test spexharness/**/*.test.mjs",
243
- "verify:package": "node scripts/verify-mcp-package.mjs",
244
- "smoke:packed-install": "node scripts/packed-install.smoke.mjs",
245
- "verify:onboarding": "node scripts/verify-onboarding-scenario.mjs --fake",
246
- "sweep": "node scripts/sweep.mjs"
247
- },
248
- "//files": "PUBLISHED SURFACE - every entry is verified by `node scripts/verify-mcp-package.mjs`. It must cover the STATIC import closure of vendor/heyspex-mcp/cli.mjs, plus (since [[HS-LGG2-WW9R-TASK-ship-the-hook-runtime-in-the-npm]]) the customer hook kit: scripts/claude-hooks/_run.mjs, every HOOK_SCOPES customer hook (scripts/lib/customer-kit.mjs) and their static closure under spexharness/src, dev-factory/lib and scripts/ - the hookTargets check names any file that falls out - plus the run-time data files in customer-kit.mjs CUSTOMER_HOOK_DATA (only the baseline edition of SpexCode Doctrine, never the learned spexharness/doctrine/SPEXCODE-DOCTRINE.json; [[HS-A2PO-WW9R-TASK-owner-ruling-does-inject-doctrine-ship]]) - and nothing else. SpexFleet internals (dev-factory/router.mjs, cloud-clients.mjs, cost-tracker.mjs, spexcrawl/) are deliberately absent - research-tools.mjs reaches them through the lazy dev-factory-bridge.mjs. Do not add a path here without re-running the verifier; npm publish is a one-way door ([[HS-ZJSP-0JNK-TASK-ship-the-heyspex-mcp-server-as-an]] / [[HS-8DET-0JNK-TASK-confirm-the-open-core-boundary-and]]). `dist/cli/*.mjs` + `dist/cli-templates/**` are a SEPARATE published surface (`hs-init`, `hs-install`, `hs-claim`, `hs-check`, `hs-env`, `hs-connect`, `hs-join`, `hs-vault`, `hs-workspace`, `hs-defer`, `hs-vault-pull`, `hs-vault-push`, `hs-dev`, `hs-index-rebuild`, `hs-index-reconcile` bundled by `scripts/build-cli-bundle.mjs`'s `ENTRIES` array, regenerated fresh every `prepack` - `dist/` itself stays git-ignored) - see that script's doc comment for the entry scope decision and [[HS-JOQX-0JNK-TASK-published-package-runs-hs-init-and-hs]]."
249
- }
1
+ {
2
+ "name": "heyspex",
3
+ "version": "0.2.3",
4
+ "description": "HeySpex CLI + MCP server — connect Claude Code, Cursor, and any MCP client to your HeySpex spec vault",
5
+ "keywords": [
6
+ "heyspex",
7
+ "mcp",
8
+ "model-context-protocol",
9
+ "claude-code",
10
+ "cursor",
11
+ "spec-driven-development",
12
+ "agents"
13
+ ],
14
+ "type": "module",
15
+ "license": "MIT",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/pwhermanson/workflow-protocol.git"
19
+ },
20
+ "engines": {
21
+ "node": ">=20.0.0 <25.0.0"
22
+ },
23
+ "workspaces": [
24
+ "spex-console",
25
+ "pm-control-center",
26
+ "companion/extension"
27
+ ],
28
+ "bin": {
29
+ "hs": "bin/hs.mjs",
30
+ "heyspex": "bin/hs.mjs",
31
+ "heyspex-mcp": "vendor/heyspex-mcp/cli.mjs",
32
+ "spexcode": "bin/spexcode.mjs"
33
+ },
34
+ "exports": {
35
+ "./package.json": "./package.json",
36
+ "./console-url-resolver": "./scripts/lib/console-url-resolver.mjs"
37
+ },
38
+ "files": [
39
+ "bin/hs.mjs",
40
+ "bin/postinstall.mjs",
41
+ "bin/hs-vault-binding.mjs",
42
+ "vendor/heyspex-mcp/**/*.mjs",
43
+ "!vendor/heyspex-mcp/**/*.test.mjs",
44
+ "vendor/heyspex-mcp/config-seed.yaml",
45
+ "scripts/check-mcp-freshness.mjs",
46
+ "scripts/gateway-skills-lib.mjs",
47
+ "scripts/vault-id-lib.mjs",
48
+ "scripts/lib/console-url-resolver.mjs",
49
+ "scripts/lib/window-placement.mjs",
50
+ "scripts/lib/hs-link.mjs",
51
+ "scripts/lib/hook-vault-header.mjs",
52
+ "scripts/lib/dev-mode.mjs",
53
+ "scripts/lib/directive-obligations.mjs",
54
+ "scripts/lib/hs-command.mjs",
55
+ "scripts/lib/shared-path-helpers.mjs",
56
+ "scripts/claude-statusline/statusline-command.mjs",
57
+ "scripts/claude-statusline/fonts/HeySpexIcons.ttf",
58
+ "scripts/dev-server-status.mjs",
59
+ "scripts/lib/hs-source-*.mjs",
60
+ "scripts/lib/agent-env-markers.mjs",
61
+ "!scripts/lib/hs-source-*.test.mjs",
62
+ "scripts/lib/standalone-doctor.mjs",
63
+ "dev-factory/lib/fleet-readiness.mjs",
64
+ "dev-factory/lib/fleet-state.mjs",
65
+ "dev-factory/lib/code-repo-root.mjs",
66
+ "dev-factory/lib/sufficiency-score.mjs",
67
+ "dev-factory/lib/model-catalog.mjs",
68
+ "dev-factory/model-catalog.json",
69
+ "docs/mcp-client-config.md",
70
+ "docs/copilot-plugin-install.md",
71
+ "docs/driving-heyspex-from-copilot.md",
72
+ "plugins/heyspex/README.md",
73
+ "dist/cli/*.mjs",
74
+ "dist/cli-templates/**",
75
+ "LICENSE",
76
+ "scripts/install-claude-code-hooks.mjs",
77
+ "scripts/install-cursor-hooks.mjs",
78
+ "scripts/install-copilot-hooks.mjs",
79
+ "scripts/lib/customer-kit.mjs",
80
+ "scripts/lib/copilot-cli.mjs",
81
+ "scripts/lib/hook-dispositions.mjs",
82
+ "scripts/lib/template-pin.mjs",
83
+ "scripts/cursor-hooks/manifest.mjs",
84
+ "scripts/dev-server-stop.mjs",
85
+ "scripts/wip-ledger-health.mjs",
86
+ "scripts/hs-worktree.mjs",
87
+ "scripts/lib/hs-worktree-args.mjs",
88
+ "dev-factory/lib/worktree-allocator.mjs",
89
+ "dev-factory/engine/worktree.mjs",
90
+ "scripts/hs-view.mjs",
91
+ "scripts/hs-capture-cli.mjs",
92
+ "scripts/lib/heyspex-home.mjs",
93
+ "scripts/hs-companion.mjs",
94
+ "scripts/lib/hs-companion-settings.mjs",
95
+ "scripts/hs-next.mjs",
96
+ "scripts/hs-mode.mjs",
97
+ "scripts/heyspex-mode.mjs",
98
+ "scripts/hs-gateway.mjs",
99
+ "scripts/hs-settings.mjs",
100
+ "scripts/hs-classifier.mjs",
101
+ "scripts/hs-auto.mjs",
102
+ "scripts/hs-auto-resolve.mjs",
103
+ "scripts/hs-auto-source.mjs",
104
+ "dev-factory/lib/spec-io.mjs",
105
+ "dev-factory/lib/epic-detect.mjs",
106
+ "plugins/heyspex/bin/launch-mcp.mjs",
107
+ "plugins/heyspex/bin/run-hook.mjs",
108
+ "plugins/heyspex/.claude-plugin/plugin.json",
109
+ ".claude-plugin/marketplace.json",
110
+ "plugins/heyspex/.mcp.json",
111
+ "plugins/heyspex/.cursor-plugin/plugin.json",
112
+ "plugins/heyspex/mcp.json",
113
+ "plugins/heyspex/hooks/*.json",
114
+ "scripts/claude-hooks/*.mjs",
115
+ "!scripts/claude-hooks/*.test.mjs",
116
+ "!scripts/claude-hooks/*.smoke.mjs",
117
+ "!scripts/claude-hooks/*.fixtures.mjs",
118
+ "!scripts/claude-hooks/*.measure.mjs",
119
+ "scripts/stamp-provenance-on-edit.mjs",
120
+ "scripts/provenance-lib.mjs",
121
+ "scripts/lib/subagent-git-lock.mjs",
122
+ "dev-factory/lib/seat-context.mjs",
123
+ "dev-factory/lib/context-budget.mjs",
124
+ "dev-factory/lib/fleet-queue.mjs",
125
+ "dev-factory/lib/fleet-queue-file.mjs",
126
+ "spexharness/src/adapters/*.mjs",
127
+ "spexharness/src/gates/capture-workflow-gate.mjs",
128
+ "spexharness/src/gates/claim-before-code-gate.decide.mjs",
129
+ "spexharness/src/gates/claim-before-code-gate.mjs",
130
+ "spexharness/src/gates/directive-obligation-gate.decide.mjs",
131
+ "spexharness/src/gates/directive-obligation-gate.mjs",
132
+ "spexharness/src/gates/deep-research-cost-gate.mjs",
133
+ "spexharness/src/gates/enforce-session-sequence.mjs",
134
+ "spexharness/src/gates/enforce-vault-naming.mjs",
135
+ "spexharness/src/gates/epic-milestone-phrasing-gate.mjs",
136
+ "spexharness/src/gates/diagnose-capture-reminder.mjs",
137
+ "spexharness/src/gates/git-identity-guard.decide.mjs",
138
+ "spexharness/src/gates/git-identity-guard.mjs",
139
+ "spexharness/src/gates/_shell-write-targets.mjs",
140
+ "spexharness/src/gates/vault-write-tier-guard.decide.mjs",
141
+ "spexharness/src/gates/vault-write-tier-guard.mjs",
142
+ "spexharness/src/gates/vault-mirror-catchup.mjs",
143
+ "spexharness/src/gates/vault-mirror-catchup.runner.mjs",
144
+ "spexharness/src/gates/git-reflog-audit.mjs",
145
+ "spexharness/src/gates/git-stash-gate.decide.mjs",
146
+ "spexharness/src/gates/git-stash-gate.mjs",
147
+ "spexharness/src/gates/id-display-format-gate.mjs",
148
+ "spexharness/src/gates/inject-doctrine-gate.mjs",
149
+ "spexharness/src/gates/inject-vault-context.mjs",
150
+ "spexharness/src/gates/naughty-list-gate.mjs",
151
+ "spexharness/src/gates/plan-review-gate.mjs",
152
+ "spexharness/src/gates/preflight-reminder-gate.mjs",
153
+ "spexharness/src/gates/research-protocol-gate.mjs",
154
+ "spexharness/src/gates/settings-write-gate.decide.mjs",
155
+ "spexharness/src/gates/settings-write-gate.mjs",
156
+ "spexharness/src/profile/*.mjs",
157
+ "spexharness/src/doctrine/*.mjs",
158
+ "spexharness/doctrine/baseline/SPEXCODE-DOCTRINE.baseline.json",
159
+ "spexharness/src/chat/tui/ansi.mjs",
160
+ "spexharness/src/chat/tui/palette.mjs",
161
+ "spexharness/src/chat/tui/select.mjs",
162
+ "spexharness/src/config-root.mjs",
163
+ "spexharness/src/context-budget.mjs",
164
+ "spexharness/src/dev-server-control.mjs",
165
+ "spexharness/src/events.mjs",
166
+ "spexharness/src/git-reflog-audit.mjs",
167
+ "spexharness/src/intent-classifier.mjs",
168
+ "spexharness/src/intent-directive.mjs",
169
+ "spexharness/src/redact.mjs",
170
+ "spexharness/src/rule-table.mjs",
171
+ "spexharness/src/seat-context.mjs",
172
+ "spexharness/src/session-bootstrap.mjs",
173
+ "spexharness/src/session-record.mjs",
174
+ "spexharness/src/token-inventory.mjs",
175
+ "!spexharness/**/*.test.mjs"
176
+ ],
177
+ "dependencies": {
178
+ "js-yaml": ">=3.13.0 <5.0.0"
179
+ },
180
+ "devDependencies": {
181
+ "esbuild": "^0.24.2"
182
+ },
183
+ "scripts": {
184
+ "prepack": "node scripts/build-cli-bundle.mjs && node scripts/prepack-closure-gate.mjs",
185
+ "build:cli": "node scripts/build-cli-bundle.mjs",
186
+ "postinstall": "node bin/postinstall.mjs",
187
+ "setup": "node scripts/heyspex-doctor.mjs --fix",
188
+ "doctor": "node scripts/heyspex-doctor.mjs",
189
+ "heyspex:on": "node scripts/hs-mode.mjs on",
190
+ "heyspex:off": "node scripts/hs-mode.mjs off",
191
+ "heyspex:status": "node scripts/hs-mode.mjs status",
192
+ "commandcode:install": "node scripts/install-commandcode.mjs",
193
+ "commandcode:check": "node scripts/install-commandcode.mjs --check",
194
+ "commandcode:uninstall": "node scripts/install-commandcode.mjs --uninstall",
195
+ "seats:sync": "node scripts/sync-seat-context.mjs",
196
+ "seats:check": "node scripts/sync-seat-context.mjs --check",
197
+ "skills:sync": "node scripts/sync-skills.mjs",
198
+ "skills:check": "node scripts/sync-skills.mjs --check",
199
+ "pm:dashboard": "node bin/cli.mjs dashboard",
200
+ "pm:control-center": "node bin/cli.mjs control-center",
201
+ "pm:parallel-check": "node bin/cli.mjs parallel-check",
202
+ "validate:vault-ids": "node scripts/validate-vault-ids.mjs --require-family",
203
+ "validate:vault-naming": "node scripts/validate-vault-naming.mjs",
204
+ "validate:vault-blockers": "node scripts/validate-vault-blockers.mjs",
205
+ "validate:vault-frontmatter": "node scripts/validate-vault-frontmatter.mjs",
206
+ "validate:vault-encoding": "node scripts/fix-mojibake.mjs --check",
207
+ "fix:vault-encoding": "node scripts/fix-mojibake.mjs --apply",
208
+ "validate:review-backlinks": "node scripts/validate-review-backlinks.mjs",
209
+ "build:procedure-catalog": "node scripts/build-procedure-catalog.mjs",
210
+ "validate:procedure-catalog": "node scripts/build-procedure-catalog.mjs --check",
211
+ "build:guardrails": "node scripts/build-guardrails.mjs",
212
+ "validate:guardrails": "node scripts/build-guardrails.mjs --check",
213
+ "compile:agents": "node scripts/compile-agents.mjs",
214
+ "validate:agents": "node scripts/compile-agents.mjs --check",
215
+ "build:vault-index": "node scripts/build-vault-index.mjs",
216
+ "validate:vault-index": "node scripts/build-vault-index.mjs --check",
217
+ "check:retired-names": "node scripts/check-retired-names.mjs",
218
+ "check:model-ids": "node scripts/check-model-ids.mjs",
219
+ "check:shared-helpers": "node scripts/check-shared-helpers.mjs",
220
+ "check:no-process-exit": "node scripts/check-no-process-exit.mjs",
221
+ "check:epic-milestone-phrasing": "node scripts/check-epic-milestone-phrasing.mjs",
222
+ "smoke:cli-help": "node scripts/smoke-cli-help.mjs",
223
+ "commit": "node scripts/human-commit.mjs",
224
+ "commit:owner": "node scripts/owner-commit.mjs",
225
+ "hooks:install": "node scripts/install-git-hooks.mjs",
226
+ "hooks:install-claude": "node scripts/install-claude-code-hooks.mjs",
227
+ "hooks:check-claude": "node scripts/install-claude-code-hooks.mjs --check",
228
+ "hooks:install-cursor": "node scripts/install-cursor-hooks.mjs",
229
+ "hooks:check-cursor": "node scripts/install-cursor-hooks.mjs --check",
230
+ "hooks:write-github": "node scripts/lib/customer-kit.mjs --write-github-hooks",
231
+ "hooks:check-github": "node scripts/lib/customer-kit.mjs --check-github-hooks",
232
+ "hooks:smoke-cursor": "node scripts/cursor-hooks/_run.smoke.mjs",
233
+ "companion": "pwsh -NoProfile -ExecutionPolicy Bypass -File companion/start.ps1 -Action start",
234
+ "companion:stop": "pwsh -NoProfile -ExecutionPolicy Bypass -File companion/start.ps1 -Action stop",
235
+ "companion:status": "pwsh -NoProfile -ExecutionPolicy Bypass -File companion/start.ps1 -Action status",
236
+ "spexcompanion": "pwsh -NoProfile -ExecutionPolicy Bypass -File companion/start.ps1 -Action start",
237
+ "spexcompanion:stop": "pwsh -NoProfile -ExecutionPolicy Bypass -File companion/start.ps1 -Action stop",
238
+ "spexcompanion:status": "pwsh -NoProfile -ExecutionPolicy Bypass -File companion/start.ps1 -Action status",
239
+ "console": "npm run dev -w spex-console",
240
+ "console:log": "pwsh -NoProfile -ExecutionPolicy Bypass -File scripts/run-console-devlog.ps1",
241
+ "console:log:lan": "pwsh -NoProfile -ExecutionPolicy Bypass -File scripts/run-console-devlog.ps1 -Lan",
242
+ "console:stop": "node scripts/dev-server-stop.mjs",
243
+ "console:status": "node scripts/dev-server-status.mjs",
244
+ "//test": "`npm test` is an ALIAS for `test:all` (scripts/run-all-tests.mjs) - the repo-health sweep over all four suites. It is deliberately NOT wired into CI or any git/Claude hook: .github/workflows/ci.yml runs `npm test --workspace spex-console`, which is a different script and is unaffected.",
245
+ "test": "npm run test:all",
246
+ "test:all": "node scripts/run-all-tests.mjs",
247
+ "test:mcp": "node --test vendor/heyspex-mcp/*.test.mjs scripts/lib/*.test.mjs dev-factory/lib/*.test.mjs dev-factory/watch-dev-log.test.mjs",
248
+ "test:harness": "node --test spexharness/**/*.test.mjs",
249
+ "verify:package": "node scripts/verify-mcp-package.mjs",
250
+ "smoke:packed-install": "node scripts/packed-install.smoke.mjs",
251
+ "verify:onboarding": "node scripts/verify-onboarding-scenario.mjs --fake",
252
+ "sweep": "node scripts/sweep.mjs"
253
+ },
254
+ "//files": "PUBLISHED SURFACE - every entry is verified by `node scripts/verify-mcp-package.mjs`. It must cover the STATIC import closure of vendor/heyspex-mcp/cli.mjs, plus (since [[HS-LGG2-WW9R-TASK-ship-the-hook-runtime-in-the-npm]]) the customer hook kit: scripts/claude-hooks/_run.mjs, every HOOK_SCOPES customer hook (scripts/lib/customer-kit.mjs) and their static closure under spexharness/src, dev-factory/lib and scripts/ - the hookTargets check names any file that falls out - plus the run-time data files in customer-kit.mjs CUSTOMER_HOOK_DATA (only the baseline edition of SpexCode Doctrine, never the learned spexharness/doctrine/SPEXCODE-DOCTRINE.json; [[HS-A2PO-WW9R-TASK-owner-ruling-does-inject-doctrine-ship]]) - and nothing else. SpexFleet internals (dev-factory/router.mjs, cloud-clients.mjs, cost-tracker.mjs, spexcrawl/) are deliberately absent - research-tools.mjs reaches them through the lazy dev-factory-bridge.mjs. Do not add a path here without re-running the verifier; npm publish is a one-way door ([[HS-ZJSP-0JNK-TASK-ship-the-heyspex-mcp-server-as-an]] / [[HS-8DET-0JNK-TASK-confirm-the-open-core-boundary-and]]). `dist/cli/*.mjs` + `dist/cli-templates/**` are a SEPARATE published surface (`hs-init`, `hs-install`, `hs-claim`, `hs-check`, `hs-env`, `hs-connect`, `hs-join`, `hs-vault`, `hs-workspace`, `hs-defer`, `hs-vault-pull`, `hs-vault-push`, `hs-dev`, `hs-index-rebuild`, `hs-index-reconcile` bundled by `scripts/build-cli-bundle.mjs`'s `ENTRIES` array, regenerated fresh every `prepack` - `dist/` itself stays git-ignored) - see that script's doc comment for the entry scope decision and [[HS-JOQX-0JNK-TASK-published-package-runs-hs-init-and-hs]]."
255
+ }
@@ -3,10 +3,9 @@
3
3
  "heyspex": {
4
4
  "type": "stdio",
5
5
  "command": "node",
6
- "args": ["${CLAUDE_PLUGIN_ROOT}/bin/launch-mcp.mjs"],
7
- "env": {
8
- "HEYSPEX_VAULT_ROOT": "${CLAUDE_PROJECT_DIR}"
9
- }
6
+ "args": [
7
+ "${CLAUDE_PLUGIN_ROOT}/bin/launch-mcp.mjs"
8
+ ]
10
9
  }
11
10
  }
12
11
  }