@revisium/orchestrator 0.1.0-alpha.9 → 0.1.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 (103) hide show
  1. package/README.md +143 -157
  2. package/control-plane/default-playbook/catalog/pipelines.json +217 -8
  3. package/control-plane/default-playbook/package.json +1 -1
  4. package/control-plane/default-playbook/prompts/developer.md +1 -0
  5. package/control-plane/default-playbook/prompts/triager.md +3 -0
  6. package/dist/api/graphql-api/graphql-ws/subscription-mappers.js +3 -0
  7. package/dist/api/graphql-api/graphql-ws/subscription-mappers.js.map +1 -1
  8. package/dist/api/graphql-api/pr/inputs/pr-readiness.input.js +6 -0
  9. package/dist/api/graphql-api/pr/inputs/pr-readiness.input.js.map +1 -1
  10. package/dist/api/graphql-api/pr/model/pr-readiness.model.js +30 -0
  11. package/dist/api/graphql-api/pr/model/pr-readiness.model.js.map +1 -1
  12. package/dist/api/graphql-api/runs/inputs/create-run.input.js +6 -0
  13. package/dist/api/graphql-api/runs/inputs/create-run.input.js.map +1 -1
  14. package/dist/api/graphql-api/runs/model/run.model.js +6 -0
  15. package/dist/api/graphql-api/runs/model/run.model.js.map +1 -1
  16. package/dist/api/graphql-api/share/model/issue-ref.model.js +53 -0
  17. package/dist/api/graphql-api/share/model/issue-ref.model.js.map +1 -0
  18. package/dist/control-plane/bootstrap.js +14 -1
  19. package/dist/control-plane/bootstrap.js.map +1 -1
  20. package/dist/control-plane/client-transport.js +1 -1
  21. package/dist/control-plane/client-transport.js.map +1 -1
  22. package/dist/control-plane/default-playbook-policy.js +593 -0
  23. package/dist/control-plane/default-playbook-policy.js.map +1 -0
  24. package/dist/control-plane/seed-default-playbook.js +77 -8
  25. package/dist/control-plane/seed-default-playbook.js.map +1 -1
  26. package/dist/e2e/kit/agents.js +15 -21
  27. package/dist/e2e/kit/agents.js.map +1 -1
  28. package/dist/e2e/kit/assertions.js +12 -8
  29. package/dist/e2e/kit/assertions.js.map +1 -1
  30. package/dist/e2e/kit/fake-integrator.js +11 -2
  31. package/dist/e2e/kit/fake-integrator.js.map +1 -1
  32. package/dist/e2e/kit/git-target-repo.js +1 -1
  33. package/dist/engine/dbos.service.js +3 -0
  34. package/dist/engine/dbos.service.js.map +1 -1
  35. package/dist/features/pr/queries/impl/get-pr-readiness.query.js.map +1 -1
  36. package/dist/features/runs/commands/impl/create-run.command.js.map +1 -1
  37. package/dist/features/runs/queries/handlers/runs-query.handlers.js +1 -0
  38. package/dist/features/runs/queries/handlers/runs-query.handlers.js.map +1 -1
  39. package/dist/mcp/mcp-capabilities.js +14 -1
  40. package/dist/mcp/mcp-capabilities.js.map +1 -1
  41. package/dist/mcp/mcp-facade.service.js +306 -11
  42. package/dist/mcp/mcp-facade.service.js.map +1 -1
  43. package/dist/mcp/mcp-tools.js +41 -14
  44. package/dist/mcp/mcp-tools.js.map +1 -1
  45. package/dist/observability/activity-signal.js +107 -0
  46. package/dist/observability/activity-signal.js.map +1 -0
  47. package/dist/observability/index.js +1 -0
  48. package/dist/observability/index.js.map +1 -1
  49. package/dist/pipeline/data-driven-task.workflow.js +482 -40
  50. package/dist/pipeline/data-driven-task.workflow.js.map +1 -1
  51. package/dist/pipeline/pipeline.service.js +195 -101
  52. package/dist/pipeline/pipeline.service.js.map +1 -1
  53. package/dist/pipeline/route-contract.js +4 -3
  54. package/dist/pipeline/route-contract.js.map +1 -1
  55. package/dist/pipeline-core/kit/fixtures.js +72 -21
  56. package/dist/pipeline-core/kit/fixtures.js.map +1 -1
  57. package/dist/playbook/import-mapper.js +8 -1
  58. package/dist/playbook/import-mapper.js.map +1 -1
  59. package/dist/poller/pr-readiness-core.js +299 -28
  60. package/dist/poller/pr-readiness-core.js.map +1 -1
  61. package/dist/revisium/playbooks.service.js +17 -2
  62. package/dist/revisium/playbooks.service.js.map +1 -1
  63. package/dist/revisium/run.service.js +1 -0
  64. package/dist/revisium/run.service.js.map +1 -1
  65. package/dist/run/append-event.js +8 -5
  66. package/dist/run/append-event.js.map +1 -1
  67. package/dist/run/create-run.js +5 -1
  68. package/dist/run/create-run.js.map +1 -1
  69. package/dist/run/inspect-run.js +10 -3
  70. package/dist/run/inspect-run.js.map +1 -1
  71. package/dist/run/issue-ref.js +88 -0
  72. package/dist/run/issue-ref.js.map +1 -0
  73. package/dist/runners/claude-code.service.js +2 -2
  74. package/dist/runners/claude-code.service.js.map +1 -1
  75. package/dist/runners/codex.service.js +2 -2
  76. package/dist/runners/codex.service.js.map +1 -1
  77. package/dist/runners/integrator-branch-naming.js +13 -8
  78. package/dist/runners/integrator-branch-naming.js.map +1 -1
  79. package/dist/runners/integrator.js +254 -89
  80. package/dist/runners/integrator.js.map +1 -1
  81. package/dist/runners/worktree.service.js +2 -2
  82. package/dist/runners/worktree.service.js.map +1 -1
  83. package/dist/task-control-plane/pr-readiness.service.js +15 -13
  84. package/dist/task-control-plane/pr-readiness.service.js.map +1 -1
  85. package/dist/task-control-plane/run-watch.service.js +234 -3
  86. package/dist/task-control-plane/run-watch.service.js.map +1 -1
  87. package/dist/task-control-plane/task-control-plane-api.service.js +272 -25
  88. package/dist/task-control-plane/task-control-plane-api.service.js.map +1 -1
  89. package/dist/worker/artifact-store.js +21 -3
  90. package/dist/worker/artifact-store.js.map +1 -1
  91. package/dist/worker/build-context.js +19 -3
  92. package/dist/worker/build-context.js.map +1 -1
  93. package/dist/worker/claude-code-runner.js +76 -15
  94. package/dist/worker/claude-code-runner.js.map +1 -1
  95. package/dist/worker/codex-runner.js +40 -13
  96. package/dist/worker/codex-runner.js.map +1 -1
  97. package/dist/worker/process-executor.js +149 -20
  98. package/dist/worker/process-executor.js.map +1 -1
  99. package/dist/worker/runner-common.js +29 -0
  100. package/dist/worker/runner-common.js.map +1 -1
  101. package/dist/worker/runner.js +16 -1
  102. package/dist/worker/runner.js.map +1 -1
  103. package/package.json +1 -1
@@ -1,7 +1,49 @@
1
1
  import { spawn } from 'node:child_process';
2
- // Kill the whole process GROUP, not just the leader: `claude` spawns subprocesses, and only a
3
- // negative-PID signal reaches them. `detached: true` (below) made the child its own group leader,
4
- // so process.kill(-pid) targets the group. Fall back to a direct kill if the group send throws.
2
+ import { createRunnerActivityTracker, } from '../observability/activity-signal.js';
3
+ export const RUNNER_IDLE_TIMEOUT_KIND = 'runner-idle-timeout';
4
+ export const RUNNER_WALL_CLOCK_LIMIT_KIND = 'runner-wall-clock-limit';
5
+ export const DEFAULT_RUNNER_IDLE_TIMEOUT_MS = 600_000;
6
+ export const DEFAULT_RUNNER_WALL_CLOCK_LIMIT_MS = 3_600_000;
7
+ function readPositiveIntEnv(env, key) {
8
+ const raw = env[key];
9
+ if (raw === undefined)
10
+ return undefined;
11
+ if (!/^\d+$/.test(raw)) {
12
+ throw new Error(`${key} must be a positive integer number of milliseconds`);
13
+ }
14
+ const parsed = Number(raw);
15
+ if (!Number.isSafeInteger(parsed) || parsed <= 0) {
16
+ throw new Error(`${key} must be a positive integer number of milliseconds`);
17
+ }
18
+ return parsed;
19
+ }
20
+ function positiveInt(value, label) {
21
+ if (!Number.isSafeInteger(value) || value <= 0) {
22
+ throw new Error(`${label} must be a positive integer number of milliseconds`);
23
+ }
24
+ return value;
25
+ }
26
+ export function resolveRunnerTimeoutPolicy(opts = {}) {
27
+ return resolveEffectiveRunnerTimeoutPolicy(opts);
28
+ }
29
+ export function resolveEffectiveRunnerTimeoutPolicy(opts = {}) {
30
+ const env = opts.env ?? process.env;
31
+ const roleWallClockLimitMs = typeof opts.roleTimeoutMs === 'number' && opts.roleTimeoutMs > 0
32
+ ? opts.roleTimeoutMs
33
+ : undefined;
34
+ return {
35
+ idleTimeoutMs: positiveInt(readPositiveIntEnv(env, 'REVO_RUNNER_IDLE_TIMEOUT_MS')
36
+ ?? opts.idleTimeoutMs
37
+ ?? DEFAULT_RUNNER_IDLE_TIMEOUT_MS, 'idleTimeoutMs'),
38
+ wallClockLimitMs: positiveInt(readPositiveIntEnv(env, 'REVO_RUNNER_WALL_CLOCK_LIMIT_MS')
39
+ ?? roleWallClockLimitMs
40
+ ?? opts.wallClockLimitMs
41
+ ?? DEFAULT_RUNNER_WALL_CLOCK_LIMIT_MS, 'wallClockLimitMs'),
42
+ };
43
+ }
44
+ // Kill the whole process group, not just the leader: external runners can spawn subprocesses, and
45
+ // only a negative-PID signal reaches the group. `detached: true` below makes the child its own group
46
+ // leader. Fall back to a direct kill if the group send throws.
5
47
  function killGroup(child) {
6
48
  const pid = child.pid;
7
49
  if (pid === undefined) {
@@ -17,10 +59,24 @@ function killGroup(child) {
17
59
  }
18
60
  // Real implementation, used only in production wiring (never in unit tests).
19
61
  export const spawnExecutor = (req) => new Promise((resolve, reject) => {
62
+ const policy = resolveRunnerTimeoutPolicy({
63
+ idleTimeoutMs: req.idleTimeoutMs,
64
+ wallClockLimitMs: req.timeoutMs,
65
+ });
66
+ const startedAt = Date.now();
67
+ const timers = {};
68
+ let latestActivity;
69
+ const activity = createRunnerActivityTracker({
70
+ startedAt,
71
+ onChange: (snapshot) => {
72
+ latestActivity = snapshot;
73
+ scheduleIdleTimer();
74
+ },
75
+ });
20
76
  const child = spawn(req.command, req.args, {
21
77
  cwd: req.cwd,
22
78
  env: req.env ? { ...process.env, ...req.env } : process.env,
23
- // Own process group → a negative-PID SIGKILL reaps `claude` AND its children on timeout.
79
+ // Own process group → a negative-PID SIGKILL reaps the runner and its children on timeout.
24
80
  // Do NOT unref(): the parent must stay attached to collect stdout/stderr and observe exit.
25
81
  detached: true,
26
82
  stdio: ['pipe', 'pipe', 'pipe'],
@@ -28,9 +84,81 @@ export const spawnExecutor = (req) => new Promise((resolve, reject) => {
28
84
  let stdout = '';
29
85
  let stderr = '';
30
86
  let timedOut = false;
87
+ let timeoutKind;
88
+ let timeoutEvidence;
31
89
  let settled = false;
32
- if (child.pid !== undefined)
33
- req.onSpawn?.(child.pid);
90
+ function clearTimers() {
91
+ if (timers.idle)
92
+ clearTimeout(timers.idle);
93
+ if (timers.wallClock)
94
+ clearTimeout(timers.wallClock);
95
+ }
96
+ function rejectFromSetup(err) {
97
+ if (settled)
98
+ return;
99
+ settled = true;
100
+ clearTimers();
101
+ killGroup(child);
102
+ reject(err);
103
+ }
104
+ // Spawn-level errors (binary missing) reject — the runner converts that to a lesson.
105
+ child.on('error', (err) => {
106
+ if (settled)
107
+ return;
108
+ settled = true;
109
+ clearTimers();
110
+ reject(err);
111
+ });
112
+ try {
113
+ if (child.pid !== undefined)
114
+ req.onSpawn?.(child.pid);
115
+ req.onActivityTracker?.(activity);
116
+ }
117
+ catch (err) {
118
+ rejectFromSetup(err);
119
+ return;
120
+ }
121
+ function buildTimeoutEvidence(snapshot) {
122
+ const now = Date.now();
123
+ return {
124
+ idleTimeoutMs: policy.idleTimeoutMs,
125
+ wallClockLimitMs: policy.wallClockLimitMs,
126
+ elapsedMs: Math.max(0, now - startedAt),
127
+ idleMs: Math.max(0, now - snapshot.lastActivityAt),
128
+ lastActivityAt: new Date(snapshot.lastActivityAt).toISOString(),
129
+ inFlightOperationCount: snapshot.inFlightOperationCount,
130
+ stdoutBytes: snapshot.stdoutBytes,
131
+ stderrBytes: snapshot.stderrBytes,
132
+ eventCount: snapshot.eventCount,
133
+ };
134
+ }
135
+ function killFor(kind) {
136
+ if (settled || timedOut)
137
+ return;
138
+ timedOut = true;
139
+ timeoutKind = kind;
140
+ timeoutEvidence = buildTimeoutEvidence(activity.snapshot());
141
+ clearTimers();
142
+ killGroup(child);
143
+ }
144
+ function scheduleIdleTimer() {
145
+ if (settled || timedOut)
146
+ return;
147
+ if (timers.idle)
148
+ clearTimeout(timers.idle);
149
+ const snapshot = latestActivity ?? activity.snapshot();
150
+ if (snapshot.inFlightOperationCount > 0) {
151
+ timers.idle = setTimeout(scheduleIdleTimer, policy.idleTimeoutMs);
152
+ return;
153
+ }
154
+ const idleMs = Math.max(0, Date.now() - snapshot.lastActivityAt);
155
+ const remainingMs = policy.idleTimeoutMs - idleMs;
156
+ if (remainingMs <= 0) {
157
+ killFor(RUNNER_IDLE_TIMEOUT_KIND);
158
+ return;
159
+ }
160
+ timers.idle = setTimeout(scheduleIdleTimer, remainingMs);
161
+ }
34
162
  child.stdout?.setEncoding('utf8');
35
163
  child.stderr?.setEncoding('utf8');
36
164
  // Guard the sink callbacks: a throw here (e.g. a failed artifact write) would otherwise
@@ -38,6 +166,7 @@ export const spawnExecutor = (req) => new Promise((resolve, reject) => {
38
166
  // in-memory capture above is unaffected, so the result envelope is still collected.
39
167
  child.stdout?.on('data', (chunk) => {
40
168
  stdout += chunk;
169
+ activity.recordOutput('stdout', Buffer.byteLength(chunk, 'utf8'));
41
170
  try {
42
171
  req.onStdoutChunk?.(chunk);
43
172
  }
@@ -47,6 +176,7 @@ export const spawnExecutor = (req) => new Promise((resolve, reject) => {
47
176
  });
48
177
  child.stderr?.on('data', (chunk) => {
49
178
  stderr += chunk;
179
+ activity.recordOutput('stderr', Buffer.byteLength(chunk, 'utf8'));
50
180
  try {
51
181
  req.onStderrChunk?.(chunk);
52
182
  }
@@ -54,25 +184,24 @@ export const spawnExecutor = (req) => new Promise((resolve, reject) => {
54
184
  console.warn(`Warning: onStderrChunk sink failed: ${String(err)}`);
55
185
  }
56
186
  });
57
- const timer = setTimeout(() => {
58
- timedOut = true;
59
- killGroup(child);
60
- }, req.timeoutMs);
61
- // Spawn-level errors (binary missing) reject — the runner converts that to a lesson.
62
- child.on('error', (err) => {
63
- if (settled)
64
- return;
65
- settled = true;
66
- clearTimeout(timer);
67
- reject(err);
68
- });
187
+ timers.wallClock = setTimeout(() => {
188
+ killFor(RUNNER_WALL_CLOCK_LIMIT_KIND);
189
+ }, policy.wallClockLimitMs);
190
+ scheduleIdleTimer();
69
191
  // Never reject for a non-zero exit; return the result and let the runner decide how to map it.
70
192
  child.on('close', (code) => {
71
193
  if (settled)
72
194
  return;
73
195
  settled = true;
74
- clearTimeout(timer);
75
- resolve({ code, stdout, stderr, timedOut });
196
+ clearTimers();
197
+ resolve({
198
+ code,
199
+ stdout,
200
+ stderr,
201
+ timedOut,
202
+ ...(timeoutKind ? { timeoutKind } : {}),
203
+ ...(timeoutEvidence ? { timeoutEvidence } : {}),
204
+ });
76
205
  });
77
206
  // Swallow EPIPE: the child may exit before draining stdin; the 'close' handler reports the result.
78
207
  child.stdin?.on('error', () => { });
@@ -1 +1 @@
1
- {"version":3,"file":"process-executor.js","sourceRoot":"","sources":["../../src/worker/process-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"process-executor.js","sourceRoot":"","sources":["../../src/worker/process-executor.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { RunAgentError } from './runner.js';
2
2
  import { normalizeNextSteps } from './result-envelope.js';
3
+ import { RUNNER_IDLE_TIMEOUT_KIND, RUNNER_WALL_CLOCK_LIMIT_KIND, } from './process-executor.js';
3
4
  const ERROR_TAIL = 2_000;
4
5
  const OBSERVABILITY_PREVIEW_MAX_CHARS = 1_000;
5
6
  const OBSERVABILITY_ARRAY_MAX_ITEMS = 5;
@@ -63,6 +64,34 @@ export function withProcessArtifact(agentArtifacts, process) {
63
64
  export function runnerError(message, process) {
64
65
  return new RunAgentError(message, withProcessArtifact(undefined, process));
65
66
  }
67
+ export function runnerFailure(message, process, metadata = {}) {
68
+ return new RunAgentError(message, withProcessArtifact(undefined, process), metadata);
69
+ }
70
+ function fallbackTimeoutEvidence(result, policy, failureKind) {
71
+ const fallbackElapsedMs = failureKind === RUNNER_IDLE_TIMEOUT_KIND ? policy.idleTimeoutMs : policy.wallClockLimitMs;
72
+ return {
73
+ idleTimeoutMs: policy.idleTimeoutMs,
74
+ wallClockLimitMs: policy.wallClockLimitMs,
75
+ elapsedMs: fallbackElapsedMs,
76
+ idleMs: fallbackElapsedMs,
77
+ lastActivityAt: new Date(0).toISOString(),
78
+ inFlightOperationCount: 0,
79
+ stdoutBytes: Buffer.byteLength(result.stdout, 'utf8'),
80
+ stderrBytes: Buffer.byteLength(result.stderr, 'utf8'),
81
+ eventCount: 0,
82
+ };
83
+ }
84
+ export function runnerTimeoutFailure(runnerName, result, process, policy) {
85
+ const failureKind = result.timeoutKind ?? RUNNER_WALL_CLOCK_LIMIT_KIND;
86
+ const timing = result.timeoutEvidence ?? fallbackTimeoutEvidence(result, policy, failureKind);
87
+ const message = `${runnerName} runner ${failureKind}: elapsed ${timing.elapsedMs}ms, ` +
88
+ `idle ${timing.idleMs}ms, in-flight operations ${timing.inFlightOperationCount}`;
89
+ return runnerFailure(message, process, {
90
+ failureKind,
91
+ retryableCandidate: true,
92
+ timing,
93
+ });
94
+ }
66
95
  export function buildUsageCosts(step, profile, usage) {
67
96
  const inputTokens = usage.inputTokens ?? 0;
68
97
  const outputTokens = usage.outputTokens ?? 0;
@@ -1 +1 @@
1
- {"version":3,"file":"runner-common.js","sourceRoot":"","sources":["../../src/worker/runner-common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner-common.js","sourceRoot":"","sources":["../../src/worker/runner-common.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,27 @@
1
1
  export class RunAgentError extends Error {
2
2
  artifacts;
3
- constructor(message, artifacts) {
3
+ failureKind;
4
+ retryableCandidate;
5
+ timing;
6
+ constructor(message, artifacts, metadata = {}) {
4
7
  super(message);
5
8
  this.name = 'RunAgentError';
6
9
  this.artifacts = artifacts;
10
+ this.failureKind = metadata.failureKind;
11
+ this.retryableCandidate = metadata.retryableCandidate;
12
+ this.timing = metadata.timing;
7
13
  }
8
14
  }
9
15
  export function artifactsFromRunAgentError(err) {
10
16
  return err instanceof RunAgentError ? err.artifacts : undefined;
11
17
  }
18
+ export function failureMetadataFromRunAgentError(err) {
19
+ if (!(err instanceof RunAgentError))
20
+ return {};
21
+ return {
22
+ ...(err.failureKind ? { failureKind: err.failureKind } : {}),
23
+ ...(err.retryableCandidate === undefined ? {} : { retryableCandidate: err.retryableCandidate }),
24
+ ...(err.timing ? { timing: err.timing } : {}),
25
+ };
26
+ }
12
27
  //# sourceMappingURL=runner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/worker/runner.ts"],"names":[],"mappings":"AA2BA,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC7B,SAAS,CAAW;IAE7B,YAAY,OAAe,EAAE,SAAmB;QAC9C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,UAAU,0BAA0B,CAAC,GAAY;IACrD,OAAO,GAAG,YAAY,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/worker/runner.ts"],"names":[],"mappings":"AA4BA,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC7B,SAAS,CAAW;IACpB,WAAW,CAA4B;IACvC,kBAAkB,CAAW;IAC7B,MAAM,CAAyB;IAExC,YACE,OAAe,EACf,SAAmB,EACnB,WAII,EAAE;QAEN,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QACxC,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,kBAAkB,CAAC;QACtD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAChC,CAAC;CACF;AAED,MAAM,UAAU,0BAA0B,CAAC,GAAY;IACrD,OAAO,GAAG,YAAY,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,GAAY;IAK3D,IAAI,CAAC,CAAC,GAAG,YAAY,aAAa,CAAC;QAAE,OAAO,EAAE,CAAC;IAC/C,OAAO;QACL,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,GAAG,CAAC,GAAG,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,GAAG,CAAC,kBAAkB,EAAE,CAAC;QAC/F,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9C,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@revisium/orchestrator",
3
- "version": "0.1.0-alpha.9",
3
+ "version": "0.1.0",
4
4
  "description": "Local orchestrator for software-development tasks driven by short-lived AI agents",
5
5
  "keywords": [
6
6
  "agents",