opencode-multiagent 0.4.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/README.md +1 -1
- package/README.tr.md +1 -1
- package/agents/brainstormer.md +113 -0
- package/commands/brainstorm-conclude.md +14 -0
- package/commands/brainstorm.md +14 -0
- package/defaults/opencode-multiagent.json +64 -105
- package/defaults/opencode-multiagent.schema.json +41 -208
- package/dist/index.js +251 -105
- package/dist/opencode-multiagent/compiler.d.ts.map +1 -1
- package/dist/opencode-multiagent/constants.d.ts +0 -66
- package/dist/opencode-multiagent/constants.d.ts.map +1 -1
- package/dist/opencode-multiagent/defaults.d.ts +0 -2
- package/dist/opencode-multiagent/defaults.d.ts.map +1 -1
- package/dist/opencode-multiagent/hooks.d.ts.map +1 -1
- package/dist/opencode-multiagent/markdown.d.ts.map +1 -1
- package/dist/opencode-multiagent/runtime.d.ts.map +1 -1
- package/dist/opencode-multiagent/supervision.d.ts +4 -0
- package/dist/opencode-multiagent/supervision.d.ts.map +1 -1
- package/dist/opencode-multiagent/task-manager.d.ts +22 -0
- package/dist/opencode-multiagent/task-manager.d.ts.map +1 -1
- package/dist/opencode-multiagent/telemetry.d.ts +6 -0
- package/dist/opencode-multiagent/telemetry.d.ts.map +1 -1
- package/dist/opencode-multiagent/tools.d.ts +11 -0
- package/dist/opencode-multiagent/tools.d.ts.map +1 -1
- package/{agents → docs}/AGENTS.md +6 -2
- package/docs/agents.md +107 -17
- package/docs/agents.tr.md +107 -17
- package/docs/configuration.md +24 -16
- package/docs/configuration.tr.md +24 -17
- package/docs/usage-guide.md +54 -11
- package/docs/usage-guide.tr.md +56 -12
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -69,76 +69,7 @@ var mcpToolPrefixes = [
|
|
|
69
69
|
"code_index_",
|
|
70
70
|
"repo_git_"
|
|
71
71
|
];
|
|
72
|
-
var defaultProfiles = {
|
|
73
|
-
minimal: {
|
|
74
|
-
enforcement: true,
|
|
75
|
-
observation: false,
|
|
76
|
-
prompt_controls: false,
|
|
77
|
-
agent_compilation: true,
|
|
78
|
-
command_compilation: true,
|
|
79
|
-
mcp_compilation: true,
|
|
80
|
-
telemetry: false,
|
|
81
|
-
supervision: false,
|
|
82
|
-
quality_gate: false,
|
|
83
|
-
task_lifecycle: false,
|
|
84
|
-
quality_gate_enforcement: false,
|
|
85
|
-
concurrency_limit: 0,
|
|
86
|
-
experimental: {
|
|
87
|
-
chat_system_transform: false,
|
|
88
|
-
chat_messages_transform: false,
|
|
89
|
-
session_compacting: false,
|
|
90
|
-
text_complete: false
|
|
91
|
-
}
|
|
92
|
-
},
|
|
93
|
-
standard: {
|
|
94
|
-
enforcement: true,
|
|
95
|
-
observation: true,
|
|
96
|
-
prompt_controls: true,
|
|
97
|
-
agent_compilation: true,
|
|
98
|
-
command_compilation: true,
|
|
99
|
-
mcp_compilation: true,
|
|
100
|
-
telemetry: true,
|
|
101
|
-
supervision: true,
|
|
102
|
-
quality_gate: true,
|
|
103
|
-
task_lifecycle: true,
|
|
104
|
-
quality_gate_enforcement: false,
|
|
105
|
-
concurrency_limit: 5,
|
|
106
|
-
skill_sources: [
|
|
107
|
-
bundledSkillsDir,
|
|
108
|
-
join(homedir(), ".agents", "skills"),
|
|
109
|
-
join(homedir(), "skills")
|
|
110
|
-
],
|
|
111
|
-
skill_injection: false,
|
|
112
|
-
experimental: {
|
|
113
|
-
chat_system_transform: false,
|
|
114
|
-
chat_messages_transform: false,
|
|
115
|
-
session_compacting: false,
|
|
116
|
-
text_complete: false
|
|
117
|
-
}
|
|
118
|
-
},
|
|
119
|
-
strict: {
|
|
120
|
-
enforcement: true,
|
|
121
|
-
observation: true,
|
|
122
|
-
prompt_controls: true,
|
|
123
|
-
agent_compilation: true,
|
|
124
|
-
command_compilation: true,
|
|
125
|
-
mcp_compilation: true,
|
|
126
|
-
telemetry: true,
|
|
127
|
-
supervision: true,
|
|
128
|
-
quality_gate: true,
|
|
129
|
-
task_lifecycle: true,
|
|
130
|
-
quality_gate_enforcement: true,
|
|
131
|
-
concurrency_limit: 5,
|
|
132
|
-
experimental: {
|
|
133
|
-
chat_system_transform: true,
|
|
134
|
-
chat_messages_transform: true,
|
|
135
|
-
session_compacting: true,
|
|
136
|
-
text_complete: true
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
};
|
|
140
72
|
var defaultFlags = {
|
|
141
|
-
profile: "standard",
|
|
142
73
|
enforcement: true,
|
|
143
74
|
observation: true,
|
|
144
75
|
prompt_controls: true,
|
|
@@ -149,7 +80,7 @@ var defaultFlags = {
|
|
|
149
80
|
supervision: true,
|
|
150
81
|
quality_gate: true,
|
|
151
82
|
task_lifecycle: true,
|
|
152
|
-
quality_gate_enforcement:
|
|
83
|
+
quality_gate_enforcement: true,
|
|
153
84
|
concurrency_limit: 5,
|
|
154
85
|
skill_sources: [
|
|
155
86
|
bundledSkillsDir,
|
|
@@ -161,10 +92,10 @@ var defaultFlags = {
|
|
|
161
92
|
permission_compilation: true
|
|
162
93
|
},
|
|
163
94
|
experimental: {
|
|
164
|
-
chat_system_transform:
|
|
165
|
-
chat_messages_transform:
|
|
166
|
-
session_compacting:
|
|
167
|
-
text_complete:
|
|
95
|
+
chat_system_transform: true,
|
|
96
|
+
chat_messages_transform: true,
|
|
97
|
+
session_compacting: true,
|
|
98
|
+
text_complete: true
|
|
168
99
|
},
|
|
169
100
|
supervision_config: {
|
|
170
101
|
idle_timeout_ms: 180000,
|
|
@@ -315,7 +246,7 @@ async function loadMarkdownDefs(dirs) {
|
|
|
315
246
|
const defs = new Map;
|
|
316
247
|
for (const dir of dedupe(dirs)) {
|
|
317
248
|
const files = await readdir(dir).catch(() => []);
|
|
318
|
-
for (const file of files.filter((name) => name.endsWith(".md")).sort()) {
|
|
249
|
+
for (const file of files.filter((name) => name.endsWith(".md") && name !== name.toUpperCase()).sort()) {
|
|
319
250
|
try {
|
|
320
251
|
const value = await readFile(join2(dir, file), "utf8");
|
|
321
252
|
const { data, body } = parseFrontmatter(value);
|
|
@@ -439,7 +370,7 @@ async function compileAgents(cfg, dirs, agentSettings = {}) {
|
|
|
439
370
|
const overrides = agentSettings?.[name];
|
|
440
371
|
if (overrides && typeof overrides === "object") {
|
|
441
372
|
for (const [field, value] of Object.entries(overrides)) {
|
|
442
|
-
if (["model", "temperature", "steps"].includes(field) && !explicitFields.has(field)) {
|
|
373
|
+
if (["model", "temperature", "steps", "top_p", "options", "timeout_ms", "retry", "escalation_model"].includes(field) && !explicitFields.has(field)) {
|
|
443
374
|
target[field] = clone(value);
|
|
444
375
|
}
|
|
445
376
|
}
|
|
@@ -451,6 +382,15 @@ async function compileAgents(cfg, dirs, agentSettings = {}) {
|
|
|
451
382
|
mcpRegistry.set(name, buildMcpPermissionRegistry(perm));
|
|
452
383
|
taskRouting.set(name, buildTaskRoutingAllowSet(perm));
|
|
453
384
|
}
|
|
385
|
+
for (const key of Object.keys(agentSettings)) {
|
|
386
|
+
if (!defs.has(key)) {
|
|
387
|
+
await note("config_warning", {
|
|
388
|
+
observation: true,
|
|
389
|
+
warning: "unknown_agent_override",
|
|
390
|
+
agent: key
|
|
391
|
+
});
|
|
392
|
+
}
|
|
393
|
+
}
|
|
454
394
|
return { mcpRegistry, taskRouting };
|
|
455
395
|
}
|
|
456
396
|
var isTaskRoutingAllowed = (agent, target, routing) => {
|
|
@@ -904,7 +844,10 @@ var createSupervisionController = ({
|
|
|
904
844
|
lastActivity: Date.now(),
|
|
905
845
|
remindedAt: 0,
|
|
906
846
|
lastToolErrorAt: 0,
|
|
907
|
-
hasUnverifiedEdits: false
|
|
847
|
+
hasUnverifiedEdits: false,
|
|
848
|
+
startedAt: Date.now(),
|
|
849
|
+
timeoutMs: 0,
|
|
850
|
+
timeoutNotifiedAt: 0
|
|
908
851
|
});
|
|
909
852
|
tracker.enforceLimit();
|
|
910
853
|
await note("supervision", { event: "child_tracked", parentID, childID });
|
|
@@ -956,6 +899,26 @@ var createSupervisionController = ({
|
|
|
956
899
|
childID: sessionID,
|
|
957
900
|
agentName: info.agentName
|
|
958
901
|
});
|
|
902
|
+
if (info.timeoutMs > 0 && now - info.startedAt > info.timeoutMs && info.timeoutNotifiedAt === 0) {
|
|
903
|
+
info.timeoutNotifiedAt = now;
|
|
904
|
+
const timeoutText = `[opencode-multiagent supervision] Child session ${sessionID} ` + `(agent: ${info.agentName ?? "unknown"}) exceeded its timeout of ${info.timeoutMs}ms ` + `(elapsed: ${now - info.startedAt}ms). Consider terminating or investigating.`;
|
|
905
|
+
try {
|
|
906
|
+
if (client.session?.prompt) {
|
|
907
|
+
await client.session.prompt({
|
|
908
|
+
path: { id: info.parentID },
|
|
909
|
+
body: { parts: [{ type: "text", text: timeoutText }], noReply: false }
|
|
910
|
+
});
|
|
911
|
+
}
|
|
912
|
+
} catch {}
|
|
913
|
+
await note("agent_timeout", compact({
|
|
914
|
+
observation: true,
|
|
915
|
+
parentID: info.parentID,
|
|
916
|
+
childID: sessionID,
|
|
917
|
+
agentName: info.agentName,
|
|
918
|
+
timeoutMs: info.timeoutMs,
|
|
919
|
+
elapsed: now - info.startedAt
|
|
920
|
+
}));
|
|
921
|
+
}
|
|
959
922
|
return;
|
|
960
923
|
}
|
|
961
924
|
};
|
|
@@ -972,12 +935,18 @@ var createSupervisionController = ({
|
|
|
972
935
|
const getActiveChildCount = (parentID) => {
|
|
973
936
|
return childMap.get(parentID)?.size ?? 0;
|
|
974
937
|
};
|
|
938
|
+
const setSessionTimeout = (sessionID, timeoutMs) => {
|
|
939
|
+
const info = tracker.entries.get(sessionID);
|
|
940
|
+
if (info)
|
|
941
|
+
info.timeoutMs = timeoutMs;
|
|
942
|
+
};
|
|
975
943
|
return {
|
|
976
944
|
handleSupervision,
|
|
977
945
|
cleanup: tracker.cleanup,
|
|
978
946
|
recordToolError,
|
|
979
947
|
recordVerification,
|
|
980
948
|
getActiveChildCount,
|
|
949
|
+
setSessionTimeout,
|
|
981
950
|
getChildInfo(sessionID) {
|
|
982
951
|
return tracker.entries.get(sessionID);
|
|
983
952
|
},
|
|
@@ -1085,6 +1054,9 @@ var createTaskManager = (projectRoot) => {
|
|
|
1085
1054
|
assignedAgent: input.assignedAgent,
|
|
1086
1055
|
createdBy: input.createdBy,
|
|
1087
1056
|
dependencies: input.dependencies ?? [],
|
|
1057
|
+
retryCount: 0,
|
|
1058
|
+
maxRetries: input.maxRetries ?? 0,
|
|
1059
|
+
escalationModel: input.escalationModel,
|
|
1088
1060
|
createdAt: Date.now(),
|
|
1089
1061
|
updatedAt: Date.now()
|
|
1090
1062
|
};
|
|
@@ -1110,6 +1082,8 @@ var createTaskManager = (projectRoot) => {
|
|
|
1110
1082
|
task.result = input.result;
|
|
1111
1083
|
if (input.assignedAgent !== undefined)
|
|
1112
1084
|
task.assignedAgent = input.assignedAgent;
|
|
1085
|
+
if (input.findings !== undefined)
|
|
1086
|
+
task.findings = input.findings;
|
|
1113
1087
|
task.updatedAt = Date.now();
|
|
1114
1088
|
schedulePersist();
|
|
1115
1089
|
return task;
|
|
@@ -1136,7 +1110,10 @@ var createTaskManager = (projectRoot) => {
|
|
|
1136
1110
|
const active = [...tasks.values()].filter((t) => t.status === "pending" || t.status === "claimed" || t.status === "in_progress");
|
|
1137
1111
|
if (active.length === 0)
|
|
1138
1112
|
return "";
|
|
1139
|
-
const lines = active.slice(0, 10).map((t) =>
|
|
1113
|
+
const lines = active.slice(0, 10).map((t) => {
|
|
1114
|
+
const depNote = t.dependencies.length > 0 ? areDependenciesMet(t.id).met ? " [deps:ok]" : ` [blocked:${areDependenciesMet(t.id).unmet.join(",")}]` : "";
|
|
1115
|
+
return `- [${t.status}] ${t.title}${t.assignedAgent ? ` (${t.assignedAgent})` : ""}${depNote}`;
|
|
1116
|
+
});
|
|
1140
1117
|
return `Active tasks (${active.length}):
|
|
1141
1118
|
${lines.join(`
|
|
1142
1119
|
`)}`;
|
|
@@ -1150,7 +1127,70 @@ ${lines.join(`
|
|
|
1150
1127
|
schedulePersist();
|
|
1151
1128
|
return true;
|
|
1152
1129
|
};
|
|
1153
|
-
|
|
1130
|
+
const getSiblingFindings = (taskID) => {
|
|
1131
|
+
const task = tasks.get(taskID);
|
|
1132
|
+
if (!task?.createdBy)
|
|
1133
|
+
return "";
|
|
1134
|
+
const siblings = [...tasks.values()].filter((t) => t.id !== taskID && t.status === "completed" && t.findings && t.createdBy === task.createdBy);
|
|
1135
|
+
if (siblings.length === 0)
|
|
1136
|
+
return "";
|
|
1137
|
+
return siblings.slice(0, 5).map((t) => `- [${t.id}] ${t.title}: ${t.findings.slice(0, 200)}`).join(`
|
|
1138
|
+
`);
|
|
1139
|
+
};
|
|
1140
|
+
const getReadyTasks = () => {
|
|
1141
|
+
return [...tasks.values()].filter((t) => {
|
|
1142
|
+
if (t.status !== "pending")
|
|
1143
|
+
return false;
|
|
1144
|
+
if (t.dependencies.length === 0)
|
|
1145
|
+
return true;
|
|
1146
|
+
return areDependenciesMet(t.id).met;
|
|
1147
|
+
});
|
|
1148
|
+
};
|
|
1149
|
+
const getDependentsOf = (taskID) => {
|
|
1150
|
+
return [...tasks.values()].filter((t) => t.dependencies.includes(taskID));
|
|
1151
|
+
};
|
|
1152
|
+
const listWithDepInfo = (filter) => {
|
|
1153
|
+
return list(filter).map((task) => {
|
|
1154
|
+
const { met, unmet } = areDependenciesMet(task.id);
|
|
1155
|
+
return { ...task, depsMet: met, unmetDeps: unmet };
|
|
1156
|
+
});
|
|
1157
|
+
};
|
|
1158
|
+
const shouldRetry = (taskID) => {
|
|
1159
|
+
const task = tasks.get(taskID);
|
|
1160
|
+
if (!task)
|
|
1161
|
+
return { retry: false, escalate: false };
|
|
1162
|
+
if (task.retryCount < task.maxRetries)
|
|
1163
|
+
return { retry: true, escalate: false };
|
|
1164
|
+
if (task.escalationModel)
|
|
1165
|
+
return { retry: false, escalate: true, model: task.escalationModel };
|
|
1166
|
+
return { retry: false, escalate: false };
|
|
1167
|
+
};
|
|
1168
|
+
const incrementRetry = (taskID) => {
|
|
1169
|
+
const task = tasks.get(taskID);
|
|
1170
|
+
if (!task)
|
|
1171
|
+
return { error: `Task ${taskID} not found` };
|
|
1172
|
+
task.retryCount += 1;
|
|
1173
|
+
task.status = "pending";
|
|
1174
|
+
task.result = (task.result ? task.result + " | " : "") + `Retry #${task.retryCount}`;
|
|
1175
|
+
task.updatedAt = Date.now();
|
|
1176
|
+
schedulePersist();
|
|
1177
|
+
return task;
|
|
1178
|
+
};
|
|
1179
|
+
return {
|
|
1180
|
+
create,
|
|
1181
|
+
update,
|
|
1182
|
+
get,
|
|
1183
|
+
list,
|
|
1184
|
+
load,
|
|
1185
|
+
getActiveSummary,
|
|
1186
|
+
linkSession,
|
|
1187
|
+
getSiblingFindings,
|
|
1188
|
+
getReadyTasks,
|
|
1189
|
+
getDependentsOf,
|
|
1190
|
+
listWithDepInfo,
|
|
1191
|
+
shouldRetry,
|
|
1192
|
+
incrementRetry
|
|
1193
|
+
};
|
|
1154
1194
|
};
|
|
1155
1195
|
|
|
1156
1196
|
// src/opencode-multiagent/telemetry.ts
|
|
@@ -1175,6 +1215,8 @@ var createTelemetryController = ({ flags }) => {
|
|
|
1175
1215
|
filesEdited: 0,
|
|
1176
1216
|
tasksDispatched: 0,
|
|
1177
1217
|
permissionDenied: 0,
|
|
1218
|
+
inputTokens: 0,
|
|
1219
|
+
outputTokens: 0,
|
|
1178
1220
|
flushed: false,
|
|
1179
1221
|
...extra
|
|
1180
1222
|
});
|
|
@@ -1221,6 +1263,15 @@ var createTelemetryController = ({ flags }) => {
|
|
|
1221
1263
|
return;
|
|
1222
1264
|
state.permissionDenied += 1;
|
|
1223
1265
|
},
|
|
1266
|
+
trackTokenUsage(sessionID, usage, extra) {
|
|
1267
|
+
const state = ensureSession(sessionID, extra);
|
|
1268
|
+
if (!state)
|
|
1269
|
+
return;
|
|
1270
|
+
if (typeof usage.inputTokens === "number")
|
|
1271
|
+
state.inputTokens += usage.inputTokens;
|
|
1272
|
+
if (typeof usage.outputTokens === "number")
|
|
1273
|
+
state.outputTokens += usage.outputTokens;
|
|
1274
|
+
},
|
|
1224
1275
|
async flushSession(sessionID, reason = "session_deleted") {
|
|
1225
1276
|
const state = tracker.entries.get(sessionID);
|
|
1226
1277
|
if (!state || state.flushed)
|
|
@@ -1238,6 +1289,8 @@ var createTelemetryController = ({ flags }) => {
|
|
|
1238
1289
|
files_edited: state.filesEdited,
|
|
1239
1290
|
tasks_dispatched: state.tasksDispatched,
|
|
1240
1291
|
permission_denied: state.permissionDenied,
|
|
1292
|
+
input_tokens: state.inputTokens,
|
|
1293
|
+
output_tokens: state.outputTokens,
|
|
1241
1294
|
reason
|
|
1242
1295
|
});
|
|
1243
1296
|
},
|
|
@@ -1260,7 +1313,9 @@ var createTaskTools = (taskManager, taskManagerReady, correlation, quality, flag
|
|
|
1260
1313
|
description: pluginTool.schema.string().describe("Detailed description of what needs to be done"),
|
|
1261
1314
|
assignedAgent: pluginTool.schema.string().optional().describe("Name of the agent to assign this task to"),
|
|
1262
1315
|
dependencies: pluginTool.schema.array(pluginTool.schema.string()).optional().describe("IDs of tasks this task depends on"),
|
|
1263
|
-
priority: pluginTool.schema.enum(["high", "medium", "low"]).optional().describe("Task priority: high, medium, or low")
|
|
1316
|
+
priority: pluginTool.schema.enum(["high", "medium", "low"]).optional().describe("Task priority: high, medium, or low"),
|
|
1317
|
+
maxRetries: pluginTool.schema.number().optional().describe("Maximum retry attempts on failure. 0 = no retry."),
|
|
1318
|
+
escalationModel: pluginTool.schema.string().optional().describe("Model to escalate to when retries are exhausted (e.g., anthropic/claude-opus-4-6)")
|
|
1264
1319
|
},
|
|
1265
1320
|
async execute(args, ctx) {
|
|
1266
1321
|
await taskManagerReady;
|
|
@@ -1304,6 +1359,7 @@ var createTaskTools = (taskManager, taskManagerReady, correlation, quality, flag
|
|
|
1304
1359
|
taskID: pluginTool.schema.string().describe("ID of the task to update"),
|
|
1305
1360
|
status: pluginTool.schema.enum(["pending", "claimed", "in_progress", "completed", "failed", "blocked"]).describe("New status for the task"),
|
|
1306
1361
|
result: pluginTool.schema.string().optional().describe("Result summary or notes"),
|
|
1362
|
+
findings: pluginTool.schema.string().optional().describe("Key findings or output summary from this task for sibling context sharing"),
|
|
1307
1363
|
force: pluginTool.schema.boolean().optional().describe("Force completion even without quality evidence (bypass quality gate)")
|
|
1308
1364
|
},
|
|
1309
1365
|
async execute(args, ctx) {
|
|
@@ -1332,7 +1388,7 @@ var createTaskTools = (taskManager, taskManagerReady, correlation, quality, flag
|
|
|
1332
1388
|
agent: ctx.agent
|
|
1333
1389
|
});
|
|
1334
1390
|
}
|
|
1335
|
-
return JSON.stringify(taskManager.update(args.taskID, { status: args.status, result: args.result }));
|
|
1391
|
+
return JSON.stringify(taskManager.update(args.taskID, { status: args.status, result: args.result, findings: args.findings }));
|
|
1336
1392
|
}
|
|
1337
1393
|
}),
|
|
1338
1394
|
task_get: pluginTool({
|
|
@@ -1353,7 +1409,15 @@ var createTaskTools = (taskManager, taskManagerReady, correlation, quality, flag
|
|
|
1353
1409
|
},
|
|
1354
1410
|
async execute(args) {
|
|
1355
1411
|
await taskManagerReady;
|
|
1356
|
-
return JSON.stringify(taskManager.
|
|
1412
|
+
return JSON.stringify(taskManager.listWithDepInfo(args));
|
|
1413
|
+
}
|
|
1414
|
+
}),
|
|
1415
|
+
task_ready: pluginTool({
|
|
1416
|
+
description: "List tasks whose dependencies are all met and are ready to be dispatched",
|
|
1417
|
+
args: {},
|
|
1418
|
+
async execute() {
|
|
1419
|
+
await taskManagerReady;
|
|
1420
|
+
return JSON.stringify(taskManager.getReadyTasks());
|
|
1357
1421
|
}
|
|
1358
1422
|
})
|
|
1359
1423
|
});
|
|
@@ -1436,7 +1500,17 @@ var createPluginHooks = ({
|
|
|
1436
1500
|
const notifyParentOnChildCompletion = async (childSessionID, parentSessionID, agentName, taskLabel) => {
|
|
1437
1501
|
const agentLabel = agentName ? ` (agent: ${agentName})` : "";
|
|
1438
1502
|
const taskInfo = taskLabel ? `, task ${taskLabel}` : "";
|
|
1439
|
-
|
|
1503
|
+
let siblingContext = "";
|
|
1504
|
+
if (taskLabel) {
|
|
1505
|
+
const findings = taskManager.getSiblingFindings(taskLabel);
|
|
1506
|
+
if (findings) {
|
|
1507
|
+
siblingContext = `
|
|
1508
|
+
|
|
1509
|
+
Completed sibling findings:
|
|
1510
|
+
${findings}`;
|
|
1511
|
+
}
|
|
1512
|
+
}
|
|
1513
|
+
const text2 = `Child session ${childSessionID}${agentLabel}${taskInfo} has completed. ` + `Review its output and proceed with the next task.${siblingContext}`;
|
|
1440
1514
|
try {
|
|
1441
1515
|
if (client.session?.prompt) {
|
|
1442
1516
|
await client.session.prompt({
|
|
@@ -1529,6 +1603,13 @@ var createPluginHooks = ({
|
|
|
1529
1603
|
parent_agent: parent.agent,
|
|
1530
1604
|
child_sessionID: childID
|
|
1531
1605
|
});
|
|
1606
|
+
const childAgentName = agentHint ?? (typeof props.info?.agent === "string" ? props.info.agent : undefined);
|
|
1607
|
+
if (childAgentName && childID) {
|
|
1608
|
+
const agentCfg = agentSettings?.[childAgentName];
|
|
1609
|
+
if (agentCfg && typeof agentCfg === "object" && typeof agentCfg.timeout_ms === "number") {
|
|
1610
|
+
supervision.setSessionTimeout(childID, agentCfg.timeout_ms);
|
|
1611
|
+
}
|
|
1612
|
+
}
|
|
1532
1613
|
}
|
|
1533
1614
|
} else if (type === "message.updated") {
|
|
1534
1615
|
const sessionID = typeof props.info?.sessionID === "string" ? props.info.sessionID : undefined;
|
|
@@ -1536,6 +1617,15 @@ var createPluginHooks = ({
|
|
|
1536
1617
|
if (sessionID && agent) {
|
|
1537
1618
|
rememberSession(sessionID, { agent });
|
|
1538
1619
|
}
|
|
1620
|
+
if (sessionID) {
|
|
1621
|
+
const usage = props.info?.usage ?? props.usage ?? props.metadata?.usage;
|
|
1622
|
+
if (usage && typeof usage === "object") {
|
|
1623
|
+
telemetry.trackTokenUsage(sessionID, {
|
|
1624
|
+
inputTokens: typeof usage.inputTokens === "number" ? usage.inputTokens : typeof usage.input_tokens === "number" ? usage.input_tokens : undefined,
|
|
1625
|
+
outputTokens: typeof usage.outputTokens === "number" ? usage.outputTokens : typeof usage.output_tokens === "number" ? usage.output_tokens : undefined
|
|
1626
|
+
});
|
|
1627
|
+
}
|
|
1628
|
+
}
|
|
1539
1629
|
} else if (type === "session.deleted") {
|
|
1540
1630
|
const sessionID = typeof props.info?.id === "string" ? props.info.id : typeof props.sessionID === "string" ? props.sessionID : undefined;
|
|
1541
1631
|
if (sessionID) {
|
|
@@ -1559,6 +1649,63 @@ var createPluginHooks = ({
|
|
|
1559
1649
|
childSessionID: sessionID,
|
|
1560
1650
|
autoStatus
|
|
1561
1651
|
});
|
|
1652
|
+
if (autoStatus === "failed" && flags.task_lifecycle) {
|
|
1653
|
+
const retryInfo = taskManager.shouldRetry(link.taskID);
|
|
1654
|
+
if (retryInfo.retry) {
|
|
1655
|
+
const retriedTask = taskManager.incrementRetry(link.taskID);
|
|
1656
|
+
if (!("error" in retriedTask)) {
|
|
1657
|
+
await note("task_retry", {
|
|
1658
|
+
observation: true,
|
|
1659
|
+
taskID: link.taskID,
|
|
1660
|
+
retryCount: retriedTask.retryCount,
|
|
1661
|
+
maxRetries: retriedTask.maxRetries
|
|
1662
|
+
});
|
|
1663
|
+
if (childInfo?.parentID) {
|
|
1664
|
+
const retryText = `[opencode-multiagent retry] Task ${link.taskID} failed and has been reset to pending ` + `(retry ${retriedTask.retryCount}/${retriedTask.maxRetries}). Re-dispatch when ready.`;
|
|
1665
|
+
try {
|
|
1666
|
+
if (client.session?.prompt) {
|
|
1667
|
+
await client.session.prompt({
|
|
1668
|
+
path: { id: childInfo.parentID },
|
|
1669
|
+
body: { parts: [{ type: "text", text: retryText }], noReply: false }
|
|
1670
|
+
});
|
|
1671
|
+
}
|
|
1672
|
+
} catch {}
|
|
1673
|
+
}
|
|
1674
|
+
correlation.removeLink(sessionID);
|
|
1675
|
+
return;
|
|
1676
|
+
}
|
|
1677
|
+
} else if (retryInfo.escalate && retryInfo.model) {
|
|
1678
|
+
taskManager.update(link.taskID, {
|
|
1679
|
+
status: "pending",
|
|
1680
|
+
result: `Escalated to ${retryInfo.model} after exhausting retries`
|
|
1681
|
+
});
|
|
1682
|
+
await note("task_escalation", {
|
|
1683
|
+
observation: true,
|
|
1684
|
+
taskID: link.taskID,
|
|
1685
|
+
escalationModel: retryInfo.model
|
|
1686
|
+
});
|
|
1687
|
+
if (childInfo?.parentID) {
|
|
1688
|
+
const escalateText = `[opencode-multiagent escalation] Task ${link.taskID} exhausted retries. ` + `Re-dispatch with model override: ${retryInfo.model}.`;
|
|
1689
|
+
try {
|
|
1690
|
+
if (client.session?.prompt) {
|
|
1691
|
+
await client.session.prompt({
|
|
1692
|
+
path: { id: childInfo.parentID },
|
|
1693
|
+
body: { parts: [{ type: "text", text: escalateText }], noReply: false }
|
|
1694
|
+
});
|
|
1695
|
+
}
|
|
1696
|
+
} catch {}
|
|
1697
|
+
}
|
|
1698
|
+
correlation.removeLink(sessionID);
|
|
1699
|
+
return;
|
|
1700
|
+
}
|
|
1701
|
+
}
|
|
1702
|
+
if (autoStatus === "completed") {
|
|
1703
|
+
const dependents = taskManager.getDependentsOf(link.taskID);
|
|
1704
|
+
const nowReady = dependents.filter((t) => t.status === "pending" && taskManager.getReadyTasks().some((r) => r.id === t.id));
|
|
1705
|
+
if (nowReady.length > 0) {
|
|
1706
|
+
taskLabel = `${link.taskID} [unblocked: ${nowReady.map((t) => t.id).join(", ")}]`;
|
|
1707
|
+
}
|
|
1708
|
+
}
|
|
1562
1709
|
}
|
|
1563
1710
|
if (link)
|
|
1564
1711
|
correlation.removeLink(sessionID);
|
|
@@ -1592,6 +1739,16 @@ var createPluginHooks = ({
|
|
|
1592
1739
|
agent: label(input.agent),
|
|
1593
1740
|
model: label(input.model, ["id", "name", "modelID"])
|
|
1594
1741
|
});
|
|
1742
|
+
const agentName = label(input.agent);
|
|
1743
|
+
if (agentName && agentSettings?.[agentName]) {
|
|
1744
|
+
const settings = agentSettings[agentName];
|
|
1745
|
+
if (typeof settings.top_p === "number") {
|
|
1746
|
+
output.topP = settings.top_p;
|
|
1747
|
+
}
|
|
1748
|
+
if (settings.options && typeof settings.options === "object") {
|
|
1749
|
+
output.options = { ...output.options, ...settings.options };
|
|
1750
|
+
}
|
|
1751
|
+
}
|
|
1595
1752
|
if (!flags.observation)
|
|
1596
1753
|
return;
|
|
1597
1754
|
const marks = [];
|
|
@@ -1627,7 +1784,7 @@ var createPluginHooks = ({
|
|
|
1627
1784
|
return;
|
|
1628
1785
|
Object.assign(output.headers, {
|
|
1629
1786
|
"x-opencode-multiagent": "1",
|
|
1630
|
-
"x-opencode-multiagent-profile":
|
|
1787
|
+
"x-opencode-multiagent-profile": pluginMode,
|
|
1631
1788
|
"x-opencode-agent": label(input.agent) ?? "unknown"
|
|
1632
1789
|
});
|
|
1633
1790
|
},
|
|
@@ -1816,7 +1973,7 @@ ${experimentalText}`;
|
|
|
1816
1973
|
Object.assign(output.env, {
|
|
1817
1974
|
OPENCODE_MULTIAGENT: "1",
|
|
1818
1975
|
OPENCODE_MULTIAGENT_MODE: pluginMode,
|
|
1819
|
-
OPENCODE_MULTIAGENT_PROFILE:
|
|
1976
|
+
OPENCODE_MULTIAGENT_PROFILE: pluginMode,
|
|
1820
1977
|
OPENCODE_CONTROL_PLANE: "1"
|
|
1821
1978
|
});
|
|
1822
1979
|
},
|
|
@@ -1863,32 +2020,21 @@ ${String(output.output ?? "")}`.toLowerCase();
|
|
|
1863
2020
|
};
|
|
1864
2021
|
|
|
1865
2022
|
// src/opencode-multiagent/runtime.ts
|
|
1866
|
-
var readSettingsSection = (value) => {
|
|
1867
|
-
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
1868
|
-
return {};
|
|
1869
|
-
}
|
|
1870
|
-
return value;
|
|
1871
|
-
};
|
|
1872
2023
|
async function loadRuntimeSettings() {
|
|
1873
|
-
const [bundledDefaults,
|
|
2024
|
+
const [bundledDefaults, userSettings] = await Promise.all([
|
|
1874
2025
|
loadBundledDefaults().catch(() => ({})),
|
|
1875
2026
|
readJSON(settingsPath, {})
|
|
1876
2027
|
]);
|
|
1877
2028
|
const defaultAgentSettings = readBundledDefaultsSection(bundledDefaults, "agentSettings", {});
|
|
1878
|
-
const
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
if (!(profileName in profiles)) {
|
|
1885
|
-
await note("config_warning", {
|
|
1886
|
-
observation: true,
|
|
1887
|
-
warning: "unknown_profile",
|
|
1888
|
-
profile: profileName
|
|
1889
|
-
});
|
|
2029
|
+
const userFlagOverrides = {};
|
|
2030
|
+
if (typeof userSettings.telemetry === "boolean") {
|
|
2031
|
+
userFlagOverrides.telemetry = userSettings.telemetry;
|
|
2032
|
+
}
|
|
2033
|
+
if (typeof userSettings.concurrency_limit === "number") {
|
|
2034
|
+
userFlagOverrides.concurrency_limit = userSettings.concurrency_limit;
|
|
1890
2035
|
}
|
|
1891
|
-
const flags = merge(
|
|
2036
|
+
const flags = merge(defaultFlags, userFlagOverrides);
|
|
2037
|
+
const userAgentSettings = userSettings.agentSettings ?? {};
|
|
1892
2038
|
const agentSettings = merge(defaultAgentSettings, userAgentSettings);
|
|
1893
2039
|
return { flags, agentSettings };
|
|
1894
2040
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/opencode-multiagent/compiler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,KAAK,YAAY,GAAG,aAAa,GAAG;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;CAC5B,CAAC;AAWF,KAAK,mBAAmB,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AA2BpD,KAAK,mBAAmB,GAAG;IACzB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAChD,WAAW,EAAE,mBAAmB,CAAC;CAClC,CAAC;AAEF,wBAAsB,aAAa,CACjC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,EAC/B,aAAa,GAAE,aAAkB,GAChC,OAAO,CAAC,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/opencode-multiagent/compiler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,KAAK,YAAY,GAAG,aAAa,GAAG;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC,CAAC;AAEF,KAAK,qBAAqB,GAAG;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;CAC5B,CAAC;AAWF,KAAK,mBAAmB,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AA2BpD,KAAK,mBAAmB,GAAG;IACzB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAChD,WAAW,EAAE,mBAAmB,CAAC;CAClC,CAAC;AAEF,wBAAsB,aAAa,CACjC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,EAC/B,aAAa,GAAE,aAAkB,GAChC,OAAO,CAAC,mBAAmB,CAAC,CAmD9B;AAED,eAAO,MAAM,oBAAoB,GAC/B,OAAO,MAAM,EACb,QAAQ,MAAM,EACd,SAAS,mBAAmB,KAC3B,OAKF,CAAC;AAEF,wBAAsB,eAAe,CACnC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CAsBf;AAED,eAAO,MAAM,uBAAuB,GAAU,KAAK,YAAY,KAAG,OAAO,CAAC,IAAI,CAqC7E,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,KAAK,YAAY,KAAG,IAc3D,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,MAAM,MAAM,EAAE,WAAW,qBAAqB,KAAG,OAWrF,CAAC;AAEF,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -18,72 +18,7 @@ export declare const qualityEventTypes: Set<string>;
|
|
|
18
18
|
export declare const suspiciousTerms: string[];
|
|
19
19
|
export declare const qualitySignalRegex: RegExp;
|
|
20
20
|
export declare const mcpToolPrefixes: string[];
|
|
21
|
-
export declare const defaultProfiles: {
|
|
22
|
-
minimal: {
|
|
23
|
-
enforcement: boolean;
|
|
24
|
-
observation: boolean;
|
|
25
|
-
prompt_controls: boolean;
|
|
26
|
-
agent_compilation: boolean;
|
|
27
|
-
command_compilation: boolean;
|
|
28
|
-
mcp_compilation: boolean;
|
|
29
|
-
telemetry: boolean;
|
|
30
|
-
supervision: boolean;
|
|
31
|
-
quality_gate: boolean;
|
|
32
|
-
task_lifecycle: boolean;
|
|
33
|
-
quality_gate_enforcement: boolean;
|
|
34
|
-
concurrency_limit: number;
|
|
35
|
-
experimental: {
|
|
36
|
-
chat_system_transform: boolean;
|
|
37
|
-
chat_messages_transform: boolean;
|
|
38
|
-
session_compacting: boolean;
|
|
39
|
-
text_complete: boolean;
|
|
40
|
-
};
|
|
41
|
-
};
|
|
42
|
-
standard: {
|
|
43
|
-
enforcement: boolean;
|
|
44
|
-
observation: boolean;
|
|
45
|
-
prompt_controls: boolean;
|
|
46
|
-
agent_compilation: boolean;
|
|
47
|
-
command_compilation: boolean;
|
|
48
|
-
mcp_compilation: boolean;
|
|
49
|
-
telemetry: boolean;
|
|
50
|
-
supervision: boolean;
|
|
51
|
-
quality_gate: boolean;
|
|
52
|
-
task_lifecycle: boolean;
|
|
53
|
-
quality_gate_enforcement: boolean;
|
|
54
|
-
concurrency_limit: number;
|
|
55
|
-
skill_sources: string[];
|
|
56
|
-
skill_injection: boolean;
|
|
57
|
-
experimental: {
|
|
58
|
-
chat_system_transform: boolean;
|
|
59
|
-
chat_messages_transform: boolean;
|
|
60
|
-
session_compacting: boolean;
|
|
61
|
-
text_complete: boolean;
|
|
62
|
-
};
|
|
63
|
-
};
|
|
64
|
-
strict: {
|
|
65
|
-
enforcement: boolean;
|
|
66
|
-
observation: boolean;
|
|
67
|
-
prompt_controls: boolean;
|
|
68
|
-
agent_compilation: boolean;
|
|
69
|
-
command_compilation: boolean;
|
|
70
|
-
mcp_compilation: boolean;
|
|
71
|
-
telemetry: boolean;
|
|
72
|
-
supervision: boolean;
|
|
73
|
-
quality_gate: boolean;
|
|
74
|
-
task_lifecycle: boolean;
|
|
75
|
-
quality_gate_enforcement: boolean;
|
|
76
|
-
concurrency_limit: number;
|
|
77
|
-
experimental: {
|
|
78
|
-
chat_system_transform: boolean;
|
|
79
|
-
chat_messages_transform: boolean;
|
|
80
|
-
session_compacting: boolean;
|
|
81
|
-
text_complete: boolean;
|
|
82
|
-
};
|
|
83
|
-
};
|
|
84
|
-
};
|
|
85
21
|
export declare const defaultFlags: {
|
|
86
|
-
profile: string;
|
|
87
22
|
enforcement: boolean;
|
|
88
23
|
observation: boolean;
|
|
89
24
|
prompt_controls: boolean;
|
|
@@ -124,5 +59,4 @@ export declare const destructiveBashFragments: string[];
|
|
|
124
59
|
export declare const sensitiveMentions: string[];
|
|
125
60
|
export declare const experimentalText = "[opencode-multiagent experimental] Experimental control-plane transforms are active for this session.";
|
|
126
61
|
export type DefaultFlags = typeof defaultFlags;
|
|
127
|
-
export type DefaultProfiles = typeof defaultProfiles;
|
|
128
62
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/opencode-multiagent/constants.ts"],"names":[],"mappings":"AA4BA,eAAO,MAAM,UAAU,wBAAwB,CAAC;AAChD,eAAO,MAAM,UAAU,WAAW,CAAC;AAEnC,eAAO,MAAM,WAAW,QAAyC,CAAC;AAClE,eAAO,MAAM,SAAS,QAA+B,CAAC;AACtD,eAAO,MAAM,eAAe,QAA8B,CAAC;AAC3D,eAAO,MAAM,iBAAiB,QAAgC,CAAC;AAC/D,eAAO,MAAM,UAAU,QAA4B,CAAC;AACpD,eAAO,MAAM,WAAW,QAA0C,CAAC;AACnE,eAAO,MAAM,YAAY,QAAwC,CAAC;AAElE,eAAO,MAAM,WAAW,QAAsB,CAAC;AAC/C,eAAO,MAAM,mBAAmB,QAA4D,CAAC;AAC7F,eAAO,MAAM,gBAAgB,QAA8B,CAAC;AAC5D,eAAO,MAAM,kBAAkB,QAAgC,CAAC;AAChE,eAAO,MAAM,gBAAgB,QAA8B,CAAC;AAE5D,eAAO,MAAM,iBAAiB,aAW5B,CAAC;AAEH,eAAO,MAAM,qBAAqB,aAKhC,CAAC;AAEH,eAAO,MAAM,iBAAiB,aAA8D,CAAC;AAC7F,eAAO,MAAM,eAAe,UAA0D,CAAC;AACvF,eAAO,MAAM,kBAAkB,QACqF,CAAC;AAErH,eAAO,MAAM,eAAe,UAO3B,CAAC;AAEF,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/opencode-multiagent/constants.ts"],"names":[],"mappings":"AA4BA,eAAO,MAAM,UAAU,wBAAwB,CAAC;AAChD,eAAO,MAAM,UAAU,WAAW,CAAC;AAEnC,eAAO,MAAM,WAAW,QAAyC,CAAC;AAClE,eAAO,MAAM,SAAS,QAA+B,CAAC;AACtD,eAAO,MAAM,eAAe,QAA8B,CAAC;AAC3D,eAAO,MAAM,iBAAiB,QAAgC,CAAC;AAC/D,eAAO,MAAM,UAAU,QAA4B,CAAC;AACpD,eAAO,MAAM,WAAW,QAA0C,CAAC;AACnE,eAAO,MAAM,YAAY,QAAwC,CAAC;AAElE,eAAO,MAAM,WAAW,QAAsB,CAAC;AAC/C,eAAO,MAAM,mBAAmB,QAA4D,CAAC;AAC7F,eAAO,MAAM,gBAAgB,QAA8B,CAAC;AAC5D,eAAO,MAAM,kBAAkB,QAAgC,CAAC;AAChE,eAAO,MAAM,gBAAgB,QAA8B,CAAC;AAE5D,eAAO,MAAM,iBAAiB,aAW5B,CAAC;AAEH,eAAO,MAAM,qBAAqB,aAKhC,CAAC;AAEH,eAAO,MAAM,iBAAiB,aAA8D,CAAC;AAC7F,eAAO,MAAM,eAAe,UAA0D,CAAC;AACvF,eAAO,MAAM,kBAAkB,QACqF,CAAC;AAErH,eAAO,MAAM,eAAe,UAO3B,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCxB,CAAC;AAEF,eAAO,MAAM,oBAAoB,UAA0C,CAAC;AAE5E,eAAO,MAAM,sBAAsB,QAAsD,CAAC;AAC1F,eAAO,MAAM,oBAAoB,UAOhC,CAAC;AACF,eAAO,MAAM,mBAAmB,UAA4B,CAAC;AAE7D,eAAO,MAAM,wBAAwB,UAoBpC,CAAC;AACF,eAAO,MAAM,iBAAiB,UAS7B,CAAC;AAEF,eAAO,MAAM,gBAAgB,0GAC4E,CAAC;AAE1G,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import type { GenericRecord } from './types.ts';
|
|
2
2
|
export type BundledDefaults = {
|
|
3
|
-
flags?: GenericRecord;
|
|
4
3
|
agentSettings?: GenericRecord;
|
|
5
4
|
mcpDefaults?: GenericRecord;
|
|
6
|
-
profiles?: GenericRecord;
|
|
7
5
|
};
|
|
8
6
|
export declare const loadBundledDefaults: () => Promise<BundledDefaults>;
|
|
9
7
|
export declare const readBundledDefaultsSection: <T>(defaults: BundledDefaults, section: keyof BundledDefaults, fallback: T) => T;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/opencode-multiagent/defaults.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,MAAM,MAAM,eAAe,GAAG;IAC5B,
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/opencode-multiagent/defaults.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,MAAM,MAAM,eAAe,GAAG;IAC5B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,aAAa,CAAC;CAC7B,CAAC;AAYF,eAAO,MAAM,mBAAmB,QAAa,OAAO,CAAC,eAAe,CAQnE,CAAC;AAEF,eAAO,MAAM,0BAA0B,GAAI,CAAC,EAC1C,UAAU,eAAe,EACzB,SAAS,MAAM,eAAe,EAC9B,UAAU,CAAC,KACV,CAQF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/opencode-multiagent/hooks.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAiCjD;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG;IAClC,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,yDAAyD;IACzD,cAAc,CAAC,EAAE,CACf,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,EAC7C,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,KACxC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,wDAAwD;IACxD,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE;QACjC,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,sEAAsE;IACtE,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClG,gEAAgE;IAChE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzF,uDAAuD;IACvD,oCAAoC,CAAC,EAAE,CACrC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,KACzB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,mEAAmE;IACnE,sCAAsC,CAAC,EAAE,CACvC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE;QAAE,QAAQ,EAAE,KAAK,CAAC;YAAE,IAAI,CAAC,EAAE;gBAAE,IAAI,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC;YAAC,KAAK,EAAE,OAAO,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE,KACxE,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,uEAAuE;IACvE,iCAAiC,CAAC,EAAE,CAClC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,KAC1B,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,6DAA6D;IAC7D,4BAA4B,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5F,CAAC;AAGF,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAezC,eAAO,MAAM,iBAAiB,GAAI,gDAK/B;IAGD,MAAM,EAAE,GAAG,CAAC;IACZ,KAAK,EAAE,aAAa,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,KAAG,
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/opencode-multiagent/hooks.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAiCjD;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG;IAClC,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,yDAAyD;IACzD,cAAc,CAAC,EAAE,CACf,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,EAC7C,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,KACxC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,wDAAwD;IACxD,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE;QACjC,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,sEAAsE;IACtE,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClG,gEAAgE;IAChE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzF,uDAAuD;IACvD,oCAAoC,CAAC,EAAE,CACrC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,KACzB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,mEAAmE;IACnE,sCAAsC,CAAC,EAAE,CACvC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE;QAAE,QAAQ,EAAE,KAAK,CAAC;YAAE,IAAI,CAAC,EAAE;gBAAE,IAAI,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC;YAAC,KAAK,EAAE,OAAO,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE,KACxE,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,uEAAuE;IACvE,iCAAiC,CAAC,EAAE,CAClC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,KAC1B,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,6DAA6D;IAC7D,4BAA4B,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5F,CAAC;AAGF,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAezC,eAAO,MAAM,iBAAiB,GAAI,gDAK/B;IAGD,MAAM,EAAE,GAAG,CAAC;IACZ,KAAK,EAAE,aAAa,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,KAAG,aAgrBH,CAAC"}
|