heyspex 0.2.4 → 0.2.5
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/dist/cli-templates/harness-commands/claude/hs-log.md +1 -1
- package/dist/cli-templates/harness-commands/claude/hs-review.md +23 -23
- package/dist/cli-templates/harness-commands/cursor/hs-log.md +1 -1
- package/dist/cli-templates/harness-commands/cursor/hs-review.md +18 -18
- package/package.json +257 -257
|
@@ -20,7 +20,7 @@ Admin/dev-only — resolves paths via `dev-factory/watch-dev-log.mjs`, then watc
|
|
|
20
20
|
2. **Watch it.** Start a background `tail -f` over the resolved path(s) and stream it:
|
|
21
21
|
- Default: filtered to signal only — `grep -E --line-buffered -i "error|warn|exception|fatal|crash| 4[0-9][0-9] | 5[0-9][0-9] "` — so routine 200-OK request logs stay silent and only real problems surface.
|
|
22
22
|
- `--raw` in `$ARGUMENTS`: skip the filter, stream everything (useful for a first look, like the very first time this was set up).
|
|
23
|
-
- Multiple paths (e.g. `companion`'s
|
|
23
|
+
- Multiple paths (e.g. `companion`'s 3 files) can be tailed together: `tail -n 0 -f path1 path2 ...`.
|
|
24
24
|
|
|
25
25
|
3. **Report** the resolved path(s) and whether you're running filtered or raw, then stay quiet until something actually worth flagging comes through — don't narrate routine matched lines individually if they're clearly benign.
|
|
26
26
|
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Pull the next review-ready spec from the HeySpex review queue (review-focus.yaml → manifest traversal of `status: in_review` with HS-REV companion → folder scan).
|
|
3
|
-
argument-hint: "[HS-XXXX-TASK | HS-XXXX-EPIC] [--ignore-focus]"
|
|
4
|
-
allowed-tools: mcp__heyspex__heyspex_next_review
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
Invoke the `mcp__heyspex__heyspex_next_review` MCP tool to fetch the next review-ready spec from the HeySpex vault, then paste the returned `prompt_markdown` verbatim so the user (reviewer) can walk acceptance against the parent spec + HS-REV companion.
|
|
8
|
-
|
|
9
|
-
Argument parsing for `$ARGUMENTS` (all optional; if `$ARGUMENTS` is empty, call the tool with no parameters):
|
|
10
|
-
|
|
11
|
-
- A bare token matching `HS-TASK-*` / `HS-EPIC-*` / `HS-*-*` → pass as `spec_id`.
|
|
12
|
-
- A bare token matching `HS-ROADMAP-*` → pass as `roadmap_id`.
|
|
13
|
-
- `--ignore-focus` → set `ignore_focus: true`.
|
|
14
|
-
|
|
15
|
-
Resolution precedence (built into the tool, do not re-implement here): `args.spec_id` → `.heyspex/review-focus.yaml` pin → manifest traversal for `status: in_review` specs with an `HS-REV-<suffix>-*.md` companion → folder scan as fallback. Sorted by `updated:` ascending (oldest first).
|
|
16
|
-
|
|
17
|
-
After the tool returns, output the `prompt_markdown` field as-is, then on a final line state the source: `_Source: {source_kind} · {spec_id} · phase {phase_id} · age {age_in_review_days}d_`. Do not summarize, paraphrase, or start executing the returned prompt.
|
|
18
|
-
|
|
19
|
-
This skill does NOT claim the spec. Reviewing is a human-in-loop activity by design (CLAUDE.md §Session Completion); the reviewer walks the four sections of the HS-REV companion (`## Acceptance verification`, `## Reviewer notes`, `## Memory candidates`, `## Decision: close or reopen`) and decides pass/reopen. Memory candidates are scored against the four-axis rubric (non-derivability / reusability / surprise-cost / concreteness, 0–3 each, threshold ≥ 7/12) — the prompt body includes the rubric and the conflict-check instruction.
|
|
20
|
-
|
|
21
|
-
If the tool errors with `NO_REVIEW_READY`, tell the user the review queue is empty (no specs at `status: in_review` with an HS-REV companion) and suggest checking `specs/reviews/` for stale companions or filing the missing review doc. If `SPEC_NOT_IN_REVIEW`, surface the spec's actual status so the user can pick the right `/hs-review HS-XXXX` target. If `NO_REVIEW_DOC`, the parent spec is `in_review` but has no `HS-REV-<suffix>-*.md` companion — point the user at CLAUDE.md §Session Completion §3 for the four-section template.
|
|
22
|
-
|
|
23
|
-
Cross-reference: [[HS-XRO1-RVDC-TASK-heyspex-review-on-deck-mcp-and-hs-review]] (spec), [[HS-UKD6-CLR4-RES-close-out-review-screen-jtbd-architecture]] §J17 (downstream Review surface that will call this tool from the "Copy `/hs-review`" affordance).
|
|
1
|
+
---
|
|
2
|
+
description: 'Pull the next review-ready spec from the HeySpex review queue (review-focus.yaml → manifest traversal of `status: in_review` with HS-REV companion → folder scan).'
|
|
3
|
+
argument-hint: "[HS-XXXX-TASK | HS-XXXX-EPIC] [--ignore-focus]"
|
|
4
|
+
allowed-tools: mcp__heyspex__heyspex_next_review
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Invoke the `mcp__heyspex__heyspex_next_review` MCP tool to fetch the next review-ready spec from the HeySpex vault, then paste the returned `prompt_markdown` verbatim so the user (reviewer) can walk acceptance against the parent spec + HS-REV companion.
|
|
8
|
+
|
|
9
|
+
Argument parsing for `$ARGUMENTS` (all optional; if `$ARGUMENTS` is empty, call the tool with no parameters):
|
|
10
|
+
|
|
11
|
+
- A bare token matching `HS-TASK-*` / `HS-EPIC-*` / `HS-*-*` → pass as `spec_id`.
|
|
12
|
+
- A bare token matching `HS-ROADMAP-*` → pass as `roadmap_id`.
|
|
13
|
+
- `--ignore-focus` → set `ignore_focus: true`.
|
|
14
|
+
|
|
15
|
+
Resolution precedence (built into the tool, do not re-implement here): `args.spec_id` → `.heyspex/review-focus.yaml` pin → manifest traversal for `status: in_review` specs with an `HS-REV-<suffix>-*.md` companion → folder scan as fallback. Sorted by `updated:` ascending (oldest first).
|
|
16
|
+
|
|
17
|
+
After the tool returns, output the `prompt_markdown` field as-is, then on a final line state the source: `_Source: {source_kind} · {spec_id} · phase {phase_id} · age {age_in_review_days}d_`. Do not summarize, paraphrase, or start executing the returned prompt.
|
|
18
|
+
|
|
19
|
+
This skill does NOT claim the spec. Reviewing is a human-in-loop activity by design (CLAUDE.md §Session Completion); the reviewer walks the four sections of the HS-REV companion (`## Acceptance verification`, `## Reviewer notes`, `## Memory candidates`, `## Decision: close or reopen`) and decides pass/reopen. Memory candidates are scored against the four-axis rubric (non-derivability / reusability / surprise-cost / concreteness, 0–3 each, threshold ≥ 7/12) — the prompt body includes the rubric and the conflict-check instruction.
|
|
20
|
+
|
|
21
|
+
If the tool errors with `NO_REVIEW_READY`, tell the user the review queue is empty (no specs at `status: in_review` with an HS-REV companion) and suggest checking `specs/reviews/` for stale companions or filing the missing review doc. If `SPEC_NOT_IN_REVIEW`, surface the spec's actual status so the user can pick the right `/hs-review HS-XXXX` target. If `NO_REVIEW_DOC`, the parent spec is `in_review` but has no `HS-REV-<suffix>-*.md` companion — point the user at CLAUDE.md §Session Completion §3 for the four-section template.
|
|
22
|
+
|
|
23
|
+
Cross-reference: [[HS-XRO1-RVDC-TASK-heyspex-review-on-deck-mcp-and-hs-review]] (spec), [[HS-UKD6-CLR4-RES-close-out-review-screen-jtbd-architecture]] §J17 (downstream Review surface that will call this tool from the "Copy `/hs-review`" affordance).
|
|
@@ -24,7 +24,7 @@ Admin/dev-only — resolves paths via `dev-factory/watch-dev-log.mjs`, then watc
|
|
|
24
24
|
2. **Watch it.** Start a background `tail -f` over the resolved path(s) and stream it:
|
|
25
25
|
- Default: filtered to signal only — `grep -E --line-buffered -i "error|warn|exception|fatal|crash| 4[0-9][0-9] | 5[0-9][0-9] "` — so routine 200-OK request logs stay silent and only real problems surface.
|
|
26
26
|
- `--raw` in `$ARGUMENTS`: skip the filter, stream everything (useful for a first look, like the very first time this was set up).
|
|
27
|
-
- Multiple paths (e.g. `companion`'s
|
|
27
|
+
- Multiple paths (e.g. `companion`'s 3 files) can be tailed together: `tail -n 0 -f path1 path2 ...`.
|
|
28
28
|
|
|
29
29
|
3. **Report** the resolved path(s) and whether you're running filtered or raw, then stay quiet until something actually worth flagging comes through — don't narrate routine matched lines individually if they're clearly benign.
|
|
30
30
|
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: hs-review
|
|
3
|
-
description: Pull the next review-ready spec from the HeySpex review queue (review-focus.yaml → manifest traversal of `status: in_review` with HS-REV companion → folder scan).
|
|
3
|
+
description: 'Pull the next review-ready spec from the HeySpex review queue (review-focus.yaml → manifest traversal of `status: in_review` with HS-REV companion → folder scan).'
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- Generated by scripts/sync-skills.mjs from .claude/commands/hs-review.md — do not edit by hand. Run `npm run skills:sync`. -->
|
|
7
7
|
|
|
8
8
|
**Usage:** `/hs-review [HS-XXXX-TASK | HS-XXXX-EPIC] [--ignore-focus]`
|
|
9
9
|
|
|
10
|
-
Invoke the `heyspex_next_review` MCP tool to fetch the next review-ready spec from the HeySpex vault, then paste the returned `prompt_markdown` verbatim so the user (reviewer) can walk acceptance against the parent spec + HS-REV companion.
|
|
11
|
-
|
|
12
|
-
Argument parsing for `$ARGUMENTS` (all optional; if `$ARGUMENTS` is empty, call the tool with no parameters):
|
|
13
|
-
|
|
14
|
-
- A bare token matching `HS-TASK-*` / `HS-EPIC-*` / `HS-*-*` → pass as `spec_id`.
|
|
15
|
-
- A bare token matching `HS-ROADMAP-*` → pass as `roadmap_id`.
|
|
16
|
-
- `--ignore-focus` → set `ignore_focus: true`.
|
|
17
|
-
|
|
18
|
-
Resolution precedence (built into the tool, do not re-implement here): `args.spec_id` → `.heyspex/review-focus.yaml` pin → manifest traversal for `status: in_review` specs with an `HS-REV-<suffix>-*.md` companion → folder scan as fallback. Sorted by `updated:` ascending (oldest first).
|
|
19
|
-
|
|
20
|
-
After the tool returns, output the `prompt_markdown` field as-is, then on a final line state the source: `_Source: {source_kind} · {spec_id} · phase {phase_id} · age {age_in_review_days}d_`. Do not summarize, paraphrase, or start executing the returned prompt.
|
|
21
|
-
|
|
22
|
-
This skill does NOT claim the spec. Reviewing is a human-in-loop activity by design (CLAUDE.md §Session Completion); the reviewer walks the four sections of the HS-REV companion (`## Acceptance verification`, `## Reviewer notes`, `## Memory candidates`, `## Decision: close or reopen`) and decides pass/reopen. Memory candidates are scored against the four-axis rubric (non-derivability / reusability / surprise-cost / concreteness, 0–3 each, threshold ≥ 7/12) — the prompt body includes the rubric and the conflict-check instruction.
|
|
23
|
-
|
|
24
|
-
If the tool errors with `NO_REVIEW_READY`, tell the user the review queue is empty (no specs at `status: in_review` with an HS-REV companion) and suggest checking `specs/reviews/` for stale companions or filing the missing review doc. If `SPEC_NOT_IN_REVIEW`, surface the spec's actual status so the user can pick the right `/hs-review HS-XXXX` target. If `NO_REVIEW_DOC`, the parent spec is `in_review` but has no `HS-REV-<suffix>-*.md` companion — point the user at CLAUDE.md §Session Completion §3 for the four-section template.
|
|
25
|
-
|
|
26
|
-
Cross-reference: [[HS-XRO1-RVDC-TASK-heyspex-review-on-deck-mcp-and-hs-review]] (spec), [[HS-UKD6-CLR4-RES-close-out-review-screen-jtbd-architecture]] §J17 (downstream Review surface that will call this tool from the "Copy `/hs-review`" affordance).
|
|
10
|
+
Invoke the `heyspex_next_review` MCP tool to fetch the next review-ready spec from the HeySpex vault, then paste the returned `prompt_markdown` verbatim so the user (reviewer) can walk acceptance against the parent spec + HS-REV companion.
|
|
11
|
+
|
|
12
|
+
Argument parsing for `$ARGUMENTS` (all optional; if `$ARGUMENTS` is empty, call the tool with no parameters):
|
|
13
|
+
|
|
14
|
+
- A bare token matching `HS-TASK-*` / `HS-EPIC-*` / `HS-*-*` → pass as `spec_id`.
|
|
15
|
+
- A bare token matching `HS-ROADMAP-*` → pass as `roadmap_id`.
|
|
16
|
+
- `--ignore-focus` → set `ignore_focus: true`.
|
|
17
|
+
|
|
18
|
+
Resolution precedence (built into the tool, do not re-implement here): `args.spec_id` → `.heyspex/review-focus.yaml` pin → manifest traversal for `status: in_review` specs with an `HS-REV-<suffix>-*.md` companion → folder scan as fallback. Sorted by `updated:` ascending (oldest first).
|
|
19
|
+
|
|
20
|
+
After the tool returns, output the `prompt_markdown` field as-is, then on a final line state the source: `_Source: {source_kind} · {spec_id} · phase {phase_id} · age {age_in_review_days}d_`. Do not summarize, paraphrase, or start executing the returned prompt.
|
|
21
|
+
|
|
22
|
+
This skill does NOT claim the spec. Reviewing is a human-in-loop activity by design (CLAUDE.md §Session Completion); the reviewer walks the four sections of the HS-REV companion (`## Acceptance verification`, `## Reviewer notes`, `## Memory candidates`, `## Decision: close or reopen`) and decides pass/reopen. Memory candidates are scored against the four-axis rubric (non-derivability / reusability / surprise-cost / concreteness, 0–3 each, threshold ≥ 7/12) — the prompt body includes the rubric and the conflict-check instruction.
|
|
23
|
+
|
|
24
|
+
If the tool errors with `NO_REVIEW_READY`, tell the user the review queue is empty (no specs at `status: in_review` with an HS-REV companion) and suggest checking `specs/reviews/` for stale companions or filing the missing review doc. If `SPEC_NOT_IN_REVIEW`, surface the spec's actual status so the user can pick the right `/hs-review HS-XXXX` target. If `NO_REVIEW_DOC`, the parent spec is `in_review` but has no `HS-REV-<suffix>-*.md` companion — point the user at CLAUDE.md §Session Completion §3 for the four-section template.
|
|
25
|
+
|
|
26
|
+
Cross-reference: [[HS-XRO1-RVDC-TASK-heyspex-review-on-deck-mcp-and-hs-review]] (spec), [[HS-UKD6-CLR4-RES-close-out-review-screen-jtbd-architecture]] §J17 (downstream Review surface that will call this tool from the "Copy `/hs-review`" affordance).
|
package/package.json
CHANGED
|
@@ -1,257 +1,257 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "heyspex",
|
|
3
|
-
"version": "0.2.
|
|
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/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.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
|
+
}
|