ace-swarm 2.1.2 → 2.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/CHANGELOG.md +52 -1
- package/README.md +86 -40
- package/assets/.agents/ACE/AGENT_REGISTRY.md +7 -1
- package/assets/.agents/ACE/agent-eval/instructions.md +41 -1
- package/assets/.agents/ACE/agent-memory/instructions.md +35 -1
- package/assets/.agents/ACE/agent-observability/instructions.md +35 -1
- package/assets/.agents/ACE/agent-release/instructions.md +34 -1
- package/assets/.agents/ACE/agent-security/instructions.md +35 -1
- package/assets/.agents/ACE/agent-skeptic/instructions.md +49 -0
- package/assets/.agents/ACE/orchestrator/AGENTS.md +11 -0
- package/assets/.github/hooks/ace-copilot.json +16 -16
- package/assets/agent-state/ACE_WORKFLOW.md +65 -0
- package/assets/agent-state/INTERFACE_REGISTRY.md +1 -0
- package/assets/agent-state/MODULES/schemas/ACE_RUNTIME_PROFILE.schema.json +79 -0
- package/assets/agent-state/MODULES/schemas/VERICIFY_PROCESS_POST_LOG.schema.json +1 -0
- package/assets/scripts/ace-hook-dispatch.mjs +447 -0
- package/assets/scripts/copilot-hook-dispatch.mjs +1 -265
- package/assets/scripts/render-mcp-configs.sh +328 -1
- package/assets/tasks/README.md +26 -0
- package/dist/ace-autonomy.d.ts +137 -0
- package/dist/ace-autonomy.d.ts.map +1 -0
- package/dist/ace-autonomy.js +472 -0
- package/dist/ace-autonomy.js.map +1 -0
- package/dist/ace-context.d.ts +29 -0
- package/dist/ace-context.d.ts.map +1 -0
- package/dist/ace-context.js +240 -0
- package/dist/ace-context.js.map +1 -0
- package/dist/ace-internal-tools.d.ts +8 -0
- package/dist/ace-internal-tools.d.ts.map +1 -0
- package/dist/ace-internal-tools.js +76 -0
- package/dist/ace-internal-tools.js.map +1 -0
- package/dist/ace-server-instructions.d.ts +12 -0
- package/dist/ace-server-instructions.d.ts.map +1 -0
- package/dist/ace-server-instructions.js +299 -0
- package/dist/ace-server-instructions.js.map +1 -0
- package/dist/agent-runtime/role-adapters.d.ts.map +1 -1
- package/dist/agent-runtime/role-adapters.js +47 -6
- package/dist/agent-runtime/role-adapters.js.map +1 -1
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +90 -0
- package/dist/helpers.js.map +1 -1
- package/dist/internal-tool-runtime.d.ts +21 -0
- package/dist/internal-tool-runtime.d.ts.map +1 -0
- package/dist/internal-tool-runtime.js +136 -0
- package/dist/internal-tool-runtime.js.map +1 -0
- package/dist/local-model-runtime.d.ts +36 -0
- package/dist/local-model-runtime.d.ts.map +1 -0
- package/dist/local-model-runtime.js +161 -0
- package/dist/local-model-runtime.js.map +1 -0
- package/dist/model-bridge.d.ts +54 -0
- package/dist/model-bridge.d.ts.map +1 -0
- package/dist/model-bridge.js +587 -0
- package/dist/model-bridge.js.map +1 -0
- package/dist/orchestrator-supervisor.d.ts +100 -0
- package/dist/orchestrator-supervisor.d.ts.map +1 -0
- package/dist/orchestrator-supervisor.js +399 -0
- package/dist/orchestrator-supervisor.js.map +1 -0
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +101 -0
- package/dist/prompts.js.map +1 -1
- package/dist/public-surface.d.ts.map +1 -1
- package/dist/public-surface.js +6 -0
- package/dist/public-surface.js.map +1 -1
- package/dist/resources.d.ts.map +1 -1
- package/dist/resources.js +29 -0
- package/dist/resources.js.map +1 -1
- package/dist/runtime-executor.d.ts.map +1 -1
- package/dist/runtime-executor.js +121 -0
- package/dist/runtime-executor.js.map +1 -1
- package/dist/runtime-profile.d.ts +18 -0
- package/dist/runtime-profile.d.ts.map +1 -1
- package/dist/runtime-profile.js +39 -3
- package/dist/runtime-profile.js.map +1 -1
- package/dist/schemas.js +1 -1
- package/dist/schemas.js.map +1 -1
- package/dist/server.d.ts +5 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +9 -1
- package/dist/server.js.map +1 -1
- package/dist/shared.d.ts +3 -3
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +1 -0
- package/dist/shared.js.map +1 -1
- package/dist/tools-agent.d.ts +1 -0
- package/dist/tools-agent.d.ts.map +1 -1
- package/dist/tools-agent.js +456 -1
- package/dist/tools-agent.js.map +1 -1
- package/dist/tools-framework.d.ts.map +1 -1
- package/dist/tools-framework.js +366 -128
- package/dist/tools-framework.js.map +1 -1
- package/dist/tools-memory.d.ts.map +1 -1
- package/dist/tools-memory.js +80 -0
- package/dist/tools-memory.js.map +1 -1
- package/dist/tui/agent-runner.d.ts +6 -0
- package/dist/tui/agent-runner.d.ts.map +1 -1
- package/dist/tui/agent-runner.js +15 -1
- package/dist/tui/agent-runner.js.map +1 -1
- package/dist/tui/agent-worker.d.ts +3 -1
- package/dist/tui/agent-worker.d.ts.map +1 -1
- package/dist/tui/agent-worker.js +117 -9
- package/dist/tui/agent-worker.js.map +1 -1
- package/dist/tui/chat.d.ts +19 -0
- package/dist/tui/chat.d.ts.map +1 -1
- package/dist/tui/chat.js +108 -0
- package/dist/tui/chat.js.map +1 -1
- package/dist/tui/index.d.ts +1 -0
- package/dist/tui/index.d.ts.map +1 -1
- package/dist/tui/index.js +3 -0
- package/dist/tui/index.js.map +1 -1
- package/dist/vericify-bridge.d.ts +5 -1
- package/dist/vericify-bridge.d.ts.map +1 -1
- package/dist/vericify-bridge.js +10 -0
- package/dist/vericify-bridge.js.map +1 -1
- package/dist/vericify-context.d.ts +10 -0
- package/dist/vericify-context.d.ts.map +1 -0
- package/dist/vericify-context.js +72 -0
- package/dist/vericify-context.js.map +1 -0
- package/dist/workspace-manager.d.ts.map +1 -1
- package/dist/workspace-manager.js +13 -2
- package/dist/workspace-manager.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import type { BridgeResult } from "./model-bridge.js";
|
|
2
|
+
export type TaskStepStatus = "planned" | "running" | "done" | "failed" | "skipped" | "blocked";
|
|
3
|
+
export type TaskPlanStatus = "planning" | "executing" | "reviewing" | "blocked" | "done" | "failed";
|
|
4
|
+
export interface TaskStep {
|
|
5
|
+
step_id: string;
|
|
6
|
+
role: string;
|
|
7
|
+
task: string;
|
|
8
|
+
depends_on?: string[];
|
|
9
|
+
parallel_group?: string;
|
|
10
|
+
status: TaskStepStatus;
|
|
11
|
+
result_summary?: string;
|
|
12
|
+
evidence_refs?: string[];
|
|
13
|
+
tool_scope?: string[];
|
|
14
|
+
job_id?: string;
|
|
15
|
+
handoff_id?: string;
|
|
16
|
+
blocked_reason?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface TaskPlan {
|
|
19
|
+
plan_id: string;
|
|
20
|
+
task: string;
|
|
21
|
+
steps: TaskStep[];
|
|
22
|
+
status: TaskPlanStatus;
|
|
23
|
+
execution_mode: "sequential" | "scheduled";
|
|
24
|
+
vcx_cursor?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface TaskPlanAmendment {
|
|
27
|
+
steps_to_add?: Array<Omit<TaskStep, "step_id" | "status">>;
|
|
28
|
+
add_after_step_id?: string;
|
|
29
|
+
append_steps?: Array<Omit<TaskStep, "step_id" | "status">>;
|
|
30
|
+
prepend_steps?: Array<Omit<TaskStep, "step_id" | "status">>;
|
|
31
|
+
remove_step_ids?: string[];
|
|
32
|
+
update_steps?: Array<{
|
|
33
|
+
step_id: string;
|
|
34
|
+
patch: Partial<Omit<TaskStep, "step_id">>;
|
|
35
|
+
}>;
|
|
36
|
+
reorder_step_ids?: string[];
|
|
37
|
+
execution_mode?: TaskPlan["execution_mode"];
|
|
38
|
+
vcx_cursor?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface SupervisorHooks {
|
|
41
|
+
spawnStep: (step: TaskStep, plan: TaskPlan) => Promise<BridgeResult>;
|
|
42
|
+
createHandoff?: (input: {
|
|
43
|
+
step: TaskStep;
|
|
44
|
+
plan: TaskPlan;
|
|
45
|
+
}) => Promise<{
|
|
46
|
+
handoff_id: string;
|
|
47
|
+
}>;
|
|
48
|
+
ackHandoff?: (handoffId: string, status: "accepted" | "blocked" | "completed", note?: string) => Promise<void>;
|
|
49
|
+
getVericifyContext?: (plan: TaskPlan) => Promise<unknown>;
|
|
50
|
+
getVericifyDelta?: (since: string, context: {
|
|
51
|
+
plan: TaskPlan;
|
|
52
|
+
step: TaskStep;
|
|
53
|
+
result: BridgeResult;
|
|
54
|
+
}) => Promise<unknown>;
|
|
55
|
+
amendPlan?: (input: {
|
|
56
|
+
plan: TaskPlan;
|
|
57
|
+
step: TaskStep;
|
|
58
|
+
result: BridgeResult;
|
|
59
|
+
vericify_delta?: unknown;
|
|
60
|
+
}) => Promise<TaskPlan | TaskPlanAmendment | undefined> | TaskPlan | TaskPlanAmendment | undefined;
|
|
61
|
+
openCircuitBreaker?: (reason: string, context: {
|
|
62
|
+
plan: TaskPlan;
|
|
63
|
+
step: TaskStep;
|
|
64
|
+
result: BridgeResult;
|
|
65
|
+
}) => Promise<void>;
|
|
66
|
+
closeCircuitBreaker?: (reason: string, context: {
|
|
67
|
+
plan: TaskPlan;
|
|
68
|
+
}) => Promise<void>;
|
|
69
|
+
executeGates?: (plan: TaskPlan) => Promise<unknown>;
|
|
70
|
+
contextSnapshot?: (plan: TaskPlan) => Promise<void>;
|
|
71
|
+
emitStatusEvent?: (input: {
|
|
72
|
+
status: string;
|
|
73
|
+
summary: string;
|
|
74
|
+
step_id?: string;
|
|
75
|
+
}) => Promise<void>;
|
|
76
|
+
}
|
|
77
|
+
export interface SupervisorRunResult {
|
|
78
|
+
plan: TaskPlan;
|
|
79
|
+
handoff_ids: string[];
|
|
80
|
+
job_ids: string[];
|
|
81
|
+
circuit_opened: boolean;
|
|
82
|
+
final_gate?: unknown;
|
|
83
|
+
}
|
|
84
|
+
export declare function deriveTaskPlanStatus(plan: TaskPlan): TaskPlanStatus;
|
|
85
|
+
export declare function createTaskPlan(input: {
|
|
86
|
+
task: string;
|
|
87
|
+
steps: Array<Omit<TaskStep, "step_id" | "status">>;
|
|
88
|
+
execution_mode?: TaskPlan["execution_mode"];
|
|
89
|
+
vcx_cursor?: string;
|
|
90
|
+
}): TaskPlan;
|
|
91
|
+
export declare function getReadyTaskSteps(plan: TaskPlan): TaskStep[];
|
|
92
|
+
export declare function markTaskStepStatus(plan: TaskPlan, stepId: string, status: TaskStepStatus, patch?: Partial<Omit<TaskStep, "step_id" | "status">>): TaskPlan;
|
|
93
|
+
export declare function applyBridgeResultToStep(plan: TaskPlan, stepId: string, result: BridgeResult): TaskPlan;
|
|
94
|
+
export declare function amendTaskPlan(plan: TaskPlan, amendment: TaskPlanAmendment): TaskPlan;
|
|
95
|
+
export declare function promoteParallelGroupToScheduler(plan: TaskPlan, parallelGroup: string, owner?: string): Promise<{
|
|
96
|
+
plan: TaskPlan;
|
|
97
|
+
job_ids: string[];
|
|
98
|
+
}>;
|
|
99
|
+
export declare function superviseTaskPlan(inputPlan: TaskPlan, hooks: SupervisorHooks): Promise<SupervisorRunResult>;
|
|
100
|
+
//# sourceMappingURL=orchestrator-supervisor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator-supervisor.d.ts","sourceRoot":"","sources":["../src/orchestrator-supervisor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,399 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { dirname } from "node:path";
|
|
3
|
+
import { randomUUID } from "node:crypto";
|
|
4
|
+
import { dispatchJobs, enqueueJob, getJobQueuePath } from "./job-scheduler.js";
|
|
5
|
+
import { appendVericifyProcessPostSafe, deriveWorkspaceVericifyRunRef, } from "./vericify-bridge.js";
|
|
6
|
+
function parseNumericStepId(stepId) {
|
|
7
|
+
const numeric = Number(stepId.replace(/^step-/, ""));
|
|
8
|
+
return Number.isFinite(numeric) && numeric > 0 ? numeric : 0;
|
|
9
|
+
}
|
|
10
|
+
function cloneSteps(steps) {
|
|
11
|
+
return steps.map((step) => ({ ...step }));
|
|
12
|
+
}
|
|
13
|
+
function nextStepId(steps) {
|
|
14
|
+
const max = steps.reduce((best, step) => Math.max(best, parseNumericStepId(step.step_id)), 0);
|
|
15
|
+
return `step-${max + 1}`;
|
|
16
|
+
}
|
|
17
|
+
function appendNewSteps(steps, additions) {
|
|
18
|
+
const next = [...steps];
|
|
19
|
+
for (const addition of additions) {
|
|
20
|
+
next.push({
|
|
21
|
+
...addition,
|
|
22
|
+
step_id: nextStepId(next),
|
|
23
|
+
status: "planned",
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
return next;
|
|
27
|
+
}
|
|
28
|
+
function deriveStepEvidence(result) {
|
|
29
|
+
return Array.from(new Set(result.tool_calls.map((tool) => tool.tool)));
|
|
30
|
+
}
|
|
31
|
+
function isTaskPlan(value) {
|
|
32
|
+
return Boolean(value) && typeof value === "object" && Array.isArray(value.steps);
|
|
33
|
+
}
|
|
34
|
+
function extractVcxCursor(payload) {
|
|
35
|
+
if (!payload || typeof payload !== "object")
|
|
36
|
+
return undefined;
|
|
37
|
+
const candidate = payload;
|
|
38
|
+
const direct = candidate.vcx_cursor ?? candidate.cursor ?? candidate.next_cursor;
|
|
39
|
+
if (typeof direct === "string" && direct.trim()) {
|
|
40
|
+
return direct.trim();
|
|
41
|
+
}
|
|
42
|
+
const liveSignal = candidate.live_signal;
|
|
43
|
+
if (liveSignal && typeof liveSignal === "object") {
|
|
44
|
+
const nested = liveSignal.vcx_cursor;
|
|
45
|
+
if (typeof nested === "string" && nested.trim()) {
|
|
46
|
+
return nested.trim();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
export function deriveTaskPlanStatus(plan) {
|
|
52
|
+
if (plan.steps.some((step) => step.status === "failed")) {
|
|
53
|
+
return "failed";
|
|
54
|
+
}
|
|
55
|
+
if (plan.steps.some((step) => step.status === "blocked")) {
|
|
56
|
+
return "blocked";
|
|
57
|
+
}
|
|
58
|
+
if (plan.steps.length > 0 && plan.steps.every((step) => step.status === "done" || step.status === "skipped")) {
|
|
59
|
+
return "done";
|
|
60
|
+
}
|
|
61
|
+
if (plan.steps.some((step) => step.status === "running")) {
|
|
62
|
+
return "executing";
|
|
63
|
+
}
|
|
64
|
+
if (plan.steps.every((step) => step.status === "planned")) {
|
|
65
|
+
return "planning";
|
|
66
|
+
}
|
|
67
|
+
if (plan.steps.some((step) => step.status === "done")) {
|
|
68
|
+
return "reviewing";
|
|
69
|
+
}
|
|
70
|
+
return plan.status;
|
|
71
|
+
}
|
|
72
|
+
function withDerivedStatus(plan) {
|
|
73
|
+
return {
|
|
74
|
+
...plan,
|
|
75
|
+
steps: cloneSteps(plan.steps),
|
|
76
|
+
status: deriveTaskPlanStatus(plan),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export function createTaskPlan(input) {
|
|
80
|
+
return withDerivedStatus({
|
|
81
|
+
plan_id: `plan-${randomUUID()}`,
|
|
82
|
+
task: input.task,
|
|
83
|
+
steps: input.steps.map((step, index) => ({
|
|
84
|
+
...step,
|
|
85
|
+
step_id: `step-${index + 1}`,
|
|
86
|
+
status: "planned",
|
|
87
|
+
})),
|
|
88
|
+
status: "planning",
|
|
89
|
+
execution_mode: input.execution_mode ?? "sequential",
|
|
90
|
+
vcx_cursor: input.vcx_cursor,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
export function getReadyTaskSteps(plan) {
|
|
94
|
+
const completed = new Set(plan.steps
|
|
95
|
+
.filter((step) => step.status === "done" || step.status === "skipped")
|
|
96
|
+
.map((step) => step.step_id));
|
|
97
|
+
return plan.steps.filter((step) => {
|
|
98
|
+
if (step.status !== "planned")
|
|
99
|
+
return false;
|
|
100
|
+
const dependencies = step.depends_on ?? [];
|
|
101
|
+
return dependencies.every((dependency) => completed.has(dependency));
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
export function markTaskStepStatus(plan, stepId, status, patch = {}) {
|
|
105
|
+
return withDerivedStatus({
|
|
106
|
+
...plan,
|
|
107
|
+
steps: plan.steps.map((step) => step.step_id === stepId
|
|
108
|
+
? {
|
|
109
|
+
...step,
|
|
110
|
+
...patch,
|
|
111
|
+
status,
|
|
112
|
+
}
|
|
113
|
+
: step),
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
export function applyBridgeResultToStep(plan, stepId, result) {
|
|
117
|
+
const nextStatus = result.status === "completed"
|
|
118
|
+
? "done"
|
|
119
|
+
: result.status === "needs_input" || result.status === "max_turns"
|
|
120
|
+
? "blocked"
|
|
121
|
+
: "failed";
|
|
122
|
+
return withDerivedStatus({
|
|
123
|
+
...plan,
|
|
124
|
+
steps: plan.steps.map((step) => step.step_id === stepId
|
|
125
|
+
? {
|
|
126
|
+
...step,
|
|
127
|
+
status: nextStatus,
|
|
128
|
+
result_summary: result.summary,
|
|
129
|
+
evidence_refs: deriveStepEvidence(result),
|
|
130
|
+
blocked_reason: nextStatus === "blocked" ? result.summary : undefined,
|
|
131
|
+
}
|
|
132
|
+
: step),
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
export function amendTaskPlan(plan, amendment) {
|
|
136
|
+
let steps = cloneSteps(plan.steps);
|
|
137
|
+
if (Array.isArray(amendment.remove_step_ids) && amendment.remove_step_ids.length > 0) {
|
|
138
|
+
const removeSet = new Set(amendment.remove_step_ids);
|
|
139
|
+
steps = steps.filter((step) => !removeSet.has(step.step_id));
|
|
140
|
+
}
|
|
141
|
+
if (Array.isArray(amendment.update_steps)) {
|
|
142
|
+
for (const update of amendment.update_steps) {
|
|
143
|
+
steps = steps.map((step) => step.step_id === update.step_id
|
|
144
|
+
? {
|
|
145
|
+
...step,
|
|
146
|
+
...update.patch,
|
|
147
|
+
}
|
|
148
|
+
: step);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
if (Array.isArray(amendment.prepend_steps) && amendment.prepend_steps.length > 0) {
|
|
152
|
+
const prepended = [];
|
|
153
|
+
for (const addition of amendment.prepend_steps) {
|
|
154
|
+
prepended.push({
|
|
155
|
+
...addition,
|
|
156
|
+
step_id: nextStepId([...prepended, ...steps]),
|
|
157
|
+
status: "planned",
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
steps = [...prepended, ...steps];
|
|
161
|
+
}
|
|
162
|
+
if (Array.isArray(amendment.steps_to_add) && amendment.steps_to_add.length > 0) {
|
|
163
|
+
if (amendment.add_after_step_id) {
|
|
164
|
+
const insertionIndex = steps.findIndex((step) => step.step_id === amendment.add_after_step_id);
|
|
165
|
+
const injected = [];
|
|
166
|
+
for (const addition of amendment.steps_to_add) {
|
|
167
|
+
injected.push({
|
|
168
|
+
...addition,
|
|
169
|
+
step_id: nextStepId([...steps, ...injected]),
|
|
170
|
+
status: "planned",
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
if (insertionIndex >= 0) {
|
|
174
|
+
steps = [
|
|
175
|
+
...steps.slice(0, insertionIndex + 1),
|
|
176
|
+
...injected,
|
|
177
|
+
...steps.slice(insertionIndex + 1),
|
|
178
|
+
];
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
steps = [...steps, ...injected];
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
steps = appendNewSteps(steps, amendment.steps_to_add);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
if (Array.isArray(amendment.append_steps) && amendment.append_steps.length > 0) {
|
|
189
|
+
steps = appendNewSteps(steps, amendment.append_steps);
|
|
190
|
+
}
|
|
191
|
+
if (Array.isArray(amendment.reorder_step_ids) && amendment.reorder_step_ids.length > 0) {
|
|
192
|
+
const order = new Map(amendment.reorder_step_ids.map((stepId, index) => [stepId, index]));
|
|
193
|
+
steps = steps
|
|
194
|
+
.slice()
|
|
195
|
+
.sort((left, right) => {
|
|
196
|
+
const leftRank = order.get(left.step_id);
|
|
197
|
+
const rightRank = order.get(right.step_id);
|
|
198
|
+
if (leftRank === undefined && rightRank === undefined) {
|
|
199
|
+
return parseNumericStepId(left.step_id) - parseNumericStepId(right.step_id);
|
|
200
|
+
}
|
|
201
|
+
if (leftRank === undefined)
|
|
202
|
+
return 1;
|
|
203
|
+
if (rightRank === undefined)
|
|
204
|
+
return -1;
|
|
205
|
+
return leftRank - rightRank;
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
return withDerivedStatus({
|
|
209
|
+
...plan,
|
|
210
|
+
steps,
|
|
211
|
+
execution_mode: amendment.execution_mode ?? plan.execution_mode,
|
|
212
|
+
vcx_cursor: amendment.vcx_cursor ?? plan.vcx_cursor,
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
export async function promoteParallelGroupToScheduler(plan, parallelGroup, owner = "capability-ops") {
|
|
216
|
+
const readySteps = getReadyTaskSteps(plan).filter((step) => step.parallel_group === parallelGroup);
|
|
217
|
+
if (readySteps.length === 0) {
|
|
218
|
+
return { plan, job_ids: [] };
|
|
219
|
+
}
|
|
220
|
+
if (!existsSync(dirname(getJobQueuePath()))) {
|
|
221
|
+
console.warn(`[orchestrator-supervisor] Scheduler state is not ready under ${dirname(getJobQueuePath())}; skipping promotion for parallel group '${parallelGroup}'.`);
|
|
222
|
+
return { plan, job_ids: [] };
|
|
223
|
+
}
|
|
224
|
+
const jobIds = [];
|
|
225
|
+
const nextSteps = cloneSteps(plan.steps);
|
|
226
|
+
for (const step of readySteps) {
|
|
227
|
+
const enqueued = await enqueueJob({
|
|
228
|
+
kind: step.role,
|
|
229
|
+
payload: {
|
|
230
|
+
task: step.task,
|
|
231
|
+
tool_scope: step.tool_scope ?? [],
|
|
232
|
+
plan_id: plan.plan_id,
|
|
233
|
+
step_id: step.step_id,
|
|
234
|
+
},
|
|
235
|
+
priority: "P1",
|
|
236
|
+
dependencies: step.depends_on?.map((dependency) => ({
|
|
237
|
+
kind: "handoff",
|
|
238
|
+
ref: dependency,
|
|
239
|
+
})) ?? [],
|
|
240
|
+
});
|
|
241
|
+
const jobId = enqueued.ack?.job_id;
|
|
242
|
+
if (!jobId)
|
|
243
|
+
continue;
|
|
244
|
+
jobIds.push(jobId);
|
|
245
|
+
const stepIndex = nextSteps.findIndex((candidate) => candidate.step_id === step.step_id);
|
|
246
|
+
if (stepIndex >= 0) {
|
|
247
|
+
nextSteps[stepIndex] = {
|
|
248
|
+
...nextSteps[stepIndex],
|
|
249
|
+
status: "running",
|
|
250
|
+
job_id: jobId,
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
if (jobIds.length > 0) {
|
|
255
|
+
const refs = deriveWorkspaceVericifyRunRef({
|
|
256
|
+
session_id: plan.plan_id,
|
|
257
|
+
role: "orchestrator",
|
|
258
|
+
});
|
|
259
|
+
await dispatchJobs({ owner });
|
|
260
|
+
await appendVericifyProcessPostSafe({
|
|
261
|
+
run_id: refs.run_id,
|
|
262
|
+
branch_id: refs.branch_id,
|
|
263
|
+
lane_id: refs.lane_id,
|
|
264
|
+
agent_id: "agent-orchestrator",
|
|
265
|
+
kind: "progress",
|
|
266
|
+
summary: `Promoted parallel group '${parallelGroup}' to scheduler: ${jobIds.join(", ")}`,
|
|
267
|
+
tool_refs: ["enqueue_job", "dispatch_jobs"],
|
|
268
|
+
evidence_refs: jobIds,
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
return {
|
|
272
|
+
plan: withDerivedStatus({
|
|
273
|
+
...plan,
|
|
274
|
+
execution_mode: "scheduled",
|
|
275
|
+
steps: nextSteps,
|
|
276
|
+
status: "executing",
|
|
277
|
+
}),
|
|
278
|
+
job_ids: jobIds,
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
export async function superviseTaskPlan(inputPlan, hooks) {
|
|
282
|
+
let plan = withDerivedStatus({
|
|
283
|
+
...inputPlan,
|
|
284
|
+
steps: cloneSteps(inputPlan.steps),
|
|
285
|
+
});
|
|
286
|
+
const handoffIds = [];
|
|
287
|
+
const jobIds = [];
|
|
288
|
+
if (!plan.vcx_cursor && hooks.getVericifyContext) {
|
|
289
|
+
const contextPacket = await hooks.getVericifyContext(plan);
|
|
290
|
+
const vcxCursor = extractVcxCursor(contextPacket);
|
|
291
|
+
if (vcxCursor) {
|
|
292
|
+
plan = {
|
|
293
|
+
...plan,
|
|
294
|
+
vcx_cursor: vcxCursor,
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
const maxIterations = Math.max(1, plan.steps.length * 4);
|
|
299
|
+
for (let iteration = 0; iteration < maxIterations; iteration += 1) {
|
|
300
|
+
const readySteps = getReadyTaskSteps(plan);
|
|
301
|
+
if (readySteps.length === 0) {
|
|
302
|
+
break;
|
|
303
|
+
}
|
|
304
|
+
if (plan.execution_mode === "scheduled") {
|
|
305
|
+
const readyGroup = readySteps.find((step) => step.parallel_group)?.parallel_group;
|
|
306
|
+
if (readyGroup) {
|
|
307
|
+
const promoted = await promoteParallelGroupToScheduler(plan, readyGroup);
|
|
308
|
+
jobIds.push(...promoted.job_ids);
|
|
309
|
+
plan = promoted.plan;
|
|
310
|
+
break;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
const currentStep = readySteps[0];
|
|
314
|
+
plan = markTaskStepStatus(plan, currentStep.step_id, "running");
|
|
315
|
+
await hooks.emitStatusEvent?.({
|
|
316
|
+
status: "in_progress",
|
|
317
|
+
summary: `Running ${currentStep.step_id}: ${currentStep.task}`,
|
|
318
|
+
step_id: currentStep.step_id,
|
|
319
|
+
});
|
|
320
|
+
let handoffId;
|
|
321
|
+
if (hooks.createHandoff) {
|
|
322
|
+
const created = await hooks.createHandoff({ step: currentStep, plan });
|
|
323
|
+
handoffId = created.handoff_id;
|
|
324
|
+
handoffIds.push(handoffId);
|
|
325
|
+
plan = amendTaskPlan(plan, {
|
|
326
|
+
update_steps: [{ step_id: currentStep.step_id, patch: { handoff_id: handoffId } }],
|
|
327
|
+
});
|
|
328
|
+
await hooks.ackHandoff?.(handoffId, "accepted", `Started ${currentStep.step_id}`);
|
|
329
|
+
}
|
|
330
|
+
const result = await hooks.spawnStep(currentStep, plan);
|
|
331
|
+
plan = applyBridgeResultToStep(plan, currentStep.step_id, result);
|
|
332
|
+
if (handoffId) {
|
|
333
|
+
await hooks.ackHandoff?.(handoffId, result.status === "completed" ? "completed" : "blocked", result.summary);
|
|
334
|
+
}
|
|
335
|
+
let vericifyDelta;
|
|
336
|
+
if (plan.vcx_cursor && hooks.getVericifyDelta) {
|
|
337
|
+
vericifyDelta = await hooks.getVericifyDelta(plan.vcx_cursor, {
|
|
338
|
+
plan,
|
|
339
|
+
step: currentStep,
|
|
340
|
+
result,
|
|
341
|
+
});
|
|
342
|
+
const nextCursor = extractVcxCursor(vericifyDelta);
|
|
343
|
+
if (nextCursor) {
|
|
344
|
+
plan = {
|
|
345
|
+
...plan,
|
|
346
|
+
vcx_cursor: nextCursor,
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
const amended = await hooks.amendPlan?.({
|
|
351
|
+
plan,
|
|
352
|
+
step: plan.steps.find((step) => step.step_id === currentStep.step_id) ?? currentStep,
|
|
353
|
+
result,
|
|
354
|
+
vericify_delta: vericifyDelta,
|
|
355
|
+
});
|
|
356
|
+
if (amended) {
|
|
357
|
+
plan = isTaskPlan(amended) ? withDerivedStatus(amended) : amendTaskPlan(plan, amended);
|
|
358
|
+
}
|
|
359
|
+
if (result.status === "failed" || result.status === "needs_input" || result.status === "max_turns") {
|
|
360
|
+
await hooks.openCircuitBreaker?.(result.summary, {
|
|
361
|
+
plan,
|
|
362
|
+
step: plan.steps.find((step) => step.step_id === currentStep.step_id) ?? currentStep,
|
|
363
|
+
result,
|
|
364
|
+
});
|
|
365
|
+
return {
|
|
366
|
+
plan: withDerivedStatus(plan),
|
|
367
|
+
handoff_ids: handoffIds,
|
|
368
|
+
job_ids: jobIds,
|
|
369
|
+
circuit_opened: true,
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
if (plan.steps.length > 0 && plan.steps.every((step) => step.status === "done" || step.status === "skipped")) {
|
|
374
|
+
const finalGate = await hooks.executeGates?.(plan);
|
|
375
|
+
await hooks.contextSnapshot?.(plan);
|
|
376
|
+
await hooks.emitStatusEvent?.({
|
|
377
|
+
status: "done",
|
|
378
|
+
summary: `Task plan ${plan.plan_id} completed`,
|
|
379
|
+
});
|
|
380
|
+
await hooks.closeCircuitBreaker?.("Task plan completed.", { plan });
|
|
381
|
+
return {
|
|
382
|
+
plan: {
|
|
383
|
+
...plan,
|
|
384
|
+
status: "done",
|
|
385
|
+
},
|
|
386
|
+
handoff_ids: handoffIds,
|
|
387
|
+
job_ids: jobIds,
|
|
388
|
+
circuit_opened: false,
|
|
389
|
+
final_gate: finalGate,
|
|
390
|
+
};
|
|
391
|
+
}
|
|
392
|
+
return {
|
|
393
|
+
plan: withDerivedStatus(plan),
|
|
394
|
+
handoff_ids: handoffIds,
|
|
395
|
+
job_ids: jobIds,
|
|
396
|
+
circuit_opened: false,
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
//# sourceMappingURL=orchestrator-supervisor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator-supervisor.js","sourceRoot":"","sources":["../src/orchestrator-supervisor.ts"],"names":[],"mappings":"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"}
|
package/dist/prompts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA6GpE,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAkpBvD"}
|
package/dist/prompts.js
CHANGED
|
@@ -5,6 +5,87 @@
|
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
import { readKernelArtifact, listAvailableSkills, readAgentInstructions, readSkillInstructions, readTaskArtifact, } from "./helpers.js";
|
|
7
7
|
import { readRuntimeProfileState, renderRuntimePrompt } from "./runtime-profile.js";
|
|
8
|
+
import { buildAceContinuityPacket, buildAceRecallContext, formatAceContinuityPacketMarkdown, formatAceRecallMarkdown, normalizeAutonomyPolicy, normalizeContinuityPolicy, } from "./ace-autonomy.js";
|
|
9
|
+
function formatRecallSlices(task) {
|
|
10
|
+
const recall = buildAceRecallContext();
|
|
11
|
+
const slices = recall.state_slices
|
|
12
|
+
.filter((entry) => entry.present)
|
|
13
|
+
.slice(0, 5)
|
|
14
|
+
.flatMap((entry) => [
|
|
15
|
+
`### ${entry.path}`,
|
|
16
|
+
"```text",
|
|
17
|
+
entry.excerpt,
|
|
18
|
+
"```",
|
|
19
|
+
]);
|
|
20
|
+
return [
|
|
21
|
+
"## ACE Preflight",
|
|
22
|
+
"ACE-Orchestrator owns preflight before any substantial dispatch.",
|
|
23
|
+
formatAceRecallMarkdown(recall),
|
|
24
|
+
task ? `- Requested task: ${task}` : "",
|
|
25
|
+
"",
|
|
26
|
+
"## ACE Recall",
|
|
27
|
+
...(slices.length > 0 ? slices : ["(no current ACE state slices found)"]),
|
|
28
|
+
...(recall.snapshot
|
|
29
|
+
? [
|
|
30
|
+
"",
|
|
31
|
+
"## Latest Context Snapshot",
|
|
32
|
+
`Name: ${recall.snapshot.name}`,
|
|
33
|
+
`Timestamp: ${recall.snapshot.timestamp}`,
|
|
34
|
+
`Summary: ${recall.snapshot.summary}`,
|
|
35
|
+
"```json",
|
|
36
|
+
recall.snapshot.content,
|
|
37
|
+
"```",
|
|
38
|
+
]
|
|
39
|
+
: []),
|
|
40
|
+
]
|
|
41
|
+
.filter(Boolean)
|
|
42
|
+
.join("\n");
|
|
43
|
+
}
|
|
44
|
+
function resolveSnapshotName(context) {
|
|
45
|
+
const candidates = [context.context_snapshot_name, context.snapshot_name];
|
|
46
|
+
for (const candidate of candidates) {
|
|
47
|
+
if (typeof candidate === "string" && candidate.trim().length > 0) {
|
|
48
|
+
return candidate.trim();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
function renderRuntimeRecallSections(input) {
|
|
54
|
+
const recall = buildAceRecallContext({
|
|
55
|
+
state_sources: input.stateSources,
|
|
56
|
+
snapshot_name: input.snapshotName,
|
|
57
|
+
});
|
|
58
|
+
const slices = input.includeSlices
|
|
59
|
+
? recall.state_slices
|
|
60
|
+
.filter((entry) => entry.present)
|
|
61
|
+
.slice(0, 5)
|
|
62
|
+
.flatMap((entry) => [
|
|
63
|
+
`### ${entry.path}`,
|
|
64
|
+
"```text",
|
|
65
|
+
entry.excerpt,
|
|
66
|
+
"```",
|
|
67
|
+
])
|
|
68
|
+
: [];
|
|
69
|
+
return {
|
|
70
|
+
recallMd: [
|
|
71
|
+
formatAceRecallMarkdown(recall),
|
|
72
|
+
input.task ? `- Requested task: ${input.task}` : "",
|
|
73
|
+
...(slices.length > 0 ? ["", ...slices] : []),
|
|
74
|
+
]
|
|
75
|
+
.filter(Boolean)
|
|
76
|
+
.join("\n"),
|
|
77
|
+
snapshotMd: recall.snapshot
|
|
78
|
+
? [
|
|
79
|
+
`Name: ${recall.snapshot.name}`,
|
|
80
|
+
`Timestamp: ${recall.snapshot.timestamp}`,
|
|
81
|
+
`Summary: ${recall.snapshot.summary}`,
|
|
82
|
+
"```json",
|
|
83
|
+
recall.snapshot.content,
|
|
84
|
+
"```",
|
|
85
|
+
].join("\n")
|
|
86
|
+
: "",
|
|
87
|
+
};
|
|
88
|
+
}
|
|
8
89
|
export function registerPrompts(server) {
|
|
9
90
|
// ── Token-budget mode ─────────────────────────────────────────────
|
|
10
91
|
const BRIEF_SCHEMA = z
|
|
@@ -35,8 +116,26 @@ export function registerPrompts(server) {
|
|
|
35
116
|
}
|
|
36
117
|
}
|
|
37
118
|
const active = readRuntimeProfileState();
|
|
119
|
+
const autonomy = normalizeAutonomyPolicy(active.profile.autonomy);
|
|
120
|
+
const continuity = normalizeContinuityPolicy(active.profile.continuity);
|
|
121
|
+
const snapshotName = resolveSnapshotName(extraContext);
|
|
122
|
+
const recallSections = renderRuntimeRecallSections({
|
|
123
|
+
task,
|
|
124
|
+
snapshotName,
|
|
125
|
+
stateSources: autonomy.state_sources,
|
|
126
|
+
includeSlices: !continuity.enabled,
|
|
127
|
+
});
|
|
128
|
+
const continuityPacket = buildAceContinuityPacket({
|
|
129
|
+
snapshot_name: snapshotName,
|
|
130
|
+
policy: continuity,
|
|
131
|
+
});
|
|
38
132
|
const rendered = renderRuntimePrompt({
|
|
39
133
|
task: task ?? "No task provided.",
|
|
134
|
+
autonomy,
|
|
135
|
+
continuity,
|
|
136
|
+
ace_state_recall_md: recallSections.recallMd,
|
|
137
|
+
ace_context_snapshot_md: recallSections.snapshotMd,
|
|
138
|
+
ace_continuity_packet_md: formatAceContinuityPacketMarkdown(continuityPacket),
|
|
40
139
|
...extraContext,
|
|
41
140
|
});
|
|
42
141
|
return {
|
|
@@ -73,6 +172,8 @@ export function registerPrompts(server) {
|
|
|
73
172
|
"",
|
|
74
173
|
"## Orchestrator Instructions",
|
|
75
174
|
readAgentInstructions("orchestrator"),
|
|
175
|
+
"",
|
|
176
|
+
...(brief ? ["## ACE Preflight", formatAceRecallMarkdown(buildAceRecallContext())] : [formatRecallSlices(task)]),
|
|
76
177
|
...(brief
|
|
77
178
|
? []
|
|
78
179
|
: [
|