jeo-code 0.11.1 → 0.11.3
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/CHANGELOG.md +46 -1
- package/README.ja.md +60 -28
- package/README.ko.md +63 -30
- package/README.md +59 -27
- package/README.zh.md +62 -30
- package/package.json +1 -1
- package/src/agent/config-schema.ts +20 -7
- package/src/agent/debug-session.ts +7 -3
- package/src/agent/engine.ts +46 -102
- package/src/agent/loop-guards.ts +11 -13
- package/src/agent/notify/daemon-control.ts +109 -24
- package/src/agent/notify/discord-api.ts +148 -0
- package/src/agent/notify/discord-daemon.ts +443 -0
- package/src/agent/notify/paths.ts +1 -1
- package/src/agent/notify/session-discovery.ts +16 -0
- package/src/agent/notify/session-endpoint.ts +43 -25
- package/src/agent/notify/slack-api.ts +177 -0
- package/src/agent/notify/slack-daemon.ts +361 -0
- package/src/agent/notify/telegram-daemon.ts +215 -83
- package/src/agent/state.ts +13 -1
- package/src/ai/model-cache.ts +22 -15
- package/src/ai/model-catalog.ts +20 -11
- package/src/ai/model-discovery.ts +81 -54
- package/src/ai/model-picker.ts +4 -0
- package/src/autopilot.ts +14 -5
- package/src/cli/runner.ts +4 -4
- package/src/commands/approve.ts +21 -16
- package/src/commands/daemon.ts +5 -3
- package/src/commands/launch/agents-slash.ts +8 -3
- package/src/commands/launch.ts +45 -46
- package/src/commands/notify.ts +215 -83
- package/src/commands/ralplan.ts +2 -1
- package/src/commands/team.ts +17 -12
- package/src/commands/ultragoal.ts +2 -1
package/src/commands/team.ts
CHANGED
|
@@ -220,16 +220,18 @@ export async function runTeamEngine(opts: TeamEngineOptions = {}): Promise<{ ok:
|
|
|
220
220
|
return { ok: false, reason: err.message };
|
|
221
221
|
}
|
|
222
222
|
|
|
223
|
-
//
|
|
224
|
-
if (planState.consensus_hash) {
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
223
|
+
// Execution requires the exact reviewed bytes, including for legacy state.
|
|
224
|
+
if (!planState.consensus_hash) {
|
|
225
|
+
log(`[ERROR] Plan lacks a consensus review hash. Re-run 'jeo ralplan', then approve and execute again.`);
|
|
226
|
+
return { ok: false, reason: "Plan lacks a consensus review hash" };
|
|
227
|
+
}
|
|
228
|
+
const currentHash = createHash("sha256").update(planContent).digest("hex");
|
|
229
|
+
if (currentHash !== planState.consensus_hash) {
|
|
230
|
+
log(
|
|
231
|
+
`[ERROR] Plan file has been modified since it was reviewed by the consensus critic.\n` +
|
|
232
|
+
` Re-run 'jeo ralplan' to let the critic review the updated plan, then approve and execute again.`
|
|
233
|
+
);
|
|
234
|
+
return { ok: false, reason: "Plan file modified since consensus review" };
|
|
233
235
|
}
|
|
234
236
|
|
|
235
237
|
let rawPlan: any;
|
|
@@ -288,6 +290,7 @@ export async function runTeamEngine(opts: TeamEngineOptions = {}): Promise<{ ok:
|
|
|
288
290
|
skill: "team" as const,
|
|
289
291
|
slug: planState.slug,
|
|
290
292
|
plan_path: planPath,
|
|
293
|
+
consensus_hash: planState.consensus_hash,
|
|
291
294
|
completed_tasks: [],
|
|
292
295
|
pending_tasks: [...tasks],
|
|
293
296
|
};
|
|
@@ -302,8 +305,9 @@ export async function runTeamEngine(opts: TeamEngineOptions = {}): Promise<{ ok:
|
|
|
302
305
|
// Round-7 #1 (architect ref 7-Round7Workflow): a team-state left over from a
|
|
303
306
|
// PREVIOUS plan must never be reused — pending=[] from plan A would make plan B
|
|
304
307
|
// no-op into a false "all executed" success, and a mid-flight leftover would run
|
|
305
|
-
// plan-A task text under plan-B roles.
|
|
306
|
-
|
|
308
|
+
// plan-A task text under plan-B roles. Changed bytes or legacy unbound state
|
|
309
|
+
// also reinitialize execution, even when the plan path and slug are unchanged.
|
|
310
|
+
if (teamState.plan_path !== planPath || teamState.slug !== planState.slug || teamState.consensus_hash !== planState.consensus_hash) {
|
|
307
311
|
log(`${categoryBadge("progress")} New plan detected (${planPath}) — restarting execution from its task list.`);
|
|
308
312
|
teamState = {
|
|
309
313
|
active: true,
|
|
@@ -311,6 +315,7 @@ export async function runTeamEngine(opts: TeamEngineOptions = {}): Promise<{ ok:
|
|
|
311
315
|
skill: "team" as const,
|
|
312
316
|
slug: planState.slug,
|
|
313
317
|
plan_path: planPath,
|
|
318
|
+
consensus_hash: planState.consensus_hash,
|
|
314
319
|
completed_tasks: [],
|
|
315
320
|
pending_tasks: [...tasks],
|
|
316
321
|
};
|
|
@@ -209,5 +209,6 @@ export async function runUltragoalEngine(opts: UltragoalEngineOptions = {}): Pro
|
|
|
209
209
|
}
|
|
210
210
|
|
|
211
211
|
export async function runUltragoalCommand(): Promise<void> {
|
|
212
|
-
await runUltragoalEngine();
|
|
212
|
+
const result = await runUltragoalEngine();
|
|
213
|
+
if (!result.ok) process.exitCode = 1;
|
|
213
214
|
}
|