heyspex 0.2.5 → 0.2.7

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 (110) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/bin/hs.mjs +349 -38
  3. package/bin/spexcode.mjs +31 -0
  4. package/dev-factory/lib/dispatch-guard.mjs +75 -0
  5. package/dev-factory/lib/local-firecrawl.mjs +294 -0
  6. package/dev-factory/lib/runner-path.mjs +51 -0
  7. package/dev-factory/lib/seat-context.mjs +20 -4
  8. package/dev-factory/model-catalog.json +222 -222
  9. package/dev-factory/spexcrawl/firecrawl-cli.mjs +755 -0
  10. package/dev-factory/spexcrawl/spexcrawl-cli.mjs +734 -0
  11. package/dist/cli/hs-connect.mjs +40 -3
  12. package/dist/cli/hs-defer.mjs +3817 -3741
  13. package/dist/cli/hs-events.mjs +1296 -0
  14. package/dist/cli/hs-export-events.mjs +1252 -0
  15. package/dist/cli/hs-handoff.mjs +2576 -0
  16. package/dist/cli/hs-index-rebuild.mjs +228 -37
  17. package/dist/cli/hs-index-reconcile.mjs +231 -40
  18. package/dist/cli/hs-init.mjs +22 -3
  19. package/dist/cli/hs-install.mjs +22 -3
  20. package/dist/cli/hs-join.mjs +40 -3
  21. package/dist/cli/hs-next-launch.mjs +2777 -0
  22. package/dist/cli/hs-pin.mjs +1336 -0
  23. package/dist/cli/hs-prereq.mjs +1380 -0
  24. package/dist/cli/hs-revalidate.mjs +3257 -0
  25. package/dist/cli/hs-spawn.mjs +12403 -0
  26. package/dist/cli/hs-test.mjs +1046 -0
  27. package/dist/cli/hs-trash.mjs +362 -0
  28. package/dist/cli/hs-trust.mjs +197 -0
  29. package/dist/cli/hs-vault-pull.mjs +233 -42
  30. package/dist/cli/hs-vault-push.mjs +231 -40
  31. package/dist/cli/hs-vault.mjs +21 -7
  32. package/dist/cli/hs-workspace.mjs +19 -1
  33. package/dist/cli-templates/customer-vault/specs/entity-model.md +1728 -1728
  34. package/dist/cli-templates/customer-vault/specs/protocols/canonical-frontmatter-templates.md +464 -464
  35. package/dist/cli-templates/customer-vault/specs/protocols/destructive-action-checklist.md +122 -122
  36. package/dist/cli-templates/customer-vault/specs/protocols/memory-protocol.md +46 -46
  37. package/dist/cli-templates/customer-vault/specs/protocols/spec-hierarchy.md +530 -530
  38. package/dist/cli-templates/customer-vault/specs/protocols/spec-summary-authoring.md +83 -83
  39. package/dist/cli-templates/harness-commands/claude/hs-backfill.md +28 -28
  40. package/dist/cli-templates/harness-commands/claude/hs-capture.md +62 -62
  41. package/dist/cli-templates/harness-commands/claude/hs-defer.md +29 -29
  42. package/dist/cli-templates/harness-commands/claude/hs-ground.md +30 -30
  43. package/dist/cli-templates/harness-commands/claude/hs-next.md +29 -29
  44. package/dist/cli-templates/harness-commands/claude/hs-promote.md +70 -70
  45. package/dist/cli-templates/harness-commands/claude/hs-push.md +35 -35
  46. package/dist/cli-templates/harness-commands/claude/hs-qc.md +27 -27
  47. package/dist/cli-templates/harness-commands/claude/hs-res.md +83 -63
  48. package/dist/cli-templates/harness-commands/claude/hs-resolve.md +23 -23
  49. package/dist/cli-templates/harness-commands/claude/hs-view.md +28 -28
  50. package/dist/cli-templates/harness-commands/claude/kill-ports.md +32 -32
  51. package/dist/cli-templates/harness-commands/claude/prototype.md +91 -91
  52. package/dist/cli-templates/harness-commands/cursor/hs-backfill.md +22 -22
  53. package/dist/cli-templates/harness-commands/cursor/hs-capture.md +56 -56
  54. package/dist/cli-templates/harness-commands/cursor/hs-defer.md +23 -23
  55. package/dist/cli-templates/harness-commands/cursor/hs-ground.md +24 -24
  56. package/dist/cli-templates/harness-commands/cursor/hs-next.md +23 -23
  57. package/dist/cli-templates/harness-commands/cursor/hs-promote.md +64 -64
  58. package/dist/cli-templates/harness-commands/cursor/hs-push.md +29 -29
  59. package/dist/cli-templates/harness-commands/cursor/hs-qc.md +21 -21
  60. package/dist/cli-templates/harness-commands/cursor/hs-res.md +78 -58
  61. package/dist/cli-templates/harness-commands/cursor/hs-resolve.md +17 -17
  62. package/dist/cli-templates/harness-commands/cursor/hs-view.md +23 -23
  63. package/dist/cli-templates/harness-commands/cursor/kill-ports.md +26 -26
  64. package/dist/cli-templates/harness-commands/cursor/prototype.md +86 -86
  65. package/docs/copilot-plugin-install.md +9 -2
  66. package/docs/mcp-client-config.md +6 -0
  67. package/package.json +266 -257
  68. package/plugins/heyspex/.claude-plugin/plugin.json +1 -1
  69. package/plugins/heyspex/.cursor-plugin/plugin.json +1 -1
  70. package/plugins/heyspex/README.md +6 -0
  71. package/plugins/heyspex/bin/launch-mcp.mjs +17 -0
  72. package/plugins/heyspex/hooks/hooks.json +418 -418
  73. package/scripts/claude-hooks/_intent-classifier-semantic.mjs +2 -2
  74. package/scripts/claude-hooks/wip-checkpoint.mjs +17 -2
  75. package/scripts/claude-statusline/statusline-command.mjs +287 -27
  76. package/scripts/hs-companion.mjs +41 -3
  77. package/scripts/install-claude-code-hooks.mjs +104 -3
  78. package/scripts/install-copilot-hooks.mjs +21 -1
  79. package/scripts/install-cursor-hooks.mjs +4 -3
  80. package/scripts/lib/capture-execution-guard.mjs +221 -0
  81. package/scripts/lib/companion-install.mjs +768 -0
  82. package/scripts/lib/customer-kit.mjs +53 -3
  83. package/scripts/lib/hs-companion-settings.mjs +26 -0
  84. package/scripts/lib/hs-source-push.mjs +386 -386
  85. package/scripts/record-grounding.mjs +38 -0
  86. package/spexharness/doctrine/baseline/SPEXCODE-DOCTRINE.baseline.json +29 -29
  87. package/spexharness/src/adapters/copilot-models.mjs +179 -0
  88. package/spexharness/src/adapters/harness-detect.mjs +148 -0
  89. package/spexharness/src/gates/directive-obligation-gate.decide.mjs +132 -132
  90. package/spexharness/src/gates/vault-write-tier-guard.decide.mjs +153 -125
  91. package/spexharness/src/seat-context.mjs +10 -5
  92. package/spexharness/src/session-bootstrap.mjs +6 -3
  93. package/vendor/heyspex-mcp/cli.mjs +6 -1
  94. package/vendor/heyspex-mcp/config-seed.yaml +15 -15
  95. package/vendor/heyspex-mcp/dev-factory-overlay.mjs +142 -0
  96. package/vendor/heyspex-mcp/http-transport.mjs +1 -1
  97. package/vendor/heyspex-mcp/memory-tools.mjs +523 -523
  98. package/vendor/heyspex-mcp/on-deck-scheduler.mjs +1708 -1708
  99. package/vendor/heyspex-mcp/procedure-handlers.mjs +327 -327
  100. package/vendor/heyspex-mcp/procedure-tools.mjs +1209 -1181
  101. package/vendor/heyspex-mcp/research-tools.mjs +22 -2
  102. package/vendor/heyspex-mcp/seat-assign-cli.mjs +242 -0
  103. package/vendor/heyspex-mcp/seat-assignment-rules.mjs +96 -0
  104. package/vendor/heyspex-mcp/seat-assignments-client.mjs +265 -0
  105. package/vendor/heyspex-mcp/seat-defaults-cli.mjs +45 -0
  106. package/vendor/heyspex-mcp/seat-defaults.mjs +232 -0
  107. package/vendor/heyspex-mcp/seat-identity.mjs +171 -0
  108. package/vendor/heyspex-mcp/test-helpers.mjs +37 -23
  109. package/vendor/heyspex-mcp/vault-io.mjs +720 -720
  110. package/bin/postinstall.mjs +0 -88
package/package.json CHANGED
@@ -1,257 +1,266 @@
1
- {
2
- "name": "heyspex",
3
- "version": "0.2.5",
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/copilot-statusline.mjs",
80
- "scripts/lib/customer-kit.mjs",
81
- "scripts/lib/copilot-cli.mjs",
82
- "scripts/lib/hook-dispositions.mjs",
83
- "scripts/lib/template-pin.mjs",
84
- "scripts/cursor-hooks/manifest.mjs",
85
- "scripts/dev-server-stop.mjs",
86
- "scripts/wip-ledger-health.mjs",
87
- "scripts/hs-worktree.mjs",
88
- "scripts/lib/hs-worktree-args.mjs",
89
- "dev-factory/lib/worktree-allocator.mjs",
90
- "dev-factory/engine/worktree.mjs",
91
- "scripts/hs-view.mjs",
92
- "scripts/hs-capture-cli.mjs",
93
- "scripts/lib/heyspex-home.mjs",
94
- "scripts/hs-companion.mjs",
95
- "scripts/lib/hs-companion-settings.mjs",
96
- "scripts/hs-next.mjs",
97
- "scripts/hs-mode.mjs",
98
- "scripts/heyspex-mode.mjs",
99
- "scripts/hs-gateway.mjs",
100
- "scripts/hs-settings.mjs",
101
- "scripts/hs-classifier.mjs",
102
- "scripts/hs-auto.mjs",
103
- "scripts/hs-auto-resolve.mjs",
104
- "scripts/hs-auto-source.mjs",
105
- "dev-factory/lib/spec-io.mjs",
106
- "dev-factory/lib/epic-detect.mjs",
107
- "plugins/heyspex/bin/launch-mcp.mjs",
108
- "plugins/heyspex/bin/run-hook.mjs",
109
- "plugins/heyspex/.claude-plugin/plugin.json",
110
- ".claude-plugin/marketplace.json",
111
- "plugins/heyspex/.mcp.json",
112
- "plugins/heyspex/.cursor-plugin/plugin.json",
113
- "plugins/heyspex/mcp.json",
114
- "plugins/heyspex/assets/*",
115
- "plugins/heyspex/hooks/*.json",
116
- "scripts/claude-hooks/*.mjs",
117
- "!scripts/claude-hooks/*.test.mjs",
118
- "!scripts/claude-hooks/*.smoke.mjs",
119
- "!scripts/claude-hooks/*.fixtures.mjs",
120
- "!scripts/claude-hooks/*.measure.mjs",
121
- "scripts/stamp-provenance-on-edit.mjs",
122
- "scripts/provenance-lib.mjs",
123
- "scripts/lib/subagent-git-lock.mjs",
124
- "dev-factory/lib/seat-context.mjs",
125
- "dev-factory/lib/context-budget.mjs",
126
- "dev-factory/lib/fleet-queue.mjs",
127
- "dev-factory/lib/fleet-queue-file.mjs",
128
- "spexharness/src/adapters/*.mjs",
129
- "spexharness/src/gates/capture-workflow-gate.mjs",
130
- "spexharness/src/gates/claim-before-code-gate.decide.mjs",
131
- "spexharness/src/gates/claim-before-code-gate.mjs",
132
- "spexharness/src/gates/directive-obligation-gate.decide.mjs",
133
- "spexharness/src/gates/directive-obligation-gate.mjs",
134
- "spexharness/src/gates/deep-research-cost-gate.mjs",
135
- "spexharness/src/gates/enforce-session-sequence.mjs",
136
- "spexharness/src/gates/enforce-vault-naming.mjs",
137
- "spexharness/src/gates/epic-milestone-phrasing-gate.mjs",
138
- "spexharness/src/gates/diagnose-capture-reminder.mjs",
139
- "spexharness/src/gates/git-identity-guard.decide.mjs",
140
- "spexharness/src/gates/git-identity-guard.mjs",
141
- "spexharness/src/gates/_shell-write-targets.mjs",
142
- "spexharness/src/gates/vault-write-tier-guard.decide.mjs",
143
- "spexharness/src/gates/vault-write-tier-guard.mjs",
144
- "spexharness/src/gates/vault-mirror-catchup.mjs",
145
- "spexharness/src/gates/vault-mirror-catchup.runner.mjs",
146
- "spexharness/src/gates/git-reflog-audit.mjs",
147
- "spexharness/src/gates/git-stash-gate.decide.mjs",
148
- "spexharness/src/gates/git-stash-gate.mjs",
149
- "spexharness/src/gates/id-display-format-gate.mjs",
150
- "spexharness/src/gates/inject-doctrine-gate.mjs",
151
- "spexharness/src/gates/inject-vault-context.mjs",
152
- "spexharness/src/gates/naughty-list-gate.mjs",
153
- "spexharness/src/gates/plan-review-gate.mjs",
154
- "spexharness/src/gates/preflight-reminder-gate.mjs",
155
- "spexharness/src/gates/research-protocol-gate.mjs",
156
- "spexharness/src/gates/settings-write-gate.decide.mjs",
157
- "spexharness/src/gates/settings-write-gate.mjs",
158
- "spexharness/src/profile/*.mjs",
159
- "spexharness/src/doctrine/*.mjs",
160
- "spexharness/doctrine/baseline/SPEXCODE-DOCTRINE.baseline.json",
161
- "spexharness/src/chat/tui/ansi.mjs",
162
- "spexharness/src/chat/tui/palette.mjs",
163
- "spexharness/src/chat/tui/select.mjs",
164
- "spexharness/src/config-root.mjs",
165
- "spexharness/src/context-budget.mjs",
166
- "spexharness/src/dev-server-control.mjs",
167
- "spexharness/src/events.mjs",
168
- "spexharness/src/git-reflog-audit.mjs",
169
- "spexharness/src/intent-classifier.mjs",
170
- "spexharness/src/intent-directive.mjs",
171
- "spexharness/src/redact.mjs",
172
- "spexharness/src/rule-table.mjs",
173
- "spexharness/src/seat-context.mjs",
174
- "spexharness/src/session-bootstrap.mjs",
175
- "spexharness/src/session-record.mjs",
176
- "spexharness/src/token-inventory.mjs",
177
- "!spexharness/**/*.test.mjs"
178
- ],
179
- "dependencies": {
180
- "js-yaml": ">=3.13.0 <5.0.0"
181
- },
182
- "devDependencies": {
183
- "esbuild": "^0.24.2"
184
- },
185
- "scripts": {
186
- "prepack": "node scripts/sync-skills.mjs && node scripts/build-cli-bundle.mjs && node scripts/prepack-closure-gate.mjs",
187
- "build:cli": "node scripts/build-cli-bundle.mjs",
188
- "postinstall": "node bin/postinstall.mjs",
189
- "setup": "node scripts/heyspex-doctor.mjs --fix",
190
- "doctor": "node scripts/heyspex-doctor.mjs",
191
- "heyspex:on": "node scripts/hs-mode.mjs on",
192
- "heyspex:off": "node scripts/hs-mode.mjs off",
193
- "heyspex:status": "node scripts/hs-mode.mjs status",
194
- "commandcode:install": "node scripts/install-commandcode.mjs",
195
- "commandcode:check": "node scripts/install-commandcode.mjs --check",
196
- "commandcode:uninstall": "node scripts/install-commandcode.mjs --uninstall",
197
- "seats:sync": "node scripts/sync-seat-context.mjs",
198
- "seats:check": "node scripts/sync-seat-context.mjs --check",
199
- "skills:sync": "node scripts/sync-skills.mjs",
200
- "skills:check": "node scripts/sync-skills.mjs --check",
201
- "pm:dashboard": "node bin/cli.mjs dashboard",
202
- "pm:control-center": "node bin/cli.mjs control-center",
203
- "pm:parallel-check": "node bin/cli.mjs parallel-check",
204
- "validate:vault-ids": "node scripts/validate-vault-ids.mjs --require-family",
205
- "validate:vault-naming": "node scripts/validate-vault-naming.mjs",
206
- "validate:vault-blockers": "node scripts/validate-vault-blockers.mjs",
207
- "validate:vault-frontmatter": "node scripts/validate-vault-frontmatter.mjs",
208
- "validate:vault-encoding": "node scripts/fix-mojibake.mjs --check",
209
- "fix:vault-encoding": "node scripts/fix-mojibake.mjs --apply",
210
- "validate:review-backlinks": "node scripts/validate-review-backlinks.mjs",
211
- "build:procedure-catalog": "node scripts/build-procedure-catalog.mjs",
212
- "validate:procedure-catalog": "node scripts/build-procedure-catalog.mjs --check",
213
- "build:guardrails": "node scripts/build-guardrails.mjs",
214
- "validate:guardrails": "node scripts/build-guardrails.mjs --check",
215
- "compile:agents": "node scripts/compile-agents.mjs",
216
- "validate:agents": "node scripts/compile-agents.mjs --check",
217
- "build:vault-index": "node scripts/build-vault-index.mjs",
218
- "validate:vault-index": "node scripts/build-vault-index.mjs --check",
219
- "check:retired-names": "node scripts/check-retired-names.mjs",
220
- "check:model-ids": "node scripts/check-model-ids.mjs",
221
- "check:shared-helpers": "node scripts/check-shared-helpers.mjs",
222
- "check:no-process-exit": "node scripts/check-no-process-exit.mjs",
223
- "check:epic-milestone-phrasing": "node scripts/check-epic-milestone-phrasing.mjs",
224
- "smoke:cli-help": "node scripts/smoke-cli-help.mjs",
225
- "commit": "node scripts/human-commit.mjs",
226
- "commit:owner": "node scripts/owner-commit.mjs",
227
- "hooks:install": "node scripts/install-git-hooks.mjs",
228
- "hooks:install-claude": "node scripts/install-claude-code-hooks.mjs",
229
- "hooks:check-claude": "node scripts/install-claude-code-hooks.mjs --check",
230
- "hooks:install-cursor": "node scripts/install-cursor-hooks.mjs",
231
- "hooks:check-cursor": "node scripts/install-cursor-hooks.mjs --check",
232
- "hooks:write-github": "node scripts/lib/customer-kit.mjs --write-github-hooks",
233
- "hooks:check-github": "node scripts/lib/customer-kit.mjs --check-github-hooks",
234
- "hooks:smoke-cursor": "node scripts/cursor-hooks/_run.smoke.mjs",
235
- "companion": "pwsh -NoProfile -ExecutionPolicy Bypass -File companion/start.ps1 -Action start",
236
- "companion:stop": "pwsh -NoProfile -ExecutionPolicy Bypass -File companion/start.ps1 -Action stop",
237
- "companion:status": "pwsh -NoProfile -ExecutionPolicy Bypass -File companion/start.ps1 -Action status",
238
- "spexcompanion": "pwsh -NoProfile -ExecutionPolicy Bypass -File companion/start.ps1 -Action start",
239
- "spexcompanion:stop": "pwsh -NoProfile -ExecutionPolicy Bypass -File companion/start.ps1 -Action stop",
240
- "spexcompanion:status": "pwsh -NoProfile -ExecutionPolicy Bypass -File companion/start.ps1 -Action status",
241
- "console": "npm run dev -w spex-console",
242
- "console:log": "pwsh -NoProfile -ExecutionPolicy Bypass -File scripts/run-console-devlog.ps1",
243
- "console:log:lan": "pwsh -NoProfile -ExecutionPolicy Bypass -File scripts/run-console-devlog.ps1 -Lan",
244
- "console:stop": "node scripts/dev-server-stop.mjs",
245
- "console:status": "node scripts/dev-server-status.mjs",
246
- "//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.",
247
- "test": "npm run test:all",
248
- "test:all": "node scripts/run-all-tests.mjs",
249
- "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",
250
- "test:harness": "node --test spexharness/**/*.test.mjs",
251
- "verify:package": "node scripts/verify-mcp-package.mjs",
252
- "smoke:packed-install": "node scripts/packed-install.smoke.mjs",
253
- "verify:onboarding": "node scripts/verify-onboarding-scenario.mjs --fake",
254
- "sweep": "node scripts/sweep.mjs"
255
- },
256
- "//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]]."
257
- }
1
+ {
2
+ "name": "heyspex",
3
+ "version": "0.2.7",
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/hs-vault-binding.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/claude-statusline/statusline-command.mjs",
56
+ "scripts/claude-statusline/fonts/HeySpexIcons.ttf",
57
+ "scripts/dev-server-status.mjs",
58
+ "scripts/lib/hs-source-*.mjs",
59
+ "scripts/lib/agent-env-markers.mjs",
60
+ "!scripts/lib/hs-source-*.test.mjs",
61
+ "scripts/lib/standalone-doctor.mjs",
62
+ "dev-factory/lib/fleet-readiness.mjs",
63
+ "dev-factory/lib/fleet-state.mjs",
64
+ "dev-factory/lib/code-repo-root.mjs",
65
+ "dev-factory/lib/sufficiency-score.mjs",
66
+ "dev-factory/lib/model-catalog.mjs",
67
+ "dev-factory/model-catalog.json",
68
+ "dev-factory/spexcrawl/spexcrawl-cli.mjs",
69
+ "dev-factory/spexcrawl/firecrawl-cli.mjs",
70
+ "dev-factory/lib/local-firecrawl.mjs",
71
+ "docs/mcp-client-config.md",
72
+ "docs/copilot-plugin-install.md",
73
+ "docs/driving-heyspex-from-copilot.md",
74
+ "plugins/heyspex/README.md",
75
+ "dist/cli/*.mjs",
76
+ "dist/cli-templates/**",
77
+ "LICENSE",
78
+ "scripts/install-claude-code-hooks.mjs",
79
+ "scripts/install-cursor-hooks.mjs",
80
+ "scripts/install-copilot-hooks.mjs",
81
+ "scripts/copilot-statusline.mjs",
82
+ "scripts/lib/customer-kit.mjs",
83
+ "scripts/lib/copilot-cli.mjs",
84
+ "scripts/lib/hook-dispositions.mjs",
85
+ "scripts/lib/template-pin.mjs",
86
+ "scripts/cursor-hooks/manifest.mjs",
87
+ "scripts/dev-server-stop.mjs",
88
+ "scripts/wip-ledger-health.mjs",
89
+ "scripts/hs-worktree.mjs",
90
+ "scripts/lib/hs-worktree-args.mjs",
91
+ "dev-factory/lib/worktree-allocator.mjs",
92
+ "dev-factory/engine/worktree.mjs",
93
+ "dev-factory/lib/runner-path.mjs",
94
+ "dev-factory/lib/dispatch-guard.mjs",
95
+ "scripts/hs-view.mjs",
96
+ "scripts/hs-capture-cli.mjs",
97
+ "scripts/record-grounding.mjs",
98
+ "scripts/lib/capture-execution-guard.mjs",
99
+ "scripts/lib/heyspex-home.mjs",
100
+ "scripts/hs-companion.mjs",
101
+ "scripts/lib/hs-companion-settings.mjs",
102
+ "scripts/lib/companion-install.mjs",
103
+ "scripts/hs-next.mjs",
104
+ "scripts/hs-mode.mjs",
105
+ "scripts/heyspex-mode.mjs",
106
+ "scripts/hs-gateway.mjs",
107
+ "scripts/hs-settings.mjs",
108
+ "scripts/hs-classifier.mjs",
109
+ "scripts/hs-auto.mjs",
110
+ "scripts/hs-auto-resolve.mjs",
111
+ "scripts/hs-auto-source.mjs",
112
+ "dev-factory/lib/spec-io.mjs",
113
+ "dev-factory/lib/epic-detect.mjs",
114
+ "plugins/heyspex/bin/launch-mcp.mjs",
115
+ "plugins/heyspex/bin/run-hook.mjs",
116
+ "plugins/heyspex/.claude-plugin/plugin.json",
117
+ ".claude-plugin/marketplace.json",
118
+ "plugins/heyspex/.mcp.json",
119
+ "plugins/heyspex/.cursor-plugin/plugin.json",
120
+ "plugins/heyspex/mcp.json",
121
+ "plugins/heyspex/assets/*",
122
+ "plugins/heyspex/hooks/*.json",
123
+ "scripts/claude-hooks/*.mjs",
124
+ "!scripts/claude-hooks/*.test.mjs",
125
+ "!scripts/claude-hooks/*.smoke.mjs",
126
+ "!scripts/claude-hooks/*.fixtures.mjs",
127
+ "!scripts/claude-hooks/*.measure.mjs",
128
+ "scripts/stamp-provenance-on-edit.mjs",
129
+ "scripts/provenance-lib.mjs",
130
+ "scripts/lib/subagent-git-lock.mjs",
131
+ "dev-factory/lib/seat-context.mjs",
132
+ "dev-factory/lib/context-budget.mjs",
133
+ "dev-factory/lib/fleet-queue.mjs",
134
+ "dev-factory/lib/fleet-queue-file.mjs",
135
+ "spexharness/src/adapters/*.mjs",
136
+ "spexharness/src/gates/capture-workflow-gate.mjs",
137
+ "spexharness/src/gates/claim-before-code-gate.decide.mjs",
138
+ "spexharness/src/gates/claim-before-code-gate.mjs",
139
+ "spexharness/src/gates/directive-obligation-gate.decide.mjs",
140
+ "spexharness/src/gates/directive-obligation-gate.mjs",
141
+ "spexharness/src/gates/deep-research-cost-gate.mjs",
142
+ "spexharness/src/gates/enforce-session-sequence.mjs",
143
+ "spexharness/src/gates/enforce-vault-naming.mjs",
144
+ "spexharness/src/gates/epic-milestone-phrasing-gate.mjs",
145
+ "spexharness/src/gates/diagnose-capture-reminder.mjs",
146
+ "spexharness/src/gates/git-identity-guard.decide.mjs",
147
+ "spexharness/src/gates/git-identity-guard.mjs",
148
+ "spexharness/src/gates/_shell-write-targets.mjs",
149
+ "spexharness/src/gates/vault-write-tier-guard.decide.mjs",
150
+ "spexharness/src/gates/vault-write-tier-guard.mjs",
151
+ "spexharness/src/gates/vault-mirror-catchup.mjs",
152
+ "spexharness/src/gates/vault-mirror-catchup.runner.mjs",
153
+ "spexharness/src/gates/git-reflog-audit.mjs",
154
+ "spexharness/src/gates/git-stash-gate.decide.mjs",
155
+ "spexharness/src/gates/git-stash-gate.mjs",
156
+ "spexharness/src/gates/id-display-format-gate.mjs",
157
+ "spexharness/src/gates/inject-doctrine-gate.mjs",
158
+ "spexharness/src/gates/inject-vault-context.mjs",
159
+ "spexharness/src/gates/naughty-list-gate.mjs",
160
+ "spexharness/src/gates/plan-review-gate.mjs",
161
+ "spexharness/src/gates/preflight-reminder-gate.mjs",
162
+ "spexharness/src/gates/research-protocol-gate.mjs",
163
+ "spexharness/src/gates/settings-write-gate.decide.mjs",
164
+ "spexharness/src/gates/settings-write-gate.mjs",
165
+ "spexharness/src/profile/*.mjs",
166
+ "spexharness/src/doctrine/*.mjs",
167
+ "spexharness/doctrine/baseline/SPEXCODE-DOCTRINE.baseline.json",
168
+ "spexharness/src/chat/tui/ansi.mjs",
169
+ "spexharness/src/chat/tui/palette.mjs",
170
+ "spexharness/src/chat/tui/select.mjs",
171
+ "spexharness/src/config-root.mjs",
172
+ "spexharness/src/context-budget.mjs",
173
+ "spexharness/src/dev-server-control.mjs",
174
+ "spexharness/src/events.mjs",
175
+ "spexharness/src/git-reflog-audit.mjs",
176
+ "spexharness/src/intent-classifier.mjs",
177
+ "spexharness/src/intent-directive.mjs",
178
+ "spexharness/src/redact.mjs",
179
+ "spexharness/src/rule-table.mjs",
180
+ "spexharness/src/seat-context.mjs",
181
+ "spexharness/src/session-bootstrap.mjs",
182
+ "spexharness/src/session-record.mjs",
183
+ "spexharness/src/token-inventory.mjs",
184
+ "!spexharness/**/*.test.mjs"
185
+ ],
186
+ "dependencies": {
187
+ "js-yaml": ">=3.13.0 <5.0.0"
188
+ },
189
+ "devDependencies": {
190
+ "esbuild": "^0.24.2"
191
+ },
192
+ "scripts": {
193
+ "prepack": "node scripts/sync-skills.mjs && node scripts/build-cli-bundle.mjs && node scripts/prepack-closure-gate.mjs && node scripts/pack-manifest.mjs strip",
194
+ "postpack": "node scripts/pack-manifest.mjs restore",
195
+ "prepublishOnly": "node scripts/install-qc.mjs",
196
+ "build:cli": "node scripts/build-cli-bundle.mjs",
197
+ "setup": "node scripts/heyspex-doctor.mjs --fix",
198
+ "doctor": "node scripts/heyspex-doctor.mjs",
199
+ "heyspex:on": "node scripts/hs-mode.mjs on",
200
+ "heyspex:off": "node scripts/hs-mode.mjs off",
201
+ "heyspex:status": "node scripts/hs-mode.mjs status",
202
+ "commandcode:install": "node scripts/install-commandcode.mjs",
203
+ "commandcode:check": "node scripts/install-commandcode.mjs --check",
204
+ "commandcode:uninstall": "node scripts/install-commandcode.mjs --uninstall",
205
+ "seats:sync": "node scripts/sync-seat-context.mjs",
206
+ "seats:check": "node scripts/sync-seat-context.mjs --check",
207
+ "skills:sync": "node scripts/sync-skills.mjs",
208
+ "skills:check": "node scripts/sync-skills.mjs --check",
209
+ "pm:dashboard": "node bin/cli.mjs dashboard",
210
+ "pm:control-center": "node bin/cli.mjs control-center",
211
+ "pm:parallel-check": "node bin/cli.mjs parallel-check",
212
+ "validate:vault-ids": "node scripts/validate-vault-ids.mjs --require-family",
213
+ "validate:vault-naming": "node scripts/validate-vault-naming.mjs",
214
+ "validate:vault-blockers": "node scripts/validate-vault-blockers.mjs",
215
+ "validate:vault-frontmatter": "node scripts/validate-vault-frontmatter.mjs",
216
+ "validate:vault-encoding": "node scripts/fix-mojibake.mjs --check",
217
+ "fix:vault-encoding": "node scripts/fix-mojibake.mjs --apply",
218
+ "validate:review-backlinks": "node scripts/validate-review-backlinks.mjs",
219
+ "build:procedure-catalog": "node scripts/build-procedure-catalog.mjs",
220
+ "validate:procedure-catalog": "node scripts/build-procedure-catalog.mjs --check",
221
+ "build:guardrails": "node scripts/build-guardrails.mjs",
222
+ "validate:guardrails": "node scripts/build-guardrails.mjs --check",
223
+ "compile:agents": "node scripts/compile-agents.mjs",
224
+ "validate:agents": "node scripts/compile-agents.mjs --check",
225
+ "build:vault-index": "node scripts/build-vault-index.mjs",
226
+ "validate:vault-index": "node scripts/build-vault-index.mjs --check",
227
+ "check:retired-names": "node scripts/check-retired-names.mjs",
228
+ "check:model-ids": "node scripts/check-model-ids.mjs",
229
+ "check:shared-helpers": "node scripts/check-shared-helpers.mjs",
230
+ "check:no-process-exit": "node scripts/check-no-process-exit.mjs",
231
+ "check:epic-milestone-phrasing": "node scripts/check-epic-milestone-phrasing.mjs",
232
+ "smoke:cli-help": "node scripts/smoke-cli-help.mjs",
233
+ "commit": "node scripts/human-commit.mjs",
234
+ "commit:owner": "node scripts/owner-commit.mjs",
235
+ "hooks:install": "node scripts/install-git-hooks.mjs",
236
+ "hooks:install-claude": "node scripts/install-claude-code-hooks.mjs",
237
+ "hooks:check-claude": "node scripts/install-claude-code-hooks.mjs --check",
238
+ "hooks:install-cursor": "node scripts/install-cursor-hooks.mjs",
239
+ "hooks:check-cursor": "node scripts/install-cursor-hooks.mjs --check",
240
+ "hooks:write-github": "node scripts/lib/customer-kit.mjs --write-github-hooks",
241
+ "hooks:check-github": "node scripts/lib/customer-kit.mjs --check-github-hooks",
242
+ "hooks:smoke-cursor": "node scripts/cursor-hooks/_run.smoke.mjs",
243
+ "companion": "pwsh -NoProfile -ExecutionPolicy Bypass -File companion/start.ps1 -Action start",
244
+ "companion:stop": "pwsh -NoProfile -ExecutionPolicy Bypass -File companion/start.ps1 -Action stop",
245
+ "companion:status": "pwsh -NoProfile -ExecutionPolicy Bypass -File companion/start.ps1 -Action status",
246
+ "spexcompanion": "pwsh -NoProfile -ExecutionPolicy Bypass -File companion/start.ps1 -Action start",
247
+ "spexcompanion:stop": "pwsh -NoProfile -ExecutionPolicy Bypass -File companion/start.ps1 -Action stop",
248
+ "spexcompanion:status": "pwsh -NoProfile -ExecutionPolicy Bypass -File companion/start.ps1 -Action status",
249
+ "console": "npm run dev -w spex-console",
250
+ "console:log": "pwsh -NoProfile -ExecutionPolicy Bypass -File scripts/run-console-devlog.ps1",
251
+ "console:log:lan": "pwsh -NoProfile -ExecutionPolicy Bypass -File scripts/run-console-devlog.ps1 -Lan",
252
+ "console:stop": "node scripts/dev-server-stop.mjs",
253
+ "console:status": "node scripts/dev-server-status.mjs",
254
+ "//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.",
255
+ "test": "npm run test:all",
256
+ "test:all": "node scripts/run-all-tests.mjs",
257
+ "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",
258
+ "test:harness": "node --test spexharness/**/*.test.mjs",
259
+ "verify:package": "node scripts/verify-mcp-package.mjs",
260
+ "smoke:packed-install": "node scripts/packed-install.smoke.mjs",
261
+ "install:qc": "node scripts/install-qc.mjs",
262
+ "verify:onboarding": "node scripts/verify-onboarding-scenario.mjs --fake",
263
+ "sweep": "node scripts/sweep.mjs"
264
+ },
265
+ "//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/ except the named research clients spexcrawl-cli.mjs and firecrawl-cli.mjs) 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`, `hs-handoff`, `hs-pin`, `hs-events`, `hs-export-events`, `hs-prereq`, `hs-trash`, `hs-trust`, `hs-next-launch`, `hs-revalidate`, `hs-test`, `hs-spawn` 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]]."
266
+ }
@@ -2,7 +2,7 @@
2
2
  "name": "heyspex",
3
3
  "displayName": "HeySpex",
4
4
  "icon": "./assets/heyspex-glyph-256.png",
5
- "description": "HeySpex vault integration for Claude Code and GitHub Copilot CLI (Claude-format plugin, installed from the same marketplace): MCP server (spec vault tools + hs-* prompts) and lifecycle hooks. Prototype packaging per HS-QTBK — additive; the project-level .mcp.json/settings.json wiring remains the live source of truth until cutover.",
5
+ "description": "SpexCode plugin (for Claude Code), also loaded by GitHub Copilot CLI (Claude-format plugin, installed from the same marketplace): HeySpex vault integration — MCP server (spec vault tools + hs-* prompts) and lifecycle hooks. Prototype packaging per HS-QTBK — additive; the project-level .mcp.json/settings.json wiring remains the live source of truth until cutover.",
6
6
  "author": {
7
7
  "name": "pwher",
8
8
  "email": "paul@monstergrowth.com"
@@ -3,7 +3,7 @@
3
3
  "displayName": "HeySpex",
4
4
  "version": "0.1.0",
5
5
  "logo": "assets/heyspex-glyph.svg",
6
- "description": "HeySpex vault integration for Cursor: MCP server (spec vault tools + hs-* workflows) and the full lifecycle hook set. Prototype packaging — additive; the project-level .cursor/mcp.json and .cursor/hooks.json wiring remains the live source of truth until cutover.",
6
+ "description": "Cursor build of the SpexCode plugin (for Claude Code): HeySpex vault integration for Cursor — MCP server (spec vault tools + hs-* workflows) and the full lifecycle hook set. Prototype packaging — additive; the project-level .cursor/mcp.json and .cursor/hooks.json wiring remains the live source of truth until cutover.",
7
7
  "author": {
8
8
  "name": "pwher",
9
9
  "email": "paul@monstergrowth.com"
@@ -45,6 +45,12 @@ npx hs install --target . --plugin-apply # Claude Code
45
45
 
46
46
  `setup copilot --check` shows which route is active; `--uninstall` removes the hooks file and prints `copilot plugin uninstall heyspex`.
47
47
 
48
+ Research prerequisite (`/hs-res` only): Docker Desktop running a self-hosted Firecrawl stack on this machine
49
+ (official steps: `SELF_HOST.md` in github.com/firecrawl/firecrawl: clone it, add a `.env` with `PORT=3002` and
50
+ `USE_DB_AUTHENTICATION=false`, then `docker compose build && docker compose up -d`). No env var or API key: the
51
+ packaged Firecrawl CLI finds it through `docker ps` / localhost:3002. Check it with
52
+ `node node_modules/heyspex/dev-factory/spexcrawl/firecrawl-cli.mjs search "test" --json`.
53
+
48
54
  Fallback, by hand: `claude plugin marketplace add ./node_modules/heyspex` /
49
55
  `copilot plugin marketplace add ./node_modules/heyspex`, then `... plugin install heyspex@heyspex-marketplace`.
50
56
  Restart the session (`/restart` in Copilot), then check `copilot plugin list` and `npx hs doctor`.