teamshare-bridge 0.2.1 → 0.2.3

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 (83) hide show
  1. package/README.md +40 -11
  2. package/dist/bridge/daemon.js +43 -9
  3. package/dist/bridge/daemon.js.map +1 -1
  4. package/dist/bridge/spawn.d.ts +2 -0
  5. package/dist/bridge/spawn.js +11 -5
  6. package/dist/bridge/spawn.js.map +1 -1
  7. package/dist/cli/args.d.ts +8 -0
  8. package/dist/cli/args.js +38 -0
  9. package/dist/cli/args.js.map +1 -0
  10. package/dist/cli/commands/build.d.ts +1 -0
  11. package/dist/cli/commands/build.js +385 -0
  12. package/dist/cli/commands/build.js.map +1 -0
  13. package/dist/cli/commands/chat.d.ts +1 -0
  14. package/dist/cli/commands/chat.js +113 -0
  15. package/dist/cli/commands/chat.js.map +1 -0
  16. package/dist/cli/commands/connect.d.ts +1 -0
  17. package/dist/cli/commands/connect.js +23 -0
  18. package/dist/cli/commands/connect.js.map +1 -0
  19. package/dist/cli/commands/doc.d.ts +1 -0
  20. package/dist/cli/commands/doc.js +109 -0
  21. package/dist/cli/commands/doc.js.map +1 -0
  22. package/dist/cli/commands/harness.d.ts +3 -0
  23. package/dist/cli/commands/harness.js +86 -0
  24. package/dist/cli/commands/harness.js.map +1 -0
  25. package/dist/cli/commands/key.d.ts +2 -0
  26. package/dist/cli/commands/key.js +126 -0
  27. package/dist/cli/commands/key.js.map +1 -0
  28. package/dist/cli/commands/link.d.ts +2 -0
  29. package/dist/cli/commands/link.js +93 -0
  30. package/dist/cli/commands/link.js.map +1 -0
  31. package/dist/cli/commands/run.d.ts +1 -0
  32. package/dist/cli/commands/run.js +219 -0
  33. package/dist/cli/commands/run.js.map +1 -0
  34. package/dist/cli/commands/shared.d.ts +6 -0
  35. package/dist/cli/commands/shared.js +51 -0
  36. package/dist/cli/commands/shared.js.map +1 -0
  37. package/dist/cli/commands/skills.d.ts +1 -0
  38. package/dist/cli/commands/skills.js +29 -0
  39. package/dist/cli/commands/skills.js.map +1 -0
  40. package/dist/cli/commands/usage.d.ts +1 -0
  41. package/dist/cli/commands/usage.js +78 -0
  42. package/dist/cli/commands/usage.js.map +1 -0
  43. package/dist/cli/index.js +48 -1499
  44. package/dist/cli/index.js.map +1 -1
  45. package/dist/cli/utils.d.ts +38 -0
  46. package/dist/cli/utils.js +139 -0
  47. package/dist/cli/utils.js.map +1 -0
  48. package/dist/lib/api.d.ts +13 -1
  49. package/dist/lib/api.js +5 -2
  50. package/dist/lib/api.js.map +1 -1
  51. package/dist/lib/brief.js +19 -3
  52. package/dist/lib/brief.js.map +1 -1
  53. package/dist/lib/chat-reply.d.ts +4 -3
  54. package/dist/lib/chat-reply.js +24 -27
  55. package/dist/lib/chat-reply.js.map +1 -1
  56. package/dist/lib/config.d.ts +3 -1
  57. package/dist/lib/config.js +1 -0
  58. package/dist/lib/config.js.map +1 -1
  59. package/dist/lib/doc-reply.d.ts +2 -1
  60. package/dist/lib/doc-reply.js +14 -7
  61. package/dist/lib/doc-reply.js.map +1 -1
  62. package/dist/lib/harness-adapter.d.ts +47 -0
  63. package/dist/lib/harness-adapter.js +283 -0
  64. package/dist/lib/harness-adapter.js.map +1 -0
  65. package/dist/lib/llm.js +8 -7
  66. package/dist/lib/llm.js.map +1 -1
  67. package/dist/lib/models.d.ts +7 -1
  68. package/dist/lib/models.js +31 -2
  69. package/dist/lib/models.js.map +1 -1
  70. package/dist/lib/orchestrator/client.d.ts +44 -4
  71. package/dist/lib/orchestrator/client.js +492 -21
  72. package/dist/lib/orchestrator/client.js.map +1 -1
  73. package/dist/lib/orchestrator/index.d.ts +1 -1
  74. package/dist/lib/orchestrator/index.js +5 -1
  75. package/dist/lib/orchestrator/index.js.map +1 -1
  76. package/dist/lib/orchestrator/worktree.d.ts +52 -0
  77. package/dist/lib/orchestrator/worktree.js +250 -6
  78. package/dist/lib/orchestrator/worktree.js.map +1 -1
  79. package/dist/lib/skills.d.ts +2 -2
  80. package/dist/lib/skills.js +2 -1
  81. package/dist/lib/skills.js.map +1 -1
  82. package/package.json +1 -1
  83. package/skills/teamshare-orchestrator-ask/SKILL.md +63 -0
@@ -3,18 +3,60 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.OrchestratorClient = void 0;
4
4
  /**
5
5
  * OrchestratorClient: WS connection to the backend /orchestrator namespace.
6
- * Receives commands (git, verify, worktree) and returns results.
6
+ *
7
+ * The backend sends commands (verify, worktree, git, planner) that this
8
+ * bridge EXECUTES locally and reports back. The client is both:
9
+ * - a command RECEIVER (backend -> bridge): runs git/worktree/verify/planner
10
+ * and emits the matching `orchestrator:*` result event with the same cmdId;
11
+ * - a command SENDER (bridge -> backend) kept for callers that push
12
+ * results of their own (none currently - the daemon only receives).
7
13
  *
8
14
  * Mirrors the daemon.ts reconnect pattern for resilience.
9
15
  */
10
16
  const socket_io_client_1 = require("socket.io-client");
17
+ const node_path_1 = require("node:path");
18
+ const node_os_1 = require("node:os");
19
+ const node_fs_1 = require("node:fs");
20
+ const node_child_process_1 = require("node:child_process");
11
21
  const config_1 = require("../config");
12
22
  const api_1 = require("../api");
23
+ const llm_1 = require("../llm");
24
+ const models_1 = require("../models");
25
+ const worktree_1 = require("./worktree");
26
+ const runner_1 = require("./runner");
13
27
  const log = {
14
- info: (msg) => console.log(`[orchestrator-client] ${msg}`),
15
- warn: (msg) => console.warn(`[orchestrator-client] ${msg}`),
16
- error: (msg) => console.error(`[orchestrator-client] ${msg}`),
28
+ info: (m) => console.log(`[orchestrator-client] ${m}`),
29
+ warn: (m) => console.warn(`[orchestrator-client] ${m}`),
30
+ error: (m) => console.error(`[orchestrator-client] ${m}`),
17
31
  };
32
+ const RESULT_EVENTS = [
33
+ 'orchestrator:verify-result',
34
+ 'orchestrator:worktree-created',
35
+ 'orchestrator:worktree-removed',
36
+ 'orchestrator:git-status-result',
37
+ 'orchestrator:git-commit-result',
38
+ 'orchestrator:git-merge-result',
39
+ 'orchestrator:git-push-result',
40
+ 'orchestrator:git-revert-head-result',
41
+ 'orchestrator:git-reset-head-result',
42
+ 'orchestrator:repo-context-result',
43
+ 'orchestrator:review-result',
44
+ ];
45
+ /** Backend -> bridge command events this client must service. */
46
+ const COMMAND_EVENTS = [
47
+ 'orchestrator:verify',
48
+ 'orchestrator:create-worktree',
49
+ 'orchestrator:remove-worktree',
50
+ 'orchestrator:git-status',
51
+ 'orchestrator:git-commit',
52
+ 'orchestrator:git-merge',
53
+ 'orchestrator:git-push',
54
+ 'orchestrator:git-revert-head',
55
+ 'orchestrator:git-reset-head',
56
+ 'orchestrator:planner-request',
57
+ 'orchestrator:review-request',
58
+ 'orchestrator:question',
59
+ ];
18
60
  class OrchestratorClient {
19
61
  socket = null;
20
62
  pending = new Map();
@@ -25,7 +67,7 @@ class OrchestratorClient {
25
67
  this.apiUrl = apiUrl;
26
68
  }
27
69
  /**
28
- * Connect to the /orchestrator WS namespace.
70
+ * Connect to the /orchestrator WS namespace and start serving commands.
29
71
  */
30
72
  connect() {
31
73
  const config = (0, config_1.loadConfig)();
@@ -46,26 +88,16 @@ class OrchestratorClient {
46
88
  this.socket.on('connect_error', (err) => {
47
89
  log.error(`Connection error: ${err.message}`);
48
90
  });
49
- // Register handlers for all result events
50
- const resultEvents = [
51
- 'orchestrator:verify-result',
52
- 'orchestrator:worktree-created',
53
- 'orchestrator:worktree-removed',
54
- 'orchestrator:git-status-result',
55
- 'orchestrator:git-commit-result',
56
- 'orchestrator:git-merge-result',
57
- 'orchestrator:repo-context-result',
58
- ];
59
- for (const event of resultEvents) {
91
+ // Register handlers for all result events (sender side).
92
+ for (const event of RESULT_EVENTS) {
60
93
  this.socket.on(event, (data) => {
61
94
  this.resolvePending(data.cmdId, data);
62
95
  });
63
96
  }
64
- // Progress events (not correlated to commands)
97
+ // Progress / capacity events (not correlated to commands).
65
98
  this.socket.on('orchestrator:progress', (data) => {
66
99
  log.info(`Progress: ${data.taskId} - ${data.message}`);
67
100
  });
68
- // Agent capacity events
69
101
  this.socket.on('orchestrator:agent-ready', (data) => {
70
102
  log.info(`Agent ready: ${data.agentId}`);
71
103
  });
@@ -75,6 +107,116 @@ class OrchestratorClient {
75
107
  this.socket.on('orchestrator:agent-idle', (data) => {
76
108
  log.info(`Agent idle: ${data.agentId}`);
77
109
  });
110
+ // Command receiver: execute locally and report back.
111
+ this.socket.on('orchestrator:verify', (data) => {
112
+ void this.handleVerify(data).catch((err) => {
113
+ this.emitResult('orchestrator:verify-result', data.cmdId, {
114
+ exitCode: 1,
115
+ stdout: '',
116
+ stderr: (0, config_1.msg)(err),
117
+ durationMs: 0,
118
+ });
119
+ });
120
+ });
121
+ this.socket.on('orchestrator:create-worktree', (data) => {
122
+ void this.handleCreateWorktree(data).catch((err) => {
123
+ this.emitResult('orchestrator:worktree-created', data.cmdId, {
124
+ error: (0, config_1.msg)(err),
125
+ });
126
+ });
127
+ });
128
+ this.socket.on('orchestrator:remove-worktree', (data) => {
129
+ void this.handleRemoveWorktree(data).catch((err) => {
130
+ this.emitResult('orchestrator:worktree-removed', data.cmdId, {
131
+ error: (0, config_1.msg)(err),
132
+ });
133
+ });
134
+ });
135
+ this.socket.on('orchestrator:git-status', (data) => {
136
+ void this.handleGitStatus(data).catch((err) => {
137
+ this.emitResult('orchestrator:git-status-result', data.cmdId, {
138
+ error: (0, config_1.msg)(err),
139
+ });
140
+ });
141
+ });
142
+ this.socket.on('orchestrator:git-commit', (data) => {
143
+ void this.handleGitCommit(data).catch((err) => {
144
+ this.emitResult('orchestrator:git-commit-result', data.cmdId, {
145
+ error: (0, config_1.msg)(err),
146
+ });
147
+ });
148
+ });
149
+ this.socket.on('orchestrator:git-merge', (data) => {
150
+ void this.handleGitMerge(data).catch((err) => {
151
+ this.emitResult('orchestrator:git-merge-result', data.cmdId, {
152
+ success: false,
153
+ error: (0, config_1.msg)(err),
154
+ });
155
+ });
156
+ });
157
+ this.socket.on('orchestrator:git-push', (data) => {
158
+ void this.handleGitPush(data).catch((err) => {
159
+ this.emitResult('orchestrator:git-push-result', data.cmdId, {
160
+ success: false,
161
+ error: (0, config_1.msg)(err),
162
+ });
163
+ });
164
+ });
165
+ this.socket.on('orchestrator:git-revert-head', (data) => {
166
+ void this.handleGitRevertHead(data).catch((err) => {
167
+ this.emitResult('orchestrator:git-revert-head-result', data.cmdId, {
168
+ commitHash: '',
169
+ error: (0, config_1.msg)(err),
170
+ });
171
+ });
172
+ });
173
+ this.socket.on('orchestrator:git-reset-head', (data) => {
174
+ void this.handleGitResetHead(data).catch((err) => {
175
+ this.emitResult('orchestrator:git-reset-head-result', data.cmdId, {
176
+ success: false,
177
+ error: (0, config_1.msg)(err),
178
+ });
179
+ });
180
+ });
181
+ this.socket.on('orchestrator:planner-request', (data) => {
182
+ void this.handlePlannerRequest(data).catch((err) => {
183
+ log.warn(`planner-request failed: ${(0, config_1.msg)(err)}`);
184
+ this.emitResult('orchestrator:planner-result', data.cmdId, {
185
+ tasks: [
186
+ {
187
+ title: String(data.description ?? '').slice(0, 200),
188
+ description: String(data.description ?? ''),
189
+ dependencies: [],
190
+ },
191
+ ],
192
+ });
193
+ });
194
+ });
195
+ this.socket.on('orchestrator:review-request', (data) => {
196
+ void this.handleReview(data).catch((err) => {
197
+ this.emitResult('orchestrator:review-result', data.cmdId, {
198
+ approved: false,
199
+ error: (0, config_1.msg)(err),
200
+ });
201
+ });
202
+ });
203
+ this.socket.on('orchestrator:question', (data) => {
204
+ void this.handleQuestion(data).catch((err) => {
205
+ this.emitResult('orchestrator:question-answered', data.cmdId, {
206
+ acknowledged: false,
207
+ error: (0, config_1.msg)(err),
208
+ });
209
+ });
210
+ });
211
+ this.socket.on('orchestrator:create-pr', (data) => {
212
+ void this.handleCreatePr(data).catch((err) => {
213
+ this.emitResult('orchestrator:create-pr-result', data.cmdId, {
214
+ url: '',
215
+ number: 0,
216
+ error: (0, config_1.msg)(err),
217
+ });
218
+ });
219
+ });
78
220
  }
79
221
  /**
80
222
  * Disconnect from the WS.
@@ -91,6 +233,329 @@ class OrchestratorClient {
91
233
  }
92
234
  this.pending.clear();
93
235
  }
236
+ // ------------------------------------------------------------------
237
+ // Command handlers (backend -> bridge)
238
+ // ------------------------------------------------------------------
239
+ async handleVerify(data) {
240
+ const result = await (0, runner_1.runVerificationCommand)(String(data.step ?? 'build'), String(data.cwd ?? ''), typeof data.timeout === 'number' ? data.timeout : undefined);
241
+ this.emitResult('orchestrator:verify-result', data.cmdId, {
242
+ exitCode: result.exitCode,
243
+ stdout: result.stdout,
244
+ stderr: result.stderr,
245
+ durationMs: result.durationMs,
246
+ });
247
+ }
248
+ async handleCreateWorktree(data) {
249
+ let repoPath = (data.repoPath ? String(data.repoPath) : null) ??
250
+ (data.projectId ? (0, config_1.projectCwd)(String(data.projectId)) : null);
251
+ // Agent-level repo override: clone/fetch the agent's gitRepositoryUrl into
252
+ // ~/.teamshare/repos/<projectId>/ and create the worktree inside it.
253
+ if (data.gitRepositoryUrl && data.projectId) {
254
+ const cacheDir = (0, node_path_1.join)((0, node_os_1.homedir)(), '.teamshare', 'repos', String(data.projectId));
255
+ try {
256
+ if (!(0, node_fs_1.existsSync)(cacheDir)) {
257
+ log.info(`Cloning agent repo ${data.gitRepositoryUrl} -> ${cacheDir}`);
258
+ (0, node_fs_1.mkdirSync)((0, node_path_1.join)(cacheDir, '..'), { recursive: true });
259
+ (0, node_child_process_1.execSync)(`git clone ${data.gitRepositoryUrl} "${cacheDir}"`, {
260
+ stdio: 'pipe',
261
+ timeout: 120_000,
262
+ });
263
+ }
264
+ else {
265
+ (0, node_child_process_1.execSync)('git fetch --all --prune', {
266
+ cwd: cacheDir,
267
+ stdio: 'pipe',
268
+ timeout: 60_000,
269
+ });
270
+ }
271
+ repoPath = cacheDir;
272
+ log.info(`Using agent repo clone at ${cacheDir} for worktree`);
273
+ }
274
+ catch (err) {
275
+ log.warn(`Agent repo clone failed (${(0, config_1.msg)(err)}) - falling back to linked folder`);
276
+ }
277
+ }
278
+ if (!repoPath) {
279
+ throw new Error('No repository path - link the project folder with: teamshare-agent link --project <id> --path <folder>');
280
+ }
281
+ // Auto-init repo if the linked folder isn't a git repo yet.
282
+ (0, worktree_1.ensureRepoExists)(repoPath);
283
+ // Auto-create a local bare repo as origin when no remote is configured,
284
+ // so git push succeeds without requiring a GitHub / Gitea account.
285
+ if (data.projectId && !data.gitRepositoryUrl) {
286
+ (0, worktree_1.ensureLocalBareRepo)(repoPath, String(data.projectId));
287
+ }
288
+ const info = (0, worktree_1.createWorktree)(repoPath, String(data.branchName ?? `ai/task-${data.agentId ?? 'x'}`), String(data.baseBranch ?? 'main'), String(data.repoId ?? data.branchName ?? 'x'));
289
+ this.emitResult('orchestrator:worktree-created', data.cmdId, {
290
+ path: info.path,
291
+ commitHash: info.commitHash,
292
+ });
293
+ }
294
+ async handleRemoveWorktree(data) {
295
+ const worktreePath = String(data.worktreePath ?? '');
296
+ const repoPath = (data.repoPath ? String(data.repoPath) : null) ??
297
+ (0, node_path_1.join)(worktreePath, '..', '..');
298
+ (0, worktree_1.removeWorktree)(repoPath, worktreePath);
299
+ this.emitResult('orchestrator:worktree-removed', data.cmdId, { ok: true });
300
+ }
301
+ async handleGitStatus(data) {
302
+ const status = (0, worktree_1.gitStatus)(String(data.worktreePath ?? ''));
303
+ this.emitResult('orchestrator:git-status-result', data.cmdId, {
304
+ stdout: JSON.stringify(status),
305
+ stderr: '',
306
+ exitCode: 0,
307
+ });
308
+ }
309
+ async handleGitCommit(data) {
310
+ const hash = (0, worktree_1.gitCommit)(String(data.worktreePath ?? ''), String(data.message ?? 'ai commit'));
311
+ this.emitResult('orchestrator:git-commit-result', data.cmdId, {
312
+ commitHash: hash,
313
+ });
314
+ }
315
+ async handleGitMerge(data) {
316
+ const repoPath = (data.repoPath ? String(data.repoPath) : null) ??
317
+ (data.projectId ? (0, config_1.projectCwd)(String(data.projectId)) : null);
318
+ if (!repoPath) {
319
+ throw new Error('No repository path - link the project folder with: teamshare-agent link --project <id> --path <folder>');
320
+ }
321
+ const result = (0, worktree_1.gitMerge)(repoPath, String(data.sourceBranch ?? ''), String(data.targetBranch ?? 'main'));
322
+ this.emitResult('orchestrator:git-merge-result', data.cmdId, result);
323
+ }
324
+ async handleGitPush(data) {
325
+ const repoPath = (data.repoPath ? String(data.repoPath) : null) ??
326
+ (data.projectId ? (0, config_1.projectCwd)(String(data.projectId)) : null);
327
+ if (!repoPath) {
328
+ throw new Error('No repository path - link the project folder with: teamshare-agent link --project <id> --path <folder>');
329
+ }
330
+ const result = (0, worktree_1.gitPush)(repoPath, String(data.branch ?? ''), String(data.remote ?? 'origin'), data.setUpstream !== false);
331
+ this.emitResult('orchestrator:git-push-result', data.cmdId, result);
332
+ }
333
+ async handleGitRevertHead(data) {
334
+ const worktreePath = String(data.worktreePath ?? '');
335
+ const result = (0, worktree_1.gitRevertHead)(worktreePath);
336
+ this.emitResult('orchestrator:git-revert-head-result', data.cmdId, result);
337
+ }
338
+ async handleGitResetHead(data) {
339
+ const worktreePath = String(data.worktreePath ?? '');
340
+ const commitHash = String(data.commitHash ?? '');
341
+ const result = (0, worktree_1.gitResetHead)(worktreePath, commitHash);
342
+ this.emitResult('orchestrator:git-reset-head-result', data.cmdId, result);
343
+ }
344
+ async handlePlannerRequest(data) {
345
+ const description = String(data.description ?? '');
346
+ const tasks = await this.plan(description);
347
+ this.emitResult('orchestrator:planner-result', data.cmdId, { tasks });
348
+ }
349
+ /**
350
+ * Verification-agent review (backend -> bridge): LLM-reviews the worktree
351
+ * diff and returns an approve/reject verdict. The model + per-provider API
352
+ * key are resolved from the payload (or the bridge's env). A rejected
353
+ * review makes the backend treat verification as failed (retry/escalation).
354
+ */
355
+ async handleReview(data) {
356
+ const worktreePath = String(data.worktreePath ?? '');
357
+ const modelSpec = String(data.model ?? process.env.LLM_MODEL ?? 'deepseek-chat');
358
+ const apiKey = (0, models_1.resolveApiKeyForProvider)(modelSpec);
359
+ const started = Date.now();
360
+ if (!apiKey) {
361
+ throw new Error('No API key for review - set the provider key (e.g. OPENROUTER_API_KEY) or LLM_API_KEY');
362
+ }
363
+ const diff = (0, worktree_1.gitDiff)(worktreePath);
364
+ if (!diff.trim()) {
365
+ // No changes to review - treat as approved (nothing to reject).
366
+ this.emitResult('orchestrator:review-result', data.cmdId, {
367
+ approved: true,
368
+ feedback: 'No changes in worktree',
369
+ durationMs: Date.now() - started,
370
+ });
371
+ return;
372
+ }
373
+ const resolved = (0, models_1.resolveModel)(modelSpec, process.env.LLM_BASE_URL);
374
+ const prompt = 'You are a senior code reviewer for a software build orchestrator. ' +
375
+ 'Review the git diff below. Approve ONLY if the change is correct, ' +
376
+ 'complete, follows the project conventions, and introduces no obvious ' +
377
+ 'bugs, security issues, or broken tests/builds. Return ONLY a JSON ' +
378
+ 'object, no prose: {"approved": true|false, "feedback": "1-3 sentence ' +
379
+ 'reason, or requested changes"}\n\nDIFF:\n' + diff.slice(0, 60_000);
380
+ try {
381
+ const raw = await (0, llm_1.complete)(prompt, {
382
+ baseUrl: resolved.baseUrl,
383
+ apiKey,
384
+ model: resolved.model,
385
+ temperature: 0.1,
386
+ maxTokens: 800,
387
+ });
388
+ const cleaned = raw.replace(/```json/gi, '').replace(/```/g, '').trim();
389
+ const start = cleaned.indexOf('{');
390
+ const end = cleaned.lastIndexOf('}');
391
+ const parsed = start >= 0 && end > start
392
+ ? JSON.parse(cleaned.slice(start, end + 1))
393
+ : null;
394
+ const approved = parsed && parsed.approved === true;
395
+ this.emitResult('orchestrator:review-result', data.cmdId, {
396
+ approved: Boolean(approved),
397
+ feedback: parsed?.feedback ? String(parsed.feedback) : undefined,
398
+ durationMs: Date.now() - started,
399
+ });
400
+ }
401
+ catch (err) {
402
+ throw new Error(`Review LLM failed: ${(0, config_1.msg)(err)}`);
403
+ }
404
+ }
405
+ /**
406
+ * Backend notifies bridge that an orchestrator task has a pending human
407
+ * question. Acknowledge immediately — the bridge relays this to any active
408
+ * agent session so it can pause and wait for the answer.
409
+ */
410
+ async handleQuestion(data) {
411
+ const taskId = String(data.taskId ?? '');
412
+ const body = String(data.body ?? '');
413
+ log.info(`Question pending for task ${taskId}: ${body.slice(0, 120)}`);
414
+ this.emitResult('orchestrator:question-answered', data.cmdId, {
415
+ acknowledged: true,
416
+ });
417
+ }
418
+ /**
419
+ * Create a pull request via the GitHub/Gitea API.
420
+ * Called by the backend after a successful push when the agent
421
+ * has a gitRepositoryUrl configured.
422
+ */
423
+ async handleCreatePr(data) {
424
+ const repoUrl = String(data.repoUrl ?? '');
425
+ const headBranch = String(data.headBranch ?? '');
426
+ const baseBranch = String(data.baseBranch ?? 'main');
427
+ const title = String(data.title ?? 'TeamShare orchestrator PR');
428
+ const body = String(data.body ?? '');
429
+ const token = String(data.token ?? '');
430
+ if (!repoUrl || !headBranch || !token) {
431
+ throw new Error('Missing required fields: repoUrl, headBranch, token');
432
+ }
433
+ // Parse repo URL to determine API endpoint
434
+ const u = new URL(repoUrl);
435
+ const parts = u.pathname.replace(/\.git$/, '').split('/').filter(Boolean);
436
+ if (parts.length < 2)
437
+ throw new Error(`Invalid repo URL: ${repoUrl}`);
438
+ const isGitHub = u.host === 'github.com' || u.host.endsWith('.github.com');
439
+ const owner = parts[0];
440
+ const repo = parts[1];
441
+ let apiUrl;
442
+ let headers;
443
+ if (isGitHub) {
444
+ apiUrl = `https://api.github.com/repos/${owner}/${repo}/pulls`;
445
+ headers = {
446
+ Authorization: `Bearer ${token}`,
447
+ Accept: 'application/vnd.github+json',
448
+ 'X-GitHub-Api-Version': '2022-11-28',
449
+ 'Content-Type': 'application/json',
450
+ 'User-Agent': 'TeamShare-Bridge',
451
+ };
452
+ }
453
+ else {
454
+ // Gitea
455
+ apiUrl = `https://${u.host}/api/v1/repos/${owner}/${repo}/pulls`;
456
+ headers = {
457
+ Authorization: `token ${token}`,
458
+ Accept: 'application/json',
459
+ 'Content-Type': 'application/json',
460
+ };
461
+ }
462
+ const res = await fetch(apiUrl, {
463
+ method: 'POST',
464
+ headers,
465
+ body: JSON.stringify({
466
+ title,
467
+ head: headBranch,
468
+ base: baseBranch,
469
+ body,
470
+ }),
471
+ });
472
+ if (!res.ok) {
473
+ const errText = await res.text();
474
+ throw new Error(`PR creation failed (${res.status}): ${errText}`);
475
+ }
476
+ const result = (await res.json());
477
+ log.info(`Created PR #${result.number}: ${result.html_url}`);
478
+ this.emitResult('orchestrator:create-pr-result', data.cmdId, {
479
+ url: result.html_url,
480
+ number: result.number,
481
+ });
482
+ }
483
+ /**
484
+ * Signal to the backend that a human answered a question on a
485
+ * question_pending orchestrator task. Called by the daemon when it
486
+ * receives a `question.answered` wake for an orchestrator task.
487
+ */
488
+ signalQuestionAnswered(orchestratorTaskId, answerCommentId) {
489
+ if (!this.socket?.connected) {
490
+ log.warn(`Cannot signal question-answered: not connected`);
491
+ return;
492
+ }
493
+ this.socket.emit('orchestrator:question-answered', {
494
+ cmdId: `auto_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`,
495
+ orchestratorTaskId,
496
+ answerCommentId,
497
+ });
498
+ }
499
+ /**
500
+ * LLM task decomposition for the planner. Falls back to a single node when
501
+ * no LLM key is configured or the model doesn't return parseable JSON.
502
+ */
503
+ async plan(description) {
504
+ const single = () => [
505
+ {
506
+ title: description.slice(0, 200),
507
+ description,
508
+ dependencies: [],
509
+ },
510
+ ];
511
+ if (!description.trim())
512
+ return single();
513
+ const apiKey = process.env.LLM_API_KEY ?? process.env.CHAT_LLM_API_KEY;
514
+ if (!apiKey)
515
+ return single();
516
+ const baseUrl = process.env.LLM_BASE_URL ?? 'https://api.deepseek.com/v1';
517
+ const model = process.env.LLM_MODEL ?? 'deepseek-chat';
518
+ const prompt = 'You are a software build planner. Break the task below into 2-5 concrete, ' +
519
+ 'independently verifiable subtasks, in dependency order. ' +
520
+ 'Return ONLY a JSON array, no prose: ' +
521
+ '[{"title":"...","description":"...","dependencies":[indices into the array]}] ' +
522
+ '(dependencies are 0-based indices of steps that must finish first; empty array = none).\n\n' +
523
+ `TASK: ${description}`;
524
+ try {
525
+ const raw = await (0, llm_1.complete)(prompt, {
526
+ baseUrl,
527
+ apiKey,
528
+ model,
529
+ temperature: 0.2,
530
+ maxTokens: 2000,
531
+ });
532
+ const cleaned = raw
533
+ .replace(/```json/gi, '')
534
+ .replace(/```/g, '')
535
+ .trim();
536
+ const start = cleaned.indexOf('[');
537
+ const end = cleaned.lastIndexOf(']');
538
+ if (start < 0 || end <= start)
539
+ return single();
540
+ const parsed = JSON.parse(cleaned.slice(start, end + 1));
541
+ if (!Array.isArray(parsed) || parsed.length === 0)
542
+ return single();
543
+ return parsed.map((node, i) => ({
544
+ title: String(node.title ?? `Step ${i + 1}`).slice(0, 200),
545
+ description: String(node.description ?? ''),
546
+ dependencies: Array.isArray(node.dependencies)
547
+ ? node.dependencies.map(Number).filter((d) => Number.isInteger(d) && d >= 0 && d < parsed.length && d !== i)
548
+ : [],
549
+ }));
550
+ }
551
+ catch (err) {
552
+ log.warn(`planner LLM failed, using single node: ${(0, config_1.msg)(err)}`);
553
+ return single();
554
+ }
555
+ }
556
+ // ------------------------------------------------------------------
557
+ // Sender side
558
+ // ------------------------------------------------------------------
94
559
  /**
95
560
  * Send a command and wait for the result.
96
561
  */
@@ -112,9 +577,7 @@ class OrchestratorClient {
112
577
  this.socket.emit(event, { cmdId, ...payload });
113
578
  });
114
579
  }
115
- /**
116
- * Resolve a pending command by its id.
117
- */
580
+ /** Resolve a pending command by its id. */
118
581
  resolvePending(cmdId, data) {
119
582
  const pending = this.pending.get(cmdId);
120
583
  if (!pending) {
@@ -125,6 +588,14 @@ class OrchestratorClient {
125
588
  this.pending.delete(cmdId);
126
589
  pending.resolve(data);
127
590
  }
591
+ /** Emit a command result back to the backend. */
592
+ emitResult(event, cmdId, payload) {
593
+ if (!this.socket?.connected) {
594
+ log.warn(`Cannot emit ${event}: not connected`);
595
+ return;
596
+ }
597
+ this.socket.emit(event, { cmdId, ...payload });
598
+ }
128
599
  /**
129
600
  * Check if connected.
130
601
  */
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/lib/orchestrator/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/lib/orchestrator/client.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export { OrchestratorClient } from './client';
2
- export { createWorktree, removeWorktree, gitStatus, gitCommit, gitMerge, gitDiff, getWorktreeRoot, } from './worktree';
2
+ export { createWorktree, removeWorktree, gitStatus, gitCommit, gitMerge, gitDiff, gitPush, gitRemoteUrl, isGitRepo, gitInit, getWorktreeRoot, } from './worktree';
3
3
  export type { WorktreeInfo, GitStatus } from './worktree';
4
4
  export { runCommand, runVerificationCommand } from './runner';
5
5
  export type { CommandResult } from './runner';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.runVerificationCommand = exports.runCommand = exports.getWorktreeRoot = exports.gitDiff = exports.gitMerge = exports.gitCommit = exports.gitStatus = exports.removeWorktree = exports.createWorktree = exports.OrchestratorClient = void 0;
3
+ exports.runVerificationCommand = exports.runCommand = exports.getWorktreeRoot = exports.gitInit = exports.isGitRepo = exports.gitRemoteUrl = exports.gitPush = exports.gitDiff = exports.gitMerge = exports.gitCommit = exports.gitStatus = exports.removeWorktree = exports.createWorktree = exports.OrchestratorClient = void 0;
4
4
  var client_1 = require("./client");
5
5
  Object.defineProperty(exports, "OrchestratorClient", { enumerable: true, get: function () { return client_1.OrchestratorClient; } });
6
6
  var worktree_1 = require("./worktree");
@@ -10,6 +10,10 @@ Object.defineProperty(exports, "gitStatus", { enumerable: true, get: function ()
10
10
  Object.defineProperty(exports, "gitCommit", { enumerable: true, get: function () { return worktree_1.gitCommit; } });
11
11
  Object.defineProperty(exports, "gitMerge", { enumerable: true, get: function () { return worktree_1.gitMerge; } });
12
12
  Object.defineProperty(exports, "gitDiff", { enumerable: true, get: function () { return worktree_1.gitDiff; } });
13
+ Object.defineProperty(exports, "gitPush", { enumerable: true, get: function () { return worktree_1.gitPush; } });
14
+ Object.defineProperty(exports, "gitRemoteUrl", { enumerable: true, get: function () { return worktree_1.gitRemoteUrl; } });
15
+ Object.defineProperty(exports, "isGitRepo", { enumerable: true, get: function () { return worktree_1.isGitRepo; } });
16
+ Object.defineProperty(exports, "gitInit", { enumerable: true, get: function () { return worktree_1.gitInit; } });
13
17
  Object.defineProperty(exports, "getWorktreeRoot", { enumerable: true, get: function () { return worktree_1.getWorktreeRoot; } });
14
18
  var runner_1 = require("./runner");
15
19
  Object.defineProperty(exports, "runCommand", { enumerable: true, get: function () { return runner_1.runCommand; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/orchestrator/index.ts"],"names":[],"mappings":";;;AAAA,mCAA8C;AAArC,4GAAA,kBAAkB,OAAA;AAC3B,uCAQoB;AAPlB,0GAAA,cAAc,OAAA;AACd,0GAAA,cAAc,OAAA;AACd,qGAAA,SAAS,OAAA;AACT,qGAAA,SAAS,OAAA;AACT,oGAAA,QAAQ,OAAA;AACR,mGAAA,OAAO,OAAA;AACP,2GAAA,eAAe,OAAA;AAGjB,mCAA8D;AAArD,oGAAA,UAAU,OAAA;AAAE,gHAAA,sBAAsB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/orchestrator/index.ts"],"names":[],"mappings":";;;AAAA,mCAA8C;AAArC,4GAAA,kBAAkB,OAAA;AAC3B,uCAYoB;AAXlB,0GAAA,cAAc,OAAA;AACd,0GAAA,cAAc,OAAA;AACd,qGAAA,SAAS,OAAA;AACT,qGAAA,SAAS,OAAA;AACT,oGAAA,QAAQ,OAAA;AACR,mGAAA,OAAO,OAAA;AACP,mGAAA,OAAO,OAAA;AACP,wGAAA,YAAY,OAAA;AACZ,qGAAA,SAAS,OAAA;AACT,mGAAA,OAAO,OAAA;AACP,2GAAA,eAAe,OAAA;AAGjB,mCAA8D;AAArD,oGAAA,UAAU,OAAA;AAAE,gHAAA,sBAAsB,OAAA"}