@straiffi/archon 1.11.2 → 1.11.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 (102) hide show
  1. package/dist/client/assets/{ActivityView-DJq1H7eJ.js → ActivityView-BjvhZ4Bh.js} +1 -1
  2. package/dist/client/assets/{GitHubActionsDialog-uhkY79FP.js → GitHubActionsDialog-jhteSKM0.js} +1 -1
  3. package/dist/client/assets/{VerificationDialog-B1fn5Xb_.js → VerificationDialog-DXtxeTKq.js} +1 -1
  4. package/dist/client/assets/{architectureDiagram-3BPJPVTR-BIJiODuH.js → architectureDiagram-3BPJPVTR-DJecrWnU.js} +1 -1
  5. package/dist/client/assets/{blockDiagram-GPEHLZMM-zF74yReS.js → blockDiagram-GPEHLZMM-LK02iFZS.js} +1 -1
  6. package/dist/client/assets/{c4Diagram-AAUBKEIU-Bhedpri8.js → c4Diagram-AAUBKEIU-m96725AW.js} +1 -1
  7. package/dist/client/assets/channel-LI2rscLR.js +1 -0
  8. package/dist/client/assets/{chunk-2J33WTMH-Cii8qtH1.js → chunk-2J33WTMH-CwmuCvx8.js} +1 -1
  9. package/dist/client/assets/{chunk-3OPIFGDE-Hsh5MsIU.js → chunk-3OPIFGDE-SW4m-rIq.js} +1 -1
  10. package/dist/client/assets/{chunk-5ZQYHXKU-B2H33geG.js → chunk-5ZQYHXKU-DFfSwh_S.js} +1 -1
  11. package/dist/client/assets/{chunk-727SXJPM-o3GIhJ7i.js → chunk-727SXJPM-D2f6Vwlb.js} +1 -1
  12. package/dist/client/assets/{chunk-AQP2D5EJ-DZGEJOYd.js → chunk-AQP2D5EJ-_jtM3Tdt.js} +1 -1
  13. package/dist/client/assets/{chunk-CSCIHK7Q-D7-p3_zX.js → chunk-CSCIHK7Q-DZ1s84Fd.js} +1 -1
  14. package/dist/client/assets/{chunk-KSCS5N6A-Dg344Qr2.js → chunk-KSCS5N6A-D448HkSV.js} +1 -1
  15. package/dist/client/assets/{chunk-L5ZTLDWV-DTLPM19a.js → chunk-L5ZTLDWV-Ba5YxsnW.js} +1 -1
  16. package/dist/client/assets/{chunk-LZXEDZCA-13gIpIRU.js → chunk-LZXEDZCA-B0hk_4PK.js} +2 -2
  17. package/dist/client/assets/{chunk-ND2GUHAM-Bhl3l4MJ.js → chunk-ND2GUHAM-BpZJJZiB.js} +1 -1
  18. package/dist/client/assets/{chunk-NZK2D7GU-BDZ0gHw4.js → chunk-NZK2D7GU-LuaOcOtL.js} +1 -1
  19. package/dist/client/assets/{chunk-O5CBEL6O-C1xjgaqI.js → chunk-O5CBEL6O-Bzlew6XY.js} +1 -1
  20. package/dist/client/assets/{chunk-WU5MYG2G-DXrekGgA.js → chunk-WU5MYG2G-BYEmBNm1.js} +1 -1
  21. package/dist/client/assets/classDiagram-4FO5ZUOK-BYYHQoLT.js +1 -0
  22. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-BNvuOkCY.js +1 -0
  23. package/dist/client/assets/{dagre-BM42HDAG-ymk8yb4x.js → dagre-BM42HDAG-3iYykaMs.js} +1 -1
  24. package/dist/client/assets/{diagram-2AECGRRQ-BFKit5Xx.js → diagram-2AECGRRQ-6H-oqgXo.js} +1 -1
  25. package/dist/client/assets/{diagram-5GNKFQAL-BLuEM5D6.js → diagram-5GNKFQAL-DeGtRWDY.js} +1 -1
  26. package/dist/client/assets/{diagram-KO2AKTUF-_wS_dDU4.js → diagram-KO2AKTUF-nSErzJJr.js} +1 -1
  27. package/dist/client/assets/{diagram-LMA3HP47-DXIrjyQ-.js → diagram-LMA3HP47-D5RxIE7c.js} +1 -1
  28. package/dist/client/assets/{diagram-OG6HWLK6-DquYa7lV.js → diagram-OG6HWLK6-uAqkbcsO.js} +1 -1
  29. package/dist/client/assets/{erDiagram-TEJ5UH35-MKI9p3C-.js → erDiagram-TEJ5UH35-04qHL_j_.js} +1 -1
  30. package/dist/client/assets/{flowDiagram-I6XJVG4X-DMZ4-2rY.js → flowDiagram-I6XJVG4X-CBDUXM_F.js} +1 -1
  31. package/dist/client/assets/{ganttDiagram-6RSMTGT7-GgzwvVRo.js → ganttDiagram-6RSMTGT7-BL0PIBG6.js} +1 -1
  32. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-Br_tAiVM.js → gitGraphDiagram-PVQCEYII-Ddmxyu19.js} +1 -1
  33. package/dist/client/assets/index-Bidb-jfj.js +287 -0
  34. package/dist/client/assets/index-BrYBOiOf.css +2 -0
  35. package/dist/client/assets/{infoDiagram-5YYISTIA-DbbDZQMC.js → infoDiagram-5YYISTIA-C3eZ7CLn.js} +1 -1
  36. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-CqZ2rJxu.js → ishikawaDiagram-YF4QCWOH-CbNplKIS.js} +1 -1
  37. package/dist/client/assets/{journeyDiagram-JHISSGLW-B29_JOsJ.js → journeyDiagram-JHISSGLW-DsYeBcDj.js} +1 -1
  38. package/dist/client/assets/{kanban-definition-UN3LZRKU-CESA-TYi.js → kanban-definition-UN3LZRKU-D7hvpkBq.js} +1 -1
  39. package/dist/client/assets/{line-DdPRuRKH.js → line-TFhte-nm.js} +1 -1
  40. package/dist/client/assets/{mermaid-parser.core-vFFzvyX4.js → mermaid-parser.core-C-gXz2-T.js} +1 -1
  41. package/dist/client/assets/{mermaid.core-DkyZ6FR3.js → mermaid.core-C-rJqYoR.js} +3 -3
  42. package/dist/client/assets/{mindmap-definition-RKZ34NQL-ChH-rvOD.js → mindmap-definition-RKZ34NQL-BSM0bQDy.js} +1 -1
  43. package/dist/client/assets/{pieDiagram-4H26LBE5-BjrFBvU1.js → pieDiagram-4H26LBE5-B6uILvFr.js} +1 -1
  44. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-2Si58cQa.js → quadrantDiagram-W4KKPZXB-DqXc5qbT.js} +1 -1
  45. package/dist/client/assets/{requirementDiagram-4Y6WPE33-C7VJ8QDP.js → requirementDiagram-4Y6WPE33-Ci9VQX_M.js} +1 -1
  46. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-Boka1d1I.js → sankeyDiagram-5OEKKPKP-L2MZIY9w.js} +1 -1
  47. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-A2g_mJL3.js → sequenceDiagram-3UESZ5HK-UvFhbq-E.js} +1 -1
  48. package/dist/client/assets/{stateDiagram-AJRCARHV-DZN-P8xp.js → stateDiagram-AJRCARHV-DqosHMjy.js} +1 -1
  49. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-D1r9uj3H.js +1 -0
  50. package/dist/client/assets/{timeline-definition-PNZ67QCA-C_IatSHm.js → timeline-definition-PNZ67QCA-T_HpTr2n.js} +1 -1
  51. package/dist/client/assets/{vennDiagram-CIIHVFJN-CICUDBE3.js → vennDiagram-CIIHVFJN-CSfFKA-z.js} +1 -1
  52. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-BStcFc77.js → wardleyDiagram-YWT4CUSO-BxCQBsV1.js} +1 -1
  53. package/dist/client/assets/{xychartDiagram-2RQKCTM6-Cby4OnB9.js → xychartDiagram-2RQKCTM6-Dx2zLNeh.js} +1 -1
  54. package/dist/client/index.html +2 -2
  55. package/dist/server/index.js +164 -6
  56. package/dist/server/index.js.map +1 -1
  57. package/dist/server/lib/agent.js +76 -16
  58. package/dist/server/lib/agent.js.map +1 -1
  59. package/dist/server/lib/agentPreview.js +41 -0
  60. package/dist/server/lib/agentPreview.js.map +1 -0
  61. package/dist/server/lib/agentRuns.js +15 -0
  62. package/dist/server/lib/agentRuns.js.map +1 -1
  63. package/dist/server/lib/buildSequences.js +31 -0
  64. package/dist/server/lib/buildSequences.js.map +1 -1
  65. package/dist/server/lib/bundleBuildRecovery.js +110 -0
  66. package/dist/server/lib/bundleBuildRecovery.js.map +1 -0
  67. package/dist/server/lib/codexAgentProvider.js +44 -3
  68. package/dist/server/lib/codexAgentProvider.js.map +1 -1
  69. package/dist/server/lib/codexAppServer.js +143 -6
  70. package/dist/server/lib/codexAppServer.js.map +1 -1
  71. package/dist/server/lib/git.js +479 -2
  72. package/dist/server/lib/git.js.map +1 -1
  73. package/dist/server/lib/preview.js +37 -24
  74. package/dist/server/lib/preview.js.map +1 -1
  75. package/dist/server/lib/promptSkills.js +6 -4
  76. package/dist/server/lib/promptSkills.js.map +1 -1
  77. package/dist/server/lib/run.js +40 -5
  78. package/dist/server/lib/run.js.map +1 -1
  79. package/dist/server/lib/runPreviewCandidate.js +6 -0
  80. package/dist/server/lib/runPreviewCandidate.js.map +1 -0
  81. package/dist/server/lib/tickets.js +4 -1
  82. package/dist/server/lib/tickets.js.map +1 -1
  83. package/dist/server/lib/types.js.map +1 -1
  84. package/dist/server/workers/build.js +3 -3
  85. package/dist/server/workers/build.js.map +1 -1
  86. package/dist/server/workers/chat.js +15 -6
  87. package/dist/server/workers/chat.js.map +1 -1
  88. package/dist/server/workers/followUp.js +5 -1
  89. package/dist/server/workers/followUp.js.map +1 -1
  90. package/dist/server/workers/plan.js +40 -6
  91. package/dist/server/workers/plan.js.map +1 -1
  92. package/dist/server/workers/review.js +2 -2
  93. package/dist/server/workers/review.js.map +1 -1
  94. package/dist/server/workers/specSession.js +2 -2
  95. package/dist/server/workers/specSession.js.map +1 -1
  96. package/package.json +1 -1
  97. package/dist/client/assets/channel-DZI461ra.js +0 -1
  98. package/dist/client/assets/classDiagram-4FO5ZUOK-DWu6cWxw.js +0 -1
  99. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-CAI_KWMC.js +0 -1
  100. package/dist/client/assets/index-4RQBXPuO.css +0 -2
  101. package/dist/client/assets/index-X5cdbVG5.js +0 -279
  102. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-Cqrxk_FO.js +0 -1
@@ -16,7 +16,7 @@ import { appendClaudeHeadlessPlanPrompt, buildClaudeHeadlessPlanArgs } from './p
16
16
  import { formatCodexFileChange, formatCodexWebSearch, formatGenericToolCall } from './genericToolCall.js';
17
17
  import { getSpecSession, updateSpecSessionResumeId, updateSpecSessionStatus, updateSpecSessionTitle, updateSpecSessionUsageSnapshot } from './specs.js';
18
18
  import { updateSpecReviewRunStatus, updateSpecReviewRunStreaming, updateSpecReviewRunUsage } from './specReviews.js';
19
- import { createAgentRun, emitAgentRunsUpdated, emitExecutionAgentRunsUpdated, finalizeAgentRun, getNextAgentRunIndex, listAgentRunsForExecutionRun, listAgentRunsForParent, updateAgentRunLabel, updateAgentRunSessionId, updateAgentRunStatus } from './agentRuns.js';
19
+ import { createAgentRun, emitAgentRunsUpdated, emitExecutionAgentRunsUpdated, finalizeAgentRun, getNextAgentRunIndex, listAgentRunsForExecutionRun, listAgentRunsForParent, reconcileAgentRunSnapshot, updateAgentRunLabel, updateAgentRunSessionId, updateAgentRunStatus } from './agentRuns.js';
20
20
  import { markTicketDescriptionVisibleInBundle } from './ticketMessages.js';
21
21
  import { getTicket } from './tickets.js';
22
22
  import { createTranscriptRunSnapshots } from './transcriptRuns.js';
@@ -25,6 +25,7 @@ import { OpencodeModelResolutionError, parseOpencodeStderrModelResolutionError,
25
25
  import { extractLeadingOpencodeJsonObjects } from './opencodePromptOutput.js';
26
26
  import { assertAgentSpawnPermit, AgentSpawnPermitRevokedError } from './agentSpawnPermits.js';
27
27
  import { buildClaudeStdinMessage } from './claudeStdin.js';
28
+ import { enrichPromptWithPreview } from './agentPreview.js';
28
29
  import { createReviewAgentWatchdog, resolveWithin, REVIEW_AGENT_CLOSE_ENRICHMENT_TIMEOUT_MS, REVIEW_AGENT_INACTIVITY_TIMEOUT_MS, REVIEW_AGENT_KILL_GRACE_MS, } from './reviewAgentWatchdog.js';
29
30
  const withTranscriptRuns = (value, transcriptRuns) => {
30
31
  return transcriptRuns ? { ...value, transcriptRuns } : value;
@@ -865,6 +866,9 @@ const getSubagentCompletionStatus = (state, isError = false) => {
865
866
  if (isError || normalizedState === 'failed' || normalizedState === 'error') {
866
867
  return 'error';
867
868
  }
869
+ if (normalizedState === 'running' || normalizedState === 'pending') {
870
+ return 'running';
871
+ }
868
872
  return normalizedState === 'stopped' ? 'stopped' : 'done';
869
873
  };
870
874
  const emptyParsedStreamLine = () => ({
@@ -990,6 +994,24 @@ const parseOpencodeJsonEvent = (event, cwd) => {
990
994
  || event.part?.sessionID?.trim()
991
995
  || event.part?.sessionId?.trim()
992
996
  || null;
997
+ if (event.type === 'subagent_snapshot') {
998
+ const sessionId = typeof event.part?.state?.metadata?.sessionId === 'string'
999
+ ? event.part.state.metadata.sessionId
1000
+ : null;
1001
+ return {
1002
+ ...emptyParsedStreamLine(),
1003
+ providerSessionId,
1004
+ subagentEvents: [{
1005
+ kind: 'snapshot',
1006
+ callId: event.part?.callID ?? null,
1007
+ label: event.part?.title?.trim() || 'Subagent',
1008
+ sessionId,
1009
+ status: getSubagentCompletionStatus(event.part?.state?.status),
1010
+ log: event.part?.state?.log ?? null,
1011
+ response: event.part?.state?.response ?? null,
1012
+ }],
1013
+ };
1014
+ }
993
1015
  if (event.type === 'plan' && event.part?.type === 'text' && event.part.text) {
994
1016
  return {
995
1017
  logFragment: event.part.text,
@@ -1068,6 +1090,7 @@ const parseOpencodeJsonEvent = (event, cwd) => {
1068
1090
  ? [{
1069
1091
  kind: outputKind,
1070
1092
  callId: event.part?.callID ?? null,
1093
+ label: `Subagent: ${description}`,
1071
1094
  ...(output ? { text: output } : {}),
1072
1095
  sessionId: childSessionId,
1073
1096
  status: completionStatus,
@@ -1279,6 +1302,10 @@ export const createSubagentRunTracker = ({ parentType, parentId, io, mainRun, ex
1279
1302
  }
1280
1303
  emitAgentRunsUpdated(io, parentType, parentId);
1281
1304
  };
1305
+ const formatLabel = (label) => {
1306
+ const normalized = label?.trim().replace(/^Subagent:\s*/i, '') || 'Subagent';
1307
+ return normalized.toLowerCase() === 'subagent' ? 'Subagent' : `Subagent: ${normalized}`;
1308
+ };
1282
1309
  const updateMain = (log, response) => {
1283
1310
  if (!mainRun) {
1284
1311
  return;
@@ -1311,8 +1338,11 @@ export const createSubagentRunTracker = ({ parentType, parentId, io, mainRun, ex
1311
1338
  updateAgentRunSessionId(run.id, normalized);
1312
1339
  };
1313
1340
  const updateLabel = (run, label) => {
1314
- const normalized = label?.trim() || null;
1315
- if (!normalized || normalized === run.label) {
1341
+ if (!label?.trim()) {
1342
+ return;
1343
+ }
1344
+ const normalized = formatLabel(label);
1345
+ if (normalized === run.label) {
1316
1346
  return;
1317
1347
  }
1318
1348
  run.label = normalized;
@@ -1334,7 +1364,7 @@ export const createSubagentRunTracker = ({ parentType, parentId, io, mainRun, ex
1334
1364
  parentType,
1335
1365
  parentId,
1336
1366
  ...(!executionContext ? { runIndex } : {}),
1337
- label: event.label?.trim() || 'Subagent',
1367
+ label: formatLabel(event.label),
1338
1368
  role: 'subagent',
1339
1369
  });
1340
1370
  nextRunIndex = runIndex + 1;
@@ -1346,7 +1376,7 @@ export const createSubagentRunTracker = ({ parentType, parentId, io, mainRun, ex
1346
1376
  response: '',
1347
1377
  status: 'running',
1348
1378
  sessionId: null,
1349
- label: event.label?.trim() || 'Subagent',
1379
+ label: formatLabel(event.label),
1350
1380
  createdAt: new Date().toISOString(),
1351
1381
  };
1352
1382
  trackedRuns.push(run);
@@ -1355,19 +1385,29 @@ export const createSubagentRunTracker = ({ parentType, parentId, io, mainRun, ex
1355
1385
  continue;
1356
1386
  }
1357
1387
  let run = findRun(event.callId, event.sessionId);
1358
- if (!run && event.kind === 'complete' && !event.callId) {
1388
+ if (!run && (event.kind === 'snapshot' || (event.kind === 'complete' && !event.callId))) {
1359
1389
  handle([{
1360
1390
  kind: 'start',
1361
1391
  callId: event.callId,
1362
- label: 'Subagent',
1392
+ label: event.label ?? 'Subagent',
1363
1393
  sessionId: event.sessionId,
1364
1394
  }]);
1365
1395
  run = findRun(event.callId, event.sessionId);
1366
1396
  }
1367
- if (!run || run.status !== 'running') {
1397
+ if (!run || (run.status !== 'running' && event.kind !== 'snapshot')) {
1368
1398
  continue;
1369
1399
  }
1370
1400
  bindSessionId(run, event.sessionId);
1401
+ updateLabel(run, event.label);
1402
+ if (event.kind === 'snapshot') {
1403
+ run.log = event.log?.trim() ?? '';
1404
+ run.response = event.response?.trim() ?? '';
1405
+ const snapshotStatus = event.status ?? run.status;
1406
+ run.status = snapshotStatus;
1407
+ reconcileAgentRunSnapshot(run.id, snapshotStatus, run.log || null, run.response || null);
1408
+ emitUpdate();
1409
+ continue;
1410
+ }
1371
1411
  if (event.text) {
1372
1412
  if (event.kind === 'fragment') {
1373
1413
  run.log = appendTranscriptText(run.log, event.text);
@@ -2622,8 +2662,13 @@ const runAgentOnce = ({ ticketId, tool, prompt, cwd, io, model, variant = null,
2622
2662
  };
2623
2663
  export const runAgent = (options) => {
2624
2664
  requireExecutableAgent(options.tool);
2625
- const run = () => runAgentOnce(options);
2626
- return options.tool === 'opencode' ? retryOpenCodeDatabaseLocks(run) : run();
2665
+ const launch = (prompt) => {
2666
+ const preparedOptions = { ...options, prompt };
2667
+ const run = () => runAgentOnce(preparedOptions);
2668
+ return options.tool === 'opencode' ? retryOpenCodeDatabaseLocks(run) : run();
2669
+ };
2670
+ const enrichedPrompt = enrichPromptWithPreview(options.prompt, options.executionContext, options.executionTarget);
2671
+ return typeof enrichedPrompt === 'string' ? launch(enrichedPrompt) : enrichedPrompt.then(launch);
2627
2672
  };
2628
2673
  const runChatAgentOnce = ({ chatSessionId, tool, prompt, files = [], cwd, io, model, variant = null, skills = [], resumeSessionId = null, opencodeAgentMode = 'build', executionContext, mainRun, spawnPermitId, executionProvider = hostExecutionEnvironment, executionTarget, executionLauncherEnvironment = createHostLauncherEnvironment(), executionRuntimeEnvironment = createLegacyHostRuntimeEnvironment(cwd, { PWD: cwd }), }) => {
2629
2674
  const resolvedModel = resolveAgentModel(tool, model);
@@ -3102,8 +3147,13 @@ const runChatAgentOnce = ({ chatSessionId, tool, prompt, files = [], cwd, io, mo
3102
3147
  };
3103
3148
  export const runChatAgent = (options) => {
3104
3149
  requireExecutableAgent(options.tool);
3105
- const run = () => runChatAgentOnce(options);
3106
- return options.tool === 'opencode' ? retryOpenCodeDatabaseLocks(run) : run();
3150
+ const launch = (prompt) => {
3151
+ const preparedOptions = { ...options, prompt };
3152
+ const run = () => runChatAgentOnce(preparedOptions);
3153
+ return options.tool === 'opencode' ? retryOpenCodeDatabaseLocks(run) : run();
3154
+ };
3155
+ const enrichedPrompt = enrichPromptWithPreview(options.prompt, options.executionContext, options.executionTarget);
3156
+ return typeof enrichedPrompt === 'string' ? launch(enrichedPrompt) : enrichedPrompt.then(launch);
3107
3157
  };
3108
3158
  const runSpecAgentOnce = ({ specSessionId, tool, prompt, files = [], cwd, io, model, variant = null, skills = [], resumeSessionId = null, executionContext, mainRun, executionProvider = hostExecutionEnvironment, executionTarget, executionLauncherEnvironment = createHostLauncherEnvironment(), executionRuntimeEnvironment = createLegacyHostRuntimeEnvironment(cwd, { PWD: cwd }), }) => {
3109
3159
  const resolvedModel = resolveAgentModel(tool, model);
@@ -3569,8 +3619,13 @@ const runSpecAgentOnce = ({ specSessionId, tool, prompt, files = [], cwd, io, mo
3569
3619
  };
3570
3620
  export const runSpecAgent = (options) => {
3571
3621
  requireExecutableAgent(options.tool);
3572
- const run = () => runSpecAgentOnce(options);
3573
- return options.tool === 'opencode' ? retryOpenCodeDatabaseLocks(run) : run();
3622
+ const launch = (prompt) => {
3623
+ const preparedOptions = { ...options, prompt };
3624
+ const run = () => runSpecAgentOnce(preparedOptions);
3625
+ return options.tool === 'opencode' ? retryOpenCodeDatabaseLocks(run) : run();
3626
+ };
3627
+ const enrichedPrompt = enrichPromptWithPreview(options.prompt, options.executionContext, options.executionTarget);
3628
+ return typeof enrichedPrompt === 'string' ? launch(enrichedPrompt) : enrichedPrompt.then(launch);
3574
3629
  };
3575
3630
  /**
3576
3631
  * Focused, decoupled runner for a one-shot Spec Review.
@@ -3930,7 +3985,12 @@ const runSpecReviewAgentOnce = ({ specReviewRunId, specSessionId, tool, prompt,
3930
3985
  };
3931
3986
  export const runSpecReviewAgent = (options) => {
3932
3987
  requireExecutableAgent(options.tool);
3933
- const run = () => runSpecReviewAgentOnce(options);
3934
- return options.tool === 'opencode' ? retryOpenCodeDatabaseLocks(run) : run();
3988
+ const launch = (prompt) => {
3989
+ const preparedOptions = { ...options, prompt };
3990
+ const run = () => runSpecReviewAgentOnce(preparedOptions);
3991
+ return options.tool === 'opencode' ? retryOpenCodeDatabaseLocks(run) : run();
3992
+ };
3993
+ const enrichedPrompt = enrichPromptWithPreview(options.prompt, options.executionContext, options.executionTarget);
3994
+ return typeof enrichedPrompt === 'string' ? launch(enrichedPrompt) : enrichedPrompt.then(launch);
3935
3995
  };
3936
3996
  //# sourceMappingURL=agent.js.map