zelari-code 0.6.2 → 0.7.8
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/app.js +64 -29
- package/dist/cli/app.js.map +1 -1
- package/dist/cli/components/ChatStream.js +40 -126
- package/dist/cli/components/ChatStream.js.map +1 -1
- package/dist/cli/components/LiveRegion.js +54 -0
- package/dist/cli/components/LiveRegion.js.map +1 -0
- package/dist/cli/components/SplashScreen.js +158 -0
- package/dist/cli/components/SplashScreen.js.map +1 -0
- package/dist/cli/components/StatusBar.js +42 -0
- package/dist/cli/components/StatusBar.js.map +1 -0
- package/dist/cli/components/ToolOutput.js +68 -0
- package/dist/cli/components/ToolOutput.js.map +1 -0
- package/dist/cli/components/toolFormat.js +195 -0
- package/dist/cli/components/toolFormat.js.map +1 -0
- package/dist/cli/councilDispatcher.js +20 -0
- package/dist/cli/councilDispatcher.js.map +1 -1
- package/dist/cli/grokOAuth.js +93 -75
- package/dist/cli/grokOAuth.js.map +1 -1
- package/dist/cli/hooks/chatState.js +139 -0
- package/dist/cli/hooks/chatState.js.map +1 -0
- package/dist/cli/hooks/eventsToMessages.js +1 -1
- package/dist/cli/hooks/eventsToMessages.js.map +1 -1
- package/dist/cli/hooks/messageHelpers.js +11 -4
- package/dist/cli/hooks/messageHelpers.js.map +1 -1
- package/dist/cli/hooks/useBatchedMessages.js +14 -10
- package/dist/cli/hooks/useBatchedMessages.js.map +1 -1
- package/dist/cli/hooks/useChatTurn.js +400 -87
- package/dist/cli/hooks/useChatTurn.js.map +1 -1
- package/dist/cli/hooks/useSession.js +23 -11
- package/dist/cli/hooks/useSession.js.map +1 -1
- package/dist/cli/hooks/useSlashDispatch.js +9 -1
- package/dist/cli/hooks/useSlashDispatch.js.map +1 -1
- package/dist/cli/main.bundled.js +15468 -12961
- package/dist/cli/main.bundled.js.map +4 -4
- package/dist/cli/main.js +43 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/mcp/mcpClient.js +152 -0
- package/dist/cli/mcp/mcpClient.js.map +1 -0
- package/dist/cli/mcp/mcpManager.js +139 -0
- package/dist/cli/mcp/mcpManager.js.map +1 -0
- package/dist/cli/refreshRegistry.js +9 -6
- package/dist/cli/refreshRegistry.js.map +1 -1
- package/dist/cli/skillsMd.js +155 -0
- package/dist/cli/skillsMd.js.map +1 -0
- package/dist/cli/slashHandlers/skills.js +16 -0
- package/dist/cli/slashHandlers/skills.js.map +1 -1
- package/dist/cli/toolRegistry.js +31 -0
- package/dist/cli/toolRegistry.js.map +1 -1
- package/dist/cli/wizard/index.js +1 -1
- package/dist/cli/wizard/index.js.map +1 -1
- package/dist/cli/workspace/completeDesign.js +128 -0
- package/dist/cli/workspace/completeDesign.js.map +1 -0
- package/dist/cli/workspace/paths.js +20 -13
- package/dist/cli/workspace/paths.js.map +1 -1
- package/dist/cli/workspace/postCouncilHook.js +146 -20
- package/dist/cli/workspace/postCouncilHook.js.map +1 -1
- package/dist/cli/workspace/storage.js +7 -3
- package/dist/cli/workspace/storage.js.map +1 -1
- package/dist/cli/workspace/stubs.js +350 -136
- package/dist/cli/workspace/stubs.js.map +1 -1
- package/dist/cli/workspace/workspaceSummary.js +255 -0
- package/dist/cli/workspace/workspaceSummary.js.map +1 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/cli/slashHandlers/skills.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/cli/slashHandlers/skills.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/toolRegistry.js
CHANGED
|
@@ -19,6 +19,7 @@ import { bashTool } from '@zelari/core/harness/tools/builtin/shell';
|
|
|
19
19
|
import { grepContentTool } from '@zelari/core/harness/tools/builtin/search';
|
|
20
20
|
import { listFilesTool } from '@zelari/core/harness/tools/builtin/listFiles';
|
|
21
21
|
import { showDiffTool, applyDiffTool } from '@zelari/core/harness/tools/builtin/diff';
|
|
22
|
+
import { fetchUrlTool, webSearchTool } from '@zelari/core/harness/tools/builtin/web';
|
|
22
23
|
import { resolveSandboxedPath, SandboxViolationError } from './safety/sandboxPath.js';
|
|
23
24
|
import { assertShellAllowed, ShellBlockedError } from './safety/shellBlocklist.js';
|
|
24
25
|
import { AuditLogger } from './safety/auditLogger.js';
|
|
@@ -48,6 +49,10 @@ export function createBuiltinToolRegistry(options = {}) {
|
|
|
48
49
|
const safeApplyDiff = wrapWithSandbox(applyDiffTool, ['path'], root, audit, sessionId);
|
|
49
50
|
// Wrap bash: shell blocklist + audit.
|
|
50
51
|
const safeBash = wrapWithShellSafety(bashTool, audit, sessionId);
|
|
52
|
+
// v0.7.5: network tools — audit-only wrap (no filesystem paths to sandbox;
|
|
53
|
+
// the tools themselves enforce http(s)-only + timeout + size caps).
|
|
54
|
+
const safeFetchUrl = wrapWithAudit(fetchUrlTool, audit, sessionId);
|
|
55
|
+
const safeWebSearch = wrapWithAudit(webSearchTool, audit, sessionId);
|
|
51
56
|
const registry = new ToolRegistry();
|
|
52
57
|
registry.register(safeReadFile);
|
|
53
58
|
registry.register(safeWriteFile);
|
|
@@ -57,6 +62,8 @@ export function createBuiltinToolRegistry(options = {}) {
|
|
|
57
62
|
registry.register(safeListFiles);
|
|
58
63
|
registry.register(safeShowDiff);
|
|
59
64
|
registry.register(safeApplyDiff);
|
|
65
|
+
registry.register(safeFetchUrl);
|
|
66
|
+
registry.register(safeWebSearch);
|
|
60
67
|
const tools = [
|
|
61
68
|
safeReadFile,
|
|
62
69
|
safeWriteFile,
|
|
@@ -66,6 +73,8 @@ export function createBuiltinToolRegistry(options = {}) {
|
|
|
66
73
|
safeListFiles,
|
|
67
74
|
safeShowDiff,
|
|
68
75
|
safeApplyDiff,
|
|
76
|
+
safeFetchUrl,
|
|
77
|
+
safeWebSearch,
|
|
69
78
|
].map((t) => ({
|
|
70
79
|
name: t.name,
|
|
71
80
|
description: t.description,
|
|
@@ -131,6 +140,28 @@ function wrapWithSandbox(original, pathArgs, root, audit, sessionId) {
|
|
|
131
140
|
},
|
|
132
141
|
};
|
|
133
142
|
}
|
|
143
|
+
/** Audit-only wrap for tools with no path/shell args (network tools). */
|
|
144
|
+
function wrapWithAudit(original, audit, sessionId) {
|
|
145
|
+
return {
|
|
146
|
+
...original,
|
|
147
|
+
execute: async (rawArgs, ctx) => {
|
|
148
|
+
try {
|
|
149
|
+
return await audit.runTool({
|
|
150
|
+
tool: original.name,
|
|
151
|
+
args: redactForAudit(rawArgs),
|
|
152
|
+
sessionId,
|
|
153
|
+
fn: () => original.execute(rawArgs, ctx),
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
catch (err) {
|
|
157
|
+
return {
|
|
158
|
+
ok: false,
|
|
159
|
+
error: err instanceof Error ? err.message : String(err),
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
};
|
|
164
|
+
}
|
|
134
165
|
/**
|
|
135
166
|
* Wrap the bash tool: assertShellAllowed() runs before execute(), and
|
|
136
167
|
* every invocation is audited.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolRegistry.js","sourceRoot":"","sources":["../../src/cli/toolRegistry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"toolRegistry.js","sourceRoot":"","sources":["../../src/cli/toolRegistry.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/wizard/index.js
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
import React from 'react';
|
|
21
21
|
import { Box, Text } from 'ink';
|
|
22
22
|
import { API_KEY_OPTIONS, } from './useWizardState.js';
|
|
23
|
-
|
|
23
|
+
import { VERSION } from '../main.js';
|
|
24
24
|
function Frame({ children }) {
|
|
25
25
|
return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1 }, children));
|
|
26
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/wizard/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EACL,eAAe,GAGhB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/wizard/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* workspace/completeDesign.ts — Built-in deterministic complete-design
|
|
3
|
+
* fallback (v0.7.8).
|
|
4
|
+
*
|
|
5
|
+
* Guarantees that a design-phase plan is executable even when the council
|
|
6
|
+
* model under-delivered on task emission: every phase in `.zelari/plan.json`
|
|
7
|
+
* ends up with at least {@link MIN_TASKS_PER_PHASE} tasks, and the plan has
|
|
8
|
+
* at least one milestone.
|
|
9
|
+
*
|
|
10
|
+
* This replaces the unversioned per-workspace `complete-design.mjs` script
|
|
11
|
+
* (HANDOFF 2026-07-03 §5.3) for the common case. Unlike that script's
|
|
12
|
+
* hard-coded `TASKS_PER_PHASE` template — whose phase-ID keys drifted from
|
|
13
|
+
* the ids the council actually generated (§4.1: 4 generic tasks instead of
|
|
14
|
+
* 12) — this fallback derives its tasks from the REAL phases in plan.json,
|
|
15
|
+
* so a phase-ID mismatch is impossible by construction.
|
|
16
|
+
*
|
|
17
|
+
* A workspace can still ship its own `complete-design.mjs` with curated
|
|
18
|
+
* domain tasks; when present, `runCompleteDesignPostProcessor` prefers it
|
|
19
|
+
* and this fallback never runs (see postCouncilHook.ts).
|
|
20
|
+
*/
|
|
21
|
+
import { createWorkspaceStubs, readPlanSummary } from './stubs.js';
|
|
22
|
+
/** Every phase must end up with at least this many tasks. */
|
|
23
|
+
export const MIN_TASKS_PER_PHASE = 3;
|
|
24
|
+
/**
|
|
25
|
+
* Derive the 3-task backbone for a phase from its own name/description:
|
|
26
|
+
* specify → implement → verify. Grounded in the council artifacts the
|
|
27
|
+
* phase already references (ADRs, design docs, synthesis) so the tasks
|
|
28
|
+
* are actionable without any domain-specific template.
|
|
29
|
+
*/
|
|
30
|
+
export function curatedTasksForPhase(phase) {
|
|
31
|
+
const label = (phase.name ?? phase.id).trim();
|
|
32
|
+
const scope = phase.description?.trim()
|
|
33
|
+
? ` Scope: ${phase.description.trim()}`
|
|
34
|
+
: '';
|
|
35
|
+
return [
|
|
36
|
+
{
|
|
37
|
+
title: `Specify ${label} deliverables`,
|
|
38
|
+
description: `Turn the council documents for "${label}" into a concrete specification: enumerate deliverables, ` +
|
|
39
|
+
`interfaces, constraints, and open decisions, grounding each item in the ADRs and design docs ` +
|
|
40
|
+
`already present in .zelari/.${scope}`,
|
|
41
|
+
fileRefs: ['.zelari/docs/', '.zelari/decisions/'],
|
|
42
|
+
acceptance: [
|
|
43
|
+
`A written spec for "${label}" exists and references at least one ADR or design doc`,
|
|
44
|
+
'Every deliverable in the spec has an owner artifact (file, doc, or component) named',
|
|
45
|
+
],
|
|
46
|
+
qaScenario: `Open the spec for "${label}" and confirm each deliverable maps to a concrete artifact and no open decision is left unresolved.`,
|
|
47
|
+
priority: 'high',
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
title: `Implement ${label} deliverables`,
|
|
51
|
+
description: `Produce the artifacts the "${label}" phase promises, following the spec task of this phase and ` +
|
|
52
|
+
`the decisions recorded in .zelari/decisions/.${scope}`,
|
|
53
|
+
fileRefs: ['src/'],
|
|
54
|
+
acceptance: [
|
|
55
|
+
`Every deliverable listed in the "${label}" spec exists and builds/renders without errors`,
|
|
56
|
+
'No implementation contradicts an accepted ADR',
|
|
57
|
+
],
|
|
58
|
+
qaScenario: `Walk the "${label}" spec top to bottom and check each deliverable off against the produced artifact.`,
|
|
59
|
+
priority: 'high',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
title: `Verify ${label} exit criteria`,
|
|
63
|
+
description: `Run the QA pass for "${label}": execute the QA scenarios of the phase tasks, check the phase row ` +
|
|
64
|
+
`in the synthesis green-light checklist, and record any gaps as follow-up tasks.${scope}`,
|
|
65
|
+
fileRefs: ['.zelari/docs/synthesis.md'],
|
|
66
|
+
acceptance: [
|
|
67
|
+
`The "${label}" row of the synthesis green-light checklist passes`,
|
|
68
|
+
'All QA scenarios of this phase have been executed with recorded outcomes',
|
|
69
|
+
],
|
|
70
|
+
qaScenario: `Open .zelari/docs/synthesis.md, locate the "${label}" checklist row, and confirm every criterion is checked with evidence.`,
|
|
71
|
+
priority: 'medium',
|
|
72
|
+
},
|
|
73
|
+
];
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Ensure every phase has ≥ MIN_TASKS_PER_PHASE tasks and the plan has ≥1
|
|
77
|
+
* milestone. Additive and idempotent: existing tasks/milestones are never
|
|
78
|
+
* modified, and re-running adds nothing once the minimums are met (the
|
|
79
|
+
* generated titles are deterministic and the createTask ids they produce
|
|
80
|
+
* are stable per phase).
|
|
81
|
+
*
|
|
82
|
+
* Creation goes through the same workspace stubs the council uses
|
|
83
|
+
* (createTask / createMilestone), so plan.json, plan.md, and the per-task
|
|
84
|
+
* files stay consistent with model-emitted artifacts.
|
|
85
|
+
*/
|
|
86
|
+
export async function runBuiltinCompleteDesign(ctx) {
|
|
87
|
+
const summary = readPlanSummary(ctx);
|
|
88
|
+
if (summary.phases.length === 0) {
|
|
89
|
+
return { ran: false, tasksAdded: 0, milestonesAdded: 0, reason: 'plan has no phases' };
|
|
90
|
+
}
|
|
91
|
+
const stubs = createWorkspaceStubs(ctx);
|
|
92
|
+
const createTask = stubs.find((s) => s.name === 'createTask');
|
|
93
|
+
const createMilestone = stubs.find((s) => s.name === 'createMilestone');
|
|
94
|
+
const stubCtx = ctx;
|
|
95
|
+
let tasksAdded = 0;
|
|
96
|
+
for (const phase of summary.phases) {
|
|
97
|
+
const existingTasks = summary.tasks.filter((t) => t.phaseId === phase.id);
|
|
98
|
+
if (existingTasks.length >= MIN_TASKS_PER_PHASE)
|
|
99
|
+
continue;
|
|
100
|
+
const existingTitles = new Set(existingTasks.map((t) => t.name ?? ''));
|
|
101
|
+
const templates = curatedTasksForPhase(phase)
|
|
102
|
+
.filter((t) => !existingTitles.has(t.title))
|
|
103
|
+
.slice(0, MIN_TASKS_PER_PHASE - existingTasks.length);
|
|
104
|
+
for (const t of templates) {
|
|
105
|
+
await createTask.execute({
|
|
106
|
+
phaseId: phase.id,
|
|
107
|
+
title: t.title,
|
|
108
|
+
description: t.description,
|
|
109
|
+
fileRefs: t.fileRefs,
|
|
110
|
+
acceptance: t.acceptance,
|
|
111
|
+
qaScenario: t.qaScenario,
|
|
112
|
+
priority: t.priority,
|
|
113
|
+
}, stubCtx);
|
|
114
|
+
tasksAdded += 1;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
let milestonesAdded = 0;
|
|
118
|
+
if (summary.milestones.length === 0) {
|
|
119
|
+
await createMilestone.execute({
|
|
120
|
+
title: 'v0.1.0 design-complete',
|
|
121
|
+
description: 'All design-phase artifacts (phases, tasks, ADRs, design docs, risks, synthesis) exist and the green-light checklist passes.',
|
|
122
|
+
targetVersion: 'v0.1.0',
|
|
123
|
+
}, stubCtx);
|
|
124
|
+
milestonesAdded = 1;
|
|
125
|
+
}
|
|
126
|
+
return { ran: true, tasksAdded, milestonesAdded };
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=completeDesign.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completeDesign.js","sourceRoot":"","sources":["../../../src/cli/workspace/completeDesign.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAcnE,6DAA6D;AAC7D,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAiBrC;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAgB;IACnD,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE;QACrC,CAAC,CAAC,WAAW,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE;QACvC,CAAC,CAAC,EAAE,CAAC;IACP,OAAO;QACL;YACE,KAAK,EAAE,WAAW,KAAK,eAAe;YACtC,WAAW,EACT,mCAAmC,KAAK,2DAA2D;gBACnG,+FAA+F;gBAC/F,+BAA+B,KAAK,EAAE;YACxC,QAAQ,EAAE,CAAC,eAAe,EAAE,oBAAoB,CAAC;YACjD,UAAU,EAAE;gBACV,uBAAuB,KAAK,wDAAwD;gBACpF,qFAAqF;aACtF;YACD,UAAU,EAAE,sBAAsB,KAAK,qGAAqG;YAC5I,QAAQ,EAAE,MAAM;SACjB;QACD;YACE,KAAK,EAAE,aAAa,KAAK,eAAe;YACxC,WAAW,EACT,8BAA8B,KAAK,8DAA8D;gBACjG,gDAAgD,KAAK,EAAE;YACzD,QAAQ,EAAE,CAAC,MAAM,CAAC;YAClB,UAAU,EAAE;gBACV,oCAAoC,KAAK,iDAAiD;gBAC1F,+CAA+C;aAChD;YACD,UAAU,EAAE,aAAa,KAAK,oFAAoF;YAClH,QAAQ,EAAE,MAAM;SACjB;QACD;YACE,KAAK,EAAE,UAAU,KAAK,gBAAgB;YACtC,WAAW,EACT,wBAAwB,KAAK,sEAAsE;gBACnG,kFAAkF,KAAK,EAAE;YAC3F,QAAQ,EAAE,CAAC,2BAA2B,CAAC;YACvC,UAAU,EAAE;gBACV,QAAQ,KAAK,qDAAqD;gBAClE,0EAA0E;aAC3E;YACD,UAAU,EAAE,+CAA+C,KAAK,wEAAwE;YACxI,QAAQ,EAAE,QAAQ;SACnB;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,GAAqB;IAErB,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;IACzF,CAAC;IAED,MAAM,KAAK,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAE,CAAC;IAC/D,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAE,CAAC;IACzE,MAAM,OAAO,GAAG,GAA0D,CAAC;IAE3E,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnC,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1E,IAAI,aAAa,CAAC,MAAM,IAAI,mBAAmB;YAAE,SAAS;QAC1D,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;QACvE,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAAC;aAC1C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;aAC3C,KAAK,CAAC,CAAC,EAAE,mBAAmB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACxD,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,MAAM,UAAU,CAAC,OAAO,CACtB;gBACE,OAAO,EAAE,KAAK,CAAC,EAAE;gBACjB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ;aACrB,EACD,OAAO,CACR,CAAC;YACF,UAAU,IAAI,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,eAAe,CAAC,OAAO,CAC3B;YACE,KAAK,EAAE,wBAAwB;YAC/B,WAAW,EACT,6HAA6H;YAC/H,aAAa,EAAE,QAAQ;SACxB,EACD,OAAO,CACR,CAAC;QACF,eAAe,GAAG,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC;AACpD,CAAC"}
|
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
* The fallback ensures the workspace always works — even in read-only
|
|
8
8
|
* directories (Docker containers, system dirs, etc.).
|
|
9
9
|
*/
|
|
10
|
-
import { mkdirSync, writeFileSync, existsSync, accessSync, constants, realpathSync } from
|
|
11
|
-
import { join, basename } from
|
|
12
|
-
import { homedir } from
|
|
13
|
-
import { createHash } from
|
|
10
|
+
import { mkdirSync, writeFileSync, existsSync, accessSync, constants, realpathSync, } from "node:fs";
|
|
11
|
+
import { join, basename } from "node:path";
|
|
12
|
+
import { homedir } from "node:os";
|
|
13
|
+
import { createHash } from "node:crypto";
|
|
14
14
|
/**
|
|
15
15
|
* Resolve the workspace root. Returns the first writable option:
|
|
16
16
|
* 1. `<cwd>/.zelari/` if cwd is writable
|
|
@@ -20,8 +20,8 @@ import { createHash } from 'node:crypto';
|
|
|
20
20
|
*/
|
|
21
21
|
export function resolveWorkspaceRoot(projectRoot = process.cwd()) {
|
|
22
22
|
const candidates = [
|
|
23
|
-
join(projectRoot,
|
|
24
|
-
join(homedir(),
|
|
23
|
+
join(projectRoot, ".zelari"),
|
|
24
|
+
join(homedir(), ".zelari-code", "workspace", hashProject(projectRoot)),
|
|
25
25
|
];
|
|
26
26
|
for (const candidate of candidates) {
|
|
27
27
|
if (isWritableDir(projectRoot) || candidate !== candidates[0]) {
|
|
@@ -35,7 +35,10 @@ export function resolveWorkspaceRoot(projectRoot = process.cwd()) {
|
|
|
35
35
|
}
|
|
36
36
|
/** Hash a project path to a stable short id (used in global fallback path). */
|
|
37
37
|
function hashProject(projectPath) {
|
|
38
|
-
return createHash(
|
|
38
|
+
return createHash("sha1")
|
|
39
|
+
.update(realpathSync(projectPath))
|
|
40
|
+
.digest("hex")
|
|
41
|
+
.slice(0, 12);
|
|
39
42
|
}
|
|
40
43
|
/** Check if a directory is writable (creates if missing). */
|
|
41
44
|
function isWritableDir(dir) {
|
|
@@ -53,10 +56,11 @@ function isWritableDir(dir) {
|
|
|
53
56
|
function ensureWorkspaceDir(workspaceDir) {
|
|
54
57
|
mkdirSync(workspaceDir, { recursive: true });
|
|
55
58
|
// Auto-gitignore ONLY if workspace is project-local AND inside a git repo
|
|
56
|
-
if (workspaceDir.endsWith(
|
|
57
|
-
|
|
59
|
+
if (workspaceDir.endsWith("/.zelari") &&
|
|
60
|
+
existsSync(join(workspaceDir, "..", ".git"))) {
|
|
61
|
+
const gitignorePath = join(workspaceDir, ".gitignore");
|
|
58
62
|
if (!existsSync(gitignorePath)) {
|
|
59
|
-
writeFileSync(gitignorePath,
|
|
63
|
+
writeFileSync(gitignorePath, "*\n!.gitignore\n");
|
|
60
64
|
}
|
|
61
65
|
}
|
|
62
66
|
}
|
|
@@ -72,9 +76,12 @@ export const WORKSPACE_SUBDIRS = [
|
|
|
72
76
|
/** Get the absolute path to a standard workspace file. */
|
|
73
77
|
export function workspaceFile(rootDir, kind) {
|
|
74
78
|
switch (kind) {
|
|
75
|
-
case
|
|
76
|
-
|
|
77
|
-
case
|
|
79
|
+
case "plan":
|
|
80
|
+
return join(rootDir, "plan.md");
|
|
81
|
+
case "risks":
|
|
82
|
+
return join(rootDir, "risks.md");
|
|
83
|
+
case "index":
|
|
84
|
+
return join(rootDir, "workspace.json");
|
|
78
85
|
}
|
|
79
86
|
}
|
|
80
87
|
/** Get the absolute path to a numbered artifact in a subdir. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/cli/workspace/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/cli/workspace/paths.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,38 +1,164 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* workspace/postCouncilHook.ts — Run the AGENTS.MD auto-maintenance
|
|
3
|
-
* after every council run completes
|
|
3
|
+
* after every council run completes, then run the deterministic
|
|
4
|
+
* complete-design post-processor for design-phase workspaces.
|
|
4
5
|
*
|
|
5
|
-
* Used by `councilDispatcher` (Phase 4 wiring) to keep AGENTS.MD in
|
|
6
|
-
* with the latest `.zelari/` artifacts
|
|
6
|
+
* Used by `councilDispatcher` (Phase 4 wiring) to keep AGENTS.MD in
|
|
7
|
+
* sync with the latest `.zelari/` artifacts and to guarantee that
|
|
8
|
+
* tasks/milestones are present even when the council model (e.g.
|
|
9
|
+
* composer-2.5) refuses to emit createTask/createMilestone as real
|
|
10
|
+
* tool calls.
|
|
7
11
|
*/
|
|
12
|
+
import { spawn } from 'node:child_process';
|
|
13
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
14
|
+
import { join } from 'node:path';
|
|
8
15
|
import { updateAgentsMd } from './agentsMd.js';
|
|
16
|
+
import { runBuiltinCompleteDesign } from './completeDesign.js';
|
|
9
17
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
18
|
+
* v0.7.7 Opzione B / v0.7.8 — Run the deterministic complete-design
|
|
19
|
+
* post-processor if the workspace is in design-phase (`.zelari/plan.json`
|
|
20
|
+
* exists with at least one phase).
|
|
13
21
|
*
|
|
14
|
-
*
|
|
22
|
+
* Resolution order:
|
|
23
|
+
* 1. A workspace-local `complete-design.mjs` at the project root wins
|
|
24
|
+
* (curated, domain-specific task templates) and is spawned as a
|
|
25
|
+
* child process.
|
|
26
|
+
* 2. Otherwise (v0.7.8) the built-in TypeScript fallback runs: it
|
|
27
|
+
* derives 3 tasks per phase from the REAL phases in plan.json and
|
|
28
|
+
* guarantees a milestone — versioned with the codebase, no per-
|
|
29
|
+
* workspace setup, immune to phase-ID drift.
|
|
30
|
+
*
|
|
31
|
+
* Errors are captured, never thrown — the post-processor is a
|
|
32
|
+
* best-effort safety net.
|
|
33
|
+
*
|
|
34
|
+
* Disabled by setting `ZELARI_COMPLETE_DESIGN=0` in the environment.
|
|
15
35
|
*/
|
|
16
|
-
export async function
|
|
17
|
-
if (process.env['
|
|
18
|
-
return { ran: false,
|
|
36
|
+
export async function runCompleteDesignPostProcessor(ctx) {
|
|
37
|
+
if (process.env['ZELARI_COMPLETE_DESIGN'] === '0') {
|
|
38
|
+
return { ran: false, reason: 'ZELARI_COMPLETE_DESIGN=0 (disabled)' };
|
|
39
|
+
}
|
|
40
|
+
const planJsonPath = join(ctx.rootDir, 'plan.json');
|
|
41
|
+
const scriptPath = join(ctx.projectRoot, 'complete-design.mjs');
|
|
42
|
+
if (!existsSync(planJsonPath)) {
|
|
43
|
+
return { ran: false, reason: '.zelari/plan.json missing (not design-phase)' };
|
|
19
44
|
}
|
|
45
|
+
let phaseCount = 0;
|
|
20
46
|
try {
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
47
|
+
const parsed = JSON.parse(readFileSync(planJsonPath, 'utf8'));
|
|
48
|
+
phaseCount = Array.isArray(parsed.phases) ? parsed.phases.length : 0;
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return { ran: false, reason: '.zelari/plan.json corrupt' };
|
|
52
|
+
}
|
|
53
|
+
if (phaseCount === 0) {
|
|
54
|
+
return { ran: false, reason: '.zelari/plan.json has no phases' };
|
|
55
|
+
}
|
|
56
|
+
if (!existsSync(scriptPath)) {
|
|
57
|
+
// v0.7.8: no workspace script → run the built-in deterministic
|
|
58
|
+
// fallback instead of skipping. Same guarantees (≥3 tasks per phase,
|
|
59
|
+
// ≥1 milestone), zero per-workspace setup.
|
|
60
|
+
try {
|
|
61
|
+
const builtin = await runBuiltinCompleteDesign(ctx);
|
|
62
|
+
return {
|
|
63
|
+
ran: builtin.ran,
|
|
64
|
+
...(builtin.ran ? { exitCode: 0 } : {}),
|
|
65
|
+
output: `builtin complete-design: +${builtin.tasksAdded} tasks, +${builtin.milestonesAdded} milestones`,
|
|
66
|
+
...(builtin.reason ? { reason: builtin.reason } : {}),
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
return {
|
|
71
|
+
ran: true,
|
|
72
|
+
exitCode: -1,
|
|
73
|
+
reason: `builtin complete-design error: ${err instanceof Error ? err.message : String(err)}`,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
28
76
|
}
|
|
29
|
-
|
|
30
|
-
|
|
77
|
+
return await new Promise((resolveRun) => {
|
|
78
|
+
const child = spawn(process.execPath, [scriptPath], {
|
|
79
|
+
cwd: ctx.projectRoot,
|
|
80
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
81
|
+
env: process.env,
|
|
82
|
+
});
|
|
83
|
+
let stdout = '';
|
|
84
|
+
let stderr = '';
|
|
85
|
+
child.stdout?.on('data', (chunk) => {
|
|
86
|
+
stdout += chunk.toString('utf8');
|
|
87
|
+
});
|
|
88
|
+
child.stderr?.on('data', (chunk) => {
|
|
89
|
+
stderr += chunk.toString('utf8');
|
|
90
|
+
});
|
|
91
|
+
child.on('error', (err) => {
|
|
92
|
+
resolveRun({
|
|
93
|
+
ran: true,
|
|
94
|
+
exitCode: -1,
|
|
95
|
+
output: stderr,
|
|
96
|
+
reason: `spawn error: ${err.message}`,
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
child.on('close', (code) => {
|
|
100
|
+
const exitCode = code ?? -1;
|
|
101
|
+
const ok = exitCode === 0;
|
|
102
|
+
resolveRun({
|
|
103
|
+
ran: true,
|
|
104
|
+
exitCode,
|
|
105
|
+
output: stdout + stderr,
|
|
106
|
+
...(ok ? {} : { reason: `complete-design exited with code ${exitCode}` }),
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Run the post-council hook pipeline:
|
|
113
|
+
* 1. AGENTS.MD auto-maintenance (can be skipped via ZELARI_AGENTS_MD=0).
|
|
114
|
+
* 2. complete-design post-processor (design-phase only, can be skipped
|
|
115
|
+
* via ZELARI_COMPLETE_DESIGN=0).
|
|
116
|
+
*
|
|
117
|
+
* The `completeDesign` field carries the secondary result so the CLI can
|
|
118
|
+
* surface it ("complete-design: 12 tasks + 1 milestone added"). The
|
|
119
|
+
* primary `changed`/`sections` reflect the AGENTS.MD step only.
|
|
120
|
+
*
|
|
121
|
+
* Errors from either step are caught and reported in the result — the
|
|
122
|
+
* hook never throws.
|
|
123
|
+
*/
|
|
124
|
+
export async function runPostCouncilHook(ctx) {
|
|
125
|
+
// ── Step 1: AGENTS.MD maintenance ─────────────────────────────────────
|
|
126
|
+
let agentsMdResult;
|
|
127
|
+
if (process.env['ZELARI_AGENTS_MD'] === '0') {
|
|
128
|
+
agentsMdResult = {
|
|
31
129
|
ran: false,
|
|
32
130
|
changed: false,
|
|
33
131
|
sections: [],
|
|
34
|
-
reason:
|
|
132
|
+
reason: 'ZELARI_AGENTS_MD=0 (disabled)',
|
|
35
133
|
};
|
|
36
134
|
}
|
|
135
|
+
else {
|
|
136
|
+
try {
|
|
137
|
+
const result = await updateAgentsMd(ctx, ctx.projectRoot);
|
|
138
|
+
agentsMdResult = {
|
|
139
|
+
ran: true,
|
|
140
|
+
changed: result.changed,
|
|
141
|
+
sections: result.sections,
|
|
142
|
+
...(result.reason ? { reason: result.reason } : {}),
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
catch (err) {
|
|
146
|
+
agentsMdResult = {
|
|
147
|
+
ran: false,
|
|
148
|
+
changed: false,
|
|
149
|
+
sections: [],
|
|
150
|
+
reason: `error: ${err instanceof Error ? err.message : String(err)}`,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
// ── Step 2: complete-design post-processor ───────────────────────────
|
|
155
|
+
const completeDesign = await runCompleteDesignPostProcessor(ctx);
|
|
156
|
+
return {
|
|
157
|
+
ran: agentsMdResult.ran || completeDesign.ran,
|
|
158
|
+
changed: agentsMdResult.changed,
|
|
159
|
+
sections: agentsMdResult.sections,
|
|
160
|
+
...(agentsMdResult.reason ? { reason: agentsMdResult.reason } : {}),
|
|
161
|
+
completeDesign,
|
|
162
|
+
};
|
|
37
163
|
}
|
|
38
164
|
//# sourceMappingURL=postCouncilHook.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postCouncilHook.js","sourceRoot":"","sources":["../../../src/cli/workspace/postCouncilHook.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"postCouncilHook.js","sourceRoot":"","sources":["../../../src/cli/workspace/postCouncilHook.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AA6B/D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,GAAqB;IAErB,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,KAAK,GAAG,EAAE,CAAC;QAClD,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,qCAAqC,EAAE,CAAC;IACvE,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;IAEhE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,8CAA8C,EAAE,CAAC;IAChF,CAAC;IACD,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAE3D,CAAC;QACF,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC;IAC7D,CAAC;IACD,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,iCAAiC,EAAE,CAAC;IACnE,CAAC;IAED,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,+DAA+D;QAC/D,qEAAqE;QACrE,2CAA2C;QAC3C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,wBAAwB,CAAC,GAAG,CAAC,CAAC;YACpD,OAAO;gBACL,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvC,MAAM,EAAE,6BAA6B,OAAO,CAAC,UAAU,YAAY,OAAO,CAAC,eAAe,aAAa;gBACvG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtD,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,GAAG,EAAE,IAAI;gBACT,QAAQ,EAAE,CAAC,CAAC;gBACZ,MAAM,EAAE,kCAAkC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;aAC7F,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,IAAI,OAAO,CAAuB,CAAC,UAAU,EAAE,EAAE;QAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE;YAClD,GAAG,EAAE,GAAG,CAAC,WAAW;YACpB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CAAC,CAAC;QACH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACzC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACzC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,UAAU,CAAC;gBACT,GAAG,EAAE,IAAI;gBACT,QAAQ,EAAE,CAAC,CAAC;gBACZ,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,gBAAgB,GAAG,CAAC,OAAO,EAAE;aACtC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACzB,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC;YAC5B,MAAM,EAAE,GAAG,QAAQ,KAAK,CAAC,CAAC;YAC1B,UAAU,CAAC;gBACT,GAAG,EAAE,IAAI;gBACT,QAAQ;gBACR,MAAM,EAAE,MAAM,GAAG,MAAM;gBACvB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,oCAAoC,QAAQ,EAAE,EAAE,CAAC;aAC1E,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAqB;IAErB,yEAAyE;IACzE,IAAI,cAA0B,CAAC;IAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,GAAG,EAAE,CAAC;QAC5C,cAAc,GAAG;YACf,GAAG,EAAE,KAAK;YACV,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,+BAA+B;SACxC,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;YAC1D,cAAc,GAAG;gBACf,GAAG,EAAE,IAAI;gBACT,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACpD,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,cAAc,GAAG;gBACf,GAAG,EAAE,KAAK;gBACV,OAAO,EAAE,KAAK;gBACd,QAAQ,EAAE,EAAE;gBACZ,MAAM,EAAE,UAAU,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;aACrE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,MAAM,cAAc,GAAG,MAAM,8BAA8B,CAAC,GAAG,CAAC,CAAC;IAEjE,OAAO;QACL,GAAG,EAAE,cAAc,CAAC,GAAG,IAAI,cAAc,CAAC,GAAG;QAC7C,OAAO,EAAE,cAAc,CAAC,OAAO;QAC/B,QAAQ,EAAE,cAAc,CAAC,QAAQ;QACjC,GAAG,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,cAAc;KACf,CAAC;AACJ,CAAC"}
|
|
@@ -374,15 +374,19 @@ class KeyedMutex {
|
|
|
374
374
|
const prev = this.chains.get(key) ?? Promise.resolve();
|
|
375
375
|
let release = () => { };
|
|
376
376
|
const next = new Promise((resolve) => { release = resolve; });
|
|
377
|
-
|
|
377
|
+
// v0.7.3: keep the chained promise in a variable — the old cleanup
|
|
378
|
+
// compared against a FRESH `prev.then(...)` promise, so it never matched
|
|
379
|
+
// and entries leaked forever.
|
|
380
|
+
const chained = prev.then(() => next);
|
|
381
|
+
this.chains.set(key, chained);
|
|
378
382
|
await prev;
|
|
379
383
|
try {
|
|
380
384
|
return await fn();
|
|
381
385
|
}
|
|
382
386
|
finally {
|
|
383
387
|
release();
|
|
384
|
-
// Cleanup if this was the last in chain
|
|
385
|
-
if (this.chains.get(key) ===
|
|
388
|
+
// Cleanup if this was the last in chain.
|
|
389
|
+
if (this.chains.get(key) === chained) {
|
|
386
390
|
this.chains.delete(key);
|
|
387
391
|
}
|
|
388
392
|
}
|