heyspex 0.1.0 → 0.2.1
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/.claude-plugin/marketplace.json +14 -0
- package/README.md +21 -0
- package/bin/hs.mjs +1089 -104
- 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 +1127 -103
- package/dist/cli/hs-claim.mjs +981 -63
- package/dist/cli/hs-connect.mjs +10059 -1729
- package/dist/cli/hs-defer.mjs +5507 -3072
- package/dist/cli/hs-dev.mjs +576 -0
- package/dist/cli/hs-env.mjs +416 -302
- package/dist/cli/hs-index-rebuild.mjs +7334 -0
- package/dist/cli/hs-index-reconcile.mjs +8138 -0
- package/dist/cli/hs-init.mjs +2840 -149
- package/dist/cli/hs-install.mjs +7214 -594
- package/dist/cli/hs-join.mjs +10640 -2421
- package/dist/cli/hs-vault-pull.mjs +8157 -6370
- package/dist/cli/hs-vault-push.mjs +6433 -0
- package/dist/cli/hs-vault.mjs +4029 -1555
- package/dist/cli/hs-workspace.mjs +2702 -538
- 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 +30 -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 +28 -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 +33 -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 +32 -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/copilot-plugin-install.md +162 -0
- package/docs/driving-heyspex-from-copilot.md +165 -0
- package/docs/mcp-client-config.md +259 -6
- package/package.json +249 -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/README.md +309 -0
- package/plugins/heyspex/bin/launch-mcp.mjs +95 -0
- package/plugins/heyspex/bin/run-hook.mjs +80 -0
- package/plugins/heyspex/hooks/cursor-hooks.json +308 -0
- package/plugins/heyspex/hooks/hooks.json +418 -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 +456 -0
- package/scripts/claude-hooks/_intent-classifier-semantic.mjs +356 -0
- package/scripts/claude-hooks/_run.mjs +413 -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-execution-gate.mjs +51 -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 +577 -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/diagnose-capture-reminder.mjs +11 -0
- package/scripts/claude-hooks/directive-obligation-gate.mjs +11 -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 +86 -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 +279 -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 +451 -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/vault-mirror-catchup.mjs +11 -0
- package/scripts/claude-hooks/vault-write-tier-guard.mjs +11 -0
- package/scripts/claude-hooks/wip-checkpoint.mjs +302 -0
- package/scripts/cursor-hooks/manifest.mjs +281 -0
- package/scripts/dev-server-status.mjs +34 -13
- package/scripts/dev-server-stop.mjs +313 -0
- package/scripts/heyspex-mode.mjs +288 -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 +496 -0
- package/scripts/hs-worktree.mjs +201 -0
- package/scripts/install-claude-code-hooks.mjs +272 -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 +199 -61
- package/scripts/lib/customer-kit.mjs +1203 -0
- package/scripts/lib/dev-mode.mjs +249 -32
- package/scripts/lib/directive-obligations.mjs +349 -0
- package/scripts/lib/heyspex-home.mjs +72 -0
- package/scripts/lib/hook-dispositions.mjs +210 -0
- package/scripts/lib/hook-vault-header.mjs +30 -0
- package/scripts/lib/hs-command.mjs +277 -0
- package/scripts/lib/hs-companion-settings.mjs +472 -0
- package/scripts/lib/hs-source-branch.mjs +196 -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 +13 -22
- package/scripts/lib/hs-source-preflight.mjs +18 -4
- package/scripts/lib/hs-source-push.mjs +386 -307
- 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/lib/window-placement.mjs +109 -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 +449 -0
- package/spexharness/src/adapters/copilot.mjs +236 -0
- package/spexharness/src/adapters/detect-harness.mjs +34 -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/_shell-write-targets.mjs +77 -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 +275 -0
- package/spexharness/src/gates/diagnose-capture-reminder.mjs +112 -0
- package/spexharness/src/gates/directive-obligation-gate.decide.mjs +132 -0
- package/spexharness/src/gates/directive-obligation-gate.mjs +183 -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/gates/vault-mirror-catchup.mjs +124 -0
- package/spexharness/src/gates/vault-write-tier-guard.decide.mjs +125 -0
- package/spexharness/src/gates/vault-write-tier-guard.mjs +42 -0
- package/spexharness/src/git-reflog-audit.mjs +294 -0
- package/spexharness/src/intent-classifier.mjs +196 -0
- package/spexharness/src/intent-directive.mjs +626 -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 +849 -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 +96 -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 +77 -8
- package/vendor/heyspex-mcp/capture-channel.mjs +55 -5
- package/vendor/heyspex-mcp/capture-console-client.mjs +117 -3
- package/vendor/heyspex-mcp/capture-focus.mjs +1061 -31
- package/vendor/heyspex-mcp/capture-outbox.mjs +15 -5
- package/vendor/heyspex-mcp/capture-sources.mjs +195 -0
- package/vendor/heyspex-mcp/capture-tools.mjs +1264 -0
- package/vendor/heyspex-mcp/claim-tools.mjs +1147 -0
- package/vendor/heyspex-mcp/cli-verbs.mjs +2074 -0
- package/vendor/heyspex-mcp/cli.mjs +207 -15524
- package/vendor/heyspex-mcp/close-branch-report.mjs +102 -0
- package/vendor/heyspex-mcp/cloud-tool-surface.mjs +128 -0
- package/vendor/heyspex-mcp/cloud-vault-writes.mjs +602 -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 +822 -17
- package/vendor/heyspex-mcp/console-transport.mjs +172 -0
- package/vendor/heyspex-mcp/credentials.mjs +585 -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 +131 -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 +723 -0
- package/vendor/heyspex-mcp/fleet-handlers.mjs +37 -0
- package/vendor/heyspex-mcp/fleet-queue-tools.mjs +71 -15
- package/vendor/heyspex-mcp/focus-tools.mjs +190 -0
- package/vendor/heyspex-mcp/folder-trust-store.mjs +60 -0
- package/vendor/heyspex-mcp/http-transport.mjs +302 -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 +107 -0
- package/vendor/heyspex-mcp/memory-tools.mjs +523 -0
- package/vendor/heyspex-mcp/mvp-mode.mjs +53 -6
- package/vendor/heyspex-mcp/obligation-backstop.mjs +103 -0
- package/vendor/heyspex-mcp/occupied-keys.mjs +142 -0
- package/vendor/heyspex-mcp/on-deck-brief.mjs +3377 -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 +908 -22
- 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 +327 -0
- package/vendor/heyspex-mcp/procedure-tools.mjs +1181 -970
- package/vendor/heyspex-mcp/promote-capture.mjs +388 -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 +666 -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 +191 -15
- 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 +83 -0
- package/vendor/heyspex-mcp/research-focus.mjs +207 -4
- package/vendor/heyspex-mcp/research-handlers.mjs +625 -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/roadmap-default.mjs +70 -0
- 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 +109 -0
- package/vendor/heyspex-mcp/session-tools.mjs +162 -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 +453 -0
- package/vendor/heyspex-mcp/spec-id-lib.mjs +93 -17
- package/vendor/heyspex-mcp/split-research.mjs +304 -56
- package/vendor/heyspex-mcp/stdio-rpc.mjs +22 -0
- package/vendor/heyspex-mcp/submit-for-review.mjs +150 -7
- package/vendor/heyspex-mcp/summary-contract.mjs +105 -0
- package/vendor/heyspex-mcp/summary-write-tools.mjs +228 -0
- package/vendor/heyspex-mcp/symptom-query.mjs +146 -0
- package/vendor/heyspex-mcp/test-helpers.mjs +123 -1
- package/vendor/heyspex-mcp/tool-catalog.mjs +2819 -0
- package/vendor/heyspex-mcp/tool-dispatch.mjs +657 -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 +720 -0
- package/vendor/heyspex-mcp/vault-less-endpoints.mjs +52 -0
- package/vendor/heyspex-mcp/vault-resolve.mjs +554 -68
- package/vendor/heyspex-mcp/verify-reproduction.mjs +270 -30
- package/vendor/heyspex-mcp/whoami.mjs +92 -0
- package/vendor/heyspex-mcp/write-outbox.mjs +512 -0
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "SINGLE SOURCE OF TRUTH for model ids, aliases, retirements, context windows, capabilities and list prices — every cloud provider the fleet can call (DeepSeek, Anthropic, OpenAI, Gemini, OpenRouter, GitHub Models) AND every local runtime (Ollama, vLLM). Hand-edit THIS file when a vendor ships or retires a model; never scatter a new literal id through the code. Readers: dev-factory/lib/model-catalog.mjs (typed accessors + self-test), dev-factory/cloud-clients.mjs (the whole PROVIDERS table is derived from `providerKeys` below), dev-factory/lib/fleet-manifest.mjs (context/VRAM/cost tables), spexharness/src/chat/compact.mjs (window sizes), spex-console/src/lib/model-catalog.ts (the console's ONLY import path — keep it so when dev-factory merges into SpexFleet one line moves), dev-factory/judge.mjs, dev-factory/router.mjs --self-test (refuses retired ids in routing-table.json), scripts/check-model-ids.mjs (refuses retired ids in live code). ROUTING (which seat runs which model, which machine hosts which local model) stays in routing-table.json — this file says what a model IS and how it is reached, not who uses it. UPGRADE RECIPE: (1) add the new id under `models` with its window/price; (2) move the old id into `aliases` (old → new) and `retired`; (3) repoint the `roles` / `providerKeys` you want moved; (4) run `node dev-factory/lib/model-catalog.mjs --self-test && node dev-factory/router.mjs --self-test && npm run check:model-ids`. `verifiedOn` per provider records when the prices were last checked against the vendor's sheet.",
|
|
3
|
+
"verified": "2026-09-18",
|
|
4
|
+
"cloud": {
|
|
5
|
+
"deepseek": {
|
|
6
|
+
"kind": "openai",
|
|
7
|
+
"company": "deepseek",
|
|
8
|
+
"baseUrl": "https://api.deepseek.com/v1",
|
|
9
|
+
"betaBaseUrl": "https://api.deepseek.com/beta",
|
|
10
|
+
"anthropicBaseUrl": "https://api.deepseek.com/anthropic",
|
|
11
|
+
"userIdField": "user_id",
|
|
12
|
+
"_userIdFieldNote": "Wire field for per-seat cache/scheduling isolation (DeepSeek rate-limit doc: user_id isolates KVCache and scheduling). cloud-clients.mjs sends opts.userId (defaulting to opts.seat) under this name only for providers that declare it; betaBaseUrl is used only when a caller opts into strict tool schemas (opts.strictTools) — DeepSeek's strict mode is served from /beta.",
|
|
13
|
+
"keyEnv": "HEYSPEX_DEEPSEEK_API_KEY",
|
|
14
|
+
"keyEnvFallback": "DEEPSEEK_API_KEY",
|
|
15
|
+
"source": "https://api-docs.deepseek.com/quick_start/pricing",
|
|
16
|
+
"verifiedOn": "2026-09-18",
|
|
17
|
+
"peakHoursUtc": { "days": [1, 2, 3, 4, 5], "ranges": [["01:00", "04:00"], ["06:00", "10:00"]], "note": "Off-peak rates are half of peak; all other hours are off-peak (DeepSeek pricing note 3)." },
|
|
18
|
+
"roles": {
|
|
19
|
+
"cheap": "deepseek-flash",
|
|
20
|
+
"strong": "deepseek-v4-pro",
|
|
21
|
+
"chatDefault": "deepseek-flash",
|
|
22
|
+
"judge": "deepseek-flash",
|
|
23
|
+
"legacyJudge": "deepseek-chat"
|
|
24
|
+
},
|
|
25
|
+
"models": {
|
|
26
|
+
"deepseek-flash": {
|
|
27
|
+
"displayName": "DeepSeek-V4.1-Flash",
|
|
28
|
+
"released": "2026-09-10",
|
|
29
|
+
"contextWindow": 1048576,
|
|
30
|
+
"maxOutputTokens": 393216,
|
|
31
|
+
"tier": "cheap",
|
|
32
|
+
"capabilities": ["api", "metered", "tools", "thinking", "json", "vision", "strict-tools", "fim", "prefix"],
|
|
33
|
+
"thinkingDefault": true,
|
|
34
|
+
"effortLevels": ["low", "high", "max"],
|
|
35
|
+
"concurrencyLimit": 2500,
|
|
36
|
+
"pricePer1M": {
|
|
37
|
+
"peak": { "cacheHit": 0.006, "cacheMiss": 0.30, "output": 1.20 },
|
|
38
|
+
"offPeak": { "cacheHit": 0.003, "cacheMiss": 0.15, "output": 0.60 }
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"deepseek-v4-pro": {
|
|
42
|
+
"displayName": "DeepSeek-V4-Pro-0813",
|
|
43
|
+
"released": "2026-08-13",
|
|
44
|
+
"contextWindow": 1048576,
|
|
45
|
+
"maxOutputTokens": 393216,
|
|
46
|
+
"tier": "strong",
|
|
47
|
+
"capabilities": ["api", "metered", "tools", "thinking", "json", "strict-tools", "fim", "prefix", "max_reasoning"],
|
|
48
|
+
"thinkingDefault": true,
|
|
49
|
+
"effortLevels": ["low", "high", "max"],
|
|
50
|
+
"concurrencyLimit": 500,
|
|
51
|
+
"note": "Retirement announced 2026-09-10 was reversed; service continues past 2026-09-14 at unchanged billing (pricing note 2).",
|
|
52
|
+
"pricePer1M": {
|
|
53
|
+
"peak": { "cacheHit": 0.044, "cacheMiss": 1.32, "output": 3.96 },
|
|
54
|
+
"offPeak": { "cacheHit": 0.022, "cacheMiss": 0.66, "output": 1.98 }
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"aliases": {
|
|
59
|
+
"deepseek-v4-flash": "deepseek-flash",
|
|
60
|
+
"deepseek-v4-flash-vision-exp": "deepseek-flash",
|
|
61
|
+
"deepseek-chat": "deepseek-flash"
|
|
62
|
+
},
|
|
63
|
+
"retired": [
|
|
64
|
+
{ "id": "deepseek-v4-flash", "on": "2026-09-10", "servedBy": "deepseek-flash", "note": "Legacy name still accepted by the API and routed to V4.1 Flash at the Flash price 'temporarily'." },
|
|
65
|
+
{ "id": "deepseek-v4-flash-vision-exp", "on": "2026-09-10", "servedBy": "deepseek-flash" }
|
|
66
|
+
],
|
|
67
|
+
"unlisted": {
|
|
68
|
+
"deepseek-chat": "Not on the 2026-09-10 model sheet. Kept only as the held-constant LLM-judge alias (PROVIDERS key `deepseek`); priced as deepseek-flash. Verify with --liveness before relying on it."
|
|
69
|
+
},
|
|
70
|
+
"emitAliasesAsProviderKeys": true,
|
|
71
|
+
"providerKeys": {
|
|
72
|
+
"deepseek-flash": { "model": "deepseek-flash" },
|
|
73
|
+
"deepseek-v4-pro": { "model": "deepseek-v4-pro" },
|
|
74
|
+
"deepseek": { "model": "deepseek-chat", "legacyAliasOf": "deepseek-flash", "note": "Legacy alias, held-constant LLM judge. Sends `deepseek-chat` on the wire, priced as deepseek-flash." }
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
"anthropic": {
|
|
78
|
+
"kind": "anthropic",
|
|
79
|
+
"company": "anthropic",
|
|
80
|
+
"baseUrl": "https://api.anthropic.com/v1",
|
|
81
|
+
"keyEnv": "HEYSPEX_ANTHROPIC_API_KEY",
|
|
82
|
+
"source": "claude-api skill model table (cached 2026-06-24) — first-party API rates",
|
|
83
|
+
"verifiedOn": "2026-06-24",
|
|
84
|
+
"_note": "Anthropic models are excluded from the dev-factory council by construction and are the ceiling/reference arm in benches; the PROVIDERS keys `claude` / `claude-opus` still point at the 4.x generation on purpose (flip `providerKeys` to the 5-family when the owner rules on it — the ids and prices are already here). Claude Code CLI launches use the bare alias words in `cliAliases` (resolved by spex-console/src/lib/model-registry/launch-resolve.ts), not these ids.",
|
|
85
|
+
"roles": {
|
|
86
|
+
"default": "claude-opus-5",
|
|
87
|
+
"strong": "claude-opus-5",
|
|
88
|
+
"mid": "claude-sonnet-5",
|
|
89
|
+
"cheap": "claude-haiku-4-5",
|
|
90
|
+
"max": "claude-fable-5-1",
|
|
91
|
+
"previousStrong": "claude-opus-4-8",
|
|
92
|
+
"previousMid": "claude-sonnet-4-6"
|
|
93
|
+
},
|
|
94
|
+
"cliAliases": { "opus": "claude-opus-5", "sonnet": "claude-sonnet-5", "haiku": "claude-haiku-4-5", "fable": "claude-fable-5-1" },
|
|
95
|
+
"models": {
|
|
96
|
+
"claude-fable-5-1": { "displayName": "Claude Fable 5.1", "contextWindow": 1048576, "maxOutputTokens": 131072, "tier": "max", "capabilities": ["api", "metered", "tools", "thinking", "vision", "json"], "noTemp": true, "thinkingAlwaysOn": true, "pricePer1M": { "input": 10.00, "output": 50.00 } },
|
|
97
|
+
"claude-opus-5": { "displayName": "Claude Opus 5", "contextWindow": 1048576, "maxOutputTokens": 131072, "tier": "strong", "capabilities": ["api", "metered", "tools", "thinking", "vision", "json"], "noTemp": true, "pricePer1M": { "input": 5.00, "output": 25.00 } },
|
|
98
|
+
"claude-sonnet-5": { "displayName": "Claude Sonnet 5", "contextWindow": 1048576, "maxOutputTokens": 131072, "tier": "strong", "capabilities": ["api", "metered", "tools", "thinking", "vision", "json"], "noTemp": true, "pricePer1M": { "input": 2.00, "output": 10.00 } },
|
|
99
|
+
"claude-haiku-4-5": { "displayName": "Claude Haiku 4.5", "contextWindow": 200000, "maxOutputTokens": 65536, "tier": "cheap", "capabilities": ["api", "metered", "tools", "thinking", "vision"], "pricePer1M": { "input": 1.00, "output": 5.00 } },
|
|
100
|
+
"claude-opus-4-8": { "displayName": "Claude Opus 4.8", "contextWindow": 1048576, "maxOutputTokens": 131072, "tier": "strong", "capabilities": ["api", "metered", "tools", "thinking", "vision", "json"], "noTemp": true, "generation": "previous", "pricePer1M": { "input": 5.00, "output": 25.00 } },
|
|
101
|
+
"claude-sonnet-4-6":{ "displayName": "Claude Sonnet 4.6","contextWindow": 1048576, "maxOutputTokens": 131072, "tier": "strong", "capabilities": ["api", "metered", "tools", "thinking", "vision", "json"], "generation": "previous", "pricePer1M": { "input": 3.00, "output": 15.00 } }
|
|
102
|
+
},
|
|
103
|
+
"aliases": {},
|
|
104
|
+
"retired": [],
|
|
105
|
+
"providerKeys": {
|
|
106
|
+
"claude": { "model": "claude-sonnet-4-6", "note": "Generic Claude key — previous generation kept on purpose; see _note." },
|
|
107
|
+
"claude-opus": { "model": "claude-opus-4-8", "noTemp": true, "note": "Opus key — previous generation kept on purpose. Old table priced this at $15/$75; the sheet says $5/$25." }
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
"openai": {
|
|
111
|
+
"kind": "openai",
|
|
112
|
+
"company": "openai",
|
|
113
|
+
"baseUrl": "https://api.openai.com/v1",
|
|
114
|
+
"keyEnv": "HEYSPEX_OPENAI_API_KEY",
|
|
115
|
+
"source": "carried over from cloud-clients.mjs PROVIDERS (no vendor re-verification in this pass)",
|
|
116
|
+
"verifiedOn": "2026-06-28",
|
|
117
|
+
"roles": { "default": "gpt-4o" },
|
|
118
|
+
"models": {
|
|
119
|
+
"gpt-4o": { "contextWindow": 128000, "tier": "strong", "capabilities": ["api", "metered", "tools", "vision", "json"], "pricePer1M": { "input": 2.50, "output": 10.00 } }
|
|
120
|
+
},
|
|
121
|
+
"aliases": {},
|
|
122
|
+
"retired": [],
|
|
123
|
+
"providerKeys": { "openai": { "model": "gpt-4o" } }
|
|
124
|
+
},
|
|
125
|
+
"gemini": {
|
|
126
|
+
"kind": "openai",
|
|
127
|
+
"company": "google",
|
|
128
|
+
"baseUrl": "https://generativelanguage.googleapis.com/v1beta/openai",
|
|
129
|
+
"keyEnv": "HEYSPEX_GEMINI_API_KEY",
|
|
130
|
+
"source": "carried over from cloud-clients.mjs PROVIDERS (no vendor re-verification in this pass)",
|
|
131
|
+
"verifiedOn": "2026-06-28",
|
|
132
|
+
"roles": { "default": "gemini-2.5-pro", "strong": "gemini-2.5-pro" },
|
|
133
|
+
"models": {
|
|
134
|
+
"gemini-2.5-pro": { "contextWindow": 1048576, "tier": "strong", "capabilities": ["api", "metered", "tools", "vision", "json", "thinking"], "pricePer1M": { "input": 1.25, "output": 10.00 } }
|
|
135
|
+
},
|
|
136
|
+
"aliases": {},
|
|
137
|
+
"retired": [],
|
|
138
|
+
"providerKeys": { "gemini": { "model": "gemini-2.5-pro" } }
|
|
139
|
+
},
|
|
140
|
+
"openrouter": {
|
|
141
|
+
"kind": "openai",
|
|
142
|
+
"company": "openrouter",
|
|
143
|
+
"baseUrl": "https://openrouter.ai/api/v1",
|
|
144
|
+
"keyEnv": "OPENROUTER_API_KEY",
|
|
145
|
+
"source": "carried over from cloud-clients.mjs PROVIDERS (OpenRouter list prices as dated per model)",
|
|
146
|
+
"verifiedOn": "2026-07-10",
|
|
147
|
+
"_note": "Same-family fallbacks hosted via OpenRouter (council key resilience, 2026-07-08 dogfood audit): a customer fleet with ONE OpenRouter key can still seat all three decorrelated council families — the MODEL family is what decorrelates blind spots, not the API host. grok-4.3 is the decorrelated director-seat primary (owner directive 2026-07-10, HS-E1O0); glm-5.2 is the 'beat Opus cheaper' candidate (HS-XNJI), not yet wired into any tier.",
|
|
148
|
+
"roles": { "cheap": "openai/gpt-4o-mini", "director": "x-ai/grok-4.3", "directorFallback": "z-ai/glm-5.2", "geminiFallback": "google/gemini-2.5-pro", "gpt4oFallback": "openai/gpt-4o" },
|
|
149
|
+
"models": {
|
|
150
|
+
"openai/gpt-4o-mini": { "contextWindow": 128000, "tier": "cheap", "capabilities": ["api", "metered", "tools", "json"], "pricePer1M": { "input": 0.15, "output": 0.60 } },
|
|
151
|
+
"openai/gpt-4o": { "contextWindow": 128000, "tier": "strong", "capabilities": ["api", "metered", "tools", "vision", "json"], "pricePer1M": { "input": 2.50, "output": 10.00 } },
|
|
152
|
+
"google/gemini-2.5-pro": { "contextWindow": 1048576, "tier": "strong", "capabilities": ["api", "metered", "tools", "vision", "json"], "pricePer1M": { "input": 1.25, "output": 10.00 } },
|
|
153
|
+
"z-ai/glm-5.2": { "displayName": "GLM-5.2 (Z.ai, open-weight 744B)", "contextWindow": 200000, "tier": "strong", "capabilities": ["api", "metered", "tools", "json"], "verifiedOn": "2026-06-30", "pricePer1M": { "input": 0.95, "output": 3.00 } },
|
|
154
|
+
"x-ai/grok-4.3": { "displayName": "Grok 4.3 (xAI)", "contextWindow": 256000, "tier": "strong", "capabilities": ["api", "metered", "tools", "json", "thinking", "structured-outputs"], "verifiedOn": "2026-07-10", "pricePer1M": { "input": 1.25, "output": 2.50 } }
|
|
155
|
+
},
|
|
156
|
+
"aliases": {},
|
|
157
|
+
"retired": [],
|
|
158
|
+
"providerKeys": {
|
|
159
|
+
"openrouter": { "model": "openai/gpt-4o-mini" },
|
|
160
|
+
"gemini-openrouter": { "model": "google/gemini-2.5-pro" },
|
|
161
|
+
"gpt4o-openrouter": { "model": "openai/gpt-4o" },
|
|
162
|
+
"glm-5.2": { "model": "z-ai/glm-5.2" },
|
|
163
|
+
"grok-4.3": { "model": "x-ai/grok-4.3" }
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
"github-models": {
|
|
167
|
+
"kind": "openai",
|
|
168
|
+
"company": "github",
|
|
169
|
+
"baseUrl": "https://models.github.ai/inference",
|
|
170
|
+
"keyEnv": "HEYSPEX_GITHUB_TOKEN",
|
|
171
|
+
"keyEnvFallback": "GITHUB_TOKEN",
|
|
172
|
+
"source": "GitHub Models bills via Copilot credits; gpt-4o list price mirrored for the ledger (estimate)",
|
|
173
|
+
"verifiedOn": "2026-06-28",
|
|
174
|
+
"_note": "Copilot-ecosystem credits as a cloud tier (HS-32OM fleet onboarding). Model ids are publisher-namespaced.",
|
|
175
|
+
"roles": { "default": "openai/gpt-4o" },
|
|
176
|
+
"models": {
|
|
177
|
+
"openai/gpt-4o": { "contextWindow": 128000, "tier": "strong", "capabilities": ["api", "metered", "tools", "vision", "json"], "pricePer1M": { "input": 2.50, "output": 10.00 } }
|
|
178
|
+
},
|
|
179
|
+
"aliases": {},
|
|
180
|
+
"retired": [],
|
|
181
|
+
"providerKeys": { "github-models": { "model": "openai/gpt-4o" } }
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
"local": {
|
|
185
|
+
"ollama": {
|
|
186
|
+
"kind": "ollama",
|
|
187
|
+
"_comment": "Local fleet models. WHERE each fits (canHost) and WHO uses it (purposes) live in routing-table.json; per-machine speeds live in fleet-manifest.mjs STATIC_SPEEDS. Ids are Ollama tags exactly as `ollama list` prints them. Local models have no PROVIDERS entry — callModel treats an unknown id as an Ollama id.",
|
|
188
|
+
"roles": {
|
|
189
|
+
"builder": "gpt-oss:20b",
|
|
190
|
+
"coder": "qwen3-coder:30b",
|
|
191
|
+
"judgeFallback": "qwen3-coder:30b",
|
|
192
|
+
"vision": "qwen3.6:27b",
|
|
193
|
+
"small": "qwen3:8b"
|
|
194
|
+
},
|
|
195
|
+
"models": {
|
|
196
|
+
"gpt-oss:20b": { "contextWindow": 131072, "vramRequiredMb": 13800, "architecture": "gptoss", "capabilities": ["tools", "thinking"] },
|
|
197
|
+
"qwen3-coder:30b": { "contextWindow": 262144, "vramRequiredMb": 18600, "architecture": "qwen3moe", "capabilities": ["tools"] },
|
|
198
|
+
"qwen3.6:27b": { "contextWindow": 262144, "vramRequiredMb": 17400, "architecture": "qwen35", "capabilities": ["tools", "thinking", "vision"] },
|
|
199
|
+
"qwen2.5-coder:32b": { "contextWindow": 131072, "vramRequiredMb": 19900, "architecture": "qwen2", "capabilities": ["tools", "insert"] },
|
|
200
|
+
"qwen3:8b": { "contextWindow": 32768, "vramRequiredMb": 5200, "architecture": "qwen3", "capabilities": ["tools", "thinking"] },
|
|
201
|
+
"deepseek-r1:70b": { "contextWindow": 131072, "vramRequiredMb": 42500, "architecture": "deepseek", "capabilities": ["tools", "thinking"], "note": "Q2_K quant — lower quality than Q4_K_M." },
|
|
202
|
+
"llama3.3:70b": { "contextWindow": 131072, "vramRequiredMb": 42500, "architecture": "llama3", "capabilities": ["tools"] },
|
|
203
|
+
"VibeThinker-3B": { "contextWindow": 8192, "vramRequiredMb": 3300, "architecture": "qwen2", "capabilities": [], "note": "Fits anywhere ≤12GB." }
|
|
204
|
+
},
|
|
205
|
+
"aliases": {},
|
|
206
|
+
"retired": []
|
|
207
|
+
},
|
|
208
|
+
"vllm": {
|
|
209
|
+
"kind": "openai",
|
|
210
|
+
"_comment": "Night Action vLLM + DSpark pilot (RTX 3060, matched draft `deepseek-ai/dspark_qwen3_8b_block7`). AWQ quant target (bf16 ~16GB does not fit 12GB VRAM alongside the draft; AWQ ~5.6GB does). Reference: HS-XNJI Experiment 1/2. Local, free, no key — vLLM OpenAI-compat endpoint on port 8000.",
|
|
211
|
+
"baseUrl": "http://192.168.1.252:8000/v1",
|
|
212
|
+
"keyEnv": null,
|
|
213
|
+
"roles": { "default": "Qwen/Qwen3-8B-AWQ" },
|
|
214
|
+
"models": {
|
|
215
|
+
"Qwen/Qwen3-8B-AWQ": { "contextWindow": 32768, "vramRequiredMb": 5600, "architecture": "qwen3", "tier": "local", "capabilities": ["api", "tools", "thinking"] }
|
|
216
|
+
},
|
|
217
|
+
"aliases": {},
|
|
218
|
+
"retired": [],
|
|
219
|
+
"providerKeys": { "qwen3-8b-dspark": { "model": "Qwen/Qwen3-8B-AWQ", "local": true } }
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|