@smartmemory/compose 0.1.27-beta → 0.1.29-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.
- package/.claude/skills/compose/SKILL.md +5 -2
- package/.claude/skills/compose/templates/boundary-map.md +94 -0
- package/bin/compose.js +27 -0
- package/contracts/task-result.json +60 -0
- package/contracts/taskgraph-gsd.json +94 -0
- package/dist/assets/{App-Dj7XWWxC.js → App-DyRUFvbx.js} +67 -67
- package/dist/assets/{_baseUniq-tNOA7dYy.js → _baseUniq-6fxo8lI4.js} +1 -1
- package/dist/assets/{arc-BAmAJ19S.js → arc-ElMd2B94.js} +1 -1
- package/dist/assets/{architectureDiagram-Q4EWVU46-BPWGVKHW.js → architectureDiagram-Q4EWVU46-CYkxf4MU.js} +1 -1
- package/dist/assets/{blockDiagram-DXYQGD6D-CVlFbWKF.js → blockDiagram-DXYQGD6D-BEbnyY6z.js} +1 -1
- package/dist/assets/{c4Diagram-AHTNJAMY-CqzLpnSp.js → c4Diagram-AHTNJAMY-Bo5yMBT9.js} +1 -1
- package/dist/assets/channel-BZuHuJYj.js +1 -0
- package/dist/assets/{chunk-4BX2VUAB-D27n9FGy.js → chunk-4BX2VUAB-BETV09jq.js} +1 -1
- package/dist/assets/{chunk-4TB4RGXK-BNXf8s1x.js → chunk-4TB4RGXK-Dbuohq0Y.js} +1 -1
- package/dist/assets/{chunk-55IACEB6-kGd4Gwx6.js → chunk-55IACEB6-CDVuU3Ew.js} +1 -1
- package/dist/assets/{chunk-EDXVE4YY-Ci9gWeIv.js → chunk-EDXVE4YY-DjkbltSG.js} +1 -1
- package/dist/assets/{chunk-FMBD7UC4-B-C0Qn-h.js → chunk-FMBD7UC4-Dz2qczuu.js} +1 -1
- package/dist/assets/{chunk-OYMX7WX6-CosYsxuv.js → chunk-OYMX7WX6-XJH4cbpv.js} +1 -1
- package/dist/assets/{chunk-QZHKN3VN-DV2v0Qii.js → chunk-QZHKN3VN-DPhBd22Q.js} +1 -1
- package/dist/assets/{chunk-YZCP3GAM-BlgKQRCn.js → chunk-YZCP3GAM-C-DPngtC.js} +1 -1
- package/dist/assets/classDiagram-6PBFFD2Q-DTItsUL2.js +1 -0
- package/dist/assets/classDiagram-v2-HSJHXN6E-DTItsUL2.js +1 -0
- package/dist/assets/clone-BM9Hd7mq.js +1 -0
- package/dist/assets/{cose-bilkent-S5V4N54A-CSkzhGHO.js → cose-bilkent-S5V4N54A-CN-sdzRq.js} +1 -1
- package/dist/assets/{dagre-KV5264BT-zp76534d.js → dagre-KV5264BT-HcBmaeC1.js} +1 -1
- package/dist/assets/{diagram-5BDNPKRD-CAsORZBT.js → diagram-5BDNPKRD-DeMZN1_c.js} +1 -1
- package/dist/assets/{diagram-G4DWMVQ6-Da2z6fvR.js → diagram-G4DWMVQ6-DAVSapDS.js} +1 -1
- package/dist/assets/{diagram-MMDJMWI5-R9NZEWPF.js → diagram-MMDJMWI5-WiLMNWTz.js} +1 -1
- package/dist/assets/{diagram-TYMM5635-DXabRna8.js → diagram-TYMM5635-CjfaWKT0.js} +1 -1
- package/dist/assets/{erDiagram-SMLLAGMA-B1zsRPqn.js → erDiagram-SMLLAGMA-DUT_laNT.js} +1 -1
- package/dist/assets/{flowDiagram-DWJPFMVM-AvlZ6pTE.js → flowDiagram-DWJPFMVM-J9uyMWkp.js} +1 -1
- package/dist/assets/{ganttDiagram-T4ZO3ILL-Bnj-jTcM.js → ganttDiagram-T4ZO3ILL-Cee_YjtS.js} +1 -1
- package/dist/assets/{gitGraphDiagram-UUTBAWPF-82ysfuqG.js → gitGraphDiagram-UUTBAWPF-B1jNNoiW.js} +1 -1
- package/dist/assets/{graph-6nRhlKgL.js → graph-DV5DY72d.js} +1 -1
- package/dist/assets/{index-CF7jc-By.js → index-D5Mh04yh.js} +2 -2
- package/dist/assets/{infoDiagram-42DDH7IO-DSGEEGYr.js → infoDiagram-42DDH7IO-m1jIMAlx.js} +1 -1
- package/dist/assets/{ishikawaDiagram-UXIWVN3A-COnZHJuM.js → ishikawaDiagram-UXIWVN3A-BC7DwQNb.js} +1 -1
- package/dist/assets/{journeyDiagram-VCZTEJTY-Bsssj2jr.js → journeyDiagram-VCZTEJTY-BOCgv7m4.js} +1 -1
- package/dist/assets/{kanban-definition-6JOO6SKY-1o5Em0Ia.js → kanban-definition-6JOO6SKY-Fu0eFxr1.js} +1 -1
- package/dist/assets/{layout-C6Mitjz_.js → layout-C-R3-tDf.js} +1 -1
- package/dist/assets/{linear-DoGSpDWQ.js → linear-NOMW_E2I.js} +1 -1
- package/dist/assets/{min-BqH4I4oK.js → min-B7SuZW29.js} +1 -1
- package/dist/assets/{mindmap-definition-QFDTVHPH-79V6zmXV.js → mindmap-definition-QFDTVHPH-BPwx_SxA.js} +1 -1
- package/dist/assets/{pieDiagram-DEJITSTG-nXz4HiT6.js → pieDiagram-DEJITSTG-DdBjaXTu.js} +1 -1
- package/dist/assets/{quadrantDiagram-34T5L4WZ-BuwKLcii.js → quadrantDiagram-34T5L4WZ-D_K_ZMnx.js} +1 -1
- package/dist/assets/{requirementDiagram-MS252O5E-9YEiDjlT.js → requirementDiagram-MS252O5E-XlROD_VH.js} +1 -1
- package/dist/assets/{sankeyDiagram-XADWPNL6-gX8lhWn5.js → sankeyDiagram-XADWPNL6-Sl0FllYQ.js} +1 -1
- package/dist/assets/{sequenceDiagram-FGHM5R23-CkssrD67.js → sequenceDiagram-FGHM5R23-D22asQ-_.js} +1 -1
- package/dist/assets/{stateDiagram-FHFEXIEX-DPmEy2eV.js → stateDiagram-FHFEXIEX-BnCepkBg.js} +1 -1
- package/dist/assets/stateDiagram-v2-QKLJ7IA2-DD_YjrTQ.js +1 -0
- package/dist/assets/{timeline-definition-GMOUNBTQ-DGpUOjs3.js → timeline-definition-GMOUNBTQ-gdlx6TEB.js} +1 -1
- package/dist/assets/{vennDiagram-DHZGUBPP-CIvkd661.js → vennDiagram-DHZGUBPP-wy4YzhrG.js} +1 -1
- package/dist/assets/{wardley-RL74JXVD-BqRTpa3K.js → wardley-RL74JXVD-D0T_uQ79.js} +1 -1
- package/dist/assets/{wardleyDiagram-NUSXRM2D-B93hOd7R.js → wardleyDiagram-NUSXRM2D-Ds2dLjs8.js} +1 -1
- package/dist/assets/{xychartDiagram-5P7HB3ND-C6hwimqo.js → xychartDiagram-5P7HB3ND-CLgTTXkj.js} +1 -1
- package/dist/index.html +1 -1
- package/lib/boundary-map.js +481 -0
- package/lib/gsd-blackboard.js +135 -0
- package/lib/gsd-decompose-enrich.js +171 -0
- package/lib/gsd-prompt.js +82 -0
- package/lib/gsd.js +364 -0
- package/package.json +1 -1
- package/pipelines/build.stratum.yaml +7 -2
- package/pipelines/gsd.stratum.yaml +141 -0
- package/dist/assets/channel-Ddcaj0fR.js +0 -1
- package/dist/assets/classDiagram-6PBFFD2Q-DfGxrNIN.js +0 -1
- package/dist/assets/classDiagram-v2-HSJHXN6E-DfGxrNIN.js +0 -1
- package/dist/assets/clone-DVujR_lO.js +0 -1
- package/dist/assets/stateDiagram-v2-QKLJ7IA2-BGZzYkLq.js +0 -1
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# metadata:
|
|
2
|
+
# id: gsd
|
|
3
|
+
# label: "GSD — Per-Task Fresh-Context Dispatch"
|
|
4
|
+
# description: "Long-run autonomous mode. Decompose blueprint+Boundary Map into tasks, dispatch each as a fresh-context worktree-isolated agent, sequential by default. Reads existing blueprint.md."
|
|
5
|
+
# category: development
|
|
6
|
+
# steps: 3
|
|
7
|
+
# estimated_minutes: 60
|
|
8
|
+
|
|
9
|
+
version: "0.3"
|
|
10
|
+
|
|
11
|
+
workflow:
|
|
12
|
+
name: gsd
|
|
13
|
+
description: "Per-task fresh-context dispatch from existing blueprint+Boundary Map (COMP-GSD-2)"
|
|
14
|
+
input:
|
|
15
|
+
featureCode:
|
|
16
|
+
type: string
|
|
17
|
+
required: true
|
|
18
|
+
gateCommands:
|
|
19
|
+
type: array
|
|
20
|
+
required: true # injected by runGsd from loadProjectConfig() with default fallback
|
|
21
|
+
|
|
22
|
+
contracts:
|
|
23
|
+
PhaseResult:
|
|
24
|
+
phase: {type: string}
|
|
25
|
+
artifact: {type: string}
|
|
26
|
+
outcome: {type: string, values: [complete, skipped, failed]}
|
|
27
|
+
summary: {type: string}
|
|
28
|
+
|
|
29
|
+
# TaskGraph is a v0.3 built-in contract — must NOT be redeclared.
|
|
30
|
+
# The richer TaskGraphGsd shape (per-task produces/consumes) is enforced
|
|
31
|
+
# post-decompose by lib/gsd-decompose-enrich.js + contracts/taskgraph-gsd.json
|
|
32
|
+
# rather than via Stratum's contract layer.
|
|
33
|
+
|
|
34
|
+
flows:
|
|
35
|
+
gsd:
|
|
36
|
+
input:
|
|
37
|
+
featureCode: {type: string}
|
|
38
|
+
gateCommands: {type: array}
|
|
39
|
+
output: PhaseResult
|
|
40
|
+
max_rounds: 10
|
|
41
|
+
steps:
|
|
42
|
+
# Phase: Decompose blueprint + Boundary Map into TaskGraphGsd
|
|
43
|
+
- id: decompose_gsd
|
|
44
|
+
type: decompose
|
|
45
|
+
agent: claude
|
|
46
|
+
intent: >
|
|
47
|
+
Read docs/features/{input.featureCode}/blueprint.md including its
|
|
48
|
+
## Boundary Map section. Decompose into independent tasks.
|
|
49
|
+
|
|
50
|
+
For each task emit: id, files_owned, files_read, depends_on, AND a
|
|
51
|
+
rich `description` string that bundles all the spec context Stratum's
|
|
52
|
+
parallel_dispatch interpolation cannot carry on its own.
|
|
53
|
+
|
|
54
|
+
Each task's `description` MUST include these labeled sections:
|
|
55
|
+
- "Symbols you must produce:" + the matching Boundary Map slice's
|
|
56
|
+
produces entries (file → symbols (kind))
|
|
57
|
+
- "Symbols you may consume from upstream tasks:" + the slice's
|
|
58
|
+
consumes entries
|
|
59
|
+
- "Boundary Map slice (the contract for this task):" + the verbatim
|
|
60
|
+
slice block from blueprint.md
|
|
61
|
+
- "Upstream tasks (spec-level summary; their code lands at end-of-step
|
|
62
|
+
merge):" + one line per upstream task listing its declared produces
|
|
63
|
+
- "GATES — you MUST run each command and they MUST pass before
|
|
64
|
+
declaring done:" + each command from the gateCommands array
|
|
65
|
+
- "Fix and re-run within this invocation. Do NOT declare done while
|
|
66
|
+
gates are red."
|
|
67
|
+
|
|
68
|
+
Stratum's parallel_dispatch only interpolates {task.id},
|
|
69
|
+
{task.description}, {task.files_owned}, {task.files_read},
|
|
70
|
+
{task.depends_on}, {task.index}, {input.<field>}. Pack everything else
|
|
71
|
+
into description.
|
|
72
|
+
|
|
73
|
+
Each Boundary Map slice maps to exactly one task whose files_owned ⊇
|
|
74
|
+
the slice's File Plan files. The decomposition is invalid if a slice
|
|
75
|
+
has no matching task or its File Plan files are split across
|
|
76
|
+
multiple tasks.
|
|
77
|
+
|
|
78
|
+
gateCommands to embed: {input.gateCommands}
|
|
79
|
+
inputs:
|
|
80
|
+
featureCode: "$.input.featureCode"
|
|
81
|
+
gateCommands: "$.input.gateCommands"
|
|
82
|
+
output_contract: TaskGraph
|
|
83
|
+
ensure:
|
|
84
|
+
- "no_file_conflicts(result.tasks)"
|
|
85
|
+
- "len(result.tasks) >= 1"
|
|
86
|
+
retries: 2
|
|
87
|
+
|
|
88
|
+
# Phase: Execute — sequential per-task fresh-context dispatch
|
|
89
|
+
- id: execute
|
|
90
|
+
type: parallel_dispatch
|
|
91
|
+
source: "$.steps.decompose_gsd.output.tasks"
|
|
92
|
+
agent: claude
|
|
93
|
+
max_concurrent: 1
|
|
94
|
+
isolation: worktree
|
|
95
|
+
capture_diff: true
|
|
96
|
+
require: all
|
|
97
|
+
merge: sequential_apply
|
|
98
|
+
retries: 2
|
|
99
|
+
intent_template: >
|
|
100
|
+
Implement task {task.id} using TDD.
|
|
101
|
+
|
|
102
|
+
Files you own (write): {task.files_owned}
|
|
103
|
+
Files you may read: {task.files_read}
|
|
104
|
+
Depends on: {task.depends_on}
|
|
105
|
+
|
|
106
|
+
{task.description}
|
|
107
|
+
|
|
108
|
+
When done, write TaskResult JSON to
|
|
109
|
+
.compose/gsd/{input.featureCode}/results/{task.id}.json
|
|
110
|
+
(schema: contracts/task-result.json) and INCLUDE that file in your diff.
|
|
111
|
+
depends_on: [decompose_gsd]
|
|
112
|
+
|
|
113
|
+
# Phase: Ship — verify, update docs, commit, push
|
|
114
|
+
- id: ship_gsd
|
|
115
|
+
agent: "claude::critical"
|
|
116
|
+
intent: >
|
|
117
|
+
Final verification and ship for feature {input.featureCode}.
|
|
118
|
+
|
|
119
|
+
You MUST:
|
|
120
|
+
1. Run the project test suite. If tests fail, fix them.
|
|
121
|
+
2. Run the project build. Must pass.
|
|
122
|
+
3. Update ROADMAP.md — find COMP-GSD-2's row and mark it COMPLETE.
|
|
123
|
+
If this completes a parent feature, update the parent header.
|
|
124
|
+
4. Update CHANGELOG.md — add an entry under today's date with
|
|
125
|
+
COMP-GSD-2 and a bullet list of what was built. Read the
|
|
126
|
+
existing format first.
|
|
127
|
+
5. Update CLAUDE.md ONLY if a new convention/command/architecture
|
|
128
|
+
surface emerged. Skip otherwise.
|
|
129
|
+
6. Stage changed files explicitly (no worktrees, pycache, build
|
|
130
|
+
artifacts). Commit with message:
|
|
131
|
+
"feat(COMP-GSD-2): per-task fresh-context dispatch"
|
|
132
|
+
(Note: push is deferred to the user — `compose gsd` does not
|
|
133
|
+
auto-push, mirroring `compose build`'s ship behavior.)
|
|
134
|
+
7. Report commit hash and files_changed in result JSON.
|
|
135
|
+
inputs:
|
|
136
|
+
featureCode: "$.input.featureCode"
|
|
137
|
+
output_contract: PhaseResult
|
|
138
|
+
ensure:
|
|
139
|
+
- "result.outcome == 'complete'"
|
|
140
|
+
retries: 2
|
|
141
|
+
depends_on: [execute]
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{aq as o,ar as n}from"./App-Dj7XWWxC.js";const t=(r,a)=>o.lang.round(n.parse(r)[a]);export{t as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-4TB4RGXK-BNXf8s1x.js";import{_ as i}from"./App-Dj7XWWxC.js";import"./chunk-FMBD7UC4-B-C0Qn-h.js";import"./chunk-YZCP3GAM-BlgKQRCn.js";import"./chunk-55IACEB6-kGd4Gwx6.js";import"./chunk-EDXVE4YY-Ci9gWeIv.js";import"./mobile-BOyZ87uL.js";import"./index-CF7jc-By.js";import"./graph-CfEl_ohV.js";var b={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{b as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-4TB4RGXK-BNXf8s1x.js";import{_ as i}from"./App-Dj7XWWxC.js";import"./chunk-FMBD7UC4-B-C0Qn-h.js";import"./chunk-YZCP3GAM-BlgKQRCn.js";import"./chunk-55IACEB6-kGd4Gwx6.js";import"./chunk-EDXVE4YY-Ci9gWeIv.js";import"./mobile-BOyZ87uL.js";import"./index-CF7jc-By.js";import"./graph-CfEl_ohV.js";var b={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{b as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as r}from"./graph-6nRhlKgL.js";var e=4;function a(o){return r(o,e)}export{a as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as r,b as e,a,S as s}from"./chunk-OYMX7WX6-CosYsxuv.js";import{_ as i}from"./App-Dj7XWWxC.js";import"./chunk-55IACEB6-kGd4Gwx6.js";import"./chunk-EDXVE4YY-Ci9gWeIv.js";import"./mobile-BOyZ87uL.js";import"./index-CF7jc-By.js";import"./graph-CfEl_ohV.js";var n={parser:a,get db(){return new s(2)},renderer:e,styles:r,init:i(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")};export{n as diagram};
|