@superblocksteam/vite-plugin-file-sync 2.0.123 → 2.0.124-next.1
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 +16 -1
- package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -1
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js +32 -1
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
- package/dist/ai-service/agent/prompts/build-security-scan-prompt.d.ts.map +1 -1
- package/dist/ai-service/agent/prompts/build-security-scan-prompt.js +3 -1
- package/dist/ai-service/agent/prompts/build-security-scan-prompt.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/api-comparator.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/apis/api-comparator.js +1 -4
- package/dist/ai-service/agent/tools/apis/api-comparator.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/api-testing-state.js +7 -0
- package/dist/ai-service/agent/tools/apis/api-testing-state.js.map +1 -1
- package/dist/ai-service/agent/tools/apis/get-api-docs.d.ts +1 -1
- package/dist/ai-service/agent/tools/apis/write-api.d.ts +2 -2
- package/dist/ai-service/agent/tools/build-capture-screenshot.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-capture-screenshot.js +11 -33
- package/dist/ai-service/agent/tools/build-capture-screenshot.js.map +1 -1
- package/dist/ai-service/agent/tools/build-copy-directory.d.ts +1 -1
- package/dist/ai-service/agent/tools/build-finalize.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-finalize.js +11 -2
- package/dist/ai-service/agent/tools/build-finalize.js.map +1 -1
- package/dist/ai-service/agent/tools/build-install-packages.d.ts +41 -1
- package/dist/ai-service/agent/tools/build-install-packages.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/build-install-packages.js +217 -0
- package/dist/ai-service/agent/tools/build-install-packages.js.map +1 -1
- package/dist/ai-service/agent/tools/build-lookup-npm-package.d.ts +28 -0
- package/dist/ai-service/agent/tools/build-lookup-npm-package.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-lookup-npm-package.js +78 -0
- package/dist/ai-service/agent/tools/build-lookup-npm-package.js.map +1 -0
- package/dist/ai-service/agent/tools/build-manage-checklist.d.ts +4 -4
- package/dist/ai-service/agent/tools/build-navigate-preview.d.ts +16 -0
- package/dist/ai-service/agent/tools/build-navigate-preview.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/build-navigate-preview.js +68 -0
- package/dist/ai-service/agent/tools/build-navigate-preview.js.map +1 -0
- package/dist/ai-service/agent/tools/build-write-file.d.ts +1 -1
- package/dist/ai-service/agent/tools/databases/dev-database.d.ts +9 -9
- package/dist/ai-service/agent/tools/index.d.ts +2 -0
- package/dist/ai-service/agent/tools/index.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/index.js +2 -0
- package/dist/ai-service/agent/tools/index.js.map +1 -1
- package/dist/ai-service/agent/tools/integrations/execute-request.d.ts +3 -3
- package/dist/ai-service/agent/tools/report-security-findings.d.ts +11 -5
- package/dist/ai-service/agent/tools/report-security-findings.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/report-security-findings.js +1 -0
- package/dist/ai-service/agent/tools/report-security-findings.js.map +1 -1
- package/dist/ai-service/agent/tools.d.ts.map +1 -1
- package/dist/ai-service/agent/tools.js +3 -1
- package/dist/ai-service/agent/tools.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/git.d.ts +2 -2
- package/dist/ai-service/agent/tools2/tools/grep.d.ts +2 -2
- package/dist/ai-service/agent/tools2/tools/update-test-case-status.d.ts +2 -2
- package/dist/ai-service/app-interface/npm-error-parser.d.ts +161 -0
- package/dist/ai-service/app-interface/npm-error-parser.d.ts.map +1 -0
- package/dist/ai-service/app-interface/npm-error-parser.js +510 -0
- package/dist/ai-service/app-interface/npm-error-parser.js.map +1 -0
- package/dist/ai-service/app-interface/npm-package-lookup.d.ts +286 -0
- package/dist/ai-service/app-interface/npm-package-lookup.d.ts.map +1 -0
- package/dist/ai-service/app-interface/npm-package-lookup.js +793 -0
- package/dist/ai-service/app-interface/npm-package-lookup.js.map +1 -0
- package/dist/ai-service/app-interface/npm-registry.d.ts +735 -47
- package/dist/ai-service/app-interface/npm-registry.d.ts.map +1 -1
- package/dist/ai-service/app-interface/npm-registry.js +1882 -153
- package/dist/ai-service/app-interface/npm-registry.js.map +1 -1
- package/dist/ai-service/app-interface/shell.d.ts +118 -1
- package/dist/ai-service/app-interface/shell.d.ts.map +1 -1
- package/dist/ai-service/app-interface/shell.js +590 -157
- package/dist/ai-service/app-interface/shell.js.map +1 -1
- package/dist/ai-service/app-skills/manager.d.ts +1 -1
- package/dist/ai-service/app-skills/manager.d.ts.map +1 -1
- package/dist/ai-service/app-skills/manager.js +39 -7
- package/dist/ai-service/app-skills/manager.js.map +1 -1
- package/dist/ai-service/checklist/api-migration-checklist-gate.d.ts +9 -0
- package/dist/ai-service/checklist/api-migration-checklist-gate.d.ts.map +1 -0
- package/dist/ai-service/checklist/api-migration-checklist-gate.js +30 -0
- package/dist/ai-service/checklist/api-migration-checklist-gate.js.map +1 -0
- package/dist/ai-service/checklist/api-migration-origins.d.ts +4 -0
- package/dist/ai-service/checklist/api-migration-origins.d.ts.map +1 -0
- package/dist/ai-service/checklist/api-migration-origins.js +8 -0
- package/dist/ai-service/checklist/api-migration-origins.js.map +1 -0
- package/dist/ai-service/checklist/persisted-checklist-store.d.ts +2 -3
- package/dist/ai-service/checklist/persisted-checklist-store.d.ts.map +1 -1
- package/dist/ai-service/checklist/persisted-checklist-store.js +6 -7
- package/dist/ai-service/checklist/persisted-checklist-store.js.map +1 -1
- package/dist/ai-service/context-archive-paths.d.ts +4 -0
- package/dist/ai-service/context-archive-paths.d.ts.map +1 -0
- package/dist/ai-service/context-archive-paths.js +28 -0
- package/dist/ai-service/context-archive-paths.js.map +1 -0
- package/dist/ai-service/context-download.d.ts +3 -1
- package/dist/ai-service/context-download.d.ts.map +1 -1
- package/dist/ai-service/context-download.js +48 -9
- package/dist/ai-service/context-download.js.map +1 -1
- package/dist/ai-service/context-upload.d.ts +3 -2
- package/dist/ai-service/context-upload.d.ts.map +1 -1
- package/dist/ai-service/context-upload.js +44 -26
- package/dist/ai-service/context-upload.js.map +1 -1
- package/dist/ai-service/dev-database-client.d.ts +3 -11
- package/dist/ai-service/dev-database-client.d.ts.map +1 -1
- package/dist/ai-service/dev-database-client.js.map +1 -1
- package/dist/ai-service/features.d.ts +4 -0
- package/dist/ai-service/features.d.ts.map +1 -1
- package/dist/ai-service/features.js +8 -0
- package/dist/ai-service/features.js.map +1 -1
- package/dist/ai-service/filter-disabled-tools-for-migration.d.ts.map +1 -1
- package/dist/ai-service/filter-disabled-tools-for-migration.js +4 -0
- package/dist/ai-service/filter-disabled-tools-for-migration.js.map +1 -1
- package/dist/ai-service/index.d.ts +103 -0
- package/dist/ai-service/index.d.ts.map +1 -1
- package/dist/ai-service/index.js +610 -25
- package/dist/ai-service/index.js.map +1 -1
- package/dist/ai-service/llm/client.d.ts +38 -3
- package/dist/ai-service/llm/client.d.ts.map +1 -1
- package/dist/ai-service/llm/client.js +73 -22
- package/dist/ai-service/llm/client.js.map +1 -1
- package/dist/ai-service/llm/context-v2/adapter.d.ts +3 -1
- package/dist/ai-service/llm/context-v2/adapter.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/adapter.js +11 -11
- package/dist/ai-service/llm/context-v2/adapter.js.map +1 -1
- package/dist/ai-service/llm/context-v2/compaction/client-side.d.ts +44 -0
- package/dist/ai-service/llm/context-v2/compaction/client-side.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/compaction/client-side.js +170 -0
- package/dist/ai-service/llm/context-v2/compaction/client-side.js.map +1 -0
- package/dist/ai-service/llm/context-v2/compaction/compaction-strategy.d.ts +56 -0
- package/dist/ai-service/llm/context-v2/compaction/compaction-strategy.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/compaction/compaction-strategy.js +9 -0
- package/dist/ai-service/llm/context-v2/compaction/compaction-strategy.js.map +1 -0
- package/dist/ai-service/llm/context-v2/compaction/index.d.ts +5 -0
- package/dist/ai-service/llm/context-v2/compaction/index.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/compaction/index.js +3 -0
- package/dist/ai-service/llm/context-v2/compaction/index.js.map +1 -0
- package/dist/ai-service/llm/context-v2/compaction/server-side.d.ts +30 -0
- package/dist/ai-service/llm/context-v2/compaction/server-side.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/compaction/server-side.js +130 -0
- package/dist/ai-service/llm/context-v2/compaction/server-side.js.map +1 -0
- package/dist/ai-service/llm/context-v2/context-management.d.ts +203 -0
- package/dist/ai-service/llm/context-v2/context-management.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/context-management.js +183 -0
- package/dist/ai-service/llm/context-v2/context-management.js.map +1 -0
- package/dist/ai-service/llm/context-v2/context.d.ts +64 -22
- package/dist/ai-service/llm/context-v2/context.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/context.js +233 -157
- package/dist/ai-service/llm/context-v2/context.js.map +1 -1
- package/dist/ai-service/llm/context-v2/conversation-context.d.ts +24 -7
- package/dist/ai-service/llm/context-v2/conversation-context.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/conversation-context.js +1 -1
- package/dist/ai-service/llm/context-v2/index.d.ts +0 -4
- package/dist/ai-service/llm/context-v2/index.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/index.js +0 -4
- package/dist/ai-service/llm/context-v2/index.js.map +1 -1
- package/dist/ai-service/llm/context-v2/manager.d.ts +24 -3
- package/dist/ai-service/llm/context-v2/manager.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/manager.js +146 -4
- package/dist/ai-service/llm/context-v2/manager.js.map +1 -1
- package/dist/ai-service/llm/context-v2/migrations/v1-to-v2.d.ts +2 -7
- package/dist/ai-service/llm/context-v2/migrations/v1-to-v2.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/migrations/v1-to-v2.js +5 -73
- package/dist/ai-service/llm/context-v2/migrations/v1-to-v2.js.map +1 -1
- package/dist/ai-service/llm/context-v2/storage/event-store.d.ts +57 -0
- package/dist/ai-service/llm/context-v2/storage/event-store.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/event-store.js +10 -0
- package/dist/ai-service/llm/context-v2/storage/event-store.js.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/event-types.d.ts +50 -0
- package/dist/ai-service/llm/context-v2/storage/event-types.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/event-types.js +10 -0
- package/dist/ai-service/llm/context-v2/storage/event-types.js.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/jsonl-event-store.d.ts +87 -0
- package/dist/ai-service/llm/context-v2/storage/jsonl-event-store.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/jsonl-event-store.js +184 -0
- package/dist/ai-service/llm/context-v2/storage/jsonl-event-store.js.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/migration.d.ts +49 -0
- package/dist/ai-service/llm/context-v2/storage/migration.d.ts.map +1 -0
- package/dist/ai-service/llm/context-v2/storage/migration.js +126 -0
- package/dist/ai-service/llm/context-v2/storage/migration.js.map +1 -0
- package/dist/ai-service/llm/context-v2/types.d.ts +16 -11
- package/dist/ai-service/llm/context-v2/types.d.ts.map +1 -1
- package/dist/ai-service/llm/context-v2/types.js +2 -2
- package/dist/ai-service/llm/context-v2/types.js.map +1 -1
- package/dist/ai-service/llm/impl/clark.d.ts +8 -0
- package/dist/ai-service/llm/impl/clark.d.ts.map +1 -1
- package/dist/ai-service/llm/impl/clark.js +8 -0
- package/dist/ai-service/llm/impl/clark.js.map +1 -1
- package/dist/ai-service/llm/interaction/adapters/vercel.d.ts.map +1 -1
- package/dist/ai-service/llm/interaction/adapters/vercel.js +17 -1
- package/dist/ai-service/llm/interaction/adapters/vercel.js.map +1 -1
- package/dist/ai-service/llm/provider.d.ts.map +1 -1
- package/dist/ai-service/llm/provider.js +1 -3
- package/dist/ai-service/llm/provider.js.map +1 -1
- package/dist/ai-service/llm/stream/observers/context.d.ts +23 -0
- package/dist/ai-service/llm/stream/observers/context.d.ts.map +1 -1
- package/dist/ai-service/llm/stream/observers/context.js +62 -0
- package/dist/ai-service/llm/stream/observers/context.js.map +1 -1
- package/dist/ai-service/llm/tool-context-integrity.d.ts +25 -0
- package/dist/ai-service/llm/tool-context-integrity.d.ts.map +1 -0
- package/dist/ai-service/llm/tool-context-integrity.js +141 -0
- package/dist/ai-service/llm/tool-context-integrity.js.map +1 -0
- package/dist/ai-service/skills/system/superblocks-migration/skill.generated.d.ts +1 -1
- package/dist/ai-service/skills/system/superblocks-migration/skill.generated.d.ts.map +1 -1
- package/dist/ai-service/skills/system/superblocks-migration/skill.generated.js +6 -1
- package/dist/ai-service/skills/system/superblocks-migration/skill.generated.js.map +1 -1
- package/dist/ai-service/skills/system/third-party-migration/skill.generated.d.ts +1 -1
- package/dist/ai-service/skills/system/third-party-migration/skill.generated.d.ts.map +1 -1
- package/dist/ai-service/skills/system/third-party-migration/skill.generated.js +3 -2
- package/dist/ai-service/skills/system/third-party-migration/skill.generated.js.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.d.ts +23 -2
- package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.js +37 -2
- 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 +29 -2
- package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/awaiting-user.js +9 -0
- package/dist/ai-service/state-machine/handlers/awaiting-user.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 +25 -2
- package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
- package/dist/ai-service/state-machine/helpers/fetch-with-reconnect-retry.d.ts +6 -0
- package/dist/ai-service/state-machine/helpers/fetch-with-reconnect-retry.d.ts.map +1 -0
- package/dist/ai-service/state-machine/helpers/fetch-with-reconnect-retry.js +36 -0
- package/dist/ai-service/state-machine/helpers/fetch-with-reconnect-retry.js.map +1 -0
- package/dist/ai-service/state-machine/helpers/stable-peer.d.ts +30 -1
- package/dist/ai-service/state-machine/helpers/stable-peer.d.ts.map +1 -1
- package/dist/ai-service/state-machine/helpers/stable-peer.js +85 -2
- package/dist/ai-service/state-machine/helpers/stable-peer.js.map +1 -1
- package/dist/ai-service/state-machine/helpers/user-preferences.d.ts +8 -0
- package/dist/ai-service/state-machine/helpers/user-preferences.d.ts.map +1 -0
- package/dist/ai-service/state-machine/helpers/user-preferences.js +11 -0
- package/dist/ai-service/state-machine/helpers/user-preferences.js.map +1 -0
- package/dist/ai-service/template-renderer.d.ts +18 -1
- package/dist/ai-service/template-renderer.d.ts.map +1 -1
- package/dist/ai-service/template-renderer.js +85 -20
- package/dist/ai-service/template-renderer.js.map +1 -1
- package/dist/ai-service/types.d.ts +157 -0
- package/dist/ai-service/types.d.ts.map +1 -1
- package/dist/ai-service/types.js +137 -0
- package/dist/ai-service/types.js.map +1 -1
- package/dist/ai-service/util/llm-config-utils.d.ts +21 -22
- package/dist/ai-service/util/llm-config-utils.d.ts.map +1 -1
- package/dist/ai-service/util/llm-config-utils.js +40 -67
- package/dist/ai-service/util/llm-config-utils.js.map +1 -1
- package/dist/file-sync-vite-plugin.d.ts.map +1 -1
- package/dist/file-sync-vite-plugin.js +5 -0
- package/dist/file-sync-vite-plugin.js.map +1 -1
- package/dist/file-system-helpers.d.ts +17 -0
- package/dist/file-system-helpers.d.ts.map +1 -1
- package/dist/file-system-helpers.js +22 -0
- package/dist/file-system-helpers.js.map +1 -1
- package/dist/git-service/index.d.ts.map +1 -1
- package/dist/git-service/index.js +15 -1
- package/dist/git-service/index.js.map +1 -1
- package/dist/migration/migration-routes.d.ts.map +1 -1
- package/dist/migration/migration-routes.js +26 -3
- package/dist/migration/migration-routes.js.map +1 -1
- package/dist/migration/translation-prompt.d.ts.map +1 -1
- package/dist/migration/translation-prompt.js +5 -0
- package/dist/migration/translation-prompt.js.map +1 -1
- package/dist/migration-templates/app-fullstack/package.json +2 -2
- package/dist/policy-gate-callback-mapper.d.ts +24 -0
- package/dist/policy-gate-callback-mapper.d.ts.map +1 -0
- package/dist/policy-gate-callback-mapper.js +61 -0
- package/dist/policy-gate-callback-mapper.js.map +1 -0
- package/dist/policy-gate-runner.d.ts +32 -0
- package/dist/policy-gate-runner.d.ts.map +1 -0
- package/dist/policy-gate-runner.js +191 -0
- package/dist/policy-gate-runner.js.map +1 -0
- package/dist/router-parser.d.ts.map +1 -1
- package/dist/router-parser.js +107 -11
- package/dist/router-parser.js.map +1 -1
- package/dist/sync-service/list-dir.d.ts.map +1 -1
- package/dist/sync-service/list-dir.js +13 -3
- package/dist/sync-service/list-dir.js.map +1 -1
- package/package.json +28 -10
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import fs from "node:fs/promises";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import z from "zod";
|
|
4
|
+
import { isProtectedCorePackage, PROTECTED_CORE_PACKAGES, } from "@superblocksteam/library-shared/types";
|
|
4
5
|
import { getErrorMeta, getLogger } from "../../../util/logger.js";
|
|
6
|
+
import { NpmInstallBlocked } from "../../types.js";
|
|
5
7
|
import { createToolFactory, ToolCategory } from "../tools2/types.js";
|
|
6
8
|
async function readPackageJson(appRootDirPath) {
|
|
7
9
|
try {
|
|
@@ -13,6 +15,169 @@ async function readPackageJson(appRootDirPath) {
|
|
|
13
15
|
return null;
|
|
14
16
|
}
|
|
15
17
|
}
|
|
18
|
+
/** Sanitize a string before interpolating it into the agent-facing message.
|
|
19
|
+
*
|
|
20
|
+
* Package specs and registry hosts originate from npm's error.detail /
|
|
21
|
+
* error.summary — i.e. attacker-controllable for a hostile or misbehaving
|
|
22
|
+
* registry. Without sanitization, a value containing backticks/newlines
|
|
23
|
+
* could break out of the surrounding markdown code-span (or fake one),
|
|
24
|
+
* letting the registry inject instructions into the agent's read context.
|
|
25
|
+
*
|
|
26
|
+
* Three transforms, applied in order:
|
|
27
|
+
* - Strip ASCII control chars + newlines so injected line breaks can't
|
|
28
|
+
* forge a new "instruction" paragraph.
|
|
29
|
+
* - Strip backticks so the value can't terminate the surrounding span or
|
|
30
|
+
* introduce a fenced block.
|
|
31
|
+
* - Cap length so a multi-KB payload can't push downstream context out
|
|
32
|
+
* of the window. 100 chars accommodates the longest realistic scoped
|
|
33
|
+
* spec (`@some-org/some-package@1.2.3-rc.4+sha.abc1234`) with room. */
|
|
34
|
+
const SAFE_INTERP_MAX_LEN = 100;
|
|
35
|
+
function sanitizeForAgentMessage(value) {
|
|
36
|
+
// eslint-disable-next-line no-control-regex -- intentional: scrubbing CR/LF/control chars
|
|
37
|
+
const stripped = value.replace(/[`\u0000-\u001F\u007F]/g, "");
|
|
38
|
+
return stripped.length > SAFE_INTERP_MAX_LEN
|
|
39
|
+
? `${stripped.slice(0, SAFE_INTERP_MAX_LEN)}…`
|
|
40
|
+
: stripped;
|
|
41
|
+
}
|
|
42
|
+
/** Whether `host` (already lowercased downstream by the URL parser, but we
|
|
43
|
+
* re-lowercase for defence) is one of the public npmjs.org registry hosts.
|
|
44
|
+
*
|
|
45
|
+
* `registry.npmjs.org` is the de facto URL npm uses in cloud-edit, SaaS,
|
|
46
|
+
* on-prem-without-private-registry, and the baked-in dev-server `.npmrc`.
|
|
47
|
+
* Legacy `npmjs.org` redirects to it but can still appear in error
|
|
48
|
+
* summaries from older npm clients. Anything else (Artifactory, GHPR,
|
|
49
|
+
* Verdaccio, a customer-hosted mirror) counts as a private host. */
|
|
50
|
+
function isPublicNpmHost(host) {
|
|
51
|
+
if (!host)
|
|
52
|
+
return false;
|
|
53
|
+
const h = host.toLowerCase();
|
|
54
|
+
return (h === "registry.npmjs.org" || h === "npmjs.org" || h.endsWith(".npmjs.org"));
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Render a `NpmInstallBlocked` into an actionable one-paragraph message for
|
|
58
|
+
* the agent, plus the discriminator that selected the message branch. The
|
|
59
|
+
* structured `error` field carries the canonical inputs; this string is what
|
|
60
|
+
* the model reads first.
|
|
61
|
+
*
|
|
62
|
+
* Branch selection (see `NpmInstallBlockedMessageVariant`):
|
|
63
|
+
*
|
|
64
|
+
* - `unreachable_escalation` — `registry_unreachable` + zero configured
|
|
65
|
+
* rows + host is npmjs (or unknown). Covers both the SaaS "npmjs is down"
|
|
66
|
+
* case and the airgapped "egress is blocked and no private registry is
|
|
67
|
+
* wired up" case with one hybrid message, because the dev-server cannot
|
|
68
|
+
* distinguish them from the error alone.
|
|
69
|
+
* - `private_mirror_hint` — `not_in_registry` + at least one configured
|
|
70
|
+
* row + host is private. Appends "an org admin may need to mirror this
|
|
71
|
+
* package" because that's an actionable escalation on a private
|
|
72
|
+
* registry; same hint on npmjs would be misleading.
|
|
73
|
+
* - `default` — every other combination, including all
|
|
74
|
+
* `registry_auth_failed` failures.
|
|
75
|
+
*
|
|
76
|
+
* Exported so the matrix can be unit-tested directly without round-tripping
|
|
77
|
+
* through the AppShell + npm exec mock.
|
|
78
|
+
*/
|
|
79
|
+
export function buildBlockedMessage(err) {
|
|
80
|
+
const safeHost = err.registryHost
|
|
81
|
+
? sanitizeForAgentMessage(err.registryHost)
|
|
82
|
+
: "";
|
|
83
|
+
const host = safeHost ? ` (registry: ${safeHost})` : "";
|
|
84
|
+
const packagesPhrase = err.packages.length > 0
|
|
85
|
+
? err.packages.map((p) => `\`${sanitizeForAgentMessage(p)}\``).join(", ")
|
|
86
|
+
: "the requested package";
|
|
87
|
+
// Core-package guard (APPS-4527): when the blocked set contains a
|
|
88
|
+
// protected core dependency (`@superblocksteam/*`, react, react-router,
|
|
89
|
+
// vite, …), Clark must not "fix" the failure by removing or refactoring
|
|
90
|
+
// the app away from it — the dev server, bundle builder, and runtime all
|
|
91
|
+
// require these. The only remediation is mirroring into the registry.
|
|
92
|
+
const protectedCorePackageGuidance = err.packages.some((p) => isProtectedCorePackage(p))
|
|
93
|
+
? ` One or more of these are core app dependencies (\`@superblocksteam/*\` packages, ${PROTECTED_CORE_PACKAGES.join(", ")}). Never suggest uninstalling, replacing, or refactoring the app away from a core dependency; an org admin must make it available in the registry.`
|
|
94
|
+
: "";
|
|
95
|
+
// Tri-state: `undefined` means "no client wired in" (test fixtures, judge
|
|
96
|
+
// runner) and is treated as `true` — there is no escalation path to
|
|
97
|
+
// recommend if we don't know the deployment has a private-registry seam.
|
|
98
|
+
const hasRows = err.hasAnyRegistryConfigured !== false;
|
|
99
|
+
const hostIsPublic = isPublicNpmHost(err.registryHost);
|
|
100
|
+
const hostIsKnown = !!err.registryHost;
|
|
101
|
+
const errorCode = err.npmErrorCode;
|
|
102
|
+
switch (err.reason) {
|
|
103
|
+
case "not_in_registry": {
|
|
104
|
+
const privateHostWithRows = hostIsKnown && !hostIsPublic && hasRows;
|
|
105
|
+
if (privateHostWithRows) {
|
|
106
|
+
// Private host + rows present: the customer is on a private registry
|
|
107
|
+
// and this 404 most likely means the package isn't mirrored yet (or
|
|
108
|
+
// is genuinely missing). Append an actionable escalation pointing at
|
|
109
|
+
// the org admin without naming the registry URL or any token-bearing
|
|
110
|
+
// details — non-admin users still get something they can do.
|
|
111
|
+
return {
|
|
112
|
+
variant: "private_mirror_hint",
|
|
113
|
+
message: `The npm registry${host} returned 404 for ${packagesPhrase}. This may be a typo, an unpublished package, or a package that has not been mirrored into your private registry. Stop and confirm with the user before trying a different package — and if the package name is correct, an org admin may need to mirror it into your private registry.${protectedCorePackageGuidance}`,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
// Mode-agnostic default: covers SaaS (npmjs → typo / unpublished /
|
|
117
|
+
// renamed), private host with no rows (degenerate EE ephemeral case),
|
|
118
|
+
// and unknown host (parser couldn't extract a URL).
|
|
119
|
+
return {
|
|
120
|
+
variant: "default",
|
|
121
|
+
message: `The npm registry${host} returned 404 for ${packagesPhrase}. This may be a typo, an unpublished or renamed package, or — if a private registry is configured — a package that has not been mirrored. Stop and confirm with the user before trying a different package.${protectedCorePackageGuidance}`,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
case "registry_unreachable": {
|
|
125
|
+
// Escalation hint applies only when (a) we know zero rows are
|
|
126
|
+
// configured AND (b) the host npm attempted is npmjs.org or unknown
|
|
127
|
+
// (no host extracted from the error). When the host is a private
|
|
128
|
+
// registry the customer already has one wired up — telling them to
|
|
129
|
+
// configure one would be misleading.
|
|
130
|
+
const hostQualifiesForEscalation = !hostIsKnown || hostIsPublic;
|
|
131
|
+
const noRowsConfigured = err.hasAnyRegistryConfigured === false;
|
|
132
|
+
if (hostQualifiesForEscalation && noRowsConfigured) {
|
|
133
|
+
return {
|
|
134
|
+
variant: "unreachable_escalation",
|
|
135
|
+
message: `The npm registry${host} could not be reached (${errorCode ?? "network error"}). This may be a temporary outage of npmjs.org, or — if this deployment cannot reach public npm — egress may be blocked. Alternative packages will not help — stop and report this to the user. If this deployment is intended to use a private npm registry, ask an org admin to configure one in Org Settings → Package Registry.`,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
// Subreason-specific hint (APPS-4381): the parser narrows the failure
|
|
139
|
+
// to dns / network / proxy / timeout where it can, so the operator
|
|
140
|
+
// gets a directed next step instead of the four-cause grab-bag. The
|
|
141
|
+
// hint is appended to the existing multi-cause sentence — keeping the
|
|
142
|
+
// structure stable lets existing model-eval prompts continue matching
|
|
143
|
+
// on the "could not be reached" / "alternative packages will not help"
|
|
144
|
+
// anchors that the rest of the test surface pins.
|
|
145
|
+
const subreasonHint = (() => {
|
|
146
|
+
switch (err.subreason) {
|
|
147
|
+
case "dns":
|
|
148
|
+
return " The registry hostname could not be resolved (DNS); the corporate or container DNS resolver may not see this host.";
|
|
149
|
+
case "network":
|
|
150
|
+
return " The TCP connection was refused or reset; a firewall, egress filter, or routing rule may be blocking the registry.";
|
|
151
|
+
case "proxy":
|
|
152
|
+
return " An HTTP proxy refused the request; the proxy URL, credentials, or NO_PROXY rules may be misconfigured.";
|
|
153
|
+
case "timeout":
|
|
154
|
+
return " The request timed out; the network path to the registry is slow or the registry is hung.";
|
|
155
|
+
default:
|
|
156
|
+
return "";
|
|
157
|
+
}
|
|
158
|
+
})();
|
|
159
|
+
// Revised default: drop the "transient" framing — unreachable can
|
|
160
|
+
// equally be DNS misconfig, an auth gateway rejecting the request at
|
|
161
|
+
// the network layer, expired credentials, or a misrouted scope. The
|
|
162
|
+
// common thread is "alternative packages will not help; surface this
|
|
163
|
+
// up the stack."
|
|
164
|
+
return {
|
|
165
|
+
variant: "default",
|
|
166
|
+
message: `The npm registry${host} could not be reached (${errorCode ?? "network error"}). This may be a registry outage, a network or auth misconfiguration, expired credentials at the network layer, or a misrouted scope.${subreasonHint} Alternative packages will not help — stop and report the failure to the user.`,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
case "registry_auth_failed":
|
|
170
|
+
return {
|
|
171
|
+
variant: "default",
|
|
172
|
+
message: `The configured npm registry${host} rejected the authentication credentials (${errorCode ?? "auth error"}). This requires an administrator to fix the registry token. Stop and report the failure rather than trying alternative packages.`,
|
|
173
|
+
};
|
|
174
|
+
case "tls_failed":
|
|
175
|
+
return {
|
|
176
|
+
variant: "default",
|
|
177
|
+
message: `The TLS handshake with the npm registry${host} failed (${errorCode ?? "TLS error"}). Common causes: an untrusted private CA the registry serves, a self-signed certificate, or an expired certificate. An administrator must install the registry's CA bundle (e.g. via NODE_EXTRA_CA_CERTS or the npm cafile config) or rotate the expired certificate. Alternative packages will not help — stop and report the failure to the user.`,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
}
|
|
16
181
|
function detectVersionChanges(packages, currentPackageJson) {
|
|
17
182
|
if (!currentPackageJson)
|
|
18
183
|
return [];
|
|
@@ -100,11 +265,63 @@ export const buildInstallPackagesToolFactory = createToolFactory("build_installP
|
|
|
100
265
|
}
|
|
101
266
|
}
|
|
102
267
|
catch (error) {
|
|
268
|
+
// Surface registry-blocked failures as a structured tool result so
|
|
269
|
+
// the agent can reason about the reason (404 vs auth vs network)
|
|
270
|
+
// on the same conversation turn, instead of letting the error
|
|
271
|
+
// bubble up to agent-planning's POST_PROCESSING_ERRORED branch
|
|
272
|
+
// (which only emits a raw stderr `debug()` message).
|
|
273
|
+
if (error instanceof NpmInstallBlocked) {
|
|
274
|
+
// `warn` (not `info`) because operators want this to surface in
|
|
275
|
+
// standard `level>=warn` alert queries: a blocked install is a
|
|
276
|
+
// handled, recoverable condition (the agent gets structured
|
|
277
|
+
// guidance) but operationally important to track. `error` would
|
|
278
|
+
// overstate severity since the agent loop is not crashing, and
|
|
279
|
+
// would force the strict `ErrorMeta` shape that drops the
|
|
280
|
+
// structured `toJSON()` payload operators actually want to
|
|
281
|
+
// facet on. Per APPS-4179 AC this is the single log line for
|
|
282
|
+
// the structured error.
|
|
283
|
+
//
|
|
284
|
+
// `messageVariant` joins the toJSON projection so a downstream
|
|
285
|
+
// Datadog/Loki facet can distinguish the row-aware branches
|
|
286
|
+
// (`private_mirror_hint`, `unreachable_escalation`) from the
|
|
287
|
+
// default advice without re-deriving the matrix from the raw
|
|
288
|
+
// inputs. AppShell.classifyNpmExecError emits the same data
|
|
289
|
+
// points as llmobs span tags; the warn log is the structured
|
|
290
|
+
// counterpart that survives outside of trace sampling.
|
|
291
|
+
const { message, variant } = buildBlockedMessage(error);
|
|
292
|
+
getLogger().warn("Install blocked by registry condition", {
|
|
293
|
+
...error.toJSON(),
|
|
294
|
+
messageVariant: variant,
|
|
295
|
+
});
|
|
296
|
+
return {
|
|
297
|
+
ok: false,
|
|
298
|
+
error: error.toJSON(),
|
|
299
|
+
message,
|
|
300
|
+
};
|
|
301
|
+
}
|
|
103
302
|
getLogger().error("Error installing packages", getErrorMeta(error));
|
|
104
303
|
throw error;
|
|
105
304
|
}
|
|
106
305
|
},
|
|
107
306
|
getSummary: (input, output) => {
|
|
307
|
+
// Blocked-install result is the failure path: surface the reason
|
|
308
|
+
// instead of pretending the install succeeded.
|
|
309
|
+
if (output && "ok" in output && output.ok === false) {
|
|
310
|
+
const blockedOutput = `Blocked: ${output.error.reason}`;
|
|
311
|
+
// Mirror the success branch: omit the `input` field on the no-args
|
|
312
|
+
// install path (runPackageManagerInstall) so the summary doesn't
|
|
313
|
+
// render `"0 packages: "` with a dangling colon.
|
|
314
|
+
if (input.packages && input.packages.length > 0) {
|
|
315
|
+
const names = input.packages.map((p) => p.name).join(", ");
|
|
316
|
+
return {
|
|
317
|
+
input: `${input.packages.length} package${input.packages.length === 1 ? "" : "s"}: ${names}`,
|
|
318
|
+
output: blockedOutput,
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
return {
|
|
322
|
+
output: blockedOutput,
|
|
323
|
+
};
|
|
324
|
+
}
|
|
108
325
|
if (input.packages && input.packages.length > 0) {
|
|
109
326
|
const names = input.packages.map((p) => p.name).join(", ");
|
|
110
327
|
const versionWarning = output.versionChanges?.length
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-install-packages.js","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools/build-install-packages.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"build-install-packages.js","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools/build-install-packages.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { NpmPackageLookup, NpmPackageLookupResult } from "../../app-interface/npm-package-lookup.js";
|
|
2
|
+
import type { Clark } from "../../state-machine/clark-fsm.js";
|
|
3
|
+
import type { ClarkStateHandlerParams } from "../../state-machine/clark-fsm.js";
|
|
4
|
+
/**
|
|
5
|
+
* The `NpmPackageLookup` instance is OWNED BY `AiService` and surfaced via
|
|
6
|
+
* `services.npmPackageLookup` — a single process-lifetime instance shared
|
|
7
|
+
* across every `buildTools()` call. An earlier revision of this file
|
|
8
|
+
* constructed `new NpmPackageLookup(...)` inside the factory body itself,
|
|
9
|
+
* which produced a fresh lookup (and a fresh `ObservableGauge` callback
|
|
10
|
+
* registration for `superblocks.npm.lookup.cache_size`) on every LLM
|
|
11
|
+
* generation turn. `ToolRegistry.clear()` does not dispose tool resources,
|
|
12
|
+
* so the OTel API's strong reference to the callback kept the old cache
|
|
13
|
+
* alive for the process lifetime and produced multiple
|
|
14
|
+
* same-instrument/same-attribute observations per collection cycle.
|
|
15
|
+
*
|
|
16
|
+
* Tests inject their own lookup via `deps.lookup` to keep the cache hermetic
|
|
17
|
+
* across cases.
|
|
18
|
+
*/
|
|
19
|
+
export interface BuildLookupNpmPackageDeps {
|
|
20
|
+
clark: Clark;
|
|
21
|
+
services: ClarkStateHandlerParams;
|
|
22
|
+
/** Test seam: inject a NpmPackageLookup with mocked fetch / clock. */
|
|
23
|
+
lookup?: NpmPackageLookup;
|
|
24
|
+
}
|
|
25
|
+
export declare const buildLookupNpmPackageToolFactory: import("../tools2/types.js").ToolFactory<BuildLookupNpmPackageDeps, import("../tools2/types.js").Tool<{
|
|
26
|
+
name: string;
|
|
27
|
+
}, NpmPackageLookupResult>>;
|
|
28
|
+
//# sourceMappingURL=build-lookup-npm-package.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-lookup-npm-package.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools/build-lookup-npm-package.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AAC9D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAGhF;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,uBAAuB,CAAC;IAClC,sEAAsE;IACtE,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B;AAgBD,eAAO,MAAM,gCAAgC;;2BAmE5C,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import z from "zod";
|
|
2
|
+
import { createToolFactory, ToolCategory } from "../tools2/types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Lightweight npm-package-name validation. The package metadata endpoint
|
|
5
|
+
* tolerates a lot of garbage on the path (most non-200s map to
|
|
6
|
+
* `not_in_registry`), and `encodePackagePath` already neutralises hostile
|
|
7
|
+
* characters in the URL, but rejecting obviously-invalid inputs at the
|
|
8
|
+
* schema boundary keeps tool summaries clean and avoids paying for a 404
|
|
9
|
+
* round trip on inputs that no npm install would ever accept.
|
|
10
|
+
*
|
|
11
|
+
* Roughly matches npm's `validate-npm-package-name` "valid for new packages"
|
|
12
|
+
* rules: optional `@scope/` prefix, each segment starts with `[a-z0-9]`,
|
|
13
|
+
* then `[a-z0-9._-]`, and the full string is ≤ 214 characters.
|
|
14
|
+
*/
|
|
15
|
+
const NPM_PACKAGE_NAME = /^(@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$/;
|
|
16
|
+
export const buildLookupNpmPackageToolFactory = createToolFactory("build_lookupNpmPackage", (deps) => {
|
|
17
|
+
const lookup = deps.lookup ?? deps.services.npmPackageLookup;
|
|
18
|
+
return {
|
|
19
|
+
category: ToolCategory.GENERAL,
|
|
20
|
+
readOnly: true,
|
|
21
|
+
description: `
|
|
22
|
+
Look up an npm package in the registry Clark's install path will hit. Use this BEFORE running 'npm install' to:
|
|
23
|
+
- verify the package exists (catches typos, hallucinated names, unpublished/deprecated packages)
|
|
24
|
+
- pick a recent version from 'recent_versions' (npm picks versions Clark might not have seen)
|
|
25
|
+
|
|
26
|
+
Always call this for any package you have not just looked up in the same session. It runs against whichever registry 'npm install' would use — including the public npm registry when no private registry is configured — so the answer matches what the install will actually do.
|
|
27
|
+
|
|
28
|
+
Inputs:
|
|
29
|
+
- name: the npm package name. Plain ('react', 'lodash') or scoped ('@types/node'). No version, no range — version selection is the agent's responsibility after reading 'recent_versions'.
|
|
30
|
+
|
|
31
|
+
Output:
|
|
32
|
+
- available: true iff the registry returned 200 for the package.
|
|
33
|
+
- mode: 'private' | 'public-npm' | 'fail-closed'. 'private' = the operator's configured per-org registry answered. 'public-npm' = npmjs.org answered (no private registry was configured, or a scoped name had no scope mapping). 'fail-closed' = the lookup was not performed because the private-registry config is in a hard-fail auth or unreachable state; treat as "do not install" and surface the configuration problem.
|
|
34
|
+
- reason: when available=false, one of 'not_in_registry' | 'registry_auth_failed' | 'registry_unreachable'. Same taxonomy as the install tool's blocked result.
|
|
35
|
+
- registry_host: the host that answered. Empty string when mode='fail-closed' (no lookup ran).
|
|
36
|
+
- latest_version: the registry's 'dist-tags.latest' when available.
|
|
37
|
+
- recent_versions: up to 30 recent published versions (newest first by publish time when available), so you can pin to a specific version without another tool call.
|
|
38
|
+
|
|
39
|
+
Reading the result:
|
|
40
|
+
- mode='public-npm' + reason='registry_unreachable' is the classic egress-blocked signal: the operator's network blocks npmjs.org and they have not configured a private registry. Tell the user; do not retry.
|
|
41
|
+
- mode='private' + reason='registry_unreachable' means the per-org private registry is down or unreachable. Tell the user; do not retry.
|
|
42
|
+
- mode='fail-closed' means we deliberately did not call out; surface a configuration / auth issue with the operator's private-registry setup.
|
|
43
|
+
- reason='not_in_registry' means the name is wrong, deprecated/unpublished, or not mirrored. Pick a different package; do not retry the same name.
|
|
44
|
+
- reason='registry_auth_failed' means a token problem against a private registry; the install will fail the same way until the operator fixes credentials.
|
|
45
|
+
|
|
46
|
+
Notes:
|
|
47
|
+
- This tool never installs anything; it only queries the registry.
|
|
48
|
+
- Successful lookups and 'not_in_registry' results are cached per-process for ~60s. Transient failures ('registry_auth_failed', 'registry_unreachable') are not cached, so a retry will hit the registry again.
|
|
49
|
+
`,
|
|
50
|
+
inputSchema: z.object({
|
|
51
|
+
name: z
|
|
52
|
+
.string()
|
|
53
|
+
.min(1, "package name is required")
|
|
54
|
+
.max(214, "package name must be 214 characters or fewer (npm spec)")
|
|
55
|
+
.regex(NPM_PACKAGE_NAME, "must be a valid npm package name (e.g. 'react' or '@scope/name', lowercase, no version specifier)")
|
|
56
|
+
.describe("Package name to look up (e.g. 'react', '@types/node')"),
|
|
57
|
+
}),
|
|
58
|
+
execute: async ({ name }) => {
|
|
59
|
+
return await lookup.lookup(name);
|
|
60
|
+
},
|
|
61
|
+
getSummary: (input, output) => {
|
|
62
|
+
if (output.available) {
|
|
63
|
+
const latest = output.latest_version
|
|
64
|
+
? ` (latest: ${output.latest_version})`
|
|
65
|
+
: "";
|
|
66
|
+
return {
|
|
67
|
+
input: input.name,
|
|
68
|
+
output: `available via ${output.mode}${latest}`,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
input: input.name,
|
|
73
|
+
output: `unavailable via ${output.mode}: ${output.reason ?? "unknown"}`,
|
|
74
|
+
};
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
});
|
|
78
|
+
//# sourceMappingURL=build-lookup-npm-package.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-lookup-npm-package.js","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools/build-lookup-npm-package.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAQpB,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAwBrE;;;;;;;;;;;GAWG;AACH,MAAM,gBAAgB,GAAG,kDAAkD,CAAC;AAE5E,MAAM,CAAC,MAAM,gCAAgC,GAAG,iBAAiB,CAC/D,wBAAwB,EACxB,CAAC,IAA+B,EAAE,EAAE;IAClC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAC7D,OAAO;QACL,QAAQ,EAAE,YAAY,CAAC,OAAO;QAC9B,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA4Bd;QACC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,EAAE,0BAA0B,CAAC;iBAClC,GAAG,CAAC,GAAG,EAAE,yDAAyD,CAAC;iBACnE,KAAK,CACJ,gBAAgB,EAChB,mGAAmG,CACpG;iBACA,QAAQ,CAAC,uDAAuD,CAAC;SACrE,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAmC,EAAE;YAC3D,OAAO,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QACD,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAC5B,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACrB,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc;oBAClC,CAAC,CAAC,aAAa,MAAM,CAAC,cAAc,GAAG;oBACvC,CAAC,CAAC,EAAE,CAAC;gBACP,OAAO;oBACL,KAAK,EAAE,KAAK,CAAC,IAAI;oBACjB,MAAM,EAAE,iBAAiB,MAAM,CAAC,IAAI,GAAG,MAAM,EAAE;iBAChD,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,MAAM,EAAE,mBAAmB,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,IAAI,SAAS,EAAE;aACxE,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC,CACF,CAAC"}
|
|
@@ -21,12 +21,12 @@ export declare const buildManageChecklistToolFactory: import("../tools2/types.js
|
|
|
21
21
|
clark: Clark;
|
|
22
22
|
services: ClarkStateHandlerParams;
|
|
23
23
|
}, import("../tools2/types.js").Tool<{
|
|
24
|
-
action: "
|
|
25
|
-
status?: "
|
|
24
|
+
action: "get" | "add" | "update" | "clear";
|
|
25
|
+
status?: "pending" | "cancelled" | "failed" | "completed" | "in_progress" | undefined;
|
|
26
26
|
content?: string | undefined;
|
|
27
|
-
itemId?: string | undefined;
|
|
28
|
-
failureReason?: string | undefined;
|
|
29
27
|
clearOnFinalize?: boolean | undefined;
|
|
28
|
+
failureReason?: string | undefined;
|
|
29
|
+
itemId?: string | undefined;
|
|
30
30
|
}, {
|
|
31
31
|
success: boolean;
|
|
32
32
|
action: string;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Clark, ClarkStateHandlerParams } from "../../state-machine/clark-fsm.js";
|
|
2
|
+
export interface NavigatePreviewToolOutput {
|
|
3
|
+
message: string;
|
|
4
|
+
path: string;
|
|
5
|
+
success: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare const buildNavigatePreviewToolFactory: import("../tools2/types.js").ToolFactory<{
|
|
8
|
+
clark: Clark;
|
|
9
|
+
services: ClarkStateHandlerParams;
|
|
10
|
+
}, import("../tools2/types.js").Tool<{
|
|
11
|
+
path: string;
|
|
12
|
+
hash?: string | undefined;
|
|
13
|
+
queryParams?: Record<string, string> | undefined;
|
|
14
|
+
routeParams?: Record<string, string> | undefined;
|
|
15
|
+
}, NavigatePreviewToolOutput>>;
|
|
16
|
+
//# sourceMappingURL=build-navigate-preview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-navigate-preview.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools/build-navigate-preview.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,KAAK,EACL,uBAAuB,EACxB,MAAM,kCAAkC,CAAC;AAO1C,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,+BAA+B;WAErB,KAAK;cAAY,uBAAuB;;;;;;8BAiF9D,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import z from "zod";
|
|
2
|
+
import { createToolFactory, PermissionLevel, ToolCategory, } from "../tools2/types.js";
|
|
3
|
+
export const buildNavigatePreviewToolFactory = createToolFactory("build_navigatePreview", ({ clark }) => {
|
|
4
|
+
return {
|
|
5
|
+
category: ToolCategory.DEBUG,
|
|
6
|
+
defaultPermission: PermissionLevel.ALLOW,
|
|
7
|
+
description: `
|
|
8
|
+
Navigate the app preview to a route path. Does not capture a screenshot.
|
|
9
|
+
|
|
10
|
+
Use before \`build_captureScreenshot\` when you need visual verification on a route other than the one currently displayed.
|
|
11
|
+
|
|
12
|
+
For dynamic routes (e.g. \`/users/:userId\`), pass \`routeParams\` when known; missing params default to \`TEST_VALUE_1\`, \`TEST_VALUE_2\`, etc.
|
|
13
|
+
`,
|
|
14
|
+
execute: async ({ hash, path, queryParams, routeParams, }) => {
|
|
15
|
+
const logger = clark.logger;
|
|
16
|
+
logger.info(`[build_navigatePreview] Navigating preview to ${path}`);
|
|
17
|
+
if (!clark.context.peer) {
|
|
18
|
+
const error = "Editor client not available - cannot navigate preview";
|
|
19
|
+
logger.error(`[build_navigatePreview] ${error}`);
|
|
20
|
+
throw new Error(error);
|
|
21
|
+
}
|
|
22
|
+
const response = await clark.context.peer.call.aiNavigatePreviewRoute({
|
|
23
|
+
hash,
|
|
24
|
+
path,
|
|
25
|
+
queryParams,
|
|
26
|
+
routeParams,
|
|
27
|
+
});
|
|
28
|
+
if (!response?.success) {
|
|
29
|
+
const error = response?.error ?? `Failed to navigate preview to ${path}`;
|
|
30
|
+
logger.error(`[build_navigatePreview] ${error}`);
|
|
31
|
+
throw new Error(error);
|
|
32
|
+
}
|
|
33
|
+
const resolvedPath = response.path ?? path;
|
|
34
|
+
return {
|
|
35
|
+
message: `Successfully navigated preview to ${resolvedPath}`,
|
|
36
|
+
path: resolvedPath,
|
|
37
|
+
success: true,
|
|
38
|
+
};
|
|
39
|
+
},
|
|
40
|
+
getActionName: () => ({
|
|
41
|
+
future: "navigate the app preview to a route",
|
|
42
|
+
past: "navigated the app preview to a route",
|
|
43
|
+
present: "navigating the app preview to a route",
|
|
44
|
+
}),
|
|
45
|
+
getSummary: ({ path }) => ({
|
|
46
|
+
output: `Navigated preview to ${path}`,
|
|
47
|
+
}),
|
|
48
|
+
inputSchema: z.object({
|
|
49
|
+
hash: z
|
|
50
|
+
.string()
|
|
51
|
+
.optional()
|
|
52
|
+
.describe("Optional URL hash to append after navigation."),
|
|
53
|
+
path: z
|
|
54
|
+
.string()
|
|
55
|
+
.describe("Route path to navigate to (for example, '/feedback' or '/users/:userId')."),
|
|
56
|
+
queryParams: z
|
|
57
|
+
.record(z.string())
|
|
58
|
+
.optional()
|
|
59
|
+
.describe("Optional query string parameters for the route."),
|
|
60
|
+
routeParams: z
|
|
61
|
+
.record(z.string())
|
|
62
|
+
.optional()
|
|
63
|
+
.describe("Optional route params for dynamic segments (for example, { userId: '123' })."),
|
|
64
|
+
}),
|
|
65
|
+
readOnly: true,
|
|
66
|
+
};
|
|
67
|
+
});
|
|
68
|
+
//# sourceMappingURL=build-navigate-preview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-navigate-preview.js","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools/build-navigate-preview.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,KAAK,CAAC;AAMpB,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,YAAY,GACb,MAAM,oBAAoB,CAAC;AAQ5B,MAAM,CAAC,MAAM,+BAA+B,GAAG,iBAAiB,CAC9D,uBAAuB,EACvB,CAAC,EAAE,KAAK,EAAuD,EAAE,EAAE;IACjE,OAAO;QACL,QAAQ,EAAE,YAAY,CAAC,KAAK;QAC5B,iBAAiB,EAAE,eAAe,CAAC,KAAK;QACxC,WAAW,EAAE;;;;;;CAMlB;QACK,OAAO,EAAE,KAAK,EAAE,EACd,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,WAAW,GACZ,EAAsC,EAAE;YACvC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAE5B,MAAM,CAAC,IAAI,CAAC,iDAAiD,IAAI,EAAE,CAAC,CAAC;YAErE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG,uDAAuD,CAAC;gBACtE,MAAM,CAAC,KAAK,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAC;gBACjD,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC;gBACpE,IAAI;gBACJ,IAAI;gBACJ,WAAW;gBACX,WAAW;aACZ,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;gBACvB,MAAM,KAAK,GACT,QAAQ,EAAE,KAAK,IAAI,iCAAiC,IAAI,EAAE,CAAC;gBAC7D,MAAM,CAAC,KAAK,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAC;gBACjD,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;YAED,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC;YAE3C,OAAO;gBACL,OAAO,EAAE,qCAAqC,YAAY,EAAE;gBAC5D,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QACD,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC;YACpB,MAAM,EAAE,qCAAqC;YAC7C,IAAI,EAAE,sCAAsC;YAC5C,OAAO,EAAE,uCAAuC;SACjD,CAAC;QACF,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACzB,MAAM,EAAE,wBAAwB,IAAI,EAAE;SACvC,CAAC;QACF,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,+CAA+C,CAAC;YAC5D,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,CACP,2EAA2E,CAC5E;YACH,WAAW,EAAE,CAAC;iBACX,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBAClB,QAAQ,EAAE;iBACV,QAAQ,CAAC,iDAAiD,CAAC;YAC9D,WAAW,EAAE,CAAC;iBACX,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBAClB,QAAQ,EAAE;iBACV,QAAQ,CACP,8EAA8E,CAC/E;SACJ,CAAC;QACF,QAAQ,EAAE,IAAI;KACf,CAAC;AACJ,CAAC,CACF,CAAC"}
|
|
@@ -4,8 +4,8 @@ export declare const buildWriteFileToolFactory: import("../tools2/types.js").Too
|
|
|
4
4
|
clark: Clark;
|
|
5
5
|
services: Pick<ClarkStateHandlerParams, "appShell" | "features">;
|
|
6
6
|
}, import("../tools2/types.js").Tool<{
|
|
7
|
-
filePath: string;
|
|
8
7
|
content: string;
|
|
8
|
+
filePath: string;
|
|
9
9
|
}, {
|
|
10
10
|
filePath: string;
|
|
11
11
|
contentLength: number;
|
|
@@ -30,7 +30,7 @@ declare const createDevDatabaseInputSchema: z.ZodObject<{
|
|
|
30
30
|
migrationDirectory: z.ZodOptional<z.ZodString>;
|
|
31
31
|
}, "strip", z.ZodTypeAny, {
|
|
32
32
|
logicalName: string;
|
|
33
|
-
engine: "snowflake" | "
|
|
33
|
+
engine: "snowflake" | "postgres" | "lakebase" | "snowflake_postgres";
|
|
34
34
|
version?: string | undefined;
|
|
35
35
|
sizing?: Record<string, unknown> | undefined;
|
|
36
36
|
extensions?: string[] | undefined;
|
|
@@ -38,7 +38,7 @@ declare const createDevDatabaseInputSchema: z.ZodObject<{
|
|
|
38
38
|
migrationDirectory?: string | undefined;
|
|
39
39
|
}, {
|
|
40
40
|
logicalName: string;
|
|
41
|
-
engine: "snowflake" | "
|
|
41
|
+
engine: "snowflake" | "postgres" | "lakebase" | "snowflake_postgres";
|
|
42
42
|
version?: string | undefined;
|
|
43
43
|
sizing?: Record<string, unknown> | undefined;
|
|
44
44
|
extensions?: string[] | undefined;
|
|
@@ -49,7 +49,7 @@ declare const createDevDatabaseInputSchema: z.ZodObject<{
|
|
|
49
49
|
environmentName: string;
|
|
50
50
|
requirement: {
|
|
51
51
|
logicalName: string;
|
|
52
|
-
engine: "snowflake" | "
|
|
52
|
+
engine: "snowflake" | "postgres" | "lakebase" | "snowflake_postgres";
|
|
53
53
|
version?: string | undefined;
|
|
54
54
|
sizing?: Record<string, unknown> | undefined;
|
|
55
55
|
extensions?: string[] | undefined;
|
|
@@ -60,7 +60,7 @@ declare const createDevDatabaseInputSchema: z.ZodObject<{
|
|
|
60
60
|
environmentName: string;
|
|
61
61
|
requirement: {
|
|
62
62
|
logicalName: string;
|
|
63
|
-
engine: "snowflake" | "
|
|
63
|
+
engine: "snowflake" | "postgres" | "lakebase" | "snowflake_postgres";
|
|
64
64
|
version?: string | undefined;
|
|
65
65
|
sizing?: Record<string, unknown> | undefined;
|
|
66
66
|
extensions?: string[] | undefined;
|
|
@@ -73,7 +73,7 @@ export declare const createDevDbToolFactory: import("../../tools2/types.js").Too
|
|
|
73
73
|
environmentName: string;
|
|
74
74
|
requirement: {
|
|
75
75
|
logicalName: string;
|
|
76
|
-
engine: "snowflake" | "
|
|
76
|
+
engine: "snowflake" | "postgres" | "lakebase" | "snowflake_postgres";
|
|
77
77
|
version?: string | undefined;
|
|
78
78
|
sizing?: Record<string, unknown> | undefined;
|
|
79
79
|
extensions?: string[] | undefined;
|
|
@@ -84,8 +84,8 @@ export declare const createDevDbToolFactory: import("../../tools2/types.js").Too
|
|
|
84
84
|
bindingKey: string;
|
|
85
85
|
connectionMetadata: Record<string, string | number | boolean> | undefined;
|
|
86
86
|
integrationId: string | undefined;
|
|
87
|
-
lifecycleState: "ready" | "
|
|
88
|
-
migrationState: "
|
|
87
|
+
lifecycleState: "ready" | "pending" | "cancelled" | "failed" | "provisioning" | "migrating" | "retiring";
|
|
88
|
+
migrationState: "pending" | "failed" | "migrated";
|
|
89
89
|
requestId: string;
|
|
90
90
|
}>>;
|
|
91
91
|
export declare const getDevDbProgressToolFactory: import("../../tools2/types.js").ToolFactory<DevDatabaseToolDeps, import("../../tools2/types.js").Tool<{
|
|
@@ -95,8 +95,8 @@ export declare const getDevDbProgressToolFactory: import("../../tools2/types.js"
|
|
|
95
95
|
bindingKey: string;
|
|
96
96
|
connectionMetadata: Record<string, string | number | boolean> | undefined;
|
|
97
97
|
integrationId: string | undefined;
|
|
98
|
-
lifecycleState: "ready" | "
|
|
99
|
-
migrationState: "
|
|
98
|
+
lifecycleState: "ready" | "pending" | "cancelled" | "failed" | "provisioning" | "migrating" | "retiring";
|
|
99
|
+
migrationState: "pending" | "failed" | "migrated";
|
|
100
100
|
requestId: string;
|
|
101
101
|
}>>;
|
|
102
102
|
export type { DevDatabaseTransportRequest };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { buildInstallPackagesToolFactory } from "./build-install-packages.js";
|
|
2
|
+
export { buildLookupNpmPackageToolFactory } from "./build-lookup-npm-package.js";
|
|
2
3
|
export { buildCopyDirectoryToolFactory } from "./build-copy-directory.js";
|
|
3
4
|
export { buildCopyFileToolFactory } from "./build-copy-file.js";
|
|
4
5
|
export { buildWriteFileToolFactory } from "./build-write-file.js";
|
|
@@ -9,6 +10,7 @@ export { buildListFilesToolFactory } from "./build-list-files.js";
|
|
|
9
10
|
export { buildDebugToolFactory } from "./build-debug.js";
|
|
10
11
|
export { clearErrorCacheToolFactory } from "./clear-error-cache.js";
|
|
11
12
|
export { buildCaptureScreenshotToolFactory } from "./build-capture-screenshot.js";
|
|
13
|
+
export { buildNavigatePreviewToolFactory } from "./build-navigate-preview.js";
|
|
12
14
|
export { buildFinalizeToolFactory } from "./build-finalize.js";
|
|
13
15
|
export { buildManageChecklistToolFactory } from "./build-manage-checklist.js";
|
|
14
16
|
export { buildDeleteFileToolFactory, checkDeleteFilePermissions, } from "./build-delete-file.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,iCAAiC,EAAE,MAAM,+BAA+B,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EACL,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,gCAAgC,EAAE,MAAM,4CAA4C,CAAC;AAC9F,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AACzF,OAAO,EAAE,gCAAgC,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,+BAA+B,EAAE,MAAM,2CAA2C,CAAC;AAC5F,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,+BAA+B,EAAE,MAAM,4CAA4C,CAAC;AAC7F,OAAO,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,+BAA+B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/agent/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,gCAAgC,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,6BAA6B,EAAE,MAAM,4BAA4B,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,iCAAiC,EAAE,MAAM,+BAA+B,CAAC;AAClF,OAAO,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EACL,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,gCAAgC,EAAE,MAAM,4CAA4C,CAAC;AAC9F,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AACzF,OAAO,EAAE,gCAAgC,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,+BAA+B,EAAE,MAAM,2CAA2C,CAAC;AAC5F,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,+BAA+B,EAAE,MAAM,4CAA4C,CAAC;AAC7F,OAAO,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,+BAA+B,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { buildInstallPackagesToolFactory } from "./build-install-packages.js";
|
|
2
|
+
export { buildLookupNpmPackageToolFactory } from "./build-lookup-npm-package.js";
|
|
2
3
|
export { buildCopyDirectoryToolFactory } from "./build-copy-directory.js";
|
|
3
4
|
export { buildCopyFileToolFactory } from "./build-copy-file.js";
|
|
4
5
|
export { buildWriteFileToolFactory } from "./build-write-file.js";
|
|
@@ -9,6 +10,7 @@ export { buildListFilesToolFactory } from "./build-list-files.js";
|
|
|
9
10
|
export { buildDebugToolFactory } from "./build-debug.js";
|
|
10
11
|
export { clearErrorCacheToolFactory } from "./clear-error-cache.js";
|
|
11
12
|
export { buildCaptureScreenshotToolFactory } from "./build-capture-screenshot.js";
|
|
13
|
+
export { buildNavigatePreviewToolFactory } from "./build-navigate-preview.js";
|
|
12
14
|
export { buildFinalizeToolFactory } from "./build-finalize.js";
|
|
13
15
|
export { buildManageChecklistToolFactory } from "./build-manage-checklist.js";
|
|
14
16
|
export { buildDeleteFileToolFactory, checkDeleteFilePermissions, } from "./build-delete-file.js";
|