specweave 0.4.1 → 0.6.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/.claude-plugin/README.md +312 -0
- package/.claude-plugin/marketplace.json +210 -0
- package/CLAUDE.md +952 -609
- package/README.md +179 -761
- 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 +2 -0
- package/dist/adapters/claude/adapter.d.ts +49 -11
- package/dist/adapters/claude/adapter.d.ts.map +1 -1
- package/dist/adapters/claude/adapter.js +175 -42
- package/dist/adapters/claude/adapter.js.map +1 -1
- package/dist/adapters/copilot/adapter.d.ts +20 -2
- package/dist/adapters/copilot/adapter.d.ts.map +1 -1
- package/dist/adapters/copilot/adapter.js +117 -7
- package/dist/adapters/copilot/adapter.js.map +1 -1
- package/dist/adapters/cursor/adapter.d.ts +18 -0
- package/dist/adapters/cursor/adapter.d.ts.map +1 -1
- package/dist/adapters/cursor/adapter.js +55 -3
- package/dist/adapters/cursor/adapter.js.map +1 -1
- package/dist/adapters/generic/adapter.d.ts +18 -0
- package/dist/adapters/generic/adapter.d.ts.map +1 -1
- package/dist/adapters/generic/adapter.js +55 -3
- 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 +521 -185
- 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 +23 -6
- package/dist/cli/commands/plugin.d.ts.map +1 -1
- package/dist/cli/commands/plugin.js +92 -66
- package/dist/cli/commands/plugin.js.map +1 -1
- 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-loader.d.ts +33 -13
- package/dist/core/plugin-loader.d.ts.map +1 -1
- package/dist/core/plugin-loader.js +145 -43
- package/dist/core/plugin-loader.js.map +1 -1
- 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 +73 -42
- package/dist/core/types/plugin.d.ts.map +1 -1
- package/dist/core/types/plugin.js +4 -3
- package/dist/core/types/plugin.js.map +1 -1
- 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.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 +285 -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/execFileNoThrow.d.ts +97 -0
- package/dist/utils/execFileNoThrow.d.ts.map +1 -0
- package/dist/utils/execFileNoThrow.js +130 -0
- package/dist/utils/execFileNoThrow.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 +13 -14
- package/plugins/.specweave/logs/hooks-debug.log +24 -0
- package/plugins/.specweave/logs/last-hook-fire +1 -0
- package/plugins/.specweave/logs/last-todowrite-time +1 -0
- package/plugins/.specweave/logs/tasks.log +6 -0
- package/plugins/specweave/.claude-plugin/plugin.json +22 -0
- package/{src → plugins/specweave}/agents/pm/AGENT.md +80 -0
- package/plugins/specweave/agents/translator/AGENT.md +282 -0
- package/{src → plugins/specweave}/commands/README.md +11 -11
- package/{src/commands/specweave.costs.md → plugins/specweave/commands/costs.md} +8 -8
- package/{src/commands/specweave.do.md → plugins/specweave/commands/do.md} +35 -8
- package/{src/commands/specweave.done.md → plugins/specweave/commands/done.md} +1 -1
- package/{src/commands/specweave.inc.md → plugins/specweave/commands/inc.md} +1 -1
- package/{src/commands/specweave.increment.md → plugins/specweave/commands/increment.md} +84 -19
- package/{src/commands/specweave.next.md → plugins/specweave/commands/next.md} +1 -1
- package/{src/commands/specweave.progress.md → plugins/specweave/commands/progress.md} +1 -1
- package/{src → plugins/specweave}/commands/specweave.md +57 -25
- package/{src/commands/specweave.sync-docs.md → plugins/specweave/commands/sync-docs.md} +6 -6
- package/plugins/specweave/commands/translate.md +425 -0
- package/{src/commands/specweave.validate.md → plugins/specweave/commands/validate.md} +2 -2
- package/plugins/specweave/hooks/hooks.json +15 -0
- package/plugins/specweave/hooks/post-task-completion.sh +265 -0
- package/plugins/specweave/skills/SKILLS-INDEX.md +229 -0
- package/{src → plugins/specweave}/skills/brownfield-analyzer/SKILL.md +66 -24
- package/{src → plugins/specweave}/skills/context-loader/SKILL.md +1 -1
- package/plugins/specweave/skills/context-optimizer/SKILL.md +588 -0
- package/plugins/specweave/skills/docs-updater/SKILL.md +0 -0
- package/{src → plugins/specweave}/skills/increment-planner/SKILL.md +81 -4
- package/plugins/specweave/skills/plugin-detector/SKILL.md +211 -0
- package/{src → plugins/specweave}/skills/project-kickstarter/SKILL.md +7 -7
- package/plugins/specweave/skills/rfc-generator/SKILL.md +369 -0
- package/{src → plugins/specweave}/skills/specweave-detector/SKILL.md +2 -2
- package/plugins/specweave/skills/specweave-framework/SKILL.md +498 -0
- package/plugins/specweave/skills/specweave-framework/test-cases/test-1-increment-naming.yaml +11 -0
- package/plugins/specweave/skills/specweave-framework/test-cases/test-2-source-of-truth.yaml +11 -0
- package/plugins/specweave/skills/specweave-framework/test-cases/test-3-increment-discipline.yaml +12 -0
- package/plugins/specweave/skills/specweave-framework/test-cases/test-4-file-placement.yaml +11 -0
- package/{src → plugins/specweave}/skills/tdd-workflow/SKILL.md +21 -21
- package/plugins/specweave/skills/translator/SKILL.md +172 -0
- 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-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 +19 -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 +38 -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 +26 -0
- package/plugins/specweave-ui/.mcp.json +14 -0
- package/plugins/specweave-ui/README.md +386 -0
- package/src/adapters/claude/adapter.ts +193 -46
- package/src/adapters/copilot/adapter.ts +132 -7
- package/src/adapters/cursor/adapter.ts +62 -3
- package/src/adapters/generic/adapter.ts +62 -3
- 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 -121
- package/src/skills/SKILLS-INDEX.md +0 -444
- package/src/skills/github-sync/SKILL.md +0 -234
- /package/{src → plugins/specweave}/agents/architect/AGENT.md +0 -0
- /package/{src → plugins/specweave}/agents/code-reviewer.md +0 -0
- /package/{src → plugins/specweave}/agents/docs-writer/AGENT.md +0 -0
- /package/{src → plugins/specweave}/agents/performance/AGENT.md +0 -0
- /package/{src → plugins/specweave}/agents/qa-lead/AGENT.md +0 -0
- /package/{src → plugins/specweave}/agents/security/AGENT.md +0 -0
- /package/{src → plugins/specweave}/agents/tdd-orchestrator/AGENT.md +0 -0
- /package/{src → plugins/specweave}/agents/tech-lead/AGENT.md +0 -0
- /package/{src/commands/specweave.list-increments.md → plugins/specweave/commands/list-increments.md} +0 -0
- /package/{src/commands/specweave.tdd-cycle.md → plugins/specweave/commands/tdd-cycle.md} +0 -0
- /package/{src/commands/specweave.tdd-green.md → plugins/specweave/commands/tdd-green.md} +0 -0
- /package/{src/commands/specweave.tdd-red.md → plugins/specweave/commands/tdd-red.md} +0 -0
- /package/{src/commands/specweave.tdd-refactor.md → plugins/specweave/commands/tdd-refactor.md} +0 -0
- /package/{src → plugins/specweave}/hooks/README.md +0 -0
- /package/{src → plugins/specweave}/hooks/docs-changed.sh +0 -0
- /package/{src → plugins/specweave}/hooks/human-input-required.sh +0 -0
- /package/{src → plugins/specweave}/hooks/post-increment-plugin-detect.sh +0 -0
- /package/{src → plugins/specweave}/hooks/pre-implementation.sh +0 -0
- /package/{src → plugins/specweave}/hooks/pre-task-plugin-detect.sh +0 -0
- /package/{src → plugins/specweave}/skills/brownfield-onboarder/SKILL.md +0 -0
- /package/{src → plugins/specweave}/skills/docs-updater/README.md +0 -0
- /package/{src → plugins/specweave}/skills/increment-planner/scripts/feature-utils.js +0 -0
- /package/{src → plugins/specweave}/skills/increment-quality-judge/SKILL.md +0 -0
- /package/{src → plugins/specweave}/skills/project-kickstarter/test-cases/test-1-high-confidence-full-product.yaml +0 -0
- /package/{src → plugins/specweave}/skills/project-kickstarter/test-cases/test-2-medium-confidence-partial.yaml +0 -0
- /package/{src → plugins/specweave}/skills/project-kickstarter/test-cases/test-3-low-confidence-technical-question.yaml +0 -0
- /package/{src → plugins/specweave}/skills/project-kickstarter/test-cases/test-4-opt-out-explicit.yaml +0 -0
- /package/{src → plugins/specweave}/skills/role-orchestrator/README.md +0 -0
- /package/{src → plugins/specweave}/skills/role-orchestrator/SKILL.md +0 -0
- /package/{src → plugins/specweave}/skills/task-builder/README.md +0 -0
- /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-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
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Locale String Manager
|
|
3
|
+
*
|
|
4
|
+
* Manages locale-specific strings for CLI messages and prompts.
|
|
5
|
+
*
|
|
6
|
+
* @module core/i18n
|
|
7
|
+
*/
|
|
8
|
+
import { SupportedLanguage, LocaleStrings } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Locale Manager for CLI strings
|
|
11
|
+
*/
|
|
12
|
+
export declare class LocaleManager {
|
|
13
|
+
private currentLanguage;
|
|
14
|
+
private localeStrings;
|
|
15
|
+
constructor(language?: SupportedLanguage);
|
|
16
|
+
/**
|
|
17
|
+
* Load locale strings from JSON file
|
|
18
|
+
*/
|
|
19
|
+
private loadLocaleStrings;
|
|
20
|
+
/**
|
|
21
|
+
* Get current language
|
|
22
|
+
*/
|
|
23
|
+
getCurrentLanguage(): SupportedLanguage;
|
|
24
|
+
/**
|
|
25
|
+
* Set current language
|
|
26
|
+
*/
|
|
27
|
+
setLanguage(language: SupportedLanguage): void;
|
|
28
|
+
/**
|
|
29
|
+
* Get CLI string
|
|
30
|
+
*/
|
|
31
|
+
getCLI(key: keyof LocaleStrings['cli']): string;
|
|
32
|
+
/**
|
|
33
|
+
* Get increment string
|
|
34
|
+
*/
|
|
35
|
+
getIncrement(key: keyof LocaleStrings['increment']): string;
|
|
36
|
+
/**
|
|
37
|
+
* Get validation string
|
|
38
|
+
*/
|
|
39
|
+
getValidation(key: keyof LocaleStrings['validation']): string;
|
|
40
|
+
/**
|
|
41
|
+
* Get gate string
|
|
42
|
+
*/
|
|
43
|
+
getGate(key: keyof LocaleStrings['gates']): string;
|
|
44
|
+
/**
|
|
45
|
+
* Get translated string with interpolation
|
|
46
|
+
* Supports nested keys like 'init.welcome' or 'init.errors.cancelled'
|
|
47
|
+
*
|
|
48
|
+
* @param category - For compatibility, but ignored (JSON has flat structure)
|
|
49
|
+
* @param key - Nested key path (e.g., 'init.welcome')
|
|
50
|
+
* @param params - Optional parameters for interpolation
|
|
51
|
+
*/
|
|
52
|
+
t(category: keyof LocaleStrings, key: string, params?: Record<string, string | number>): string;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get singleton instance
|
|
56
|
+
*/
|
|
57
|
+
export declare function getLocaleManager(language?: SupportedLanguage): LocaleManager;
|
|
58
|
+
/**
|
|
59
|
+
* Reset singleton (for testing)
|
|
60
|
+
*/
|
|
61
|
+
export declare function resetLocaleManager(): void;
|
|
62
|
+
//# sourceMappingURL=locale-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locale-manager.d.ts","sourceRoot":"","sources":["../../../src/core/i18n/locale-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAK9D;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,eAAe,CAAoB;IAC3C,OAAO,CAAC,aAAa,CAAM;gBAEf,QAAQ,GAAE,iBAAwB;IAK9C;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA4BzB;;OAEG;IACH,kBAAkB,IAAI,iBAAiB;IAIvC;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAK9C;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,aAAa,CAAC,KAAK,CAAC,GAAG,MAAM;IAI/C;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,aAAa,CAAC,WAAW,CAAC,GAAG,MAAM;IAI3D;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,aAAa,CAAC,YAAY,CAAC,GAAG,MAAM;IAI7D;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,MAAM;IAIlD;;;;;;;OAOG;IACH,CAAC,CAAC,QAAQ,EAAE,MAAM,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM;CA4BhG;AAKD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,iBAAiB,GAAG,aAAa,CAK5E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Locale String Manager
|
|
3
|
+
*
|
|
4
|
+
* Manages locale-specific strings for CLI messages and prompts.
|
|
5
|
+
*
|
|
6
|
+
* @module core/i18n
|
|
7
|
+
*/
|
|
8
|
+
import fs from 'fs-extra';
|
|
9
|
+
import path from 'path';
|
|
10
|
+
import { fileURLToPath } from 'url';
|
|
11
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
12
|
+
const __dirname = path.dirname(__filename);
|
|
13
|
+
/**
|
|
14
|
+
* Locale Manager for CLI strings
|
|
15
|
+
*/
|
|
16
|
+
export class LocaleManager {
|
|
17
|
+
constructor(language = 'en') {
|
|
18
|
+
this.currentLanguage = language;
|
|
19
|
+
this.localeStrings = this.loadLocaleStrings(language);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Load locale strings from JSON file
|
|
23
|
+
*/
|
|
24
|
+
loadLocaleStrings(language) {
|
|
25
|
+
try {
|
|
26
|
+
// Try to load from src/locales first (development)
|
|
27
|
+
const srcPath = path.join(__dirname, `../../locales/${language}/cli.json`);
|
|
28
|
+
if (fs.existsSync(srcPath)) {
|
|
29
|
+
return fs.readJSONSync(srcPath);
|
|
30
|
+
}
|
|
31
|
+
// Fallback to dist/locales (production)
|
|
32
|
+
const distPath = path.join(__dirname, `../locales/${language}/cli.json`);
|
|
33
|
+
if (fs.existsSync(distPath)) {
|
|
34
|
+
return fs.readJSONSync(distPath);
|
|
35
|
+
}
|
|
36
|
+
// Fallback to English if language file not found
|
|
37
|
+
const enPath = path.join(__dirname, `../../locales/en/cli.json`);
|
|
38
|
+
if (fs.existsSync(enPath)) {
|
|
39
|
+
return fs.readJSONSync(enPath);
|
|
40
|
+
}
|
|
41
|
+
// Last resort: return empty object
|
|
42
|
+
return {};
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
console.warn(`Failed to load locale strings for ${language}, using English fallback`);
|
|
46
|
+
return {};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get current language
|
|
51
|
+
*/
|
|
52
|
+
getCurrentLanguage() {
|
|
53
|
+
return this.currentLanguage;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Set current language
|
|
57
|
+
*/
|
|
58
|
+
setLanguage(language) {
|
|
59
|
+
this.currentLanguage = language;
|
|
60
|
+
this.localeStrings = this.loadLocaleStrings(language);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Get CLI string
|
|
64
|
+
*/
|
|
65
|
+
getCLI(key) {
|
|
66
|
+
return this.localeStrings.cli[key];
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get increment string
|
|
70
|
+
*/
|
|
71
|
+
getIncrement(key) {
|
|
72
|
+
return this.localeStrings.increment[key];
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get validation string
|
|
76
|
+
*/
|
|
77
|
+
getValidation(key) {
|
|
78
|
+
return this.localeStrings.validation[key];
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Get gate string
|
|
82
|
+
*/
|
|
83
|
+
getGate(key) {
|
|
84
|
+
return this.localeStrings.gates[key];
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get translated string with interpolation
|
|
88
|
+
* Supports nested keys like 'init.welcome' or 'init.errors.cancelled'
|
|
89
|
+
*
|
|
90
|
+
* @param category - For compatibility, but ignored (JSON has flat structure)
|
|
91
|
+
* @param key - Nested key path (e.g., 'init.welcome')
|
|
92
|
+
* @param params - Optional parameters for interpolation
|
|
93
|
+
*/
|
|
94
|
+
t(category, key, params) {
|
|
95
|
+
// Navigate nested object path from root (ignore category parameter)
|
|
96
|
+
const keys = key.split('.');
|
|
97
|
+
let text = this.localeStrings;
|
|
98
|
+
for (const k of keys) {
|
|
99
|
+
if (text && typeof text === 'object') {
|
|
100
|
+
text = text[k];
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
return key; // Return key as fallback if path not found
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (typeof text !== 'string') {
|
|
107
|
+
return key; // Return key as fallback if not a string
|
|
108
|
+
}
|
|
109
|
+
// Support both {param} and {{param}} interpolation
|
|
110
|
+
if (params) {
|
|
111
|
+
Object.keys(params).forEach((param) => {
|
|
112
|
+
const value = String(params[param]);
|
|
113
|
+
text = text.replace(new RegExp(`\\{\\{${param}\\}\\}`, 'g'), value);
|
|
114
|
+
text = text.replace(new RegExp(`\\{${param}\\}`, 'g'), value);
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
return text;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// Singleton instance
|
|
121
|
+
let instance = null;
|
|
122
|
+
/**
|
|
123
|
+
* Get singleton instance
|
|
124
|
+
*/
|
|
125
|
+
export function getLocaleManager(language) {
|
|
126
|
+
if (!instance) {
|
|
127
|
+
instance = new LocaleManager(language);
|
|
128
|
+
}
|
|
129
|
+
return instance;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Reset singleton (for testing)
|
|
133
|
+
*/
|
|
134
|
+
export function resetLocaleManager() {
|
|
135
|
+
instance = null;
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=locale-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locale-manager.js","sourceRoot":"","sources":["../../../src/core/i18n/locale-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System Prompt Injector
|
|
3
|
+
*
|
|
4
|
+
* Injects language-specific system prompts into skills, agents, and commands.
|
|
5
|
+
* This enables LLM-native multilingual support without translation costs.
|
|
6
|
+
*
|
|
7
|
+
* @module core/i18n
|
|
8
|
+
*/
|
|
9
|
+
import { SupportedLanguage, SystemPromptTemplate } from './types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Inject system prompt into markdown file
|
|
12
|
+
*/
|
|
13
|
+
export declare function injectSystemPrompt(filePath: string, targetLanguage: SupportedLanguage, options?: {
|
|
14
|
+
placement?: 'top' | 'after-frontmatter' | 'bottom';
|
|
15
|
+
overwrite?: boolean;
|
|
16
|
+
}): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Remove system prompt from file
|
|
19
|
+
*/
|
|
20
|
+
export declare function removeSystemPrompt(filePath: string): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Batch inject prompts into directory
|
|
23
|
+
*/
|
|
24
|
+
export declare function injectPromptsIntoDirectory(dirPath: string, targetLanguage: SupportedLanguage, options?: {
|
|
25
|
+
filePattern?: RegExp;
|
|
26
|
+
recursive?: boolean;
|
|
27
|
+
overwrite?: boolean;
|
|
28
|
+
}): Promise<number>;
|
|
29
|
+
/**
|
|
30
|
+
* Create system prompt template
|
|
31
|
+
*/
|
|
32
|
+
export declare function createSystemPromptTemplate(language: SupportedLanguage, placement?: 'top' | 'after-frontmatter' | 'bottom'): SystemPromptTemplate;
|
|
33
|
+
//# sourceMappingURL=system-prompt-injector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-prompt-injector.d.ts","sourceRoot":"","sources":["../../../src/core/i18n/system-prompt-injector.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGrE;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,iBAAiB,EACjC,OAAO,CAAC,EAAE;IACR,SAAS,CAAC,EAAE,KAAK,GAAG,mBAAmB,GAAG,QAAQ,CAAC;IACnD,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GACA,OAAO,CAAC,IAAI,CAAC,CAkCf;AAmCD;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWxE;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,iBAAiB,EACjC,OAAO,CAAC,EAAE;IACR,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GACA,OAAO,CAAC,MAAM,CAAC,CAmBjB;AAuBD;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,iBAAiB,EAC3B,SAAS,GAAE,KAAK,GAAG,mBAAmB,GAAG,QAA8B,GACtE,oBAAoB,CAMtB"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System Prompt Injector
|
|
3
|
+
*
|
|
4
|
+
* Injects language-specific system prompts into skills, agents, and commands.
|
|
5
|
+
* This enables LLM-native multilingual support without translation costs.
|
|
6
|
+
*
|
|
7
|
+
* @module core/i18n
|
|
8
|
+
*/
|
|
9
|
+
import fs from 'fs-extra';
|
|
10
|
+
import path from 'path';
|
|
11
|
+
import { getSystemPrompt } from './language-registry.js';
|
|
12
|
+
/**
|
|
13
|
+
* Inject system prompt into markdown file
|
|
14
|
+
*/
|
|
15
|
+
export async function injectSystemPrompt(filePath, targetLanguage, options) {
|
|
16
|
+
const { placement = 'after-frontmatter', overwrite = false } = options || {};
|
|
17
|
+
// Read file content
|
|
18
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
19
|
+
// Get system prompt for target language
|
|
20
|
+
const systemPrompt = getSystemPrompt(targetLanguage);
|
|
21
|
+
// If English or no prompt needed, skip
|
|
22
|
+
if (!systemPrompt) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
// Check if prompt already exists
|
|
26
|
+
if (content.includes('**LANGUAGE INSTRUCTION**') && !overwrite) {
|
|
27
|
+
console.log(`⏭️ Prompt already exists in ${filePath}, skipping...`);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
// Inject prompt based on placement
|
|
31
|
+
let newContent;
|
|
32
|
+
if (placement === 'top') {
|
|
33
|
+
newContent = `${systemPrompt}\n\n---\n\n${content}`;
|
|
34
|
+
}
|
|
35
|
+
else if (placement === 'after-frontmatter') {
|
|
36
|
+
newContent = injectAfterFrontmatter(content, systemPrompt);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
newContent = `${content}\n\n---\n\n${systemPrompt}`;
|
|
40
|
+
}
|
|
41
|
+
// Write back to file
|
|
42
|
+
await fs.writeFile(filePath, newContent, 'utf-8');
|
|
43
|
+
console.log(`✅ Injected ${targetLanguage} prompt into ${filePath}`);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Inject system prompt after YAML frontmatter
|
|
47
|
+
*/
|
|
48
|
+
function injectAfterFrontmatter(content, systemPrompt) {
|
|
49
|
+
// Check if file has frontmatter (starts with ---)
|
|
50
|
+
if (!content.startsWith('---')) {
|
|
51
|
+
// No frontmatter, inject at top
|
|
52
|
+
return `${systemPrompt}\n\n---\n\n${content}`;
|
|
53
|
+
}
|
|
54
|
+
// Find end of frontmatter (second ---)
|
|
55
|
+
const lines = content.split('\n');
|
|
56
|
+
let frontmatterEnd = -1;
|
|
57
|
+
for (let i = 1; i < lines.length; i++) {
|
|
58
|
+
if (lines[i].trim() === '---') {
|
|
59
|
+
frontmatterEnd = i;
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (frontmatterEnd === -1) {
|
|
64
|
+
// Malformed frontmatter, inject at top
|
|
65
|
+
return `${systemPrompt}\n\n---\n\n${content}`;
|
|
66
|
+
}
|
|
67
|
+
// Inject after frontmatter
|
|
68
|
+
const beforeFrontmatter = lines.slice(0, frontmatterEnd + 1).join('\n');
|
|
69
|
+
const afterFrontmatter = lines.slice(frontmatterEnd + 1).join('\n');
|
|
70
|
+
return `${beforeFrontmatter}\n\n${systemPrompt}\n\n${afterFrontmatter}`;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Remove system prompt from file
|
|
74
|
+
*/
|
|
75
|
+
export async function removeSystemPrompt(filePath) {
|
|
76
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
77
|
+
// Remove LANGUAGE INSTRUCTION block
|
|
78
|
+
const cleanedContent = content.replace(/\*\*LANGUAGE INSTRUCTION\*\*:.*?\n\n/gs, '');
|
|
79
|
+
await fs.writeFile(filePath, cleanedContent, 'utf-8');
|
|
80
|
+
console.log(`✅ Removed system prompt from ${filePath}`);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Batch inject prompts into directory
|
|
84
|
+
*/
|
|
85
|
+
export async function injectPromptsIntoDirectory(dirPath, targetLanguage, options) {
|
|
86
|
+
const { filePattern = /\.md$/, recursive = true, overwrite = false } = options || {};
|
|
87
|
+
let injectedCount = 0;
|
|
88
|
+
const files = await getMarkdownFiles(dirPath, recursive);
|
|
89
|
+
for (const file of files) {
|
|
90
|
+
if (filePattern.test(file)) {
|
|
91
|
+
try {
|
|
92
|
+
await injectSystemPrompt(file, targetLanguage, { overwrite });
|
|
93
|
+
injectedCount++;
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
console.error(`❌ Failed to inject prompt into ${file}:`, error);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
console.log(`\n✅ Injected prompts into ${injectedCount} files`);
|
|
101
|
+
return injectedCount;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Get all markdown files in directory
|
|
105
|
+
*/
|
|
106
|
+
async function getMarkdownFiles(dirPath, recursive) {
|
|
107
|
+
const files = [];
|
|
108
|
+
const entries = await fs.readdir(dirPath, { withFileTypes: true });
|
|
109
|
+
for (const entry of entries) {
|
|
110
|
+
const fullPath = path.join(dirPath, entry.name);
|
|
111
|
+
if (entry.isDirectory() && recursive) {
|
|
112
|
+
const subFiles = await getMarkdownFiles(fullPath, recursive);
|
|
113
|
+
files.push(...subFiles);
|
|
114
|
+
}
|
|
115
|
+
else if (entry.isFile() && entry.name.endsWith('.md')) {
|
|
116
|
+
files.push(fullPath);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return files;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Create system prompt template
|
|
123
|
+
*/
|
|
124
|
+
export function createSystemPromptTemplate(language, placement = 'after-frontmatter') {
|
|
125
|
+
return {
|
|
126
|
+
language,
|
|
127
|
+
prompt: getSystemPrompt(language),
|
|
128
|
+
placement,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=system-prompt-injector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-prompt-injector.js","sourceRoot":"","sources":["../../../src/core/i18n/system-prompt-injector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SpecWeave i18n Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* LLM-native multilingual support using system prompt injection
|
|
5
|
+
* instead of traditional translation.
|
|
6
|
+
*
|
|
7
|
+
* @module core/i18n
|
|
8
|
+
* @version 0.6.0
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Supported languages for SpecWeave
|
|
12
|
+
*/
|
|
13
|
+
export type SupportedLanguage = 'en' | 'ru' | 'es' | 'zh' | 'de' | 'fr' | 'ja' | 'ko' | 'pt';
|
|
14
|
+
/**
|
|
15
|
+
* Translation options for different content types
|
|
16
|
+
*/
|
|
17
|
+
export interface TranslateOptions {
|
|
18
|
+
targetLanguage: SupportedLanguage;
|
|
19
|
+
contextType?: 'cli' | 'template' | 'docs' | 'living-docs' | 'code-comments';
|
|
20
|
+
preserveMarkdown?: boolean;
|
|
21
|
+
preserveCodeBlocks?: boolean;
|
|
22
|
+
keepFrameworkTerms?: boolean;
|
|
23
|
+
keepTechnicalTerms?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Locale-specific strings for CLI prompts and messages
|
|
27
|
+
*/
|
|
28
|
+
export interface LocaleStrings {
|
|
29
|
+
cli: {
|
|
30
|
+
welcome: string;
|
|
31
|
+
error: string;
|
|
32
|
+
success: string;
|
|
33
|
+
warning: string;
|
|
34
|
+
info: string;
|
|
35
|
+
};
|
|
36
|
+
increment: {
|
|
37
|
+
created: string;
|
|
38
|
+
inProgress: string;
|
|
39
|
+
completed: string;
|
|
40
|
+
failed: string;
|
|
41
|
+
taskComplete: string;
|
|
42
|
+
allTasksComplete: string;
|
|
43
|
+
};
|
|
44
|
+
validation: {
|
|
45
|
+
invalidInput: string;
|
|
46
|
+
missingFile: string;
|
|
47
|
+
incompleteTasks: string;
|
|
48
|
+
blockingIncrement: string;
|
|
49
|
+
};
|
|
50
|
+
gates: {
|
|
51
|
+
taskGatePass: string;
|
|
52
|
+
taskGateFail: string;
|
|
53
|
+
testGatePass: string;
|
|
54
|
+
testGateFail: string;
|
|
55
|
+
docsGatePass: string;
|
|
56
|
+
docsGateFail: string;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Configuration for language-specific behavior
|
|
61
|
+
*/
|
|
62
|
+
export interface LanguageConfig {
|
|
63
|
+
code: SupportedLanguage;
|
|
64
|
+
nativeName: string;
|
|
65
|
+
englishName: string;
|
|
66
|
+
systemPrompt: string;
|
|
67
|
+
rtl: boolean;
|
|
68
|
+
strings: LocaleStrings;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* User preferences for language settings
|
|
72
|
+
*/
|
|
73
|
+
export interface UserLanguagePreference {
|
|
74
|
+
primary: SupportedLanguage;
|
|
75
|
+
secondary?: SupportedLanguage;
|
|
76
|
+
codeCommentsInEnglish?: boolean;
|
|
77
|
+
frameworkTermsInEnglish?: boolean;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* System prompt injection template
|
|
81
|
+
*/
|
|
82
|
+
export interface SystemPromptTemplate {
|
|
83
|
+
language: SupportedLanguage;
|
|
84
|
+
prompt: string;
|
|
85
|
+
placement: 'top' | 'after-frontmatter' | 'bottom';
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Translation result
|
|
89
|
+
*/
|
|
90
|
+
export interface TranslationResult {
|
|
91
|
+
original: string;
|
|
92
|
+
translated: string;
|
|
93
|
+
sourceLanguage: SupportedLanguage;
|
|
94
|
+
targetLanguage: SupportedLanguage;
|
|
95
|
+
method: 'system-prompt' | 'in-session' | 'cached';
|
|
96
|
+
tokenCost?: number;
|
|
97
|
+
warnings?: string[];
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Language detection result
|
|
101
|
+
*/
|
|
102
|
+
export interface LanguageDetectionResult {
|
|
103
|
+
language: SupportedLanguage;
|
|
104
|
+
confidence: number;
|
|
105
|
+
reliable: boolean;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Global i18n configuration
|
|
109
|
+
*/
|
|
110
|
+
export interface I18nConfig {
|
|
111
|
+
/** Default language */
|
|
112
|
+
defaultLanguage: SupportedLanguage;
|
|
113
|
+
/** Enabled languages */
|
|
114
|
+
enabledLanguages: SupportedLanguage[];
|
|
115
|
+
/** Auto-detect user language from environment */
|
|
116
|
+
autoDetect: boolean;
|
|
117
|
+
/** Translation cache settings */
|
|
118
|
+
cache?: {
|
|
119
|
+
enabled: boolean;
|
|
120
|
+
ttl: number;
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Language metadata for display and selection
|
|
125
|
+
*/
|
|
126
|
+
export interface LanguageMetadata {
|
|
127
|
+
/** Language code */
|
|
128
|
+
code: SupportedLanguage;
|
|
129
|
+
/** Native name (e.g., "Русский" for Russian) */
|
|
130
|
+
nativeName: string;
|
|
131
|
+
/** English name */
|
|
132
|
+
englishName: string;
|
|
133
|
+
/** Flag emoji */
|
|
134
|
+
flag: string;
|
|
135
|
+
/** Completion percentage (0-100) */
|
|
136
|
+
completionPercent: number;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Translation configuration for project
|
|
140
|
+
*/
|
|
141
|
+
export interface TranslationConfig {
|
|
142
|
+
/** Enabled languages for this project */
|
|
143
|
+
languages: SupportedLanguage[];
|
|
144
|
+
/** Primary language */
|
|
145
|
+
primary: SupportedLanguage;
|
|
146
|
+
/** Translation method preference */
|
|
147
|
+
method: 'system-prompt' | 'in-session' | 'auto';
|
|
148
|
+
/** Keep framework terms in English */
|
|
149
|
+
preserveFrameworkTerms: boolean;
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/i18n/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/i18n/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Increment Status Detection
|
|
3
|
+
*
|
|
4
|
+
* Utility to detect increment completion status and enforce increment discipline.
|
|
5
|
+
*
|
|
6
|
+
* **The Iron Rule**: Cannot start increment N+1 until increment N is DONE.
|
|
7
|
+
*
|
|
8
|
+
* DONE means one of:
|
|
9
|
+
* 1. All tasks in tasks.md marked [x] Completed
|
|
10
|
+
* 2. COMPLETION-SUMMARY.md exists with "COMPLETE" status
|
|
11
|
+
* 3. All tasks removed/moved with documentation
|
|
12
|
+
*/
|
|
13
|
+
export interface PendingTask {
|
|
14
|
+
id: string;
|
|
15
|
+
title: string;
|
|
16
|
+
priority?: string;
|
|
17
|
+
phase?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface IncrementStatus {
|
|
20
|
+
id: string;
|
|
21
|
+
path: string;
|
|
22
|
+
exists: boolean;
|
|
23
|
+
isComplete: boolean;
|
|
24
|
+
totalTasks: number;
|
|
25
|
+
completedTasks: number;
|
|
26
|
+
percentComplete: number;
|
|
27
|
+
pendingTasks: PendingTask[];
|
|
28
|
+
completionReports: string[];
|
|
29
|
+
hasCompletionMarker: boolean;
|
|
30
|
+
reason?: string;
|
|
31
|
+
}
|
|
32
|
+
export declare class IncrementStatusDetector {
|
|
33
|
+
private incrementsPath;
|
|
34
|
+
constructor(projectPath?: string);
|
|
35
|
+
/**
|
|
36
|
+
* Get status for a specific increment
|
|
37
|
+
*/
|
|
38
|
+
getStatus(incrementId: string): Promise<IncrementStatus>;
|
|
39
|
+
/**
|
|
40
|
+
* Get all incomplete increments
|
|
41
|
+
*/
|
|
42
|
+
getAllIncomplete(): Promise<IncrementStatus[]>;
|
|
43
|
+
/**
|
|
44
|
+
* Get latest increment ID
|
|
45
|
+
*/
|
|
46
|
+
getLatest(): Promise<string | null>;
|
|
47
|
+
/**
|
|
48
|
+
* Check if increment is complete
|
|
49
|
+
*/
|
|
50
|
+
isComplete(incrementId: string): Promise<boolean>;
|
|
51
|
+
/**
|
|
52
|
+
* Find completion reports (COMPLETION-SUMMARY.md, etc.)
|
|
53
|
+
*/
|
|
54
|
+
private findCompletionReports;
|
|
55
|
+
/**
|
|
56
|
+
* Parse tasks.md to extract task statistics
|
|
57
|
+
*/
|
|
58
|
+
private parseTasksFile;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Convenience function to check if an increment is complete
|
|
62
|
+
*/
|
|
63
|
+
export declare function isIncrementComplete(incrementId: string, projectPath?: string): Promise<boolean>;
|
|
64
|
+
/**
|
|
65
|
+
* Convenience function to get all incomplete increments
|
|
66
|
+
*/
|
|
67
|
+
export declare function getAllIncompleteIncrements(projectPath?: string): Promise<IncrementStatus[]>;
|
|
68
|
+
/**
|
|
69
|
+
* Convenience function to get latest increment
|
|
70
|
+
*/
|
|
71
|
+
export declare function getLatestIncrement(projectPath?: string): Promise<string | null>;
|
|
72
|
+
//# sourceMappingURL=increment-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"increment-status.d.ts","sourceRoot":"","sources":["../../src/core/increment-status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,uBAAuB;IAClC,OAAO,CAAC,cAAc,CAAS;gBAEnB,WAAW,GAAE,MAAsB;IAI/C;;OAEG;IACG,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAoE9D;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAkBpD;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAgBzC;;OAEG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKvD;;OAEG;YACW,qBAAqB;IAwBnC;;OAEG;IACH,OAAO,CAAC,cAAc;CAuEvB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,OAAO,CAAC,CAGlB;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,eAAe,EAAE,CAAC,CAG5B;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB"}
|