@oeronteros-1/opencode-orchestra 0.5.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.
Files changed (96) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +207 -0
  3. package/dashboard-dist/assets/index-89Gs8jun.css +2 -0
  4. package/dashboard-dist/assets/index-Bhe8OPZD.js +124 -0
  5. package/dashboard-dist/index.html +14 -0
  6. package/dist/agents/build.d.ts +7 -0
  7. package/dist/agents/build.js +16 -0
  8. package/dist/agents/build.js.map +1 -0
  9. package/dist/agents/judge.d.ts +3 -0
  10. package/dist/agents/judge.js +29 -0
  11. package/dist/agents/judge.js.map +1 -0
  12. package/dist/agents/lead.d.ts +3 -0
  13. package/dist/agents/lead.js +54 -0
  14. package/dist/agents/lead.js.map +1 -0
  15. package/dist/agents/types.d.ts +14 -0
  16. package/dist/agents/types.js +2 -0
  17. package/dist/agents/types.js.map +1 -0
  18. package/dist/agents/workers.d.ts +3 -0
  19. package/dist/agents/workers.js +114 -0
  20. package/dist/agents/workers.js.map +1 -0
  21. package/dist/cli.d.ts +24 -0
  22. package/dist/cli.js +418 -0
  23. package/dist/cli.js.map +1 -0
  24. package/dist/config/defaults.d.ts +4 -0
  25. package/dist/config/defaults.js +26 -0
  26. package/dist/config/defaults.js.map +1 -0
  27. package/dist/config/load.d.ts +6 -0
  28. package/dist/config/load.js +58 -0
  29. package/dist/config/load.js.map +1 -0
  30. package/dist/config/paths.d.ts +2 -0
  31. package/dist/config/paths.js +13 -0
  32. package/dist/config/paths.js.map +1 -0
  33. package/dist/config/schema.d.ts +341 -0
  34. package/dist/config/schema.js +103 -0
  35. package/dist/config/schema.js.map +1 -0
  36. package/dist/dashboard/server.d.ts +12 -0
  37. package/dist/dashboard/server.js +297 -0
  38. package/dist/dashboard/server.js.map +1 -0
  39. package/dist/index.d.ts +2 -0
  40. package/dist/index.js +85 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/profiles/architecture.d.ts +2 -0
  43. package/dist/profiles/architecture.js +13 -0
  44. package/dist/profiles/architecture.js.map +1 -0
  45. package/dist/profiles/catalog.d.ts +2 -0
  46. package/dist/profiles/catalog.js +39 -0
  47. package/dist/profiles/catalog.js.map +1 -0
  48. package/dist/profiles/debug.d.ts +2 -0
  49. package/dist/profiles/debug.js +14 -0
  50. package/dist/profiles/debug.js.map +1 -0
  51. package/dist/profiles/performance.d.ts +2 -0
  52. package/dist/profiles/performance.js +13 -0
  53. package/dist/profiles/performance.js.map +1 -0
  54. package/dist/profiles/research.d.ts +2 -0
  55. package/dist/profiles/research.js +13 -0
  56. package/dist/profiles/research.js.map +1 -0
  57. package/dist/profiles/security.d.ts +2 -0
  58. package/dist/profiles/security.js +13 -0
  59. package/dist/profiles/security.js.map +1 -0
  60. package/dist/profiles/types.d.ts +9 -0
  61. package/dist/profiles/types.js +2 -0
  62. package/dist/profiles/types.js.map +1 -0
  63. package/dist/profiles/ui.d.ts +2 -0
  64. package/dist/profiles/ui.js +13 -0
  65. package/dist/profiles/ui.js.map +1 -0
  66. package/dist/prompts/load.d.ts +4 -0
  67. package/dist/prompts/load.js +26 -0
  68. package/dist/prompts/load.js.map +1 -0
  69. package/dist/routing/budget.d.ts +11 -0
  70. package/dist/routing/budget.js +45 -0
  71. package/dist/routing/budget.js.map +1 -0
  72. package/dist/routing/classifier.d.ts +10 -0
  73. package/dist/routing/classifier.js +160 -0
  74. package/dist/routing/classifier.js.map +1 -0
  75. package/dist/routing/escalation.d.ts +12 -0
  76. package/dist/routing/escalation.js +30 -0
  77. package/dist/routing/escalation.js.map +1 -0
  78. package/dist/routing/model-discovery.d.ts +3 -0
  79. package/dist/routing/model-discovery.js +96 -0
  80. package/dist/routing/model-discovery.js.map +1 -0
  81. package/dist/routing/model-resolver.d.ts +26 -0
  82. package/dist/routing/model-resolver.js +66 -0
  83. package/dist/routing/model-resolver.js.map +1 -0
  84. package/dist/superpowers/compatibility.d.ts +2 -0
  85. package/dist/superpowers/compatibility.js +9 -0
  86. package/dist/superpowers/compatibility.js.map +1 -0
  87. package/dist/telemetry/ledger.d.ts +68 -0
  88. package/dist/telemetry/ledger.js +179 -0
  89. package/dist/telemetry/ledger.js.map +1 -0
  90. package/dist/tools.d.ts +4 -0
  91. package/dist/tools.js +57 -0
  92. package/dist/tools.js.map +1 -0
  93. package/package.json +79 -0
  94. package/prompts/judge.md +13 -0
  95. package/prompts/lead.md +24 -0
  96. package/schema/opencode-orchestra.schema.json +112 -0
package/dist/cli.js ADDED
@@ -0,0 +1,418 @@
1
+ #!/usr/bin/env bun
2
+ import { spawnSync } from "node:child_process";
3
+ import { copyFile, mkdir, mkdtemp, readFile, realpath, rename, rm, writeFile } from "node:fs/promises";
4
+ import os from "node:os";
5
+ import path from "node:path";
6
+ import { pathToFileURL } from "node:url";
7
+ import { applyEdits, modify, parse, printParseErrorCode } from "jsonc-parser";
8
+ import { openCodeConfigDirectory } from "./config/paths.js";
9
+ import { startDashboard } from "./dashboard/server.js";
10
+ const PACKAGE_NAME = "@oeronteros-1/opencode-orchestra";
11
+ const CONTEXT7_URL = "https://mcp.context7.com/mcp";
12
+ const CODEBASE_MEMORY_INSTALLER = "https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.sh";
13
+ const CODEBASE_MEMORY_WINDOWS_INSTALLER = "https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.ps1";
14
+ const UV_INSTALLER = "https://astral.sh/uv/install.sh";
15
+ const UV_WINDOWS_INSTALLER = "https://astral.sh/uv/install.ps1";
16
+ const FORMATTING = { insertSpaces: true, tabSize: 2, eol: "\n" };
17
+ function parseObject(text, file) {
18
+ const errors = [];
19
+ const value = parse(text, errors, { allowTrailingComma: true, disallowComments: false });
20
+ if (errors.length > 0) {
21
+ const details = errors.map((error) => `${printParseErrorCode(error.error)}@${error.offset}`).join(", ");
22
+ throw new Error(`Cannot update invalid JSONC file ${file}: ${details}`);
23
+ }
24
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
25
+ throw new Error(`Expected a JSON object in ${file}`);
26
+ }
27
+ return value;
28
+ }
29
+ function setJsonc(text, location, value) {
30
+ return applyEdits(text, modify(text, location, value, { formattingOptions: FORMATTING }));
31
+ }
32
+ function pluginName(entry) {
33
+ if (typeof entry === "string")
34
+ return entry;
35
+ if (Array.isArray(entry) && typeof entry[0] === "string")
36
+ return entry[0];
37
+ return undefined;
38
+ }
39
+ async function existingMainConfig(configDirectory) {
40
+ for (const name of ["opencode.json", "opencode.jsonc"]) {
41
+ const candidate = path.join(configDirectory, name);
42
+ try {
43
+ await readFile(candidate, "utf8");
44
+ return candidate;
45
+ }
46
+ catch {
47
+ // Try the next supported filename.
48
+ }
49
+ }
50
+ return path.join(configDirectory, "opencode.json");
51
+ }
52
+ async function atomicWrite(file, content) {
53
+ const temporary = `${file}.orchestra-tmp`;
54
+ await writeFile(temporary, content, "utf8");
55
+ await rename(temporary, file);
56
+ }
57
+ function executable(candidates) {
58
+ return candidates.find((name) => spawnSync(name, ["--version"], { stdio: "ignore" }).status === 0);
59
+ }
60
+ function powershell() {
61
+ return ["pwsh", "powershell"].find((name) => spawnSync(name, ["-NoProfile", "-Command", "exit 0"], { stdio: "ignore" }).status === 0);
62
+ }
63
+ function executableName(name) {
64
+ return process.platform === "win32" ? `${name}.exe` : name;
65
+ }
66
+ function localBin(name) {
67
+ return path.join(os.homedir(), ".local", "bin", executableName(name));
68
+ }
69
+ function codebaseMemoryCandidates() {
70
+ const candidates = ["codebase-memory-mcp", localBin("codebase-memory-mcp")];
71
+ if (process.platform === "win32" && process.env.LOCALAPPDATA) {
72
+ candidates.push(path.join(process.env.LOCALAPPDATA, "Programs", "codebase-memory-mcp", "codebase-memory-mcp.exe"));
73
+ }
74
+ return candidates;
75
+ }
76
+ function capture(command, args) {
77
+ const result = spawnSync(command, args, { encoding: "utf8", stdio: ["ignore", "pipe", "ignore"] });
78
+ return result.status === 0 ? result.stdout.trim() : undefined;
79
+ }
80
+ function run(command, args, env) {
81
+ const result = spawnSync(command, args, { stdio: "inherit", ...(env ? { env } : {}) });
82
+ if (result.error)
83
+ throw result.error;
84
+ if (result.status !== 0)
85
+ throw new Error(`Command failed (${result.status ?? "unknown"}): ${command} ${args.join(" ")}`);
86
+ }
87
+ async function downloadScript(url, filename) {
88
+ const response = await fetch(url, { redirect: "follow" });
89
+ if (!response.ok)
90
+ throw new Error(`Failed to download ${url}: HTTP ${response.status}`);
91
+ const directory = await mkdtemp(path.join(os.tmpdir(), "opencode-orchestra-"));
92
+ const file = path.join(directory, filename);
93
+ await writeFile(file, await response.text(), "utf8");
94
+ return { directory, file };
95
+ }
96
+ async function provisionCodebaseMemory(enabled) {
97
+ if (!enabled)
98
+ return { command: "codebase-memory-mcp", status: "skipped" };
99
+ const current = executable(codebaseMemoryCandidates());
100
+ if (current) {
101
+ run(current, ["config", "set", "auto_index", "true"]);
102
+ return { command: current, status: "existing" };
103
+ }
104
+ const windows = process.platform === "win32";
105
+ const script = await downloadScript(windows ? CODEBASE_MEMORY_WINDOWS_INSTALLER : CODEBASE_MEMORY_INSTALLER, windows ? "codebase-memory-install.ps1" : "codebase-memory-install.sh");
106
+ try {
107
+ if (windows) {
108
+ const shell = powershell();
109
+ if (!shell)
110
+ throw new Error("PowerShell is required to install Codebase Memory on Windows.");
111
+ run(shell, ["-NoProfile", "-ExecutionPolicy", "Bypass", "-File", script.file, "--skip-config"]);
112
+ }
113
+ else {
114
+ run("bash", [script.file, "--skip-config"]);
115
+ }
116
+ }
117
+ finally {
118
+ await rm(script.directory, { recursive: true, force: true });
119
+ }
120
+ const installed = executable(codebaseMemoryCandidates());
121
+ if (!installed)
122
+ throw new Error("Codebase Memory installer completed, but its executable was not found.");
123
+ run(installed, ["config", "set", "auto_index", "true"]);
124
+ return { command: installed, status: "installed" };
125
+ }
126
+ async function ensureUv() {
127
+ const current = executable(["uv", localBin("uv")]);
128
+ if (current)
129
+ return { command: current, status: "existing" };
130
+ const windows = process.platform === "win32";
131
+ const script = await downloadScript(windows ? UV_WINDOWS_INSTALLER : UV_INSTALLER, windows ? "uv-install.ps1" : "uv-install.sh");
132
+ try {
133
+ if (windows) {
134
+ const shell = powershell();
135
+ if (!shell)
136
+ throw new Error("PowerShell is required to install uv on Windows.");
137
+ run(shell, ["-NoProfile", "-ExecutionPolicy", "Bypass", "-File", script.file], {
138
+ ...process.env,
139
+ UV_NO_MODIFY_PATH: "1",
140
+ });
141
+ }
142
+ else {
143
+ run("sh", [script.file], { ...process.env, UV_NO_MODIFY_PATH: "1" });
144
+ }
145
+ }
146
+ finally {
147
+ await rm(script.directory, { recursive: true, force: true });
148
+ }
149
+ const installed = executable([localBin("uv"), "uv"]);
150
+ if (!installed)
151
+ throw new Error("uv installer completed, but its executable was not found.");
152
+ return { command: installed, status: "installed" };
153
+ }
154
+ async function provisionMemoryGraph(enabled) {
155
+ if (!enabled)
156
+ return { command: "memorygraph", status: "skipped" };
157
+ const current = executable(["memorygraph", localBin("memorygraph")]);
158
+ if (current)
159
+ return { command: current, status: "existing" };
160
+ const uv = await ensureUv();
161
+ run(uv.command, ["tool", "install", "memorygraphMCP"]);
162
+ const toolBin = capture(uv.command, ["tool", "dir", "--bin"]);
163
+ const installed = executable([
164
+ ...(toolBin ? [path.join(toolBin, executableName("memorygraph"))] : []),
165
+ localBin("memorygraph"),
166
+ "memorygraph",
167
+ ]);
168
+ if (!installed)
169
+ throw new Error("memorygraphMCP installed, but its executable was not found.");
170
+ return { command: installed, status: "installed" };
171
+ }
172
+ export async function install(options) {
173
+ const shouldProvision = options.provisionDependencies && !options.dryRun;
174
+ const codebase = options.codebaseMemory
175
+ ? await provisionCodebaseMemory(shouldProvision)
176
+ : { command: "codebase-memory-mcp", status: "skipped" };
177
+ const memoryGraph = options.memoryGraph
178
+ ? await provisionMemoryGraph(shouldProvision)
179
+ : { command: "memorygraph", status: "skipped" };
180
+ const configDirectory = path.resolve(options.configDirectory ?? openCodeConfigDirectory());
181
+ const openCodeConfig = await existingMainConfig(configDirectory);
182
+ const orchestraConfig = path.join(configDirectory, "orchestra.jsonc");
183
+ if (!options.dryRun)
184
+ await mkdir(configDirectory, { recursive: true });
185
+ let original = "{}\n";
186
+ let existed = false;
187
+ try {
188
+ original = await readFile(openCodeConfig, "utf8");
189
+ existed = true;
190
+ }
191
+ catch {
192
+ // A new config is created below.
193
+ }
194
+ const root = parseObject(original, openCodeConfig);
195
+ let updated = original;
196
+ const changed = [];
197
+ const preserved = [];
198
+ if (!("$schema" in root))
199
+ updated = setJsonc(updated, ["$schema"], "https://opencode.ai/config.json");
200
+ const plugins = Array.isArray(root.plugin) ? [...root.plugin] : [];
201
+ if (root.plugin !== undefined && !Array.isArray(root.plugin)) {
202
+ throw new Error(`Expected \"plugin\" to be an array in ${openCodeConfig}`);
203
+ }
204
+ let pluginsChanged = false;
205
+ if (!plugins.some((entry) => pluginName(entry) === PACKAGE_NAME)) {
206
+ plugins.push(PACKAGE_NAME);
207
+ changed.push("plugin");
208
+ pluginsChanged = true;
209
+ }
210
+ if (pluginsChanged)
211
+ updated = setJsonc(updated, ["plugin"], plugins);
212
+ const mcp = typeof root.mcp === "object" && root.mcp !== null && !Array.isArray(root.mcp)
213
+ ? root.mcp
214
+ : {};
215
+ if (root.mcp !== undefined && (typeof root.mcp !== "object" || root.mcp === null || Array.isArray(root.mcp))) {
216
+ throw new Error(`Expected \"mcp\" to be an object in ${openCodeConfig}`);
217
+ }
218
+ const addMcp = (name, value) => {
219
+ if (mcp[name] !== undefined && !options.force) {
220
+ preserved.push(`mcp.${name}`);
221
+ return;
222
+ }
223
+ updated = setJsonc(updated, ["mcp", name], value);
224
+ changed.push(`mcp.${name}`);
225
+ };
226
+ if (options.context7) {
227
+ addMcp("context7", { type: "remote", url: CONTEXT7_URL, enabled: true, oauth: false });
228
+ }
229
+ if (options.codebaseMemory) {
230
+ addMcp("codebase-memory", {
231
+ type: "local",
232
+ command: [codebase.command],
233
+ enabled: true,
234
+ timeout: 30_000,
235
+ });
236
+ }
237
+ if (options.memoryGraph) {
238
+ addMcp("memorygraph", {
239
+ type: "local",
240
+ command: [memoryGraph.command],
241
+ enabled: true,
242
+ timeout: 30_000,
243
+ });
244
+ }
245
+ let backup;
246
+ if (updated !== original && !options.dryRun) {
247
+ if (existed) {
248
+ const stamp = new Date().toISOString().replaceAll(":", "-");
249
+ backup = `${openCodeConfig}.bak-${stamp}`;
250
+ await copyFile(openCodeConfig, backup);
251
+ }
252
+ await atomicWrite(openCodeConfig, updated.endsWith("\n") ? updated : `${updated}\n`);
253
+ }
254
+ try {
255
+ const orchestraOriginal = await readFile(orchestraConfig, "utf8");
256
+ parseObject(orchestraOriginal, orchestraConfig);
257
+ preserved.push("orchestra.jsonc");
258
+ }
259
+ catch (error) {
260
+ if (error.code !== "ENOENT")
261
+ throw error;
262
+ changed.push("orchestra.jsonc");
263
+ if (!options.dryRun) {
264
+ const content = `${JSON.stringify({
265
+ $schema: "https://unpkg.com/@oeronteros-1/opencode-orchestra@latest/schema/opencode-orchestra.schema.json",
266
+ budget: "balanced",
267
+ models: { strategy: "auto", agents: {} },
268
+ }, null, 2)}\n`;
269
+ await atomicWrite(orchestraConfig, content);
270
+ }
271
+ }
272
+ return {
273
+ openCodeConfig,
274
+ orchestraConfig,
275
+ changed,
276
+ preserved,
277
+ ...(backup ? { backup } : {}),
278
+ dependencies: {
279
+ codebaseMemory: codebase.status,
280
+ memoryGraph: memoryGraph.status,
281
+ },
282
+ };
283
+ }
284
+ function usage() {
285
+ return [
286
+ "OpenCode Orchestra",
287
+ "",
288
+ "Usage:",
289
+ " bunx @oeronteros-1/opencode-orchestra@latest install [options]",
290
+ " bunx @oeronteros-1/opencode-orchestra@latest dashboard [options]",
291
+ "",
292
+ "Options:",
293
+ " --no-context7 Do not configure Context7 MCP",
294
+ " --no-codebase-memory Do not install or configure Codebase Memory MCP",
295
+ " --no-memorygraph Do not install or configure MemoryGraph MCP",
296
+ " --no-deps Only write config; do not install local MCP executables",
297
+ " --force Replace existing MCP entries with Orchestra defaults",
298
+ " --dry-run Show intended changes without writing files or downloading",
299
+ " --config-dir DIR Override the OpenCode config directory",
300
+ "",
301
+ "Dashboard options:",
302
+ " --directory DIR Project whose local telemetry should be displayed",
303
+ " --config-dir DIR Override the OpenCode config directory",
304
+ " --host HOST Bind address (default: 127.0.0.1)",
305
+ " --port PORT Bind port (default: automatic)",
306
+ " --no-open Do not open the browser automatically",
307
+ ].join("\n");
308
+ }
309
+ function parseArguments(argv) {
310
+ if (argv[0] === "--help" || argv[0] === "-h")
311
+ return "help";
312
+ if (argv[0] === "dashboard") {
313
+ const options = {};
314
+ for (let index = 1; index < argv.length; index += 1) {
315
+ const argument = argv[index];
316
+ if (argument === "--no-open")
317
+ options.open = false;
318
+ else if (argument === "--directory") {
319
+ const directory = argv[++index];
320
+ if (!directory)
321
+ throw new Error("--directory requires a path");
322
+ options.directory = directory;
323
+ }
324
+ else if (argument === "--config-dir") {
325
+ const directory = argv[++index];
326
+ if (!directory)
327
+ throw new Error("--config-dir requires a directory");
328
+ options.configDirectory = directory;
329
+ }
330
+ else if (argument === "--host") {
331
+ const host = argv[++index];
332
+ if (!host)
333
+ throw new Error("--host requires an address");
334
+ options.host = host;
335
+ }
336
+ else if (argument === "--port") {
337
+ const port = Number(argv[++index]);
338
+ if (!Number.isInteger(port) || port < 0 || port > 65_535)
339
+ throw new Error("--port requires a number from 0 to 65535");
340
+ options.port = port;
341
+ }
342
+ else
343
+ throw new Error(`Unknown dashboard option: ${argument}`);
344
+ }
345
+ return { command: "dashboard", options };
346
+ }
347
+ if (argv[0] !== "install")
348
+ throw new Error(`Unknown command: ${argv[0] ?? "(missing)"}`);
349
+ const options = {
350
+ context7: true,
351
+ codebaseMemory: true,
352
+ memoryGraph: true,
353
+ provisionDependencies: true,
354
+ force: false,
355
+ dryRun: false,
356
+ };
357
+ for (let index = 1; index < argv.length; index += 1) {
358
+ const argument = argv[index];
359
+ if (argument === "--no-context7")
360
+ options.context7 = false;
361
+ else if (argument === "--no-codebase-memory")
362
+ options.codebaseMemory = false;
363
+ else if (argument === "--no-memorygraph")
364
+ options.memoryGraph = false;
365
+ else if (argument === "--no-deps")
366
+ options.provisionDependencies = false;
367
+ else if (argument === "--force")
368
+ options.force = true;
369
+ else if (argument === "--dry-run")
370
+ options.dryRun = true;
371
+ else if (argument === "--config-dir") {
372
+ const directory = argv[++index];
373
+ if (!directory)
374
+ throw new Error("--config-dir requires a directory");
375
+ options.configDirectory = directory;
376
+ }
377
+ else
378
+ throw new Error(`Unknown option: ${argument}`);
379
+ }
380
+ return { command: "install", options };
381
+ }
382
+ async function main() {
383
+ try {
384
+ const parsed = parseArguments(process.argv.slice(2));
385
+ if (parsed === "help") {
386
+ console.log(usage());
387
+ return;
388
+ }
389
+ if (parsed.command === "dashboard") {
390
+ const dashboard = await startDashboard(parsed.options);
391
+ console.log(`Orchestra dashboard: ${dashboard.url}`);
392
+ console.log("Press Ctrl+C to stop.");
393
+ return;
394
+ }
395
+ const result = await install(parsed.options);
396
+ console.log(`OpenCode Orchestra configured: ${result.openCodeConfig}`);
397
+ console.log(`Agent settings: ${result.orchestraConfig}`);
398
+ console.log(`Codebase Memory: ${result.dependencies.codebaseMemory}`);
399
+ console.log(`MemoryGraph: ${result.dependencies.memoryGraph}`);
400
+ if (result.changed.length > 0)
401
+ console.log(`Changed: ${result.changed.join(", ")}`);
402
+ if (result.preserved.length > 0)
403
+ console.log(`Preserved: ${result.preserved.join(", ")}`);
404
+ if (result.backup)
405
+ console.log(`Backup: ${result.backup}`);
406
+ }
407
+ catch (error) {
408
+ console.error(error instanceof Error ? error.message : String(error));
409
+ console.error(usage());
410
+ process.exitCode = 1;
411
+ }
412
+ }
413
+ const invoked = process.argv[1]
414
+ ? pathToFileURL(await realpath(path.resolve(process.argv[1])).catch(() => path.resolve(process.argv[1]))).href
415
+ : "";
416
+ if (invoked === import.meta.url)
417
+ await main();
418
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { OrchestraConfig } from "./schema.js";
2
+ export declare const DEFAULT_CONFIG: OrchestraConfig;
3
+ export declare function withDefaults(input: unknown): OrchestraConfig;
4
+ export declare function applyBudgetPreset(config: OrchestraConfig): OrchestraConfig;
@@ -0,0 +1,26 @@
1
+ import { PROFILE_NAMES, orchestraConfigSchema } from "./schema.js";
2
+ const enabledProfiles = Object.fromEntries(PROFILE_NAMES.map((profile) => [profile, true]));
3
+ export const DEFAULT_CONFIG = orchestraConfigSchema.parse({
4
+ orchestration: {
5
+ profiles: enabledProfiles,
6
+ },
7
+ });
8
+ export function withDefaults(input) {
9
+ return orchestraConfigSchema.parse(input);
10
+ }
11
+ export function applyBudgetPreset(config) {
12
+ if (config.budget !== "ebobo")
13
+ return config;
14
+ return {
15
+ ...config,
16
+ orchestration: {
17
+ ...config.orchestration,
18
+ parallelWorkers: 8,
19
+ maxWorkers: 12,
20
+ premiumEscalation: true,
21
+ maxPremiumCallsPerTask: 5,
22
+ confidenceThreshold: 0.95,
23
+ },
24
+ };
25
+ }
26
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAElE,MAAM,eAAe,GAAG,MAAM,CAAC,WAAW,CACxC,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAChB,CAAA;AAEjC,MAAM,CAAC,MAAM,cAAc,GAAoB,qBAAqB,CAAC,KAAK,CAAC;IACzE,aAAa,EAAE;QACb,QAAQ,EAAE,eAAe;KAC1B;CACF,CAAC,CAAA;AAEF,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;AAC3C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAuB;IACvD,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO;QAAE,OAAO,MAAM,CAAA;IAC5C,OAAO;QACL,GAAG,MAAM;QACT,aAAa,EAAE;YACb,GAAG,MAAM,CAAC,aAAa;YACvB,eAAe,EAAE,CAAC;YAClB,UAAU,EAAE,EAAE;YACd,iBAAiB,EAAE,IAAI;YACvB,sBAAsB,EAAE,CAAC;YACzB,mBAAmB,EAAE,IAAI;SAC1B;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { OrchestraConfig } from "./schema.js";
2
+ export interface LoadedConfig {
3
+ config: OrchestraConfig;
4
+ source?: string;
5
+ }
6
+ export declare function loadConfig(directory: string, rawOptions?: Record<string, unknown>): Promise<LoadedConfig>;
@@ -0,0 +1,58 @@
1
+ import { access, readFile } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { parse as parseJsonc, printParseErrorCode } from "jsonc-parser";
4
+ import { orchestraConfigSchema } from "./schema.js";
5
+ import { globalOrchestraConfig } from "./paths.js";
6
+ function isObject(value) {
7
+ return typeof value === "object" && value !== null && !Array.isArray(value);
8
+ }
9
+ function mergeConfig(base, override) {
10
+ if (!isObject(base) || !isObject(override))
11
+ return override;
12
+ const result = { ...base };
13
+ for (const [key, value] of Object.entries(override)) {
14
+ result[key] = key in result ? mergeConfig(result[key], value) : value;
15
+ }
16
+ return result;
17
+ }
18
+ async function exists(file) {
19
+ try {
20
+ await access(file);
21
+ return true;
22
+ }
23
+ catch {
24
+ return false;
25
+ }
26
+ }
27
+ async function readJsonc(file) {
28
+ const text = await readFile(file, "utf8");
29
+ const errors = [];
30
+ const value = parseJsonc(text, errors, { allowTrailingComma: true, disallowComments: false });
31
+ if (errors.length > 0) {
32
+ const details = errors.map((error) => `${printParseErrorCode(error.error)} at offset ${error.offset}`).join(", ");
33
+ throw new Error(`Invalid Orchestra config ${file}: ${details}`);
34
+ }
35
+ return value;
36
+ }
37
+ export async function loadConfig(directory, rawOptions = {}) {
38
+ const options = { ...rawOptions };
39
+ const explicit = typeof options.configFile === "string" ? options.configFile : undefined;
40
+ delete options.configFile;
41
+ const candidates = explicit
42
+ ? [path.resolve(directory, explicit)]
43
+ : [
44
+ globalOrchestraConfig(),
45
+ path.join(directory, ".opencode", "orchestra.json"),
46
+ path.join(directory, ".opencode", "orchestra.jsonc"),
47
+ ];
48
+ const sources = (await Promise.all(candidates.map(async (candidate) => ((await exists(candidate)) ? candidate : undefined)))).filter((candidate) => Boolean(candidate));
49
+ let fromFile = {};
50
+ for (const source of sources)
51
+ fromFile = mergeConfig(fromFile, await readJsonc(source));
52
+ const merged = mergeConfig(fromFile, options);
53
+ return {
54
+ config: orchestraConfigSchema.parse(merged),
55
+ ...(sources.length > 0 ? { source: sources.join(" -> ") } : {}),
56
+ };
57
+ }
58
+ //# sourceMappingURL=load.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,mBAAmB,EAAmB,MAAM,cAAc,CAAA;AAExF,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAElD,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC7E,CAAC;AAED,SAAS,WAAW,CAAC,IAAa,EAAE,QAAiB;IACnD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAA;IAC3D,MAAM,MAAM,GAA4B,EAAE,GAAG,IAAI,EAAE,CAAA;IACnD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IACvE,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,IAAY;IAChC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAA;QAClB,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,IAAY;IACnC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACzC,MAAM,MAAM,GAAiB,EAAE,CAAA;IAC/B,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAA;IAC7F,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACjH,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,KAAK,OAAO,EAAE,CAAC,CAAA;IACjE,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,SAAiB,EACjB,aAAsC,EAAE;IAExC,MAAM,OAAO,GAAG,EAAE,GAAG,UAAU,EAA4B,CAAA;IAC3D,MAAM,QAAQ,GAAG,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAA;IACxF,OAAO,OAAO,CAAC,UAAU,CAAA;IAEzB,MAAM,UAAU,GAAG,QAAQ;QACzB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACrC,CAAC,CAAC;YACE,qBAAqB,EAAE;YACvB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,gBAAgB,CAAC;YACnD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,iBAAiB,CAAC;SACrD,CAAA;IACL,MAAM,OAAO,GAAG,CACd,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAC5G,CAAC,MAAM,CAAC,CAAC,SAAS,EAAuB,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAA;IAChE,IAAI,QAAQ,GAAY,EAAE,CAAA;IAC1B,KAAK,MAAM,MAAM,IAAI,OAAO;QAAE,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE,MAAM,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;IACvF,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAE7C,OAAO;QACL,MAAM,EAAE,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC;QAC3C,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChE,CAAA;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function openCodeConfigDirectory(env?: NodeJS.ProcessEnv): string;
2
+ export declare function globalOrchestraConfig(env?: NodeJS.ProcessEnv): string;
@@ -0,0 +1,13 @@
1
+ import os from "node:os";
2
+ import path from "node:path";
3
+ export function openCodeConfigDirectory(env = process.env) {
4
+ if (env.OPENCODE_CONFIG_DIR)
5
+ return path.resolve(env.OPENCODE_CONFIG_DIR);
6
+ if (env.XDG_CONFIG_HOME)
7
+ return path.join(path.resolve(env.XDG_CONFIG_HOME), "opencode");
8
+ return path.join(os.homedir(), ".config", "opencode");
9
+ }
10
+ export function globalOrchestraConfig(env = process.env) {
11
+ return path.join(openCodeConfigDirectory(env), "orchestra.jsonc");
12
+ }
13
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,MAAM,UAAU,uBAAuB,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC1E,IAAI,GAAG,CAAC,mBAAmB;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;IACzE,IAAI,GAAG,CAAC,eAAe;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,UAAU,CAAC,CAAA;IACxF,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;AACvD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACxE,OAAO,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,EAAE,iBAAiB,CAAC,CAAA;AACnE,CAAC"}