@a1st/aix-core 0.0.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/backup.d.ts +12 -0
- package/dist/backup.d.ts.map +1 -0
- package/dist/backup.js +70 -0
- package/dist/backup.js.map +1 -0
- package/dist/cache/cleanup.d.ts +14 -0
- package/dist/cache/cleanup.d.ts.map +1 -0
- package/dist/cache/cleanup.js +61 -0
- package/dist/cache/cleanup.js.map +1 -0
- package/dist/cache/clear.d.ts +10 -0
- package/dist/cache/clear.d.ts.map +1 -0
- package/dist/cache/clear.js +30 -0
- package/dist/cache/clear.js.map +1 -0
- package/dist/cache/index.d.ts +5 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +5 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/paths.d.ts +57 -0
- package/dist/cache/paths.d.ts.map +1 -0
- package/dist/cache/paths.js +86 -0
- package/dist/cache/paths.js.map +1 -0
- package/dist/cache/status.d.ts +21 -0
- package/dist/cache/status.d.ts.map +1 -0
- package/dist/cache/status.js +67 -0
- package/dist/cache/status.js.map +1 -0
- package/dist/discovery.d.ts +14 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +96 -0
- package/dist/discovery.js.map +1 -0
- package/dist/editors/adapters/base.d.ts +101 -0
- package/dist/editors/adapters/base.d.ts.map +1 -0
- package/dist/editors/adapters/base.js +399 -0
- package/dist/editors/adapters/base.js.map +1 -0
- package/dist/editors/adapters/claude-code.d.ts +27 -0
- package/dist/editors/adapters/claude-code.d.ts.map +1 -0
- package/dist/editors/adapters/claude-code.js +46 -0
- package/dist/editors/adapters/claude-code.js.map +1 -0
- package/dist/editors/adapters/codex.d.ts +30 -0
- package/dist/editors/adapters/codex.d.ts.map +1 -0
- package/dist/editors/adapters/codex.js +56 -0
- package/dist/editors/adapters/codex.js.map +1 -0
- package/dist/editors/adapters/cursor.d.ts +23 -0
- package/dist/editors/adapters/cursor.d.ts.map +1 -0
- package/dist/editors/adapters/cursor.js +39 -0
- package/dist/editors/adapters/cursor.js.map +1 -0
- package/dist/editors/adapters/index.d.ts +8 -0
- package/dist/editors/adapters/index.d.ts.map +1 -0
- package/dist/editors/adapters/index.js +8 -0
- package/dist/editors/adapters/index.js.map +1 -0
- package/dist/editors/adapters/vscode.d.ts +23 -0
- package/dist/editors/adapters/vscode.d.ts.map +1 -0
- package/dist/editors/adapters/vscode.js +36 -0
- package/dist/editors/adapters/vscode.js.map +1 -0
- package/dist/editors/adapters/windsurf.d.ts +23 -0
- package/dist/editors/adapters/windsurf.d.ts.map +1 -0
- package/dist/editors/adapters/windsurf.js +38 -0
- package/dist/editors/adapters/windsurf.js.map +1 -0
- package/dist/editors/adapters/zed.d.ts +29 -0
- package/dist/editors/adapters/zed.d.ts.map +1 -0
- package/dist/editors/adapters/zed.js +61 -0
- package/dist/editors/adapters/zed.js.map +1 -0
- package/dist/editors/import.d.ts +31 -0
- package/dist/editors/import.d.ts.map +1 -0
- package/dist/editors/import.js +271 -0
- package/dist/editors/import.js.map +1 -0
- package/dist/editors/index.d.ts +6 -0
- package/dist/editors/index.d.ts.map +1 -0
- package/dist/editors/index.js +4 -0
- package/dist/editors/index.js.map +1 -0
- package/dist/editors/install.d.ts +33 -0
- package/dist/editors/install.d.ts.map +1 -0
- package/dist/editors/install.js +186 -0
- package/dist/editors/install.js.map +1 -0
- package/dist/editors/strategies/claude-code/hooks.d.ts +13 -0
- package/dist/editors/strategies/claude-code/hooks.d.ts.map +1 -0
- package/dist/editors/strategies/claude-code/hooks.js +61 -0
- package/dist/editors/strategies/claude-code/hooks.js.map +1 -0
- package/dist/editors/strategies/claude-code/index.d.ts +5 -0
- package/dist/editors/strategies/claude-code/index.d.ts.map +1 -0
- package/dist/editors/strategies/claude-code/index.js +5 -0
- package/dist/editors/strategies/claude-code/index.js.map +1 -0
- package/dist/editors/strategies/claude-code/mcp.d.ts +10 -0
- package/dist/editors/strategies/claude-code/mcp.d.ts.map +1 -0
- package/dist/editors/strategies/claude-code/mcp.js +17 -0
- package/dist/editors/strategies/claude-code/mcp.js.map +1 -0
- package/dist/editors/strategies/claude-code/prompts.d.ts +18 -0
- package/dist/editors/strategies/claude-code/prompts.d.ts.map +1 -0
- package/dist/editors/strategies/claude-code/prompts.js +42 -0
- package/dist/editors/strategies/claude-code/prompts.js.map +1 -0
- package/dist/editors/strategies/claude-code/rules.d.ts +17 -0
- package/dist/editors/strategies/claude-code/rules.d.ts.map +1 -0
- package/dist/editors/strategies/claude-code/rules.js +61 -0
- package/dist/editors/strategies/claude-code/rules.js.map +1 -0
- package/dist/editors/strategies/codex/index.d.ts +4 -0
- package/dist/editors/strategies/codex/index.d.ts.map +1 -0
- package/dist/editors/strategies/codex/index.js +4 -0
- package/dist/editors/strategies/codex/index.js.map +1 -0
- package/dist/editors/strategies/codex/mcp.d.ts +18 -0
- package/dist/editors/strategies/codex/mcp.d.ts.map +1 -0
- package/dist/editors/strategies/codex/mcp.js +93 -0
- package/dist/editors/strategies/codex/mcp.js.map +1 -0
- package/dist/editors/strategies/codex/prompts.d.ts +37 -0
- package/dist/editors/strategies/codex/prompts.d.ts.map +1 -0
- package/dist/editors/strategies/codex/prompts.js +82 -0
- package/dist/editors/strategies/codex/prompts.js.map +1 -0
- package/dist/editors/strategies/codex/rules.d.ts +17 -0
- package/dist/editors/strategies/codex/rules.d.ts.map +1 -0
- package/dist/editors/strategies/codex/rules.js +35 -0
- package/dist/editors/strategies/codex/rules.js.map +1 -0
- package/dist/editors/strategies/cursor/hooks.d.ts +13 -0
- package/dist/editors/strategies/cursor/hooks.d.ts.map +1 -0
- package/dist/editors/strategies/cursor/hooks.js +54 -0
- package/dist/editors/strategies/cursor/hooks.js.map +1 -0
- package/dist/editors/strategies/cursor/index.d.ts +4 -0
- package/dist/editors/strategies/cursor/index.d.ts.map +1 -0
- package/dist/editors/strategies/cursor/index.js +4 -0
- package/dist/editors/strategies/cursor/index.js.map +1 -0
- package/dist/editors/strategies/cursor/prompts.d.ts +18 -0
- package/dist/editors/strategies/cursor/prompts.d.ts.map +1 -0
- package/dist/editors/strategies/cursor/prompts.js +67 -0
- package/dist/editors/strategies/cursor/prompts.js.map +1 -0
- package/dist/editors/strategies/cursor/rules.d.ts +17 -0
- package/dist/editors/strategies/cursor/rules.d.ts.map +1 -0
- package/dist/editors/strategies/cursor/rules.js +41 -0
- package/dist/editors/strategies/cursor/rules.js.map +1 -0
- package/dist/editors/strategies/index.d.ts +9 -0
- package/dist/editors/strategies/index.d.ts.map +1 -0
- package/dist/editors/strategies/index.js +10 -0
- package/dist/editors/strategies/index.js.map +1 -0
- package/dist/editors/strategies/shared/global-mcp.d.ts +74 -0
- package/dist/editors/strategies/shared/global-mcp.d.ts.map +1 -0
- package/dist/editors/strategies/shared/global-mcp.js +85 -0
- package/dist/editors/strategies/shared/global-mcp.js.map +1 -0
- package/dist/editors/strategies/shared/index.d.ts +8 -0
- package/dist/editors/strategies/shared/index.d.ts.map +1 -0
- package/dist/editors/strategies/shared/index.js +8 -0
- package/dist/editors/strategies/shared/index.js.map +1 -0
- package/dist/editors/strategies/shared/native-skills.d.ts +19 -0
- package/dist/editors/strategies/shared/native-skills.d.ts.map +1 -0
- package/dist/editors/strategies/shared/native-skills.js +72 -0
- package/dist/editors/strategies/shared/native-skills.js.map +1 -0
- package/dist/editors/strategies/shared/no-hooks.d.ts +13 -0
- package/dist/editors/strategies/shared/no-hooks.d.ts.map +1 -0
- package/dist/editors/strategies/shared/no-hooks.js +19 -0
- package/dist/editors/strategies/shared/no-hooks.js.map +1 -0
- package/dist/editors/strategies/shared/no-mcp.d.ts +16 -0
- package/dist/editors/strategies/shared/no-mcp.d.ts.map +1 -0
- package/dist/editors/strategies/shared/no-mcp.js +21 -0
- package/dist/editors/strategies/shared/no-mcp.js.map +1 -0
- package/dist/editors/strategies/shared/no-prompts.d.ts +17 -0
- package/dist/editors/strategies/shared/no-prompts.d.ts.map +1 -0
- package/dist/editors/strategies/shared/no-prompts.js +24 -0
- package/dist/editors/strategies/shared/no-prompts.js.map +1 -0
- package/dist/editors/strategies/shared/pointer-skills.d.ts +17 -0
- package/dist/editors/strategies/shared/pointer-skills.d.ts.map +1 -0
- package/dist/editors/strategies/shared/pointer-skills.js +72 -0
- package/dist/editors/strategies/shared/pointer-skills.js.map +1 -0
- package/dist/editors/strategies/shared/standard-mcp.d.ts +16 -0
- package/dist/editors/strategies/shared/standard-mcp.d.ts.map +1 -0
- package/dist/editors/strategies/shared/standard-mcp.js +68 -0
- package/dist/editors/strategies/shared/standard-mcp.js.map +1 -0
- package/dist/editors/strategies/types.d.ts +126 -0
- package/dist/editors/strategies/types.d.ts.map +1 -0
- package/dist/editors/strategies/types.js +2 -0
- package/dist/editors/strategies/types.js.map +1 -0
- package/dist/editors/strategies/vscode/index.d.ts +4 -0
- package/dist/editors/strategies/vscode/index.d.ts.map +1 -0
- package/dist/editors/strategies/vscode/index.js +4 -0
- package/dist/editors/strategies/vscode/index.js.map +1 -0
- package/dist/editors/strategies/vscode/mcp.d.ts +17 -0
- package/dist/editors/strategies/vscode/mcp.d.ts.map +1 -0
- package/dist/editors/strategies/vscode/mcp.js +85 -0
- package/dist/editors/strategies/vscode/mcp.js.map +1 -0
- package/dist/editors/strategies/vscode/prompts.d.ts +18 -0
- package/dist/editors/strategies/vscode/prompts.d.ts.map +1 -0
- package/dist/editors/strategies/vscode/prompts.js +81 -0
- package/dist/editors/strategies/vscode/prompts.js.map +1 -0
- package/dist/editors/strategies/vscode/rules.d.ts +17 -0
- package/dist/editors/strategies/vscode/rules.d.ts.map +1 -0
- package/dist/editors/strategies/vscode/rules.js +38 -0
- package/dist/editors/strategies/vscode/rules.js.map +1 -0
- package/dist/editors/strategies/windsurf/hooks.d.ts +13 -0
- package/dist/editors/strategies/windsurf/hooks.d.ts.map +1 -0
- package/dist/editors/strategies/windsurf/hooks.js +61 -0
- package/dist/editors/strategies/windsurf/hooks.js.map +1 -0
- package/dist/editors/strategies/windsurf/index.d.ts +6 -0
- package/dist/editors/strategies/windsurf/index.d.ts.map +1 -0
- package/dist/editors/strategies/windsurf/index.js +6 -0
- package/dist/editors/strategies/windsurf/index.js.map +1 -0
- package/dist/editors/strategies/windsurf/mcp.d.ts +8 -0
- package/dist/editors/strategies/windsurf/mcp.d.ts.map +1 -0
- package/dist/editors/strategies/windsurf/mcp.js +99 -0
- package/dist/editors/strategies/windsurf/mcp.js.map +1 -0
- package/dist/editors/strategies/windsurf/prompts.d.ts +18 -0
- package/dist/editors/strategies/windsurf/prompts.d.ts.map +1 -0
- package/dist/editors/strategies/windsurf/prompts.js +68 -0
- package/dist/editors/strategies/windsurf/prompts.js.map +1 -0
- package/dist/editors/strategies/windsurf/rules.d.ts +17 -0
- package/dist/editors/strategies/windsurf/rules.d.ts.map +1 -0
- package/dist/editors/strategies/windsurf/rules.js +55 -0
- package/dist/editors/strategies/windsurf/rules.js.map +1 -0
- package/dist/editors/strategies/windsurf/skills.d.ts +9 -0
- package/dist/editors/strategies/windsurf/skills.d.ts.map +1 -0
- package/dist/editors/strategies/windsurf/skills.js +11 -0
- package/dist/editors/strategies/windsurf/skills.js.map +1 -0
- package/dist/editors/strategies/zed/index.d.ts +4 -0
- package/dist/editors/strategies/zed/index.d.ts.map +1 -0
- package/dist/editors/strategies/zed/index.js +4 -0
- package/dist/editors/strategies/zed/index.js.map +1 -0
- package/dist/editors/strategies/zed/mcp.d.ts +17 -0
- package/dist/editors/strategies/zed/mcp.d.ts.map +1 -0
- package/dist/editors/strategies/zed/mcp.js +68 -0
- package/dist/editors/strategies/zed/mcp.js.map +1 -0
- package/dist/editors/strategies/zed/prompts.d.ts +18 -0
- package/dist/editors/strategies/zed/prompts.d.ts.map +1 -0
- package/dist/editors/strategies/zed/prompts.js +25 -0
- package/dist/editors/strategies/zed/prompts.js.map +1 -0
- package/dist/editors/strategies/zed/rules.d.ts +17 -0
- package/dist/editors/strategies/zed/rules.d.ts.map +1 -0
- package/dist/editors/strategies/zed/rules.js +33 -0
- package/dist/editors/strategies/zed/rules.js.map +1 -0
- package/dist/editors/types.d.ts +164 -0
- package/dist/editors/types.d.ts.map +1 -0
- package/dist/editors/types.js +2 -0
- package/dist/editors/types.js.map +1 -0
- package/dist/env/ci.d.ts +6 -0
- package/dist/env/ci.d.ts.map +1 -0
- package/dist/env/ci.js +22 -0
- package/dist/env/ci.js.map +1 -0
- package/dist/env/index.d.ts +2 -0
- package/dist/env/index.d.ts.map +1 -0
- package/dist/env/index.js +2 -0
- package/dist/env/index.js.map +1 -0
- package/dist/errors.d.ts +44 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +68 -0
- package/dist/errors.js.map +1 -0
- package/dist/format-error.d.ts +18 -0
- package/dist/format-error.d.ts.map +1 -0
- package/dist/format-error.js +113 -0
- package/dist/format-error.js.map +1 -0
- package/dist/fs/safe-rm.d.ts +20 -0
- package/dist/fs/safe-rm.d.ts.map +1 -0
- package/dist/fs/safe-rm.js +129 -0
- package/dist/fs/safe-rm.js.map +1 -0
- package/dist/git-loader.d.ts +21 -0
- package/dist/git-loader.d.ts.map +1 -0
- package/dist/git-loader.js +61 -0
- package/dist/git-loader.js.map +1 -0
- package/dist/global/comparison.d.ts +16 -0
- package/dist/global/comparison.d.ts.map +1 -0
- package/dist/global/comparison.js +52 -0
- package/dist/global/comparison.js.map +1 -0
- package/dist/global/index.d.ts +5 -0
- package/dist/global/index.d.ts.map +1 -0
- package/dist/global/index.js +4 -0
- package/dist/global/index.js.map +1 -0
- package/dist/global/processor.d.ts +26 -0
- package/dist/global/processor.d.ts.map +1 -0
- package/dist/global/processor.js +318 -0
- package/dist/global/processor.js.map +1 -0
- package/dist/global/tracking.d.ts +109 -0
- package/dist/global/tracking.d.ts.map +1 -0
- package/dist/global/tracking.js +193 -0
- package/dist/global/tracking.js.map +1 -0
- package/dist/global/types.d.ts +54 -0
- package/dist/global/types.d.ts.map +1 -0
- package/dist/global/types.js +2 -0
- package/dist/global/types.js.map +1 -0
- package/dist/import-writer.d.ts +37 -0
- package/dist/import-writer.d.ts.map +1 -0
- package/dist/import-writer.js +129 -0
- package/dist/import-writer.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/inheritance.d.ts +9 -0
- package/dist/inheritance.d.ts.map +1 -0
- package/dist/inheritance.js +133 -0
- package/dist/inheritance.js.map +1 -0
- package/dist/json.d.ts +75 -0
- package/dist/json.d.ts.map +1 -0
- package/dist/json.js +123 -0
- package/dist/json.js.map +1 -0
- package/dist/loader.d.ts +35 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +147 -0
- package/dist/loader.js.map +1 -0
- package/dist/mcp/env.d.ts +28 -0
- package/dist/mcp/env.d.ts.map +1 -0
- package/dist/mcp/env.js +47 -0
- package/dist/mcp/env.js.map +1 -0
- package/dist/mcp/index.d.ts +4 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +4 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/normalize.d.ts +33 -0
- package/dist/mcp/normalize.d.ts.map +1 -0
- package/dist/mcp/normalize.js +29 -0
- package/dist/mcp/normalize.js.map +1 -0
- package/dist/mcp/templates.d.ts +18 -0
- package/dist/mcp/templates.d.ts.map +1 -0
- package/dist/mcp/templates.js +66 -0
- package/dist/mcp/templates.js.map +1 -0
- package/dist/merge.d.ts +29 -0
- package/dist/merge.d.ts.map +1 -0
- package/dist/merge.js +154 -0
- package/dist/merge.js.map +1 -0
- package/dist/npm/index.d.ts +2 -0
- package/dist/npm/index.d.ts.map +1 -0
- package/dist/npm/index.js +2 -0
- package/dist/npm/index.js.map +1 -0
- package/dist/npm/resolve.d.ts +16 -0
- package/dist/npm/resolve.d.ts.map +1 -0
- package/dist/npm/resolve.js +42 -0
- package/dist/npm/resolve.js.map +1 -0
- package/dist/prompts/index.d.ts +2 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +2 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/loader.d.ts +23 -0
- package/dist/prompts/loader.d.ts.map +1 -0
- package/dist/prompts/loader.js +115 -0
- package/dist/prompts/loader.js.map +1 -0
- package/dist/remote-loader.d.ts +29 -0
- package/dist/remote-loader.d.ts.map +1 -0
- package/dist/remote-loader.js +208 -0
- package/dist/remote-loader.js.map +1 -0
- package/dist/rules/index.d.ts +6 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/rules/index.js +6 -0
- package/dist/rules/index.js.map +1 -0
- package/dist/rules/interpolate.d.ts +27 -0
- package/dist/rules/interpolate.d.ts.map +1 -0
- package/dist/rules/interpolate.js +48 -0
- package/dist/rules/interpolate.js.map +1 -0
- package/dist/rules/loader.d.ts +27 -0
- package/dist/rules/loader.d.ts.map +1 -0
- package/dist/rules/loader.js +94 -0
- package/dist/rules/loader.js.map +1 -0
- package/dist/rules/merger.d.ts +37 -0
- package/dist/rules/merger.d.ts.map +1 -0
- package/dist/rules/merger.js +93 -0
- package/dist/rules/merger.js.map +1 -0
- package/dist/rules/skill-rules.d.ts +13 -0
- package/dist/rules/skill-rules.d.ts.map +1 -0
- package/dist/rules/skill-rules.js +70 -0
- package/dist/rules/skill-rules.js.map +1 -0
- package/dist/rules/utils.d.ts +36 -0
- package/dist/rules/utils.d.ts.map +1 -0
- package/dist/rules/utils.js +82 -0
- package/dist/rules/utils.js.map +1 -0
- package/dist/skills/cache.d.ts +10 -0
- package/dist/skills/cache.d.ts.map +1 -0
- package/dist/skills/cache.js +20 -0
- package/dist/skills/cache.js.map +1 -0
- package/dist/skills/index.d.ts +9 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +9 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/parser.d.ts +6 -0
- package/dist/skills/parser.d.ts.map +1 -0
- package/dist/skills/parser.js +28 -0
- package/dist/skills/parser.js.map +1 -0
- package/dist/skills/reference-parser.d.ts +23 -0
- package/dist/skills/reference-parser.d.ts.map +1 -0
- package/dist/skills/reference-parser.js +162 -0
- package/dist/skills/reference-parser.js.map +1 -0
- package/dist/skills/resolve.d.ts +21 -0
- package/dist/skills/resolve.d.ts.map +1 -0
- package/dist/skills/resolve.js +43 -0
- package/dist/skills/resolve.js.map +1 -0
- package/dist/skills/resolvers/git.d.ts +8 -0
- package/dist/skills/resolvers/git.d.ts.map +1 -0
- package/dist/skills/resolvers/git.js +43 -0
- package/dist/skills/resolvers/git.js.map +1 -0
- package/dist/skills/resolvers/local.d.ts +7 -0
- package/dist/skills/resolvers/local.d.ts.map +1 -0
- package/dist/skills/resolvers/local.js +16 -0
- package/dist/skills/resolvers/local.js.map +1 -0
- package/dist/skills/resolvers/npm.d.ts +12 -0
- package/dist/skills/resolvers/npm.d.ts.map +1 -0
- package/dist/skills/resolvers/npm.js +28 -0
- package/dist/skills/resolvers/npm.js.map +1 -0
- package/dist/skills/validate.d.ts +11 -0
- package/dist/skills/validate.d.ts.map +1 -0
- package/dist/skills/validate.js +43 -0
- package/dist/skills/validate.js.map +1 -0
- package/dist/updater.d.ts +23 -0
- package/dist/updater.d.ts.map +1 -0
- package/dist/updater.js +100 -0
- package/dist/updater.js.map +1 -0
- package/dist/url-parsing.d.ts +121 -0
- package/dist/url-parsing.d.ts.map +1 -0
- package/dist/url-parsing.js +199 -0
- package/dist/url-parsing.js.map +1 -0
- package/package.json +41 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zed prompts strategy. Zed uses a Rules Library UI, not file-based prompts.
|
|
3
|
+
* Prompts are not supported in Zed at this time.
|
|
4
|
+
*/
|
|
5
|
+
export class ZedPromptsStrategy {
|
|
6
|
+
isSupported() {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
getPromptsDir() {
|
|
10
|
+
return '';
|
|
11
|
+
}
|
|
12
|
+
getFileExtension() {
|
|
13
|
+
return '';
|
|
14
|
+
}
|
|
15
|
+
getGlobalPromptsPath() {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
formatPrompt(_prompt) {
|
|
19
|
+
return '';
|
|
20
|
+
}
|
|
21
|
+
async parseGlobalPrompts(_files, _readFile) {
|
|
22
|
+
return { prompts: {}, warnings: [] };
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../../src/editors/strategies/zed/prompts.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAC5B,WAAW;QACR,OAAO,KAAK,CAAC;IAChB,CAAC;IAED,aAAa;QACV,OAAO,EAAE,CAAC;IACb,CAAC;IAED,gBAAgB;QACb,OAAO,EAAE,CAAC;IACb,CAAC;IAED,oBAAoB;QACjB,OAAO,IAAI,CAAC;IACf,CAAC;IAED,YAAY,CAAC,OAAqB;QAC/B,OAAO,EAAE,CAAC;IACb,CAAC;IAED,KAAK,CAAC,kBAAkB,CACrB,MAAgB,EAChB,SAAgD;QAEhD,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACxC,CAAC;CACH"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { RulesStrategy } from '../types.js';
|
|
2
|
+
import type { EditorRule } from '../../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Zed rules strategy. Uses a single `.rules` file at project root (plain markdown, no frontmatter).
|
|
5
|
+
* Zed reads `.rules` files at the top level of worktrees.
|
|
6
|
+
*/
|
|
7
|
+
export declare class ZedRulesStrategy implements RulesStrategy {
|
|
8
|
+
getRulesDir(): string;
|
|
9
|
+
getFileExtension(): string;
|
|
10
|
+
getGlobalRulesPath(): string | null;
|
|
11
|
+
parseGlobalRules(_content: string): {
|
|
12
|
+
rules: string[];
|
|
13
|
+
warnings: string[];
|
|
14
|
+
};
|
|
15
|
+
formatRule(rule: EditorRule): string;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../../../src/editors/strategies/zed/rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;GAGG;AACH,qBAAa,gBAAiB,YAAW,aAAa;IACnD,WAAW,IAAI,MAAM;IAKrB,gBAAgB,IAAI,MAAM;IAK1B,kBAAkB,IAAI,MAAM,GAAG,IAAI;IAKnC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE;IAI3E,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;CActC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zed rules strategy. Uses a single `.rules` file at project root (plain markdown, no frontmatter).
|
|
3
|
+
* Zed reads `.rules` files at the top level of worktrees.
|
|
4
|
+
*/
|
|
5
|
+
export class ZedRulesStrategy {
|
|
6
|
+
getRulesDir() {
|
|
7
|
+
// Zed uses .rules at project root, not in .zed/
|
|
8
|
+
return '..';
|
|
9
|
+
}
|
|
10
|
+
getFileExtension() {
|
|
11
|
+
// Zed uses .rules extension (no .md)
|
|
12
|
+
return '';
|
|
13
|
+
}
|
|
14
|
+
getGlobalRulesPath() {
|
|
15
|
+
// Zed doesn't have global rules file
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
parseGlobalRules(_content) {
|
|
19
|
+
return { rules: [], warnings: [] };
|
|
20
|
+
}
|
|
21
|
+
formatRule(rule) {
|
|
22
|
+
const lines = [];
|
|
23
|
+
// Zed uses plain markdown without frontmatter
|
|
24
|
+
// Include rule name as heading for context, but only if content doesn't already start with one
|
|
25
|
+
const contentStartsWithHeading = /^#\s/.test(rule.content.trim());
|
|
26
|
+
if (rule.name && !contentStartsWithHeading) {
|
|
27
|
+
lines.push(`# ${rule.name}`, '');
|
|
28
|
+
}
|
|
29
|
+
lines.push(rule.content);
|
|
30
|
+
return lines.join('\n');
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../../src/editors/strategies/zed/rules.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IAC1B,WAAW;QACR,gDAAgD;QAChD,OAAO,IAAI,CAAC;IACf,CAAC;IAED,gBAAgB;QACb,qCAAqC;QACrC,OAAO,EAAE,CAAC;IACb,CAAC;IAED,kBAAkB;QACf,qCAAqC;QACrC,OAAO,IAAI,CAAC;IACf,CAAC;IAED,gBAAgB,CAAC,QAAgB;QAC9B,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACtC,CAAC;IAED,UAAU,CAAC,IAAgB;QACxB,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,8CAA8C;QAC9C,+FAA+F;QAC/F,MAAM,wBAAwB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAElE,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACpC,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;CACH"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import type { AiJsonConfig, McpServerConfig, HooksConfig } from '@a1st/aix-schema';
|
|
2
|
+
import type { ConfigScope } from '../merge.js';
|
|
3
|
+
/**
|
|
4
|
+
* Describes features in ai.json that won't be applied to an editor because the editor doesn't
|
|
5
|
+
* support them.
|
|
6
|
+
*/
|
|
7
|
+
export interface UnsupportedFeatures {
|
|
8
|
+
/** MCP servers that won't be configured (editor doesn't support MCP) */
|
|
9
|
+
mcp?: {
|
|
10
|
+
reason: string;
|
|
11
|
+
servers: string[];
|
|
12
|
+
};
|
|
13
|
+
/** Hooks that won't be configured */
|
|
14
|
+
hooks?: {
|
|
15
|
+
reason: string;
|
|
16
|
+
/** If editor supports hooks but not all events, lists unsupported events */
|
|
17
|
+
unsupportedEvents?: string[];
|
|
18
|
+
/** If editor doesn't support hooks at all, true */
|
|
19
|
+
allUnsupported?: boolean;
|
|
20
|
+
};
|
|
21
|
+
/** Prompts that won't be configured (editor doesn't support prompts) */
|
|
22
|
+
prompts?: {
|
|
23
|
+
reason: string;
|
|
24
|
+
prompts: string[];
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export type EditorName = 'windsurf' | 'cursor' | 'claude-code' | 'vscode' | 'zed' | 'codex';
|
|
28
|
+
/**
|
|
29
|
+
* Editor-specific rule format after translation from ai.json rules.
|
|
30
|
+
*/
|
|
31
|
+
export interface EditorRule {
|
|
32
|
+
name?: string;
|
|
33
|
+
content: string;
|
|
34
|
+
activation: {
|
|
35
|
+
type: 'always' | 'auto' | 'glob' | 'manual';
|
|
36
|
+
description?: string;
|
|
37
|
+
globs?: string[];
|
|
38
|
+
};
|
|
39
|
+
/** Source path for deriving filename (e.g., git URL with path, local file path) */
|
|
40
|
+
sourcePath?: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Editor-specific prompt/command format after translation from ai.json prompts.
|
|
44
|
+
*/
|
|
45
|
+
export interface EditorPrompt {
|
|
46
|
+
name: string;
|
|
47
|
+
content: string;
|
|
48
|
+
description?: string;
|
|
49
|
+
argumentHint?: string;
|
|
50
|
+
/** Source path for deriving filename (e.g., git URL with path, local file path) */
|
|
51
|
+
sourcePath?: string;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Generated configuration for an editor, ready to be written to disk.
|
|
55
|
+
*/
|
|
56
|
+
export interface EditorConfig {
|
|
57
|
+
rules: EditorRule[];
|
|
58
|
+
prompts: EditorPrompt[];
|
|
59
|
+
mcp: Record<string, McpServerConfig>;
|
|
60
|
+
hooks?: HooksConfig;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Options for applying editor configuration.
|
|
64
|
+
*/
|
|
65
|
+
export interface ApplyOptions {
|
|
66
|
+
dryRun?: boolean;
|
|
67
|
+
scopes?: ConfigScope[];
|
|
68
|
+
/**
|
|
69
|
+
* If true, overwrite existing JSON config files entirely instead of merging. Default is false,
|
|
70
|
+
* which means JSON files in editor config folders are recursively merged with existing content.
|
|
71
|
+
* Markdown files are always overwritten regardless of this setting.
|
|
72
|
+
*/
|
|
73
|
+
overwrite?: boolean;
|
|
74
|
+
/**
|
|
75
|
+
* If true, skip all global configuration changes (for editors with global-only features).
|
|
76
|
+
* Useful in CI environments or when user doesn't want to modify global config.
|
|
77
|
+
*/
|
|
78
|
+
skipGlobal?: boolean;
|
|
79
|
+
/**
|
|
80
|
+
* If true, automatically confirm global changes without prompting.
|
|
81
|
+
* Used for testing or non-interactive environments.
|
|
82
|
+
*/
|
|
83
|
+
autoConfirmGlobal?: boolean;
|
|
84
|
+
/**
|
|
85
|
+
* If true, remove the .aix folder before installing to ensure a clean state.
|
|
86
|
+
* This ensures the folder contents exactly match what ai.json declares.
|
|
87
|
+
*/
|
|
88
|
+
clean?: boolean;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Category of a file change for display grouping.
|
|
92
|
+
*/
|
|
93
|
+
export type FileChangeCategory = 'skill' | 'rule' | 'workflow' | 'mcp' | 'hook' | 'other';
|
|
94
|
+
/**
|
|
95
|
+
* A single file operation to be performed.
|
|
96
|
+
*/
|
|
97
|
+
export interface FileChange {
|
|
98
|
+
path: string;
|
|
99
|
+
action: 'create' | 'update' | 'delete' | 'unchanged';
|
|
100
|
+
content?: string;
|
|
101
|
+
/** If true, this change represents a directory that was already copied (e.g., skills) */
|
|
102
|
+
isDirectory?: boolean;
|
|
103
|
+
/** File mode (permissions) to set, e.g., 0o755 for executable scripts */
|
|
104
|
+
mode?: number;
|
|
105
|
+
/** Category for display grouping */
|
|
106
|
+
category?: FileChangeCategory;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Information about global configuration changes.
|
|
110
|
+
*/
|
|
111
|
+
export interface GlobalChangesInfo {
|
|
112
|
+
/** Global changes that were applied */
|
|
113
|
+
applied: Array<{
|
|
114
|
+
type: 'mcp' | 'prompt';
|
|
115
|
+
name: string;
|
|
116
|
+
globalPath: string;
|
|
117
|
+
}>;
|
|
118
|
+
/** Global changes that were skipped */
|
|
119
|
+
skipped: Array<{
|
|
120
|
+
type: 'mcp' | 'prompt';
|
|
121
|
+
name: string;
|
|
122
|
+
reason: string;
|
|
123
|
+
}>;
|
|
124
|
+
/** Warnings from global change processing */
|
|
125
|
+
warnings: string[];
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Result of applying editor configuration.
|
|
129
|
+
*/
|
|
130
|
+
export interface ApplyResult {
|
|
131
|
+
editor: EditorName;
|
|
132
|
+
success: boolean;
|
|
133
|
+
changes: FileChange[];
|
|
134
|
+
errors: string[];
|
|
135
|
+
/** Features that were skipped because the editor doesn't support them */
|
|
136
|
+
unsupportedFeatures?: UnsupportedFeatures;
|
|
137
|
+
/** Information about global configuration changes (for global-only features) */
|
|
138
|
+
globalChanges?: GlobalChangesInfo;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Interface for editor-specific adapters. Each supported editor implements this interface to
|
|
142
|
+
* translate ai.json configuration into editor-native formats.
|
|
143
|
+
*/
|
|
144
|
+
export interface EditorAdapter {
|
|
145
|
+
readonly name: EditorName;
|
|
146
|
+
readonly configDir: string;
|
|
147
|
+
/**
|
|
148
|
+
* Check if this editor's config directory exists in the project.
|
|
149
|
+
*/
|
|
150
|
+
detect(projectRoot: string): Promise<boolean>;
|
|
151
|
+
/**
|
|
152
|
+
* Generate editor-specific configuration from ai.json config.
|
|
153
|
+
*/
|
|
154
|
+
generateConfig(config: AiJsonConfig, projectRoot: string, options?: ApplyOptions): Promise<EditorConfig>;
|
|
155
|
+
/**
|
|
156
|
+
* Apply the generated configuration to the editor's config files.
|
|
157
|
+
*/
|
|
158
|
+
apply(editorConfig: EditorConfig, projectRoot: string, options?: ApplyOptions): Promise<ApplyResult>;
|
|
159
|
+
/**
|
|
160
|
+
* Get features from the config that this editor doesn't support.
|
|
161
|
+
*/
|
|
162
|
+
getUnsupportedFeatures(config: AiJsonConfig): UnsupportedFeatures;
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/editors/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/editors/types.ts"],"names":[],"mappings":""}
|
package/dist/env/ci.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ci.d.ts","sourceRoot":"","sources":["../../src/env/ci.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAkB7C"}
|
package/dist/env/ci.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check if the current environment is a CI environment.
|
|
3
|
+
* Uses the is-in-ci package for reliable detection across CI providers.
|
|
4
|
+
*/
|
|
5
|
+
export async function isCI() {
|
|
6
|
+
try {
|
|
7
|
+
const { default: isInCI } = await import('is-in-ci');
|
|
8
|
+
return isInCI;
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
// Fallback to basic CI detection if package not available
|
|
12
|
+
return Boolean(process.env.CI ||
|
|
13
|
+
process.env.CONTINUOUS_INTEGRATION ||
|
|
14
|
+
process.env.GITHUB_ACTIONS ||
|
|
15
|
+
process.env.GITLAB_CI ||
|
|
16
|
+
process.env.CIRCLECI ||
|
|
17
|
+
process.env.TRAVIS ||
|
|
18
|
+
process.env.JENKINS_URL ||
|
|
19
|
+
process.env.BUILDKITE);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=ci.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ci.js","sourceRoot":"","sources":["../../src/env/ci.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI;IACvB,IAAI,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QAErD,OAAO,MAAM,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACN,0DAA0D;QAC1D,OAAO,OAAO,CACX,OAAO,CAAC,GAAG,CAAC,EAAE;YACX,OAAO,CAAC,GAAG,CAAC,sBAAsB;YAClC,OAAO,CAAC,GAAG,CAAC,cAAc;YAC1B,OAAO,CAAC,GAAG,CAAC,SAAS;YACrB,OAAO,CAAC,GAAG,CAAC,QAAQ;YACpB,OAAO,CAAC,GAAG,CAAC,MAAM;YAClB,OAAO,CAAC,GAAG,CAAC,WAAW;YACvB,OAAO,CAAC,GAAG,CAAC,SAAS,CAC1B,CAAC;IACL,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/env/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/env/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export declare class ConfigError extends Error {
|
|
2
|
+
readonly code: string;
|
|
3
|
+
constructor(message: string, code: string);
|
|
4
|
+
}
|
|
5
|
+
export declare class ConfigNotFoundError extends ConfigError {
|
|
6
|
+
constructor(searchPath?: string);
|
|
7
|
+
}
|
|
8
|
+
export declare class ConfigValidationError extends ConfigError {
|
|
9
|
+
readonly errors: Array<{
|
|
10
|
+
path: string;
|
|
11
|
+
message: string;
|
|
12
|
+
}>;
|
|
13
|
+
constructor(errors: Array<{
|
|
14
|
+
path: string;
|
|
15
|
+
message: string;
|
|
16
|
+
}>);
|
|
17
|
+
}
|
|
18
|
+
export declare class CircularDependencyError extends ConfigError {
|
|
19
|
+
readonly path: string[];
|
|
20
|
+
constructor(path: string[]);
|
|
21
|
+
}
|
|
22
|
+
export interface ConfigParseIssue {
|
|
23
|
+
path: string;
|
|
24
|
+
message: string;
|
|
25
|
+
}
|
|
26
|
+
export declare class ConfigParseError extends ConfigError {
|
|
27
|
+
readonly filePath: string;
|
|
28
|
+
readonly issues?: ConfigParseIssue[] | undefined;
|
|
29
|
+
constructor(message: string, filePath: string, issues?: ConfigParseIssue[] | undefined);
|
|
30
|
+
}
|
|
31
|
+
export declare class EmbeddedConfigUpdateError extends ConfigError {
|
|
32
|
+
readonly packageJsonPath: string;
|
|
33
|
+
constructor(packageJsonPath: string);
|
|
34
|
+
}
|
|
35
|
+
export declare class RemoteFetchError extends ConfigError {
|
|
36
|
+
readonly url: string;
|
|
37
|
+
readonly cause: string;
|
|
38
|
+
constructor(url: string, cause: string);
|
|
39
|
+
}
|
|
40
|
+
export declare class UnsupportedUrlError extends ConfigError {
|
|
41
|
+
readonly url: string;
|
|
42
|
+
constructor(url: string);
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAY,SAAQ,KAAK;aAGhB,IAAI,EAAE,MAAM;gBAD5B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM;CAKjC;AAED,qBAAa,mBAAoB,SAAQ,WAAW;gBACrC,UAAU,CAAC,EAAE,MAAM;CAQjC;AAED,qBAAa,qBAAsB,SAAQ,WAAW;aACvB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;gBAAhD,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAQ9E;AAED,qBAAa,uBAAwB,SAAQ,WAAW;aACzB,IAAI,EAAE,MAAM,EAAE;gBAAd,IAAI,EAAE,MAAM,EAAE;CAG5C;AAED,MAAM,WAAW,gBAAgB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,gBAAiB,SAAQ,WAAW;aAG3B,QAAQ,EAAE,MAAM;aAChB,MAAM,CAAC,EAAE,gBAAgB,EAAE;gBAF3C,OAAO,EAAE,MAAM,EACC,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,gBAAgB,EAAE,YAAA;CAIhD;AAED,qBAAa,yBAA0B,SAAQ,WAAW;aAC3B,eAAe,EAAE,MAAM;gBAAvB,eAAe,EAAE,MAAM;CAQrD;AAED,qBAAa,gBAAiB,SAAQ,WAAW;aAE3B,GAAG,EAAE,MAAM;aACX,KAAK,EAAE,MAAM;gBADb,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM;CAIlC;AAED,qBAAa,mBAAoB,SAAQ,WAAW;aACrB,GAAG,EAAE,MAAM;gBAAX,GAAG,EAAE,MAAM;CAMzC"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
export class ConfigError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
constructor(message, code) {
|
|
4
|
+
super(message);
|
|
5
|
+
this.code = code;
|
|
6
|
+
this.name = 'ConfigError';
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export class ConfigNotFoundError extends ConfigError {
|
|
10
|
+
constructor(searchPath) {
|
|
11
|
+
super(searchPath
|
|
12
|
+
? `Config file not found at: ${searchPath}`
|
|
13
|
+
: 'No ai.json found in current directory or parents', 'CONFIG_NOT_FOUND');
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
export class ConfigValidationError extends ConfigError {
|
|
17
|
+
errors;
|
|
18
|
+
constructor(errors) {
|
|
19
|
+
const message = [
|
|
20
|
+
'Invalid ai.json configuration:',
|
|
21
|
+
...errors.map((e) => ` - ${e.path}: ${e.message}`),
|
|
22
|
+
].join('\n');
|
|
23
|
+
super(message, 'CONFIG_VALIDATION_ERROR');
|
|
24
|
+
this.errors = errors;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export class CircularDependencyError extends ConfigError {
|
|
28
|
+
path;
|
|
29
|
+
constructor(path) {
|
|
30
|
+
super(`Circular dependency detected: ${path.join(' -> ')}`, 'CIRCULAR_DEPENDENCY');
|
|
31
|
+
this.path = path;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export class ConfigParseError extends ConfigError {
|
|
35
|
+
filePath;
|
|
36
|
+
issues;
|
|
37
|
+
constructor(message, filePath, issues) {
|
|
38
|
+
super(`Failed to parse ${filePath}: ${message}`, 'CONFIG_PARSE_ERROR');
|
|
39
|
+
this.filePath = filePath;
|
|
40
|
+
this.issues = issues;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export class EmbeddedConfigUpdateError extends ConfigError {
|
|
44
|
+
packageJsonPath;
|
|
45
|
+
constructor(packageJsonPath) {
|
|
46
|
+
super(`Cannot update config embedded in package.json (${packageJsonPath}). ` +
|
|
47
|
+
'Extract the "ai" field to a separate ai.json file first, or use ' +
|
|
48
|
+
'"ai": "./ai.json" in package.json to reference an external file.', 'EMBEDDED_CONFIG_UPDATE');
|
|
49
|
+
this.packageJsonPath = packageJsonPath;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
export class RemoteFetchError extends ConfigError {
|
|
53
|
+
url;
|
|
54
|
+
cause;
|
|
55
|
+
constructor(url, cause) {
|
|
56
|
+
super(`Failed to fetch remote config from ${url}: ${cause}`, 'REMOTE_FETCH_ERROR');
|
|
57
|
+
this.url = url;
|
|
58
|
+
this.cause = cause;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
export class UnsupportedUrlError extends ConfigError {
|
|
62
|
+
url;
|
|
63
|
+
constructor(url) {
|
|
64
|
+
super(`Unsupported URL format: ${url}. Use HTTPS URLs or git shorthand (github:, gitlab:, bitbucket:).`, 'UNSUPPORTED_URL');
|
|
65
|
+
this.url = url;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAY,SAAQ,KAAK;IAGhB;IAFnB,YACG,OAAe,EACC,IAAY;QAE5B,KAAK,CAAC,OAAO,CAAC,CAAC;QAFC,SAAI,GAAJ,IAAI,CAAQ;QAG5B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC7B,CAAC;CACH;AAED,MAAM,OAAO,mBAAoB,SAAQ,WAAW;IACjD,YAAY,UAAmB;QAC5B,KAAK,CACF,UAAU;YACP,CAAC,CAAC,6BAA6B,UAAU,EAAE;YAC3C,CAAC,CAAC,kDAAkD,EACvD,kBAAkB,CACpB,CAAC;IACL,CAAC;CACH;AAED,MAAM,OAAO,qBAAsB,SAAQ,WAAW;IACvB;IAA5B,YAA4B,MAAgD;QACzE,MAAM,OAAO,GAAG;YACb,gCAAgC;YAChC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;SACrD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,KAAK,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;QANjB,WAAM,GAAN,MAAM,CAA0C;IAO5E,CAAC;CACH;AAED,MAAM,OAAO,uBAAwB,SAAQ,WAAW;IACzB;IAA5B,YAA4B,IAAc;QACvC,KAAK,CAAC,iCAAiC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAC;QAD1D,SAAI,GAAJ,IAAI,CAAU;IAE1C,CAAC;CACH;AAOD,MAAM,OAAO,gBAAiB,SAAQ,WAAW;IAG3B;IACA;IAHnB,YACG,OAAe,EACC,QAAgB,EAChB,MAA2B;QAE3C,KAAK,CAAC,mBAAmB,QAAQ,KAAK,OAAO,EAAE,EAAE,oBAAoB,CAAC,CAAC;QAHvD,aAAQ,GAAR,QAAQ,CAAQ;QAChB,WAAM,GAAN,MAAM,CAAqB;IAG9C,CAAC;CACH;AAED,MAAM,OAAO,yBAA0B,SAAQ,WAAW;IAC3B;IAA5B,YAA4B,eAAuB;QAChD,KAAK,CACF,kDAAkD,eAAe,KAAK;YACnE,kEAAkE;YAClE,kEAAkE,EACrE,wBAAwB,CAC1B,CAAC;QANuB,oBAAe,GAAf,eAAe,CAAQ;IAOnD,CAAC;CACH;AAED,MAAM,OAAO,gBAAiB,SAAQ,WAAW;IAE3B;IACA;IAFnB,YACmB,GAAW,EACX,KAAa;QAE7B,KAAK,CAAC,sCAAsC,GAAG,KAAK,KAAK,EAAE,EAAE,oBAAoB,CAAC,CAAC;QAHnE,QAAG,GAAH,GAAG,CAAQ;QACX,UAAK,GAAL,KAAK,CAAQ;IAGhC,CAAC;CACH;AAED,MAAM,OAAO,mBAAoB,SAAQ,WAAW;IACrB;IAA5B,YAA4B,GAAW;QACpC,KAAK,CACF,2BAA2B,GAAG,mEAAmE,EACjG,iBAAiB,CACnB,CAAC;QAJuB,QAAG,GAAH,GAAG,CAAQ;IAKvC,CAAC;CACH"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ZodError } from 'zod';
|
|
2
|
+
import { ConfigValidationError } from './errors.js';
|
|
3
|
+
export interface ValidationIssue {
|
|
4
|
+
path: string;
|
|
5
|
+
message: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Convert a ZodError to a ConfigValidationError. Returns undefined if the error is not a ZodError.
|
|
9
|
+
*/
|
|
10
|
+
export declare function toConfigValidationError(error: unknown): ConfigValidationError | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* Extract validation issues from a ZodError. Simplifies union errors to show the most relevant
|
|
13
|
+
* message.
|
|
14
|
+
* @param error - The ZodError to extract issues from
|
|
15
|
+
* @param input - Original input data (used to show actual values in errors)
|
|
16
|
+
*/
|
|
17
|
+
export declare function extractValidationIssues(error: ZodError, input?: unknown): ValidationIssue[];
|
|
18
|
+
//# sourceMappingURL=format-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-error.d.ts","sourceRoot":"","sources":["../src/format-error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAY,MAAM,KAAK,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,eAAe;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,qBAAqB,GAAG,SAAS,CAczF;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,eAAe,EAAE,CAS3F"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { ConfigValidationError } from './errors.js';
|
|
2
|
+
/**
|
|
3
|
+
* Convert a ZodError to a ConfigValidationError. Returns undefined if the error is not a ZodError.
|
|
4
|
+
*/
|
|
5
|
+
export function toConfigValidationError(error) {
|
|
6
|
+
if (error instanceof Error && 'issues' in error) {
|
|
7
|
+
const zodError = error;
|
|
8
|
+
return new ConfigValidationError(zodError.issues.map((issue) => ({
|
|
9
|
+
path: Array.isArray(issue.path) ? issue.path.join('.') : '',
|
|
10
|
+
message: issue.message,
|
|
11
|
+
})));
|
|
12
|
+
}
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Extract validation issues from a ZodError. Simplifies union errors to show the most relevant
|
|
17
|
+
* message.
|
|
18
|
+
* @param error - The ZodError to extract issues from
|
|
19
|
+
* @param input - Original input data (used to show actual values in errors)
|
|
20
|
+
*/
|
|
21
|
+
export function extractValidationIssues(error, input) {
|
|
22
|
+
return error.issues.map((issue) => {
|
|
23
|
+
const path = Array.isArray(issue.path) ? issue.path : [];
|
|
24
|
+
return {
|
|
25
|
+
path: path.join('.') || '(root)',
|
|
26
|
+
message: simplifyZodMessage(issue, input, path),
|
|
27
|
+
};
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Simplify a Zod error message for human readability. Union errors are particularly verbose, so we
|
|
32
|
+
* extract the most relevant message from them.
|
|
33
|
+
*/
|
|
34
|
+
function simplifyZodMessage(issue, input, path) {
|
|
35
|
+
// Handle union errors specially - they're verbose
|
|
36
|
+
if (issue.code === 'invalid_union') {
|
|
37
|
+
const unionIssues = issue.unionErrors.flatMap((e) => e.issues);
|
|
38
|
+
// Look for a type error first (most common and clear)
|
|
39
|
+
const typeError = unionIssues.find((i) => i.code === 'invalid_type');
|
|
40
|
+
if (typeError && typeError.code === 'invalid_type') {
|
|
41
|
+
return formatTypeError(typeError.expected, input, path);
|
|
42
|
+
}
|
|
43
|
+
// Look for a literal error (e.g., expected false but got true)
|
|
44
|
+
const literalError = unionIssues.find((i) => i.code === 'invalid_literal');
|
|
45
|
+
if (literalError && literalError.code === 'invalid_literal') {
|
|
46
|
+
const actualValue = getValueAtPath(input, path);
|
|
47
|
+
return `Expected object or false, received ${formatReceivedValue(actualValue)}`;
|
|
48
|
+
}
|
|
49
|
+
// Fall back to first error message
|
|
50
|
+
return unionIssues[0]?.message ?? issue.message;
|
|
51
|
+
}
|
|
52
|
+
if (issue.code === 'invalid_type') {
|
|
53
|
+
return formatTypeError(issue.expected, input, path);
|
|
54
|
+
}
|
|
55
|
+
// For custom refinement errors, use the message directly
|
|
56
|
+
if (issue.code === 'custom') {
|
|
57
|
+
return issue.message;
|
|
58
|
+
}
|
|
59
|
+
return issue.message;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Format type errors with actual values for literals like true/false/null. Shows "received true"
|
|
63
|
+
* instead of "received boolean" for clarity.
|
|
64
|
+
*/
|
|
65
|
+
function formatTypeError(expected, input, path) {
|
|
66
|
+
const actualValue = getValueAtPath(input, path), receivedStr = formatReceivedValue(actualValue);
|
|
67
|
+
return `Expected ${expected}, received ${receivedStr}`;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Get a value at a nested path in an object.
|
|
71
|
+
*/
|
|
72
|
+
function getValueAtPath(obj, path) {
|
|
73
|
+
let current = obj;
|
|
74
|
+
for (const key of path) {
|
|
75
|
+
if (current == null || typeof current !== 'object') {
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
current = current[key];
|
|
79
|
+
}
|
|
80
|
+
return current;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Format a received value for display in error messages. Shows actual literal values for
|
|
84
|
+
* primitives.
|
|
85
|
+
*/
|
|
86
|
+
function formatReceivedValue(value) {
|
|
87
|
+
if (value === true) {
|
|
88
|
+
return 'true';
|
|
89
|
+
}
|
|
90
|
+
if (value === false) {
|
|
91
|
+
return 'false';
|
|
92
|
+
}
|
|
93
|
+
if (value === null) {
|
|
94
|
+
return 'null';
|
|
95
|
+
}
|
|
96
|
+
if (value === undefined) {
|
|
97
|
+
return 'undefined';
|
|
98
|
+
}
|
|
99
|
+
if (typeof value === 'string') {
|
|
100
|
+
return `string ("${value}")`;
|
|
101
|
+
}
|
|
102
|
+
if (typeof value === 'number') {
|
|
103
|
+
return `number (${value})`;
|
|
104
|
+
}
|
|
105
|
+
if (Array.isArray(value)) {
|
|
106
|
+
return 'array';
|
|
107
|
+
}
|
|
108
|
+
if (typeof value === 'object') {
|
|
109
|
+
return 'object';
|
|
110
|
+
}
|
|
111
|
+
return typeof value;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=format-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-error.js","sourceRoot":"","sources":["../src/format-error.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error thrown when attempting to remove a protected path.
|
|
3
|
+
*/
|
|
4
|
+
export declare class UnsafePathError extends Error {
|
|
5
|
+
readonly path: string;
|
|
6
|
+
readonly reason: string;
|
|
7
|
+
constructor(path: string, reason: string);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Safely remove a directory recursively, with validation to prevent accidental deletion
|
|
11
|
+
* of critical system or project directories.
|
|
12
|
+
*
|
|
13
|
+
* @param targetPath - The path to remove
|
|
14
|
+
* @param options - Options passed to fs.rm (force is commonly used)
|
|
15
|
+
* @throws UnsafePathError if the path is protected
|
|
16
|
+
*/
|
|
17
|
+
export declare function safeRm(targetPath: string, options?: {
|
|
18
|
+
force?: boolean;
|
|
19
|
+
}): Promise<void>;
|
|
20
|
+
//# sourceMappingURL=safe-rm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safe-rm.d.ts","sourceRoot":"","sources":["../../src/fs/safe-rm.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;aAEpB,IAAI,EAAE,MAAM;aACZ,MAAM,EAAE,MAAM;gBADd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM;CAKnC;AAkGD;;;;;;;GAOG;AACH,wBAAsB,MAAM,CACzB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,OAAO,CAAC,IAAI,CAAC,CAmCf"}
|