@jterrats/open-orchestra 0.3.1 → 0.4.1
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 +50 -0
- package/dist/autonomous-phase-lifecycle.d.ts +25 -0
- package/dist/autonomous-phase-lifecycle.js +194 -0
- package/dist/autonomous-phase-lifecycle.js.map +1 -0
- package/dist/autonomous-run-state.d.ts +6 -0
- package/dist/autonomous-run-state.js +91 -0
- package/dist/autonomous-run-state.js.map +1 -0
- package/dist/autonomous-run-store.d.ts +12 -0
- package/dist/autonomous-run-store.js +64 -0
- package/dist/autonomous-run-store.js.map +1 -0
- package/dist/autonomous-workflow-constants.d.ts +6 -0
- package/dist/autonomous-workflow-constants.js +36 -0
- package/dist/autonomous-workflow-constants.js.map +1 -0
- package/dist/autonomous-workflow.d.ts +6 -45
- package/dist/autonomous-workflow.js +4 -385
- package/dist/autonomous-workflow.js.map +1 -1
- package/dist/benchmark.d.ts +2 -1
- package/dist/benchmark.js +70 -0
- package/dist/benchmark.js.map +1 -1
- package/dist/cli.js +31 -2
- package/dist/cli.js.map +1 -1
- package/dist/command-utils.d.ts +6 -0
- package/dist/command-utils.js +19 -0
- package/dist/command-utils.js.map +1 -0
- package/dist/commands.d.ts +8 -40
- package/dist/commands.js +59 -803
- package/dist/commands.js.map +1 -1
- package/dist/constants.js +14 -0
- package/dist/constants.js.map +1 -1
- package/dist/defaults.d.ts +17 -0
- package/dist/defaults.js +17 -0
- package/dist/defaults.js.map +1 -1
- package/dist/instruction-commands.d.ts +5 -0
- package/dist/instruction-commands.js +98 -0
- package/dist/instruction-commands.js.map +1 -0
- package/dist/metrics-commands.d.ts +3 -0
- package/dist/metrics-commands.js +114 -0
- package/dist/metrics-commands.js.map +1 -0
- package/dist/model-commands.d.ts +13 -0
- package/dist/model-commands.js +199 -0
- package/dist/model-commands.js.map +1 -0
- package/dist/model-providers.d.ts +26 -1
- package/dist/model-providers.js +257 -1
- package/dist/model-providers.js.map +1 -1
- package/dist/notifications.d.ts +31 -0
- package/dist/notifications.js +165 -0
- package/dist/notifications.js.map +1 -0
- package/dist/phase-executor.d.ts +18 -0
- package/dist/phase-executor.js +218 -0
- package/dist/phase-executor.js.map +1 -0
- package/dist/release-commands.d.ts +10 -0
- package/dist/release-commands.js +116 -0
- package/dist/release-commands.js.map +1 -1
- package/dist/runtime-adapters.d.ts +5 -1
- package/dist/runtime-adapters.js +27 -0
- package/dist/runtime-adapters.js.map +1 -1
- package/dist/runtime-commands.d.ts +9 -0
- package/dist/runtime-commands.js +156 -0
- package/dist/runtime-commands.js.map +1 -0
- package/dist/runtime-execution-adapters.d.ts +2 -0
- package/dist/runtime-execution-adapters.js +163 -0
- package/dist/runtime-execution-adapters.js.map +1 -0
- package/dist/runtime-execution-renderer.d.ts +10 -0
- package/dist/runtime-execution-renderer.js +110 -0
- package/dist/runtime-execution-renderer.js.map +1 -0
- package/dist/runtime-execution.d.ts +27 -0
- package/dist/runtime-execution.js +147 -0
- package/dist/runtime-execution.js.map +1 -0
- package/dist/skills-commands.d.ts +9 -0
- package/dist/skills-commands.js +130 -0
- package/dist/skills-commands.js.map +1 -0
- package/dist/sprint-commands.d.ts +5 -0
- package/dist/sprint-commands.js +120 -0
- package/dist/sprint-commands.js.map +1 -0
- package/dist/sprint-metrics.d.ts +9 -0
- package/dist/sprint-metrics.js +203 -0
- package/dist/sprint-metrics.js.map +1 -0
- package/dist/telemetry-commands.d.ts +7 -0
- package/dist/telemetry-commands.js +82 -0
- package/dist/telemetry-commands.js.map +1 -0
- package/dist/tool-commands.d.ts +3 -0
- package/dist/tool-commands.js +67 -0
- package/dist/tool-commands.js.map +1 -0
- package/dist/types.d.ts +177 -0
- package/dist/types.js.map +1 -1
- package/dist/workflow-services.d.ts +3 -1
- package/dist/workflow-services.js +16 -6
- package/dist/workflow-services.js.map +1 -1
- package/docs/autonomous-workflow.md +28 -1
- package/docs/benchmark.md +18 -0
- package/docs/runtime-llm-flow.md +80 -9
- package/package.json +1 -1
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
export const runtimeExecutionAdapters = [
|
|
2
|
+
{
|
|
3
|
+
id: "claude-cli",
|
|
4
|
+
target: "claude",
|
|
5
|
+
label: "Claude CLI",
|
|
6
|
+
kind: "cli",
|
|
7
|
+
summary: "Use the authenticated Claude CLI session as the executor.",
|
|
8
|
+
execution: {
|
|
9
|
+
nonInteractive: false,
|
|
10
|
+
promptInjection: true,
|
|
11
|
+
structuredOutput: false,
|
|
12
|
+
fileEdits: true,
|
|
13
|
+
testExecution: true,
|
|
14
|
+
evidenceReturn: true,
|
|
15
|
+
requiresTty: true,
|
|
16
|
+
requiresUserApproval: true,
|
|
17
|
+
resumeSession: true,
|
|
18
|
+
},
|
|
19
|
+
subagents: {
|
|
20
|
+
runtimeNative: true,
|
|
21
|
+
parallel: true,
|
|
22
|
+
namedRoles: true,
|
|
23
|
+
forkedContext: true,
|
|
24
|
+
structuredHandoff: true,
|
|
25
|
+
fileOwnership: true,
|
|
26
|
+
requiresParentApproval: true,
|
|
27
|
+
},
|
|
28
|
+
briefOnlyFallback: true,
|
|
29
|
+
directProviderApiAllowed: false,
|
|
30
|
+
guidance: "Render a task brief or delegation packet and let Claude CLI execute with its active auth/session.",
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
id: "codex-cli",
|
|
34
|
+
target: "codex",
|
|
35
|
+
label: "Codex CLI",
|
|
36
|
+
kind: "cli",
|
|
37
|
+
summary: "Use the authenticated Codex CLI session as the executor.",
|
|
38
|
+
execution: {
|
|
39
|
+
nonInteractive: false,
|
|
40
|
+
promptInjection: true,
|
|
41
|
+
structuredOutput: false,
|
|
42
|
+
fileEdits: true,
|
|
43
|
+
testExecution: true,
|
|
44
|
+
evidenceReturn: true,
|
|
45
|
+
requiresTty: true,
|
|
46
|
+
requiresUserApproval: true,
|
|
47
|
+
resumeSession: true,
|
|
48
|
+
},
|
|
49
|
+
subagents: {
|
|
50
|
+
runtimeNative: true,
|
|
51
|
+
parallel: true,
|
|
52
|
+
namedRoles: true,
|
|
53
|
+
forkedContext: true,
|
|
54
|
+
structuredHandoff: true,
|
|
55
|
+
fileOwnership: true,
|
|
56
|
+
requiresParentApproval: true,
|
|
57
|
+
},
|
|
58
|
+
briefOnlyFallback: true,
|
|
59
|
+
directProviderApiAllowed: false,
|
|
60
|
+
guidance: "Render a task brief or delegation packet for Codex to execute locally without vendor API keys in Orchestra.",
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
id: "cursor-cli",
|
|
64
|
+
target: "cursor",
|
|
65
|
+
label: "Cursor CLI",
|
|
66
|
+
kind: "cli",
|
|
67
|
+
summary: "Use Cursor's agent runtime when available.",
|
|
68
|
+
execution: runtimeExecutionCapabilities({ resumeSession: false }),
|
|
69
|
+
subagents: runtimeSubagentCapabilities({ forkedContext: false }),
|
|
70
|
+
briefOnlyFallback: true,
|
|
71
|
+
directProviderApiAllowed: false,
|
|
72
|
+
guidance: "Render Cursor-oriented packets and keep execution inside the active Cursor runtime.",
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
id: "vscode-agent",
|
|
76
|
+
target: "vscode",
|
|
77
|
+
label: "VS Code Agent",
|
|
78
|
+
kind: "ide",
|
|
79
|
+
summary: "Use a VS Code agent extension/runtime as the executor.",
|
|
80
|
+
execution: runtimeExecutionCapabilities({
|
|
81
|
+
structuredOutput: true,
|
|
82
|
+
requiresTty: false,
|
|
83
|
+
resumeSession: false,
|
|
84
|
+
}),
|
|
85
|
+
subagents: runtimeSubagentCapabilities({
|
|
86
|
+
runtimeNative: false,
|
|
87
|
+
parallel: false,
|
|
88
|
+
forkedContext: false,
|
|
89
|
+
}),
|
|
90
|
+
briefOnlyFallback: true,
|
|
91
|
+
directProviderApiAllowed: false,
|
|
92
|
+
guidance: "Expose structured delegation packets for VS Code extensions; do not fall back to vendor APIs automatically.",
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
id: "windsurf-agent",
|
|
96
|
+
target: "windsurf",
|
|
97
|
+
label: "Windsurf Agent",
|
|
98
|
+
kind: "ide",
|
|
99
|
+
summary: "Use the active Windsurf agent runtime as the executor.",
|
|
100
|
+
execution: runtimeExecutionCapabilities({
|
|
101
|
+
requiresTty: false,
|
|
102
|
+
resumeSession: false,
|
|
103
|
+
}),
|
|
104
|
+
subagents: runtimeSubagentCapabilities({ forkedContext: false }),
|
|
105
|
+
briefOnlyFallback: true,
|
|
106
|
+
directProviderApiAllowed: false,
|
|
107
|
+
guidance: "Render Windsurf-oriented runtime packets and keep execution inside Windsurf.",
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
id: "generic-runtime",
|
|
111
|
+
target: "generic",
|
|
112
|
+
label: "Generic Runtime",
|
|
113
|
+
kind: "llm",
|
|
114
|
+
summary: "Produce portable briefs for a runtime with unknown execution hooks.",
|
|
115
|
+
execution: {
|
|
116
|
+
nonInteractive: false,
|
|
117
|
+
promptInjection: false,
|
|
118
|
+
structuredOutput: false,
|
|
119
|
+
fileEdits: false,
|
|
120
|
+
testExecution: false,
|
|
121
|
+
evidenceReturn: false,
|
|
122
|
+
requiresTty: false,
|
|
123
|
+
requiresUserApproval: true,
|
|
124
|
+
resumeSession: false,
|
|
125
|
+
},
|
|
126
|
+
subagents: runtimeSubagentCapabilities({
|
|
127
|
+
runtimeNative: false,
|
|
128
|
+
parallel: false,
|
|
129
|
+
namedRoles: false,
|
|
130
|
+
forkedContext: false,
|
|
131
|
+
}),
|
|
132
|
+
briefOnlyFallback: true,
|
|
133
|
+
directProviderApiAllowed: false,
|
|
134
|
+
guidance: "Render a portable brief only. Ask the user before any runtime-specific or API-backed execution.",
|
|
135
|
+
},
|
|
136
|
+
];
|
|
137
|
+
function runtimeExecutionCapabilities(overrides = {}) {
|
|
138
|
+
return {
|
|
139
|
+
nonInteractive: false,
|
|
140
|
+
promptInjection: true,
|
|
141
|
+
structuredOutput: false,
|
|
142
|
+
fileEdits: true,
|
|
143
|
+
testExecution: true,
|
|
144
|
+
evidenceReturn: true,
|
|
145
|
+
requiresTty: true,
|
|
146
|
+
requiresUserApproval: true,
|
|
147
|
+
resumeSession: true,
|
|
148
|
+
...overrides,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
function runtimeSubagentCapabilities(overrides = {}) {
|
|
152
|
+
return {
|
|
153
|
+
runtimeNative: true,
|
|
154
|
+
parallel: true,
|
|
155
|
+
namedRoles: true,
|
|
156
|
+
forkedContext: true,
|
|
157
|
+
structuredHandoff: true,
|
|
158
|
+
fileOwnership: true,
|
|
159
|
+
requiresParentApproval: true,
|
|
160
|
+
...overrides,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=runtime-execution-adapters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-execution-adapters.js","sourceRoot":"","sources":["../src/runtime-execution-adapters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { RuntimeDelegationAssignment, RuntimeDelegationPacket, RuntimeExecutionAdapter, Task, TaskContext } from "./types.js";
|
|
2
|
+
export declare function runtimeBriefContent(context: TaskContext, runtime: RuntimeExecutionAdapter): string;
|
|
3
|
+
export declare function runtimeDelegationContent({ context, runtime, assignments, mode, allowDirectProviderApi, }: {
|
|
4
|
+
context: TaskContext;
|
|
5
|
+
runtime: RuntimeExecutionAdapter;
|
|
6
|
+
assignments: RuntimeDelegationAssignment[];
|
|
7
|
+
mode: RuntimeDelegationPacket["mode"];
|
|
8
|
+
allowDirectProviderApi: boolean;
|
|
9
|
+
}): string;
|
|
10
|
+
export declare function delegationAssignment(role: string, task: Task): RuntimeDelegationAssignment;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
const DEFAULT_ALLOWED_COMMANDS = [
|
|
2
|
+
"npm run format",
|
|
3
|
+
"npm run build",
|
|
4
|
+
"npm run precommit",
|
|
5
|
+
];
|
|
6
|
+
export function runtimeBriefContent(context, runtime) {
|
|
7
|
+
const task = context.task;
|
|
8
|
+
return [
|
|
9
|
+
`# Runtime Execution Brief: ${task.id}`,
|
|
10
|
+
"",
|
|
11
|
+
`- Runtime: ${runtime.label} (${runtime.id})`,
|
|
12
|
+
`- Owner role: ${task.ownerRole}`,
|
|
13
|
+
"- Mode: brief-only",
|
|
14
|
+
"- Direct provider API calls: forbidden",
|
|
15
|
+
"",
|
|
16
|
+
"## Goal",
|
|
17
|
+
task.goal ?? task.title,
|
|
18
|
+
"",
|
|
19
|
+
"## Scope",
|
|
20
|
+
task.scope ?? "Use the task paths and acceptance criteria as scope.",
|
|
21
|
+
"",
|
|
22
|
+
"## Paths",
|
|
23
|
+
...listOrNone(task.paths),
|
|
24
|
+
"",
|
|
25
|
+
"## Acceptance Criteria",
|
|
26
|
+
...listOrNone(task.acceptanceCriteria),
|
|
27
|
+
"",
|
|
28
|
+
"## Required Workflow",
|
|
29
|
+
"- Load Orchestra context before editing.",
|
|
30
|
+
"- Respect locks and file ownership.",
|
|
31
|
+
"- Make code changes locally in this workspace.",
|
|
32
|
+
"- Run focused tests first, then `npm run precommit` before handoff.",
|
|
33
|
+
"- Record evidence and handoff back to Orchestra.",
|
|
34
|
+
"- Use `orchestra commands manifest --json` for supported commands and flags.",
|
|
35
|
+
"",
|
|
36
|
+
"## Selected Skills",
|
|
37
|
+
...skillLines(context),
|
|
38
|
+
"",
|
|
39
|
+
"## Active Locks",
|
|
40
|
+
...lockLines(context),
|
|
41
|
+
"",
|
|
42
|
+
"## Delegation Decision",
|
|
43
|
+
...delegationLines(context),
|
|
44
|
+
"",
|
|
45
|
+
"## Runtime Guidance",
|
|
46
|
+
runtime.guidance,
|
|
47
|
+
].join("\n");
|
|
48
|
+
}
|
|
49
|
+
export function runtimeDelegationContent({ context, runtime, assignments, mode, allowDirectProviderApi, }) {
|
|
50
|
+
return [
|
|
51
|
+
`# Runtime Subagent Delegation Packet: ${context.task.id}`,
|
|
52
|
+
"",
|
|
53
|
+
`- Runtime: ${runtime.label} (${runtime.id})`,
|
|
54
|
+
`- Delegation mode: ${mode}`,
|
|
55
|
+
`- Runtime-native subagents supported: ${runtime.subagents.runtimeNative}`,
|
|
56
|
+
`- Direct provider API calls allowed: ${allowDirectProviderApi}`,
|
|
57
|
+
"",
|
|
58
|
+
"## Parent Task",
|
|
59
|
+
context.task.goal ?? context.task.title,
|
|
60
|
+
"",
|
|
61
|
+
"## Subagent Assignments",
|
|
62
|
+
...assignments.flatMap((assignment) => [
|
|
63
|
+
`### ${assignment.role}`,
|
|
64
|
+
`- Ownership paths: ${assignment.paths.join(", ") || "none declared"}`,
|
|
65
|
+
`- Allowed commands: ${assignment.allowedCommands.join(", ")}`,
|
|
66
|
+
`- Expected artifacts: ${assignment.expectedArtifacts.join(", ")}`,
|
|
67
|
+
"- Handoff must include touched files, evidence, risks, and remaining work.",
|
|
68
|
+
"",
|
|
69
|
+
]),
|
|
70
|
+
"## Guardrails",
|
|
71
|
+
"- Do not call OpenAI, Anthropic, or other vendor APIs from Orchestra for this delegation.",
|
|
72
|
+
"- Use the active runtime's own authenticated agent/subagent mechanism.",
|
|
73
|
+
"- If runtime-native delegation is unsupported, stop at this packet and ask the user for approval.",
|
|
74
|
+
"- Avoid overlapping writes; respect ownership paths and active locks.",
|
|
75
|
+
"- Use `orchestra commands manifest --json` for supported commands and flags.",
|
|
76
|
+
].join("\n");
|
|
77
|
+
}
|
|
78
|
+
export function delegationAssignment(role, task) {
|
|
79
|
+
return {
|
|
80
|
+
role,
|
|
81
|
+
paths: task.paths ?? [],
|
|
82
|
+
allowedCommands: DEFAULT_ALLOWED_COMMANDS,
|
|
83
|
+
expectedArtifacts: ["code diff", "test evidence", "handoff notes"],
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function listOrNone(items) {
|
|
87
|
+
if (!items || items.length === 0)
|
|
88
|
+
return ["- none declared"];
|
|
89
|
+
return items.map((item) => `- ${item}`);
|
|
90
|
+
}
|
|
91
|
+
function skillLines(context) {
|
|
92
|
+
if (context.skills.selected.length === 0)
|
|
93
|
+
return ["- none selected"];
|
|
94
|
+
return context.skills.selected.map((item) => `- ${item.skill.id}: ${item.rationale.join("; ")}`);
|
|
95
|
+
}
|
|
96
|
+
function lockLines(context) {
|
|
97
|
+
if (context.locks.length === 0)
|
|
98
|
+
return ["- none active"];
|
|
99
|
+
return context.locks.map((lock) => `- ${lock.id}: ${lock.path} owned by ${lock.ownerRole} for ${lock.taskId}`);
|
|
100
|
+
}
|
|
101
|
+
function delegationLines(context) {
|
|
102
|
+
if (!context.delegation)
|
|
103
|
+
return ["- no recorded delegation decision"];
|
|
104
|
+
return [
|
|
105
|
+
`- Recommendation: ${context.delegation.recommendation}`,
|
|
106
|
+
`- Disjoint write scopes: ${context.delegation.disjointWriteScopes}`,
|
|
107
|
+
...context.delegation.delegates.map((delegate) => `- ${delegate.role}: ${delegate.mode} over ${delegate.writeScopes.join(", ") || "no declared scope"}`),
|
|
108
|
+
];
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=runtime-execution-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-execution-renderer.js","sourceRoot":"","sources":["../src/runtime-execution-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { RuntimeBrief, RuntimeDelegationPacket, RuntimeSelection } from "./types.js";
|
|
2
|
+
export interface RuntimeSelectionInput {
|
|
3
|
+
taskId: string;
|
|
4
|
+
role?: string;
|
|
5
|
+
runtime?: string;
|
|
6
|
+
root?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function selectRuntimeExecutionAdapter({ taskId, role, runtime, root, }: RuntimeSelectionInput): Promise<RuntimeSelection>;
|
|
9
|
+
export declare function renderRuntimeBrief({ taskId, runtime, root, }: {
|
|
10
|
+
taskId: string;
|
|
11
|
+
runtime?: string;
|
|
12
|
+
root?: string;
|
|
13
|
+
}): Promise<RuntimeBrief>;
|
|
14
|
+
export declare function renderRuntimeDelegationPacket({ taskId, runtime, roles, root, }: {
|
|
15
|
+
taskId: string;
|
|
16
|
+
runtime?: string;
|
|
17
|
+
roles: string[];
|
|
18
|
+
root?: string;
|
|
19
|
+
}): Promise<RuntimeDelegationPacket>;
|
|
20
|
+
export declare function recordRuntimeHandoff({ taskId, runtime, artifact, summary, sessionId, root, }: {
|
|
21
|
+
taskId: string;
|
|
22
|
+
runtime: string;
|
|
23
|
+
artifact?: string;
|
|
24
|
+
summary?: string;
|
|
25
|
+
sessionId?: string;
|
|
26
|
+
root?: string;
|
|
27
|
+
}): Promise<import("./types.js").EventEntry>;
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { getRuntimeExecutionAdapter, parseRuntimeExecutionId, } from "./runtime-adapters.js";
|
|
3
|
+
import { appendEvent, writeArtifact } from "./workspace.js";
|
|
4
|
+
import { getTaskContext, getWorkflowConfig } from "./workflow-services.js";
|
|
5
|
+
import { delegationAssignment, runtimeBriefContent, runtimeDelegationContent, } from "./runtime-execution-renderer.js";
|
|
6
|
+
export async function selectRuntimeExecutionAdapter({ taskId, role, runtime, root = process.cwd(), }) {
|
|
7
|
+
const config = await getWorkflowConfig(root);
|
|
8
|
+
const policy = normalizedRuntimePolicy(config.runtimePolicy);
|
|
9
|
+
if (runtime) {
|
|
10
|
+
return selection(taskId, role ?? "parent", parseRuntimeExecutionId(runtime), "explicit");
|
|
11
|
+
}
|
|
12
|
+
const taskExecutor = policy.byTask[taskId]?.executor;
|
|
13
|
+
if (taskExecutor) {
|
|
14
|
+
return selection(taskId, role ?? "parent", taskExecutor, "task");
|
|
15
|
+
}
|
|
16
|
+
if (role && policy.byRole[role]?.executor) {
|
|
17
|
+
return selection(taskId, role, policy.byRole[role].executor, "role");
|
|
18
|
+
}
|
|
19
|
+
const defaultExecutor = policy.defaults?.executor ?? "generic-runtime";
|
|
20
|
+
return selection(taskId, role ?? "parent", defaultExecutor, "default");
|
|
21
|
+
}
|
|
22
|
+
export async function renderRuntimeBrief({ taskId, runtime, root = process.cwd(), }) {
|
|
23
|
+
const context = await getTaskContext(taskId, root);
|
|
24
|
+
const runtimeOption = runtime ? { runtime } : {};
|
|
25
|
+
const selected = await selectRuntimeExecutionAdapter({
|
|
26
|
+
taskId,
|
|
27
|
+
role: context.task.ownerRole,
|
|
28
|
+
root,
|
|
29
|
+
...runtimeOption,
|
|
30
|
+
});
|
|
31
|
+
const content = runtimeBriefContent(context, selected.runtime);
|
|
32
|
+
const artifact = await writeArtifact(root, "runs", `${taskId}-runtime-${selected.runtime.id}-brief.md`, content);
|
|
33
|
+
await appendEvent(root, {
|
|
34
|
+
type: "RUNTIME_EXECUTION_BRIEF_RENDERED",
|
|
35
|
+
taskId,
|
|
36
|
+
actor: "parent",
|
|
37
|
+
summary: `Runtime brief rendered: ${selected.runtime.id}`,
|
|
38
|
+
artifacts: [artifact],
|
|
39
|
+
metadata: {
|
|
40
|
+
runtime: selected.runtime.id,
|
|
41
|
+
selectionSource: selected.source,
|
|
42
|
+
directProviderApiAllowed: false,
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
return {
|
|
46
|
+
taskId,
|
|
47
|
+
runtime: selected.runtime.id,
|
|
48
|
+
artifact,
|
|
49
|
+
content,
|
|
50
|
+
mode: "brief-only",
|
|
51
|
+
directProviderApiAllowed: false,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export async function renderRuntimeDelegationPacket({ taskId, runtime, roles, root = process.cwd(), }) {
|
|
55
|
+
const context = await getTaskContext(taskId, root);
|
|
56
|
+
const runtimeOption = runtime ? { runtime } : {};
|
|
57
|
+
const selected = await selectRuntimeExecutionAdapter({
|
|
58
|
+
taskId,
|
|
59
|
+
role: context.task.ownerRole,
|
|
60
|
+
root,
|
|
61
|
+
...runtimeOption,
|
|
62
|
+
});
|
|
63
|
+
const config = await getWorkflowConfig(root);
|
|
64
|
+
const policy = normalizedRuntimePolicy(config.runtimePolicy);
|
|
65
|
+
const assignments = roles.map((role) => delegationAssignment(role, context.task));
|
|
66
|
+
const mode = selected.runtime.subagents.runtimeNative
|
|
67
|
+
? policy.delegation.mode
|
|
68
|
+
: "brief-only";
|
|
69
|
+
const content = runtimeDelegationContent({
|
|
70
|
+
context,
|
|
71
|
+
runtime: selected.runtime,
|
|
72
|
+
assignments,
|
|
73
|
+
mode,
|
|
74
|
+
allowDirectProviderApi: policy.delegation.allowDirectProviderApi,
|
|
75
|
+
});
|
|
76
|
+
const artifact = await writeArtifact(root, "runs", `${taskId}-runtime-${selected.runtime.id}-delegation.md`, content);
|
|
77
|
+
await appendEvent(root, {
|
|
78
|
+
type: "RUNTIME_DELEGATION_PACKET_RENDERED",
|
|
79
|
+
taskId,
|
|
80
|
+
actor: "parent",
|
|
81
|
+
summary: `Runtime delegation packet rendered: ${selected.runtime.id}`,
|
|
82
|
+
artifacts: [artifact],
|
|
83
|
+
metadata: {
|
|
84
|
+
runtime: selected.runtime.id,
|
|
85
|
+
mode,
|
|
86
|
+
roles,
|
|
87
|
+
directProviderApiAllowed: false,
|
|
88
|
+
runtimeNativeSupported: selected.runtime.subagents.runtimeNative,
|
|
89
|
+
},
|
|
90
|
+
});
|
|
91
|
+
return {
|
|
92
|
+
taskId,
|
|
93
|
+
runtime: selected.runtime.id,
|
|
94
|
+
artifact,
|
|
95
|
+
content,
|
|
96
|
+
mode,
|
|
97
|
+
directProviderApiAllowed: false,
|
|
98
|
+
assignments,
|
|
99
|
+
requiresApproval: !selected.runtime.subagents.runtimeNative,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
export async function recordRuntimeHandoff({ taskId, runtime, artifact, summary, sessionId, root = process.cwd(), }) {
|
|
103
|
+
const runtimeId = parseRuntimeExecutionId(runtime);
|
|
104
|
+
if (artifact)
|
|
105
|
+
assertWorkflowArtifactPath(artifact);
|
|
106
|
+
return appendEvent(root, {
|
|
107
|
+
type: "RUNTIME_EXECUTION_HANDOFF_RECORDED",
|
|
108
|
+
taskId,
|
|
109
|
+
actor: "parent",
|
|
110
|
+
summary: summary ?? `Runtime execution handoff recorded: ${runtimeId}`,
|
|
111
|
+
artifacts: artifact ? [artifact] : [],
|
|
112
|
+
metadata: {
|
|
113
|
+
runtime: runtimeId,
|
|
114
|
+
...(sessionId ? { sessionId } : {}),
|
|
115
|
+
directProviderApiAllowed: false,
|
|
116
|
+
},
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
function selection(taskId, role, runtimeId, source) {
|
|
120
|
+
return {
|
|
121
|
+
taskId,
|
|
122
|
+
role,
|
|
123
|
+
runtime: getRuntimeExecutionAdapter(runtimeId),
|
|
124
|
+
source,
|
|
125
|
+
directProviderApiAllowed: false,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
function normalizedRuntimePolicy(policy) {
|
|
129
|
+
return {
|
|
130
|
+
defaults: policy?.defaults ?? { executor: "generic-runtime" },
|
|
131
|
+
byRole: policy?.byRole ?? {},
|
|
132
|
+
byTask: policy?.byTask ?? {},
|
|
133
|
+
delegation: {
|
|
134
|
+
mode: policy?.delegation?.mode ?? "runtime-native",
|
|
135
|
+
allowDirectProviderApi: policy?.delegation?.allowDirectProviderApi ?? false,
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
function assertWorkflowArtifactPath(artifact) {
|
|
140
|
+
const normalized = path.normalize(artifact);
|
|
141
|
+
if (normalized.startsWith("..") ||
|
|
142
|
+
path.isAbsolute(normalized) ||
|
|
143
|
+
!normalized.startsWith(".agent-workflow")) {
|
|
144
|
+
throw new Error("runtime artifact must be workspace workflow-local");
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=runtime-execution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-execution.js","sourceRoot":"","sources":["../src/runtime-execution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CliIo, CliOptions } from "./types.js";
|
|
2
|
+
export declare function skillsValidateCommand(options: CliOptions, io: CliIo): Promise<void>;
|
|
3
|
+
export declare function sourcesListCommand(options: CliOptions, io: CliIo): Promise<void>;
|
|
4
|
+
export declare function lessonsListCommand(options: CliOptions, io: CliIo): Promise<void>;
|
|
5
|
+
export declare function lessonsAddCommand(options: CliOptions, io: CliIo): Promise<void>;
|
|
6
|
+
export declare function lessonsPromoteCommand(options: CliOptions, io: CliIo): Promise<void>;
|
|
7
|
+
export declare function skillsListCommand(options: CliOptions, io: CliIo): Promise<void>;
|
|
8
|
+
export declare function skillsPlanCommand(options: CliOptions, io: CliIo): Promise<void>;
|
|
9
|
+
export declare function skillsRenderCommand(options: CliOptions, io: CliIo): Promise<void>;
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { requireArg } from "./args.js";
|
|
2
|
+
import { parseCsv, removeUndefined, stringOption } from "./command-utils.js";
|
|
3
|
+
import { parseRuntimeTarget } from "./runtime-adapters.js";
|
|
4
|
+
import { addAgentLesson, listAgentLessons, listSkills, planSkillsForTask, promoteAgentLessons, readSourceOfTruth, recordSkillPlan, recordSkillRender, renderSkills, validateSkills, } from "./skills.js";
|
|
5
|
+
export async function skillsValidateCommand(options, io) {
|
|
6
|
+
const report = await validateSkills();
|
|
7
|
+
if (options.json) {
|
|
8
|
+
io.log(JSON.stringify(report, null, 2));
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
io.log(report.valid ? "Skills valid" : "Skills invalid");
|
|
12
|
+
for (const error of report.errors) {
|
|
13
|
+
io.log(`ERROR: ${error}`);
|
|
14
|
+
}
|
|
15
|
+
for (const warning of report.warnings) {
|
|
16
|
+
io.log(`WARN: ${warning}`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
if (!report.valid) {
|
|
20
|
+
throw new Error("skills validation failed");
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export async function sourcesListCommand(options, io) {
|
|
24
|
+
const sources = await readSourceOfTruth();
|
|
25
|
+
if (options.json) {
|
|
26
|
+
io.log(JSON.stringify(sources, null, 2));
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
for (const source of sources) {
|
|
30
|
+
io.log(`${source.id ?? "unknown"} - ${source.name ?? "Unnamed source"}`);
|
|
31
|
+
io.log(` ${(source.locations ?? []).join(", ")}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export async function lessonsListCommand(options, io) {
|
|
35
|
+
const lessons = await listAgentLessons();
|
|
36
|
+
if (options.json) {
|
|
37
|
+
io.log(JSON.stringify(lessons, null, 2));
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (lessons.length === 0) {
|
|
41
|
+
io.log("No lessons");
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
for (const lesson of lessons) {
|
|
45
|
+
io.log(`${lesson.timestamp} ${lesson.operation}: ${lesson.errorSignature}`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export async function lessonsAddCommand(options, io) {
|
|
49
|
+
const lesson = await addAgentLesson(removeUndefined({
|
|
50
|
+
taskId: stringOption(options.task),
|
|
51
|
+
actor: stringOption(options.actor) ?? "parent",
|
|
52
|
+
operation: requireArg(options, "operation"),
|
|
53
|
+
failedAction: requireArg(options, "failed-action"),
|
|
54
|
+
errorSignature: requireArg(options, "error-signature"),
|
|
55
|
+
rootCause: requireArg(options, "root-cause"),
|
|
56
|
+
fix: requireArg(options, "fix"),
|
|
57
|
+
prevention: requireArg(options, "prevention"),
|
|
58
|
+
appliesTo: parseCsv(options["applies-to"]),
|
|
59
|
+
verifiedBy: parseCsv(options["verified-by"]),
|
|
60
|
+
}));
|
|
61
|
+
if (options.json) {
|
|
62
|
+
io.log(JSON.stringify(lesson, null, 2));
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
io.log(`Recorded lesson ${lesson.errorSignature}`);
|
|
66
|
+
}
|
|
67
|
+
export async function lessonsPromoteCommand(options, io) {
|
|
68
|
+
const result = await promoteAgentLessons(removeUndefined({
|
|
69
|
+
to: parsePromotionTarget(stringOption(options.to) ?? "doc"),
|
|
70
|
+
filter: stringOption(options.filter),
|
|
71
|
+
}));
|
|
72
|
+
if (options.json) {
|
|
73
|
+
io.log(JSON.stringify(result, null, 2));
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
io.log(`Created ${result.artifact}`);
|
|
77
|
+
io.log(`Promoted lessons: ${result.lessons.length}`);
|
|
78
|
+
}
|
|
79
|
+
export async function skillsListCommand(options, io) {
|
|
80
|
+
const skills = listSkills();
|
|
81
|
+
if (options.json) {
|
|
82
|
+
io.log(JSON.stringify(skills, null, 2));
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
for (const skill of skills) {
|
|
86
|
+
io.log(`${skill.id} - ${skill.name} (${skill.loadBudget})`);
|
|
87
|
+
io.log(` ${skill.summary}`);
|
|
88
|
+
io.log(` sources: ${skill.sourceGroups.join(", ")}`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
export async function skillsPlanCommand(options, io) {
|
|
92
|
+
const plan = await planSkillsForTask(requireArg(options, "task"));
|
|
93
|
+
await recordSkillPlan(plan);
|
|
94
|
+
if (options.json) {
|
|
95
|
+
io.log(JSON.stringify(plan, null, 2));
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
io.log(`Skills for ${plan.taskId}:`);
|
|
99
|
+
for (const item of plan.selected) {
|
|
100
|
+
io.log(` ${item.skill.id} (score ${item.score})`);
|
|
101
|
+
for (const reason of item.rationale) {
|
|
102
|
+
io.log(` - ${reason}`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
io.log(`Source groups: ${plan.sourceGroups.join(", ")}`);
|
|
106
|
+
}
|
|
107
|
+
export async function skillsRenderCommand(options, io) {
|
|
108
|
+
const target = parseSkillRenderTarget(stringOption(options.target) ?? "generic");
|
|
109
|
+
const rendered = await renderSkills({
|
|
110
|
+
target,
|
|
111
|
+
taskId: stringOption(options.task),
|
|
112
|
+
skillIds: parseCsv(options.skills),
|
|
113
|
+
});
|
|
114
|
+
await recordSkillRender(rendered);
|
|
115
|
+
if (options.json) {
|
|
116
|
+
io.log(JSON.stringify(rendered, null, 2));
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
io.log(rendered.content);
|
|
120
|
+
}
|
|
121
|
+
function parsePromotionTarget(value) {
|
|
122
|
+
if (["skill", "rule", "doc"].includes(value)) {
|
|
123
|
+
return value;
|
|
124
|
+
}
|
|
125
|
+
throw new Error(`unknown promotion target: ${value}`);
|
|
126
|
+
}
|
|
127
|
+
function parseSkillRenderTarget(value) {
|
|
128
|
+
return parseRuntimeTarget(value);
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=skills-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills-commands.js","sourceRoot":"","sources":["../src/skills-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { CliIo, CliOptions } from "./types.js";
|
|
2
|
+
export declare function velocityCommand(options: CliOptions, io: CliIo): Promise<void>;
|
|
3
|
+
export declare function sprintCommand(subcommand: string | undefined, options: CliOptions, io: CliIo): Promise<void>;
|
|
4
|
+
export declare function calibrationCommand(options: CliOptions, io: CliIo): Promise<void>;
|
|
5
|
+
export declare function burndownCommand(options: CliOptions, io: CliIo): Promise<void>;
|