@vibes.diy/api-svc 4.0.15 → 4.0.17

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 (68) hide show
  1. package/README.md +1 -1
  2. package/billing.d.ts +3 -0
  3. package/billing.js +10 -0
  4. package/billing.js.map +1 -1
  5. package/check-auth.d.ts +9 -0
  6. package/check-auth.js +17 -0
  7. package/check-auth.js.map +1 -1
  8. package/create-handler.js +2 -0
  9. package/create-handler.js.map +1 -1
  10. package/index.d.ts +1 -0
  11. package/index.js +1 -0
  12. package/index.js.map +1 -1
  13. package/intern/attempt-backend-fetch.js.map +1 -1
  14. package/intern/backend-db-callback.js +7 -1
  15. package/intern/backend-db-callback.js.map +1 -1
  16. package/intern/chat-persist-gate.d.ts +7 -0
  17. package/intern/chat-persist-gate.js +50 -0
  18. package/intern/chat-persist-gate.js.map +1 -0
  19. package/intern/emit-backend-onchange.d.ts +1 -0
  20. package/intern/emit-backend-onchange.js +28 -0
  21. package/intern/emit-backend-onchange.js.map +1 -1
  22. package/intern/grouped-vibe-import-map.js +1 -1
  23. package/intern/grouped-vibe-import-map.js.map +1 -1
  24. package/intern/load-vibe-env.d.ts +2 -0
  25. package/intern/load-vibe-env.js +17 -0
  26. package/intern/load-vibe-env.js.map +1 -0
  27. package/intern/process-access-bindings.js +74 -35
  28. package/intern/process-access-bindings.js.map +1 -1
  29. package/intern/put-access-gate.js +1 -1
  30. package/intern/put-access-gate.js.map +1 -1
  31. package/intern/render-vibe.d.ts +2 -1
  32. package/intern/render-vibe.js +16 -4
  33. package/intern/render-vibe.js.map +1 -1
  34. package/intern/resolve-backend-session-user.d.ts +6 -0
  35. package/intern/resolve-backend-session-user.js +9 -0
  36. package/intern/resolve-backend-session-user.js.map +1 -0
  37. package/intern/vibe-ssr-attempt.d.ts +4 -2
  38. package/intern/vibe-ssr-attempt.js +13 -5
  39. package/intern/vibe-ssr-attempt.js.map +1 -1
  40. package/package.json +13 -13
  41. package/peers/r2-to-s3api.d.ts +1 -0
  42. package/peers/r2-to-s3api.js +4 -1
  43. package/peers/r2-to-s3api.js.map +1 -1
  44. package/public/app-documents-read-eventos.js +5 -5
  45. package/public/app-documents-read-eventos.js.map +1 -1
  46. package/public/app-documents-write-eventos.js +59 -27
  47. package/public/app-documents-write-eventos.js.map +1 -1
  48. package/public/asset-session.js +2 -20
  49. package/public/asset-session.js.map +1 -1
  50. package/public/channel-read-filter.js +1 -1
  51. package/public/channel-read-filter.js.map +1 -1
  52. package/public/ensure-app-slug-item.js.map +1 -1
  53. package/public/prompt-chat-section.d.ts +3 -1
  54. package/public/prompt-chat-section.js +146 -14
  55. package/public/prompt-chat-section.js.map +1 -1
  56. package/public/serv-entry-point.d.ts +1 -0
  57. package/public/serv-entry-point.js +13 -5
  58. package/public/serv-entry-point.js.map +1 -1
  59. package/public/who-am-i.js +7 -10
  60. package/public/who-am-i.js.map +1 -1
  61. package/usage-report/backfill-avatars.js +6 -4
  62. package/usage-report/backfill-avatars.js.map +1 -1
  63. package/usage-report/billing-reconcile-util.d.ts +25 -0
  64. package/usage-report/billing-reconcile-util.js +47 -0
  65. package/usage-report/billing-reconcile-util.js.map +1 -0
  66. package/usage-report/billing-reconcile.d.ts +1 -0
  67. package/usage-report/billing-reconcile.js +60 -0
  68. package/usage-report/billing-reconcile.js.map +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ensure-app-slug-item.js","sourceRoot":"","sources":["../../jsr/public/ensure-app-slug-item.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ensure-app-slug-item.js","sourceRoot":"","sources":["../../jsr/public/ensure-app-slug-item.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ export type { PromptAssetFetchDeps };
10
10
  export { createPromptAssetFetch, promptsPkgBaseUrl };
11
11
  export { resolveCodeBlocksToFileSystem, createStreamingResolver, createBlockAccumulator, logApplyError };
12
12
  export type { ApplyErrorEvent, StreamingResolverDeps, BlockApplyResult, StreamingResolver, ClosedCodeBlock, BlockAccumulator, ApplyEditsError, FenceParseError, };
13
- export declare function handlePromptContext({ vctx, req, resChat, promptId, blockSeq, value, collectedMsgs: iCollectedMsgs, blockChunks, fileSystem, model, codegenTheme, }: {
13
+ export declare function handlePromptContext({ vctx, req, resChat, promptId, blockSeq, value, collectedMsgs: iCollectedMsgs, blockChunks, fileSystem, model, codegenTheme, onFsRef, }: {
14
14
  vctx: VibesApiSQLCtx;
15
15
  req: ReqWithVerifiedAuth<ReqPromptChatSection>;
16
16
  resChat: ResChat;
@@ -22,6 +22,7 @@ export declare function handlePromptContext({ vctx, req, resChat, promptId, bloc
22
22
  fileSystem?: VibeFile[];
23
23
  model?: string;
24
24
  codegenTheme?: string;
25
+ onFsRef?: (fsRef: FileSystemRef) => Promise<void>;
25
26
  }): Promise<Result<{
26
27
  blockSeq: number;
27
28
  fsRef: Option<FileSystemRef>;
@@ -35,6 +36,7 @@ interface ResChat {
35
36
  }
36
37
  interface PromptTerminalSignal {
37
38
  promptBlockEndEmitted: boolean;
39
+ releasePersistGate?: () => void;
38
40
  }
39
41
  export declare function handleFSPrompt({ scope, vctx, resChat, req, ctx, promptId, terminal, }: {
40
42
  scope: Scope;
@@ -2,10 +2,10 @@ import { Result, Option, EventoResult, exception2Result, chunkyAsync } from "@ad
2
2
  import { storeAndAuditAsset } from "./store-and-audit-asset.js";
3
3
  import { convertImageEvtToFileRef } from "./convert-image-evt.js";
4
4
  import { scopey } from "@adviser/scopey";
5
- import { isReqCreationPromptChatSection, isReqPromptApplicationChatSection, isPromptFSStyle, isReqPromptFSChatSection, isReqPromptFSUpdateChatSection, isReqPromptImageChatSection, isReqPromptLLMChatSection, reqPromptChatSection, isReqPromptFSSetChatSection, parseArray, vibeFile, isVibeCodeBlock, } from "@vibes.diy/api-types";
5
+ import { isReqCreationPromptChatSection, isReqPromptApplicationChatSection, isPromptFSStyle, isReqPromptFSChatSection, isReqPromptFSUpdateChatSection, isReqPromptImageChatSection, isReqPromptLLMChatSection, reqPromptChatSection, isReqPromptFSSetChatSection, parseArray, fileSystemItem, isVibeCodeBlock, } from "@vibes.diy/api-types";
6
6
  import { ensureLogger } from "@vibes.diy/identity";
7
7
  import { type } from "arktype";
8
- import { costCentsFromUsage } from "../billing.js";
8
+ import { costCentsFromUsage, prodiaCostCents } from "../billing.js";
9
9
  import { checkAuth } from "../check-auth.js";
10
10
  import { unwrapMsgBase, wrapMsgBase } from "../unwrap-msg-base.js";
11
11
  import { assertChatShardIdentity } from "../shard-gate.js";
@@ -16,7 +16,8 @@ import { getRecoveryAddendum, getRecoveryStitchAddendum } from "@vibes.diy/promp
16
16
  import { ensureAppSlugItem } from "./ensure-app-slug-item.js";
17
17
  import { getModelDefaults } from "../intern/get-model-defaults.js";
18
18
  import { buildRecoveryRequest, buildTruncatedEvent, shouldAttemptRecovery, updateRecoveryCounter, } from "../intern/recovery.js";
19
- import { loadVersionTimeline } from "../intern/version-timeline.js";
19
+ import { loadVersionTimeline, resolveVfsFromFileSystem } from "../intern/version-timeline.js";
20
+ import { langForFilename } from "../intern/ensure-push-seeded-chat.js";
20
21
  import { resolveSlotConfig } from "../intern/slot-assembler.js";
21
22
  import { preAllocate } from "../intern/pre-allocate.js";
22
23
  import { dryRunHandleIsForeign } from "../intern/ensure-chat-id.js";
@@ -24,6 +25,7 @@ import { createPromptAssetFetch, promptsPkgBaseUrl } from "../intern/prompt-asse
24
25
  import { resolveCodeBlocksToFileSystem, createStreamingResolver, createBlockAccumulator, logApplyError, } from "../intern/prompt-streaming.js";
25
26
  import { reconstructConversationMessages, assemblePromptPayload, persistCodegenThemeMarker, } from "../intern/prompt-assembly.js";
26
27
  import { bumpAppRecency } from "../intern/bump-app-recency.js";
28
+ import { acquireChatPersistGate, waitChatPersistIdle } from "../intern/chat-persist-gate.js";
27
29
  import { loadModels } from "./list-models.js";
28
30
  function clientWsSend(ctx) {
29
31
  return ctx.send.provider;
@@ -161,6 +163,13 @@ function extractProviderErrorFields(bodyFull) {
161
163
  }
162
164
  return out;
163
165
  }
166
+ const INVALID_MODEL_STATUSES = new Set([400, 404]);
167
+ const INVALID_MODEL_MESSAGE_RE = /not a valid model|invalid model|unknown model|no endpoints found for|model\b.{0,120}\b(not found|does not exist|no longer (available|supported)|deprecated|retired)/i;
168
+ function isInvalidModelError(status, provider) {
169
+ if (!INVALID_MODEL_STATUSES.has(status))
170
+ return false;
171
+ return typeof provider.errorMessage === "string" && INVALID_MODEL_MESSAGE_RE.test(provider.errorMessage);
172
+ }
164
173
  function extractEdgeError(bodySnippet, rawSnippet, headers) {
165
174
  const haystacks = [bodySnippet, rawSnippet].filter((s) => typeof s === "string" && s.length > 0);
166
175
  let code;
@@ -309,6 +318,7 @@ async function attemptLlmRequest(args) {
309
318
  abort.abort();
310
319
  const retryable = TRANSIENT_LLM_STATUSES.has(res.status);
311
320
  const provider = extractProviderErrorFields(bodyFull);
321
+ const invalidModel = isInvalidModelError(res.status, provider);
312
322
  const edge = extractEdgeError(bodySnippet, provider.rawSnippet, res.headers);
313
323
  const headers = pickDiagnosticHeaders(res.headers);
314
324
  logLlmAttemptFailure({
@@ -322,6 +332,7 @@ async function attemptLlmRequest(args) {
322
332
  status: res.status,
323
333
  statusText: res.statusText,
324
334
  retryable,
335
+ ...(invalidModel ? { invalidModel } : {}),
325
336
  ...(typeof retryAfterMs === "number" ? { retryAfterMs } : {}),
326
337
  ...(headers ? { headers } : {}),
327
338
  ...(bodySnippet.length > 0 ? { bodySnippet } : {}),
@@ -336,6 +347,7 @@ async function attemptLlmRequest(args) {
336
347
  status: res.status,
337
348
  statusText: res.statusText,
338
349
  retryable,
350
+ ...(invalidModel ? { invalidModel } : {}),
339
351
  ...(bodySnippet.length > 0 ? { bodySnippet } : {}),
340
352
  ...(typeof retryAfterMs === "number" ? { retryAfterMs } : {}),
341
353
  };
@@ -388,6 +400,10 @@ async function dispatchLlmRequestWithFallback(args) {
388
400
  return { ok: true, res: attempt.res, llmReq: args.llmReq, abort: attempt.abort, attempts };
389
401
  attempts.push(attempt.failure);
390
402
  if (attempt.failure.retryable === false) {
403
+ if (attempt.failure.kind === "http-status" && attempt.failure.invalidModel === true) {
404
+ lastPrimary = attempt;
405
+ break;
406
+ }
391
407
  return { ok: false, llmReq: args.llmReq, abort: attempt.abort, attempts, error: formatLlmAttemptFailures(attempts) };
392
408
  }
393
409
  lastPrimary = attempt;
@@ -477,7 +493,7 @@ async function appendBlockEvent({ ctx, vctx, req, promptId, blockSeq, evt, emitM
477
493
  }
478
494
  return Result.Ok();
479
495
  }
480
- export async function handlePromptContext({ vctx, req, resChat, promptId, blockSeq, value, collectedMsgs: iCollectedMsgs, blockChunks = 100, fileSystem, model, codegenTheme, }) {
496
+ export async function handlePromptContext({ vctx, req, resChat, promptId, blockSeq, value, collectedMsgs: iCollectedMsgs, blockChunks = 100, fileSystem, model, codegenTheme, onFsRef, }) {
481
497
  let fsRef = Option.None();
482
498
  const code = [];
483
499
  const sections = [];
@@ -535,6 +551,12 @@ export async function handlePromptContext({ vctx, req, resChat, promptId, blockS
535
551
  return Result.Err(`Failed to parse FileSystemRef: ${tFsRef.summary}`);
536
552
  }
537
553
  fsRef = Option.Some(tFsRef);
554
+ if (onFsRef) {
555
+ const rReveal = await exception2Result(() => onFsRef(tFsRef));
556
+ if (rReveal.isErr()) {
557
+ vctx.logger.Warn().Err(rReveal).Str("promptId", promptId).Msg("reveal-emit-failed");
558
+ }
559
+ }
538
560
  }
539
561
  value.fsRef = fsRef.toValue();
540
562
  const rSql = await exception2Result(() => vctx.sql.db.insert(vctx.sql.tables.promptContexts).values({
@@ -916,6 +938,41 @@ async function handleProdiaImageRequest({ scope, ctx, vctx, req, promptId, block
916
938
  if (rStored.isErr()) {
917
939
  return Result.Err(`Failed to store Prodia image: ${rStored.Err().message}`);
918
940
  }
941
+ const imageCostCents = prodiaCostCents(prodiaStem);
942
+ const zeroTokens = { prompt_tokens: 0, completion_tokens: 0, total_tokens: 0 };
943
+ const rPromptCtx = await exception2Result(() => vctx.sql.db.insert(vctx.sql.tables.promptContexts).values({
944
+ userId: req._auth.verifiedAuth.claims.userId,
945
+ chatId: req.chatId,
946
+ promptId,
947
+ nethash: vctx.netHash(),
948
+ promptTokens: 0,
949
+ completionTokens: 0,
950
+ totalTokens: 0,
951
+ ref: {
952
+ type: "prompt.usage.sql",
953
+ usage: {
954
+ given: [{ ...zeroTokens, cost: imageCostCents / 100 }],
955
+ calculated: zeroTokens,
956
+ },
957
+ model: resolvedModel,
958
+ },
959
+ created: new Date().toISOString(),
960
+ }));
961
+ if (rPromptCtx.isErr()) {
962
+ vctx.logger.Warn().Err(rPromptCtx).Str("promptId", promptId).Msg("image-prompt-context-persist-failed");
963
+ }
964
+ if (imageCostCents > 0) {
965
+ const rTrack = await vctx.billing.trackUsage({
966
+ userId: req._auth.verifiedAuth.claims.userId,
967
+ costCents: imageCostCents,
968
+ promptId,
969
+ model: resolvedModel,
970
+ mode: "image",
971
+ });
972
+ if (rTrack.isErr()) {
973
+ vctx.logger.Warn().Err(rTrack).Str("promptId", promptId).Msg("billing-track-failed");
974
+ }
975
+ }
919
976
  const stored = rStored.Ok();
920
977
  const fileMimeType = stored.mimeType ?? "image/png";
921
978
  const blockId = vctx.sthis.nextId(12).str;
@@ -1008,6 +1065,7 @@ async function handleProdiaImageRequest({ scope, ctx, vctx, req, promptId, block
1008
1065
  return Result.Ok(blockSeq);
1009
1066
  }
1010
1067
  async function handleEndMsg({ collectedMsgs, vctx, req, ctx, resChat, promptId, value, blockSeq, fileSystem, terminal, model, codegenTheme, }) {
1068
+ terminal.releasePersistGate ??= acquireChatPersistGate(vctx.connections, req.chatId);
1011
1069
  const endSeq = blockSeq++;
1012
1070
  const rEnd = await appendBlockEvent({
1013
1071
  ctx,
@@ -1022,6 +1080,7 @@ async function handleEndMsg({ collectedMsgs, vctx, req, ctx, resChat, promptId,
1022
1080
  return Result.Err(rEnd);
1023
1081
  }
1024
1082
  terminal.promptBlockEndEmitted = true;
1083
+ const revealSeq = blockSeq++;
1025
1084
  const r = await handlePromptContext({
1026
1085
  vctx,
1027
1086
  req,
@@ -1033,6 +1092,27 @@ async function handleEndMsg({ collectedMsgs, vctx, req, ctx, resChat, promptId,
1033
1092
  fileSystem,
1034
1093
  model,
1035
1094
  codegenTheme,
1095
+ onFsRef: async (fsRefVal) => {
1096
+ const rReveal = await appendBlockEvent({
1097
+ ctx,
1098
+ vctx,
1099
+ req,
1100
+ promptId,
1101
+ blockSeq: revealSeq,
1102
+ evt: {
1103
+ type: "prompt.fs-persisted",
1104
+ streamId: promptId,
1105
+ chatId: req.chatId,
1106
+ seq: revealSeq,
1107
+ timestamp: new Date(),
1108
+ fsRef: fsRefVal,
1109
+ },
1110
+ emitMode: "emit-only",
1111
+ });
1112
+ if (rReveal.isErr()) {
1113
+ vctx.logger.Warn().Err(rReveal).Str("promptId", promptId).Msg("reveal-emit-failed");
1114
+ }
1115
+ },
1036
1116
  });
1037
1117
  if (r.isErr()) {
1038
1118
  return Result.Err(r);
@@ -1448,24 +1528,44 @@ export async function handleFSPrompt({ scope, vctx, resChat, req, ctx, promptId,
1448
1528
  fileSystem = req.fsSet;
1449
1529
  }
1450
1530
  else if (isReqPromptFSUpdateChatSection(req)) {
1451
- const refFS = [];
1452
- if (!req.refFsId) {
1531
+ let baseItems;
1532
+ if (req.refFsId) {
1533
+ const refApp = await vctx.sql.db
1534
+ .select({ fileSystem: vctx.sql.tables.apps.fileSystem })
1535
+ .from(vctx.sql.tables.apps)
1536
+ .where(and(eq(vctx.sql.tables.apps.fsId, req.refFsId), eq(vctx.sql.tables.apps.ownerHandle, resChat.ownerHandle), eq(vctx.sql.tables.apps.appSlug, resChat.appSlug)))
1537
+ .orderBy(desc(vctx.sql.tables.apps.releaseSeq))
1538
+ .limit(1)
1539
+ .then((r) => r[0]);
1540
+ if (!refApp) {
1541
+ throw new Error(`fs-update refFsId ${req.refFsId} is not a release of ${resChat.ownerHandle}/${resChat.appSlug}`);
1542
+ }
1543
+ baseItems = refApp.fileSystem;
1544
+ }
1545
+ else {
1453
1546
  const lastestPrompt = await vctx.sql.db
1454
1547
  .select()
1455
1548
  .from(vctx.sql.tables.promptContexts)
1456
1549
  .innerJoin(vctx.sql.tables.apps, eq(vctx.sql.tables.apps.fsId, vctx.sql.tables.promptContexts.fsId))
1457
- .where(and(eq(vctx.sql.tables.promptContexts.chatId, req.chatId), eq(vctx.sql.tables.promptContexts.promptId, promptId)))
1550
+ .where(eq(vctx.sql.tables.promptContexts.chatId, req.chatId))
1458
1551
  .orderBy(desc(vctx.sql.tables.promptContexts.created))
1459
1552
  .limit(1)
1460
1553
  .then((r) => r[0]);
1461
- if (lastestPrompt) {
1462
- refFS.push(...parseArray(lastestPrompt.Apps.fileSystem, vibeFile));
1554
+ baseItems = lastestPrompt?.Apps.fileSystem;
1555
+ }
1556
+ const refFS = [];
1557
+ if (baseItems !== undefined) {
1558
+ const vfs = await resolveVfsFromFileSystem(vctx, parseArray(baseItems, fileSystemItem));
1559
+ for (const [filename, content] of vfs) {
1560
+ if (filename.startsWith("/~~calculated~~/"))
1561
+ continue;
1562
+ refFS.push({ type: "code-block", filename, lang: langForFilename(filename), content });
1463
1563
  }
1464
1564
  }
1465
1565
  const mapFS = refFS.reduce((acc, file) => {
1466
1566
  acc.set(file.filename, file);
1467
1567
  return acc;
1468
- }, {});
1568
+ }, new Map());
1469
1569
  req.fsUpdate.update.forEach((update) => {
1470
1570
  mapFS.set(update.filename, update);
1471
1571
  });
@@ -1602,6 +1702,7 @@ export const promptChatSection = {
1602
1702
  const req = ctx.validated.payload;
1603
1703
  const orig = ctx.enRequest.payload;
1604
1704
  const vctx = ctx.ctx.getOrThrow("vibesApiCtx");
1705
+ await waitChatPersistIdle(vctx.connections, req.chatId, { logger: vctx.logger });
1605
1706
  const rResChat = await getResChatFromMode(vctx, req, orig);
1606
1707
  if (rResChat.isErr()) {
1607
1708
  return Result.Err(rResChat);
@@ -1824,9 +1925,18 @@ export const promptChatSection = {
1824
1925
  await scopey(async (scope) => {
1825
1926
  const seq = { val: 0 };
1826
1927
  scope.onCatch(async (e) => {
1928
+ const rMaxSeq = await exception2Result(() => vctx.sql.db
1929
+ .select({ blockSeq: vctx.sql.tables.chatSections.blockSeq })
1930
+ .from(vctx.sql.tables.chatSections)
1931
+ .where(and(eq(vctx.sql.tables.chatSections.chatId, req.chatId), eq(vctx.sql.tables.chatSections.promptId, promptId)))
1932
+ .orderBy(desc(vctx.sql.tables.chatSections.blockSeq))
1933
+ .limit(1));
1934
+ if (rMaxSeq.isOk() && rMaxSeq.Ok().length > 0) {
1935
+ seq.val = Math.max(seq.val, rMaxSeq.Ok()[0].blockSeq + 1);
1936
+ }
1827
1937
  const errorSeq = seq.val;
1828
1938
  seq.val++;
1829
- await appendBlockEvent({
1939
+ const rError = await appendBlockEvent({
1830
1940
  ctx,
1831
1941
  vctx,
1832
1942
  req,
@@ -1841,6 +1951,13 @@ export const promptChatSection = {
1841
1951
  error: e.message,
1842
1952
  },
1843
1953
  });
1954
+ if (rError.isErr()) {
1955
+ vctx.logger
1956
+ .Error()
1957
+ .Err(rError)
1958
+ .Any("event", { chatId: req.chatId, promptId, blockSeq: errorSeq })
1959
+ .Msg("prompt-error-persist-failed");
1960
+ }
1844
1961
  if (vctx.notifyUser) {
1845
1962
  const userId = req._auth.verifiedAuth.claims.userId;
1846
1963
  const connId = clientWsSend(ctx).connId;
@@ -1879,9 +1996,18 @@ export const promptChatSection = {
1879
1996
  return res;
1880
1997
  })
1881
1998
  .finally(async () => {
1999
+ try {
2000
+ await finalizePromptTurn();
2001
+ }
2002
+ finally {
2003
+ terminal.releasePersistGate?.();
2004
+ }
2005
+ })
2006
+ .do();
2007
+ async function finalizePromptTurn() {
1882
2008
  if (seq.val === 0)
1883
2009
  return;
1884
- await appendBlockEvent({
2010
+ const rEnd = await appendBlockEvent({
1885
2011
  ctx,
1886
2012
  vctx,
1887
2013
  req,
@@ -1896,6 +2022,13 @@ export const promptChatSection = {
1896
2022
  },
1897
2023
  emitMode: terminal.promptBlockEndEmitted ? "store-only" : "store",
1898
2024
  });
2025
+ if (rEnd.isErr()) {
2026
+ vctx.logger
2027
+ .Error()
2028
+ .Err(rEnd)
2029
+ .Any("event", { chatId: req.chatId, promptId, blockSeq: seq.val })
2030
+ .Msg("prompt-block-end-persist-failed");
2031
+ }
1899
2032
  if (vctx.notifyUser) {
1900
2033
  const userId = req._auth.verifiedAuth.claims.userId;
1901
2034
  const connId = clientWsSend(ctx).connId;
@@ -1909,8 +2042,7 @@ export const promptChatSection = {
1909
2042
  .catch((_e) => {
1910
2043
  });
1911
2044
  }
1912
- })
1913
- .do();
2045
+ }
1914
2046
  });
1915
2047
  return Result.Ok(EventoResult.Continue);
1916
2048
  }),