@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 @@
|
|
|
1
|
+
{"version":3,"file":"remote-loader.js","sourceRoot":"","sources":["../src/remote-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { loadRule, loadRules, type LoadedRule } from './loader.js';
|
|
2
|
+
export { mergeRules, getActiveRules, type MergedRule, type MergedRules, type MergeOptions, type RuleScope, } from './merger.js';
|
|
3
|
+
export { interpolateRule, interpolateRules, hasUnresolvedVariables, extractVariableNames, type InterpolationContext, } from './interpolate.js';
|
|
4
|
+
export { loadSkillRules, loadAllSkillRules } from './skill-rules.js';
|
|
5
|
+
export { formatRulesForEditor, validateRuleContent, deduplicateRules, getRulesSummary, filterByScope, getMentionableRules, } from './utils.js';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EACJ,UAAU,EACV,cAAc,EACd,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,SAAS,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EACJ,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,oBAAoB,GAC3B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACJ,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,mBAAmB,GACrB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { loadRule, loadRules } from './loader.js';
|
|
2
|
+
export { mergeRules, getActiveRules, } from './merger.js';
|
|
3
|
+
export { interpolateRule, interpolateRules, hasUnresolvedVariables, extractVariableNames, } from './interpolate.js';
|
|
4
|
+
export { loadSkillRules, loadAllSkillRules } from './skill-rules.js';
|
|
5
|
+
export { formatRulesForEditor, validateRuleContent, deduplicateRules, getRulesSummary, filterByScope, getMentionableRules, } from './utils.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAmB,MAAM,aAAa,CAAC;AACnE,OAAO,EACJ,UAAU,EACV,cAAc,GAKhB,MAAM,aAAa,CAAC;AACrB,OAAO,EACJ,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,GAEtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACJ,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,mBAAmB,GACrB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface InterpolationContext {
|
|
2
|
+
project: {
|
|
3
|
+
name: string;
|
|
4
|
+
version?: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
};
|
|
7
|
+
editor: string;
|
|
8
|
+
env: Record<string, string | undefined>;
|
|
9
|
+
custom: Record<string, unknown>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Interpolate variables in rule content using {{variable.path}} syntax
|
|
13
|
+
*/
|
|
14
|
+
export declare function interpolateRule(content: string, context: InterpolationContext): string;
|
|
15
|
+
/**
|
|
16
|
+
* Interpolate variables in multiple rules
|
|
17
|
+
*/
|
|
18
|
+
export declare function interpolateRules(rules: string[], context: InterpolationContext): string[];
|
|
19
|
+
/**
|
|
20
|
+
* Check if content has unresolved variables
|
|
21
|
+
*/
|
|
22
|
+
export declare function hasUnresolvedVariables(content: string): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Extract all variable names from content
|
|
25
|
+
*/
|
|
26
|
+
export declare function extractVariableNames(content: string): string[];
|
|
27
|
+
//# sourceMappingURL=interpolate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpolate.d.ts","sourceRoot":"","sources":["../../src/rules/interpolate.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IAClC,OAAO,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAmBD;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAUtF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,oBAAoB,GAAG,MAAM,EAAE,CAEzF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAI9D"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
const VARIABLE_PATTERN = /\{\{([^}]+)\}\}/g;
|
|
2
|
+
/**
|
|
3
|
+
* Get a value from an object by dot-separated path
|
|
4
|
+
*/
|
|
5
|
+
function getValueByPath(obj, path) {
|
|
6
|
+
const parts = path.split('.');
|
|
7
|
+
let current = obj;
|
|
8
|
+
for (const part of parts) {
|
|
9
|
+
if (current === null || current === undefined) {
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
current = current[part];
|
|
13
|
+
}
|
|
14
|
+
return current;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Interpolate variables in rule content using {{variable.path}} syntax
|
|
18
|
+
*/
|
|
19
|
+
export function interpolateRule(content, context) {
|
|
20
|
+
return content.replace(VARIABLE_PATTERN, (match, path) => {
|
|
21
|
+
const value = getValueByPath(context, path.trim());
|
|
22
|
+
if (value === undefined) {
|
|
23
|
+
console.warn(`Unknown variable in rule: ${path}`);
|
|
24
|
+
return match;
|
|
25
|
+
}
|
|
26
|
+
return String(value);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Interpolate variables in multiple rules
|
|
31
|
+
*/
|
|
32
|
+
export function interpolateRules(rules, context) {
|
|
33
|
+
return rules.map((rule) => interpolateRule(rule, context));
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Check if content has unresolved variables
|
|
37
|
+
*/
|
|
38
|
+
export function hasUnresolvedVariables(content) {
|
|
39
|
+
return VARIABLE_PATTERN.test(content);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Extract all variable names from content
|
|
43
|
+
*/
|
|
44
|
+
export function extractVariableNames(content) {
|
|
45
|
+
const matches = content.matchAll(new RegExp(VARIABLE_PATTERN.source, 'g'));
|
|
46
|
+
return [...matches].map((m) => m[1]).filter((name) => name !== undefined);
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=interpolate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpolate.js","sourceRoot":"","sources":["../../src/rules/interpolate.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAa5C;;GAEG;AACH,SAAS,cAAc,CAAC,GAAY,EAAE,IAAY;IAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,OAAO,GAAG,GAAG,CAAC;IAElB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC7C,OAAO,SAAS,CAAC;QACpB,CAAC;QACD,OAAO,GAAI,OAAmC,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,OAAO,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,OAA6B;IAC3E,OAAO,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC9D,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAEnD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC;YAClD,OAAO,KAAK,CAAC;QAChB,CAAC;QACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAe,EAAE,OAA6B;IAC5E,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACnD,OAAO,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IACjD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAE3E,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;AAC7F,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { RuleValue, ActivationMode, RulesConfig } from '@a1st/aix-schema';
|
|
2
|
+
export interface LoadedRule {
|
|
3
|
+
name: string;
|
|
4
|
+
content: string;
|
|
5
|
+
source: 'inline' | 'file' | 'git' | 'npm';
|
|
6
|
+
sourcePath?: string;
|
|
7
|
+
metadata: {
|
|
8
|
+
description?: string;
|
|
9
|
+
activation: ActivationMode;
|
|
10
|
+
globs?: string[];
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Load a single rule from any source.
|
|
15
|
+
* @param name - The rule name (key from the rules object)
|
|
16
|
+
* @param value - The rule value (string shorthand or object)
|
|
17
|
+
* @param basePath - Base path for resolving relative paths
|
|
18
|
+
*/
|
|
19
|
+
export declare function loadRule(name: string, value: RuleValue, basePath: string): Promise<LoadedRule>;
|
|
20
|
+
/**
|
|
21
|
+
* Load all rules from a rules config object.
|
|
22
|
+
* @param rules - Rules config object (keyed by name)
|
|
23
|
+
* @param basePath - Base path for resolving relative paths
|
|
24
|
+
* @returns Record of loaded rules keyed by name
|
|
25
|
+
*/
|
|
26
|
+
export declare function loadRules(rules: RulesConfig, basePath: string): Promise<Record<string, LoadedRule>>;
|
|
27
|
+
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/rules/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAc,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAM3F,MAAM,WAAW,UAAU;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE;QACP,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,cAAc,CAAC;QAC3B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;CACJ;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAuEpG;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAC5B,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAarC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { resolve, dirname } from 'pathe';
|
|
3
|
+
import { tmpdir } from 'node:os';
|
|
4
|
+
import { normalizeSourceRef } from '@a1st/aix-schema';
|
|
5
|
+
import { getRulesCacheDir } from '../cache/paths.js';
|
|
6
|
+
import { loadFromGit } from '../git-loader.js';
|
|
7
|
+
import { resolveNpmPath } from '../npm/resolve.js';
|
|
8
|
+
/**
|
|
9
|
+
* Load a single rule from any source.
|
|
10
|
+
* @param name - The rule name (key from the rules object)
|
|
11
|
+
* @param value - The rule value (string shorthand or object)
|
|
12
|
+
* @param basePath - Base path for resolving relative paths
|
|
13
|
+
*/
|
|
14
|
+
export async function loadRule(name, value, basePath) {
|
|
15
|
+
// Normalize string shorthand transparently
|
|
16
|
+
const ruleObj = typeof value === 'string' ? normalizeSourceRef(value) : value;
|
|
17
|
+
const metadata = {
|
|
18
|
+
description: ruleObj.description,
|
|
19
|
+
activation: (ruleObj.activation ?? 'always'),
|
|
20
|
+
globs: ruleObj.globs,
|
|
21
|
+
};
|
|
22
|
+
// Inline content
|
|
23
|
+
if (ruleObj.content) {
|
|
24
|
+
return {
|
|
25
|
+
name,
|
|
26
|
+
content: ruleObj.content,
|
|
27
|
+
source: 'inline',
|
|
28
|
+
metadata,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
// Local file
|
|
32
|
+
if (ruleObj.path) {
|
|
33
|
+
const fullPath = resolve(dirname(basePath), ruleObj.path);
|
|
34
|
+
const content = await readFile(fullPath, 'utf-8');
|
|
35
|
+
return {
|
|
36
|
+
name,
|
|
37
|
+
content: content.trim(),
|
|
38
|
+
source: 'file',
|
|
39
|
+
sourcePath: fullPath,
|
|
40
|
+
metadata,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
// Git repository
|
|
44
|
+
if (ruleObj.git) {
|
|
45
|
+
const baseDir = dirname(basePath) || tmpdir();
|
|
46
|
+
const result = await loadFromGit({
|
|
47
|
+
git: ruleObj.git,
|
|
48
|
+
cacheDir: getRulesCacheDir(baseDir),
|
|
49
|
+
defaultFilePath: 'RULES.md',
|
|
50
|
+
});
|
|
51
|
+
return {
|
|
52
|
+
name,
|
|
53
|
+
content: result.content,
|
|
54
|
+
source: 'git',
|
|
55
|
+
sourcePath: result.sourcePath,
|
|
56
|
+
metadata,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
// NPM package
|
|
60
|
+
if (ruleObj.npm) {
|
|
61
|
+
const filePath = await resolveNpmPath({
|
|
62
|
+
packageName: ruleObj.npm.npm,
|
|
63
|
+
subpath: ruleObj.npm.path,
|
|
64
|
+
version: ruleObj.npm.version,
|
|
65
|
+
projectRoot: dirname(basePath),
|
|
66
|
+
});
|
|
67
|
+
const content = await readFile(filePath, 'utf-8');
|
|
68
|
+
return {
|
|
69
|
+
name,
|
|
70
|
+
content: content.trim(),
|
|
71
|
+
source: 'npm',
|
|
72
|
+
sourcePath: filePath,
|
|
73
|
+
metadata,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
throw new Error(`Invalid rule "${name}": no content source found`);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Load all rules from a rules config object.
|
|
80
|
+
* @param rules - Rules config object (keyed by name)
|
|
81
|
+
* @param basePath - Base path for resolving relative paths
|
|
82
|
+
* @returns Record of loaded rules keyed by name
|
|
83
|
+
*/
|
|
84
|
+
export async function loadRules(rules, basePath) {
|
|
85
|
+
// Filter out false values (disabled rules)
|
|
86
|
+
const entries = Object.entries(rules).filter(([, value]) => value !== false);
|
|
87
|
+
const loadedEntries = await Promise.all(entries.map(async ([name, value]) => {
|
|
88
|
+
// Type assertion safe because we filtered out false above
|
|
89
|
+
const loaded = await loadRule(name, value, basePath);
|
|
90
|
+
return [name, loaded];
|
|
91
|
+
}));
|
|
92
|
+
return Object.fromEntries(loadedEntries);
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/rules/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { LoadedRule } from './loader.js';
|
|
2
|
+
import type { RulesConfig } from '@a1st/aix-schema';
|
|
3
|
+
export type RuleScope = 'skill' | 'project' | 'editor';
|
|
4
|
+
export interface MergedRule extends LoadedRule {
|
|
5
|
+
scope: RuleScope;
|
|
6
|
+
}
|
|
7
|
+
export interface MergedRules {
|
|
8
|
+
/** All rules (for debugging/inspection) */
|
|
9
|
+
all: MergedRule[];
|
|
10
|
+
/** Rules to always include */
|
|
11
|
+
always: MergedRule[];
|
|
12
|
+
/** Rules for AI to decide (with descriptions) */
|
|
13
|
+
auto: MergedRule[];
|
|
14
|
+
/** Rules matching current file globs */
|
|
15
|
+
glob: MergedRule[];
|
|
16
|
+
/** Manual rules (available for @mention) */
|
|
17
|
+
manual: MergedRule[];
|
|
18
|
+
}
|
|
19
|
+
export interface MergeOptions {
|
|
20
|
+
/** Current file path (for glob matching) */
|
|
21
|
+
targetPath?: string;
|
|
22
|
+
/** Editor-specific rules from editors.[editor].rules */
|
|
23
|
+
editorRules?: RulesConfig;
|
|
24
|
+
/** Whether to include skill rules (default: true) */
|
|
25
|
+
includeSkillRules?: boolean;
|
|
26
|
+
/** Path to ai.json */
|
|
27
|
+
basePath: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Merge rules from multiple sources in correct order
|
|
31
|
+
*/
|
|
32
|
+
export declare function mergeRules(config: RulesConfig, skillRules: LoadedRule[], options: MergeOptions): Promise<MergedRules>;
|
|
33
|
+
/**
|
|
34
|
+
* Get active rules for a specific file (always + matching globs + auto)
|
|
35
|
+
*/
|
|
36
|
+
export declare function getActiveRules(merged: MergedRules): MergedRule[];
|
|
37
|
+
//# sourceMappingURL=merger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merger.d.ts","sourceRoot":"","sources":["../../src/rules/merger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEvD,MAAM,WAAW,UAAW,SAAQ,UAAU;IAC3C,KAAK,EAAE,SAAS,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IACzB,2CAA2C;IAC3C,GAAG,EAAE,UAAU,EAAE,CAAC;IAClB,8BAA8B;IAC9B,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,iDAAiD;IACjD,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,wCAAwC;IACxC,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,4CAA4C;IAC5C,MAAM,EAAE,UAAU,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC1B,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,qDAAqD;IACrD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,sBAAsB;IACtB,QAAQ,EAAE,MAAM,CAAC;CACnB;AAsDD;;GAEG;AACH,wBAAsB,UAAU,CAC7B,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,UAAU,EAAE,EACxB,OAAO,EAAE,YAAY,GACrB,OAAO,CAAC,WAAW,CAAC,CAyCtB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,UAAU,EAAE,CAEhE"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { loadRules } from './loader.js';
|
|
2
|
+
/**
|
|
3
|
+
* Simple glob-like pattern matching
|
|
4
|
+
*/
|
|
5
|
+
function matchPattern(value, pattern) {
|
|
6
|
+
// Normalize path separators
|
|
7
|
+
const normalizedValue = value.replace(/\\/g, '/'), normalizedPattern = pattern.replace(/\\/g, '/');
|
|
8
|
+
// Convert glob to regex step by step
|
|
9
|
+
let regexPattern = '';
|
|
10
|
+
let i = 0;
|
|
11
|
+
while (i < normalizedPattern.length) {
|
|
12
|
+
const char = normalizedPattern[i];
|
|
13
|
+
if (char === '*') {
|
|
14
|
+
if (normalizedPattern[i + 1] === '*') {
|
|
15
|
+
// ** - match anything including /
|
|
16
|
+
if (normalizedPattern[i + 2] === '/') {
|
|
17
|
+
regexPattern += '(?:.*/)?'; // **/ matches zero or more directories
|
|
18
|
+
i += 3;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
regexPattern += '.*'; // ** matches anything
|
|
22
|
+
i += 2;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
// * - match anything except /
|
|
27
|
+
regexPattern += '[^/]*';
|
|
28
|
+
i++;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
else if (char === '?') {
|
|
32
|
+
regexPattern += '.';
|
|
33
|
+
i++;
|
|
34
|
+
}
|
|
35
|
+
else if ('.+^${}()|[]\\'.includes(char)) {
|
|
36
|
+
regexPattern += '\\' + char;
|
|
37
|
+
i++;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
regexPattern += char;
|
|
41
|
+
i++;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return new RegExp(`^${regexPattern}$`).test(normalizedValue);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Check if a file matches any of the glob patterns
|
|
48
|
+
*/
|
|
49
|
+
function matchesGlobs(filePath, globs) {
|
|
50
|
+
return globs.some((glob) => matchPattern(filePath, glob));
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Merge rules from multiple sources in correct order
|
|
54
|
+
*/
|
|
55
|
+
export async function mergeRules(config, skillRules, options) {
|
|
56
|
+
const allRules = [];
|
|
57
|
+
// 1. Add skill rules first (lowest priority)
|
|
58
|
+
if (options.includeSkillRules !== false) {
|
|
59
|
+
allRules.push(...skillRules.map((r) => Object.assign(r, { scope: 'skill' })));
|
|
60
|
+
}
|
|
61
|
+
// 2. Add project rules (the main use case)
|
|
62
|
+
if (config && Object.keys(config).length > 0) {
|
|
63
|
+
const projectRulesRecord = await loadRules(config, options.basePath);
|
|
64
|
+
const projectRules = Object.values(projectRulesRecord);
|
|
65
|
+
allRules.push(...projectRules.map((r) => Object.assign(r, { scope: 'project' })));
|
|
66
|
+
}
|
|
67
|
+
// 3. Add editor-specific rules (from editors.[editor].rules)
|
|
68
|
+
if (options.editorRules && Object.keys(options.editorRules).length > 0) {
|
|
69
|
+
const editorRulesRecord = await loadRules(options.editorRules, options.basePath);
|
|
70
|
+
const editorRules = Object.values(editorRulesRecord);
|
|
71
|
+
allRules.push(...editorRules.map((r) => Object.assign(r, { scope: 'editor' })));
|
|
72
|
+
}
|
|
73
|
+
// Categorize by activation mode
|
|
74
|
+
const always = allRules.filter((r) => r.metadata.activation === 'always'), auto = allRules.filter((r) => r.metadata.activation === 'auto'), manual = allRules.filter((r) => r.metadata.activation === 'manual');
|
|
75
|
+
// For glob rules, filter by current file if provided
|
|
76
|
+
const glob = allRules.filter((r) => {
|
|
77
|
+
if (r.metadata.activation !== 'glob') {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
if (!options.targetPath || !r.metadata.globs) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
return matchesGlobs(options.targetPath, r.metadata.globs);
|
|
84
|
+
});
|
|
85
|
+
return { all: allRules, always, auto, glob, manual };
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Get active rules for a specific file (always + matching globs + auto)
|
|
89
|
+
*/
|
|
90
|
+
export function getActiveRules(merged) {
|
|
91
|
+
return [...merged.always, ...merged.glob, ...merged.auto];
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=merger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merger.js","sourceRoot":"","sources":["../../src/rules/merger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ParsedSkill } from '@a1st/aix-schema';
|
|
2
|
+
import type { LoadedRule } from './loader.js';
|
|
3
|
+
/**
|
|
4
|
+
* Generate a rule that points the AI to an installed skill. Skills are installed to
|
|
5
|
+
* `.aix/skills/{name}/` preserving their full directory structure (SKILL.md, scripts/,
|
|
6
|
+
* references/, etc.). This rule tells the AI where to find the skill and what it does.
|
|
7
|
+
*/
|
|
8
|
+
export declare function loadSkillRules(skill: ParsedSkill, _editor?: string): Promise<LoadedRule[]>;
|
|
9
|
+
/**
|
|
10
|
+
* Load rules from all skills
|
|
11
|
+
*/
|
|
12
|
+
export declare function loadAllSkillRules(skills: ParsedSkill[], editor?: string): Promise<LoadedRule[]>;
|
|
13
|
+
//# sourceMappingURL=skill-rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-rules.d.ts","sourceRoot":"","sources":["../../src/rules/skill-rules.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CA0DhG;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAMrG"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import pMap from 'p-map';
|
|
2
|
+
import { readFile } from 'node:fs/promises';
|
|
3
|
+
import { join } from 'pathe';
|
|
4
|
+
/**
|
|
5
|
+
* Generate a rule that points the AI to an installed skill. Skills are installed to
|
|
6
|
+
* `.aix/skills/{name}/` preserving their full directory structure (SKILL.md, scripts/,
|
|
7
|
+
* references/, etc.). This rule tells the AI where to find the skill and what it does.
|
|
8
|
+
*/
|
|
9
|
+
export async function loadSkillRules(skill, _editor) {
|
|
10
|
+
const rules = [], skillName = skill.frontmatter.name, description = skill.frontmatter.description || 'No description provided';
|
|
11
|
+
// Generate a pointer rule that tells the AI about this skill
|
|
12
|
+
// The actual skill content lives in .aix/skills/{name}/ and preserves the full structure
|
|
13
|
+
// Note: The rule name is added as a heading by the editor adapter, so we start with description
|
|
14
|
+
const pointerContent = `${description}
|
|
15
|
+
|
|
16
|
+
## Location
|
|
17
|
+
|
|
18
|
+
This skill is installed at \`.aix/skills/${skillName}/\`. Read the \`SKILL.md\` file there for full instructions.
|
|
19
|
+
|
|
20
|
+
## Quick Reference
|
|
21
|
+
|
|
22
|
+
- **Instructions**: \`.aix/skills/${skillName}/SKILL.md\`
|
|
23
|
+
- **Scripts**: \`.aix/skills/${skillName}/scripts/\` (if available)
|
|
24
|
+
- **References**: \`.aix/skills/${skillName}/references/\` (if available)
|
|
25
|
+
|
|
26
|
+
When you need to use this skill, read the SKILL.md file for detailed instructions.`;
|
|
27
|
+
rules.push({
|
|
28
|
+
name: `skill-${skillName}`,
|
|
29
|
+
content: pointerContent,
|
|
30
|
+
source: 'file',
|
|
31
|
+
sourcePath: `${skillName}:pointer`,
|
|
32
|
+
metadata: {
|
|
33
|
+
description,
|
|
34
|
+
activation: 'always',
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
// Also load any editor-specific rules from the skill's rules/ directory
|
|
38
|
+
// Try each path in order, use the first one that exists
|
|
39
|
+
const editorRulePaths = ['rules/global.md', 'RULES.md'];
|
|
40
|
+
for (const rulePath of editorRulePaths) {
|
|
41
|
+
try {
|
|
42
|
+
// eslint-disable-next-line no-await-in-loop -- Sequential: first-match lookup
|
|
43
|
+
const content = await readFile(join(skill.basePath, rulePath), 'utf-8');
|
|
44
|
+
rules.push({
|
|
45
|
+
name: `${skillName}-rules`,
|
|
46
|
+
content: content.trim(),
|
|
47
|
+
source: 'file',
|
|
48
|
+
sourcePath: `${skillName}:${rulePath}`,
|
|
49
|
+
metadata: {
|
|
50
|
+
activation: 'always',
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// File doesn't exist, continue
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return rules;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Load rules from all skills
|
|
63
|
+
*/
|
|
64
|
+
export async function loadAllSkillRules(skills, editor) {
|
|
65
|
+
const nestedRules = await pMap(skills, (skill) => loadSkillRules(skill, editor), {
|
|
66
|
+
concurrency: 5,
|
|
67
|
+
});
|
|
68
|
+
return nestedRules.flat();
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=skill-rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-rules.js","sourceRoot":"","sources":["../../src/rules/skill-rules.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,OAAO,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAI7B;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAkB,EAAE,OAAgB;IACtE,MAAM,KAAK,GAAiB,EAAE,EACxB,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,EAClC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,WAAW,IAAI,yBAAyB,CAAC;IAE/E,6DAA6D;IAC7D,yFAAyF;IACzF,gGAAgG;IAChG,MAAM,cAAc,GAAG,GAAG,WAAW;;;;2CAIG,SAAS;;;;oCAIhB,SAAS;+BACd,SAAS;kCACN,SAAS;;mFAEwC,CAAC;IAEjF,KAAK,CAAC,IAAI,CAAC;QACR,IAAI,EAAE,SAAS,SAAS,EAAE;QAC1B,OAAO,EAAE,cAAc;QACvB,MAAM,EAAE,MAAM;QACd,UAAU,EAAE,GAAG,SAAS,UAAU;QAClC,QAAQ,EAAE;YACP,WAAW;YACX,UAAU,EAAE,QAAQ;SACtB;KACH,CAAC,CAAC;IAEH,wEAAwE;IACxE,wDAAwD;IACxD,MAAM,eAAe,GAAG,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;IAExD,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;QACtC,IAAI,CAAC;YACF,8EAA8E;YAC9E,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;YAExE,KAAK,CAAC,IAAI,CAAC;gBACR,IAAI,EAAE,GAAG,SAAS,QAAQ;gBAC1B,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE;gBACvB,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,GAAG,SAAS,IAAI,QAAQ,EAAE;gBACtC,QAAQ,EAAE;oBACP,UAAU,EAAE,QAAQ;iBACtB;aACH,CAAC,CAAC;YACH,MAAM;QACT,CAAC;QAAC,MAAM,CAAC;YACN,+BAA+B;QAClC,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAqB,EAAE,MAAe;IAC3E,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE;QAC9E,WAAW,EAAE,CAAC;KAChB,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { MergedRules, MergedRule } from './merger.js';
|
|
2
|
+
/**
|
|
3
|
+
* Format rules for output in various formats
|
|
4
|
+
*/
|
|
5
|
+
export declare function formatRulesForEditor(rules: MergedRule[], format: 'markdown' | 'text' | 'json'): string;
|
|
6
|
+
/**
|
|
7
|
+
* Validate rule content for common issues
|
|
8
|
+
*/
|
|
9
|
+
export declare function validateRuleContent(content: string): {
|
|
10
|
+
valid: boolean;
|
|
11
|
+
warnings: string[];
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Deduplicate rules by normalized content
|
|
15
|
+
*/
|
|
16
|
+
export declare function deduplicateRules(rules: MergedRule[]): MergedRule[];
|
|
17
|
+
/**
|
|
18
|
+
* Get a summary of merged rules for debugging
|
|
19
|
+
*/
|
|
20
|
+
export declare function getRulesSummary(merged: MergedRules): {
|
|
21
|
+
total: number;
|
|
22
|
+
byScope: Record<string, number>;
|
|
23
|
+
byActivation: Record<string, number>;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Filter rules by scope
|
|
27
|
+
*/
|
|
28
|
+
export declare function filterByScope(rules: MergedRule[], scope: MergedRule['scope']): MergedRule[];
|
|
29
|
+
/**
|
|
30
|
+
* Get manual rules that can be @mentioned
|
|
31
|
+
*/
|
|
32
|
+
export declare function getMentionableRules(merged: MergedRules): {
|
|
33
|
+
name: string;
|
|
34
|
+
description?: string;
|
|
35
|
+
}[];
|
|
36
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/rules/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE3D;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAgBtG;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG;IACnD,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;CACrB,CAmBA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAYlE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC,CAcA;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,UAAU,EAAE,CAE3F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,CAOjG"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format rules for output in various formats
|
|
3
|
+
*/
|
|
4
|
+
export function formatRulesForEditor(rules, format) {
|
|
5
|
+
const contents = rules.map((r) => r.content);
|
|
6
|
+
switch (format) {
|
|
7
|
+
case 'markdown':
|
|
8
|
+
return contents.map((rule, i) => `${i + 1}. ${rule}`).join('\n\n');
|
|
9
|
+
case 'text':
|
|
10
|
+
return contents.join('\n\n---\n\n');
|
|
11
|
+
case 'json':
|
|
12
|
+
return JSON.stringify(contents, null, 2);
|
|
13
|
+
default:
|
|
14
|
+
return contents.join('\n\n');
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Validate rule content for common issues
|
|
19
|
+
*/
|
|
20
|
+
export function validateRuleContent(content) {
|
|
21
|
+
const warnings = [];
|
|
22
|
+
if (content.length > 10000) {
|
|
23
|
+
warnings.push('Rule content exceeds 10,000 characters');
|
|
24
|
+
}
|
|
25
|
+
if (content.includes('{{') && !content.includes('}}')) {
|
|
26
|
+
warnings.push('Unclosed variable interpolation');
|
|
27
|
+
}
|
|
28
|
+
if (content.trim().length === 0) {
|
|
29
|
+
warnings.push('Rule content is empty');
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
valid: warnings.length === 0,
|
|
33
|
+
warnings,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Deduplicate rules by normalized content
|
|
38
|
+
*/
|
|
39
|
+
export function deduplicateRules(rules) {
|
|
40
|
+
const seen = new Set();
|
|
41
|
+
return rules.filter((rule) => {
|
|
42
|
+
const normalized = rule.content.trim().toLowerCase();
|
|
43
|
+
if (seen.has(normalized)) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
seen.add(normalized);
|
|
47
|
+
return true;
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Get a summary of merged rules for debugging
|
|
52
|
+
*/
|
|
53
|
+
export function getRulesSummary(merged) {
|
|
54
|
+
const byScope = {}, byActivation = {};
|
|
55
|
+
for (const rule of merged.all) {
|
|
56
|
+
byScope[rule.scope] = (byScope[rule.scope] ?? 0) + 1;
|
|
57
|
+
byActivation[rule.metadata.activation] = (byActivation[rule.metadata.activation] ?? 0) + 1;
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
total: merged.all.length,
|
|
61
|
+
byScope,
|
|
62
|
+
byActivation,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Filter rules by scope
|
|
67
|
+
*/
|
|
68
|
+
export function filterByScope(rules, scope) {
|
|
69
|
+
return rules.filter((r) => r.scope === scope);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get manual rules that can be @mentioned
|
|
73
|
+
*/
|
|
74
|
+
export function getMentionableRules(merged) {
|
|
75
|
+
return merged.manual
|
|
76
|
+
.filter((r) => r.name)
|
|
77
|
+
.map((r) => ({
|
|
78
|
+
name: r.name,
|
|
79
|
+
description: r.metadata.description,
|
|
80
|
+
}));
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/rules/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ensure the npm cache directory exists.
|
|
3
|
+
*/
|
|
4
|
+
export declare function ensureNpmCacheDir(projectRoot: string): Promise<string>;
|
|
5
|
+
/**
|
|
6
|
+
* Clear the npm skills cache.
|
|
7
|
+
* Note: Git skills cache is managed by giget and not cleared here.
|
|
8
|
+
*/
|
|
9
|
+
export declare function clearNpmCache(projectRoot: string): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/skills/cache.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAK5E;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAItE"}
|