specweave 0.4.0 â 0.6.0
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/.claude-plugin/README.md +325 -0
- package/.claude-plugin/marketplace.json +210 -0
- package/CLAUDE.md +1000 -252
- package/README.md +273 -180
- package/bin/install-agents.sh +1 -1
- package/bin/install-commands.sh +66 -14
- package/bin/install-hooks.sh +1 -1
- package/bin/install-skills.sh +1 -1
- package/bin/specweave.js +18 -0
- package/dist/adapters/adapter-base.d.ts +21 -0
- package/dist/adapters/adapter-base.d.ts.map +1 -1
- package/dist/adapters/adapter-base.js +28 -0
- package/dist/adapters/adapter-base.js.map +1 -1
- package/dist/adapters/adapter-interface.d.ts +41 -0
- package/dist/adapters/adapter-interface.d.ts.map +1 -1
- package/dist/adapters/claude/adapter.d.ts +85 -11
- package/dist/adapters/claude/adapter.d.ts.map +1 -1
- package/dist/adapters/claude/adapter.js +305 -37
- package/dist/adapters/claude/adapter.js.map +1 -1
- package/dist/adapters/copilot/adapter.d.ts +45 -2
- package/dist/adapters/copilot/adapter.d.ts.map +1 -1
- package/dist/adapters/copilot/adapter.js +226 -4
- package/dist/adapters/copilot/adapter.js.map +1 -1
- package/dist/adapters/cursor/adapter.d.ts +54 -0
- package/dist/adapters/cursor/adapter.d.ts.map +1 -1
- package/dist/adapters/cursor/adapter.js +192 -0
- package/dist/adapters/cursor/adapter.js.map +1 -1
- package/dist/adapters/generic/adapter.d.ts +43 -0
- package/dist/adapters/generic/adapter.d.ts.map +1 -1
- package/dist/adapters/generic/adapter.js +163 -0
- package/dist/adapters/generic/adapter.js.map +1 -1
- package/dist/cli/commands/init.d.ts +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +392 -123
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/install.d.ts +2 -0
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +28 -25
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/list.d.ts +2 -0
- package/dist/cli/commands/list.d.ts.map +1 -1
- package/dist/cli/commands/list.js +26 -24
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/plugin.d.ts +43 -0
- package/dist/cli/commands/plugin.d.ts.map +1 -0
- package/dist/cli/commands/plugin.js +307 -0
- package/dist/cli/commands/plugin.js.map +1 -0
- package/dist/core/i18n/language-detector.d.ts +29 -0
- package/dist/core/i18n/language-detector.d.ts.map +1 -0
- package/dist/core/i18n/language-detector.js +143 -0
- package/dist/core/i18n/language-detector.js.map +1 -0
- package/dist/core/i18n/language-manager.d.ts +101 -0
- package/dist/core/i18n/language-manager.d.ts.map +1 -0
- package/dist/core/i18n/language-manager.js +232 -0
- package/dist/core/i18n/language-manager.js.map +1 -0
- package/dist/core/i18n/language-registry.d.ts +44 -0
- package/dist/core/i18n/language-registry.d.ts.map +1 -0
- package/dist/core/i18n/language-registry.js +234 -0
- package/dist/core/i18n/language-registry.js.map +1 -0
- package/dist/core/i18n/locale-manager.d.ts +62 -0
- package/dist/core/i18n/locale-manager.d.ts.map +1 -0
- package/dist/core/i18n/locale-manager.js +137 -0
- package/dist/core/i18n/locale-manager.js.map +1 -0
- package/dist/core/i18n/system-prompt-injector.d.ts +33 -0
- package/dist/core/i18n/system-prompt-injector.d.ts.map +1 -0
- package/dist/core/i18n/system-prompt-injector.js +131 -0
- package/dist/core/i18n/system-prompt-injector.js.map +1 -0
- package/dist/core/i18n/types.d.ts +151 -0
- package/dist/core/i18n/types.d.ts.map +1 -0
- package/dist/core/i18n/types.js +11 -0
- package/dist/core/i18n/types.js.map +1 -0
- package/dist/core/increment-status.d.ts +72 -0
- package/dist/core/increment-status.d.ts.map +1 -0
- package/dist/core/increment-status.js +227 -0
- package/dist/core/increment-status.js.map +1 -0
- package/dist/core/plugin-detector.d.ts +96 -0
- package/dist/core/plugin-detector.d.ts.map +1 -0
- package/dist/core/plugin-detector.js +349 -0
- package/dist/core/plugin-detector.js.map +1 -0
- package/dist/core/plugin-loader.d.ts +131 -0
- package/dist/core/plugin-loader.d.ts.map +1 -0
- package/dist/core/plugin-loader.js +421 -0
- package/dist/core/plugin-loader.js.map +1 -0
- package/dist/core/plugin-manager.d.ts +144 -0
- package/dist/core/plugin-manager.d.ts.map +1 -0
- package/dist/core/plugin-manager.js +393 -0
- package/dist/core/plugin-manager.js.map +1 -0
- package/dist/core/schemas/plugin-manifest.schema.json +253 -0
- package/dist/core/types/config.d.ts +51 -0
- package/dist/core/types/config.d.ts.map +1 -0
- package/dist/core/types/config.js +21 -0
- package/dist/core/types/config.js.map +1 -0
- package/dist/core/types/plugin.d.ts +283 -0
- package/dist/core/types/plugin.d.ts.map +1 -0
- package/dist/core/types/plugin.js +49 -0
- package/dist/core/types/plugin.js.map +1 -0
- package/dist/hooks/lib/sync-living-docs.d.ts +27 -0
- package/dist/hooks/lib/sync-living-docs.d.ts.map +1 -0
- package/dist/hooks/lib/sync-living-docs.js +116 -0
- package/dist/hooks/lib/sync-living-docs.js.map +1 -0
- package/dist/hooks/lib/translate-living-docs.d.ts +13 -0
- package/dist/hooks/lib/translate-living-docs.d.ts.map +1 -0
- package/dist/hooks/lib/translate-living-docs.js +166 -0
- package/dist/hooks/lib/translate-living-docs.js.map +1 -0
- package/dist/hooks/lib/update-tasks-md.d.ts +29 -0
- package/dist/hooks/lib/update-tasks-md.d.ts.map +1 -0
- package/dist/hooks/lib/update-tasks-md.js +203 -0
- package/dist/hooks/lib/update-tasks-md.js.map +1 -0
- package/dist/integrations/jira/jira-incremental-mapper.js.map +1 -1
- package/dist/integrations/jira/jira-mapper.d.ts +2 -2
- package/dist/integrations/jira/jira-mapper.js +2 -2
- package/dist/integrations/jira/jira-mapper.js.map +1 -1
- package/dist/locales/de/.gitkeep +0 -0
- package/dist/locales/de/cli.json +108 -0
- package/dist/locales/en/cli.json +269 -0
- package/dist/locales/en/errors.json +7 -0
- package/dist/locales/en/templates.json +6 -0
- package/dist/locales/es/.gitkeep +0 -0
- package/dist/locales/es/cli.json +41 -0
- package/dist/locales/fr/.gitkeep +0 -0
- package/dist/locales/fr/cli.json +108 -0
- package/dist/locales/ja/.gitkeep +0 -0
- package/dist/locales/ja/cli.json +108 -0
- package/dist/locales/ko/.gitkeep +0 -0
- package/dist/locales/ko/cli.json +108 -0
- package/dist/locales/pt/.gitkeep +0 -0
- package/dist/locales/pt/cli.json +108 -0
- package/dist/locales/ru/.gitkeep +0 -0
- package/dist/locales/ru/cli.json +269 -0
- package/dist/locales/zh/.gitkeep +0 -0
- package/dist/locales/zh/cli.json +108 -0
- package/dist/plugins/specweave-github/lib/github-client.d.ts +86 -0
- package/dist/plugins/specweave-github/lib/github-client.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/github-client.js +275 -0
- package/dist/plugins/specweave-github/lib/github-client.js.map +1 -0
- package/dist/plugins/specweave-github/lib/index.d.ts +10 -0
- package/dist/plugins/specweave-github/lib/index.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/index.js +10 -0
- package/dist/plugins/specweave-github/lib/index.js.map +1 -0
- package/dist/plugins/specweave-github/lib/subtask-sync.d.ts +51 -0
- package/dist/plugins/specweave-github/lib/subtask-sync.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/subtask-sync.js +147 -0
- package/dist/plugins/specweave-github/lib/subtask-sync.js.map +1 -0
- package/dist/plugins/specweave-github/lib/task-parser.d.ts +37 -0
- package/dist/plugins/specweave-github/lib/task-parser.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/task-parser.js +211 -0
- package/dist/plugins/specweave-github/lib/task-parser.js.map +1 -0
- package/dist/plugins/specweave-github/lib/task-sync.d.ts +51 -0
- package/dist/plugins/specweave-github/lib/task-sync.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/task-sync.js +332 -0
- package/dist/plugins/specweave-github/lib/task-sync.js.map +1 -0
- package/dist/plugins/specweave-github/lib/types.d.ts +80 -0
- package/dist/plugins/specweave-github/lib/types.d.ts.map +1 -0
- package/dist/plugins/specweave-github/lib/types.js +5 -0
- package/dist/plugins/specweave-github/lib/types.js.map +1 -0
- package/dist/utils/agents-md-compiler.d.ts +68 -0
- package/dist/utils/agents-md-compiler.d.ts.map +1 -0
- package/dist/utils/agents-md-compiler.js +420 -0
- package/dist/utils/agents-md-compiler.js.map +1 -0
- package/dist/utils/generate-skills-index.js +4 -4
- package/dist/utils/generate-skills-index.js.map +1 -1
- package/package.json +24 -21
- package/plugins/specweave-ado/.claude-plugin/plugin.json +8 -0
- package/plugins/specweave-alternatives/.claude-plugin/plugin.json +8 -0
- package/plugins/specweave-alternatives/skills/bmad-method-expert/SKILL.md +626 -0
- package/plugins/specweave-alternatives/skills/bmad-method-expert/scripts/analyze-project.js +318 -0
- package/plugins/specweave-alternatives/skills/bmad-method-expert/scripts/check-setup.js +208 -0
- package/plugins/specweave-alternatives/skills/bmad-method-expert/scripts/generate-template.js +1149 -0
- package/plugins/specweave-alternatives/skills/bmad-method-expert/scripts/validate-documents.js +340 -0
- package/plugins/specweave-alternatives/skills/spec-kit-expert/SKILL.md +1010 -0
- package/plugins/specweave-backend/.claude-plugin/plugin.json +8 -0
- package/plugins/specweave-core/.claude-plugin/plugin.json +25 -0
- package/{src â plugins/specweave-core}/agents/pm/AGENT.md +80 -0
- package/plugins/specweave-core/agents/translator/AGENT.md +282 -0
- package/{src â plugins/specweave-core}/commands/README.md +11 -11
- package/{src â plugins/specweave-core}/commands/specweave.costs.md +7 -7
- package/{src â plugins/specweave-core}/commands/specweave.do.md +34 -7
- package/{src â plugins/specweave-core}/commands/specweave.increment.md +131 -22
- package/{src â plugins/specweave-core}/commands/specweave.md +49 -17
- package/{src â plugins/specweave-core}/commands/specweave.sync-docs.md +5 -5
- package/plugins/specweave-core/commands/specweave.translate.md +425 -0
- package/{src â plugins/specweave-core}/commands/specweave.validate.md +1 -1
- package/plugins/specweave-core/hooks/hooks.json +13 -0
- package/plugins/specweave-core/hooks/post-increment-plugin-detect.sh +142 -0
- package/plugins/specweave-core/hooks/post-task-completion.sh +265 -0
- package/plugins/specweave-core/hooks/pre-task-plugin-detect.sh +96 -0
- package/plugins/specweave-core/skills/SKILLS-INDEX.md +229 -0
- package/{src â plugins/specweave-core}/skills/brownfield-analyzer/SKILL.md +66 -24
- package/{src â plugins/specweave-core}/skills/context-loader/SKILL.md +1 -1
- package/plugins/specweave-core/skills/context-optimizer/SKILL.md +588 -0
- package/plugins/specweave-core/skills/docs-updater/SKILL.md +0 -0
- package/{src â plugins/specweave-core}/skills/increment-planner/SKILL.md +81 -4
- package/plugins/specweave-core/skills/plugin-detector/SKILL.md +211 -0
- package/{src â plugins/specweave-core}/skills/project-kickstarter/SKILL.md +7 -7
- package/plugins/specweave-core/skills/rfc-generator/SKILL.md +369 -0
- package/{src â plugins/specweave-core}/skills/specweave-detector/SKILL.md +2 -2
- package/plugins/specweave-core/skills/specweave-framework/SKILL.md +498 -0
- package/plugins/specweave-core/skills/specweave-framework/test-cases/test-1-increment-naming.yaml +11 -0
- package/plugins/specweave-core/skills/specweave-framework/test-cases/test-2-source-of-truth.yaml +11 -0
- package/plugins/specweave-core/skills/specweave-framework/test-cases/test-3-increment-discipline.yaml +12 -0
- package/plugins/specweave-core/skills/specweave-framework/test-cases/test-4-file-placement.yaml +11 -0
- package/{src â plugins/specweave-core}/skills/tdd-workflow/SKILL.md +20 -20
- package/plugins/specweave-core/skills/translator/SKILL.md +172 -0
- package/plugins/specweave-cost-optimizer/.claude-plugin/plugin.json +8 -0
- package/plugins/specweave-diagrams/.claude-plugin/plugin.json +8 -0
- package/plugins/specweave-docs/.claude-plugin/plugin.json +8 -0
- package/plugins/specweave-docs/skills/docusaurus/SKILL.md +526 -0
- package/plugins/specweave-figma/.claude-plugin/.mcp.json +12 -0
- package/plugins/specweave-figma/.claude-plugin/plugin.json +8 -0
- package/plugins/specweave-figma/ARCHITECTURE.md +453 -0
- package/plugins/specweave-figma/README.md +728 -0
- package/plugins/specweave-figma/skills/figma-to-code/SKILL.md +632 -0
- package/plugins/specweave-figma/skills/figma-to-code/test-1-token-generation.yaml +29 -0
- package/plugins/specweave-figma/skills/figma-to-code/test-2-component-generation.yaml +27 -0
- package/plugins/specweave-figma/skills/figma-to-code/test-3-typescript-generation.yaml +28 -0
- package/plugins/specweave-frontend/.claude-plugin/plugin.json +8 -0
- package/plugins/specweave-github/.claude-plugin/plugin.json +8 -0
- package/plugins/specweave-github/agents/github-manager/AGENT.md +651 -0
- package/plugins/specweave-github/commands/github-close-issue.md +418 -0
- package/plugins/specweave-github/commands/github-create-issue.md +307 -0
- package/plugins/specweave-github/commands/github-status.md +533 -0
- package/plugins/specweave-github/commands/github-sync-tasks.md +530 -0
- package/plugins/specweave-github/commands/github-sync.md +443 -0
- package/plugins/specweave-github/lib/github-client.ts +330 -0
- package/plugins/specweave-github/lib/index.ts +10 -0
- package/plugins/specweave-github/lib/subtask-sync.ts +225 -0
- package/plugins/specweave-github/lib/task-parser.ts +246 -0
- package/plugins/specweave-github/lib/task-sync.ts +402 -0
- package/plugins/specweave-github/lib/types.ts +86 -0
- package/plugins/specweave-github/skills/github-issue-tracker/SKILL.md +497 -0
- package/plugins/specweave-github/skills/github-sync/SKILL.md +461 -0
- package/plugins/specweave-infrastructure/.claude-plugin/plugin.json +8 -0
- package/plugins/specweave-jira/.claude-plugin/plugin.json +8 -0
- package/{src â plugins/specweave-jira}/commands/specweave.sync-jira.md +18 -18
- package/plugins/specweave-kubernetes/.claude-plugin/plugin.json +8 -0
- package/plugins/specweave-ml/.claude-plugin/plugin.json +39 -0
- package/plugins/specweave-ml/README.md +885 -0
- package/plugins/specweave-ml/agents/ml-engineer/AGENT.md +402 -0
- package/plugins/specweave-ml/commands/ml-deploy.md +116 -0
- package/plugins/specweave-ml/commands/ml-evaluate.md +87 -0
- package/plugins/specweave-ml/commands/ml-explain.md +83 -0
- package/plugins/specweave-ml/skills/anomaly-detector/SKILL.md +559 -0
- package/plugins/specweave-ml/skills/automl-optimizer/SKILL.md +485 -0
- package/plugins/specweave-ml/skills/cv-pipeline-builder/SKILL.md +157 -0
- package/plugins/specweave-ml/skills/data-visualizer/SKILL.md +521 -0
- package/plugins/specweave-ml/skills/experiment-tracker/SKILL.md +535 -0
- package/plugins/specweave-ml/skills/feature-engineer/SKILL.md +566 -0
- package/plugins/specweave-ml/skills/ml-deployment-helper/SKILL.md +345 -0
- package/plugins/specweave-ml/skills/ml-pipeline-orchestrator/SKILL.md +518 -0
- package/plugins/specweave-ml/skills/model-evaluator/SKILL.md +155 -0
- package/plugins/specweave-ml/skills/model-explainer/SKILL.md +227 -0
- package/plugins/specweave-ml/skills/model-registry/SKILL.md +541 -0
- package/plugins/specweave-ml/skills/nlp-pipeline-builder/SKILL.md +180 -0
- package/plugins/specweave-ml/skills/time-series-forecaster/SKILL.md +569 -0
- package/plugins/specweave-payments/.claude-plugin/plugin.json +8 -0
- package/plugins/specweave-testing/.claude-plugin/plugin.json +8 -0
- package/plugins/specweave-tooling/.claude-plugin/plugin.json +8 -0
- package/plugins/specweave-ui/.claude-plugin/plugin.json +106 -0
- package/plugins/specweave-ui/.mcp.json +14 -0
- package/plugins/specweave-ui/README.md +386 -0
- package/src/adapters/adapter-base.ts +33 -0
- package/src/adapters/adapter-interface.ts +46 -0
- package/src/adapters/claude/adapter.ts +350 -39
- package/src/adapters/copilot/adapter.ts +267 -4
- package/src/adapters/cursor/adapter.ts +229 -0
- package/src/adapters/generic/adapter.ts +196 -0
- package/src/templates/AGENTS.md.template +170 -1
- package/src/templates/CLAUDE.md.template +122 -24
- package/src/templates/tasks.md.template +261 -0
- package/src/agents/ml-engineer/AGENT.md +0 -150
- package/src/commands/specweave.sync-github.md +0 -269
- package/src/hooks/post-task-completion.sh +0 -79
- package/src/skills/SKILLS-INDEX.md +0 -444
- package/src/skills/github-sync/SKILL.md +0 -234
- /package/{src â plugins/specweave-ado}/skills/ado-sync/README.md +0 -0
- /package/{src â plugins/specweave-ado}/skills/ado-sync/SKILL.md +0 -0
- /package/{src â plugins/specweave-ado}/skills/specweave-ado-mapper/SKILL.md +0 -0
- /package/{src â plugins/specweave-backend}/agents/database-optimizer/AGENT.md +0 -0
- /package/{src â plugins/specweave-backend}/skills/dotnet-backend/SKILL.md +0 -0
- /package/{src â plugins/specweave-backend}/skills/nodejs-backend/SKILL.md +0 -0
- /package/{src â plugins/specweave-backend}/skills/python-backend/SKILL.md +0 -0
- /package/{src â plugins/specweave-core}/agents/architect/AGENT.md +0 -0
- /package/{src â plugins/specweave-core}/agents/code-reviewer.md +0 -0
- /package/{src â plugins/specweave-core}/agents/docs-writer/AGENT.md +0 -0
- /package/{src â plugins/specweave-core}/agents/performance/AGENT.md +0 -0
- /package/{src â plugins/specweave-core}/agents/qa-lead/AGENT.md +0 -0
- /package/{src â plugins/specweave-core}/agents/security/AGENT.md +0 -0
- /package/{src â plugins/specweave-core}/agents/tdd-orchestrator/AGENT.md +0 -0
- /package/{src â plugins/specweave-core}/agents/tech-lead/AGENT.md +0 -0
- /package/{src â plugins/specweave-core}/commands/specweave.done.md +0 -0
- /package/{src â plugins/specweave-core}/commands/specweave.inc.md +0 -0
- /package/{src â plugins/specweave-core}/commands/specweave.list-increments.md +0 -0
- /package/{src â plugins/specweave-core}/commands/specweave.next.md +0 -0
- /package/{src â plugins/specweave-core}/commands/specweave.progress.md +0 -0
- /package/{src â plugins/specweave-core}/commands/specweave.tdd-cycle.md +0 -0
- /package/{src â plugins/specweave-core}/commands/specweave.tdd-green.md +0 -0
- /package/{src â plugins/specweave-core}/commands/specweave.tdd-red.md +0 -0
- /package/{src â plugins/specweave-core}/commands/specweave.tdd-refactor.md +0 -0
- /package/{src â plugins/specweave-core}/hooks/README.md +0 -0
- /package/{src â plugins/specweave-core}/hooks/docs-changed.sh +0 -0
- /package/{src â plugins/specweave-core}/hooks/human-input-required.sh +0 -0
- /package/{src â plugins/specweave-core}/hooks/pre-implementation.sh +0 -0
- /package/{src â plugins/specweave-core}/skills/brownfield-onboarder/SKILL.md +0 -0
- /package/{src â plugins/specweave-core}/skills/docs-updater/README.md +0 -0
- /package/{src â plugins/specweave-core}/skills/increment-planner/scripts/feature-utils.js +0 -0
- /package/{src â plugins/specweave-core}/skills/increment-quality-judge/SKILL.md +0 -0
- /package/{src â plugins/specweave-core}/skills/project-kickstarter/test-cases/test-1-high-confidence-full-product.yaml +0 -0
- /package/{src â plugins/specweave-core}/skills/project-kickstarter/test-cases/test-2-medium-confidence-partial.yaml +0 -0
- /package/{src â plugins/specweave-core}/skills/project-kickstarter/test-cases/test-3-low-confidence-technical-question.yaml +0 -0
- /package/{src â plugins/specweave-core}/skills/project-kickstarter/test-cases/test-4-opt-out-explicit.yaml +0 -0
- /package/{src â plugins/specweave-core}/skills/role-orchestrator/README.md +0 -0
- /package/{src â plugins/specweave-core}/skills/role-orchestrator/SKILL.md +0 -0
- /package/{src â plugins/specweave-core}/skills/task-builder/README.md +0 -0
- /package/{src â plugins/specweave-cost-optimizer}/skills/cost-optimizer/SKILL.md +0 -0
- /package/{src â plugins/specweave-diagrams}/agents/diagrams-architect/AGENT.md +0 -0
- /package/{src â plugins/specweave-diagrams}/agents/diagrams-architect/templates/c4-component-template.mmd +0 -0
- /package/{src â plugins/specweave-diagrams}/agents/diagrams-architect/templates/c4-container-template.mmd +0 -0
- /package/{src â plugins/specweave-diagrams}/agents/diagrams-architect/templates/c4-context-template.mmd +0 -0
- /package/{src â plugins/specweave-diagrams}/agents/diagrams-architect/templates/deployment-template.mmd +0 -0
- /package/{src â plugins/specweave-diagrams}/agents/diagrams-architect/templates/er-diagram-template.mmd +0 -0
- /package/{src â plugins/specweave-diagrams}/agents/diagrams-architect/templates/sequence-template.mmd +0 -0
- /package/{src â plugins/specweave-diagrams}/agents/diagrams-architect/test-cases/test-1-c4-context.yaml +0 -0
- /package/{src â plugins/specweave-diagrams}/agents/diagrams-architect/test-cases/test-2-sequence.yaml +0 -0
- /package/{src â plugins/specweave-diagrams}/agents/diagrams-architect/test-cases/test-3-er-diagram.yaml +0 -0
- /package/{src â plugins/specweave-diagrams}/skills/diagrams-architect/SKILL.md +0 -0
- /package/{src â plugins/specweave-diagrams}/skills/diagrams-generator/SKILL.md +0 -0
- /package/{src â plugins/specweave-docs}/skills/spec-driven-brainstorming/README.md +0 -0
- /package/{src â plugins/specweave-docs}/skills/spec-driven-brainstorming/SKILL.md +0 -0
- /package/{src â plugins/specweave-docs}/skills/spec-driven-debugging/README.md +0 -0
- /package/{src â plugins/specweave-docs}/skills/spec-driven-debugging/SKILL.md +0 -0
- /package/{src â plugins/specweave-frontend}/skills/design-system-architect/SKILL.md +0 -0
- /package/{src â plugins/specweave-frontend}/skills/frontend/SKILL.md +0 -0
- /package/{src â plugins/specweave-frontend}/skills/nextjs/SKILL.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/devops/AGENT.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/network-engineer/AGENT.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/observability-engineer/AGENT.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/performance-engineer/AGENT.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/sre/AGENT.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/sre/modules/backend-diagnostics.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/sre/modules/database-diagnostics.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/sre/modules/infrastructure.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/sre/modules/monitoring.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/sre/modules/security-incidents.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/sre/modules/ui-diagnostics.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/sre/playbooks/01-high-cpu-usage.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/sre/playbooks/02-database-deadlock.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/sre/playbooks/03-memory-leak.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/sre/playbooks/04-slow-api-response.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/sre/playbooks/05-ddos-attack.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/sre/playbooks/06-disk-full.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/sre/playbooks/07-service-down.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/sre/playbooks/08-data-corruption.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/sre/playbooks/09-cascade-failure.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/sre/playbooks/10-rate-limit-exceeded.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/sre/scripts/health-check.sh +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/sre/scripts/log-analyzer.py +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/sre/scripts/metrics-collector.sh +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/sre/scripts/trace-analyzer.js +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/sre/templates/incident-report.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/sre/templates/mitigation-plan.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/sre/templates/post-mortem.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/agents/sre/templates/runbook-template.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/commands/specweave.monitor-setup.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/commands/specweave.slo-implement.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/skills/distributed-tracing/SKILL.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/skills/grafana-dashboards/SKILL.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/skills/hetzner-provisioner/README.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/skills/hetzner-provisioner/SKILL.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/skills/prometheus-configuration/SKILL.md +0 -0
- /package/{src â plugins/specweave-infrastructure}/skills/slo-implementation/SKILL.md +0 -0
- /package/{src â plugins/specweave-jira}/skills/jira-sync/README.md +0 -0
- /package/{src â plugins/specweave-jira}/skills/jira-sync/SKILL.md +0 -0
- /package/{src â plugins/specweave-jira}/skills/specweave-jira-mapper/SKILL.md +0 -0
- /package/{src â plugins/specweave-kubernetes}/agents/kubernetes-architect/AGENT.md +0 -0
- /package/{src â plugins/specweave-kubernetes}/skills/gitops-workflow/SKILL.md +0 -0
- /package/{src â plugins/specweave-kubernetes}/skills/gitops-workflow/references/argocd-setup.md +0 -0
- /package/{src â plugins/specweave-kubernetes}/skills/gitops-workflow/references/sync-policies.md +0 -0
- /package/{src â plugins/specweave-kubernetes}/skills/helm-chart-scaffolding/SKILL.md +0 -0
- /package/{src â plugins/specweave-kubernetes}/skills/helm-chart-scaffolding/assets/Chart.yaml.template +0 -0
- /package/{src â plugins/specweave-kubernetes}/skills/helm-chart-scaffolding/assets/values.yaml.template +0 -0
- /package/{src â plugins/specweave-kubernetes}/skills/helm-chart-scaffolding/references/chart-structure.md +0 -0
- /package/{src â plugins/specweave-kubernetes}/skills/helm-chart-scaffolding/scripts/validate-chart.sh +0 -0
- /package/{src â plugins/specweave-kubernetes}/skills/k8s-manifest-generator/SKILL.md +0 -0
- /package/{src â plugins/specweave-kubernetes}/skills/k8s-manifest-generator/assets/configmap-template.yaml +0 -0
- /package/{src â plugins/specweave-kubernetes}/skills/k8s-manifest-generator/assets/deployment-template.yaml +0 -0
- /package/{src â plugins/specweave-kubernetes}/skills/k8s-manifest-generator/assets/service-template.yaml +0 -0
- /package/{src â plugins/specweave-kubernetes}/skills/k8s-manifest-generator/references/deployment-spec.md +0 -0
- /package/{src â plugins/specweave-kubernetes}/skills/k8s-manifest-generator/references/service-spec.md +0 -0
- /package/{src â plugins/specweave-kubernetes}/skills/k8s-security-policies/SKILL.md +0 -0
- /package/{src â plugins/specweave-kubernetes}/skills/k8s-security-policies/assets/network-policy-template.yaml +0 -0
- /package/{src â plugins/specweave-kubernetes}/skills/k8s-security-policies/references/rbac-patterns.md +0 -0
- /package/{src â plugins/specweave-ml}/agents/data-scientist/AGENT.md +0 -0
- /package/{src â plugins/specweave-ml}/agents/mlops-engineer/AGENT.md +0 -0
- /package/{src â plugins/specweave-ml}/commands/specweave.ml-pipeline.md +0 -0
- /package/{src â plugins/specweave-ml}/skills/ml-pipeline-workflow/SKILL.md +0 -0
- /package/{src â plugins/specweave-payments}/agents/payment-integration/AGENT.md +0 -0
- /package/{src â plugins/specweave-payments}/skills/billing-automation/SKILL.md +0 -0
- /package/{src â plugins/specweave-payments}/skills/paypal-integration/SKILL.md +0 -0
- /package/{src â plugins/specweave-payments}/skills/pci-compliance/SKILL.md +0 -0
- /package/{src â plugins/specweave-payments}/skills/stripe-integration/SKILL.md +0 -0
- /package/{src â plugins/specweave-testing}/skills/e2e-playwright/README.md +0 -0
- /package/{src â plugins/specweave-testing}/skills/e2e-playwright/SKILL.md +0 -0
- /package/{src â plugins/specweave-testing}/skills/e2e-playwright/execute.js +0 -0
- /package/{src â plugins/specweave-testing}/skills/e2e-playwright/lib/utils.js +0 -0
- /package/{src â plugins/specweave-testing}/skills/e2e-playwright/package.json +0 -0
- /package/{src â plugins/specweave-tooling}/skills/skill-creator/LICENSE.txt +0 -0
- /package/{src â plugins/specweave-tooling}/skills/skill-creator/SKILL.md +0 -0
- /package/{src â plugins/specweave-tooling}/skills/skill-creator/scripts/init_skill.py +0 -0
- /package/{src â plugins/specweave-tooling}/skills/skill-creator/scripts/package_skill.py +0 -0
- /package/{src â plugins/specweave-tooling}/skills/skill-creator/scripts/quick_validate.py +0 -0
- /package/{src â plugins/specweave-tooling}/skills/skill-router/SKILL.md +0 -0
|
@@ -2,11 +2,15 @@
|
|
|
2
2
|
* GitHub Copilot Adapter
|
|
3
3
|
*
|
|
4
4
|
* Basic automation adapter for GitHub Copilot.
|
|
5
|
-
*
|
|
5
|
+
* Compiles SpecWeave plugins to AGENTS.md (universal standard) for context and suggestions.
|
|
6
6
|
*
|
|
7
|
-
* This adapter
|
|
7
|
+
* This adapter compiles skills, agents, and commands into AGENTS.md format.
|
|
8
8
|
*/
|
|
9
|
+
import * as path from 'path';
|
|
10
|
+
import fs from 'fs-extra';
|
|
9
11
|
import { AdapterBase } from '../adapter-base.js';
|
|
12
|
+
import { compileToAgentsMd, getSpecweaveInstallPath } from '../../utils/agents-md-compiler.js';
|
|
13
|
+
import { getSystemPromptForLanguage } from '../../core/i18n/language-manager.js';
|
|
10
14
|
export class CopilotAdapter extends AdapterBase {
|
|
11
15
|
constructor() {
|
|
12
16
|
super(...arguments);
|
|
@@ -40,8 +44,65 @@ export class CopilotAdapter extends AdapterBase {
|
|
|
40
44
|
*/
|
|
41
45
|
async install(options) {
|
|
42
46
|
console.log('\nđŚ Configuring GitHub Copilot (Basic Automation)\n');
|
|
43
|
-
//
|
|
44
|
-
|
|
47
|
+
// 1. Create .specweave/ structure
|
|
48
|
+
const specweaveDir = path.join(options.projectPath, '.specweave');
|
|
49
|
+
await fs.ensureDir(specweaveDir);
|
|
50
|
+
await fs.ensureDir(path.join(specweaveDir, 'increments'));
|
|
51
|
+
await fs.ensureDir(path.join(specweaveDir, 'increments', '_backlog'));
|
|
52
|
+
await fs.ensureDir(path.join(specweaveDir, 'docs', 'internal', 'strategy'));
|
|
53
|
+
await fs.ensureDir(path.join(specweaveDir, 'docs', 'internal', 'architecture', 'adr'));
|
|
54
|
+
await fs.ensureDir(path.join(specweaveDir, 'docs', 'internal', 'architecture', 'rfc'));
|
|
55
|
+
await fs.ensureDir(path.join(specweaveDir, 'docs', 'internal', 'architecture', 'diagrams'));
|
|
56
|
+
await fs.ensureDir(path.join(specweaveDir, 'docs', 'internal', 'delivery'));
|
|
57
|
+
await fs.ensureDir(path.join(specweaveDir, 'docs', 'public', 'guides'));
|
|
58
|
+
await fs.ensureDir(path.join(specweaveDir, 'logs'));
|
|
59
|
+
console.log('â
Created .specweave/ structure');
|
|
60
|
+
// 2. Find SpecWeave installation
|
|
61
|
+
let specweavePath;
|
|
62
|
+
try {
|
|
63
|
+
specweavePath = getSpecweaveInstallPath();
|
|
64
|
+
console.log(`â
Found SpecWeave installation at: ${specweavePath}`);
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
console.error('â Could not find SpecWeave installation');
|
|
68
|
+
console.error(' Make sure SpecWeave is installed: npm install -g specweave');
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
// 3. Compile plugins to AGENTS.md
|
|
72
|
+
console.log('đ Compiling plugins to AGENTS.md...');
|
|
73
|
+
const result = await compileToAgentsMd(specweavePath);
|
|
74
|
+
// 4. Write AGENTS.md
|
|
75
|
+
const agentsMdPath = path.join(options.projectPath, 'AGENTS.md');
|
|
76
|
+
await fs.writeFile(agentsMdPath, result.agentsMd, 'utf-8');
|
|
77
|
+
console.log('â
Created AGENTS.md with:');
|
|
78
|
+
console.log(` - ${result.skills.length} skills`);
|
|
79
|
+
console.log(` - ${result.agents.length} agents`);
|
|
80
|
+
console.log(` - ${result.commands.length} commands`);
|
|
81
|
+
// 5. Create .github/copilot/instructions.md (optional)
|
|
82
|
+
const copilotDir = path.join(options.projectPath, '.github', 'copilot');
|
|
83
|
+
await fs.ensureDir(copilotDir);
|
|
84
|
+
const instructionsContent = `# GitHub Copilot Instructions
|
|
85
|
+
|
|
86
|
+
This project uses SpecWeave for spec-driven development.
|
|
87
|
+
|
|
88
|
+
## Important Context
|
|
89
|
+
|
|
90
|
+
- **AGENTS.md**: Complete workflow guide (read this first!)
|
|
91
|
+
- **Structure**: All work happens in \`.specweave/increments/\`
|
|
92
|
+
- **Workflow**: spec.md â plan.md â tasks.md â tests.md
|
|
93
|
+
|
|
94
|
+
## When Suggesting Code
|
|
95
|
+
|
|
96
|
+
- Follow patterns in AGENTS.md
|
|
97
|
+
- Create files in increment folders, not project root
|
|
98
|
+
- Reference existing specs and plans
|
|
99
|
+
- Follow naming conventions (kebab-case for increments)
|
|
100
|
+
|
|
101
|
+
See AGENTS.md for complete details.
|
|
102
|
+
`;
|
|
103
|
+
await fs.writeFile(path.join(copilotDir, 'instructions.md'), instructionsContent, 'utf-8');
|
|
104
|
+
console.log('â
Created .github/copilot/instructions.md');
|
|
105
|
+
console.log('\nâ
Copilot will automatically read AGENTS.md');
|
|
45
106
|
}
|
|
46
107
|
/**
|
|
47
108
|
* Post-installation instructions
|
|
@@ -170,5 +231,166 @@ Note: For better automation, consider Claude Code (full) or Cursor (semi).
|
|
|
170
231
|
Copilot is best for simple projects or when already using VS Code + Copilot.
|
|
171
232
|
`;
|
|
172
233
|
}
|
|
234
|
+
/**
|
|
235
|
+
* Check if Copilot adapter supports plugins
|
|
236
|
+
*
|
|
237
|
+
* Copilot has plugin support via AGENTS.md compilation (same as Cursor)
|
|
238
|
+
*
|
|
239
|
+
* @returns boolean True for Copilot
|
|
240
|
+
*/
|
|
241
|
+
supportsPlugins() {
|
|
242
|
+
return true;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Read language configuration from project config
|
|
246
|
+
*
|
|
247
|
+
* @returns Language setting from config, defaults to 'en'
|
|
248
|
+
*/
|
|
249
|
+
async getLanguageConfig() {
|
|
250
|
+
const projectPath = process.cwd();
|
|
251
|
+
const configPath = path.join(projectPath, '.specweave', 'config.json');
|
|
252
|
+
if (!(await fs.pathExists(configPath))) {
|
|
253
|
+
return 'en'; // Default to English if no config
|
|
254
|
+
}
|
|
255
|
+
try {
|
|
256
|
+
const config = await fs.readJson(configPath);
|
|
257
|
+
return config.language || 'en';
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
console.warn('â ď¸ Could not read language from config, defaulting to English');
|
|
261
|
+
return 'en';
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Inject system prompt for non-English languages
|
|
266
|
+
*
|
|
267
|
+
* Prepends language instruction to markdown content if language !== 'en'
|
|
268
|
+
*
|
|
269
|
+
* @param content Original markdown content
|
|
270
|
+
* @param language Target language
|
|
271
|
+
* @returns Modified content with system prompt (or unchanged if English)
|
|
272
|
+
*/
|
|
273
|
+
injectSystemPrompt(content, language) {
|
|
274
|
+
if (language === 'en') {
|
|
275
|
+
return content; // No changes for English - preserve default behavior
|
|
276
|
+
}
|
|
277
|
+
// Get system prompt for target language
|
|
278
|
+
const systemPrompt = getSystemPromptForLanguage(language);
|
|
279
|
+
// For AGENTS.md compilation, inject at the beginning of the content
|
|
280
|
+
return `${systemPrompt}\n\n${content}`;
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Compile and install a plugin for Copilot
|
|
284
|
+
*
|
|
285
|
+
* Copilot uses AGENTS.md compilation (same as Cursor)
|
|
286
|
+
*
|
|
287
|
+
* NEW: Injects system prompts for non-English languages
|
|
288
|
+
*
|
|
289
|
+
* @param plugin Plugin to install
|
|
290
|
+
*/
|
|
291
|
+
async compilePlugin(plugin) {
|
|
292
|
+
const projectPath = process.cwd();
|
|
293
|
+
const agentsMdPath = path.join(projectPath, 'AGENTS.md');
|
|
294
|
+
console.log(`\nđŚ Compiling plugin for Copilot: ${plugin.manifest.name}`);
|
|
295
|
+
// Get language configuration for system prompt injection
|
|
296
|
+
const language = await this.getLanguageConfig();
|
|
297
|
+
if (language !== 'en') {
|
|
298
|
+
console.log(` đ Language: ${language} (system prompts will be injected)`);
|
|
299
|
+
}
|
|
300
|
+
if (!(await fs.pathExists(agentsMdPath))) {
|
|
301
|
+
throw new Error('AGENTS.md not found. Run specweave init first.');
|
|
302
|
+
}
|
|
303
|
+
let agentsMd = await fs.readFile(agentsMdPath, 'utf-8');
|
|
304
|
+
const pluginMarker = `<!-- Plugin: ${plugin.manifest.name} -->`;
|
|
305
|
+
if (agentsMd.includes(pluginMarker)) {
|
|
306
|
+
console.log(` âšď¸ Plugin ${plugin.manifest.name} already compiled to AGENTS.md`);
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
let pluginSection = `\n\n${pluginMarker}\n\n`;
|
|
310
|
+
pluginSection += `# Plugin: ${plugin.manifest.name}\n\n`;
|
|
311
|
+
pluginSection += `${plugin.manifest.description}\n\n`;
|
|
312
|
+
if (plugin.skills.length > 0) {
|
|
313
|
+
pluginSection += `## Skills\n\n`;
|
|
314
|
+
for (const skill of plugin.skills) {
|
|
315
|
+
const skillContent = await fs.readFile(path.join(skill.path, 'SKILL.md'), 'utf-8');
|
|
316
|
+
const contentWithoutFrontmatter = skillContent.replace(/^---\n[\s\S]+?\n---\n/, '');
|
|
317
|
+
// Inject system prompt if needed
|
|
318
|
+
const modifiedContent = this.injectSystemPrompt(contentWithoutFrontmatter, language);
|
|
319
|
+
pluginSection += `### ${skill.name}\n\n${modifiedContent}\n\n`;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
if (plugin.agents.length > 0) {
|
|
323
|
+
pluginSection += `## Agents\n\n`;
|
|
324
|
+
for (const agent of plugin.agents) {
|
|
325
|
+
const agentContent = await fs.readFile(path.join(agent.path, 'AGENT.md'), 'utf-8');
|
|
326
|
+
// Inject system prompt if needed
|
|
327
|
+
const modifiedContent = this.injectSystemPrompt(agentContent, language);
|
|
328
|
+
pluginSection += `### ${agent.name}\n\n${modifiedContent}\n\n`;
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
if (plugin.commands.length > 0) {
|
|
332
|
+
pluginSection += `## Commands\n\n`;
|
|
333
|
+
for (const command of plugin.commands) {
|
|
334
|
+
const commandContent = await fs.readFile(command.path, 'utf-8');
|
|
335
|
+
const contentWithoutFrontmatter = commandContent.replace(/^---\n[\s\S]+?\n---\n/, '');
|
|
336
|
+
// Inject system prompt if needed
|
|
337
|
+
const modifiedContent = this.injectSystemPrompt(contentWithoutFrontmatter, language);
|
|
338
|
+
pluginSection += `### /${command.name}\n\n${modifiedContent}\n\n`;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
pluginSection += `<!-- End Plugin: ${plugin.manifest.name} -->\n`;
|
|
342
|
+
agentsMd += pluginSection;
|
|
343
|
+
await fs.writeFile(agentsMdPath, agentsMd, 'utf-8');
|
|
344
|
+
console.log(` â Compiled to AGENTS.md`);
|
|
345
|
+
console.log(` â ${plugin.skills.length} skills, ${plugin.agents.length} agents, ${plugin.commands.length} commands`);
|
|
346
|
+
console.log(`\nâ
Plugin ${plugin.manifest.name} compiled for Copilot!`);
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Unload a plugin from Copilot
|
|
350
|
+
*/
|
|
351
|
+
async unloadPlugin(pluginName) {
|
|
352
|
+
const projectPath = process.cwd();
|
|
353
|
+
const agentsMdPath = path.join(projectPath, 'AGENTS.md');
|
|
354
|
+
console.log(`\nđď¸ Unloading plugin from Copilot: ${pluginName}`);
|
|
355
|
+
if (!(await fs.pathExists(agentsMdPath))) {
|
|
356
|
+
console.warn(`â ď¸ AGENTS.md not found`);
|
|
357
|
+
return;
|
|
358
|
+
}
|
|
359
|
+
let agentsMd = await fs.readFile(agentsMdPath, 'utf-8');
|
|
360
|
+
const startMarker = `<!-- Plugin: ${pluginName} -->`;
|
|
361
|
+
const endMarker = `<!-- End Plugin: ${pluginName} -->`;
|
|
362
|
+
const startIndex = agentsMd.indexOf(startMarker);
|
|
363
|
+
if (startIndex === -1) {
|
|
364
|
+
console.warn(`â ď¸ Plugin ${pluginName} not found in AGENTS.md`);
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
const endIndex = agentsMd.indexOf(endMarker, startIndex);
|
|
368
|
+
if (endIndex === -1) {
|
|
369
|
+
console.warn(`â ď¸ Plugin ${pluginName} section malformed`);
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
agentsMd = agentsMd.slice(0, startIndex) + agentsMd.slice(endIndex + endMarker.length);
|
|
373
|
+
await fs.writeFile(agentsMdPath, agentsMd, 'utf-8');
|
|
374
|
+
console.log(` â Removed from AGENTS.md`);
|
|
375
|
+
console.log(`\nâ
Plugin ${pluginName} unloaded!`);
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Get list of installed plugins for Copilot
|
|
379
|
+
*/
|
|
380
|
+
async getInstalledPlugins() {
|
|
381
|
+
const projectPath = process.cwd();
|
|
382
|
+
const agentsMdPath = path.join(projectPath, 'AGENTS.md');
|
|
383
|
+
if (!(await fs.pathExists(agentsMdPath))) {
|
|
384
|
+
return [];
|
|
385
|
+
}
|
|
386
|
+
const agentsMd = await fs.readFile(agentsMdPath, 'utf-8');
|
|
387
|
+
const pluginMarkerRegex = /<!-- Plugin: (specweave-[a-z0-9-]+) -->/g;
|
|
388
|
+
const matches = agentsMd.matchAll(pluginMarkerRegex);
|
|
389
|
+
const plugins = [];
|
|
390
|
+
for (const match of matches) {
|
|
391
|
+
plugins.push(match[1]);
|
|
392
|
+
}
|
|
393
|
+
return plugins;
|
|
394
|
+
}
|
|
173
395
|
}
|
|
174
396
|
//# sourceMappingURL=adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/adapters/copilot/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/adapters/copilot/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { AdapterBase } from '../adapter-base.js';
|
|
11
11
|
import { AdapterOptions, AdapterFile } from '../adapter-interface.js';
|
|
12
|
+
import type { Plugin } from '../../core/types/plugin.js';
|
|
12
13
|
export declare class CursorAdapter extends AdapterBase {
|
|
13
14
|
name: string;
|
|
14
15
|
description: string;
|
|
@@ -40,5 +41,58 @@ export declare class CursorAdapter extends AdapterBase {
|
|
|
40
41
|
* Get usage instructions for Cursor adapter
|
|
41
42
|
*/
|
|
42
43
|
getInstructions(): string;
|
|
44
|
+
/**
|
|
45
|
+
* Check if Cursor adapter supports plugins
|
|
46
|
+
*
|
|
47
|
+
* Cursor has plugin support via AGENTS.md compilation
|
|
48
|
+
*
|
|
49
|
+
* @returns boolean True for Cursor
|
|
50
|
+
*/
|
|
51
|
+
supportsPlugins(): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Read language configuration from project config
|
|
54
|
+
*
|
|
55
|
+
* @returns Language setting from config, defaults to 'en'
|
|
56
|
+
*/
|
|
57
|
+
private getLanguageConfig;
|
|
58
|
+
/**
|
|
59
|
+
* Inject system prompt for non-English languages
|
|
60
|
+
*
|
|
61
|
+
* Prepends language instruction to markdown content if language !== 'en'
|
|
62
|
+
*
|
|
63
|
+
* @param content Original markdown content
|
|
64
|
+
* @param language Target language
|
|
65
|
+
* @returns Modified content with system prompt (or unchanged if English)
|
|
66
|
+
*/
|
|
67
|
+
private injectSystemPrompt;
|
|
68
|
+
/**
|
|
69
|
+
* Compile and install a plugin for Cursor
|
|
70
|
+
*
|
|
71
|
+
* Cursor uses AGENTS.md compilation:
|
|
72
|
+
* - Append skills to AGENTS.md
|
|
73
|
+
* - Append agents to AGENTS.md
|
|
74
|
+
* - Append commands to team commands JSON
|
|
75
|
+
*
|
|
76
|
+
* NEW: Injects system prompts for non-English languages
|
|
77
|
+
*
|
|
78
|
+
* @param plugin Plugin to install
|
|
79
|
+
*/
|
|
80
|
+
compilePlugin(plugin: Plugin): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* Unload a plugin from Cursor
|
|
83
|
+
*
|
|
84
|
+
* Removes plugin section from AGENTS.md
|
|
85
|
+
*
|
|
86
|
+
* @param pluginName Name of plugin to unload
|
|
87
|
+
*/
|
|
88
|
+
unloadPlugin(pluginName: string): Promise<void>;
|
|
89
|
+
/**
|
|
90
|
+
* Get list of installed plugins for Cursor
|
|
91
|
+
*
|
|
92
|
+
* Parses AGENTS.md for plugin markers
|
|
93
|
+
*
|
|
94
|
+
* @returns Array of installed plugin names
|
|
95
|
+
*/
|
|
96
|
+
getInstalledPlugins(): Promise<string[]>;
|
|
43
97
|
}
|
|
44
98
|
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/cursor/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/cursor/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAIzD,qBAAa,aAAc,SAAQ,WAAW;IAC5C,IAAI,SAAY;IAChB,WAAW,SAA6E;IACxF,eAAe,EAAG,MAAM,CAAU;IAElC;;;;;;OAMG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAOhC;;;;;OAKG;IACH,QAAQ,IAAI,WAAW,EAAE;IA8BzB;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBrD;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD;;OAEG;IACH,eAAe,IAAI,MAAM;IA2HzB;;;;;;OAMG;IACH,eAAe,IAAI,OAAO;IAI1B;;;;OAIG;YACW,iBAAiB;IAiB/B;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;;;;;;;;;;OAWG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsFlD;;;;;;OAMG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwCrD;;;;;;OAMG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAmB/C"}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
import * as path from 'path';
|
|
11
11
|
import fs from 'fs-extra';
|
|
12
12
|
import { AdapterBase } from '../adapter-base.js';
|
|
13
|
+
import { getSystemPromptForLanguage } from '../../core/i18n/language-manager.js';
|
|
13
14
|
export class CursorAdapter extends AdapterBase {
|
|
14
15
|
constructor() {
|
|
15
16
|
super(...arguments);
|
|
@@ -210,5 +211,196 @@ Pro tip: Say "act as [role]" to follow AGENTS.md patterns:
|
|
|
210
211
|
- "act as DevOps and create infrastructure" (AGENTS.md defines DevOps role)
|
|
211
212
|
`;
|
|
212
213
|
}
|
|
214
|
+
/**
|
|
215
|
+
* Check if Cursor adapter supports plugins
|
|
216
|
+
*
|
|
217
|
+
* Cursor has plugin support via AGENTS.md compilation
|
|
218
|
+
*
|
|
219
|
+
* @returns boolean True for Cursor
|
|
220
|
+
*/
|
|
221
|
+
supportsPlugins() {
|
|
222
|
+
return true;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Read language configuration from project config
|
|
226
|
+
*
|
|
227
|
+
* @returns Language setting from config, defaults to 'en'
|
|
228
|
+
*/
|
|
229
|
+
async getLanguageConfig() {
|
|
230
|
+
const projectPath = process.cwd();
|
|
231
|
+
const configPath = path.join(projectPath, '.specweave', 'config.json');
|
|
232
|
+
if (!(await fs.pathExists(configPath))) {
|
|
233
|
+
return 'en'; // Default to English if no config
|
|
234
|
+
}
|
|
235
|
+
try {
|
|
236
|
+
const config = await fs.readJson(configPath);
|
|
237
|
+
return config.language || 'en';
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
console.warn('â ď¸ Could not read language from config, defaulting to English');
|
|
241
|
+
return 'en';
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Inject system prompt for non-English languages
|
|
246
|
+
*
|
|
247
|
+
* Prepends language instruction to markdown content if language !== 'en'
|
|
248
|
+
*
|
|
249
|
+
* @param content Original markdown content
|
|
250
|
+
* @param language Target language
|
|
251
|
+
* @returns Modified content with system prompt (or unchanged if English)
|
|
252
|
+
*/
|
|
253
|
+
injectSystemPrompt(content, language) {
|
|
254
|
+
if (language === 'en') {
|
|
255
|
+
return content; // No changes for English - preserve default behavior
|
|
256
|
+
}
|
|
257
|
+
// Get system prompt for target language
|
|
258
|
+
const systemPrompt = getSystemPromptForLanguage(language);
|
|
259
|
+
// For AGENTS.md compilation, inject at the beginning of the content
|
|
260
|
+
return `${systemPrompt}\n\n${content}`;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Compile and install a plugin for Cursor
|
|
264
|
+
*
|
|
265
|
+
* Cursor uses AGENTS.md compilation:
|
|
266
|
+
* - Append skills to AGENTS.md
|
|
267
|
+
* - Append agents to AGENTS.md
|
|
268
|
+
* - Append commands to team commands JSON
|
|
269
|
+
*
|
|
270
|
+
* NEW: Injects system prompts for non-English languages
|
|
271
|
+
*
|
|
272
|
+
* @param plugin Plugin to install
|
|
273
|
+
*/
|
|
274
|
+
async compilePlugin(plugin) {
|
|
275
|
+
const projectPath = process.cwd();
|
|
276
|
+
const agentsMdPath = path.join(projectPath, 'AGENTS.md');
|
|
277
|
+
console.log(`\nđŚ Compiling plugin for Cursor: ${plugin.manifest.name}`);
|
|
278
|
+
// Get language configuration for system prompt injection
|
|
279
|
+
const language = await this.getLanguageConfig();
|
|
280
|
+
if (language !== 'en') {
|
|
281
|
+
console.log(` đ Language: ${language} (system prompts will be injected)`);
|
|
282
|
+
}
|
|
283
|
+
// Ensure AGENTS.md exists
|
|
284
|
+
if (!(await fs.pathExists(agentsMdPath))) {
|
|
285
|
+
throw new Error('AGENTS.md not found. Run specweave init first.');
|
|
286
|
+
}
|
|
287
|
+
// Read current AGENTS.md
|
|
288
|
+
let agentsMd = await fs.readFile(agentsMdPath, 'utf-8');
|
|
289
|
+
// Check if plugin already compiled
|
|
290
|
+
const pluginMarker = `<!-- Plugin: ${plugin.manifest.name} -->`;
|
|
291
|
+
if (agentsMd.includes(pluginMarker)) {
|
|
292
|
+
console.log(` âšď¸ Plugin ${plugin.manifest.name} already compiled to AGENTS.md`);
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
// Generate plugin section for AGENTS.md
|
|
296
|
+
let pluginSection = `\n\n${pluginMarker}\n\n`;
|
|
297
|
+
pluginSection += `# Plugin: ${plugin.manifest.name}\n\n`;
|
|
298
|
+
pluginSection += `${plugin.manifest.description}\n\n`;
|
|
299
|
+
// Add skills
|
|
300
|
+
if (plugin.skills.length > 0) {
|
|
301
|
+
pluginSection += `## Skills\n\n`;
|
|
302
|
+
for (const skill of plugin.skills) {
|
|
303
|
+
const skillContent = await fs.readFile(path.join(skill.path, 'SKILL.md'), 'utf-8');
|
|
304
|
+
// Remove frontmatter for AGENTS.md
|
|
305
|
+
const contentWithoutFrontmatter = skillContent.replace(/^---\n[\s\S]+?\n---\n/, '');
|
|
306
|
+
// Inject system prompt if needed
|
|
307
|
+
const modifiedContent = this.injectSystemPrompt(contentWithoutFrontmatter, language);
|
|
308
|
+
pluginSection += `### ${skill.name}\n\n`;
|
|
309
|
+
pluginSection += `${modifiedContent}\n\n`;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
// Add agents
|
|
313
|
+
if (plugin.agents.length > 0) {
|
|
314
|
+
pluginSection += `## Agents\n\n`;
|
|
315
|
+
for (const agent of plugin.agents) {
|
|
316
|
+
const agentContent = await fs.readFile(path.join(agent.path, 'AGENT.md'), 'utf-8');
|
|
317
|
+
// Inject system prompt if needed
|
|
318
|
+
const modifiedContent = this.injectSystemPrompt(agentContent, language);
|
|
319
|
+
pluginSection += `### ${agent.name}\n\n`;
|
|
320
|
+
pluginSection += `${modifiedContent}\n\n`;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
// Add commands
|
|
324
|
+
if (plugin.commands.length > 0) {
|
|
325
|
+
pluginSection += `## Commands\n\n`;
|
|
326
|
+
for (const command of plugin.commands) {
|
|
327
|
+
const commandContent = await fs.readFile(command.path, 'utf-8');
|
|
328
|
+
// Remove frontmatter
|
|
329
|
+
const contentWithoutFrontmatter = commandContent.replace(/^---\n[\s\S]+?\n---\n/, '');
|
|
330
|
+
// Inject system prompt if needed
|
|
331
|
+
const modifiedContent = this.injectSystemPrompt(contentWithoutFrontmatter, language);
|
|
332
|
+
pluginSection += `### /${command.name}\n\n`;
|
|
333
|
+
pluginSection += `${modifiedContent}\n\n`;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
pluginSection += `<!-- End Plugin: ${plugin.manifest.name} -->\n`;
|
|
337
|
+
// Append to AGENTS.md
|
|
338
|
+
agentsMd += pluginSection;
|
|
339
|
+
await fs.writeFile(agentsMdPath, agentsMd, 'utf-8');
|
|
340
|
+
console.log(` â Compiled to AGENTS.md`);
|
|
341
|
+
console.log(` â ${plugin.skills.length} skills added`);
|
|
342
|
+
console.log(` â ${plugin.agents.length} agents added`);
|
|
343
|
+
console.log(` â ${plugin.commands.length} commands added`);
|
|
344
|
+
console.log(`\nâ
Plugin ${plugin.manifest.name} compiled for Cursor!`);
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Unload a plugin from Cursor
|
|
348
|
+
*
|
|
349
|
+
* Removes plugin section from AGENTS.md
|
|
350
|
+
*
|
|
351
|
+
* @param pluginName Name of plugin to unload
|
|
352
|
+
*/
|
|
353
|
+
async unloadPlugin(pluginName) {
|
|
354
|
+
const projectPath = process.cwd();
|
|
355
|
+
const agentsMdPath = path.join(projectPath, 'AGENTS.md');
|
|
356
|
+
console.log(`\nđď¸ Unloading plugin from Cursor: ${pluginName}`);
|
|
357
|
+
if (!(await fs.pathExists(agentsMdPath))) {
|
|
358
|
+
console.warn(`â ď¸ AGENTS.md not found`);
|
|
359
|
+
return;
|
|
360
|
+
}
|
|
361
|
+
// Read AGENTS.md
|
|
362
|
+
let agentsMd = await fs.readFile(agentsMdPath, 'utf-8');
|
|
363
|
+
// Find plugin section
|
|
364
|
+
const startMarker = `<!-- Plugin: ${pluginName} -->`;
|
|
365
|
+
const endMarker = `<!-- End Plugin: ${pluginName} -->`;
|
|
366
|
+
const startIndex = agentsMd.indexOf(startMarker);
|
|
367
|
+
if (startIndex === -1) {
|
|
368
|
+
console.warn(`â ď¸ Plugin ${pluginName} not found in AGENTS.md`);
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
const endIndex = agentsMd.indexOf(endMarker, startIndex);
|
|
372
|
+
if (endIndex === -1) {
|
|
373
|
+
console.warn(`â ď¸ Plugin ${pluginName} section malformed in AGENTS.md`);
|
|
374
|
+
return;
|
|
375
|
+
}
|
|
376
|
+
// Remove plugin section
|
|
377
|
+
agentsMd = agentsMd.slice(0, startIndex) + agentsMd.slice(endIndex + endMarker.length);
|
|
378
|
+
// Write back
|
|
379
|
+
await fs.writeFile(agentsMdPath, agentsMd, 'utf-8');
|
|
380
|
+
console.log(` â Removed from AGENTS.md`);
|
|
381
|
+
console.log(`\nâ
Plugin ${pluginName} unloaded!`);
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Get list of installed plugins for Cursor
|
|
385
|
+
*
|
|
386
|
+
* Parses AGENTS.md for plugin markers
|
|
387
|
+
*
|
|
388
|
+
* @returns Array of installed plugin names
|
|
389
|
+
*/
|
|
390
|
+
async getInstalledPlugins() {
|
|
391
|
+
const projectPath = process.cwd();
|
|
392
|
+
const agentsMdPath = path.join(projectPath, 'AGENTS.md');
|
|
393
|
+
if (!(await fs.pathExists(agentsMdPath))) {
|
|
394
|
+
return [];
|
|
395
|
+
}
|
|
396
|
+
const agentsMd = await fs.readFile(agentsMdPath, 'utf-8');
|
|
397
|
+
const pluginMarkerRegex = /<!-- Plugin: (specweave-[a-z0-9-]+) -->/g;
|
|
398
|
+
const matches = agentsMd.matchAll(pluginMarkerRegex);
|
|
399
|
+
const plugins = [];
|
|
400
|
+
for (const match of matches) {
|
|
401
|
+
plugins.push(match[1]);
|
|
402
|
+
}
|
|
403
|
+
return plugins;
|
|
404
|
+
}
|
|
213
405
|
}
|
|
214
406
|
//# sourceMappingURL=adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/adapters/cursor/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,OAAO,aAAc,SAAQ,WAAW;IAA9C;;QACE,SAAI,GAAG,QAAQ,CAAC;QAChB,gBAAW,GAAG,yEAAyE,CAAC;QACxF,oBAAe,GAAG,MAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/adapters/cursor/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { AdapterBase } from '../adapter-base.js';
|
|
11
11
|
import { AdapterOptions, AdapterFile } from '../adapter-interface.js';
|
|
12
|
+
import type { Plugin } from '../../core/types/plugin.js';
|
|
12
13
|
export declare class GenericAdapter extends AdapterBase {
|
|
13
14
|
name: string;
|
|
14
15
|
description: string;
|
|
@@ -39,5 +40,47 @@ export declare class GenericAdapter extends AdapterBase {
|
|
|
39
40
|
* Get usage instructions for Generic adapter
|
|
40
41
|
*/
|
|
41
42
|
getInstructions(): string;
|
|
43
|
+
/**
|
|
44
|
+
* Check if Generic adapter supports plugins
|
|
45
|
+
*
|
|
46
|
+
* Generic has manual plugin support via AGENTS.md
|
|
47
|
+
*
|
|
48
|
+
* @returns boolean True
|
|
49
|
+
*/
|
|
50
|
+
supportsPlugins(): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Read language configuration from project config
|
|
53
|
+
*
|
|
54
|
+
* @returns Language setting from config, defaults to 'en'
|
|
55
|
+
*/
|
|
56
|
+
private getLanguageConfig;
|
|
57
|
+
/**
|
|
58
|
+
* Inject system prompt for non-English languages
|
|
59
|
+
*
|
|
60
|
+
* Prepends language instruction to markdown content if language !== 'en'
|
|
61
|
+
*
|
|
62
|
+
* @param content Original markdown content
|
|
63
|
+
* @param language Target language
|
|
64
|
+
* @returns Modified content with system prompt (or unchanged if English)
|
|
65
|
+
*/
|
|
66
|
+
private injectSystemPrompt;
|
|
67
|
+
/**
|
|
68
|
+
* Compile and install a plugin for Generic adapter
|
|
69
|
+
*
|
|
70
|
+
* Appends plugin content to AGENTS.md for manual copy-paste workflows
|
|
71
|
+
*
|
|
72
|
+
* NEW: Injects system prompts for non-English languages
|
|
73
|
+
*
|
|
74
|
+
* @param plugin Plugin to install
|
|
75
|
+
*/
|
|
76
|
+
compilePlugin(plugin: Plugin): Promise<void>;
|
|
77
|
+
/**
|
|
78
|
+
* Unload a plugin from Generic adapter
|
|
79
|
+
*/
|
|
80
|
+
unloadPlugin(pluginName: string): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* Get list of installed plugins for Generic adapter
|
|
83
|
+
*/
|
|
84
|
+
getInstalledPlugins(): Promise<string[]>;
|
|
42
85
|
}
|
|
43
86
|
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/generic/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/generic/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAIzD,qBAAa,cAAe,SAAQ,WAAW;IAC7C,IAAI,SAAa;IACjB,WAAW,SAAgF;IAC3F,eAAe,EAAG,QAAQ,CAAU;IAEpC;;;;;OAKG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAKhC;;;;;OAKG;IACH,QAAQ,IAAI,WAAW,EAAE;IAIzB;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD;;OAEG;IACH,eAAe,IAAI,MAAM;IAsGzB;;;;;;OAMG;IACH,eAAe,IAAI,OAAO;IAI1B;;;;OAIG;YACW,iBAAiB;IAiB/B;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;;;;;;;OAQG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqElD;;OAEG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCrD;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAmB/C"}
|