@superblocksteam/vite-plugin-file-sync 2.0.59-next.1 → 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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../../../../src/ai-service/llm/context/storage/local.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../../../../src/ai-service/llm/context/storage/local.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAKlC;;;;;;;;GAQG;AACH,MAAM,OAAO,mBAAmB;IAET;IADJ,sBAAsB,GAAG,cAAc,CAAC;IACzD,YAAqB,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;IAAG,CAAC;IAExC,KAAK,CAAC,WAAW,CAAC,EAAa;QAC7B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAkB,CAAC;QAC9C,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1B,OAAO,IAAI,CAAC,CAAC,sBAAsB;YACrC,CAAC;YACD,MAAM,GAAG,CAAC,CAAC,uBAAuB;QACpC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAa,EAAE,MAAqB;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,EAAa;QAC/B,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1B,wCAAwC;gBACxC,OAAO;YACT,CAAC;YACD,MAAM,GAAG,CAAC,CAAC,uBAAuB;QACpC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,QAAgB;QAChD,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAEO,WAAW,CAAC,EAAa;QAC/B,OAAO,IAAI,CAAC,IAAI,CACd,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,sBAAsB,EAC3B,SAAS,EACT,EAAE,CAAC,MAAM,EACT,GAAG,EAAE,CAAC,IAAI,OAAO,CAClB,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-utils.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/llm/context/utils/message-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAEvC;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,OAAO,GACd,+BAA+B,CAuBjC;AAED;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,yBAAyB,QAuBnC;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"message-utils.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/llm/context/utils/message-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAEvC;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,OAAO,GACd,+BAA+B,CAuBjC;AAED;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,yBAAyB,QAuBnC;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAgBtD"}
|
|
@@ -75,10 +75,14 @@ export function isEmpty(message) {
|
|
|
75
75
|
return message.content.trim().length === 0;
|
|
76
76
|
}
|
|
77
77
|
const nonEmptyParts = message.content.filter((part) => {
|
|
78
|
-
if ("text"
|
|
78
|
+
if (part.type === "text") {
|
|
79
79
|
return part.text.trim().length > 0;
|
|
80
80
|
}
|
|
81
|
-
|
|
81
|
+
if (part.type === "reasoning") {
|
|
82
|
+
// reasoning doesn't count as content for empty check
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
// non-textual content parts are never considered empty (images, tool calls, tool results)
|
|
82
86
|
return true;
|
|
83
87
|
});
|
|
84
88
|
return nonEmptyParts.length === 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-utils.js","sourceRoot":"","sources":["../../../../../src/ai-service/llm/context/utils/message-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAKvD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAAe;IAEf,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAqC,CAAC;IAC1E,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAqC,CAAC;IAC5E,CAAC;IAED,MAAM,SAAS,GAAG,MAAiC,CAAC;IACpD,IAAI,CAAC,CAAC,MAAM,IAAI,SAAS,CAAC,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAqC,CAAC;IAC5E,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;IAChE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,SAAS,EAAE,CAAC,IAAI,CACd,8CAA8C,SAAS,CAAC,IAAI,6BAA6B,CAC1F,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAqC,CAAC;IAC5E,CAAC;IAED,OAAO,MAAyC,CAAC;AACnD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,6BAA6B,CAC3C,OAAkC;IAElC,IAAI,OAAO,OAAO,CAAC,OAAO,IAAI,QAAQ,EAAE,CAAC;QACvC,OAAO,CAAC,OAAO,GAAG;YAChB;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,OAAO,CAAC,OAAO;aACtB;SACF,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAC5C,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CACpC,CAAC;IACF,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CACxC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CACpC,CAAC;IAEF,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,CAAC,OAAO,GAAG,CAAC,GAAG,eAAe,EAAE,GAAG,WAAW,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CAAC,OAAqB;IAC3C,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACpD,IAAI,
|
|
1
|
+
{"version":3,"file":"message-utils.js","sourceRoot":"","sources":["../../../../../src/ai-service/llm/context/utils/message-utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAKvD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAAe;IAEf,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAqC,CAAC;IAC1E,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAqC,CAAC;IAC5E,CAAC;IAED,MAAM,SAAS,GAAG,MAAiC,CAAC;IACpD,IAAI,CAAC,CAAC,MAAM,IAAI,SAAS,CAAC,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACjE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAqC,CAAC;IAC5E,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;IAChE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,SAAS,EAAE,CAAC,IAAI,CACd,8CAA8C,SAAS,CAAC,IAAI,6BAA6B,CAC1F,CAAC;QACF,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAqC,CAAC;IAC5E,CAAC;IAED,OAAO,MAAyC,CAAC;AACnD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,6BAA6B,CAC3C,OAAkC;IAElC,IAAI,OAAO,OAAO,CAAC,OAAO,IAAI,QAAQ,EAAE,CAAC;QACvC,OAAO,CAAC,OAAO,GAAG;YAChB;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,OAAO,CAAC,OAAO;aACtB;SACF,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAC5C,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CACpC,CAAC;IACF,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CACxC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CACpC,CAAC;IAEF,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,CAAC,OAAO,GAAG,CAAC,GAAG,eAAe,EAAE,GAAG,WAAW,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CAAC,OAAqB;IAC3C,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACpD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC9B,qDAAqD;YACrD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,0FAA0F;QAC1F,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,OAAO,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -13,29 +13,39 @@ export type BedrockErrorData = {
|
|
|
13
13
|
};
|
|
14
14
|
export type RawProviderErrorType = AnthropicErrorType | BedrockErrorType | string;
|
|
15
15
|
declare const symbol: unique symbol;
|
|
16
|
-
export declare class LLMProviderError
|
|
16
|
+
export declare class LLMProviderError extends Error {
|
|
17
17
|
private readonly [symbol];
|
|
18
18
|
private messages;
|
|
19
19
|
name: string;
|
|
20
20
|
provider: LLMProviderConfig["provider"];
|
|
21
|
-
type: "rate_limit" | "request_too_large" | "authentication" | "permission" | "not_found" | "server_error" | "validation" | "request_expired" | "overloaded" | "aborted" | "unknown";
|
|
21
|
+
type: "rate_limit" | "request_too_large" | "authentication" | "permission" | "not_found" | "server_error" | "validation" | "request_expired" | "overloaded" | "aborted" | "retries_exhausted" | "unknown";
|
|
22
22
|
url?: string;
|
|
23
23
|
statusCode?: number;
|
|
24
24
|
isRetryable: boolean;
|
|
25
25
|
data?: ProviderErrorData;
|
|
26
26
|
cause?: unknown;
|
|
27
|
-
constructor({ provider, message, aborted, cause, }: {
|
|
27
|
+
constructor({ provider, message, type, isRetryable, aborted, cause, }: {
|
|
28
28
|
provider: LLMProviderConfig["provider"];
|
|
29
29
|
message?: string;
|
|
30
30
|
type?: LLMProviderError["type"];
|
|
31
|
+
isRetryable?: boolean;
|
|
31
32
|
aborted?: boolean;
|
|
32
33
|
cause?: unknown;
|
|
33
34
|
});
|
|
35
|
+
/**
|
|
36
|
+
* Recursively extracts messages from nested error causes.
|
|
37
|
+
*
|
|
38
|
+
* This method walks the entire cause chain and extracts messages
|
|
39
|
+
* from each level, ensuring that no error information is lost.
|
|
40
|
+
*
|
|
41
|
+
* @param cause - The cause to extract messages from
|
|
42
|
+
*/
|
|
43
|
+
private extractNestedCauseMessages;
|
|
34
44
|
set message(message: string);
|
|
35
45
|
get message(): string;
|
|
36
46
|
toJSON(): {
|
|
37
47
|
name: string;
|
|
38
|
-
type: "unknown" | "request_too_large" | "rate_limit" | "authentication" | "permission" | "not_found" | "server_error" | "
|
|
48
|
+
type: "unknown" | "validation" | "aborted" | "request_too_large" | "rate_limit" | "authentication" | "permission" | "not_found" | "server_error" | "request_expired" | "overloaded" | "retries_exhausted";
|
|
39
49
|
message: string;
|
|
40
50
|
url: string | undefined;
|
|
41
51
|
statusCode: number | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../src/ai-service/llm/error.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAW/E,MAAM,MAAM,kBAAkB,GAC1B,kBAAkB,GAClB,uBAAuB,GACvB,sBAAsB,GACtB,kBAAkB,GAClB,iBAAiB,GACjB,mBAAmB,GACnB,kBAAkB,GAClB,WAAW,CAAC;AAEhB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE;QACL,IAAI,EAAE,kBAAkB,CAAC;QACzB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAeF,MAAM,MAAM,gBAAgB,GACxB,uBAAuB,GACvB,qBAAqB,GACrB,iBAAiB,GACjB,eAAe,GACf,sBAAsB,GACtB,eAAe,GACf,gBAAgB,GAChB,oBAAoB,GACpB,qBAAqB,GACrB,6BAA6B,GAC7B,iBAAiB,GACjB,kBAAkB,CAAC;AAEvB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,gBAAgB,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAC5B,kBAAkB,GAClB,gBAAgB,GAChB,MAAM,CAAC;AAiCX,QAAA,MAAM,MAAM,eAAqB,CAAC;AAElC,qBAAa,gBAAiB,
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../src/ai-service/llm/error.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAW/E,MAAM,MAAM,kBAAkB,GAC1B,kBAAkB,GAClB,uBAAuB,GACvB,sBAAsB,GACtB,kBAAkB,GAClB,iBAAiB,GACjB,mBAAmB,GACnB,kBAAkB,GAClB,WAAW,CAAC;AAEhB,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE;QACL,IAAI,EAAE,kBAAkB,CAAC;QACzB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAeF,MAAM,MAAM,gBAAgB,GACxB,uBAAuB,GACvB,qBAAqB,GACrB,iBAAiB,GACjB,eAAe,GACf,sBAAsB,GACtB,eAAe,GACf,gBAAgB,GAChB,oBAAoB,GACpB,qBAAqB,GACrB,6BAA6B,GAC7B,iBAAiB,GACjB,kBAAkB,CAAC;AAEvB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,gBAAgB,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAC5B,kBAAkB,GAClB,gBAAgB,GAChB,MAAM,CAAC;AAiCX,QAAA,MAAM,MAAM,eAAqB,CAAC;AAElC,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAA0D;IACjE,IAAI,EAAE,MAAM,CAAsB;IAC3C,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACxC,IAAI,EACA,YAAY,GACZ,mBAAmB,GACnB,gBAAgB,GAChB,YAAY,GACZ,WAAW,GACX,cAAc,GACd,YAAY,GACZ,iBAAiB,GACjB,YAAY,GACZ,SAAS,GACT,mBAAmB,GACnB,SAAS,CAAkB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAQ;IAC5B,IAAI,CAAC,EAAE,iBAAiB,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;gBAEb,EACV,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,WAAW,EACX,OAAO,EACP,KAAK,GACN,EAAE;QACD,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACxC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAChC,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB;IA+CD;;;;;;;OAOG;IACH,OAAO,CAAC,0BAA0B;IA2BlC,IAAa,OAAO,CAAC,OAAO,EAAE,MAAM,EAEnC;IAED,IAAa,OAAO,IAAI,MAAM,CAE7B;IAED,MAAM;;;;;;;;;;IAaN,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAWnE,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,gBAAgB;CAG7D;AAED,KAAK,iBAAiB,GAAG;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
|
|
@@ -29,18 +29,19 @@ const ERROR_MAPPINGS = {
|
|
|
29
29
|
const name = "SB_LLMProviderError";
|
|
30
30
|
const marker = `superblocks.ai.error.${name}`;
|
|
31
31
|
const symbol = Symbol.for(marker);
|
|
32
|
-
export class LLMProviderError {
|
|
32
|
+
export class LLMProviderError extends Error {
|
|
33
33
|
[symbol] = true; // used in isInstance
|
|
34
34
|
messages = ["Failed to get response from LLM provider"];
|
|
35
35
|
name = "LLMProviderError";
|
|
36
36
|
provider;
|
|
37
|
-
type = "
|
|
37
|
+
type = "server_error";
|
|
38
38
|
url;
|
|
39
39
|
statusCode;
|
|
40
40
|
isRetryable = true;
|
|
41
41
|
data;
|
|
42
42
|
cause;
|
|
43
|
-
constructor({ provider, message, aborted, cause, }) {
|
|
43
|
+
constructor({ provider, message, type, isRetryable, aborted, cause, }) {
|
|
44
|
+
super(message, { cause });
|
|
44
45
|
this.provider = provider;
|
|
45
46
|
if (message) {
|
|
46
47
|
this.messages[0] = message;
|
|
@@ -68,10 +69,54 @@ export class LLMProviderError {
|
|
|
68
69
|
"server_error";
|
|
69
70
|
}
|
|
70
71
|
}
|
|
72
|
+
// Extract messages from nested cause chain
|
|
73
|
+
this.extractNestedCauseMessages(cause.cause);
|
|
71
74
|
}
|
|
72
75
|
else if (cause instanceof Error) {
|
|
73
76
|
this.messages.push(cause.message);
|
|
74
|
-
|
|
77
|
+
// Extract messages from nested cause chain
|
|
78
|
+
this.extractNestedCauseMessages(cause.cause);
|
|
79
|
+
}
|
|
80
|
+
if (type) {
|
|
81
|
+
this.type = type;
|
|
82
|
+
}
|
|
83
|
+
if (isRetryable !== undefined) {
|
|
84
|
+
this.isRetryable = isRetryable;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Recursively extracts messages from nested error causes.
|
|
89
|
+
*
|
|
90
|
+
* This method walks the entire cause chain and extracts messages
|
|
91
|
+
* from each level, ensuring that no error information is lost.
|
|
92
|
+
*
|
|
93
|
+
* @param cause - The cause to extract messages from
|
|
94
|
+
*/
|
|
95
|
+
extractNestedCauseMessages(cause) {
|
|
96
|
+
if (!cause) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (cause instanceof Error) {
|
|
100
|
+
this.messages.push(cause.message);
|
|
101
|
+
// Recursively process nested cause
|
|
102
|
+
const errorWithCause = cause;
|
|
103
|
+
if (errorWithCause.cause) {
|
|
104
|
+
this.extractNestedCauseMessages(errorWithCause.cause);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else if (typeof cause === "string") {
|
|
108
|
+
// Handle string causes
|
|
109
|
+
this.messages.push(cause);
|
|
110
|
+
}
|
|
111
|
+
else if (typeof cause === "object" && cause !== null) {
|
|
112
|
+
// Handle objects with message property
|
|
113
|
+
const causeObj = cause;
|
|
114
|
+
if (causeObj.message) {
|
|
115
|
+
this.messages.push(causeObj.message);
|
|
116
|
+
}
|
|
117
|
+
if (causeObj.cause) {
|
|
118
|
+
this.extractNestedCauseMessages(causeObj.cause);
|
|
119
|
+
}
|
|
75
120
|
}
|
|
76
121
|
}
|
|
77
122
|
set message(message) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../../src/ai-service/llm/error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAmE9D,MAAM,cAAc,GAA2D;IAC7E,mBAAmB;IACnB,gBAAgB,EAAE,YAAY;IAC9B,iBAAiB,EAAE,mBAAmB;IACtC,oBAAoB,EAAE,gBAAgB;IACtC,gBAAgB,EAAE,YAAY;IAC9B,eAAe,EAAE,WAAW;IAC5B,SAAS,EAAE,cAAc;IACzB,qBAAqB,EAAE,YAAY;IACnC,gBAAgB,EAAE,YAAY;IAE9B,iBAAiB;IACjB,mBAAmB,EAAE,YAAY;IACjC,qBAAqB,EAAE,YAAY;IACnC,aAAa,EAAE,YAAY;IAC3B,oBAAoB,EAAE,gBAAgB;IACtC,2BAA2B,EAAE,gBAAgB;IAC7C,gBAAgB,EAAE,WAAW;IAC7B,eAAe,EAAE,cAAc;IAC/B,eAAe,EAAE,YAAY;IAC7B,aAAa,EAAE,YAAY;IAC3B,mBAAmB,EAAE,YAAY;IACjC,cAAc,EAAE,iBAAiB;IACjC,kBAAkB,EAAE,YAAY;IAEhC,eAAe;IACf,YAAY,EAAE,cAAc;CAC7B,CAAC;AAEF,MAAM,IAAI,GAAG,qBAAqB,CAAC;AACnC,MAAM,MAAM,GAAG,wBAAwB,IAAI,EAAE,CAAC;AAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAElC,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../../src/ai-service/llm/error.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vercel AI SDK adapter for StreamTextProvider.
|
|
3
|
+
*
|
|
4
|
+
* This adapter bridges our high-level StreamTextProvider interface
|
|
5
|
+
* to the Vercel AI SDK's streamText function. It handles:
|
|
6
|
+
* - Mapping our options to SDK options
|
|
7
|
+
* - Adding onFinally support via stream wrapping
|
|
8
|
+
* - Translating SDK results to our interface
|
|
9
|
+
*
|
|
10
|
+
* This is the only place that depends on Vercel AI SDK internals.
|
|
11
|
+
* All other code (middlewares, etc.) depends only on our interface.
|
|
12
|
+
*/
|
|
13
|
+
import type { Tool } from "../../../agent/tools2/types.js";
|
|
14
|
+
import type { StreamTextProvider, StreamTextOptions, StreamTextResult } from "../provider.js";
|
|
15
|
+
/**
|
|
16
|
+
* Adapter that implements StreamTextProvider using Vercel AI SDK.
|
|
17
|
+
*
|
|
18
|
+
* This class wraps Vercel's streamText function and adds our custom
|
|
19
|
+
* lifecycle management (particularly onFinally support).
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const provider = new VercelStreamTextAdapter();
|
|
24
|
+
* const result = await provider.streamText({
|
|
25
|
+
* model: anthropic('claude-3-5-sonnet-20241022'),
|
|
26
|
+
* messages: [{ role: 'user', content: 'Hello!' }],
|
|
27
|
+
* onFinally: async () => {
|
|
28
|
+
* console.log('Stream consumed!');
|
|
29
|
+
* }
|
|
30
|
+
* });
|
|
31
|
+
*
|
|
32
|
+
* for await (const text of result.textStream) {
|
|
33
|
+
* console.log(text);
|
|
34
|
+
* }
|
|
35
|
+
* // onFinally runs here
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export declare class VercelStreamTextAdapter implements StreamTextProvider {
|
|
39
|
+
/**
|
|
40
|
+
* Streams text using Vercel AI SDK with lifecycle management.
|
|
41
|
+
*
|
|
42
|
+
* @param options - Stream options including onFinally hook
|
|
43
|
+
* @returns Promise resolving to stream result
|
|
44
|
+
*/
|
|
45
|
+
streamText<TOOLS extends Record<string, Tool> = Record<string, Tool>>(options: StreamTextOptions<TOOLS>): Promise<StreamTextResult<TOOLS>>;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Creates a StreamTextProvider using Vercel AI SDK.
|
|
49
|
+
*
|
|
50
|
+
* Convenience function for creating the adapter.
|
|
51
|
+
*
|
|
52
|
+
* @returns A new Vercel SDK adapter instance
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```typescript
|
|
56
|
+
* const provider = createVercelProvider();
|
|
57
|
+
*
|
|
58
|
+
* // Use with middlewares
|
|
59
|
+
* const wrapped = applyMiddleware(
|
|
60
|
+
* provider,
|
|
61
|
+
* contextMiddleware,
|
|
62
|
+
* loggingMiddleware
|
|
63
|
+
* );
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export declare function createVercelProvider(): StreamTextProvider;
|
|
67
|
+
//# sourceMappingURL=vercel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vercel.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/llm/interaction/adapters/vercel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,uBAAwB,YAAW,kBAAkB;IAChE;;;;;OAKG;IACG,UAAU,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EACxE,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAChC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;CA+CpC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oBAAoB,IAAI,kBAAkB,CAEzD"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vercel AI SDK adapter for StreamTextProvider.
|
|
3
|
+
*
|
|
4
|
+
* This adapter bridges our high-level StreamTextProvider interface
|
|
5
|
+
* to the Vercel AI SDK's streamText function. It handles:
|
|
6
|
+
* - Mapping our options to SDK options
|
|
7
|
+
* - Adding onFinally support via stream wrapping
|
|
8
|
+
* - Translating SDK results to our interface
|
|
9
|
+
*
|
|
10
|
+
* This is the only place that depends on Vercel AI SDK internals.
|
|
11
|
+
* All other code (middlewares, etc.) depends only on our interface.
|
|
12
|
+
*/
|
|
13
|
+
import { streamText } from "ai";
|
|
14
|
+
import { createStreamResult } from "../result-utils.js";
|
|
15
|
+
import { withStreamLifecycle } from "../stream-lifecycle.js";
|
|
16
|
+
/**
|
|
17
|
+
* Adapter that implements StreamTextProvider using Vercel AI SDK.
|
|
18
|
+
*
|
|
19
|
+
* This class wraps Vercel's streamText function and adds our custom
|
|
20
|
+
* lifecycle management (particularly onFinally support).
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const provider = new VercelStreamTextAdapter();
|
|
25
|
+
* const result = await provider.streamText({
|
|
26
|
+
* model: anthropic('claude-3-5-sonnet-20241022'),
|
|
27
|
+
* messages: [{ role: 'user', content: 'Hello!' }],
|
|
28
|
+
* onFinally: async () => {
|
|
29
|
+
* console.log('Stream consumed!');
|
|
30
|
+
* }
|
|
31
|
+
* });
|
|
32
|
+
*
|
|
33
|
+
* for await (const text of result.textStream) {
|
|
34
|
+
* console.log(text);
|
|
35
|
+
* }
|
|
36
|
+
* // onFinally runs here
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export class VercelStreamTextAdapter {
|
|
40
|
+
/**
|
|
41
|
+
* Streams text using Vercel AI SDK with lifecycle management.
|
|
42
|
+
*
|
|
43
|
+
* @param options - Stream options including onFinally hook
|
|
44
|
+
* @returns Promise resolving to stream result
|
|
45
|
+
*/
|
|
46
|
+
async streamText(options) {
|
|
47
|
+
// Extract our custom options that SDK doesn't support
|
|
48
|
+
const { onFinally, user, ...rest } = options;
|
|
49
|
+
// Validate that messages are provided (either directly or via user)
|
|
50
|
+
if (!rest.messages && !user) {
|
|
51
|
+
throw new Error("Either messages or user must be provided to streamText");
|
|
52
|
+
}
|
|
53
|
+
// Call Vercel SDK's streamText with proper generic types
|
|
54
|
+
// TOOLS: The tools type parameter from our method signature
|
|
55
|
+
// any, any: OUTPUT and PARTIAL_OUTPUT (we don't use structured outputs)
|
|
56
|
+
const rawResult = streamText({
|
|
57
|
+
model: rest.model,
|
|
58
|
+
messages: rest.messages || (user ? [user] : []),
|
|
59
|
+
system: rest.system,
|
|
60
|
+
tools: rest.tools,
|
|
61
|
+
...(rest.maxSteps !== undefined && { maxSteps: rest.maxSteps }),
|
|
62
|
+
abortSignal: rest.abortSignal,
|
|
63
|
+
headers: rest.headers,
|
|
64
|
+
providerOptions: rest.providerOptions,
|
|
65
|
+
stopWhen: rest.stopWhen,
|
|
66
|
+
experimental_transform: rest.experimental_transform,
|
|
67
|
+
prepareStep: rest.prepareStep,
|
|
68
|
+
onChunk: rest.onChunk,
|
|
69
|
+
onStepFinish: rest.onStepFinish,
|
|
70
|
+
onFinish: rest.onFinish,
|
|
71
|
+
onError: rest.onError
|
|
72
|
+
? (event) => {
|
|
73
|
+
const error = event.error instanceof Error
|
|
74
|
+
? event.error
|
|
75
|
+
: new Error(String(event.error));
|
|
76
|
+
return rest.onError(error);
|
|
77
|
+
}
|
|
78
|
+
: undefined,
|
|
79
|
+
onAbort: rest.onAbort,
|
|
80
|
+
});
|
|
81
|
+
// Create our StreamTextResult (extracts only what we need) FIRST
|
|
82
|
+
// This must happen before any middleware that uses spread operators
|
|
83
|
+
const result = createStreamResult(rawResult);
|
|
84
|
+
// Then apply onFinally lifecycle hook if provided
|
|
85
|
+
// Spread operators in withStreamLifecycle will work correctly now
|
|
86
|
+
return onFinally ? withStreamLifecycle(result, onFinally) : result;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Creates a StreamTextProvider using Vercel AI SDK.
|
|
91
|
+
*
|
|
92
|
+
* Convenience function for creating the adapter.
|
|
93
|
+
*
|
|
94
|
+
* @returns A new Vercel SDK adapter instance
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```typescript
|
|
98
|
+
* const provider = createVercelProvider();
|
|
99
|
+
*
|
|
100
|
+
* // Use with middlewares
|
|
101
|
+
* const wrapped = applyMiddleware(
|
|
102
|
+
* provider,
|
|
103
|
+
* contextMiddleware,
|
|
104
|
+
* loggingMiddleware
|
|
105
|
+
* );
|
|
106
|
+
* ```
|
|
107
|
+
*/
|
|
108
|
+
export function createVercelProvider() {
|
|
109
|
+
return new VercelStreamTextAdapter();
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=vercel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vercel.js","sourceRoot":"","sources":["../../../../../src/ai-service/llm/interaction/adapters/vercel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAQ7D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,uBAAuB;IAClC;;;;;OAKG;IACH,KAAK,CAAC,UAAU,CACd,OAAiC;QAEjC,sDAAsD;QACtD,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QAE7C,oEAAoE;QACpE,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QAED,yDAAyD;QACzD,4DAA4D;QAC5D,wEAAwE;QACxE,MAAM,SAAS,GAAG,UAAU,CAAkB;YAC5C,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAA0B;YACtC,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/D,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;YACnD,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACnB,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;oBACR,MAAM,KAAK,GACT,KAAK,CAAC,KAAK,YAAY,KAAK;wBAC1B,CAAC,CAAC,KAAK,CAAC,KAAK;wBACb,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;oBACrC,OAAO,IAAI,CAAC,OAAQ,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC;gBACH,CAAC,CAAC,SAAS;YACb,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;QAEH,iEAAiE;QACjE,oEAAoE;QACpE,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAE7C,kDAAkD;QAClD,kEAAkE;QAClE,OAAO,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAQ,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC5E,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,IAAI,uBAAuB,EAAE,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Composition utilities for StreamTextProvider middlewares.
|
|
3
|
+
*
|
|
4
|
+
* Provides functions to compose multiple middlewares into a single
|
|
5
|
+
* execution chain, similar to Express.js middleware composition.
|
|
6
|
+
*/
|
|
7
|
+
import type { StreamTextProvider, StreamTextMiddleware } from "./middleware.js";
|
|
8
|
+
/**
|
|
9
|
+
* Composes multiple middlewares into a single middleware.
|
|
10
|
+
*
|
|
11
|
+
* Middlewares are applied from left to right (first middleware wraps second,
|
|
12
|
+
* second wraps third, etc.). This means the first middleware in the array
|
|
13
|
+
* is the outermost layer and executes first.
|
|
14
|
+
*
|
|
15
|
+
* @param middlewares - The middlewares to compose
|
|
16
|
+
* @returns A single composed middleware
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* const combined = compose(loggingMiddleware, authMiddleware, rateLimitMiddleware);
|
|
20
|
+
* // Execution order:
|
|
21
|
+
* // 1. loggingMiddleware (outermost)
|
|
22
|
+
* // 2. authMiddleware
|
|
23
|
+
* // 3. rateLimitMiddleware (innermost)
|
|
24
|
+
* // 4. actual provider.streamText() call
|
|
25
|
+
*/
|
|
26
|
+
export declare function compose(...middlewares: StreamTextMiddleware[]): StreamTextMiddleware;
|
|
27
|
+
/**
|
|
28
|
+
* Applies middlewares to a base StreamTextProvider.
|
|
29
|
+
*
|
|
30
|
+
* This is a convenience function that composes the middlewares and
|
|
31
|
+
* applies them to the base provider in one step.
|
|
32
|
+
*
|
|
33
|
+
* @param baseProvider - The base provider to wrap
|
|
34
|
+
* @param middlewares - The middlewares to apply
|
|
35
|
+
* @returns The wrapped provider with all middlewares applied
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* const provider = applyMiddleware(
|
|
39
|
+
* createVercelProvider(),
|
|
40
|
+
* contextMiddleware,
|
|
41
|
+
* loggingMiddleware,
|
|
42
|
+
* profilerMiddleware
|
|
43
|
+
* );
|
|
44
|
+
*
|
|
45
|
+
* // Use the wrapped provider:
|
|
46
|
+
* const result = await provider.streamText({ model, messages, tools });
|
|
47
|
+
*/
|
|
48
|
+
export declare function applyMiddleware(baseProvider: StreamTextProvider, ...middlewares: StreamTextMiddleware[]): StreamTextProvider;
|
|
49
|
+
/**
|
|
50
|
+
* Creates a middleware from a simple wrapper function.
|
|
51
|
+
*
|
|
52
|
+
* This is a helper for creating middlewares without implementing
|
|
53
|
+
* the full interface. Useful for simple transformations.
|
|
54
|
+
*
|
|
55
|
+
* @param wrapperFn - A function that wraps the provider
|
|
56
|
+
* @returns A StreamTextMiddleware
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* const timingMiddleware = createMiddleware((provider) => {
|
|
60
|
+
* return {
|
|
61
|
+
* async streamText(options) {
|
|
62
|
+
* const start = Date.now();
|
|
63
|
+
* const result = await provider.streamText(options);
|
|
64
|
+
* console.log(`Took ${Date.now() - start}ms`);
|
|
65
|
+
* return result;
|
|
66
|
+
* }
|
|
67
|
+
* };
|
|
68
|
+
* });
|
|
69
|
+
*/
|
|
70
|
+
export declare function createMiddleware(wrapperFn: (provider: StreamTextProvider) => StreamTextProvider): StreamTextMiddleware;
|
|
71
|
+
//# sourceMappingURL=compose.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/llm/interaction/compose.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEhF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,OAAO,CACrB,GAAG,WAAW,EAAE,oBAAoB,EAAE,GACrC,oBAAoB,CAWtB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,kBAAkB,EAChC,GAAG,WAAW,EAAE,oBAAoB,EAAE,GACrC,kBAAkB,CAOpB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,kBAAkB,GAC9D,oBAAoB,CAItB"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Composition utilities for StreamTextProvider middlewares.
|
|
3
|
+
*
|
|
4
|
+
* Provides functions to compose multiple middlewares into a single
|
|
5
|
+
* execution chain, similar to Express.js middleware composition.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Composes multiple middlewares into a single middleware.
|
|
9
|
+
*
|
|
10
|
+
* Middlewares are applied from left to right (first middleware wraps second,
|
|
11
|
+
* second wraps third, etc.). This means the first middleware in the array
|
|
12
|
+
* is the outermost layer and executes first.
|
|
13
|
+
*
|
|
14
|
+
* @param middlewares - The middlewares to compose
|
|
15
|
+
* @returns A single composed middleware
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* const combined = compose(loggingMiddleware, authMiddleware, rateLimitMiddleware);
|
|
19
|
+
* // Execution order:
|
|
20
|
+
* // 1. loggingMiddleware (outermost)
|
|
21
|
+
* // 2. authMiddleware
|
|
22
|
+
* // 3. rateLimitMiddleware (innermost)
|
|
23
|
+
* // 4. actual provider.streamText() call
|
|
24
|
+
*/
|
|
25
|
+
export function compose(...middlewares) {
|
|
26
|
+
return {
|
|
27
|
+
wrap(provider) {
|
|
28
|
+
// Apply middlewares from right to left (innermost to outermost)
|
|
29
|
+
// so that the first middleware in the array becomes the outermost wrapper
|
|
30
|
+
return middlewares.reduceRight((wrappedProvider, middleware) => middleware.wrap(wrappedProvider), provider);
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Applies middlewares to a base StreamTextProvider.
|
|
36
|
+
*
|
|
37
|
+
* This is a convenience function that composes the middlewares and
|
|
38
|
+
* applies them to the base provider in one step.
|
|
39
|
+
*
|
|
40
|
+
* @param baseProvider - The base provider to wrap
|
|
41
|
+
* @param middlewares - The middlewares to apply
|
|
42
|
+
* @returns The wrapped provider with all middlewares applied
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* const provider = applyMiddleware(
|
|
46
|
+
* createVercelProvider(),
|
|
47
|
+
* contextMiddleware,
|
|
48
|
+
* loggingMiddleware,
|
|
49
|
+
* profilerMiddleware
|
|
50
|
+
* );
|
|
51
|
+
*
|
|
52
|
+
* // Use the wrapped provider:
|
|
53
|
+
* const result = await provider.streamText({ model, messages, tools });
|
|
54
|
+
*/
|
|
55
|
+
export function applyMiddleware(baseProvider, ...middlewares) {
|
|
56
|
+
if (middlewares.length === 0) {
|
|
57
|
+
return baseProvider;
|
|
58
|
+
}
|
|
59
|
+
const composed = compose(...middlewares);
|
|
60
|
+
return composed.wrap(baseProvider);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Creates a middleware from a simple wrapper function.
|
|
64
|
+
*
|
|
65
|
+
* This is a helper for creating middlewares without implementing
|
|
66
|
+
* the full interface. Useful for simple transformations.
|
|
67
|
+
*
|
|
68
|
+
* @param wrapperFn - A function that wraps the provider
|
|
69
|
+
* @returns A StreamTextMiddleware
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* const timingMiddleware = createMiddleware((provider) => {
|
|
73
|
+
* return {
|
|
74
|
+
* async streamText(options) {
|
|
75
|
+
* const start = Date.now();
|
|
76
|
+
* const result = await provider.streamText(options);
|
|
77
|
+
* console.log(`Took ${Date.now() - start}ms`);
|
|
78
|
+
* return result;
|
|
79
|
+
* }
|
|
80
|
+
* };
|
|
81
|
+
* });
|
|
82
|
+
*/
|
|
83
|
+
export function createMiddleware(wrapperFn) {
|
|
84
|
+
return {
|
|
85
|
+
wrap: wrapperFn,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=compose.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose.js","sourceRoot":"","sources":["../../../../src/ai-service/llm/interaction/compose.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,OAAO,CACrB,GAAG,WAAmC;IAEtC,OAAO;QACL,IAAI,CAAC,QAA4B;YAC/B,gEAAgE;YAChE,0EAA0E;YAC1E,OAAO,WAAW,CAAC,WAAW,CAC5B,CAAC,eAAe,EAAE,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,EACjE,QAAQ,CACT,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,eAAe,CAC7B,YAAgC,EAChC,GAAG,WAAmC;IAEtC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,WAAW,CAAC,CAAC;IACzC,OAAO,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAA+D;IAE/D,OAAO;QACL,IAAI,EAAE,SAAS;KAChB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-step LLM interaction system with provider interface and middleware.
|
|
3
|
+
*
|
|
4
|
+
* This module provides a clean, SDK-agnostic interface for LLM streaming
|
|
5
|
+
* with composable middleware. Key features:
|
|
6
|
+
* - Provider interface abstracts away SDK details
|
|
7
|
+
* - onFinally lifecycle hook for cleanup after stream consumption
|
|
8
|
+
* - Composable middlewares for cross-cutting concerns
|
|
9
|
+
* - Adapter pattern for SDK flexibility
|
|
10
|
+
*
|
|
11
|
+
* ## Architecture
|
|
12
|
+
*
|
|
13
|
+
* ```
|
|
14
|
+
* Middlewares (Context, Logging, Profiler, LLMObs)
|
|
15
|
+
* ↓
|
|
16
|
+
* StreamTextProvider Interface (with onFinally)
|
|
17
|
+
* ↓
|
|
18
|
+
* VercelStreamTextAdapter
|
|
19
|
+
* ↓
|
|
20
|
+
* Vercel AI SDK
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* ## Usage
|
|
24
|
+
*
|
|
25
|
+
* ```typescript
|
|
26
|
+
* import {
|
|
27
|
+
* createVercelProvider,
|
|
28
|
+
* applyMiddleware,
|
|
29
|
+
* createContextMiddleware,
|
|
30
|
+
* createLoggingMiddleware,
|
|
31
|
+
* } from "./interaction";
|
|
32
|
+
*
|
|
33
|
+
* // Create base provider
|
|
34
|
+
* const baseProvider = createVercelProvider();
|
|
35
|
+
*
|
|
36
|
+
* // Apply middlewares
|
|
37
|
+
* const provider = applyMiddleware(
|
|
38
|
+
* baseProvider,
|
|
39
|
+
* createContextMiddleware({ ... }),
|
|
40
|
+
* createLoggingMiddleware({ ... })
|
|
41
|
+
* );
|
|
42
|
+
*
|
|
43
|
+
* // Use the provider
|
|
44
|
+
* const result = await provider.streamText({
|
|
45
|
+
* model,
|
|
46
|
+
* messages,
|
|
47
|
+
* tools,
|
|
48
|
+
* onFinally: async () => {
|
|
49
|
+
* // Cleanup after stream consumption
|
|
50
|
+
* }
|
|
51
|
+
* });
|
|
52
|
+
*
|
|
53
|
+
* for await (const chunk of result.fullStream) {
|
|
54
|
+
* // Process chunks
|
|
55
|
+
* }
|
|
56
|
+
* // onFinally runs here ^
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
export type { StreamTextProvider, StreamTextOptions, StreamTextResult, StepParameters, StreamChunk, StepResult, FinalResult, } from "./provider.js";
|
|
60
|
+
export type { StreamTextMiddleware } from "./middleware.js";
|
|
61
|
+
export { compose, applyMiddleware, createMiddleware } from "./compose.js";
|
|
62
|
+
export { withStreamLifecycle } from "./stream-lifecycle.js";
|
|
63
|
+
export { VercelStreamTextAdapter, createVercelProvider, } from "./adapters/vercel.js";
|
|
64
|
+
export { createLoggingMiddleware, type LoggingMiddlewareOptions, type LogRef, } from "./middlewares/logging.js";
|
|
65
|
+
export { createProfilerMiddleware, type ProfilerMiddlewareOptions, } from "./middlewares/profiler.js";
|
|
66
|
+
export { createLLMObsMiddleware, type LLMObsMiddlewareOptions, } from "./middlewares/llmobs.js";
|
|
67
|
+
export { createStreamRetryMiddleware, type StreamRetryOptions, } from "./middlewares/stream-retry.js";
|
|
68
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/llm/interaction/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AAGH,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,UAAU,EACV,WAAW,GACZ,MAAM,eAAe,CAAC;AAGvB,YAAY,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAG5D,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAG1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,MAAM,GACZ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,wBAAwB,EACxB,KAAK,yBAAyB,GAC/B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,sBAAsB,EACtB,KAAK,uBAAuB,GAC7B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,2BAA2B,EAC3B,KAAK,kBAAkB,GACxB,MAAM,+BAA+B,CAAC"}
|