@viberlabs/orchestrator 2.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 (59) hide show
  1. package/LICENSE.md +25 -0
  2. package/README.md +170 -0
  3. package/dist/core/src/db/index.d.ts +295 -0
  4. package/dist/core/src/db/index.d.ts.map +1 -0
  5. package/dist/core/src/db/index.js +1114 -0
  6. package/dist/core/src/db/index.js.map +1 -0
  7. package/dist/core/src/engine/index.d.ts +38 -0
  8. package/dist/core/src/engine/index.d.ts.map +1 -0
  9. package/dist/core/src/engine/index.js +117 -0
  10. package/dist/core/src/engine/index.js.map +1 -0
  11. package/dist/core/src/engine/sentry.d.ts +36 -0
  12. package/dist/core/src/engine/sentry.d.ts.map +1 -0
  13. package/dist/core/src/engine/sentry.js +131 -0
  14. package/dist/core/src/engine/sentry.js.map +1 -0
  15. package/dist/core/src/protocol/index.d.ts +140 -0
  16. package/dist/core/src/protocol/index.d.ts.map +1 -0
  17. package/dist/core/src/protocol/index.js +7 -0
  18. package/dist/core/src/protocol/index.js.map +1 -0
  19. package/dist/index.d.ts +8 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +15 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/opencode/src/index.d.ts +56 -0
  24. package/dist/opencode/src/index.d.ts.map +1 -0
  25. package/dist/opencode/src/index.js +322 -0
  26. package/dist/opencode/src/index.js.map +1 -0
  27. package/dist/orca/index.d.ts +137 -0
  28. package/dist/orca/index.d.ts.map +1 -0
  29. package/dist/orca/index.js +215 -0
  30. package/dist/orca/index.js.map +1 -0
  31. package/dist/orchestrator/src/daemon.d.ts +66 -0
  32. package/dist/orchestrator/src/daemon.d.ts.map +1 -0
  33. package/dist/orchestrator/src/daemon.js +523 -0
  34. package/dist/orchestrator/src/daemon.js.map +1 -0
  35. package/dist/orchestrator/src/index.d.ts +8 -0
  36. package/dist/orchestrator/src/index.d.ts.map +1 -0
  37. package/dist/orchestrator/src/index.js +15 -0
  38. package/dist/orchestrator/src/index.js.map +1 -0
  39. package/dist/orchestrator/src/orca/index.d.ts +137 -0
  40. package/dist/orchestrator/src/orca/index.d.ts.map +1 -0
  41. package/dist/orchestrator/src/orca/index.js +215 -0
  42. package/dist/orchestrator/src/orca/index.js.map +1 -0
  43. package/dist/orchestrator/src/pool/index.d.ts +51 -0
  44. package/dist/orchestrator/src/pool/index.d.ts.map +1 -0
  45. package/dist/orchestrator/src/pool/index.js +152 -0
  46. package/dist/orchestrator/src/pool/index.js.map +1 -0
  47. package/dist/orchestrator/src/workflow/index.d.ts +65 -0
  48. package/dist/orchestrator/src/workflow/index.d.ts.map +1 -0
  49. package/dist/orchestrator/src/workflow/index.js +148 -0
  50. package/dist/orchestrator/src/workflow/index.js.map +1 -0
  51. package/dist/pool/index.d.ts +51 -0
  52. package/dist/pool/index.d.ts.map +1 -0
  53. package/dist/pool/index.js +152 -0
  54. package/dist/pool/index.js.map +1 -0
  55. package/dist/workflow/index.d.ts +65 -0
  56. package/dist/workflow/index.d.ts.map +1 -0
  57. package/dist/workflow/index.js +148 -0
  58. package/dist/workflow/index.js.map +1 -0
  59. package/package.json +65 -0
@@ -0,0 +1,215 @@
1
+ "use strict";
2
+ /**
3
+ * DOCUMENT: ORCA STATE MACHINE
4
+ * PROJECT: VIBER Universal v2
5
+ * PURPOSE: XState v5 state machine for task orchestration
6
+ * UPDATE PATTERN: Update when orchestration states change
7
+ * LOCATION: packages/orchestrator/src/orca/index.ts
8
+ * RELATED: pool, workflow, FLL validation
9
+ * LAST UPDATED: 2026-03-06
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Orca = exports.orcaMachine = void 0;
13
+ const xstate_1 = require("xstate");
14
+ // ============================================================================
15
+ // Validation Actor (would call FLL validation)
16
+ // ============================================================================
17
+ const validateTask = (0, xstate_1.fromPromise)(async (_input) => {
18
+ // This would call FLL validation
19
+ // For now, return a mock result
20
+ return {
21
+ valid: true,
22
+ probability: 0.85,
23
+ position: "peak",
24
+ premises: [],
25
+ contradictions: [],
26
+ warnings: [],
27
+ };
28
+ });
29
+ // ============================================================================
30
+ // Execution Actor (would spawn and manage agents)
31
+ // ============================================================================
32
+ const executeAgents = (0, xstate_1.fromPromise)(async ({ input }) => {
33
+ // This would spawn agents via OpenCode
34
+ // For now, return mock results
35
+ return {
36
+ success: true,
37
+ results: input.agents.map((a) => ({
38
+ agentId: a.id,
39
+ output: "Task completed",
40
+ artifacts: [],
41
+ })),
42
+ };
43
+ });
44
+ // ============================================================================
45
+ // Orca State Machine
46
+ // ============================================================================
47
+ exports.orcaMachine = (0, xstate_1.setup)({
48
+ types: {
49
+ context: {},
50
+ events: {},
51
+ },
52
+ actors: {
53
+ validateTask,
54
+ executeAgents,
55
+ },
56
+ guards: {
57
+ isValidTask: ({ context }) => context.validation?.valid ?? false,
58
+ canRetry: ({ context }) => context.retries < 3,
59
+ isPeak: ({ context }) => context.validation?.position === "peak",
60
+ isSlope: ({ context }) => context.validation?.position === "slope",
61
+ isValley: ({ context }) => context.validation?.position === "valley",
62
+ },
63
+ actions: {
64
+ setTask: (0, xstate_1.assign)({
65
+ task: ({ event }) => ("task" in event ? event.task : null),
66
+ }),
67
+ setValidation: (0, xstate_1.assign)({
68
+ validation: ({ event }) => ("validation" in event ? event.validation : null),
69
+ }),
70
+ setAgents: (0, xstate_1.assign)({
71
+ agents: ({ event }) => ("agents" in event ? event.agents : []),
72
+ }),
73
+ setError: (0, xstate_1.assign)({
74
+ error: ({ event }) => ("error" in event ? event.error : null),
75
+ }),
76
+ incrementRetry: (0, xstate_1.assign)({
77
+ retries: ({ context }) => context.retries + 1,
78
+ }),
79
+ reset: (0, xstate_1.assign)({
80
+ task: null,
81
+ validation: null,
82
+ agents: [],
83
+ error: null,
84
+ retries: 0,
85
+ sessionId: null,
86
+ }),
87
+ },
88
+ }).createMachine({
89
+ id: "orca",
90
+ initial: "idle",
91
+ context: {
92
+ task: null,
93
+ validation: null,
94
+ agents: [],
95
+ error: null,
96
+ retries: 0,
97
+ sessionId: null,
98
+ },
99
+ states: {
100
+ idle: {
101
+ on: {
102
+ VALIDATE: {
103
+ target: "validating",
104
+ actions: ["setTask"],
105
+ },
106
+ },
107
+ },
108
+ validating: {
109
+ invoke: {
110
+ src: "validateTask",
111
+ input: ({ context }) => ({ task: context.task }),
112
+ onDone: {
113
+ target: "planning",
114
+ actions: ["setValidation"],
115
+ },
116
+ onError: {
117
+ target: "failed",
118
+ actions: ["setError"],
119
+ },
120
+ },
121
+ },
122
+ planning: {
123
+ always: [
124
+ {
125
+ guard: "isValley",
126
+ target: "failed",
127
+ actions: [
128
+ (0, xstate_1.assign)({
129
+ error: () => "Task probability too low. Ask for clarification.",
130
+ }),
131
+ ],
132
+ },
133
+ {
134
+ guard: "isValidTask",
135
+ target: "orchestrating",
136
+ },
137
+ {
138
+ target: "failed",
139
+ actions: [(0, xstate_1.assign)({ error: () => "Task validation failed" })],
140
+ },
141
+ ],
142
+ },
143
+ orchestrating: {
144
+ on: {
145
+ EXECUTE: {
146
+ target: "executing",
147
+ actions: ["setAgents"],
148
+ },
149
+ },
150
+ },
151
+ executing: {
152
+ invoke: {
153
+ src: "executeAgents",
154
+ input: ({ context }) => ({ agents: context.agents }),
155
+ onDone: {
156
+ target: "reviewing",
157
+ },
158
+ onError: {
159
+ target: "failed",
160
+ actions: ["setError"],
161
+ },
162
+ },
163
+ },
164
+ reviewing: {
165
+ on: {
166
+ COMPLETE: {
167
+ target: "completed",
168
+ },
169
+ FAIL: {
170
+ target: "failed",
171
+ actions: ["setError"],
172
+ },
173
+ },
174
+ },
175
+ completed: {
176
+ type: "final",
177
+ },
178
+ failed: {
179
+ on: {
180
+ RETRY: [
181
+ {
182
+ guard: "canRetry",
183
+ target: "validating",
184
+ actions: ["incrementRetry"],
185
+ },
186
+ {
187
+ target: "failed",
188
+ actions: [
189
+ (0, xstate_1.assign)({
190
+ error: () => "Maximum retries exceeded",
191
+ }),
192
+ ],
193
+ },
194
+ ],
195
+ RESET: {
196
+ target: "idle",
197
+ actions: ["reset"],
198
+ },
199
+ },
200
+ },
201
+ },
202
+ });
203
+ // ============================================================================
204
+ // Orca Orchestrator Class
205
+ // ============================================================================
206
+ class Orca {
207
+ constructor() {
208
+ // State machine ready
209
+ }
210
+ async orchestrate(_task, _agents) {
211
+ // This would create actor from state machine and execute
212
+ }
213
+ }
214
+ exports.Orca = Orca;
215
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/orca/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * DOCUMENT: ORCA Daemon (MVP)
3
+ * PROJECT: VIBER Universal v2
4
+ * PURPOSE: Always-on daemon that processes pending agents from SQLite and spawns OpenCode sessions.
5
+ * UPDATE PATTERN: Update when queue contract or OpenCode endpoints change.
6
+ * LOCATION: packages/orchestrator/src/daemon.ts
7
+ * RELATED: packages/core/src/db/index.ts, packages/opencode-plugin/src/index.ts
8
+ * LAST UPDATED: 2026-03-11
9
+ */
10
+ import { ViberDatabase } from "@viberlabs/viber-core/db";
11
+ export type OrcaDaemonConfig = {
12
+ rootDir: string;
13
+ intervalMs: number;
14
+ opencode: {
15
+ baseUrl: string;
16
+ username: string;
17
+ password: string;
18
+ };
19
+ };
20
+ export type OpenCodeSessionCreateResponse = {
21
+ id: string;
22
+ };
23
+ export declare class OpenCodeHttpError extends Error {
24
+ readonly status: number;
25
+ readonly url: string;
26
+ constructor(args: {
27
+ message: string;
28
+ status: number;
29
+ url: string;
30
+ });
31
+ }
32
+ export interface OpenCodeClient {
33
+ createSession(args: {
34
+ title: string;
35
+ parentID?: string;
36
+ }): Promise<OpenCodeSessionCreateResponse>;
37
+ promptAsync(args: {
38
+ sessionId: string;
39
+ agent: string;
40
+ parts: Array<{
41
+ type: "text";
42
+ text: string;
43
+ }>;
44
+ }): Promise<void>;
45
+ }
46
+ export type OrcaLogger = (line: string) => void;
47
+ export declare function createDeterministicOpenCodeClient(config: {
48
+ baseUrl: string;
49
+ username: string;
50
+ password: string;
51
+ }): OpenCodeClient;
52
+ export declare function processPendingAgentsOnce(args: {
53
+ db: ViberDatabase;
54
+ client: OpenCodeClient;
55
+ rootDir: string;
56
+ logger?: OrcaLogger;
57
+ }): Promise<{
58
+ processed: number;
59
+ skipped: number;
60
+ }>;
61
+ export declare function loadOrcaDaemonConfigFromDiskAndEnv(args: {
62
+ rootDir: string;
63
+ intervalMs?: number;
64
+ }): OrcaDaemonConfig;
65
+ export declare function runOrcaDaemon(config: OrcaDaemonConfig): Promise<void>;
66
+ //# sourceMappingURL=daemon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../../src/daemon.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EACL,aAAa,EAOd,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,GAAG,EAAE,MAAM,CAAC;gBAEhB,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE;CAMnE;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAClG,WAAW,CAAC,IAAI,EAAE;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC9C,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnB;AAED,MAAM,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAiJhD,wBAAgB,iCAAiC,CAAC,MAAM,EAAE;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,cAAc,CAsEjB;AAED,wBAAsB,wBAAwB,CAAC,IAAI,EAAE;IACnD,EAAE,EAAE,aAAa,CAAC;IAClB,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAuHlD;AAED,wBAAgB,kCAAkC,CAAC,IAAI,EAAE;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,gBAAgB,CAkEnB;AAwCD,wBAAsB,aAAa,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2F3E"}