@smartmemory/compose 0.2.49-beta → 0.2.51-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/.claude/skills/compose/SKILL.md +24 -1
  2. package/.claude/skills/compose/references/hermes-tools.md +80 -0
  3. package/README.md +1 -1
  4. package/bin/compose.js +340 -70
  5. package/dist/assets/App-CT0vXPgd.js +724 -0
  6. package/dist/assets/_baseUniq-CsOHc_iS.js +1 -0
  7. package/dist/assets/{arc-B1TqAC_R.js → arc-BXht3LyE.js} +1 -1
  8. package/dist/assets/architectureDiagram-Q4EWVU46-BV1r86-w.js +36 -0
  9. package/dist/assets/blockDiagram-DXYQGD6D-BgcMJjAR.js +132 -0
  10. package/dist/assets/{browser-DW2JlJCC.js → browser-CnKiSnlr.js} +6 -6
  11. package/dist/assets/{c4Diagram-AAUBKEIU-Dc6swoQo.js → c4Diagram-AHTNJAMY-nBIRLJTv.js} +1 -1
  12. package/dist/assets/channel-Dd4XaiYv.js +1 -0
  13. package/dist/assets/{chunk-4BX2VUAB-CdqXgd68.js → chunk-4BX2VUAB-CNmGyhrp.js} +1 -1
  14. package/dist/assets/chunk-4TB4RGXK-MLT7I7w4.js +206 -0
  15. package/dist/assets/{chunk-55IACEB6-D7VauOmU.js → chunk-55IACEB6-D8KuKVLa.js} +1 -1
  16. package/dist/assets/{chunk-2J33WTMH-6HKDSnOw.js → chunk-EDXVE4YY-TPlt1bS2.js} +1 -1
  17. package/dist/assets/{chunk-FMBD7UC4-C1Z5m8DP.js → chunk-FMBD7UC4-tYY8xcjr.js} +1 -1
  18. package/dist/assets/chunk-OYMX7WX6-yBPwT1AT.js +231 -0
  19. package/dist/assets/{chunk-QZHKN3VN-DY9GU2uD.js → chunk-QZHKN3VN-B4Wfybww.js} +1 -1
  20. package/dist/assets/{chunk-ND2GUHAM-DmqZMEQe.js → chunk-YZCP3GAM-DE6_5aqh.js} +1 -1
  21. package/dist/assets/classDiagram-6PBFFD2Q-DshSQDF9.js +1 -0
  22. package/dist/assets/classDiagram-v2-HSJHXN6E-DshSQDF9.js +1 -0
  23. package/dist/assets/clone-CBsbNGAa.js +1 -0
  24. package/dist/assets/{cose-bilkent-S5V4N54A-B34g9xzV.js → cose-bilkent-S5V4N54A-DzzRyJtB.js} +1 -1
  25. package/dist/assets/dagre-KV5264BT-CTcTVGdU.js +4 -0
  26. package/dist/assets/diagram-5BDNPKRD-qR6mc8kJ.js +10 -0
  27. package/dist/assets/diagram-G4DWMVQ6-CUcGXyNb.js +24 -0
  28. package/dist/assets/diagram-MMDJMWI5-B68cPonH.js +43 -0
  29. package/dist/assets/diagram-TYMM5635-q8Id8eFG.js +24 -0
  30. package/dist/assets/{erDiagram-TEJ5UH35-C05_Iqmb.js → erDiagram-SMLLAGMA-CtxJi57K.js} +1 -1
  31. package/dist/assets/{flowDiagram-I6XJVG4X-lXpnb-Ch.js → flowDiagram-DWJPFMVM-BzzO4JYU.js} +1 -1
  32. package/dist/assets/ganttDiagram-T4ZO3ILL-Dn0wIyhR.js +292 -0
  33. package/dist/assets/gitGraphDiagram-UUTBAWPF-tnNFXfMM.js +106 -0
  34. package/dist/assets/graph-DZe55uk8.js +331 -0
  35. package/dist/assets/graph-Tq_bs_r0.js +1 -0
  36. package/dist/assets/index-8UhRLbGq.js +123 -0
  37. package/dist/assets/index-CRqB9els.css +1 -0
  38. package/dist/assets/infoDiagram-42DDH7IO-BXLvLeS0.js +2 -0
  39. package/dist/assets/{ishikawaDiagram-YF4QCWOH-CgdsWdgu.js → ishikawaDiagram-UXIWVN3A-DWx-7BBy.js} +5 -5
  40. package/dist/assets/{journeyDiagram-JHISSGLW-CyvHmE3z.js → journeyDiagram-VCZTEJTY-C42hXNha.js} +1 -1
  41. package/dist/assets/{kanban-definition-UN3LZRKU-Bqjdyv0T.js → kanban-definition-6JOO6SKY-CEq930ew.js} +1 -1
  42. package/dist/assets/katex-DkKDou_j.js +257 -0
  43. package/dist/assets/layout-qtUgN9BC.js +1 -0
  44. package/dist/assets/{linear-DecnRXf0.js → linear-D158F7OT.js} +1 -1
  45. package/dist/assets/min-hESxN-c0.js +1 -0
  46. package/dist/assets/{mindmap-definition-RKZ34NQL-DM1x9vNY.js → mindmap-definition-QFDTVHPH-d9SSh2nG.js} +7 -7
  47. package/dist/assets/mobile-1gVCT0OK.css +1 -0
  48. package/dist/assets/mobile-Chw8RWyH.js +17 -0
  49. package/dist/assets/pieDiagram-DEJITSTG-gglmeMav.js +30 -0
  50. package/dist/assets/quadrantDiagram-34T5L4WZ-CqFC_htU.js +7 -0
  51. package/dist/assets/{requirementDiagram-4Y6WPE33-DD-Gg_y5.js → requirementDiagram-MS252O5E-B1ZFIotK.js} +1 -1
  52. package/dist/assets/sankeyDiagram-XADWPNL6-BvItvZt5.js +10 -0
  53. package/dist/assets/sequenceDiagram-FGHM5R23-CAIn5Z3U.js +157 -0
  54. package/dist/assets/stateDiagram-FHFEXIEX-CyJrGzib.js +1 -0
  55. package/dist/assets/stateDiagram-v2-QKLJ7IA2-DprhF_Ho.js +1 -0
  56. package/dist/assets/{timeline-definition-PNZ67QCA-BPm2AEQj.js → timeline-definition-GMOUNBTQ-k_0vJQAK.js} +1 -1
  57. package/dist/assets/{vennDiagram-CIIHVFJN-DQCDWwlj.js → vennDiagram-DHZGUBPP-TZAW60b0.js} +4 -4
  58. package/dist/assets/wardley-RL74JXVD-DzQEoG6X.js +162 -0
  59. package/dist/assets/wardleyDiagram-NUSXRM2D-BAoVVIjZ.js +20 -0
  60. package/dist/assets/{xychartDiagram-2RQKCTM6-Ba05SXXF.js → xychartDiagram-5P7HB3ND-CynkZcUb.js} +1 -1
  61. package/dist/index.html +4 -4
  62. package/lib/build-all.js +2 -1
  63. package/lib/build.js +363 -38
  64. package/lib/checkpoint/checkpoint-writer.js +3 -2
  65. package/lib/codex-preflight.js +151 -0
  66. package/lib/completion-writer.js +59 -15
  67. package/lib/feature-json.js +14 -3
  68. package/lib/feature-validator.js +27 -10
  69. package/lib/feature-write-guard.js +5 -7
  70. package/lib/feature-writer.js +3 -3
  71. package/lib/followup-writer.js +2 -2
  72. package/lib/get-roadmap.js +2 -2
  73. package/lib/gsd.js +2 -1
  74. package/lib/hooks-status.js +135 -0
  75. package/lib/ideabox.js +3 -2
  76. package/lib/install-agent-defs.js +22 -0
  77. package/lib/journal-writer.js +3 -3
  78. package/lib/migrate-anon.js +277 -0
  79. package/lib/migrate-roadmap.js +2 -3
  80. package/lib/paths-core.js +47 -0
  81. package/lib/project-paths.js +46 -37
  82. package/lib/roadmap-gen.js +3 -4
  83. package/lib/roadmap-graph/collect.js +5 -5
  84. package/lib/roadmap-graph/index.js +2 -2
  85. package/lib/roadmap-parser.js +1 -1
  86. package/lib/state-migrations.js +3 -3
  87. package/lib/test-bootstrap.js +165 -2
  88. package/lib/tracker/local-provider.js +2 -2
  89. package/lib/triage.js +7 -5
  90. package/lib/vocabulary-inject.js +103 -0
  91. package/lib/xref-push.js +4 -4
  92. package/lib/xref-sync.js +4 -4
  93. package/package.json +2 -1
  94. package/pipelines/build-quick.stratum.yaml +433 -0
  95. package/pipelines/build.stratum.yaml +60 -3
  96. package/scripts/watch-server.sh +32 -0
  97. package/server/build-routes.js +89 -9
  98. package/server/build-stream-bridge.js +12 -0
  99. package/server/compose-mcp-tools.js +73 -1
  100. package/server/compose-mcp.js +27 -0
  101. package/server/design-routes.js +9 -4
  102. package/server/drift-axes.js +5 -3
  103. package/server/feature-scaffold-routes.js +82 -0
  104. package/server/feature-scan.js +8 -2
  105. package/server/file-watcher.js +13 -7
  106. package/server/health-routes.js +261 -0
  107. package/server/ideabox-routes.js +12 -11
  108. package/server/project-root.js +7 -4
  109. package/server/qa-scope-routes.js +96 -0
  110. package/server/session-routes.js +2 -2
  111. package/server/stratum-sync.js +85 -9
  112. package/server/validate-routes.js +70 -0
  113. package/server/vision-routes.js +46 -2
  114. package/server/vision-server.js +25 -3
  115. package/server/vision-utils.js +23 -4
  116. package/dist/assets/App-DOerhoDp.js +0 -706
  117. package/dist/assets/architectureDiagram-3BPJPVTR-C4hfxNOw.js +0 -36
  118. package/dist/assets/blockDiagram-GPEHLZMM-DRqkGncy.js +0 -132
  119. package/dist/assets/channel-KsY1x-7s.js +0 -1
  120. package/dist/assets/chunk-727SXJPM-CeKpXDif.js +0 -206
  121. package/dist/assets/chunk-AQP2D5EJ-y2XL-YHV.js +0 -231
  122. package/dist/assets/classDiagram-4FO5ZUOK-zDEDoVPk.js +0 -1
  123. package/dist/assets/classDiagram-v2-Q7XG4LA2-zDEDoVPk.js +0 -1
  124. package/dist/assets/dagre-BM42HDAG-klZ_GOcw.js +0 -4
  125. package/dist/assets/diagram-2AECGRRQ-D0FmM6Wf.js +0 -43
  126. package/dist/assets/diagram-5GNKFQAL-DYuhby6q.js +0 -10
  127. package/dist/assets/diagram-KO2AKTUF-CCtQZgal.js +0 -3
  128. package/dist/assets/diagram-LMA3HP47-Cd1OqEln.js +0 -24
  129. package/dist/assets/diagram-OG6HWLK6-CiJrhoxo.js +0 -24
  130. package/dist/assets/ganttDiagram-6RSMTGT7-EPbL_2Hr.js +0 -292
  131. package/dist/assets/gitGraphDiagram-PVQCEYII-COCoF_vW.js +0 -106
  132. package/dist/assets/graph-BBXaecIU.js +0 -331
  133. package/dist/assets/graph-CAnANduQ.js +0 -1
  134. package/dist/assets/index-BwLfbbOu.css +0 -1
  135. package/dist/assets/index-DlgxA8dX.js +0 -123
  136. package/dist/assets/infoDiagram-5YYISTIA-B1sJw6j5.js +0 -2
  137. package/dist/assets/katex-C5jXJg4s.js +0 -257
  138. package/dist/assets/layout-DGIYPm2g.js +0 -1
  139. package/dist/assets/mobile-Cag5dHlF.css +0 -1
  140. package/dist/assets/mobile-DwmxS_O4.js +0 -17
  141. package/dist/assets/pieDiagram-4H26LBE5-CRtmCvwV.js +0 -30
  142. package/dist/assets/quadrantDiagram-W4KKPZXB-CsBLWg27.js +0 -7
  143. package/dist/assets/sankeyDiagram-5OEKKPKP-BPdMN8UU.js +0 -40
  144. package/dist/assets/sequenceDiagram-3UESZ5HK-D4AENdze.js +0 -162
  145. package/dist/assets/stateDiagram-AJRCARHV-DDplpCf_.js +0 -1
  146. package/dist/assets/stateDiagram-v2-BHNVJYJU-J4t9AVzF.js +0 -1
  147. package/dist/assets/wardley-L42UT6IY-WERqOmJt.js +0 -173
  148. package/dist/assets/wardleyDiagram-YWT4CUSO-5teUSOiI.js +0 -78
@@ -16,6 +16,14 @@ Both modes share Phase 6 (plan), Phase 7 (TDD execute + E2E + review loop + cove
16
16
 
17
17
  Before any phase begins, read project state via the `compose` MCP server (get_vision_items, get_phase_summary, get_blocked_items). Every feature OR bug maps to a vision item — check it exists, create it if not.
18
18
 
19
+ ## Platform Adaptation
20
+
21
+ This SKILL.md uses **Claude Code** tool names (Skill, Agent/Task, EnterPlanMode, TodoWrite). On other harnesses, resolve each action to that harness's equivalent:
22
+
23
+ - **Nous Hermes Agent** → `references/hermes-tools.md` (skills, `delegate_task` for subagents, MCP servers, AGENTS.md; Phase-6 plan mode degrades to a flat gate).
24
+
25
+ The headless `compose build`/`compose fix` CLI is harness-agnostic — it runs from any shell and delegates agent execution to Stratum (Claude/Codex) regardless of the launching harness. The mapping files only matter for running the *interactive* lifecycle under a non-Claude-Code harness.
26
+
19
27
  ## Mode Selection
20
28
 
21
29
  `/compose` with no verb defaults to `build` for back-compat. Explicit verbs:
@@ -23,10 +31,25 @@ Before any phase begins, read project state via the `compose` MCP server (get_vi
23
31
  | Verb | Use | Folder |
24
32
  |---|---|---|
25
33
  | `/compose build <feature-ref>` | New feature, 3+ files, 2+ phases, needs design | `docs/features/<feature-code>/` |
34
+ | `/compose build --quick <feature-ref>` | **Small-but-real** additive work — one flag + a test + changelog entry; well-scoped, single component | `docs/features/<feature-code>/` |
26
35
  | `/compose fix <bug-ref>` | Non-trivial bug, test failure, regression, hotfix | `docs/bugs/<bug-code>/` |
27
36
 
28
37
  **Skip Compose entirely for:** typos, one-line obvious fixes, cosmetic changes — just fix those directly.
29
38
 
39
+ ### Build Quick path: `/compose build --quick` (COMP-BUILD-QUICK)
40
+
41
+ `--quick` collapses the build lifecycle to **design → implement → ship** with a *single design gate*. The phases `prd`, `architecture`, `blueprint`, `blueprint-verification`, `plan`, and `report` are **omitted** (not just self-skipping). Use it for small additive work that would otherwise pay full-lifecycle ceremony: a new flag plus its test, a small helper with a golden test, a one-component addition.
42
+
43
+ This is the symmetric counterpart to fix mode's Quick path. Note the implementation asymmetry: fix's Quick path is a **triage decision** the agent makes at Phase F1, whereas build's `--quick` is a **CLI flag** that selects the trimmed `build-quick` pipeline (headless CLI: `compose build --quick <code>` → `template: 'build-quick'`, the same `--template` mechanism fix uses with `bug-fix`).
44
+
45
+ **What `--quick` keeps (NOT OpenSpec's no-gates model):**
46
+ - The design gate and ship gate.
47
+ - All Phase-7 enforcement: TDD per task, verification-before-completion, the parallel + Codex review loop, the coverage sweep, and the generated-test review. Only phase *count* shrinks — enforcement is the differentiator and stays.
48
+
49
+ **Escalation guardrail.** If, during design or decomposition, the work proves multi-file, cross-cutting, or in need of architecture/PRD-level design, **stop and recommend the user re-run with full `/compose build` (no `--quick`)** rather than silently under-scoping. Note the recommendation in the design doc.
50
+
51
+ `--quick` is single-feature only — it is mutually exclusive with `--template` (it already selects one) and with batch builds (`--all`, prefix, or multiple codes).
52
+
30
53
  ## Partial Execution: `--through <phase>`
31
54
 
32
55
  By default, `/compose` runs the full lifecycle. Use `--through` to stop after a specific phase's gate is approved:
@@ -580,7 +603,7 @@ After completing a feature OR bug-fix lifecycle, update project memory:
580
603
 
581
604
  ## Dependencies
582
605
 
583
- `compose setup` (see `bin/compose.js` `syncSkills()`) installs compose-owned skills from `PACKAGE_ROOT/.claude/skills/` and `PACKAGE_ROOT/skills/` to `~/.claude/skills/` and tracks them in `~/.claude/skills/.compose-skills.json`.
606
+ `compose setup` (see `bin/compose.js` `syncSkills()`) installs compose-owned skills from `PACKAGE_ROOT/.claude/skills/` and `PACKAGE_ROOT/skills/` to `~/.claude/skills/` and tracks them in `~/.claude/skills/.compose-skills.json`. It also installs the vendored agent definitions from `PACKAGE_ROOT/.claude/agents/` (`compose-explorer`, `compose-architect`) to `~/.claude/agents/` (COMP-AGENT-VENDOR-1).
584
607
 
585
608
  ### Vendored (ship with compose)
586
609
 
@@ -0,0 +1,80 @@
1
+ # Compose on Hermes Agent — Tool Mapping
2
+
3
+ SKILL.md is written against **Claude Code** tool names. This file maps each
4
+ primitive the compose lifecycle uses to its **Nous Hermes Agent** equivalent, so
5
+ the lifecycle can run under Hermes. Scope: the *interactive* `/compose` lifecycle
6
+ (the headless `compose` CLI is already harness-agnostic — it runs from any shell
7
+ and delegates agent execution to Stratum).
8
+
9
+ Hermes shares the three primitives the lifecycle depends on — **skills**, an
10
+ **MCP client**, and **parallel subagent delegation** — so this is a name/packaging
11
+ adaptation, not an architecture port. The one genuine gap is plan mode (Phase 6);
12
+ see below.
13
+
14
+ ## Action mapping
15
+
16
+ | Action compose requests (Claude Code) | Hermes equivalent |
17
+ |---|---|
18
+ | Invoke a skill (`/compose`, `superpowers:*`) — **Skill** tool | Skills load natively from `~/.hermes/skills/`. Install with `hermes skills install <git-url\|file\|registry-id>` (SKILL.md frontmatter convention). |
19
+ | Dispatch a subagent (`compose-explorer`, `compose-architect`, `general-purpose`) — **Agent/Task** tool | `delegate_task` (runtime tool) — spawns an isolated child agent with its own conversation, terminal, and toolset; only the final summary returns. |
20
+ | Dispatch 2-3 subagents **in parallel** (Phase 1 explorers, Phase 3 architects) | `delegate_task` with a **`tasks` array** — runs in parallel via a thread pool, `max_concurrent_children` (default **3**, matches compose's fan-out). Orchestrator→leaf nesting needs `delegation.max_spawn_depth: 2`. |
21
+ | **Plan mode** (Phase 6) — `EnterPlanMode` / `ExitPlanMode` | **No direct equivalent.** Degrade to a flat gate: write `plan.md`, present it in chat, human approves before Phase 7. Compose already supports this fallback ("If Stratum unavailable, continue with flat prompt chain"). |
22
+ | Task tracking ("create a todo", "mark complete") — **TodoWrite** | `hermes kanban` (statuses todo/triage/scheduled/blocked/running/done; `hermes kanban create "<title>"`). Optional/advisory — skip if not wired. |
23
+ | Read a file — **Read** | Native file read, `@file` context injection, or shell (`cat`/`head`). |
24
+ | Create / edit a file — **Write / Edit** | Native file tools, or a filesystem MCP server (`hermes mcp add fs --command ...`). |
25
+ | Run a shell command — **Bash** | Hermes shell / per-subagent terminal session. |
26
+ | Search contents / find files — **Grep / Glob** | Shell (`rg`, `grep`, `find`). |
27
+ | compose tracker (`mcp__compose__*`) | `hermes mcp add compose --command "<compose-mcp-launch>"`, then call natively. |
28
+ | Stratum (`mcp__stratum__stratum_*`, incl. `stratum_agent_run type=codex`) | `hermes mcp add stratum --command "<stratum-mcp-launch>"`, then call natively. **Codex review works unchanged** — it's an MCP call, harness-agnostic. |
29
+ | Bind flow → vision item — `POST /api/stratum/bind` (HTTP) | Shell `curl` (harness-agnostic). |
30
+ | Project instructions — **CLAUDE.md** | **AGENTS.md** (Hermes auto-injects `AGENTS.md`/`SOUL.md`/`USER.md`/`MEMORY.md` unless `--ignore-rules`). |
31
+
32
+ ## Setup (one-time, per workspace)
33
+
34
+ ```bash
35
+ # 1. Install the compose skill into Hermes
36
+ hermes skills install <compose-skill-git-url> # → ~/.hermes/skills/compose/
37
+
38
+ # 2. Register the MCP servers the lifecycle reads/writes through
39
+ hermes mcp add compose --command "<compose-mcp-launch-command>"
40
+ hermes mcp add stratum --command "<stratum-mcp-launch-command>"
41
+ hermes mcp test compose && hermes mcp test stratum # verify discovery
42
+
43
+ # 3. Mirror compose's project guidance for auto-injection
44
+ # (compose's CLAUDE.md content → AGENTS.md at the project root)
45
+ ```
46
+
47
+ ## What does NOT port 1:1 (the real work)
48
+
49
+ 1. **`compose-explorer` / `compose-architect` are Claude agent files** (installed to
50
+ `~/.claude/agents/` by `compose setup` → `syncSkills()`). Hermes has no agent-file
51
+ format; re-express each as a **`delegate_task` prompt template** carrying the same
52
+ mandate (explorer = read-only codebase mapping; architect = competing-mandate
53
+ proposals). The prompts in SKILL.md Phases 1/3/4 are the source of truth — port
54
+ those strings, not the `.md` agent files.
55
+
56
+ 2. **`compose setup` targets Claude paths** (`~/.claude/skills/`, `~/.claude/agents/`,
57
+ `.compose-skills.json`). A Hermes path would install to `~/.hermes/skills/` via
58
+ `hermes skills install`. This is a `bin/compose.js syncSkills()` branch, not a
59
+ lifecycle change.
60
+
61
+ 3. **Plan mode (Phase 6)** has no Hermes analog — use the flat-gate degrade above.
62
+ This is the only lifecycle *behavior* that changes shape; everything else is a
63
+ rename.
64
+
65
+ 4. **Tier→model mapping is Claude-centric** (`server/model-tiers.js` maps
66
+ `critical/standard/fast` → Opus/Sonnet/Haiku). Under Hermes-as-driver this only
67
+ matters if you also make Hermes the *executing agent* — which is a **Stratum**
68
+ change (add a `hermes` provider to Stratum's agent runner), out of scope for this
69
+ harness-driver adaptation. See SKILL.md "Stratum Integration".
70
+
71
+ ## Quick decision guide
72
+
73
+ - **Just want to launch builds from Hermes?** Don't port anything — run the headless
74
+ `compose build`/`compose fix` CLI from the Hermes shell. It executes via Claude/Codex
75
+ under Stratum regardless of the launching harness.
76
+ - **Want the interactive lifecycle inside Hermes?** Use this mapping: install the skill,
77
+ register the two MCP servers, port the two agent prompts to `delegate_task`, accept the
78
+ flat-gate Phase-6 degrade.
79
+ - **Want Hermes to be the building agent?** That's the Stratum provider-addition path,
80
+ not this file.
package/README.md CHANGED
@@ -55,7 +55,7 @@ Then in your project:
55
55
 
56
56
  ```bash
57
57
  cd /path/to/your/project
58
- compose init # writes .compose/, registers MCP, scaffolds ROADMAP and pipeline specs
58
+ compose init # writes .compose/, registers MCP, scaffolds ROADMAP, pipeline specs, contracts/vocabulary.yaml
59
59
  compose new "what you want to build"
60
60
  ```
61
61