@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,148 @@
1
+ "use strict";
2
+ /**
3
+ * DOCUMENT: WORKFLOW PATTERNS
4
+ * PROJECT: VIBER Universal v2
5
+ * PURPOSE: Multi-agent workflow orchestration
6
+ * UPDATE PATTERN: Update when workflow patterns change
7
+ * LOCATION: packages/orchestrator/src/workflow/index.ts
8
+ * RELATED: orca, pool
9
+ * LAST UPDATED: 2026-03-06
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.WorkflowExecutor = void 0;
13
+ // ============================================================================
14
+ // Workflow Executor
15
+ // ============================================================================
16
+ class WorkflowExecutor {
17
+ pool;
18
+ constructor(pool) {
19
+ this.pool = pool;
20
+ }
21
+ /**
22
+ * Execute sequential workflow:
23
+ * Agent A → Agent B → Agent C
24
+ */
25
+ async sequential(task, roles) {
26
+ const startTime = Date.now();
27
+ const steps = [];
28
+ const agentIds = [];
29
+ let totalCost = 0;
30
+ for (const role of roles) {
31
+ const agentId = await this.pool.spawn(task, role, agentIds.length > 0 ? [agentIds[agentIds.length - 1]] : []);
32
+ agentIds.push(agentId);
33
+ // Wait for completion (this would be handled by pool)
34
+ // For now, we track completion
35
+ }
36
+ // Wait for all agents to complete
37
+ // Wait for all agents to complete
38
+ const completedAgents = await this.pool.drain();
39
+ void completedAgents; // Suppress unused variable warning
40
+ const totalDuration = Date.now() - startTime;
41
+ return {
42
+ workflowId: `workflow-${task.id}-${Date.now()}`,
43
+ success: steps.every((s) => s.success),
44
+ steps,
45
+ totalDuration,
46
+ totalCost,
47
+ };
48
+ }
49
+ /**
50
+ * Execute parallel workflow:
51
+ * Agents A, B, C all run simultaneously
52
+ */
53
+ async parallel(task, roles) {
54
+ const startTime = Date.now();
55
+ const agentIds = [];
56
+ // Spawn all agents simultaneously
57
+ const spawnPromises = roles.map((role) => this.pool.spawn(task, role, []));
58
+ const ids = await Promise.all(spawnPromises);
59
+ agentIds.push(...ids);
60
+ // Wait for all to complete
61
+ const completedAgents = await this.pool.drain();
62
+ void completedAgents; // Used for tracking
63
+ const totalDuration = Date.now() - startTime;
64
+ return {
65
+ workflowId: `workflow-${task.id}-${Date.now()}`,
66
+ success: true,
67
+ steps: [],
68
+ totalDuration,
69
+ totalCost: 0,
70
+ };
71
+ }
72
+ /**
73
+ * Execute pipeline workflow:
74
+ * Output of A feeds input of B
75
+ */
76
+ async pipeline(task, roles) {
77
+ const startTime = Date.now();
78
+ const agentIds = [];
79
+ let previousOutput = task.description;
80
+ for (let i = 0; i < roles.length; i++) {
81
+ const role = roles[i];
82
+ // Create modified task with previous output
83
+ const modifiedTask = {
84
+ ...task,
85
+ id: `${task.id}-step-${i}`,
86
+ description: previousOutput ?? task.description,
87
+ };
88
+ const agentId = await this.pool.spawn(modifiedTask, role, agentIds.length > 0 ? [agentIds[agentIds.length - 1]] : []);
89
+ agentIds.push(agentId);
90
+ // Wait for this agent to complete before spawning next
91
+ // This would be handled by pool with result capture
92
+ // previousOutput = result.summary;
93
+ }
94
+ // Wait for all agents to complete
95
+ // Wait for all agents to complete
96
+ const completedAgents = await this.pool.drain();
97
+ void completedAgents; // Suppress unused variable warning
98
+ const totalDuration = Date.now() - startTime;
99
+ return {
100
+ workflowId: `workflow-${task.id}-${Date.now()}`,
101
+ success: true,
102
+ steps: [],
103
+ totalDuration,
104
+ totalCost: 0,
105
+ };
106
+ }
107
+ /**
108
+ * Execute implement-review workflow:
109
+ * Coder implements → Reviewer reviews
110
+ */
111
+ async implementReview(task, _model = "qwen/qwen3-coder:480b") {
112
+ return this.sequential(task, ["coder", "reviewer"]);
113
+ }
114
+ /**
115
+ * Execute plan-implement-test workflow:
116
+ * Planner plans → Coder implements → Tester tests
117
+ */
118
+ async planImplementTest(task, _model = "qwen/qwen3-coder:480b") {
119
+ return this.sequential(task, ["planner", "coder", "tester"]);
120
+ }
121
+ /**
122
+ * Execute dual-review workflow:
123
+ * Coder implements → Two reviewers review in parallel
124
+ */
125
+ async dualReview(task, _model = "qwen/qwen3-coder:480b") {
126
+ const startTime = Date.now();
127
+ // Spawn coder
128
+ const coderId = await this.pool.spawn(task, "coder", []);
129
+ // Wait for coder to complete
130
+ const completed = await this.pool.drain();
131
+ void completed; // Suppress unused variable warning
132
+ // Spawn two reviewers in parallel
133
+ await this.pool.spawn(task, "reviewer", [coderId]);
134
+ await this.pool.spawn(task, "reviewer", [coderId]);
135
+ // Wait for both reviewers
136
+ await this.pool.drain();
137
+ const totalDuration = Date.now() - startTime;
138
+ return {
139
+ workflowId: `workflow-${task.id}-${Date.now()}`,
140
+ success: true,
141
+ steps: [],
142
+ totalDuration,
143
+ totalCost: 0,
144
+ };
145
+ }
146
+ }
147
+ exports.WorkflowExecutor = WorkflowExecutor;
148
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/workflow/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * DOCUMENT: AGENT POOL
3
+ * PROJECT: VIBER Universal v2
4
+ * PURPOSE: Agent lifecycle management with concurrency limits
5
+ * UPDATE PATTERN: Update when agent management changes
6
+ * LOCATION: packages/orchestrator/src/pool/index.ts
7
+ * RELATED: orca, opencode integration
8
+ * LAST UPDATED: 2026-03-06
9
+ */
10
+ import type { OpenCodeClient } from "@viber/opencode";
11
+ import type { Agent, Task } from "@viber/core/db";
12
+ export interface PoolConfig {
13
+ maxConcurrent: number;
14
+ client: OpenCodeClient;
15
+ }
16
+ export declare class AgentPool {
17
+ private maxConcurrent;
18
+ private client;
19
+ private active;
20
+ private queue;
21
+ private completed;
22
+ constructor(config: PoolConfig);
23
+ /**
24
+ * Spawn an agent to work on a task
25
+ */
26
+ spawn(task: Task, role: Agent["role"], dependsOn?: string[]): Promise<string>;
27
+ /**
28
+ * Get status of all agents
29
+ */
30
+ getStatus(): {
31
+ active: number;
32
+ queued: number;
33
+ completed: number;
34
+ maxConcurrent: number;
35
+ };
36
+ /**
37
+ * Complete an agent
38
+ */
39
+ complete(agentId: string, result: unknown): Promise<void>;
40
+ /**
41
+ * Mark an agent as failed
42
+ */
43
+ fail(agentId: string, _error: string): Promise<void>;
44
+ /**
45
+ * Wait for all active agents to complete
46
+ */
47
+ drain(): Promise<Agent[]>;
48
+ private spawnAgent;
49
+ private processQueue;
50
+ }
51
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pool/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAMlD,MAAM,WAAW,UAAU;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,cAAc,CAAC;CACxB;AAyBD,qBAAa,SAAS;IACpB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,SAAS,CAAe;gBAEpB,MAAM,EAAE,UAAU;IAK9B;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,SAAS,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IA6BvF;;OAEG;IACH,SAAS,IAAI;QACX,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;KACvB;IASD;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB/D;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe1D;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAejB,UAAU;IA+BxB,OAAO,CAAC,YAAY;CAYrB"}
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ /**
3
+ * DOCUMENT: AGENT POOL
4
+ * PROJECT: VIBER Universal v2
5
+ * PURPOSE: Agent lifecycle management with concurrency limits
6
+ * UPDATE PATTERN: Update when agent management changes
7
+ * LOCATION: packages/orchestrator/src/pool/index.ts
8
+ * RELATED: orca, opencode integration
9
+ * LAST UPDATED: 2026-03-06
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AgentPool = void 0;
13
+ // ============================================================================
14
+ // Agent Pool
15
+ // ============================================================================
16
+ class AgentPool {
17
+ maxConcurrent;
18
+ client;
19
+ active = new Map();
20
+ queue = [];
21
+ completed = [];
22
+ constructor(config) {
23
+ this.maxConcurrent = config.maxConcurrent;
24
+ this.client = config.client;
25
+ }
26
+ /**
27
+ * Spawn an agent to work on a task
28
+ */
29
+ async spawn(task, role, dependsOn = []) {
30
+ return new Promise((resolve, reject) => {
31
+ const agent = {
32
+ id: `agent-${task.id}-${Date.now()}`,
33
+ taskId: task.id,
34
+ role,
35
+ status: "spawned",
36
+ startedAt: new Date().toISOString(),
37
+ inputTokens: 0,
38
+ outputTokens: 0,
39
+ costUsd: 0,
40
+ durationMs: null,
41
+ result: null,
42
+ opencodeSessionId: null,
43
+ model: null,
44
+ completedAt: null,
45
+ dependsOn: dependsOn.length > 0 ? dependsOn.join(",") : null,
46
+ };
47
+ // Check if we can spawn immediately
48
+ if (this.active.size < this.maxConcurrent) {
49
+ void this.spawnAgent(agent).then(resolve).catch(reject);
50
+ }
51
+ else {
52
+ // Queue for later
53
+ this.queue.push({ agent, resolve, reject });
54
+ }
55
+ });
56
+ }
57
+ /**
58
+ * Get status of all agents
59
+ */
60
+ getStatus() {
61
+ return {
62
+ active: this.active.size,
63
+ queued: this.queue.length,
64
+ completed: this.completed.length,
65
+ maxConcurrent: this.maxConcurrent,
66
+ };
67
+ }
68
+ /**
69
+ * Complete an agent
70
+ */
71
+ async complete(agentId, result) {
72
+ const wrapper = this.active.get(agentId);
73
+ if (!wrapper) {
74
+ throw new Error(`Agent ${agentId} not found in active pool`);
75
+ }
76
+ wrapper.status = "completed";
77
+ wrapper.endTime = Date.now();
78
+ wrapper.result = result;
79
+ this.completed.push(wrapper.agent);
80
+ this.active.delete(agentId);
81
+ // Process queue
82
+ this.processQueue();
83
+ }
84
+ /**
85
+ * Mark an agent as failed
86
+ */
87
+ async fail(agentId, _error) {
88
+ const wrapper = this.active.get(agentId);
89
+ if (!wrapper) {
90
+ throw new Error(`Agent ${agentId} not found in active pool`);
91
+ }
92
+ wrapper.status = "failed";
93
+ wrapper.endTime = Date.now();
94
+ this.active.delete(agentId);
95
+ // Process queue
96
+ this.processQueue();
97
+ }
98
+ /**
99
+ * Wait for all active agents to complete
100
+ */
101
+ async drain() {
102
+ return new Promise((resolve) => {
103
+ const checkInterval = setInterval(() => {
104
+ if (this.active.size === 0 && this.queue.length === 0) {
105
+ clearInterval(checkInterval);
106
+ resolve([...this.completed]);
107
+ }
108
+ }, 100);
109
+ });
110
+ }
111
+ // ============================================================================
112
+ // Private Methods
113
+ // ============================================================================
114
+ async spawnAgent(agent) {
115
+ const wrapper = {
116
+ agent,
117
+ sessionId: null,
118
+ status: "spawning",
119
+ startTime: Date.now(),
120
+ endTime: null,
121
+ };
122
+ this.active.set(agent.id, wrapper);
123
+ try {
124
+ // Create OpenCode session
125
+ const sessionId = await this.client.createSession(`VIBER: ${agent.role} - ${agent.taskId}`);
126
+ wrapper.sessionId = sessionId;
127
+ wrapper.status = "working";
128
+ // Mark agent as working
129
+ // This would update database via ViberDatabase
130
+ return agent.id;
131
+ }
132
+ catch (err) {
133
+ wrapper.status = "failed";
134
+ this.active.delete(agent.id);
135
+ throw err;
136
+ }
137
+ }
138
+ processQueue() {
139
+ while (this.queue.length > 0 && this.active.size < this.maxConcurrent) {
140
+ const item = this.queue.shift();
141
+ void this.spawnAgent(item.agent)
142
+ .then((id) => {
143
+ item.resolve(id);
144
+ })
145
+ .catch((err) => {
146
+ item.reject(err);
147
+ });
148
+ }
149
+ }
150
+ }
151
+ exports.AgentPool = AgentPool;
152
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pool/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * DOCUMENT: WORKFLOW PATTERNS
3
+ * PROJECT: VIBER Universal v2
4
+ * PURPOSE: Multi-agent workflow orchestration
5
+ * UPDATE PATTERN: Update when workflow patterns change
6
+ * LOCATION: packages/orchestrator/src/workflow/index.ts
7
+ * RELATED: orca, pool
8
+ * LAST UPDATED: 2026-03-06
9
+ */
10
+ import type { Task, Agent } from "@viber/core/db";
11
+ import type { AgentPool } from "../pool";
12
+ export interface WorkflowStep {
13
+ agent: Agent;
14
+ dependsOn: string[];
15
+ }
16
+ export interface WorkflowResult {
17
+ workflowId: string;
18
+ success: boolean;
19
+ steps: WorkflowStepResult[];
20
+ totalDuration: number;
21
+ totalCost: number;
22
+ }
23
+ export interface WorkflowStepResult {
24
+ agentId: string;
25
+ success: boolean;
26
+ duration: number;
27
+ cost: number;
28
+ artifacts: string[];
29
+ summary: string;
30
+ }
31
+ export declare class WorkflowExecutor {
32
+ private pool;
33
+ constructor(pool: AgentPool);
34
+ /**
35
+ * Execute sequential workflow:
36
+ * Agent A → Agent B → Agent C
37
+ */
38
+ sequential(task: Task, roles: Agent["role"][]): Promise<WorkflowResult>;
39
+ /**
40
+ * Execute parallel workflow:
41
+ * Agents A, B, C all run simultaneously
42
+ */
43
+ parallel(task: Task, roles: Agent["role"][]): Promise<WorkflowResult>;
44
+ /**
45
+ * Execute pipeline workflow:
46
+ * Output of A feeds input of B
47
+ */
48
+ pipeline(task: Task, roles: Agent["role"][]): Promise<WorkflowResult>;
49
+ /**
50
+ * Execute implement-review workflow:
51
+ * Coder implements → Reviewer reviews
52
+ */
53
+ implementReview(task: Task, _model?: string): Promise<WorkflowResult>;
54
+ /**
55
+ * Execute plan-implement-test workflow:
56
+ * Planner plans → Coder implements → Tester tests
57
+ */
58
+ planImplementTest(task: Task, _model?: string): Promise<WorkflowResult>;
59
+ /**
60
+ * Execute dual-review workflow:
61
+ * Coder implements → Two reviewers review in parallel
62
+ */
63
+ dualReview(task: Task, _model?: string): Promise<WorkflowResult>;
64
+ }
65
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/workflow/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAMzC,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,IAAI,CAAY;gBAEZ,IAAI,EAAE,SAAS;IAI3B;;;OAGG;IACG,UAAU,CACd,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GACrB,OAAO,CAAC,cAAc,CAAC;IAmC1B;;;OAGG;IACG,QAAQ,CACZ,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GACrB,OAAO,CAAC,cAAc,CAAC;IA2B1B;;;OAGG;IACG,QAAQ,CACZ,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,GACrB,OAAO,CAAC,cAAc,CAAC;IA4C1B;;;OAGG;IACG,eAAe,CACnB,IAAI,EAAE,IAAI,EACV,MAAM,GAAE,MAAgC,GACvC,OAAO,CAAC,cAAc,CAAC;IAI1B;;;OAGG;IACG,iBAAiB,CACrB,IAAI,EAAE,IAAI,EACV,MAAM,GAAE,MAAgC,GACvC,OAAO,CAAC,cAAc,CAAC;IAI1B;;;OAGG;IACG,UAAU,CACd,IAAI,EAAE,IAAI,EACV,MAAM,GAAE,MAAgC,GACvC,OAAO,CAAC,cAAc,CAAC;CA2B3B"}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ /**
3
+ * DOCUMENT: WORKFLOW PATTERNS
4
+ * PROJECT: VIBER Universal v2
5
+ * PURPOSE: Multi-agent workflow orchestration
6
+ * UPDATE PATTERN: Update when workflow patterns change
7
+ * LOCATION: packages/orchestrator/src/workflow/index.ts
8
+ * RELATED: orca, pool
9
+ * LAST UPDATED: 2026-03-06
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.WorkflowExecutor = void 0;
13
+ // ============================================================================
14
+ // Workflow Executor
15
+ // ============================================================================
16
+ class WorkflowExecutor {
17
+ pool;
18
+ constructor(pool) {
19
+ this.pool = pool;
20
+ }
21
+ /**
22
+ * Execute sequential workflow:
23
+ * Agent A → Agent B → Agent C
24
+ */
25
+ async sequential(task, roles) {
26
+ const startTime = Date.now();
27
+ const steps = [];
28
+ const agentIds = [];
29
+ let totalCost = 0;
30
+ for (const role of roles) {
31
+ const agentId = await this.pool.spawn(task, role, agentIds.length > 0 ? [agentIds[agentIds.length - 1]] : []);
32
+ agentIds.push(agentId);
33
+ // Wait for completion (this would be handled by pool)
34
+ // For now, we track completion
35
+ }
36
+ // Wait for all agents to complete
37
+ // Wait for all agents to complete
38
+ const completedAgents = await this.pool.drain();
39
+ void completedAgents; // Suppress unused variable warning
40
+ const totalDuration = Date.now() - startTime;
41
+ return {
42
+ workflowId: `workflow-${task.id}-${Date.now()}`,
43
+ success: steps.every((s) => s.success),
44
+ steps,
45
+ totalDuration,
46
+ totalCost,
47
+ };
48
+ }
49
+ /**
50
+ * Execute parallel workflow:
51
+ * Agents A, B, C all run simultaneously
52
+ */
53
+ async parallel(task, roles) {
54
+ const startTime = Date.now();
55
+ const agentIds = [];
56
+ // Spawn all agents simultaneously
57
+ const spawnPromises = roles.map((role) => this.pool.spawn(task, role, []));
58
+ const ids = await Promise.all(spawnPromises);
59
+ agentIds.push(...ids);
60
+ // Wait for all to complete
61
+ const completedAgents = await this.pool.drain();
62
+ void completedAgents; // Used for tracking
63
+ const totalDuration = Date.now() - startTime;
64
+ return {
65
+ workflowId: `workflow-${task.id}-${Date.now()}`,
66
+ success: true,
67
+ steps: [],
68
+ totalDuration,
69
+ totalCost: 0,
70
+ };
71
+ }
72
+ /**
73
+ * Execute pipeline workflow:
74
+ * Output of A feeds input of B
75
+ */
76
+ async pipeline(task, roles) {
77
+ const startTime = Date.now();
78
+ const agentIds = [];
79
+ let previousOutput = task.description;
80
+ for (let i = 0; i < roles.length; i++) {
81
+ const role = roles[i];
82
+ // Create modified task with previous output
83
+ const modifiedTask = {
84
+ ...task,
85
+ id: `${task.id}-step-${i}`,
86
+ description: previousOutput ?? task.description,
87
+ };
88
+ const agentId = await this.pool.spawn(modifiedTask, role, agentIds.length > 0 ? [agentIds[agentIds.length - 1]] : []);
89
+ agentIds.push(agentId);
90
+ // Wait for this agent to complete before spawning next
91
+ // This would be handled by pool with result capture
92
+ // previousOutput = result.summary;
93
+ }
94
+ // Wait for all agents to complete
95
+ // Wait for all agents to complete
96
+ const completedAgents = await this.pool.drain();
97
+ void completedAgents; // Suppress unused variable warning
98
+ const totalDuration = Date.now() - startTime;
99
+ return {
100
+ workflowId: `workflow-${task.id}-${Date.now()}`,
101
+ success: true,
102
+ steps: [],
103
+ totalDuration,
104
+ totalCost: 0,
105
+ };
106
+ }
107
+ /**
108
+ * Execute implement-review workflow:
109
+ * Coder implements → Reviewer reviews
110
+ */
111
+ async implementReview(task, _model = "qwen/qwen3-coder:480b") {
112
+ return this.sequential(task, ["coder", "reviewer"]);
113
+ }
114
+ /**
115
+ * Execute plan-implement-test workflow:
116
+ * Planner plans → Coder implements → Tester tests
117
+ */
118
+ async planImplementTest(task, _model = "qwen/qwen3-coder:480b") {
119
+ return this.sequential(task, ["planner", "coder", "tester"]);
120
+ }
121
+ /**
122
+ * Execute dual-review workflow:
123
+ * Coder implements → Two reviewers review in parallel
124
+ */
125
+ async dualReview(task, _model = "qwen/qwen3-coder:480b") {
126
+ const startTime = Date.now();
127
+ // Spawn coder
128
+ const coderId = await this.pool.spawn(task, "coder", []);
129
+ // Wait for coder to complete
130
+ const completed = await this.pool.drain();
131
+ void completed; // Suppress unused variable warning
132
+ // Spawn two reviewers in parallel
133
+ await this.pool.spawn(task, "reviewer", [coderId]);
134
+ await this.pool.spawn(task, "reviewer", [coderId]);
135
+ // Wait for both reviewers
136
+ await this.pool.drain();
137
+ const totalDuration = Date.now() - startTime;
138
+ return {
139
+ workflowId: `workflow-${task.id}-${Date.now()}`,
140
+ success: true,
141
+ steps: [],
142
+ totalDuration,
143
+ totalCost: 0,
144
+ };
145
+ }
146
+ }
147
+ exports.WorkflowExecutor = WorkflowExecutor;
148
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflow/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,65 @@
1
+ {
2
+ "name": "@viberlabs/orchestrator",
3
+ "version": "2.1.0",
4
+ "description": "Agent orchestration layer for VIBER Universal - ORCA State Machine, Agent Pool, and Workflows",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": "./dist/index.js",
9
+ "./orca": {
10
+ "import": "./dist/orca/index.js",
11
+ "types": "./dist/orca/index.d.ts"
12
+ },
13
+ "./pool": {
14
+ "import": "./dist/pool/index.js",
15
+ "types": "./dist/pool/index.d.ts"
16
+ },
17
+ "./workflow": {
18
+ "import": "./dist/workflow/index.js",
19
+ "types": "./dist/workflow/index.d.ts"
20
+ }
21
+ },
22
+ "files": [
23
+ "dist",
24
+ "README.md"
25
+ ],
26
+ "keywords": [
27
+ "viber",
28
+ "orchestration",
29
+ "agents",
30
+ "xstate",
31
+ "state-machine",
32
+ "workflow"
33
+ ],
34
+ "author": "VIBER Universal",
35
+ "license": "MIT",
36
+ "repository": {
37
+ "type": "git",
38
+ "url": "https://github.com/viber-universal/viber-v2.git",
39
+ "directory": "packages/orchestrator"
40
+ },
41
+ "bugs": {
42
+ "url": "https://github.com/viber-universal/viber-v2/issues"
43
+ },
44
+ "homepage": "https://github.com/viber-universal/viber-v2#readme",
45
+ "dependencies": {
46
+ "xstate": "^5.28.0",
47
+ "@viberlabs/viber-core": "2.0.1",
48
+ "@viberlabs/opencode": "1.1.0"
49
+ },
50
+ "devDependencies": {
51
+ "@types/node": "^22.13.0",
52
+ "typescript": "^5.9.3",
53
+ "vitest": "^3.0.7"
54
+ },
55
+ "engines": {
56
+ "node": ">=20.0.0"
57
+ },
58
+ "scripts": {
59
+ "build": "tsc",
60
+ "dev": "tsc --watch",
61
+ "clean": "rm -rf dist",
62
+ "typecheck": "tsc --noEmit",
63
+ "test": "vitest run"
64
+ }
65
+ }