@autodidacticon/orchestrator 0.1.0 → 0.3.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 (64) hide show
  1. package/README.md +60 -33
  2. package/dist/src/agent/mcp-shim.js +1 -1
  3. package/dist/src/agent/server.js +11 -6
  4. package/dist/src/agent/server.js.map +1 -1
  5. package/dist/src/brief/compose.js +8 -1
  6. package/dist/src/brief/compose.js.map +1 -1
  7. package/dist/src/config.js +23 -3
  8. package/dist/src/config.js.map +1 -1
  9. package/dist/src/graph/load.js +4 -0
  10. package/dist/src/graph/load.js.map +1 -1
  11. package/dist/src/import/mapping.js +29 -5
  12. package/dist/src/import/mapping.js.map +1 -1
  13. package/dist/src/index.js +8 -1
  14. package/dist/src/index.js.map +1 -1
  15. package/dist/src/launch/launch.js +5 -1
  16. package/dist/src/launch/launch.js.map +1 -1
  17. package/dist/src/log.js +20 -0
  18. package/dist/src/log.js.map +1 -0
  19. package/dist/src/loop/orchestrator.js +94 -3
  20. package/dist/src/loop/orchestrator.js.map +1 -1
  21. package/dist/src/loop/tick.js +2 -1
  22. package/dist/src/loop/tick.js.map +1 -1
  23. package/dist/src/main.js +115 -33
  24. package/dist/src/main.js.map +1 -1
  25. package/dist/src/operator/cli.js +40 -2
  26. package/dist/src/operator/cli.js.map +1 -1
  27. package/dist/src/operator/mcp-server.js +41 -9
  28. package/dist/src/operator/mcp-server.js.map +1 -1
  29. package/dist/src/operator/mcp.js +1 -1
  30. package/dist/src/operator/routes.js +62 -5
  31. package/dist/src/operator/routes.js.map +1 -1
  32. package/dist/src/runner/claude-code.js +1 -1
  33. package/dist/src/runner/claude-code.js.map +1 -1
  34. package/dist/src/runner/command.js +24 -0
  35. package/dist/src/runner/command.js.map +1 -0
  36. package/dist/src/runner/selection.js +20 -0
  37. package/dist/src/runner/selection.js.map +1 -0
  38. package/dist/src/runner/subprocess.js +7 -1
  39. package/dist/src/runner/subprocess.js.map +1 -1
  40. package/dist/src/runs/childEnv.js +32 -0
  41. package/dist/src/runs/childEnv.js.map +1 -0
  42. package/dist/src/runs/lifecycle.js +102 -5
  43. package/dist/src/runs/lifecycle.js.map +1 -1
  44. package/dist/src/runs/resolve.js +217 -0
  45. package/dist/src/runs/resolve.js.map +1 -0
  46. package/dist/src/runs/runDir.js +63 -13
  47. package/dist/src/runs/runDir.js.map +1 -1
  48. package/dist/src/state/store.js.map +1 -1
  49. package/dist/src/toolchain/branch.js +19 -0
  50. package/dist/src/toolchain/branch.js.map +1 -0
  51. package/dist/src/toolchain/detect.js +115 -0
  52. package/dist/src/toolchain/detect.js.map +1 -0
  53. package/dist/src/toolchain/tools.js +56 -0
  54. package/dist/src/toolchain/tools.js.map +1 -0
  55. package/dist/src/verify/verifier.js +9 -3
  56. package/dist/src/verify/verifier.js.map +1 -1
  57. package/hosts/claude-code/.claude-plugin/plugin.json +1 -1
  58. package/hosts/claude-code/package-lock.json +1247 -0
  59. package/hosts/claude-code/package.json +1 -1
  60. package/hosts/claude-code/skills/import/SKILL.md +66 -14
  61. package/hosts/claude-code/skills/run/SKILL.md +83 -21
  62. package/hosts/claude-code/skills/work/SKILL.md +25 -6
  63. package/hosts/claude-code/workflows/work.js +23 -9
  64. package/package.json +1 -1
package/dist/src/main.js CHANGED
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
3
  * Daemon entrypoint.
4
- * orchestrator --config orchestrator.yaml [--reap-on-exit]
4
+ * orchestrator [--repo <path>] [--config orchestrator.yaml] [--reap-on-exit] [--mode m] [--default-mode m] [--set key=value]...
5
5
  * SIGTERM/SIGINT: graceful stop (agents keep running for adoption) unless --reap-on-exit.
6
6
  */
7
- import { readFileSync } from 'node:fs';
7
+ import { readFileSync, writeFileSync } from 'node:fs';
8
8
  import { mkdir } from 'node:fs/promises';
9
9
  import { parse as parseYaml } from 'yaml';
10
10
  import path from 'node:path';
@@ -18,26 +18,36 @@ import { registerOperatorRoutes } from './operator/routes.js';
18
18
  import { ClaudeCodeRunner } from './runner/claude-code.js';
19
19
  import { SqliteStore } from './state/sqlite.js';
20
20
  import { GitVerifierBackend } from './verify/verifier.js';
21
- import { ensureRunDir, readRepoConfigRaw, resolveRepoPath, resolveRunConfig, runIdFor, writeDaemonJson, writeExitRecord } from './runs/runDir.js';
21
+ import { DAEMON_PID, ensureRunDir, readRepoConfigRaw, resolveFileConfig, resolveRepoPath, resolveRunConfig, runIdFor, writeConfigJson, writeDaemonJson, writeExitRecord } from './runs/runDir.js';
22
+ import { configSummary, mergeOverrides, parseSetFlags, readOverrides, reportOf } from './runs/resolve.js';
22
23
  import { digestOf } from './operator/routes.js';
23
24
  import { runIdOf, setRunId } from './state/store.js';
24
25
  import { randomUUID } from 'node:crypto';
25
26
  import { revParse } from './workspace/git.js';
26
27
  import { GitWorkspace } from './workspace/git-workspace.js';
27
28
  import { isEntrypoint } from './entry.js';
28
- export const stderrLogger = {
29
- info: (msg, data) => process.stderr.write(`${new Date().toISOString()} INFO ${msg}${data ? ` ${JSON.stringify(data)}` : ''}\n`),
30
- warn: (msg, data) => process.stderr.write(`${new Date().toISOString()} WARN ${msg}${data ? ` ${JSON.stringify(data)}` : ''}\n`),
31
- error: (msg, data) => process.stderr.write(`${new Date().toISOString()} ERROR ${msg}${data ? ` ${JSON.stringify(data)}` : ''}\n`),
32
- };
29
+ import { makeStderrLogger } from './log.js';
30
+ /** Text by default; one JSON object per line with ORCH_LOG_FORMAT=json. */
31
+ export const stderrLogger = makeStderrLogger();
32
+ /** How long a signalled shutdown may wait for the in-flight tick and verifier job before exiting anyway. */
33
+ const SHUTDOWN_GRACE_MS = 8_000;
33
34
  export const USAGE = `orchestrator: the daemon.
34
35
 
35
- orchestrator [--repo <path>] [--config orchestrator.yaml] [--reap-on-exit] [--mode spawn|pull|mixed] [--default-mode spawn|pull|mixed]
36
+ orchestrator [--repo <path>] [--config orchestrator.yaml] [--reap-on-exit] [--mode spawn|pull|mixed] [--default-mode spawn|pull|mixed] [--set key=value]...
36
37
 
37
38
  With --repo (or inside a repository), run data lives under ORCH_HOME
38
39
  (~/.orchestrator) keyed by the repository path, and <repo>/orchestrator.yaml is
39
40
  read when present. With --config, the file's dataDir and graphPath are used.
40
41
 
42
+ No file is needed: the check command, the integration branch, and the tools
43
+ agents may run are detected from the repository root, and every value records
44
+ where it came from (argument, file, pinned, detected, default) in
45
+ <runDir>/config.json and in status. --set key=value stores a durable override
46
+ for the run before resolving; keys: checkCommand, integrationBranch (start-only),
47
+ capacity, allowedTools (a JSON array, or one rule per flag), runnerCommand. An
48
+ unknown key or a bad value is a usage error (exit 2). While checkCommand is
49
+ unresolved, submitted work is held until it is set (orchestrator-ctl config).
50
+
41
51
  Runs one orchestration for one repository: loads the graph file, launches
42
52
  agents up to capacity, verifies and publishes their work, and serves the agent
43
53
  and operator APIs on loopback. SIGTERM stops it gracefully; agents keep running
@@ -55,6 +65,7 @@ export async function main(argv = process.argv.slice(2)) {
55
65
  'reap-on-exit': { type: 'boolean', default: false },
56
66
  mode: { type: 'string' },
57
67
  'default-mode': { type: 'string' },
68
+ set: { type: 'string', multiple: true },
58
69
  help: { type: 'boolean', short: 'h', default: false },
59
70
  },
60
71
  });
@@ -62,22 +73,34 @@ export async function main(argv = process.argv.slice(2)) {
62
73
  process.stdout.write(USAGE);
63
74
  return;
64
75
  }
65
- let config;
76
+ let flags;
77
+ try {
78
+ flags = parseSetFlags(values.set ?? []);
79
+ }
80
+ catch (err) {
81
+ process.stderr.write(`${err instanceof Error ? err.message : String(err)}\n\n${USAGE}`);
82
+ process.exit(2);
83
+ }
66
84
  let runId;
67
85
  let fileSetsMode = false;
86
+ let dataDir;
87
+ let resolveWith;
68
88
  if (values.config) {
69
- config = await loadConfig(values.config);
70
- fileSetsMode = rawRunnerMode(values.config) !== undefined;
89
+ const file = values.config;
90
+ dataDir = (await loadConfig(file)).dataDir;
91
+ fileSetsMode = rawRunnerMode(file) !== undefined;
92
+ resolveWith = (opts) => resolveFileConfig(file, opts);
71
93
  }
72
94
  else {
73
95
  const repo = await resolveRepoPath({ repo: values.repo });
74
96
  ensureRunDir(repo);
75
- config = await resolveRunConfig(repo);
97
+ dataDir = (await resolveRunConfig(repo, process.env, { detect: false })).config.dataDir;
76
98
  runId = runIdFor(repo);
77
99
  fileSetsMode = readRepoConfigRaw(repo)?.['runner']?.mode !== undefined;
100
+ resolveWith = (opts) => resolveRunConfig(repo, process.env, opts);
78
101
  }
79
- await mkdir(config.dataDir, { recursive: true });
80
- const store = new SqliteStore(path.join(config.dataDir, 'store.sqlite'));
102
+ await mkdir(dataDir, { recursive: true });
103
+ const store = new SqliteStore(path.join(dataDir, 'store.sqlite'));
81
104
  // The run id names this run in tracker comments; by repository under a run directory, otherwise once per store.
82
105
  if (runId)
83
106
  setRunId(store, runId);
@@ -96,21 +119,58 @@ export async function main(argv = process.argv.slice(2)) {
96
119
  if (!store.getKv('runner.mode') && !fileSetsMode)
97
120
  store.setKv('runner.mode', mode);
98
121
  }
99
- if (!store.getKv('baselineHead'))
122
+ // Arguments are durable overrides: merged over the store's document for resolution and persisted once the start is accepted, so a restart without flags keeps them and a refused start leaves nothing behind. See specs/toolchain-discovery "Resolution order and provenance".
123
+ const overrides = mergeOverrides(readOverrides(store), flags);
124
+ const pinned = store.getKv('integrationBranch') || undefined;
125
+ const resolved = await resolveWith({ overrides, pinned });
126
+ const config = resolved.config;
127
+ // The branch the run first used is pinned; only an explicit layer can name another one, and only on an untouched run. See specs/toolchain-discovery "Integration branch detection and pinning".
128
+ if (pinned && config.integrationBranch !== pinned) {
129
+ const launches = store.listLaunches().length;
130
+ const jobs = store.listJobs().length;
131
+ if (launches || jobs) {
132
+ const msg = `integration branch change refused: this run is pinned to ${pinned} and ${resolved.provenance.integrationBranch === 'file' ? 'orchestrator.yaml' : 'an argument'} names ${config.integrationBranch}; keep ${pinned} for this run (start without --set integrationBranch, or remove the key from orchestrator.yaml), or start from a fresh run directory to use ${config.integrationBranch}`;
133
+ stderrLogger.error(msg, { pinned, requested: config.integrationBranch, source: resolved.provenance.integrationBranch, launches, jobs });
134
+ store.close();
135
+ throw new Error(msg);
136
+ }
137
+ stderrLogger.info('integration branch re-pinned on an untouched run', { from: pinned, to: config.integrationBranch, source: resolved.provenance.integrationBranch });
138
+ store.setKv('integrationBranch', config.integrationBranch);
100
139
  store.setKv('baselineHead', await revParse(config.repoPath, config.integrationBranch));
101
- const runner = new ClaudeCodeRunner({ command: config.runnerCommand, logDir: path.join(config.dataDir, 'logs'), retryWindowMs: config.retryWindowMs });
140
+ }
141
+ else {
142
+ if (!pinned)
143
+ store.setKv('integrationBranch', config.integrationBranch);
144
+ if (!store.getKv('baselineHead'))
145
+ store.setKv('baselineHead', await revParse(config.repoPath, config.integrationBranch));
146
+ }
147
+ if (Object.keys(flags).length)
148
+ store.setKv('config.overrides', JSON.stringify(overrides));
149
+ const report = reportOf(resolved, Date.now());
150
+ writeConfigJson(dataDir, report);
151
+ store.appendEvent({ kind: 'config.resolved', payload: configSummary(report) }, Date.now());
152
+ stderrLogger.info('configuration resolved', configSummary(report));
153
+ // The runner command, its allow list, and the check command are read from the effective configuration at every spawn and at every job start. See specs/toolchain-discovery "Runtime overrides and start-only keys".
154
+ let orch;
155
+ const runner = new ClaudeCodeRunner({
156
+ command: () => orch.effective().config.runnerCommand,
157
+ allowedTools: () => orch.effective().allowedTools.value,
158
+ logDir: path.join(config.dataDir, 'logs'),
159
+ retryWindowMs: config.retryWindowMs,
160
+ });
102
161
  const workspace = new GitWorkspace(config.repoPath, config.integrationBranch, path.join(config.dataDir, 'worktrees'));
103
162
  const verifier = new GitVerifierBackend({
104
163
  repo: config.repoPath,
105
164
  integrationBranch: config.integrationBranch,
106
165
  tempRoot: path.join(config.dataDir, 'verify'),
107
- checkCommand: config.checkCommand,
166
+ checkCommand: () => orch.effective().config.checkCommand,
108
167
  checkTimeoutMs: config.checkTimeoutMs,
109
168
  baselineSha: store.getKv('baselineHead'),
110
169
  });
111
- const orch = new Orchestrator({
170
+ orch = new Orchestrator({
112
171
  store,
113
172
  config,
173
+ resolved,
114
174
  graphSource: new FileGraphSource(config.graphPath),
115
175
  runner,
116
176
  workspace,
@@ -118,49 +178,71 @@ export async function main(argv = process.argv.slice(2)) {
118
178
  briefValidator: new SlotValidator(config.briefSlots),
119
179
  log: stderrLogger,
120
180
  });
181
+ orch.onConfigChanged = (r) => {
182
+ try {
183
+ writeConfigJson(dataDir, r);
184
+ }
185
+ catch (err) {
186
+ stderrLogger.warn('could not write config.json', { err: String(err) });
187
+ }
188
+ };
121
189
  const server = new ApiServer(orch);
122
190
  registerOperatorRoutes(server, orch);
123
191
  // Reuse the recorded port when the config does not pin one, so agents launched before a restart reconnect.
124
192
  const recorded = Number(store.getKv('apiPort') ?? 0);
193
+ // The advertised URL is apiBaseUrl when set (a cluster Service), else the bind address. See specs/cluster-runtime.
194
+ const listenOpts = { bind: config.apiBind, baseUrl: config.apiBaseUrl };
125
195
  let url;
126
196
  try {
127
- url = await server.listen(config.apiPort || recorded);
197
+ url = await server.listen(config.apiPort || recorded, listenOpts);
128
198
  }
129
199
  catch (err) {
130
200
  if (config.apiPort)
131
201
  throw err;
132
202
  stderrLogger.warn('recorded port unavailable, picking a new one', { recorded, err: String(err) });
133
- url = await server.listen(0);
203
+ url = await server.listen(0, listenOpts);
134
204
  }
135
205
  store.setKv('apiBaseUrl', url);
136
206
  store.setKv('apiPort', String(server.port));
207
+ // The daemon writes its own pid file as well, so a run directory nobody spawned from (a container) carries both files; in a container they are inert. See specs/operator-control "Container mode".
208
+ writeFileSync(path.join(config.dataDir, DAEMON_PID), `${process.pid}\n`, 'utf8');
137
209
  writeDaemonJson(config.dataDir, { pid: process.pid, url, port: server.port, startedAt: Date.now(), repo: config.repoPath });
138
210
  stderrLogger.info('listening', { url, pid: process.pid, dataDir: config.dataDir });
139
211
  let stopping = false;
140
- const shutdown = async (cause) => {
212
+ const shutdown = async (cause, by) => {
141
213
  if (stopping)
142
214
  return;
143
215
  stopping = true;
144
216
  const reap = Boolean(values['reap-on-exit']);
145
- stderrLogger.info('shutting down', { cause, reap });
146
- await orch.stop({ reap });
147
- await server.close();
148
217
  // The exit record says why the daemon is gone; a dead pid without one is a crash. See specs/operator-control "Exit record".
149
218
  const reason = cause === 'idle' ? 'idle' : cause === 'route' ? 'stop' : 'signal';
150
- try {
151
- writeExitRecord(config.dataDir, { at: Date.now(), reason, reap, digest: digestOf(orch) });
152
- }
153
- catch (err) {
154
- stderrLogger.warn('could not write the exit record', { err: String(err) });
155
- }
219
+ const recordExit = () => {
220
+ try {
221
+ writeExitRecord(config.dataDir, { at: Date.now(), reason, reap, digest: digestOf(orch), ...(by ? { by } : {}) });
222
+ }
223
+ catch (err) {
224
+ stderrLogger.warn('could not write the exit record', { err: String(err) });
225
+ }
226
+ };
227
+ stderrLogger.info('shutting down', { cause, reap, ...(by ? { by } : {}) });
228
+ // A container runtime kills the process after its grace period; a check still running past ours is abandoned and restarts from queued on the next start. See specs/crash-recovery.
229
+ setTimeout(() => {
230
+ stderrLogger.warn('shutdown grace elapsed; exiting with work in flight', { graceMs: SHUTDOWN_GRACE_MS });
231
+ recordExit();
232
+ process.exit(0);
233
+ }, SHUTDOWN_GRACE_MS).unref();
234
+ await orch.stop({ reap });
235
+ await server.close();
236
+ recordExit();
156
237
  store.close();
238
+ stderrLogger.info('stopped', { cause, reason });
157
239
  process.exit(0);
158
240
  };
159
241
  process.on('SIGTERM', () => void shutdown('SIGTERM'));
160
242
  process.on('SIGINT', () => void shutdown('SIGINT'));
161
- orch.requestShutdown = (reason, reap) => {
243
+ orch.requestShutdown = (reason, reap, by) => {
162
244
  values['reap-on-exit'] = Boolean(reap) || Boolean(values['reap-on-exit']);
163
- void shutdown(reason === 'idle' ? 'idle' : 'route');
245
+ void shutdown(reason === 'idle' ? 'idle' : 'route', by);
164
246
  };
165
247
  await orch.start();
166
248
  }
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  /**
3
3
  * Operator CLI over the daemon's HTTP API.
4
4
  * orchestrator-ctl status
5
+ * orchestrator-ctl config [--check-command <cmd>] [--capacity <n>] [--allow <rule>]... [--runner-command <cmd>] [--model <name>] [--effort <level>] [--clear <key>]...
5
6
  * orchestrator-ctl answer <task> <text>
6
7
  * orchestrator-ctl cancel <task> [--release] [--reason <text>]
7
8
  * orchestrator-ctl reopen <task> [--cascade]
@@ -24,6 +25,7 @@
24
25
  import path from 'node:path';
25
26
  import { parseArgs } from 'node:util';
26
27
  import { daemonState, listRuns, reviveDaemon, startDaemon, stopDaemon } from '../runs/lifecycle.js';
28
+ import { parseSetFlags } from '../runs/resolve.js';
27
29
  import { resolveRepoPath, runPaths } from '../runs/runDir.js';
28
30
  import { SqliteStore } from '../state/sqlite.js';
29
31
  import { isEntrypoint } from '../entry.js';
@@ -75,10 +77,14 @@ export async function call(base, method, route, body) {
75
77
  }
76
78
  export const USAGE = `orchestrator-ctl: operate a running orchestrator.
77
79
 
78
- orchestrator-ctl start [--repo <path>] start the daemon for a repository (idempotent)
80
+ orchestrator-ctl start [--repo <path>] [--set key=value]... start the daemon for a repository (idempotent);
81
+ --set checkCommand=..., integrationBranch=..., capacity=..., allowedTools=..., runnerCommand=..., model=..., effort=...
79
82
  orchestrator-ctl stop [--reap] [--repo <path>]
80
83
  orchestrator-ctl runs list runs under ORCH_HOME
81
84
  orchestrator-ctl status
85
+ orchestrator-ctl config the resolved configuration: every key with its value and source, the toolchain, needsConfig
86
+ orchestrator-ctl config [--check-command <cmd>] [--capacity <n>] [--allow <rule>]... [--runner-command <cmd>] [--model <name>] [--effort <level>] [--clear <key>]...
87
+ model and effort are the worker defaults (claude-opus-5-5 at medium); effort is low, medium, high, xhigh, or max
82
88
  orchestrator-ctl answer <task> <text>
83
89
  orchestrator-ctl cancel <task> [--release] [--reason <text>]
84
90
  orchestrator-ctl reopen <task> [--cascade] cascade resets started dependents and returns the plan
@@ -132,11 +138,19 @@ export async function runCli(argv) {
132
138
  payload: { type: 'string' },
133
139
  task: { type: 'string' },
134
140
  access: { type: 'string' },
141
+ set: { type: 'string', multiple: true },
142
+ 'check-command': { type: 'string' },
143
+ capacity: { type: 'string' },
144
+ allow: { type: 'string', multiple: true },
145
+ 'runner-command': { type: 'string' },
146
+ model: { type: 'string' },
147
+ effort: { type: 'string' },
148
+ clear: { type: 'string', multiple: true },
135
149
  },
136
150
  });
137
151
  const [cmd, a, ...rest] = positionals;
138
152
  if (cmd === 'start') {
139
- const r = await startDaemon({ repo: values.repo });
153
+ const r = await startDaemon({ repo: values.repo, ...(values.set?.length ? { overrides: parseSetFlags(values.set) } : {}) });
140
154
  return { status: 200, body: r };
141
155
  }
142
156
  if (cmd === 'stop') {
@@ -150,6 +164,30 @@ export async function runCli(argv) {
150
164
  switch (cmd) {
151
165
  case 'status':
152
166
  return call(base, 'GET', '/v1/status');
167
+ case 'config': {
168
+ // One PUT for every flag given; `--allow` appends to the rules already set by argument. See specs/operator-control "Configuration route".
169
+ const patch = {};
170
+ for (const k of values.clear ?? [])
171
+ patch[k] = null;
172
+ if (values['check-command'] !== undefined)
173
+ patch['checkCommand'] = values['check-command'];
174
+ if (values.capacity !== undefined)
175
+ patch['capacity'] = Number(values.capacity);
176
+ if (values['runner-command'] !== undefined)
177
+ patch['runnerCommand'] = values['runner-command'];
178
+ if (values.model !== undefined)
179
+ patch['model'] = values.model;
180
+ if (values.effort !== undefined)
181
+ patch['effort'] = values.effort;
182
+ if (values.allow?.length) {
183
+ const cur = await call(base, 'GET', '/v1/config');
184
+ const existing = patch['allowedTools'] === null ? [] : (cur.body.overrides?.allowedTools ?? []);
185
+ patch['allowedTools'] = [...existing, ...values.allow.filter((r) => !existing.includes(r))];
186
+ }
187
+ if (!Object.keys(patch).length)
188
+ return call(base, 'GET', '/v1/config');
189
+ return call(base, 'PUT', '/v1/config', patch);
190
+ }
153
191
  case 'answer':
154
192
  return call(base, 'POST', `/v1/tasks/${a}/answer`, { text: rest.join(' ') });
155
193
  case 'cancel':
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/operator/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAO3C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAuD;IACtF,IAAI,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC;IAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAW,CAAC;IACtE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACxD,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;YACvD,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG;gBAAE,OAAO,KAAK,CAAC,GAAG,CAAC;YACjD,4IAA4I;YAC5I,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;gBAC9D,OAAO,OAAO,CAAC,GAAG,CAAC;YACrB,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,aAAa,KAAK,CAAC,MAAM,mCAAmC,CAAC,CAAC;QAChJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;gBAAE,MAAM,GAAG,CAAC;QAC/C,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,mBAAmB,CAAC;IACpF,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;IAClE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,OAAO,cAAc,CAAC,CAAC;QAC9E,OAAO,GAAG,CAAC;IACb,CAAC;YAAS,CAAC;QACT,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAY,EAAE,MAA8B,EAAE,KAAa,EAAE,IAA8B;IACpH,6DAA6D;IAC7D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,GAAG,KAAK,EAAE,EAAE;QACzC,MAAM;QACN,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC;KAChE,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BpB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAc;IACzC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;IAC/C,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;QACxC,IAAI,EAAE,IAAI;QACV,gBAAgB,EAAE,IAAI;QACtB,OAAO,EAAE;YACP,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACvB,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC9B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;YACzC,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;YACzC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;YAC5C,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,kBAAkB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;YACvD,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACvB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC3B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,iBAAiB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;YACtD,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;YAC5C,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC7B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC3B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC3B;KACF,CAAC,CAAC;IACH,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,WAAW,CAAC;IACtC,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpB,MAAM,CAAC,GAAG,MAAM,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACnD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAClC,CAAC;IACD,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACnB,MAAM,CAAC,GAAG,MAAM,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACrE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACpD,CAAC;IACD,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC3D,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACnG,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QACzC,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/E,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,uBAAuB,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACpI,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAClF,KAAK,WAAW;YACd,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,gBAAgB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAClH,KAAK,iBAAiB;YACpB,IAAI,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YAC/D,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAA6B,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;QACvL,KAAK,iBAAiB;YACpB,IAAI,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YAC/D,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClG,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC9H,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,kBAAkB,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChH,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,kBAAkB,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnG,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QACzC,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QACzF,KAAK,MAAM;YACT,IAAI,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YAC5D,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACtD,KAAK,OAAO;YACV,IAAI,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACvG,KAAK,SAAS;YACZ,IAAI,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,gBAAgB,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9I,KAAK,OAAO;YACV,IAAI,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YAC/D,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjF,KAAK,MAAM;YACT,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpG,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,CAAC,GAAG,IAAI,eAAe,EAAE,CAAC;YAChC,IAAI,MAAM,CAAC,KAAK;gBAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAI,MAAM,CAAC,KAAK;gBAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/C,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,IAAI,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAClD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC3G,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5H,CAAC;QACD,KAAK,MAAM;YACT,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QACxC;YACE,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,IAAI,QAAQ,iCAAiC,CAAC,CAAC;IACzF,CAAC;AACH,CAAC;AAED,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9C,IAAI,OAAO,EAAE,CAAC;IACZ,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC1B,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QACV,MAAM,IAAI,GAAG,CAAC,CAAC,IAAoD,CAAC;QACpE,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACxE,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;YACzE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/operator/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACpG,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAO3C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAuD;IACtF,IAAI,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC;IAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAW,CAAC;IACtE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACxD,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;YACvD,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG;gBAAE,OAAO,KAAK,CAAC,GAAG,CAAC;YACjD,4IAA4I;YAC5I,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;gBAC9D,OAAO,OAAO,CAAC,GAAG,CAAC;YACrB,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,aAAa,KAAK,CAAC,MAAM,mCAAmC,CAAC,CAAC;QAChJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;gBAAE,MAAM,GAAG,CAAC;QAC/C,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,mBAAmB,CAAC;IACpF,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;IAClE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,OAAO,cAAc,CAAC,CAAC;QAC9E,OAAO,GAAG,CAAC;IACb,CAAC;YAAS,CAAC;QACT,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAY,EAAE,MAA8B,EAAE,KAAa,EAAE,IAA8B;IACpH,6DAA6D;IAC7D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,GAAG,KAAK,EAAE,EAAE;QACzC,MAAM;QACN,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC;KAChE,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BpB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAc;IACzC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;IAC/C,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;QACxC,IAAI,EAAE,IAAI;QACV,gBAAgB,EAAE,IAAI;QACtB,OAAO,EAAE;YACP,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACvB,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC9B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;YACzC,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;YACzC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;YAC5C,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,kBAAkB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;YACvD,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACvB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC3B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,iBAAiB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;YACtD,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;YAC5C,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC7B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC3B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;YACvC,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACnC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;YACzC,gBAAgB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACpC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;SAC1C;KACF,CAAC,CAAC;IACH,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,WAAW,CAAC;IACtC,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpB,MAAM,CAAC,GAAG,MAAM,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5H,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAClC,CAAC;IACD,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACnB,MAAM,CAAC,GAAG,MAAM,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACrE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACpD,CAAC;IACD,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC3D,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACnG,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QACzC,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,0IAA0I;YAC1I,MAAM,KAAK,GAA4B,EAAE,CAAC;YAC1C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE;gBAAE,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACpD,IAAI,MAAM,CAAC,eAAe,CAAC,KAAK,SAAS;gBAAE,KAAK,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;YAC3F,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;gBAAE,KAAK,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC/E,IAAI,MAAM,CAAC,gBAAgB,CAAC,KAAK,SAAS;gBAAE,KAAK,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAC9F,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;gBAAE,KAAK,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;YAC9D,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;gBAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;YACjE,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;gBACzB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;gBAClD,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,IAAoD,CAAC,SAAS,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC;gBACjJ,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9F,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM;gBAAE,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;QAChD,CAAC;QACD,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/E,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,uBAAuB,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACpI,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAClF,KAAK,WAAW;YACd,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,gBAAgB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAClH,KAAK,iBAAiB;YACpB,IAAI,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YAC/D,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAA6B,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;QACvL,KAAK,iBAAiB;YACpB,IAAI,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YAC/D,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,iBAAiB,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClG,KAAK,SAAS;YACZ,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC9H,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,kBAAkB,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChH,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,kBAAkB,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnG,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QACzC,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QACzF,KAAK,MAAM;YACT,IAAI,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YAC5D,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACtD,KAAK,OAAO;YACV,IAAI,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACvG,KAAK,SAAS;YACZ,IAAI,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,gBAAgB,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9I,KAAK,OAAO;YACV,IAAI,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YAC/D,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjF,KAAK,MAAM;YACT,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpG,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,CAAC,GAAG,IAAI,eAAe,EAAE,CAAC;YAChC,IAAI,MAAM,CAAC,KAAK;gBAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/C,IAAI,MAAM,CAAC,KAAK;gBAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/C,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,IAAI,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAClD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC3G,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5H,CAAC;QACD,KAAK,MAAM;YACT,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QACxC;YACE,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,IAAI,QAAQ,iCAAiC,CAAC,CAAC;IACzF,CAAC;AACH,CAAC;AAED,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9C,IAAI,OAAO,EAAE,CAAC;IACZ,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC1B,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QACV,MAAM,IAAI,GAAG,CAAC,CAAC,IAAoD,CAAC;QACpE,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACxE,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;YACzE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -7,7 +7,8 @@ import { z } from 'zod';
7
7
  import { mapIssues, ImportError, importOptionsSchema, issueRecordSchema, trackerSchema } from '../import/mapping.js';
8
8
  import { randomUUID } from 'node:crypto';
9
9
  import { ancestorPids } from '../runs/ancestry.js';
10
- import { daemonState, listRuns, reviveDaemon, startDaemon, stopDaemon } from '../runs/lifecycle.js';
10
+ import { daemonState, listRuns, remoteDaemonUrl, reviveDaemon, startDaemon, stopDaemon } from '../runs/lifecycle.js';
11
+ import { EFFORT_LEVELS } from '../runner/selection.js';
11
12
  import { resolveRepoPath, runPaths } from '../runs/runDir.js';
12
13
  /** The cap keeps every tool call under Claude Code's two-minute foreground limit; ORCH_WAIT_CAP_MS shortens it for tests. */
13
14
  export const WAIT_CAP_MS = Number(process.env['ORCH_WAIT_CAP_MS'] ?? 90_000);
@@ -19,6 +20,7 @@ export const TOOL_NAMES = [
19
20
  'answer', 'cancel', 'reopen', 'unblock', 'accept', 'reject', 'pause', 'resume', 'logs',
20
21
  'outbox', 'ack', 'nudge', 'proposals', 'accept_proposal', 'reject_proposal',
21
22
  'claim', 'release', 'launch_heartbeat', 'launch_report', 'launch_block', 'launch_inbox', 'launch_log',
23
+ 'configure',
22
24
  ];
23
25
  export function clampWait(ms) {
24
26
  if (ms === undefined || !Number.isFinite(ms))
@@ -54,6 +56,12 @@ export class OperatorClient {
54
56
  }
55
57
  /** The daemon's URL, reviving it after an idle exit or a crash; refused after an explicit stop or for a repository with no run directory. */
56
58
  async url() {
59
+ // A remote daemon (ORCH_URL on a non-loopback host) is used as is, without an attachment (its pids are not ours); reviveDaemon reports it unreachable rather than spawning one here.
60
+ const remote = remoteDaemonUrl(this.ctx.env);
61
+ if (remote) {
62
+ await reviveDaemon({ env: this.ctx.env });
63
+ return remote;
64
+ }
57
65
  const repo = await this.repo();
58
66
  const paths = runPaths(repo, this.ctx.env);
59
67
  const state = await daemonState(paths.runDir);
@@ -165,26 +173,50 @@ export async function startOperatorServer(argv, env = process.env) {
165
173
  const client = new OperatorClient({ repo: values.repo, env });
166
174
  const { McpServer } = await import('@modelcontextprotocol/sdk/server/mcp.js');
167
175
  const { StdioServerTransport } = await import('@modelcontextprotocol/sdk/server/stdio.js');
168
- const server = new McpServer({ name: 'orchestrator-operator', version: '0.1.0' });
176
+ const server = new McpServer({ name: 'orchestrator-operator', version: '0.3.0' });
169
177
  const task = { task: z.string().describe('Task id as it appears in the graph, e.g. ENG-123') };
170
178
  const milestone = { milestone: z.string().describe('Milestone id') };
171
179
  server.registerTool('start', {
172
- description: 'Start the daemon for this repository (idempotent). Returns url, pid, run directory, graph path, and the runner mode in force. mode: spawn (the daemon runs headless agents), pull (workers claim launches; this session works them through the run skill), or mixed; applied to a daemon already running too. Without mode, a run started from this plugin defaults to pull unless orchestrator.yaml sets runner.mode or the run chose a mode before; a running daemon keeps its mode. After an idle exit or a crash every other tool revives the daemon by itself.',
173
- inputSchema: { mode: z.enum(['spawn', 'pull', 'mixed']).optional() },
174
- }, async (a) => guarded(async () => ({ status: 200, body: await startDaemon({ repo: values.repo, env, mode: a.mode, ...(a.mode ? {} : { defaultMode: 'pull' }) }) })));
180
+ description: 'Start the daemon for this repository (idempotent). Returns url, pid, run directory, graph path, the runner mode in force, and the resolved configuration: config (every key as { value, source }: argument, file, pinned, detected, default, or unresolved), toolchain (what detection found in the repository root), needsConfig (keys no layer supplied; checkCommand there means submitted work is held until it is set), and applied / rejected for the configuration arguments. mode: spawn (the daemon runs headless agents), pull (workers claim launches; this session works them through the run skill), or mixed; applied to a daemon already running too. Without mode, a run started from this plugin defaults to pull unless orchestrator.yaml sets runner.mode or the run chose a mode before; a running daemon keeps its mode. Configuration arguments become durable overrides for the run: passed to a daemon this call spawns, applied through the configuration route to one already running; integrationBranch is start-only and lands under rejected on a running daemon. After an idle exit or a crash every other tool revives the daemon by itself.',
181
+ inputSchema: {
182
+ mode: z.enum(['spawn', 'pull', 'mixed']).optional(),
183
+ checkCommand: z.string().optional().describe('The command the verifier runs on every rebased submission, e.g. "npm test".'),
184
+ integrationBranch: z.string().optional().describe('Start-only: the branch work is published to; pinned for the run once chosen.'),
185
+ capacity: z.number().int().optional().describe('Agents in parallel.'),
186
+ allowedTools: z.array(z.string()).optional().describe('Rules appended to the derived allow list for spawned agents, e.g. "Bash(docker:*)".'),
187
+ runnerCommand: z.string().optional().describe('The runner command template; {allowedTools}, {model}, and {effort} are filled at spawn.'),
188
+ model: z.string().optional().describe('The worker model for launches prepared from now on (default claude-opus-5-5); a task payload or a model:<name> label overrides it per task.'),
189
+ effort: z.enum(EFFORT_LEVELS).optional().describe('The worker effort for launches prepared from now on (default medium); a task payload or an effort:<level> label overrides it per task.'),
190
+ },
191
+ }, async (a) => guarded(async () => {
192
+ const { mode, ...rest } = a;
193
+ const overrides = Object.fromEntries(Object.entries(rest).filter(([, v]) => v !== undefined));
194
+ return { status: 200, body: await startDaemon({ repo: values.repo, env, mode, ...(mode ? {} : { defaultMode: 'pull' }), ...(Object.keys(overrides).length ? { overrides } : {}) }) };
195
+ }));
196
+ server.registerTool('configure', {
197
+ description: 'Set or clear configuration overrides on the running daemon through the configuration route: checkCommand (applies to every verifier job that starts checking afterwards), capacity (the next admission pass), allowedTools and runnerCommand (every launch spawned afterwards), model and effort (every launch prepared afterwards; defaults claude-opus-5-5 at medium; effort is low, medium, high, xhigh, or max; a task payload or a model:/effort: label overrides them per task). A value sets the key; null clears it so the value falls back to the file, detection, or the default. Returns the new config block with applied; a 400 names an invalid key and value, a 409 names a start-only key (integrationBranch belongs to start).',
198
+ inputSchema: {
199
+ checkCommand: z.string().nullable().optional(),
200
+ capacity: z.number().int().nullable().optional(),
201
+ allowedTools: z.array(z.string()).nullable().optional(),
202
+ runnerCommand: z.string().nullable().optional(),
203
+ model: z.string().nullable().optional(),
204
+ effort: z.enum(EFFORT_LEVELS).nullable().optional(),
205
+ },
206
+ }, async (a) => guarded(() => client.call('PUT', '/v1/config', Object.fromEntries(Object.entries(a).filter(([, v]) => v !== undefined)))));
175
207
  server.registerTool('stop', { description: 'Stop the daemon. Agents keep running for adoption unless reap is true.', inputSchema: { reap: z.boolean().optional() } }, async (a) => guarded(async () => {
176
208
  const r = await stopDaemon({ repo: values.repo, env, reap: a.reap });
177
209
  return { status: r.stopped ? 200 : 409, body: r };
178
210
  }));
179
- server.registerTool('status', { description: 'Current run status: sets by state, stall roots, open questions, milestones awaiting review, run facts, stuck tasks, pause reason, cost and budgets, per-launch health (with interruptions, the kept releases a task absorbed), deferred: ready tasks held back because their scope overlaps a running, waiting, submitted, or claimable task (each with the ids it overlaps), idle: whether the daemon is quiescent and how long it has been idle against its exit window, and attachments: the sessions attached and the launches each holds.', inputSchema: {} }, async () => guarded(() => client.call('GET', '/v1/status')));
211
+ server.registerTool('status', { description: 'Current run status: sets by state, stall roots, open questions, milestones awaiting review, run facts, stuck tasks, pause reason, cost and budgets, per-launch health (with interruptions, the kept releases a task absorbed), deferred: ready tasks held back because their scope overlaps a running, waiting, submitted, or claimable task (each with the ids it overlaps), idle: whether the daemon is quiescent and how long it has been idle against its exit window, attachments: the sessions attached and the launches each holds, config: every configuration key as { value, source } (allowedTools with its parts and whether the runner command applies it; model and effort likewise, each live launch also listing its own model and effort), toolchain: the detection record for the repository root, and needsConfig: keys no layer supplied (checkCommand there holds submitted work until configure sets it). Present even before a graph is loaded.', inputSchema: {} }, async () => guarded(() => client.call('GET', '/v1/status')));
180
212
  server.registerTool('runs', { description: 'List every run under ORCH_HOME with its repository, daemon liveness, and, for a daemon that is gone, its exit record (idle, stop, or signal with the last digest) or none after a crash.', inputSchema: {} }, async () => guarded(async () => ({ status: 200, body: { runs: await listRuns(env) } })));
181
213
  server.registerTool('import_issues', {
182
- description: 'Map normalized tracker issues to the run graph and import it. Children of root become tasks; blockedBy becomes deps; blockers outside the set, done, cancelled and in-progress issues become external nodes; root becomes a gated milestone. Acceptance criteria are parsed from the description under the configured heading.',
214
+ description: 'Map normalized tracker issues to the run graph and import it. Children of root become tasks; blockedBy becomes deps; blockers outside the set, done, cancelled and in-progress issues become external nodes (done and cancelled ones already satisfied); root becomes a gated milestone. Acceptance criteria are parsed from the description under the configured heading. Records come from any tracker the session can read: Linear, Jira, or GitHub Issues (ids GH-<number>, urls on every record).',
183
215
  inputSchema: {
184
216
  root: z.string(),
185
217
  issues: z.array(issueRecordSchema),
186
218
  options: importOptionsSchema.partial().optional(),
187
- tracker: trackerSchema.optional().describe('The tracker these issues came from; recorded by the daemon so the run skill can mirror states and comments back.'),
219
+ tracker: trackerSchema.optional().describe('The tracker these issues came from; recorded by the daemon so the run skill can mirror states and comments back. kind linear | atlassian | github; workspace is the Linear workspace, the Jira site, or the GitHub owner/repo; inProgressLabel (github only) names the label that stands for in progress.'),
188
220
  },
189
221
  }, async (a) => guarded(async () => {
190
222
  let mapped;
@@ -201,7 +233,7 @@ export async function startOperatorServer(argv, env = process.env) {
201
233
  }));
202
234
  server.registerTool('import_graph', { description: 'Import a graph file verbatim (YAML or JSON content) or as a node list.', inputSchema: { content: z.string().optional(), nodes: z.array(z.record(z.unknown())).optional() } }, async (a) => guarded(() => client.call('PUT', '/v1/graph', a)));
203
235
  server.registerTool('wait', {
204
- description: `Block until something happens. Returns events after afterSeq (default: now), the latest seq, and a digest (openQuestions, awaitingReview, finished, stalled, stuck, pausedReason, deferred: the count of ready tasks held back by scope overlap, outboxPending, trackerErrors). until: question | review | finished | stalled | any; any also returns on launch.stuck, launch.unstuck, and budget.exceeded. timeoutMs default ${WAIT_DEFAULT_MS}, cap ${WAIT_CAP_MS}. Loop on this instead of polling status.`,
236
+ description: `Block until something happens. Returns events after afterSeq (default: now), the latest seq, and a digest (openQuestions, awaitingReview, finished, stalled, stuck, pausedReason, deferred: the count of ready tasks held back by scope overlap, needsConfig: configuration keys still unresolved, with checkCommand meaning submitted work is held until configure sets it, outboxPending, trackerErrors). until: question | review | finished | stalled | any; any also returns on launch.stuck, launch.unstuck, and budget.exceeded. timeoutMs default ${WAIT_DEFAULT_MS}, cap ${WAIT_CAP_MS}. Loop on this instead of polling status.`,
205
237
  inputSchema: { afterSeq: z.number().int().nonnegative().optional(), timeoutMs: z.number().int().nonnegative().optional(), until: z.enum(['question', 'review', 'finished', 'stalled', 'any']).optional() },
206
238
  }, async (a) => guarded(() => client.wait(a)));
207
239
  server.registerTool('review', { description: 'Review bundle for a submitted gated milestone: pinned sha, version, tag, diff stat, closure task summaries, acceptance criteria.', inputSchema: milestone }, async (a) => guarded(() => client.call('GET', `/v1/milestones/${encodeURIComponent(a.milestone)}/review`)));