@superblocksteam/vite-plugin-file-sync 2.0.59-next.0 → 2.0.59-next.10
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.
- package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -1
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js +25 -9
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
- package/dist/ai-service/agent/subagents/apis/examples.d.ts.map +1 -1
- package/dist/ai-service/agent/subagents/apis/examples.js +137 -10
- package/dist/ai-service/agent/subagents/apis/examples.js.map +1 -1
- package/dist/ai-service/agent/subagents/apis/static-analysis.d.ts.map +1 -1
- package/dist/ai-service/agent/subagents/apis/static-analysis.js +14 -7
- package/dist/ai-service/agent/subagents/apis/static-analysis.js.map +1 -1
- package/dist/ai-service/agent/tool-message-utils.d.ts.map +1 -1
- package/dist/ai-service/agent/tool-message-utils.js +6 -2
- package/dist/ai-service/agent/tool-message-utils.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/analysis.d.ts +9 -0
- package/dist/ai-service/agent/tools/apis/analysis.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/analysis.js +358 -0
- package/dist/ai-service/agent/tools/apis/analysis.js.map +1 -0
- package/dist/ai-service/agent/{subagents → tools}/apis/api-executor.d.ts +35 -10
- package/dist/ai-service/agent/tools/apis/api-executor.d.ts.map +1 -0
- package/dist/ai-service/agent/{subagents → tools}/apis/api-executor.js +179 -94
- package/dist/ai-service/agent/tools/apis/api-executor.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/api-source.d.ts +19 -0
- package/dist/ai-service/agent/tools/apis/api-source.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/api-source.js +73 -0
- package/dist/ai-service/agent/tools/apis/api-source.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.d.ts +51 -0
- package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js +510 -0
- package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/build-api-artifact.d.ts +32 -0
- package/dist/ai-service/agent/tools/apis/build-api-artifact.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/build-api-artifact.js +313 -0
- package/dist/ai-service/agent/tools/apis/build-api-artifact.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/build-api.d.ts +1 -10
- package/dist/ai-service/agent/tools/apis/build-api.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/build-api.js +26 -238
- package/dist/ai-service/agent/tools/apis/build-api.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/get-api-docs.d.ts +11 -0
- package/dist/ai-service/agent/tools/apis/get-api-docs.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/get-api-docs.js +1841 -0
- package/dist/ai-service/agent/tools/apis/get-api-docs.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/integration-types.d.ts +37 -0
- package/dist/ai-service/agent/tools/apis/integration-types.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/integration-types.js +689 -0
- package/dist/ai-service/agent/tools/apis/integration-types.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/test-api.d.ts +25 -0
- package/dist/ai-service/agent/tools/apis/test-api.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/test-api.js +194 -0
- package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/write-api.d.ts +11 -0
- package/dist/ai-service/agent/tools/apis/write-api.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/write-api.js +41 -0
- package/dist/ai-service/agent/tools/apis/write-api.js.map +1 -0
- package/dist/ai-service/agent/tools/build-read-files.js +2 -2
- package/dist/ai-service/agent/tools/build-read-files.js.map +1 -1
- package/dist/ai-service/agent/tools.d.ts +2 -5
- package/dist/ai-service/agent/tools.d.ts.map +1 -1
- package/dist/ai-service/agent/tools.js +51 -22
- package/dist/ai-service/agent/tools.js.map +1 -1
- package/dist/ai-service/agent/tools2/access-control.d.ts +1 -0
- package/dist/ai-service/agent/tools2/access-control.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/access-control.js +15 -13
- package/dist/ai-service/agent/tools2/access-control.js.map +1 -1
- package/dist/ai-service/agent/tools2/registry.d.ts +2 -1
- package/dist/ai-service/agent/tools2/registry.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/registry.js +4 -3
- package/dist/ai-service/agent/tools2/registry.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +73 -127
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/grep-metadata.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/grep-metadata.js +25 -4
- package/dist/ai-service/agent/tools2/tools/grep-metadata.js.map +1 -1
- package/dist/ai-service/agent/tools2/types.d.ts +1 -1
- package/dist/ai-service/agent/tools2/types.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/types.js.map +1 -1
- package/dist/ai-service/agent/tools2/utils.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/utils.js +4 -1
- package/dist/ai-service/agent/tools2/utils.js.map +1 -1
- package/dist/ai-service/agent/utils.d.ts +1 -3
- package/dist/ai-service/agent/utils.d.ts.map +1 -1
- package/dist/ai-service/agent/utils.js +55 -13
- package/dist/ai-service/agent/utils.js.map +1 -1
- package/dist/ai-service/app-interface/shell.d.ts +5 -0
- package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
- package/dist/ai-service/app-interface/shell.js +17 -2
- package/dist/ai-service/app-interface/shell.js.map +1 -1
- package/dist/ai-service/chat/chat-session-store.d.ts +7 -0
- package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
- package/dist/ai-service/chat/chat-session-store.js +26 -0
- package/dist/ai-service/chat/chat-session-store.js.map +1 -1
- package/dist/ai-service/const.d.ts +3 -1
- package/dist/ai-service/const.d.ts.map +1 -1
- package/dist/ai-service/const.js +3 -0
- package/dist/ai-service/const.js.map +1 -1
- package/dist/ai-service/index.d.ts +5 -1
- package/dist/ai-service/index.d.ts.map +1 -1
- package/dist/ai-service/index.js +55 -7
- package/dist/ai-service/index.js.map +1 -1
- package/dist/ai-service/integrations/metadata-storage/index.d.ts +10 -0
- package/dist/ai-service/integrations/metadata-storage/index.d.ts.map +1 -1
- package/dist/ai-service/integrations/metadata-storage/local.d.ts +4 -2
- package/dist/ai-service/integrations/metadata-storage/local.d.ts.map +1 -1
- package/dist/ai-service/integrations/metadata-storage/local.js +35 -9
- package/dist/ai-service/integrations/metadata-storage/local.js.map +1 -1
- package/dist/ai-service/integrations/store.d.ts +27 -2
- package/dist/ai-service/integrations/store.d.ts.map +1 -1
- package/dist/ai-service/integrations/store.js +129 -62
- package/dist/ai-service/integrations/store.js.map +1 -1
- package/dist/ai-service/llm/client.d.ts +123 -0
- package/dist/ai-service/llm/client.d.ts.map +1 -0
- package/dist/ai-service/llm/client.js +168 -0
- package/dist/ai-service/llm/client.js.map +1 -0
- package/dist/ai-service/llm/context/context-handle.d.ts +4 -4
- package/dist/ai-service/llm/context/context-handle.d.ts.map +1 -1
- package/dist/ai-service/llm/context/context-handle.js +7 -3
- package/dist/ai-service/llm/context/context-handle.js.map +1 -1
- package/dist/ai-service/llm/context/context.d.ts +28 -0
- package/dist/ai-service/llm/context/context.d.ts.map +1 -1
- package/dist/ai-service/llm/context/context.js +119 -0
- package/dist/ai-service/llm/context/context.js.map +1 -1
- package/dist/ai-service/llm/context/manager.d.ts +22 -2
- package/dist/ai-service/llm/context/manager.d.ts.map +1 -1
- package/dist/ai-service/llm/context/manager.js +86 -13
- package/dist/ai-service/llm/context/manager.js.map +1 -1
- package/dist/ai-service/llm/context/storage/index.d.ts +1 -0
- package/dist/ai-service/llm/context/storage/index.d.ts.map +1 -1
- package/dist/ai-service/llm/context/storage/local.d.ts +1 -0
- package/dist/ai-service/llm/context/storage/local.d.ts.map +1 -1
- package/dist/ai-service/llm/context/storage/local.js +13 -1
- package/dist/ai-service/llm/context/storage/local.js.map +1 -1
- package/dist/ai-service/llm/context/utils/message-utils.d.ts.map +1 -1
- package/dist/ai-service/llm/context/utils/message-utils.js +6 -2
- package/dist/ai-service/llm/context/utils/message-utils.js.map +1 -1
- package/dist/ai-service/llm/error.d.ts +14 -4
- package/dist/ai-service/llm/error.d.ts.map +1 -1
- package/dist/ai-service/llm/error.js +49 -4
- package/dist/ai-service/llm/error.js.map +1 -1
- package/dist/ai-service/llm/interaction/adapters/vercel.d.ts +67 -0
- package/dist/ai-service/llm/interaction/adapters/vercel.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/adapters/vercel.js +111 -0
- package/dist/ai-service/llm/interaction/adapters/vercel.js.map +1 -0
- package/dist/ai-service/llm/interaction/compose.d.ts +71 -0
- package/dist/ai-service/llm/interaction/compose.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/compose.js +88 -0
- package/dist/ai-service/llm/interaction/compose.js.map +1 -0
- package/dist/ai-service/llm/interaction/index.d.ts +68 -0
- package/dist/ai-service/llm/interaction/index.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/index.js +70 -0
- package/dist/ai-service/llm/interaction/index.js.map +1 -0
- package/dist/ai-service/llm/interaction/middleware.d.ts +52 -0
- package/dist/ai-service/llm/interaction/middleware.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/middleware.js +17 -0
- package/dist/ai-service/llm/interaction/middleware.js.map +1 -0
- package/dist/ai-service/llm/interaction/middlewares/llmobs.d.ts +45 -0
- package/dist/ai-service/llm/interaction/middlewares/llmobs.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/middlewares/llmobs.js +85 -0
- package/dist/ai-service/llm/interaction/middlewares/llmobs.js.map +1 -0
- package/dist/ai-service/llm/interaction/middlewares/logging.d.ts +88 -0
- package/dist/ai-service/llm/interaction/middlewares/logging.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/middlewares/logging.js +238 -0
- package/dist/ai-service/llm/interaction/middlewares/logging.js.map +1 -0
- package/dist/ai-service/llm/interaction/middlewares/profiler.d.ts +47 -0
- package/dist/ai-service/llm/interaction/middlewares/profiler.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/middlewares/profiler.js +183 -0
- package/dist/ai-service/llm/interaction/middlewares/profiler.js.map +1 -0
- package/dist/ai-service/llm/interaction/middlewares/stream-retry.d.ts +121 -0
- package/dist/ai-service/llm/interaction/middlewares/stream-retry.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/middlewares/stream-retry.js +291 -0
- package/dist/ai-service/llm/interaction/middlewares/stream-retry.js.map +1 -0
- package/dist/ai-service/llm/interaction/provider.d.ts +173 -0
- package/dist/ai-service/llm/interaction/provider.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/provider.js +15 -0
- package/dist/ai-service/llm/interaction/provider.js.map +1 -0
- package/dist/ai-service/llm/interaction/result-utils.d.ts +43 -0
- package/dist/ai-service/llm/interaction/result-utils.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/result-utils.js +49 -0
- package/dist/ai-service/llm/interaction/result-utils.js.map +1 -0
- package/dist/ai-service/llm/interaction/stream-lifecycle.d.ts +48 -0
- package/dist/ai-service/llm/interaction/stream-lifecycle.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/stream-lifecycle.js +129 -0
- package/dist/ai-service/llm/interaction/stream-lifecycle.js.map +1 -0
- package/dist/ai-service/llm/provider.d.ts +1 -2
- package/dist/ai-service/llm/provider.d.ts.map +1 -1
- package/dist/ai-service/llm/provider.js +3 -6
- package/dist/ai-service/llm/provider.js.map +1 -1
- package/dist/ai-service/llmobs/helpers.d.ts +7 -8
- package/dist/ai-service/llmobs/helpers.d.ts.map +1 -1
- package/dist/ai-service/llmobs/helpers.js +8 -48
- package/dist/ai-service/llmobs/helpers.js.map +1 -1
- package/dist/ai-service/llmobs/middleware/stream-text.d.ts +19 -21
- package/dist/ai-service/llmobs/middleware/stream-text.d.ts.map +1 -1
- package/dist/ai-service/llmobs/middleware/stream-text.js +98 -106
- package/dist/ai-service/llmobs/middleware/stream-text.js.map +1 -1
- package/dist/ai-service/llmobs/types.d.ts +14 -1
- package/dist/ai-service/llmobs/types.d.ts.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.d.ts +75 -5
- package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.js +100 -0
- package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/agent-planning.js +4 -0
- package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.js +91 -456
- package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/runtime-reviewing.js +1 -1
- package/dist/ai-service/state-machine/handlers/runtime-reviewing.js.map +1 -1
- package/dist/ai-service/state-machine/helpers/peer.d.ts.map +1 -1
- package/dist/ai-service/state-machine/helpers/peer.js +15 -0
- package/dist/ai-service/state-machine/helpers/peer.js.map +1 -1
- package/dist/ai-service/state-machine/mocks.d.ts.map +1 -1
- package/dist/ai-service/state-machine/mocks.js +1 -0
- package/dist/ai-service/state-machine/mocks.js.map +1 -1
- package/dist/ai-service/template-renderer.js +1 -1
- package/dist/ai-service/template-renderer.js.map +1 -1
- package/dist/ai-service/types.d.ts +30 -0
- package/dist/ai-service/types.d.ts.map +1 -1
- package/dist/binding-extraction/extract-identifiers.d.ts +14 -0
- package/dist/binding-extraction/extract-identifiers.d.ts.map +1 -1
- package/dist/binding-extraction/extract-identifiers.js +46 -1
- package/dist/binding-extraction/extract-identifiers.js.map +1 -1
- package/dist/binding-extraction/js-identifiers.d.ts +14 -0
- package/dist/binding-extraction/js-identifiers.d.ts.map +1 -1
- package/dist/binding-extraction/js-identifiers.js +168 -0
- package/dist/binding-extraction/js-identifiers.js.map +1 -1
- package/dist/binding-extraction/python-identifiers.d.ts +5 -0
- package/dist/binding-extraction/python-identifiers.d.ts.map +1 -1
- package/dist/binding-extraction/python-identifiers.js +76 -7
- package/dist/binding-extraction/python-identifiers.js.map +1 -1
- package/dist/file-sync-vite-plugin.d.ts.map +1 -1
- package/dist/file-sync-vite-plugin.js +73 -3
- package/dist/file-sync-vite-plugin.js.map +1 -1
- package/dist/file-system-manager.d.ts.map +1 -1
- package/dist/file-system-manager.js +6 -4
- package/dist/file-system-manager.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lock-service/activity-tracker.d.ts +14 -2
- package/dist/lock-service/activity-tracker.d.ts.map +1 -1
- package/dist/lock-service/activity-tracker.js +43 -6
- package/dist/lock-service/activity-tracker.js.map +1 -1
- package/dist/lock-service/index.d.ts +13 -2
- package/dist/lock-service/index.d.ts.map +1 -1
- package/dist/lock-service/index.js +130 -44
- package/dist/lock-service/index.js.map +1 -1
- package/dist/parsing/jsx.d.ts.map +1 -1
- package/dist/parsing/jsx.js +78 -66
- package/dist/parsing/jsx.js.map +1 -1
- package/dist/socket-manager.js +1 -1
- package/dist/socket-manager.js.map +1 -1
- package/dist/sync-service/list-dir.d.ts.map +1 -1
- package/dist/sync-service/list-dir.js +41 -18
- package/dist/sync-service/list-dir.js.map +1 -1
- package/dist/vite-plugin-yaml-types.d.ts.map +1 -1
- package/dist/vite-plugin-yaml-types.js +2 -4
- package/dist/vite-plugin-yaml-types.js.map +1 -1
- package/package.json +7 -7
- package/dist/ai-service/agent/subagents/apis/api-executor.d.ts.map +0 -1
- package/dist/ai-service/agent/subagents/apis/api-executor.js.map +0 -1
- package/dist/ai-service/agent/subagents/apis/context.d.ts +0 -12
- package/dist/ai-service/agent/subagents/apis/context.d.ts.map +0 -1
- package/dist/ai-service/agent/subagents/apis/context.js +0 -18
- package/dist/ai-service/agent/subagents/apis/context.js.map +0 -1
- package/dist/ai-service/agent/subagents/apis/generate-api-source.d.ts +0 -40
- package/dist/ai-service/agent/subagents/apis/generate-api-source.d.ts.map +0 -1
- package/dist/ai-service/agent/subagents/apis/generate-api-source.js +0 -516
- package/dist/ai-service/agent/subagents/apis/generate-api-source.js.map +0 -1
- package/dist/ai-service/agent/subagents/apis/state.d.ts +0 -49
- package/dist/ai-service/agent/subagents/apis/state.d.ts.map +0 -1
- package/dist/ai-service/agent/subagents/apis/state.js +0 -25
- package/dist/ai-service/agent/subagents/apis/state.js.map +0 -1
- package/dist/ai-service/agent/subagents/apis/system-prompt.d.ts +0 -3
- package/dist/ai-service/agent/subagents/apis/system-prompt.d.ts.map +0 -1
- package/dist/ai-service/agent/subagents/apis/system-prompt.js +0 -1704
- package/dist/ai-service/agent/subagents/apis/system-prompt.js.map +0 -1
- package/dist/ai-service/agent/tools/apis/finalize-api.d.ts +0 -11
- package/dist/ai-service/agent/tools/apis/finalize-api.d.ts.map +0 -1
- package/dist/ai-service/agent/tools/apis/finalize-api.js +0 -133
- package/dist/ai-service/agent/tools/apis/finalize-api.js.map +0 -1
- package/dist/ai-service/llm/middleware/retry.d.ts +0 -112
- package/dist/ai-service/llm/middleware/retry.d.ts.map +0 -1
- package/dist/ai-service/llm/middleware/retry.js +0 -239
- package/dist/ai-service/llm/middleware/retry.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../../../../src/ai-service/agent/subagents/apis/system-prompt.ts"],"names":[],"mappings":"AAAA,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwpDpB,CAAC;AAEF,oEAAoE;AACpE,oBAAoB;AACpB,mBAAmB;AACnB,gDAAgD;AAChD,iBAAiB;AACjB,oBAAoB;AACpB,gBAAgB;AAChB,oCAAoC;AACpC,qCAAqC;AACrC,yBAAyB;AACzB,SAAS;AACT,OAAO;AACP,IAAI;AAEJ,eAAe,YAAY,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export declare const finalizeApiToolFactory: import("../../tools2/types.js").ToolFactory<import("../../tools2/types.js").Tool<{
|
|
2
|
-
apiName: string;
|
|
3
|
-
summary: string;
|
|
4
|
-
responseInterface: string;
|
|
5
|
-
inputInterface: string;
|
|
6
|
-
givingUpDueToFatalError?: boolean | undefined;
|
|
7
|
-
}, {
|
|
8
|
-
message: string;
|
|
9
|
-
apiName: string;
|
|
10
|
-
}>>;
|
|
11
|
-
//# sourceMappingURL=finalize-api.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"finalize-api.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools/apis/finalize-api.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,sBAAsB;;;;;;;;;GAqLlC,CAAC"}
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
import { ApiGenerationContext } from "../../subagents/apis/context.js";
|
|
4
|
-
import { createToolFactory, ToolCategory } from "../../tools2/types.js";
|
|
5
|
-
export const finalizeApiToolFactory = createToolFactory("finalizeApi", (clark, services, scopeUpdateQueue) => {
|
|
6
|
-
return {
|
|
7
|
-
category: ToolCategory.API,
|
|
8
|
-
description: `Finalize. Create a summary of the work completed.
|
|
9
|
-
|
|
10
|
-
IMPORTANT: You must supply ACCURATE TypeScript interfaces for the response and input of the API based on the API source code you wrote.`,
|
|
11
|
-
inputSchema: z.object({
|
|
12
|
-
responseInterface: z
|
|
13
|
-
.string()
|
|
14
|
-
.describe("A TypeScript interface describing the expected response from the API"),
|
|
15
|
-
inputInterface: z
|
|
16
|
-
.string()
|
|
17
|
-
.describe("A TypeScript interface describing the expected input to the API"),
|
|
18
|
-
summary: z.string().describe("A summary of the API"),
|
|
19
|
-
apiName: z.string().describe("The name of the API"),
|
|
20
|
-
givingUpDueToFatalError: z
|
|
21
|
-
.boolean()
|
|
22
|
-
.optional()
|
|
23
|
-
.describe("Whether you are giving up due to a fatal error"),
|
|
24
|
-
}),
|
|
25
|
-
execute: async ({ responseInterface, inputInterface, summary, apiName, givingUpDueToFatalError, }, options) => {
|
|
26
|
-
const context = ApiGenerationContext.from(options?.experimental_context);
|
|
27
|
-
let id = apiName;
|
|
28
|
-
if (context && context.id) {
|
|
29
|
-
id = context.id;
|
|
30
|
-
}
|
|
31
|
-
const apiGenStateMap = clark.context.apiGenStateMap;
|
|
32
|
-
if (!apiGenStateMap) {
|
|
33
|
-
throw new Error("API generation state map is not initialized. This is an internal error.");
|
|
34
|
-
}
|
|
35
|
-
const state = apiGenStateMap.get(id);
|
|
36
|
-
if (!state) {
|
|
37
|
-
throw new Error(`No API generation state found for ${apiName}. This is an internal error.`);
|
|
38
|
-
}
|
|
39
|
-
if (state.status !== "built") {
|
|
40
|
-
throw new Error(`Cannot finalize API in status "${state.status}". The API must be successfully built first using the buildApi tool. Expected status: "built", current status: "${state.status}".`);
|
|
41
|
-
}
|
|
42
|
-
if (givingUpDueToFatalError) {
|
|
43
|
-
const error = new Error(`Unable to complete API generation. ${summary}`);
|
|
44
|
-
apiGenStateMap.set(id, {
|
|
45
|
-
...state,
|
|
46
|
-
status: "failed",
|
|
47
|
-
error,
|
|
48
|
-
errorContext: {
|
|
49
|
-
phase: "finalizing",
|
|
50
|
-
userPrompt: summary,
|
|
51
|
-
suggestion: "Review the error details and consider alternative approaches",
|
|
52
|
-
},
|
|
53
|
-
});
|
|
54
|
-
throw error;
|
|
55
|
-
}
|
|
56
|
-
const { apiYaml, isNewApi } = state;
|
|
57
|
-
try {
|
|
58
|
-
// Write API YAML file
|
|
59
|
-
if (state.isNewApi) {
|
|
60
|
-
await scopeUpdateQueue.enqueue(async () => {
|
|
61
|
-
await services.draftInterface.createDraftFile(apiYaml.filePath, apiYaml.content);
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
await services.draftInterface.createDraftFile(apiYaml.filePath, apiYaml.content);
|
|
66
|
-
}
|
|
67
|
-
const typesContent = `// Auto-generated by Clark
|
|
68
|
-
// Contains input/output type definitions for ${apiName}
|
|
69
|
-
|
|
70
|
-
${inputInterface}
|
|
71
|
-
|
|
72
|
-
${responseInterface}
|
|
73
|
-
`;
|
|
74
|
-
const apiDir = path.dirname(apiYaml.filePath);
|
|
75
|
-
const typesFilePath = path.join(apiDir, "types.d.ts");
|
|
76
|
-
if (state.isNewApi) {
|
|
77
|
-
await scopeUpdateQueue.enqueue(async () => {
|
|
78
|
-
await services.draftInterface.createDraftFile(typesFilePath, typesContent);
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
await services.draftInterface.createDraftFile(typesFilePath, typesContent);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
catch (error) {
|
|
86
|
-
apiGenStateMap.set(id, {
|
|
87
|
-
...state,
|
|
88
|
-
status: "failed",
|
|
89
|
-
error,
|
|
90
|
-
errorContext: {
|
|
91
|
-
phase: "finalizing",
|
|
92
|
-
suggestion: "There may be an issue with file system permissions or the page configuration",
|
|
93
|
-
},
|
|
94
|
-
});
|
|
95
|
-
throw error;
|
|
96
|
-
}
|
|
97
|
-
let message = `${summary}
|
|
98
|
-
|
|
99
|
-
The API response corresponds to the following TypeScript interface:
|
|
100
|
-
|
|
101
|
-
\`\`\`typescript
|
|
102
|
-
${responseInterface}
|
|
103
|
-
\`\`\`
|
|
104
|
-
|
|
105
|
-
The API input corresponds to the following TypeScript interface:
|
|
106
|
-
|
|
107
|
-
\`\`\`typescript
|
|
108
|
-
${inputInterface}
|
|
109
|
-
\`\`\`
|
|
110
|
-
`;
|
|
111
|
-
if (isNewApi) {
|
|
112
|
-
message = `${message}
|
|
113
|
-
|
|
114
|
-
The ${apiName} scope was updated to include the ${apiName} entity.
|
|
115
|
-
`;
|
|
116
|
-
}
|
|
117
|
-
apiGenStateMap.set(id, {
|
|
118
|
-
...state,
|
|
119
|
-
status: "finalized",
|
|
120
|
-
interface: {
|
|
121
|
-
input: inputInterface,
|
|
122
|
-
output: responseInterface,
|
|
123
|
-
},
|
|
124
|
-
message,
|
|
125
|
-
});
|
|
126
|
-
return {
|
|
127
|
-
message,
|
|
128
|
-
apiName,
|
|
129
|
-
};
|
|
130
|
-
},
|
|
131
|
-
};
|
|
132
|
-
});
|
|
133
|
-
//# sourceMappingURL=finalize-api.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"finalize-api.js","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools/apis/finalize-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Retry middleware for AI SDK language models.
|
|
3
|
-
*
|
|
4
|
-
* Provides automatic retry functionality for streaming operations that fail
|
|
5
|
-
* due to transient network errors (e.g., timeouts). This middleware operates
|
|
6
|
-
* at the LanguageModelV2 level, retrying doStream() calls with exponential
|
|
7
|
-
* backoff.
|
|
8
|
-
*
|
|
9
|
-
* **Two-phase retry architecture:**
|
|
10
|
-
* 1. **Initial call retry**: Retries HTTP-level errors when calling doStream() to get metadata
|
|
11
|
-
* 2. **Stream consumption retry**: Retries mid-stream errors during stream consumption
|
|
12
|
-
*
|
|
13
|
-
* **Separate retry budgets:**
|
|
14
|
-
* Each phase has its own independent retry budget. For example, with maxRetries: 3:
|
|
15
|
-
* - Phase 1 can retry up to 3 times (4 total attempts to get initial metadata)
|
|
16
|
-
* - Phase 2 can retry up to 3 times (4 total attempts to consume stream)
|
|
17
|
-
* - Maximum total attempts: 4 (phase 1) + 4 (phase 2) = 8
|
|
18
|
-
*
|
|
19
|
-
* This design ensures that failures in one phase don't prevent retries in the other phase.
|
|
20
|
-
*
|
|
21
|
-
* Handles two error types:
|
|
22
|
-
* 1. HTTP-level errors: doStream() throws an exception (retried in phase 1)
|
|
23
|
-
* 2. Stream-level errors: error chunks in the stream or connection drops (retried in phase 2)
|
|
24
|
-
*
|
|
25
|
-
* **Default retry strategy: Permissive**
|
|
26
|
-
* - Retries all errors except known permanent failures (auth, permission, invalid request)
|
|
27
|
-
* - Handles rate limits, server overload, timeouts, network issues
|
|
28
|
-
* - Future-proof: retries unknown error types
|
|
29
|
-
*
|
|
30
|
-
* By default, retries are unlimited but can be constrained by maxRetries and/or
|
|
31
|
-
* maxTotalRetryTimeMs options.
|
|
32
|
-
*/
|
|
33
|
-
import { type Logger } from "../../../util/logger.js";
|
|
34
|
-
import { type BackoffStrategy } from "../../util/backoff-strategy.js";
|
|
35
|
-
import type { LanguageModelV2Middleware } from "@ai-sdk/provider";
|
|
36
|
-
import type { LLMProviderConfig } from "@superblocksteam/library-shared/types";
|
|
37
|
-
export interface RetryOptions {
|
|
38
|
-
/**
|
|
39
|
-
* Maximum number of retry attempts (not including the initial attempt).
|
|
40
|
-
* Default: unlimited
|
|
41
|
-
*/
|
|
42
|
-
maxRetries?: number;
|
|
43
|
-
/**
|
|
44
|
-
* Custom backoff strategy for calculating retry delays.
|
|
45
|
-
* If not provided, uses ExponentialBackoff with initialDelayMs, maxDelayMs, and backoffMultiplier.
|
|
46
|
-
*/
|
|
47
|
-
backoffStrategy?: BackoffStrategy;
|
|
48
|
-
/**
|
|
49
|
-
* Initial delay in milliseconds before the first retry.
|
|
50
|
-
* Subsequent retries use exponential backoff.
|
|
51
|
-
* Only used if backoffStrategy is not provided.
|
|
52
|
-
* Default: 500 (0.5 seconds)
|
|
53
|
-
*/
|
|
54
|
-
initialDelayMs?: number;
|
|
55
|
-
/**
|
|
56
|
-
* Maximum delay in milliseconds for exponential backoff.
|
|
57
|
-
* Only used if backoffStrategy is not provided.
|
|
58
|
-
* Default: 5000 (5 seconds)
|
|
59
|
-
*/
|
|
60
|
-
maxDelayMs?: number;
|
|
61
|
-
/**
|
|
62
|
-
* Backoff multiplier for exponential backoff.
|
|
63
|
-
* Only used if backoffStrategy is not provided.
|
|
64
|
-
* Default: 2
|
|
65
|
-
*/
|
|
66
|
-
backoffMultiplier?: number;
|
|
67
|
-
/**
|
|
68
|
-
* Maximum total time in milliseconds for all retry attempts.
|
|
69
|
-
* If retries exceed this total time, no more retries will be attempted.
|
|
70
|
-
* Default: undefined (no time limit)
|
|
71
|
-
*/
|
|
72
|
-
maxTotalRetryTimeMs?: number;
|
|
73
|
-
/**
|
|
74
|
-
* Function to determine if an error is retryable.
|
|
75
|
-
* Default: checks for timeout and connection errors
|
|
76
|
-
*/
|
|
77
|
-
isRetryable?: (error: unknown) => boolean;
|
|
78
|
-
/**
|
|
79
|
-
* Callback invoked before each retry attempt.
|
|
80
|
-
*/
|
|
81
|
-
onRetry?: (error: unknown, attempt: number, delayMs: number, totalRetryTimeMs: number) => void | Promise<void>;
|
|
82
|
-
/**
|
|
83
|
-
* Optional abort signal to cancel retry attempts.
|
|
84
|
-
* When the signal is aborted, no further retries will be attempted.
|
|
85
|
-
*/
|
|
86
|
-
abortSignal?: AbortSignal;
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Creates retry middleware for LanguageModelV2.
|
|
90
|
-
*
|
|
91
|
-
* This middleware wraps the doStream function and automatically retries
|
|
92
|
-
* both HTTP-level errors (thrown exceptions) and stream-level errors
|
|
93
|
-
* (error chunks in the stream). Retries use exponential backoff and
|
|
94
|
-
* respect configured limits.
|
|
95
|
-
*
|
|
96
|
-
* @example
|
|
97
|
-
* ```typescript
|
|
98
|
-
* // Unlimited retries with 2-minute time limit
|
|
99
|
-
* const middleware = retryMiddleware("bedrock", { maxTotalRetryTimeMs: 120000 });
|
|
100
|
-
*
|
|
101
|
-
* // Limit to 3 retries
|
|
102
|
-
* const middleware = retryMiddleware("bedrock", { maxRetries: 3 });
|
|
103
|
-
*
|
|
104
|
-
* // Apply to model
|
|
105
|
-
* const model = wrapLanguageModel({
|
|
106
|
-
* model: baseModel,
|
|
107
|
-
* middleware: [middleware]
|
|
108
|
-
* });
|
|
109
|
-
* ```
|
|
110
|
-
*/
|
|
111
|
-
export declare function retryMiddleware(provider: LLMProviderConfig["provider"], options?: RetryOptions, logger?: Logger): LanguageModelV2Middleware;
|
|
112
|
-
//# sourceMappingURL=retry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/llm/middleware/retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,EAAE,KAAK,MAAM,EAA2B,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,gCAAgC,CAAC;AAGxC,OAAO,KAAK,EACV,yBAAyB,EAE1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAE/E,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAElC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IAE1C;;OAEG;IACH,OAAO,CAAC,EAAE,CACR,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,gBAAgB,EAAE,MAAM,KACrB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1B;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,EACvC,OAAO,GAAE,YAAiB,EAC1B,MAAM,GAAE,MAAoB,GAC3B,yBAAyB,CAsJ3B"}
|
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Retry middleware for AI SDK language models.
|
|
3
|
-
*
|
|
4
|
-
* Provides automatic retry functionality for streaming operations that fail
|
|
5
|
-
* due to transient network errors (e.g., timeouts). This middleware operates
|
|
6
|
-
* at the LanguageModelV2 level, retrying doStream() calls with exponential
|
|
7
|
-
* backoff.
|
|
8
|
-
*
|
|
9
|
-
* **Two-phase retry architecture:**
|
|
10
|
-
* 1. **Initial call retry**: Retries HTTP-level errors when calling doStream() to get metadata
|
|
11
|
-
* 2. **Stream consumption retry**: Retries mid-stream errors during stream consumption
|
|
12
|
-
*
|
|
13
|
-
* **Separate retry budgets:**
|
|
14
|
-
* Each phase has its own independent retry budget. For example, with maxRetries: 3:
|
|
15
|
-
* - Phase 1 can retry up to 3 times (4 total attempts to get initial metadata)
|
|
16
|
-
* - Phase 2 can retry up to 3 times (4 total attempts to consume stream)
|
|
17
|
-
* - Maximum total attempts: 4 (phase 1) + 4 (phase 2) = 8
|
|
18
|
-
*
|
|
19
|
-
* This design ensures that failures in one phase don't prevent retries in the other phase.
|
|
20
|
-
*
|
|
21
|
-
* Handles two error types:
|
|
22
|
-
* 1. HTTP-level errors: doStream() throws an exception (retried in phase 1)
|
|
23
|
-
* 2. Stream-level errors: error chunks in the stream or connection drops (retried in phase 2)
|
|
24
|
-
*
|
|
25
|
-
* **Default retry strategy: Permissive**
|
|
26
|
-
* - Retries all errors except known permanent failures (auth, permission, invalid request)
|
|
27
|
-
* - Handles rate limits, server overload, timeouts, network issues
|
|
28
|
-
* - Future-proof: retries unknown error types
|
|
29
|
-
*
|
|
30
|
-
* By default, retries are unlimited but can be constrained by maxRetries and/or
|
|
31
|
-
* maxTotalRetryTimeMs options.
|
|
32
|
-
*/
|
|
33
|
-
import { getErrorMeta, getLogger } from "../../../util/logger.js";
|
|
34
|
-
import { ExponentialBackoff, } from "../../util/backoff-strategy.js";
|
|
35
|
-
import { LLMProviderError } from "../error.js";
|
|
36
|
-
import { isProviderErrorRetryable } from "../util/provider-errors.js";
|
|
37
|
-
/**
|
|
38
|
-
* Creates retry middleware for LanguageModelV2.
|
|
39
|
-
*
|
|
40
|
-
* This middleware wraps the doStream function and automatically retries
|
|
41
|
-
* both HTTP-level errors (thrown exceptions) and stream-level errors
|
|
42
|
-
* (error chunks in the stream). Retries use exponential backoff and
|
|
43
|
-
* respect configured limits.
|
|
44
|
-
*
|
|
45
|
-
* @example
|
|
46
|
-
* ```typescript
|
|
47
|
-
* // Unlimited retries with 2-minute time limit
|
|
48
|
-
* const middleware = retryMiddleware("bedrock", { maxTotalRetryTimeMs: 120000 });
|
|
49
|
-
*
|
|
50
|
-
* // Limit to 3 retries
|
|
51
|
-
* const middleware = retryMiddleware("bedrock", { maxRetries: 3 });
|
|
52
|
-
*
|
|
53
|
-
* // Apply to model
|
|
54
|
-
* const model = wrapLanguageModel({
|
|
55
|
-
* model: baseModel,
|
|
56
|
-
* middleware: [middleware]
|
|
57
|
-
* });
|
|
58
|
-
* ```
|
|
59
|
-
*/
|
|
60
|
-
export function retryMiddleware(provider, options = {}, logger = getLogger()) {
|
|
61
|
-
const maxRetries = options.maxRetries ?? Infinity;
|
|
62
|
-
const isRetryable = options.isRetryable ?? isProviderErrorRetryable;
|
|
63
|
-
const maxTotalRetryTimeMs = options.maxTotalRetryTimeMs;
|
|
64
|
-
const onRetry = options.onRetry;
|
|
65
|
-
const backoffStrategy = options.backoffStrategy ??
|
|
66
|
-
new ExponentialBackoff({
|
|
67
|
-
initialDelayMs: options.initialDelayMs ?? 500,
|
|
68
|
-
maxDelayMs: options.maxDelayMs ?? 5000,
|
|
69
|
-
backoffMultiplier: options.backoffMultiplier ?? 2,
|
|
70
|
-
});
|
|
71
|
-
// Format maxRetries for display
|
|
72
|
-
const maxRetriesDisplay = maxRetries === Infinity ? "unlimited" : String(maxRetries);
|
|
73
|
-
const retryConfig = {
|
|
74
|
-
provider,
|
|
75
|
-
maxRetries,
|
|
76
|
-
maxRetriesDisplay,
|
|
77
|
-
maxTotalRetryTimeMs,
|
|
78
|
-
backoffStrategy,
|
|
79
|
-
isRetryable,
|
|
80
|
-
onRetry,
|
|
81
|
-
abortSignal: options.abortSignal,
|
|
82
|
-
logger,
|
|
83
|
-
};
|
|
84
|
-
return {
|
|
85
|
-
wrapStream: async ({ doStream }) => {
|
|
86
|
-
// First retry loop: Get initial result with metadata
|
|
87
|
-
// This retries HTTP-level errors from doStream() call
|
|
88
|
-
let attempt = 0;
|
|
89
|
-
let totalRetryTime = 0;
|
|
90
|
-
let initialResult;
|
|
91
|
-
while (true) {
|
|
92
|
-
try {
|
|
93
|
-
initialResult = await doStream();
|
|
94
|
-
break; // Success!
|
|
95
|
-
}
|
|
96
|
-
catch (err) {
|
|
97
|
-
attempt++;
|
|
98
|
-
const delay = await handleRetryAttempt(err, attempt, totalRetryTime, {
|
|
99
|
-
...retryConfig,
|
|
100
|
-
errorContext: "HTTP error",
|
|
101
|
-
});
|
|
102
|
-
totalRetryTime += delay;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
// Second retry loop: Handle stream consumption errors
|
|
106
|
-
// This retries mid-stream errors (connection drops, timeouts)
|
|
107
|
-
const retryingStream = new ReadableStream({
|
|
108
|
-
async start(controller) {
|
|
109
|
-
let consumptionAttempt = 0;
|
|
110
|
-
let consumptionRetryTime = 0;
|
|
111
|
-
let isFirstAttempt = true;
|
|
112
|
-
while (true) {
|
|
113
|
-
let reader = null;
|
|
114
|
-
let error;
|
|
115
|
-
try {
|
|
116
|
-
// First attempt: reuse initial stream
|
|
117
|
-
// Subsequent attempts: call doStream() fresh
|
|
118
|
-
const streamResult = isFirstAttempt
|
|
119
|
-
? initialResult
|
|
120
|
-
: await doStream();
|
|
121
|
-
isFirstAttempt = false;
|
|
122
|
-
reader = streamResult.stream.getReader();
|
|
123
|
-
// Read and forward chunks
|
|
124
|
-
while (true) {
|
|
125
|
-
const { value: chunk, done } = await reader.read();
|
|
126
|
-
if (done) {
|
|
127
|
-
controller.close();
|
|
128
|
-
return; // Success!
|
|
129
|
-
}
|
|
130
|
-
// Check for error chunks
|
|
131
|
-
if (chunk.type === "error") {
|
|
132
|
-
throw new LLMProviderError({
|
|
133
|
-
provider,
|
|
134
|
-
cause: chunk.error,
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
// Normal chunk - forward it
|
|
138
|
-
controller.enqueue(chunk);
|
|
139
|
-
// Reset consumption attempt on successful chunk
|
|
140
|
-
consumptionAttempt = 0;
|
|
141
|
-
consumptionRetryTime = 0;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
catch (err) {
|
|
145
|
-
// Release reader before retry
|
|
146
|
-
if (reader) {
|
|
147
|
-
try {
|
|
148
|
-
reader.releaseLock();
|
|
149
|
-
}
|
|
150
|
-
catch {
|
|
151
|
-
// Ignore errors during release
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
error =
|
|
155
|
-
err instanceof LLMProviderError
|
|
156
|
-
? err
|
|
157
|
-
: new LLMProviderError({ provider, cause: err });
|
|
158
|
-
}
|
|
159
|
-
// Handle error - check if we should retry
|
|
160
|
-
consumptionAttempt++;
|
|
161
|
-
try {
|
|
162
|
-
const delay = await handleRetryAttempt(error, consumptionAttempt, consumptionRetryTime, {
|
|
163
|
-
...retryConfig,
|
|
164
|
-
errorContext: "Stream error",
|
|
165
|
-
});
|
|
166
|
-
consumptionRetryTime += delay;
|
|
167
|
-
}
|
|
168
|
-
catch (finalError) {
|
|
169
|
-
// Exhausted or non-retryable - pass error through and close
|
|
170
|
-
controller.enqueue({
|
|
171
|
-
type: "error",
|
|
172
|
-
error: finalError,
|
|
173
|
-
});
|
|
174
|
-
controller.close();
|
|
175
|
-
return;
|
|
176
|
-
}
|
|
177
|
-
// Loop continues - will call doStream() again
|
|
178
|
-
}
|
|
179
|
-
},
|
|
180
|
-
});
|
|
181
|
-
// Return metadata from initial result with retrying stream
|
|
182
|
-
return {
|
|
183
|
-
...initialResult,
|
|
184
|
-
stream: retryingStream,
|
|
185
|
-
};
|
|
186
|
-
},
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* Checks if an error can be retried and returns appropriate error handling info.
|
|
191
|
-
*/
|
|
192
|
-
function checkRetryability(error, attempt, maxRetries, maxRetriesDisplay, totalRetryTime, maxTotalRetryTimeMs, isRetryable, logger) {
|
|
193
|
-
const withinMaxRetries = attempt <= maxRetries;
|
|
194
|
-
const withinTimeLimit = !maxTotalRetryTimeMs || totalRetryTime < maxTotalRetryTimeMs;
|
|
195
|
-
const canRetry = isRetryable(error) && withinMaxRetries && withinTimeLimit;
|
|
196
|
-
if (!canRetry) {
|
|
197
|
-
const reason = !isRetryable(error)
|
|
198
|
-
? `not retryable (type: ${error.type})`
|
|
199
|
-
: !withinMaxRetries
|
|
200
|
-
? `after ${maxRetriesDisplay} retries`
|
|
201
|
-
: `total retry time exceeded ${maxTotalRetryTimeMs}ms`;
|
|
202
|
-
const message = `Stream error ${reason}`;
|
|
203
|
-
error.message = message;
|
|
204
|
-
logger.error(message, getErrorMeta(error.cause));
|
|
205
|
-
return { canRetry: false, errorToThrow: error };
|
|
206
|
-
}
|
|
207
|
-
return { canRetry: true };
|
|
208
|
-
}
|
|
209
|
-
/**
|
|
210
|
-
* Executes retry logic for a single attempt including error wrapping, backoff, logging, and callbacks.
|
|
211
|
-
* Returns the delay in milliseconds if a retry should be attempted, or throws if no retry is possible.
|
|
212
|
-
*/
|
|
213
|
-
async function handleRetryAttempt(err, attempt, totalRetryTime, config) {
|
|
214
|
-
const error = err instanceof LLMProviderError
|
|
215
|
-
? err
|
|
216
|
-
: new LLMProviderError({ provider: config.provider, cause: err });
|
|
217
|
-
const retryCheck = checkRetryability(error, attempt, config.maxRetries, config.maxRetriesDisplay, totalRetryTime, config.maxTotalRetryTimeMs, config.isRetryable, config.logger);
|
|
218
|
-
if (!retryCheck.canRetry) {
|
|
219
|
-
throw retryCheck.errorToThrow;
|
|
220
|
-
}
|
|
221
|
-
// Check if abort signal was triggered
|
|
222
|
-
if (config.abortSignal?.aborted) {
|
|
223
|
-
const abortError = new LLMProviderError({
|
|
224
|
-
message: "Request aborted",
|
|
225
|
-
provider: config.provider,
|
|
226
|
-
aborted: true,
|
|
227
|
-
});
|
|
228
|
-
config.logger.info("Request aborted, stopping retry attempts");
|
|
229
|
-
throw abortError;
|
|
230
|
-
}
|
|
231
|
-
const delay = config.backoffStrategy.getNextDelay(attempt);
|
|
232
|
-
config.logger.warn(`${config.errorContext} (type: ${error.type}). Attempt ${attempt}/${config.maxRetriesDisplay}. Retrying in ${delay}ms...`);
|
|
233
|
-
if (config.onRetry) {
|
|
234
|
-
await config.onRetry(error, attempt, delay, totalRetryTime);
|
|
235
|
-
}
|
|
236
|
-
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
237
|
-
return delay;
|
|
238
|
-
}
|
|
239
|
-
//# sourceMappingURL=retry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../../src/ai-service/llm/middleware/retry.ts"],"names":[],"mappings":"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"}
|