@geminilight/mindos 1.1.8 → 1.1.10
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/dist/agent/agent-run-context.d.ts +8 -0
- package/dist/agent/agent-run-context.d.ts.map +1 -0
- package/dist/agent/agent-run-context.js +9 -0
- package/dist/agent/agent-run-context.js.map +1 -0
- package/dist/agent/capability-registry.d.ts +60 -0
- package/dist/agent/capability-registry.d.ts.map +1 -0
- package/dist/agent/capability-registry.js +323 -0
- package/dist/agent/capability-registry.js.map +1 -0
- package/dist/agent/file-write-lock.d.ts +22 -0
- package/dist/agent/file-write-lock.d.ts.map +1 -0
- package/dist/agent/file-write-lock.js +86 -0
- package/dist/agent/file-write-lock.js.map +1 -0
- package/dist/agent/global-state.d.ts +109 -0
- package/dist/agent/global-state.d.ts.map +1 -0
- package/dist/agent/global-state.js +118 -0
- package/dist/agent/global-state.js.map +1 -0
- package/dist/agent/index.d.ts +17 -0
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +17 -0
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/kb-extension.d.ts +38 -0
- package/dist/agent/kb-extension.d.ts.map +1 -0
- package/dist/agent/kb-extension.js +140 -0
- package/dist/agent/kb-extension.js.map +1 -0
- package/dist/agent/kb-tools.d.ts +158 -0
- package/dist/agent/kb-tools.d.ts.map +1 -0
- package/dist/agent/kb-tools.js +707 -0
- package/dist/agent/kb-tools.js.map +1 -0
- package/dist/agent/line-diff.d.ts +13 -0
- package/dist/agent/line-diff.d.ts.map +1 -0
- package/dist/agent/line-diff.js +66 -0
- package/dist/agent/line-diff.js.map +1 -0
- package/dist/agent/paragraph-extract.d.ts +25 -0
- package/dist/agent/paragraph-extract.d.ts.map +1 -0
- package/dist/agent/paragraph-extract.js +106 -0
- package/dist/agent/paragraph-extract.js.map +1 -0
- package/dist/agent/permission-policy.d.ts +37 -0
- package/dist/agent/permission-policy.d.ts.map +1 -0
- package/dist/agent/permission-policy.js +153 -0
- package/dist/agent/permission-policy.js.map +1 -0
- package/dist/agent/redaction.d.ts +3 -0
- package/dist/agent/redaction.d.ts.map +1 -0
- package/dist/agent/redaction.js +52 -0
- package/dist/agent/redaction.js.map +1 -0
- package/dist/agent/result-reducer.d.ts +36 -0
- package/dist/agent/result-reducer.d.ts.map +1 -0
- package/dist/agent/result-reducer.js +101 -0
- package/dist/agent/result-reducer.js.map +1 -0
- package/dist/agent/run-cancellation.d.ts +13 -0
- package/dist/agent/run-cancellation.d.ts.map +1 -0
- package/dist/agent/run-cancellation.js +97 -0
- package/dist/agent/run-cancellation.js.map +1 -0
- package/dist/agent/run-ledger-types.d.ts +197 -0
- package/dist/agent/run-ledger-types.d.ts.map +1 -0
- package/dist/agent/run-ledger-types.js +9 -0
- package/dist/agent/run-ledger-types.js.map +1 -0
- package/dist/agent/run-ledger.d.ts +44 -0
- package/dist/agent/run-ledger.d.ts.map +1 -0
- package/dist/agent/run-ledger.js +814 -0
- package/dist/agent/run-ledger.js.map +1 -0
- package/dist/agent/run-timeline-events.d.ts +3 -0
- package/dist/agent/run-timeline-events.d.ts.map +1 -0
- package/dist/agent/run-timeline-events.js +239 -0
- package/dist/agent/run-timeline-events.js.map +1 -0
- package/dist/agent/runtime-permission-bridge.d.ts +34 -0
- package/dist/agent/runtime-permission-bridge.d.ts.map +1 -0
- package/dist/agent/runtime-permission-bridge.js +284 -0
- package/dist/agent/runtime-permission-bridge.js.map +1 -0
- package/dist/agent/stream-consumer.d.ts +65 -0
- package/dist/agent/stream-consumer.d.ts.map +1 -0
- package/dist/agent/stream-consumer.js +664 -0
- package/dist/agent/stream-consumer.js.map +1 -0
- package/dist/agent/stream-message-types.d.ts +138 -0
- package/dist/agent/stream-message-types.d.ts.map +1 -0
- package/dist/agent/stream-message-types.js +14 -0
- package/dist/agent/stream-message-types.js.map +1 -0
- package/dist/agent/subagent-ledger-extension.d.ts +22 -0
- package/dist/agent/subagent-ledger-extension.d.ts.map +1 -0
- package/dist/agent/subagent-ledger-extension.js +533 -0
- package/dist/agent/subagent-ledger-extension.js.map +1 -0
- package/dist/agent/subagent-orchestrator.d.ts +62 -0
- package/dist/agent/subagent-orchestrator.d.ts.map +1 -0
- package/dist/agent/subagent-orchestrator.js +350 -0
- package/dist/agent/subagent-orchestrator.js.map +1 -0
- package/dist/agent/user-question-bridge.d.ts +90 -0
- package/dist/agent/user-question-bridge.d.ts.map +1 -0
- package/dist/agent/user-question-bridge.js +260 -0
- package/dist/agent/user-question-bridge.js.map +1 -0
- package/dist/agent-runtime/capabilities.d.ts +10 -0
- package/dist/agent-runtime/capabilities.d.ts.map +1 -0
- package/dist/agent-runtime/capabilities.js +100 -0
- package/dist/agent-runtime/capabilities.js.map +1 -0
- package/dist/agent-runtime/child-process.d.ts +21 -0
- package/dist/agent-runtime/child-process.d.ts.map +1 -0
- package/dist/agent-runtime/child-process.js +29 -0
- package/dist/agent-runtime/child-process.js.map +1 -0
- package/dist/agent-runtime/claude-code-cli.d.ts.map +1 -1
- package/dist/agent-runtime/claude-code-cli.js +31 -4
- package/dist/agent-runtime/claude-code-cli.js.map +1 -1
- package/dist/agent-runtime/claude-code-sdk.d.ts.map +1 -1
- package/dist/agent-runtime/claude-code-sdk.js +22 -5
- package/dist/agent-runtime/claude-code-sdk.js.map +1 -1
- package/dist/agent-runtime/codex-app-server.d.ts.map +1 -1
- package/dist/agent-runtime/codex-app-server.js +27 -3
- package/dist/agent-runtime/codex-app-server.js.map +1 -1
- package/dist/agent-runtime/codex-env.d.ts +2 -1
- package/dist/agent-runtime/codex-env.d.ts.map +1 -1
- package/dist/agent-runtime/codex-env.js +14 -2
- package/dist/agent-runtime/codex-env.js.map +1 -1
- package/dist/agent-runtime/descriptors.d.ts +19 -0
- package/dist/agent-runtime/descriptors.d.ts.map +1 -0
- package/dist/agent-runtime/descriptors.js +143 -0
- package/dist/agent-runtime/descriptors.js.map +1 -0
- package/dist/agent-runtime/detection.d.ts +15 -0
- package/dist/agent-runtime/detection.d.ts.map +1 -0
- package/dist/agent-runtime/detection.js +124 -0
- package/dist/agent-runtime/detection.js.map +1 -0
- package/dist/agent-runtime/index.d.ts +2 -0
- package/dist/agent-runtime/index.d.ts.map +1 -1
- package/dist/agent-runtime/index.js +2 -0
- package/dist/agent-runtime/index.js.map +1 -1
- package/dist/agent-runtime/registry.d.ts +152 -0
- package/dist/agent-runtime/registry.d.ts.map +1 -0
- package/dist/agent-runtime/registry.js +84 -0
- package/dist/agent-runtime/registry.js.map +1 -0
- package/dist/agent-runtime/run.d.ts +12 -0
- package/dist/agent-runtime/run.d.ts.map +1 -1
- package/dist/agent-runtime/run.js +16 -1
- package/dist/agent-runtime/run.js.map +1 -1
- package/dist/foundation/config/schema.d.ts +1 -1
- package/dist/foundation/mind-root/index.d.ts +5 -0
- package/dist/foundation/mind-root/index.d.ts.map +1 -0
- package/dist/foundation/mind-root/index.js +67 -0
- package/dist/foundation/mind-root/index.js.map +1 -0
- package/dist/foundation/native-import.d.ts +22 -0
- package/dist/foundation/native-import.d.ts.map +1 -0
- package/dist/foundation/native-import.js +22 -0
- package/dist/foundation/native-import.js.map +1 -0
- package/dist/foundation.d.ts +1 -0
- package/dist/foundation.d.ts.map +1 -1
- package/dist/foundation.js +1 -0
- package/dist/foundation.js.map +1 -1
- package/dist/protocols/mcp-server/index.cjs +24 -23
- package/dist/protocols/mcp-server/index.js +45 -0
- package/dist/protocols/mcp-server/index.js.map +1 -1
- package/dist/server/contract.d.ts.map +1 -1
- package/dist/server/contract.js +1 -0
- package/dist/server/contract.js.map +1 -1
- package/dist/server/handlers/agent-runtimes.d.ts +3 -125
- package/dist/server/handlers/agent-runtimes.d.ts.map +1 -1
- package/dist/server/handlers/agent-runtimes.js +6 -414
- package/dist/server/handlers/agent-runtimes.js.map +1 -1
- package/dist/server/handlers/assistants.d.ts.map +1 -1
- package/dist/server/handlers/assistants.js +1 -0
- package/dist/server/handlers/assistants.js.map +1 -1
- package/dist/server/handlers/mcp-agents.d.ts +8 -0
- package/dist/server/handlers/mcp-agents.d.ts.map +1 -1
- package/dist/server/handlers/mcp-agents.js +39 -0
- package/dist/server/handlers/mcp-agents.js.map +1 -1
- package/dist/server/handlers/mcp-install.d.ts +0 -6
- package/dist/server/handlers/mcp-install.d.ts.map +1 -1
- package/dist/server/handlers/mcp-install.js +1 -31
- package/dist/server/handlers/mcp-install.js.map +1 -1
- package/dist/server/handlers/skill-links.d.ts +130 -0
- package/dist/server/handlers/skill-links.d.ts.map +1 -0
- package/dist/server/handlers/skill-links.js +534 -0
- package/dist/server/handlers/skill-links.js.map +1 -0
- package/dist/server/handlers/skills.d.ts +12 -1
- package/dist/server/handlers/skills.d.ts.map +1 -1
- package/dist/server/handlers/skills.js +48 -5
- package/dist/server/handlers/skills.js.map +1 -1
- package/dist/server/http.d.ts.map +1 -1
- package/dist/server/http.js +16 -3
- package/dist/server/http.js.map +1 -1
- package/dist/server/index.d.ts +3 -2
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +3 -2
- package/dist/server/index.js.map +1 -1
- package/dist/server/route-ownership.d.ts.map +1 -1
- package/dist/server/route-ownership.js +3 -0
- package/dist/server/route-ownership.js.map +1 -1
- package/dist/server/runtime.d.ts.map +1 -1
- package/dist/server/runtime.js +8 -4
- package/dist/server/runtime.js.map +1 -1
- package/dist/session/index.d.ts +43 -2
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +42 -5
- package/dist/session/index.js.map +1 -1
- package/dist/session/pi-coding-agent-runtime.d.ts +4 -2
- package/dist/session/pi-coding-agent-runtime.d.ts.map +1 -1
- package/dist/session/pi-coding-agent-runtime.js +18 -11
- package/dist/session/pi-coding-agent-runtime.js.map +1 -1
- package/package.json +15 -9
|
@@ -0,0 +1,533 @@
|
|
|
1
|
+
// Sunk from packages/web/lib/agent/subagent-ledger-extension.ts (Wave 4,
|
|
2
|
+
// spec-agent-core-consolidation).
|
|
3
|
+
//
|
|
4
|
+
// Wraps the upstream pi-subagents `subagent` tool so every invocation is
|
|
5
|
+
// recorded in the agent run ledger: child runs, progress events, async
|
|
6
|
+
// (detached) completions, cancellation links, and MindOS-orchestrated
|
|
7
|
+
// dependency plans (delegated to subagent-orchestrator). Loading the
|
|
8
|
+
// upstream extension itself is host-install specific (the web host resolves
|
|
9
|
+
// `pi-subagents` from its node_modules via jiti), so hosts inject a loader
|
|
10
|
+
// into createMindosSubagentLedgerExtension() and keep a real extension entry
|
|
11
|
+
// file — the pi DefaultResourceLoader loads extensions by file path.
|
|
12
|
+
//
|
|
13
|
+
// Cross-module-graph state (the early-async-completion buffer and the event
|
|
14
|
+
// unsubscribe handle) lives behind Symbol.for keys in global-state.ts: the
|
|
15
|
+
// loader imports the host entry in its own module graph, so module-level
|
|
16
|
+
// state here would fork between copies.
|
|
17
|
+
import { appendAgentRunEvent, completeAgentRun, failAgentRun, listAgentRuns, startAgentRun, updateAgentRun, } from './run-ledger.js';
|
|
18
|
+
import { runWithAgentRunContext } from './agent-run-context.js';
|
|
19
|
+
import { abortErrorFromSignal, isAbortLikeError, linkAbortSignalToAgentRun, registerAgentRunCancelHandler, } from './run-cancellation.js';
|
|
20
|
+
import { createMindosAgentPermissionPolicyFromContext } from './permission-policy.js';
|
|
21
|
+
import { executeSubagentOrchestrationPlan, } from './subagent-orchestrator.js';
|
|
22
|
+
import { getProcessGlobal, SUBAGENT_EARLY_ASYNC_COMPLETIONS_KEY, SUBAGENT_LEDGER_EVENT_UNSUBSCRIBE_KEY, } from './global-state.js';
|
|
23
|
+
const SUBAGENT_ASYNC_COMPLETE_EVENT = 'subagent:async-complete';
|
|
24
|
+
function safeStringify(value) {
|
|
25
|
+
if (typeof value === 'string')
|
|
26
|
+
return value;
|
|
27
|
+
if (value == null)
|
|
28
|
+
return '';
|
|
29
|
+
try {
|
|
30
|
+
return JSON.stringify(value);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return String(value);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function outputSummary(result) {
|
|
37
|
+
if (typeof result === 'string')
|
|
38
|
+
return result;
|
|
39
|
+
if (result && typeof result === 'object') {
|
|
40
|
+
const content = result.content;
|
|
41
|
+
if (Array.isArray(content)) {
|
|
42
|
+
const text = content
|
|
43
|
+
.map((item) => {
|
|
44
|
+
if (typeof item === 'string')
|
|
45
|
+
return item;
|
|
46
|
+
if (item && typeof item === 'object' && typeof item.text === 'string') {
|
|
47
|
+
return item.text;
|
|
48
|
+
}
|
|
49
|
+
return '';
|
|
50
|
+
})
|
|
51
|
+
.filter(Boolean)
|
|
52
|
+
.join('\n');
|
|
53
|
+
if (text.trim())
|
|
54
|
+
return text;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return safeStringify(result);
|
|
58
|
+
}
|
|
59
|
+
function hasAsyncStartDetails(result) {
|
|
60
|
+
if (!result || typeof result !== 'object')
|
|
61
|
+
return false;
|
|
62
|
+
const details = result.details;
|
|
63
|
+
if (!details || typeof details !== 'object')
|
|
64
|
+
return false;
|
|
65
|
+
const record = details;
|
|
66
|
+
return typeof record.asyncId === 'string' && Boolean(record.asyncId);
|
|
67
|
+
}
|
|
68
|
+
function resultIsError(result) {
|
|
69
|
+
return Boolean(result && typeof result === 'object' && result.isError);
|
|
70
|
+
}
|
|
71
|
+
function appendSubagentProgressEvent(runId, update) {
|
|
72
|
+
const summary = outputSummary(update).trim();
|
|
73
|
+
const error = resultIsError(update);
|
|
74
|
+
if (!summary && !error)
|
|
75
|
+
return;
|
|
76
|
+
try {
|
|
77
|
+
appendAgentRunEvent(runId, error ? {
|
|
78
|
+
type: 'error',
|
|
79
|
+
category: 'error',
|
|
80
|
+
title: 'Subagent error',
|
|
81
|
+
message: summary || 'Subagent progress update reported an error.',
|
|
82
|
+
data: {
|
|
83
|
+
kind: 'error',
|
|
84
|
+
message: summary || 'Subagent progress update reported an error.',
|
|
85
|
+
},
|
|
86
|
+
metadata: resultMetadata(update),
|
|
87
|
+
} : {
|
|
88
|
+
type: 'text',
|
|
89
|
+
category: 'text',
|
|
90
|
+
title: 'Subagent update',
|
|
91
|
+
message: summary,
|
|
92
|
+
data: {
|
|
93
|
+
kind: 'text',
|
|
94
|
+
text: summary,
|
|
95
|
+
channel: 'assistant',
|
|
96
|
+
},
|
|
97
|
+
metadata: resultMetadata(update),
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
// Timeline forwarding is best-effort and must not affect upstream subagent execution.
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
function onUpdateWithLedger(runId, onUpdate) {
|
|
105
|
+
return (update) => {
|
|
106
|
+
appendSubagentProgressEvent(runId, update);
|
|
107
|
+
if (typeof onUpdate === 'function') {
|
|
108
|
+
return onUpdate(update);
|
|
109
|
+
}
|
|
110
|
+
return undefined;
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
function resultMetadata(result) {
|
|
114
|
+
if (!result || typeof result !== 'object')
|
|
115
|
+
return {};
|
|
116
|
+
const details = result.details;
|
|
117
|
+
if (!details || typeof details !== 'object')
|
|
118
|
+
return {};
|
|
119
|
+
const record = details;
|
|
120
|
+
return {
|
|
121
|
+
...(typeof record.runId === 'string' ? { upstreamRunId: record.runId } : {}),
|
|
122
|
+
...(typeof record.asyncId === 'string' ? { asyncId: record.asyncId } : {}),
|
|
123
|
+
...(typeof record.asyncDir === 'string' ? { asyncDir: record.asyncDir } : {}),
|
|
124
|
+
...(typeof record.mode === 'string' ? { mode: record.mode } : {}),
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
function textFromAsyncCompletePayload(payload) {
|
|
128
|
+
if (!payload || typeof payload !== 'object')
|
|
129
|
+
return safeStringify(payload);
|
|
130
|
+
const record = payload;
|
|
131
|
+
if (typeof record.summary === 'string')
|
|
132
|
+
return record.summary;
|
|
133
|
+
if (typeof record.resultPreview === 'string')
|
|
134
|
+
return record.resultPreview;
|
|
135
|
+
if (Array.isArray(record.results)) {
|
|
136
|
+
const text = record.results
|
|
137
|
+
.map((item) => {
|
|
138
|
+
if (!item || typeof item !== 'object')
|
|
139
|
+
return '';
|
|
140
|
+
const child = item;
|
|
141
|
+
if (typeof child.summary === 'string')
|
|
142
|
+
return child.summary;
|
|
143
|
+
if (typeof child.output === 'string')
|
|
144
|
+
return child.output;
|
|
145
|
+
if (typeof child.text === 'string')
|
|
146
|
+
return child.text;
|
|
147
|
+
return '';
|
|
148
|
+
})
|
|
149
|
+
.filter(Boolean)
|
|
150
|
+
.join('\n');
|
|
151
|
+
if (text.trim())
|
|
152
|
+
return text;
|
|
153
|
+
}
|
|
154
|
+
return safeStringify(payload);
|
|
155
|
+
}
|
|
156
|
+
function statusFromAsyncCompletePayload(payload) {
|
|
157
|
+
if (!payload || typeof payload !== 'object')
|
|
158
|
+
return 'completed';
|
|
159
|
+
const record = payload;
|
|
160
|
+
const state = record.state ?? record.status;
|
|
161
|
+
if (state === 'failed' || state === 'error')
|
|
162
|
+
return 'failed';
|
|
163
|
+
if (state === 'timed-out' || state === 'timed_out')
|
|
164
|
+
return 'timed_out';
|
|
165
|
+
if (state === 'canceled' || state === 'cancelled')
|
|
166
|
+
return 'canceled';
|
|
167
|
+
if (Array.isArray(record.results) && record.results.some((item) => {
|
|
168
|
+
if (!item || typeof item !== 'object')
|
|
169
|
+
return false;
|
|
170
|
+
const status = item.status;
|
|
171
|
+
return status === 'failed' || status === 'timed-out' || status === 'timed_out';
|
|
172
|
+
}))
|
|
173
|
+
return 'failed';
|
|
174
|
+
return 'completed';
|
|
175
|
+
}
|
|
176
|
+
function asyncIdFromPayload(payload) {
|
|
177
|
+
if (!payload || typeof payload !== 'object')
|
|
178
|
+
return undefined;
|
|
179
|
+
const record = payload;
|
|
180
|
+
for (const key of ['id', 'asyncId', 'runId']) {
|
|
181
|
+
if (typeof record[key] === 'string' && record[key])
|
|
182
|
+
return record[key];
|
|
183
|
+
}
|
|
184
|
+
return undefined;
|
|
185
|
+
}
|
|
186
|
+
export function finalizeSubagentAsyncRunFromEvent(payload) {
|
|
187
|
+
const asyncId = asyncIdFromPayload(payload);
|
|
188
|
+
if (!asyncId)
|
|
189
|
+
return false;
|
|
190
|
+
const run = listAgentRuns({ kind: 'pi-subagent', limit: 500 })
|
|
191
|
+
.find((candidate) => candidate.status === 'streaming' && candidate.metadata?.asyncId === asyncId);
|
|
192
|
+
if (!run) {
|
|
193
|
+
// A fast async run can complete before the tool wrapper has stored the
|
|
194
|
+
// asyncId on the ledger record. Buffer the payload so the wrapper can
|
|
195
|
+
// finalize the run as soon as it registers it.
|
|
196
|
+
bufferEarlyAsyncCompletion(asyncId, payload);
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
applyAsyncCompletion(run.id, asyncId, payload);
|
|
200
|
+
return true;
|
|
201
|
+
}
|
|
202
|
+
function applyAsyncCompletion(runId, asyncId, payload) {
|
|
203
|
+
const status = statusFromAsyncCompletePayload(payload);
|
|
204
|
+
const output = textFromAsyncCompletePayload(payload);
|
|
205
|
+
const metadata = { asyncId, asyncComplete: true };
|
|
206
|
+
if (status === 'completed') {
|
|
207
|
+
completeAgentRun(runId, { outputSummary: output, metadata });
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
failAgentRun(runId, { status, error: output || `Subagent async run ${status}.`, metadata });
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
const MAX_BUFFERED_ASYNC_COMPLETIONS = 100;
|
|
214
|
+
function getEarlyAsyncCompletions() {
|
|
215
|
+
return getProcessGlobal(SUBAGENT_EARLY_ASYNC_COMPLETIONS_KEY, () => new Map());
|
|
216
|
+
}
|
|
217
|
+
function bufferEarlyAsyncCompletion(asyncId, payload) {
|
|
218
|
+
const buffered = getEarlyAsyncCompletions();
|
|
219
|
+
buffered.delete(asyncId);
|
|
220
|
+
buffered.set(asyncId, payload);
|
|
221
|
+
while (buffered.size > MAX_BUFFERED_ASYNC_COMPLETIONS) {
|
|
222
|
+
const oldest = buffered.keys().next().value;
|
|
223
|
+
if (oldest === undefined)
|
|
224
|
+
break;
|
|
225
|
+
buffered.delete(oldest);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
function takeEarlyAsyncCompletion(asyncId) {
|
|
229
|
+
const buffered = getEarlyAsyncCompletions();
|
|
230
|
+
if (!buffered.has(asyncId))
|
|
231
|
+
return null;
|
|
232
|
+
const payload = buffered.get(asyncId);
|
|
233
|
+
buffered.delete(asyncId);
|
|
234
|
+
return { payload };
|
|
235
|
+
}
|
|
236
|
+
function subagentDisplayName(params) {
|
|
237
|
+
if (!params || typeof params !== 'object')
|
|
238
|
+
return 'Subagent';
|
|
239
|
+
const input = params;
|
|
240
|
+
if (typeof input.action === 'string' && input.action)
|
|
241
|
+
return `Subagent ${input.action}`;
|
|
242
|
+
if (typeof input.agent === 'string' && input.agent)
|
|
243
|
+
return input.agent;
|
|
244
|
+
if (Array.isArray(input.tasks))
|
|
245
|
+
return `Parallel subagents (${input.tasks.length})`;
|
|
246
|
+
if (Array.isArray(input.chain))
|
|
247
|
+
return `Subagent chain (${input.chain.length})`;
|
|
248
|
+
return 'Subagent';
|
|
249
|
+
}
|
|
250
|
+
function subagentRuntimeId(params) {
|
|
251
|
+
if (!params || typeof params !== 'object')
|
|
252
|
+
return 'subagent';
|
|
253
|
+
const input = params;
|
|
254
|
+
if (typeof input.agent === 'string' && input.agent)
|
|
255
|
+
return input.agent;
|
|
256
|
+
if (typeof input.action === 'string' && input.action)
|
|
257
|
+
return `subagent:${input.action}`;
|
|
258
|
+
if (Array.isArray(input.tasks))
|
|
259
|
+
return 'subagent:parallel';
|
|
260
|
+
if (Array.isArray(input.chain))
|
|
261
|
+
return 'subagent:chain';
|
|
262
|
+
return 'subagent';
|
|
263
|
+
}
|
|
264
|
+
function subagentCwd(params, ctx) {
|
|
265
|
+
if (params && typeof params === 'object') {
|
|
266
|
+
const input = params;
|
|
267
|
+
if (typeof input.cwd === 'string' && input.cwd.trim())
|
|
268
|
+
return input.cwd;
|
|
269
|
+
}
|
|
270
|
+
return typeof ctx?.cwd === 'string' && ctx.cwd.trim() ? ctx.cwd : undefined;
|
|
271
|
+
}
|
|
272
|
+
function subagentPermissionMode(ctx) {
|
|
273
|
+
return createMindosAgentPermissionPolicyFromContext(ctx, 'agent').permissionMode;
|
|
274
|
+
}
|
|
275
|
+
function isRecord(value) {
|
|
276
|
+
return Boolean(value && typeof value === 'object' && !Array.isArray(value));
|
|
277
|
+
}
|
|
278
|
+
function positiveNumber(value) {
|
|
279
|
+
return typeof value === 'number' && Number.isFinite(value) && value > 0 ? Math.floor(value) : undefined;
|
|
280
|
+
}
|
|
281
|
+
function stringArray(value) {
|
|
282
|
+
if (!Array.isArray(value))
|
|
283
|
+
return [];
|
|
284
|
+
return value.filter((item) => typeof item === 'string' && item.trim().length > 0);
|
|
285
|
+
}
|
|
286
|
+
function subtaskFromInput(item, index, fallbackCwd) {
|
|
287
|
+
if (!isRecord(item))
|
|
288
|
+
return null;
|
|
289
|
+
const agent = typeof item.agent === 'string' ? item.agent.trim() : '';
|
|
290
|
+
const task = typeof item.task === 'string' ? item.task.trim() : '';
|
|
291
|
+
if (!agent || !task)
|
|
292
|
+
return null;
|
|
293
|
+
const id = typeof item.id === 'string' && item.id.trim() ? item.id.trim() : `task-${index + 1}`;
|
|
294
|
+
const dependencies = [
|
|
295
|
+
...stringArray(item.dependencies),
|
|
296
|
+
...stringArray(item.dependsOn),
|
|
297
|
+
];
|
|
298
|
+
const timeoutMs = positiveNumber(item.timeoutMs ?? item.maxRuntimeMs);
|
|
299
|
+
const contextBudget = positiveNumber(item.contextBudget);
|
|
300
|
+
return {
|
|
301
|
+
id,
|
|
302
|
+
agent,
|
|
303
|
+
task,
|
|
304
|
+
...(dependencies.length > 0 ? { dependencies } : {}),
|
|
305
|
+
...(typeof item.cwd === 'string' && item.cwd.trim() ? { cwd: item.cwd } : fallbackCwd ? { cwd: fallbackCwd } : {}),
|
|
306
|
+
...(timeoutMs ? { timeoutMs } : {}),
|
|
307
|
+
...(contextBudget ? { contextBudget } : {}),
|
|
308
|
+
metadata: {
|
|
309
|
+
...(typeof item.label === 'string' ? { label: item.label } : {}),
|
|
310
|
+
...(typeof item.phase === 'string' ? { phase: item.phase } : {}),
|
|
311
|
+
},
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
function chainSubtasksFromInput(items, fallbackCwd) {
|
|
315
|
+
const subtasks = [];
|
|
316
|
+
for (let index = 0; index < items.length; index += 1) {
|
|
317
|
+
const subtask = subtaskFromInput(items[index], index, fallbackCwd);
|
|
318
|
+
if (!subtask)
|
|
319
|
+
return null;
|
|
320
|
+
subtasks.push({
|
|
321
|
+
...subtask,
|
|
322
|
+
...(index > 0 ? { dependencies: [subtasks[index - 1].id] } : {}),
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
return subtasks;
|
|
326
|
+
}
|
|
327
|
+
function hasExplicitDependencies(items) {
|
|
328
|
+
return items.some((item) => isRecord(item) && (stringArray(item.dependencies).length > 0 || stringArray(item.dependsOn).length > 0));
|
|
329
|
+
}
|
|
330
|
+
function mindosOrchestrationPlanFromParams(params, ctx) {
|
|
331
|
+
if (!isRecord(params))
|
|
332
|
+
return null;
|
|
333
|
+
const fallbackCwd = subagentCwd(params, ctx);
|
|
334
|
+
const rawTasks = Array.isArray(params.subtasks)
|
|
335
|
+
? params.subtasks
|
|
336
|
+
: Array.isArray(params.tasks)
|
|
337
|
+
? params.tasks
|
|
338
|
+
: undefined;
|
|
339
|
+
const rawChain = Array.isArray(params.chain) ? params.chain : undefined;
|
|
340
|
+
const explicitMindosOrchestration = params.mindosOrchestration === true || params.orchestrator === 'mindos';
|
|
341
|
+
if (!explicitMindosOrchestration && (!rawTasks || !hasExplicitDependencies(rawTasks))) {
|
|
342
|
+
return null;
|
|
343
|
+
}
|
|
344
|
+
const tasks = rawTasks
|
|
345
|
+
? rawTasks.map((item, index) => subtaskFromInput(item, index, fallbackCwd))
|
|
346
|
+
: rawChain
|
|
347
|
+
? chainSubtasksFromInput(rawChain, fallbackCwd)
|
|
348
|
+
: null;
|
|
349
|
+
if (!tasks || tasks.some((task) => !task))
|
|
350
|
+
return null;
|
|
351
|
+
return {
|
|
352
|
+
displayName: `Subagent orchestration (${tasks.length})`,
|
|
353
|
+
cwd: fallbackCwd,
|
|
354
|
+
permissionMode: subagentPermissionMode(ctx),
|
|
355
|
+
timeoutMs: positiveNumber(params.timeoutMs ?? params.maxRuntimeMs),
|
|
356
|
+
contextBudget: positiveNumber(params.contextBudget),
|
|
357
|
+
tasks: tasks,
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
function subagentToolResultFromOrchestration(result) {
|
|
361
|
+
return {
|
|
362
|
+
content: [{ type: 'text', text: result.summary }],
|
|
363
|
+
isError: result.status !== 'completed',
|
|
364
|
+
details: {
|
|
365
|
+
mode: 'mindos-orchestration',
|
|
366
|
+
runId: result.parentRun.id,
|
|
367
|
+
status: result.status,
|
|
368
|
+
results: result.tasks.map((task) => ({
|
|
369
|
+
id: task.taskId,
|
|
370
|
+
agent: task.agent,
|
|
371
|
+
status: task.status,
|
|
372
|
+
output: task.outputSummary,
|
|
373
|
+
error: task.error,
|
|
374
|
+
runId: task.run.id,
|
|
375
|
+
})),
|
|
376
|
+
},
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
export function wrapSubagentToolForLedger(tool) {
|
|
380
|
+
return {
|
|
381
|
+
...tool,
|
|
382
|
+
async execute(toolCallId, params, signal, onUpdate, ctx) {
|
|
383
|
+
const orchestrationPlan = mindosOrchestrationPlanFromParams(params, ctx);
|
|
384
|
+
if (orchestrationPlan) {
|
|
385
|
+
const orchestrationResult = await executeSubagentOrchestrationPlan(orchestrationPlan, async (task, context) => {
|
|
386
|
+
const childParams = {
|
|
387
|
+
...(isRecord(params) ? params : {}),
|
|
388
|
+
agent: task.agent,
|
|
389
|
+
task: task.task,
|
|
390
|
+
cwd: task.cwd,
|
|
391
|
+
async: false,
|
|
392
|
+
tasks: undefined,
|
|
393
|
+
subtasks: undefined,
|
|
394
|
+
chain: undefined,
|
|
395
|
+
mindosOrchestration: undefined,
|
|
396
|
+
orchestrator: undefined,
|
|
397
|
+
...(task.timeoutMs ? { timeoutMs: task.timeoutMs } : {}),
|
|
398
|
+
};
|
|
399
|
+
const childResult = await tool.execute(`${toolCallId}:${task.id}`, childParams, context.signal, onUpdateWithLedger(context.run.id, onUpdate), ctx);
|
|
400
|
+
const summary = outputSummary(childResult);
|
|
401
|
+
if (resultIsError(childResult)) {
|
|
402
|
+
return {
|
|
403
|
+
status: 'failed',
|
|
404
|
+
outputSummary: summary,
|
|
405
|
+
error: summary || 'Subagent task failed.',
|
|
406
|
+
metadata: resultMetadata(childResult),
|
|
407
|
+
};
|
|
408
|
+
}
|
|
409
|
+
return {
|
|
410
|
+
outputSummary: summary,
|
|
411
|
+
metadata: resultMetadata(childResult),
|
|
412
|
+
};
|
|
413
|
+
}, { signal });
|
|
414
|
+
return subagentToolResultFromOrchestration(orchestrationResult);
|
|
415
|
+
}
|
|
416
|
+
const run = startAgentRun({
|
|
417
|
+
agentKind: 'pi-subagent',
|
|
418
|
+
runtimeId: subagentRuntimeId(params),
|
|
419
|
+
displayName: subagentDisplayName(params),
|
|
420
|
+
cwd: subagentCwd(params, ctx),
|
|
421
|
+
permissionMode: subagentPermissionMode(ctx),
|
|
422
|
+
inputSummary: safeStringify(params),
|
|
423
|
+
metadata: {
|
|
424
|
+
toolCallId,
|
|
425
|
+
source: 'pi-subagents',
|
|
426
|
+
},
|
|
427
|
+
});
|
|
428
|
+
const upstreamAbort = new AbortController();
|
|
429
|
+
const abortUpstream = (reason) => {
|
|
430
|
+
if (!upstreamAbort.signal.aborted)
|
|
431
|
+
upstreamAbort.abort(reason);
|
|
432
|
+
};
|
|
433
|
+
const handleParentAbort = () => abortUpstream(abortErrorFromSignal(signal, 'Subagent run was canceled.'));
|
|
434
|
+
if (signal?.aborted)
|
|
435
|
+
handleParentAbort();
|
|
436
|
+
signal?.addEventListener('abort', handleParentAbort, { once: true });
|
|
437
|
+
const unregisterCancelHandler = registerAgentRunCancelHandler(run.id, ({ reason }) => {
|
|
438
|
+
abortUpstream(reason ?? new Error('Subagent run was canceled.'));
|
|
439
|
+
});
|
|
440
|
+
const unlinkAbortLedger = linkAbortSignalToAgentRun(run.id, upstreamAbort.signal, {
|
|
441
|
+
reason: 'Subagent run was canceled.',
|
|
442
|
+
metadata: { aborted: true },
|
|
443
|
+
});
|
|
444
|
+
try {
|
|
445
|
+
const result = await runWithAgentRunContext({
|
|
446
|
+
...(run.chatSessionId ? { chatSessionId: run.chatSessionId } : {}),
|
|
447
|
+
rootRunId: run.rootRunId ?? run.id,
|
|
448
|
+
parentRunId: run.id,
|
|
449
|
+
}, () => tool.execute(toolCallId, params, upstreamAbort.signal, onUpdateWithLedger(run.id, onUpdate), ctx));
|
|
450
|
+
if (hasAsyncStartDetails(result) && !resultIsError(result)) {
|
|
451
|
+
const metadata = resultMetadata(result);
|
|
452
|
+
updateAgentRun(run.id, {
|
|
453
|
+
status: 'streaming',
|
|
454
|
+
outputSummary: outputSummary(result),
|
|
455
|
+
metadata: {
|
|
456
|
+
...metadata,
|
|
457
|
+
detached: true,
|
|
458
|
+
},
|
|
459
|
+
});
|
|
460
|
+
// The completion event may have already arrived and been buffered.
|
|
461
|
+
const asyncId = typeof metadata.asyncId === 'string' ? metadata.asyncId : undefined;
|
|
462
|
+
const early = asyncId ? takeEarlyAsyncCompletion(asyncId) : null;
|
|
463
|
+
if (asyncId && early) {
|
|
464
|
+
applyAsyncCompletion(run.id, asyncId, early.payload);
|
|
465
|
+
}
|
|
466
|
+
return result;
|
|
467
|
+
}
|
|
468
|
+
if (resultIsError(result)) {
|
|
469
|
+
failAgentRun(run.id, {
|
|
470
|
+
error: outputSummary(result) || 'Subagent run failed.',
|
|
471
|
+
metadata: resultMetadata(result),
|
|
472
|
+
});
|
|
473
|
+
return result;
|
|
474
|
+
}
|
|
475
|
+
completeAgentRun(run.id, {
|
|
476
|
+
outputSummary: outputSummary(result),
|
|
477
|
+
metadata: resultMetadata(result),
|
|
478
|
+
});
|
|
479
|
+
return result;
|
|
480
|
+
}
|
|
481
|
+
catch (error) {
|
|
482
|
+
failAgentRun(run.id, {
|
|
483
|
+
status: isAbortLikeError(error) || upstreamAbort.signal.aborted ? 'canceled' : 'failed',
|
|
484
|
+
error: isAbortLikeError(error) ? 'Subagent run was canceled.' : error,
|
|
485
|
+
metadata: upstreamAbort.signal.aborted ? { aborted: true } : undefined,
|
|
486
|
+
});
|
|
487
|
+
throw error;
|
|
488
|
+
}
|
|
489
|
+
finally {
|
|
490
|
+
signal?.removeEventListener('abort', handleParentAbort);
|
|
491
|
+
unlinkAbortLedger();
|
|
492
|
+
unregisterCancelHandler();
|
|
493
|
+
}
|
|
494
|
+
},
|
|
495
|
+
};
|
|
496
|
+
}
|
|
497
|
+
/**
|
|
498
|
+
* Build the MindOS subagent ledger extension: subscribes to async
|
|
499
|
+
* completions, loads the host-provided upstream pi-subagents extension, and
|
|
500
|
+
* intercepts its `subagent` tool registration with the ledger wrapper.
|
|
501
|
+
*/
|
|
502
|
+
export function createMindosSubagentLedgerExtension(host) {
|
|
503
|
+
return async function mindosSubagentLedgerExtension(pi) {
|
|
504
|
+
const events = pi.events;
|
|
505
|
+
const unsubscribeSlot = getProcessGlobal(SUBAGENT_LEDGER_EVENT_UNSUBSCRIBE_KEY, () => ({ unsubscribe: null }));
|
|
506
|
+
if (typeof unsubscribeSlot.unsubscribe === 'function') {
|
|
507
|
+
try {
|
|
508
|
+
unsubscribeSlot.unsubscribe();
|
|
509
|
+
}
|
|
510
|
+
catch {
|
|
511
|
+
// Best-effort cleanup across extension reloads.
|
|
512
|
+
}
|
|
513
|
+
unsubscribeSlot.unsubscribe = null;
|
|
514
|
+
}
|
|
515
|
+
const unsubscribe = events.on?.(SUBAGENT_ASYNC_COMPLETE_EVENT, finalizeSubagentAsyncRunFromEvent);
|
|
516
|
+
if (typeof unsubscribe === 'function') {
|
|
517
|
+
unsubscribeSlot.unsubscribe = unsubscribe;
|
|
518
|
+
}
|
|
519
|
+
const proxyPi = {
|
|
520
|
+
...pi,
|
|
521
|
+
registerTool(tool) {
|
|
522
|
+
if (tool.name === 'subagent') {
|
|
523
|
+
pi.registerTool(wrapSubagentToolForLedger(tool));
|
|
524
|
+
return;
|
|
525
|
+
}
|
|
526
|
+
pi.registerTool(tool);
|
|
527
|
+
},
|
|
528
|
+
};
|
|
529
|
+
const registerSubagentExtension = await host.loadUpstreamSubagentExtension();
|
|
530
|
+
await registerSubagentExtension(proxyPi);
|
|
531
|
+
};
|
|
532
|
+
}
|
|
533
|
+
//# sourceMappingURL=subagent-ledger-extension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagent-ledger-extension.js","sourceRoot":"","sources":["../../src/agent/subagent-ledger-extension.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,kCAAkC;AAClC,EAAE;AACF,yEAAyE;AACzE,uEAAuE;AACvE,sEAAsE;AACtE,qEAAqE;AACrE,4EAA4E;AAC5E,2EAA2E;AAC3E,6EAA6E;AAC7E,qEAAqE;AACrE,EAAE;AACF,4EAA4E;AAC5E,2EAA2E;AAC3E,yEAAyE;AACzE,wCAAwC;AAGxC,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,4CAA4C,EAAE,MAAM,wBAAwB,CAAC;AACtF,OAAO,EACL,gCAAgC,GAGjC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,gBAAgB,EAChB,oCAAoC,EACpC,qCAAqC,GACtC,MAAM,mBAAmB,CAAC;AAuB3B,MAAM,6BAA6B,GAAG,yBAAyB,CAAC;AAEhE,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,EAAE,CAAC;IAC7B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,MAAe;IACpC,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACzC,MAAM,OAAO,GAAI,MAAgC,CAAC,OAAO,CAAC;QAC1D,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,OAAO;iBACjB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACZ,IAAI,OAAO,IAAI,KAAK,QAAQ;oBAAE,OAAO,IAAI,CAAC;gBAC1C,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAQ,IAA2B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC9F,OAAQ,IAAyB,CAAC,IAAI,CAAC;gBACzC,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;iBACD,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,IAAI,IAAI,CAAC,IAAI,EAAE;gBAAE,OAAO,IAAI,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAe;IAC3C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACxD,MAAM,OAAO,GAAI,MAAmD,CAAC,OAAO,CAAC;IAC7E,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC1D,MAAM,MAAM,GAAG,OAAkC,CAAC;IAClD,OAAO,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,aAAa,CAAC,MAAe;IACpC,OAAO,OAAO,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAK,MAAgC,CAAC,OAAO,CAAC,CAAC;AACpG,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAa,EAAE,MAAe;IACjE,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7C,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK;QAAE,OAAO;IAE/B,IAAI,CAAC;QACH,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YACjC,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,gBAAgB;YACvB,OAAO,EAAE,OAAO,IAAI,6CAA6C;YACjE,IAAI,EAAE;gBACJ,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,OAAO,IAAI,6CAA6C;aAClE;YACD,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC;SACjC,CAAC,CAAC,CAAC;YACF,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,iBAAiB;YACxB,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE;gBACJ,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,WAAW;aACrB;YACD,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC;SACjC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,sFAAsF;IACxF,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa,EAAE,QAAiB;IAC1D,OAAO,CAAC,MAAe,EAAE,EAAE;QACzB,2BAA2B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3C,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;YACnC,OAAQ,QAAwC,CAAC,MAAM,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,MAAe;IACrC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACrD,MAAM,OAAO,GAAI,MAAgC,CAAC,OAAO,CAAC;IAC1D,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACvD,MAAM,MAAM,GAAG,OAAkC,CAAC;IAClD,OAAO;QACL,GAAG,CAAC,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,GAAG,CAAC,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,GAAG,CAAC,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,GAAG,CAAC,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClE,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CAAC,OAAgB;IACpD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;IAC3E,MAAM,MAAM,GAAG,OAAkC,CAAC;IAClD,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC;IAC9D,IAAI,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,aAAa,CAAC;IAC1E,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO;aACxB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,OAAO,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,IAA+B,CAAC;YAC9C,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;gBAAE,OAAO,KAAK,CAAC,OAAO,CAAC;YAC5D,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;gBAAE,OAAO,KAAK,CAAC,MAAM,CAAC;YAC1D,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,KAAK,CAAC,IAAI,CAAC;YACtD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;aACD,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,IAAI,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO,IAAI,CAAC;IAC/B,CAAC;IACD,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,8BAA8B,CAAC,OAAgB;IACtD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,WAAW,CAAC;IAChE,MAAM,MAAM,GAAG,OAAkC,CAAC;IAClD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC;IAC5C,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,QAAQ,CAAC;IAC7D,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,WAAW;QAAE,OAAO,WAAW,CAAC;IACvE,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,WAAW;QAAE,OAAO,UAAU,CAAC;IACrE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;QAChE,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QACpD,MAAM,MAAM,GAAI,IAAgC,CAAC,MAAM,CAAC;QACxD,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,WAAW,CAAC;IACjF,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IACpB,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAgB;IAC1C,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC9D,MAAM,MAAM,GAAG,OAAkC,CAAC;IAClD,KAAK,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC;QAC7C,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC;YAAE,OAAO,MAAM,CAAC,GAAG,CAAW,CAAC;IACnF,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,OAAgB;IAChE,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,MAAM,GAAG,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;SAC3D,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,KAAK,WAAW,IAAI,SAAS,CAAC,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC;IACpG,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,uEAAuE;QACvE,sEAAsE;QACtE,+CAA+C;QAC/C,0BAA0B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,oBAAoB,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa,EAAE,OAAe,EAAE,OAAgB;IAC5E,MAAM,MAAM,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,4BAA4B,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;IAClD,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QAC3B,gBAAgB,CAAC,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACN,YAAY,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,sBAAsB,MAAM,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9F,CAAC;AACH,CAAC;AAED,MAAM,8BAA8B,GAAG,GAAG,CAAC;AAE3C,SAAS,wBAAwB;IAC/B,OAAO,gBAAgB,CAAC,oCAAoC,EAAE,GAAG,EAAE,CAAC,IAAI,GAAG,EAAmB,CAAC,CAAC;AAClG,CAAC;AAED,SAAS,0BAA0B,CAAC,OAAe,EAAE,OAAgB;IACnE,MAAM,QAAQ,GAAG,wBAAwB,EAAE,CAAC;IAC5C,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzB,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,QAAQ,CAAC,IAAI,GAAG,8BAA8B,EAAE,CAAC;QACtD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;QAC5C,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM;QAChC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAAC,OAAe;IAC/C,MAAM,QAAQ,GAAG,wBAAwB,EAAE,CAAC;IAC5C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzB,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAe;IAC1C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,UAAU,CAAC;IAC7D,MAAM,KAAK,GAAG,MAAiC,CAAC;IAChD,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,YAAY,KAAK,CAAC,MAAM,EAAE,CAAC;IACxF,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC;IACvE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,uBAAuB,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;IACpF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,mBAAmB,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;IAChF,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAe;IACxC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,UAAU,CAAC;IAC7D,MAAM,KAAK,GAAG,MAAiC,CAAC;IAChD,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC;IACvE,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,YAAY,KAAK,CAAC,MAAM,EAAE,CAAC;IACxF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,mBAAmB,CAAC;IAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,gBAAgB,CAAC;IACxD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,WAAW,CAAC,MAAe,EAAE,GAAyB;IAC7D,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,MAAiC,CAAC;QAChD,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;YAAE,OAAO,KAAK,CAAC,GAAG,CAAC;IAC1E,CAAC;IACD,OAAO,OAAO,GAAG,EAAE,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9E,CAAC;AAED,SAAS,sBAAsB,CAAC,GAAyB;IACvD,OAAO,4CAA4C,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,cAAc,CAAC;AACnF,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1G,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpG,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAa,EAAE,KAAa,EAAE,WAAoB;IAC1E,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,EAAE,GAAG,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAC,EAAE,CAAC;IAChG,MAAM,YAAY,GAAG;QACnB,GAAG,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC;QACjC,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;KAC/B,CAAC;IACF,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;IACtE,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACzD,OAAO;QACL,EAAE;QACF,KAAK;QACL,IAAI;QACJ,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClH,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,QAAQ,EAAE;YACR,GAAG,CAAC,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,GAAG,CAAC,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjE;KACF,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAgB,EAAE,WAAoB;IACpE,MAAM,QAAQ,GAA0B,EAAE,CAAC;IAC3C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QACnE,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC;YACZ,GAAG,OAAO;YACV,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClE,CAAC,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAgB;IAC/C,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAC5C,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CACpF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iCAAiC,CAAC,MAAe,EAAE,GAAyB;IACnF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC7C,CAAC,CAAC,MAAM,CAAC,QAAQ;QACjB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;YAC3B,CAAC,CAAC,MAAM,CAAC,KAAK;YACd,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACxE,MAAM,2BAA2B,GAAG,MAAM,CAAC,mBAAmB,KAAK,IAAI,IAAI,MAAM,CAAC,YAAY,KAAK,QAAQ,CAAC;IAE5G,IAAI,CAAC,2BAA2B,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QACtF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ;QACpB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QAC3E,CAAC,CAAC,QAAQ;YACR,CAAC,CAAC,sBAAsB,CAAC,QAAQ,EAAE,WAAW,CAAC;YAC/C,CAAC,CAAC,IAAI,CAAC;IACX,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvD,OAAO;QACL,WAAW,EAAE,2BAA2B,KAAK,CAAC,MAAM,GAAG;QACvD,GAAG,EAAE,WAAW;QAChB,cAAc,EAAE,sBAAsB,CAAC,GAAG,CAAC;QAC3C,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,YAAY,CAAC;QAClE,aAAa,EAAE,cAAc,CAAC,MAAM,CAAC,aAAa,CAAC;QACnD,KAAK,EAAE,KAA8B;KACtC,CAAC;AACJ,CAAC;AAED,SAAS,mCAAmC,CAAC,MAAoE;IAC/G,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QACjD,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,WAAW;QACtC,OAAO,EAAE;YACP,IAAI,EAAE,sBAAsB;YAC5B,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE;YAC1B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACnC,EAAE,EAAE,IAAI,CAAC,MAAM;gBACf,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE,IAAI,CAAC,aAAa;gBAC1B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE;aACnB,CAAC,CAAC;SACJ;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,IAA4B;IACpE,OAAO;QACL,GAAG,IAAI;QACP,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG;YACrD,MAAM,iBAAiB,GAAG,iCAAiC,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACzE,IAAI,iBAAiB,EAAE,CAAC;gBACtB,MAAM,mBAAmB,GAAG,MAAM,gCAAgC,CAAC,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;oBAC5G,MAAM,WAAW,GAAG;wBAClB,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;wBACnC,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,GAAG,EAAE,IAAI,CAAC,GAAG;wBACb,KAAK,EAAE,KAAK;wBACZ,KAAK,EAAE,SAAS;wBAChB,QAAQ,EAAE,SAAS;wBACnB,KAAK,EAAE,SAAS;wBAChB,mBAAmB,EAAE,SAAS;wBAC9B,YAAY,EAAE,SAAS;wBACvB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACzD,CAAC;oBACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CACpC,GAAG,UAAU,IAAI,IAAI,CAAC,EAAE,EAAE,EAC1B,WAAW,EACX,OAAO,CAAC,MAAM,EACd,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,EAC5C,GAAG,CACJ,CAAC;oBACF,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;oBAC3C,IAAI,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;wBAC/B,OAAO;4BACL,MAAM,EAAE,QAAQ;4BAChB,aAAa,EAAE,OAAO;4BACtB,KAAK,EAAE,OAAO,IAAI,uBAAuB;4BACzC,QAAQ,EAAE,cAAc,CAAC,WAAW,CAAC;yBACtC,CAAC;oBACJ,CAAC;oBACD,OAAO;wBACL,aAAa,EAAE,OAAO;wBACtB,QAAQ,EAAE,cAAc,CAAC,WAAW,CAAC;qBACtC,CAAC;gBACJ,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;gBACf,OAAO,mCAAmC,CAAC,mBAAmB,CAAC,CAAC;YAClE,CAAC;YAED,MAAM,GAAG,GAAG,aAAa,CAAC;gBACxB,SAAS,EAAE,aAAa;gBACxB,SAAS,EAAE,iBAAiB,CAAC,MAAM,CAAC;gBACpC,WAAW,EAAE,mBAAmB,CAAC,MAAM,CAAC;gBACxC,GAAG,EAAE,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC;gBAC7B,cAAc,EAAE,sBAAsB,CAAC,GAAG,CAAC;gBAC3C,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC;gBACnC,QAAQ,EAAE;oBACR,UAAU;oBACV,MAAM,EAAE,cAAc;iBACvB;aACF,CAAC,CAAC;YAEH,MAAM,aAAa,GAAG,IAAI,eAAe,EAAE,CAAC;YAC5C,MAAM,aAAa,GAAG,CAAC,MAAgB,EAAE,EAAE;gBACzC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO;oBAAE,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACjE,CAAC,CAAC;YACF,MAAM,iBAAiB,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,oBAAoB,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC,CAAC;YAC1G,IAAI,MAAM,EAAE,OAAO;gBAAE,iBAAiB,EAAE,CAAC;YACzC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAErE,MAAM,uBAAuB,GAAG,6BAA6B,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;gBACnF,aAAa,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;YACH,MAAM,iBAAiB,GAAG,yBAAyB,CAAC,GAAG,CAAC,EAAE,EAAE,aAAa,CAAC,MAAM,EAAE;gBAChF,MAAM,EAAE,4BAA4B;gBACpC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;aAC5B,CAAC,CAAC;YAEH,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC;oBAC1C,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClE,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,EAAE;oBAClC,WAAW,EAAE,GAAG,CAAC,EAAE;iBACpB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC5G,IAAI,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC3D,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;oBACxC,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE;wBACrB,MAAM,EAAE,WAAW;wBACnB,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC;wBACpC,QAAQ,EAAE;4BACR,GAAG,QAAQ;4BACX,QAAQ,EAAE,IAAI;yBACf;qBACF,CAAC,CAAC;oBACH,mEAAmE;oBACnE,MAAM,OAAO,GAAG,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;oBACpF,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBACjE,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;wBACrB,oBAAoB,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;oBACvD,CAAC;oBACD,OAAO,MAAM,CAAC;gBAChB,CAAC;gBACD,IAAI,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC1B,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE;wBACnB,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,IAAI,sBAAsB;wBACtD,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC;qBACjC,CAAC,CAAC;oBACH,OAAO,MAAM,CAAC;gBAChB,CAAC;gBACD,gBAAgB,CAAC,GAAG,CAAC,EAAE,EAAE;oBACvB,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC;oBACpC,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC;iBACjC,CAAC,CAAC;gBACH,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE;oBACnB,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ;oBACvF,KAAK,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,KAAK;oBACrE,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;iBACvE,CAAC,CAAC;gBACH,MAAM,KAAK,CAAC;YACd,CAAC;oBAAS,CAAC;gBACT,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;gBACxD,iBAAiB,EAAE,CAAC;gBACpB,uBAAuB,EAAE,CAAC;YAC5B,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mCAAmC,CACjD,IAAuC;IAEvC,OAAO,KAAK,UAAU,6BAA6B,CAAC,EAAgB;QAClE,MAAM,MAAM,GAAG,EAAE,CAAC,MAAyG,CAAC;QAC5H,MAAM,eAAe,GAAG,gBAAgB,CACtC,qCAAqC,EACrC,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAC9B,CAAC;QACF,IAAI,OAAO,eAAe,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;YACtD,IAAI,CAAC;gBACH,eAAe,CAAC,WAAW,EAAE,CAAC;YAChC,CAAC;YAAC,MAAM,CAAC;gBACP,gDAAgD;YAClD,CAAC;YACD,eAAe,CAAC,WAAW,GAAG,IAAI,CAAC;QACrC,CAAC;QACD,MAAM,WAAW,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC,6BAA6B,EAAE,iCAAiC,CAAC,CAAC;QAClG,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE,CAAC;YACtC,eAAe,CAAC,WAAW,GAAG,WAAW,CAAC;QAC5C,CAAC;QAED,MAAM,OAAO,GAAG;YACd,GAAG,EAAE;YACL,YAAY,CAAC,IAAoB;gBAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBAC7B,EAAE,CAAC,YAAY,CAAC,yBAAyB,CAAC,IAA8B,CAAmB,CAAC,CAAC;oBAC7F,OAAO;gBACT,CAAC;gBACD,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;SACc,CAAC;QAElB,MAAM,yBAAyB,GAAG,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAC;QAC7E,MAAM,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { type AgentRunPermissionMode, type AgentRunRecord } from './run-ledger.js';
|
|
2
|
+
import { type AgentResultReduction, type ReducibleAgentRunStatus } from './result-reducer.js';
|
|
3
|
+
export interface SubagentSubtaskPlan {
|
|
4
|
+
id: string;
|
|
5
|
+
agent: string;
|
|
6
|
+
task: string;
|
|
7
|
+
dependencies?: string[];
|
|
8
|
+
dependsOn?: string[];
|
|
9
|
+
cwd?: string;
|
|
10
|
+
permissionMode?: AgentRunPermissionMode;
|
|
11
|
+
timeoutMs?: number;
|
|
12
|
+
contextBudget?: number;
|
|
13
|
+
metadata?: Record<string, unknown>;
|
|
14
|
+
}
|
|
15
|
+
export interface SubagentOrchestrationPlan {
|
|
16
|
+
id?: string;
|
|
17
|
+
displayName?: string;
|
|
18
|
+
rootRunId?: string;
|
|
19
|
+
parentRunId?: string;
|
|
20
|
+
chatSessionId?: string;
|
|
21
|
+
cwd?: string;
|
|
22
|
+
permissionMode?: AgentRunPermissionMode;
|
|
23
|
+
timeoutMs?: number;
|
|
24
|
+
contextBudget?: number;
|
|
25
|
+
tasks: SubagentSubtaskPlan[];
|
|
26
|
+
}
|
|
27
|
+
export interface SubagentTaskExecutorResult {
|
|
28
|
+
status?: ReducibleAgentRunStatus;
|
|
29
|
+
outputSummary?: string;
|
|
30
|
+
error?: unknown;
|
|
31
|
+
metadata?: Record<string, unknown>;
|
|
32
|
+
}
|
|
33
|
+
export interface SubagentTaskExecutorContext {
|
|
34
|
+
signal: AbortSignal;
|
|
35
|
+
dependencyResults: ReadonlyMap<string, SubagentTaskExecutionResult>;
|
|
36
|
+
run: AgentRunRecord;
|
|
37
|
+
}
|
|
38
|
+
export type SubagentTaskExecutor = (task: SubagentSubtaskPlan, context: SubagentTaskExecutorContext) => Promise<SubagentTaskExecutorResult | string | void> | SubagentTaskExecutorResult | string | void;
|
|
39
|
+
export interface SubagentTaskExecutionResult {
|
|
40
|
+
taskId: string;
|
|
41
|
+
agent: string;
|
|
42
|
+
run: AgentRunRecord;
|
|
43
|
+
status: ReducibleAgentRunStatus;
|
|
44
|
+
outputSummary?: string;
|
|
45
|
+
error?: string;
|
|
46
|
+
}
|
|
47
|
+
export interface SubagentOrchestrationResult {
|
|
48
|
+
parentRun: AgentRunRecord;
|
|
49
|
+
status: ReducibleAgentRunStatus;
|
|
50
|
+
tasks: SubagentTaskExecutionResult[];
|
|
51
|
+
reduction: AgentResultReduction;
|
|
52
|
+
summary: string;
|
|
53
|
+
}
|
|
54
|
+
declare class SubagentPlanValidationError extends Error {
|
|
55
|
+
constructor(message: string);
|
|
56
|
+
}
|
|
57
|
+
export declare function executeSubagentOrchestrationPlan(plan: SubagentOrchestrationPlan, executor: SubagentTaskExecutor, options?: {
|
|
58
|
+
signal?: AbortSignal;
|
|
59
|
+
}): Promise<SubagentOrchestrationResult>;
|
|
60
|
+
export declare function isSubagentPlanValidationError(error: unknown): error is SubagentPlanValidationError;
|
|
61
|
+
export {};
|
|
62
|
+
//# sourceMappingURL=subagent-orchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagent-orchestrator.d.ts","sourceRoot":"","sources":["../../src/agent/subagent-orchestrator.ts"],"names":[],"mappings":"AAUA,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EAGpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAGL,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC7B,MAAM,qBAAqB,CAAC;AAG7B,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,sBAAsB,CAAC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,yBAAyB;IACxC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,sBAAsB,CAAC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,mBAAmB,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,CAAC,EAAE,uBAAuB,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,WAAW,CAAC;IACpB,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC;IACpE,GAAG,EAAE,cAAc,CAAC;CACrB;AAED,MAAM,MAAM,oBAAoB,GAAG,CACjC,IAAI,EAAE,mBAAmB,EACzB,OAAO,EAAE,2BAA2B,KACjC,OAAO,CAAC,0BAA0B,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,0BAA0B,GAAG,MAAM,GAAG,IAAI,CAAC;AAEtG,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,cAAc,CAAC;IACpB,MAAM,EAAE,uBAAuB,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,cAAc,CAAC;IAC1B,MAAM,EAAE,uBAAuB,CAAC;IAChC,KAAK,EAAE,2BAA2B,EAAE,CAAC;IACrC,SAAS,EAAE,oBAAoB,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,cAAM,2BAA4B,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B;AAsQD,wBAAsB,gCAAgC,CACpD,IAAI,EAAE,yBAAyB,EAC/B,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAO,GACrC,OAAO,CAAC,2BAA2B,CAAC,CAgHtC;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,2BAA2B,CAElG"}
|