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
|
@@ -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"}
|