heyspex 0.1.0 → 0.2.0
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.
- package/README.md +21 -0
- package/bin/hs.mjs +931 -98
- package/bin/spexcode.mjs +262 -0
- package/dev-factory/engine/worktree.mjs +740 -0
- package/dev-factory/lib/code-repo-root.mjs +67 -0
- package/dev-factory/lib/context-budget.mjs +84 -0
- package/dev-factory/lib/epic-detect.mjs +190 -0
- package/dev-factory/lib/fleet-queue-file.mjs +846 -0
- package/dev-factory/lib/fleet-queue.mjs +426 -0
- package/dev-factory/lib/fleet-state.mjs +14 -18
- package/dev-factory/lib/model-catalog.mjs +338 -0
- package/dev-factory/lib/seat-context.mjs +199 -0
- package/dev-factory/lib/spec-io.mjs +93 -0
- package/dev-factory/lib/sufficiency-score.mjs +8 -2
- package/dev-factory/lib/worktree-allocator.mjs +744 -0
- package/dev-factory/model-catalog.json +222 -0
- package/dist/cli/hs-check.mjs +1085 -103
- package/dist/cli/hs-claim.mjs +936 -63
- package/dist/cli/hs-connect.mjs +9786 -1910
- package/dist/cli/hs-defer.mjs +5267 -3053
- package/dist/cli/hs-dev.mjs +564 -0
- package/dist/cli/hs-env.mjs +385 -299
- package/dist/cli/hs-index-rebuild.mjs +7129 -0
- package/dist/cli/hs-index-reconcile.mjs +7852 -0
- package/dist/cli/hs-init.mjs +777 -138
- package/dist/cli/hs-install.mjs +6583 -485
- package/dist/cli/hs-join.mjs +10137 -2368
- package/dist/cli/hs-vault-pull.mjs +4659 -5882
- package/dist/cli/hs-vault.mjs +3793 -1537
- package/dist/cli/hs-workspace.mjs +2550 -524
- package/dist/cli-templates/customer-vault/specs/entity-model.md +594 -601
- package/dist/cli-templates/customer-vault/specs/protocols/canonical-frontmatter-templates.md +110 -177
- package/dist/cli-templates/customer-vault/specs/protocols/destructive-action-checklist.md +122 -0
- package/dist/cli-templates/customer-vault/specs/protocols/memory-protocol.md +13 -15
- package/dist/cli-templates/customer-vault/specs/protocols/session-close-protocol.md +91 -0
- package/dist/cli-templates/customer-vault/specs/protocols/spec-hierarchy.md +150 -168
- package/dist/cli-templates/customer-vault/specs/protocols/spec-summary-authoring.md +83 -0
- package/dist/cli-templates/harness-commands/claude/hs-auto.md +36 -0
- package/dist/cli-templates/harness-commands/claude/hs-backfill.md +28 -0
- package/dist/cli-templates/harness-commands/claude/hs-capture.md +62 -0
- package/dist/cli-templates/harness-commands/claude/hs-defer.md +29 -0
- package/dist/cli-templates/harness-commands/claude/hs-dev.md +20 -0
- package/dist/cli-templates/harness-commands/claude/hs-doctor.md +32 -0
- package/dist/cli-templates/harness-commands/claude/hs-ground.md +28 -0
- package/dist/cli-templates/harness-commands/claude/hs-handoff.md +33 -0
- package/dist/cli-templates/harness-commands/claude/hs-log.md +27 -0
- package/dist/cli-templates/harness-commands/claude/hs-next.md +29 -0
- package/dist/cli-templates/harness-commands/claude/hs-promote.md +70 -0
- package/dist/cli-templates/harness-commands/claude/hs-push.md +35 -0
- package/dist/cli-templates/harness-commands/claude/hs-qc.md +27 -0
- package/dist/cli-templates/harness-commands/claude/hs-res.md +63 -0
- package/dist/cli-templates/harness-commands/claude/hs-resolve.md +23 -0
- package/dist/cli-templates/harness-commands/claude/hs-review.md +23 -0
- package/dist/cli-templates/harness-commands/claude/hs-view.md +26 -0
- package/dist/cli-templates/harness-commands/claude/kill-ports.md +32 -0
- package/dist/cli-templates/harness-commands/claude/prototype.md +91 -0
- package/dist/cli-templates/harness-commands/cursor/hs-auto.md +40 -0
- package/dist/cli-templates/harness-commands/cursor/hs-backfill.md +31 -0
- package/dist/cli-templates/harness-commands/cursor/hs-capture.md +65 -0
- package/dist/cli-templates/harness-commands/cursor/hs-defer.md +32 -0
- package/dist/cli-templates/harness-commands/cursor/hs-dev.md +24 -0
- package/dist/cli-templates/harness-commands/cursor/hs-doctor.md +36 -0
- package/dist/cli-templates/harness-commands/cursor/hs-ground.md +31 -0
- package/dist/cli-templates/harness-commands/cursor/hs-handoff.md +37 -0
- package/dist/cli-templates/harness-commands/cursor/hs-log.md +31 -0
- package/dist/cli-templates/harness-commands/cursor/hs-next.md +32 -0
- package/dist/cli-templates/harness-commands/cursor/hs-promote.md +73 -0
- package/dist/cli-templates/harness-commands/cursor/hs-push.md +38 -0
- package/dist/cli-templates/harness-commands/cursor/hs-qc.md +30 -0
- package/dist/cli-templates/harness-commands/cursor/hs-res.md +67 -0
- package/dist/cli-templates/harness-commands/cursor/hs-resolve.md +26 -0
- package/dist/cli-templates/harness-commands/cursor/hs-review.md +26 -0
- package/dist/cli-templates/harness-commands/cursor/hs-view.md +30 -0
- package/dist/cli-templates/harness-commands/cursor/kill-ports.md +35 -0
- package/dist/cli-templates/harness-commands/cursor/prototype.md +95 -0
- package/docs/mcp-client-config.md +259 -6
- package/package.json +231 -124
- package/plugins/heyspex/.claude-plugin/plugin.json +12 -0
- package/plugins/heyspex/.cursor-plugin/plugin.json +15 -0
- package/plugins/heyspex/.mcp.json +12 -0
- package/plugins/heyspex/bin/launch-mcp.mjs +95 -0
- package/plugins/heyspex/bin/run-hook.mjs +62 -0
- package/plugins/heyspex/hooks/cursor-hooks.json +227 -0
- package/plugins/heyspex/hooks/hooks.json +361 -0
- package/plugins/heyspex/mcp.json +13 -0
- package/scripts/check-mcp-freshness.mjs +17 -9
- package/scripts/claude-hooks/_env-vault-events.mjs +68 -0
- package/scripts/claude-hooks/_guardrail-events.mjs +96 -0
- package/scripts/claude-hooks/_guardrail-loader.mjs +494 -0
- package/scripts/claude-hooks/_intent-classifier-router.mjs +410 -0
- package/scripts/claude-hooks/_intent-classifier-semantic.mjs +351 -0
- package/scripts/claude-hooks/_run.mjs +120 -0
- package/scripts/claude-hooks/_transcript-text.mjs +60 -0
- package/scripts/claude-hooks/_vault-retrieval.mjs +322 -0
- package/scripts/claude-hooks/agent-spawn-delegation-gate.mjs +133 -0
- package/scripts/claude-hooks/capture-workflow-gate.mjs +11 -0
- package/scripts/claude-hooks/check-auto-memory-budget.mjs +396 -0
- package/scripts/claude-hooks/check-claude-md-budget.mjs +327 -0
- package/scripts/claude-hooks/check-mcp-freshness-hook.mjs +14 -0
- package/scripts/claude-hooks/claim-before-code-gate.mjs +11 -0
- package/scripts/claude-hooks/claim-liveness-shared.mjs +575 -0
- package/scripts/claude-hooks/close-terminal-on-ship.mjs +64 -0
- package/scripts/claude-hooks/coo-denylist-gate.mjs +11 -0
- package/scripts/claude-hooks/coo-guard-check.mjs +11 -0
- package/scripts/claude-hooks/deep-research-cost-gate.mjs +11 -0
- package/scripts/claude-hooks/dev-server-task-reminder.mjs +15 -0
- package/scripts/claude-hooks/emit-claim-status.mjs +41 -0
- package/scripts/claude-hooks/enforce-session-sequence.mjs +11 -0
- package/scripts/claude-hooks/enforce-vault-naming.mjs +11 -0
- package/scripts/claude-hooks/env-vault-guard.mjs +11 -0
- package/scripts/claude-hooks/epic-milestone-phrasing-gate.mjs +11 -0
- package/scripts/claude-hooks/git-identity-guard.mjs +11 -0
- package/scripts/claude-hooks/git-reflog-audit.mjs +15 -0
- package/scripts/claude-hooks/git-stash-gate.mjs +11 -0
- package/scripts/claude-hooks/guard-auto-memory-writes.mjs +137 -0
- package/scripts/claude-hooks/id-display-format-gate.mjs +11 -0
- package/scripts/claude-hooks/inject-communication-style.mjs +66 -0
- package/scripts/claude-hooks/inject-coo-seat.mjs +78 -0
- package/scripts/claude-hooks/inject-dev-server-awareness.mjs +11 -0
- package/scripts/claude-hooks/inject-doctrine.mjs +13 -0
- package/scripts/claude-hooks/inject-vault-context.mjs +14 -0
- package/scripts/claude-hooks/intent-classifier-trigger.mjs +247 -0
- package/scripts/claude-hooks/log-session-activity.mjs +341 -0
- package/scripts/claude-hooks/naughty-list-gate.mjs +11 -0
- package/scripts/claude-hooks/notify-status-flip.mjs +72 -0
- package/scripts/claude-hooks/plan-exit-ingest-gate.mjs +170 -0
- package/scripts/claude-hooks/plan-ingest-close-reminder.mjs +66 -0
- package/scripts/claude-hooks/plan-review-gate.mjs +11 -0
- package/scripts/claude-hooks/preflight-reminder.mjs +262 -0
- package/scripts/claude-hooks/protected-action-intent.mjs +221 -0
- package/scripts/claude-hooks/research-method-guard.mjs +398 -0
- package/scripts/claude-hooks/research-protocol-gate.mjs +11 -0
- package/scripts/claude-hooks/session-end.mjs +449 -0
- package/scripts/claude-hooks/settings-write-gate.mjs +11 -0
- package/scripts/claude-hooks/settlement-check-gate.mjs +39 -0
- package/scripts/claude-hooks/status-flip-detect.mjs +17 -0
- package/scripts/claude-hooks/terminal-close-shared.mjs +426 -0
- package/scripts/claude-hooks/terminal-close-watcher.mjs +122 -0
- package/scripts/claude-hooks/wip-checkpoint.mjs +298 -0
- package/scripts/cursor-hooks/manifest.mjs +235 -0
- package/scripts/dev-server-status.mjs +34 -13
- package/scripts/dev-server-stop.mjs +313 -0
- package/scripts/heyspex-mode.mjs +268 -0
- package/scripts/hs-auto-resolve.mjs +240 -0
- package/scripts/hs-auto-source.mjs +398 -0
- package/scripts/hs-auto.mjs +134 -0
- package/scripts/hs-capture-cli.mjs +326 -0
- package/scripts/hs-classifier.mjs +136 -0
- package/scripts/hs-companion.mjs +88 -0
- package/scripts/hs-gateway.mjs +115 -0
- package/scripts/hs-mode.mjs +125 -0
- package/scripts/hs-next.mjs +441 -0
- package/scripts/hs-settings.mjs +338 -0
- package/scripts/hs-view.mjs +333 -0
- package/scripts/hs-worktree.mjs +201 -0
- package/scripts/install-claude-code-hooks.mjs +270 -0
- package/scripts/install-cursor-hooks.mjs +471 -0
- package/scripts/lib/agent-env-markers.mjs +38 -0
- package/scripts/lib/console-url-resolver.mjs +197 -60
- package/scripts/lib/customer-kit.mjs +886 -0
- package/scripts/lib/dev-mode.mjs +244 -28
- package/scripts/lib/heyspex-home.mjs +72 -0
- package/scripts/lib/hs-command.mjs +277 -0
- package/scripts/lib/hs-companion-settings.mjs +472 -0
- package/scripts/lib/hs-source-commit.mjs +59 -5
- package/scripts/lib/hs-source-identity.mjs +526 -0
- package/scripts/lib/hs-source-log.mjs +11 -21
- package/scripts/lib/hs-source-push.mjs +107 -58
- package/scripts/lib/hs-worktree-args.mjs +115 -0
- package/scripts/lib/shared-path-helpers.mjs +134 -0
- package/scripts/lib/standalone-doctor.mjs +540 -3
- package/scripts/lib/subagent-git-lock.mjs +109 -0
- package/scripts/lib/template-pin.mjs +34 -0
- package/scripts/provenance-lib.mjs +91 -0
- package/scripts/stamp-provenance-on-edit.mjs +222 -0
- package/scripts/wip-ledger-health.mjs +653 -0
- package/spexharness/doctrine/baseline/SPEXCODE-DOCTRINE.baseline.json +29 -0
- package/spexharness/src/adapters/audit.mjs +197 -0
- package/spexharness/src/adapters/claude-code.mjs +441 -0
- package/spexharness/src/chat/tui/ansi.mjs +448 -0
- package/spexharness/src/chat/tui/palette.mjs +22 -0
- package/spexharness/src/chat/tui/select.mjs +208 -0
- package/spexharness/src/config-root.mjs +54 -0
- package/spexharness/src/context-budget.mjs +141 -0
- package/spexharness/src/dev-server-control.mjs +389 -0
- package/spexharness/src/doctrine/behaviour.mjs +371 -0
- package/spexharness/src/doctrine/corpus.mjs +733 -0
- package/spexharness/src/doctrine/inject.mjs +338 -0
- package/spexharness/src/doctrine/merge.mjs +184 -0
- package/spexharness/src/doctrine/sources.mjs +252 -0
- package/spexharness/src/doctrine/synthesize.mjs +401 -0
- package/spexharness/src/doctrine/vault-source.mjs +574 -0
- package/spexharness/src/doctrine/writer.mjs +176 -0
- package/spexharness/src/events.mjs +84 -0
- package/spexharness/src/gates/capture-workflow-gate.mjs +202 -0
- package/spexharness/src/gates/claim-before-code-gate.decide.mjs +33 -0
- package/spexharness/src/gates/claim-before-code-gate.mjs +129 -0
- package/spexharness/src/gates/deep-research-cost-gate.mjs +274 -0
- package/spexharness/src/gates/enforce-session-sequence.mjs +895 -0
- package/spexharness/src/gates/enforce-vault-naming.mjs +215 -0
- package/spexharness/src/gates/epic-milestone-phrasing-gate.mjs +233 -0
- package/spexharness/src/gates/git-identity-guard.decide.mjs +436 -0
- package/spexharness/src/gates/git-identity-guard.mjs +61 -0
- package/spexharness/src/gates/git-reflog-audit.mjs +151 -0
- package/spexharness/src/gates/git-stash-gate.decide.mjs +361 -0
- package/spexharness/src/gates/git-stash-gate.mjs +159 -0
- package/spexharness/src/gates/id-display-format-gate.mjs +190 -0
- package/spexharness/src/gates/inject-doctrine-gate.mjs +89 -0
- package/spexharness/src/gates/inject-vault-context.mjs +239 -0
- package/spexharness/src/gates/naughty-list-gate.mjs +213 -0
- package/spexharness/src/gates/plan-review-gate.mjs +233 -0
- package/spexharness/src/gates/preflight-reminder-gate.mjs +265 -0
- package/spexharness/src/gates/research-protocol-gate.mjs +175 -0
- package/spexharness/src/gates/settings-write-gate.decide.mjs +96 -0
- package/spexharness/src/gates/settings-write-gate.mjs +104 -0
- package/spexharness/src/git-reflog-audit.mjs +294 -0
- package/spexharness/src/intent-classifier.mjs +194 -0
- package/spexharness/src/intent-directive.mjs +541 -0
- package/spexharness/src/profile/learn.mjs +551 -0
- package/spexharness/src/profile/proposals.mjs +357 -0
- package/spexharness/src/profile/vault-inclusion.mjs +386 -0
- package/spexharness/src/redact.mjs +151 -0
- package/spexharness/src/rule-table.mjs +819 -0
- package/spexharness/src/seat-context.mjs +122 -0
- package/spexharness/src/session-bootstrap.mjs +512 -0
- package/spexharness/src/session-record.mjs +815 -0
- package/spexharness/src/token-inventory.mjs +207 -0
- package/vendor/heyspex-mcp/account-switch.mjs +95 -0
- package/vendor/heyspex-mcp/alignment-gate.mjs +315 -1
- package/vendor/heyspex-mcp/blocker-resolver.mjs +37 -2
- package/vendor/heyspex-mcp/breakdown-ladder.mjs +119 -4
- package/vendor/heyspex-mcp/breakdown-source.mjs +271 -0
- package/vendor/heyspex-mcp/breakdown-writer.mjs +23 -3
- package/vendor/heyspex-mcp/capture-buffer-patches.mjs +46 -5
- package/vendor/heyspex-mcp/capture-channel.mjs +55 -5
- package/vendor/heyspex-mcp/capture-console-client.mjs +80 -1
- package/vendor/heyspex-mcp/capture-focus.mjs +1035 -29
- package/vendor/heyspex-mcp/capture-outbox.mjs +5 -1
- package/vendor/heyspex-mcp/capture-tools.mjs +1219 -0
- package/vendor/heyspex-mcp/claim-tools.mjs +1124 -0
- package/vendor/heyspex-mcp/cli-verbs.mjs +2076 -0
- package/vendor/heyspex-mcp/cli.mjs +201 -15524
- package/vendor/heyspex-mcp/cloud-tool-surface.mjs +128 -0
- package/vendor/heyspex-mcp/cloud-vault-writes.mjs +412 -0
- package/vendor/heyspex-mcp/config-seed.yaml +15 -0
- package/vendor/heyspex-mcp/config-settings.mjs +290 -7
- package/vendor/heyspex-mcp/console-fetch.mjs +657 -16
- package/vendor/heyspex-mcp/console-transport.mjs +166 -0
- package/vendor/heyspex-mcp/credentials.mjs +584 -0
- package/vendor/heyspex-mcp/defer-spec.mjs +44 -4
- package/vendor/heyspex-mcp/deferred-reclaim.mjs +29 -3
- package/vendor/heyspex-mcp/design-handlers.mjs +31 -0
- package/vendor/heyspex-mcp/design-tools.mjs +4 -1
- package/vendor/heyspex-mcp/dev-factory-bridge.mjs +4 -4
- package/vendor/heyspex-mcp/dev-mode-core.mjs +45 -0
- package/vendor/heyspex-mcp/dev-tools.mjs +124 -0
- package/vendor/heyspex-mcp/diagnose-handlers.mjs +54 -0
- package/vendor/heyspex-mcp/events-tools.mjs +207 -0
- package/vendor/heyspex-mcp/filing-tools.mjs +688 -0
- package/vendor/heyspex-mcp/fleet-handlers.mjs +37 -0
- package/vendor/heyspex-mcp/fleet-queue-tools.mjs +69 -14
- package/vendor/heyspex-mcp/focus-tools.mjs +190 -0
- package/vendor/heyspex-mcp/folder-trust-store.mjs +59 -0
- package/vendor/heyspex-mcp/http-transport.mjs +300 -0
- package/vendor/heyspex-mcp/list-tools.mjs +257 -0
- package/vendor/heyspex-mcp/login-handoff.mjs +15 -1
- package/vendor/heyspex-mcp/mcp-config.mjs +94 -0
- package/vendor/heyspex-mcp/memory-tools.mjs +523 -0
- package/vendor/heyspex-mcp/mvp-mode.mjs +53 -6
- package/vendor/heyspex-mcp/occupied-keys.mjs +141 -0
- package/vendor/heyspex-mcp/on-deck-brief.mjs +3360 -0
- package/vendor/heyspex-mcp/on-deck-scheduler.mjs +1708 -0
- package/vendor/heyspex-mcp/package-root.mjs +32 -0
- package/vendor/heyspex-mcp/peer-presence.mjs +8 -1
- package/vendor/heyspex-mcp/plan-ground.mjs +621 -652
- package/vendor/heyspex-mcp/plan-push.mjs +906 -21
- package/vendor/heyspex-mcp/plan-review.mjs +124 -30
- package/vendor/heyspex-mcp/preflight-gate.mjs +0 -0
- package/vendor/heyspex-mcp/procedure-handlers.mjs +325 -0
- package/vendor/heyspex-mcp/procedure-tools.mjs +540 -351
- package/vendor/heyspex-mcp/promote-capture.mjs +386 -69
- package/vendor/heyspex-mcp/promote-diagnose.mjs +74 -0
- package/vendor/heyspex-mcp/promote-research-to-diagnose.mjs +9 -2
- package/vendor/heyspex-mcp/promote-research.mjs +660 -53
- package/vendor/heyspex-mcp/promotion-helpers.mjs +251 -0
- package/vendor/heyspex-mcp/prompts.mjs +1460 -0
- package/vendor/heyspex-mcp/read-path.mjs +29 -9
- package/vendor/heyspex-mcp/receipt-shape.mjs +146 -0
- package/vendor/heyspex-mcp/recipe-handlers.mjs +117 -0
- package/vendor/heyspex-mcp/regen-tasks.mjs +210 -3
- package/vendor/heyspex-mcp/register-spec.mjs +266 -54
- package/vendor/heyspex-mcp/request-context.mjs +59 -0
- package/vendor/heyspex-mcp/research-focus.mjs +207 -4
- package/vendor/heyspex-mcp/research-handlers.mjs +623 -0
- package/vendor/heyspex-mcp/research-tools.mjs +4 -4
- package/vendor/heyspex-mcp/response-budget.mjs +348 -0
- package/vendor/heyspex-mcp/review-focus.mjs +25 -1
- package/vendor/heyspex-mcp/search-specs.mjs +280 -0
- package/vendor/heyspex-mcp/seat-block-ledger.mjs +113 -0
- package/vendor/heyspex-mcp/seat-identity.mjs +2 -6
- package/vendor/heyspex-mcp/session-owner.mjs +108 -0
- package/vendor/heyspex-mcp/session-tools.mjs +152 -0
- package/vendor/heyspex-mcp/settings-registry.mjs +232 -0
- package/vendor/heyspex-mcp/settings-tools.mjs +85 -12
- package/vendor/heyspex-mcp/spec-edit-tools.mjs +446 -0
- package/vendor/heyspex-mcp/spec-id-lib.mjs +93 -17
- package/vendor/heyspex-mcp/split-research.mjs +301 -56
- package/vendor/heyspex-mcp/stdio-rpc.mjs +22 -0
- package/vendor/heyspex-mcp/submit-for-review.mjs +132 -6
- package/vendor/heyspex-mcp/summary-contract.mjs +105 -0
- package/vendor/heyspex-mcp/summary-write-tools.mjs +224 -0
- package/vendor/heyspex-mcp/symptom-query.mjs +146 -0
- package/vendor/heyspex-mcp/test-helpers.mjs +108 -1
- package/vendor/heyspex-mcp/tool-catalog.mjs +2813 -0
- package/vendor/heyspex-mcp/tool-dispatch.mjs +639 -0
- package/vendor/heyspex-mcp/tool-helpers.mjs +325 -0
- package/vendor/heyspex-mcp/validate-linkage.mjs +414 -27
- package/vendor/heyspex-mcp/vault-io.mjs +724 -0
- package/vendor/heyspex-mcp/vault-less-endpoints.mjs +52 -0
- package/vendor/heyspex-mcp/vault-resolve.mjs +366 -68
- package/vendor/heyspex-mcp/verify-reproduction.mjs +270 -30
- package/vendor/heyspex-mcp/whoami.mjs +91 -0
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "GENERATED by scripts/install-cursor-hooks.mjs from scripts/cursor-hooks/manifest.mjs — do not edit by hand; run `npm run hooks:install-cursor`. Commands resolve through $CURSOR_PROJECT_DIR because the shim and hook bodies live in the host vault checkout, not the plugin cache. WARNING: enabling this plugin in a repo whose .cursor/hooks.json still registers the same hooks runs every hook twice — validate in a fresh clone, or run `node scripts/install-cursor-hooks.mjs --uninstall` there first.",
|
|
3
|
+
"version": 1,
|
|
4
|
+
"hooks": {
|
|
5
|
+
"sessionStart": [
|
|
6
|
+
{
|
|
7
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" wip-checkpoint",
|
|
8
|
+
"timeout": 5
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" inject-dev-server-awareness",
|
|
12
|
+
"timeout": 5
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" inject-coo-seat",
|
|
16
|
+
"timeout": 5
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" coo-guard-check",
|
|
20
|
+
"timeout": 5
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" check-auto-memory-budget",
|
|
24
|
+
"timeout": 5
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" check-claude-md-budget",
|
|
28
|
+
"timeout": 5
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" check-mcp-freshness-hook",
|
|
32
|
+
"timeout": 5
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
"preCompact": [
|
|
36
|
+
{
|
|
37
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" wip-checkpoint --hs-claude-event=SessionStart",
|
|
38
|
+
"timeout": 5
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"beforeSubmitPrompt": [
|
|
42
|
+
{
|
|
43
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" preflight-reminder",
|
|
44
|
+
"timeout": 5
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" intent-classifier-trigger",
|
|
48
|
+
"timeout": 5
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" inject-communication-style",
|
|
52
|
+
"timeout": 5
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"preToolUse": [
|
|
56
|
+
{
|
|
57
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" emit-claim-status --event=PreToolUse",
|
|
58
|
+
"timeout": 5,
|
|
59
|
+
"matcher": ".*"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" coo-denylist-gate",
|
|
63
|
+
"timeout": 5,
|
|
64
|
+
"matcher": ".*"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" log-session-activity --event=PreToolUse",
|
|
68
|
+
"timeout": 5,
|
|
69
|
+
"matcher": ".*"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" env-vault-guard",
|
|
73
|
+
"timeout": 5,
|
|
74
|
+
"matcher": "Write|Delete"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" settings-write-gate",
|
|
78
|
+
"timeout": 5,
|
|
79
|
+
"matcher": "Write"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" enforce-vault-naming",
|
|
83
|
+
"timeout": 5,
|
|
84
|
+
"matcher": "Write"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" guard-auto-memory-writes",
|
|
88
|
+
"timeout": 5,
|
|
89
|
+
"matcher": "Write"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" preflight-reminder",
|
|
93
|
+
"timeout": 5,
|
|
94
|
+
"matcher": "Write"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" claim-before-code-gate",
|
|
98
|
+
"timeout": 5,
|
|
99
|
+
"matcher": "Write"
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" coo-guard-check --hs-tool=\"heyspex_claim_spec$\"",
|
|
103
|
+
"timeout": 5,
|
|
104
|
+
"matcher": ".*"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" capture-workflow-gate --hs-tool=\"heyspex_file_spec$\"",
|
|
108
|
+
"timeout": 8,
|
|
109
|
+
"matcher": ".*"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" settings-write-gate --hs-tool=\"heyspex_settings_set$\"",
|
|
113
|
+
"timeout": 5,
|
|
114
|
+
"matcher": ".*"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" dev-server-task-reminder --hs-tool=\"[Nn]eon__(prepare_database_migration|complete_database_migration|reset_from_parent|delete_branch)$\"",
|
|
118
|
+
"timeout": 10,
|
|
119
|
+
"matcher": ".*"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" deep-research-cost-gate --hs-tool=\"^(Workflow|Skill)$\"",
|
|
123
|
+
"timeout": 5,
|
|
124
|
+
"matcher": ".*"
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" research-protocol-gate --hs-tool=\"^(WebSearch|WebFetch|web_search|web_fetch)$|heyspex_save_research$\"",
|
|
128
|
+
"timeout": 5,
|
|
129
|
+
"matcher": ".*"
|
|
130
|
+
}
|
|
131
|
+
],
|
|
132
|
+
"beforeShellExecution": [
|
|
133
|
+
{
|
|
134
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" env-vault-guard",
|
|
135
|
+
"timeout": 5
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" settings-write-gate",
|
|
139
|
+
"timeout": 5
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" enforce-vault-naming",
|
|
143
|
+
"timeout": 5
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" guard-auto-memory-writes",
|
|
147
|
+
"timeout": 5
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" preflight-reminder",
|
|
151
|
+
"timeout": 5
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" dev-server-task-reminder",
|
|
155
|
+
"timeout": 10
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" git-stash-gate",
|
|
159
|
+
"timeout": 10
|
|
160
|
+
}
|
|
161
|
+
],
|
|
162
|
+
"subagentStart": [
|
|
163
|
+
{
|
|
164
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" agent-spawn-delegation-gate",
|
|
165
|
+
"timeout": 5
|
|
166
|
+
}
|
|
167
|
+
],
|
|
168
|
+
"postToolUse": [
|
|
169
|
+
{
|
|
170
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" emit-claim-status --event=PostToolUse",
|
|
171
|
+
"timeout": 5,
|
|
172
|
+
"matcher": ".*"
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" log-session-activity --event=PostToolUse",
|
|
176
|
+
"timeout": 5,
|
|
177
|
+
"matcher": ".*"
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" close-terminal-on-ship",
|
|
181
|
+
"timeout": 5,
|
|
182
|
+
"matcher": ".*"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" notify-status-flip",
|
|
186
|
+
"timeout": 5,
|
|
187
|
+
"matcher": "Write"
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" scripts/stamp-provenance-on-edit.mjs",
|
|
191
|
+
"timeout": 5,
|
|
192
|
+
"matcher": "Write"
|
|
193
|
+
}
|
|
194
|
+
],
|
|
195
|
+
"afterFileEdit": [
|
|
196
|
+
{
|
|
197
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" close-terminal-on-ship",
|
|
198
|
+
"timeout": 5,
|
|
199
|
+
"matcher": ".*"
|
|
200
|
+
}
|
|
201
|
+
],
|
|
202
|
+
"stop": [
|
|
203
|
+
{
|
|
204
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" emit-claim-status --event=Stop",
|
|
205
|
+
"timeout": 5
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" naughty-list-gate",
|
|
209
|
+
"timeout": 5
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" enforce-session-sequence",
|
|
213
|
+
"timeout": 5
|
|
214
|
+
}
|
|
215
|
+
],
|
|
216
|
+
"sessionEnd": [
|
|
217
|
+
{
|
|
218
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" session-end",
|
|
219
|
+
"timeout": 5
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
"command": "node \"$CURSOR_PROJECT_DIR/scripts/cursor-hooks/_run.mjs\" close-terminal-on-ship",
|
|
223
|
+
"timeout": 5
|
|
224
|
+
}
|
|
225
|
+
]
|
|
226
|
+
}
|
|
227
|
+
}
|
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "GENERATED from scripts/lib/customer-kit.mjs (customer-scoped rows only) — do not edit by hand; run `node scripts/lib/customer-kit.mjs --write-plugin-hooks`. Every command goes through bin/run-hook.mjs, which finds the hook runtime (HEYSPEX_PLATFORM_ROOT / HEYSPEX_MCP_ENTRY when set in the machine's own env, then the plugin's own location, node_modules/heyspex, $CLAUDE_PROJECT_DIR) — never $CLAUDE_PROJECT_DIR/scripts, which only exists in heyspex-app. WARNING: a repo whose .claude/settings.json already carries the hs install kit hooks runs every hook twice if this plugin is also enabled — use one or the other.",
|
|
3
|
+
"hooks": {
|
|
4
|
+
"SessionStart": [
|
|
5
|
+
{
|
|
6
|
+
"hooks": [
|
|
7
|
+
{
|
|
8
|
+
"type": "command",
|
|
9
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" wip-checkpoint",
|
|
10
|
+
"timeout": 5
|
|
11
|
+
}
|
|
12
|
+
]
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"hooks": [
|
|
16
|
+
{
|
|
17
|
+
"type": "command",
|
|
18
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" inject-doctrine",
|
|
19
|
+
"timeout": 5
|
|
20
|
+
}
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"hooks": [
|
|
25
|
+
{
|
|
26
|
+
"type": "command",
|
|
27
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" check-auto-memory-budget",
|
|
28
|
+
"timeout": 5
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"hooks": [
|
|
34
|
+
{
|
|
35
|
+
"type": "command",
|
|
36
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" check-claude-md-budget",
|
|
37
|
+
"timeout": 5
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"hooks": [
|
|
43
|
+
{
|
|
44
|
+
"type": "command",
|
|
45
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" git-reflog-audit",
|
|
46
|
+
"timeout": 5
|
|
47
|
+
}
|
|
48
|
+
]
|
|
49
|
+
}
|
|
50
|
+
],
|
|
51
|
+
"PreCompact": [
|
|
52
|
+
{
|
|
53
|
+
"hooks": [
|
|
54
|
+
{
|
|
55
|
+
"type": "command",
|
|
56
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" wip-checkpoint",
|
|
57
|
+
"timeout": 5
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
}
|
|
61
|
+
],
|
|
62
|
+
"UserPromptSubmit": [
|
|
63
|
+
{
|
|
64
|
+
"hooks": [
|
|
65
|
+
{
|
|
66
|
+
"type": "command",
|
|
67
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" preflight-reminder",
|
|
68
|
+
"timeout": 5
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"hooks": [
|
|
74
|
+
{
|
|
75
|
+
"type": "command",
|
|
76
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" intent-classifier-trigger",
|
|
77
|
+
"timeout": 5
|
|
78
|
+
}
|
|
79
|
+
]
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"hooks": [
|
|
83
|
+
{
|
|
84
|
+
"type": "command",
|
|
85
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" inject-communication-style",
|
|
86
|
+
"timeout": 5
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
"hooks": [
|
|
92
|
+
{
|
|
93
|
+
"type": "command",
|
|
94
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" inject-vault-context",
|
|
95
|
+
"timeout": 10
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
],
|
|
100
|
+
"PreToolUse": [
|
|
101
|
+
{
|
|
102
|
+
"matcher": "Bash|PowerShell",
|
|
103
|
+
"hooks": [
|
|
104
|
+
{
|
|
105
|
+
"type": "command",
|
|
106
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" git-identity-guard",
|
|
107
|
+
"timeout": 5
|
|
108
|
+
}
|
|
109
|
+
]
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"matcher": "Write|Edit|NotebookEdit|Bash|PowerShell|mcp__heyspex__heyspex_settings_set|mcp__plugin_heyspex_heyspex__heyspex_settings_set",
|
|
113
|
+
"hooks": [
|
|
114
|
+
{
|
|
115
|
+
"type": "command",
|
|
116
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" settings-write-gate",
|
|
117
|
+
"timeout": 5
|
|
118
|
+
}
|
|
119
|
+
]
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"matcher": ".*",
|
|
123
|
+
"hooks": [
|
|
124
|
+
{
|
|
125
|
+
"type": "command",
|
|
126
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" emit-claim-status --event=PreToolUse",
|
|
127
|
+
"timeout": 5
|
|
128
|
+
}
|
|
129
|
+
]
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
"matcher": "Write|NotebookEdit|Bash|PowerShell",
|
|
133
|
+
"hooks": [
|
|
134
|
+
{
|
|
135
|
+
"type": "command",
|
|
136
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" enforce-vault-naming",
|
|
137
|
+
"timeout": 5
|
|
138
|
+
}
|
|
139
|
+
]
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"matcher": "Write|NotebookEdit|Bash|PowerShell",
|
|
143
|
+
"hooks": [
|
|
144
|
+
{
|
|
145
|
+
"type": "command",
|
|
146
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" guard-auto-memory-writes",
|
|
147
|
+
"timeout": 5
|
|
148
|
+
}
|
|
149
|
+
]
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"matcher": "Edit|MultiEdit|Write|Bash|PowerShell",
|
|
153
|
+
"hooks": [
|
|
154
|
+
{
|
|
155
|
+
"type": "command",
|
|
156
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" preflight-reminder",
|
|
157
|
+
"timeout": 5
|
|
158
|
+
}
|
|
159
|
+
]
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"matcher": "ExitPlanMode",
|
|
163
|
+
"hooks": [
|
|
164
|
+
{
|
|
165
|
+
"type": "command",
|
|
166
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" plan-review-gate",
|
|
167
|
+
"timeout": 8
|
|
168
|
+
}
|
|
169
|
+
]
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"matcher": "ExitPlanMode",
|
|
173
|
+
"hooks": [
|
|
174
|
+
{
|
|
175
|
+
"type": "command",
|
|
176
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" plan-exit-ingest-gate",
|
|
177
|
+
"timeout": 5
|
|
178
|
+
}
|
|
179
|
+
]
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"matcher": "Edit|MultiEdit|Write",
|
|
183
|
+
"hooks": [
|
|
184
|
+
{
|
|
185
|
+
"type": "command",
|
|
186
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" claim-before-code-gate",
|
|
187
|
+
"timeout": 5
|
|
188
|
+
}
|
|
189
|
+
]
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"matcher": "mcp__heyspex__heyspex_file_spec|mcp__plugin_heyspex_heyspex__heyspex_file_spec",
|
|
193
|
+
"hooks": [
|
|
194
|
+
{
|
|
195
|
+
"type": "command",
|
|
196
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" capture-workflow-gate",
|
|
197
|
+
"timeout": 8
|
|
198
|
+
}
|
|
199
|
+
]
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"matcher": "Bash|PowerShell",
|
|
203
|
+
"hooks": [
|
|
204
|
+
{
|
|
205
|
+
"type": "command",
|
|
206
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" git-stash-gate",
|
|
207
|
+
"timeout": 10
|
|
208
|
+
}
|
|
209
|
+
]
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"matcher": "Skill|Workflow",
|
|
213
|
+
"hooks": [
|
|
214
|
+
{
|
|
215
|
+
"type": "command",
|
|
216
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" research-method-guard",
|
|
217
|
+
"timeout": 5
|
|
218
|
+
}
|
|
219
|
+
]
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
"matcher": "Workflow|Skill",
|
|
223
|
+
"hooks": [
|
|
224
|
+
{
|
|
225
|
+
"type": "command",
|
|
226
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" deep-research-cost-gate",
|
|
227
|
+
"timeout": 5
|
|
228
|
+
}
|
|
229
|
+
]
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
"matcher": "WebSearch|WebFetch|mcp__heyspex__heyspex_save_research|mcp__plugin_heyspex_heyspex__heyspex_save_research",
|
|
233
|
+
"hooks": [
|
|
234
|
+
{
|
|
235
|
+
"type": "command",
|
|
236
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" research-protocol-gate",
|
|
237
|
+
"timeout": 5
|
|
238
|
+
}
|
|
239
|
+
]
|
|
240
|
+
}
|
|
241
|
+
],
|
|
242
|
+
"Stop": [
|
|
243
|
+
{
|
|
244
|
+
"hooks": [
|
|
245
|
+
{
|
|
246
|
+
"type": "command",
|
|
247
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" emit-claim-status --event=Stop",
|
|
248
|
+
"timeout": 5
|
|
249
|
+
}
|
|
250
|
+
]
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
"hooks": [
|
|
254
|
+
{
|
|
255
|
+
"type": "command",
|
|
256
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" naughty-list-gate",
|
|
257
|
+
"timeout": 5
|
|
258
|
+
}
|
|
259
|
+
]
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"hooks": [
|
|
263
|
+
{
|
|
264
|
+
"type": "command",
|
|
265
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" id-display-format-gate",
|
|
266
|
+
"timeout": 5
|
|
267
|
+
}
|
|
268
|
+
]
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
"hooks": [
|
|
272
|
+
{
|
|
273
|
+
"type": "command",
|
|
274
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" epic-milestone-phrasing-gate",
|
|
275
|
+
"timeout": 5
|
|
276
|
+
}
|
|
277
|
+
]
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
"hooks": [
|
|
281
|
+
{
|
|
282
|
+
"type": "command",
|
|
283
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" git-reflog-audit",
|
|
284
|
+
"timeout": 5
|
|
285
|
+
}
|
|
286
|
+
]
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
"hooks": [
|
|
290
|
+
{
|
|
291
|
+
"type": "command",
|
|
292
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" enforce-session-sequence",
|
|
293
|
+
"timeout": 5
|
|
294
|
+
}
|
|
295
|
+
]
|
|
296
|
+
}
|
|
297
|
+
],
|
|
298
|
+
"PostToolUse": [
|
|
299
|
+
{
|
|
300
|
+
"matcher": ".*",
|
|
301
|
+
"hooks": [
|
|
302
|
+
{
|
|
303
|
+
"type": "command",
|
|
304
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" emit-claim-status --event=PostToolUse",
|
|
305
|
+
"timeout": 5
|
|
306
|
+
}
|
|
307
|
+
]
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
"matcher": "Edit|Write|MultiEdit",
|
|
311
|
+
"hooks": [
|
|
312
|
+
{
|
|
313
|
+
"type": "command",
|
|
314
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" notify-status-flip",
|
|
315
|
+
"timeout": 5
|
|
316
|
+
}
|
|
317
|
+
]
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
"matcher": "Edit|Write|MultiEdit",
|
|
321
|
+
"hooks": [
|
|
322
|
+
{
|
|
323
|
+
"type": "command",
|
|
324
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" close-terminal-on-ship",
|
|
325
|
+
"timeout": 5
|
|
326
|
+
}
|
|
327
|
+
]
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
"matcher": "Edit|Write|MultiEdit",
|
|
331
|
+
"hooks": [
|
|
332
|
+
{
|
|
333
|
+
"type": "command",
|
|
334
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" scripts/stamp-provenance-on-edit.mjs",
|
|
335
|
+
"timeout": 5
|
|
336
|
+
}
|
|
337
|
+
]
|
|
338
|
+
}
|
|
339
|
+
],
|
|
340
|
+
"SessionEnd": [
|
|
341
|
+
{
|
|
342
|
+
"hooks": [
|
|
343
|
+
{
|
|
344
|
+
"type": "command",
|
|
345
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" session-end",
|
|
346
|
+
"timeout": 5
|
|
347
|
+
}
|
|
348
|
+
]
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
"hooks": [
|
|
352
|
+
{
|
|
353
|
+
"type": "command",
|
|
354
|
+
"command": "node \"${CLAUDE_PLUGIN_ROOT}/bin/run-hook.mjs\" close-terminal-on-ship",
|
|
355
|
+
"timeout": 5
|
|
356
|
+
}
|
|
357
|
+
]
|
|
358
|
+
}
|
|
359
|
+
]
|
|
360
|
+
}
|
|
361
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "Cursor plugin MCP declaration (HS-2HII). Boots through the plugin's own bin/launch-mcp.mjs, the same launcher .mcp.json uses for Claude Code. Cursor expands ${CURSOR_PLUGIN_ROOT} to the plugin's install path in command/args/env/cwd (cursor.com/docs/reference/plugins), so this works from a plain `npm install heyspex`: the launcher resolves node_modules/heyspex first, then CURSOR_PROJECT_DIR and the other source-checkout fallbacks. Never point this at vendor/heyspex-mcp/cli.mjs directly: that path exists only inside the platform checkout.",
|
|
3
|
+
"mcpServers": {
|
|
4
|
+
"heyspex": {
|
|
5
|
+
"type": "stdio",
|
|
6
|
+
"command": "node",
|
|
7
|
+
"args": ["${CURSOR_PLUGIN_ROOT}/bin/launch-mcp.mjs"],
|
|
8
|
+
"env": {
|
|
9
|
+
"HEYSPEX_VAULT_ROOT": "${workspaceFolder}"
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -181,15 +181,13 @@ export function writeBuildRecord({ vaultRoot, vendorDir, buildFile, buildsDir, p
|
|
|
181
181
|
pid: recordPid,
|
|
182
182
|
vendorDir: path.relative(root, vDir).split(path.sep).join('/'),
|
|
183
183
|
};
|
|
184
|
-
// Legacy machine-wide record — kept for back-compat readers.
|
|
185
|
-
const dir = path.dirname(target);
|
|
186
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
187
|
-
const tmp = `${target}.${process.pid}.tmp`;
|
|
188
|
-
fs.writeFileSync(tmp, `${JSON.stringify(record, null, 2)}\n`, 'utf8');
|
|
189
|
-
fs.renameSync(tmp, target);
|
|
190
184
|
|
|
191
|
-
// Per-process record + opportunistic dead-pid pruning
|
|
192
|
-
//
|
|
185
|
+
// Per-process record + opportunistic dead-pid pruning, computed BEFORE the
|
|
186
|
+
// legacy write below so the on-disk legacy file and the returned `record`
|
|
187
|
+
// never disagree on shape (round-trip identity relied on by
|
|
188
|
+
// vendor/heyspex-mcp/mcp-build-fingerprint.test.mjs and any future disk
|
|
189
|
+
// reader). Best-effort: a failure here must never take server startup down
|
|
190
|
+
// with it, and must never skip the legacy write that follows.
|
|
193
191
|
try {
|
|
194
192
|
fs.mkdirSync(perDir, { recursive: true });
|
|
195
193
|
pruneDeadRecords(perDir, recordPid);
|
|
@@ -207,8 +205,18 @@ export function writeBuildRecord({ vaultRoot, vendorDir, buildFile, buildsDir, p
|
|
|
207
205
|
fs.renameSync(perTmp, perTarget);
|
|
208
206
|
record.perProcessRecord = perRecord;
|
|
209
207
|
} catch {
|
|
210
|
-
//
|
|
208
|
+
// per-process bookkeeping is best-effort — the legacy record below still lands
|
|
211
209
|
}
|
|
210
|
+
|
|
211
|
+
// Legacy machine-wide record — kept for back-compat readers. Written last
|
|
212
|
+
// (after `record` has its final shape, `perProcessRecord` included when
|
|
213
|
+
// available) so this file and the return value are always the same object.
|
|
214
|
+
const dir = path.dirname(target);
|
|
215
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
216
|
+
const tmp = `${target}.${process.pid}.tmp`;
|
|
217
|
+
fs.writeFileSync(tmp, `${JSON.stringify(record, null, 2)}\n`, 'utf8');
|
|
218
|
+
fs.renameSync(tmp, target);
|
|
219
|
+
|
|
212
220
|
return record;
|
|
213
221
|
}
|
|
214
222
|
|