@jterrats/open-orchestra 0.4.0 → 0.4.2-beta.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.
Files changed (107) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/assets/web-console.js +91 -1
  3. package/dist/autonomous-phase-lifecycle.d.ts +26 -0
  4. package/dist/autonomous-phase-lifecycle.js +214 -0
  5. package/dist/autonomous-phase-lifecycle.js.map +1 -0
  6. package/dist/autonomous-run-state.d.ts +8 -0
  7. package/dist/autonomous-run-state.js +162 -0
  8. package/dist/autonomous-run-state.js.map +1 -0
  9. package/dist/autonomous-run-store.d.ts +17 -0
  10. package/dist/autonomous-run-store.js +89 -0
  11. package/dist/autonomous-run-store.js.map +1 -0
  12. package/dist/autonomous-workflow-constants.d.ts +7 -0
  13. package/dist/autonomous-workflow-constants.js +36 -0
  14. package/dist/autonomous-workflow-constants.js.map +1 -0
  15. package/dist/autonomous-workflow.d.ts +6 -45
  16. package/dist/autonomous-workflow.js +4 -394
  17. package/dist/autonomous-workflow.js.map +1 -1
  18. package/dist/benchmark.js +16 -0
  19. package/dist/benchmark.js.map +1 -1
  20. package/dist/clarification.d.ts +2 -0
  21. package/dist/clarification.js +23 -5
  22. package/dist/clarification.js.map +1 -1
  23. package/dist/cli.js +101 -14
  24. package/dist/cli.js.map +1 -1
  25. package/dist/command-manifest.js +8 -0
  26. package/dist/command-manifest.js.map +1 -1
  27. package/dist/command-utils.d.ts +6 -0
  28. package/dist/command-utils.js +19 -0
  29. package/dist/command-utils.js.map +1 -0
  30. package/dist/commands.d.ts +15 -43
  31. package/dist/commands.js +466 -912
  32. package/dist/commands.js.map +1 -1
  33. package/dist/constants.js +20 -0
  34. package/dist/constants.js.map +1 -1
  35. package/dist/defaults.d.ts +11 -0
  36. package/dist/defaults.js +11 -0
  37. package/dist/defaults.js.map +1 -1
  38. package/dist/instruction-commands.d.ts +5 -0
  39. package/dist/instruction-commands.js +98 -0
  40. package/dist/instruction-commands.js.map +1 -0
  41. package/dist/mcp-oauth-proxy.d.ts +47 -0
  42. package/dist/mcp-oauth-proxy.js +276 -0
  43. package/dist/mcp-oauth-proxy.js.map +1 -1
  44. package/dist/memory.d.ts +11 -0
  45. package/dist/memory.js +224 -0
  46. package/dist/memory.js.map +1 -0
  47. package/dist/metrics-commands.d.ts +3 -0
  48. package/dist/metrics-commands.js +123 -0
  49. package/dist/metrics-commands.js.map +1 -0
  50. package/dist/model-commands.d.ts +13 -0
  51. package/dist/model-commands.js +216 -0
  52. package/dist/model-commands.js.map +1 -0
  53. package/dist/notifications.d.ts +25 -0
  54. package/dist/notifications.js +187 -11
  55. package/dist/notifications.js.map +1 -1
  56. package/dist/package-update-check.d.ts +19 -0
  57. package/dist/package-update-check.js +123 -0
  58. package/dist/package-update-check.js.map +1 -0
  59. package/dist/runtime-adapters.d.ts +5 -1
  60. package/dist/runtime-adapters.js +27 -0
  61. package/dist/runtime-adapters.js.map +1 -1
  62. package/dist/runtime-bootstrap.js +4 -2
  63. package/dist/runtime-bootstrap.js.map +1 -1
  64. package/dist/runtime-commands.d.ts +9 -0
  65. package/dist/runtime-commands.js +156 -0
  66. package/dist/runtime-commands.js.map +1 -0
  67. package/dist/runtime-execution-adapters.d.ts +2 -0
  68. package/dist/runtime-execution-adapters.js +163 -0
  69. package/dist/runtime-execution-adapters.js.map +1 -0
  70. package/dist/runtime-execution-renderer.d.ts +10 -0
  71. package/dist/runtime-execution-renderer.js +113 -0
  72. package/dist/runtime-execution-renderer.js.map +1 -0
  73. package/dist/runtime-execution.d.ts +27 -0
  74. package/dist/runtime-execution.js +153 -0
  75. package/dist/runtime-execution.js.map +1 -0
  76. package/dist/skills-commands.d.ts +10 -0
  77. package/dist/skills-commands.js +138 -0
  78. package/dist/skills-commands.js.map +1 -0
  79. package/dist/skills.d.ts +7 -1
  80. package/dist/skills.js +120 -11
  81. package/dist/skills.js.map +1 -1
  82. package/dist/sprint-commands.d.ts +5 -0
  83. package/dist/sprint-commands.js +120 -0
  84. package/dist/sprint-commands.js.map +1 -0
  85. package/dist/subagent-protocol.js +6 -0
  86. package/dist/subagent-protocol.js.map +1 -1
  87. package/dist/telemetry-commands.d.ts +7 -0
  88. package/dist/telemetry-commands.js +82 -0
  89. package/dist/telemetry-commands.js.map +1 -0
  90. package/dist/tool-commands.d.ts +5 -0
  91. package/dist/tool-commands.js +159 -0
  92. package/dist/tool-commands.js.map +1 -0
  93. package/dist/types.d.ts +206 -4
  94. package/dist/types.js.map +1 -1
  95. package/dist/web-api.js +93 -1
  96. package/dist/web-api.js.map +1 -1
  97. package/dist/web-chart-contracts.d.ts +3 -1
  98. package/dist/web-chart-contracts.js +6 -0
  99. package/dist/web-chart-contracts.js.map +1 -1
  100. package/dist/web-console.js +2 -2
  101. package/dist/workflow-services.d.ts +21 -3
  102. package/dist/workflow-services.js +474 -10
  103. package/dist/workflow-services.js.map +1 -1
  104. package/docs/runtime-llm-flow.md +46 -0
  105. package/package.json +2 -1
  106. package/skills/proactive-orchestra/SKILL.md +27 -0
  107. package/skills/proactive-orchestra/manifest.json +41 -0
@@ -0,0 +1,156 @@
1
+ import { readFile, writeFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { requireArg } from "./args.js";
4
+ import { removeUndefined, parseCsv, stringOption } from "./command-utils.js";
5
+ import { listCommandManifest } from "./command-manifest.js";
6
+ import { resolveWorkspaceWritePath } from "./fs-utils.js";
7
+ import { listRuntimeAdapters, parseRuntimeTarget } from "./runtime-adapters.js";
8
+ import { renderRuntimeBootstrap, upsertRuntimeBootstrapBlock, } from "./runtime-bootstrap.js";
9
+ import { recordRuntimeHandoff, renderRuntimeBrief, renderRuntimeDelegationPacket, } from "./runtime-execution.js";
10
+ import { renderSubagentProtocol, upsertSubagentProtocolBlock, } from "./subagent-protocol.js";
11
+ export async function commandsManifestCommand(options, io) {
12
+ const manifest = listCommandManifest();
13
+ if (options.json) {
14
+ io.log(JSON.stringify(manifest, null, 2));
15
+ return;
16
+ }
17
+ for (const command of manifest) {
18
+ io.log(command.command + " - " + command.summary);
19
+ }
20
+ }
21
+ export async function runtimeAdaptersCommand(options, io) {
22
+ const adapters = listRuntimeAdapters();
23
+ if (options.json) {
24
+ io.log(JSON.stringify(adapters, null, 2));
25
+ return;
26
+ }
27
+ for (const adapter of adapters) {
28
+ io.log(adapter.target +
29
+ " - " +
30
+ adapter.label +
31
+ " (" +
32
+ adapter.defaultInstructionFiles.join(", ") +
33
+ ")");
34
+ }
35
+ }
36
+ export async function runtimeBriefCommand(options, io) {
37
+ const taskId = requireArg(options, "task");
38
+ const runtime = stringOption(options.runtime);
39
+ const brief = await renderRuntimeBrief({
40
+ taskId,
41
+ ...(runtime ? { runtime } : {}),
42
+ });
43
+ if (options.json) {
44
+ io.log(JSON.stringify(brief, null, 2));
45
+ return;
46
+ }
47
+ io.log(brief.content);
48
+ io.log(`\nArtifact: ${brief.artifact}`);
49
+ }
50
+ export async function runtimeDelegatePlanCommand(options, io) {
51
+ const taskId = requireArg(options, "task");
52
+ const roles = parseCsv(options.roles);
53
+ if (roles.length === 0) {
54
+ throw new Error("runtime delegate-plan requires --roles");
55
+ }
56
+ const runtime = stringOption(options.runtime);
57
+ const packet = await renderRuntimeDelegationPacket({
58
+ taskId,
59
+ ...(runtime ? { runtime } : {}),
60
+ roles,
61
+ });
62
+ if (options.json) {
63
+ io.log(JSON.stringify(packet, null, 2));
64
+ return;
65
+ }
66
+ io.log(packet.content);
67
+ io.log(`\nArtifact: ${packet.artifact}`);
68
+ }
69
+ export async function runtimeHandoffCommand(options, io) {
70
+ const taskId = requireArg(options, "task");
71
+ const runtime = requireArg(options, "runtime");
72
+ const artifact = stringOption(options.artifact);
73
+ const summary = stringOption(options.summary);
74
+ const sessionId = stringOption(options["session-id"]);
75
+ const event = await recordRuntimeHandoff({
76
+ taskId,
77
+ runtime,
78
+ ...(artifact ? { artifact } : {}),
79
+ ...(summary ? { summary } : {}),
80
+ ...(sessionId ? { sessionId } : {}),
81
+ });
82
+ if (options.json) {
83
+ io.log(JSON.stringify(event, null, 2));
84
+ return;
85
+ }
86
+ io.log(`Runtime handoff recorded: ${event.id}`);
87
+ }
88
+ export async function runtimeBootstrapCommand(options, io) {
89
+ const target = parseSkillRenderTarget(stringOption(options.target) ?? "generic");
90
+ const bootstrap = renderRuntimeBootstrap(target);
91
+ const filePath = stringOption(options.file);
92
+ if (filePath) {
93
+ const resolvedFilePath = resolveWorkspaceWritePath(process.cwd(), path.normalize(filePath));
94
+ const existing = await readFile(resolvedFilePath, "utf8").catch(() => "");
95
+ const result = upsertRuntimeBootstrapBlock(existing, bootstrap, {
96
+ force: Boolean(options.force),
97
+ });
98
+ if (!options.check && !options["dry-run"] && !result.drift) {
99
+ await writeFile(resolvedFilePath, result.content);
100
+ }
101
+ if (options.json) {
102
+ io.log(JSON.stringify(result, null, 2));
103
+ return;
104
+ }
105
+ io.log(result.changed
106
+ ? "Runtime bootstrap changed"
107
+ : "Runtime bootstrap unchanged");
108
+ return;
109
+ }
110
+ if (options.json) {
111
+ io.log(JSON.stringify(bootstrap, null, 2));
112
+ return;
113
+ }
114
+ io.log(bootstrap.content);
115
+ }
116
+ export async function protocolRenderCommand(options, io) {
117
+ const protocol = await renderSubagentProtocol(removeUndefined({
118
+ target: parseSkillRenderTarget(stringOption(options.target) ?? "generic"),
119
+ taskId: stringOption(options.task),
120
+ }));
121
+ if (options.json) {
122
+ io.log(JSON.stringify(protocol, null, 2));
123
+ return;
124
+ }
125
+ io.log(protocol.content);
126
+ }
127
+ export async function protocolBlockCommand(options, io) {
128
+ const filePath = requireArg(options, "file");
129
+ const protocol = await renderSubagentProtocol(removeUndefined({
130
+ target: parseSkillRenderTarget(stringOption(options.target) ?? "generic"),
131
+ taskId: stringOption(options.task),
132
+ }));
133
+ const existing = await readFile(filePath, "utf8").catch(() => "");
134
+ const result = upsertSubagentProtocolBlock(existing, protocol, {
135
+ force: Boolean(options.force),
136
+ });
137
+ const shouldWrite = !options.check && !options["dry-run"] && !result.drift && result.changed;
138
+ if (shouldWrite) {
139
+ await writeFile(filePath, result.content);
140
+ }
141
+ if (options.json) {
142
+ io.log(JSON.stringify(result, null, 2));
143
+ return;
144
+ }
145
+ if (result.drift) {
146
+ io.log("Drift detected for subagent protocol block");
147
+ return;
148
+ }
149
+ io.log(result.changed
150
+ ? "Subagent protocol block changed"
151
+ : "Subagent protocol block unchanged");
152
+ }
153
+ function parseSkillRenderTarget(value) {
154
+ return parseRuntimeTarget(value);
155
+ }
156
+ //# sourceMappingURL=runtime-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-commands.js","sourceRoot":"","sources":["../src/runtime-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { RuntimeExecutionAdapter } from "./types.js";
2
+ export declare const runtimeExecutionAdapters: RuntimeExecutionAdapter[];
@@ -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,113 @@
1
+ import { renderMemoryPacket } from "./memory.js";
2
+ const DEFAULT_ALLOWED_COMMANDS = [
3
+ "npm run format",
4
+ "npm run build",
5
+ "npm run precommit",
6
+ ];
7
+ export function runtimeBriefContent(context, runtime) {
8
+ const task = context.task;
9
+ return [
10
+ `# Runtime Execution Brief: ${task.id}`,
11
+ "",
12
+ `- Runtime: ${runtime.label} (${runtime.id})`,
13
+ `- Owner role: ${task.ownerRole}`,
14
+ "- Mode: brief-only",
15
+ "- Direct provider API calls: forbidden",
16
+ "",
17
+ "## Goal",
18
+ task.goal ?? task.title,
19
+ "",
20
+ "## Scope",
21
+ task.scope ?? "Use the task paths and acceptance criteria as scope.",
22
+ "",
23
+ "## Paths",
24
+ ...listOrNone(task.paths),
25
+ "",
26
+ "## Acceptance Criteria",
27
+ ...listOrNone(task.acceptanceCriteria),
28
+ "",
29
+ "## Required Workflow",
30
+ "- Load Orchestra context before editing.",
31
+ "- Respect locks and file ownership.",
32
+ "- Make code changes locally in this workspace.",
33
+ "- Run focused tests first, then `npm run precommit` before handoff.",
34
+ "- Record evidence and handoff back to Orchestra.",
35
+ "- Use `orchestra commands manifest --json` for supported commands and flags.",
36
+ "",
37
+ "## Selected Skills",
38
+ ...skillLines(context),
39
+ "",
40
+ renderMemoryPacket(context.memory),
41
+ "",
42
+ "## Active Locks",
43
+ ...lockLines(context),
44
+ "",
45
+ "## Delegation Decision",
46
+ ...delegationLines(context),
47
+ "",
48
+ "## Runtime Guidance",
49
+ runtime.guidance,
50
+ ].join("\n");
51
+ }
52
+ export function runtimeDelegationContent({ context, runtime, assignments, mode, allowDirectProviderApi, }) {
53
+ return [
54
+ `# Runtime Subagent Delegation Packet: ${context.task.id}`,
55
+ "",
56
+ `- Runtime: ${runtime.label} (${runtime.id})`,
57
+ `- Delegation mode: ${mode}`,
58
+ `- Runtime-native subagents supported: ${runtime.subagents.runtimeNative}`,
59
+ `- Direct provider API calls allowed: ${allowDirectProviderApi}`,
60
+ "",
61
+ "## Parent Task",
62
+ context.task.goal ?? context.task.title,
63
+ "",
64
+ "## Subagent Assignments",
65
+ ...assignments.flatMap((assignment) => [
66
+ `### ${assignment.role}`,
67
+ `- Ownership paths: ${assignment.paths.join(", ") || "none declared"}`,
68
+ `- Allowed commands: ${assignment.allowedCommands.join(", ")}`,
69
+ `- Expected artifacts: ${assignment.expectedArtifacts.join(", ")}`,
70
+ "- Handoff must include touched files, evidence, risks, and remaining work.",
71
+ "",
72
+ ]),
73
+ "## Guardrails",
74
+ "- Do not call OpenAI, Anthropic, or other vendor APIs from Orchestra for this delegation.",
75
+ "- Use the active runtime's own authenticated agent/subagent mechanism.",
76
+ "- If runtime-native delegation is unsupported, stop at this packet and ask the user for approval.",
77
+ "- Avoid overlapping writes; respect ownership paths and active locks.",
78
+ "- Use `orchestra commands manifest --json` for supported commands and flags.",
79
+ ].join("\n");
80
+ }
81
+ export function delegationAssignment(role, task) {
82
+ return {
83
+ role,
84
+ paths: task.paths ?? [],
85
+ allowedCommands: DEFAULT_ALLOWED_COMMANDS,
86
+ expectedArtifacts: ["code diff", "test evidence", "handoff notes"],
87
+ };
88
+ }
89
+ function listOrNone(items) {
90
+ if (!items || items.length === 0)
91
+ return ["- none declared"];
92
+ return items.map((item) => `- ${item}`);
93
+ }
94
+ function skillLines(context) {
95
+ if (context.skills.selected.length === 0)
96
+ return ["- none selected"];
97
+ return context.skills.selected.map((item) => `- ${item.skill.id}: ${item.rationale.join("; ")}`);
98
+ }
99
+ function lockLines(context) {
100
+ if (context.locks.length === 0)
101
+ return ["- none active"];
102
+ return context.locks.map((lock) => `- ${lock.id}: ${lock.path} owned by ${lock.ownerRole} for ${lock.taskId}`);
103
+ }
104
+ function delegationLines(context) {
105
+ if (!context.delegation)
106
+ return ["- no recorded delegation decision"];
107
+ return [
108
+ `- Recommendation: ${context.delegation.recommendation}`,
109
+ `- Disjoint write scopes: ${context.delegation.disjointWriteScopes}`,
110
+ ...context.delegation.delegates.map((delegate) => `- ${delegate.role}: ${delegate.mode} over ${delegate.writeScopes.join(", ") || "no declared scope"}`),
111
+ ];
112
+ }
113
+ //# 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,153 @@
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
+ memory: {
44
+ hook: context.memory.hook,
45
+ estimatedTokens: context.memory.estimatedTokens,
46
+ lessonCount: context.memory.lessons.length,
47
+ promptCount: context.memory.prompts.length,
48
+ },
49
+ },
50
+ });
51
+ return {
52
+ taskId,
53
+ runtime: selected.runtime.id,
54
+ artifact,
55
+ content,
56
+ mode: "brief-only",
57
+ directProviderApiAllowed: false,
58
+ };
59
+ }
60
+ export async function renderRuntimeDelegationPacket({ taskId, runtime, roles, root = process.cwd(), }) {
61
+ const context = await getTaskContext(taskId, root);
62
+ const runtimeOption = runtime ? { runtime } : {};
63
+ const selected = await selectRuntimeExecutionAdapter({
64
+ taskId,
65
+ role: context.task.ownerRole,
66
+ root,
67
+ ...runtimeOption,
68
+ });
69
+ const config = await getWorkflowConfig(root);
70
+ const policy = normalizedRuntimePolicy(config.runtimePolicy);
71
+ const assignments = roles.map((role) => delegationAssignment(role, context.task));
72
+ const mode = selected.runtime.subagents.runtimeNative
73
+ ? policy.delegation.mode
74
+ : "brief-only";
75
+ const content = runtimeDelegationContent({
76
+ context,
77
+ runtime: selected.runtime,
78
+ assignments,
79
+ mode,
80
+ allowDirectProviderApi: policy.delegation.allowDirectProviderApi,
81
+ });
82
+ const artifact = await writeArtifact(root, "runs", `${taskId}-runtime-${selected.runtime.id}-delegation.md`, content);
83
+ await appendEvent(root, {
84
+ type: "RUNTIME_DELEGATION_PACKET_RENDERED",
85
+ taskId,
86
+ actor: "parent",
87
+ summary: `Runtime delegation packet rendered: ${selected.runtime.id}`,
88
+ artifacts: [artifact],
89
+ metadata: {
90
+ runtime: selected.runtime.id,
91
+ mode,
92
+ roles,
93
+ directProviderApiAllowed: false,
94
+ runtimeNativeSupported: selected.runtime.subagents.runtimeNative,
95
+ },
96
+ });
97
+ return {
98
+ taskId,
99
+ runtime: selected.runtime.id,
100
+ artifact,
101
+ content,
102
+ mode,
103
+ directProviderApiAllowed: false,
104
+ assignments,
105
+ requiresApproval: !selected.runtime.subagents.runtimeNative,
106
+ };
107
+ }
108
+ export async function recordRuntimeHandoff({ taskId, runtime, artifact, summary, sessionId, root = process.cwd(), }) {
109
+ const runtimeId = parseRuntimeExecutionId(runtime);
110
+ if (artifact)
111
+ assertWorkflowArtifactPath(artifact);
112
+ return appendEvent(root, {
113
+ type: "RUNTIME_EXECUTION_HANDOFF_RECORDED",
114
+ taskId,
115
+ actor: "parent",
116
+ summary: summary ?? `Runtime execution handoff recorded: ${runtimeId}`,
117
+ artifacts: artifact ? [artifact] : [],
118
+ metadata: {
119
+ runtime: runtimeId,
120
+ ...(sessionId ? { sessionId } : {}),
121
+ directProviderApiAllowed: false,
122
+ },
123
+ });
124
+ }
125
+ function selection(taskId, role, runtimeId, source) {
126
+ return {
127
+ taskId,
128
+ role,
129
+ runtime: getRuntimeExecutionAdapter(runtimeId),
130
+ source,
131
+ directProviderApiAllowed: false,
132
+ };
133
+ }
134
+ function normalizedRuntimePolicy(policy) {
135
+ return {
136
+ defaults: policy?.defaults ?? { executor: "generic-runtime" },
137
+ byRole: policy?.byRole ?? {},
138
+ byTask: policy?.byTask ?? {},
139
+ delegation: {
140
+ mode: policy?.delegation?.mode ?? "runtime-native",
141
+ allowDirectProviderApi: policy?.delegation?.allowDirectProviderApi ?? false,
142
+ },
143
+ };
144
+ }
145
+ function assertWorkflowArtifactPath(artifact) {
146
+ const normalized = path.normalize(artifact);
147
+ if (normalized.startsWith("..") ||
148
+ path.isAbsolute(normalized) ||
149
+ !normalized.startsWith(".agent-workflow")) {
150
+ throw new Error("runtime artifact must be workspace workflow-local");
151
+ }
152
+ }
153
+ //# 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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"}