@vibes.diy/api-svc 14.0.20 → 14.0.22

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/create-handler.js +12 -0
  2. package/create-handler.js.map +1 -1
  3. package/evento-handler-manifest.js +2 -0
  4. package/evento-handler-manifest.js.map +1 -1
  5. package/index.d.ts +1 -0
  6. package/index.js +1 -0
  7. package/index.js.map +1 -1
  8. package/intern/agent-assembly.d.ts +1 -0
  9. package/intern/agent-assembly.js +6 -1
  10. package/intern/agent-assembly.js.map +1 -1
  11. package/intern/agent-belt.d.ts +4 -1
  12. package/intern/agent-belt.js +13 -3
  13. package/intern/agent-belt.js.map +1 -1
  14. package/intern/agent-build-tools.d.ts +4 -0
  15. package/intern/agent-build-tools.js +6 -0
  16. package/intern/agent-build-tools.js.map +1 -1
  17. package/intern/agent-dispatcher.d.ts +4 -0
  18. package/intern/agent-dispatcher.js +13 -5
  19. package/intern/agent-dispatcher.js.map +1 -1
  20. package/intern/agent-evidence.d.ts +12 -0
  21. package/intern/agent-evidence.js +70 -0
  22. package/intern/agent-evidence.js.map +1 -0
  23. package/intern/agent-file-tools.d.ts +12 -0
  24. package/intern/agent-file-tools.js +162 -0
  25. package/intern/agent-file-tools.js.map +1 -0
  26. package/intern/agent-file-validation.d.ts +9 -0
  27. package/intern/agent-file-validation.js +81 -0
  28. package/intern/agent-file-validation.js.map +1 -0
  29. package/intern/agent-instruction.d.ts +1 -1
  30. package/intern/agent-instruction.js +6 -1
  31. package/intern/agent-instruction.js.map +1 -1
  32. package/intern/agent-lane-flag.d.ts +14 -0
  33. package/intern/agent-lane-flag.js +6 -0
  34. package/intern/agent-lane-flag.js.map +1 -1
  35. package/intern/agent-session-instruction.d.ts +1 -0
  36. package/intern/agent-session-instruction.js +43 -0
  37. package/intern/agent-session-instruction.js.map +1 -0
  38. package/intern/agent-session-runtime.d.ts +39 -0
  39. package/intern/agent-session-runtime.js +247 -0
  40. package/intern/agent-session-runtime.js.map +1 -0
  41. package/intern/agent-session-store.d.ts +6 -0
  42. package/intern/agent-session-store.js +52 -0
  43. package/intern/agent-session-store.js.map +1 -0
  44. package/intern/agent-session.d.ts +193 -0
  45. package/intern/agent-session.js +180 -0
  46. package/intern/agent-session.js.map +1 -0
  47. package/intern/agent-turn.d.ts +6 -1
  48. package/intern/agent-turn.js +9 -4
  49. package/intern/agent-turn.js.map +1 -1
  50. package/intern/agent-wake.d.ts +11 -6
  51. package/intern/agent-wake.js +11 -7
  52. package/intern/agent-wake.js.map +1 -1
  53. package/intern/llm-tool-loop.d.ts +22 -1
  54. package/intern/llm-tool-loop.js +130 -7
  55. package/intern/llm-tool-loop.js.map +1 -1
  56. package/intern/mint-fire-core.js +3 -3
  57. package/intern/mint-fire-core.js.map +1 -1
  58. package/intern/open-turn-store.d.ts +6 -0
  59. package/intern/open-turn-store.js +16 -3
  60. package/intern/open-turn-store.js.map +1 -1
  61. package/intern/process-access-bindings.d.ts +1 -0
  62. package/intern/process-access-bindings.js +1 -1
  63. package/intern/process-access-bindings.js.map +1 -1
  64. package/intern/prompt-dispatch-context.d.ts +4 -0
  65. package/intern/prompt-dispatch-context.js +19 -0
  66. package/intern/prompt-dispatch-context.js.map +1 -0
  67. package/intern/turn-terminal.d.ts +61 -0
  68. package/intern/turn-terminal.js +0 -0
  69. package/intern/turn-terminal.js.map +1 -0
  70. package/intern/work-tools.d.ts +1 -0
  71. package/intern/work-tools.js +1 -1
  72. package/intern/work-tools.js.map +1 -1
  73. package/package.json +12 -11
  74. package/public/fork-app.js +24 -26
  75. package/public/fork-app.js.map +1 -1
  76. package/public/fs-prompt.d.ts +2 -1
  77. package/public/fs-prompt.js +57 -2
  78. package/public/fs-prompt.js.map +1 -1
  79. package/public/llm-dispatch.d.ts +2 -2
  80. package/public/llm-dispatch.js +26 -1
  81. package/public/llm-dispatch.js.map +1 -1
  82. package/public/open-chat.d.ts +2 -2
  83. package/public/open-chat.js +25 -0
  84. package/public/open-chat.js.map +1 -1
  85. package/public/prompt-chat-section.js +371 -12
  86. package/public/prompt-chat-section.js.map +1 -1
  87. package/public/report-top-vibes-by-traffic.d.ts +5 -0
  88. package/public/report-top-vibes-by-traffic.js +69 -0
  89. package/public/report-top-vibes-by-traffic.js.map +1 -0
  90. package/public/vibe-traffic-source.d.ts +114 -0
  91. package/public/vibe-traffic-source.js +322 -0
  92. package/public/vibe-traffic-source.js.map +1 -0
  93. package/types.d.ts +5 -0
  94. package/types.js.map +1 -1
  95. package/usage-report/codegen-delivery-alert.js +2 -2
  96. package/usage-report/codegen-delivery-alert.js.map +1 -1
  97. package/usage-report/vibe-traffic-alert-util.d.ts +74 -0
  98. package/usage-report/vibe-traffic-alert-util.js +237 -0
  99. package/usage-report/vibe-traffic-alert-util.js.map +1 -0
  100. package/usage-report/vibe-traffic-alert.d.ts +2 -0
  101. package/usage-report/vibe-traffic-alert.js +99 -0
  102. package/usage-report/vibe-traffic-alert.js.map +1 -0
@@ -11,6 +11,12 @@ import { ensureApplicationChatId } from "../intern/ensure-application-chat-id.js
11
11
  import { ensureLogger } from "@vibes.diy/identity";
12
12
  import { runMintFire } from "../intern/mint-fire-core.js";
13
13
  import { sweepLostTurns } from "../intern/open-turn-sweep.js";
14
+ import { agentSessionEnabled } from "../intern/agent-lane-flag.js";
15
+ import { hasLiveAgentSession } from "../intern/agent-session-runtime.js";
16
+ import { readAgentSession } from "../intern/agent-session-store.js";
17
+ import { fireAgentWakeTurn } from "../intern/agent-wake.js";
18
+ import { promptChatSection } from "./prompt-chat-section.js";
19
+ import { promptDispatchContext } from "../intern/prompt-dispatch-context.js";
14
20
  import { chatHasAnyTurn, chatHasSettledTurn, claimMintJob, getMintJob, markMintJobLogged, } from "../intern/mint-job-store.js";
15
21
  const MINT_PENDING_STRAND_MS = 60_000;
16
22
  async function fireUnfiredAgentFirstTurn(args) {
@@ -198,6 +204,7 @@ export const openChat = {
198
204
  ...(firstTurnFired ? { firstTurnFired: true } : {}),
199
205
  ...(draft === true ? { draft: true } : {}),
200
206
  ...(agentFirstTurn ? { agentFirstTurn: true } : {}),
207
+ ...(req.mode === "codegen" && agentSessionEnabled(vctx) ? { agentSession: true } : {}),
201
208
  }));
202
209
  if (mintFire !== undefined) {
203
210
  if (mintFire.accepted) {
@@ -214,6 +221,24 @@ export const openChat = {
214
221
  }
215
222
  }
216
223
  else if (req.mode === "codegen" && chatCreated !== true && req.dryRun !== true && req.deferFire !== true) {
224
+ if (agentSessionEnabled(vctx) && hasLiveAgentSession(vctx.connections, chatId) === false) {
225
+ const saved = await readAgentSession(vctx.sql, chatId);
226
+ if (saved.isErr()) {
227
+ vctx.logger.Error().Err(saved).Str("chatId", chatId).Msg("agent-session-resume-read-failed");
228
+ }
229
+ else if (saved.Ok()?.status === "running") {
230
+ fireAgentWakeTurn({
231
+ vctx,
232
+ host: ctx,
233
+ auth: req.auth,
234
+ outerTid: ctx.validated.tid,
235
+ chatId,
236
+ budget: 1,
237
+ note: "Resume the persisted agent session.",
238
+ handle: (wakeCtx) => promptChatSection.handle(promptDispatchContext(ctx, wakeCtx.validated)),
239
+ });
240
+ }
241
+ }
217
242
  void recoverParkedMintJob({
218
243
  ctx,
219
244
  vctx,
@@ -1 +1 @@
1
- {"version":3,"file":"open-chat.js","sourceRoot":"","sources":["../../jsr/public/open-chat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"open-chat.js","sourceRoot":"","sources":["../../jsr/public/open-chat.ts"],"names":[],"mappings":"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"}
@@ -24,23 +24,29 @@ import { bumpAppRecency } from "../intern/bump-app-recency.js";
24
24
  import { waitChatPersistIdle } from "../intern/chat-persist-gate.js";
25
25
  import { peekInFlightTurns } from "../intern/in-flight-turns.js";
26
26
  import { acquireTurnBuildLock, peekBuildLockEntry, releaseTurnBuildLock } from "../intern/codegen-build-lock.js";
27
- import { agentFirstTurnEnabled, agentLaneEnabled } from "../intern/agent-lane-flag.js";
27
+ import { agentAwaitBuildEnabled, agentFirstTurnEnabled, agentLaneEnabled, agentSessionEnabled } from "../intern/agent-lane-flag.js";
28
+ import { deliverAgentSession } from "../intern/agent-session-runtime.js";
29
+ import { runEditVibeTool } from "../intern/agent-build-tools.js";
28
30
  import { claimFirstTurnMint, claimMintJob } from "../intern/mint-job-store.js";
29
31
  import { codegenTurnLane, legacyVariantHint, routeAgentTurn } from "../intern/agent-router.js";
30
32
  import { assembleAgentPayload } from "../intern/agent-assembly.js";
31
33
  import { createAgentBelt } from "../intern/agent-belt.js";
32
- import { createAgentTurnStream } from "../intern/agent-turn.js";
34
+ import { createAgentTurnStream, agentTotalBudgetMs } from "../intern/agent-turn.js";
33
35
  import { createAgentBuildDispatcher } from "../intern/agent-dispatcher.js";
34
- import { decideAgentWake, fireAgentWakeTurn, readAgentWakeBudget, renderAgentWakeNote } from "../intern/agent-wake.js";
35
- import { resolveAgentActor } from "../intern/agent-actor.js";
36
+ import { decideAgentWake, fireAgentWakeTurn, readAgentWakeBudget, renderAgentWakeNote, renderBuildSettledSentence, } from "../intern/agent-wake.js";
37
+ import { createPendingBuildLandings, renderBuildLandingNote, settleTurnTerminal } from "../intern/turn-terminal.js";
38
+ import { resolveAgentActor, resolveChatApp } from "../intern/agent-actor.js";
39
+ import { langForFilename } from "../intern/ensure-push-seeded-chat.js";
40
+ import { promptDispatchContext } from "../intern/prompt-dispatch-context.js";
36
41
  import { dispatchLlmRequestWithFallback } from "./llm-dispatch.js";
37
42
  import { scheduleUrlResearch } from "../intern/url-research-queue.js";
38
43
  import { createProviderSseStream } from "../intern/provider-sse.js";
39
44
  import { activateWorkUrls, createWorkToolBelt, createWorkToolLoopStream, loadWorkFetchUrlContext, loadWorkVfs, withoutServerTools, workBudgetAllowsDispatch, } from "../intern/work-tools.js";
40
45
  import { emitWorkTurnStatus } from "../intern/work-turn-status.js";
41
- import { closeTurn, shouldCloseTurnRecord } from "../intern/open-turn-store.js";
46
+ import { closeTurn, extendOpenTurnDeadline, OPEN_TURN_AWAIT_BUILD_EXTENSION_MS, shouldCloseTurnRecord, } from "../intern/open-turn-store.js";
42
47
  import { maxPersistedBlockSeq } from "../intern/persisted-block-seq.js";
43
48
  import { appendBlockEvent, currentUserMessageText, handlerLlmRequest } from "./llm-dispatch.js";
49
+ import { createAgentEvidenceWriter, nextAgentSessionMessages } from "../intern/agent-evidence.js";
44
50
  import { handleLlmResponse, } from "./stream-assembly.js";
45
51
  import { handleProdiaImageRequest } from "./image-gen.js";
46
52
  import { handleFSPrompt } from "./fs-prompt.js";
@@ -186,6 +192,8 @@ export const promptChatSection = {
186
192
  }
187
193
  let preAssembled;
188
194
  let agentAssembled;
195
+ let agentSession;
196
+ let agentEvidence;
189
197
  let agentFirstTurnMint = false;
190
198
  if (isReqCreationPromptChatSection(orig)) {
191
199
  if (agentWakeTurn === false && !orig.prompt.messages.some((m) => m.role === "user")) {
@@ -283,10 +291,157 @@ export const promptChatSection = {
283
291
  ...(agentWakeNote === undefined ? {} : { wakeNote: agentWakeNote }),
284
292
  ...(buildInFlight === undefined ? {} : { buildInFlight: { promptId: buildInFlight.promptId } }),
285
293
  ...(agentFirstTurnMint ? { noAppYet: true } : {}),
294
+ ...(agentSessionEnabled(vctx) && agentFirstTurnMint === false ? { session: true } : {}),
286
295
  });
287
296
  if (rAgent.isErr())
288
297
  return Result.Err(rAgent);
289
298
  agentAssembled = { model: rAgent.Ok().model, messages: rAgent.Ok().messages };
299
+ if (agentSessionEnabled(vctx) && agentFirstTurnMint === false) {
300
+ const rawIncoming = orig.prompt.messages.filter(isUserChatMessage);
301
+ const newMessageCount = orig.prompt.messages.filter(isChatMessage).length;
302
+ const incoming = newMessageCount === 0 ? [] : rAgent.Ok().messages.slice(-newMessageCount).filter(isUserChatMessage);
303
+ const delivered = incoming.length === 0 && agentWakeTurn
304
+ ? [
305
+ {
306
+ role: "user",
307
+ content: [
308
+ {
309
+ type: "text",
310
+ text: agentWakeNote ??
311
+ "[session resumed] Continue from your persisted context and pending results. Inspect outcomes before retrying interrupted tools.",
312
+ },
313
+ ],
314
+ },
315
+ ]
316
+ : incoming;
317
+ const acquired = await deliverAgentSession(vctx, {
318
+ chatId: req.chatId,
319
+ userId: req._auth.verifiedAuth.claims.userId,
320
+ ownerHandle: resChat.ownerHandle,
321
+ appSlug: resChat.appSlug,
322
+ }, { id: ctx.validated.tid, messages: delivered });
323
+ if (acquired.isErr())
324
+ return Result.Err(acquired.Err());
325
+ const { live, created } = acquired.Ok();
326
+ if (created === false) {
327
+ const receiptId = vctx.sthis.nextId(12).str;
328
+ const receiptEvidence = createAgentEvidenceWriter({
329
+ chatId: req.chatId,
330
+ promptId: receiptId,
331
+ sessionId: live.promptId,
332
+ append: (evt, blockSeq) => appendBlockEvent({ ctx, vctx, req, promptId: receiptId, blockSeq, evt }),
333
+ });
334
+ const linked = await receiptEvidence({ kind: "active" });
335
+ if (linked.isErr())
336
+ return Result.Err(linked.Err());
337
+ await ctx.send.send(ctx, wrapMsgBase(ctx.validated, {
338
+ payload: {
339
+ type: "vibes.diy.res-prompt-chat-section",
340
+ chatId: req.chatId,
341
+ ownerHandle: resChat.ownerHandle,
342
+ appSlug: resChat.appSlug,
343
+ promptId: receiptId,
344
+ outerTid: req.outerTid,
345
+ mode: req.mode,
346
+ },
347
+ tid: ctx.validated.tid,
348
+ src: "agentSession",
349
+ }));
350
+ const echo = await appendBlockEvent({
351
+ ctx,
352
+ vctx,
353
+ req,
354
+ promptId: receiptId,
355
+ blockSeq: 0,
356
+ evt: {
357
+ type: "prompt.req",
358
+ streamId: receiptId,
359
+ chatId: req.chatId,
360
+ seq: 0,
361
+ request: { messages: rawIncoming },
362
+ timestamp: new Date(),
363
+ },
364
+ });
365
+ if (echo.isErr())
366
+ return Result.Err(echo.Err());
367
+ const terminal = await appendBlockEvent({
368
+ ctx,
369
+ vctx,
370
+ req,
371
+ promptId: receiptId,
372
+ blockSeq: 1,
373
+ evt: {
374
+ type: "block.end",
375
+ streamId: receiptId,
376
+ blockId: receiptId,
377
+ blockNr: 0,
378
+ seq: 1,
379
+ timestamp: new Date(),
380
+ stats: {
381
+ toplevel: { lines: 0, bytes: 0 },
382
+ code: { lines: 0, bytes: 0 },
383
+ image: { lines: 0, bytes: 0 },
384
+ total: { lines: 0, bytes: 0 },
385
+ },
386
+ usage: { given: [], calculated: { prompt_tokens: 0, completion_tokens: 0, total_tokens: 0 } },
387
+ },
388
+ });
389
+ if (terminal.isErr())
390
+ return Result.Err(terminal.Err());
391
+ const ended = await appendBlockEvent({
392
+ ctx,
393
+ vctx,
394
+ req,
395
+ promptId: receiptId,
396
+ blockSeq: 2,
397
+ evt: { type: "prompt.block-end", streamId: receiptId, chatId: req.chatId, seq: 2, timestamp: new Date() },
398
+ });
399
+ if (ended.isErr())
400
+ return Result.Err(ended.Err());
401
+ return Result.Ok(EventoResult.Continue);
402
+ }
403
+ agentSession = live;
404
+ agentEvidence = createAgentEvidenceWriter({
405
+ chatId: req.chatId,
406
+ promptId: live.promptId,
407
+ sessionId: live.promptId,
408
+ append: (evt, blockSeq) => appendBlockEvent({ ctx, vctx, req, promptId: live.promptId, blockSeq, evt }),
409
+ });
410
+ const active = await agentEvidence({
411
+ kind: "active",
412
+ ...(live.supersedes === undefined ? {} : { supersedes: live.supersedes }),
413
+ });
414
+ if (active.isErr()) {
415
+ live.close();
416
+ return Result.Err(active.Err());
417
+ }
418
+ if (live.session.messages().length === 0) {
419
+ const initial = agentAssembled.messages.slice(0, agentAssembled.messages.length - newMessageCount - (agentWakeNote === undefined ? 0 : 1));
420
+ const saved = await live.session.checkpoint(initial);
421
+ if (saved.isErr()) {
422
+ live.close();
423
+ return Result.Err(saved.Err());
424
+ }
425
+ }
426
+ const events = await nextAgentSessionMessages(live.session, agentEvidence);
427
+ if (events.isErr()) {
428
+ live.close();
429
+ return Result.Err(events.Err());
430
+ }
431
+ agentAssembled = {
432
+ ...agentAssembled,
433
+ messages: [
434
+ ...agentAssembled.messages.filter((message) => message.role === "system"),
435
+ ...live.session.messages().filter((message) => message.role !== "system"),
436
+ ...(events.Ok() ?? []),
437
+ ],
438
+ };
439
+ const saved = await live.session.checkpoint(agentAssembled.messages);
440
+ if (saved.isErr()) {
441
+ live.close();
442
+ return Result.Err(saved.Err());
443
+ }
444
+ }
290
445
  }
291
446
  else {
292
447
  const rAssembled = await assemblePromptPayload(vctx, {
@@ -419,6 +574,7 @@ export const promptChatSection = {
419
574
  else if (agentAssembled !== undefined && isReqPromptLLMChatSection(orig)) {
420
575
  const agentPayload = agentAssembled;
421
576
  prompSectionAction = async (scope, blockSeq) => {
577
+ const liveSession = agentSession;
422
578
  const rActor = await resolveAgentActor(vctx, {
423
579
  userId: req._auth.verifiedAuth.claims.userId,
424
580
  scope: { ownerHandle: resChat.ownerHandle, appSlug: resChat.appSlug },
@@ -431,17 +587,72 @@ export const promptChatSection = {
431
587
  appSlug: resChat.appSlug,
432
588
  editBaseFsId: undefined,
433
589
  });
590
+ if (liveSession !== undefined && rVfs.isErr())
591
+ return Result.Err(rVfs.Err());
434
592
  if (rVfs.isErr()) {
435
593
  vctx.logger.Warn().Err(rVfs).Str("chatId", req.chatId).Msg("agent-turn-vfs-load-failed");
436
594
  }
437
- const vfs = rVfs.isOk() ? rVfs.Ok() : new Map();
595
+ const vfs = new Map(rVfs.isOk() ? rVfs.Ok() : []);
596
+ const pendingBuilds = agentSessionEnabled(vctx) === false && agentAwaitBuildEnabled(vctx)
597
+ ? createPendingBuildLandings({
598
+ scope: vctx.connections,
599
+ renderLanding: (outcome) => renderBuildLandingNote(renderBuildSettledSentence(outcome)),
600
+ onUndelivered: (landing) => {
601
+ const missed = decideAgentWake({
602
+ agentLane,
603
+ agentDispatched: true,
604
+ movedFilesystem: true,
605
+ budget: agentWakeBudget,
606
+ });
607
+ vctx.logger
608
+ .Info()
609
+ .Any("event", {
610
+ chatId: req.chatId,
611
+ promptId,
612
+ awaited: landing.promptId,
613
+ outcome: landing.outcome.outcome,
614
+ wake: missed.wake,
615
+ })
616
+ .Msg("agent-build-landing-undelivered");
617
+ if (missed.wake === false)
618
+ return;
619
+ fireAgentWakeTurn({
620
+ vctx,
621
+ host: ctx,
622
+ auth: orig.auth,
623
+ outerTid: req.outerTid,
624
+ chatId: req.chatId,
625
+ budget: missed.budget,
626
+ note: renderAgentWakeNote(landing.outcome, agentSessionEnabled(vctx)),
627
+ handle: (wakeCtx) => promptChatSection.handle(promptDispatchContext(ctx, wakeCtx.validated)),
628
+ });
629
+ },
630
+ onRegister: (target) => {
631
+ void extendOpenTurnDeadline(vctx.sql, {
632
+ chatId: req.chatId,
633
+ promptId,
634
+ deadlineAtMs: Date.now() + OPEN_TURN_AWAIT_BUILD_EXTENSION_MS,
635
+ }).then((r) => {
636
+ if (r.isErr()) {
637
+ vctx.logger
638
+ .Warn()
639
+ .Err(r)
640
+ .Any("event", { chatId: req.chatId, promptId, awaiting: target.promptId })
641
+ .Msg("agent-await-deadline-extend-failed");
642
+ }
643
+ });
644
+ },
645
+ })
646
+ : undefined;
438
647
  const dispatcher = createAgentBuildDispatcher({
439
648
  vctx,
440
649
  host: ctx,
441
650
  auth: orig.auth,
442
651
  outerTid: req.outerTid,
443
652
  handle: (dispatchCtx) => promptChatSection.handle(dispatchCtx),
444
- wakeBudget: agentWakeBudget,
653
+ wakeBudget: liveSession === undefined ? agentWakeBudget : 0,
654
+ ...(pendingBuilds === undefined ? {} : { onPendingBuild: (t) => pendingBuilds.register(t) }),
655
+ ...(agentSession === undefined ? {} : { onPendingBuild: (t) => agentSession?.watch(t.promptId) }),
445
656
  ...(agentFirstTurnMint
446
657
  ? { firstTurn: { chatId: req.chatId, ...(submittedAt === undefined ? {} : { submittedAt }) } }
447
658
  : {}),
@@ -463,6 +674,8 @@ export const promptChatSection = {
463
674
  : {}),
464
675
  ...(agentFetchUrlContext === undefined ? {} : { fetchUrl: agentFetchUrlContext }),
465
676
  dispatcher,
677
+ ...(liveSession === undefined ? {} : { queueEdit: (input) => liveSession.queue(input) }),
678
+ ...(liveSession === undefined ? {} : { fileSession: liveSession }),
466
679
  onStyleApplied: async (applied) => {
467
680
  await appendBlockEvent({
468
681
  ctx,
@@ -489,6 +702,92 @@ export const promptChatSection = {
489
702
  .Msg("agent-turn-dispatched-build");
490
703
  },
491
704
  });
705
+ if (agentSession !== undefined) {
706
+ await agentSession.bind((input) => runEditVibeTool(vctx, {
707
+ actor: rActor.Ok(),
708
+ chatId: req.chatId,
709
+ input,
710
+ dispatcher,
711
+ }), async (commit) => {
712
+ const currentActor = await resolveAgentActor(vctx, {
713
+ userId: rActor.Ok().userId,
714
+ requestedHandle: rActor.Ok().ownerHandle,
715
+ scope: rActor.Ok().scope,
716
+ });
717
+ if (currentActor.isErr())
718
+ return Result.Err(currentActor.Err());
719
+ const scoped = await resolveChatApp(vctx, currentActor.Ok(), req.chatId);
720
+ if (scoped.isErr())
721
+ return Result.Err(scoped.Err());
722
+ const commitId = vctx.sthis.nextId(12).str;
723
+ const lock = acquireTurnBuildLock({
724
+ vctx,
725
+ chatId: req.chatId,
726
+ promptId: commitId,
727
+ movesFilesystem: true,
728
+ wakesOnTerminal: false,
729
+ });
730
+ if (lock.acquired === false)
731
+ return Result.Err("A build is running; the staged commit could not acquire the write lane.");
732
+ const committed = { promptBlockEndEmitted: false };
733
+ const saved = await exception2Result(() => handleFSPrompt({
734
+ scope,
735
+ vctx,
736
+ ctx,
737
+ promptId: commitId,
738
+ blockSeq: 0,
739
+ terminal: committed,
740
+ beginDirect: true,
741
+ resChat: { ...resChat, mode: "fs-update" },
742
+ req: {
743
+ type: "vibes.diy.req-prompt-chat-section",
744
+ mode: "fs-update",
745
+ auth: orig.auth,
746
+ _auth: req._auth,
747
+ chatId: req.chatId,
748
+ outerTid: req.outerTid,
749
+ agentFileCommit: commit,
750
+ fsUpdate: {
751
+ update: commit.changes.map((file) => ({
752
+ type: "code-block",
753
+ filename: file.path,
754
+ content: file.contents,
755
+ lang: langForFilename(file.path),
756
+ })),
757
+ remove: [],
758
+ },
759
+ },
760
+ })).finally(() => {
761
+ committed.releasePersistGate?.();
762
+ releaseTurnBuildLock(vctx, req.chatId, commitId);
763
+ });
764
+ if (saved.isErr()) {
765
+ const last = await maxPersistedBlockSeq(vctx.sql, { chatId: req.chatId, promptId: commitId });
766
+ if (last.isErr())
767
+ return Result.Err(last.Err());
768
+ const seq = (last.Ok() ?? -1) + 1;
769
+ await appendBlockEvent({
770
+ ctx,
771
+ vctx,
772
+ req,
773
+ promptId: commitId,
774
+ blockSeq: seq,
775
+ evt: {
776
+ type: "prompt.error",
777
+ streamId: commitId,
778
+ chatId: req.chatId,
779
+ seq,
780
+ timestamp: new Date(),
781
+ error: saved.Err().message,
782
+ },
783
+ });
784
+ return Result.Err(saved.Err());
785
+ }
786
+ if (committed.fsRef === undefined)
787
+ return Result.Err("The commit did not persist a version.");
788
+ return Result.Ok({ ok: true, saved: true, fsRef: committed.fsRef, paths: commit.changes.map((file) => file.path) });
789
+ });
790
+ }
492
791
  const res = await handlerLlmRequest({
493
792
  ctx,
494
793
  blockSeq,
@@ -500,6 +799,13 @@ export const promptChatSection = {
500
799
  preAssembled: { ...agentPayload, isInitialTurn: false },
501
800
  serverTools: belt.definitions,
502
801
  });
802
+ const evidence = agentEvidence ??
803
+ createAgentEvidenceWriter({
804
+ chatId: req.chatId,
805
+ promptId,
806
+ ...(liveSession === undefined ? {} : { sessionId: liveSession.promptId }),
807
+ append: (evt, blockSeq) => appendBlockEvent({ ctx, vctx, req, promptId, blockSeq, evt }),
808
+ });
503
809
  let providerStream;
504
810
  const rSse = createProviderSseStream(res.res, promptId);
505
811
  if (rSse.isErr()) {
@@ -516,7 +822,43 @@ export const promptChatSection = {
516
822
  request: res.llmReq,
517
823
  stream: rSse.Ok(),
518
824
  abort: res.abort,
825
+ onToolEvidence: ({ kind, call, text }) => evidence({ kind, callId: call.id, name: call.name, text }),
826
+ ...(pendingBuilds === undefined ? {} : { pending: pendingBuilds.pending }),
827
+ ...(liveSession === undefined
828
+ ? {}
829
+ : {
830
+ session: {
831
+ checkpoint: async (messages) => {
832
+ const saved = await liveSession.session.checkpoint(messages);
833
+ if (saved.isErr())
834
+ return saved;
835
+ const extended = await extendOpenTurnDeadline(vctx.sql, {
836
+ chatId: req.chatId,
837
+ promptId,
838
+ deadlineAtMs: Date.now() + agentTotalBudgetMs(vctx) + OPEN_TURN_AWAIT_BUILD_EXTENSION_MS,
839
+ });
840
+ if (extended.isErr())
841
+ return Result.Err(extended.Err());
842
+ return Result.Ok();
843
+ },
844
+ next: () => nextAgentSessionMessages(liveSession.session, evidence),
845
+ dispatchBudgetMs: agentTotalBudgetMs(vctx),
846
+ },
847
+ }),
519
848
  dispatch: async ({ request, budget }) => {
849
+ if (agentSession !== undefined) {
850
+ const latest = await loadWorkVfs(vctx, {
851
+ chatId: req.chatId,
852
+ ownerHandle: resChat.ownerHandle,
853
+ appSlug: resChat.appSlug,
854
+ editBaseFsId: undefined,
855
+ });
856
+ if (latest.isErr())
857
+ return Result.Err(latest.Err());
858
+ vfs.clear();
859
+ for (const [path, content] of latest.Ok())
860
+ vfs.set(path, content);
861
+ }
520
862
  const dispatch = await dispatchLlmRequestWithFallback({
521
863
  vctx,
522
864
  mode: req.mode,
@@ -730,7 +1072,7 @@ export const promptChatSection = {
730
1072
  if (rBump.isErr()) {
731
1073
  vctx.logger.Warn().Err(rBump).Msg("bumpAppRecency failed");
732
1074
  }
733
- const promptId = vctx.sthis.nextId(96 / 8).str;
1075
+ const promptId = agentSession?.promptId ?? vctx.sthis.nextId(96 / 8).str;
734
1076
  const movesFilesystem = isSourceChangingMode(req.mode) && discuss === false && agentAssembled === undefined;
735
1077
  const wakesOnTerminal = decideAgentWake({
736
1078
  agentLane,
@@ -760,6 +1102,7 @@ export const promptChatSection = {
760
1102
  src: "promptChatSection",
761
1103
  })));
762
1104
  if (rAck.isErr()) {
1105
+ agentSession?.close();
763
1106
  releaseTurnBuildLock(vctx, req.chatId, promptId);
764
1107
  return Result.Err(rAck);
765
1108
  }
@@ -862,15 +1205,31 @@ export const promptChatSection = {
862
1205
  });
863
1206
  }
864
1207
  peekInFlightTurns(req.chatId)?.delete(promptId);
1208
+ agentSession?.close();
865
1209
  releaseTurnBuildLock(vctx, req.chatId, promptId);
866
1210
  terminal.releasePersistGate?.();
1211
+ const landingOutcome = {
1212
+ outcome: turnErrored
1213
+ ? "error"
1214
+ : terminal.settled?.applied === true
1215
+ ? "applied"
1216
+ : "no-code",
1217
+ ...(terminal.touchedPaths === undefined ? {} : { touchedPaths: terminal.touchedPaths }),
1218
+ };
1219
+ const { consumed } = settleTurnTerminal(vctx.connections, req.chatId, promptId, landingOutcome);
867
1220
  const wake = decideAgentWake({
868
1221
  agentLane,
869
1222
  agentDispatched: agentDispatchedBuild,
870
1223
  movedFilesystem: movesFilesystem,
871
- budget: agentWakeBudget,
1224
+ budget: agentSessionEnabled(vctx) ? 1 : agentWakeBudget,
872
1225
  });
873
- if (wake.wake === true) {
1226
+ if (consumed === true) {
1227
+ vctx.logger
1228
+ .Info()
1229
+ .Any("event", { chatId: req.chatId, promptId, outcome: landingOutcome.outcome })
1230
+ .Msg("agent-build-landing-consumed");
1231
+ }
1232
+ else if (wake.wake === true) {
874
1233
  vctx.logger.Info().Any("event", { chatId: req.chatId, promptId, budget: wake.budget }).Msg("agent-wake-firing");
875
1234
  fireAgentWakeTurn({
876
1235
  vctx,
@@ -882,8 +1241,8 @@ export const promptChatSection = {
882
1241
  note: renderAgentWakeNote({
883
1242
  outcome: turnErrored ? "error" : terminal.settled?.applied === true ? "applied" : "no-code",
884
1243
  ...(terminal.touchedPaths === undefined ? {} : { touchedPaths: terminal.touchedPaths }),
885
- }),
886
- handle: (wakeCtx) => promptChatSection.handle(wakeCtx),
1244
+ }, agentSessionEnabled(vctx)),
1245
+ handle: (wakeCtx) => promptChatSection.handle(promptDispatchContext(ctx, wakeCtx.validated)),
887
1246
  });
888
1247
  }
889
1248
  else {