zelari-code 1.18.1 → 1.19.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.
@@ -0,0 +1,295 @@
1
+ /**
2
+ * missionSlice — shared helpers for Zelari mission implementation slices
3
+ * that run on the **single-agent** harness (experiment: plan@council, build@agent).
4
+ *
5
+ * Pure counting helpers are unit-tested; the harness runner is used by
6
+ * headless + TUI wiring.
7
+ */
8
+ import { AgentHarness } from '@zelari/core/harness';
9
+ import { buildSystemPrompt, getAllTools, SINGLE_AGENT_IDENTITY_MODULE, buildLanguagePolicyModuleFor, } from '@zelari/core/skills';
10
+ import { buildImplementationWriteRetryPrompt, detectDegradedRun, } from '@zelari/core/council';
11
+ import { cleanAgentContent } from '@zelari/core';
12
+ import { resolveAgentMissionToolBudget } from './buildPolicy.js';
13
+ import { envNumber } from './utils/envNumber.js';
14
+ const MUTATING = new Set(['write_file', 'edit_file', 'apply_diff']);
15
+ /** Prefix for agent implementation slices (mission context). */
16
+ export const AGENT_MISSION_IMPLEMENTER_PREAMBLE = 'You are the sole implementer for this Zelari mission slice. ' +
17
+ 'A multi-agent council may already have produced a plan under `.zelari/` — treat it as a SPEC to apply on disk. ' +
18
+ 'You MUST create or modify real project files with write_file / edit_file. ' +
19
+ 'Prose without successful writes is a failed slice.';
20
+ /**
21
+ * Track mutating tool success from harness tool events.
22
+ * Call on tool_execution_start (to map id→name) and tool_execution_end.
23
+ */
24
+ export function createWriteCounter() {
25
+ const state = { successfulWrites: 0, emittedWrites: 0 };
26
+ const pending = new Map();
27
+ return {
28
+ state,
29
+ onEvent(event) {
30
+ if (event.type === 'tool_execution_start') {
31
+ const name = event.toolName ?? event.name ?? '';
32
+ const id = event.toolCallId ?? '';
33
+ if (id && name)
34
+ pending.set(id, name);
35
+ if (MUTATING.has(name))
36
+ state.emittedWrites += 1;
37
+ return;
38
+ }
39
+ if (event.type === 'tool_execution_end') {
40
+ const id = event.toolCallId ?? '';
41
+ const name = pending.get(id) ?? event.toolName ?? event.name ?? '';
42
+ if (id)
43
+ pending.delete(id);
44
+ if (!MUTATING.has(name) || event.isError)
45
+ return;
46
+ const result = String(event.result ?? '');
47
+ const zeroEdit = name === 'edit_file' &&
48
+ /occurrencesReplaced["']?\s*[:=]\s*0\b|0 occurrence|no changes/i.test(result);
49
+ if (!zeroEdit)
50
+ state.successfulWrites += 1;
51
+ }
52
+ },
53
+ };
54
+ }
55
+ export function buildAgentMissionUserPrompt(slicePrompt, ragContext) {
56
+ const body = `${AGENT_MISSION_IMPLEMENTER_PREAMBLE}\n\n${slicePrompt}`;
57
+ if (ragContext?.trim()) {
58
+ return `${body}\n\n## Memory context\n${ragContext.trim()}`;
59
+ }
60
+ return body;
61
+ }
62
+ /**
63
+ * Run one implementation slice on the single-agent harness.
64
+ * Returns the same shape as a council slice for the mission driver.
65
+ */
66
+ export async function runAgentMissionSlice(deps) {
67
+ const env = deps.env ?? process.env;
68
+ const provider = deps.provider ?? 'openai-compatible';
69
+ const sessionId = deps.sessionId ?? crypto.randomUUID();
70
+ const maxToolCalls = resolveAgentMissionToolBudget(env);
71
+ const maxToolLoop = envNumber(env.ZELARI_MAX_TOOL_LOOP_ITERATIONS, {
72
+ default: 30,
73
+ min: 1,
74
+ });
75
+ const maxToolLoopHard = envNumber(env.ZELARI_MAX_TOOL_LOOP_HARD, {
76
+ default: 0,
77
+ min: 0,
78
+ });
79
+ const writeRetry = deps.writeRetry !== false;
80
+ const toolSpecs = deps.toolRegistry.toOpenAITools().map((t) => ({
81
+ name: t.function.name,
82
+ description: t.function.description,
83
+ parameters: t.function.parameters,
84
+ }));
85
+ const toolNames = toolSpecs.map((t) => t.name);
86
+ let languageDirective;
87
+ try {
88
+ languageDirective = buildLanguagePolicyModuleFor(deps.slicePrompt).content;
89
+ }
90
+ catch {
91
+ languageDirective =
92
+ "# Response Language\nReply in the user's language when possible, otherwise Italian.";
93
+ }
94
+ const rolePrompt = [
95
+ '# Platform',
96
+ `platform: ${process.platform}`,
97
+ `shell: ${process.platform === 'win32' ? 'cmd.exe / Git Bash (auto-detected)' : '/bin/sh'}`,
98
+ '',
99
+ '# Working Directory',
100
+ `You are running in: ${deps.projectRoot}`,
101
+ 'All relative file paths are resolved against this directory.',
102
+ 'The shell is NON-INTERACTIVE (stdin closed): pass non-interactive flags (--yes, --force, --template).',
103
+ '',
104
+ '# Work phase: BUILD (Zelari mission implementation slice)',
105
+ 'IMPLEMENT ON DISK. Prior design under .zelari/ is a SPEC, not proof of delivery.',
106
+ 'You MUST call write_file and/or edit_file before claiming done.',
107
+ ].join('\n');
108
+ const headlessRole = {
109
+ id: 'mission-agent',
110
+ name: 'Zelari Code',
111
+ codename: 'zelari-build',
112
+ role: 'mission implementer',
113
+ color: '#00d9a3',
114
+ avatar: '◆',
115
+ tools: toolNames,
116
+ systemPrompt: rolePrompt,
117
+ };
118
+ let systemPrompt;
119
+ try {
120
+ systemPrompt = buildSystemPrompt(headlessRole, {
121
+ tools: getAllTools(),
122
+ toolNames,
123
+ mode: 'agent',
124
+ projectInstructions: deps.projectInstructions || undefined,
125
+ workspaceContext: deps.workspaceContext || undefined,
126
+ ragContext: undefined,
127
+ aiConfig: {
128
+ enabledSkills: [],
129
+ enabledTools: toolNames,
130
+ customPromptModules: [
131
+ SINGLE_AGENT_IDENTITY_MODULE,
132
+ {
133
+ type: 'language-policy',
134
+ title: 'Response Language',
135
+ priority: 5,
136
+ content: languageDirective,
137
+ },
138
+ ],
139
+ agentSkillConfigs: [],
140
+ },
141
+ });
142
+ }
143
+ catch {
144
+ systemPrompt = [
145
+ 'You are zelari-code, implementing a mission slice. Write real files.',
146
+ languageDirective,
147
+ deps.workspaceContext ?? '',
148
+ ]
149
+ .filter(Boolean)
150
+ .join('\n\n');
151
+ }
152
+ const userContent = buildAgentMissionUserPrompt(deps.slicePrompt, deps.ragContext);
153
+ async function runPass(messages, passId) {
154
+ const counter = createWriteCounter();
155
+ const harness = new AgentHarness({
156
+ model: deps.model,
157
+ provider,
158
+ sessionId: passId,
159
+ messages,
160
+ tools: toolSpecs,
161
+ toolRegistry: deps.toolRegistry,
162
+ providerStream: deps.providerStream,
163
+ cwd: deps.projectRoot,
164
+ maxToolCallsPerTurn: maxToolCalls,
165
+ maxToolLoopIterations: maxToolLoop,
166
+ ...(maxToolLoopHard > 0 ? { maxToolLoopHardCap: maxToolLoopHard } : {}),
167
+ });
168
+ let text = '';
169
+ let errored = false;
170
+ try {
171
+ for await (const event of harness.run()) {
172
+ counter.onEvent(event);
173
+ if (deps.onEvent)
174
+ await deps.onEvent(event);
175
+ if (event.type === 'message_delta' && typeof event.delta === 'string') {
176
+ text += event.delta;
177
+ }
178
+ if (event.type === 'agent_end' && event.reason === 'error') {
179
+ errored = true;
180
+ }
181
+ if (event.type === 'error' && event.severity === 'fatal') {
182
+ errored = true;
183
+ }
184
+ }
185
+ }
186
+ catch {
187
+ errored = true;
188
+ }
189
+ // Prefer last assistant content from harness if stream text empty
190
+ if (!text.trim()) {
191
+ const all = harness.getMessages();
192
+ for (let i = all.length - 1; i >= 0; i--) {
193
+ const m = all[i];
194
+ if (m?.role === 'assistant' && (m.content ?? '').trim()) {
195
+ text = m.content ?? '';
196
+ break;
197
+ }
198
+ }
199
+ }
200
+ return {
201
+ text,
202
+ successfulWrites: counter.state.successfulWrites,
203
+ emittedWrites: counter.state.emittedWrites,
204
+ errored,
205
+ messages: harness.getMessages(),
206
+ };
207
+ }
208
+ const initial = [
209
+ { role: 'system', content: systemPrompt },
210
+ { role: 'user', content: userContent },
211
+ ];
212
+ let pass = await runPass(initial, sessionId);
213
+ let totalWrites = pass.successfulWrites;
214
+ let totalEmitted = pass.emittedWrites;
215
+ let synthesisText = pass.text;
216
+ let errored = pass.errored;
217
+ if (writeRetry &&
218
+ totalWrites === 0 &&
219
+ !errored) {
220
+ deps.emit?.('[zelari] build@agent: 0 write — forcing implementation retry');
221
+ const retryPrompt = buildImplementationWriteRetryPrompt(deps.slicePrompt);
222
+ const retryMessages = [
223
+ { role: 'system', content: systemPrompt },
224
+ ...pass.messages.filter((m) => m.role !== 'system'),
225
+ { role: 'user', content: retryPrompt },
226
+ ];
227
+ const retry = await runPass(retryMessages, `${sessionId}-write-retry`);
228
+ totalWrites += retry.successfulWrites;
229
+ totalEmitted += retry.emittedWrites;
230
+ if (retry.text.trim()) {
231
+ synthesisText = synthesisText
232
+ ? `${synthesisText}\n\n${retry.text}`
233
+ : retry.text;
234
+ }
235
+ errored = errored || retry.errored;
236
+ }
237
+ const cleaned = cleanAgentContent(synthesisText, {
238
+ stripQuestion: false,
239
+ stripThink: false,
240
+ });
241
+ let completionOk = false;
242
+ let degraded = false;
243
+ if (deps.runCompletionHook) {
244
+ try {
245
+ const hook = await deps.runCompletionHook({
246
+ synthesisText: cleaned,
247
+ writeCount: totalWrites,
248
+ errored,
249
+ });
250
+ completionOk = hook.completionOk;
251
+ degraded = hook.degraded;
252
+ }
253
+ catch {
254
+ // fall through to local degraded detect
255
+ }
256
+ }
257
+ if (!deps.runCompletionHook) {
258
+ const d = detectDegradedRun({
259
+ chairmanErrored: errored,
260
+ luciferWriteCount: totalWrites,
261
+ synthesisText: cleaned,
262
+ runMode: 'implementation',
263
+ });
264
+ degraded = d.degraded;
265
+ // Without hook: success = at least one write and not errored
266
+ completionOk = totalWrites > 0 && !errored && !degraded;
267
+ }
268
+ // Hard gate: verification can be vacuously green on an empty tree with no
269
+ // plan tasks. An implementation slice with zero project writes is never done.
270
+ if (totalWrites === 0) {
271
+ if (completionOk) {
272
+ deps.emit?.('[zelari] build@agent: completion.ok overridden — 0 project writes (not done)');
273
+ }
274
+ completionOk = false;
275
+ const d = detectDegradedRun({
276
+ chairmanErrored: errored,
277
+ luciferWriteCount: 0,
278
+ synthesisText: cleaned || 'completato',
279
+ runMode: 'implementation',
280
+ });
281
+ if (d.degraded)
282
+ degraded = true;
283
+ else
284
+ degraded = true; // zero-write impl is always degraded for hand-off
285
+ }
286
+ void totalEmitted;
287
+ return {
288
+ completionOk,
289
+ ran: true,
290
+ synthesisText: cleaned || undefined,
291
+ writeCount: totalWrites,
292
+ degraded,
293
+ };
294
+ }
295
+ //# sourceMappingURL=missionSlice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"missionSlice.js","sourceRoot":"","sources":["../../src/cli/missionSlice.ts"],"names":[],"mappings":"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"}
package/dist/cli/mode.js CHANGED
@@ -22,11 +22,11 @@ export function parseMode(input) {
22
22
  export function describeMode(mode) {
23
23
  switch (mode) {
24
24
  case 'council':
25
- return 'council — 6-member pipeline (Caronte…Lucifero)';
25
+ return 'council — multi-member plan/design (Caronte…Lucifero; build needs ZELARI_COUNCIL_CAN_BUILD=1)';
26
26
  case 'zelari':
27
- return 'zelari — autonomous multi-run mission';
27
+ return 'zelari — mission: plan@council → build@agent (legacy: ZELARI_BUILD_VIA_AGENT=0)';
28
28
  default:
29
- return 'agent — single LLM turn';
29
+ return 'agent — single LLM turn (default implementer)';
30
30
  }
31
31
  }
32
32
  //# sourceMappingURL=mode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mode.js","sourceRoot":"","sources":["../../src/cli/mode.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,iCAAiC;AACjC,MAAM,CAAC,MAAM,KAAK,GAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAU,CAAC;AAElF,uEAAuE;AACvE,MAAM,UAAU,QAAQ,CAAC,OAAiB;IACxC,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjC,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC;AAClD,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,OAAQ,KAA2B,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAc,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3E,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,YAAY,CAAC,IAAc;IACzC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,gDAAgD,CAAC;QAC1D,KAAK,QAAQ;YACX,OAAO,uCAAuC,CAAC;QACjD;YACE,OAAO,yBAAyB,CAAC;IACrC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"mode.js","sourceRoot":"","sources":["../../src/cli/mode.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,iCAAiC;AACjC,MAAM,CAAC,MAAM,KAAK,GAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAU,CAAC;AAElF,uEAAuE;AACvE,MAAM,UAAU,QAAQ,CAAC,OAAiB;IACxC,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjC,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC;AAClD,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,OAAQ,KAA2B,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAc,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3E,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,YAAY,CAAC,IAAc;IACzC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,SAAS;YACZ,OAAO,+FAA+F,CAAC;QACzG,KAAK,QAAQ;YACX,OAAO,iFAAiF,CAAC;QAC3F;YACE,OAAO,+CAA+C,CAAC;IAC3D,CAAC;AACH,CAAC"}