@smartmemory/compose 0.1.28-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/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/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/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
package/bin/compose.js
CHANGED
|
@@ -112,6 +112,7 @@ if (!cmd || cmd === '--help' || cmd === '-h') {
|
|
|
112
112
|
console.log(' feature Add a single feature (folder, design seed, ROADMAP entry)')
|
|
113
113
|
console.log(' build Run a feature through the headless lifecycle')
|
|
114
114
|
console.log(' fix Run a bug through the headless bug-fix lifecycle')
|
|
115
|
+
console.log(' gsd Per-task fresh-context dispatch from existing blueprint+Boundary Map')
|
|
115
116
|
console.log(' pipeline View and edit the build pipeline')
|
|
116
117
|
console.log(' roadmap Show roadmap status and next buildable features')
|
|
117
118
|
console.log(' roadmap generate Regenerate ROADMAP.md from feature.json files')
|
|
@@ -1913,6 +1914,32 @@ if (cmd === 'build') {
|
|
|
1913
1914
|
process.exit(1)
|
|
1914
1915
|
})
|
|
1915
1916
|
})
|
|
1917
|
+
} else if (cmd === 'gsd') {
|
|
1918
|
+
// compose gsd <feature-code> — runs the per-task fresh-context dispatch
|
|
1919
|
+
// pipeline (pipelines/gsd.stratum.yaml). Hard-requires existing
|
|
1920
|
+
// docs/features/<code>/blueprint.md with a parseable Boundary Map.
|
|
1921
|
+
const gsdCode = args.find(a => !a.startsWith('-'))
|
|
1922
|
+
if (!gsdCode) {
|
|
1923
|
+
console.error('Usage: compose gsd <feature-code>')
|
|
1924
|
+
console.error('')
|
|
1925
|
+
console.error('Runs the per-task fresh-context dispatch pipeline (COMP-GSD-2).')
|
|
1926
|
+
console.error('Hard-requires docs/features/<code>/blueprint.md with a valid Boundary Map.')
|
|
1927
|
+
console.error('')
|
|
1928
|
+
console.error('Options:')
|
|
1929
|
+
console.error(' --cwd <path> Working directory (defaults to current)')
|
|
1930
|
+
process.exit(1)
|
|
1931
|
+
}
|
|
1932
|
+
const { root: gsdCwd } = resolveCwdWithWorkspace(args)
|
|
1933
|
+
const cwdIdx = args.indexOf('--cwd')
|
|
1934
|
+
const gsdAgentCwd = cwdIdx !== -1 ? resolve(args[cwdIdx + 1]) : gsdCwd
|
|
1935
|
+
const { runGsd } = await import('../lib/gsd.js')
|
|
1936
|
+
try {
|
|
1937
|
+
const result = await runGsd(gsdCode, { cwd: gsdAgentCwd })
|
|
1938
|
+
console.log(`gsd complete: ${result.blackboardEntries} task results captured.`)
|
|
1939
|
+
} catch (err) {
|
|
1940
|
+
console.error(`gsd failed: ${err.message}`)
|
|
1941
|
+
process.exit(1)
|
|
1942
|
+
}
|
|
1916
1943
|
} else if (cmd === 'triage') {
|
|
1917
1944
|
const triageCode = args.find(a => !a.startsWith('-'))
|
|
1918
1945
|
if (!triageCode) {
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "task-result.json",
|
|
4
|
+
"_source": "docs/features/COMP-GSD-2/blueprint.md",
|
|
5
|
+
"_roadmap": "COMP-GSD-2",
|
|
6
|
+
"title": "TaskResult",
|
|
7
|
+
"description": "Per-task post-execution capture written by the task agent at .compose/gsd/<featureCode>/results/<task_id>.json and committed as part of its diff. After execute step completion, runGsd walks the merged base cwd, reads each per-task file, and writes the consolidated blackboard.json. This schema is the post-execution audit/retro substrate (consumed by GSD-7 milestone reports), NOT a runtime channel between tasks.",
|
|
8
|
+
"type": "object",
|
|
9
|
+
"required": ["status", "files_changed", "summary", "produces", "gates", "attempts"],
|
|
10
|
+
"properties": {
|
|
11
|
+
"status": {
|
|
12
|
+
"type": "string",
|
|
13
|
+
"enum": ["passed", "failed"],
|
|
14
|
+
"description": "Whether the agent considered the task complete with all gates green."
|
|
15
|
+
},
|
|
16
|
+
"files_changed": {
|
|
17
|
+
"type": "array",
|
|
18
|
+
"items": { "type": "string" },
|
|
19
|
+
"description": "Repo-relative paths the agent touched in its worktree."
|
|
20
|
+
},
|
|
21
|
+
"summary": {
|
|
22
|
+
"type": "string",
|
|
23
|
+
"description": "One- or two-paragraph machine-readable summary of what was done."
|
|
24
|
+
},
|
|
25
|
+
"produces": {
|
|
26
|
+
"type": "object",
|
|
27
|
+
"additionalProperties": { "type": "string" },
|
|
28
|
+
"description": "Realized symbol map: { symbolName: signature-or-shape-string }. Mirrors the task's declared produces but with the actually-implemented signatures."
|
|
29
|
+
},
|
|
30
|
+
"gates": {
|
|
31
|
+
"type": "array",
|
|
32
|
+
"items": { "$ref": "#/definitions/GateRun" },
|
|
33
|
+
"description": "One entry per gate command run. Array (not lint/build/test object) so arbitrary project-configured gateCommands are supported."
|
|
34
|
+
},
|
|
35
|
+
"attempts": {
|
|
36
|
+
"type": "integer",
|
|
37
|
+
"minimum": 0,
|
|
38
|
+
"description": "Number of internal TDD-loop iterations the agent took before declaring done."
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"additionalProperties": false,
|
|
42
|
+
"definitions": {
|
|
43
|
+
"GateRun": {
|
|
44
|
+
"type": "object",
|
|
45
|
+
"required": ["command", "status", "output"],
|
|
46
|
+
"properties": {
|
|
47
|
+
"command": { "type": "string", "minLength": 1 },
|
|
48
|
+
"status": {
|
|
49
|
+
"type": "string",
|
|
50
|
+
"enum": ["pass", "fail"]
|
|
51
|
+
},
|
|
52
|
+
"output": {
|
|
53
|
+
"type": "string",
|
|
54
|
+
"description": "Truncated stdout/stderr from the gate run (e.g., last 2000 chars)."
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"additionalProperties": false
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
+
"$id": "taskgraph-gsd.json",
|
|
4
|
+
"_source": "docs/features/COMP-GSD-2/blueprint.md",
|
|
5
|
+
"_roadmap": "COMP-GSD-2",
|
|
6
|
+
"title": "TaskGraphGsd",
|
|
7
|
+
"description": "Output of the gsd pipeline's decompose_gsd step. Extends the bare TaskGraph (from build.stratum.yaml's decompose) with required produces/consumes per task, sourced from the blueprint's Boundary Map. Each task carries a rich `description` string pre-baked with the spec context that Stratum's parallel_dispatch interpolation cannot carry on its own.",
|
|
8
|
+
"type": "object",
|
|
9
|
+
"required": ["tasks"],
|
|
10
|
+
"properties": {
|
|
11
|
+
"tasks": {
|
|
12
|
+
"type": "array",
|
|
13
|
+
"minItems": 1,
|
|
14
|
+
"items": { "$ref": "#/definitions/Task" }
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"additionalProperties": false,
|
|
18
|
+
"definitions": {
|
|
19
|
+
"Task": {
|
|
20
|
+
"type": "object",
|
|
21
|
+
"required": ["id", "files_owned", "files_read", "depends_on", "description", "produces", "consumes"],
|
|
22
|
+
"properties": {
|
|
23
|
+
"id": { "type": "string", "minLength": 1 },
|
|
24
|
+
"files_owned": {
|
|
25
|
+
"type": "array",
|
|
26
|
+
"items": { "type": "string" },
|
|
27
|
+
"description": "Files this task may write. Must not overlap with other tasks' files_owned (enforced by no_file_conflicts ensure)."
|
|
28
|
+
},
|
|
29
|
+
"files_read": {
|
|
30
|
+
"type": "array",
|
|
31
|
+
"items": { "type": "string" },
|
|
32
|
+
"description": "Files this task may read but not write."
|
|
33
|
+
},
|
|
34
|
+
"depends_on": {
|
|
35
|
+
"type": "array",
|
|
36
|
+
"items": { "type": "string" },
|
|
37
|
+
"description": "Task ids that must complete before this one."
|
|
38
|
+
},
|
|
39
|
+
"description": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"minLength": 1,
|
|
42
|
+
"description": "Rich prompt fragment containing the per-task spec context (produces/consumes/slice/upstream summary/gates). Packed at decompose time because Stratum's parallel_dispatch only interpolates a fixed set of tokens."
|
|
43
|
+
},
|
|
44
|
+
"produces": {
|
|
45
|
+
"type": "array",
|
|
46
|
+
"items": { "$ref": "#/definitions/ProducesEntry" },
|
|
47
|
+
"description": "Symbols this task lands. Sourced from the matching Boundary Map slice."
|
|
48
|
+
},
|
|
49
|
+
"consumes": {
|
|
50
|
+
"type": "array",
|
|
51
|
+
"items": { "$ref": "#/definitions/ConsumesEntry" },
|
|
52
|
+
"description": "Symbols this task may import from upstream tasks (resolved at end-of-step merge in topological order)."
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
"additionalProperties": true
|
|
56
|
+
},
|
|
57
|
+
"ProducesEntry": {
|
|
58
|
+
"type": "object",
|
|
59
|
+
"required": ["file", "symbols", "kind"],
|
|
60
|
+
"properties": {
|
|
61
|
+
"file": { "type": "string", "minLength": 1 },
|
|
62
|
+
"symbols": {
|
|
63
|
+
"type": "array",
|
|
64
|
+
"minItems": 1,
|
|
65
|
+
"items": { "type": "string" }
|
|
66
|
+
},
|
|
67
|
+
"kind": {
|
|
68
|
+
"type": "string",
|
|
69
|
+
"enum": ["interface", "type", "function", "class", "const", "hook", "component"],
|
|
70
|
+
"description": "Symbol kind. Mirrors lib/boundary-map.js KIND_ALLOWLIST."
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
"additionalProperties": false
|
|
74
|
+
},
|
|
75
|
+
"ConsumesEntry": {
|
|
76
|
+
"type": "object",
|
|
77
|
+
"required": ["from", "file", "symbols"],
|
|
78
|
+
"properties": {
|
|
79
|
+
"from": {
|
|
80
|
+
"type": "string",
|
|
81
|
+
"pattern": "^S\\d{2,}$",
|
|
82
|
+
"description": "Upstream slice id (S01, S02, ...)."
|
|
83
|
+
},
|
|
84
|
+
"file": { "type": "string", "minLength": 1 },
|
|
85
|
+
"symbols": {
|
|
86
|
+
"type": "array",
|
|
87
|
+
"minItems": 1,
|
|
88
|
+
"items": { "type": "string" }
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"additionalProperties": false
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|