@superblocksteam/vite-plugin-file-sync 2.0.59-next.1 → 2.0.59-next.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -1
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js +25 -9
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
- package/dist/ai-service/agent/subagents/apis/examples.d.ts.map +1 -1
- package/dist/ai-service/agent/subagents/apis/examples.js +137 -10
- package/dist/ai-service/agent/subagents/apis/examples.js.map +1 -1
- package/dist/ai-service/agent/subagents/apis/static-analysis.d.ts.map +1 -1
- package/dist/ai-service/agent/subagents/apis/static-analysis.js +14 -7
- package/dist/ai-service/agent/subagents/apis/static-analysis.js.map +1 -1
- package/dist/ai-service/agent/tool-message-utils.d.ts.map +1 -1
- package/dist/ai-service/agent/tool-message-utils.js +6 -2
- package/dist/ai-service/agent/tool-message-utils.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/analysis.d.ts +9 -0
- package/dist/ai-service/agent/tools/apis/analysis.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/analysis.js +358 -0
- package/dist/ai-service/agent/tools/apis/analysis.js.map +1 -0
- package/dist/ai-service/agent/{subagents → tools}/apis/api-executor.d.ts +35 -10
- package/dist/ai-service/agent/tools/apis/api-executor.d.ts.map +1 -0
- package/dist/ai-service/agent/{subagents → tools}/apis/api-executor.js +179 -94
- package/dist/ai-service/agent/tools/apis/api-executor.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/api-source.d.ts +19 -0
- package/dist/ai-service/agent/tools/apis/api-source.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/api-source.js +73 -0
- package/dist/ai-service/agent/tools/apis/api-source.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.d.ts +51 -0
- package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js +510 -0
- package/dist/ai-service/agent/tools/apis/api-validation-orchestrator.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/build-api-artifact.d.ts +32 -0
- package/dist/ai-service/agent/tools/apis/build-api-artifact.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/build-api-artifact.js +313 -0
- package/dist/ai-service/agent/tools/apis/build-api-artifact.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/build-api.d.ts +1 -10
- package/dist/ai-service/agent/tools/apis/build-api.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/build-api.js +26 -238
- package/dist/ai-service/agent/tools/apis/build-api.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/get-api-docs.d.ts +11 -0
- package/dist/ai-service/agent/tools/apis/get-api-docs.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/get-api-docs.js +1841 -0
- package/dist/ai-service/agent/tools/apis/get-api-docs.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/integration-types.d.ts +37 -0
- package/dist/ai-service/agent/tools/apis/integration-types.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/integration-types.js +689 -0
- package/dist/ai-service/agent/tools/apis/integration-types.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/test-api.d.ts +25 -0
- package/dist/ai-service/agent/tools/apis/test-api.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/test-api.js +194 -0
- package/dist/ai-service/agent/tools/apis/test-api.js.map +1 -0
- package/dist/ai-service/agent/tools/apis/write-api.d.ts +11 -0
- package/dist/ai-service/agent/tools/apis/write-api.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/apis/write-api.js +41 -0
- package/dist/ai-service/agent/tools/apis/write-api.js.map +1 -0
- package/dist/ai-service/agent/tools/build-read-files.js +2 -2
- package/dist/ai-service/agent/tools/build-read-files.js.map +1 -1
- package/dist/ai-service/agent/tools.d.ts +2 -5
- package/dist/ai-service/agent/tools.d.ts.map +1 -1
- package/dist/ai-service/agent/tools.js +51 -22
- package/dist/ai-service/agent/tools.js.map +1 -1
- package/dist/ai-service/agent/tools2/access-control.d.ts +1 -0
- package/dist/ai-service/agent/tools2/access-control.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/access-control.js +15 -13
- package/dist/ai-service/agent/tools2/access-control.js.map +1 -1
- package/dist/ai-service/agent/tools2/registry.d.ts +2 -1
- package/dist/ai-service/agent/tools2/registry.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/registry.js +4 -3
- package/dist/ai-service/agent/tools2/registry.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +73 -127
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/grep-metadata.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/grep-metadata.js +25 -4
- package/dist/ai-service/agent/tools2/tools/grep-metadata.js.map +1 -1
- package/dist/ai-service/agent/tools2/types.d.ts +1 -1
- package/dist/ai-service/agent/tools2/types.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/types.js.map +1 -1
- package/dist/ai-service/agent/tools2/utils.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/utils.js +4 -1
- package/dist/ai-service/agent/tools2/utils.js.map +1 -1
- package/dist/ai-service/agent/utils.d.ts +1 -3
- package/dist/ai-service/agent/utils.d.ts.map +1 -1
- package/dist/ai-service/agent/utils.js +55 -13
- package/dist/ai-service/agent/utils.js.map +1 -1
- package/dist/ai-service/app-interface/shell.d.ts +5 -0
- package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
- package/dist/ai-service/app-interface/shell.js +17 -2
- package/dist/ai-service/app-interface/shell.js.map +1 -1
- package/dist/ai-service/chat/chat-session-store.d.ts +7 -0
- package/dist/ai-service/chat/chat-session-store.d.ts.map +1 -1
- package/dist/ai-service/chat/chat-session-store.js +26 -0
- package/dist/ai-service/chat/chat-session-store.js.map +1 -1
- package/dist/ai-service/const.d.ts +3 -1
- package/dist/ai-service/const.d.ts.map +1 -1
- package/dist/ai-service/const.js +3 -0
- package/dist/ai-service/const.js.map +1 -1
- package/dist/ai-service/index.d.ts +5 -1
- package/dist/ai-service/index.d.ts.map +1 -1
- package/dist/ai-service/index.js +55 -7
- package/dist/ai-service/index.js.map +1 -1
- package/dist/ai-service/integrations/metadata-storage/index.d.ts +10 -0
- package/dist/ai-service/integrations/metadata-storage/index.d.ts.map +1 -1
- package/dist/ai-service/integrations/metadata-storage/local.d.ts +4 -2
- package/dist/ai-service/integrations/metadata-storage/local.d.ts.map +1 -1
- package/dist/ai-service/integrations/metadata-storage/local.js +35 -9
- package/dist/ai-service/integrations/metadata-storage/local.js.map +1 -1
- package/dist/ai-service/integrations/store.d.ts +27 -2
- package/dist/ai-service/integrations/store.d.ts.map +1 -1
- package/dist/ai-service/integrations/store.js +129 -62
- package/dist/ai-service/integrations/store.js.map +1 -1
- package/dist/ai-service/llm/client.d.ts +123 -0
- package/dist/ai-service/llm/client.d.ts.map +1 -0
- package/dist/ai-service/llm/client.js +168 -0
- package/dist/ai-service/llm/client.js.map +1 -0
- package/dist/ai-service/llm/context/context-handle.d.ts +4 -4
- package/dist/ai-service/llm/context/context-handle.d.ts.map +1 -1
- package/dist/ai-service/llm/context/context-handle.js +7 -3
- package/dist/ai-service/llm/context/context-handle.js.map +1 -1
- package/dist/ai-service/llm/context/context.d.ts +28 -0
- package/dist/ai-service/llm/context/context.d.ts.map +1 -1
- package/dist/ai-service/llm/context/context.js +119 -0
- package/dist/ai-service/llm/context/context.js.map +1 -1
- package/dist/ai-service/llm/context/manager.d.ts +22 -2
- package/dist/ai-service/llm/context/manager.d.ts.map +1 -1
- package/dist/ai-service/llm/context/manager.js +86 -13
- package/dist/ai-service/llm/context/manager.js.map +1 -1
- package/dist/ai-service/llm/context/storage/index.d.ts +1 -0
- package/dist/ai-service/llm/context/storage/index.d.ts.map +1 -1
- package/dist/ai-service/llm/context/storage/local.d.ts +1 -0
- package/dist/ai-service/llm/context/storage/local.d.ts.map +1 -1
- package/dist/ai-service/llm/context/storage/local.js +13 -1
- package/dist/ai-service/llm/context/storage/local.js.map +1 -1
- package/dist/ai-service/llm/context/utils/message-utils.d.ts.map +1 -1
- package/dist/ai-service/llm/context/utils/message-utils.js +6 -2
- package/dist/ai-service/llm/context/utils/message-utils.js.map +1 -1
- package/dist/ai-service/llm/error.d.ts +14 -4
- package/dist/ai-service/llm/error.d.ts.map +1 -1
- package/dist/ai-service/llm/error.js +49 -4
- package/dist/ai-service/llm/error.js.map +1 -1
- package/dist/ai-service/llm/interaction/adapters/vercel.d.ts +67 -0
- package/dist/ai-service/llm/interaction/adapters/vercel.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/adapters/vercel.js +111 -0
- package/dist/ai-service/llm/interaction/adapters/vercel.js.map +1 -0
- package/dist/ai-service/llm/interaction/compose.d.ts +71 -0
- package/dist/ai-service/llm/interaction/compose.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/compose.js +88 -0
- package/dist/ai-service/llm/interaction/compose.js.map +1 -0
- package/dist/ai-service/llm/interaction/index.d.ts +68 -0
- package/dist/ai-service/llm/interaction/index.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/index.js +70 -0
- package/dist/ai-service/llm/interaction/index.js.map +1 -0
- package/dist/ai-service/llm/interaction/middleware.d.ts +52 -0
- package/dist/ai-service/llm/interaction/middleware.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/middleware.js +17 -0
- package/dist/ai-service/llm/interaction/middleware.js.map +1 -0
- package/dist/ai-service/llm/interaction/middlewares/llmobs.d.ts +45 -0
- package/dist/ai-service/llm/interaction/middlewares/llmobs.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/middlewares/llmobs.js +85 -0
- package/dist/ai-service/llm/interaction/middlewares/llmobs.js.map +1 -0
- package/dist/ai-service/llm/interaction/middlewares/logging.d.ts +88 -0
- package/dist/ai-service/llm/interaction/middlewares/logging.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/middlewares/logging.js +238 -0
- package/dist/ai-service/llm/interaction/middlewares/logging.js.map +1 -0
- package/dist/ai-service/llm/interaction/middlewares/profiler.d.ts +47 -0
- package/dist/ai-service/llm/interaction/middlewares/profiler.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/middlewares/profiler.js +183 -0
- package/dist/ai-service/llm/interaction/middlewares/profiler.js.map +1 -0
- package/dist/ai-service/llm/interaction/middlewares/stream-retry.d.ts +121 -0
- package/dist/ai-service/llm/interaction/middlewares/stream-retry.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/middlewares/stream-retry.js +291 -0
- package/dist/ai-service/llm/interaction/middlewares/stream-retry.js.map +1 -0
- package/dist/ai-service/llm/interaction/provider.d.ts +173 -0
- package/dist/ai-service/llm/interaction/provider.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/provider.js +15 -0
- package/dist/ai-service/llm/interaction/provider.js.map +1 -0
- package/dist/ai-service/llm/interaction/result-utils.d.ts +43 -0
- package/dist/ai-service/llm/interaction/result-utils.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/result-utils.js +49 -0
- package/dist/ai-service/llm/interaction/result-utils.js.map +1 -0
- package/dist/ai-service/llm/interaction/stream-lifecycle.d.ts +48 -0
- package/dist/ai-service/llm/interaction/stream-lifecycle.d.ts.map +1 -0
- package/dist/ai-service/llm/interaction/stream-lifecycle.js +129 -0
- package/dist/ai-service/llm/interaction/stream-lifecycle.js.map +1 -0
- package/dist/ai-service/llm/provider.d.ts +1 -2
- package/dist/ai-service/llm/provider.d.ts.map +1 -1
- package/dist/ai-service/llm/provider.js +3 -6
- package/dist/ai-service/llm/provider.js.map +1 -1
- package/dist/ai-service/llmobs/helpers.d.ts +7 -8
- package/dist/ai-service/llmobs/helpers.d.ts.map +1 -1
- package/dist/ai-service/llmobs/helpers.js +8 -48
- package/dist/ai-service/llmobs/helpers.js.map +1 -1
- package/dist/ai-service/llmobs/middleware/stream-text.d.ts +19 -21
- package/dist/ai-service/llmobs/middleware/stream-text.d.ts.map +1 -1
- package/dist/ai-service/llmobs/middleware/stream-text.js +98 -106
- package/dist/ai-service/llmobs/middleware/stream-text.js.map +1 -1
- package/dist/ai-service/llmobs/types.d.ts +14 -1
- package/dist/ai-service/llmobs/types.d.ts.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.d.ts +75 -5
- package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.js +100 -0
- package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/agent-planning.js +4 -0
- package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.js +91 -456
- package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/runtime-reviewing.js +1 -1
- package/dist/ai-service/state-machine/handlers/runtime-reviewing.js.map +1 -1
- package/dist/ai-service/state-machine/helpers/peer.d.ts.map +1 -1
- package/dist/ai-service/state-machine/helpers/peer.js +15 -0
- package/dist/ai-service/state-machine/helpers/peer.js.map +1 -1
- package/dist/ai-service/state-machine/mocks.d.ts.map +1 -1
- package/dist/ai-service/state-machine/mocks.js +1 -0
- package/dist/ai-service/state-machine/mocks.js.map +1 -1
- package/dist/ai-service/template-renderer.js +1 -1
- package/dist/ai-service/template-renderer.js.map +1 -1
- package/dist/ai-service/types.d.ts +30 -0
- package/dist/ai-service/types.d.ts.map +1 -1
- package/dist/binding-extraction/extract-identifiers.d.ts +14 -0
- package/dist/binding-extraction/extract-identifiers.d.ts.map +1 -1
- package/dist/binding-extraction/extract-identifiers.js +46 -1
- package/dist/binding-extraction/extract-identifiers.js.map +1 -1
- package/dist/binding-extraction/js-identifiers.d.ts +14 -0
- package/dist/binding-extraction/js-identifiers.d.ts.map +1 -1
- package/dist/binding-extraction/js-identifiers.js +168 -0
- package/dist/binding-extraction/js-identifiers.js.map +1 -1
- package/dist/binding-extraction/python-identifiers.d.ts +5 -0
- package/dist/binding-extraction/python-identifiers.d.ts.map +1 -1
- package/dist/binding-extraction/python-identifiers.js +76 -7
- package/dist/binding-extraction/python-identifiers.js.map +1 -1
- package/dist/file-sync-vite-plugin.d.ts.map +1 -1
- package/dist/file-sync-vite-plugin.js +73 -3
- package/dist/file-sync-vite-plugin.js.map +1 -1
- package/dist/file-system-manager.d.ts.map +1 -1
- package/dist/file-system-manager.js +6 -4
- package/dist/file-system-manager.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lock-service/activity-tracker.d.ts +14 -2
- package/dist/lock-service/activity-tracker.d.ts.map +1 -1
- package/dist/lock-service/activity-tracker.js +43 -6
- package/dist/lock-service/activity-tracker.js.map +1 -1
- package/dist/lock-service/index.d.ts +13 -2
- package/dist/lock-service/index.d.ts.map +1 -1
- package/dist/lock-service/index.js +130 -44
- package/dist/lock-service/index.js.map +1 -1
- package/dist/parsing/jsx.d.ts.map +1 -1
- package/dist/parsing/jsx.js +78 -66
- package/dist/parsing/jsx.js.map +1 -1
- package/dist/socket-manager.js +1 -1
- package/dist/socket-manager.js.map +1 -1
- package/dist/sync-service/list-dir.d.ts.map +1 -1
- package/dist/sync-service/list-dir.js +41 -18
- package/dist/sync-service/list-dir.js.map +1 -1
- package/dist/vite-plugin-yaml-types.d.ts.map +1 -1
- package/dist/vite-plugin-yaml-types.js +2 -4
- package/dist/vite-plugin-yaml-types.js.map +1 -1
- package/package.json +7 -7
- package/dist/ai-service/agent/subagents/apis/api-executor.d.ts.map +0 -1
- package/dist/ai-service/agent/subagents/apis/api-executor.js.map +0 -1
- package/dist/ai-service/agent/subagents/apis/context.d.ts +0 -12
- package/dist/ai-service/agent/subagents/apis/context.d.ts.map +0 -1
- package/dist/ai-service/agent/subagents/apis/context.js +0 -18
- package/dist/ai-service/agent/subagents/apis/context.js.map +0 -1
- package/dist/ai-service/agent/subagents/apis/generate-api-source.d.ts +0 -40
- package/dist/ai-service/agent/subagents/apis/generate-api-source.d.ts.map +0 -1
- package/dist/ai-service/agent/subagents/apis/generate-api-source.js +0 -516
- package/dist/ai-service/agent/subagents/apis/generate-api-source.js.map +0 -1
- package/dist/ai-service/agent/subagents/apis/state.d.ts +0 -49
- package/dist/ai-service/agent/subagents/apis/state.d.ts.map +0 -1
- package/dist/ai-service/agent/subagents/apis/state.js +0 -25
- package/dist/ai-service/agent/subagents/apis/state.js.map +0 -1
- package/dist/ai-service/agent/subagents/apis/system-prompt.d.ts +0 -3
- package/dist/ai-service/agent/subagents/apis/system-prompt.d.ts.map +0 -1
- package/dist/ai-service/agent/subagents/apis/system-prompt.js +0 -1704
- package/dist/ai-service/agent/subagents/apis/system-prompt.js.map +0 -1
- package/dist/ai-service/agent/tools/apis/finalize-api.d.ts +0 -11
- package/dist/ai-service/agent/tools/apis/finalize-api.d.ts.map +0 -1
- package/dist/ai-service/agent/tools/apis/finalize-api.js +0 -133
- package/dist/ai-service/agent/tools/apis/finalize-api.js.map +0 -1
- package/dist/ai-service/llm/middleware/retry.d.ts +0 -112
- package/dist/ai-service/llm/middleware/retry.d.ts.map +0 -1
- package/dist/ai-service/llm/middleware/retry.js +0 -239
- package/dist/ai-service/llm/middleware/retry.js.map +0 -1
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { PermissionLevel } from "../../tools2/types.js";
|
|
2
|
+
import type { ClarkStateHandlerParams } from "../../../state-machine/clark-fsm.js";
|
|
3
|
+
export declare const checkTestApiPermissions: (services: ClarkStateHandlerParams, input?: {
|
|
4
|
+
apiName?: string;
|
|
5
|
+
}) => Promise<PermissionLevel>;
|
|
6
|
+
export declare const testApiToolFactory: import("../../tools2/types.js").ToolFactory<import("../../tools2/types.js").Tool<{
|
|
7
|
+
apiName: string;
|
|
8
|
+
inputs: Record<string, any>;
|
|
9
|
+
description?: string | undefined;
|
|
10
|
+
}, {
|
|
11
|
+
message: string;
|
|
12
|
+
result: import("./api-executor.js").ApiExecutionResult;
|
|
13
|
+
apiName: string;
|
|
14
|
+
} | {
|
|
15
|
+
message: string;
|
|
16
|
+
result: {
|
|
17
|
+
outputs: string;
|
|
18
|
+
success: boolean;
|
|
19
|
+
errors?: import("./api-executor.js").ApiExecutionError[];
|
|
20
|
+
systemError?: string;
|
|
21
|
+
executionTime?: number;
|
|
22
|
+
};
|
|
23
|
+
apiName: string;
|
|
24
|
+
}>>;
|
|
25
|
+
//# sourceMappingURL=test-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-api.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools/apis/test-api.ts"],"names":[],"mappings":"AAaA,OAAO,EAEL,eAAe,EAEhB,MAAM,uBAAuB,CAAC;AAS/B,OAAO,KAAK,EAEV,uBAAuB,EACxB,MAAM,qCAAqC,CAAC;AAE7C,eAAO,MAAM,uBAAuB,GAClC,UAAU,uBAAuB,EACjC,QAAQ;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,KAC3B,OAAO,CAAC,eAAe,CA0BzB,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;GA6M9B,CAAC"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { readFileSync } from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { AiEntityType } from "@superblocksteam/library-shared/types";
|
|
4
|
+
import { isEmpty } from "lodash-es";
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { getErrorMeta, getLogger, getPrefixedLogger, } from "../../../../util/logger.js";
|
|
7
|
+
import { Paths } from "../../../const.js";
|
|
8
|
+
import { renderPath } from "../../../transform/shared.js";
|
|
9
|
+
import { safeJsonStringify } from "../../../util/safe-stringify.js";
|
|
10
|
+
import { createToolFactory, PermissionLevel, ToolCategory, } from "../../tools2/types.js";
|
|
11
|
+
import { codeBlock } from "../../tools2/utils.js";
|
|
12
|
+
import { containsMutations, extractIntegrationIdsFromSource, extractMutations, } from "./analysis.js";
|
|
13
|
+
import { readApiSource } from "./api-source.js";
|
|
14
|
+
import { runApiValidationPipeline } from "./api-validation-orchestrator.js";
|
|
15
|
+
export const checkTestApiPermissions = async (services, input) => {
|
|
16
|
+
// we are building our initial set of tools, we don't have any permissions yet
|
|
17
|
+
if (!input || isEmpty(input)) {
|
|
18
|
+
return PermissionLevel.PROMPT;
|
|
19
|
+
}
|
|
20
|
+
if (!input.apiName) {
|
|
21
|
+
throw new Error("API name is required");
|
|
22
|
+
}
|
|
23
|
+
const apiSource = await readApiSource(services, input.apiName);
|
|
24
|
+
if (!apiSource) {
|
|
25
|
+
getLogger().error(`[testApi] Failed to read API source, fall back to PROMPT: ${input.apiName}`);
|
|
26
|
+
return PermissionLevel.PROMPT;
|
|
27
|
+
}
|
|
28
|
+
const mutations = extractMutations(apiSource.content);
|
|
29
|
+
const hasMutations = mutations.length > 0;
|
|
30
|
+
if (hasMutations) {
|
|
31
|
+
return PermissionLevel.PROMPT;
|
|
32
|
+
}
|
|
33
|
+
return PermissionLevel.ALLOW;
|
|
34
|
+
};
|
|
35
|
+
export const testApiToolFactory = createToolFactory("testApi", (clark, services) => {
|
|
36
|
+
const readApiSourceSync = (apiName) => {
|
|
37
|
+
try {
|
|
38
|
+
const apiTsPath = renderPath(Paths.GeneratedApis, { apiName }) + ".ts";
|
|
39
|
+
const tmpPath = renderPath(Paths.Scratch, { path: apiTsPath });
|
|
40
|
+
const fullPath = path.join(services.appShell.appRootDirPath, tmpPath);
|
|
41
|
+
return readFileSync(fullPath, "utf-8");
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
return {
|
|
48
|
+
category: ToolCategory.API,
|
|
49
|
+
description: `
|
|
50
|
+
Execute an API to test its behavior. This triggers the API through the normal UI execution path,
|
|
51
|
+
so the execution will be visible in the application UI with full trace details.
|
|
52
|
+
|
|
53
|
+
Use this tool to verify that an API works correctly after building it.
|
|
54
|
+
|
|
55
|
+
The tool will generate smart default inputs for any bindings the API uses:
|
|
56
|
+
- Component values (e.g., Input1.value) will use mock data based on component type
|
|
57
|
+
- State variables will use empty objects/arrays
|
|
58
|
+
- Global context values are automatically available
|
|
59
|
+
|
|
60
|
+
CRITICAL: If the API contains mutations (SQL INSERT/UPDATE/DELETE, HTTP POST/PUT/PATCH/DELETE, DynamoDB mutations, Salesforce CRUD operations, etc.),
|
|
61
|
+
you MUST provide the 'description' parameter with a clear, plain-English explanation of:
|
|
62
|
+
- What data will be created/modified/deleted
|
|
63
|
+
- Which resources are affected
|
|
64
|
+
- The business purpose of the operation
|
|
65
|
+
|
|
66
|
+
The description will be shown to the user in an approval prompt, so it must be clear and easy to understand for technical and non-technical users. You can return Markdown.
|
|
67
|
+
`,
|
|
68
|
+
inputSchema: z.object({
|
|
69
|
+
apiName: z.string().describe("The name of the API to test"),
|
|
70
|
+
inputs: z
|
|
71
|
+
.record(z.string(), z.any())
|
|
72
|
+
.describe("Test input values for the API bindings. A key must be provided for each input the API expects."),
|
|
73
|
+
description: z
|
|
74
|
+
.string()
|
|
75
|
+
.optional()
|
|
76
|
+
.describe("Plain-English explanation of what this API does, especially any side-effects."),
|
|
77
|
+
}),
|
|
78
|
+
extractEntities: (args) => {
|
|
79
|
+
const { apiName } = args;
|
|
80
|
+
const apiSource = readApiSourceSync(apiName);
|
|
81
|
+
if (!apiSource) {
|
|
82
|
+
return [];
|
|
83
|
+
}
|
|
84
|
+
const hasWrites = containsMutations(apiSource);
|
|
85
|
+
if (!hasWrites) {
|
|
86
|
+
return [];
|
|
87
|
+
}
|
|
88
|
+
const integrationIds = extractIntegrationIdsFromSource(apiSource);
|
|
89
|
+
return integrationIds.map((id) => ({
|
|
90
|
+
type: AiEntityType.INTEGRATION,
|
|
91
|
+
id,
|
|
92
|
+
}));
|
|
93
|
+
},
|
|
94
|
+
getActionName: () => ({
|
|
95
|
+
future: "Test API",
|
|
96
|
+
present: "Testing API",
|
|
97
|
+
past: "Tested API",
|
|
98
|
+
}),
|
|
99
|
+
formatInput: (params) => {
|
|
100
|
+
const { apiName, inputs, description } = params;
|
|
101
|
+
const apiSource = readApiSourceSync(apiName);
|
|
102
|
+
if (!apiSource) {
|
|
103
|
+
return {
|
|
104
|
+
targets: [apiName],
|
|
105
|
+
details: inputs
|
|
106
|
+
? codeBlock(safeJsonStringify(inputs, 2))
|
|
107
|
+
: undefined,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
const integrationIds = extractIntegrationIdsFromSource(apiSource);
|
|
111
|
+
const integrationNames = integrationIds.map((id) => services.integrationStore.getEntityTag(id) ?? id);
|
|
112
|
+
return {
|
|
113
|
+
targets: [apiName, ...integrationNames],
|
|
114
|
+
details: description,
|
|
115
|
+
summary: "Test API",
|
|
116
|
+
};
|
|
117
|
+
},
|
|
118
|
+
execute: async ({ apiName, inputs, description }) => {
|
|
119
|
+
const logger = getPrefixedLogger(`[testApi-${apiName}]`);
|
|
120
|
+
const apiSource = await readApiSource(services, apiName);
|
|
121
|
+
if (!apiSource) {
|
|
122
|
+
throw new Error(`API source for ${apiName} not found. Ensure the API has been created with writeApi first.`);
|
|
123
|
+
}
|
|
124
|
+
const mutations = extractMutations(apiSource.content);
|
|
125
|
+
const hasMutations = mutations.length > 0;
|
|
126
|
+
if (hasMutations && (!description || description.trim().length === 0)) {
|
|
127
|
+
const mutationsPreview = mutations
|
|
128
|
+
.slice(0, 3)
|
|
129
|
+
.map((m, idx) => {
|
|
130
|
+
const detail = m.details.length > 60
|
|
131
|
+
? `${m.details.slice(0, 60)}...`
|
|
132
|
+
: m.details;
|
|
133
|
+
return ` ${idx + 1}. ${m.type} "${m.name}": ${detail}`;
|
|
134
|
+
})
|
|
135
|
+
.join("\n");
|
|
136
|
+
throw new Error(`The API "${apiName}" contains ${mutations.length} mutation(s) that will modify data, but no description was provided.\n\n` +
|
|
137
|
+
`Mutations detected:\n${mutationsPreview}\n\n` +
|
|
138
|
+
`You MUST provide a 'description' parameter that explains in plain English what data will be modified and why.\n\n` +
|
|
139
|
+
`Example call:\n` +
|
|
140
|
+
`testApi({\n` +
|
|
141
|
+
` apiName: "${apiName}",\n` +
|
|
142
|
+
` inputs: {...},\n` +
|
|
143
|
+
` description: "Creates a users table with columns for id, name, email, and created_at timestamp"\n` +
|
|
144
|
+
`})`);
|
|
145
|
+
}
|
|
146
|
+
logger.info(`Executing API ${apiName} with inputs:`, safeJsonStringify(inputs));
|
|
147
|
+
try {
|
|
148
|
+
const result = (await runApiValidationPipeline({
|
|
149
|
+
clark,
|
|
150
|
+
services,
|
|
151
|
+
identifier: apiName,
|
|
152
|
+
inputs,
|
|
153
|
+
})).executionResult;
|
|
154
|
+
if (!result) {
|
|
155
|
+
logger.error("BUG! No execution result returned by api validation pipeline");
|
|
156
|
+
throw new Error("No API execution result received, please try again");
|
|
157
|
+
}
|
|
158
|
+
if (!result.success) {
|
|
159
|
+
// log technical error details
|
|
160
|
+
logger.error(`api execution returned errors for ${apiName}:`, result);
|
|
161
|
+
return {
|
|
162
|
+
message: `API ${apiName} executed with unhandled errors`,
|
|
163
|
+
result,
|
|
164
|
+
apiName,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
let outputSample = safeJsonStringify(result.outputs);
|
|
168
|
+
if (outputSample.length > 500) {
|
|
169
|
+
outputSample = outputSample.slice(0, 500) + "... (sample)";
|
|
170
|
+
}
|
|
171
|
+
return {
|
|
172
|
+
message: `API ${apiName} executed successfully. Check for handled errors and output sample that may reveal issues.`,
|
|
173
|
+
result: {
|
|
174
|
+
...result,
|
|
175
|
+
outputs: outputSample,
|
|
176
|
+
},
|
|
177
|
+
apiName,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
logger.error(`API execution failed for ${apiName}:`, getErrorMeta(error));
|
|
182
|
+
return {
|
|
183
|
+
message: `API execution failed for ${apiName}: ${error instanceof Error ? error.message : String(error)}`,
|
|
184
|
+
result: {
|
|
185
|
+
success: false,
|
|
186
|
+
systemError: error instanceof Error ? error.message : String(error),
|
|
187
|
+
},
|
|
188
|
+
apiName,
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
};
|
|
193
|
+
});
|
|
194
|
+
//# sourceMappingURL=test-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-api.js","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools/apis/test-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const writeApiToolFactory: import("../../tools2/types.js").ToolFactory<import("../../tools2/types.js").Tool<{
|
|
2
|
+
apiName: string;
|
|
3
|
+
action: "create" | "edit";
|
|
4
|
+
apiSource: string;
|
|
5
|
+
}, {
|
|
6
|
+
message: string;
|
|
7
|
+
apiName: string;
|
|
8
|
+
action: "create" | "edit";
|
|
9
|
+
sourceLength: number;
|
|
10
|
+
}>>;
|
|
11
|
+
//# sourceMappingURL=write-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-api.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools/apis/write-api.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,mBAAmB;;;;;;;;;GAiD/B,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { getPrefixedLogger } from "../../../../util/logger.js";
|
|
3
|
+
import { createToolFactory, ToolCategory } from "../../tools2/types.js";
|
|
4
|
+
import { writeApiSource } from "./api-source.js";
|
|
5
|
+
export const writeApiToolFactory = createToolFactory("writeApi", (_clark, services) => {
|
|
6
|
+
return {
|
|
7
|
+
category: ToolCategory.API,
|
|
8
|
+
description: `
|
|
9
|
+
Stage API source code for building. This prepares the API source but does not compile or save it yet.
|
|
10
|
+
|
|
11
|
+
After calling this tool, you must call buildApi to compile, validate, and save the API.
|
|
12
|
+
|
|
13
|
+
IMPORTANT you must read the relevant API documentation before using this tool
|
|
14
|
+
|
|
15
|
+
Use this tool to:
|
|
16
|
+
- Create new API source code
|
|
17
|
+
- Update existing API source code (full replacement)
|
|
18
|
+
`,
|
|
19
|
+
inputSchema: z.object({
|
|
20
|
+
apiName: z.string().describe("The name of the API"),
|
|
21
|
+
apiSource: z
|
|
22
|
+
.string()
|
|
23
|
+
.describe("The complete TypeScript source code of the API"),
|
|
24
|
+
action: z
|
|
25
|
+
.enum(["create", "edit"])
|
|
26
|
+
.describe("Whether this is creating a new API or editing an existing one"),
|
|
27
|
+
}),
|
|
28
|
+
execute: async ({ apiName, apiSource, action }) => {
|
|
29
|
+
const logger = getPrefixedLogger(`[writeApi-${apiName}]`);
|
|
30
|
+
const apiTsFilePath = await writeApiSource(apiName, apiSource, services);
|
|
31
|
+
logger.info(`API source staged for ${apiName} (action: ${action}, length: ${apiSource.length} chars)`);
|
|
32
|
+
return {
|
|
33
|
+
message: `API source for ${apiName} written to ${apiTsFilePath}. Call buildApi to compile, validate, and save the API.`,
|
|
34
|
+
apiName,
|
|
35
|
+
action,
|
|
36
|
+
sourceLength: apiSource.length,
|
|
37
|
+
};
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=write-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-api.js","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools/apis/write-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAMjD,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAClD,UAAU,EACV,CAAC,MAAa,EAAE,QAAiC,EAAE,EAAE;IACnD,OAAO;QACL,QAAQ,EAAE,YAAY,CAAC,GAAG;QAC1B,WAAW,EAAE;;;;;;;;;;CAUlB;QACK,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YACnD,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,CAAC,gDAAgD,CAAC;YAC7D,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;iBACxB,QAAQ,CACP,+DAA+D,CAChE;SACJ,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE;YAChD,MAAM,MAAM,GAAG,iBAAiB,CAAC,aAAa,OAAO,GAAG,CAAC,CAAC;YAE1D,MAAM,aAAa,GAAG,MAAM,cAAc,CACxC,OAAO,EACP,SAAS,EACT,QAAQ,CACT,CAAC;YAEF,MAAM,CAAC,IAAI,CACT,yBAAyB,OAAO,aAAa,MAAM,aAAa,SAAS,CAAC,MAAM,SAAS,CAC1F,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,kBAAkB,OAAO,eAAe,aAAa,yDAAyD;gBACvH,OAAO;gBACP,MAAM;gBACN,YAAY,EAAE,SAAS,CAAC,MAAM;aAC/B,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CACF,CAAC"}
|
|
@@ -2,8 +2,8 @@ import fs from "node:fs/promises";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import z from "zod";
|
|
4
4
|
import { fileReadTracker } from "../../state-machine/helpers/file-read-tracker.js";
|
|
5
|
-
import { readApiSource } from "../subagents/apis/generate-api-source.js";
|
|
6
5
|
import { createToolFactory, ToolCategory } from "../tools2/types.js";
|
|
6
|
+
import { readApiSource } from "./apis/api-source.js";
|
|
7
7
|
import { parseGeneratedApiPath } from "./shared-helpers.js";
|
|
8
8
|
const multiFileToolConfig = {
|
|
9
9
|
extractDisplayName: (parameters) => {
|
|
@@ -26,7 +26,7 @@ export const readFile = async (filePath, services) => {
|
|
|
26
26
|
const generatedApiPathParams = parseGeneratedApiPath(filePath);
|
|
27
27
|
if (generatedApiPathParams) {
|
|
28
28
|
const { apiName } = generatedApiPathParams;
|
|
29
|
-
const sdkArtifact = await readApiSource(
|
|
29
|
+
const sdkArtifact = await readApiSource(services, apiName);
|
|
30
30
|
if (sdkArtifact) {
|
|
31
31
|
return sdkArtifact.content;
|
|
32
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-read-files.js","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools/build-read-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,CAAC,MAAM,KAAK,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAC;AACnF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"build-read-files.js","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools/build-read-files.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
+
import { type Tool } from "./tools2/types.js";
|
|
1
2
|
import type { Clark } from "../state-machine/clark-fsm.js";
|
|
2
3
|
import type { ClarkStateHandlerParams } from "../state-machine/clark-fsm.js";
|
|
3
|
-
|
|
4
|
-
import type { ToolSet } from "ai";
|
|
5
|
-
export declare const buildTools: (clark: Clark, services: ClarkStateHandlerParams, promptContext: PromptContext | undefined, logRef: {
|
|
6
|
-
content: string;
|
|
7
|
-
}, disabledTools?: string[]) => Promise<ToolSet>;
|
|
4
|
+
export declare const buildTools: (clark: Clark, services: ClarkStateHandlerParams) => Promise<Record<string, Tool<any, any>>>;
|
|
8
5
|
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/ai-service/agent/tools.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/ai-service/agent/tools.ts"],"names":[],"mappings":"AAuCA,OAAO,EAGL,KAAK,IAAI,EACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AA6C7E,eAAO,MAAM,UAAU,GACrB,OAAO,KAAK,EACZ,UAAU,uBAAuB,4CA4KlC,CAAC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
+
import { getErrorMeta } from "../../util/logger.js";
|
|
1
2
|
import { OperationQueue } from "../../util/operation-queue.js";
|
|
2
3
|
import { profileTool, } from "../profiler/tool-profiler.js";
|
|
3
|
-
import { safeJsonStringify } from "../util/safe-stringify.js";
|
|
4
4
|
import { outputLimiter } from "./middleware.js";
|
|
5
|
-
import { generateApiSourceSubagentToolFactory } from "./subagents/apis/generate-api-source.js";
|
|
6
|
-
import { SubagentType } from "./subagents/types.js";
|
|
7
5
|
import { buildApiToolFactory } from "./tools/apis/build-api.js";
|
|
8
|
-
import {
|
|
6
|
+
import { getApiDocsToolFactory } from "./tools/apis/get-api-docs.js";
|
|
7
|
+
import { checkTestApiPermissions, testApiToolFactory, } from "./tools/apis/test-api.js";
|
|
8
|
+
import { writeApiToolFactory } from "./tools/apis/write-api.js";
|
|
9
9
|
import { buildInstallPackagesToolFactory, buildWriteFileToolFactory, buildEditFileToolFactory, buildMultiEditFileToolFactory, buildReadFilesToolFactory, multiFileToolConfig, buildListFilesToolFactory, buildValidateIconsToolFactory, buildDebugToolFactory, buildFinalizeToolFactory, buildManageChecklistToolFactory, executeRequestToIntegrationToolFactory, grepMetadataToolFactory, searchIntegrationsToolFactory, runCodeToolFactory, exitPlanModeToolFactory, askMultiChoiceToolFactory, } from "./tools/index.js";
|
|
10
|
-
import { presets, blockTools } from "./tools2/access-control.js";
|
|
10
|
+
import { presets, blockTools, forTools } from "./tools2/access-control.js";
|
|
11
11
|
import { globToolFactory, grepToolFactory, lsToolFactory, } from "./tools2/tools/index.js";
|
|
12
12
|
import { ToolCategory, ToolPermissionResponse, } from "./tools2/types.js";
|
|
13
13
|
const fileToolConfig = {
|
|
@@ -51,8 +51,9 @@ const componentToolConfig = {
|
|
|
51
51
|
};
|
|
52
52
|
},
|
|
53
53
|
};
|
|
54
|
-
export const buildTools = async (clark, services
|
|
54
|
+
export const buildTools = async (clark, services) => {
|
|
55
55
|
const scopeUpdateQueue = new OperationQueue();
|
|
56
|
+
const disabledTools = clark.context.llmConfig?.disabledTools;
|
|
56
57
|
const registry = services.toolRegistry;
|
|
57
58
|
// Clear any existing tools and rules
|
|
58
59
|
registry.clear();
|
|
@@ -64,21 +65,48 @@ export const buildTools = async (clark, services, promptContext, logRef, disable
|
|
|
64
65
|
const formattedInput = tool.formatInput?.(input);
|
|
65
66
|
// Generate unique message ID for this permission request
|
|
66
67
|
const messageId = crypto.randomUUID();
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
68
|
+
// Store pending permission request in context for replay on reconnect
|
|
69
|
+
clark.updateContext({
|
|
70
|
+
pendingToolPermissionRequest: {
|
|
71
|
+
messageId,
|
|
72
|
+
toolName: tool.name,
|
|
73
|
+
actionName,
|
|
74
|
+
formattedInput,
|
|
75
|
+
rawInput: input,
|
|
76
|
+
},
|
|
73
77
|
});
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
78
|
+
try {
|
|
79
|
+
const response = await clark.context.peer?.call.aiRequestToolPermission({
|
|
80
|
+
messageId,
|
|
81
|
+
toolName: tool.name,
|
|
82
|
+
actionName,
|
|
83
|
+
formattedInput,
|
|
84
|
+
rawInput: input,
|
|
85
|
+
});
|
|
86
|
+
// Clear pending request after receiving response
|
|
87
|
+
clark.updateContext({
|
|
88
|
+
pendingToolPermissionRequest: undefined,
|
|
89
|
+
});
|
|
90
|
+
// Map boolean response to enum for now
|
|
91
|
+
// In the future, the RPC will return the enum value directly
|
|
92
|
+
return response?.approved
|
|
93
|
+
? ToolPermissionResponse.ALLOW
|
|
94
|
+
: ToolPermissionResponse.DENY;
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
// Clear pending request on error
|
|
98
|
+
clark.updateContext({
|
|
99
|
+
pendingToolPermissionRequest: undefined,
|
|
100
|
+
});
|
|
101
|
+
throw error;
|
|
102
|
+
}
|
|
79
103
|
});
|
|
80
104
|
// Add access control rules
|
|
81
105
|
registry.addAccessRule(...presets.base());
|
|
106
|
+
// Testing an API has possibility to prompt if we can statically detect mutations
|
|
107
|
+
registry.addAccessRule(forTools("testApi", async (_tool, _context, input) => {
|
|
108
|
+
return checkTestApiPermissions(services, input);
|
|
109
|
+
}));
|
|
82
110
|
if (disabledTools && disabledTools.length > 0) {
|
|
83
111
|
registry.addAccessRule(blockTools(disabledTools));
|
|
84
112
|
}
|
|
@@ -99,12 +127,13 @@ export const buildTools = async (clark, services, promptContext, logRef, disable
|
|
|
99
127
|
registry.register(searchIntegrationsToolFactory, clark, services);
|
|
100
128
|
registry.register(exitPlanModeToolFactory, clark, services);
|
|
101
129
|
registry.register(askMultiChoiceToolFactory, clark, services);
|
|
102
|
-
registry.register(
|
|
130
|
+
registry.register(writeApiToolFactory, clark, services);
|
|
131
|
+
registry.register(getApiDocsToolFactory, clark, services);
|
|
132
|
+
registry.register(buildApiToolFactory, clark, services, scopeUpdateQueue);
|
|
133
|
+
registry.register(testApiToolFactory, clark, services);
|
|
103
134
|
registry.register(globToolFactory, {});
|
|
104
135
|
registry.register(grepToolFactory, {});
|
|
105
136
|
registry.register(lsToolFactory, {});
|
|
106
|
-
registry.register(buildApiToolFactory, clark, services);
|
|
107
|
-
registry.register(finalizeApiToolFactory, clark, services, scopeUpdateQueue);
|
|
108
137
|
// Add output limiting middleware to all tools
|
|
109
138
|
registry.addMiddleware(outputLimiter(25_000));
|
|
110
139
|
// Add profiling middleware
|
|
@@ -135,7 +164,8 @@ export const buildTools = async (clark, services, promptContext, logRef, disable
|
|
|
135
164
|
return result;
|
|
136
165
|
}
|
|
137
166
|
catch (error) {
|
|
138
|
-
|
|
167
|
+
const errorMeta = getErrorMeta(error);
|
|
168
|
+
clark.logger.error(`[Tool] Tool ${tool.name} execution failed with error: ${JSON.stringify(errorMeta)}`);
|
|
139
169
|
throw error;
|
|
140
170
|
}
|
|
141
171
|
},
|
|
@@ -144,7 +174,6 @@ export const buildTools = async (clark, services, promptContext, logRef, disable
|
|
|
144
174
|
// Get filtered tools from registry based on mode and plan approval
|
|
145
175
|
const tools = await registry.getToolsRecord({
|
|
146
176
|
...clark.getAccessControl(),
|
|
147
|
-
subagent: SubagentType.MAIN,
|
|
148
177
|
});
|
|
149
178
|
const enabledToolNames = Object.keys(tools);
|
|
150
179
|
const totalRegistered = registry.listTools().length;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/ai-service/agent/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EACL,WAAW,GAEZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/ai-service/agent/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -89,6 +89,7 @@ export declare function forMode(mode: AiMode, rule: AccessControlRule): AccessCo
|
|
|
89
89
|
type AccessControlPredicate = (params: {
|
|
90
90
|
tool: Tool;
|
|
91
91
|
context: AccessControlContext;
|
|
92
|
+
input?: any;
|
|
92
93
|
}) => boolean;
|
|
93
94
|
export declare function require(predicate: AccessControlPredicate, permission?: PermissionLevel): AccessControlRule;
|
|
94
95
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access-control.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools2/access-control.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,EACtB,eAAe,EACf,KAAK,IAAI,EACT,KAAK,oBAAoB,EAC1B,MAAM,YAAY,CAAC;AAEpB;;GAEG;AAEH;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAC7C,iBAAiB,CAcnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAC7C,iBAAiB,CAcnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CACzB,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,EAC/B,UAAU,GAAE,eAAuC,GAClD,iBAAiB,CAWnB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,iBAAiB,CAiB1E;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CACtB,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,EAC5B,IAAI,EAAE,iBAAiB,GACtB,iBAAiB,CASnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,iBAAiB,GACtB,iBAAiB,CAOnB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CACrB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,iBAAiB,GACtB,iBAAiB,CAOnB;AAED,KAAK,sBAAsB,GAAG,CAAC,MAAM,EAAE;IACrC,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"access-control.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools2/access-control.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,EACtB,eAAe,EACf,KAAK,IAAI,EACT,KAAK,oBAAoB,EAC1B,MAAM,YAAY,CAAC;AAEpB;;GAEG;AAEH;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAC7C,iBAAiB,CAcnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAC7C,iBAAiB,CAcnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CACzB,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,EAC/B,UAAU,GAAE,eAAuC,GAClD,iBAAiB,CAWnB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,iBAAiB,CAiB1E;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CACtB,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,EAC5B,IAAI,EAAE,iBAAiB,GACtB,iBAAiB,CASnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,iBAAiB,GACtB,iBAAiB,CAOnB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CACrB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,iBAAiB,GACtB,iBAAiB,CAOnB;AAED,KAAK,sBAAsB,GAAG,CAAC,MAAM,EAAE;IACrC,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,oBAAoB,CAAC;IAC9B,KAAK,CAAC,EAAE,GAAG,CAAC;CACb,KAAK,OAAO,CAAC;AAEd,wBAAgB,OAAO,CACrB,SAAS,EAAE,sBAAsB,EACjC,UAAU,GAAE,eAAuC,GAClD,iBAAiB,CAMnB;AAED;;;GAGG;AACH,wBAAgB,QAAQ,IAAI,iBAAiB,CAO5C;AAED,wBAAgB,WAAW,CACzB,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,iBAAiB,GACtB,iBAAiB,CAOnB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC,GACjD,iBAAiB,CAoBnB;AAED;;GAEG;AACH,eAAO,MAAM,OAAO;IAClB;;;;;OAKG;gBACO,iBAAiB,EAAE;IAgD7B;;OAEG;uBACc,iBAAiB,EAAE;IAEpC;;OAEG;sBACa,iBAAiB,EAAE;IASnC;;OAEG;sBACa,iBAAiB,EAAE;IAInC;;OAEG;iBACQ,iBAAiB,EAAE;CAG/B,CAAC"}
|
|
@@ -113,9 +113,9 @@ export function combineRules(rules) {
|
|
|
113
113
|
*/
|
|
114
114
|
export function forTools(toolNames, rule) {
|
|
115
115
|
const names = Array.isArray(toolNames) ? toolNames : [toolNames];
|
|
116
|
-
return async (tool, context) => {
|
|
116
|
+
return async (tool, context, input) => {
|
|
117
117
|
if (names.includes(tool.name)) {
|
|
118
|
-
return rule(tool, context);
|
|
118
|
+
return rule(tool, context, input);
|
|
119
119
|
}
|
|
120
120
|
return PermissionLevel.ALLOW;
|
|
121
121
|
};
|
|
@@ -131,9 +131,9 @@ export function forTools(toolNames, rule) {
|
|
|
131
131
|
* const rule = forCategory("filesystem", PermissionLevel.PROMPT);
|
|
132
132
|
*/
|
|
133
133
|
export function forCategory(category, rule) {
|
|
134
|
-
return (tool, context) => {
|
|
134
|
+
return (tool, context, input) => {
|
|
135
135
|
if (tool.category === category) {
|
|
136
|
-
return rule(tool, context);
|
|
136
|
+
return rule(tool, context, input);
|
|
137
137
|
}
|
|
138
138
|
return PermissionLevel.ALLOW;
|
|
139
139
|
};
|
|
@@ -151,16 +151,18 @@ export function forCategory(category, rule) {
|
|
|
151
151
|
* const rule = forMode(AiMode.PLAN, readOnly());
|
|
152
152
|
*/
|
|
153
153
|
export function forMode(mode, rule) {
|
|
154
|
-
return (tool, context) => {
|
|
154
|
+
return (tool, context, input) => {
|
|
155
155
|
if (context.mode === mode) {
|
|
156
|
-
return rule(tool, context);
|
|
156
|
+
return rule(tool, context, input);
|
|
157
157
|
}
|
|
158
158
|
return PermissionLevel.ALLOW;
|
|
159
159
|
};
|
|
160
160
|
}
|
|
161
161
|
export function require(predicate, permission = PermissionLevel.BLOCK) {
|
|
162
|
-
return (tool, context) => {
|
|
163
|
-
return predicate({ tool, context })
|
|
162
|
+
return (tool, context, input) => {
|
|
163
|
+
return predicate({ tool, context, input })
|
|
164
|
+
? PermissionLevel.ALLOW
|
|
165
|
+
: permission;
|
|
164
166
|
};
|
|
165
167
|
}
|
|
166
168
|
/**
|
|
@@ -176,9 +178,9 @@ export function readOnly() {
|
|
|
176
178
|
};
|
|
177
179
|
}
|
|
178
180
|
export function forSubagent(subagent, rule) {
|
|
179
|
-
return (tool, context) => {
|
|
181
|
+
return (tool, context, input) => {
|
|
180
182
|
if (context.subagent === subagent) {
|
|
181
|
-
return rule(tool, context);
|
|
183
|
+
return rule(tool, context, input);
|
|
182
184
|
}
|
|
183
185
|
return PermissionLevel.ALLOW;
|
|
184
186
|
};
|
|
@@ -255,11 +257,11 @@ export const presets = {
|
|
|
255
257
|
forMode(AiMode.PLAN, require(({ tool, context }) => tool.readOnly || context.planContext?.approved === true)),
|
|
256
258
|
// Tools in the PLAN category are only available in PLAN mode
|
|
257
259
|
forCategory(ToolCategory.PLAN, require(({ context }) => context.mode === AiMode.PLAN)),
|
|
258
|
-
// Tools in the DATA category require
|
|
260
|
+
// Tools in the DATA category require customer data access to be enabled
|
|
259
261
|
// When enabled, they are upgraded from BLOCK to PROMPT for entity-level approval
|
|
260
262
|
forCategory(ToolCategory.DATA, (_tool, context) => {
|
|
261
|
-
const {
|
|
262
|
-
if (
|
|
263
|
+
const { customerDataAccessEnabled } = context;
|
|
264
|
+
if (customerDataAccessEnabled) {
|
|
263
265
|
// Upgrade BLOCK to PROMPT when customer data access is enabled
|
|
264
266
|
// This allows entity-level permission checking (e.g., per-integration approval)
|
|
265
267
|
return PermissionLevel.PROMPT;
|