@superblocksteam/vite-plugin-file-sync 2.0.59-next.2 → 2.0.59-next.3
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 +10 -1
- 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 +357 -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 +1809 -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 +697 -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 +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 +103 -88
- 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 +44 -4
- 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 +2 -1
- package/dist/ai-service/const.d.ts.map +1 -1
- package/dist/ai-service/const.js +1 -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 +117 -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/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 +110 -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 +158 -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/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 +131 -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/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
|
@@ -42,6 +42,7 @@ import { Api as ProtoApi } from "@superblocksteam/types";
|
|
|
42
42
|
import { getLogger, getErrorMeta } from "../../../../util/logger.js";
|
|
43
43
|
import llmobs from "../../../llmobs/index.js";
|
|
44
44
|
import { safeJsonStringify } from "../../../util/safe-stringify.js";
|
|
45
|
+
import { validateBlockFieldNames } from "./build-api-artifact.js";
|
|
45
46
|
let ApiExecutor = (() => {
|
|
46
47
|
let _instanceExtraInitializers = [];
|
|
47
48
|
let _execute_decorators;
|
|
@@ -68,72 +69,48 @@ let ApiExecutor = (() => {
|
|
|
68
69
|
async execute(api, inputs = {}) {
|
|
69
70
|
const logger = getLogger();
|
|
70
71
|
const startTime = Date.now();
|
|
72
|
+
const apiName = api.type === "fetch" ? api.apiName : api.definition.metadata.name;
|
|
73
|
+
logger.info(`Executing API ${apiName}`, api.type === "inline" ? safeJsonStringify(api.definition, 2) : "");
|
|
71
74
|
try {
|
|
72
75
|
// Validate proto compatibility before execution
|
|
73
|
-
|
|
74
|
-
|
|
76
|
+
if (api.type === "inline") {
|
|
77
|
+
this.validateProtoCompatibility(api.definition);
|
|
78
|
+
}
|
|
75
79
|
// Step 3: Execute via aiExecuteV2Api
|
|
76
80
|
const result = await this.editorClient.call.aiExecuteV2Api({
|
|
77
81
|
api,
|
|
78
82
|
inputs,
|
|
79
83
|
});
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
errorDetails,
|
|
88
|
-
executionTime: Date.now() - startTime,
|
|
89
|
-
};
|
|
84
|
+
let errors = result.errors?.map((err) => ({
|
|
85
|
+
...this.parseExecutionError(err.message),
|
|
86
|
+
handled: err.handled,
|
|
87
|
+
}));
|
|
88
|
+
const topLevelError = result.systemError;
|
|
89
|
+
if (!errors?.length && typeof topLevelError === "string") {
|
|
90
|
+
errors = [this.parseExecutionError(topLevelError)];
|
|
90
91
|
}
|
|
92
|
+
const success = !result.systemError &&
|
|
93
|
+
(!errors || errors.length === 0 || errors.every((err) => err.handled));
|
|
91
94
|
return {
|
|
92
|
-
success
|
|
93
|
-
outputs: result.outputs
|
|
95
|
+
success,
|
|
96
|
+
outputs: result.outputs,
|
|
94
97
|
executionTime: Date.now() - startTime,
|
|
98
|
+
systemError: result.systemError,
|
|
99
|
+
errors,
|
|
95
100
|
};
|
|
96
101
|
}
|
|
97
102
|
catch (error) {
|
|
98
|
-
logger.error(`API execution failed for ${
|
|
99
|
-
|
|
100
|
-
if (error instanceof Error) {
|
|
101
|
-
if (error.message.includes("Proto")) {
|
|
102
|
-
return {
|
|
103
|
-
success: false,
|
|
104
|
-
error: error.message,
|
|
105
|
-
errorDetails: {
|
|
106
|
-
type: "proto",
|
|
107
|
-
message: error.message,
|
|
108
|
-
suggestion: this.getProtoErrorSuggestion(error.message),
|
|
109
|
-
originalError: error,
|
|
110
|
-
},
|
|
111
|
-
executionTime: Date.now() - startTime,
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
if (error.message.includes("ValidationError")) {
|
|
115
|
-
return {
|
|
116
|
-
success: false,
|
|
117
|
-
error: error.message,
|
|
118
|
-
errorDetails: {
|
|
119
|
-
type: "validation",
|
|
120
|
-
message: error.message,
|
|
121
|
-
suggestion: this.getValidationErrorSuggestion(error.message),
|
|
122
|
-
originalError: error,
|
|
123
|
-
},
|
|
124
|
-
executionTime: Date.now() - startTime,
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
// Generic error
|
|
103
|
+
logger.error(`API execution failed for ${apiName}:`, getErrorMeta(error));
|
|
104
|
+
const parsedError = this.parseExecutionError(error instanceof Error ? error.message : String(error));
|
|
129
105
|
return {
|
|
130
106
|
success: false,
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
107
|
+
errors: [
|
|
108
|
+
{
|
|
109
|
+
...parsedError,
|
|
110
|
+
handled: false,
|
|
111
|
+
originalError: error,
|
|
112
|
+
},
|
|
113
|
+
],
|
|
137
114
|
executionTime: Date.now() - startTime,
|
|
138
115
|
};
|
|
139
116
|
}
|
|
@@ -145,7 +122,7 @@ let ApiExecutor = (() => {
|
|
|
145
122
|
validateProtoCompatibility(api) {
|
|
146
123
|
const logger = getLogger();
|
|
147
124
|
// Check for incorrect generic field names
|
|
148
|
-
|
|
125
|
+
validateBlockFieldNames(api, this.integrationStore);
|
|
149
126
|
try {
|
|
150
127
|
// Convert to proto and back
|
|
151
128
|
const proto = ProtoApi.fromJson(api);
|
|
@@ -168,89 +145,197 @@ let ApiExecutor = (() => {
|
|
|
168
145
|
}
|
|
169
146
|
}
|
|
170
147
|
/**
|
|
171
|
-
*
|
|
148
|
+
* Parse error messages to extract the message and body (JSON) separately.
|
|
149
|
+
*
|
|
150
|
+
* @param errorMessage - The raw error message that may contain JSON with escaped newlines
|
|
151
|
+
* @returns Object with message and body if body exists, undefined otherwise
|
|
172
152
|
*/
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
for
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
153
|
+
parseErrorMessage(errorMessage) {
|
|
154
|
+
// Check if the message contains a Body section with JSON
|
|
155
|
+
// Look for Body: followed by JSON, handling escaped newlines
|
|
156
|
+
const bodyIndex = errorMessage.indexOf("Body:");
|
|
157
|
+
if (bodyIndex !== -1) {
|
|
158
|
+
// Find the JSON part after Body:
|
|
159
|
+
const afterBody = errorMessage.substring(bodyIndex + 5); // Skip "Body:"
|
|
160
|
+
const jsonMatch = afterBody.match(/(\{[\s\S]*\})/);
|
|
161
|
+
if (jsonMatch && jsonMatch[1]) {
|
|
162
|
+
try {
|
|
163
|
+
// Extract and clean the JSON string
|
|
164
|
+
const jsonString = jsonMatch[1]
|
|
165
|
+
.replace(/^\\n/, "") // Remove leading \n if present
|
|
166
|
+
.replace(/\\n/g, "\n")
|
|
167
|
+
.replace(/\\"/g, '"')
|
|
168
|
+
.replace(/\\\\/g, "\\");
|
|
169
|
+
// Parse and re-stringify with proper formatting
|
|
170
|
+
const parsed = JSON.parse(jsonString);
|
|
171
|
+
const prettyJson = JSON.stringify(parsed, null, 2);
|
|
172
|
+
// Get the part before Body: and remove trailing \n
|
|
173
|
+
let messageText = errorMessage.substring(0, bodyIndex);
|
|
174
|
+
if (messageText.endsWith("\\n")) {
|
|
175
|
+
messageText = messageText.slice(0, -2);
|
|
176
|
+
}
|
|
177
|
+
return {
|
|
178
|
+
message: messageText,
|
|
179
|
+
body: prettyJson,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
// If parsing fails, return undefined to indicate no parseable body
|
|
184
|
+
return undefined;
|
|
185
|
+
}
|
|
184
186
|
}
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
187
|
+
}
|
|
188
|
+
// If no Body section found, try to detect standalone JSON
|
|
189
|
+
const jsonMatch = errorMessage.match(/^(.*?)(\{[\s\S]*\})$/);
|
|
190
|
+
if (jsonMatch && jsonMatch[1] !== undefined && jsonMatch[2]) {
|
|
191
|
+
try {
|
|
192
|
+
const jsonString = jsonMatch[2]
|
|
193
|
+
.replace(/\\n/g, "\n")
|
|
194
|
+
.replace(/\\"/g, '"')
|
|
195
|
+
.replace(/\\\\/g, "\\");
|
|
196
|
+
const parsed = JSON.parse(jsonString);
|
|
197
|
+
const prettyJson = JSON.stringify(parsed, null, 2);
|
|
198
|
+
// Get the non-JSON part as message
|
|
199
|
+
const messageText = jsonMatch[1].trim().replace(/\\n/g, "\n");
|
|
200
|
+
return {
|
|
201
|
+
message: messageText || "Error",
|
|
202
|
+
body: prettyJson,
|
|
203
|
+
};
|
|
190
204
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
// Find what field they're actually using
|
|
195
|
-
const usedFields = Object.keys(block.step).filter((key) => key !== "integration" &&
|
|
196
|
-
typeof block.step[key] === "object");
|
|
197
|
-
throw new Error(`Block "${block.name}" uses incorrect field name. ` +
|
|
198
|
-
`The field name must match the integration's plugin ID.\n\n` +
|
|
199
|
-
`Expected field name: "${expectedPluginId}"\n` +
|
|
200
|
-
(usedFields.length > 0
|
|
201
|
-
? `Used field name: "${usedFields[0]}"\n\n`
|
|
202
|
-
: `No plugin configuration field found\n\n`) +
|
|
203
|
-
`The integration "${integrationId}" is of type "${expectedPluginId}", ` +
|
|
204
|
-
`so your step configuration must use:\n` +
|
|
205
|
-
`${expectedPluginId}: { ... }\n\n` +
|
|
206
|
-
`This ensures proper routing and validation of your API calls.`);
|
|
205
|
+
catch {
|
|
206
|
+
// If parsing fails, return undefined
|
|
207
|
+
return undefined;
|
|
207
208
|
}
|
|
208
209
|
}
|
|
210
|
+
// No parseable body found
|
|
211
|
+
return undefined;
|
|
209
212
|
}
|
|
210
213
|
/**
|
|
211
214
|
* Parse execution errors to provide helpful details.
|
|
212
215
|
*/
|
|
213
216
|
parseExecutionError(errorMessage) {
|
|
217
|
+
// Parse the error message to extract message and body
|
|
218
|
+
const parsedError = this.parseErrorMessage(errorMessage);
|
|
219
|
+
// Build messages for different purposes
|
|
220
|
+
const fullMessage = parsedError
|
|
221
|
+
? `${parsedError.message}\n\nBody:\n\n${parsedError.body}`
|
|
222
|
+
: errorMessage.replace(/\\n/g, "\n");
|
|
223
|
+
const displayMessage = parsedError
|
|
224
|
+
? parsedError.message
|
|
225
|
+
: errorMessage.replace(/\\n/g, "\n");
|
|
226
|
+
const bodyDetails = parsedError?.body;
|
|
214
227
|
// Check for common error patterns
|
|
228
|
+
if (errorMessage.includes("Proto")) {
|
|
229
|
+
return {
|
|
230
|
+
type: "proto",
|
|
231
|
+
message: fullMessage,
|
|
232
|
+
displayMessage,
|
|
233
|
+
bodyDetails,
|
|
234
|
+
suggestion: this.getProtoErrorSuggestion(errorMessage),
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
if (errorMessage.includes("ValidationError")) {
|
|
238
|
+
return {
|
|
239
|
+
type: "validation",
|
|
240
|
+
message: fullMessage,
|
|
241
|
+
displayMessage,
|
|
242
|
+
bodyDetails,
|
|
243
|
+
suggestion: this.getValidationErrorSuggestion(errorMessage),
|
|
244
|
+
};
|
|
245
|
+
}
|
|
215
246
|
if (errorMessage.includes("ReferenceError")) {
|
|
216
247
|
const match = errorMessage.match(/ReferenceError: (\w+) is not defined/);
|
|
217
248
|
const variable = match?.[1];
|
|
218
249
|
return {
|
|
219
|
-
type: "
|
|
220
|
-
message:
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
250
|
+
type: "binding",
|
|
251
|
+
message: fullMessage,
|
|
252
|
+
displayMessage,
|
|
253
|
+
bodyDetails,
|
|
254
|
+
suggestion: (variable ? `Variable "${variable}" is not defined. '` : "") +
|
|
255
|
+
"Check that all inputs are supplied and string values in Variables blocks are quoted",
|
|
224
256
|
};
|
|
225
257
|
}
|
|
226
258
|
if (errorMessage.includes("Integration") &&
|
|
227
259
|
errorMessage.includes("not found")) {
|
|
228
260
|
return {
|
|
229
261
|
type: "validation",
|
|
230
|
-
message:
|
|
262
|
+
message: fullMessage,
|
|
263
|
+
displayMessage,
|
|
264
|
+
bodyDetails,
|
|
231
265
|
suggestion: "Check that the integration ID exists and is accessible. Use listIntegrations to see available integrations.",
|
|
232
266
|
};
|
|
233
267
|
}
|
|
234
268
|
if (errorMessage.includes("UUID")) {
|
|
235
269
|
return {
|
|
236
270
|
type: "validation",
|
|
237
|
-
message:
|
|
271
|
+
message: fullMessage,
|
|
272
|
+
displayMessage,
|
|
273
|
+
bodyDetails,
|
|
238
274
|
suggestion: 'Organization ID must be a valid UUID. Use "00000000-0000-0000-0000-000000000000" for testing.',
|
|
239
275
|
};
|
|
240
276
|
}
|
|
241
277
|
if (errorMessage.includes("type must not be in list [0]")) {
|
|
242
278
|
return {
|
|
243
279
|
type: "validation",
|
|
244
|
-
message:
|
|
280
|
+
message: fullMessage,
|
|
281
|
+
displayMessage,
|
|
282
|
+
bodyDetails,
|
|
245
283
|
suggestion: "Variables block 'type' field must be a non-zero value. Use 1 for TYPE_SIMPLE.",
|
|
246
284
|
};
|
|
247
285
|
}
|
|
286
|
+
if (this.isAuthError(errorMessage)) {
|
|
287
|
+
return {
|
|
288
|
+
type: "auth",
|
|
289
|
+
message: fullMessage,
|
|
290
|
+
displayMessage,
|
|
291
|
+
bodyDetails,
|
|
292
|
+
suggestion: "There may be an issue with the integration configuration. Verify the integration is set up correctly and the credentials are valid.",
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
if (this.isRateLimitError(errorMessage)) {
|
|
296
|
+
return {
|
|
297
|
+
type: "rate_limit",
|
|
298
|
+
message: fullMessage,
|
|
299
|
+
displayMessage,
|
|
300
|
+
bodyDetails,
|
|
301
|
+
suggestion: "The integration reported a rate limit. Wait a moment and retry or reduce the frequency of requests.",
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
if (this.isBindingError(errorMessage)) {
|
|
305
|
+
return {
|
|
306
|
+
type: "binding",
|
|
307
|
+
message: fullMessage,
|
|
308
|
+
displayMessage,
|
|
309
|
+
bodyDetails,
|
|
310
|
+
suggestion: "Review component and state bindings referenced by the API to ensure they exist and are spelled correctly.",
|
|
311
|
+
};
|
|
312
|
+
}
|
|
248
313
|
// Generic execution error
|
|
249
314
|
return {
|
|
250
315
|
type: "execution",
|
|
251
|
-
message:
|
|
316
|
+
message: fullMessage,
|
|
317
|
+
displayMessage,
|
|
318
|
+
bodyDetails,
|
|
252
319
|
};
|
|
253
320
|
}
|
|
321
|
+
/**
|
|
322
|
+
* Determine whether an error message indicates an authentication or authorization failure.
|
|
323
|
+
*/
|
|
324
|
+
isAuthError(message) {
|
|
325
|
+
return /(unauthorized|forbidden|permission denied|401|403|oauth|no token|authentication|credential|token.*expired|invalid.*token)/i.test(message);
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Determine whether an error message indicates a rate limit condition.
|
|
329
|
+
*/
|
|
330
|
+
isRateLimitError(message) {
|
|
331
|
+
return /(429|rate limit|throttled)/i.test(message);
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Determine whether an error message indicates missing or incorrect bindings.
|
|
335
|
+
*/
|
|
336
|
+
isBindingError(message) {
|
|
337
|
+
return /ReferenceError|is not defined|Cannot read properties/i.test(message);
|
|
338
|
+
}
|
|
254
339
|
/**
|
|
255
340
|
* Get suggestion for proto errors.
|
|
256
341
|
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-executor.js","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools/apis/api-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ClarkStateHandlerParams } from "../../../state-machine/clark-fsm.js";
|
|
2
|
+
import type { FileArtifact } from "../../../types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Read the TypeScript source of an API
|
|
5
|
+
*/
|
|
6
|
+
export declare const readApiSource: (services: Pick<ClarkStateHandlerParams, "appShell" | "templateRenderer">, apiName: string, entityNames?: string[]) => Promise<FileArtifact | undefined>;
|
|
7
|
+
/**
|
|
8
|
+
* Write the TypeScript source of an API to the temporary directory
|
|
9
|
+
*
|
|
10
|
+
* This function writes the API source code to a temporary location where it can be
|
|
11
|
+
* compiled and validated before being persisted to the actual API location.
|
|
12
|
+
*
|
|
13
|
+
* @param apiName - The name of the API
|
|
14
|
+
* @param apiSource - The TypeScript source code of the API
|
|
15
|
+
* @param services - Service dependencies including app shell for file operations
|
|
16
|
+
* @returns The path where the API source was written
|
|
17
|
+
*/
|
|
18
|
+
export declare function writeApiSource(apiName: string, apiSource: string, services: ClarkStateHandlerParams): Promise<string>;
|
|
19
|
+
//# sourceMappingURL=api-source.d.ts.map
|
|
@@ -0,0 +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;;GAEG;AACH,eAAO,MAAM,aAAa,GACxB,UAAU,IAAI,CAAC,uBAAuB,EAAE,UAAU,GAAG,kBAAkB,CAAC,EACxE,SAAS,MAAM,EACf,cAAc,MAAM,EAAE,sCA8CvB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,uBAAuB,GAChC,OAAO,CAAC,MAAM,CAAC,CAqBjB"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { writeFile, mkdir, readFile } from "fs/promises";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { Paths } from "../../../const.js";
|
|
4
|
+
import { YamlToApiBuilderTransformer } from "../../../transform/api-builder/to-sdk-transformer.js";
|
|
5
|
+
import { applyFileTransformations, renderPath, } from "../../../transform/shared.js";
|
|
6
|
+
// import { getPageEntitiesFiltered } from "../../utils.js";
|
|
7
|
+
/**
|
|
8
|
+
* Read the TypeScript source of an API
|
|
9
|
+
*/
|
|
10
|
+
export const readApiSource = async (services, apiName, entityNames) => {
|
|
11
|
+
const apiTsPath = renderPath(Paths.GeneratedApis, {
|
|
12
|
+
apiName,
|
|
13
|
+
}) + ".ts";
|
|
14
|
+
const tmpPath = renderPath(Paths.Scratch, { path: apiTsPath });
|
|
15
|
+
if (await services.appShell.pathExists(tmpPath)) {
|
|
16
|
+
const content = await readFile(tmpPath);
|
|
17
|
+
const artifact = {
|
|
18
|
+
type: "file",
|
|
19
|
+
filePath: apiTsPath,
|
|
20
|
+
content: content.toString(),
|
|
21
|
+
};
|
|
22
|
+
return artifact;
|
|
23
|
+
}
|
|
24
|
+
const yamlPath = renderPath(Paths.ApiYamls, {
|
|
25
|
+
apiName,
|
|
26
|
+
});
|
|
27
|
+
const pathExists = await services.appShell.pathExists(yamlPath);
|
|
28
|
+
if (!pathExists) {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
const yamlArtifact = {
|
|
32
|
+
type: "file",
|
|
33
|
+
filePath: yamlPath,
|
|
34
|
+
content: "", // xform just needs path params
|
|
35
|
+
};
|
|
36
|
+
const [sdkArtifact] = await applyFileTransformations([yamlArtifact], [
|
|
37
|
+
new YamlToApiBuilderTransformer({
|
|
38
|
+
appRootDirPath: services.appShell.appRootDirPath,
|
|
39
|
+
entityNames: entityNames || [],
|
|
40
|
+
skipCleanup: true,
|
|
41
|
+
templateRenderer: services.templateRenderer,
|
|
42
|
+
}),
|
|
43
|
+
]);
|
|
44
|
+
return sdkArtifact;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Write the TypeScript source of an API to the temporary directory
|
|
48
|
+
*
|
|
49
|
+
* This function writes the API source code to a temporary location where it can be
|
|
50
|
+
* compiled and validated before being persisted to the actual API location.
|
|
51
|
+
*
|
|
52
|
+
* @param apiName - The name of the API
|
|
53
|
+
* @param apiSource - The TypeScript source code of the API
|
|
54
|
+
* @param services - Service dependencies including app shell for file operations
|
|
55
|
+
* @returns The path where the API source was written
|
|
56
|
+
*/
|
|
57
|
+
export async function writeApiSource(apiName, apiSource, services) {
|
|
58
|
+
const apiTsFilePath = renderPath(Paths.GeneratedApis, {
|
|
59
|
+
apiName,
|
|
60
|
+
}) + ".ts";
|
|
61
|
+
const filePath = renderPath(Paths.Scratch, {
|
|
62
|
+
path: apiTsFilePath,
|
|
63
|
+
});
|
|
64
|
+
const fullPath = path.join(services.appShell.appRootDirPath, filePath);
|
|
65
|
+
const dirPath = path.dirname(fullPath);
|
|
66
|
+
// Ensure all intermediate directories exist
|
|
67
|
+
await mkdir(dirPath, { recursive: true });
|
|
68
|
+
await writeFile(fullPath, apiSource, {
|
|
69
|
+
encoding: "utf-8",
|
|
70
|
+
});
|
|
71
|
+
return apiTsFilePath;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=api-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-source.js","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools/apis/api-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,2BAA2B,EAAE,MAAM,sDAAsD,CAAC;AACnG,OAAO,EACL,wBAAwB,EACxB,UAAU,GACX,MAAM,8BAA8B,CAAC;AAGtC,4DAA4D;AAE5D;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,QAAwE,EACxE,OAAe,EACf,WAAsB,EACtB,EAAE;IACF,MAAM,SAAS,GACb,UAAU,CAAC,KAAK,CAAC,aAAa,EAAE;QAC9B,OAAO;KACR,CAAC,GAAG,KAAK,CAAC;IACb,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IAE/D,IAAI,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAiB;YAC7B,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE;SAC5B,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,EAAE;QAC1C,OAAO;KACR,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAChE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,YAAY,GAAG;QACnB,IAAI,EAAE,MAAe;QACrB,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,EAAE,EAAE,+BAA+B;KAC7C,CAAC;IAEF,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,wBAAwB,CAClD,CAAC,YAAY,CAAC,EACd;QACE,IAAI,2BAA2B,CAAC;YAC9B,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAAC,cAAc;YAChD,WAAW,EAAE,WAAW,IAAI,EAAE;YAC9B,WAAW,EAAE,IAAI;YACjB,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;SAC5C,CAAC;KACH,CACF,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAe,EACf,SAAiB,EACjB,QAAiC;IAEjC,MAAM,aAAa,GACjB,UAAU,CAAC,KAAK,CAAC,aAAa,EAAE;QAC9B,OAAO;KACR,CAAC,GAAG,KAAK,CAAC;IAEb,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE;QACzC,IAAI,EAAE,aAAa;KACpB,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEvC,4CAA4C;IAC5C,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1C,MAAM,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE;QACnC,QAAQ,EAAE,OAAO;KAClB,CAAC,CAAC;IAEH,OAAO,aAAa,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { getPrefixedLogger } from "../../../../util/logger.js";
|
|
2
|
+
import { type Clark, type ClarkStateHandlerParams } from "../../../state-machine/clark-fsm.js";
|
|
3
|
+
import type { ApiExecutionResult, ApiExecutionInputs } from "./api-executor.js";
|
|
4
|
+
import type { ApiIdentifier } from "../../subagents/apis/types.js";
|
|
5
|
+
export declare enum ApiValidationStage {
|
|
6
|
+
REGISTRATION = "registration",
|
|
7
|
+
EXECUTE = "execute",
|
|
8
|
+
AUTH = "auth",
|
|
9
|
+
RESULTS = "results",
|
|
10
|
+
METADATA = "metadata"
|
|
11
|
+
}
|
|
12
|
+
export interface ApiValidationIssue {
|
|
13
|
+
stage: ApiValidationStage;
|
|
14
|
+
reason: string;
|
|
15
|
+
recoverable: boolean;
|
|
16
|
+
attempt: number;
|
|
17
|
+
error?: string;
|
|
18
|
+
suggestion?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface ApiValidationPipelineOptions {
|
|
21
|
+
maxRegistrationAttempts: number;
|
|
22
|
+
maxExecutionAttempts: number;
|
|
23
|
+
validateMetadata?: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface ApiValidationPipelineResult {
|
|
26
|
+
success: boolean;
|
|
27
|
+
summary: string;
|
|
28
|
+
issues: ApiValidationIssue[];
|
|
29
|
+
attempts: Record<ApiValidationStage, number>;
|
|
30
|
+
executionResult?: ApiExecutionResult;
|
|
31
|
+
escalated: boolean;
|
|
32
|
+
}
|
|
33
|
+
export declare class ApiValidationEscalatedError extends Error {
|
|
34
|
+
readonly issues: ApiValidationIssue[];
|
|
35
|
+
readonly summary: string;
|
|
36
|
+
constructor(summary: string, issues: ApiValidationIssue[]);
|
|
37
|
+
}
|
|
38
|
+
export interface RunApiValidationPipelineParams {
|
|
39
|
+
clark: Clark;
|
|
40
|
+
services: ClarkStateHandlerParams;
|
|
41
|
+
identifier: ApiIdentifier;
|
|
42
|
+
inputs?: ApiExecutionInputs;
|
|
43
|
+
options?: Partial<ApiValidationPipelineOptions>;
|
|
44
|
+
logger?: ReturnType<typeof getPrefixedLogger>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Execute the automated API validation pipeline, progressing through execution,
|
|
48
|
+
* authentication, parameter, metadata, and result validation stages.
|
|
49
|
+
*/
|
|
50
|
+
export declare const runApiValidationPipeline: (params: RunApiValidationPipelineParams) => Promise<ApiValidationPipelineResult>;
|
|
51
|
+
//# sourceMappingURL=api-validation-orchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-validation-orchestrator.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools/apis/api-validation-orchestrator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,uBAAuB,EAC7B,MAAM,qCAAqC,CAAC;AAI7C,OAAO,KAAK,EACV,kBAAkB,EAElB,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAGnE,oBAAY,kBAAkB;IAC5B,YAAY,iBAAiB;IAC7B,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,QAAQ,aAAa;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,4BAA4B;IAC3C,uBAAuB,EAAE,MAAM,CAAC;IAChC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC7C,eAAe,CAAC,EAAE,kBAAkB,CAAC;IACrC,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,2BAA4B,SAAQ,KAAK;IACpD,QAAQ,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;gBAEb,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,EAAE;CAQ1D;AAED,MAAM,WAAW,8BAA8B;IAC7C,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,uBAAuB,CAAC;IAClC,UAAU,EAAE,aAAa,CAAC;IAC1B,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAChD,MAAM,CAAC,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;CAC/C;AAgBD;;;GAGG;AACH,eAAO,MAAM,wBAAwB,GACnC,QAAQ,8BAA8B,KACrC,OAAO,CAAC,2BAA2B,CAmTrC,CAAC"}
|