veryfront 0.1.1123 → 0.1.1125

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 (74) hide show
  1. package/esm/deno.js +1 -1
  2. package/esm/src/agent/ag-ui/browser-encoder.d.ts.map +1 -1
  3. package/esm/src/agent/ag-ui/browser-encoder.js +3 -0
  4. package/esm/src/agent/conversation/run-events.d.ts.map +1 -1
  5. package/esm/src/agent/conversation/run-events.js +6 -1
  6. package/esm/src/agent/streaming/knowledge-source-document.d.ts +11 -0
  7. package/esm/src/agent/streaming/knowledge-source-document.d.ts.map +1 -0
  8. package/esm/src/agent/streaming/knowledge-source-document.js +38 -0
  9. package/esm/src/agent/streaming/mirrored-tool-chunk-state.d.ts.map +1 -1
  10. package/esm/src/agent/streaming/mirrored-tool-chunk-state.js +27 -12
  11. package/esm/src/chat/message-prep.d.ts.map +1 -1
  12. package/esm/src/chat/message-prep.js +3 -6
  13. package/esm/src/chat/provider-errors.d.ts +3 -10
  14. package/esm/src/chat/provider-errors.d.ts.map +1 -1
  15. package/esm/src/chat/provider-errors.js +2 -9
  16. package/esm/src/embedding/veryfront-cloud/rag-store.d.ts.map +1 -1
  17. package/esm/src/embedding/veryfront-cloud/rag-store.js +5 -2
  18. package/esm/src/html/hydration-script-builder/templates/router.d.ts.map +1 -1
  19. package/esm/src/html/hydration-script-builder/templates/router.js +10 -0
  20. package/esm/src/html/utils.d.ts.map +1 -1
  21. package/esm/src/html/utils.js +26 -7
  22. package/esm/src/platform/adapters/veryfront-api-client/operations.d.ts +3 -3
  23. package/esm/src/platform/adapters/veryfront-api-client/operations.d.ts.map +1 -1
  24. package/esm/src/platform/adapters/veryfront-api-client/operations.js +4 -4
  25. package/esm/src/platform/adapters/veryfront-api-client/retry-handler.d.ts +4 -15
  26. package/esm/src/platform/adapters/veryfront-api-client/retry-handler.d.ts.map +1 -1
  27. package/esm/src/platform/adapters/veryfront-api-client/retry-handler.js +6 -110
  28. package/esm/src/platform/adapters/veryfront-api-transport.d.ts +40 -0
  29. package/esm/src/platform/adapters/veryfront-api-transport.d.ts.map +1 -0
  30. package/esm/src/platform/adapters/veryfront-api-transport.js +142 -0
  31. package/esm/src/provider/runtime-loader/provider-http.d.ts.map +1 -1
  32. package/esm/src/provider/runtime-loader/provider-http.js +5 -1
  33. package/esm/src/react/components/ui/anchored-surface.d.ts +44 -0
  34. package/esm/src/react/components/ui/anchored-surface.d.ts.map +1 -0
  35. package/esm/src/react/components/ui/anchored-surface.js +58 -0
  36. package/esm/src/react/components/ui/collapsible.d.ts.map +1 -1
  37. package/esm/src/react/components/ui/collapsible.js +3 -9
  38. package/esm/src/react/components/ui/dialog.d.ts +4 -7
  39. package/esm/src/react/components/ui/dialog.d.ts.map +1 -1
  40. package/esm/src/react/components/ui/dialog.js +13 -59
  41. package/esm/src/react/components/ui/disclosure.d.ts +12 -0
  42. package/esm/src/react/components/ui/disclosure.d.ts.map +1 -0
  43. package/esm/src/react/components/ui/disclosure.js +22 -0
  44. package/esm/src/react/components/ui/drawer.d.ts +5 -7
  45. package/esm/src/react/components/ui/drawer.d.ts.map +1 -1
  46. package/esm/src/react/components/ui/drawer.js +13 -57
  47. package/esm/src/react/components/ui/dropdown-menu.d.ts +4 -7
  48. package/esm/src/react/components/ui/dropdown-menu.d.ts.map +1 -1
  49. package/esm/src/react/components/ui/dropdown-menu.js +12 -31
  50. package/esm/src/react/components/ui/modal-surface.d.ts +43 -0
  51. package/esm/src/react/components/ui/modal-surface.d.ts.map +1 -0
  52. package/esm/src/react/components/ui/modal-surface.js +83 -0
  53. package/esm/src/react/components/ui/popover.d.ts +4 -7
  54. package/esm/src/react/components/ui/popover.d.ts.map +1 -1
  55. package/esm/src/react/components/ui/popover.js +11 -31
  56. package/esm/src/routing/client/types.d.ts +9 -0
  57. package/esm/src/routing/client/types.d.ts.map +1 -1
  58. package/esm/src/server/handlers/dev/framework-candidates.generated.d.ts.map +1 -1
  59. package/esm/src/server/handlers/dev/framework-candidates.generated.js +175 -49
  60. package/esm/src/server/handlers/request/module/page-data-endpoint-handler.d.ts.map +1 -1
  61. package/esm/src/server/handlers/request/module/page-data-endpoint-handler.js +25 -0
  62. package/esm/src/utils/index.d.ts +1 -0
  63. package/esm/src/utils/index.d.ts.map +1 -1
  64. package/esm/src/utils/index.js +1 -0
  65. package/esm/src/utils/json.d.ts +19 -0
  66. package/esm/src/utils/json.d.ts.map +1 -0
  67. package/esm/src/utils/json.js +17 -0
  68. package/esm/src/utils/logger/redact.d.ts.map +1 -1
  69. package/esm/src/utils/logger/redact.js +7 -3
  70. package/esm/src/utils/version-constant.d.ts +1 -1
  71. package/esm/src/utils/version-constant.js +1 -1
  72. package/esm/src/workflow/backends/redis/index.d.ts.map +1 -1
  73. package/esm/src/workflow/backends/redis/index.js +6 -7
  74. package/package.json +5 -5
package/esm/deno.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export default {
2
2
  "name": "veryfront",
3
- "version": "0.1.1123",
3
+ "version": "0.1.1125",
4
4
  "license": "Apache-2.0",
5
5
  "nodeModulesDir": "auto",
6
6
  "minimumDependencyAge": {
@@ -1 +1 @@
1
- {"version":3,"file":"browser-encoder.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/ag-ui/browser-encoder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,8CAA8C;AAC9C,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhF,mEAAmE;AACnE,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC/C,WAAW,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;CACzD;AAED,uCAAuC;AACvC,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,8BAA8B,CAAC;CAC1C;AAED,+CAA+C;AAC/C,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,8CAA8C;AAC9C,wBAAgB,6BAA6B,IAAI,uBAAuB,CAcvE;AAqSD,yDAAyD;AACzD,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,8BAA8B,GACvC,aAAa,GAAG,IAAI,CA+HtB;AAoID,wDAAwD;AACxD,wBAAgB,wCAAwC,CACtD,KAAK,EAAE,uBAAuB,EAC9B,KAAK,EAAE,sBAAsB,GAC5B,uBAAuB,EAAE,CA+N3B;AAED,4CAA4C;AAC5C,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,uBAAuB,EAC9B,QAAQ,EAAE,aAAa,GAAG,IAAI,GAC7B,uBAAuB,EAAE,CA8B3B"}
1
+ {"version":3,"file":"browser-encoder.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/ag-ui/browser-encoder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,8CAA8C;AAC9C,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhF,mEAAmE;AACnE,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC/C,WAAW,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;CACzD;AAED,uCAAuC;AACvC,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,QAAQ,EAAE,8BAA8B,CAAC;CAC1C;AAED,+CAA+C;AAC/C,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,8CAA8C;AAC9C,wBAAgB,6BAA6B,IAAI,uBAAuB,CAcvE;AAqSD,yDAAyD;AACzD,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,8BAA8B,GACvC,aAAa,GAAG,IAAI,CA+HtB;AAoID,wDAAwD;AACxD,wBAAgB,wCAAwC,CACtD,KAAK,EAAE,uBAAuB,EAC9B,KAAK,EAAE,sBAAsB,GAC5B,uBAAuB,EAAE,CAmO3B;AAED,4CAA4C;AAC5C,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,uBAAuB,EAC9B,QAAQ,EAAE,aAAa,GAAG,IAAI,GAC7B,uBAAuB,EAAE,CA8B3B"}
@@ -480,6 +480,9 @@ export function mapRuntimeStreamEventToAgUiBrowserEvents(state, event) {
480
480
  return [createCustomDataEvent(name, "data" in event ? event.data : null)];
481
481
  }
482
482
  switch (event.type) {
483
+ case "source-document":
484
+ state.sawVisibleOutput = true;
485
+ return [createCustomDataEvent("source-document", event)];
483
486
  case "message-start":
484
487
  getMessageId(state, event);
485
488
  return [];
@@ -1 +1 @@
1
- {"version":3,"file":"run-events.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/conversation/run-events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,iDAAiD;AACjD,eAAO,MAAM,yBAAyB;;;;;;;;;;;;CAY5B,CAAC;AAEX,eAAO,MAAM,6BAA6B;;iCAIzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B;;iCAA4C,CAAC;AAEpF,0CAA0C;AAC1C,MAAM,MAAM,oBAAoB,GAC5B,WAAW,CAAC,UAAU,CAAC,OAAO,6BAA6B,CAAC,CAAC,GAC7D,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAyB5B,gDAAgD;AAChD,qBAAa,2BAA2B;IACtC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,gBAAgB,CAAK;IAE7B,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,qBAAqB;IAuB7B,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,0BAA0B;IAYlC,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,oBAAoB,EAAE;CAiKvD;AAED,6CAA6C;AAC7C,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,eAAe,EAAE,EACzB,OAAO,8BAAoC,GAC1C,oBAAoB,EAAE,CAExB;AAED,kDAAkD;AAClD,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,eAAe,EAAE,EACzB,OAAO,8BAAoC,GAC1C,oBAAoB,EAAE,CAExB"}
1
+ {"version":3,"file":"run-events.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/conversation/run-events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAG9D,iDAAiD;AACjD,eAAO,MAAM,yBAAyB;;;;;;;;;;;;CAY5B,CAAC;AAEX,eAAO,MAAM,6BAA6B;;iCAIzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B;;iCAA4C,CAAC;AAEpF,0CAA0C;AAC1C,MAAM,MAAM,oBAAoB,GAC5B,WAAW,CAAC,UAAU,CAAC,OAAO,6BAA6B,CAAC,CAAC,GAC7D,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAyB5B,gDAAgD;AAChD,qBAAa,2BAA2B;IACtC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,gBAAgB,CAAK;IAE7B,OAAO,CAAC,sBAAsB;IAM9B,OAAO,CAAC,qBAAqB;IAuB7B,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,0BAA0B;IAYlC,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,oBAAoB,EAAE;CAuKvD;AAED,6CAA6C;AAC7C,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,eAAe,EAAE,EACzB,OAAO,8BAAoC,GAC1C,oBAAoB,EAAE,CAExB;AAED,kDAAkD;AAClD,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,eAAe,EAAE,EACzB,OAAO,8BAAoC,GAC1C,oBAAoB,EAAE,CAExB"}
@@ -217,12 +217,17 @@ export class ConversationRunEventEncoder {
217
217
  this.releaseToolCallState(chunk.toolCallId);
218
218
  return events;
219
219
  }
220
+ case "source-document":
221
+ return [{
222
+ type: conversationRunEventTypes.custom,
223
+ name: "source-document",
224
+ value: chunk,
225
+ }];
220
226
  case "error":
221
227
  case "finish":
222
228
  case "abort":
223
229
  case "message-metadata":
224
230
  case "source-url":
225
- case "source-document":
226
231
  case "file":
227
232
  case "tool-approval-request":
228
233
  case "start-step":
@@ -0,0 +1,11 @@
1
+ import type { ChatMessageMetadata, ChatUiMessageChunk } from "../../chat/protocol.js";
2
+ type SourceDocumentChunk = Extract<ChatUiMessageChunk<ChatMessageMetadata>, {
3
+ type: "source-document";
4
+ }>;
5
+ /** Derive an exact structured citation from a successful project knowledge file read. */
6
+ export declare function deriveKnowledgeSourceDocumentChunk(input: {
7
+ toolName: string | undefined;
8
+ output: unknown;
9
+ }): SourceDocumentChunk | null;
10
+ export {};
11
+ //# sourceMappingURL=knowledge-source-document.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-source-document.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/streaming/knowledge-source-document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAMtF,KAAK,mBAAmB,GAAG,OAAO,CAChC,kBAAkB,CAAC,mBAAmB,CAAC,EACvC;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,CAC5B,CAAC;AAsBF,yFAAyF;AACzF,wBAAgB,kCAAkC,CAAC,KAAK,EAAE;IACxD,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,OAAO,CAAC;CACjB,GAAG,mBAAmB,GAAG,IAAI,CAsB7B"}
@@ -0,0 +1,38 @@
1
+ import { lookup as lookupMediaType } from "../../platform/compat/media-types.js";
2
+ const GET_FILE_TOOL_NAME = "get_file";
3
+ const KNOWLEDGE_PATH_PREFIX = "knowledge/";
4
+ function isRecord(value) {
5
+ return typeof value === "object" && value !== null && !Array.isArray(value);
6
+ }
7
+ function resolveStructuredOutput(output) {
8
+ if (!isRecord(output)) {
9
+ return null;
10
+ }
11
+ if (isRecord(output.structuredContent)) {
12
+ return output.structuredContent;
13
+ }
14
+ if (isRecord(output.structured_content)) {
15
+ return output.structured_content;
16
+ }
17
+ return output;
18
+ }
19
+ /** Derive an exact structured citation from a successful project knowledge file read. */
20
+ export function deriveKnowledgeSourceDocumentChunk(input) {
21
+ if (input.toolName !== GET_FILE_TOOL_NAME) {
22
+ return null;
23
+ }
24
+ const output = resolveStructuredOutput(input.output);
25
+ const path = output?.path;
26
+ if (typeof path !== "string" ||
27
+ path.length === 0 ||
28
+ !path.startsWith(KNOWLEDGE_PATH_PREFIX)) {
29
+ return null;
30
+ }
31
+ return {
32
+ type: "source-document",
33
+ sourceId: path,
34
+ mediaType: lookupMediaType(path) ?? "text/plain",
35
+ title: path,
36
+ filename: path,
37
+ };
38
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"mirrored-tool-chunk-state.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/streaming/mirrored-tool-chunk-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mirrored-tool-chunk-state.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/streaming/mirrored-tool-chunk-state.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { deriveKnowledgeSourceDocumentChunk } from "./knowledge-source-document.js";
1
2
  /** Check whether a durable chunk mirrors tool output. */
2
3
  export function isDurableMirroredOutputChunk(chunk) {
3
4
  switch (chunk.type) {
@@ -149,22 +150,36 @@ export async function closeHostedMirroredOpenToolCalls(input) {
149
150
  /** Create hosted mirrored UI stream. */
150
151
  export async function* createHostedMirroredUiStream(input) {
151
152
  let streamError = null;
153
+ const emittedKnowledgeSourceIds = new Set();
152
154
  try {
153
- for await (const chunk of input.sourceStream) {
154
- input.rootStreamWatchdog.observe(chunk);
155
- if (isDurableMirroredOutputChunk(chunk)) {
156
- input.setMirroredOutput?.(true);
155
+ for await (const sourceChunk of input.sourceStream) {
156
+ const derivedSource = sourceChunk.type === "tool-output-available"
157
+ ? deriveKnowledgeSourceDocumentChunk({
158
+ toolName: input.mirroredToolChunkState.toolCallNames.get(sourceChunk.toolCallId),
159
+ output: sourceChunk.output,
160
+ })
161
+ : null;
162
+ const chunks = [sourceChunk];
163
+ if (derivedSource && !emittedKnowledgeSourceIds.has(derivedSource.sourceId)) {
164
+ emittedKnowledgeSourceIds.add(derivedSource.sourceId);
165
+ chunks.push(derivedSource);
157
166
  }
158
- recordMirroredToolChunkState(input.mirroredToolChunkState, chunk);
159
- if (input.appendChunk) {
160
- await Promise.resolve(input.appendChunk(chunk)).catch((error) => {
161
- input.logger?.error("Durable run mirror failed to handle chunk", {
162
- chunkType: chunk.type,
163
- error: error instanceof Error ? error.message : String(error),
167
+ for (const chunk of chunks) {
168
+ input.rootStreamWatchdog.observe(chunk);
169
+ if (isDurableMirroredOutputChunk(chunk)) {
170
+ input.setMirroredOutput?.(true);
171
+ }
172
+ recordMirroredToolChunkState(input.mirroredToolChunkState, chunk);
173
+ if (input.appendChunk) {
174
+ await Promise.resolve(input.appendChunk(chunk)).catch((error) => {
175
+ input.logger?.error("Durable run mirror failed to handle chunk", {
176
+ chunkType: chunk.type,
177
+ error: error instanceof Error ? error.message : String(error),
178
+ });
164
179
  });
165
- });
180
+ }
181
+ yield chunk;
166
182
  }
167
- yield chunk;
168
183
  }
169
184
  }
170
185
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"message-prep.d.ts","sourceRoot":"","sources":["../../../src/src/chat/message-prep.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message-prep.d.ts","sourceRoot":"","sources":["../../../src/src/chat/message-prep.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { convertUiMessagesToProviderModelMessages, copyProviderModelMessageSourceId, getStringField, isReasoningPart, isToolCallPart, isToolResultPart, } from "./conversation.js";
2
2
  import { buildDataFileAnnotation, normalizeInlineAttachmentMediaType, } from "./types.js";
3
3
  import { historicalToolSummaries } from "../integrations/_tool_summaries.js";
4
+ import { safeJsonParse } from "../utils/json.js";
4
5
  /** Default limits for chat history preparation. */
5
6
  export const DEFAULT_MESSAGE_PREP_LIMITS = {
6
7
  charsPerToken: 4,
@@ -300,12 +301,8 @@ function stableHash(value) {
300
301
  function tryParseJson(value) {
301
302
  if (typeof value !== "string")
302
303
  return value;
303
- try {
304
- return JSON.parse(value);
305
- }
306
- catch {
307
- return value;
308
- }
304
+ const r = safeJsonParse(value);
305
+ return r.ok ? r.value : value;
309
306
  }
310
307
  function isRecord(value) {
311
308
  return typeof value === "object" && value !== null && !Array.isArray(value);
@@ -1,19 +1,12 @@
1
+ import { safeJsonParse } from "../utils/json.js";
2
+ export { safeJsonParse };
3
+ export type { SafeJsonParseResult } from "../utils/json.js";
1
4
  /** Error shape for parsed provider. */
2
5
  export interface ParsedProviderError {
3
6
  code: string;
4
7
  message: string;
5
8
  status?: number;
6
9
  }
7
- /** Result returned from safe JSON parse. */
8
- export type SafeJsonParseResult = {
9
- ok: true;
10
- value: unknown;
11
- } | {
12
- ok: false;
13
- error: Error;
14
- };
15
- /** Parse JSON safely without throwing. */
16
- export declare function safeJsonParse(value: string): SafeJsonParseResult;
17
10
  /** Parses known problem body. */
18
11
  export declare function parseKnownProblemBody(body: unknown): ParsedProviderError | null;
19
12
  /** Returns true when the normalizedMessage indicates a credit or spend limit error. */
@@ -1 +1 @@
1
- {"version":3,"file":"provider-errors.d.ts","sourceRoot":"","sources":["../../../src/src/chat/provider-errors.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAqCD,4CAA4C;AAC5C,MAAM,MAAM,mBAAmB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAE7F,0CAA0C;AAC1C,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAMhE;AAgBD,iCAAiC;AACjC,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,mBAAmB,GAAG,IAAI,CA+B/E;AAcD,uFAAuF;AACvF,wBAAgB,oBAAoB,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAOvE;AAsID,sCAAsC;AACtC,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,CAEtE"}
1
+ {"version":3,"file":"provider-errors.d.ts","sourceRoot":"","sources":["../../../src/src/chat/provider-errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,CAAC;AACzB,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,uCAAuC;AACvC,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAmDD,iCAAiC;AACjC,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,mBAAmB,GAAG,IAAI,CA+B/E;AAcD,uFAAuF;AACvF,wBAAgB,oBAAoB,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAOvE;AAsID,sCAAsC;AACtC,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,CAEtE"}
@@ -1,3 +1,5 @@
1
+ import { safeJsonParse } from "../utils/json.js";
2
+ export { safeJsonParse };
1
3
  const DEFAULT_EXTERNAL_SERVICE_ERROR = {
2
4
  code: "EXTERNAL_SERVICE_ERROR",
3
5
  message: "LLM provider service error",
@@ -23,15 +25,6 @@ const AI_PROVIDER_BILLING_ERROR = {
23
25
  function isErrorRecord(value) {
24
26
  return typeof value === "object" && value !== null && !Array.isArray(value);
25
27
  }
26
- /** Parse JSON safely without throwing. */
27
- export function safeJsonParse(value) {
28
- try {
29
- return { ok: true, value: JSON.parse(value) };
30
- }
31
- catch (error) {
32
- return { ok: false, error: error instanceof Error ? error : new Error(String(error)) };
33
- }
34
- }
35
28
  function parseErrorJson(value) {
36
29
  const parsed = safeJsonParse(value);
37
30
  return parsed.ok ? parsed.value : null;
@@ -1 +1 @@
1
- {"version":3,"file":"rag-store.d.ts","sourceRoot":"","sources":["../../../../src/src/embedding/veryfront-cloud/rag-store.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAKV,QAAQ,EACR,cAAc,EACf,MAAM,aAAa,CAAC;AA4ErB,KAAK,2BAA2B,GAAG,cAAc,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AA8kBtE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,2BAA2B,GAAG,QAAQ,CAuI1F"}
1
+ {"version":3,"file":"rag-store.d.ts","sourceRoot":"","sources":["../../../../src/src/embedding/veryfront-cloud/rag-store.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAKV,QAAQ,EACR,cAAc,EACf,MAAM,aAAa,CAAC;AA4ErB,KAAK,2BAA2B,GAAG,cAAc,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAklBtE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,2BAA2B,GAAG,QAAQ,CAuI1F"}
@@ -52,12 +52,15 @@ function normalizeEmbeddingModelDescriptor(model, dimension) {
52
52
  dimension,
53
53
  };
54
54
  }
55
+ function normalizeExtension(type) {
56
+ return type?.trim().toLowerCase().replace(/[^a-z0-9]+/g, "");
57
+ }
55
58
  function buildDocumentFilePath(documentId, type) {
56
- const extension = type?.trim().toLowerCase().replace(/[^a-z0-9]+/g, "");
59
+ const extension = normalizeExtension(type);
57
60
  return `${DOCUMENTS_DIR}/${documentId}.${extension || "txt"}`;
58
61
  }
59
62
  function buildRefreshDocumentFilePath(documentId, type) {
60
- const extension = type?.trim().toLowerCase().replace(/[^a-z0-9]+/g, "");
63
+ const extension = normalizeExtension(type);
61
64
  return `${DOCUMENTS_DIR}/${documentId}.refresh-${dntShim.crypto.randomUUID()}.${extension || "txt"}`;
62
65
  }
63
66
  function isRecord(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../../../src/src/html/hydration-script-builder/templates/router.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,cA4sC3B,CAAC"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../../../src/src/html/hydration-script-builder/templates/router.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,cAstC3B,CAAC"}
@@ -622,6 +622,16 @@ export const getRouterScript = () => `
622
622
 
623
623
  if (signal.aborted) return;
624
624
 
625
+ // getServerData redirect(): the page-data endpoint encodes it as a 200
626
+ // { redirect: { destination } } payload. Follow it with a document
627
+ // navigation to the target (the same net effect as the full-page 302),
628
+ // instead of trying to render a page that does not exist here.
629
+ if (pageData && pageData.redirect && typeof pageData.redirect.destination === 'string') {
630
+ log('SPA navigation redirect -> ' + pageData.redirect.destination);
631
+ window.location.href = pageData.redirect.destination;
632
+ return;
633
+ }
634
+
625
635
  if (pushState) {
626
636
  window.history.pushState({ pageData, scrollY: 0 }, '', href);
627
637
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/src/html/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAO1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAgBjF,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAQR;AAaD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;CACd;AA4DD,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGrD,CAAC;AA0JF,UAAU,qBAAqB;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oBAAoB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACpD;AA+GD,wBAAsB,cAAc,CAClC,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvD,OAAO,CAAC,cAAc,CAAC,CAmEzB;AAED,wBAAsB,kBAAkB,CACtC,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvD,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAElF"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/src/html/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAO1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAgBjF,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAQR;AAaD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;CACd;AA4DD,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGrD,CAAC;AA6KF,UAAU,qBAAqB;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oBAAoB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACpD;AA+GD,wBAAsB,cAAc,CAClC,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvD,OAAO,CAAC,cAAc,CAAC,CAmEzB;AAED,wBAAsB,kBAAkB,CACtC,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvD,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAElF"}
@@ -107,19 +107,38 @@ const CDN_URL_TEMPLATES = {
107
107
  veryfrontWorkflow: (v) => `https://cdn.jsdelivr.net/npm/veryfront@${v}/esm/src/workflow/react/index.js`,
108
108
  },
109
109
  };
110
- function buildCdnImportMapFromTemplates(versions, templates, includePlatformUtilities) {
110
+ function buildCdnImportMapFromTemplates(versions, templates,
111
+ // Whether the AI/chat modules (chat/markdown/mdx/workflow) are also served
112
+ // locally instead of from the CDN. The CORE platform utilities
113
+ // (router/head/context/fonts) are ALWAYS served locally regardless of
114
+ // provider — they must share the same React context module instance as SSR,
115
+ // otherwise usePageContext() returns undefined and the browser fails to even
116
+ // resolve `veryfront/router`. CDN is for third-party deps (react) and,
117
+ // optionally, the AI modules — never the core runtime.
118
+ includeAiModulesLocally) {
111
119
  const { react, veryfront } = versions;
120
+ // React is ALWAYS served from esm.sh, regardless of the configured CDN
121
+ // provider. esm.sh is the only CDN that serves React as real ESM; unpkg and
122
+ // jsdelivr only ship UMD globals (react/umd/react.production.min.js), which
123
+ // cannot be consumed through an import map at all — the browser rejects them
124
+ // with a module-resolution/CORS error and hydration never starts. Self-hosted
125
+ // mode already does exactly this. The `provider` only governs where the
126
+ // veryfront framework modules load from.
127
+ const reactTemplates = CDN_URL_TEMPLATES["esm.sh"];
112
128
  return {
113
- react: templates.react(react),
114
- "react-dom": templates.reactDom(react),
115
- "react-dom/client": templates.reactDomClient(react),
116
- "react/jsx-runtime": templates.jsxRuntime(react),
117
- "react/jsx-dev-runtime": templates.jsxDevRuntime(react),
129
+ react: reactTemplates.react(react),
130
+ "react-dom": reactTemplates.reactDom(react),
131
+ "react-dom/client": reactTemplates.reactDomClient(react),
132
+ "react/jsx-runtime": reactTemplates.jsxRuntime(react),
133
+ "react/jsx-dev-runtime": reactTemplates.jsxDevRuntime(react),
118
134
  "veryfront/chat": templates.veryfrontChat(veryfront),
119
135
  "veryfront/markdown": templates.veryfrontMarkdown(veryfront),
120
136
  "veryfront/mdx": templates.veryfrontMdx(veryfront),
121
137
  "veryfront/workflow": templates.veryfrontWorkflow(veryfront),
122
- ...(includePlatformUtilities ? PLATFORM_UTILITIES : {}),
138
+ // Core runtime utilities always resolve locally (see comment above).
139
+ ...CORE_PLATFORM_UTILITIES,
140
+ // AI modules only override the CDN entries when requested.
141
+ ...(includeAiModulesLocally ? AI_MODULE_UTILITIES : {}),
123
142
  };
124
143
  }
125
144
  function getEsmShImportMap(versions) {
@@ -1,4 +1,4 @@
1
- import { type RetryConfig } from "./retry-handler.js";
1
+ import { type TransportRetryConfig } from "../veryfront-api-transport.js";
2
2
  import { type LookupDomainResponse, type PageInfo, type Project, type ProjectFile, type ReleaseAssetManifestApiResponse, type ReleaseAssetManifestBuildResponse, type ReleaseAssetManifestStateResponse, type ReleaseAssetUploadResponse } from "./schemas/index.js";
3
3
  export type TokenProvider = () => string;
4
4
  export interface ListFilesOptions {
@@ -63,10 +63,10 @@ export interface ProjectStyleArtifactResolution {
63
63
  }
64
64
  export declare class VeryfrontAPIOperations {
65
65
  private apiBaseUrl;
66
- private retryConfig;
67
66
  private projectId?;
68
67
  private tokenProvider;
69
- constructor(apiBaseUrl: string, tokenOrProvider: string | TokenProvider, retryConfig: RetryConfig, projectId?: string | undefined);
68
+ private transport;
69
+ constructor(apiBaseUrl: string, tokenOrProvider: string | TokenProvider, retryConfig: TransportRetryConfig, projectId?: string | undefined);
70
70
  setTokenProvider(provider: TokenProvider): void;
71
71
  getToken(): string;
72
72
  setProjectId(projectId: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../../../../src/src/platform/adapters/veryfront-api-client/operations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../../../../src/src/platform/adapters/veryfront-api-client/operations.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,oBAAoB,EAE1B,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAeL,KAAK,oBAAoB,EACzB,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,+BAA+B,EACpC,KAAK,iCAAiC,EACtC,KAAK,iCAAiC,EACtC,KAAK,0BAA0B,EAChC,MAAM,oBAAoB,CAAC;AAQ5B,MAAM,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC;AAEzC,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;IAC/B,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,SAAS,EAAE,QAAQ,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,wFAAwF;IACxF,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,yBAA0B,SAAQ,qBAAqB;IACtE,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,6BAA8B,SAAQ,yBAAyB;IAC9E,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,wBAAyB,SAAQ,yBAAyB;IACzE,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,CAAC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;IACpD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAmFD,qBAAa,sBAAsB;IAK/B,OAAO,CAAC,UAAU;IAGlB,OAAO,CAAC,SAAS,CAAC;IAPpB,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,SAAS,CAAiC;gBAGxC,UAAU,EAAE,MAAM,EAC1B,eAAe,EAAE,MAAM,GAAG,aAAa,EACvC,WAAW,EAAE,oBAAoB,EACzB,SAAS,CAAC,EAAE,MAAM,YAAA;IAY5B,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IAI/C,QAAQ,IAAI,MAAM;IAIlB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIrC,YAAY,IAAI,MAAM;IAQhB,YAAY,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;KAC5B,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAYhB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKhD,eAAe,CACnB,UAAU,EAAE,MAAM,EAClB,SAAS,SAAS,EAClB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,cAAc,CAAC;IAepB,kBAAkB,CACtB,UAAU,EAAE,MAAM,EAClB,SAAS,SAAS,EAClB,OAAO,GAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAM,GAC7C,OAAO,CAAC,WAAW,EAAE,CAAC;IAkBzB,aAAa,CACX,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,UAAU,CAAC;IA8BhB,oBAAoB,CACxB,UAAU,EAAE,MAAM,EAClB,eAAe,SAAe,EAC9B,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,cAAc,CAAC;IAwBpB,uBAAuB,CAC3B,UAAU,EAAE,MAAM,EAClB,eAAe,SAAe,EAC9B,OAAO,GAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAM,GAC7C,OAAO,CAAC,WAAW,EAAE,CAAC;IAkBzB,kBAAkB,CAChB,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,UAAU,CAAC;IA+BhB,gBAAgB,CACpB,UAAU,EAAE,MAAM,EAClB,OAAO,SAAW,EAClB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,cAAc,CAAC;IAkBpB,mBAAmB,CACvB,UAAU,EAAE,MAAM,EAClB,OAAO,SAAW,EAClB,OAAO,GAAE,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAM,GAC7C,OAAO,CAAC,WAAW,EAAE,CAAC;IAMzB,cAAc,CACZ,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,UAAU,CAAC;IA+BtB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IA2CrE,oBAAoB,CACxB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,yBAAyB,GAC/B,OAAO,CAAC,8BAA8B,CAAC;IAcpC,wBAAwB,CAC5B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,6BAA6B,GACnC,OAAO,CAAC,8BAA8B,CAAC;IA4BpC,mBAAmB,CACvB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,8BAA8B,CAAC;IAuCpC,8BAA8B,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,iCAAiC,CAAC;IAcvC,kBAAkB,CACtB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,0BAA0B,CAAC;IAuBhC,uBAAuB,CAC3B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,iCAAiC,CAAC;IAcvC,+BAA+B,CACnC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,SAAS,GAAG,QAAQ,EAC3B,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,iCAAiC,CAAC;IAcvC,uBAAuB,CAC3B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,+BAA+B,CAAC;IAU3C,OAAO,CAAC,OAAO;CAOhB"}
@@ -1,5 +1,5 @@
1
1
  import { logger as baseLogger } from "../../../utils/index.js";
2
- import { requestWithRetry } from "./retry-handler.js";
2
+ import { createCanonicalVeryfrontApiTransport, } from "../veryfront-api-transport.js";
3
3
  import { API_CLIENT_ERROR, VeryfrontError } from "./types.js";
4
4
  import { getBranchFileDetailSchema, getEnvironmentFileDetailSchema, getListBranchFilesResponseSchema, getListEnvironmentFilesResponseSchema, getListProjectsResponseSchema, getListReleaseFilesResponseSchema, getProjectSchema, getProjectWithEnvironmentsSchema, getReleaseAssetManifestBuildResponseSchema, getReleaseAssetManifestResponseSchema, getReleaseAssetManifestStateResponseSchema, getReleaseAssetUploadResponseSchema, getReleaseFileDetailSchema, getStyleArtifactResolveResponseSchema, } from "./schemas/index.js";
5
5
  import { withSpan } from "../../../observability/tracing/otlp-setup.js";
@@ -73,16 +73,16 @@ async function listAllFiles(list) {
73
73
  }
74
74
  export class VeryfrontAPIOperations {
75
75
  apiBaseUrl;
76
- retryConfig;
77
76
  projectId;
78
77
  tokenProvider;
78
+ transport;
79
79
  constructor(apiBaseUrl, tokenOrProvider, retryConfig, projectId) {
80
80
  this.apiBaseUrl = apiBaseUrl;
81
- this.retryConfig = retryConfig;
82
81
  this.projectId = projectId;
83
82
  this.tokenProvider = typeof tokenOrProvider === "string"
84
83
  ? () => tokenOrProvider
85
84
  : tokenOrProvider;
85
+ this.transport = createCanonicalVeryfrontApiTransport(apiBaseUrl, () => this.tokenProvider(), retryConfig);
86
86
  }
87
87
  setTokenProvider(provider) {
88
88
  this.tokenProvider = provider;
@@ -414,6 +414,6 @@ export class VeryfrontAPIOperations {
414
414
  return getReleaseAssetManifestResponseSchema().parse(raw);
415
415
  }
416
416
  request(endpoint, options = {}) {
417
- return withSpan(SpanNames.API_REQUEST, () => requestWithRetry(`${this.apiBaseUrl}${endpoint}`, this.tokenProvider(), this.retryConfig, options), { "api.endpoint": endpoint, "api.base_url": this.apiBaseUrl });
417
+ return withSpan(SpanNames.API_REQUEST, () => this.transport.request(`${this.apiBaseUrl}${endpoint}`, options), { "api.endpoint": endpoint, "api.base_url": this.apiBaseUrl });
418
418
  }
419
419
  }
@@ -1,17 +1,6 @@
1
- export interface RetryConfig {
2
- maxRetries: number;
3
- initialDelay: number;
4
- maxDelay: number;
5
- }
6
- export interface RequestOptions {
7
- returnText?: boolean;
8
- /** Request timeout in milliseconds. Defaults to 30000ms (30 seconds). */
9
- timeoutMs?: number;
10
- method?: string;
11
- body?: BodyInit | null;
12
- headers?: HeadersInit;
13
- /** Demote an expected 404 miss to debug while preserving thrown error semantics. */
14
- expected404?: boolean;
15
- }
1
+ import { type TransportRequestInit, type TransportRetryConfig } from "../veryfront-api-transport.js";
2
+ export type RetryConfig = TransportRetryConfig;
3
+ export type RequestOptions = TransportRequestInit;
4
+ /** Backward-compat alias; prefer holding a transport instance directly. */
16
5
  export declare function requestWithRetry(url: string, apiToken: string, retryConfig: RetryConfig, options?: RequestOptions): Promise<unknown>;
17
6
  //# sourceMappingURL=retry-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"retry-handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/platform/adapters/veryfront-api-client/retry-handler.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,oFAAoF;IACpF,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAaD,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,WAAW,EACxB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,OAAO,CAAC,CA8GlB"}
1
+ {"version":3,"file":"retry-handler.d.ts","sourceRoot":"","sources":["../../../../../src/src/platform/adapters/veryfront-api-client/retry-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAC1B,MAAM,+BAA+B,CAAC;AAEvC,MAAM,MAAM,WAAW,GAAG,oBAAoB,CAAC;AAC/C,MAAM,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAElD,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,WAAW,EACxB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,OAAO,CAAC,CAIlB"}
@@ -1,111 +1,7 @@
1
- import { logger } from "../../../utils/index.js";
2
- import { retryWithBackoff } from "../../../errors/error-handlers.js";
3
- import { injectContext, withSpan } from "../../../observability/tracing/otlp-setup.js";
4
- import { SpanNames } from "../../../observability/tracing/span-names.js";
5
- import { recordApiRequest, recordApiRetry, } from "../../../observability/simple-metrics/metrics-recorder.js";
6
- import { API_CLIENT_ERROR, VeryfrontError } from "./types.js";
7
- const apiLog = logger.component("api");
8
- const veryfrontApiClientLog = logger.component("veryfront-api-client");
9
- /** Default timeout for API requests (30 seconds) */
10
- const DEFAULT_REQUEST_TIMEOUT_MS = 30_000;
11
- function logTimedOut(url, timeoutMs, attempt) {
12
- veryfrontApiClientLog.warn("Request timed out", {
13
- url: url.replace(/token=[^&]+/, "token=***"),
14
- timeoutMs,
15
- attempt: attempt + 1,
16
- });
17
- }
18
- export async function requestWithRetry(url, apiToken, retryConfig, options = {}) {
19
- const urlObj = new URL(url);
20
- const urlPath = urlObj.pathname;
21
- const { maxRetries, initialDelay, maxDelay } = retryConfig;
22
- const timeoutMs = options.timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;
23
- // Note: We only trace the individual fetch attempts (HTTP_CLIENT_FETCH),
24
- // not the outer retry wrapper, to reduce span nesting and trace size.
25
- const result = await retryWithBackoff((signal, attempt) => {
26
- return withSpan(SpanNames.HTTP_CLIENT_FETCH, async () => {
27
- const startTime = performance.now();
28
- const headers = new Headers(options.headers);
29
- headers.set("Authorization", `Bearer ${apiToken}`);
30
- if (!headers.has("Content-Type")) {
31
- headers.set("Content-Type", "application/json");
32
- }
33
- injectContext(headers);
34
- const response = await fetch(url, {
35
- method: options.method ?? "GET",
36
- headers,
37
- body: options.body,
38
- signal,
39
- });
40
- const duration = performance.now() - startTime;
41
- recordApiRequest(response.status);
42
- apiLog.debug("Request completed", {
43
- path: urlPath,
44
- status: response.status,
45
- durationMs: Math.round(duration),
46
- });
47
- if (!response.ok) {
48
- const text = await response.text();
49
- // Optional probes (for example stylesheet candidates) may expect a 404.
50
- // Keep only explicit opt-ins below warn while preserving thrown error semantics.
51
- const isExpected404 = options.expected404 === true && response.status === 404;
52
- // 4xx = client errors (expected, e.g. 404 for missing deno.json) → warn
53
- // 5xx = server errors (unexpected) → error
54
- const logLevel = isExpected404 ? "debug" : response.status >= 500 ? "error" : "warn";
55
- veryfrontApiClientLog[logLevel]("Request failed", {
56
- url: url.replace(/token=[^&]+/, "token=***"),
57
- status: response.status,
58
- statusText: response.statusText,
59
- responseText: text.slice(0, 500),
60
- });
61
- throw API_CLIENT_ERROR.create({
62
- detail: `API request failed: ${response.status} ${response.statusText}`,
63
- status: response.status,
64
- context: { details: { url, responseText: text } },
65
- });
66
- }
67
- const data = options.returnText ? await response.text() : await response.json();
68
- return { data, status: response.status, duration };
69
- }, {
70
- "http.method": options.method ?? "GET",
71
- "http.url": url,
72
- "http.target": urlPath,
73
- "http.host": urlObj.host,
74
- "http.scheme": urlObj.protocol.replace(":", ""),
75
- "http.retry_attempt": attempt,
76
- });
77
- }, {
78
- maxAttempts: maxRetries + 1,
79
- initialDelay,
80
- maxDelay,
81
- timeoutMs,
82
- shouldRetry: (error) => {
83
- if (!(error instanceof VeryfrontError) || error.slug !== "api-client-error")
84
- return true;
85
- const status = error.status;
86
- return !status || status < 400 || status >= 500 || status === 429;
87
- },
88
- onRetry: ({ error, attempt, delay, isTimeout }) => {
89
- if (isTimeout)
90
- logTimedOut(url, timeoutMs, attempt);
91
- recordApiRetry();
92
- veryfrontApiClientLog.warn("Request failed, retrying...", {
93
- attempt: attempt + 1,
94
- maxRetries,
95
- delay,
96
- error: error.message,
97
- timeout: isTimeout,
98
- });
99
- },
100
- wrapFinalError: (lastError, lastAttempt) => {
101
- if (lastError.name === "AbortError")
102
- logTimedOut(url, timeoutMs, lastAttempt);
103
- return API_CLIENT_ERROR.create({
104
- detail: `API request failed after ${maxRetries} retries: ${lastError.message}`,
105
- cause: lastError,
106
- context: { details: { originalError: lastError } },
107
- });
108
- },
109
- });
110
- return result.data;
1
+ import { createCanonicalVeryfrontApiTransport, } from "../veryfront-api-transport.js";
2
+ /** Backward-compat alias; prefer holding a transport instance directly. */
3
+ export function requestWithRetry(url, apiToken, retryConfig, options = {}) {
4
+ const { origin } = new URL(url);
5
+ return createCanonicalVeryfrontApiTransport(origin, () => apiToken, retryConfig)
6
+ .request(url, options);
111
7
  }