@vibes.diy/api-svc 14.3.133 → 14.3.137

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 (118) hide show
  1. package/create-handler.js +2 -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 +2 -0
  6. package/index.js +2 -0
  7. package/index.js.map +1 -1
  8. package/intern/agent-session-instruction.d.ts +2 -2
  9. package/intern/agent-session-instruction.js +5 -2
  10. package/intern/agent-session-instruction.js.map +1 -1
  11. package/intern/backend-db-callback.js +2 -2
  12. package/intern/backend-db-callback.js.map +1 -1
  13. package/intern/builder-elided-output.d.ts +7 -0
  14. package/intern/builder-elided-output.js +10 -0
  15. package/intern/builder-elided-output.js.map +1 -0
  16. package/intern/components/boot-progress-script.d.ts +19 -0
  17. package/intern/components/boot-progress-script.js +76 -0
  18. package/intern/components/boot-progress-script.js.map +1 -0
  19. package/intern/components/vibe-page.js +11 -0
  20. package/intern/components/vibe-page.js.map +1 -1
  21. package/intern/delete-access-gate.js +2 -2
  22. package/intern/delete-access-gate.js.map +1 -1
  23. package/intern/emit-build-state.d.ts +2 -1
  24. package/intern/emit-build-state.js +6 -1
  25. package/intern/emit-build-state.js.map +1 -1
  26. package/intern/get-vibe-route-hints.js +3 -2
  27. package/intern/get-vibe-route-hints.js.map +1 -1
  28. package/intern/grouped-vibe-import-map.d.ts +21 -0
  29. package/intern/grouped-vibe-import-map.js +24 -3
  30. package/intern/grouped-vibe-import-map.js.map +1 -1
  31. package/intern/guest-app-move.d.ts +71 -0
  32. package/intern/guest-app-move.js +490 -0
  33. package/intern/guest-app-move.js.map +1 -0
  34. package/intern/guest-principal-claim.d.ts +3 -0
  35. package/intern/guest-principal-claim.js +58 -3
  36. package/intern/guest-principal-claim.js.map +1 -1
  37. package/intern/guest-principal-follow.js +4 -0
  38. package/intern/guest-principal-follow.js.map +1 -1
  39. package/intern/import-map.d.ts +1 -0
  40. package/intern/import-map.js +7 -0
  41. package/intern/import-map.js.map +1 -1
  42. package/intern/onboarding-handle.js.map +1 -1
  43. package/intern/open-turn-sweep.d.ts +9 -1
  44. package/intern/open-turn-sweep.js +15 -0
  45. package/intern/open-turn-sweep.js.map +1 -1
  46. package/intern/opens-check.js +2 -0
  47. package/intern/opens-check.js.map +1 -1
  48. package/intern/process-access-bindings.js +2 -2
  49. package/intern/process-access-bindings.js.map +1 -1
  50. package/intern/render-db-explorer.d.ts +2 -0
  51. package/intern/render-db-explorer.js +1 -0
  52. package/intern/render-db-explorer.js.map +1 -1
  53. package/intern/render-vibe.d.ts +3 -0
  54. package/intern/render-vibe.js +27 -4
  55. package/intern/render-vibe.js.map +1 -1
  56. package/intern/root-html-cache-contract.js.map +1 -1
  57. package/intern/swr-html-cache-orchestrator.d.ts +2 -1
  58. package/intern/swr-html-cache-orchestrator.js +15 -6
  59. package/intern/swr-html-cache-orchestrator.js.map +1 -1
  60. package/intern/swr-html-cache.d.ts +1 -0
  61. package/intern/swr-html-cache.js +2 -0
  62. package/intern/swr-html-cache.js.map +1 -1
  63. package/intern/swr-purge.js +24 -0
  64. package/intern/swr-purge.js.map +1 -1
  65. package/intern/swr-wrapper-html-cache.d.ts +13 -0
  66. package/intern/swr-wrapper-html-cache.js +28 -4
  67. package/intern/swr-wrapper-html-cache.js.map +1 -1
  68. package/intern/vibe-pkg-hashed-import-map.d.ts +24 -0
  69. package/intern/vibe-pkg-hashed-import-map.js +73 -0
  70. package/intern/vibe-pkg-hashed-import-map.js.map +1 -0
  71. package/intern/vibe-preload-modules.d.ts +1 -1
  72. package/intern/vibe-preload-modules.js +10 -0
  73. package/intern/vibe-preload-modules.js.map +1 -1
  74. package/package.json +15 -14
  75. package/public/app-documents-read-eventos.js +3 -7
  76. package/public/app-documents-read-eventos.js.map +1 -1
  77. package/public/claim-guest-principal.js +2 -0
  78. package/public/claim-guest-principal.js.map +1 -1
  79. package/public/ensure-user-settings.js +5 -7
  80. package/public/ensure-user-settings.js.map +1 -1
  81. package/public/invite-app-card.d.ts +10 -0
  82. package/public/invite-app-card.js +17 -0
  83. package/public/invite-app-card.js.map +1 -0
  84. package/public/invite-peek.d.ts +5 -0
  85. package/public/invite-peek.js +46 -0
  86. package/public/invite-peek.js.map +1 -0
  87. package/public/invite-subject-aliases.js +20 -5
  88. package/public/invite-subject-aliases.js.map +1 -1
  89. package/public/open-chat.js +5 -0
  90. package/public/open-chat.js.map +1 -1
  91. package/public/prompt-turn-terminal.js +15 -0
  92. package/public/prompt-turn-terminal.js.map +1 -1
  93. package/public/resolve-active-handle.d.ts +0 -1
  94. package/public/resolve-active-handle.js +0 -12
  95. package/public/resolve-active-handle.js.map +1 -1
  96. package/public/serv-entry-point.d.ts +3 -1
  97. package/public/serv-entry-point.js +52 -4
  98. package/public/serv-entry-point.js.map +1 -1
  99. package/public/stream-assembly.js +14 -0
  100. package/public/stream-assembly.js.map +1 -1
  101. package/public/sync-eventos.d.ts +1 -0
  102. package/public/sync-eventos.js +50 -27
  103. package/public/sync-eventos.js.map +1 -1
  104. package/public/user-slug-bindings.js +20 -0
  105. package/public/user-slug-bindings.js.map +1 -1
  106. package/public/viewer-channel-resolver.js +2 -2
  107. package/public/viewer-channel-resolver.js.map +1 -1
  108. package/public/who-am-i.d.ts +3 -0
  109. package/public/who-am-i.js +30 -2
  110. package/public/who-am-i.js.map +1 -1
  111. package/public/write-front-door.js +2 -2
  112. package/public/write-front-door.js.map +1 -1
  113. package/usage-report/backfill-provisional-app-moves-util.d.ts +24 -0
  114. package/usage-report/backfill-provisional-app-moves-util.js +70 -0
  115. package/usage-report/backfill-provisional-app-moves-util.js.map +1 -0
  116. package/usage-report/backfill-provisional-app-moves.d.ts +1 -0
  117. package/usage-report/backfill-provisional-app-moves.js +92 -0
  118. package/usage-report/backfill-provisional-app-moves.js.map +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"write-front-door.js","sourceRoot":"","sources":["../../jsr/public/write-front-door.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAsD5F,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAoB,EACpB,CASC;IASD,IAAI,MAAM,GAAc,WAAW,CAAC;IACpC,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACtB,MAAM,eAAe,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;QAC7H,MAAM,GAAG,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC5G,WAAW,GAAG,eAAe,CAAC,MAAM,KAAK,UAAU,CAAC;IACtD,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAK/G,IAAI,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC;IAC5F,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACtB,MAAM,eAAe,GAAG,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAMlH,MAAM,mBAAmB,GACvB,CAAC,eAAe;QAChB,MAAM,CAAC,aAAa,KAAK,IAAI;QAC7B,MAAM,CAAC,OAAO,KAAK,IAAI;QACvB,GAAG,CAAC,QAAQ,KAAK,SAAS;QAC1B,GAAG,CAAC,GAAG,KAAK,SAAS;QACrB,CAAC,MAAM,uBAAuB,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IACpG,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC;AAC/D,CAAC;AA0BD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAoB,EACpB,CAAmG;IAMnG,IAAI,YAAgC,CAAC;IACrC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACb,IAAI,CAAC,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;YACzE,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC;YACjG,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,YAAY,GAAG,MAAM,yBAAyB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IACD,OAAO;QACL,YAAY;QACZ,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI;KACzG,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"write-front-door.js","sourceRoot":"","sources":["../../jsr/public/write-front-door.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAsDtF,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAoB,EACpB,CASC;IASD,IAAI,MAAM,GAAc,WAAW,CAAC;IACpC,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACtB,MAAM,eAAe,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;QAC7H,MAAM,GAAG,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC5G,WAAW,GAAG,eAAe,CAAC,MAAM,KAAK,UAAU,CAAC;IACtD,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAK/G,IAAI,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC;IAC5F,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IACtB,MAAM,eAAe,GAAG,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAMlH,MAAM,mBAAmB,GACvB,CAAC,eAAe;QAChB,MAAM,CAAC,aAAa,KAAK,IAAI;QAC7B,MAAM,CAAC,OAAO,KAAK,IAAI;QACvB,GAAG,CAAC,QAAQ,KAAK,SAAS;QAC1B,GAAG,CAAC,GAAG,KAAK,SAAS;QACrB,CAAC,MAAM,uBAAuB,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IACpG,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC;AAC/D,CAAC;AAyBD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAoB,EACpB,CAAmG;IAMnG,IAAI,YAAgC,CAAC;IACrC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACb,IAAI,CAAC,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;YACzE,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC;YACjG,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,YAAY,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IACD,OAAO;QACL,YAAY;QACZ,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI;KACzG,CAAC;AACJ,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { Result } from "@adviser/cement";
2
+ import type { VibesApiSQLCtx } from "../types.js";
3
+ import { type AppMove, type AppPair } from "../intern/guest-app-move.js";
4
+ export type AppMoveBackfillOutcome = "planned" | "moved" | "skipped" | "failed";
5
+ export interface AppMoveBackfillRow {
6
+ readonly userId: string;
7
+ readonly outcome: AppMoveBackfillOutcome;
8
+ readonly toHandle?: string;
9
+ readonly apps: readonly AppPair[];
10
+ readonly moved?: readonly AppMove[];
11
+ readonly deferred?: readonly AppPair[];
12
+ readonly reason?: string;
13
+ }
14
+ export interface AppMoveBackfillSummary {
15
+ readonly candidates: number;
16
+ readonly rows: readonly AppMoveBackfillRow[];
17
+ }
18
+ export declare function selectProvisionalAppAccounts(vctx: VibesApiSQLCtx, limit?: number): Promise<Result<string[]>>;
19
+ export interface AppMoveBackfillOptions {
20
+ readonly apply: boolean;
21
+ readonly limit?: number;
22
+ readonly onRow?: (row: AppMoveBackfillRow) => void;
23
+ }
24
+ export declare function runAppMoveBackfill(vctx: VibesApiSQLCtx, opts: AppMoveBackfillOptions): Promise<Result<AppMoveBackfillSummary>>;
@@ -0,0 +1,70 @@
1
+ import { exception2Result, Result } from "@adviser/cement";
2
+ import { eq, inArray } from "drizzle-orm";
3
+ import { resolveActiveHandle } from "../public/resolve-active-handle.js";
4
+ import { moveAppsToChosenHandle } from "../intern/guest-app-move.js";
5
+ export async function selectProvisionalAppAccounts(vctx, limit) {
6
+ const hb = vctx.sql.tables.handleBinding;
7
+ const asb = vctx.sql.tables.appSlugBinding;
8
+ const rows = await exception2Result(() => {
9
+ const q = vctx.sql.db
10
+ .selectDistinct({ userId: hb.userId })
11
+ .from(hb)
12
+ .innerJoin(asb, eq(asb.ownerHandle, hb.handle))
13
+ .where(eq(hb.provisional, 1))
14
+ .orderBy(hb.userId);
15
+ return limit === undefined ? q : q.limit(limit);
16
+ });
17
+ if (rows.isErr())
18
+ return Result.Err(rows.Err());
19
+ return Result.Ok(rows.Ok().map((r) => r.userId));
20
+ }
21
+ async function planFor(vctx, userId) {
22
+ const hb = vctx.sql.tables.handleBinding;
23
+ const asb = vctx.sql.tables.appSlugBinding;
24
+ const bound = await vctx.sql.db.select({ handle: hb.handle, provisional: hb.provisional }).from(hb).where(eq(hb.userId, userId));
25
+ const active = await resolveActiveHandle(vctx, userId);
26
+ const chosen = bound.find((b) => b.handle === active && b.provisional !== 1)?.handle;
27
+ const provisional = bound.filter((b) => b.provisional === 1 && b.handle !== chosen).map((b) => b.handle);
28
+ if (chosen === undefined || provisional.length === 0)
29
+ return { apps: [] };
30
+ const apps = await vctx.sql.db
31
+ .select({ ownerHandle: asb.ownerHandle, appSlug: asb.appSlug })
32
+ .from(asb)
33
+ .where(inArray(asb.ownerHandle, provisional))
34
+ .orderBy(asb.ownerHandle, asb.appSlug);
35
+ return { toHandle: chosen, apps };
36
+ }
37
+ export async function runAppMoveBackfill(vctx, opts) {
38
+ const rCandidates = await selectProvisionalAppAccounts(vctx, opts.limit);
39
+ if (rCandidates.isErr())
40
+ return Result.Err(rCandidates.Err());
41
+ const rows = [];
42
+ for (const userId of rCandidates.Ok()) {
43
+ const row = await backfillOne(vctx, { userId, apply: opts.apply });
44
+ rows.push(row);
45
+ opts.onRow?.(row);
46
+ }
47
+ return Result.Ok({ candidates: rCandidates.Ok().length, rows });
48
+ }
49
+ async function backfillOne(vctx, input) {
50
+ const rPlan = await exception2Result(() => planFor(vctx, input.userId));
51
+ if (rPlan.isErr())
52
+ return { userId: input.userId, outcome: "failed", apps: [], reason: rPlan.Err().message };
53
+ const plan = rPlan.Ok();
54
+ if (plan.toHandle === undefined || plan.apps.length === 0)
55
+ return { userId: input.userId, outcome: "skipped", apps: [] };
56
+ if (input.apply === false)
57
+ return { userId: input.userId, outcome: "planned", toHandle: plan.toHandle, apps: plan.apps };
58
+ const r = await moveAppsToChosenHandle(vctx, { userId: input.userId, toHandle: plan.toHandle });
59
+ if (r.isErr())
60
+ return { userId: input.userId, outcome: "failed", toHandle: plan.toHandle, apps: plan.apps, reason: r.Err().message };
61
+ return {
62
+ userId: input.userId,
63
+ outcome: "moved",
64
+ toHandle: plan.toHandle,
65
+ apps: plan.apps,
66
+ moved: r.Ok().moved,
67
+ deferred: r.Ok().deferred,
68
+ };
69
+ }
70
+ //# sourceMappingURL=backfill-provisional-app-moves-util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backfill-provisional-app-moves-util.js","sourceRoot":"","sources":["../../jsr/usage-report/backfill-provisional-app-moves-util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,92 @@
1
+ import { Pool } from "@neondatabase/serverless";
2
+ import { drizzle as drizzleNeon } from "drizzle-orm/neon-serverless";
3
+ import { Result, exception2Result } from "@adviser/cement";
4
+ import { ensureSuperThis } from "@vibes.diy/identity";
5
+ import { createVibesApiTables } from "@vibes.diy/api-sql";
6
+ import { parsePositiveIntFlag } from "./backfill-published-chips-util.js";
7
+ import { runAppMoveBackfill } from "./backfill-provisional-app-moves-util.js";
8
+ import { formatError, loadDevVars } from "./usage-report-util.js";
9
+ function printUsage() {
10
+ console.log(`
11
+ Usage:
12
+ pnpm --dir vibes.diy/api/svc run admin:backfill-provisional-app-moves # dry run (read-only)
13
+ pnpm --dir vibes.diy/api/svc run admin:backfill-provisional-app-moves -- --apply # write pass
14
+ ... -- --apply --limit 10 # cap for a controlled batch
15
+ ... -- --list # print every account, not just the count
16
+
17
+ Environment:
18
+ NEON_DATABASE_URL read/discovery connection (dry run)
19
+ NEON_DATABASE_ADMIN_URL write connection (required for --apply)
20
+ `.trim());
21
+ }
22
+ function pairs(list) {
23
+ return list.map((p) => `${p.ownerHandle}/${p.appSlug}`).join(", ");
24
+ }
25
+ function describe(row) {
26
+ const to = row.toHandle === undefined ? "" : ` → @${row.toHandle}`;
27
+ const apps = row.apps.length === 0 ? "" : ` [${pairs(row.apps)}]`;
28
+ const moved = row.moved === undefined ? "" : ` moved=${row.moved.map((m) => `${m.from.appSlug}→${m.to.appSlug}`).join(",")}`;
29
+ const deferred = row.deferred === undefined || row.deferred.length === 0 ? "" : ` deferred=[${pairs(row.deferred)}]`;
30
+ const reason = row.reason === undefined ? "" : ` (${row.reason})`;
31
+ return `${row.outcome.toUpperCase().padEnd(9)}${row.userId}${to}${apps}${moved}${deferred}${reason}`;
32
+ }
33
+ async function run() {
34
+ loadDevVars();
35
+ const args = process.argv.slice(2);
36
+ if (args.includes("--help") || args.includes("-h")) {
37
+ printUsage();
38
+ return Result.Ok(undefined);
39
+ }
40
+ const apply = args.includes("--apply");
41
+ const list = args.includes("--list");
42
+ const rLimit = parsePositiveIntFlag(args, "--limit");
43
+ if (rLimit.isErr()) {
44
+ printUsage();
45
+ return Result.Err(rLimit.Err());
46
+ }
47
+ const limit = rLimit.Ok();
48
+ const connectionString = apply ? process.env["NEON_DATABASE_ADMIN_URL"] : process.env["NEON_DATABASE_URL"];
49
+ if (connectionString === undefined) {
50
+ printUsage();
51
+ return Result.Err(`${apply ? "NEON_DATABASE_ADMIN_URL" : "NEON_DATABASE_URL"} is required (set in .dev.vars or env)`);
52
+ }
53
+ const pool = new Pool({ connectionString });
54
+ const db = drizzleNeon(pool);
55
+ const vctx = {
56
+ sthis: ensureSuperThis(),
57
+ sql: { db, tables: createVibesApiTables("pg"), flavour: "pg" },
58
+ };
59
+ const result = await exception2Result(async () => {
60
+ const rSummary = await runAppMoveBackfill(vctx, {
61
+ apply,
62
+ ...(limit === undefined ? {} : { limit }),
63
+ onRow: (row) => {
64
+ if (apply === true || list === true || row.outcome === "planned")
65
+ console.log(describe(row));
66
+ },
67
+ });
68
+ if (rSummary.isErr())
69
+ throw rSummary.Err();
70
+ const summary = rSummary.Ok();
71
+ const count = (outcome) => summary.rows.filter((r) => r.outcome === outcome).length;
72
+ console.log(`\ncandidates=${summary.candidates} (accounts holding an app under a provisional handle)`);
73
+ if (apply === false) {
74
+ console.log(`would-move=${count("planned")} skipped=${count("skipped")}\nDry run — nothing written. Re-run with --apply.`);
75
+ return;
76
+ }
77
+ console.log(`moved=${count("moved")} skipped=${count("skipped")} failed=${count("failed")}`);
78
+ if (count("failed") > 0)
79
+ throw new Error(`sweep finished with ${count("failed")} failed account(s) — re-run to retry`);
80
+ });
81
+ await pool.end();
82
+ if (result.isErr())
83
+ return Result.Err(result.Err());
84
+ return Result.Ok(undefined);
85
+ }
86
+ run().then((r) => {
87
+ if (r.isErr()) {
88
+ console.error(formatError(r.Err()));
89
+ process.exit(1);
90
+ }
91
+ });
92
+ //# sourceMappingURL=backfill-provisional-app-moves.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backfill-provisional-app-moves.js","sourceRoot":"","sources":["../../jsr/usage-report/backfill-provisional-app-moves.ts"],"names":[],"mappings":"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"}