@vibes.diy/api-svc 14.2.7 → 14.2.8

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 (106) hide show
  1. package/cf-serve.js +1 -1
  2. package/cf-serve.js.map +1 -1
  3. package/check-auth.d.ts +3 -2
  4. package/check-build-auth.d.ts +18 -0
  5. package/check-build-auth.js +73 -0
  6. package/check-build-auth.js.map +1 -0
  7. package/create-handler.js +13 -0
  8. package/create-handler.js.map +1 -1
  9. package/evento-handler-manifest.js +5 -0
  10. package/evento-handler-manifest.js.map +1 -1
  11. package/guest-build-token.d.ts +16 -0
  12. package/guest-build-token.js +44 -0
  13. package/guest-build-token.js.map +1 -0
  14. package/intern/agent-actor.d.ts +1 -0
  15. package/intern/agent-actor.js +1 -1
  16. package/intern/agent-actor.js.map +1 -1
  17. package/intern/agent-router.js +1 -1
  18. package/intern/agent-router.js.map +1 -1
  19. package/intern/attach-draft-handle.d.ts +2 -1
  20. package/intern/attach-draft-handle.js +128 -68
  21. package/intern/attach-draft-handle.js.map +1 -1
  22. package/intern/automatic-draft-attachment.d.ts +10 -0
  23. package/intern/automatic-draft-attachment.js +25 -0
  24. package/intern/automatic-draft-attachment.js.map +1 -0
  25. package/intern/draft-continuation.d.ts +6 -0
  26. package/intern/draft-continuation.js +86 -0
  27. package/intern/draft-continuation.js.map +1 -0
  28. package/intern/draft-runtime-store.d.ts +10 -0
  29. package/intern/draft-runtime-store.js +46 -0
  30. package/intern/draft-runtime-store.js.map +1 -0
  31. package/intern/ensure-chat-id.d.ts +4 -3
  32. package/intern/ensure-chat-id.js +23 -4
  33. package/intern/ensure-chat-id.js.map +1 -1
  34. package/intern/first-build-request.d.ts +10 -0
  35. package/intern/first-build-request.js +69 -0
  36. package/intern/first-build-request.js.map +1 -0
  37. package/intern/get-model-defaults.d.ts +1 -0
  38. package/intern/get-model-defaults.js +4 -1
  39. package/intern/get-model-defaults.js.map +1 -1
  40. package/intern/guest-build-issuance.d.ts +9 -0
  41. package/intern/guest-build-issuance.js +83 -0
  42. package/intern/guest-build-issuance.js.map +1 -0
  43. package/intern/guest-build-start.d.ts +8 -0
  44. package/intern/guest-build-start.js +66 -0
  45. package/intern/guest-build-start.js.map +1 -0
  46. package/intern/guest-build-store.d.ts +50 -0
  47. package/intern/guest-build-store.js +231 -0
  48. package/intern/guest-build-store.js.map +1 -0
  49. package/intern/guest-build-usage.d.ts +7 -0
  50. package/intern/guest-build-usage.js +18 -0
  51. package/intern/guest-build-usage.js.map +1 -0
  52. package/intern/mint-job-store.d.ts +11 -1
  53. package/intern/mint-job-store.js +44 -6
  54. package/intern/mint-job-store.js.map +1 -1
  55. package/intern/prompt-assembly.d.ts +1 -0
  56. package/intern/prompt-assembly.js +1 -0
  57. package/intern/prompt-assembly.js.map +1 -1
  58. package/models.json +1 -0
  59. package/package.json +12 -12
  60. package/public/attach-draft-handle.js +16 -3
  61. package/public/attach-draft-handle.js.map +1 -1
  62. package/public/draft-runtime.d.ts +5 -0
  63. package/public/draft-runtime.js +299 -0
  64. package/public/draft-runtime.js.map +1 -0
  65. package/public/get-chat-details.js +14 -6
  66. package/public/get-chat-details.js.map +1 -1
  67. package/public/get-chat-response.js +16 -9
  68. package/public/get-chat-response.js.map +1 -1
  69. package/public/guest-build-generation.d.ts +8 -0
  70. package/public/guest-build-generation.js +218 -0
  71. package/public/guest-build-generation.js.map +1 -0
  72. package/public/guest-build.d.ts +7 -0
  73. package/public/guest-build.js +127 -0
  74. package/public/guest-build.js.map +1 -0
  75. package/public/llm-dispatch.d.ts +9 -7
  76. package/public/llm-dispatch.js +21 -7
  77. package/public/llm-dispatch.js.map +1 -1
  78. package/public/open-chat.d.ts +5 -1
  79. package/public/open-chat.js +69 -34
  80. package/public/open-chat.js.map +1 -1
  81. package/public/prompt-chat-section.d.ts +2 -1
  82. package/public/prompt-chat-section.js +19 -5
  83. package/public/prompt-chat-section.js.map +1 -1
  84. package/public/shared-mint.js +3 -1
  85. package/public/shared-mint.js.map +1 -1
  86. package/public/stream-assembly.d.ts +9 -7
  87. package/public/stream-assembly.js +19 -5
  88. package/public/stream-assembly.js.map +1 -1
  89. package/types.d.ts +2 -0
  90. package/types.js.map +1 -1
  91. package/usage-report/billing-reconcile-util.d.ts +1 -0
  92. package/usage-report/billing-reconcile-util.js +2 -1
  93. package/usage-report/billing-reconcile-util.js.map +1 -1
  94. package/usage-report/draft-output-alert.d.ts +13 -0
  95. package/usage-report/draft-output-alert.js +25 -0
  96. package/usage-report/draft-output-alert.js.map +1 -0
  97. package/usage-report/new-user-alert-util.d.ts +1 -0
  98. package/usage-report/new-user-alert-util.js +19 -4
  99. package/usage-report/new-user-alert-util.js.map +1 -1
  100. package/usage-report/new-user-alert.js +16 -10
  101. package/usage-report/new-user-alert.js.map +1 -1
  102. package/usage-report/prompt-cost-sql.d.ts +2 -0
  103. package/usage-report/prompt-cost-sql.js +2 -0
  104. package/usage-report/prompt-cost-sql.js.map +1 -1
  105. package/usage-report/user-journey.js +2 -2
  106. package/usage-report/user-journey.js.map +1 -1
@@ -1,5 +1,5 @@
1
1
  import { exception2Result, Result } from "@adviser/cement";
2
- import { and, asc, eq, isNull, ne } from "drizzle-orm/sql/expressions";
2
+ import { and, asc, eq, isNull, isNotNull, ne, inArray } from "drizzle-orm/sql/expressions";
3
3
  import { sql } from "drizzle-orm";
4
4
  import { DRAFT_NOT_FOUND_CODE, DRAFT_OWNER_HANDLE, HANDLE_TAKEN_CODE, PromptAndBlockMsgs, RESEARCH_BLOCK_SEQ, isResEnsureAppSlugOk, mkResError, parseArrayWarning, } from "@vibes.diy/api-types";
5
5
  import { isBlockStreamMsg } from "@vibes.diy/call-ai-v2";
@@ -15,7 +15,7 @@ import { createBlockAccumulator, resolveCodeBlocksToFileSystem } from "./prompt-
15
15
  function withDb(ctx, db) {
16
16
  return { ...ctx, sql: { ...ctx.sql, db } };
17
17
  }
18
- async function lockAppRelease(ctx, userId, appSlug) {
18
+ export async function lockAppRelease(ctx, userId, appSlug) {
19
19
  if (ctx.sql.flavour !== "pg")
20
20
  return;
21
21
  const pgDb = ctx.sql.db;
@@ -65,14 +65,14 @@ export async function attachDraftHandle(vctx, input) {
65
65
  return Result.Err(mkResError("chosen handle is empty after sanitization", HANDLE_TAKEN_CODE));
66
66
  }
67
67
  if (draft.ownerHandle !== DRAFT_OWNER_HANDLE) {
68
- return Result.Ok({ chatId: draft.chatId, ownerHandle: draft.ownerHandle, appSlug: draft.appSlug, persisted: false });
68
+ return finalizeDraftAttachment(vctx, { ...input, appSlug: draft.appSlug });
69
69
  }
70
70
  let handleRefusal;
71
71
  const rMove = await exception2Result(() => vctx.sql.db.transaction(async (tx) => {
72
72
  const txCtx = withDb(vctx, tx);
73
73
  const claimed = await tx
74
74
  .update(vctx.sql.tables.chatContexts)
75
- .set({ ownerHandle: chosen, draftPreAlloc: null })
75
+ .set({ ownerHandle: chosen })
76
76
  .where(and(eq(vctx.sql.tables.chatContexts.chatId, draft.chatId), eq(vctx.sql.tables.chatContexts.userId, input.userId), eq(vctx.sql.tables.chatContexts.ownerHandle, DRAFT_OWNER_HANDLE)))
77
77
  .returning({ chatId: vctx.sql.tables.chatContexts.chatId });
78
78
  if (claimed.length === 0)
@@ -119,70 +119,88 @@ export async function attachDraftHandle(vctx, input) {
119
119
  }
120
120
  const moved = rMove.Ok();
121
121
  if (moved === undefined) {
122
- const rSettled = await readDraftChat(vctx, { chatId: input.chatId, userId: input.userId });
123
- if (rSettled.isErr())
124
- return Result.Err(rSettled);
125
- const settled = rSettled.Ok();
126
- if (settled === undefined) {
127
- return Result.Err(mkResError(`no draft build found for chat "${input.chatId}"`, DRAFT_NOT_FOUND_CODE));
128
- }
129
- return Result.Ok({ chatId: settled.chatId, ownerHandle: settled.ownerHandle, appSlug: settled.appSlug, persisted: false });
130
- }
131
- const appSlug = moved.appSlug;
132
- const chosenTitle = moved.chosenTitle;
133
- const bufferedAccess = draft.preAlloc?.deferred?.access?.needed === true
134
- ? { needed: true, why: draft.preAlloc.deferred.access.why }
135
- : undefined;
136
- const bufferedBackend = draft.preAlloc?.deferred?.backend?.recommended === true
137
- ? { recommended: true, why: draft.preAlloc.deferred.backend.why }
138
- : undefined;
139
- const bufferedDeferred = bufferedAccess === undefined && bufferedBackend === undefined
140
- ? undefined
141
- : {
142
- ...(bufferedAccess === undefined ? {} : { access: bufferedAccess }),
143
- ...(bufferedBackend === undefined ? {} : { backend: bufferedBackend }),
144
- };
145
- await writePreAllocActiveEntries(vctx, {
146
- userId: input.userId,
147
- ownerHandle: chosen,
148
- appSlug,
149
- ...(chosenTitle === undefined ? {} : { title: chosenTitle }),
150
- ...(draft.preAlloc?.skills === undefined ? {} : { skills: draft.preAlloc.skills }),
151
- ...(draft.preAlloc?.iconDescription === undefined ? {} : { iconDescription: draft.preAlloc.iconDescription }),
152
- ...(draft.preAlloc?.theme === undefined ? {} : { theme: draft.preAlloc.theme }),
153
- ...(draft.preAlloc?.enrichedPrompt === undefined ? {} : { enrichedPrompt: draft.preAlloc.enrichedPrompt }),
154
- ...(draft.preAlloc?.privacySensitive === undefined ? {} : { privacySensitive: draft.preAlloc.privacySensitive }),
155
- ...(bufferedDeferred === undefined ? {} : { deferred: bufferedDeferred }),
156
- ...(draft.preAlloc?.variety === undefined ? {} : { variety: draft.preAlloc.variety }),
157
- ...(draft.preAlloc?.varietyPinned === true ? { varietyPinned: true } : {}),
158
- ...(draft.preAlloc?.textureNote === undefined ? {} : { textureNote: draft.preAlloc.textureNote }),
159
- ...(draft.preAlloc?.style === undefined ? {} : { style: draft.preAlloc.style }),
160
- ...(draft.preAlloc?.colorTheme === undefined ? {} : { colorTheme: draft.preAlloc.colorTheme }),
161
- ...(draft.preAlloc?.stylePinned === true ? { stylePinned: true } : {}),
162
- });
163
- const rClaimUnowned = await claimDraftState(vctx, draft.chatId, ["unowned"], "attached");
164
- if (rClaimUnowned.isErr())
165
- return Result.Err(rClaimUnowned);
166
- if (rClaimUnowned.Ok()) {
167
- return Result.Ok({ chatId: draft.chatId, ownerHandle: chosen, appSlug, persisted: false });
122
+ const settled = await readDraftChat(vctx, input);
123
+ if (settled.isErr())
124
+ return Result.Err(settled.Err());
125
+ const owned = settled.Ok();
126
+ if (owned === undefined)
127
+ return Result.Err(mkResError("draft not found", DRAFT_NOT_FOUND_CODE));
128
+ return finalizeDraftAttachment(vctx, { ...input, appSlug: owned.appSlug });
168
129
  }
169
- const rClaimParked = await claimDraftState(vctx, draft.chatId, ["turn-parked"], "attached");
170
- if (rClaimParked.isErr())
171
- return Result.Err(rClaimParked);
172
- if (!rClaimParked.Ok()) {
173
- return Result.Ok({ chatId: draft.chatId, ownerHandle: chosen, appSlug, persisted: false });
174
- }
175
- const rPersist = await runDeferredPersist(vctx, {
176
- chatId: draft.chatId,
177
- ownerHandle: chosen,
178
- appSlug,
179
- userId: input.userId,
180
- auth: input.auth,
181
- verifiedAuth: input.verifiedAuth,
182
- });
183
- if (rPersist.isErr())
184
- return Result.Err(rPersist);
185
- return Result.Ok({ chatId: draft.chatId, ownerHandle: chosen, appSlug, persisted: rPersist.Ok() });
130
+ return finalizeDraftAttachment(vctx, { ...input, appSlug: moved.appSlug, chosenTitle: moved.chosenTitle });
131
+ }
132
+ async function finalizeDraftAttachment(vctx, input) {
133
+ const finish = async (txCtx) => {
134
+ const loaded = await readDraftChat(txCtx, input);
135
+ if (loaded.isErr())
136
+ return Result.Err(loaded.Err());
137
+ const draft = loaded.Ok();
138
+ if (draft === undefined || draft.ownerHandle === DRAFT_OWNER_HANDLE)
139
+ return Result.Err("draft attachment unavailable");
140
+ const result = { chatId: draft.chatId, ownerHandle: draft.ownerHandle, appSlug: draft.appSlug, persisted: false };
141
+ if (draft.preAlloc !== undefined) {
142
+ const materialized = await materializeDraftSettings(txCtx, {
143
+ draft,
144
+ userId: input.userId,
145
+ chosen: draft.ownerHandle,
146
+ appSlug: draft.appSlug,
147
+ chosenTitle: input.chosenTitle ?? draft.preAlloc.pairs?.find((pair) => toRFC2822_32ByteLength(pair.slug) === draft.appSlug)?.title,
148
+ });
149
+ if (materialized.isErr())
150
+ return Result.Err(materialized.Err());
151
+ }
152
+ const unowned = await claimDraftState(txCtx, draft.chatId, ["unowned"], "attached");
153
+ if (unowned.isErr())
154
+ return Result.Err(unowned.Err());
155
+ if (unowned.Ok())
156
+ return Result.Ok(result);
157
+ const parked = await claimDraftState(txCtx, draft.chatId, ["turn-parked"], "attached");
158
+ if (parked.isErr())
159
+ return Result.Err(parked.Err());
160
+ const turns = txCtx.sql.tables.openTurns;
161
+ const live = await txCtx.sql.db
162
+ .select({ promptId: turns.promptId })
163
+ .from(turns)
164
+ .where(and(eq(turns.chatId, draft.chatId), eq(turns.status, "open")))
165
+ .limit(1);
166
+ if (parked.Ok() === false && live.length > 0)
167
+ return Result.Ok(result);
168
+ const pc = txCtx.sql.tables.promptContexts;
169
+ const existing = await txCtx.sql.db
170
+ .select({ promptId: pc.promptId })
171
+ .from(pc)
172
+ .where(and(eq(pc.chatId, draft.chatId), eq(pc.userId, input.userId), isNotNull(pc.fsId)))
173
+ .limit(1);
174
+ if (existing.length > 0)
175
+ return Result.Ok(result);
176
+ const cs = txCtx.sql.tables.chatSections;
177
+ const source = await txCtx.sql.db
178
+ .select({ promptId: pc.promptId })
179
+ .from(pc)
180
+ .innerJoin(cs, and(eq(cs.chatId, pc.chatId), eq(cs.promptId, pc.promptId)))
181
+ .where(and(eq(pc.chatId, draft.chatId), eq(pc.userId, input.userId), isNull(pc.fsId)))
182
+ .limit(1);
183
+ if (parked.Ok() === false && source.length === 0)
184
+ return Result.Ok(result);
185
+ const persisted = await runDeferredPersist(txCtx, { ...input, ownerHandle: draft.ownerHandle, appSlug: draft.appSlug });
186
+ if (persisted.isErr())
187
+ return Result.Err(persisted.Err());
188
+ return Result.Ok({ ...result, persisted: persisted.Ok() });
189
+ };
190
+ if (vctx.sql.flavour !== "pg")
191
+ return exception2Result(() => finish(vctx));
192
+ let refusal;
193
+ const transaction = await exception2Result(() => vctx.sql.db.transaction(async (db) => {
194
+ const txCtx = withDb(vctx, db);
195
+ await lockAppRelease(txCtx, input.userId, input.appSlug);
196
+ const result = await finish(txCtx);
197
+ if (result.isErr()) {
198
+ refusal = result;
199
+ db.rollback();
200
+ }
201
+ return result;
202
+ }));
203
+ return refusal ?? transaction;
186
204
  }
187
205
  async function runDeferredPersist(vctx, args) {
188
206
  const rFiles = await rebuildDraftFileSystem(vctx, args.chatId);
@@ -213,7 +231,10 @@ async function runDeferredPersist(vctx, args) {
213
231
  const rBackfill = await exception2Result(() => vctx.sql.db
214
232
  .update(vctx.sql.tables.promptContexts)
215
233
  .set({ fsId })
216
- .where(and(eq(vctx.sql.tables.promptContexts.chatId, args.chatId), isNull(vctx.sql.tables.promptContexts.fsId))));
234
+ .where(and(eq(vctx.sql.tables.promptContexts.chatId, args.chatId), isNull(vctx.sql.tables.promptContexts.fsId), inArray(vctx.sql.tables.promptContexts.promptId, vctx.sql.db
235
+ .select({ promptId: vctx.sql.tables.chatSections.promptId })
236
+ .from(vctx.sql.tables.chatSections)
237
+ .where(eq(vctx.sql.tables.chatSections.chatId, args.chatId))))));
217
238
  if (rBackfill.isErr())
218
239
  return Result.Err(rBackfill);
219
240
  await autoPublishOnPersist(vctx, {
@@ -226,4 +247,43 @@ async function runDeferredPersist(vctx, args) {
226
247
  });
227
248
  return Result.Ok(true);
228
249
  }
250
+ async function materializeDraftSettings(vctx, { draft, userId, chosen, appSlug, chosenTitle, }) {
251
+ const bufferedAccess = draft.preAlloc?.deferred?.access?.needed === true
252
+ ? { needed: true, why: draft.preAlloc.deferred.access.why }
253
+ : undefined;
254
+ const bufferedBackend = draft.preAlloc?.deferred?.backend?.recommended === true
255
+ ? { recommended: true, why: draft.preAlloc.deferred.backend.why }
256
+ : undefined;
257
+ const bufferedDeferred = bufferedAccess === undefined && bufferedBackend === undefined
258
+ ? undefined
259
+ : {
260
+ ...(bufferedAccess === undefined ? {} : { access: bufferedAccess }),
261
+ ...(bufferedBackend === undefined ? {} : { backend: bufferedBackend }),
262
+ };
263
+ const written = await writePreAllocActiveEntries(vctx, {
264
+ userId,
265
+ ownerHandle: chosen,
266
+ appSlug,
267
+ ...(chosenTitle === undefined ? {} : { title: chosenTitle }),
268
+ ...(draft.preAlloc?.skills === undefined ? {} : { skills: draft.preAlloc.skills }),
269
+ ...(draft.preAlloc?.iconDescription === undefined ? {} : { iconDescription: draft.preAlloc.iconDescription }),
270
+ ...(draft.preAlloc?.theme === undefined ? {} : { theme: draft.preAlloc.theme }),
271
+ ...(draft.preAlloc?.enrichedPrompt === undefined ? {} : { enrichedPrompt: draft.preAlloc.enrichedPrompt }),
272
+ ...(draft.preAlloc?.privacySensitive === undefined ? {} : { privacySensitive: draft.preAlloc.privacySensitive }),
273
+ ...(bufferedDeferred === undefined ? {} : { deferred: bufferedDeferred }),
274
+ ...(draft.preAlloc?.variety === undefined ? {} : { variety: draft.preAlloc.variety }),
275
+ ...(draft.preAlloc?.varietyPinned === true ? { varietyPinned: true } : {}),
276
+ ...(draft.preAlloc?.textureNote === undefined ? {} : { textureNote: draft.preAlloc.textureNote }),
277
+ ...(draft.preAlloc?.style === undefined ? {} : { style: draft.preAlloc.style }),
278
+ ...(draft.preAlloc?.colorTheme === undefined ? {} : { colorTheme: draft.preAlloc.colorTheme }),
279
+ ...(draft.preAlloc?.stylePinned === true ? { stylePinned: true } : {}),
280
+ });
281
+ if (written.isErr())
282
+ return Result.Err(written.Err());
283
+ const cleared = await exception2Result(() => vctx.sql.db
284
+ .update(vctx.sql.tables.chatContexts)
285
+ .set({ draftPreAlloc: null })
286
+ .where(eq(vctx.sql.tables.chatContexts.chatId, draft.chatId)));
287
+ return cleared.isErr() ? Result.Err(cleared.Err()) : Result.Ok(undefined);
288
+ }
229
289
  //# sourceMappingURL=attach-draft-handle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attach-draft-handle.js","sourceRoot":"","sources":["../../jsr/intern/attach-draft-handle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attach-draft-handle.js","sourceRoot":"","sources":["../../jsr/intern/attach-draft-handle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Result } from "@adviser/cement";
2
+ import type { ReqPromptChatSection, ReqWithVerifiedAuth } from "@vibes.diy/api-types";
3
+ import type { VibesApiSQLCtx } from "../types.js";
4
+ import { type AttachDraftHandleResult } from "./attach-draft-handle.js";
5
+ export declare function automaticallyAttachDraft(vctx: VibesApiSQLCtx, input: {
6
+ readonly chatId: string;
7
+ readonly userId: string;
8
+ readonly auth: NonNullable<ReqPromptChatSection["auth"]>;
9
+ readonly verifiedAuth: ReqWithVerifiedAuth<ReqPromptChatSection>["_auth"];
10
+ }): Promise<Result<AttachDraftHandleResult>>;
@@ -0,0 +1,25 @@
1
+ import { exception2Result, Result } from "@adviser/cement";
2
+ import { eq } from "drizzle-orm";
3
+ import { declaredDefaultHandle } from "./agent-actor.js";
4
+ import { attachDraftHandle } from "./attach-draft-handle.js";
5
+ import { ensureDraftContinuation } from "./draft-continuation.js";
6
+ export async function automaticallyAttachDraft(vctx, input) {
7
+ const chosen = await exception2Result(async () => {
8
+ const declared = await declaredDefaultHandle(vctx, input.userId);
9
+ if (declared !== undefined)
10
+ return declared;
11
+ const hb = vctx.sql.tables.handleBinding;
12
+ const handles = await vctx.sql.db.select({ handle: hb.handle }).from(hb).where(eq(hb.userId, input.userId)).limit(2);
13
+ return handles.length === 1 ? handles[0].handle : `guest-${vctx.sthis.nextId(16).str.toLowerCase()}`;
14
+ });
15
+ if (chosen.isErr())
16
+ return Result.Err(chosen.Err());
17
+ const attached = await attachDraftHandle(vctx, { ...input, chosenHandle: chosen.Ok() });
18
+ if (attached.isErr())
19
+ return Result.Err(attached.Err());
20
+ const continuation = await ensureDraftContinuation(vctx, input);
21
+ if (continuation.isErr())
22
+ return Result.Err(continuation.Err());
23
+ return attached;
24
+ }
25
+ //# sourceMappingURL=automatic-draft-attachment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"automatic-draft-attachment.js","sourceRoot":"","sources":["../../jsr/intern/automatic-draft-attachment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAGjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAgC,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAGlE,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,IAAoB,EACpB,KAKC;IAED,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,KAAK,IAAI,EAAE;QAC/C,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAC;QAC5C,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC;QACzC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrH,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;IACvG,CAAC,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACxF,IAAI,QAAQ,CAAC,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,MAAM,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAChE,IAAI,YAAY,CAAC,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC;IAChE,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { Result } from "@adviser/cement";
2
+ import type { VibesApiSQLCtx } from "../types.js";
3
+ export declare function ensureDraftContinuation(vctx: VibesApiSQLCtx, input: {
4
+ readonly chatId: string;
5
+ readonly userId: string;
6
+ }): Promise<Result<boolean>>;
@@ -0,0 +1,86 @@
1
+ import { exception2Result, Result } from "@adviser/cement";
2
+ import { and, eq, isNotNull, desc } from "drizzle-orm";
3
+ import { type } from "arktype";
4
+ import { DRAFT_OWNER_HANDLE } from "@vibes.diy/api-types";
5
+ import { readDraftChat } from "./draft-chat-store.js";
6
+ import { readGuestBuild } from "./guest-build-store.js";
7
+ import { getMintJob } from "./mint-job-store.js";
8
+ import { readAgentSession, saveAgentSession } from "./agent-session-store.js";
9
+ import { AGENT_SESSION_SUPERSEDED } from "./agent-session.js";
10
+ const frontendDraftRef = type({ frontendDraft: "true" });
11
+ export async function ensureDraftContinuation(vctx, input) {
12
+ const draft = await readDraftChat(vctx, input);
13
+ if (draft.isErr())
14
+ return Result.Err(draft.Err());
15
+ const app = draft.Ok();
16
+ if (app === undefined || app.ownerHandle === DRAFT_OWNER_HANDLE || app.draftState !== "attached")
17
+ return Result.Ok(false);
18
+ const journal = await readAgentSession(vctx.sql, input.chatId);
19
+ if (journal.isErr())
20
+ return Result.Err(journal.Err());
21
+ if (journal.Ok().snapshot !== undefined)
22
+ return Result.Ok(false);
23
+ const pc = vctx.sql.tables.promptContexts;
24
+ const cs = vctx.sql.tables.chatSections;
25
+ const source = await exception2Result(() => vctx.sql.db
26
+ .select({ fsId: pc.fsId, ref: pc.ref })
27
+ .from(pc)
28
+ .innerJoin(cs, and(eq(cs.chatId, pc.chatId), eq(cs.promptId, pc.promptId)))
29
+ .where(and(eq(pc.chatId, input.chatId), eq(pc.userId, input.userId), isNotNull(pc.fsId)))
30
+ .orderBy(desc(pc.created), desc(pc.promptId))
31
+ .limit(1));
32
+ if (source.isErr())
33
+ return Result.Err(source.Err());
34
+ const fsId = source.Ok()[0]?.fsId;
35
+ if (fsId === undefined || fsId === null)
36
+ return Result.Ok(false);
37
+ let brief;
38
+ if (vctx.sthis.env.get("GUEST_FIRST_BUILD_SCHEMA_READY") === "true") {
39
+ const guest = await readGuestBuild(vctx, input.chatId);
40
+ if (guest.isErr())
41
+ return Result.Err(guest.Err());
42
+ if (guest.Ok()?.claimedUserId === input.userId)
43
+ brief = guest.Ok()?.originalPrompt;
44
+ }
45
+ if (brief === undefined && !(frontendDraftRef(source.Ok()[0]?.ref) instanceof type.errors)) {
46
+ const mint = await getMintJob(vctx, input.chatId);
47
+ if (mint.isErr())
48
+ return Result.Err(mint.Err());
49
+ if (mint.Ok()?.userId === input.userId)
50
+ brief = mint.Ok()?.prompt;
51
+ }
52
+ if (brief === undefined)
53
+ return Result.Ok(false);
54
+ const id = "frontend-draft-continuation";
55
+ const saved = await saveAgentSession(vctx.sql, { ...input, ownerHandle: app.ownerHandle, appSlug: app.appSlug }, {
56
+ version: 1,
57
+ status: "running",
58
+ messages: [],
59
+ handles: [],
60
+ acceptedIds: [id],
61
+ headFsId: fsId,
62
+ inbox: [
63
+ {
64
+ id,
65
+ messages: [
66
+ {
67
+ role: "user",
68
+ content: [
69
+ {
70
+ type: "text",
71
+ text: `The frontend draft is already built and saved. Continue the original request from that existing source. Inspect it first and preserve the working frontend. Decide which access rules, backend work, or other unfinished requirements the original request needs, then complete only that remaining work. Do not rebuild the frontend or ask the maker to repeat the request. If nothing remains, report completion. Original request:\n\n${brief}`,
72
+ },
73
+ ],
74
+ },
75
+ ],
76
+ },
77
+ ],
78
+ }, journal.Ok().revision);
79
+ if (saved.isErr()) {
80
+ if (saved.Err().message === AGENT_SESSION_SUPERSEDED)
81
+ return Result.Ok(false);
82
+ return Result.Err(saved.Err());
83
+ }
84
+ return Result.Ok(true);
85
+ }
86
+ //# sourceMappingURL=draft-continuation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft-continuation.js","sourceRoot":"","sources":["../../jsr/intern/draft-continuation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Result } from "@adviser/cement";
2
+ import type { VerifiedGuestBuildAuth } from "@vibes.diy/api-types";
3
+ import type { VibesApiSQLCtx } from "../types.js";
4
+ export declare function reserveDraftRuntime(vctx: VibesApiSQLCtx, args: {
5
+ chatId: string;
6
+ userId: string;
7
+ promptId: string;
8
+ kind: "call-ai" | "image-gen";
9
+ guest?: VerifiedGuestBuildAuth;
10
+ }): Promise<Result<void>>;
@@ -0,0 +1,46 @@
1
+ import { exception2Result, Result } from "@adviser/cement";
2
+ import { and, eq, gt, isNull, sql } from "drizzle-orm";
3
+ import { guestBuildIdentity } from "./guest-build-store.js";
4
+ export async function reserveDraftRuntime(vctx, args) {
5
+ if (args.guest !== undefined && args.userId !== guestBuildIdentity(args.chatId).guestUserId)
6
+ return Result.Err("draft-runtime-guest-revoked");
7
+ const now = new Date().toISOString();
8
+ let duplicate = false;
9
+ const reserved = await exception2Result(() => vctx.sql.db.transaction(async (db) => {
10
+ if (args.guest !== undefined) {
11
+ const table = vctx.sql.tables.guestBuilds;
12
+ const saved = await db
13
+ .update(table)
14
+ .set({ revision: sql `${table.revision} + 1`, updated: now })
15
+ .where(and(eq(table.chatId, args.chatId), eq(table.jti, args.guest.verifiedAuth.claims.jti), isNull(table.claimedUserId), gt(table.expiresAt, now)))
16
+ .returning({ chatId: table.chatId });
17
+ if (saved.length !== 1)
18
+ return Result.Err("draft-runtime-guest-revoked");
19
+ }
20
+ const inserted = await db
21
+ .insert(vctx.sql.tables.promptContexts)
22
+ .values({
23
+ chatId: args.chatId,
24
+ userId: args.userId,
25
+ promptId: args.promptId,
26
+ promptTokens: 0,
27
+ completionTokens: 0,
28
+ totalTokens: 0,
29
+ ref: {
30
+ mode: args.kind === "call-ai" ? "runtime" : "img",
31
+ platformFunded: args.guest !== undefined,
32
+ draftRuntime: "reserved",
33
+ },
34
+ created: now,
35
+ })
36
+ .onConflictDoNothing()
37
+ .returning({ promptId: vctx.sql.tables.promptContexts.promptId });
38
+ if (inserted.length !== 1) {
39
+ duplicate = true;
40
+ db.rollback();
41
+ }
42
+ return Result.Ok(undefined);
43
+ }));
44
+ return reserved.isErr() && duplicate ? Result.Err("draft-runtime-request-already-used") : reserved;
45
+ }
46
+ //# sourceMappingURL=draft-runtime-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"draft-runtime-store.js","sourceRoot":"","sources":["../../jsr/intern/draft-runtime-store.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,9 @@ export declare function preAllocEligible(req: {
12
12
  readonly prompt: string;
13
13
  readonly appSlug?: string;
14
14
  };
15
- interface EnsureChatIdPResult {
15
+ export interface EnsureChatIdPResult {
16
+ firstBuildReplayed?: boolean;
17
+ firstBuildNeedsAttachments?: boolean;
16
18
  appSlug: string;
17
19
  ownerHandle: string;
18
20
  chatId: string;
@@ -51,5 +53,4 @@ export declare function writePreAllocActiveEntries(ctx: VibesApiSQLCtx, { userId
51
53
  style?: Style;
52
54
  colorTheme?: string;
53
55
  stylePinned?: boolean;
54
- }): Promise<void>;
55
- export {};
56
+ }): Promise<Result<void>>;
@@ -3,6 +3,7 @@ import { exception2Result, Result } from "@adviser/cement";
3
3
  import { ensureLogger } from "@vibes.diy/identity";
4
4
  import { resolveUserHandleBinding, ensureAppSlug, getDefaultUserSlug, persistDefaultUserSlug, resolveAdminOwnerBinding, toRFC2822_32ByteLength, } from "./ensure-slug-binding.js";
5
5
  import { insertDraftChat } from "./draft-chat-store.js";
6
+ import { ensureFirstBuildRequest } from "./first-build-request.js";
6
7
  import { MINT_FALLBACK_THEME, stampableStyleForTheme, styleForLookColorway } from "./mint-style.js";
7
8
  import { upsertPendingMintJob } from "./mint-job-store.js";
8
9
  import { generate } from "random-words";
@@ -100,6 +101,23 @@ export function resolveStylePin(raw, themeSlug) {
100
101
  return checked.ok ? Result.Ok(checked.slug) : Result.Err(checked.message);
101
102
  }
102
103
  export async function ensureChatId(ctx, req, opts = {}) {
104
+ if (req.firstBuildRequestId === undefined)
105
+ return ensureChatIdInternal(ctx, req, opts);
106
+ if (req.chatId !== undefined ||
107
+ req.appSlug !== undefined ||
108
+ req.dryRun === true ||
109
+ req.mode !== "codegen" ||
110
+ !preAllocEligible(req))
111
+ return Result.Err("first-build-request-requires-fresh-codegen-prompt");
112
+ return ensureFirstBuildRequest(ctx, {
113
+ userId: req._auth.verifiedAuth.claims.userId,
114
+ requestId: req.firstBuildRequestId,
115
+ prompt: req.prompt,
116
+ clientFiresFirstTurn: req.clientFiresFirstTurn === true,
117
+ allocate: (tx, allocatedChatId) => ensureChatIdInternal(tx, req, { ...opts, allocatedChatId }),
118
+ });
119
+ }
120
+ async function ensureChatIdInternal(ctx, req, opts = {}) {
103
121
  let appSlug = "";
104
122
  let ownerHandle = "";
105
123
  let chatId;
@@ -237,7 +255,7 @@ export async function ensureChatId(ctx, req, opts = {}) {
237
255
  let chosenTitle;
238
256
  if (draft) {
239
257
  appSlug = proposeDraftAppSlug(ctx, req.appSlug, preferredPairs);
240
- chatId = ctx.sthis.nextId(12).str;
258
+ chatId = opts.allocatedChatId ?? ctx.sthis.nextId(12).str;
241
259
  const rDraft = await insertDraftChat(ctx, {
242
260
  chatId,
243
261
  userId,
@@ -264,7 +282,7 @@ export async function ensureChatId(ctx, req, opts = {}) {
264
282
  }
265
283
  else if (lightMint) {
266
284
  appSlug = proposeDraftAppSlug(ctx, undefined, undefined);
267
- chatId = ctx.sthis.nextId(12).str;
285
+ chatId = opts.allocatedChatId ?? ctx.sthis.nextId(12).str;
268
286
  await ctx.sql.db.insert(ctx.sql.tables.chatContexts).values({
269
287
  chatId,
270
288
  userId,
@@ -280,7 +298,7 @@ export async function ensureChatId(ctx, req, opts = {}) {
280
298
  }
281
299
  appSlug = resApp.Ok().appSlug;
282
300
  chosenTitle = resApp.Ok().chosenTitle;
283
- chatId = ctx.sthis.nextId(12).str;
301
+ chatId = opts.allocatedChatId ?? ctx.sthis.nextId(12).str;
284
302
  await ctx.sql.db.insert(ctx.sql.tables.chatContexts).values({
285
303
  chatId,
286
304
  userId,
@@ -431,7 +449,7 @@ export async function writePreAllocActiveEntries(ctx, { userId, ownerHandle, app
431
449
  .Error()
432
450
  .Any({ err: rIns.Err(), ownerHandle, appSlug })
433
451
  .Msg("appSettings write failed; skipping evt-app-setting");
434
- return;
452
+ return Result.Err(rIns.Err());
435
453
  }
436
454
  await ctx.postQueue({
437
455
  payload: {
@@ -447,5 +465,6 @@ export async function writePreAllocActiveEntries(ctx, { userId, ownerHandle, app
447
465
  });
448
466
  }
449
467
  await startIconLane(ctx, { userId, ownerHandle, appSlug });
468
+ return Result.Ok(undefined);
450
469
  }
451
470
  //# sourceMappingURL=ensure-chat-id.js.map