@superblocksteam/vite-plugin-file-sync 2.0.72-next.11 → 2.0.72-next.14
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 +2 -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 +18 -2
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
- package/dist/ai-service/agent/subagents/testing/index.d.ts +3 -0
- package/dist/ai-service/agent/subagents/testing/index.d.ts.map +1 -0
- package/dist/ai-service/agent/subagents/testing/index.js +2 -0
- package/dist/ai-service/agent/subagents/testing/index.js.map +1 -0
- package/dist/ai-service/agent/subagents/testing/prompt-builder.d.ts +10 -0
- package/dist/ai-service/agent/subagents/testing/prompt-builder.d.ts.map +1 -0
- package/dist/ai-service/agent/subagents/testing/prompt-builder.js +162 -0
- package/dist/ai-service/agent/subagents/testing/prompt-builder.js.map +1 -0
- package/dist/ai-service/agent/subagents/testing/types.d.ts +67 -0
- package/dist/ai-service/agent/subagents/testing/types.d.ts.map +1 -0
- package/dist/ai-service/agent/subagents/testing/types.js +2 -0
- package/dist/ai-service/agent/subagents/testing/types.js.map +1 -0
- package/dist/ai-service/agent/subagents/types.d.ts +9 -8
- package/dist/ai-service/agent/subagents/types.d.ts.map +1 -1
- package/dist/ai-service/agent/subagents/types.js +9 -9
- package/dist/ai-service/agent/subagents/types.js.map +1 -1
- package/dist/ai-service/agent/tool-message-utils.d.ts +7 -2
- package/dist/ai-service/agent/tool-message-utils.d.ts.map +1 -1
- package/dist/ai-service/agent/tool-message-utils.js +21 -2
- package/dist/ai-service/agent/tool-message-utils.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/api-source.d.ts +1 -1
- package/dist/ai-service/agent/tools/apis/api-source.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/api-source.js +37 -9
- package/dist/ai-service/agent/tools/apis/api-source.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/test-api.js +1 -1
- package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -1
- package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts +1 -0
- package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-capture-screenshot.js +4 -2
- package/dist/ai-service/agent/tools/build-capture-screenshot.js.map +1 -1
- package/dist/ai-service/agent/tools/build-delete-file.d.ts +1 -1
- package/dist/ai-service/agent/tools/build-manage-checklist.d.ts +1 -1
- package/dist/ai-service/agent/tools/{build-read-files.d.ts → build-read-file.d.ts} +10 -6
- package/dist/ai-service/agent/tools/build-read-file.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-read-file.js +139 -0
- package/dist/ai-service/agent/tools/build-read-file.js.map +1 -0
- package/dist/ai-service/agent/tools/build-reload-file.d.ts +9 -3
- package/dist/ai-service/agent/tools/build-reload-file.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-reload-file.js +20 -9
- package/dist/ai-service/agent/tools/build-reload-file.js.map +1 -1
- package/dist/ai-service/agent/tools/get-console-logs.js +1 -1
- package/dist/ai-service/agent/tools/get-console-logs.js.map +1 -1
- package/dist/ai-service/agent/tools/get-runtime-errors.js +1 -1
- package/dist/ai-service/agent/tools/get-runtime-errors.js.map +1 -1
- package/dist/ai-service/agent/tools/index.d.ts +5 -1
- package/dist/ai-service/agent/tools/index.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/index.js +5 -1
- package/dist/ai-service/agent/tools/index.js.map +1 -1
- package/dist/ai-service/agent/tools/integrations/execute-request.d.ts +1 -1
- package/dist/ai-service/agent/tools/integrations/internal.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/integrations/internal.js +8 -1
- 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 +124 -31
- package/dist/ai-service/agent/tools.js.map +1 -1
- package/dist/ai-service/agent/tools2/access-control.d.ts +23 -1
- package/dist/ai-service/agent/tools2/access-control.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/access-control.js +67 -1
- package/dist/ai-service/agent/tools2/access-control.js.map +1 -1
- package/dist/ai-service/agent/tools2/entity-permissions.d.ts +26 -0
- package/dist/ai-service/agent/tools2/entity-permissions.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/entity-permissions.js +15 -0
- package/dist/ai-service/agent/tools2/entity-permissions.js.map +1 -1
- package/dist/ai-service/agent/tools2/example.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/example.js +2 -4
- package/dist/ai-service/agent/tools2/example.js.map +1 -1
- package/dist/ai-service/agent/tools2/index.d.ts +1 -1
- package/dist/ai-service/agent/tools2/index.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/index.js +1 -1
- package/dist/ai-service/agent/tools2/index.js.map +1 -1
- package/dist/ai-service/agent/tools2/registry.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/registry.js +37 -23
- package/dist/ai-service/agent/tools2/registry.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/ask-multi-choice.d.ts +0 -1
- package/dist/ai-service/agent/tools2/tools/ask-multi-choice.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/ask-multi-choice.js +1 -6
- package/dist/ai-service/agent/tools2/tools/ask-multi-choice.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/end-test-run.d.ts +31 -0
- package/dist/ai-service/agent/tools2/tools/end-test-run.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/end-test-run.js +107 -0
- package/dist/ai-service/agent/tools2/tools/end-test-run.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts +2 -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 +63 -76
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/list-attachments.d.ts +15 -0
- package/dist/ai-service/agent/tools2/tools/list-attachments.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/list-attachments.js +47 -0
- package/dist/ai-service/agent/tools2/tools/list-attachments.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/start-test-run.d.ts +24 -0
- package/dist/ai-service/agent/tools2/tools/start-test-run.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/start-test-run.js +340 -0
- package/dist/ai-service/agent/tools2/tools/start-test-run.js.map +1 -0
- package/dist/ai-service/agent/tools2/tools/update-test-case-status.d.ts +29 -0
- package/dist/ai-service/agent/tools2/tools/update-test-case-status.d.ts.map +1 -0
- package/dist/ai-service/agent/tools2/tools/update-test-case-status.js +106 -0
- package/dist/ai-service/agent/tools2/tools/update-test-case-status.js.map +1 -0
- package/dist/ai-service/agent/tools2/types.d.ts +6 -24
- package/dist/ai-service/agent/tools2/types.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/types.js +4 -15
- package/dist/ai-service/agent/tools2/types.js.map +1 -1
- package/dist/ai-service/agent/utils.d.ts +10 -0
- package/dist/ai-service/agent/utils.d.ts.map +1 -1
- package/dist/ai-service/agent/utils.js +160 -2
- package/dist/ai-service/agent/utils.js.map +1 -1
- package/dist/ai-service/attachments/index.d.ts +2 -0
- package/dist/ai-service/attachments/index.d.ts.map +1 -0
- package/dist/ai-service/attachments/index.js +2 -0
- package/dist/ai-service/attachments/index.js.map +1 -0
- package/dist/ai-service/attachments/store.d.ts +65 -0
- package/dist/ai-service/attachments/store.d.ts.map +1 -0
- package/dist/ai-service/attachments/store.js +158 -0
- package/dist/ai-service/attachments/store.js.map +1 -0
- package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
- package/dist/ai-service/chat/chat-session-store.js +133 -1
- package/dist/ai-service/chat/chat-session-store.js.map +1 -1
- package/dist/ai-service/context-download.d.ts +24 -0
- package/dist/ai-service/context-download.d.ts.map +1 -0
- package/dist/ai-service/context-download.js +127 -0
- package/dist/ai-service/context-download.js.map +1 -0
- package/dist/ai-service/context-upload.d.ts +17 -0
- package/dist/ai-service/context-upload.d.ts.map +1 -0
- package/dist/ai-service/context-upload.js +100 -0
- package/dist/ai-service/context-upload.js.map +1 -0
- package/dist/ai-service/features.d.ts +4 -0
- package/dist/ai-service/features.d.ts.map +1 -1
- package/dist/ai-service/features.js +4 -0
- package/dist/ai-service/features.js.map +1 -1
- package/dist/ai-service/index.d.ts +27 -3
- package/dist/ai-service/index.d.ts.map +1 -1
- package/dist/ai-service/index.js +259 -20
- package/dist/ai-service/index.js.map +1 -1
- package/dist/ai-service/judge/integration/mcp-client.d.ts +3 -6
- package/dist/ai-service/judge/integration/mcp-client.d.ts.map +1 -1
- package/dist/ai-service/judge/integration/mcp-client.js.map +1 -1
- package/dist/ai-service/judge/tools/playwright-action.d.ts +1 -1
- package/dist/ai-service/judge/tools/submit-feedback.d.ts +1 -1
- package/dist/ai-service/llm/client.d.ts +6 -0
- package/dist/ai-service/llm/client.d.ts.map +1 -1
- package/dist/ai-service/llm/client.js +9 -0
- package/dist/ai-service/llm/client.js.map +1 -1
- package/dist/ai-service/llm/context/constants.d.ts +8 -0
- package/dist/ai-service/llm/context/constants.d.ts.map +1 -1
- package/dist/ai-service/llm/context/constants.js +8 -0
- package/dist/ai-service/llm/context/constants.js.map +1 -1
- package/dist/ai-service/llm/context/context.d.ts +4 -0
- package/dist/ai-service/llm/context/context.d.ts.map +1 -1
- package/dist/ai-service/llm/context/context.js +22 -9
- package/dist/ai-service/llm/context/context.js.map +1 -1
- package/dist/ai-service/llm/context/manager.d.ts +6 -1
- package/dist/ai-service/llm/context/manager.d.ts.map +1 -1
- package/dist/ai-service/llm/context/manager.js +9 -1
- package/dist/ai-service/llm/context/manager.js.map +1 -1
- package/dist/ai-service/llm/context/serialization.d.ts +3 -0
- package/dist/ai-service/llm/context/serialization.d.ts.map +1 -1
- package/dist/ai-service/llm/context/utils/message-utils.d.ts +10 -0
- package/dist/ai-service/llm/context/utils/message-utils.d.ts.map +1 -1
- package/dist/ai-service/llm/context/utils/message-utils.js +92 -0
- package/dist/ai-service/llm/context/utils/message-utils.js.map +1 -1
- package/dist/ai-service/llm/interaction/provider.d.ts +1 -0
- package/dist/ai-service/llm/interaction/provider.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/config.d.ts +2 -0
- package/dist/ai-service/llm/stream/config.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/config.js +1 -0
- package/dist/ai-service/llm/stream/config.js.map +1 -1
- package/dist/ai-service/llm/stream/event-bus.d.ts +5 -0
- package/dist/ai-service/llm/stream/event-bus.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/event-bus.js.map +1 -1
- package/dist/ai-service/llm/stream/observers/llmobs.d.ts +4 -1
- package/dist/ai-service/llm/stream/observers/llmobs.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/observers/llmobs.js +194 -10
- package/dist/ai-service/llm/stream/observers/llmobs.js.map +1 -1
- package/dist/ai-service/llm/stream/observers/logging.d.ts +1 -0
- package/dist/ai-service/llm/stream/observers/logging.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/observers/logging.js +92 -20
- package/dist/ai-service/llm/stream/observers/logging.js.map +1 -1
- package/dist/ai-service/llm/stream/orchestrator.d.ts +7 -1
- package/dist/ai-service/llm/stream/orchestrator.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/orchestrator.js +23 -3
- package/dist/ai-service/llm/stream/orchestrator.js.map +1 -1
- package/dist/ai-service/llm/stream/retry-engine.d.ts +1 -0
- package/dist/ai-service/llm/stream/retry-engine.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/retry-engine.js +20 -1
- package/dist/ai-service/llm/stream/retry-engine.js.map +1 -1
- package/dist/ai-service/llm/stream/session.d.ts +14 -2
- package/dist/ai-service/llm/stream/session.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/session.js +15 -28
- package/dist/ai-service/llm/stream/session.js.map +1 -1
- package/dist/ai-service/llmobs/otel-exporter.d.ts +58 -0
- package/dist/ai-service/llmobs/otel-exporter.d.ts.map +1 -0
- package/dist/ai-service/llmobs/otel-exporter.js +182 -0
- package/dist/ai-service/llmobs/otel-exporter.js.map +1 -0
- package/dist/ai-service/llmobs/tracer.d.ts +9 -5
- package/dist/ai-service/llmobs/tracer.d.ts.map +1 -1
- package/dist/ai-service/llmobs/tracer.js +46 -41
- package/dist/ai-service/llmobs/tracer.js.map +1 -1
- package/dist/ai-service/llmobs/types.d.ts +1 -0
- package/dist/ai-service/llmobs/types.d.ts.map +1 -1
- package/dist/ai-service/mcp/adapter/mcp-tool-adapter.d.ts +1 -1
- package/dist/ai-service/mcp/adapter/mcp-tool-adapter.d.ts.map +1 -1
- package/dist/ai-service/mcp/adapter/mcp-tool-adapter.js +5 -2
- package/dist/ai-service/mcp/adapter/mcp-tool-adapter.js.map +1 -1
- package/dist/ai-service/mcp/embedded-playwright-mcp-server.d.ts +33 -1
- package/dist/ai-service/mcp/embedded-playwright-mcp-server.d.ts.map +1 -1
- package/dist/ai-service/mcp/embedded-playwright-mcp-server.js +949 -91
- package/dist/ai-service/mcp/embedded-playwright-mcp-server.js.map +1 -1
- package/dist/ai-service/mcp/playwright-server.d.ts +39 -0
- package/dist/ai-service/mcp/playwright-server.d.ts.map +1 -1
- package/dist/ai-service/mcp/playwright-server.js +56 -0
- package/dist/ai-service/mcp/playwright-server.js.map +1 -1
- package/dist/ai-service/mcp/types.d.ts +4 -0
- package/dist/ai-service/mcp/types.d.ts.map +1 -1
- package/dist/ai-service/prompts/explain-code.d.ts +2 -2
- package/dist/ai-service/prompts/explain-code.d.ts.map +1 -1
- package/dist/ai-service/prompts/explain-code.js +2 -2
- package/dist/ai-service/prompts/explain-code.js.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.d.ts +20 -1
- package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.js +16 -0
- package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
- package/dist/ai-service/state-machine/fsm.d.ts.map +1 -1
- package/dist/ai-service/state-machine/fsm.js +1 -0
- package/dist/ai-service/state-machine/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 +71 -7
- 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 +112 -33
- package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
- package/dist/ai-service/state-machine/helpers/peer.d.ts +1 -1
- package/dist/ai-service/state-machine/helpers/peer.d.ts.map +1 -1
- package/dist/ai-service/state-machine/helpers/peer.js +21 -4
- 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 +2 -0
- package/dist/ai-service/state-machine/mocks.js.map +1 -1
- package/dist/ai-service/state-machine/traced-fsm.d.ts +2 -0
- package/dist/ai-service/state-machine/traced-fsm.d.ts.map +1 -1
- package/dist/ai-service/state-machine/traced-fsm.js +18 -0
- package/dist/ai-service/state-machine/traced-fsm.js.map +1 -1
- package/dist/ai-service/util/safe-parse.d.ts +2 -0
- package/dist/ai-service/util/safe-parse.d.ts.map +1 -0
- package/dist/ai-service/util/safe-parse.js +9 -0
- package/dist/ai-service/util/safe-parse.js.map +1 -0
- package/dist/ai-service/util/safe-stringify.d.ts.map +1 -1
- package/dist/ai-service/util/safe-stringify.js +7 -0
- package/dist/ai-service/util/safe-stringify.js.map +1 -1
- package/dist/ai-service/util/scoped-token-utils.d.ts +15 -0
- package/dist/ai-service/util/scoped-token-utils.d.ts.map +1 -0
- package/dist/ai-service/util/scoped-token-utils.js +131 -0
- package/dist/ai-service/util/scoped-token-utils.js.map +1 -0
- package/dist/ai-service/util/stop-condition.d.ts +1 -0
- package/dist/ai-service/util/stop-condition.d.ts.map +1 -1
- package/dist/ai-service/util/stop-condition.js +5 -0
- package/dist/ai-service/util/stop-condition.js.map +1 -1
- package/dist/ai-service/util/strip-content.d.ts +2 -0
- package/dist/ai-service/util/strip-content.d.ts.map +1 -0
- package/dist/ai-service/util/strip-content.js +31 -0
- package/dist/ai-service/util/strip-content.js.map +1 -0
- package/dist/ai-service/util/tool-signature.d.ts +13 -0
- package/dist/ai-service/util/tool-signature.d.ts.map +1 -0
- package/dist/ai-service/util/tool-signature.js +38 -0
- package/dist/ai-service/util/tool-signature.js.map +1 -0
- package/dist/file-sync-vite-plugin.d.ts.map +1 -1
- package/dist/file-sync-vite-plugin.js +4 -1
- package/dist/file-sync-vite-plugin.js.map +1 -1
- package/dist/injected-index.js +2 -2
- package/dist/injected-index.js.map +1 -1
- package/dist/parsing/jsx.d.ts.map +1 -1
- package/dist/parsing/jsx.js +0 -2
- package/dist/parsing/jsx.js.map +1 -1
- package/dist/server-rpc/index.js +1 -1
- package/dist/server-rpc/index.js.map +1 -1
- package/dist/socket-manager.d.ts.map +1 -1
- package/dist/socket-manager.js +61 -4
- package/dist/socket-manager.js.map +1 -1
- package/package.json +9 -9
- package/dist/ai-service/agent/tools/build-read-files.d.ts.map +0 -1
- package/dist/ai-service/agent/tools/build-read-files.js +0 -67
- package/dist/ai-service/agent/tools/build-read-files.js.map +0 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { AiServiceConfig } from "../../types.js";
|
|
1
2
|
import type { AiMode } from "@superblocksteam/library-shared/types";
|
|
2
|
-
export declare const buildBaseSystemPrompt: (mode?: AiMode) => string;
|
|
3
|
+
export declare const buildBaseSystemPrompt: (config: AiServiceConfig, mode?: AiMode) => string;
|
|
3
4
|
//# sourceMappingURL=build-base-system-prompt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-base-system-prompt.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/agent/prompts/build-base-system-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAEpE,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"build-base-system-prompt.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/agent/prompts/build-base-system-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAEpE,eAAO,MAAM,qBAAqB,GAChC,QAAQ,eAAe,EACvB,OAAO,MAAM,WAgrBd,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const buildBaseSystemPrompt = (mode) => {
|
|
1
|
+
export const buildBaseSystemPrompt = (config, mode) => {
|
|
2
2
|
let preamble = "";
|
|
3
3
|
if (mode !== undefined) {
|
|
4
4
|
preamble = `## System Instructions
|
|
@@ -28,9 +28,13 @@ Here are some additional guidelines to follow:
|
|
|
28
28
|
|
|
29
29
|
`;
|
|
30
30
|
}
|
|
31
|
+
const safetyGuidance = config.features.safetyGuidancePrompt ?? DEFAULT_SAFETY_GUIDANCE;
|
|
32
|
+
const currentDate = new Date().toISOString().split("T")[0];
|
|
31
33
|
return (preamble +
|
|
32
34
|
/*md*/ `You are Clark, the Engineer Agent for the Superblocks platform based on the React framework.
|
|
33
35
|
|
|
36
|
+
Today is ${currentDate}.
|
|
37
|
+
|
|
34
38
|
The user is viewing their application in the editor UI.
|
|
35
39
|
Your job is to understand the user request, make a plan, and then act upon the plan. Do not hold back, the user's success is your success.
|
|
36
40
|
|
|
@@ -53,7 +57,9 @@ IMPORTANT: to explore the application structure, use tools:
|
|
|
53
57
|
- 'glob' to find files matching patterns across the directory tree (e.g., "**/*.tsx")
|
|
54
58
|
- 'grep' to search for specific code patterns or text within files
|
|
55
59
|
|
|
56
|
-
|
|
60
|
+
<safety_guidance>
|
|
61
|
+
${safetyGuidance}
|
|
62
|
+
</safety_guidance>
|
|
57
63
|
|
|
58
64
|
<engineering_best_practices>
|
|
59
65
|
**CRITICAL: Act like a professional engineer solving real problems.**
|
|
@@ -98,6 +104,7 @@ Think of cleanup as the final step: build → identify orphans → suggest delet
|
|
|
98
104
|
- Create components for things like: list items, cards, forms, filters, headers, sections
|
|
99
105
|
- Pages should orchestrate components, not contain all the JSX
|
|
100
106
|
- Monolithic pages are unacceptable and hard to maintain
|
|
107
|
+
- keep file sizes small and focused on a single responsibility
|
|
101
108
|
|
|
102
109
|
ALWAYS read components using tools like \`grep\` and \`glob\` when you do not have a clear idea of what a components props are.
|
|
103
110
|
|
|
@@ -672,4 +679,13 @@ You should always attempt to use an existing component before creating a new one
|
|
|
672
679
|
</tool_call_guidance>
|
|
673
680
|
`);
|
|
674
681
|
};
|
|
682
|
+
const DEFAULT_SAFETY_GUIDANCE = /*md*/ `
|
|
683
|
+
- NEVER assist with activities that could harm individuals or violate laws and regulations.
|
|
684
|
+
- NEVER create, modify, or suggest code that facilitates unauthorized access to systems or data.
|
|
685
|
+
- NEVER assist in developing malware, viruses, or any malicious software.
|
|
686
|
+
- NEVER provide guidance on bypassing security measures or exploiting vulnerabilities.
|
|
687
|
+
- NEVER engage in activities that compromise user privacy or data security.
|
|
688
|
+
- NEVER include hardcoded secrets, API keys, passwords, or sensitive information in the code.
|
|
689
|
+
- ALWAYS validate and sanitize user inputs to prevent security vulnerabilities such as SQL injection and XSS attacks.
|
|
690
|
+
`;
|
|
675
691
|
//# sourceMappingURL=build-base-system-prompt.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-base-system-prompt.js","sourceRoot":"","sources":["../../../../src/ai-service/agent/prompts/build-base-system-prompt.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"build-base-system-prompt.js","sourceRoot":"","sources":["../../../../src/ai-service/agent/prompts/build-base-system-prompt.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,MAAuB,EACvB,IAAa,EACb,EAAE;IACF,IAAI,QAAQ,GAAG,EAAE,CAAC;IAElB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAyBd,CAAC;IACA,CAAC;IAED,MAAM,cAAc,GAClB,MAAM,CAAC,QAAQ,CAAC,oBAAoB,IAAI,uBAAuB,CAAC;IAElE,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3D,OAAO,CACL,QAAQ;QACR,MAAM,CAAC;;WAEA,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;EAyBpB,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2mBf,CACE,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAG,MAAM,CAAC;;;;;;;;CAQtC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/agent/subagents/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AACpE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/ai-service/agent/subagents/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { TestRunConfig } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Build the system prompt for the test subagent.
|
|
4
|
+
*
|
|
5
|
+
* The test subagent is specialized for end-to-end testing with Playwright.
|
|
6
|
+
* It should NOT output text/reasoning messages - all context should be in
|
|
7
|
+
* the tool's description parameter.
|
|
8
|
+
*/
|
|
9
|
+
export declare function buildTestSubagentSystemPrompt(config: TestRunConfig): string;
|
|
10
|
+
//# sourceMappingURL=prompt-builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-builder.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/agent/subagents/testing/prompt-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAsB,MAAM,YAAY,CAAC;AA8EpE;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAkG3E"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format interactive elements into a readable string for the LLM.
|
|
3
|
+
*/
|
|
4
|
+
function formatInteractiveElements(elements) {
|
|
5
|
+
if (!elements || elements.length === 0) {
|
|
6
|
+
return "";
|
|
7
|
+
}
|
|
8
|
+
// Group elements by tag for better readability
|
|
9
|
+
const grouped = {};
|
|
10
|
+
for (const el of elements) {
|
|
11
|
+
const tag = el.tag;
|
|
12
|
+
if (!grouped[tag]) {
|
|
13
|
+
grouped[tag] = [];
|
|
14
|
+
}
|
|
15
|
+
grouped[tag].push(el);
|
|
16
|
+
}
|
|
17
|
+
const lines = [];
|
|
18
|
+
for (const [tag, els] of Object.entries(grouped)) {
|
|
19
|
+
for (const el of els) {
|
|
20
|
+
const parts = [`<${tag}>`];
|
|
21
|
+
// Add the most useful identifier info
|
|
22
|
+
if (el.text) {
|
|
23
|
+
parts.push(`"${el.text.slice(0, 50)}${el.text.length > 50 ? "..." : ""}"`);
|
|
24
|
+
}
|
|
25
|
+
if (el.testId) {
|
|
26
|
+
parts.push(`[data-testid="${el.testId}"]`);
|
|
27
|
+
}
|
|
28
|
+
if (el.id) {
|
|
29
|
+
parts.push(`#${el.id}`);
|
|
30
|
+
}
|
|
31
|
+
if (el.placeholder) {
|
|
32
|
+
parts.push(`[placeholder="${el.placeholder}"]`);
|
|
33
|
+
}
|
|
34
|
+
if (el.ariaLabel) {
|
|
35
|
+
parts.push(`[aria-label="${el.ariaLabel}"]`);
|
|
36
|
+
}
|
|
37
|
+
if (el.name) {
|
|
38
|
+
parts.push(`[name="${el.name}"]`);
|
|
39
|
+
}
|
|
40
|
+
if (el.href) {
|
|
41
|
+
parts.push(`[href="${el.href.slice(0, 50)}${el.href.length > 50 ? "..." : ""}"]`);
|
|
42
|
+
}
|
|
43
|
+
if (el.type) {
|
|
44
|
+
parts.push(`[type="${el.type}"]`);
|
|
45
|
+
}
|
|
46
|
+
if (el.role && el.role !== tag) {
|
|
47
|
+
parts.push(`[role="${el.role}"]`);
|
|
48
|
+
}
|
|
49
|
+
if (el.disabled) {
|
|
50
|
+
parts.push(`(DISABLED)`);
|
|
51
|
+
}
|
|
52
|
+
lines.push(`- ${parts.join(" ")}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// Limit to first 50 elements to avoid token bloat
|
|
56
|
+
const maxElements = 50;
|
|
57
|
+
if (lines.length > maxElements) {
|
|
58
|
+
return (lines.slice(0, maxElements).join("\n") +
|
|
59
|
+
`\n... and ${lines.length - maxElements} more elements`);
|
|
60
|
+
}
|
|
61
|
+
return lines.join("\n");
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Build the system prompt for the test subagent.
|
|
65
|
+
*
|
|
66
|
+
* The test subagent is specialized for end-to-end testing with Playwright.
|
|
67
|
+
* It should NOT output text/reasoning messages - all context should be in
|
|
68
|
+
* the tool's description parameter.
|
|
69
|
+
*/
|
|
70
|
+
export function buildTestSubagentSystemPrompt(config) {
|
|
71
|
+
const planSection = config.planContext?.plan
|
|
72
|
+
? `
|
|
73
|
+
## Plan to Verify
|
|
74
|
+
${config.planContext.plan}
|
|
75
|
+
`
|
|
76
|
+
: "";
|
|
77
|
+
const hasTestCases = config.testCases && config.testCases.length > 0;
|
|
78
|
+
const testCasesSection = hasTestCases
|
|
79
|
+
? `
|
|
80
|
+
## Test Cases to Execute (ALL REQUIRED)
|
|
81
|
+
|
|
82
|
+
⚠️ You MUST execute ALL ${config.testCases.length} test cases below. Do NOT skip any.
|
|
83
|
+
|
|
84
|
+
${config.testCases.map((tc) => `- **${tc.id}**: ${tc.name}${tc.description ? ` - ${tc.description}` : ""}`).join("\n")}
|
|
85
|
+
`
|
|
86
|
+
: "";
|
|
87
|
+
// Add DOM context section if interactive elements are provided
|
|
88
|
+
const domContextSection = config.interactiveElements && config.interactiveElements.length > 0
|
|
89
|
+
? `
|
|
90
|
+
## Page Elements (Current DOM State)
|
|
91
|
+
|
|
92
|
+
Use these elements for your selectors. Prefer \`data-testid\`, \`id\`, or unique text content.
|
|
93
|
+
|
|
94
|
+
${formatInteractiveElements(config.interactiveElements)}
|
|
95
|
+
`
|
|
96
|
+
: "";
|
|
97
|
+
const workflowSection = hasTestCases
|
|
98
|
+
? `## Workflow
|
|
99
|
+
|
|
100
|
+
Execute ALL ${config.testCases.length} test cases in order. For EACH test case:
|
|
101
|
+
1. Call \`updateTestCaseStatus(testCaseId, "running")\`
|
|
102
|
+
2. Use \`browser_playwright_action\` with the \`testCaseId\` parameter to test
|
|
103
|
+
3. Call \`updateTestCaseStatus(testCaseId, "passed")\` or \`updateTestCaseStatus(testCaseId, "failed")\`
|
|
104
|
+
|
|
105
|
+
After completing ALL ${config.testCases.length} test cases, call \`endTestRun\` with status and summary.
|
|
106
|
+
|
|
107
|
+
**Rules:**
|
|
108
|
+
- Each test case should generate at least one screenshot
|
|
109
|
+
- If a test case is taking too long because of flaky selectors, try to add \`data-testid\` attributes using \`edit\`
|
|
110
|
+
- If still not working, fail the test case and move on to the next one
|
|
111
|
+
- Do NOT call \`endTestRun\` until you have executed ALL test cases`
|
|
112
|
+
: `## Workflow
|
|
113
|
+
|
|
114
|
+
1. Use \`browser_playwright_action\` to interact with UI elements (clicks, form inputs, navigation)
|
|
115
|
+
2. Run MULTIPLE actions to thoroughly test the application
|
|
116
|
+
3. **When complete**: Call \`endTestRun\` with status and summary`;
|
|
117
|
+
const toolsSection = hasTestCases
|
|
118
|
+
? `## Available Tools
|
|
119
|
+
- \`updateTestCaseStatus\` - Update test case status before/after each test
|
|
120
|
+
- \`browser_playwright_action\` - Interact with and screenshot the app (include \`testCaseId\` parameter)
|
|
121
|
+
- \`edit\` - Add data-testid attributes when selectors are flaky
|
|
122
|
+
- \`read\` - Read source files to understand component structure
|
|
123
|
+
- \`endTestRun\` - **REQUIRED** - Call when ALL test cases are complete`
|
|
124
|
+
: `## Available Tools
|
|
125
|
+
- \`browser_playwright_action\` - Interact with and screenshot the app
|
|
126
|
+
- \`edit\` - Add data-testid attributes when selectors are flaky
|
|
127
|
+
- \`read\` - Read source files to understand component structure
|
|
128
|
+
- \`endTestRun\` - **REQUIRED** - Call when ALL testing is complete`;
|
|
129
|
+
return `You are a QA Testing Agent specialized in end-to-end testing of web applications using Playwright.
|
|
130
|
+
|
|
131
|
+
## Test Run Context
|
|
132
|
+
- Test Run ID: ${config.testRunId}
|
|
133
|
+
- Test Header: ${config.header}
|
|
134
|
+
${planSection}
|
|
135
|
+
${testCasesSection}
|
|
136
|
+
${domContextSection}
|
|
137
|
+
${workflowSection}
|
|
138
|
+
|
|
139
|
+
${toolsSection}
|
|
140
|
+
|
|
141
|
+
## Guidelines
|
|
142
|
+
|
|
143
|
+
- Write clear descriptions: "Verify **login form** displays with \`email\` field"
|
|
144
|
+
- Each browser action automatically includes a screenshot
|
|
145
|
+
- Prefer using the Page Elements section above for selectors - it shows what's available on the page
|
|
146
|
+
- Selector priority: \`data-testid\`, \`id\`, \`aria-label\`, text content, then class/tag
|
|
147
|
+
- Use \`edit\` to add \`data-testid\` attributes if selectors are unreliable
|
|
148
|
+
|
|
149
|
+
## Using evaluate()
|
|
150
|
+
- You can use \`evaluate()\` for custom JavaScript checks if needed
|
|
151
|
+
- ⚠️ IMPORTANT: \`evaluate()\` runs in the browser with standard CSS selectors only
|
|
152
|
+
- ❌ Do NOT use Playwright selectors like \`:has-text()\`, \`text=\`, or \`:visible\` in evaluate()
|
|
153
|
+
- ✓ Use standard CSS: \`document.querySelector('button[type="submit"]')\`
|
|
154
|
+
- ✓ Use data-testid: \`document.querySelector('[data-testid="submit-btn"]')\`
|
|
155
|
+
- ✓ Find by text: \`Array.from(document.querySelectorAll('button')).find(b => b.textContent.includes('Submit'))\`
|
|
156
|
+
|
|
157
|
+
## ⚠️ CRITICAL: You must not send any text messages - they will NOT be displayed to the user. All context and user information will be encapsulated in the tool calls.
|
|
158
|
+
|
|
159
|
+
## ⚠️ CRITICAL: You MUST call \`endTestRun\` to complete the test run
|
|
160
|
+
`;
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=prompt-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../../../../src/ai-service/agent/subagents/testing/prompt-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A test case generated for the test run.
|
|
3
|
+
*/
|
|
4
|
+
export interface TestCase {
|
|
5
|
+
id: string;
|
|
6
|
+
name: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Information about an interactive element on the page.
|
|
11
|
+
* Used for DOM context in testing prompts.
|
|
12
|
+
*/
|
|
13
|
+
export interface InteractiveElement {
|
|
14
|
+
tag: string;
|
|
15
|
+
text?: string;
|
|
16
|
+
id?: string;
|
|
17
|
+
className?: string;
|
|
18
|
+
testId?: string;
|
|
19
|
+
placeholder?: string;
|
|
20
|
+
href?: string;
|
|
21
|
+
type?: string;
|
|
22
|
+
role?: string;
|
|
23
|
+
ariaLabel?: string;
|
|
24
|
+
name?: string;
|
|
25
|
+
disabled?: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Configuration for starting a test run with the test subagent.
|
|
29
|
+
*/
|
|
30
|
+
export interface TestRunConfig {
|
|
31
|
+
/** Unique identifier for the test run */
|
|
32
|
+
testRunId: string;
|
|
33
|
+
/** Header/title displayed in the UI for the test run */
|
|
34
|
+
header: string;
|
|
35
|
+
/** Plan context from the main agent */
|
|
36
|
+
planContext?: {
|
|
37
|
+
plan?: string;
|
|
38
|
+
title?: string;
|
|
39
|
+
};
|
|
40
|
+
/** Predefined test cases to execute */
|
|
41
|
+
testCases?: TestCase[];
|
|
42
|
+
/** Interactive elements on the current page for DOM context */
|
|
43
|
+
interactiveElements?: InteractiveElement[];
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Result from a test step (browser action).
|
|
47
|
+
*/
|
|
48
|
+
export interface TestStepResult {
|
|
49
|
+
/** Unique identifier for the step */
|
|
50
|
+
stepId: string;
|
|
51
|
+
/** Human-readable description of what was tested */
|
|
52
|
+
description: string;
|
|
53
|
+
/** The action that was performed (click, fill, screenshot, etc.) */
|
|
54
|
+
action: string;
|
|
55
|
+
/** Whether the step succeeded */
|
|
56
|
+
success: boolean;
|
|
57
|
+
/** Screenshot captured during/after the step */
|
|
58
|
+
screenshot?: {
|
|
59
|
+
data: string;
|
|
60
|
+
format: string;
|
|
61
|
+
};
|
|
62
|
+
/** Additional details about the step (selector, value, etc.) */
|
|
63
|
+
details?: Record<string, any>;
|
|
64
|
+
/** Error message if the step failed */
|
|
65
|
+
error?: string;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/agent/subagents/testing/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,WAAW,CAAC,EAAE;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,uCAAuC;IACvC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,+DAA+D;IAC/D,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,gDAAgD;IAChD,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,gEAAgE;IAChE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/ai-service/agent/subagents/testing/types.ts"],"names":[],"mappings":""}
|
|
@@ -9,17 +9,17 @@
|
|
|
9
9
|
* Tools without this property are available to all subagents.
|
|
10
10
|
*
|
|
11
11
|
* @example
|
|
12
|
-
* // Define a tool restricted to
|
|
13
|
-
* const
|
|
14
|
-
* description: '
|
|
15
|
-
* allowedSubagents: [SubagentType.
|
|
12
|
+
* // Define a tool restricted to test subagent
|
|
13
|
+
* const testTool = createToolFactory('test-tool', () => ({
|
|
14
|
+
* description: 'Test-specific tool',
|
|
15
|
+
* allowedSubagents: [SubagentType.TEST],
|
|
16
16
|
* // ...
|
|
17
17
|
* }));
|
|
18
18
|
*
|
|
19
19
|
* @example
|
|
20
20
|
* // Get tools filtered for a specific subagent
|
|
21
21
|
* const tools = await registry.getToolsRecord({
|
|
22
|
-
* subagent: SubagentType.
|
|
22
|
+
* subagent: SubagentType.TEST,
|
|
23
23
|
* mode: AiMode.BUILD
|
|
24
24
|
* });
|
|
25
25
|
*/
|
|
@@ -31,9 +31,10 @@ export declare enum SubagentType {
|
|
|
31
31
|
*/
|
|
32
32
|
MAIN = "main",
|
|
33
33
|
/**
|
|
34
|
-
*
|
|
35
|
-
* Has access to
|
|
34
|
+
* Test subagent - Specializes in end-to-end testing of applications.
|
|
35
|
+
* Has access to Playwright browser automation tools.
|
|
36
|
+
* Invoked by the main agent via the startTestRun tool.
|
|
36
37
|
*/
|
|
37
|
-
|
|
38
|
+
TEST = "test"
|
|
38
39
|
}
|
|
39
40
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/agent/subagents/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,oBAAY,YAAY;IACtB;;;;OAIG;IACH,IAAI,SAAS;IAEb
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/agent/subagents/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,oBAAY,YAAY;IACtB;;;;OAIG;IACH,IAAI,SAAS;IAEb;;;;OAIG;IACH,IAAI,SAAS;CACd"}
|
|
@@ -9,17 +9,17 @@
|
|
|
9
9
|
* Tools without this property are available to all subagents.
|
|
10
10
|
*
|
|
11
11
|
* @example
|
|
12
|
-
* // Define a tool restricted to
|
|
13
|
-
* const
|
|
14
|
-
* description: '
|
|
15
|
-
* allowedSubagents: [SubagentType.
|
|
12
|
+
* // Define a tool restricted to test subagent
|
|
13
|
+
* const testTool = createToolFactory('test-tool', () => ({
|
|
14
|
+
* description: 'Test-specific tool',
|
|
15
|
+
* allowedSubagents: [SubagentType.TEST],
|
|
16
16
|
* // ...
|
|
17
17
|
* }));
|
|
18
18
|
*
|
|
19
19
|
* @example
|
|
20
20
|
* // Get tools filtered for a specific subagent
|
|
21
21
|
* const tools = await registry.getToolsRecord({
|
|
22
|
-
* subagent: SubagentType.
|
|
22
|
+
* subagent: SubagentType.TEST,
|
|
23
23
|
* mode: AiMode.BUILD
|
|
24
24
|
* });
|
|
25
25
|
*/
|
|
@@ -32,10 +32,10 @@ export var SubagentType;
|
|
|
32
32
|
*/
|
|
33
33
|
SubagentType["MAIN"] = "main";
|
|
34
34
|
/**
|
|
35
|
-
*
|
|
36
|
-
* Has access to
|
|
35
|
+
* Test subagent - Specializes in end-to-end testing of applications.
|
|
36
|
+
* Has access to Playwright browser automation tools.
|
|
37
|
+
* Invoked by the main agent via the startTestRun tool.
|
|
37
38
|
*/
|
|
38
|
-
|
|
39
|
-
SubagentType["API"] = "api";
|
|
39
|
+
SubagentType["TEST"] = "test";
|
|
40
40
|
})(SubagentType || (SubagentType = {}));
|
|
41
41
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/ai-service/agent/subagents/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAN,IAAY,YAcX;AAdD,WAAY,YAAY;IACtB;;;;OAIG;IACH,6BAAa,CAAA;IAEb
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/ai-service/agent/subagents/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAN,IAAY,YAcX;AAdD,WAAY,YAAY;IACtB;;;;OAIG;IACH,6BAAa,CAAA;IAEb;;;;OAIG;IACH,6BAAa,CAAA;AACf,CAAC,EAdW,YAAY,KAAZ,YAAY,QAcvB"}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import type { buildTools } from "./tools.js";
|
|
2
2
|
import type { Clark } from "../state-machine/clark-fsm.js";
|
|
3
|
-
import type { AiToolCallChatMessage, ToolName } from "@superblocksteam/library-shared/types";
|
|
3
|
+
import type { AiToolCallChatMessage, BrowserPlaywrightToolCallChatMessage, AiToolExecutionErrorCode, ToolName } from "@superblocksteam/library-shared/types";
|
|
4
4
|
import type { Tool } from "ai";
|
|
5
5
|
type AppToolSet = Awaited<ReturnType<typeof buildTools>>;
|
|
6
|
+
type DynamicToolSet = {
|
|
7
|
+
browser_playwright_action: Tool<BrowserPlaywrightToolCallChatMessage["args"]>;
|
|
8
|
+
};
|
|
9
|
+
type ToolSet = AppToolSet & DynamicToolSet;
|
|
6
10
|
type ToolInputMap = {
|
|
7
|
-
[K in ToolName]:
|
|
11
|
+
[K in ToolName]: ToolSet[K] extends Tool<infer PARAMETERS> ? PARAMETERS : never;
|
|
8
12
|
};
|
|
9
13
|
type ToolArguments<N extends ToolName> = ToolInputMap[N];
|
|
10
14
|
/**
|
|
@@ -16,6 +20,7 @@ type ToolArguments<N extends ToolName> = ToolInputMap[N];
|
|
|
16
20
|
*/
|
|
17
21
|
export declare function getToolCallArguments<T extends ToolName>(toolName: T, toolArguments?: ToolArguments<T>, clark?: Clark): Promise<AiToolCallChatMessage["args"]>;
|
|
18
22
|
export declare function getToolOutput<T extends ToolName>(toolName: T, output: any): any;
|
|
23
|
+
export declare function getToolErrorCode(error: any): AiToolExecutionErrorCode | undefined;
|
|
19
24
|
export declare function getToolErrorMessage(error: any): string;
|
|
20
25
|
export {};
|
|
21
26
|
//# sourceMappingURL=tool-message-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-message-utils.d.ts","sourceRoot":"","sources":["../../../src/ai-service/agent/tool-message-utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tool-message-utils.d.ts","sourceRoot":"","sources":["../../../src/ai-service/agent/tool-message-utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EACV,qBAAqB,EACrB,oCAAoC,EACpC,wBAAwB,EACxB,QAAQ,EACT,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAG/B,KAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC;AACzD,KAAK,cAAc,GAAG;IACpB,yBAAyB,EAAE,IAAI,CAAC,oCAAoC,CAAC,MAAM,CAAC,CAAC,CAAC;CAC/E,CAAC;AACF,KAAK,OAAO,GAAG,UAAU,GAAG,cAAc,CAAC;AAG3C,KAAK,YAAY,GAAG;KACjB,CAAC,IAAI,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,MAAM,UAAU,CAAC,GACtD,UAAU,GACV,KAAK;CACV,CAAC;AAEF,KAAK,aAAa,CAAC,CAAC,SAAS,QAAQ,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;AA+HzD;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,SAAS,QAAQ,EAC3D,QAAQ,EAAE,CAAC,EACX,aAAa,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,EAChC,KAAK,CAAC,EAAE,KAAK,GACZ,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;AAgB1C,wBAAgB,aAAa,CAAC,CAAC,SAAS,QAAQ,EAC9C,QAAQ,EAAE,CAAC,EACX,MAAM,EAAE,GAAG,GACV,GAAG,CAkCL;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,GAAG,GACT,wBAAwB,GAAG,SAAS,CAKtC;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAuBtD"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { safeJsonStringify } from "../util/safe-stringify.js";
|
|
2
|
+
import { ToolExecutionError } from "./tools2/types.js";
|
|
2
3
|
// Define handlers with proper typing
|
|
3
4
|
// The MessageHandlers type ensures that each handler receives the correct
|
|
4
5
|
// argument type based on its key. TypeScript automatically infers the correct
|
|
@@ -19,8 +20,9 @@ const messageHandlers = {
|
|
|
19
20
|
packages: args?.packages ?? [],
|
|
20
21
|
};
|
|
21
22
|
},
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
build_readFile: (args) => ({
|
|
24
|
+
filePath: args?.filePath ?? "",
|
|
25
|
+
ranges: args?.ranges ?? [],
|
|
24
26
|
}),
|
|
25
27
|
build_reloadFile: (args) => ({
|
|
26
28
|
filePath: args?.filePath ?? "",
|
|
@@ -97,6 +99,14 @@ const messageHandlers = {
|
|
|
97
99
|
filePath: args?.filePath ?? "",
|
|
98
100
|
reason: args?.reason,
|
|
99
101
|
}),
|
|
102
|
+
browser_playwright_action: (args) => ({
|
|
103
|
+
action: args?.action ?? "navigate",
|
|
104
|
+
url: args?.url,
|
|
105
|
+
selector: args?.selector,
|
|
106
|
+
value: args?.value,
|
|
107
|
+
fullPage: args?.fullPage,
|
|
108
|
+
script: args?.script,
|
|
109
|
+
}),
|
|
100
110
|
};
|
|
101
111
|
export async function getToolCallArguments(toolName, toolArguments, clark) {
|
|
102
112
|
if (toolName in messageHandlers) {
|
|
@@ -132,12 +142,21 @@ export function getToolOutput(toolName, output) {
|
|
|
132
142
|
screenshotDataUrl: output?.dataUrl,
|
|
133
143
|
};
|
|
134
144
|
}
|
|
145
|
+
if (toolName === "browser_playwright_action") {
|
|
146
|
+
return output;
|
|
147
|
+
}
|
|
135
148
|
return undefined;
|
|
136
149
|
}
|
|
137
150
|
catch {
|
|
138
151
|
return undefined;
|
|
139
152
|
}
|
|
140
153
|
}
|
|
154
|
+
export function getToolErrorCode(error) {
|
|
155
|
+
if (error instanceof ToolExecutionError) {
|
|
156
|
+
return error.code;
|
|
157
|
+
}
|
|
158
|
+
return undefined;
|
|
159
|
+
}
|
|
141
160
|
export function getToolErrorMessage(error) {
|
|
142
161
|
try {
|
|
143
162
|
if (error instanceof Error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-message-utils.js","sourceRoot":"","sources":["../../../src/ai-service/agent/tool-message-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-message-utils.js","sourceRoot":"","sources":["../../../src/ai-service/agent/tool-message-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import type { FileArtifact } from "../../../types.js";
|
|
|
4
4
|
* Read the TypeScript source of an API
|
|
5
5
|
*
|
|
6
6
|
* Priority order:
|
|
7
|
-
* 1. Check scratch directory (primary location for TS source)
|
|
7
|
+
* 1. Check scratch directory if it is more recent than the YAML (primary location for TS source)
|
|
8
8
|
* 2. Generate from YAML if only api.yaml exists (legacy apps or after UI edits)
|
|
9
9
|
*/
|
|
10
10
|
export declare const readApiSource: (services: Pick<ClarkStateHandlerParams, "appShell" | "templateRenderer">, apiName: string, entityNames?: string[]) => Promise<FileArtifact | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-source.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools/apis/api-source.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GACxB,UAAU,IAAI,CAAC,uBAAuB,EAAE,UAAU,GAAG,kBAAkB,CAAC,EACxE,SAAS,MAAM,EACf,cAAc,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"api-source.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools/apis/api-source.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,GACxB,UAAU,IAAI,CAAC,uBAAuB,EAAE,UAAU,GAAG,kBAAkB,CAAC,EACxE,SAAS,MAAM,EACf,cAAc,MAAM,EAAE,sCAiFvB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,uBAAuB,GAChC,OAAO,CAAC,MAAM,CAAC,CAqBjB"}
|