@harness-forge/cli 0.1.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/.agents/skills/api-contract-review/SKILL.md +23 -0
- package/.agents/skills/architecture-decision-records/SKILL.md +23 -0
- package/.agents/skills/cloud-architect/SKILL.md +21 -0
- package/.agents/skills/cpp-engineering/SKILL.md +21 -0
- package/.agents/skills/db-migration-review/SKILL.md +23 -0
- package/.agents/skills/documentation-lookup/SKILL.md +8 -0
- package/.agents/skills/dotnet-engineering/SKILL.md +29 -0
- package/.agents/skills/go-engineering/SKILL.md +21 -0
- package/.agents/skills/java-engineering/SKILL.md +24 -0
- package/.agents/skills/javascript-engineering/SKILL.md +31 -0
- package/.agents/skills/kotlin-engineering/SKILL.md +21 -0
- package/.agents/skills/lua-engineering/SKILL.md +28 -0
- package/.agents/skills/parallel-worktree-supervisor/SKILL.md +23 -0
- package/.agents/skills/perl-engineering/SKILL.md +21 -0
- package/.agents/skills/php-engineering/SKILL.md +21 -0
- package/.agents/skills/powershell-engineering/SKILL.md +24 -0
- package/.agents/skills/python-engineering/SKILL.md +22 -0
- package/.agents/skills/release-readiness/SKILL.md +8 -0
- package/.agents/skills/repo-modernization/SKILL.md +23 -0
- package/.agents/skills/repo-onboarding/SKILL.md +23 -0
- package/.agents/skills/rust-engineering/SKILL.md +21 -0
- package/.agents/skills/security-scan/SKILL.md +8 -0
- package/.agents/skills/shell-engineering/SKILL.md +21 -0
- package/.agents/skills/speckit-analyze/SKILL.md +190 -0
- package/.agents/skills/speckit-checklist/SKILL.md +301 -0
- package/.agents/skills/speckit-clarify/SKILL.md +183 -0
- package/.agents/skills/speckit-constitution/SKILL.md +86 -0
- package/.agents/skills/speckit-implement/SKILL.md +204 -0
- package/.agents/skills/speckit-plan/SKILL.md +151 -0
- package/.agents/skills/speckit-specify/SKILL.md +304 -0
- package/.agents/skills/speckit-tasks/SKILL.md +197 -0
- package/.agents/skills/speckit-taskstoissues/SKILL.md +35 -0
- package/.agents/skills/swift-engineering/SKILL.md +21 -0
- package/.agents/skills/typescript-engineering/SKILL.md +28 -0
- package/.specify/README.md +3 -0
- package/.specify/extensions.yml +3 -0
- package/.specify/init-options.json +5 -0
- package/.specify/memory/constitution.md +5 -0
- package/.specify/scripts/powershell/check-prerequisites.ps1 +54 -0
- package/.specify/scripts/powershell/common.ps1 +263 -0
- package/.specify/scripts/powershell/create-new-feature.ps1 +23 -0
- package/.specify/scripts/powershell/setup-plan.ps1 +10 -0
- package/.specify/scripts/powershell/update-agent-context.ps1 +6 -0
- package/.specify/state/agent-context.md +1 -0
- package/.specify/state/flow-state.json +21 -0
- package/.specify/templates/agent-file-template.md +40 -0
- package/.specify/templates/checklist-template.md +5 -0
- package/.specify/templates/commands/plan.md +1 -0
- package/.specify/templates/commands/specify.md +1 -0
- package/.specify/templates/commands/tasks.md +1 -0
- package/.specify/templates/constitution-template.md +5 -0
- package/.specify/templates/plan-template.md +9 -0
- package/.specify/templates/spec-template.md +9 -0
- package/.specify/templates/tasks-template.md +5 -0
- package/AGENTS.md +75 -0
- package/CHANGELOG.md +15 -0
- package/CONTRIBUTING.md +38 -0
- package/LICENSE +674 -0
- package/README.md +386 -0
- package/RESEARCH-SOURCES.md +75 -0
- package/VALIDATION.md +32 -0
- package/agents/planner.md +49 -0
- package/commands/plan.md +41 -0
- package/commands/test.md +41 -0
- package/contexts/dev.md +25 -0
- package/dist/application/flow/load-flow-state.d.ts +17 -0
- package/dist/application/flow/load-flow-state.d.ts.map +1 -0
- package/dist/application/flow/load-flow-state.js +123 -0
- package/dist/application/flow/load-flow-state.js.map +1 -0
- package/dist/application/flow/save-flow-state.d.ts +3 -0
- package/dist/application/flow/save-flow-state.d.ts.map +1 -0
- package/dist/application/flow/save-flow-state.js +13 -0
- package/dist/application/flow/save-flow-state.js.map +1 -0
- package/dist/application/install/agent-manifest.d.ts +42 -0
- package/dist/application/install/agent-manifest.d.ts.map +1 -0
- package/dist/application/install/agent-manifest.js +144 -0
- package/dist/application/install/agent-manifest.js.map +1 -0
- package/dist/application/install/apply-install.d.ts +6 -0
- package/dist/application/install/apply-install.d.ts.map +1 -0
- package/dist/application/install/apply-install.js +83 -0
- package/dist/application/install/apply-install.js.map +1 -0
- package/dist/application/install/bootstrap-workspace.d.ts +33 -0
- package/dist/application/install/bootstrap-workspace.d.ts.map +1 -0
- package/dist/application/install/bootstrap-workspace.js +123 -0
- package/dist/application/install/bootstrap-workspace.js.map +1 -0
- package/dist/application/install/discover-workspace-targets.d.ts +9 -0
- package/dist/application/install/discover-workspace-targets.d.ts.map +1 -0
- package/dist/application/install/discover-workspace-targets.js +61 -0
- package/dist/application/install/discover-workspace-targets.js.map +1 -0
- package/dist/application/install/generate-guidance.d.ts +3 -0
- package/dist/application/install/generate-guidance.d.ts.map +1 -0
- package/dist/application/install/generate-guidance.js +25 -0
- package/dist/application/install/generate-guidance.js.map +1 -0
- package/dist/application/install/initialize-workspace.d.ts +16 -0
- package/dist/application/install/initialize-workspace.d.ts.map +1 -0
- package/dist/application/install/initialize-workspace.js +165 -0
- package/dist/application/install/initialize-workspace.js.map +1 -0
- package/dist/application/install/plan-install.d.ts +9 -0
- package/dist/application/install/plan-install.d.ts.map +1 -0
- package/dist/application/install/plan-install.js +123 -0
- package/dist/application/install/plan-install.js.map +1 -0
- package/dist/application/install/reconcile-state.d.ts +6 -0
- package/dist/application/install/reconcile-state.d.ts.map +1 -0
- package/dist/application/install/reconcile-state.js +39 -0
- package/dist/application/install/reconcile-state.js.map +1 -0
- package/dist/application/install/refresh-workspace-runtime.d.ts +9 -0
- package/dist/application/install/refresh-workspace-runtime.d.ts.map +1 -0
- package/dist/application/install/refresh-workspace-runtime.js +69 -0
- package/dist/application/install/refresh-workspace-runtime.js.map +1 -0
- package/dist/application/install/rewrite-installed-ai-layer.d.ts +3 -0
- package/dist/application/install/rewrite-installed-ai-layer.d.ts.map +1 -0
- package/dist/application/install/rewrite-installed-ai-layer.js +72 -0
- package/dist/application/install/rewrite-installed-ai-layer.js.map +1 -0
- package/dist/application/install/shared-runtime.d.ts +5 -0
- package/dist/application/install/shared-runtime.d.ts.map +1 -0
- package/dist/application/install/shared-runtime.js +388 -0
- package/dist/application/install/shared-runtime.js.map +1 -0
- package/dist/application/install/shell-integration.d.ts +40 -0
- package/dist/application/install/shell-integration.d.ts.map +1 -0
- package/dist/application/install/shell-integration.js +232 -0
- package/dist/application/install/shell-integration.js.map +1 -0
- package/dist/application/install/validate-environment.d.ts +2 -0
- package/dist/application/install/validate-environment.d.ts.map +1 -0
- package/dist/application/install/validate-environment.js +19 -0
- package/dist/application/install/validate-environment.js.map +1 -0
- package/dist/application/install/workspace-launcher.d.ts +7 -0
- package/dist/application/install/workspace-launcher.d.ts.map +1 -0
- package/dist/application/install/workspace-launcher.js +45 -0
- package/dist/application/install/workspace-launcher.js.map +1 -0
- package/dist/application/maintenance/audit-install.d.ts +17 -0
- package/dist/application/maintenance/audit-install.d.ts.map +1 -0
- package/dist/application/maintenance/audit-install.js +31 -0
- package/dist/application/maintenance/audit-install.js.map +1 -0
- package/dist/application/maintenance/diff-install.d.ts +7 -0
- package/dist/application/maintenance/diff-install.d.ts.map +1 -0
- package/dist/application/maintenance/diff-install.js +20 -0
- package/dist/application/maintenance/diff-install.js.map +1 -0
- package/dist/application/maintenance/doctor-workspace.d.ts +6 -0
- package/dist/application/maintenance/doctor-workspace.d.ts.map +1 -0
- package/dist/application/maintenance/doctor-workspace.js +12 -0
- package/dist/application/maintenance/doctor-workspace.js.map +1 -0
- package/dist/application/maintenance/prune-install.d.ts +5 -0
- package/dist/application/maintenance/prune-install.d.ts.map +1 -0
- package/dist/application/maintenance/prune-install.js +30 -0
- package/dist/application/maintenance/prune-install.js.map +1 -0
- package/dist/application/maintenance/sync-install.d.ts +6 -0
- package/dist/application/maintenance/sync-install.d.ts.map +1 -0
- package/dist/application/maintenance/sync-install.js +24 -0
- package/dist/application/maintenance/sync-install.js.map +1 -0
- package/dist/application/maintenance/upgrade-surface.d.ts +7 -0
- package/dist/application/maintenance/upgrade-surface.d.ts.map +1 -0
- package/dist/application/maintenance/upgrade-surface.js +18 -0
- package/dist/application/maintenance/upgrade-surface.js.map +1 -0
- package/dist/application/migration/scan-reference-install.d.ts +9 -0
- package/dist/application/migration/scan-reference-install.d.ts.map +1 -0
- package/dist/application/migration/scan-reference-install.js +17 -0
- package/dist/application/migration/scan-reference-install.js.map +1 -0
- package/dist/application/planning/resolve-bundles.d.ts +8 -0
- package/dist/application/planning/resolve-bundles.d.ts.map +1 -0
- package/dist/application/planning/resolve-bundles.js +40 -0
- package/dist/application/planning/resolve-bundles.js.map +1 -0
- package/dist/application/recommendations/recommend-bundles.d.ts +2 -0
- package/dist/application/recommendations/recommend-bundles.d.ts.map +1 -0
- package/dist/application/recommendations/recommend-bundles.js +89 -0
- package/dist/application/recommendations/recommend-bundles.js.map +1 -0
- package/dist/application/recommendations/recommend-from-intelligence.d.ts +3 -0
- package/dist/application/recommendations/recommend-from-intelligence.d.ts.map +1 -0
- package/dist/application/recommendations/recommend-from-intelligence.js +38 -0
- package/dist/application/recommendations/recommend-from-intelligence.js.map +1 -0
- package/dist/application/recommendations/recommend-templates.d.ts +2 -0
- package/dist/application/recommendations/recommend-templates.d.ts.map +1 -0
- package/dist/application/recommendations/recommend-templates.js +11 -0
- package/dist/application/recommendations/recommend-templates.js.map +1 -0
- package/dist/application/recursive/build-environment.d.ts +12 -0
- package/dist/application/recursive/build-environment.d.ts.map +1 -0
- package/dist/application/recursive/build-environment.js +91 -0
- package/dist/application/recursive/build-environment.js.map +1 -0
- package/dist/application/recursive/compact-session.d.ts +6 -0
- package/dist/application/recursive/compact-session.d.ts.map +1 -0
- package/dist/application/recursive/compact-session.js +10 -0
- package/dist/application/recursive/compact-session.js.map +1 -0
- package/dist/application/recursive/finalize-session.d.ts +6 -0
- package/dist/application/recursive/finalize-session.d.ts.map +1 -0
- package/dist/application/recursive/finalize-session.js +10 -0
- package/dist/application/recursive/finalize-session.js.map +1 -0
- package/dist/application/recursive/plan-task.d.ts +16 -0
- package/dist/application/recursive/plan-task.d.ts.map +1 -0
- package/dist/application/recursive/plan-task.js +115 -0
- package/dist/application/recursive/plan-task.js.map +1 -0
- package/dist/application/runtime/assess-architecture-significance.d.ts +13 -0
- package/dist/application/runtime/assess-architecture-significance.d.ts.map +1 -0
- package/dist/application/runtime/assess-architecture-significance.js +65 -0
- package/dist/application/runtime/assess-architecture-significance.js.map +1 -0
- package/dist/application/runtime/command-catalog.d.ts +17 -0
- package/dist/application/runtime/command-catalog.d.ts.map +1 -0
- package/dist/application/runtime/command-catalog.js +99 -0
- package/dist/application/runtime/command-catalog.js.map +1 -0
- package/dist/application/runtime/create-asr-record.d.ts +18 -0
- package/dist/application/runtime/create-asr-record.d.ts.map +1 -0
- package/dist/application/runtime/create-asr-record.js +105 -0
- package/dist/application/runtime/create-asr-record.js.map +1 -0
- package/dist/application/runtime/decision-runtime-store.d.ts +13 -0
- package/dist/application/runtime/decision-runtime-store.d.ts.map +1 -0
- package/dist/application/runtime/decision-runtime-store.js +60 -0
- package/dist/application/runtime/decision-runtime-store.js.map +1 -0
- package/dist/application/runtime/derive-impact-analysis.d.ts +5 -0
- package/dist/application/runtime/derive-impact-analysis.d.ts.map +1 -0
- package/dist/application/runtime/derive-impact-analysis.js +78 -0
- package/dist/application/runtime/derive-impact-analysis.js.map +1 -0
- package/dist/application/runtime/select-files-of-interest.d.ts +29 -0
- package/dist/application/runtime/select-files-of-interest.d.ts.map +1 -0
- package/dist/application/runtime/select-files-of-interest.js +162 -0
- package/dist/application/runtime/select-files-of-interest.js.map +1 -0
- package/dist/application/runtime/task-runtime-store.d.ts +37 -0
- package/dist/application/runtime/task-runtime-store.d.ts.map +1 -0
- package/dist/application/runtime/task-runtime-store.js +84 -0
- package/dist/application/runtime/task-runtime-store.js.map +1 -0
- package/dist/application/validation/validate-templates.d.ts +19 -0
- package/dist/application/validation/validate-templates.d.ts.map +1 -0
- package/dist/application/validation/validate-templates.js +142 -0
- package/dist/application/validation/validate-templates.js.map +1 -0
- package/dist/cli/commands/audit.d.ts +3 -0
- package/dist/cli/commands/audit.d.ts.map +1 -0
- package/dist/cli/commands/audit.js +37 -0
- package/dist/cli/commands/audit.js.map +1 -0
- package/dist/cli/commands/catalog.d.ts +3 -0
- package/dist/cli/commands/catalog.d.ts.map +1 -0
- package/dist/cli/commands/catalog.js +142 -0
- package/dist/cli/commands/catalog.js.map +1 -0
- package/dist/cli/commands/commands.d.ts +3 -0
- package/dist/cli/commands/commands.d.ts.map +1 -0
- package/dist/cli/commands/commands.js +32 -0
- package/dist/cli/commands/commands.js.map +1 -0
- package/dist/cli/commands/diff-install.d.ts +3 -0
- package/dist/cli/commands/diff-install.d.ts.map +1 -0
- package/dist/cli/commands/diff-install.js +31 -0
- package/dist/cli/commands/diff-install.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +3 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +33 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/export.d.ts +3 -0
- package/dist/cli/commands/export.d.ts.map +1 -0
- package/dist/cli/commands/export.js +37 -0
- package/dist/cli/commands/export.js.map +1 -0
- package/dist/cli/commands/flow.d.ts +3 -0
- package/dist/cli/commands/flow.d.ts.map +1 -0
- package/dist/cli/commands/flow.js +27 -0
- package/dist/cli/commands/flow.js.map +1 -0
- package/dist/cli/commands/init.d.ts +3 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +91 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/install.d.ts +3 -0
- package/dist/cli/commands/install.d.ts.map +1 -0
- package/dist/cli/commands/install.js +119 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/intelligence.d.ts +3 -0
- package/dist/cli/commands/intelligence.d.ts.map +1 -0
- package/dist/cli/commands/intelligence.js +63 -0
- package/dist/cli/commands/intelligence.js.map +1 -0
- package/dist/cli/commands/maintenance.d.ts +3 -0
- package/dist/cli/commands/maintenance.d.ts.map +1 -0
- package/dist/cli/commands/maintenance.js +81 -0
- package/dist/cli/commands/maintenance.js.map +1 -0
- package/dist/cli/commands/observability.d.ts +3 -0
- package/dist/cli/commands/observability.d.ts.map +1 -0
- package/dist/cli/commands/observability.js +33 -0
- package/dist/cli/commands/observability.js.map +1 -0
- package/dist/cli/commands/pack.d.ts +3 -0
- package/dist/cli/commands/pack.d.ts.map +1 -0
- package/dist/cli/commands/pack.js +25 -0
- package/dist/cli/commands/pack.js.map +1 -0
- package/dist/cli/commands/parallel.d.ts +3 -0
- package/dist/cli/commands/parallel.d.ts.map +1 -0
- package/dist/cli/commands/parallel.js +45 -0
- package/dist/cli/commands/parallel.js.map +1 -0
- package/dist/cli/commands/prune.d.ts +3 -0
- package/dist/cli/commands/prune.d.ts.map +1 -0
- package/dist/cli/commands/prune.js +25 -0
- package/dist/cli/commands/prune.js.map +1 -0
- package/dist/cli/commands/recommend.d.ts +3 -0
- package/dist/cli/commands/recommend.d.ts.map +1 -0
- package/dist/cli/commands/recommend.js +25 -0
- package/dist/cli/commands/recommend.js.map +1 -0
- package/dist/cli/commands/recursive.d.ts +3 -0
- package/dist/cli/commands/recursive.d.ts.map +1 -0
- package/dist/cli/commands/recursive.js +138 -0
- package/dist/cli/commands/recursive.js.map +1 -0
- package/dist/cli/commands/refresh.d.ts +3 -0
- package/dist/cli/commands/refresh.d.ts.map +1 -0
- package/dist/cli/commands/refresh.js +33 -0
- package/dist/cli/commands/refresh.js.map +1 -0
- package/dist/cli/commands/review.d.ts +3 -0
- package/dist/cli/commands/review.d.ts.map +1 -0
- package/dist/cli/commands/review.js +53 -0
- package/dist/cli/commands/review.js.map +1 -0
- package/dist/cli/commands/script-runner.d.ts +2 -0
- package/dist/cli/commands/script-runner.d.ts.map +1 -0
- package/dist/cli/commands/script-runner.js +21 -0
- package/dist/cli/commands/script-runner.js.map +1 -0
- package/dist/cli/commands/shell.d.ts +3 -0
- package/dist/cli/commands/shell.d.ts.map +1 -0
- package/dist/cli/commands/shell.js +91 -0
- package/dist/cli/commands/shell.js.map +1 -0
- package/dist/cli/commands/status.d.ts +3 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +31 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/sync.d.ts +3 -0
- package/dist/cli/commands/sync.d.ts.map +1 -0
- package/dist/cli/commands/sync.js +25 -0
- package/dist/cli/commands/sync.js.map +1 -0
- package/dist/cli/commands/target.d.ts +3 -0
- package/dist/cli/commands/target.d.ts.map +1 -0
- package/dist/cli/commands/target.js +78 -0
- package/dist/cli/commands/target.js.map +1 -0
- package/dist/cli/commands/task.d.ts +3 -0
- package/dist/cli/commands/task.d.ts.map +1 -0
- package/dist/cli/commands/task.js +57 -0
- package/dist/cli/commands/task.js.map +1 -0
- package/dist/cli/commands/template.d.ts +3 -0
- package/dist/cli/commands/template.d.ts.map +1 -0
- package/dist/cli/commands/template.js +81 -0
- package/dist/cli/commands/template.js.map +1 -0
- package/dist/cli/commands/upgrade-surface.d.ts +3 -0
- package/dist/cli/commands/upgrade-surface.d.ts.map +1 -0
- package/dist/cli/commands/upgrade-surface.js +24 -0
- package/dist/cli/commands/upgrade-surface.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +86 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/interactive/default-recommendations.d.ts +9 -0
- package/dist/cli/interactive/default-recommendations.d.ts.map +1 -0
- package/dist/cli/interactive/default-recommendations.js +19 -0
- package/dist/cli/interactive/default-recommendations.js.map +1 -0
- package/dist/cli/interactive/entry-router.d.ts +5 -0
- package/dist/cli/interactive/entry-router.d.ts.map +1 -0
- package/dist/cli/interactive/entry-router.js +30 -0
- package/dist/cli/interactive/entry-router.js.map +1 -0
- package/dist/cli/interactive/invocation-context.d.ts +16 -0
- package/dist/cli/interactive/invocation-context.d.ts.map +1 -0
- package/dist/cli/interactive/invocation-context.js +33 -0
- package/dist/cli/interactive/invocation-context.js.map +1 -0
- package/dist/cli/interactive/onboarding-flow.d.ts +3 -0
- package/dist/cli/interactive/onboarding-flow.d.ts.map +1 -0
- package/dist/cli/interactive/onboarding-flow.js +81 -0
- package/dist/cli/interactive/onboarding-flow.js.map +1 -0
- package/dist/cli/interactive/project-hub.d.ts +3 -0
- package/dist/cli/interactive/project-hub.d.ts.map +1 -0
- package/dist/cli/interactive/project-hub.js +159 -0
- package/dist/cli/interactive/project-hub.js.map +1 -0
- package/dist/cli/interactive/prompt-io.d.ts +23 -0
- package/dist/cli/interactive/prompt-io.d.ts.map +1 -0
- package/dist/cli/interactive/prompt-io.js +144 -0
- package/dist/cli/interactive/prompt-io.js.map +1 -0
- package/dist/cli/interactive/prompts/folder-selection.d.ts +3 -0
- package/dist/cli/interactive/prompts/folder-selection.d.ts.map +1 -0
- package/dist/cli/interactive/prompts/folder-selection.js +25 -0
- package/dist/cli/interactive/prompts/folder-selection.js.map +1 -0
- package/dist/cli/interactive/prompts/module-selection.d.ts +4 -0
- package/dist/cli/interactive/prompts/module-selection.d.ts.map +1 -0
- package/dist/cli/interactive/prompts/module-selection.js +21 -0
- package/dist/cli/interactive/prompts/module-selection.js.map +1 -0
- package/dist/cli/interactive/prompts/setup-profile.d.ts +4 -0
- package/dist/cli/interactive/prompts/setup-profile.d.ts.map +1 -0
- package/dist/cli/interactive/prompts/setup-profile.js +20 -0
- package/dist/cli/interactive/prompts/setup-profile.js.map +1 -0
- package/dist/cli/interactive/prompts/target-selection.d.ts +3 -0
- package/dist/cli/interactive/prompts/target-selection.d.ts.map +1 -0
- package/dist/cli/interactive/prompts/target-selection.js +28 -0
- package/dist/cli/interactive/prompts/target-selection.js.map +1 -0
- package/dist/cli/interactive/recovery-notices.d.ts +3 -0
- package/dist/cli/interactive/recovery-notices.d.ts.map +1 -0
- package/dist/cli/interactive/recovery-notices.js +13 -0
- package/dist/cli/interactive/recovery-notices.js.map +1 -0
- package/dist/cli/interactive/renderers/choice-list.d.ts +2 -0
- package/dist/cli/interactive/renderers/choice-list.d.ts.map +1 -0
- package/dist/cli/interactive/renderers/choice-list.js +9 -0
- package/dist/cli/interactive/renderers/choice-list.js.map +1 -0
- package/dist/cli/interactive/renderers/completion-screen.d.ts +4 -0
- package/dist/cli/interactive/renderers/completion-screen.d.ts.map +1 -0
- package/dist/cli/interactive/renderers/completion-screen.js +16 -0
- package/dist/cli/interactive/renderers/completion-screen.js.map +1 -0
- package/dist/cli/interactive/renderers/hub-screen.d.ts +3 -0
- package/dist/cli/interactive/renderers/hub-screen.d.ts.map +1 -0
- package/dist/cli/interactive/renderers/hub-screen.js +12 -0
- package/dist/cli/interactive/renderers/hub-screen.js.map +1 -0
- package/dist/cli/interactive/renderers/progress.d.ts +3 -0
- package/dist/cli/interactive/renderers/progress.d.ts.map +1 -0
- package/dist/cli/interactive/renderers/progress.js +5 -0
- package/dist/cli/interactive/renderers/progress.js.map +1 -0
- package/dist/cli/interactive/renderers/screen-layout.d.ts +9 -0
- package/dist/cli/interactive/renderers/screen-layout.d.ts.map +1 -0
- package/dist/cli/interactive/renderers/screen-layout.js +27 -0
- package/dist/cli/interactive/renderers/screen-layout.js.map +1 -0
- package/dist/cli/interactive/renderers/step-frame.d.ts +3 -0
- package/dist/cli/interactive/renderers/step-frame.d.ts.map +1 -0
- package/dist/cli/interactive/renderers/step-frame.js +7 -0
- package/dist/cli/interactive/renderers/step-frame.js.map +1 -0
- package/dist/cli/interactive/renderers/text-style.d.ts +10 -0
- package/dist/cli/interactive/renderers/text-style.d.ts.map +1 -0
- package/dist/cli/interactive/renderers/text-style.js +52 -0
- package/dist/cli/interactive/renderers/text-style.js.map +1 -0
- package/dist/cli/interactive/renderers/welcome-screen.d.ts +3 -0
- package/dist/cli/interactive/renderers/welcome-screen.d.ts.map +1 -0
- package/dist/cli/interactive/renderers/welcome-screen.js +22 -0
- package/dist/cli/interactive/renderers/welcome-screen.js.map +1 -0
- package/dist/cli/interactive/review-plan.d.ts +19 -0
- package/dist/cli/interactive/review-plan.d.ts.map +1 -0
- package/dist/cli/interactive/review-plan.js +151 -0
- package/dist/cli/interactive/review-plan.js.map +1 -0
- package/dist/cli/interactive/review-summary.d.ts +4 -0
- package/dist/cli/interactive/review-summary.d.ts.map +1 -0
- package/dist/cli/interactive/review-summary.js +20 -0
- package/dist/cli/interactive/review-summary.js.map +1 -0
- package/dist/cli/interactive/session-state.d.ts +35 -0
- package/dist/cli/interactive/session-state.d.ts.map +1 -0
- package/dist/cli/interactive/session-state.js +11 -0
- package/dist/cli/interactive/session-state.js.map +1 -0
- package/dist/cli/interactive/setup-intent.d.ts +32 -0
- package/dist/cli/interactive/setup-intent.d.ts.map +1 -0
- package/dist/cli/interactive/setup-intent.js +54 -0
- package/dist/cli/interactive/setup-intent.js.map +1 -0
- package/dist/cli/interactive/terminal-capabilities.d.ts +20 -0
- package/dist/cli/interactive/terminal-capabilities.d.ts.map +1 -0
- package/dist/cli/interactive/terminal-capabilities.js +69 -0
- package/dist/cli/interactive/terminal-capabilities.js.map +1 -0
- package/dist/domain/capabilities/capability-record.d.ts +25 -0
- package/dist/domain/capabilities/capability-record.d.ts.map +1 -0
- package/dist/domain/capabilities/capability-record.js +2 -0
- package/dist/domain/capabilities/capability-record.js.map +1 -0
- package/dist/domain/capabilities/capability-taxonomy.d.ts +11 -0
- package/dist/domain/capabilities/capability-taxonomy.d.ts.map +1 -0
- package/dist/domain/capabilities/capability-taxonomy.js +2 -0
- package/dist/domain/capabilities/capability-taxonomy.js.map +1 -0
- package/dist/domain/intelligence/instruction-plan.d.ts +26 -0
- package/dist/domain/intelligence/instruction-plan.d.ts.map +1 -0
- package/dist/domain/intelligence/instruction-plan.js +2 -0
- package/dist/domain/intelligence/instruction-plan.js.map +1 -0
- package/dist/domain/intelligence/repo-intelligence.d.ts +1007 -0
- package/dist/domain/intelligence/repo-intelligence.d.ts.map +1 -0
- package/dist/domain/intelligence/repo-intelligence.js +102 -0
- package/dist/domain/intelligence/repo-intelligence.js.map +1 -0
- package/dist/domain/intelligence/repo-map.d.ts +30 -0
- package/dist/domain/intelligence/repo-map.d.ts.map +1 -0
- package/dist/domain/intelligence/repo-map.js +2 -0
- package/dist/domain/intelligence/repo-map.js.map +1 -0
- package/dist/domain/manifests/index.d.ts +154 -0
- package/dist/domain/manifests/index.d.ts.map +1 -0
- package/dist/domain/manifests/index.js +37 -0
- package/dist/domain/manifests/index.js.map +1 -0
- package/dist/domain/observability/benchmark-expectation.d.ts +11 -0
- package/dist/domain/observability/benchmark-expectation.d.ts.map +1 -0
- package/dist/domain/observability/benchmark-expectation.js +2 -0
- package/dist/domain/observability/benchmark-expectation.js.map +1 -0
- package/dist/domain/observability/event.d.ts +17 -0
- package/dist/domain/observability/event.d.ts.map +1 -0
- package/dist/domain/observability/event.js +2 -0
- package/dist/domain/observability/event.js.map +1 -0
- package/dist/domain/observability/summary.d.ts +10 -0
- package/dist/domain/observability/summary.d.ts.map +1 -0
- package/dist/domain/observability/summary.js +2 -0
- package/dist/domain/observability/summary.js.map +1 -0
- package/dist/domain/operations/install-plan.d.ts +85 -0
- package/dist/domain/operations/install-plan.d.ts.map +1 -0
- package/dist/domain/operations/install-plan.js +2 -0
- package/dist/domain/operations/install-plan.js.map +1 -0
- package/dist/domain/parallel/merge-readiness.d.ts +10 -0
- package/dist/domain/parallel/merge-readiness.d.ts.map +1 -0
- package/dist/domain/parallel/merge-readiness.js +2 -0
- package/dist/domain/parallel/merge-readiness.js.map +1 -0
- package/dist/domain/parallel/parallel-plan.d.ts +24 -0
- package/dist/domain/parallel/parallel-plan.d.ts.map +1 -0
- package/dist/domain/parallel/parallel-plan.js +2 -0
- package/dist/domain/parallel/parallel-plan.js.map +1 -0
- package/dist/domain/parallel/shard-state.d.ts +11 -0
- package/dist/domain/parallel/shard-state.d.ts.map +1 -0
- package/dist/domain/parallel/shard-state.js +2 -0
- package/dist/domain/parallel/shard-state.js.map +1 -0
- package/dist/domain/recursive/adr-candidate.d.ts +45 -0
- package/dist/domain/recursive/adr-candidate.d.ts.map +1 -0
- package/dist/domain/recursive/adr-candidate.js +20 -0
- package/dist/domain/recursive/adr-candidate.js.map +1 -0
- package/dist/domain/recursive/asr.d.ts +41 -0
- package/dist/domain/recursive/asr.d.ts.map +1 -0
- package/dist/domain/recursive/asr.js +19 -0
- package/dist/domain/recursive/asr.js.map +1 -0
- package/dist/domain/recursive/budget.d.ts +47 -0
- package/dist/domain/recursive/budget.d.ts.map +1 -0
- package/dist/domain/recursive/budget.js +41 -0
- package/dist/domain/recursive/budget.js.map +1 -0
- package/dist/domain/recursive/session-summary.d.ts +56 -0
- package/dist/domain/recursive/session-summary.d.ts.map +1 -0
- package/dist/domain/recursive/session-summary.js +21 -0
- package/dist/domain/recursive/session-summary.js.map +1 -0
- package/dist/domain/recursive/session.d.ts +181 -0
- package/dist/domain/recursive/session.d.ts.map +1 -0
- package/dist/domain/recursive/session.js +41 -0
- package/dist/domain/recursive/session.js.map +1 -0
- package/dist/domain/recursive/template-registry.d.ts +83 -0
- package/dist/domain/recursive/template-registry.d.ts.map +1 -0
- package/dist/domain/recursive/template-registry.js +28 -0
- package/dist/domain/recursive/template-registry.js.map +1 -0
- package/dist/domain/recursive/trace-event.d.ts +61 -0
- package/dist/domain/recursive/trace-event.d.ts.map +1 -0
- package/dist/domain/recursive/trace-event.js +36 -0
- package/dist/domain/recursive/trace-event.js.map +1 -0
- package/dist/domain/runtime/architecture-significance.d.ts +35 -0
- package/dist/domain/runtime/architecture-significance.d.ts.map +1 -0
- package/dist/domain/runtime/architecture-significance.js +20 -0
- package/dist/domain/runtime/architecture-significance.js.map +1 -0
- package/dist/domain/runtime/decision-coverage-summary.d.ts +29 -0
- package/dist/domain/runtime/decision-coverage-summary.d.ts.map +1 -0
- package/dist/domain/runtime/decision-coverage-summary.js +14 -0
- package/dist/domain/runtime/decision-coverage-summary.js.map +1 -0
- package/dist/domain/runtime/decision-record.d.ts +482 -0
- package/dist/domain/runtime/decision-record.d.ts.map +1 -0
- package/dist/domain/runtime/decision-record.js +78 -0
- package/dist/domain/runtime/decision-record.js.map +1 -0
- package/dist/domain/runtime/file-interest.d.ts +148 -0
- package/dist/domain/runtime/file-interest.d.ts.map +1 -0
- package/dist/domain/runtime/file-interest.js +42 -0
- package/dist/domain/runtime/file-interest.js.map +1 -0
- package/dist/domain/runtime/impact-analysis.d.ts +122 -0
- package/dist/domain/runtime/impact-analysis.d.ts.map +1 -0
- package/dist/domain/runtime/impact-analysis.js +24 -0
- package/dist/domain/runtime/impact-analysis.js.map +1 -0
- package/dist/domain/runtime/task-pack.d.ts +278 -0
- package/dist/domain/runtime/task-pack.d.ts.map +1 -0
- package/dist/domain/runtime/task-pack.js +61 -0
- package/dist/domain/runtime/task-pack.js.map +1 -0
- package/dist/domain/runtime/template-registry.d.ts +100 -0
- package/dist/domain/runtime/template-registry.d.ts.map +1 -0
- package/dist/domain/runtime/template-registry.js +35 -0
- package/dist/domain/runtime/template-registry.js.map +1 -0
- package/dist/domain/runtime/working-memory.d.ts +44 -0
- package/dist/domain/runtime/working-memory.d.ts.map +1 -0
- package/dist/domain/runtime/working-memory.js +19 -0
- package/dist/domain/runtime/working-memory.js.map +1 -0
- package/dist/domain/state/install-state.d.ts +28 -0
- package/dist/domain/state/install-state.d.ts.map +1 -0
- package/dist/domain/state/install-state.js +15 -0
- package/dist/domain/state/install-state.js.map +1 -0
- package/dist/domain/targets/adapter.d.ts +18 -0
- package/dist/domain/targets/adapter.d.ts.map +1 -0
- package/dist/domain/targets/adapter.js +16 -0
- package/dist/domain/targets/adapter.js.map +1 -0
- package/dist/infrastructure/diagnostics/recommendation-reporter.d.ts +3 -0
- package/dist/infrastructure/diagnostics/recommendation-reporter.d.ts.map +1 -0
- package/dist/infrastructure/diagnostics/recommendation-reporter.js +44 -0
- package/dist/infrastructure/diagnostics/recommendation-reporter.js.map +1 -0
- package/dist/infrastructure/diagnostics/reporter.d.ts +6 -0
- package/dist/infrastructure/diagnostics/reporter.d.ts.map +1 -0
- package/dist/infrastructure/diagnostics/reporter.js +35 -0
- package/dist/infrastructure/diagnostics/reporter.js.map +1 -0
- package/dist/infrastructure/filesystem/apply-operation.d.ts +3 -0
- package/dist/infrastructure/filesystem/apply-operation.d.ts.map +1 -0
- package/dist/infrastructure/filesystem/apply-operation.js +75 -0
- package/dist/infrastructure/filesystem/apply-operation.js.map +1 -0
- package/dist/infrastructure/filesystem/normalize-target-path.d.ts +2 -0
- package/dist/infrastructure/filesystem/normalize-target-path.d.ts.map +1 -0
- package/dist/infrastructure/filesystem/normalize-target-path.js +11 -0
- package/dist/infrastructure/filesystem/normalize-target-path.js.map +1 -0
- package/dist/infrastructure/observability/local-metrics-store.d.ts +18 -0
- package/dist/infrastructure/observability/local-metrics-store.d.ts.map +1 -0
- package/dist/infrastructure/observability/local-metrics-store.js +35 -0
- package/dist/infrastructure/observability/local-metrics-store.js.map +1 -0
- package/dist/infrastructure/recursive/session-store.d.ts +45 -0
- package/dist/infrastructure/recursive/session-store.d.ts.map +1 -0
- package/dist/infrastructure/recursive/session-store.js +62 -0
- package/dist/infrastructure/recursive/session-store.js.map +1 -0
- package/dist/infrastructure/recursive/template-loader.d.ts +3 -0
- package/dist/infrastructure/recursive/template-loader.d.ts.map +1 -0
- package/dist/infrastructure/recursive/template-loader.js +19 -0
- package/dist/infrastructure/recursive/template-loader.js.map +1 -0
- package/dist/infrastructure/recursive/trace-logger.d.ts +3 -0
- package/dist/infrastructure/recursive/trace-logger.d.ts.map +1 -0
- package/dist/infrastructure/recursive/trace-logger.js +8 -0
- package/dist/infrastructure/recursive/trace-logger.js.map +1 -0
- package/dist/shared/constants.d.ts +97 -0
- package/dist/shared/constants.d.ts.map +1 -0
- package/dist/shared/constants.js +111 -0
- package/dist/shared/constants.js.map +1 -0
- package/dist/shared/errors.d.ts +8 -0
- package/dist/shared/errors.d.ts.map +1 -0
- package/dist/shared/errors.js +14 -0
- package/dist/shared/errors.js.map +1 -0
- package/dist/shared/fs.d.ts +8 -0
- package/dist/shared/fs.d.ts.map +1 -0
- package/dist/shared/fs.js +35 -0
- package/dist/shared/fs.js.map +1 -0
- package/dist/shared/index.d.ts +5 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +5 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/seeded-knowledge.d.ts +8 -0
- package/dist/shared/seeded-knowledge.d.ts.map +1 -0
- package/dist/shared/seeded-knowledge.js +49 -0
- package/dist/shared/seeded-knowledge.js.map +1 -0
- package/docs/agents.md +45 -0
- package/docs/authoring/engineering-assistant-port.md +108 -0
- package/docs/authoring/enhanced-skill-import.md +89 -0
- package/docs/authoring/skills.md +53 -0
- package/docs/benchmark-scenarios.md +29 -0
- package/docs/catalog/framework-packs.md +22 -0
- package/docs/catalog/frameworks/aspnet-core.md +18 -0
- package/docs/catalog/frameworks/django.md +18 -0
- package/docs/catalog/frameworks/express.md +18 -0
- package/docs/catalog/frameworks/fastapi.md +18 -0
- package/docs/catalog/frameworks/gin.md +18 -0
- package/docs/catalog/frameworks/ktor.md +18 -0
- package/docs/catalog/frameworks/laravel.md +14 -0
- package/docs/catalog/frameworks/nextjs.md +14 -0
- package/docs/catalog/frameworks/react.md +18 -0
- package/docs/catalog/frameworks/spring-boot.md +18 -0
- package/docs/catalog/frameworks/symfony.md +18 -0
- package/docs/catalog/frameworks/vite.md +18 -0
- package/docs/catalog/language-packs.md +39 -0
- package/docs/catalog/languages/cpp.md +25 -0
- package/docs/catalog/languages/dotnet.md +59 -0
- package/docs/catalog/languages/go.md +29 -0
- package/docs/catalog/languages/java.md +60 -0
- package/docs/catalog/languages/kotlin.md +29 -0
- package/docs/catalog/languages/lua.md +59 -0
- package/docs/catalog/languages/perl.md +25 -0
- package/docs/catalog/languages/php.md +30 -0
- package/docs/catalog/languages/powershell.md +59 -0
- package/docs/catalog/languages/python.md +30 -0
- package/docs/catalog/languages/rust.md +25 -0
- package/docs/catalog/languages/shell.md +25 -0
- package/docs/catalog/languages/swift.md +25 -0
- package/docs/catalog/languages/typescript.md +60 -0
- package/docs/commands.md +202 -0
- package/docs/content-architecture.md +3 -0
- package/docs/flow-orchestration/parallel-execution.md +7 -0
- package/docs/flow-orchestration.md +63 -0
- package/docs/generated-artifacts.md +129 -0
- package/docs/hooks/catalog.md +44 -0
- package/docs/install/targets.md +29 -0
- package/docs/installation.md +98 -0
- package/docs/languages.md +31 -0
- package/docs/maintenance-lifecycle.md +62 -0
- package/docs/manifests.md +16 -0
- package/docs/migration/reference-project.md +18 -0
- package/docs/observability/benchmark-authoring.md +6 -0
- package/docs/observability/eval-model.md +7 -0
- package/docs/observability/event-taxonomy.md +12 -0
- package/docs/observability.md +44 -0
- package/docs/pack-authoring.md +19 -0
- package/docs/parallel-worktrees.md +6 -0
- package/docs/profile-guide.md +63 -0
- package/docs/quality-gates.md +56 -0
- package/docs/quickstart.md +41 -0
- package/docs/release-process.md +30 -0
- package/docs/repo-cartography.md +12 -0
- package/docs/style-guides/agent-style-guide.md +21 -0
- package/docs/style-guides/command-style-guide.md +21 -0
- package/docs/style-guides/rule-style-guide.md +20 -0
- package/docs/target-support-matrix.md +73 -0
- package/docs/targets/capability-families.md +13 -0
- package/docs/targets/translation-vs-emulation.md +11 -0
- package/docs/targets.md +20 -0
- package/docs/templates/authoring.md +23 -0
- package/docs/troubleshooting.md +53 -0
- package/docs/versioning-and-migration.md +25 -0
- package/examples/README.md +12 -0
- package/examples/knowledge-bases/README.md +12 -0
- package/examples/production-readiness-demo/README.md +16 -0
- package/hooks/README.md +3 -0
- package/hooks/shared/PostChangeSummary.ps1 +1 -0
- package/hooks/shared/PreChangeQualityGate.ps1 +1 -0
- package/hooks/shared/post-change-summary.sh +3 -0
- package/hooks/shared/pre-change-quality-gate.sh +3 -0
- package/install.ps1 +28 -0
- package/install.sh +24 -0
- package/knowledge-bases/operations/observability-and-evals/README.md +7 -0
- package/knowledge-bases/seeded/README.md +33 -0
- package/knowledge-bases/seeded/dotnet/README.md +18 -0
- package/knowledge-bases/seeded/dotnet/docs/examples-guide.md +15 -0
- package/knowledge-bases/seeded/dotnet/docs/frameworks.md +11 -0
- package/knowledge-bases/seeded/dotnet/docs/overview.md +33 -0
- package/knowledge-bases/seeded/dotnet/docs/review-checklist.md +27 -0
- package/knowledge-bases/seeded/dotnet/examples/01-aspnet-core-crud-api.md +13 -0
- package/knowledge-bases/seeded/dotnet/examples/02-background-worker-with-queue-processing.md +13 -0
- package/knowledge-bases/seeded/dotnet/examples/03-shared-domain-library.md +13 -0
- package/knowledge-bases/seeded/dotnet/examples/04-cli-automation-tool.md +13 -0
- package/knowledge-bases/seeded/dotnet/knowledge-base.json +8 -0
- package/knowledge-bases/seeded/dotnet/legacy-seed/csharp/coding-style.md +72 -0
- package/knowledge-bases/seeded/dotnet/legacy-seed/csharp/hooks.md +25 -0
- package/knowledge-bases/seeded/dotnet/legacy-seed/csharp/patterns.md +50 -0
- package/knowledge-bases/seeded/dotnet/legacy-seed/csharp/security.md +58 -0
- package/knowledge-bases/seeded/dotnet/legacy-seed/csharp/testing.md +46 -0
- package/knowledge-bases/seeded/dotnet/rules/common/agents.md +50 -0
- package/knowledge-bases/seeded/dotnet/rules/common/coding-style.md +48 -0
- package/knowledge-bases/seeded/dotnet/rules/common/development-workflow.md +38 -0
- package/knowledge-bases/seeded/dotnet/rules/common/git-workflow.md +24 -0
- package/knowledge-bases/seeded/dotnet/rules/common/hooks.md +30 -0
- package/knowledge-bases/seeded/dotnet/rules/common/patterns.md +31 -0
- package/knowledge-bases/seeded/dotnet/rules/common/performance.md +55 -0
- package/knowledge-bases/seeded/dotnet/rules/common/security.md +29 -0
- package/knowledge-bases/seeded/dotnet/rules/common/testing.md +29 -0
- package/knowledge-bases/seeded/dotnet/rules/dotnet/coding-style.md +38 -0
- package/knowledge-bases/seeded/dotnet/rules/dotnet/hooks.md +24 -0
- package/knowledge-bases/seeded/dotnet/rules/dotnet/patterns.md +30 -0
- package/knowledge-bases/seeded/dotnet/rules/dotnet/security.md +28 -0
- package/knowledge-bases/seeded/dotnet/rules/dotnet/testing.md +31 -0
- package/knowledge-bases/seeded/java/README.md +18 -0
- package/knowledge-bases/seeded/java/docs/examples-guide.md +15 -0
- package/knowledge-bases/seeded/java/docs/frameworks.md +11 -0
- package/knowledge-bases/seeded/java/docs/overview.md +34 -0
- package/knowledge-bases/seeded/java/docs/review-checklist.md +27 -0
- package/knowledge-bases/seeded/java/examples/01-spring-boot-rest-api.md +13 -0
- package/knowledge-bases/seeded/java/examples/02-event-consumer-service.md +13 -0
- package/knowledge-bases/seeded/java/examples/03-gradle-multi-module-backend.md +13 -0
- package/knowledge-bases/seeded/java/examples/04-library-module-with-strong-domain-tests.md +13 -0
- package/knowledge-bases/seeded/java/knowledge-base.json +8 -0
- package/knowledge-bases/seeded/java/legacy-seed/java/coding-style.md +114 -0
- package/knowledge-bases/seeded/java/legacy-seed/java/hooks.md +18 -0
- package/knowledge-bases/seeded/java/legacy-seed/java/patterns.md +146 -0
- package/knowledge-bases/seeded/java/legacy-seed/java/security.md +100 -0
- package/knowledge-bases/seeded/java/legacy-seed/java/testing.md +131 -0
- package/knowledge-bases/seeded/java/rules/common/agents.md +50 -0
- package/knowledge-bases/seeded/java/rules/common/coding-style.md +48 -0
- package/knowledge-bases/seeded/java/rules/common/development-workflow.md +38 -0
- package/knowledge-bases/seeded/java/rules/common/git-workflow.md +24 -0
- package/knowledge-bases/seeded/java/rules/common/hooks.md +30 -0
- package/knowledge-bases/seeded/java/rules/common/patterns.md +31 -0
- package/knowledge-bases/seeded/java/rules/common/performance.md +55 -0
- package/knowledge-bases/seeded/java/rules/common/security.md +29 -0
- package/knowledge-bases/seeded/java/rules/common/testing.md +29 -0
- package/knowledge-bases/seeded/java/rules/java/coding-style.md +22 -0
- package/knowledge-bases/seeded/java/rules/java/hooks.md +23 -0
- package/knowledge-bases/seeded/java/rules/java/patterns.md +22 -0
- package/knowledge-bases/seeded/java/rules/java/security.md +21 -0
- package/knowledge-bases/seeded/java/rules/java/testing.md +23 -0
- package/knowledge-bases/seeded/lua/README.md +18 -0
- package/knowledge-bases/seeded/lua/docs/examples-guide.md +15 -0
- package/knowledge-bases/seeded/lua/docs/frameworks.md +11 -0
- package/knowledge-bases/seeded/lua/docs/overview.md +30 -0
- package/knowledge-bases/seeded/lua/docs/review-checklist.md +27 -0
- package/knowledge-bases/seeded/lua/examples/01-neovim-plugin.md +13 -0
- package/knowledge-bases/seeded/lua/examples/02-openresty-request-handler.md +13 -0
- package/knowledge-bases/seeded/lua/examples/03-l/303/266ve-gameplay-module.md +13 -0
- package/knowledge-bases/seeded/lua/examples/04-embedded-automation-script.md +13 -0
- package/knowledge-bases/seeded/lua/knowledge-base.json +8 -0
- package/knowledge-bases/seeded/lua/rules/common/agents.md +50 -0
- package/knowledge-bases/seeded/lua/rules/common/coding-style.md +48 -0
- package/knowledge-bases/seeded/lua/rules/common/development-workflow.md +38 -0
- package/knowledge-bases/seeded/lua/rules/common/git-workflow.md +24 -0
- package/knowledge-bases/seeded/lua/rules/common/hooks.md +30 -0
- package/knowledge-bases/seeded/lua/rules/common/patterns.md +31 -0
- package/knowledge-bases/seeded/lua/rules/common/performance.md +55 -0
- package/knowledge-bases/seeded/lua/rules/common/security.md +29 -0
- package/knowledge-bases/seeded/lua/rules/common/testing.md +29 -0
- package/knowledge-bases/seeded/lua/rules/lua/coding-style.md +27 -0
- package/knowledge-bases/seeded/lua/rules/lua/hooks.md +21 -0
- package/knowledge-bases/seeded/lua/rules/lua/patterns.md +23 -0
- package/knowledge-bases/seeded/lua/rules/lua/security.md +20 -0
- package/knowledge-bases/seeded/lua/rules/lua/testing.md +23 -0
- package/knowledge-bases/seeded/powershell/README.md +18 -0
- package/knowledge-bases/seeded/powershell/docs/examples-guide.md +15 -0
- package/knowledge-bases/seeded/powershell/docs/frameworks.md +11 -0
- package/knowledge-bases/seeded/powershell/docs/overview.md +30 -0
- package/knowledge-bases/seeded/powershell/docs/review-checklist.md +27 -0
- package/knowledge-bases/seeded/powershell/examples/01-script-module.md +13 -0
- package/knowledge-bases/seeded/powershell/examples/02-ci-admin-automation-script.md +13 -0
- package/knowledge-bases/seeded/powershell/examples/03-remote-fleet-maintenance-command.md +13 -0
- package/knowledge-bases/seeded/powershell/examples/04-developer-bootstrap-utility.md +13 -0
- package/knowledge-bases/seeded/powershell/knowledge-base.json +8 -0
- package/knowledge-bases/seeded/powershell/rules/common/agents.md +50 -0
- package/knowledge-bases/seeded/powershell/rules/common/coding-style.md +48 -0
- package/knowledge-bases/seeded/powershell/rules/common/development-workflow.md +38 -0
- package/knowledge-bases/seeded/powershell/rules/common/git-workflow.md +24 -0
- package/knowledge-bases/seeded/powershell/rules/common/hooks.md +30 -0
- package/knowledge-bases/seeded/powershell/rules/common/patterns.md +31 -0
- package/knowledge-bases/seeded/powershell/rules/common/performance.md +55 -0
- package/knowledge-bases/seeded/powershell/rules/common/security.md +29 -0
- package/knowledge-bases/seeded/powershell/rules/common/testing.md +29 -0
- package/knowledge-bases/seeded/powershell/rules/powershell/coding-style.md +25 -0
- package/knowledge-bases/seeded/powershell/rules/powershell/hooks.md +24 -0
- package/knowledge-bases/seeded/powershell/rules/powershell/patterns.md +23 -0
- package/knowledge-bases/seeded/powershell/rules/powershell/security.md +23 -0
- package/knowledge-bases/seeded/powershell/rules/powershell/testing.md +24 -0
- package/knowledge-bases/seeded/typescript/README.md +18 -0
- package/knowledge-bases/seeded/typescript/docs/examples-guide.md +15 -0
- package/knowledge-bases/seeded/typescript/docs/frameworks.md +11 -0
- package/knowledge-bases/seeded/typescript/docs/overview.md +34 -0
- package/knowledge-bases/seeded/typescript/docs/review-checklist.md +27 -0
- package/knowledge-bases/seeded/typescript/examples/01-node-api.md +13 -0
- package/knowledge-bases/seeded/typescript/examples/02-react-component-library.md +13 -0
- package/knowledge-bases/seeded/typescript/examples/03-nextjs-app.md +13 -0
- package/knowledge-bases/seeded/typescript/examples/04-monorepo-shared-types-and-validation.md +13 -0
- package/knowledge-bases/seeded/typescript/knowledge-base.json +8 -0
- package/knowledge-bases/seeded/typescript/legacy-seed/typescript/coding-style.md +199 -0
- package/knowledge-bases/seeded/typescript/legacy-seed/typescript/hooks.md +22 -0
- package/knowledge-bases/seeded/typescript/legacy-seed/typescript/patterns.md +52 -0
- package/knowledge-bases/seeded/typescript/legacy-seed/typescript/security.md +28 -0
- package/knowledge-bases/seeded/typescript/legacy-seed/typescript/testing.md +18 -0
- package/knowledge-bases/seeded/typescript/rules/common/agents.md +50 -0
- package/knowledge-bases/seeded/typescript/rules/common/coding-style.md +48 -0
- package/knowledge-bases/seeded/typescript/rules/common/development-workflow.md +38 -0
- package/knowledge-bases/seeded/typescript/rules/common/git-workflow.md +24 -0
- package/knowledge-bases/seeded/typescript/rules/common/hooks.md +30 -0
- package/knowledge-bases/seeded/typescript/rules/common/patterns.md +31 -0
- package/knowledge-bases/seeded/typescript/rules/common/performance.md +55 -0
- package/knowledge-bases/seeded/typescript/rules/common/security.md +29 -0
- package/knowledge-bases/seeded/typescript/rules/common/testing.md +29 -0
- package/knowledge-bases/seeded/typescript/rules/typescript/coding-style.md +30 -0
- package/knowledge-bases/seeded/typescript/rules/typescript/hooks.md +25 -0
- package/knowledge-bases/seeded/typescript/rules/typescript/patterns.md +23 -0
- package/knowledge-bases/seeded/typescript/rules/typescript/security.md +23 -0
- package/knowledge-bases/seeded/typescript/rules/typescript/testing.md +22 -0
- package/knowledge-bases/structured/README.md +3 -0
- package/knowledge-bases/structured/cpp/README.md +3 -0
- package/knowledge-bases/structured/cpp/docs/frameworks.md +3 -0
- package/knowledge-bases/structured/cpp/docs/overview.md +12 -0
- package/knowledge-bases/structured/cpp/docs/review-checklist.md +6 -0
- package/knowledge-bases/structured/cpp/examples/01-reference-scenario.md +3 -0
- package/knowledge-bases/structured/cpp/knowledge-base.json +13 -0
- package/knowledge-bases/structured/go/README.md +3 -0
- package/knowledge-bases/structured/go/docs/frameworks.md +3 -0
- package/knowledge-bases/structured/go/docs/overview.md +12 -0
- package/knowledge-bases/structured/go/docs/review-checklist.md +6 -0
- package/knowledge-bases/structured/go/examples/01-reference-scenario.md +3 -0
- package/knowledge-bases/structured/go/knowledge-base.json +13 -0
- package/knowledge-bases/structured/kotlin/README.md +3 -0
- package/knowledge-bases/structured/kotlin/docs/frameworks.md +3 -0
- package/knowledge-bases/structured/kotlin/docs/overview.md +12 -0
- package/knowledge-bases/structured/kotlin/docs/review-checklist.md +6 -0
- package/knowledge-bases/structured/kotlin/examples/01-reference-scenario.md +3 -0
- package/knowledge-bases/structured/kotlin/knowledge-base.json +13 -0
- package/knowledge-bases/structured/perl/README.md +3 -0
- package/knowledge-bases/structured/perl/docs/frameworks.md +3 -0
- package/knowledge-bases/structured/perl/docs/overview.md +12 -0
- package/knowledge-bases/structured/perl/docs/review-checklist.md +6 -0
- package/knowledge-bases/structured/perl/examples/01-reference-scenario.md +3 -0
- package/knowledge-bases/structured/perl/knowledge-base.json +13 -0
- package/knowledge-bases/structured/php/README.md +3 -0
- package/knowledge-bases/structured/php/docs/frameworks.md +3 -0
- package/knowledge-bases/structured/php/docs/overview.md +12 -0
- package/knowledge-bases/structured/php/docs/review-checklist.md +6 -0
- package/knowledge-bases/structured/php/examples/01-reference-scenario.md +3 -0
- package/knowledge-bases/structured/php/knowledge-base.json +13 -0
- package/knowledge-bases/structured/python/README.md +3 -0
- package/knowledge-bases/structured/python/docs/frameworks.md +3 -0
- package/knowledge-bases/structured/python/docs/overview.md +12 -0
- package/knowledge-bases/structured/python/docs/review-checklist.md +6 -0
- package/knowledge-bases/structured/python/examples/01-reference-scenario.md +3 -0
- package/knowledge-bases/structured/python/knowledge-base.json +13 -0
- package/knowledge-bases/structured/rust/README.md +3 -0
- package/knowledge-bases/structured/rust/docs/frameworks.md +3 -0
- package/knowledge-bases/structured/rust/docs/overview.md +12 -0
- package/knowledge-bases/structured/rust/docs/review-checklist.md +6 -0
- package/knowledge-bases/structured/rust/examples/01-reference-scenario.md +3 -0
- package/knowledge-bases/structured/rust/knowledge-base.json +13 -0
- package/knowledge-bases/structured/shell/README.md +3 -0
- package/knowledge-bases/structured/shell/docs/frameworks.md +3 -0
- package/knowledge-bases/structured/shell/docs/overview.md +12 -0
- package/knowledge-bases/structured/shell/docs/review-checklist.md +6 -0
- package/knowledge-bases/structured/shell/examples/01-reference-scenario.md +3 -0
- package/knowledge-bases/structured/shell/knowledge-base.json +13 -0
- package/knowledge-bases/structured/swift/README.md +3 -0
- package/knowledge-bases/structured/swift/docs/frameworks.md +3 -0
- package/knowledge-bases/structured/swift/docs/overview.md +12 -0
- package/knowledge-bases/structured/swift/docs/review-checklist.md +6 -0
- package/knowledge-bases/structured/swift/examples/01-reference-scenario.md +3 -0
- package/knowledge-bases/structured/swift/knowledge-base.json +13 -0
- package/manifests/bundles/core.json +384 -0
- package/manifests/bundles/frameworks.json +196 -0
- package/manifests/bundles/languages-seeded.json +136 -0
- package/manifests/bundles/languages-v1.json +317 -0
- package/manifests/catalog/capability-taxonomy.json +47 -0
- package/manifests/catalog/compatibility-matrix.json +4259 -0
- package/manifests/catalog/engineering-assistant-import-inventory.json +215 -0
- package/manifests/catalog/enhanced-skill-import-inventory.json +402 -0
- package/manifests/catalog/flow-artifacts.json +324 -0
- package/manifests/catalog/framework-assets.json +124 -0
- package/manifests/catalog/harness-capability-matrix.json +429 -0
- package/manifests/catalog/index.json +56 -0
- package/manifests/catalog/language-assets.json +616 -0
- package/manifests/catalog/package-surface.json +426 -0
- package/manifests/catalog/seeded-knowledge-files.json +1094 -0
- package/manifests/hooks/index.json +70 -0
- package/manifests/profiles/ai-runtime.json +24 -0
- package/manifests/profiles/core.json +24 -0
- package/manifests/profiles/developer.json +24 -0
- package/manifests/profiles/game-dev-native.json +24 -0
- package/manifests/profiles/legacy-modernization.json +24 -0
- package/manifests/profiles/rapid-prototyping.json +24 -0
- package/manifests/profiles/release-manager.json +24 -0
- package/manifests/profiles/research-first.json +24 -0
- package/manifests/profiles/reviewer.json +24 -0
- package/manifests/profiles/security.json +24 -0
- package/manifests/targets/core.json +125 -0
- package/mcp/README.md +3 -0
- package/mcp/servers/context7.codex.toml +3 -0
- package/mcp/servers/context7.md +3 -0
- package/mcp/servers/openai-developer-docs.codex.toml +3 -0
- package/mcp/servers/openai-developer-docs.md +3 -0
- package/mcp/servers/playwright.codex.toml +3 -0
- package/mcp/servers/playwright.md +3 -0
- package/mcp/servers/semgrep.md +3 -0
- package/package.json +126 -0
- package/profiles/README.md +3 -0
- package/profiles/claude-code.md +3 -0
- package/profiles/codex.md +3 -0
- package/profiles/core.md +3 -0
- package/profiles/developer.md +3 -0
- package/profiles/release-manager.md +3 -0
- package/rules/README.md +58 -0
- package/rules/common/README.md +37 -0
- package/rules/common/agents.md +50 -0
- package/rules/common/coding-style.md +48 -0
- package/rules/common/development-workflow.md +38 -0
- package/rules/common/git-workflow.md +24 -0
- package/rules/common/hooks.md +30 -0
- package/rules/common/patterns.md +31 -0
- package/rules/common/performance.md +55 -0
- package/rules/common/security.md +29 -0
- package/rules/common/testing.md +29 -0
- package/rules/cpp/README.md +19 -0
- package/rules/cpp/coding-style.md +3 -0
- package/rules/cpp/patterns.md +3 -0
- package/rules/cpp/security.md +3 -0
- package/rules/cpp/testing.md +3 -0
- package/rules/cpp/tooling.md +3 -0
- package/rules/dotnet/README.md +41 -0
- package/rules/dotnet/coding-style.md +38 -0
- package/rules/dotnet/hooks.md +24 -0
- package/rules/dotnet/patterns.md +30 -0
- package/rules/dotnet/security.md +28 -0
- package/rules/dotnet/testing.md +31 -0
- package/rules/golang/README.md +19 -0
- package/rules/golang/coding-style.md +3 -0
- package/rules/golang/patterns.md +3 -0
- package/rules/golang/security.md +3 -0
- package/rules/golang/testing.md +3 -0
- package/rules/golang/tooling.md +3 -0
- package/rules/java/README.md +41 -0
- package/rules/java/coding-style.md +22 -0
- package/rules/java/hooks.md +23 -0
- package/rules/java/patterns.md +22 -0
- package/rules/java/security.md +21 -0
- package/rules/java/testing.md +23 -0
- package/rules/kotlin/README.md +19 -0
- package/rules/kotlin/coding-style.md +3 -0
- package/rules/kotlin/patterns.md +3 -0
- package/rules/kotlin/security.md +3 -0
- package/rules/kotlin/testing.md +3 -0
- package/rules/kotlin/tooling.md +3 -0
- package/rules/lua/README.md +41 -0
- package/rules/lua/coding-style.md +27 -0
- package/rules/lua/hooks.md +21 -0
- package/rules/lua/patterns.md +23 -0
- package/rules/lua/security.md +20 -0
- package/rules/lua/testing.md +23 -0
- package/rules/perl/README.md +19 -0
- package/rules/perl/coding-style.md +3 -0
- package/rules/perl/patterns.md +3 -0
- package/rules/perl/security.md +3 -0
- package/rules/perl/testing.md +3 -0
- package/rules/perl/tooling.md +3 -0
- package/rules/php/README.md +19 -0
- package/rules/php/coding-style.md +3 -0
- package/rules/php/patterns.md +3 -0
- package/rules/php/security.md +3 -0
- package/rules/php/testing.md +3 -0
- package/rules/php/tooling.md +3 -0
- package/rules/powershell/README.md +41 -0
- package/rules/powershell/coding-style.md +25 -0
- package/rules/powershell/hooks.md +24 -0
- package/rules/powershell/patterns.md +23 -0
- package/rules/powershell/security.md +23 -0
- package/rules/powershell/testing.md +24 -0
- package/rules/python/README.md +19 -0
- package/rules/python/coding-style.md +3 -0
- package/rules/python/patterns.md +3 -0
- package/rules/python/security.md +3 -0
- package/rules/python/testing.md +3 -0
- package/rules/python/tooling.md +3 -0
- package/rules/rust/README.md +19 -0
- package/rules/rust/coding-style.md +3 -0
- package/rules/rust/patterns.md +3 -0
- package/rules/rust/security.md +3 -0
- package/rules/rust/testing.md +3 -0
- package/rules/rust/tooling.md +3 -0
- package/rules/shell/README.md +19 -0
- package/rules/shell/coding-style.md +3 -0
- package/rules/shell/patterns.md +3 -0
- package/rules/shell/security.md +3 -0
- package/rules/shell/testing.md +3 -0
- package/rules/shell/tooling.md +3 -0
- package/rules/swift/README.md +19 -0
- package/rules/swift/coding-style.md +3 -0
- package/rules/swift/patterns.md +3 -0
- package/rules/swift/security.md +3 -0
- package/rules/swift/testing.md +3 -0
- package/rules/swift/tooling.md +3 -0
- package/rules/typescript/README.md +41 -0
- package/rules/typescript/coding-style.md +30 -0
- package/rules/typescript/hooks.md +25 -0
- package/rules/typescript/patterns.md +23 -0
- package/rules/typescript/security.md +23 -0
- package/rules/typescript/testing.md +22 -0
- package/schemas/content/content-metadata.schema.json +100 -0
- package/schemas/hooks/hook.schema.json +57 -0
- package/schemas/manifests/catalog.schema.json +22 -0
- package/schemas/manifests/harness-capability-matrix.schema.json +127 -0
- package/schemas/manifests/package-surface.schema.json +63 -0
- package/schemas/manifests/seeded-knowledge-files.schema.json +69 -0
- package/schemas/runtime/architecture-significance.schema.json +45 -0
- package/schemas/runtime/benchmark-expectation.schema.json +33 -0
- package/schemas/runtime/decision-coverage-summary.schema.json +46 -0
- package/schemas/runtime/decision-record.schema.json +266 -0
- package/schemas/runtime/file-interest.schema.json +78 -0
- package/schemas/runtime/flow-state.schema.json +39 -0
- package/schemas/runtime/impact-analysis.schema.json +83 -0
- package/schemas/runtime/instruction-plan.schema.json +63 -0
- package/schemas/runtime/observability-event.schema.json +40 -0
- package/schemas/runtime/observability-summary.schema.json +32 -0
- package/schemas/runtime/recursive-adr-candidate.schema.json +57 -0
- package/schemas/runtime/recursive-budget.schema.json +40 -0
- package/schemas/runtime/recursive-session-summary.schema.json +49 -0
- package/schemas/runtime/recursive-session.schema.json +65 -0
- package/schemas/runtime/recursive-trace-event.schema.json +43 -0
- package/schemas/runtime/repo-map.schema.json +65 -0
- package/schemas/runtime/task-pack.schema.json +172 -0
- package/schemas/runtime/working-memory.schema.json +52 -0
- package/schemas/runtime/worktree-plan.schema.json +72 -0
- package/schemas/runtime/worktree-state.schema.json +41 -0
- package/schemas/templates/recursive-template-registry.schema.json +43 -0
- package/schemas/templates/runtime-template-registry.schema.json +55 -0
- package/schemas/templates/template-catalog.schema.json +38 -0
- package/scripts/ci/capability-matrix-shared.mjs +263 -0
- package/scripts/ci/generate-compatibility-matrix.mjs +189 -0
- package/scripts/ci/generate-target-support-docs.mjs +27 -0
- package/scripts/ci/release-smoke.mjs +121 -0
- package/scripts/ci/smoke-runner.mjs +90 -0
- package/scripts/ci/validate-capability-matrix.mjs +30 -0
- package/scripts/ci/validate-content-metadata.mjs +188 -0
- package/scripts/ci/validate-doc-command-alignment.mjs +146 -0
- package/scripts/ci/validate-framework-coverage.mjs +52 -0
- package/scripts/ci/validate-generated-sync.mjs +122 -0
- package/scripts/ci/validate-manifest-runtime-consistency.mjs +134 -0
- package/scripts/ci/validate-no-placeholders.mjs +86 -0
- package/scripts/ci/validate-pack-dependencies.mjs +78 -0
- package/scripts/ci/validate-packed-install-surface.mjs +77 -0
- package/scripts/ci/validate-seeded-knowledge-coverage.mjs +89 -0
- package/scripts/ci/validate-skill-depth.mjs +88 -0
- package/scripts/codex/apply-home-config.mjs +39 -0
- package/scripts/intelligence/cartograph-repo.mjs +15 -0
- package/scripts/intelligence/classify-boundaries.mjs +15 -0
- package/scripts/intelligence/detect-frameworks.mjs +16 -0
- package/scripts/intelligence/scan-repo.mjs +16 -0
- package/scripts/intelligence/score-recommendations.mjs +16 -0
- package/scripts/intelligence/shared/cartography.mjs +129 -0
- package/scripts/intelligence/shared.mjs +660 -0
- package/scripts/intelligence/synthesize-instructions.mjs +90 -0
- package/scripts/knowledge/import-pack.mjs +56 -0
- package/scripts/knowledge/normalize-pack.mjs +49 -0
- package/scripts/knowledge/report-coverage.mjs +82 -0
- package/scripts/knowledge/report-drift.mjs +67 -0
- package/scripts/runtime/check-merge-readiness.mjs +44 -0
- package/scripts/runtime/check-parallel-status.mjs +39 -0
- package/scripts/runtime/create-parallel-plan.mjs +61 -0
- package/scripts/runtime/flow-status.mjs +114 -0
- package/scripts/runtime/record-event.mjs +44 -0
- package/scripts/runtime/recursive-plan.mjs +25 -0
- package/scripts/runtime/render-observability-report.mjs +50 -0
- package/scripts/runtime/report-effectiveness.mjs +35 -0
- package/scripts/runtime/summarize-observability.mjs +57 -0
- package/scripts/templates/README.md +40 -0
- package/scripts/templates/config/required-sections.json +37 -0
- package/scripts/templates/powershell/Check-TemplateFrontmatter.ps1 +54 -0
- package/scripts/templates/powershell/Check-TemplateLinks.ps1 +22 -0
- package/scripts/templates/powershell/Get-MissingTemplateSections.ps1 +21 -0
- package/scripts/templates/powershell/New-TemplateIndex.ps1 +19 -0
- package/scripts/templates/powershell/Test-WorkflowContracts.ps1 +26 -0
- package/scripts/templates/shell/check-template-frontmatter.sh +39 -0
- package/scripts/templates/shell/check-template-links.sh +25 -0
- package/scripts/templates/shell/generate-template-index.sh +17 -0
- package/scripts/templates/shell/list-missing-template-sections.sh +36 -0
- package/scripts/templates/shell/verify-workflow-contracts.sh +21 -0
- package/skills/README.md +94 -0
- package/skills/api-contract-review/SKILL.md +56 -0
- package/skills/api-contract-review/references/event-and-async-contracts.md +16 -0
- package/skills/api-contract-review/references/examples.md +15 -0
- package/skills/api-contract-review/references/http-contract-checklist.md +24 -0
- package/skills/api-contract-review/references/protobuf-and-buf.md +12 -0
- package/skills/api-contract-review/references/review-template.md +19 -0
- package/skills/api-contract-review/references/schema-compatibility.md +20 -0
- package/skills/api-contract-review/references/style-and-linting.md +15 -0
- package/skills/architecture-decision-records/SKILL.md +53 -0
- package/skills/architecture-decision-records/references/adr-anti-patterns.md +10 -0
- package/skills/architecture-decision-records/references/adr-template.md +31 -0
- package/skills/architecture-decision-records/references/decision-rubric.md +22 -0
- package/skills/architecture-decision-records/references/examples.md +15 -0
- package/skills/architecture-decision-records/references/madr-style-guide.md +17 -0
- package/skills/cloud-architect/SKILL.md +61 -0
- package/skills/cloud-architect/references/agent-patterns.md +23 -0
- package/skills/cloud-architect/references/debugging-playbook.md +24 -0
- package/skills/cloud-architect/references/distributed-systems.md +13 -0
- package/skills/cloud-architect/references/examples.md +19 -0
- package/skills/cloud-architect/references/output-templates.md +35 -0
- package/skills/cloud-architect/references/platform-and-deployment.md +13 -0
- package/skills/cloud-architect/references/reliability-security-cost.md +17 -0
- package/skills/cloud-architect/references/repo-exploration.md +42 -0
- package/skills/cpp-engineering/SKILL.md +43 -0
- package/skills/db-migration-review/SKILL.md +56 -0
- package/skills/db-migration-review/references/engine-specific-hotspots.md +21 -0
- package/skills/db-migration-review/references/examples.md +16 -0
- package/skills/db-migration-review/references/expand-contract.md +19 -0
- package/skills/db-migration-review/references/review-template.md +25 -0
- package/skills/db-migration-review/references/risk-taxonomy.md +30 -0
- package/skills/db-migration-review/references/rollout-and-backfill.md +23 -0
- package/skills/db-migration-review/references/tooling-signals.md +21 -0
- package/skills/dependency-upgrade-safety/SKILL.md +36 -0
- package/skills/documentation-lookup/SKILL.md +45 -0
- package/skills/documentation-lookup/references/source-priority.md +6 -0
- package/skills/dotnet-engineering/SKILL.md +76 -0
- package/skills/dotnet-engineering/references/agent-patterns.md +30 -0
- package/skills/dotnet-engineering/references/architecture-and-di.md +28 -0
- package/skills/dotnet-engineering/references/aspnet-and-efcore.md +22 -0
- package/skills/dotnet-engineering/references/cloud-native-and-aspire.md +21 -0
- package/skills/dotnet-engineering/references/debugging-playbook.md +21 -0
- package/skills/dotnet-engineering/references/examples.md +22 -0
- package/skills/dotnet-engineering/references/output-templates.md +33 -0
- package/skills/dotnet-engineering/references/repo-exploration.md +38 -0
- package/skills/dotnet-engineering/references/testing-and-performance.md +25 -0
- package/skills/engineering-assistant/SKILL.md +59 -0
- package/skills/engineering-assistant/references/architecture.md +47 -0
- package/skills/engineering-assistant/references/change-discipline.md +37 -0
- package/skills/engineering-assistant/references/project-notes.md +36 -0
- package/skills/engineering-assistant/references/skill-composition.md +33 -0
- package/skills/engineering-assistant/references/solid-and-patterns.md +34 -0
- package/skills/go-engineering/SKILL.md +43 -0
- package/skills/incident-triage/SKILL.md +36 -0
- package/skills/java-engineering/SKILL.md +48 -0
- package/skills/java-engineering/references/agent-patterns.md +23 -0
- package/skills/java-engineering/references/build-and-structure.md +14 -0
- package/skills/java-engineering/references/debugging-playbook.md +24 -0
- package/skills/java-engineering/references/examples.md +15 -0
- package/skills/java-engineering/references/output-templates.md +35 -0
- package/skills/java-engineering/references/repo-exploration.md +42 -0
- package/skills/java-engineering/references/spring-patterns.md +12 -0
- package/skills/java-engineering/references/testing-concurrency-performance.md +11 -0
- package/skills/javascript-engineering/SKILL.md +66 -0
- package/skills/javascript-engineering/references/agent-patterns.md +22 -0
- package/skills/javascript-engineering/references/browser-and-bundler-patterns.md +14 -0
- package/skills/javascript-engineering/references/debugging-playbook.md +17 -0
- package/skills/javascript-engineering/references/ecosystem-guide.md +19 -0
- package/skills/javascript-engineering/references/examples.md +15 -0
- package/skills/javascript-engineering/references/node-service-patterns.md +15 -0
- package/skills/javascript-engineering/references/output-templates.md +17 -0
- package/skills/javascript-engineering/references/package-contracts.md +12 -0
- package/skills/javascript-engineering/references/repo-exploration.md +24 -0
- package/skills/javascript-engineering/references/testing-and-debugging.md +13 -0
- package/skills/kotlin-engineering/SKILL.md +43 -0
- package/skills/lua-engineering/SKILL.md +78 -0
- package/skills/lua-engineering/references/agent-patterns.md +22 -0
- package/skills/lua-engineering/references/debugging-and-testing.md +13 -0
- package/skills/lua-engineering/references/debugging-playbook.md +17 -0
- package/skills/lua-engineering/references/examples.md +15 -0
- package/skills/lua-engineering/references/game-and-addon-patterns.md +15 -0
- package/skills/lua-engineering/references/language-idioms.md +16 -0
- package/skills/lua-engineering/references/neovim-and-editor-patterns.md +17 -0
- package/skills/lua-engineering/references/openresty-patterns.md +15 -0
- package/skills/lua-engineering/references/output-templates.md +17 -0
- package/skills/lua-engineering/references/repo-exploration.md +25 -0
- package/skills/lua-engineering/references/runtime-profiles.md +12 -0
- package/skills/lua-engineering/references/tooling-and-quality.md +16 -0
- package/skills/observability-and-eval/SKILL.md +6 -0
- package/skills/observability-setup/SKILL.md +35 -0
- package/skills/parallel-worktree-supervisor/SKILL.md +55 -0
- package/skills/parallel-worktree-supervisor/references/examples.md +14 -0
- package/skills/parallel-worktree-supervisor/references/merge-readiness.md +15 -0
- package/skills/parallel-worktree-supervisor/references/output-template.md +16 -0
- package/skills/parallel-worktree-supervisor/references/stacked-diffs-and-review.md +17 -0
- package/skills/parallel-worktree-supervisor/references/task-sharding-rules.md +22 -0
- package/skills/parallel-worktree-supervisor/references/worktree-operations.md +16 -0
- package/skills/performance-profiling/SKILL.md +36 -0
- package/skills/perl-engineering/SKILL.md +43 -0
- package/skills/php-engineering/SKILL.md +43 -0
- package/skills/powershell-engineering/SKILL.md +48 -0
- package/skills/powershell-engineering/references/agent-patterns.md +23 -0
- package/skills/powershell-engineering/references/debugging-playbook.md +24 -0
- package/skills/powershell-engineering/references/examples.md +17 -0
- package/skills/powershell-engineering/references/output-templates.md +35 -0
- package/skills/powershell-engineering/references/remoting-and-ops.md +12 -0
- package/skills/powershell-engineering/references/repo-exploration.md +42 -0
- package/skills/powershell-engineering/references/scripting-and-modules.md +14 -0
- package/skills/powershell-engineering/references/testing-and-ci.md +11 -0
- package/skills/pr-triage-and-summary/SKILL.md +35 -0
- package/skills/python-engineering/SKILL.md +56 -0
- package/skills/python-engineering/references/agent-patterns.md +23 -0
- package/skills/python-engineering/references/async-and-concurrency.md +19 -0
- package/skills/python-engineering/references/debugging-playbook.md +24 -0
- package/skills/python-engineering/references/ecosystem-guide.md +32 -0
- package/skills/python-engineering/references/examples.md +19 -0
- package/skills/python-engineering/references/output-templates.md +35 -0
- package/skills/python-engineering/references/repo-exploration.md +42 -0
- package/skills/python-engineering/references/testing-and-quality.md +16 -0
- package/skills/release-readiness/SKILL.md +45 -0
- package/skills/release-readiness/references/release-report-template.md +7 -0
- package/skills/repo-cartographer/SKILL.md +10 -0
- package/skills/repo-modernization/SKILL.md +56 -0
- package/skills/repo-modernization/references/automation-candidates.md +19 -0
- package/skills/repo-modernization/references/dependency-and-build-modernization.md +16 -0
- package/skills/repo-modernization/references/examples.md +15 -0
- package/skills/repo-modernization/references/modernization-layers.md +21 -0
- package/skills/repo-modernization/references/roadmap-template.md +25 -0
- package/skills/repo-modernization/references/safety-rails.md +15 -0
- package/skills/repo-modernization/references/strangler-and-seams.md +18 -0
- package/skills/repo-onboarding/SKILL.md +56 -0
- package/skills/repo-onboarding/references/command-discovery.md +13 -0
- package/skills/repo-onboarding/references/discovery-checklist.md +24 -0
- package/skills/repo-onboarding/references/examples.md +13 -0
- package/skills/repo-onboarding/references/monorepo-signals.md +17 -0
- package/skills/repo-onboarding/references/output-template.md +26 -0
- package/skills/repo-onboarding/references/ownership-and-health-signals.md +21 -0
- package/skills/repo-onboarding/references/repo-archetypes.md +13 -0
- package/skills/rust-engineering/SKILL.md +43 -0
- package/skills/security-scan/SKILL.md +45 -0
- package/skills/security-scan/references/review-checklist.md +7 -0
- package/skills/shell-engineering/SKILL.md +43 -0
- package/skills/speckit-analyze/SKILL.md +190 -0
- package/skills/speckit-checklist/SKILL.md +301 -0
- package/skills/speckit-clarify/SKILL.md +183 -0
- package/skills/speckit-constitution/SKILL.md +86 -0
- package/skills/speckit-implement/SKILL.md +204 -0
- package/skills/speckit-plan/SKILL.md +151 -0
- package/skills/speckit-specify/SKILL.md +304 -0
- package/skills/speckit-tasks/SKILL.md +197 -0
- package/skills/speckit-taskstoissues/SKILL.md +35 -0
- package/skills/swift-engineering/SKILL.md +43 -0
- package/skills/test-strategy-and-coverage/SKILL.md +35 -0
- package/skills/typescript-engineering/SKILL.md +77 -0
- package/skills/typescript-engineering/references/agent-patterns.md +23 -0
- package/skills/typescript-engineering/references/debugging-playbook.md +21 -0
- package/skills/typescript-engineering/references/examples.md +22 -0
- package/skills/typescript-engineering/references/frontend-and-backend-patterns.md +19 -0
- package/skills/typescript-engineering/references/output-templates.md +25 -0
- package/skills/typescript-engineering/references/repo-exploration.md +25 -0
- package/skills/typescript-engineering/references/runtime-validation-and-boundaries.md +20 -0
- package/skills/typescript-engineering/references/tsconfig-and-build.md +25 -0
- package/skills/typescript-engineering/references/type-system-patterns.md +20 -0
- package/skills/typescript-engineering/references/workspace-and-monorepo.md +23 -0
- package/targets/claude-code/adapter.json +56 -0
- package/targets/claude-code/runtime/.claude/CLAUDE.md +3 -0
- package/targets/claude-code/runtime/.claude/agents/documentation-lookup.md +3 -0
- package/targets/claude-code/runtime/.claude/agents/release-readiness.md +3 -0
- package/targets/claude-code/runtime/.claude/agents/repo-onboarding.md +3 -0
- package/targets/claude-code/runtime/.claude/agents/security-scan.md +3 -0
- package/targets/claude-code/runtime/.claude/hooks/post-tool-use.sh +4 -0
- package/targets/claude-code/runtime/.claude/hooks/pre-tool-use.sh +4 -0
- package/targets/claude-code/runtime/.claude/settings.json +26 -0
- package/targets/codex/adapter.json +56 -0
- package/targets/codex/runtime/.codex/README.md +3 -0
- package/targets/codex/runtime/.codex/config.toml +15 -0
- package/targets/cursor/adapter.json +56 -0
- package/targets/opencode/adapter.json +56 -0
- package/templates/instructions/cursor-rule-template.mdc +7 -0
- package/templates/instructions/root-agents-template.md +88 -0
- package/templates/instructions/scoped-agents-template.md +90 -0
- package/templates/tasks/fix-bug.md +93 -0
- package/templates/tasks/implement-feature.md +95 -0
- package/templates/workflows/implement-cpp-change.md +175 -0
- package/templates/workflows/implement-dotnet-change.md +175 -0
- package/templates/workflows/implement-go-change.md +175 -0
- package/templates/workflows/implement-java-change.md +175 -0
- package/templates/workflows/implement-kotlin-change.md +175 -0
- package/templates/workflows/implement-lua-change.md +175 -0
- package/templates/workflows/implement-perl-change.md +175 -0
- package/templates/workflows/implement-php-change.md +175 -0
- package/templates/workflows/implement-powershell-change.md +175 -0
- package/templates/workflows/implement-python-change.md +175 -0
- package/templates/workflows/implement-rust-change.md +175 -0
- package/templates/workflows/implement-shell-change.md +175 -0
- package/templates/workflows/implement-swift-change.md +175 -0
- package/templates/workflows/implement-typescript-change.md +176 -0
- package/templates/workflows/parallel-implement-and-merge.md +191 -0
- package/templates/workflows/research-plan-implement-validate.md +187 -0
- package/templates/workflows/triage-reproduce-fix-verify.md +167 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
|
|
5
|
+
const root = process.cwd();
|
|
6
|
+
const scanPaths = [
|
|
7
|
+
"README.md",
|
|
8
|
+
"AGENTS.md",
|
|
9
|
+
"docs",
|
|
10
|
+
"skills",
|
|
11
|
+
".agents/skills",
|
|
12
|
+
"rules",
|
|
13
|
+
"templates",
|
|
14
|
+
"manifests"
|
|
15
|
+
];
|
|
16
|
+
const ignorePatterns = [
|
|
17
|
+
/(^|\/)skills\/speckit-/,
|
|
18
|
+
/(^|\/)\.agents\/skills\/speckit-/
|
|
19
|
+
];
|
|
20
|
+
const patterns = [
|
|
21
|
+
/\[NEEDS CLARIFICATION\]/,
|
|
22
|
+
/\bTODO\b/,
|
|
23
|
+
/\bTBD\b/,
|
|
24
|
+
/REPLACE ME/,
|
|
25
|
+
/INSERT [A-Z]/,
|
|
26
|
+
/lorem ipsum/i
|
|
27
|
+
];
|
|
28
|
+
|
|
29
|
+
async function listFiles(targetPath) {
|
|
30
|
+
const stats = await fs.stat(targetPath);
|
|
31
|
+
if (!stats.isDirectory()) {
|
|
32
|
+
return [targetPath];
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const entries = await fs.readdir(targetPath, { withFileTypes: true });
|
|
36
|
+
const nested = await Promise.all(
|
|
37
|
+
entries.map(async (entry) => {
|
|
38
|
+
const absolutePath = path.join(targetPath, entry.name);
|
|
39
|
+
if (entry.isDirectory()) {
|
|
40
|
+
return listFiles(absolutePath);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return [absolutePath];
|
|
44
|
+
})
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
return nested.flat();
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const failures = [];
|
|
51
|
+
for (const relativePath of scanPaths) {
|
|
52
|
+
const absolutePath = path.join(root, relativePath);
|
|
53
|
+
try {
|
|
54
|
+
await fs.access(absolutePath);
|
|
55
|
+
} catch {
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
for (const filePath of await listFiles(absolutePath)) {
|
|
60
|
+
if (!/\.(md|json)$/i.test(filePath)) {
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const normalizedPath = path.relative(root, filePath).replaceAll("\\", "/");
|
|
65
|
+
if (ignorePatterns.some((pattern) => pattern.test(normalizedPath))) {
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const content = await fs.readFile(filePath, "utf8");
|
|
70
|
+
for (const pattern of patterns) {
|
|
71
|
+
if (pattern.test(content)) {
|
|
72
|
+
failures.push({
|
|
73
|
+
file: normalizedPath,
|
|
74
|
+
pattern: pattern.toString()
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
if (failures.length > 0) {
|
|
82
|
+
console.error(JSON.stringify({ ok: false, failures }, null, 2));
|
|
83
|
+
process.exit(1);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
console.log(JSON.stringify({ ok: true }, null, 2));
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
|
|
4
|
+
const root = process.cwd();
|
|
5
|
+
const manifestDir = path.join(root, "manifests", "bundles");
|
|
6
|
+
const files = await fs.readdir(manifestDir);
|
|
7
|
+
const bundles = [];
|
|
8
|
+
const failures = [];
|
|
9
|
+
|
|
10
|
+
for (const file of files) {
|
|
11
|
+
const manifest = JSON.parse(await fs.readFile(path.join(manifestDir, file), "utf8"));
|
|
12
|
+
bundles.push(...(manifest.bundles ?? []));
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
const ids = new Set(bundles.map((bundle) => bundle.id));
|
|
16
|
+
|
|
17
|
+
for (const bundle of bundles) {
|
|
18
|
+
for (const dependency of bundle.dependencies ?? []) {
|
|
19
|
+
if (!ids.has(dependency)) {
|
|
20
|
+
failures.push({ issue: "Bundle dependency points to an unknown bundle.", dependency: `${bundle.id} -> ${dependency}` });
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
for (const assetPath of bundle.paths ?? []) {
|
|
25
|
+
try {
|
|
26
|
+
await fs.access(path.join(root, assetPath));
|
|
27
|
+
} catch {
|
|
28
|
+
failures.push({ issue: "Bundle path points to a missing file or directory.", bundleId: bundle.id, path: assetPath });
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const catalogIndex = JSON.parse(await fs.readFile(path.join(root, "manifests", "catalog", "index.json"), "utf8"));
|
|
34
|
+
for (const category of ["bundles", "profiles", "targets", "catalogs", "schemas"]) {
|
|
35
|
+
for (const relativePath of catalogIndex[category] ?? []) {
|
|
36
|
+
try {
|
|
37
|
+
await fs.access(path.join(root, relativePath));
|
|
38
|
+
} catch {
|
|
39
|
+
failures.push({ issue: "Catalog index points to a missing file.", category, path: relativePath });
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const languageAssets = JSON.parse(await fs.readFile(path.join(root, "manifests", "catalog", "language-assets.json"), "utf8"));
|
|
45
|
+
for (const [language, entry] of Object.entries(languageAssets.languages ?? {})) {
|
|
46
|
+
for (const relativePath of [entry.knowledgeBase, ...(entry.docs ?? []), ...(entry.rules ?? []), ...(entry.examples ?? [])].filter(Boolean)) {
|
|
47
|
+
try {
|
|
48
|
+
await fs.access(path.join(root, relativePath));
|
|
49
|
+
} catch {
|
|
50
|
+
failures.push({ issue: "Language asset catalog points to a missing file.", language, path: relativePath });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const referenceFiles = [
|
|
56
|
+
"docs/templates/authoring.md",
|
|
57
|
+
"docs/quickstart.md",
|
|
58
|
+
"scripts/templates/README.md"
|
|
59
|
+
];
|
|
60
|
+
|
|
61
|
+
for (const relativePath of referenceFiles) {
|
|
62
|
+
const content = await fs.readFile(path.join(root, relativePath), "utf8");
|
|
63
|
+
for (const match of content.matchAll(/scripts\/templates\/[A-Za-z0-9./_-]+/g)) {
|
|
64
|
+
const referencedPath = match[0];
|
|
65
|
+
try {
|
|
66
|
+
await fs.access(path.join(root, referencedPath));
|
|
67
|
+
} catch {
|
|
68
|
+
failures.push({ issue: "Documentation references a missing validator path.", file: relativePath, path: referencedPath });
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (failures.length > 0) {
|
|
74
|
+
console.error(JSON.stringify({ ok: false, failures }, null, 2));
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
console.log(JSON.stringify({ ok: true, bundles: bundles.length }, null, 2));
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { spawnSync } from "node:child_process";
|
|
4
|
+
|
|
5
|
+
const root = process.cwd();
|
|
6
|
+
const manifestPath = path.join(root, "manifests", "catalog", "package-surface.json");
|
|
7
|
+
const packageJsonPath = path.join(root, "package.json");
|
|
8
|
+
const manifest = JSON.parse(await fs.readFile(manifestPath, "utf8"));
|
|
9
|
+
const packageJson = JSON.parse(await fs.readFile(packageJsonPath, "utf8"));
|
|
10
|
+
|
|
11
|
+
const requiredPaths = new Set([
|
|
12
|
+
...(manifest.requiredPaths ?? []),
|
|
13
|
+
...((manifest.groups ?? []).flatMap((group) => group.paths ?? [])),
|
|
14
|
+
...((manifest.targetSurfaces ?? []).flatMap((surface) => surface.paths ?? []))
|
|
15
|
+
]);
|
|
16
|
+
|
|
17
|
+
const failures = [];
|
|
18
|
+
const packageFiles = packageJson.files ?? [];
|
|
19
|
+
|
|
20
|
+
function isCoveredByPackageFiles(requiredPath) {
|
|
21
|
+
return packageFiles.some((entry) => requiredPath === entry || requiredPath.startsWith(`${entry}/`));
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
for (const requiredPath of requiredPaths) {
|
|
25
|
+
try {
|
|
26
|
+
await fs.access(path.join(root, requiredPath));
|
|
27
|
+
} catch {
|
|
28
|
+
failures.push({ issue: "Required package-surface path is missing in the repository.", path: requiredPath });
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if (!isCoveredByPackageFiles(requiredPath)) {
|
|
33
|
+
failures.push({ issue: "Required package-surface path is not covered by package.json files.", path: requiredPath });
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const packed =
|
|
38
|
+
process.platform === "win32"
|
|
39
|
+
? spawnSync("cmd.exe", ["/d", "/s", "/c", "npm pack --json --dry-run"], {
|
|
40
|
+
cwd: root,
|
|
41
|
+
encoding: "utf8"
|
|
42
|
+
})
|
|
43
|
+
: spawnSync("npm", ["pack", "--json", "--dry-run"], {
|
|
44
|
+
cwd: root,
|
|
45
|
+
encoding: "utf8"
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
if ((packed.status ?? 1) !== 0) {
|
|
49
|
+
failures.push({
|
|
50
|
+
issue: "npm pack --dry-run failed.",
|
|
51
|
+
error: packed.error?.message,
|
|
52
|
+
stdout: packed.stdout?.trim(),
|
|
53
|
+
stderr: packed.stderr?.trim()
|
|
54
|
+
});
|
|
55
|
+
} else {
|
|
56
|
+
const output = JSON.parse(packed.stdout || "[]");
|
|
57
|
+
const packedFiles = new Set((output[0]?.files ?? []).map((entry) => entry.path));
|
|
58
|
+
|
|
59
|
+
for (const requiredPath of requiredPaths) {
|
|
60
|
+
const absolutePath = path.join(root, requiredPath);
|
|
61
|
+
const stats = await fs.stat(absolutePath);
|
|
62
|
+
const packedMatch = stats.isDirectory()
|
|
63
|
+
? [...packedFiles].some((filePath) => filePath.startsWith(`${requiredPath}/`))
|
|
64
|
+
: packedFiles.has(requiredPath);
|
|
65
|
+
|
|
66
|
+
if (!packedMatch) {
|
|
67
|
+
failures.push({ issue: "Required path is missing from npm pack dry-run output.", path: requiredPath });
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (failures.length > 0) {
|
|
73
|
+
console.error(JSON.stringify({ ok: false, failures }, null, 2));
|
|
74
|
+
process.exit(1);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
console.log(JSON.stringify({ ok: true, requiredPaths: requiredPaths.size }, null, 2));
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
|
|
4
|
+
const root = process.cwd();
|
|
5
|
+
const seededRoot = path.join(root, "knowledge-bases", "seeded");
|
|
6
|
+
const manifestPath = path.join(root, "manifests", "catalog", "seeded-knowledge-files.json");
|
|
7
|
+
const manifest = JSON.parse(await fs.readFile(manifestPath, "utf8"));
|
|
8
|
+
|
|
9
|
+
async function listFiles(dir) {
|
|
10
|
+
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
11
|
+
const results = await Promise.all(
|
|
12
|
+
entries.map(async (entry) => {
|
|
13
|
+
const absolutePath = path.join(dir, entry.name);
|
|
14
|
+
if (entry.isDirectory()) {
|
|
15
|
+
return listFiles(absolutePath);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return [absolutePath];
|
|
19
|
+
})
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
return results.flat();
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const seededFiles = (await listFiles(seededRoot))
|
|
26
|
+
.map((absolutePath) => path.relative(root, absolutePath).replaceAll("\\", "/"))
|
|
27
|
+
.sort();
|
|
28
|
+
|
|
29
|
+
const manifestEntries = manifest.files ?? [];
|
|
30
|
+
const manifestByPackagePath = new Map(manifestEntries.map((entry) => [entry.packagePath, entry]));
|
|
31
|
+
const failures = [];
|
|
32
|
+
const seededArchiveFiles = seededFiles.filter((filePath) => filePath !== "knowledge-bases/seeded/README.md");
|
|
33
|
+
|
|
34
|
+
for (const filePath of seededArchiveFiles) {
|
|
35
|
+
if (!manifestByPackagePath.has(filePath)) {
|
|
36
|
+
failures.push({ issue: "Seeded file missing from coverage manifest.", file: filePath });
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
for (const entry of manifestEntries) {
|
|
41
|
+
const absolutePath = path.join(root, entry.packagePath);
|
|
42
|
+
try {
|
|
43
|
+
await fs.access(absolutePath);
|
|
44
|
+
} catch {
|
|
45
|
+
failures.push({ issue: "Manifest entry points to a missing shipped file.", file: entry.packagePath });
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const expectedLanguages = new Set(["typescript", "java", "dotnet", "lua", "powershell"]);
|
|
50
|
+
const countsByLanguage = Object.fromEntries([...expectedLanguages].map((language) => [language, 0]));
|
|
51
|
+
const kindsByLanguage = Object.fromEntries([...expectedLanguages].map((language) => [language, new Set()]));
|
|
52
|
+
|
|
53
|
+
for (const entry of manifestEntries) {
|
|
54
|
+
if (countsByLanguage[entry.language] === undefined) {
|
|
55
|
+
failures.push({ issue: "Unexpected language in coverage manifest.", file: entry.packagePath, language: entry.language });
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
countsByLanguage[entry.language] += 1;
|
|
60
|
+
kindsByLanguage[entry.language].add(entry.contentKind);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
for (const language of expectedLanguages) {
|
|
64
|
+
if ((countsByLanguage[language] ?? 0) === 0) {
|
|
65
|
+
failures.push({ issue: "No files mapped for seeded language.", language });
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
for (const requiredKind of ["overview", "review-checklist", "framework-notes", "example", "common-rule", "language-rule"]) {
|
|
70
|
+
if (!kindsByLanguage[language].has(requiredKind)) {
|
|
71
|
+
failures.push({ issue: "Seeded language is missing a required coverage kind.", language, requiredKind });
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
if (seededArchiveFiles.length !== manifestEntries.length) {
|
|
77
|
+
failures.push({
|
|
78
|
+
issue: "Seeded file count does not match manifest coverage.",
|
|
79
|
+
seededFiles: seededArchiveFiles.length,
|
|
80
|
+
manifestEntries: manifestEntries.length
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (failures.length > 0) {
|
|
85
|
+
console.error(JSON.stringify({ ok: false, failures }, null, 2));
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
console.log(JSON.stringify({ ok: true, seededFiles: seededArchiveFiles.length }, null, 2));
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
|
|
5
|
+
const root = process.cwd();
|
|
6
|
+
const operationalSkills = [
|
|
7
|
+
"engineering-assistant",
|
|
8
|
+
"repo-onboarding",
|
|
9
|
+
"security-scan",
|
|
10
|
+
"release-readiness",
|
|
11
|
+
"documentation-lookup",
|
|
12
|
+
"architecture-decision-records",
|
|
13
|
+
"parallel-worktree-supervisor",
|
|
14
|
+
"incident-triage",
|
|
15
|
+
"dependency-upgrade-safety",
|
|
16
|
+
"performance-profiling",
|
|
17
|
+
"test-strategy-and-coverage",
|
|
18
|
+
"api-contract-review",
|
|
19
|
+
"db-migration-review",
|
|
20
|
+
"pr-triage-and-summary",
|
|
21
|
+
"observability-setup",
|
|
22
|
+
"repo-modernization",
|
|
23
|
+
"cloud-architect"
|
|
24
|
+
];
|
|
25
|
+
const languageSkills = [
|
|
26
|
+
"python-engineering",
|
|
27
|
+
"go-engineering",
|
|
28
|
+
"kotlin-engineering",
|
|
29
|
+
"rust-engineering",
|
|
30
|
+
"cpp-engineering",
|
|
31
|
+
"php-engineering",
|
|
32
|
+
"perl-engineering",
|
|
33
|
+
"swift-engineering",
|
|
34
|
+
"shell-engineering",
|
|
35
|
+
"javascript-engineering"
|
|
36
|
+
];
|
|
37
|
+
const failures = [];
|
|
38
|
+
|
|
39
|
+
for (const requiredPath of [
|
|
40
|
+
"manifests/catalog/enhanced-skill-import-inventory.json",
|
|
41
|
+
"docs/authoring/enhanced-skill-import.md"
|
|
42
|
+
]) {
|
|
43
|
+
try {
|
|
44
|
+
await fs.access(path.join(root, requiredPath));
|
|
45
|
+
} catch {
|
|
46
|
+
failures.push({
|
|
47
|
+
skillId: "enhanced-skill-governance",
|
|
48
|
+
file: requiredPath,
|
|
49
|
+
issue: "Missing required import governance surface"
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
for (const skillId of operationalSkills) {
|
|
55
|
+
const filePath = path.join(root, "skills", skillId, "SKILL.md");
|
|
56
|
+
const content = await fs.readFile(filePath, "utf8");
|
|
57
|
+
for (const section of ["## Trigger Signals", "## Inspect First", "## Workflow", "## Output Contract", "## Failure Modes", "## Escalation"]) {
|
|
58
|
+
if (!content.includes(section)) {
|
|
59
|
+
failures.push({ skillId, file: `skills/${skillId}/SKILL.md`, issue: `Missing section ${section}` });
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
for (const match of content.matchAll(/`(skills\/[^`]+)`/g)) {
|
|
64
|
+
const referencedPath = match[1];
|
|
65
|
+
try {
|
|
66
|
+
await fs.access(path.join(root, referencedPath));
|
|
67
|
+
} catch {
|
|
68
|
+
failures.push({ skillId, file: `skills/${skillId}/SKILL.md`, issue: `Missing referenced file ${referencedPath}` });
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
for (const skillId of languageSkills) {
|
|
74
|
+
const filePath = path.join(root, "skills", skillId, "SKILL.md");
|
|
75
|
+
const content = await fs.readFile(filePath, "utf8");
|
|
76
|
+
for (const section of ["## Activation", "## Load Order", "## Execution Contract", "## Validation", "## Escalation"]) {
|
|
77
|
+
if (!content.includes(section)) {
|
|
78
|
+
failures.push({ skillId, file: `skills/${skillId}/SKILL.md`, issue: `Missing section ${section}` });
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (failures.length > 0) {
|
|
84
|
+
console.error(JSON.stringify({ ok: false, failures }, null, 2));
|
|
85
|
+
process.exit(1);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
console.log(JSON.stringify({ ok: true, operationalSkills: operationalSkills.length, languageSkills: languageSkills.length }, null, 2));
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
|
|
6
|
+
const args = process.argv.slice(2);
|
|
7
|
+
const getArg = (flag, fallback = undefined) => {
|
|
8
|
+
const index = args.indexOf(flag);
|
|
9
|
+
return index >= 0 ? args[index + 1] : fallback;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const workspace = path.resolve(getArg("--workspace", "."));
|
|
13
|
+
const homeFile = path.resolve(getArg("--home-file", path.join(os.homedir(), ".codex", "config.toml")));
|
|
14
|
+
const dryRun = args.includes("--dry-run");
|
|
15
|
+
const workspaceConfigPath = path.join(workspace, ".codex", "config.toml");
|
|
16
|
+
const markers = { start: "# >>> harness-forge managed block >>>", end: "# <<< harness-forge managed block <<<" };
|
|
17
|
+
|
|
18
|
+
const workspaceConfig = await fs.readFile(workspaceConfigPath, "utf8");
|
|
19
|
+
let existing = "";
|
|
20
|
+
try { existing = await fs.readFile(homeFile, "utf8"); } catch { existing = ""; }
|
|
21
|
+
|
|
22
|
+
const block = `${markers.start}
|
|
23
|
+
# source: ${workspaceConfigPath}
|
|
24
|
+
${workspaceConfig.trim()}
|
|
25
|
+
${markers.end}
|
|
26
|
+
`;
|
|
27
|
+
const esc = (value) => value.replace(/[.*+?^${}()|[\]\]/g, "\$&");
|
|
28
|
+
const pattern = new RegExp(`${esc(markers.start)}[\s\S]*?${esc(markers.end)}\n?`, "g");
|
|
29
|
+
const next = existing.match(pattern) ? existing.replace(pattern, block) : `${existing.trimEnd()}${existing.trim() ? "\n\n" : ""}${block}`;
|
|
30
|
+
|
|
31
|
+
if (dryRun) {
|
|
32
|
+
process.stdout.write(next);
|
|
33
|
+
process.exit(0);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
await fs.mkdir(path.dirname(homeFile), { recursive: true });
|
|
37
|
+
await fs.writeFile(homeFile, next, "utf8");
|
|
38
|
+
process.stdout.write(`${homeFile}
|
|
39
|
+
`);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
|
|
4
|
+
import { buildRepoMap } from "./shared/cartography.mjs";
|
|
5
|
+
|
|
6
|
+
const args = process.argv.slice(2);
|
|
7
|
+
const json = args.includes("--json");
|
|
8
|
+
const root = path.resolve(args.find((value) => !value.startsWith("--")) ?? ".");
|
|
9
|
+
const repoMap = await buildRepoMap(root);
|
|
10
|
+
|
|
11
|
+
if (json) {
|
|
12
|
+
console.log(JSON.stringify(repoMap, null, 2));
|
|
13
|
+
} else {
|
|
14
|
+
console.log(JSON.stringify(repoMap, null, 2));
|
|
15
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
|
|
4
|
+
import { classifyServiceBoundaries } from "./shared/cartography.mjs";
|
|
5
|
+
|
|
6
|
+
const args = process.argv.slice(2);
|
|
7
|
+
const json = args.includes("--json");
|
|
8
|
+
const root = path.resolve(args.find((value) => !value.startsWith("--")) ?? ".");
|
|
9
|
+
const boundaries = await classifyServiceBoundaries(root);
|
|
10
|
+
|
|
11
|
+
if (json) {
|
|
12
|
+
console.log(JSON.stringify({ root, boundaries }, null, 2));
|
|
13
|
+
} else {
|
|
14
|
+
console.log(JSON.stringify({ root, boundaries }, null, 2));
|
|
15
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
|
|
4
|
+
import { collectRepoFacts, formatHumanReadable } from "./shared.mjs";
|
|
5
|
+
|
|
6
|
+
const args = process.argv.slice(2);
|
|
7
|
+
const json = args.includes("--json");
|
|
8
|
+
const root = path.resolve(args.find((value) => !value.startsWith("--")) ?? ".");
|
|
9
|
+
|
|
10
|
+
const result = await collectRepoFacts(root);
|
|
11
|
+
|
|
12
|
+
if (json) {
|
|
13
|
+
console.log(JSON.stringify(result, null, 2));
|
|
14
|
+
} else {
|
|
15
|
+
console.log(formatHumanReadable(result));
|
|
16
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
|
|
4
|
+
import { collectRepoFacts, formatHumanReadable } from "./shared.mjs";
|
|
5
|
+
|
|
6
|
+
const args = process.argv.slice(2);
|
|
7
|
+
const json = args.includes("--json");
|
|
8
|
+
const root = path.resolve(args.find((value) => !value.startsWith("--")) ?? ".");
|
|
9
|
+
|
|
10
|
+
const result = await collectRepoFacts(root);
|
|
11
|
+
|
|
12
|
+
if (json) {
|
|
13
|
+
console.log(JSON.stringify(result, null, 2));
|
|
14
|
+
} else {
|
|
15
|
+
console.log(formatHumanReadable(result));
|
|
16
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
|
|
4
|
+
import { formatHumanReadable, scoreRecommendations } from "./shared.mjs";
|
|
5
|
+
|
|
6
|
+
const args = process.argv.slice(2);
|
|
7
|
+
const json = args.includes("--json");
|
|
8
|
+
const root = path.resolve(args.find((value) => !value.startsWith("--")) ?? ".");
|
|
9
|
+
|
|
10
|
+
const result = await scoreRecommendations(root);
|
|
11
|
+
|
|
12
|
+
if (json) {
|
|
13
|
+
console.log(JSON.stringify(result, null, 2));
|
|
14
|
+
} else {
|
|
15
|
+
console.log(formatHumanReadable(result));
|
|
16
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
|
|
4
|
+
import { collectRepoFacts } from "../shared.mjs";
|
|
5
|
+
|
|
6
|
+
const IGNORED_DIRS = new Set([".git", ".hforge", ".next", ".nuxt", ".specify", ".turbo", "build", "coverage", "dist", "node_modules", "vendor"]);
|
|
7
|
+
const BOUNDARY_MARKERS = [
|
|
8
|
+
{ matcher: (name) => name === "package.json", classification: "package" },
|
|
9
|
+
{ matcher: (name) => name === "pyproject.toml", classification: "python-project" },
|
|
10
|
+
{ matcher: (name) => name === "go.mod", classification: "go-module" },
|
|
11
|
+
{ matcher: (name) => name === "pom.xml", classification: "java-service" },
|
|
12
|
+
{ matcher: (name) => /\.csproj$/i.test(name), classification: "dotnet-service" }
|
|
13
|
+
];
|
|
14
|
+
|
|
15
|
+
async function exists(targetPath) {
|
|
16
|
+
try {
|
|
17
|
+
await fs.access(targetPath);
|
|
18
|
+
return true;
|
|
19
|
+
} catch {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
async function walkDirectories(root, visit, current = root) {
|
|
25
|
+
let entries = [];
|
|
26
|
+
try {
|
|
27
|
+
entries = await fs.readdir(current, { withFileTypes: true });
|
|
28
|
+
} catch {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
await visit(current, entries);
|
|
33
|
+
for (const entry of entries) {
|
|
34
|
+
if (!entry.isDirectory() || IGNORED_DIRS.has(entry.name)) {
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
await walkDirectories(root, visit, path.join(current, entry.name));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function normalizePath(root, targetPath) {
|
|
42
|
+
const relative = path.relative(root, targetPath).replaceAll("\\", "/");
|
|
43
|
+
return relative.length > 0 ? relative : ".";
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export async function classifyServiceBoundaries(root) {
|
|
47
|
+
const boundaries = [];
|
|
48
|
+
await walkDirectories(root, async (directory, entries) => {
|
|
49
|
+
const marker = BOUNDARY_MARKERS.find((candidate) => entries.some((entry) => entry.isFile() && candidate.matcher(entry.name)));
|
|
50
|
+
if (!marker) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const relativePath = normalizePath(root, directory);
|
|
55
|
+
boundaries.push({
|
|
56
|
+
id: relativePath === "." ? "workspace-root" : relativePath.replaceAll("/", "-"),
|
|
57
|
+
path: relativePath,
|
|
58
|
+
classification: marker.classification
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
if (boundaries.length === 0 && (await exists(path.join(root, "src")))) {
|
|
63
|
+
boundaries.push({
|
|
64
|
+
id: "workspace-root",
|
|
65
|
+
path: ".",
|
|
66
|
+
classification: "source-root"
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return boundaries.sort((left, right) => left.path.localeCompare(right.path));
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export async function listInstructionSurfaces(root) {
|
|
74
|
+
const candidates = [
|
|
75
|
+
"AGENTS.md",
|
|
76
|
+
"CLAUDE.md",
|
|
77
|
+
".agents/skills",
|
|
78
|
+
".codex/config.toml",
|
|
79
|
+
".claude/settings.local.json",
|
|
80
|
+
".cursor/rules"
|
|
81
|
+
];
|
|
82
|
+
|
|
83
|
+
const discovered = [];
|
|
84
|
+
for (const candidate of candidates) {
|
|
85
|
+
if (await exists(path.join(root, candidate))) {
|
|
86
|
+
discovered.push(candidate);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
return discovered;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export async function buildRepoMap(root) {
|
|
94
|
+
const facts = await collectRepoFacts(root);
|
|
95
|
+
const services = await classifyServiceBoundaries(root);
|
|
96
|
+
const existingInstructionSurfaces = await listInstructionSurfaces(root);
|
|
97
|
+
const criticalPaths = services.slice(0, 3).map((service) => service.path);
|
|
98
|
+
const highRiskPaths = [...new Set(facts.riskSignals.flatMap((signal) => signal.evidence))].slice(0, 6);
|
|
99
|
+
const supportingEvidence = [
|
|
100
|
+
...facts.dominantLanguages.flatMap((signal) => signal.evidence),
|
|
101
|
+
...facts.frameworkMatches.flatMap((signal) => signal.evidence),
|
|
102
|
+
...facts.missingValidationSurfaces.flatMap((signal) => signal.evidence)
|
|
103
|
+
].slice(0, 12);
|
|
104
|
+
|
|
105
|
+
return {
|
|
106
|
+
generatedAt: facts.generatedAt,
|
|
107
|
+
workspaceId: facts.root,
|
|
108
|
+
workspaceType: facts.repoType,
|
|
109
|
+
dominantLanguages: facts.dominantLanguages.map(({ id, confidence, evidence }) => ({ id, confidence, evidence })),
|
|
110
|
+
frameworks: facts.frameworkMatches.map(({ id, confidence, evidence }) => ({ id, confidence, evidence })),
|
|
111
|
+
services,
|
|
112
|
+
criticalPaths,
|
|
113
|
+
highRiskPaths,
|
|
114
|
+
existingInstructionSurfaces,
|
|
115
|
+
sharedRuntimeRoot: ".hforge/runtime",
|
|
116
|
+
sharedRuntimeBridges: ["AGENTS.md", "CLAUDE.md", ".hforge/runtime/index.json", ".hforge/runtime/README.md"],
|
|
117
|
+
sharedRuntimeArtifacts: [
|
|
118
|
+
".hforge/runtime/repo/repo-map.json",
|
|
119
|
+
".hforge/runtime/repo/recommendations.json",
|
|
120
|
+
".hforge/runtime/repo/target-support.json",
|
|
121
|
+
".hforge/runtime/repo/instruction-plan.json",
|
|
122
|
+
".hforge/runtime/repo/scan-summary.json",
|
|
123
|
+
".hforge/runtime/findings/validation-gaps.json",
|
|
124
|
+
".hforge/runtime/findings/risk-signals.json"
|
|
125
|
+
],
|
|
126
|
+
qualityGaps: facts.missingValidationSurfaces.map(({ id, confidence, evidence }) => ({ id, confidence, evidence })),
|
|
127
|
+
supportingEvidence
|
|
128
|
+
};
|
|
129
|
+
}
|