@superblocksteam/vite-plugin-file-sync 2.0.83-next.1 → 2.0.83
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/middleware.d.ts +0 -36
- package/dist/ai-service/agent/middleware.d.ts.map +1 -1
- package/dist/ai-service/agent/middleware.js +1 -65
- package/dist/ai-service/agent/middleware.js.map +1 -1
- package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts +1 -1
- 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 +57 -101
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
- package/dist/ai-service/agent/tool-message-utils.js +1 -1
- package/dist/ai-service/agent/tool-message-utils.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/api-executor.js +1 -1
- package/dist/ai-service/agent/tools/apis/api-executor.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js +1 -1
- package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/build-api-artifact.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/build-api-artifact.js +7 -23
- package/dist/ai-service/agent/tools/apis/build-api-artifact.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/build-api.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/build-api.js +19 -36
- 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 +1 -1
- package/dist/ai-service/agent/tools/apis/sample-json.js +1 -1
- package/dist/ai-service/agent/tools/apis/sample-json.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/test-api.d.ts +1 -11
- package/dist/ai-service/agent/tools/apis/test-api.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/test-api.js +54 -95
- package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -1
- package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts +0 -3
- package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-capture-screenshot.js +8 -12
- package/dist/ai-service/agent/tools/build-capture-screenshot.js.map +1 -1
- package/dist/ai-service/agent/tools/build-debug.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-debug.js +10 -30
- package/dist/ai-service/agent/tools/build-debug.js.map +1 -1
- package/dist/ai-service/agent/tools/build-delete-file.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-delete-file.js +2 -6
- package/dist/ai-service/agent/tools/build-delete-file.js.map +1 -1
- package/dist/ai-service/agent/tools/build-edit-file.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-edit-file.js +5 -20
- package/dist/ai-service/agent/tools/build-edit-file.js.map +1 -1
- package/dist/ai-service/agent/tools/build-finalize.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-finalize.js +4 -30
- package/dist/ai-service/agent/tools/build-finalize.js.map +1 -1
- package/dist/ai-service/agent/tools/build-manage-checklist.d.ts +1 -1
- package/dist/ai-service/agent/tools/build-multi-edit-file.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-multi-edit-file.js +4 -14
- package/dist/ai-service/agent/tools/build-multi-edit-file.js.map +1 -1
- package/dist/ai-service/agent/tools/build-read-file.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-read-file.js +11 -23
- package/dist/ai-service/agent/tools/build-read-file.js.map +1 -1
- package/dist/ai-service/agent/tools/debug-cache.js +1 -1
- package/dist/ai-service/agent/tools/debug-cache.js.map +1 -1
- package/dist/ai-service/agent/tools/get-console-logs.d.ts +29 -0
- package/dist/ai-service/agent/tools/get-console-logs.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/get-console-logs.js +171 -0
- package/dist/ai-service/agent/tools/get-console-logs.js.map +1 -0
- package/dist/ai-service/agent/tools/index.d.ts +1 -1
- package/dist/ai-service/agent/tools/index.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/index.js +1 -1
- package/dist/ai-service/agent/tools/index.js.map +1 -1
- package/dist/ai-service/agent/tools/integrations/execute-request.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/integrations/execute-request.js +5 -20
- package/dist/ai-service/agent/tools/integrations/execute-request.js.map +1 -1
- package/dist/ai-service/agent/tools/integrations/internal.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/integrations/internal.js +3 -12
- package/dist/ai-service/agent/tools/integrations/internal.js.map +1 -1
- package/dist/ai-service/agent/tools.d.ts.map +1 -1
- package/dist/ai-service/agent/tools.js +28 -19
- package/dist/ai-service/agent/tools.js.map +1 -1
- package/dist/ai-service/agent/tools2/registry.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/registry.js +15 -37
- package/dist/ai-service/agent/tools2/registry.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/bash.d.ts +1 -1
- package/dist/ai-service/agent/tools2/tools/edit.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/edit.js +4 -9
- package/dist/ai-service/agent/tools2/tools/edit.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/grep.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/grep.js +7 -73
- package/dist/ai-service/agent/tools2/tools/grep.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/read.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/read.js +4 -9
- package/dist/ai-service/agent/tools2/tools/read.js.map +1 -1
- package/dist/ai-service/agent/tools2/types.d.ts +8 -40
- package/dist/ai-service/agent/tools2/types.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/types.js +3 -41
- package/dist/ai-service/agent/tools2/types.js.map +1 -1
- package/dist/ai-service/app-interface/filesystem/handlers/skill-handler.d.ts +1 -0
- package/dist/ai-service/app-interface/filesystem/handlers/skill-handler.d.ts.map +1 -1
- package/dist/ai-service/app-interface/filesystem/handlers/skill-handler.js +54 -60
- package/dist/ai-service/app-interface/filesystem/handlers/skill-handler.js.map +1 -1
- package/dist/ai-service/chat/chat-session-store.d.ts +0 -6
- package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
- package/dist/ai-service/chat/chat-session-store.js +0 -44
- package/dist/ai-service/chat/chat-session-store.js.map +1 -1
- package/dist/ai-service/features.d.ts +0 -8
- package/dist/ai-service/features.d.ts.map +1 -1
- package/dist/ai-service/features.js +0 -8
- package/dist/ai-service/features.js.map +1 -1
- package/dist/ai-service/index.d.ts +2 -34
- package/dist/ai-service/index.d.ts.map +1 -1
- package/dist/ai-service/index.js +18 -112
- package/dist/ai-service/index.js.map +1 -1
- package/dist/ai-service/integrations/metadata-storage/local.d.ts.map +1 -1
- package/dist/ai-service/integrations/metadata-storage/local.js +2 -4
- package/dist/ai-service/integrations/metadata-storage/local.js.map +1 -1
- package/dist/ai-service/integrations/store.d.ts +3 -6
- package/dist/ai-service/integrations/store.d.ts.map +1 -1
- package/dist/ai-service/integrations/store.js +6 -96
- package/dist/ai-service/integrations/store.js.map +1 -1
- package/dist/ai-service/judge/judge-executor.js +1 -1
- package/dist/ai-service/judge/judge-executor.js.map +1 -1
- package/dist/ai-service/judge/tools/playwright-action.d.ts +1 -1
- package/dist/ai-service/llm/client.d.ts.map +1 -1
- package/dist/ai-service/llm/client.js +13 -26
- package/dist/ai-service/llm/client.js.map +1 -1
- package/dist/ai-service/llm/context-v2/adapter.d.ts +0 -2
- package/dist/ai-service/llm/context-v2/adapter.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/adapter.js +0 -6
- package/dist/ai-service/llm/context-v2/adapter.js.map +1 -1
- package/dist/ai-service/llm/context-v2/context.d.ts +0 -17
- package/dist/ai-service/llm/context-v2/context.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/context.js +1 -54
- package/dist/ai-service/llm/context-v2/context.js.map +1 -1
- package/dist/ai-service/llm/context-v2/conversation-context.d.ts +1 -11
- package/dist/ai-service/llm/context-v2/conversation-context.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.d.ts +1 -1
- package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.js +6 -42
- package/dist/ai-service/llm/context-v2/phase1-tool-summarizer.js.map +1 -1
- package/dist/ai-service/llm/context-v2/types.d.ts +0 -4
- package/dist/ai-service/llm/context-v2/types.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/types.js.map +1 -1
- package/dist/ai-service/llm/error.js +1 -1
- package/dist/ai-service/llm/error.js.map +1 -1
- package/dist/ai-service/llm/interaction/adapters/vercel.js +5 -5
- package/dist/ai-service/llm/stream/config.d.ts +1 -1
- package/dist/ai-service/llm/stream/config.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/config.js.map +1 -1
- package/dist/ai-service/llm/stream/observers/llmobs.js +1 -1
- package/dist/ai-service/llm/stream/observers/llmobs.js.map +1 -1
- package/dist/ai-service/llm/stream/observers/logging.d.ts +0 -20
- package/dist/ai-service/llm/stream/observers/logging.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/observers/logging.js +18 -115
- package/dist/ai-service/llm/stream/observers/logging.js.map +1 -1
- package/dist/ai-service/llm/stream/observers/retry-notification.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/observers/retry-notification.js +1 -2
- package/dist/ai-service/llm/stream/observers/retry-notification.js.map +1 -1
- package/dist/ai-service/llm/stream/orchestrator.js +4 -4
- package/dist/ai-service/llm/stream/orchestrator.js.map +1 -1
- package/dist/ai-service/llm/stream/retry-engine.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/retry-engine.js +1 -1
- package/dist/ai-service/llm/stream/retry-engine.js.map +1 -1
- package/dist/ai-service/llmobs/otel-exporter.d.ts +14 -111
- package/dist/ai-service/llmobs/otel-exporter.d.ts.map +1 -1
- package/dist/ai-service/llmobs/otel-exporter.js +66 -441
- package/dist/ai-service/llmobs/otel-exporter.js.map +1 -1
- package/dist/ai-service/llmobs/tracer.d.ts.map +1 -1
- package/dist/ai-service/llmobs/tracer.js +4 -40
- package/dist/ai-service/llmobs/tracer.js.map +1 -1
- package/dist/ai-service/mcp/playwright-server.d.ts.map +1 -1
- package/dist/ai-service/mcp/playwright-server.js +2 -11
- package/dist/ai-service/mcp/playwright-server.js.map +1 -1
- package/dist/ai-service/security/safety-classifier.d.ts.map +1 -1
- package/dist/ai-service/security/safety-classifier.js +3 -9
- package/dist/ai-service/security/safety-classifier.js.map +1 -1
- package/dist/ai-service/skills/index.d.ts +11 -23
- package/dist/ai-service/skills/index.d.ts.map +1 -1
- package/dist/ai-service/skills/index.js +21 -86
- package/dist/ai-service/skills/index.js.map +1 -1
- package/dist/ai-service/skills/system/superblocks-api/references/code-blocks.generated.d.ts +1 -1
- package/dist/ai-service/skills/system/superblocks-api/references/code-blocks.generated.d.ts.map +1 -1
- package/dist/ai-service/skills/system/superblocks-api/references/code-blocks.generated.js +0 -56
- package/dist/ai-service/skills/system/superblocks-api/references/code-blocks.generated.js.map +1 -1
- package/dist/ai-service/skills/system/superblocks-api/references/sql-databases.generated.d.ts +1 -1
- package/dist/ai-service/skills/system/superblocks-api/references/sql-databases.generated.d.ts.map +1 -1
- package/dist/ai-service/skills/system/superblocks-api/references/sql-databases.generated.js +11 -143
- package/dist/ai-service/skills/system/superblocks-api/references/sql-databases.generated.js.map +1 -1
- package/dist/ai-service/skills/system/superblocks-api/skill.generated.d.ts +1 -1
- package/dist/ai-service/skills/system/superblocks-api/skill.generated.d.ts.map +1 -1
- package/dist/ai-service/skills/system/superblocks-api/skill.generated.js +3 -130
- package/dist/ai-service/skills/system/superblocks-api/skill.generated.js.map +1 -1
- package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.d.ts +1 -1
- package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.d.ts.map +1 -1
- package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.js +17 -97
- package/dist/ai-service/skills/system/superblocks-frontend/skill.generated.js.map +1 -1
- package/dist/ai-service/skills/types.d.ts +0 -24
- package/dist/ai-service/skills/types.d.ts.map +1 -1
- package/dist/ai-service/skills/types.js +0 -45
- package/dist/ai-service/skills/types.js.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.d.ts +2 -33
- package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.js +1 -6
- 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 +21 -24
- 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 +5 -120
- package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
- package/dist/ai-service/state-machine/mocks.d.ts.map +1 -1
- package/dist/ai-service/state-machine/mocks.js +0 -23
- package/dist/ai-service/state-machine/mocks.js.map +1 -1
- package/dist/ai-service/state-machine/traced-fsm.d.ts.map +1 -1
- package/dist/ai-service/state-machine/traced-fsm.js +1 -1
- package/dist/ai-service/state-machine/traced-fsm.js.map +1 -1
- package/dist/ai-service/test-utils/anthropic-service-mock.d.ts +2 -0
- package/dist/ai-service/test-utils/anthropic-service-mock.d.ts.map +1 -0
- package/dist/ai-service/test-utils/anthropic-service-mock.js +91 -0
- package/dist/ai-service/test-utils/anthropic-service-mock.js.map +1 -0
- package/dist/ai-service/test-utils/app-generation-mocks/orders-app.d.ts +3 -0
- package/dist/ai-service/test-utils/app-generation-mocks/orders-app.d.ts.map +1 -0
- package/dist/ai-service/test-utils/app-generation-mocks/orders-app.js +886 -0
- package/dist/ai-service/test-utils/app-generation-mocks/orders-app.js.map +1 -0
- package/dist/ai-service/test-utils/app-generation-mocks/reprompt.d.ts +3 -0
- package/dist/ai-service/test-utils/app-generation-mocks/reprompt.d.ts.map +1 -0
- package/dist/ai-service/test-utils/app-generation-mocks/reprompt.js +70 -0
- package/dist/ai-service/test-utils/app-generation-mocks/reprompt.js.map +1 -0
- package/dist/ai-service/test-utils/app-generation-mocks/smoketest.d.ts +3 -0
- package/dist/ai-service/test-utils/app-generation-mocks/smoketest.d.ts.map +1 -0
- package/dist/ai-service/test-utils/app-generation-mocks/smoketest.js +109 -0
- package/dist/ai-service/test-utils/app-generation-mocks/smoketest.js.map +1 -0
- package/dist/ai-service/test-utils/mock-utils.d.ts +12 -0
- package/dist/ai-service/test-utils/mock-utils.d.ts.map +1 -0
- package/dist/ai-service/test-utils/mock-utils.js +70 -0
- package/dist/ai-service/test-utils/mock-utils.js.map +1 -0
- package/dist/ai-service/util/safe-stringify.d.ts +2 -0
- package/dist/ai-service/util/safe-stringify.d.ts.map +1 -0
- package/dist/ai-service/util/safe-stringify.js +75 -0
- package/dist/ai-service/util/safe-stringify.js.map +1 -0
- package/dist/file-sync-vite-plugin.d.ts.map +1 -1
- package/dist/file-sync-vite-plugin.js +22 -52
- package/dist/file-sync-vite-plugin.js.map +1 -1
- package/dist/ids.d.ts +0 -1
- package/dist/ids.d.ts.map +1 -1
- package/dist/ids.js +0 -3
- package/dist/ids.js.map +1 -1
- package/dist/refactor/entities.d.ts.map +1 -1
- package/dist/refactor/entities.js +1 -0
- package/dist/refactor/entities.js.map +1 -1
- package/dist/socket-manager.d.ts.map +1 -1
- package/dist/socket-manager.js +3 -21
- package/dist/socket-manager.js.map +1 -1
- package/dist/sync-service/index.d.ts +0 -4
- package/dist/sync-service/index.d.ts.map +1 -1
- package/dist/sync-service/index.js +0 -6
- package/dist/sync-service/index.js.map +1 -1
- package/dist/util/logger.d.ts +0 -4
- package/dist/util/logger.d.ts.map +1 -1
- package/dist/util/logger.js +19 -77
- package/dist/util/logger.js.map +1 -1
- package/package.json +14 -17
- package/dist/ai-service/agent/tools/get-logs.d.ts +0 -72
- package/dist/ai-service/agent/tools/get-logs.d.ts.map +0 -1
- package/dist/ai-service/agent/tools/get-logs.js +0 -343
- package/dist/ai-service/agent/tools/get-logs.js.map +0 -1
- package/dist/ai-service/agent/tools/integrations/errors.d.ts +0 -9
- package/dist/ai-service/agent/tools/integrations/errors.d.ts.map +0 -1
- package/dist/ai-service/agent/tools/integrations/errors.js +0 -35
- package/dist/ai-service/agent/tools/integrations/errors.js.map +0 -1
- package/dist/ai-service/facts/helpers.d.ts +0 -9
- package/dist/ai-service/facts/helpers.d.ts.map +0 -1
- package/dist/ai-service/facts/helpers.js +0 -72
- package/dist/ai-service/facts/helpers.js.map +0 -1
- package/dist/ai-service/facts/index.d.ts +0 -4
- package/dist/ai-service/facts/index.d.ts.map +0 -1
- package/dist/ai-service/facts/index.js +0 -3
- package/dist/ai-service/facts/index.js.map +0 -1
- package/dist/ai-service/facts/knowledge-manager.d.ts +0 -50
- package/dist/ai-service/facts/knowledge-manager.d.ts.map +0 -1
- package/dist/ai-service/facts/knowledge-manager.js +0 -195
- package/dist/ai-service/facts/knowledge-manager.js.map +0 -1
- package/dist/ai-service/recording/index.d.ts +0 -25
- package/dist/ai-service/recording/index.d.ts.map +0 -1
- package/dist/ai-service/recording/index.js +0 -27
- package/dist/ai-service/recording/index.js.map +0 -1
- package/dist/ai-service/recording/recorders/llm-recorder.d.ts +0 -35
- package/dist/ai-service/recording/recorders/llm-recorder.d.ts.map +0 -1
- package/dist/ai-service/recording/recorders/llm-recorder.js +0 -221
- package/dist/ai-service/recording/recorders/llm-recorder.js.map +0 -1
- package/dist/ai-service/recording/recorders/socket-recorder.d.ts +0 -38
- package/dist/ai-service/recording/recorders/socket-recorder.d.ts.map +0 -1
- package/dist/ai-service/recording/recorders/socket-recorder.js +0 -44
- package/dist/ai-service/recording/recorders/socket-recorder.js.map +0 -1
- package/dist/ai-service/recording/recorders/tool-recorder.d.ts +0 -25
- package/dist/ai-service/recording/recorders/tool-recorder.d.ts.map +0 -1
- package/dist/ai-service/recording/recorders/tool-recorder.js +0 -58
- package/dist/ai-service/recording/recorders/tool-recorder.js.map +0 -1
- package/dist/ai-service/recording/recording-manager.d.ts +0 -104
- package/dist/ai-service/recording/recording-manager.d.ts.map +0 -1
- package/dist/ai-service/recording/recording-manager.js +0 -308
- package/dist/ai-service/recording/recording-manager.js.map +0 -1
- package/dist/ai-service/recording/storage/session-recording-storage.d.ts +0 -143
- package/dist/ai-service/recording/storage/session-recording-storage.d.ts.map +0 -1
- package/dist/ai-service/recording/storage/session-recording-storage.js +0 -374
- package/dist/ai-service/recording/storage/session-recording-storage.js.map +0 -1
- package/dist/ai-service/recording/types.d.ts +0 -148
- package/dist/ai-service/recording/types.d.ts.map +0 -1
- package/dist/ai-service/recording/types.js +0 -8
- package/dist/ai-service/recording/types.js.map +0 -1
- package/dist/ai-service/skills/system/_registry.generated.d.ts +0 -6
- package/dist/ai-service/skills/system/_registry.generated.d.ts.map +0 -1
- package/dist/ai-service/skills/system/_registry.generated.js +0 -24
- package/dist/ai-service/skills/system/_registry.generated.js.map +0 -1
- package/dist/ai-service/skills/system/superblocks-frontend/references/embedding.generated.d.ts +0 -2
- package/dist/ai-service/skills/system/superblocks-frontend/references/embedding.generated.d.ts.map +0 -1
- package/dist/ai-service/skills/system/superblocks-frontend/references/embedding.generated.js +0 -155
- package/dist/ai-service/skills/system/superblocks-frontend/references/embedding.generated.js.map +0 -1
- package/dist/util/log-sanitizer.d.ts +0 -42
- package/dist/util/log-sanitizer.d.ts.map +0 -1
- package/dist/util/log-sanitizer.js +0 -177
- package/dist/util/log-sanitizer.js.map +0 -1
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
import { FactAccessType, FactEntityScope, } from "@superblocksteam/shared";
|
|
2
|
-
import { getErrorMeta } from "../../util/logger.js";
|
|
3
|
-
import { stripLengthyContent } from "../util/strip-content.js";
|
|
4
|
-
import { formatSystemPromptFacts, formatUserMessageFacts } from "./helpers.js";
|
|
5
|
-
const CACHE_TTL_MS = 1 * 60 * 1000; // 1 minute
|
|
6
|
-
/**
|
|
7
|
-
* Manages knowledge/facts loading, caching, and tracking for a chat session.
|
|
8
|
-
* - Caches facts with TTL to reduce RPC calls
|
|
9
|
-
* - Tracks which facts have been sent to UI to only push net-new knowledge
|
|
10
|
-
*/
|
|
11
|
-
export class KnowledgeManager {
|
|
12
|
-
cache = {};
|
|
13
|
-
sentFactIds = new Set();
|
|
14
|
-
isCacheValid(entry) {
|
|
15
|
-
return Date.now() - entry.timestamp < CACHE_TTL_MS;
|
|
16
|
-
}
|
|
17
|
-
getCached(key) {
|
|
18
|
-
const entry = this.cache[key];
|
|
19
|
-
if (entry && this.isCacheValid(entry)) {
|
|
20
|
-
return entry.facts;
|
|
21
|
-
}
|
|
22
|
-
return null;
|
|
23
|
-
}
|
|
24
|
-
setCache(key, facts) {
|
|
25
|
-
this.cache[key] = {
|
|
26
|
-
facts,
|
|
27
|
-
timestamp: Date.now(),
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
async loadOrgFacts(rpcClient, organizationId, logger) {
|
|
31
|
-
const cacheKey = `organization:${organizationId}`;
|
|
32
|
-
const cached = this.getCached(cacheKey);
|
|
33
|
-
if (cached) {
|
|
34
|
-
return cached;
|
|
35
|
-
}
|
|
36
|
-
try {
|
|
37
|
-
const facts = await rpcClient.call(async (client) => {
|
|
38
|
-
const { data } = await client.call.v1.fact.list({
|
|
39
|
-
entityScope: FactEntityScope.ORG,
|
|
40
|
-
entityId: organizationId,
|
|
41
|
-
isEnabled: true,
|
|
42
|
-
accessType: FactAccessType.ALWAYS_INJECT,
|
|
43
|
-
});
|
|
44
|
-
return data?.facts ?? [];
|
|
45
|
-
});
|
|
46
|
-
this.setCache(cacheKey, facts);
|
|
47
|
-
return facts;
|
|
48
|
-
}
|
|
49
|
-
catch (error) {
|
|
50
|
-
logger.warn("Failed to load org facts", { error });
|
|
51
|
-
return [];
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
async loadIntegrationFacts(rpcClient, integrationId, logger) {
|
|
55
|
-
const cacheKey = `integration:${integrationId}`;
|
|
56
|
-
const cached = this.getCached(cacheKey);
|
|
57
|
-
if (cached) {
|
|
58
|
-
return cached;
|
|
59
|
-
}
|
|
60
|
-
try {
|
|
61
|
-
const facts = await rpcClient.call(async (client) => {
|
|
62
|
-
const { data } = await client.call.v1.fact.list({
|
|
63
|
-
entityScope: FactEntityScope.INTEGRATION,
|
|
64
|
-
entityId: integrationId,
|
|
65
|
-
isEnabled: true,
|
|
66
|
-
accessType: FactAccessType.ALWAYS_INJECT,
|
|
67
|
-
});
|
|
68
|
-
return data?.facts ?? [];
|
|
69
|
-
});
|
|
70
|
-
this.setCache(cacheKey, facts);
|
|
71
|
-
return facts;
|
|
72
|
-
}
|
|
73
|
-
catch (error) {
|
|
74
|
-
logger.warn("Failed to load integration facts", { error });
|
|
75
|
-
return [];
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
async loadUserFacts(rpcClient, userId, logger) {
|
|
79
|
-
const cacheKey = `user:${userId}`;
|
|
80
|
-
const cached = this.getCached(cacheKey);
|
|
81
|
-
if (cached) {
|
|
82
|
-
return cached;
|
|
83
|
-
}
|
|
84
|
-
try {
|
|
85
|
-
const facts = await rpcClient.call(async (client) => {
|
|
86
|
-
const { data } = await client.call.v1.fact.list({
|
|
87
|
-
entityScope: FactEntityScope.USER,
|
|
88
|
-
entityId: userId,
|
|
89
|
-
isEnabled: true,
|
|
90
|
-
accessType: FactAccessType.ALWAYS_INJECT,
|
|
91
|
-
});
|
|
92
|
-
return data?.facts ?? [];
|
|
93
|
-
});
|
|
94
|
-
this.setCache(cacheKey, facts);
|
|
95
|
-
return facts;
|
|
96
|
-
}
|
|
97
|
-
catch (error) {
|
|
98
|
-
logger.warn("Failed to load user facts", { error });
|
|
99
|
-
return [];
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Merge and de-duplicate integrations by id.
|
|
104
|
-
* This is so we can load all facts when a user might have not tagged something
|
|
105
|
-
* but Clark put it in the plan.
|
|
106
|
-
*/
|
|
107
|
-
mergeIntegrations(promptIntegrations, planIntegrations) {
|
|
108
|
-
const seenIds = new Set();
|
|
109
|
-
return [...promptIntegrations, ...planIntegrations].filter((integration) => {
|
|
110
|
-
if (seenIds.has(integration.id)) {
|
|
111
|
-
return false;
|
|
112
|
-
}
|
|
113
|
-
seenIds.add(integration.id);
|
|
114
|
-
return true;
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
async loadFactsPromptSections({ rpcClient, organizationId, userId, promptIntegrations, planIntegrations, logger, }) {
|
|
118
|
-
try {
|
|
119
|
-
const mergedIntegrations = this.mergeIntegrations(promptIntegrations, planIntegrations ?? []);
|
|
120
|
-
const integrationFactsPromises = mergedIntegrations.map(async (integration) => ({
|
|
121
|
-
integration,
|
|
122
|
-
facts: await this.loadIntegrationFacts(rpcClient, integration.id, logger),
|
|
123
|
-
}));
|
|
124
|
-
const [orgFacts, userFacts, ...integrationFactsResults] = await Promise.all([
|
|
125
|
-
this.loadOrgFacts(rpcClient, organizationId, logger),
|
|
126
|
-
this.loadUserFacts(rpcClient, userId, logger),
|
|
127
|
-
...integrationFactsPromises,
|
|
128
|
-
]);
|
|
129
|
-
logger.info("[knowledge-manager] loaded facts for prompt", stripLengthyContent({
|
|
130
|
-
orgFacts,
|
|
131
|
-
userFacts,
|
|
132
|
-
integrationFactsResults,
|
|
133
|
-
}));
|
|
134
|
-
const systemPromptSection = formatSystemPromptFacts(orgFacts);
|
|
135
|
-
const userMessageSection = formatUserMessageFacts(userFacts, integrationFactsResults);
|
|
136
|
-
return {
|
|
137
|
-
systemPromptSection,
|
|
138
|
-
userMessageSection,
|
|
139
|
-
facts: {
|
|
140
|
-
org: orgFacts,
|
|
141
|
-
user: userFacts,
|
|
142
|
-
integrations: integrationFactsResults.reduce((acc, r) => {
|
|
143
|
-
acc[r.integration.id] = r.facts;
|
|
144
|
-
return acc;
|
|
145
|
-
}, {}),
|
|
146
|
-
},
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
catch (error) {
|
|
150
|
-
logger.error("Failed to load facts for system prompt", getErrorMeta(error));
|
|
151
|
-
return {
|
|
152
|
-
systemPromptSection: "",
|
|
153
|
-
userMessageSection: "",
|
|
154
|
-
facts: {
|
|
155
|
-
org: [],
|
|
156
|
-
user: [],
|
|
157
|
-
integrations: {},
|
|
158
|
-
},
|
|
159
|
-
};
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Given loaded facts, returns only the facts that haven't been sent to UI yet.
|
|
164
|
-
* Also marks these facts as sent.
|
|
165
|
-
*/
|
|
166
|
-
getNetNewFacts(facts) {
|
|
167
|
-
const filterNetNew = (factList) => {
|
|
168
|
-
return factList.filter((fact) => {
|
|
169
|
-
if (this.sentFactIds.has(fact.id)) {
|
|
170
|
-
return false;
|
|
171
|
-
}
|
|
172
|
-
this.sentFactIds.add(fact.id);
|
|
173
|
-
return true;
|
|
174
|
-
});
|
|
175
|
-
};
|
|
176
|
-
const netNewIntegrations = {};
|
|
177
|
-
for (const [integrationId, integrationFacts] of Object.entries(facts.integrations)) {
|
|
178
|
-
const netNew = filterNetNew(integrationFacts);
|
|
179
|
-
if (netNew.length > 0) {
|
|
180
|
-
netNewIntegrations[integrationId] = netNew;
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
return {
|
|
184
|
-
org: filterNetNew(facts.org),
|
|
185
|
-
user: filterNetNew(facts.user),
|
|
186
|
-
integrations: netNewIntegrations,
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
hasAnyFacts(facts) {
|
|
190
|
-
return (facts.org.length > 0 ||
|
|
191
|
-
facts.user.length > 0 ||
|
|
192
|
-
Object.keys(facts.integrations).length > 0);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
//# sourceMappingURL=knowledge-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-manager.js","sourceRoot":"","sources":["../../../src/ai-service/facts/knowledge-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Recording module for capturing AI interactions.
|
|
3
|
-
*
|
|
4
|
-
* This module provides infrastructure for recording socket messages,
|
|
5
|
-
* tool executions, and LLM calls for later replay.
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* ```typescript
|
|
9
|
-
* import { RecordingManager } from './recording';
|
|
10
|
-
*
|
|
11
|
-
* const recorder = new RecordingManager({
|
|
12
|
-
* recordingsDir: '/path/to/.superblocks/recordings',
|
|
13
|
-
* appRootDirPath: '/path/to/app',
|
|
14
|
-
* });
|
|
15
|
-
*
|
|
16
|
-
* // Start recording with optional initial commit ID
|
|
17
|
-
* recorder.start(initialCommitId);
|
|
18
|
-
*
|
|
19
|
-
* // Entries are written to {recordingsDir}/{sessionId}/recording.jsonl
|
|
20
|
-
* ```
|
|
21
|
-
*/
|
|
22
|
-
export { RecordingManager, type RecordingManagerConfig, } from "./recording-manager.js";
|
|
23
|
-
export { createToolRecordingMiddleware } from "./recorders/tool-recorder.js";
|
|
24
|
-
export { createRecordingFetch } from "./recorders/llm-recorder.js";
|
|
25
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ai-service/recording/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EACL,gBAAgB,EAChB,KAAK,sBAAsB,GAC5B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Recording module for capturing AI interactions.
|
|
3
|
-
*
|
|
4
|
-
* This module provides infrastructure for recording socket messages,
|
|
5
|
-
* tool executions, and LLM calls for later replay.
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* ```typescript
|
|
9
|
-
* import { RecordingManager } from './recording';
|
|
10
|
-
*
|
|
11
|
-
* const recorder = new RecordingManager({
|
|
12
|
-
* recordingsDir: '/path/to/.superblocks/recordings',
|
|
13
|
-
* appRootDirPath: '/path/to/app',
|
|
14
|
-
* });
|
|
15
|
-
*
|
|
16
|
-
* // Start recording with optional initial commit ID
|
|
17
|
-
* recorder.start(initialCommitId);
|
|
18
|
-
*
|
|
19
|
-
* // Entries are written to {recordingsDir}/{sessionId}/recording.jsonl
|
|
20
|
-
* ```
|
|
21
|
-
*/
|
|
22
|
-
// Manager
|
|
23
|
-
export { RecordingManager, } from "./recording-manager.js";
|
|
24
|
-
// Recorders
|
|
25
|
-
export { createToolRecordingMiddleware } from "./recorders/tool-recorder.js";
|
|
26
|
-
export { createRecordingFetch } from "./recorders/llm-recorder.js";
|
|
27
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai-service/recording/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,UAAU;AACV,OAAO,EACL,gBAAgB,GAEjB,MAAM,wBAAwB,CAAC;AAEhC,YAAY;AACZ,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* LLM call recorder fetch wrapper.
|
|
3
|
-
*
|
|
4
|
-
* Creates a fetch wrapper that records LLM calls passing through
|
|
5
|
-
* the Clark provider. Handles both streaming (doStream) and
|
|
6
|
-
* non-streaming (doGenerate) requests.
|
|
7
|
-
*/
|
|
8
|
-
import type { RecordingManager } from "../recording-manager.js";
|
|
9
|
-
import type { FetchFunction } from "@ai-sdk/provider-utils";
|
|
10
|
-
/**
|
|
11
|
-
* Creates a recording fetch wrapper for LLM calls.
|
|
12
|
-
*
|
|
13
|
-
* This wrapper intercepts requests to the LLM provider and records
|
|
14
|
-
* both the request and response data. It handles:
|
|
15
|
-
* - Non-streaming requests (doGenerate): Clones and parses the JSON response
|
|
16
|
-
* - Streaming requests (doStream): Buffers SSE chunks to reconstruct the response
|
|
17
|
-
*
|
|
18
|
-
* @param recorder - The RecordingManager instance
|
|
19
|
-
* @param baseFetch - The underlying fetch function to wrap (defaults to global fetch)
|
|
20
|
-
* @returns A wrapped fetch function that records LLM calls
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
* ```typescript
|
|
24
|
-
* const recordingFetch = createRecordingFetch(recorder);
|
|
25
|
-
*
|
|
26
|
-
* // Use in provider settings
|
|
27
|
-
* const settings = {
|
|
28
|
-
* clark: {
|
|
29
|
-
* fetch: recordingFetch
|
|
30
|
-
* }
|
|
31
|
-
* };
|
|
32
|
-
* ```
|
|
33
|
-
*/
|
|
34
|
-
export declare function createRecordingFetch(recorder: RecordingManager, baseFetch?: FetchFunction): FetchFunction;
|
|
35
|
-
//# sourceMappingURL=llm-recorder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"llm-recorder.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/recording/recorders/llm-recorder.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AA4B5D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,GAAE,aAAqB,GAC/B,aAAa,CAoDf"}
|
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* LLM call recorder fetch wrapper.
|
|
3
|
-
*
|
|
4
|
-
* Creates a fetch wrapper that records LLM calls passing through
|
|
5
|
-
* the Clark provider. Handles both streaming (doStream) and
|
|
6
|
-
* non-streaming (doGenerate) requests.
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* Creates a recording fetch wrapper for LLM calls.
|
|
10
|
-
*
|
|
11
|
-
* This wrapper intercepts requests to the LLM provider and records
|
|
12
|
-
* both the request and response data. It handles:
|
|
13
|
-
* - Non-streaming requests (doGenerate): Clones and parses the JSON response
|
|
14
|
-
* - Streaming requests (doStream): Buffers SSE chunks to reconstruct the response
|
|
15
|
-
*
|
|
16
|
-
* @param recorder - The RecordingManager instance
|
|
17
|
-
* @param baseFetch - The underlying fetch function to wrap (defaults to global fetch)
|
|
18
|
-
* @returns A wrapped fetch function that records LLM calls
|
|
19
|
-
*
|
|
20
|
-
* @example
|
|
21
|
-
* ```typescript
|
|
22
|
-
* const recordingFetch = createRecordingFetch(recorder);
|
|
23
|
-
*
|
|
24
|
-
* // Use in provider settings
|
|
25
|
-
* const settings = {
|
|
26
|
-
* clark: {
|
|
27
|
-
* fetch: recordingFetch
|
|
28
|
-
* }
|
|
29
|
-
* };
|
|
30
|
-
* ```
|
|
31
|
-
*/
|
|
32
|
-
export function createRecordingFetch(recorder, baseFetch = fetch) {
|
|
33
|
-
return async (url, init) => {
|
|
34
|
-
// If recording is not enabled, just pass through
|
|
35
|
-
if (!recorder.isEnabled()) {
|
|
36
|
-
return baseFetch(url, init);
|
|
37
|
-
}
|
|
38
|
-
const startTime = Date.now();
|
|
39
|
-
const urlString = url.toString();
|
|
40
|
-
// Parse request body
|
|
41
|
-
let requestBody = {};
|
|
42
|
-
try {
|
|
43
|
-
if (init?.body && typeof init.body === "string") {
|
|
44
|
-
requestBody = JSON.parse(init.body);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
catch {
|
|
48
|
-
// Failed to parse request body, continue with empty object
|
|
49
|
-
}
|
|
50
|
-
// Determine if this is a streaming request
|
|
51
|
-
const isStreaming = requestBody.stream === true || urlString.includes("/stream");
|
|
52
|
-
const endpoint = isStreaming ? "stream" : "generate";
|
|
53
|
-
// Execute the actual fetch
|
|
54
|
-
const response = await baseFetch(url, init);
|
|
55
|
-
// Record based on response type
|
|
56
|
-
if (isStreaming && response.body) {
|
|
57
|
-
// For streaming responses, wrap the body to capture chunks
|
|
58
|
-
return createRecordingStreamResponse(response, recorder, requestBody, endpoint, startTime);
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
// For non-streaming responses, clone and parse
|
|
62
|
-
return recordNonStreamingResponse(response, recorder, requestBody, endpoint, startTime);
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Records a non-streaming LLM response.
|
|
68
|
-
*/
|
|
69
|
-
async function recordNonStreamingResponse(response, recorder, requestBody, endpoint, startTime) {
|
|
70
|
-
try {
|
|
71
|
-
// Clone response to read body without consuming it
|
|
72
|
-
const clonedResponse = response.clone();
|
|
73
|
-
const responseBody = await clonedResponse.json();
|
|
74
|
-
const recording = {
|
|
75
|
-
endpoint,
|
|
76
|
-
request: {
|
|
77
|
-
model: requestBody.model ?? "unknown",
|
|
78
|
-
messages: requestBody.messages ?? [],
|
|
79
|
-
tools: requestBody.tools,
|
|
80
|
-
system: requestBody.system,
|
|
81
|
-
},
|
|
82
|
-
response: {
|
|
83
|
-
content: responseBody.text ?? responseBody.content ?? "",
|
|
84
|
-
toolCalls: responseBody.toolCalls ?? [],
|
|
85
|
-
usage: responseBody.usage
|
|
86
|
-
? {
|
|
87
|
-
inputTokens: responseBody.usage.inputTokens,
|
|
88
|
-
outputTokens: responseBody.usage.outputTokens,
|
|
89
|
-
totalTokens: responseBody.usage.totalTokens,
|
|
90
|
-
}
|
|
91
|
-
: undefined,
|
|
92
|
-
finishReason: responseBody.finishReason,
|
|
93
|
-
},
|
|
94
|
-
durationMs: Date.now() - startTime,
|
|
95
|
-
};
|
|
96
|
-
recorder.recordLLM(recording);
|
|
97
|
-
}
|
|
98
|
-
catch {
|
|
99
|
-
// Failed to parse response, record what we have
|
|
100
|
-
recorder.recordLLM({
|
|
101
|
-
endpoint,
|
|
102
|
-
request: {
|
|
103
|
-
model: requestBody.model ?? "unknown",
|
|
104
|
-
messages: requestBody.messages ?? [],
|
|
105
|
-
tools: requestBody.tools,
|
|
106
|
-
system: requestBody.system,
|
|
107
|
-
},
|
|
108
|
-
response: {
|
|
109
|
-
content: "[failed to parse response]",
|
|
110
|
-
},
|
|
111
|
-
durationMs: Date.now() - startTime,
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
return response;
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Creates a response with a recording stream wrapper.
|
|
118
|
-
*
|
|
119
|
-
* The stream passes through all chunks while accumulating data
|
|
120
|
-
* for recording. When the stream completes, the accumulated
|
|
121
|
-
* response is recorded.
|
|
122
|
-
*/
|
|
123
|
-
function createRecordingStreamResponse(response, recorder, requestBody, endpoint, startTime) {
|
|
124
|
-
if (!response.body) {
|
|
125
|
-
return response;
|
|
126
|
-
}
|
|
127
|
-
const accumulated = {
|
|
128
|
-
content: "",
|
|
129
|
-
toolCalls: [],
|
|
130
|
-
};
|
|
131
|
-
const transformedBody = response.body.pipeThrough(new TransformStream({
|
|
132
|
-
transform(chunk, controller) {
|
|
133
|
-
// Pass through the chunk
|
|
134
|
-
controller.enqueue(chunk);
|
|
135
|
-
// Try to parse and accumulate SSE data
|
|
136
|
-
try {
|
|
137
|
-
const text = new TextDecoder().decode(chunk);
|
|
138
|
-
accumulateSSEData(text, accumulated);
|
|
139
|
-
}
|
|
140
|
-
catch {
|
|
141
|
-
// Failed to parse chunk, continue
|
|
142
|
-
}
|
|
143
|
-
},
|
|
144
|
-
flush() {
|
|
145
|
-
// Stream completed, record the accumulated response
|
|
146
|
-
const recording = {
|
|
147
|
-
endpoint,
|
|
148
|
-
request: {
|
|
149
|
-
model: requestBody.model ?? "unknown",
|
|
150
|
-
messages: requestBody.messages ?? [],
|
|
151
|
-
tools: requestBody.tools,
|
|
152
|
-
system: requestBody.system,
|
|
153
|
-
},
|
|
154
|
-
response: {
|
|
155
|
-
content: accumulated.content,
|
|
156
|
-
toolCalls: accumulated.toolCalls.length > 0
|
|
157
|
-
? accumulated.toolCalls
|
|
158
|
-
: undefined,
|
|
159
|
-
usage: accumulated.usage,
|
|
160
|
-
finishReason: accumulated.finishReason,
|
|
161
|
-
},
|
|
162
|
-
durationMs: Date.now() - startTime,
|
|
163
|
-
};
|
|
164
|
-
recorder.recordLLM(recording);
|
|
165
|
-
},
|
|
166
|
-
}));
|
|
167
|
-
return new Response(transformedBody, {
|
|
168
|
-
status: response.status,
|
|
169
|
-
statusText: response.statusText,
|
|
170
|
-
headers: response.headers,
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Accumulates data from SSE chunks.
|
|
175
|
-
*
|
|
176
|
-
* Parses SSE data lines and extracts relevant content for recording.
|
|
177
|
-
*/
|
|
178
|
-
function accumulateSSEData(text, accumulated) {
|
|
179
|
-
// Split by SSE data lines
|
|
180
|
-
const lines = text.split("\n");
|
|
181
|
-
for (const line of lines) {
|
|
182
|
-
if (!line.startsWith("data: "))
|
|
183
|
-
continue;
|
|
184
|
-
const data = line.slice(6); // Remove "data: " prefix
|
|
185
|
-
if (data === "[DONE]")
|
|
186
|
-
continue;
|
|
187
|
-
try {
|
|
188
|
-
const parsed = JSON.parse(data);
|
|
189
|
-
// Handle different chunk types from the Clark provider
|
|
190
|
-
switch (parsed.type) {
|
|
191
|
-
case "text-delta":
|
|
192
|
-
accumulated.content += parsed.textDelta ?? parsed.text ?? "";
|
|
193
|
-
break;
|
|
194
|
-
case "tool-call":
|
|
195
|
-
accumulated.toolCalls.push({
|
|
196
|
-
toolCallId: parsed.toolCallId,
|
|
197
|
-
toolName: parsed.toolName,
|
|
198
|
-
input: parsed.input,
|
|
199
|
-
});
|
|
200
|
-
break;
|
|
201
|
-
case "finish":
|
|
202
|
-
case "step-finish":
|
|
203
|
-
if (parsed.usage) {
|
|
204
|
-
accumulated.usage = {
|
|
205
|
-
inputTokens: parsed.usage.inputTokens ?? parsed.usage.promptTokens,
|
|
206
|
-
outputTokens: parsed.usage.outputTokens ?? parsed.usage.completionTokens,
|
|
207
|
-
totalTokens: parsed.usage.totalTokens,
|
|
208
|
-
};
|
|
209
|
-
}
|
|
210
|
-
if (parsed.finishReason) {
|
|
211
|
-
accumulated.finishReason = parsed.finishReason;
|
|
212
|
-
}
|
|
213
|
-
break;
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
catch {
|
|
217
|
-
// Failed to parse SSE data, continue
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
//# sourceMappingURL=llm-recorder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"llm-recorder.js","sourceRoot":"","sources":["../../../../src/ai-service/recording/recorders/llm-recorder.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgCH;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAA0B,EAC1B,YAA2B,KAAK;IAEhC,OAAO,KAAK,EACV,GAAsB,EACtB,IAAkB,EACC,EAAE;QACrB,iDAAiD;QACjD,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;QAEjC,qBAAqB;QACrB,IAAI,WAAW,GAAmB,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,IAAI,IAAI,EAAE,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAChD,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,2DAA2D;QAC7D,CAAC;QAED,2CAA2C;QAC3C,MAAM,WAAW,GACf,WAAW,CAAC,MAAM,KAAK,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAA0B,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;QAE5E,2BAA2B;QAC3B,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAE5C,gCAAgC;QAChC,IAAI,WAAW,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YACjC,2DAA2D;YAC3D,OAAO,6BAA6B,CAClC,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,SAAS,CACV,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,+CAA+C;YAC/C,OAAO,0BAA0B,CAC/B,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,SAAS,CACV,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,0BAA0B,CACvC,QAAkB,EAClB,QAA0B,EAC1B,WAA2B,EAC3B,QAA+B,EAC/B,SAAiB;IAEjB,IAAI,CAAC;QACH,mDAAmD;QACnD,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QAEjD,MAAM,SAAS,GAAiB;YAC9B,QAAQ;YACR,OAAO,EAAE;gBACP,KAAK,EAAE,WAAW,CAAC,KAAK,IAAI,SAAS;gBACrC,QAAQ,EAAE,WAAW,CAAC,QAAQ,IAAI,EAAE;gBACpC,KAAK,EAAE,WAAW,CAAC,KAAK;gBACxB,MAAM,EAAE,WAAW,CAAC,MAAM;aAC3B;YACD,QAAQ,EAAE;gBACR,OAAO,EAAE,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC,OAAO,IAAI,EAAE;gBACxD,SAAS,EAAE,YAAY,CAAC,SAAS,IAAI,EAAE;gBACvC,KAAK,EAAE,YAAY,CAAC,KAAK;oBACvB,CAAC,CAAC;wBACE,WAAW,EAAE,YAAY,CAAC,KAAK,CAAC,WAAW;wBAC3C,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,YAAY;wBAC7C,WAAW,EAAE,YAAY,CAAC,KAAK,CAAC,WAAW;qBAC5C;oBACH,CAAC,CAAC,SAAS;gBACb,YAAY,EAAE,YAAY,CAAC,YAAY;aACxC;YACD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACnC,CAAC;QAEF,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,gDAAgD;QAChD,QAAQ,CAAC,SAAS,CAAC;YACjB,QAAQ;YACR,OAAO,EAAE;gBACP,KAAK,EAAE,WAAW,CAAC,KAAK,IAAI,SAAS;gBACrC,QAAQ,EAAE,WAAW,CAAC,QAAQ,IAAI,EAAE;gBACpC,KAAK,EAAE,WAAW,CAAC,KAAK;gBACxB,MAAM,EAAE,WAAW,CAAC,MAAM;aAC3B;YACD,QAAQ,EAAE;gBACR,OAAO,EAAE,4BAA4B;aACtC;YACD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACnC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,6BAA6B,CACpC,QAAkB,EAClB,QAA0B,EAC1B,WAA2B,EAC3B,QAA+B,EAC/B,SAAiB;IAEjB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,WAAW,GAA0B;QACzC,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,EAAE;KACd,CAAC;IAEF,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAC/C,IAAI,eAAe,CAAyB;QAC1C,SAAS,CAAC,KAAK,EAAE,UAAU;YACzB,yBAAyB;YACzB,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAE1B,uCAAuC;YACvC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC7C,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YACvC,CAAC;YAAC,MAAM,CAAC;gBACP,kCAAkC;YACpC,CAAC;QACH,CAAC;QACD,KAAK;YACH,oDAAoD;YACpD,MAAM,SAAS,GAAiB;gBAC9B,QAAQ;gBACR,OAAO,EAAE;oBACP,KAAK,EAAE,WAAW,CAAC,KAAK,IAAI,SAAS;oBACrC,QAAQ,EAAE,WAAW,CAAC,QAAQ,IAAI,EAAE;oBACpC,KAAK,EAAE,WAAW,CAAC,KAAK;oBACxB,MAAM,EAAE,WAAW,CAAC,MAAM;iBAC3B;gBACD,QAAQ,EAAE;oBACR,OAAO,EAAE,WAAW,CAAC,OAAO;oBAC5B,SAAS,EACP,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;wBAC9B,CAAC,CAAC,WAAW,CAAC,SAAS;wBACvB,CAAC,CAAC,SAAS;oBACf,KAAK,EAAE,WAAW,CAAC,KAAK;oBACxB,YAAY,EAAE,WAAW,CAAC,YAAY;iBACvC;gBACD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;aACnC,CAAC;YAEF,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;KACF,CAAC,CACH,CAAC;IAEF,OAAO,IAAI,QAAQ,CAAC,eAAe,EAAE;QACnC,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO;KAC1B,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CACxB,IAAY,EACZ,WAAkC;IAElC,0BAA0B;IAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,SAAS;QAEzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB;QACrD,IAAI,IAAI,KAAK,QAAQ;YAAE,SAAS;QAEhC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAEhC,uDAAuD;YACvD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;gBACpB,KAAK,YAAY;oBACf,WAAW,CAAC,OAAO,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;oBAC7D,MAAM;gBAER,KAAK,WAAW;oBACd,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC;wBACzB,UAAU,EAAE,MAAM,CAAC,UAAU;wBAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;wBACzB,KAAK,EAAE,MAAM,CAAC,KAAK;qBACpB,CAAC,CAAC;oBACH,MAAM;gBAER,KAAK,QAAQ,CAAC;gBACd,KAAK,aAAa;oBAChB,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;wBACjB,WAAW,CAAC,KAAK,GAAG;4BAClB,WAAW,EACT,MAAM,CAAC,KAAK,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY;4BACvD,YAAY,EACV,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,MAAM,CAAC,KAAK,CAAC,gBAAgB;4BAC5D,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,WAAW;yBACtC,CAAC;oBACJ,CAAC;oBACD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;wBACxB,WAAW,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;oBACjD,CAAC;oBACD,MAAM;YACV,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,qCAAqC;QACvC,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Socket message recorder middleware.
|
|
3
|
-
*
|
|
4
|
-
* Creates a middleware that records socket messages passing through
|
|
5
|
-
* the socket manager. Follows the existing middleware pattern used
|
|
6
|
-
* for authentication.
|
|
7
|
-
*/
|
|
8
|
-
import type { RecordingManager } from "../recording-manager.js";
|
|
9
|
-
import type { GenericMiddleware, RequestContextBase } from "@superblocksteam/shared";
|
|
10
|
-
/**
|
|
11
|
-
* Extended context that includes method information.
|
|
12
|
-
* The TracedSocket infrastructure provides the method name in the context.
|
|
13
|
-
*/
|
|
14
|
-
type RecordingContext = RequestContextBase & {
|
|
15
|
-
/** The socket method being called */
|
|
16
|
-
method?: string;
|
|
17
|
-
};
|
|
18
|
-
/**
|
|
19
|
-
* Creates a socket recording middleware.
|
|
20
|
-
*
|
|
21
|
-
* This middleware records all socket messages before passing them to the next
|
|
22
|
-
* handler. It captures the method name from context, request parameters, and peer ID.
|
|
23
|
-
*
|
|
24
|
-
* The actual data cleaning is handled by RecordingManager.recordSocket(),
|
|
25
|
-
* which uses a switch statement to decide what to record for each method.
|
|
26
|
-
*
|
|
27
|
-
* @param recorder - The RecordingManager instance
|
|
28
|
-
* @returns A GenericMiddleware that records socket messages
|
|
29
|
-
*
|
|
30
|
-
* @example
|
|
31
|
-
* ```typescript
|
|
32
|
-
* const recordingMiddleware = createSocketRecordingMiddleware(recorder);
|
|
33
|
-
* // Add to middleware array in socket-manager.ts alongside authMiddleware
|
|
34
|
-
* ```
|
|
35
|
-
*/
|
|
36
|
-
export declare function createSocketRecordingMiddleware(recorder: RecordingManager): GenericMiddleware<any, RecordingContext>;
|
|
37
|
-
export {};
|
|
38
|
-
//# sourceMappingURL=socket-recorder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"socket-recorder.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/recording/recorders/socket-recorder.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAEjC;;;GAGG;AACH,KAAK,gBAAgB,GAAG,kBAAkB,GAAG;IAC3C,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,gBAAgB,GACzB,iBAAiB,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAqB1C"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Socket message recorder middleware.
|
|
3
|
-
*
|
|
4
|
-
* Creates a middleware that records socket messages passing through
|
|
5
|
-
* the socket manager. Follows the existing middleware pattern used
|
|
6
|
-
* for authentication.
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* Creates a socket recording middleware.
|
|
10
|
-
*
|
|
11
|
-
* This middleware records all socket messages before passing them to the next
|
|
12
|
-
* handler. It captures the method name from context, request parameters, and peer ID.
|
|
13
|
-
*
|
|
14
|
-
* The actual data cleaning is handled by RecordingManager.recordSocket(),
|
|
15
|
-
* which uses a switch statement to decide what to record for each method.
|
|
16
|
-
*
|
|
17
|
-
* @param recorder - The RecordingManager instance
|
|
18
|
-
* @returns A GenericMiddleware that records socket messages
|
|
19
|
-
*
|
|
20
|
-
* @example
|
|
21
|
-
* ```typescript
|
|
22
|
-
* const recordingMiddleware = createSocketRecordingMiddleware(recorder);
|
|
23
|
-
* // Add to middleware array in socket-manager.ts alongside authMiddleware
|
|
24
|
-
* ```
|
|
25
|
-
*/
|
|
26
|
-
export function createSocketRecordingMiddleware(recorder) {
|
|
27
|
-
return async (params, ctx, peer, next) => {
|
|
28
|
-
// Record the socket message if recording is enabled
|
|
29
|
-
if (recorder.isEnabled()) {
|
|
30
|
-
// Extract peer ID from various possible sources
|
|
31
|
-
const peerId = peer?.id ?? peer?.peerId ?? ctx?.peerId;
|
|
32
|
-
// Get method name from context (provided by TracedSocket)
|
|
33
|
-
const method = ctx?.method ?? "unknown";
|
|
34
|
-
recorder.recordSocket({
|
|
35
|
-
method,
|
|
36
|
-
request: params,
|
|
37
|
-
peerId,
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
// Continue to the next handler
|
|
41
|
-
return await next();
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=socket-recorder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"socket-recorder.js","sourceRoot":"","sources":["../../../../src/ai-service/recording/recorders/socket-recorder.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAiBH;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,+BAA+B,CAC7C,QAA0B;IAE1B,OAAO,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QACvC,oDAAoD;QACpD,IAAI,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC;YACzB,gDAAgD;YAChD,MAAM,MAAM,GACT,IAAY,EAAE,EAAE,IAAK,IAAY,EAAE,MAAM,IAAK,GAAW,EAAE,MAAM,CAAC;YAErE,0DAA0D;YAC1D,MAAM,MAAM,GAAI,GAAW,EAAE,MAAM,IAAI,SAAS,CAAC;YAEjD,QAAQ,CAAC,YAAY,CAAC;gBACpB,MAAM;gBACN,OAAO,EAAE,MAAM;gBACf,MAAM;aACP,CAAC,CAAC;QACL,CAAC;QAED,+BAA+B;QAC/B,OAAO,MAAM,IAAI,EAAE,CAAC;IACtB,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tool call recorder middleware.
|
|
3
|
-
*
|
|
4
|
-
* Creates a middleware that records tool executions passing through
|
|
5
|
-
* the tool registry. Follows the existing ToolMiddleware pattern.
|
|
6
|
-
*/
|
|
7
|
-
import type { ToolMiddleware } from "../../agent/tools2/types.js";
|
|
8
|
-
import type { RecordingManager } from "../recording-manager.js";
|
|
9
|
-
/**
|
|
10
|
-
* Creates a tool recording middleware.
|
|
11
|
-
*
|
|
12
|
-
* This middleware wraps tool execution to record inputs, outputs,
|
|
13
|
-
* errors, and timing information.
|
|
14
|
-
*
|
|
15
|
-
* @param recorder - The RecordingManager instance
|
|
16
|
-
* @returns A ToolMiddleware that records tool executions
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* ```typescript
|
|
20
|
-
* const recordingMiddleware = createToolRecordingMiddleware(recorder);
|
|
21
|
-
* registry.addMiddleware(recordingMiddleware);
|
|
22
|
-
* ```
|
|
23
|
-
*/
|
|
24
|
-
export declare function createToolRecordingMiddleware(recorder: RecordingManager): ToolMiddleware;
|
|
25
|
-
//# sourceMappingURL=tool-recorder.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tool-recorder.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/recording/recorders/tool-recorder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAQ,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGhE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,gBAAgB,GACzB,cAAc,CAuChB"}
|