zelari-code 0.7.5 → 0.7.9
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 +27 -1
- package/dist/cli/app.js +50 -18
- package/dist/cli/app.js.map +1 -1
- package/dist/cli/components/Sidebar.js +86 -39
- package/dist/cli/components/Sidebar.js.map +1 -1
- package/dist/cli/components/SplashScreen.js +204 -0
- package/dist/cli/components/SplashScreen.js.map +1 -0
- package/dist/cli/components/StatusBar.js +22 -18
- package/dist/cli/components/StatusBar.js.map +1 -1
- package/dist/cli/councilConfig.js +38 -0
- package/dist/cli/councilConfig.js.map +1 -0
- package/dist/cli/councilDispatcher.js +38 -32
- package/dist/cli/councilDispatcher.js.map +1 -1
- package/dist/cli/hooks/useChatTurn.js +80 -61
- package/dist/cli/hooks/useChatTurn.js.map +1 -1
- package/dist/cli/hooks/useExecutionTimer.js +25 -0
- package/dist/cli/hooks/useExecutionTimer.js.map +1 -0
- package/dist/cli/hooks/useGitChanges.js +142 -0
- package/dist/cli/hooks/useGitChanges.js.map +1 -0
- package/dist/cli/hooks/useSlashDispatch.js +9 -2
- package/dist/cli/hooks/useSlashDispatch.js.map +1 -1
- package/dist/cli/main.bundled.js +2560 -1231
- package/dist/cli/main.bundled.js.map +4 -4
- package/dist/cli/main.js +9 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/mcp/mcpClient.js +14 -6
- package/dist/cli/mcp/mcpClient.js.map +1 -1
- package/dist/cli/updater.js +8 -5
- package/dist/cli/updater.js.map +1 -1
- package/dist/cli/utils/cmdline.js +26 -0
- package/dist/cli/utils/cmdline.js.map +1 -0
- package/dist/cli/utils/paths.js +20 -0
- package/dist/cli/utils/paths.js.map +1 -0
- 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/planDetect.js +17 -0
- package/dist/cli/workspace/planDetect.js.map +1 -0
- package/dist/cli/workspace/postCouncilHook.js +157 -20
- package/dist/cli/workspace/postCouncilHook.js.map +1 -1
- package/dist/cli/workspace/stubs.js +406 -225
- package/dist/cli/workspace/stubs.js.map +1 -1
- package/package.json +71 -71
|
@@ -1,38 +1,175 @@
|
|
|
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
|
*/
|
|
8
|
-
import {
|
|
12
|
+
import { spawn } from "node:child_process";
|
|
13
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
14
|
+
import { join } from "node:path";
|
|
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 (
|
|
18
|
-
return { ran: false, changed: false, sections: [], reason: 'ZELARI_AGENTS_MD=0 (disabled)' };
|
|
19
|
-
}
|
|
20
|
-
try {
|
|
21
|
-
const result = await updateAgentsMd(ctx, ctx.projectRoot);
|
|
36
|
+
export async function runCompleteDesignPostProcessor(ctx, options) {
|
|
37
|
+
if (options?.runMode === "implementation") {
|
|
22
38
|
return {
|
|
23
|
-
ran:
|
|
24
|
-
|
|
25
|
-
sections: result.sections,
|
|
26
|
-
...(result.reason ? { reason: result.reason } : {}),
|
|
39
|
+
ran: false,
|
|
40
|
+
reason: "implementation mode (complete-design skipped)",
|
|
27
41
|
};
|
|
28
42
|
}
|
|
29
|
-
|
|
43
|
+
if (process.env["ZELARI_COMPLETE_DESIGN"] === "0") {
|
|
44
|
+
return { ran: false, reason: "ZELARI_COMPLETE_DESIGN=0 (disabled)" };
|
|
45
|
+
}
|
|
46
|
+
const planJsonPath = join(ctx.rootDir, "plan.json");
|
|
47
|
+
const scriptPath = join(ctx.projectRoot, "complete-design.mjs");
|
|
48
|
+
if (!existsSync(planJsonPath)) {
|
|
30
49
|
return {
|
|
50
|
+
ran: false,
|
|
51
|
+
reason: ".zelari/plan.json missing (not design-phase)",
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
let phaseCount = 0;
|
|
55
|
+
try {
|
|
56
|
+
const parsed = JSON.parse(readFileSync(planJsonPath, "utf8"));
|
|
57
|
+
phaseCount = Array.isArray(parsed.phases) ? parsed.phases.length : 0;
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return { ran: false, reason: ".zelari/plan.json corrupt" };
|
|
61
|
+
}
|
|
62
|
+
if (phaseCount === 0) {
|
|
63
|
+
return { ran: false, reason: ".zelari/plan.json has no phases" };
|
|
64
|
+
}
|
|
65
|
+
if (!existsSync(scriptPath)) {
|
|
66
|
+
// v0.7.8: no workspace script → run the built-in deterministic
|
|
67
|
+
// fallback instead of skipping. Same guarantees (≥3 tasks per phase,
|
|
68
|
+
// ≥1 milestone), zero per-workspace setup.
|
|
69
|
+
try {
|
|
70
|
+
const builtin = await runBuiltinCompleteDesign(ctx);
|
|
71
|
+
return {
|
|
72
|
+
ran: builtin.ran,
|
|
73
|
+
...(builtin.ran ? { exitCode: 0 } : {}),
|
|
74
|
+
output: `builtin complete-design: +${builtin.tasksAdded} tasks, +${builtin.milestonesAdded} milestones`,
|
|
75
|
+
...(builtin.reason ? { reason: builtin.reason } : {}),
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
return {
|
|
80
|
+
ran: true,
|
|
81
|
+
exitCode: -1,
|
|
82
|
+
reason: `builtin complete-design error: ${err instanceof Error ? err.message : String(err)}`,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return await new Promise((resolveRun) => {
|
|
87
|
+
const child = spawn(process.execPath, [scriptPath], {
|
|
88
|
+
cwd: ctx.projectRoot,
|
|
89
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
90
|
+
env: process.env,
|
|
91
|
+
});
|
|
92
|
+
let stdout = "";
|
|
93
|
+
let stderr = "";
|
|
94
|
+
child.stdout?.on("data", (chunk) => {
|
|
95
|
+
stdout += chunk.toString("utf8");
|
|
96
|
+
});
|
|
97
|
+
child.stderr?.on("data", (chunk) => {
|
|
98
|
+
stderr += chunk.toString("utf8");
|
|
99
|
+
});
|
|
100
|
+
child.on("error", (err) => {
|
|
101
|
+
resolveRun({
|
|
102
|
+
ran: true,
|
|
103
|
+
exitCode: -1,
|
|
104
|
+
output: stderr,
|
|
105
|
+
reason: `spawn error: ${err.message}`,
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
child.on("close", (code) => {
|
|
109
|
+
const exitCode = code ?? -1;
|
|
110
|
+
const ok = exitCode === 0;
|
|
111
|
+
resolveRun({
|
|
112
|
+
ran: true,
|
|
113
|
+
exitCode,
|
|
114
|
+
output: stdout + stderr,
|
|
115
|
+
...(ok
|
|
116
|
+
? {}
|
|
117
|
+
: { reason: `complete-design exited with code ${exitCode}` }),
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Run the post-council hook pipeline:
|
|
124
|
+
* 1. AGENTS.MD auto-maintenance (can be skipped via ZELARI_AGENTS_MD=0).
|
|
125
|
+
* 2. complete-design post-processor (design-phase only, can be skipped
|
|
126
|
+
* via ZELARI_COMPLETE_DESIGN=0).
|
|
127
|
+
*
|
|
128
|
+
* The `completeDesign` field carries the secondary result so the CLI can
|
|
129
|
+
* surface it ("complete-design: 12 tasks + 1 milestone added"). The
|
|
130
|
+
* primary `changed`/`sections` reflect the AGENTS.MD step only.
|
|
131
|
+
*
|
|
132
|
+
* Errors from either step are caught and reported in the result — the
|
|
133
|
+
* hook never throws.
|
|
134
|
+
*/
|
|
135
|
+
export async function runPostCouncilHook(ctx, options) {
|
|
136
|
+
// ── Step 1: AGENTS.MD maintenance ─────────────────────────────────────
|
|
137
|
+
let agentsMdResult;
|
|
138
|
+
if (process.env["ZELARI_AGENTS_MD"] === "0") {
|
|
139
|
+
agentsMdResult = {
|
|
31
140
|
ran: false,
|
|
32
141
|
changed: false,
|
|
33
142
|
sections: [],
|
|
34
|
-
reason:
|
|
143
|
+
reason: "ZELARI_AGENTS_MD=0 (disabled)",
|
|
35
144
|
};
|
|
36
145
|
}
|
|
146
|
+
else {
|
|
147
|
+
try {
|
|
148
|
+
const result = await updateAgentsMd(ctx, ctx.projectRoot);
|
|
149
|
+
agentsMdResult = {
|
|
150
|
+
ran: true,
|
|
151
|
+
changed: result.changed,
|
|
152
|
+
sections: result.sections,
|
|
153
|
+
...(result.reason ? { reason: result.reason } : {}),
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
catch (err) {
|
|
157
|
+
agentsMdResult = {
|
|
158
|
+
ran: false,
|
|
159
|
+
changed: false,
|
|
160
|
+
sections: [],
|
|
161
|
+
reason: `error: ${err instanceof Error ? err.message : String(err)}`,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
// ── Step 2: complete-design post-processor ───────────────────────────
|
|
166
|
+
const completeDesign = await runCompleteDesignPostProcessor(ctx, options);
|
|
167
|
+
return {
|
|
168
|
+
ran: agentsMdResult.ran || completeDesign.ran,
|
|
169
|
+
changed: agentsMdResult.changed,
|
|
170
|
+
sections: agentsMdResult.sections,
|
|
171
|
+
...(agentsMdResult.reason ? { reason: agentsMdResult.reason } : {}),
|
|
172
|
+
completeDesign,
|
|
173
|
+
};
|
|
37
174
|
}
|
|
38
175
|
//# 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":"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"}
|