@smartmemory/compose 0.2.58-beta → 0.3.0
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/README.md +2 -2
- package/bin/compose.js +55 -54
- package/dist/assets/{App-s4CulNkO.js → App-DJ5xk_Wx.js} +218 -218
- package/dist/assets/{abnfDiagram-VRR7QNED-CDwzQ5wr.js → abnfDiagram-VRR7QNED-BPWGdCFx.js} +1 -1
- package/dist/assets/{arc-kIU8DDth.js → arc-DX5jqmcO.js} +1 -1
- package/dist/assets/{architectureDiagram-ZJ3FMSHR-CleorO_0.js → architectureDiagram-ZJ3FMSHR-B6jmNVw7.js} +1 -1
- package/dist/assets/{blockDiagram-677ZJIJ3-NvEFfoMk.js → blockDiagram-677ZJIJ3-DAx2i-sB.js} +1 -1
- package/dist/assets/{c4Diagram-LMCZKHZV-BcDQdTVB.js → c4Diagram-LMCZKHZV-zmsZCplj.js} +1 -1
- package/dist/assets/channel-vsDnTvkh.js +1 -0
- package/dist/assets/{chunk-2Q5K7J3B-BseRkpm4.js → chunk-2Q5K7J3B-3QSh6sI7.js} +1 -1
- package/dist/assets/{chunk-32BRIVSS-DCHhvgFV.js → chunk-32BRIVSS-BiH5Di_y.js} +1 -1
- package/dist/assets/{chunk-5VM5RSS4-DcTpMdJ4.js → chunk-5VM5RSS4-C0EfjFLd.js} +1 -1
- package/dist/assets/{chunk-EX3LRPZG-BdN8fvWs.js → chunk-EX3LRPZG-BGyfmVm-.js} +1 -1
- package/dist/assets/{chunk-JWPE2WC7-DmZJP-8E.js → chunk-JWPE2WC7-Ba0mrNlg.js} +1 -1
- package/dist/assets/{chunk-MOJQB5TN-V74uYM17.js → chunk-MOJQB5TN-D3QO9EzH.js} +1 -1
- package/dist/assets/{chunk-RYQCIY6F-CoXUXbn_.js → chunk-RYQCIY6F-D1uvNA6d.js} +1 -1
- package/dist/assets/{chunk-V7JOEXUC-DUscIydR.js → chunk-V7JOEXUC-fihlnodT.js} +1 -1
- package/dist/assets/{chunk-VR4S4FIN-C4UDHq_a.js → chunk-VR4S4FIN-nmRUEo1H.js} +1 -1
- package/dist/assets/{chunk-XXDRQBXY-DIH9i8mZ.js → chunk-XXDRQBXY-CM693yEg.js} +1 -1
- package/dist/assets/classDiagram-OUVF2IWQ-DO-wdSFZ.js +1 -0
- package/dist/assets/classDiagram-v2-EOCWNBFH-DO-wdSFZ.js +1 -0
- package/dist/assets/{cose-bilkent-JH36ORCC-Dn6Gy6l1.js → cose-bilkent-JH36ORCC-CkacPn8W.js} +1 -1
- package/dist/assets/{cynefin-VYW2F7L2-C2LW5fzB.js → cynefin-VYW2F7L2-BiHaIptG.js} +1 -1
- package/dist/assets/{cynefinDiagram-TSTJHNR4-CGoAq7C9.js → cynefinDiagram-TSTJHNR4-CdKxMmiy.js} +1 -1
- package/dist/assets/{dagre-VKFMJZFB-BaOKtuBE.js → dagre-VKFMJZFB-BQLY5y_W.js} +1 -1
- package/dist/assets/{diagram-FQU43EPY-BdQwqt4x.js → diagram-FQU43EPY-D7uMBHvq.js} +1 -1
- package/dist/assets/{diagram-G47NLZAW-Dkcf0o5z.js → diagram-G47NLZAW-B3Z1cuH7.js} +1 -1
- package/dist/assets/{diagram-NH7WQ7WH-C_fDi59r.js → diagram-NH7WQ7WH-BZyRD45e.js} +1 -1
- package/dist/assets/{diagram-OA4YK3LP-jaTQcOxt.js → diagram-OA4YK3LP-DcThOTt7.js} +1 -1
- package/dist/assets/{diagram-WEI45ONY-dEtqVj3s.js → diagram-WEI45ONY-BcgRAkqY.js} +1 -1
- package/dist/assets/{ebnfDiagram-CCIWWBDH-s8ImqsSs.js → ebnfDiagram-CCIWWBDH-CGwfO_xH.js} +1 -1
- package/dist/assets/{erDiagram-Q63AITRT-5Zy29-SA.js → erDiagram-Q63AITRT-pV58-Ncc.js} +1 -1
- package/dist/assets/{flowDiagram-23GEKE2U-DV74V9he.js → flowDiagram-23GEKE2U-DJ_SqE8h.js} +1 -1
- package/dist/assets/{ganttDiagram-NO4QXBWP-BND-CiLO.js → ganttDiagram-NO4QXBWP-Dgy0Iyss.js} +1 -1
- package/dist/assets/{gitGraphDiagram-IHSO6WYX-B_-Mf9Jo.js → gitGraphDiagram-IHSO6WYX-CbiZw9fb.js} +1 -1
- package/dist/assets/{index-CBWbmG7W.js → index-DZTJEk-y.js} +2 -2
- package/dist/assets/{infoDiagram-FWYZ7A6U-Duyz8rZM.js → infoDiagram-FWYZ7A6U-CtsyyEc-.js} +1 -1
- package/dist/assets/{ishikawaDiagram-FXEZZL3T-D2Qft0e5.js → ishikawaDiagram-FXEZZL3T-BJilNFkK.js} +1 -1
- package/dist/assets/{journeyDiagram-5HDEW3XC-q6rG4Rig.js → journeyDiagram-5HDEW3XC-C2UCMP4t.js} +1 -1
- package/dist/assets/{kanban-definition-HUTT4EX6-CsPX7gBL.js → kanban-definition-HUTT4EX6-DmLDJBRy.js} +1 -1
- package/dist/assets/{linear-CiccpAAd.js → linear-C1paCqE7.js} +1 -1
- package/dist/assets/{mindmap-definition-LN4V7U3C-DRW2njpA.js → mindmap-definition-LN4V7U3C-CX-RxKVn.js} +1 -1
- package/dist/assets/{pegDiagram-2B236MQR-DoDgm2S_.js → pegDiagram-2B236MQR-CTU32H2W.js} +1 -1
- package/dist/assets/{pieDiagram-ENE6RG2P-CNSYLVAF.js → pieDiagram-ENE6RG2P-D8L1aYoo.js} +1 -1
- package/dist/assets/{quadrantDiagram-ABIIQ3AL-8-Nd6ony.js → quadrantDiagram-ABIIQ3AL-hQ3bXosy.js} +1 -1
- package/dist/assets/{railroadDiagram-RFXS5EU6-bfdg6Bo4.js → railroadDiagram-RFXS5EU6--_vuYcda.js} +1 -1
- package/dist/assets/{requirementDiagram-TGXJPOKE-slDkxCQy.js → requirementDiagram-TGXJPOKE-C6h_m3Az.js} +1 -1
- package/dist/assets/{sankeyDiagram-HTMAVEWB-CR3CboiK.js → sankeyDiagram-HTMAVEWB-Dpc7CfIQ.js} +1 -1
- package/dist/assets/{sequenceDiagram-DBY2YBRQ-BIXw1JS1.js → sequenceDiagram-DBY2YBRQ-CK5ZzbvJ.js} +1 -1
- package/dist/assets/{sizeCapture-X5ZJPWSS-BdKI7JyF.js → sizeCapture-X5ZJPWSS-BAxVvM9G.js} +1 -1
- package/dist/assets/{stateDiagram-2N3HPSRC-ktVgpBZS.js → stateDiagram-2N3HPSRC-7j33_2PY.js} +1 -1
- package/dist/assets/stateDiagram-v2-6OUMAXLB-GviN0FpJ.js +1 -0
- package/dist/assets/{swimlanes-5IMT3BWC-CaXpC3FM.js → swimlanes-5IMT3BWC-CBG2yOob.js} +2 -2
- package/dist/assets/swimlanesDiagram-G3AALYLV-D0wMoxl1.js +8 -0
- package/dist/assets/{timeline-definition-FHXFAJF6-CKWSlRUl.js → timeline-definition-FHXFAJF6-BOnZkQvc.js} +1 -1
- package/dist/assets/{vennDiagram-L72KCM5P-CwOhxDyv.js → vennDiagram-L72KCM5P-D52NhIfj.js} +1 -1
- package/dist/assets/{wardleyDiagram-EHGQE667-DGavMpEB.js → wardleyDiagram-EHGQE667-YoPY2ZU-.js} +1 -1
- package/dist/assets/{xychartDiagram-FW5EYKEG-CWmnmLZz.js → xychartDiagram-FW5EYKEG-BanNfgtO.js} +1 -1
- package/dist/index.html +1 -1
- package/lib/build-all.js +0 -5
- package/lib/build-stream-schema.js +1 -1
- package/lib/build.js +1762 -2614
- package/lib/consumer-fanout.js +1317 -0
- package/lib/feature-validator.js +6 -4
- package/lib/flow-state.js +15 -14
- package/lib/gsd-budget.js +48 -10
- package/lib/gsd-prompt.js +3 -4
- package/lib/gsd-stuck.js +1 -1
- package/lib/gsd.js +303 -149
- package/lib/local-claude-connector.js +149 -0
- package/lib/new.js +162 -307
- package/lib/result-normalizer.js +233 -18
- package/lib/review-lenses.js +1 -1
- package/lib/step-prompt.js +41 -119
- package/lib/stratum-engine.js +297 -0
- package/lib/stratum-mcp-client.js +224 -213
- package/lib/vocabulary-compliance.js +268 -0
- package/lib/vocabulary-inject.js +1 -36
- package/package.json +2 -1
- package/pipelines/build-quick.stratum.yaml +5 -17
- package/pipelines/build.profiles.json +11 -0
- package/pipelines/build.stratum.yaml +288 -467
- package/pipelines/gsd.stratum.yaml +73 -125
- package/pipelines/new.stratum.yaml +68 -149
- package/server/build-routes.js +4 -1
- package/server/design-routes.js +37 -21
- package/server/index.js +13 -21
- package/server/lifecycle-guard.js +1 -1
- package/server/pipeline-routes.js +113 -31
- package/server/stratum-client.js +33 -47
- package/server/stratum-sync.js +3 -4
- package/server/vision-server.js +1 -1
- package/dist/assets/channel-DiJkE9og.js +0 -1
- package/dist/assets/classDiagram-OUVF2IWQ-DS76VBEL.js +0 -1
- package/dist/assets/classDiagram-v2-EOCWNBFH-DS76VBEL.js +0 -1
- package/dist/assets/stateDiagram-v2-6OUMAXLB-CzPQnlan.js +0 -1
- package/dist/assets/swimlanesDiagram-G3AALYLV-rIDv6EuQ.js +0 -8
- package/lib/connector-factory-shim.js +0 -167
- package/server/agent-mcp.js +0 -10
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* connector-factory-shim.js — Backward-compatibility adapter for tests that
|
|
3
|
-
* pass a legacy `connectorFactory(agentType, opts)` returning an object with
|
|
4
|
-
* an async-generator `run(prompt)` that yields `{type: 'assistant'|'tool_use'
|
|
5
|
-
* |'tool_use_summary'|'usage'|'error'|'result', ...}` events.
|
|
6
|
-
*
|
|
7
|
-
* After STRAT-DEDUP-AGENTRUN-V3 the consumer pipeline calls
|
|
8
|
-
* `stratum.agentRun(...)` and consumes BuildStreamEvent envelopes via
|
|
9
|
-
* `stratum.onEvent(correlationId, '_agent_run', handler)`. This shim adapts
|
|
10
|
-
* the legacy factory to dispatch envelopes through the StratumMcpClient's
|
|
11
|
-
* onEvent pathway so existing tests continue to assert wire-level behavior.
|
|
12
|
-
*
|
|
13
|
-
* Used only when `opts.stratum` is NOT injected directly. Production paths
|
|
14
|
-
* never instantiate this shim.
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Install fake `agentRun`, `runAgentText`, `cancelAgentRun` methods on a
|
|
19
|
-
* StratumMcpClient instance backed by a legacy connector factory.
|
|
20
|
-
*
|
|
21
|
-
* @param {object} stratum - StratumMcpClient (uses its #dispatchEvent path indirectly via internal subscribers).
|
|
22
|
-
* @param {Function} factory - legacy `factory(agentType, opts)` returning {run(prompt), interrupt(), isRunning}
|
|
23
|
-
* @param {string} defaultCwd
|
|
24
|
-
*/
|
|
25
|
-
export function installFactoryShim(stratum, factory, defaultCwd) {
|
|
26
|
-
// We dispatch via the public onEvent subscribers map. There's no public
|
|
27
|
-
// emit method, so we synthesize the same JSON-string-via-progress path the
|
|
28
|
-
// real client uses by directly invoking subscribed handlers.
|
|
29
|
-
function emit(correlationId, kind, metadata, seq) {
|
|
30
|
-
// Replicate the dispatch path: lookup `${flow}::${step}` subscribers and
|
|
31
|
-
// hand them a parsed envelope. This mirrors `#dispatchEvent` (private)
|
|
32
|
-
// but works against the public `onEvent` registry implicitly because we
|
|
33
|
-
// only run inside a single tool-call lifecycle.
|
|
34
|
-
const env = {
|
|
35
|
-
schema_version: '0.2.5',
|
|
36
|
-
flow_id: correlationId,
|
|
37
|
-
step_id: '_agent_run',
|
|
38
|
-
task_id: null,
|
|
39
|
-
seq,
|
|
40
|
-
ts: new Date().toISOString(),
|
|
41
|
-
kind,
|
|
42
|
-
metadata,
|
|
43
|
-
};
|
|
44
|
-
// Lean on the stratum client's existing #makeProgressHandler-style path:
|
|
45
|
-
// re-encode and feed via a shadow handler is overkill — we instead reach
|
|
46
|
-
// into the onEvent subscribers via a dispatch closure attached on first
|
|
47
|
-
// install.
|
|
48
|
-
if (!stratum._shimDispatch) {
|
|
49
|
-
// Fallback: directly walk subscribers if dispatch closure not wired.
|
|
50
|
-
// Here we expose a temporary dispatcher by hijacking onEvent's contract:
|
|
51
|
-
// each subscribe call adds to a map; we mirror lookups via a private
|
|
52
|
-
// tracker. The simpler approach is to wrap `onEvent` to also register
|
|
53
|
-
// with our own map. Done at install time below.
|
|
54
|
-
}
|
|
55
|
-
stratum._shimDispatch(env);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
// Wrap onEvent to keep a parallel registry we can dispatch into.
|
|
59
|
-
if (!stratum._shimSubs) {
|
|
60
|
-
const subs = new Map();
|
|
61
|
-
stratum._shimSubs = subs;
|
|
62
|
-
const realOnEvent = stratum.onEvent.bind(stratum);
|
|
63
|
-
stratum.onEvent = (flowId, stepId, handler) => {
|
|
64
|
-
const key = `${flowId}::${stepId}`;
|
|
65
|
-
let set = subs.get(key);
|
|
66
|
-
if (!set) { set = new Set(); subs.set(key, set); }
|
|
67
|
-
set.add(handler);
|
|
68
|
-
const realUnsub = realOnEvent(flowId, stepId, handler);
|
|
69
|
-
return () => {
|
|
70
|
-
const s = subs.get(key);
|
|
71
|
-
if (s) { s.delete(handler); if (s.size === 0) subs.delete(key); }
|
|
72
|
-
realUnsub();
|
|
73
|
-
};
|
|
74
|
-
};
|
|
75
|
-
stratum._shimDispatch = (env) => {
|
|
76
|
-
const set = subs.get(`${env.flow_id}::${env.step_id}`);
|
|
77
|
-
if (!set) return;
|
|
78
|
-
for (const h of set) {
|
|
79
|
-
try { h(env); } catch (err) { console.error('[shim] handler threw:', err); }
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
stratum.agentRun = async (agentType, prompt, agentOpts = {}) => {
|
|
85
|
-
const correlationId = agentOpts.correlationId ?? `mock-${Date.now()}-${Math.random().toString(36).slice(2)}`;
|
|
86
|
-
const connector = factory(agentType, { cwd: agentOpts.cwd ?? defaultCwd });
|
|
87
|
-
const parts = [];
|
|
88
|
-
let seq = 0;
|
|
89
|
-
let interruptHook = null;
|
|
90
|
-
if (typeof connector.interrupt === 'function') {
|
|
91
|
-
interruptHook = () => { try { connector.interrupt(); } catch { /* best-effort */ } };
|
|
92
|
-
}
|
|
93
|
-
// Hook for cancelAgentRun: stash the interrupt function under correlationId.
|
|
94
|
-
if (!stratum._shimInterrupts) stratum._shimInterrupts = new Map();
|
|
95
|
-
if (interruptHook) stratum._shimInterrupts.set(correlationId, interruptHook);
|
|
96
|
-
try {
|
|
97
|
-
for await (const ev of connector.run(prompt, {})) {
|
|
98
|
-
if (ev.type === 'assistant' && ev.content) {
|
|
99
|
-
parts.push(ev.content);
|
|
100
|
-
stratum._shimDispatch({
|
|
101
|
-
schema_version: '0.2.5',
|
|
102
|
-
flow_id: correlationId, step_id: '_agent_run', task_id: null,
|
|
103
|
-
seq: seq++, ts: new Date().toISOString(),
|
|
104
|
-
kind: 'agent_relay',
|
|
105
|
-
metadata: { role: 'assistant', text: ev.content },
|
|
106
|
-
});
|
|
107
|
-
} else if (ev.type === 'result' && ev.content && parts.length === 0) {
|
|
108
|
-
parts.push(ev.content);
|
|
109
|
-
stratum._shimDispatch({
|
|
110
|
-
schema_version: '0.2.5',
|
|
111
|
-
flow_id: correlationId, step_id: '_agent_run', task_id: null,
|
|
112
|
-
seq: seq++, ts: new Date().toISOString(),
|
|
113
|
-
kind: 'agent_relay',
|
|
114
|
-
metadata: { role: 'assistant', text: ev.content },
|
|
115
|
-
});
|
|
116
|
-
} else if (ev.type === 'tool_use' && ev.tool) {
|
|
117
|
-
stratum._shimDispatch({
|
|
118
|
-
schema_version: '0.2.5',
|
|
119
|
-
flow_id: correlationId, step_id: '_agent_run', task_id: null,
|
|
120
|
-
seq: seq++, ts: new Date().toISOString(),
|
|
121
|
-
kind: 'tool_use_summary',
|
|
122
|
-
metadata: { tool: ev.tool, input: ev.input ?? {}, summary: '', output: '' },
|
|
123
|
-
});
|
|
124
|
-
} else if (ev.type === 'tool_use_summary') {
|
|
125
|
-
stratum._shimDispatch({
|
|
126
|
-
schema_version: '0.2.5',
|
|
127
|
-
flow_id: correlationId, step_id: '_agent_run', task_id: null,
|
|
128
|
-
seq: seq++, ts: new Date().toISOString(),
|
|
129
|
-
kind: 'tool_use_summary',
|
|
130
|
-
metadata: { tool: ev.tool ?? '', input: ev.input ?? {}, summary: ev.summary ?? '', output: ev.output ?? '' },
|
|
131
|
-
});
|
|
132
|
-
} else if (ev.type === 'usage') {
|
|
133
|
-
stratum._shimDispatch({
|
|
134
|
-
schema_version: '0.2.5',
|
|
135
|
-
flow_id: correlationId, step_id: '_agent_run', task_id: null,
|
|
136
|
-
seq: seq++, ts: new Date().toISOString(),
|
|
137
|
-
kind: 'step_usage',
|
|
138
|
-
metadata: {
|
|
139
|
-
input_tokens: ev.input_tokens ?? 0,
|
|
140
|
-
output_tokens: ev.output_tokens ?? 0,
|
|
141
|
-
cache_creation_input_tokens: ev.cache_creation_input_tokens ?? 0,
|
|
142
|
-
cache_read_input_tokens: ev.cache_read_input_tokens ?? 0,
|
|
143
|
-
cost_usd: ev.cost_usd ?? null,
|
|
144
|
-
model: ev.model ?? null,
|
|
145
|
-
},
|
|
146
|
-
});
|
|
147
|
-
} else if (ev.type === 'error') {
|
|
148
|
-
throw new Error(ev.message);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
} finally {
|
|
152
|
-
stratum._shimInterrupts?.delete(correlationId);
|
|
153
|
-
}
|
|
154
|
-
return { text: parts.join(''), correlation_id: correlationId };
|
|
155
|
-
};
|
|
156
|
-
|
|
157
|
-
stratum.runAgentText = async (agentType, prompt, agentOpts = {}) => {
|
|
158
|
-
const r = await stratum.agentRun(agentType, prompt, agentOpts);
|
|
159
|
-
return r.text;
|
|
160
|
-
};
|
|
161
|
-
|
|
162
|
-
stratum.cancelAgentRun = async (correlationId) => {
|
|
163
|
-
const hook = stratum._shimInterrupts?.get(correlationId);
|
|
164
|
-
if (hook) hook();
|
|
165
|
-
return { status: hook ? 'cancelled' : 'not_found', correlation_id: correlationId };
|
|
166
|
-
};
|
|
167
|
-
}
|
package/server/agent-mcp.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// T2-F5 retirement shim. The agent_run capability moved to stratum-mcp's
|
|
3
|
-
// stratum_agent_run tool. This file exists only to fail fast with a clear
|
|
4
|
-
// message for users whose .mcp.json still references it. Re-running
|
|
5
|
-
// `compose init` removes the stale entry.
|
|
6
|
-
process.stderr.write(
|
|
7
|
-
'agent-mcp.js is retired (T2-F5). Use stratum_agent_run on the stratum MCP server.\n'
|
|
8
|
-
+ 'Re-run `compose init` to remove the legacy entry from .mcp.json.\n'
|
|
9
|
-
);
|
|
10
|
-
process.exit(1);
|