@vibes.diy/api-svc 8.1.1 → 8.2.0

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 (116) hide show
  1. package/cf-serve.js +2 -0
  2. package/cf-serve.js.map +1 -1
  3. package/create-handler.d.ts +5 -0
  4. package/create-handler.js +4 -0
  5. package/create-handler.js.map +1 -1
  6. package/index.d.ts +4 -0
  7. package/index.js +4 -0
  8. package/index.js.map +1 -1
  9. package/intern/backend-db-callback.js +10 -3
  10. package/intern/backend-db-callback.js.map +1 -1
  11. package/intern/backend-egress.d.ts +12 -0
  12. package/intern/backend-egress.js +122 -31
  13. package/intern/backend-egress.js.map +1 -1
  14. package/intern/delete-access-gate.js +6 -1
  15. package/intern/delete-access-gate.js.map +1 -1
  16. package/intern/distill-url.d.ts +14 -0
  17. package/intern/distill-url.js +270 -0
  18. package/intern/distill-url.js.map +1 -0
  19. package/intern/ensure-push-seeded-chat.js +1 -0
  20. package/intern/ensure-push-seeded-chat.js.map +1 -1
  21. package/intern/fetch-url-tool.d.ts +38 -0
  22. package/intern/fetch-url-tool.js +299 -0
  23. package/intern/fetch-url-tool.js.map +1 -0
  24. package/intern/first-message-embedding.js +5 -4
  25. package/intern/first-message-embedding.js.map +1 -1
  26. package/intern/in-flight-turns.d.ts +9 -0
  27. package/intern/in-flight-turns.js +27 -0
  28. package/intern/in-flight-turns.js.map +1 -0
  29. package/intern/llm-tool-loop.d.ts +66 -0
  30. package/intern/llm-tool-loop.js +355 -0
  31. package/intern/llm-tool-loop.js.map +1 -0
  32. package/intern/load-owner-egress-status.d.ts +1 -1
  33. package/intern/load-owner-egress-status.js.map +1 -1
  34. package/intern/load-research-context.d.ts +17 -0
  35. package/intern/load-research-context.js +160 -0
  36. package/intern/load-research-context.js.map +1 -0
  37. package/intern/persist-url-research.d.ts +37 -0
  38. package/intern/persist-url-research.js +249 -0
  39. package/intern/persist-url-research.js.map +1 -0
  40. package/intern/prompt-assembly.d.ts +3 -0
  41. package/intern/prompt-assembly.js +33 -7
  42. package/intern/prompt-assembly.js.map +1 -1
  43. package/intern/provider-sse.d.ts +3 -0
  44. package/intern/provider-sse.js +12 -0
  45. package/intern/provider-sse.js.map +1 -0
  46. package/intern/read-anonymous-seed-docs.js +17 -10
  47. package/intern/read-anonymous-seed-docs.js.map +1 -1
  48. package/intern/recovery.js +5 -1
  49. package/intern/recovery.js.map +1 -1
  50. package/intern/resend-prev-msg.js +19 -14
  51. package/intern/resend-prev-msg.js.map +1 -1
  52. package/intern/turn-url-fetch-budget.d.ts +16 -0
  53. package/intern/turn-url-fetch-budget.js +33 -0
  54. package/intern/turn-url-fetch-budget.js.map +1 -0
  55. package/intern/url-activation.d.ts +8 -0
  56. package/intern/url-activation.js +79 -0
  57. package/intern/url-activation.js.map +1 -0
  58. package/intern/url-research-queue.d.ts +7 -0
  59. package/intern/url-research-queue.js +31 -0
  60. package/intern/url-research-queue.js.map +1 -0
  61. package/intern/url-research.d.ts +112 -0
  62. package/intern/url-research.js +631 -0
  63. package/intern/url-research.js.map +1 -0
  64. package/intern/version-timeline.d.ts +1 -0
  65. package/intern/version-timeline.js +15 -4
  66. package/intern/version-timeline.js.map +1 -1
  67. package/package.json +13 -11
  68. package/public/access-output-decoder.d.ts +12 -0
  69. package/public/access-output-decoder.js +130 -0
  70. package/public/access-output-decoder.js.map +1 -0
  71. package/public/app-documents-read-eventos.js +87 -40
  72. package/public/app-documents-read-eventos.js.map +1 -1
  73. package/public/app-documents-shared.d.ts +11 -4
  74. package/public/app-documents-shared.js +1 -1
  75. package/public/app-documents-shared.js.map +1 -1
  76. package/public/app-documents-write-eventos.js +6 -1
  77. package/public/app-documents-write-eventos.js.map +1 -1
  78. package/public/channel-read-filter.d.ts +11 -5
  79. package/public/channel-read-filter.js +5 -6
  80. package/public/channel-read-filter.js.map +1 -1
  81. package/public/db-acl-resolver.d.ts +9 -3
  82. package/public/db-acl-resolver.js +1 -1
  83. package/public/db-acl-resolver.js.map +1 -1
  84. package/public/files-asset.js +1 -1
  85. package/public/files-asset.js.map +1 -1
  86. package/public/fork-app.js +1 -0
  87. package/public/fork-app.js.map +1 -1
  88. package/public/get-application-chat.js +5 -4
  89. package/public/get-application-chat.js.map +1 -1
  90. package/public/get-chat-details.js +5 -4
  91. package/public/get-chat-details.js.map +1 -1
  92. package/public/get-chat-response.js +5 -4
  93. package/public/get-chat-response.js.map +1 -1
  94. package/public/get-vibe-chips.js +5 -4
  95. package/public/get-vibe-chips.js.map +1 -1
  96. package/public/image-gen.js +4 -8
  97. package/public/image-gen.js.map +1 -1
  98. package/public/img-doc-write.js +1 -1
  99. package/public/img-doc-write.js.map +1 -1
  100. package/public/inherit-read-resolver.d.ts +2 -7
  101. package/public/inherit-read-resolver.js +27 -65
  102. package/public/inherit-read-resolver.js.map +1 -1
  103. package/public/llm-dispatch.d.ts +10 -3
  104. package/public/llm-dispatch.js +97 -13
  105. package/public/llm-dispatch.js.map +1 -1
  106. package/public/open-chat.js +1 -1
  107. package/public/open-chat.js.map +1 -1
  108. package/public/prompt-chat-section.js +25 -8
  109. package/public/prompt-chat-section.js.map +1 -1
  110. package/public/stream-assembly.d.ts +4 -2
  111. package/public/stream-assembly.js +27 -38
  112. package/public/stream-assembly.js.map +1 -1
  113. package/svc-ws-send-provider.d.ts +1 -2
  114. package/svc-ws-send-provider.js.map +1 -1
  115. package/types.d.ts +5 -0
  116. package/types.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../jsr/intern/recovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AASzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAkD3D,MAAM,CAAC,MAAM,sBAAsB,GAAiB,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;AACpG,MAAM,CAAC,MAAM,kBAAkB,GAAiB,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;AA0ClG,MAAM,UAAU,oBAAoB,CAAC,EACnC,eAAe,EACf,gBAAgB,EAChB,GAAG,EACH,SAAS,EACT,gBAAgB,EAChB,oBAAoB,GACC;IACrB,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAC3C,CAAC;IACD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,eAAe,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IACrF,MAAM,YAAY,GAAG,oBAAoB,CAAC;QACxC,eAAe,EAAE,GAAG;QACpB,SAAS;QACT,MAAM,EAAE,EAAE;KACX,CAAC,CAAC;IACH,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,gBAAgB,KAAK,SAAS,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClE,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,CAAC,gBAAgB,EAAE,SAAS,EAAE,oBAAoB,CAAC,EAAE,CAAC;SAC1G,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC,EAAE,CAAC,EAAE,GAAG,eAAe,EAAE,QAAQ,EAAE,CAAC,CAAC;AACrD,CAAC;AAMD,SAAS,mBAAmB,CAAC,gBAAwB,EAAE,SAAiB,EAAE,oBAA6B;IACrG,MAAM,UAAU,GACd,oBAAoB,KAAK,SAAS;QAChC,CAAC,CAAC,gEAAgE,SAAS,kCAAkC,oBAAoB,cAAc;QAC/I,CAAC,CAAC,EAAE,CAAC;IACT,OAAO;QACL,8UAA8U,UAAU,EAAE;QAC1V,EAAE;QACF,gBAAgB;QAChB,EAAE;QACF,sLAAsL;KACvL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAgC,EAAE,cAAsB;IACvF,MAAM,cAAc,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IACtE,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC;IAC9F,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC;IAC1C,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1F,MAAM,MAAM,GAAgB;QAC1B,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,OAAO,cAAc,EAAE,EAAE,CAAC;KAC1E,CAAC;IACF,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,GAAgC,EAChC,SAAiB,EACjB,MAAM,GAAiB,sBAAsB;IAE7C,MAAM,KAAK,GAAa,CAAC,4CAA4C,CAAC,CAAC;IACvE,IAAI,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC;IACvC,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACjD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,OAAO,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACvD,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACb,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,gDAAgD,CAAC,CAAC;YACxE,SAAS;QACX,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,EAAE,OAAO,CAAC,CAAC;YACvC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CACR,OAAO,IAAI,gBAAgB,OAAO,CAAC,MAAM,kBAAkB,GAAG,OAAO,EACrE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EACrB,OAAO,IAAI,wBAAwB,CACpC,CAAC;YACF,WAAW,IAAI,GAAG,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAgC,EAAE,SAAiB;IAC3E,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE,CAAC,CAAC;IAC5G,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChG,OAAO,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,CAAC;AACjC,CAAC;AAgBD,MAAM,UAAU,qBAAqB,CAAC,OAAwB,EAAE,OAA2C;IACzG,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,GAAG,CAAC,EAAE,CAAC;AACzH,CAAC;AAID,MAAM,UAAU,qBAAqB,CAAC,OAAwB,EAAE,MAAM,GAAmB,EAAE,uBAAuB,EAAE,CAAC,EAAE;IACrH,OAAO,OAAO,CAAC,oBAAoB,GAAG,MAAM,CAAC,uBAAuB,CAAC;AACvE,CAAC;AAgBD,MAAM,UAAU,mBAAmB,CAAC,KAA+B;IACjE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;IAC1E,OAAO;QACL,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO;QAC3B,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS;QAC/B,GAAG,EAAE,QAAQ;QACb,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO;QAC3B,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI;QACvB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;QACpC,UAAU;QACV,SAAS,EAAE,GAAG;KACf,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../jsr/intern/recovery.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,19 @@
1
1
  import { Result } from "@adviser/cement";
2
2
  import { ensureLogger } from "@vibes.diy/identity";
3
- import { eq } from "drizzle-orm/sql/expressions";
4
- import { parseArrayWarning, PromptAndBlockMsgs } from "@vibes.diy/api-types";
3
+ import { and, eq, ne } from "drizzle-orm/sql/expressions";
4
+ import { isPromptResearch, parseArrayWarning, PromptAndBlockMsgs, RESEARCH_BLOCK_SEQ, } from "@vibes.diy/api-types";
5
5
  import { isBlockEnd } from "@vibes.diy/call-ai-v2";
6
+ import { peekInFlightTurns } from "./in-flight-turns.js";
6
7
  export async function resendChatSectionsPrevMsg(args) {
7
8
  const { vctx, chatCtx, send, tid, dst } = args;
8
9
  const sections = await vctx.sql.db
9
10
  .select()
10
11
  .from(vctx.sql.tables.chatSections)
11
- .where(eq(vctx.sql.tables.chatSections.chatId, chatCtx.chatId))
12
+ .where(and(eq(vctx.sql.tables.chatSections.chatId, chatCtx.chatId), ne(vctx.sql.tables.chatSections.blockSeq, RESEARCH_BLOCK_SEQ)))
12
13
  .orderBy(vctx.sql.tables.chatSections.created, vctx.sql.tables.chatSections.promptId, vctx.sql.tables.chatSections.blockSeq);
13
14
  for (const section of sections) {
14
- const { filtered: blocks, warning } = parseArrayWarning(section.blocks, PromptAndBlockMsgs);
15
+ const { filtered: parsedBlocks, warning } = parseArrayWarning(section.blocks, PromptAndBlockMsgs);
16
+ const blocks = parsedBlocks.filter((block) => !isPromptResearch(block));
15
17
  if (warning.length > 0) {
16
18
  ensureLogger(vctx.sthis, "resendChatSectionsPrevMsg").Warn().Any({ parseErrors: warning }).Msg("skip");
17
19
  }
@@ -54,16 +56,19 @@ export async function resendChatSectionsPrevMsg(args) {
54
56
  }
55
57
  }
56
58
  }
57
- for (const section of chatCtx.promptIds.values()) {
58
- const rSend = await send({
59
- payload: section,
60
- tid,
61
- src: "openChat",
62
- dst,
63
- ttl: 6,
64
- });
65
- if (rSend.isErr()) {
66
- return Result.Err(rSend);
59
+ const inFlight = peekInFlightTurns(chatCtx.chatId);
60
+ if (inFlight !== undefined) {
61
+ for (const section of inFlight.values()) {
62
+ const rSend = await send({
63
+ payload: section,
64
+ tid,
65
+ src: "openChat",
66
+ dst,
67
+ ttl: 6,
68
+ });
69
+ if (rSend.isErr()) {
70
+ return Result.Err(rSend);
71
+ }
67
72
  }
68
73
  }
69
74
  return Result.Ok(undefined);
@@ -1 +1 @@
1
- {"version":3,"file":"resend-prev-msg.js","sourceRoot":"","sources":["../../jsr/intern/resend-prev-msg.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resend-prev-msg.js","sourceRoot":"","sources":["../../jsr/intern/resend-prev-msg.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export declare const TURN_URL_FETCH_TOTAL_MAX = 3;
2
+ export declare const TURN_URL_FETCH_RESEARCH_MAX = 2;
3
+ export type TurnUrlFetchBudgetOwner = "main" | "research";
4
+ export interface TurnUrlFetchBudgetSnapshot {
5
+ readonly total: number;
6
+ readonly main: number;
7
+ readonly research: number;
8
+ readonly remaining: number;
9
+ readonly mainRemaining: number;
10
+ readonly researchRemaining: number;
11
+ }
12
+ export interface TurnUrlFetchBudget {
13
+ reserve(owner: TurnUrlFetchBudgetOwner): boolean;
14
+ snapshotForTests(): TurnUrlFetchBudgetSnapshot;
15
+ }
16
+ export declare function createTurnUrlFetchBudget(): TurnUrlFetchBudget;
@@ -0,0 +1,33 @@
1
+ export const TURN_URL_FETCH_TOTAL_MAX = 3;
2
+ export const TURN_URL_FETCH_RESEARCH_MAX = 2;
3
+ export function createTurnUrlFetchBudget() {
4
+ let total = 0;
5
+ let main = 0;
6
+ let research = 0;
7
+ const reserve = (owner) => {
8
+ if (total >= TURN_URL_FETCH_TOTAL_MAX)
9
+ return false;
10
+ if (owner === "research") {
11
+ if (research >= TURN_URL_FETCH_RESEARCH_MAX)
12
+ return false;
13
+ if (main === 0 && total >= TURN_URL_FETCH_TOTAL_MAX - 1)
14
+ return false;
15
+ research++;
16
+ }
17
+ else {
18
+ main++;
19
+ }
20
+ total++;
21
+ return true;
22
+ };
23
+ const snapshotForTests = () => Object.freeze({
24
+ total,
25
+ main,
26
+ research,
27
+ remaining: TURN_URL_FETCH_TOTAL_MAX - total,
28
+ mainRemaining: TURN_URL_FETCH_TOTAL_MAX - total,
29
+ researchRemaining: Math.min(TURN_URL_FETCH_RESEARCH_MAX - research, TURN_URL_FETCH_TOTAL_MAX - total),
30
+ });
31
+ return { reserve, snapshotForTests };
32
+ }
33
+ //# sourceMappingURL=turn-url-fetch-budget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-url-fetch-budget.js","sourceRoot":"","sources":["../../jsr/intern/turn-url-fetch-budget.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAC1C,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AA0B7C,MAAM,UAAU,wBAAwB;IACtC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,MAAM,OAAO,GAAG,CAAC,KAA8B,EAAW,EAAE;QAC1D,IAAI,KAAK,IAAI,wBAAwB;YAAE,OAAO,KAAK,CAAC;QAEpD,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YACzB,IAAI,QAAQ,IAAI,2BAA2B;gBAAE,OAAO,KAAK,CAAC;YAG1D,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,wBAAwB,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;YACtE,QAAQ,EAAE,CAAC;QACb,CAAC;aAAM,CAAC;YACN,IAAI,EAAE,CAAC;QACT,CAAC;QAED,KAAK,EAAE,CAAC;QACR,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,GAA+B,EAAE,CACxD,MAAM,CAAC,MAAM,CAAC;QACZ,KAAK;QACL,IAAI;QACJ,QAAQ;QACR,SAAS,EAAE,wBAAwB,GAAG,KAAK;QAC3C,aAAa,EAAE,wBAAwB,GAAG,KAAK;QAC/C,iBAAiB,EAAE,IAAI,CAAC,GAAG,CAAC,2BAA2B,GAAG,QAAQ,EAAE,wBAAwB,GAAG,KAAK,CAAC;KACtG,CAAC,CAAC;IAEL,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;AACvC,CAAC"}
@@ -0,0 +1,8 @@
1
+ export declare const MAX_ACTIVATED_URLS = 3;
2
+ export declare const MAX_ACTIVATED_URL_LENGTH = 2048;
3
+ export interface UrlActivationInput {
4
+ readonly currentUserText?: string;
5
+ readonly enrichedPrompt?: string;
6
+ readonly isInitialTurn?: boolean;
7
+ }
8
+ export declare function activateUrlCandidates(input: UrlActivationInput): string[];
@@ -0,0 +1,79 @@
1
+ import { BuildURI, URI } from "@adviser/cement";
2
+ import { checkEgressFloor } from "./egress-floor.js";
3
+ export const MAX_ACTIVATED_URLS = 3;
4
+ export const MAX_ACTIVATED_URL_LENGTH = 2_048;
5
+ export function activateUrlCandidates(input) {
6
+ if (input.isInitialTurn === false)
7
+ return [];
8
+ const candidates = [input.currentUserText ?? "", input.enrichedPrompt ?? ""];
9
+ const seen = new Set();
10
+ const activated = [];
11
+ for (const source of candidates) {
12
+ for (const token of source.match(/https:\/\/[^\s<>"'`]+/gi) ?? []) {
13
+ if (activated.length >= MAX_ACTIVATED_URLS)
14
+ return activated;
15
+ const normalized = normalizeCandidate(token);
16
+ if (normalized !== undefined && seen.has(normalized) === false) {
17
+ seen.add(normalized);
18
+ activated.push(normalized);
19
+ }
20
+ }
21
+ }
22
+ return activated;
23
+ }
24
+ function normalizeCandidate(token) {
25
+ let candidate = token;
26
+ for (;;) {
27
+ const last = candidate.at(-1);
28
+ if (last === undefined || ".,!?;:".includes(last) === false)
29
+ return parseCandidate(candidate);
30
+ const withoutPunctuation = candidate.slice(0, -1);
31
+ if (parseCandidate(withoutPunctuation) === undefined)
32
+ return parseCandidate(candidate);
33
+ candidate = withoutPunctuation;
34
+ }
35
+ }
36
+ function parseCandidate(candidate) {
37
+ if (candidate.length === 0 || candidate.length > MAX_ACTIVATED_URL_LENGTH)
38
+ return undefined;
39
+ const bracketTrimmed = trimUnmatchedClosingPunctuation(candidate);
40
+ const parsed = URI.fromResult(bracketTrimmed);
41
+ if (parsed.isErr())
42
+ return undefined;
43
+ const uri = parsed.Ok();
44
+ if (uri.protocol !== "https:" || (uri.port !== "" && uri.port !== "443"))
45
+ return undefined;
46
+ const url = uri.asURL();
47
+ if (url.username !== "" || url.password !== "")
48
+ return undefined;
49
+ if (checkEgressFloor(url).ok === false)
50
+ return undefined;
51
+ const builder = BuildURI.from(uri.toString()).hash("");
52
+ if (uri.port === "443")
53
+ builder.port("");
54
+ const normalized = builder.toString();
55
+ return normalized.length <= MAX_ACTIVATED_URL_LENGTH ? normalized : undefined;
56
+ }
57
+ function trimUnmatchedClosingPunctuation(candidate) {
58
+ let result = candidate;
59
+ for (;;) {
60
+ const last = result.at(-1);
61
+ if (last === ")" && count(result, "(") < count(result, ")")) {
62
+ result = result.slice(0, -1);
63
+ continue;
64
+ }
65
+ if (last === "]" && count(result, "[") < count(result, "]")) {
66
+ result = result.slice(0, -1);
67
+ continue;
68
+ }
69
+ if (last === "}" && count(result, "{") < count(result, "}")) {
70
+ result = result.slice(0, -1);
71
+ continue;
72
+ }
73
+ return result;
74
+ }
75
+ }
76
+ function count(value, needle) {
77
+ return [...value].filter((character) => character === needle).length;
78
+ }
79
+ //# sourceMappingURL=url-activation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-activation.js","sourceRoot":"","sources":["../../jsr/intern/url-activation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Result } from "@adviser/cement";
2
+ import type { MsgBase, EvtUrlResearch, UrlResearchJob } from "@vibes.diy/api-types";
3
+ export interface ScheduleUrlResearchOptions {
4
+ readonly waitUntil?: (promise: Promise<void>) => void;
5
+ readonly onError: (error: unknown) => void;
6
+ }
7
+ export declare function scheduleUrlResearch(postQueue: (message: MsgBase<EvtUrlResearch>) => Result<Promise<void>>, job: UrlResearchJob, options: ScheduleUrlResearchOptions): void;
@@ -0,0 +1,31 @@
1
+ import { exception2Result } from "@adviser/cement";
2
+ const RESEARCH_QUEUE_TID = "url-research";
3
+ function reportEnqueueError(onError, error) {
4
+ const reported = exception2Result(() => onError(error));
5
+ if (reported.isErr())
6
+ console.error("[url-research] enqueue error handler failed:", reported.Err());
7
+ }
8
+ export function scheduleUrlResearch(postQueue, job, options) {
9
+ const message = {
10
+ payload: { type: "vibes.diy.evt-url-research", ...job },
11
+ tid: RESEARCH_QUEUE_TID,
12
+ src: "promptChatSection",
13
+ dst: "vibes-service",
14
+ ttl: 1,
15
+ };
16
+ const enqueueResult = postQueue(message);
17
+ if (enqueueResult.isErr()) {
18
+ reportEnqueueError(options.onError, enqueueResult.Err());
19
+ return;
20
+ }
21
+ const pendingEnqueue = enqueueResult.Ok();
22
+ const waitUntil = options.waitUntil;
23
+ if (waitUntil !== undefined) {
24
+ const registered = exception2Result(() => waitUntil(pendingEnqueue));
25
+ if (registered.isErr()) {
26
+ console.error("[url-research] waitUntil registration failed:", registered.Err());
27
+ }
28
+ }
29
+ void pendingEnqueue.catch((error) => reportEnqueueError(options.onError, error));
30
+ }
31
+ //# sourceMappingURL=url-research-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url-research-queue.js","sourceRoot":"","sources":["../../jsr/intern/url-research-queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAU,MAAM,iBAAiB,CAAC;AAG3D,MAAM,kBAAkB,GAAG,cAAc,CAAC;AAO1C,SAAS,kBAAkB,CAAC,OAAiC,EAAE,KAAc;IAC3E,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,IAAI,QAAQ,CAAC,KAAK,EAAE;QAAE,OAAO,CAAC,KAAK,CAAC,8CAA8C,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;AACtG,CAAC;AAOD,MAAM,UAAU,mBAAmB,CACjC,SAAsE,EACtE,GAAmB,EACnB,OAAmC;IAEnC,MAAM,OAAO,GAA4B;QACvC,OAAO,EAAE,EAAE,IAAI,EAAE,4BAA4B,EAAE,GAAG,GAAG,EAAE;QACvD,GAAG,EAAE,kBAAkB;QACvB,GAAG,EAAE,mBAAmB;QACxB,GAAG,EAAE,eAAe;QACpB,GAAG,EAAE,CAAC;KACP,CAAC;IACF,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC;QAC1B,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC;QACzD,OAAO;IACT,CAAC;IAED,MAAM,cAAc,GAAG,aAAa,CAAC,EAAE,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACpC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;QACrE,IAAI,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IACD,KAAK,cAAc,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5F,CAAC"}
@@ -0,0 +1,112 @@
1
+ import type { LLMHeaders as LLMHeadersValue } from "@vibes.diy/api-types";
2
+ import { type LLMRequest, type SseUsage } from "@vibes.diy/call-ai-v2";
3
+ import type { FetchUrlTool } from "./fetch-url-tool.js";
4
+ import type { TurnUrlFetchBudget } from "./turn-url-fetch-budget.js";
5
+ export declare const URL_RESEARCH_DEADLINE_MS = 15000;
6
+ export declare const URL_RESEARCH_MAX_PROVIDER_ATTEMPTS = 2;
7
+ export declare const URL_RESEARCH_MAX_TOOL_ROUNDS = 2;
8
+ export declare const URL_RESEARCH_MAX_TOOL_CALLS = 2;
9
+ export declare const URL_RESEARCH_MAX_SOURCES = 3;
10
+ export declare const URL_RESEARCH_MAX_EXCERPTS = 8;
11
+ export declare const URL_RESEARCH_MAX_ENDPOINTS = 8;
12
+ export declare const URL_RESEARCH_MAX_SEED_ROWS = 24;
13
+ export declare const URL_RESEARCH_MAX_BRIEF_CHARS = 4000;
14
+ export declare const URL_RESEARCH_MAX_EXCERPT_CHARS = 400;
15
+ export declare const URL_RESEARCH_MAX_ITEM_BYTES: number;
16
+ export declare const URL_RESEARCH_MAX_SEED_BYTES: number;
17
+ export declare const URL_RESEARCH_MAX_RESULT_BYTES: number;
18
+ export declare const URL_RESEARCH_SYSTEM_INSTRUCTIONS: string;
19
+ export type UrlResearchStatus = "complete" | "partial" | "failed";
20
+ export interface UrlResearchSource {
21
+ readonly url: string;
22
+ readonly finalUrl: string | null;
23
+ readonly contentType: string | null;
24
+ readonly httpStatus: number | null;
25
+ readonly backendFetchable: boolean;
26
+ readonly fetched: boolean;
27
+ readonly errorCode: string | null;
28
+ }
29
+ export interface UrlResearchExcerpt {
30
+ readonly sourceUrl: string;
31
+ readonly text: string;
32
+ readonly locator?: string;
33
+ }
34
+ export interface UrlResearchEndpoint {
35
+ readonly method: string;
36
+ readonly path: string;
37
+ readonly description: string;
38
+ readonly fields: readonly string[];
39
+ }
40
+ export interface UrlResearchSeedRow {
41
+ readonly sourceUrl: string;
42
+ readonly dbName: string;
43
+ readonly key: string;
44
+ readonly item: Record<string, unknown>;
45
+ }
46
+ export interface UrlResearchDocument {
47
+ readonly version: 1;
48
+ readonly researchId: string;
49
+ readonly completedAt: string;
50
+ readonly status: UrlResearchStatus;
51
+ readonly brief: string;
52
+ readonly sources: readonly UrlResearchSource[];
53
+ readonly excerpts: readonly UrlResearchExcerpt[];
54
+ readonly apiEndpoints: readonly UrlResearchEndpoint[];
55
+ readonly seedRows: readonly UrlResearchSeedRow[];
56
+ readonly errorCode?: string;
57
+ }
58
+ export interface UrlResearchFetchAudit {
59
+ readonly requestedUrl: string;
60
+ readonly finalUrl: string | null;
61
+ readonly contentType: string | null;
62
+ readonly httpStatus: number | null;
63
+ readonly backendFetchable: boolean;
64
+ readonly fetched: boolean;
65
+ readonly errorCode: string | null;
66
+ }
67
+ export interface UrlResearchProviderMetadata {
68
+ readonly model: string;
69
+ readonly byok: boolean;
70
+ readonly attempts: number;
71
+ readonly usages: readonly SseUsage[];
72
+ }
73
+ export interface UrlResearchResult {
74
+ readonly result: UrlResearchDocument;
75
+ readonly provider: UrlResearchProviderMetadata;
76
+ readonly fetchAudits: readonly UrlResearchFetchAudit[];
77
+ }
78
+ export interface UrlResearchProviderRequest extends LLMRequest {
79
+ readonly model: string;
80
+ readonly headers: LLMHeadersValue;
81
+ readonly apiKey?: string;
82
+ }
83
+ export interface UrlResearchDispatchInput {
84
+ readonly request: UrlResearchProviderRequest;
85
+ readonly signal: AbortSignal;
86
+ readonly attempt: number;
87
+ }
88
+ export type UrlResearchDispatch = (input: UrlResearchDispatchInput) => Promise<Response>;
89
+ export interface UrlResearchFetchToolFactoryInput {
90
+ readonly activatedUrls: readonly string[];
91
+ readonly fetchBudget: TurnUrlFetchBudget;
92
+ readonly ownerLane: "research";
93
+ }
94
+ export type UrlResearchFetchToolFactory = (input: UrlResearchFetchToolFactoryInput) => FetchUrlTool;
95
+ export interface UrlResearchArgs {
96
+ readonly chatId: string;
97
+ readonly promptId: string;
98
+ readonly activatedUrls: readonly string[];
99
+ readonly currentUserText: string;
100
+ readonly model: string;
101
+ readonly apiKey?: string;
102
+ readonly headers: LLMHeadersValue;
103
+ readonly fetchBudget: TurnUrlFetchBudget;
104
+ readonly fetchToolFactory: UrlResearchFetchToolFactory;
105
+ readonly dispatch: UrlResearchDispatch;
106
+ readonly parentSignal?: AbortSignal;
107
+ readonly now?: () => number;
108
+ readonly deadlineMs?: number;
109
+ readonly usageCollector?: (usage: SseUsage) => void;
110
+ }
111
+ export declare function urlResearchId(chatId: string, promptId: string, activatedUrls: readonly string[]): string;
112
+ export declare function runUrlResearch(args: UrlResearchArgs): Promise<UrlResearchResult>;