@open-agent-toolkit/cli 0.0.10
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/README.md +50 -0
- package/assets/agents/oat-codebase-mapper.md +275 -0
- package/assets/agents/oat-reviewer.md +350 -0
- package/assets/agents/skeptical-evaluator.md +126 -0
- package/assets/docs/contributing/code.md +95 -0
- package/assets/docs/contributing/commit-conventions.md +41 -0
- package/assets/docs/contributing/design-principles.md +124 -0
- package/assets/docs/contributing/documentation.md +69 -0
- package/assets/docs/contributing/hooks-and-safety.md +31 -0
- package/assets/docs/contributing/index.md +18 -0
- package/assets/docs/contributing/markdown-features.md +117 -0
- package/assets/docs/contributing/skills.md +68 -0
- package/assets/docs/guide/cli-reference.md +211 -0
- package/assets/docs/guide/concepts.md +88 -0
- package/assets/docs/guide/configuration.md +130 -0
- package/assets/docs/guide/documentation/commands.md +157 -0
- package/assets/docs/guide/documentation/index.md +27 -0
- package/assets/docs/guide/documentation/quickstart.md +164 -0
- package/assets/docs/guide/documentation/workflows.md +67 -0
- package/assets/docs/guide/getting-started.md +63 -0
- package/assets/docs/guide/ideas/index.md +34 -0
- package/assets/docs/guide/ideas/lifecycle.md +106 -0
- package/assets/docs/guide/index.md +20 -0
- package/assets/docs/guide/provider-sync/commands.md +100 -0
- package/assets/docs/guide/provider-sync/config.md +77 -0
- package/assets/docs/guide/provider-sync/index.md +65 -0
- package/assets/docs/guide/provider-sync/manifest-and-drift.md +55 -0
- package/assets/docs/guide/provider-sync/providers.md +67 -0
- package/assets/docs/guide/provider-sync/scope-and-surface.md +64 -0
- package/assets/docs/guide/skills/index.md +115 -0
- package/assets/docs/guide/tool-packs.md +167 -0
- package/assets/docs/guide/workflow/artifacts.md +44 -0
- package/assets/docs/guide/workflow/hill-checkpoints.md +53 -0
- package/assets/docs/guide/workflow/index.md +34 -0
- package/assets/docs/guide/workflow/lifecycle.md +207 -0
- package/assets/docs/guide/workflow/pr-flow.md +55 -0
- package/assets/docs/guide/workflow/repo-analysis.md +96 -0
- package/assets/docs/guide/workflow/reviews.md +98 -0
- package/assets/docs/guide/workflow/state-machine.md +74 -0
- package/assets/docs/index.md +45 -0
- package/assets/docs/quickstart.md +162 -0
- package/assets/docs/reference/docs-index-contract.md +53 -0
- package/assets/docs/reference/file-locations.md +109 -0
- package/assets/docs/reference/index.md +29 -0
- package/assets/docs/reference/oat-directory-structure.md +236 -0
- package/assets/docs/reference/troubleshooting.md +63 -0
- package/assets/public-package-versions.json +6 -0
- package/assets/scripts/resolve-tracking.sh +233 -0
- package/assets/skills/analyze/SKILL.md +358 -0
- package/assets/skills/compare/SKILL.md +276 -0
- package/assets/skills/create-agnostic-skill/SKILL.md +410 -0
- package/assets/skills/create-agnostic-skill/references/skill-template.md +195 -0
- package/assets/skills/deep-research/SKILL.md +350 -0
- package/assets/skills/deep-research/references/schema-analysis.md +93 -0
- package/assets/skills/deep-research/references/schema-architectural.md +75 -0
- package/assets/skills/deep-research/references/schema-base.md +70 -0
- package/assets/skills/deep-research/references/schema-comparative.md +72 -0
- package/assets/skills/deep-research/references/schema-conceptual.md +68 -0
- package/assets/skills/deep-research/references/schema-technical.md +64 -0
- package/assets/skills/oat-agent-instructions-analyze/SKILL.md +500 -0
- package/assets/skills/oat-agent-instructions-analyze/references/analysis-artifact-template.md +248 -0
- package/assets/skills/oat-agent-instructions-analyze/references/bundle-summary-template.md +31 -0
- package/assets/skills/oat-agent-instructions-analyze/references/directory-assessment-criteria.md +93 -0
- package/assets/skills/oat-agent-instructions-analyze/references/docs/agent-instruction.md +575 -0
- package/assets/skills/oat-agent-instructions-analyze/references/docs/cursor-rules-files.md +510 -0
- package/assets/skills/oat-agent-instructions-analyze/references/docs/provider-reference.md +429 -0
- package/assets/skills/oat-agent-instructions-analyze/references/docs/rules-files.md +594 -0
- package/assets/skills/oat-agent-instructions-analyze/references/file-type-discovery-checklist.md +273 -0
- package/assets/skills/oat-agent-instructions-analyze/references/quality-checklist.md +125 -0
- package/assets/skills/oat-agent-instructions-analyze/references/recommendation-pack-template.md +45 -0
- package/assets/skills/oat-agent-instructions-analyze/references/recommendations-manifest-template.yaml +27 -0
- package/assets/skills/oat-agent-instructions-analyze/scripts/resolve-instruction-files.sh +120 -0
- package/assets/skills/oat-agent-instructions-analyze/scripts/resolve-providers.sh +135 -0
- package/assets/skills/oat-agent-instructions-apply/SKILL.md +507 -0
- package/assets/skills/oat-agent-instructions-apply/references/apply-plan-template.md +80 -0
- package/assets/skills/oat-agent-instructions-apply/references/docs/agent-instruction.md +575 -0
- package/assets/skills/oat-agent-instructions-apply/references/docs/cursor-rules-files.md +510 -0
- package/assets/skills/oat-agent-instructions-apply/references/docs/provider-reference.md +429 -0
- package/assets/skills/oat-agent-instructions-apply/references/docs/rules-files.md +594 -0
- package/assets/skills/oat-agent-instructions-apply/references/instruction-file-templates/agents-md-root.md +85 -0
- package/assets/skills/oat-agent-instructions-apply/references/instruction-file-templates/agents-md-scoped.md +62 -0
- package/assets/skills/oat-agent-instructions-apply/references/instruction-file-templates/frontmatter/claude-rule.md +67 -0
- package/assets/skills/oat-agent-instructions-apply/references/instruction-file-templates/frontmatter/copilot-instruction.md +70 -0
- package/assets/skills/oat-agent-instructions-apply/references/instruction-file-templates/frontmatter/copilot-shim.md +35 -0
- package/assets/skills/oat-agent-instructions-apply/references/instruction-file-templates/frontmatter/cursor-rule.md +84 -0
- package/assets/skills/oat-agent-instructions-apply/references/instruction-file-templates/glob-scoped-rule.md +59 -0
- package/assets/skills/oat-docs/SKILL.md +214 -0
- package/assets/skills/oat-docs-analyze/SKILL.md +355 -0
- package/assets/skills/oat-docs-analyze/references/analysis-artifact-template.md +192 -0
- package/assets/skills/oat-docs-analyze/references/directory-assessment-criteria.md +46 -0
- package/assets/skills/oat-docs-analyze/references/quality-checklist.md +48 -0
- package/assets/skills/oat-docs-apply/SKILL.md +339 -0
- package/assets/skills/oat-docs-apply/references/apply-plan-template.md +69 -0
- package/assets/skills/oat-doctor/SKILL.md +293 -0
- package/assets/skills/oat-idea-ideate/SKILL.md +187 -0
- package/assets/skills/oat-idea-new/SKILL.md +152 -0
- package/assets/skills/oat-idea-scratchpad/SKILL.md +115 -0
- package/assets/skills/oat-idea-summarize/SKILL.md +172 -0
- package/assets/skills/oat-pjm-add-backlog-item/SKILL.md +155 -0
- package/assets/skills/oat-pjm-review-backlog/SKILL.md +171 -0
- package/assets/skills/oat-pjm-review-backlog/references/backlog-review-template.md +172 -0
- package/assets/skills/oat-pjm-update-repo-reference/SKILL.md +128 -0
- package/assets/skills/oat-project-capture/SKILL.md +306 -0
- package/assets/skills/oat-project-clear-active/SKILL.md +50 -0
- package/assets/skills/oat-project-complete/SKILL.md +461 -0
- package/assets/skills/oat-project-design/SKILL.md +461 -0
- package/assets/skills/oat-project-discover/SKILL.md +395 -0
- package/assets/skills/oat-project-document/SKILL.md +468 -0
- package/assets/skills/oat-project-implement/SKILL.md +736 -0
- package/assets/skills/oat-project-import-plan/SKILL.md +228 -0
- package/assets/skills/oat-project-import-plan/scripts/find-recent-provider-plans.sh +149 -0
- package/assets/skills/oat-project-new/SKILL.md +74 -0
- package/assets/skills/oat-project-next/SKILL.md +345 -0
- package/assets/skills/oat-project-open/SKILL.md +47 -0
- package/assets/skills/oat-project-plan/SKILL.md +415 -0
- package/assets/skills/oat-project-plan-writing/SKILL.md +116 -0
- package/assets/skills/oat-project-pr-final/SKILL.md +391 -0
- package/assets/skills/oat-project-pr-progress/SKILL.md +354 -0
- package/assets/skills/oat-project-progress/SKILL.md +342 -0
- package/assets/skills/oat-project-promote-spec-driven/SKILL.md +155 -0
- package/assets/skills/oat-project-quick-start/SKILL.md +363 -0
- package/assets/skills/oat-project-reconcile/SKILL.md +738 -0
- package/assets/skills/oat-project-review-provide/SKILL.md +728 -0
- package/assets/skills/oat-project-review-receive/SKILL.md +641 -0
- package/assets/skills/oat-project-review-receive-remote/SKILL.md +235 -0
- package/assets/skills/oat-project-revise/SKILL.md +316 -0
- package/assets/skills/oat-project-spec/SKILL.md +471 -0
- package/assets/skills/oat-project-subagent-implement/SKILL.md +549 -0
- package/assets/skills/oat-project-subagent-implement/examples/pattern-hill-checkpoint.md +110 -0
- package/assets/skills/oat-project-subagent-implement/examples/pattern-parallel-phases.md +118 -0
- package/assets/skills/oat-project-subagent-implement/scripts/dispatch.sh +133 -0
- package/assets/skills/oat-project-subagent-implement/scripts/reconcile.sh +182 -0
- package/assets/skills/oat-project-subagent-implement/scripts/review-gate.sh +187 -0
- package/assets/skills/oat-project-subagent-implement/tests/fixtures/sample-plan.md +234 -0
- package/assets/skills/oat-project-subagent-implement/tests/test-dry-run.sh +126 -0
- package/assets/skills/oat-project-subagent-implement/tests/test-hill-checkpoint.sh +127 -0
- package/assets/skills/oat-project-subagent-implement/tests/test-reconcile.sh +254 -0
- package/assets/skills/oat-project-subagent-implement/tests/test-review-gate.sh +220 -0
- package/assets/skills/oat-project-summary/SKILL.md +227 -0
- package/assets/skills/oat-repo-knowledge-index/SKILL.md +724 -0
- package/assets/skills/oat-repo-knowledge-index/references/templates/architecture.md +83 -0
- package/assets/skills/oat-repo-knowledge-index/references/templates/concerns.md +97 -0
- package/assets/skills/oat-repo-knowledge-index/references/templates/conventions.md +100 -0
- package/assets/skills/oat-repo-knowledge-index/references/templates/integrations.md +91 -0
- package/assets/skills/oat-repo-knowledge-index/references/templates/stack.md +86 -0
- package/assets/skills/oat-repo-knowledge-index/references/templates/structure.md +88 -0
- package/assets/skills/oat-repo-knowledge-index/references/templates/testing.md +137 -0
- package/assets/skills/oat-repo-maintainability-review/SKILL.md +198 -0
- package/assets/skills/oat-repo-maintainability-review/references/dx-checklist.md +33 -0
- package/assets/skills/oat-repo-maintainability-review/references/repo-review-artifact-template.md +72 -0
- package/assets/skills/oat-repo-maintainability-review/references/repo-review-rubric.md +66 -0
- package/assets/skills/oat-repo-maintainability-review/scripts/resolve-analysis-output.sh +162 -0
- package/assets/skills/oat-review-provide/SKILL.md +231 -0
- package/assets/skills/oat-review-provide/references/review-artifact-template.md +55 -0
- package/assets/skills/oat-review-provide/scripts/resolve-review-output.sh +124 -0
- package/assets/skills/oat-review-receive/SKILL.md +238 -0
- package/assets/skills/oat-review-receive-remote/SKILL.md +250 -0
- package/assets/skills/oat-worktree-bootstrap/SKILL.md +208 -0
- package/assets/skills/oat-worktree-bootstrap/references/worktree-conventions.md +58 -0
- package/assets/skills/oat-worktree-bootstrap-auto/SKILL.md +245 -0
- package/assets/skills/oat-worktree-bootstrap-auto/scripts/bootstrap.sh +194 -0
- package/assets/skills/skeptic/SKILL.md +261 -0
- package/assets/skills/synthesize/SKILL.md +361 -0
- package/assets/templates/backlog-item.md +24 -0
- package/assets/templates/design.md +315 -0
- package/assets/templates/discovery.md +135 -0
- package/assets/templates/docs-app-fuma/app/[[...slug]]/page.tsx +30 -0
- package/assets/templates/docs-app-fuma/app/api/search/route.ts +8 -0
- package/assets/templates/docs-app-fuma/app/globals.css +69 -0
- package/assets/templates/docs-app-fuma/app/layout.tsx +26 -0
- package/assets/templates/docs-app-fuma/docs/contributing.md +71 -0
- package/assets/templates/docs-app-fuma/docs/getting-started.md +40 -0
- package/assets/templates/docs-app-fuma/docs/index.md +13 -0
- package/assets/templates/docs-app-fuma/lib/source.ts +8 -0
- package/assets/templates/docs-app-fuma/next.config.js +6 -0
- package/assets/templates/docs-app-fuma/package.json.template +38 -0
- package/assets/templates/docs-app-fuma/postcss.config.mjs +7 -0
- package/assets/templates/docs-app-fuma/source.config.ts +14 -0
- package/assets/templates/docs-app-fuma/tsconfig.json +25 -0
- package/assets/templates/docs-app-mkdocs/docs/contributing.md +122 -0
- package/assets/templates/docs-app-mkdocs/docs/getting-started.md +28 -0
- package/assets/templates/docs-app-mkdocs/docs/index.md +8 -0
- package/assets/templates/docs-app-mkdocs/mkdocs.yml +47 -0
- package/assets/templates/docs-app-mkdocs/package.json.template +19 -0
- package/assets/templates/docs-app-mkdocs/requirements.txt +6 -0
- package/assets/templates/docs-app-mkdocs/setup-docs.sh +18 -0
- package/assets/templates/ideas/idea-discovery.md +39 -0
- package/assets/templates/ideas/idea-summary.md +42 -0
- package/assets/templates/ideas/ideas-backlog.md +21 -0
- package/assets/templates/ideas/ideas-scratchpad.md +10 -0
- package/assets/templates/implementation.md +207 -0
- package/assets/templates/plan.md +171 -0
- package/assets/templates/roadmap.md +24 -0
- package/assets/templates/spec.md +138 -0
- package/assets/templates/state.md +49 -0
- package/assets/templates/summary.md +82 -0
- package/dist/agents/canonical/index.d.ts +4 -0
- package/dist/agents/canonical/index.d.ts.map +1 -0
- package/dist/agents/canonical/index.js +2 -0
- package/dist/agents/canonical/parse.d.ts +4 -0
- package/dist/agents/canonical/parse.d.ts.map +1 -0
- package/dist/agents/canonical/parse.js +97 -0
- package/dist/agents/canonical/render.d.ts +3 -0
- package/dist/agents/canonical/render.d.ts.map +1 -0
- package/dist/agents/canonical/render.js +17 -0
- package/dist/agents/canonical/types.d.ts +22 -0
- package/dist/agents/canonical/types.d.ts.map +1 -0
- package/dist/agents/canonical/types.js +1 -0
- package/dist/app/command-context.d.ts +21 -0
- package/dist/app/command-context.d.ts.map +1 -0
- package/dist/app/command-context.js +18 -0
- package/dist/app/create-program.d.ts +3 -0
- package/dist/app/create-program.d.ts.map +1 -0
- package/dist/app/create-program.js +17 -0
- package/dist/commands/__tests__/helpers.d.ts +12 -0
- package/dist/commands/__tests__/helpers.d.ts.map +1 -0
- package/dist/commands/__tests__/helpers.js +36 -0
- package/dist/commands/backlog/index.d.ts +14 -0
- package/dist/commands/backlog/index.d.ts.map +1 -0
- package/dist/commands/backlog/index.js +80 -0
- package/dist/commands/backlog/init.d.ts +2 -0
- package/dist/commands/backlog/init.d.ts.map +1 -0
- package/dist/commands/backlog/init.js +66 -0
- package/dist/commands/backlog/regenerate-index.d.ts +2 -0
- package/dist/commands/backlog/regenerate-index.d.ts.map +1 -0
- package/dist/commands/backlog/regenerate-index.js +78 -0
- package/dist/commands/backlog/shared/generate-id.d.ts +4 -0
- package/dist/commands/backlog/shared/generate-id.d.ts.map +1 -0
- package/dist/commands/backlog/shared/generate-id.js +65 -0
- package/dist/commands/cleanup/artifacts/artifacts.d.ts +44 -0
- package/dist/commands/cleanup/artifacts/artifacts.d.ts.map +1 -0
- package/dist/commands/cleanup/artifacts/artifacts.js +381 -0
- package/dist/commands/cleanup/artifacts/artifacts.types.d.ts +13 -0
- package/dist/commands/cleanup/artifacts/artifacts.types.d.ts.map +1 -0
- package/dist/commands/cleanup/artifacts/artifacts.types.js +1 -0
- package/dist/commands/cleanup/artifacts/artifacts.utils.d.ts +14 -0
- package/dist/commands/cleanup/artifacts/artifacts.utils.d.ts.map +1 -0
- package/dist/commands/cleanup/artifacts/artifacts.utils.js +74 -0
- package/dist/commands/cleanup/cleanup.types.d.ts +26 -0
- package/dist/commands/cleanup/cleanup.types.d.ts.map +1 -0
- package/dist/commands/cleanup/cleanup.types.js +1 -0
- package/dist/commands/cleanup/cleanup.utils.d.ts +17 -0
- package/dist/commands/cleanup/cleanup.utils.d.ts.map +1 -0
- package/dist/commands/cleanup/cleanup.utils.js +44 -0
- package/dist/commands/cleanup/index.d.ts +3 -0
- package/dist/commands/cleanup/index.d.ts.map +1 -0
- package/dist/commands/cleanup/index.js +9 -0
- package/dist/commands/cleanup/project/project.d.ts +20 -0
- package/dist/commands/cleanup/project/project.d.ts.map +1 -0
- package/dist/commands/cleanup/project/project.js +263 -0
- package/dist/commands/cleanup/project/project.utils.d.ts +8 -0
- package/dist/commands/cleanup/project/project.utils.d.ts.map +1 -0
- package/dist/commands/cleanup/project/project.utils.js +48 -0
- package/dist/commands/config/index.d.ts +16 -0
- package/dist/commands/config/index.d.ts.map +1 -0
- package/dist/commands/config/index.js +700 -0
- package/dist/commands/docs/analyze.d.ts +8 -0
- package/dist/commands/docs/analyze.d.ts.map +1 -0
- package/dist/commands/docs/analyze.js +45 -0
- package/dist/commands/docs/apply.d.ts +8 -0
- package/dist/commands/docs/apply.d.ts.map +1 -0
- package/dist/commands/docs/apply.js +45 -0
- package/dist/commands/docs/index-generate/generator.d.ts +9 -0
- package/dist/commands/docs/index-generate/generator.d.ts.map +1 -0
- package/dist/commands/docs/index-generate/generator.js +114 -0
- package/dist/commands/docs/index-generate/index.d.ts +16 -0
- package/dist/commands/docs/index-generate/index.d.ts.map +1 -0
- package/dist/commands/docs/index-generate/index.js +72 -0
- package/dist/commands/docs/index.d.ts +3 -0
- package/dist/commands/docs/index.d.ts.map +1 -0
- package/dist/commands/docs/index.js +17 -0
- package/dist/commands/docs/init/index.d.ts +18 -0
- package/dist/commands/docs/init/index.d.ts.map +1 -0
- package/dist/commands/docs/init/index.js +129 -0
- package/dist/commands/docs/init/resolve-options.d.ts +41 -0
- package/dist/commands/docs/init/resolve-options.d.ts.map +1 -0
- package/dist/commands/docs/init/resolve-options.js +120 -0
- package/dist/commands/docs/init/scaffold.d.ts +18 -0
- package/dist/commands/docs/init/scaffold.d.ts.map +1 -0
- package/dist/commands/docs/init/scaffold.js +233 -0
- package/dist/commands/docs/migrate/codemod.d.ts +6 -0
- package/dist/commands/docs/migrate/codemod.d.ts.map +1 -0
- package/dist/commands/docs/migrate/codemod.js +62 -0
- package/dist/commands/docs/migrate/frontmatter.d.ts +12 -0
- package/dist/commands/docs/migrate/frontmatter.d.ts.map +1 -0
- package/dist/commands/docs/migrate/frontmatter.js +55 -0
- package/dist/commands/docs/migrate/index.d.ts +18 -0
- package/dist/commands/docs/migrate/index.d.ts.map +1 -0
- package/dist/commands/docs/migrate/index.js +138 -0
- package/dist/commands/docs/nav/contents.d.ts +14 -0
- package/dist/commands/docs/nav/contents.d.ts.map +1 -0
- package/dist/commands/docs/nav/contents.js +106 -0
- package/dist/commands/docs/nav/index.d.ts +3 -0
- package/dist/commands/docs/nav/index.d.ts.map +1 -0
- package/dist/commands/docs/nav/index.js +7 -0
- package/dist/commands/docs/nav/sync.d.ts +20 -0
- package/dist/commands/docs/nav/sync.d.ts.map +1 -0
- package/dist/commands/docs/nav/sync.js +92 -0
- package/dist/commands/doctor/index.d.ts +32 -0
- package/dist/commands/doctor/index.d.ts.map +1 -0
- package/dist/commands/doctor/index.js +373 -0
- package/dist/commands/index-cmd/index.d.ts +11 -0
- package/dist/commands/index-cmd/index.d.ts.map +1 -0
- package/dist/commands/index-cmd/index.js +62 -0
- package/dist/commands/index-cmd/thin-index.d.ts +19 -0
- package/dist/commands/index-cmd/thin-index.d.ts.map +1 -0
- package/dist/commands/index-cmd/thin-index.js +330 -0
- package/dist/commands/index.d.ts +3 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +38 -0
- package/dist/commands/init/detect-docs.d.ts +11 -0
- package/dist/commands/init/detect-docs.d.ts.map +1 -0
- package/dist/commands/init/detect-docs.js +51 -0
- package/dist/commands/init/gitignore.d.ts +6 -0
- package/dist/commands/init/gitignore.d.ts.map +1 -0
- package/dist/commands/init/gitignore.js +41 -0
- package/dist/commands/init/index.d.ts +70 -0
- package/dist/commands/init/index.d.ts.map +1 -0
- package/dist/commands/init/index.js +570 -0
- package/dist/commands/init/tools/core/index.d.ts +12 -0
- package/dist/commands/init/tools/core/index.d.ts.map +1 -0
- package/dist/commands/init/tools/core/index.js +67 -0
- package/dist/commands/init/tools/core/install-core.d.ts +30 -0
- package/dist/commands/init/tools/core/install-core.d.ts.map +1 -0
- package/dist/commands/init/tools/core/install-core.js +50 -0
- package/dist/commands/init/tools/docs/index.d.ts +17 -0
- package/dist/commands/init/tools/docs/index.d.ts.map +1 -0
- package/dist/commands/init/tools/docs/index.js +110 -0
- package/dist/commands/init/tools/docs/install-docs.d.ts +23 -0
- package/dist/commands/init/tools/docs/install-docs.d.ts.map +1 -0
- package/dist/commands/init/tools/docs/install-docs.js +58 -0
- package/dist/commands/init/tools/ideas/index.d.ts +16 -0
- package/dist/commands/init/tools/ideas/index.d.ts.map +1 -0
- package/dist/commands/init/tools/ideas/index.js +94 -0
- package/dist/commands/init/tools/ideas/install-ideas.d.ts +25 -0
- package/dist/commands/init/tools/ideas/install-ideas.d.ts.map +1 -0
- package/dist/commands/init/tools/ideas/install-ideas.js +78 -0
- package/dist/commands/init/tools/index.d.ts +51 -0
- package/dist/commands/init/tools/index.d.ts.map +1 -0
- package/dist/commands/init/tools/index.js +387 -0
- package/dist/commands/init/tools/project-management/index.d.ts +12 -0
- package/dist/commands/init/tools/project-management/index.d.ts.map +1 -0
- package/dist/commands/init/tools/project-management/index.js +61 -0
- package/dist/commands/init/tools/project-management/install-project-management.d.ts +22 -0
- package/dist/commands/init/tools/project-management/install-project-management.d.ts.map +1 -0
- package/dist/commands/init/tools/project-management/install-project-management.js +52 -0
- package/dist/commands/init/tools/research/index.d.ts +17 -0
- package/dist/commands/init/tools/research/index.d.ts.map +1 -0
- package/dist/commands/init/tools/research/index.js +110 -0
- package/dist/commands/init/tools/research/install-research.d.ts +23 -0
- package/dist/commands/init/tools/research/install-research.d.ts.map +1 -0
- package/dist/commands/init/tools/research/install-research.js +52 -0
- package/dist/commands/init/tools/shared/copy-helpers.d.ts +12 -0
- package/dist/commands/init/tools/shared/copy-helpers.d.ts.map +1 -0
- package/dist/commands/init/tools/shared/copy-helpers.js +52 -0
- package/dist/commands/init/tools/shared/skill-manifest.d.ts +22 -0
- package/dist/commands/init/tools/shared/skill-manifest.d.ts.map +1 -0
- package/dist/commands/init/tools/shared/skill-manifest.js +102 -0
- package/dist/commands/init/tools/shared/version.d.ts +3 -0
- package/dist/commands/init/tools/shared/version.d.ts.map +1 -0
- package/dist/commands/init/tools/shared/version.js +27 -0
- package/dist/commands/init/tools/utility/index.d.ts +17 -0
- package/dist/commands/init/tools/utility/index.d.ts.map +1 -0
- package/dist/commands/init/tools/utility/index.js +109 -0
- package/dist/commands/init/tools/utility/install-utility.d.ts +20 -0
- package/dist/commands/init/tools/utility/install-utility.d.ts.map +1 -0
- package/dist/commands/init/tools/utility/install-utility.js +35 -0
- package/dist/commands/init/tools/workflows/index.d.ts +14 -0
- package/dist/commands/init/tools/workflows/index.d.ts.map +1 -0
- package/dist/commands/init/tools/workflows/index.js +84 -0
- package/dist/commands/init/tools/workflows/install-workflows.d.ts +32 -0
- package/dist/commands/init/tools/workflows/install-workflows.d.ts.map +1 -0
- package/dist/commands/init/tools/workflows/install-workflows.js +135 -0
- package/dist/commands/instructions/index.d.ts +3 -0
- package/dist/commands/instructions/index.d.ts.map +1 -0
- package/dist/commands/instructions/index.js +9 -0
- package/dist/commands/instructions/instructions.types.d.ts +52 -0
- package/dist/commands/instructions/instructions.types.d.ts.map +1 -0
- package/dist/commands/instructions/instructions.types.js +1 -0
- package/dist/commands/instructions/instructions.utils.d.ts +13 -0
- package/dist/commands/instructions/instructions.utils.d.ts.map +1 -0
- package/dist/commands/instructions/instructions.utils.js +211 -0
- package/dist/commands/instructions/sync/sync.d.ts +4 -0
- package/dist/commands/instructions/sync/sync.d.ts.map +1 -0
- package/dist/commands/instructions/sync/sync.js +142 -0
- package/dist/commands/instructions/validate/validate.d.ts +4 -0
- package/dist/commands/instructions/validate/validate.d.ts.map +1 -0
- package/dist/commands/instructions/validate/validate.js +53 -0
- package/dist/commands/internal/index.d.ts +3 -0
- package/dist/commands/internal/index.d.ts.map +1 -0
- package/dist/commands/internal/index.js +7 -0
- package/dist/commands/internal/validate-oat-skills.d.ts +10 -0
- package/dist/commands/internal/validate-oat-skills.d.ts.map +1 -0
- package/dist/commands/internal/validate-oat-skills.js +66 -0
- package/dist/commands/local/apply.d.ts +6 -0
- package/dist/commands/local/apply.d.ts.map +1 -0
- package/dist/commands/local/apply.js +56 -0
- package/dist/commands/local/expand.d.ts +8 -0
- package/dist/commands/local/expand.d.ts.map +1 -0
- package/dist/commands/local/expand.js +83 -0
- package/dist/commands/local/index.d.ts +3 -0
- package/dist/commands/local/index.d.ts.map +1 -0
- package/dist/commands/local/index.js +248 -0
- package/dist/commands/local/manage.d.ts +18 -0
- package/dist/commands/local/manage.d.ts.map +1 -0
- package/dist/commands/local/manage.js +66 -0
- package/dist/commands/local/status.d.ts +7 -0
- package/dist/commands/local/status.d.ts.map +1 -0
- package/dist/commands/local/status.js +46 -0
- package/dist/commands/local/sync.d.ts +20 -0
- package/dist/commands/local/sync.d.ts.map +1 -0
- package/dist/commands/local/sync.js +40 -0
- package/dist/commands/project/archive/archive-utils.d.ts +70 -0
- package/dist/commands/project/archive/archive-utils.d.ts.map +1 -0
- package/dist/commands/project/archive/archive-utils.js +236 -0
- package/dist/commands/project/archive/index.d.ts +20 -0
- package/dist/commands/project/archive/index.d.ts.map +1 -0
- package/dist/commands/project/archive/index.js +217 -0
- package/dist/commands/project/index.d.ts +3 -0
- package/dist/commands/project/index.d.ts.map +1 -0
- package/dist/commands/project/index.js +15 -0
- package/dist/commands/project/new/index.d.ts +17 -0
- package/dist/commands/project/new/index.d.ts.map +1 -0
- package/dist/commands/project/new/index.js +76 -0
- package/dist/commands/project/new/scaffold.d.ts +24 -0
- package/dist/commands/project/new/scaffold.d.ts.map +1 -0
- package/dist/commands/project/new/scaffold.js +177 -0
- package/dist/commands/project/open/index.d.ts +26 -0
- package/dist/commands/project/open/index.d.ts.map +1 -0
- package/dist/commands/project/open/index.js +139 -0
- package/dist/commands/project/pause/index.d.ts +27 -0
- package/dist/commands/project/pause/index.d.ts.map +1 -0
- package/dist/commands/project/pause/index.js +120 -0
- package/dist/commands/project/set-mode/index.d.ts +14 -0
- package/dist/commands/project/set-mode/index.d.ts.map +1 -0
- package/dist/commands/project/set-mode/index.js +115 -0
- package/dist/commands/providers/index.d.ts +4 -0
- package/dist/commands/providers/index.d.ts.map +1 -0
- package/dist/commands/providers/index.js +11 -0
- package/dist/commands/providers/inspect/inspect.d.ts +4 -0
- package/dist/commands/providers/inspect/inspect.d.ts.map +1 -0
- package/dist/commands/providers/inspect/inspect.js +156 -0
- package/dist/commands/providers/list/list.d.ts +4 -0
- package/dist/commands/providers/list/list.d.ts.map +1 -0
- package/dist/commands/providers/list/list.js +163 -0
- package/dist/commands/providers/providers.types.d.ts +63 -0
- package/dist/commands/providers/providers.types.d.ts.map +1 -0
- package/dist/commands/providers/providers.types.js +1 -0
- package/dist/commands/providers/set/index.d.ts +4 -0
- package/dist/commands/providers/set/index.d.ts.map +1 -0
- package/dist/commands/providers/set/index.js +138 -0
- package/dist/commands/remove/index.d.ts +3 -0
- package/dist/commands/remove/index.d.ts.map +1 -0
- package/dist/commands/remove/index.js +9 -0
- package/dist/commands/remove/skill/index.d.ts +2 -0
- package/dist/commands/remove/skill/index.d.ts.map +1 -0
- package/dist/commands/remove/skill/index.js +1 -0
- package/dist/commands/remove/skill/remove-skill.d.ts +23 -0
- package/dist/commands/remove/skill/remove-skill.d.ts.map +1 -0
- package/dist/commands/remove/skill/remove-skill.js +231 -0
- package/dist/commands/remove/skills/index.d.ts +2 -0
- package/dist/commands/remove/skills/index.d.ts.map +1 -0
- package/dist/commands/remove/skills/index.js +1 -0
- package/dist/commands/remove/skills/remove-skills.d.ts +14 -0
- package/dist/commands/remove/skills/remove-skills.d.ts.map +1 -0
- package/dist/commands/remove/skills/remove-skills.js +98 -0
- package/dist/commands/repo/index.d.ts +3 -0
- package/dist/commands/repo/index.d.ts.map +1 -0
- package/dist/commands/repo/index.js +7 -0
- package/dist/commands/repo/pr-comments/collect/collect-comments.d.ts +9 -0
- package/dist/commands/repo/pr-comments/collect/collect-comments.d.ts.map +1 -0
- package/dist/commands/repo/pr-comments/collect/collect-comments.js +284 -0
- package/dist/commands/repo/pr-comments/collect/graphql-queries.d.ts +3 -0
- package/dist/commands/repo/pr-comments/collect/graphql-queries.d.ts.map +1 -0
- package/dist/commands/repo/pr-comments/collect/graphql-queries.js +56 -0
- package/dist/commands/repo/pr-comments/collect/index.d.ts +4 -0
- package/dist/commands/repo/pr-comments/collect/index.d.ts.map +1 -0
- package/dist/commands/repo/pr-comments/collect/index.js +25 -0
- package/dist/commands/repo/pr-comments/collect/pr-comments.types.d.ts +62 -0
- package/dist/commands/repo/pr-comments/collect/pr-comments.types.d.ts.map +1 -0
- package/dist/commands/repo/pr-comments/collect/pr-comments.types.js +1 -0
- package/dist/commands/repo/pr-comments/index.d.ts +3 -0
- package/dist/commands/repo/pr-comments/index.d.ts.map +1 -0
- package/dist/commands/repo/pr-comments/index.js +9 -0
- package/dist/commands/repo/pr-comments/triage-collection/index.d.ts +4 -0
- package/dist/commands/repo/pr-comments/triage-collection/index.d.ts.map +1 -0
- package/dist/commands/repo/pr-comments/triage-collection/index.js +21 -0
- package/dist/commands/repo/pr-comments/triage-collection/triage-comments.d.ts +13 -0
- package/dist/commands/repo/pr-comments/triage-collection/triage-comments.d.ts.map +1 -0
- package/dist/commands/repo/pr-comments/triage-collection/triage-comments.js +81 -0
- package/dist/commands/shared/adopt-stray.d.ts +22 -0
- package/dist/commands/shared/adopt-stray.d.ts.map +1 -0
- package/dist/commands/shared/adopt-stray.js +135 -0
- package/dist/commands/shared/agents-md.d.ts +18 -0
- package/dist/commands/shared/agents-md.d.ts.map +1 -0
- package/dist/commands/shared/agents-md.js +81 -0
- package/dist/commands/shared/codex-strays.d.ts +16 -0
- package/dist/commands/shared/codex-strays.d.ts.map +1 -0
- package/dist/commands/shared/codex-strays.js +116 -0
- package/dist/commands/shared/frontmatter-write.d.ts +8 -0
- package/dist/commands/shared/frontmatter-write.d.ts.map +1 -0
- package/dist/commands/shared/frontmatter-write.js +27 -0
- package/dist/commands/shared/frontmatter.d.ts +6 -0
- package/dist/commands/shared/frontmatter.d.ts.map +1 -0
- package/dist/commands/shared/frontmatter.js +35 -0
- package/dist/commands/shared/messages.d.ts +2 -0
- package/dist/commands/shared/messages.d.ts.map +1 -0
- package/dist/commands/shared/messages.js +1 -0
- package/dist/commands/shared/oat-paths.d.ts +2 -0
- package/dist/commands/shared/oat-paths.d.ts.map +1 -0
- package/dist/commands/shared/oat-paths.js +13 -0
- package/dist/commands/shared/shared.prompts.d.ts +21 -0
- package/dist/commands/shared/shared.prompts.d.ts.map +1 -0
- package/dist/commands/shared/shared.prompts.js +107 -0
- package/dist/commands/shared/shared.utils.d.ts +6 -0
- package/dist/commands/shared/shared.utils.d.ts.map +1 -0
- package/dist/commands/shared/shared.utils.js +9 -0
- package/dist/commands/state/generate.d.ts +21 -0
- package/dist/commands/state/generate.d.ts.map +1 -0
- package/dist/commands/state/generate.js +440 -0
- package/dist/commands/state/index.d.ts +11 -0
- package/dist/commands/state/index.d.ts.map +1 -0
- package/dist/commands/state/index.js +58 -0
- package/dist/commands/status/index.d.ts +44 -0
- package/dist/commands/status/index.d.ts.map +1 -0
- package/dist/commands/status/index.js +340 -0
- package/dist/commands/sync/apply.d.ts +4 -0
- package/dist/commands/sync/apply.d.ts.map +1 -0
- package/dist/commands/sync/apply.js +100 -0
- package/dist/commands/sync/dry-run.d.ts +4 -0
- package/dist/commands/sync/dry-run.d.ts.map +1 -0
- package/dist/commands/sync/dry-run.js +74 -0
- package/dist/commands/sync/index.d.ts +4 -0
- package/dist/commands/sync/index.d.ts.map +1 -0
- package/dist/commands/sync/index.js +225 -0
- package/dist/commands/sync/sync.types.d.ts +80 -0
- package/dist/commands/sync/sync.types.d.ts.map +1 -0
- package/dist/commands/sync/sync.types.js +1 -0
- package/dist/commands/sync/sync.utils.d.ts +3 -0
- package/dist/commands/sync/sync.utils.d.ts.map +1 -0
- package/dist/commands/sync/sync.utils.js +8 -0
- package/dist/commands/tools/index.d.ts +3 -0
- package/dist/commands/tools/index.d.ts.map +1 -0
- package/dist/commands/tools/index.js +17 -0
- package/dist/commands/tools/info/index.d.ts +4 -0
- package/dist/commands/tools/info/index.d.ts.map +1 -0
- package/dist/commands/tools/info/index.js +74 -0
- package/dist/commands/tools/info/info-tool.d.ts +21 -0
- package/dist/commands/tools/info/info-tool.d.ts.map +1 -0
- package/dist/commands/tools/info/info-tool.js +52 -0
- package/dist/commands/tools/install/index.d.ts +4 -0
- package/dist/commands/tools/install/index.d.ts.map +1 -0
- package/dist/commands/tools/install/index.js +34 -0
- package/dist/commands/tools/list/index.d.ts +4 -0
- package/dist/commands/tools/list/index.d.ts.map +1 -0
- package/dist/commands/tools/list/index.js +25 -0
- package/dist/commands/tools/list/list-tools.d.ts +13 -0
- package/dist/commands/tools/list/list-tools.d.ts.map +1 -0
- package/dist/commands/tools/list/list-tools.js +43 -0
- package/dist/commands/tools/outdated/index.d.ts +4 -0
- package/dist/commands/tools/outdated/index.d.ts.map +1 -0
- package/dist/commands/tools/outdated/index.js +25 -0
- package/dist/commands/tools/outdated/outdated-tools.d.ts +13 -0
- package/dist/commands/tools/outdated/outdated-tools.d.ts.map +1 -0
- package/dist/commands/tools/outdated/outdated-tools.js +43 -0
- package/dist/commands/tools/remove/index.d.ts +5 -0
- package/dist/commands/tools/remove/index.d.ts.map +1 -0
- package/dist/commands/tools/remove/index.js +122 -0
- package/dist/commands/tools/remove/remove-tools.d.ts +31 -0
- package/dist/commands/tools/remove/remove-tools.d.ts.map +1 -0
- package/dist/commands/tools/remove/remove-tools.js +41 -0
- package/dist/commands/tools/shared/auto-sync.d.ts +16 -0
- package/dist/commands/tools/shared/auto-sync.d.ts.map +1 -0
- package/dist/commands/tools/shared/auto-sync.js +17 -0
- package/dist/commands/tools/shared/scan-tools.d.ts +18 -0
- package/dist/commands/tools/shared/scan-tools.d.ts.map +1 -0
- package/dist/commands/tools/shared/scan-tools.js +128 -0
- package/dist/commands/tools/shared/types.d.ts +12 -0
- package/dist/commands/tools/shared/types.d.ts.map +1 -0
- package/dist/commands/tools/shared/types.js +1 -0
- package/dist/commands/tools/update/index.d.ts +8 -0
- package/dist/commands/tools/update/index.d.ts.map +1 -0
- package/dist/commands/tools/update/index.js +149 -0
- package/dist/commands/tools/update/update-tools.d.ts +29 -0
- package/dist/commands/tools/update/update-tools.d.ts.map +1 -0
- package/dist/commands/tools/update/update-tools.js +148 -0
- package/dist/config/index.d.ts +4 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +2 -0
- package/dist/config/oat-config.d.ts +61 -0
- package/dist/config/oat-config.d.ts.map +1 -0
- package/dist/config/oat-config.js +319 -0
- package/dist/config/runtime.d.ts +2 -0
- package/dist/config/runtime.d.ts.map +1 -0
- package/dist/config/runtime.js +3 -0
- package/dist/config/sync-config.d.ts +49 -0
- package/dist/config/sync-config.d.ts.map +1 -0
- package/dist/config/sync-config.js +94 -0
- package/dist/drift/detector.d.ts +4 -0
- package/dist/drift/detector.d.ts.map +1 -0
- package/dist/drift/detector.js +69 -0
- package/dist/drift/drift.types.d.ts +17 -0
- package/dist/drift/drift.types.d.ts.map +1 -0
- package/dist/drift/drift.types.js +1 -0
- package/dist/drift/index.d.ts +4 -0
- package/dist/drift/index.d.ts.map +1 -0
- package/dist/drift/index.js +2 -0
- package/dist/drift/strays.d.ts +7 -0
- package/dist/drift/strays.d.ts.map +1 -0
- package/dist/drift/strays.js +153 -0
- package/dist/engine/compute-plan.d.ts +16 -0
- package/dist/engine/compute-plan.d.ts.map +1 -0
- package/dist/engine/compute-plan.js +234 -0
- package/dist/engine/engine.types.d.ts +28 -0
- package/dist/engine/engine.types.d.ts.map +1 -0
- package/dist/engine/engine.types.js +8 -0
- package/dist/engine/execute-plan.d.ts +5 -0
- package/dist/engine/execute-plan.d.ts.map +1 -0
- package/dist/engine/execute-plan.js +141 -0
- package/dist/engine/hook.d.ts +23 -0
- package/dist/engine/hook.d.ts.map +1 -0
- package/dist/engine/hook.js +254 -0
- package/dist/engine/index.d.ts +9 -0
- package/dist/engine/index.d.ts.map +1 -0
- package/dist/engine/index.js +6 -0
- package/dist/engine/markers.d.ts +6 -0
- package/dist/engine/markers.d.ts.map +1 -0
- package/dist/engine/markers.js +24 -0
- package/dist/engine/scanner.d.ts +11 -0
- package/dist/engine/scanner.d.ts.map +1 -0
- package/dist/engine/scanner.js +65 -0
- package/dist/engine/test-helpers.d.ts +3 -0
- package/dist/engine/test-helpers.d.ts.map +1 -0
- package/dist/engine/test-helpers.js +31 -0
- package/dist/errors/cli-error.d.ts +5 -0
- package/dist/errors/cli-error.d.ts.map +1 -0
- package/dist/errors/cli-error.js +8 -0
- package/dist/errors/index.d.ts +2 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +1 -0
- package/dist/fs/assets.d.ts +2 -0
- package/dist/fs/assets.d.ts.map +1 -0
- package/dist/fs/assets.js +22 -0
- package/dist/fs/index.d.ts +4 -0
- package/dist/fs/index.d.ts.map +1 -0
- package/dist/fs/index.js +3 -0
- package/dist/fs/io.d.ts +9 -0
- package/dist/fs/io.d.ts.map +1 -0
- package/dist/fs/io.js +74 -0
- package/dist/fs/paths.d.ts +9 -0
- package/dist/fs/paths.d.ts.map +1 -0
- package/dist/fs/paths.js +42 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +48 -0
- package/dist/manifest/hash.d.ts +5 -0
- package/dist/manifest/hash.d.ts.map +1 -0
- package/dist/manifest/hash.js +75 -0
- package/dist/manifest/index.d.ts +5 -0
- package/dist/manifest/index.d.ts.map +1 -0
- package/dist/manifest/index.js +3 -0
- package/dist/manifest/manager.d.ts +8 -0
- package/dist/manifest/manager.d.ts.map +1 -0
- package/dist/manifest/manager.js +86 -0
- package/dist/manifest/manifest.types.d.ts +157 -0
- package/dist/manifest/manifest.types.d.ts.map +1 -0
- package/dist/manifest/manifest.types.js +56 -0
- package/dist/providers/claude/adapter.d.ts +3 -0
- package/dist/providers/claude/adapter.d.ts.map +1 -0
- package/dist/providers/claude/adapter.js +20 -0
- package/dist/providers/claude/index.d.ts +3 -0
- package/dist/providers/claude/index.d.ts.map +1 -0
- package/dist/providers/claude/index.js +2 -0
- package/dist/providers/claude/paths.d.ts +4 -0
- package/dist/providers/claude/paths.d.ts.map +1 -0
- package/dist/providers/claude/paths.js +38 -0
- package/dist/providers/claude/rule-transform.d.ts +3 -0
- package/dist/providers/claude/rule-transform.d.ts.map +1 -0
- package/dist/providers/claude/rule-transform.js +22 -0
- package/dist/providers/codex/adapter.d.ts +3 -0
- package/dist/providers/codex/adapter.d.ts.map +1 -0
- package/dist/providers/codex/adapter.js +20 -0
- package/dist/providers/codex/codec/config-merge.d.ts +17 -0
- package/dist/providers/codex/codec/config-merge.d.ts.map +1 -0
- package/dist/providers/codex/codec/config-merge.js +61 -0
- package/dist/providers/codex/codec/export-to-codex.d.ts +9 -0
- package/dist/providers/codex/codec/export-to-codex.d.ts.map +1 -0
- package/dist/providers/codex/codec/export-to-codex.js +45 -0
- package/dist/providers/codex/codec/import-from-codex.d.ts +9 -0
- package/dist/providers/codex/codec/import-from-codex.d.ts.map +1 -0
- package/dist/providers/codex/codec/import-from-codex.js +52 -0
- package/dist/providers/codex/codec/shared.d.ts +7 -0
- package/dist/providers/codex/codec/shared.d.ts.map +1 -0
- package/dist/providers/codex/codec/shared.js +21 -0
- package/dist/providers/codex/codec/sync-extension.d.ts +32 -0
- package/dist/providers/codex/codec/sync-extension.d.ts.map +1 -0
- package/dist/providers/codex/codec/sync-extension.js +227 -0
- package/dist/providers/codex/index.d.ts +6 -0
- package/dist/providers/codex/index.d.ts.map +1 -0
- package/dist/providers/codex/index.js +5 -0
- package/dist/providers/codex/paths.d.ts +4 -0
- package/dist/providers/codex/paths.d.ts.map +1 -0
- package/dist/providers/codex/paths.js +28 -0
- package/dist/providers/copilot/adapter.d.ts +3 -0
- package/dist/providers/copilot/adapter.d.ts.map +1 -0
- package/dist/providers/copilot/adapter.js +30 -0
- package/dist/providers/copilot/index.d.ts +3 -0
- package/dist/providers/copilot/index.d.ts.map +1 -0
- package/dist/providers/copilot/index.js +2 -0
- package/dist/providers/copilot/paths.d.ts +4 -0
- package/dist/providers/copilot/paths.d.ts.map +1 -0
- package/dist/providers/copilot/paths.js +38 -0
- package/dist/providers/copilot/rule-transform.d.ts +3 -0
- package/dist/providers/copilot/rule-transform.d.ts.map +1 -0
- package/dist/providers/copilot/rule-transform.js +58 -0
- package/dist/providers/cursor/adapter.d.ts +3 -0
- package/dist/providers/cursor/adapter.d.ts.map +1 -0
- package/dist/providers/cursor/adapter.js +20 -0
- package/dist/providers/cursor/index.d.ts +3 -0
- package/dist/providers/cursor/index.d.ts.map +1 -0
- package/dist/providers/cursor/index.js +2 -0
- package/dist/providers/cursor/paths.d.ts +4 -0
- package/dist/providers/cursor/paths.d.ts.map +1 -0
- package/dist/providers/cursor/paths.js +38 -0
- package/dist/providers/cursor/rule-transform.d.ts +3 -0
- package/dist/providers/cursor/rule-transform.d.ts.map +1 -0
- package/dist/providers/cursor/rule-transform.js +48 -0
- package/dist/providers/gemini/adapter.d.ts +3 -0
- package/dist/providers/gemini/adapter.d.ts.map +1 -0
- package/dist/providers/gemini/adapter.js +20 -0
- package/dist/providers/gemini/index.d.ts +3 -0
- package/dist/providers/gemini/index.d.ts.map +1 -0
- package/dist/providers/gemini/index.js +2 -0
- package/dist/providers/gemini/paths.d.ts +4 -0
- package/dist/providers/gemini/paths.d.ts.map +1 -0
- package/dist/providers/gemini/paths.js +28 -0
- package/dist/providers/shared/adapter.types.d.ts +21 -0
- package/dist/providers/shared/adapter.types.d.ts.map +1 -0
- package/dist/providers/shared/adapter.types.js +1 -0
- package/dist/providers/shared/adapter.utils.d.ts +12 -0
- package/dist/providers/shared/adapter.utils.d.ts.map +1 -0
- package/dist/providers/shared/adapter.utils.js +57 -0
- package/dist/providers/shared/agent-codec.types.d.ts +13 -0
- package/dist/providers/shared/agent-codec.types.d.ts.map +1 -0
- package/dist/providers/shared/agent-codec.types.js +1 -0
- package/dist/providers/shared/index.d.ts +6 -0
- package/dist/providers/shared/index.d.ts.map +1 -0
- package/dist/providers/shared/index.js +2 -0
- package/dist/providers/shared/markdown-agent-codec.d.ts +5 -0
- package/dist/providers/shared/markdown-agent-codec.d.ts.map +1 -0
- package/dist/providers/shared/markdown-agent-codec.js +12 -0
- package/dist/release/public-package-contract.d.ts +14 -0
- package/dist/release/public-package-contract.d.ts.map +1 -0
- package/dist/release/public-package-contract.js +97 -0
- package/dist/rules/canonical/index.d.ts +6 -0
- package/dist/rules/canonical/index.d.ts.map +1 -0
- package/dist/rules/canonical/index.js +4 -0
- package/dist/rules/canonical/parse.d.ts +9 -0
- package/dist/rules/canonical/parse.d.ts.map +1 -0
- package/dist/rules/canonical/parse.js +103 -0
- package/dist/rules/canonical/provider-filenames.d.ts +3 -0
- package/dist/rules/canonical/provider-filenames.d.ts.map +1 -0
- package/dist/rules/canonical/provider-filenames.js +13 -0
- package/dist/rules/canonical/render.d.ts +5 -0
- package/dist/rules/canonical/render.d.ts.map +1 -0
- package/dist/rules/canonical/render.js +32 -0
- package/dist/rules/canonical/types.d.ts +16 -0
- package/dist/rules/canonical/types.d.ts.map +1 -0
- package/dist/rules/canonical/types.js +6 -0
- package/dist/shared/index.d.ts +3 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +1 -0
- package/dist/shared/types.d.ts +10 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/shared/types.js +14 -0
- package/dist/ui/ansi.d.ts +2 -0
- package/dist/ui/ansi.d.ts.map +1 -0
- package/dist/ui/ansi.js +19 -0
- package/dist/ui/index.d.ts +7 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +3 -0
- package/dist/ui/logger.d.ts +15 -0
- package/dist/ui/logger.d.ts.map +1 -0
- package/dist/ui/logger.js +52 -0
- package/dist/ui/output.d.ts +16 -0
- package/dist/ui/output.d.ts.map +1 -0
- package/dist/ui/output.js +135 -0
- package/dist/ui/spinner.d.ts +16 -0
- package/dist/ui/spinner.d.ts.map +1 -0
- package/dist/ui/spinner.js +46 -0
- package/dist/validation/index.d.ts +3 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +1 -0
- package/dist/validation/skills.d.ts +10 -0
- package/dist/validation/skills.d.ts.map +1 -0
- package/dist/validation/skills.js +166 -0
- package/package.json +62 -0
|
@@ -0,0 +1,738 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: oat-project-reconcile
|
|
3
|
+
version: 1.0.0
|
|
4
|
+
description: Use when human-implemented commits need to be mapped back to planned tasks. Reconciles implementation.md and state.md after manual work outside the OAT workflow.
|
|
5
|
+
disable-model-invocation: true
|
|
6
|
+
user-invocable: true
|
|
7
|
+
allowed-tools: Read, Write, Bash(git:*), Glob, Grep, AskUserQuestion
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Reconcile Manual Implementation
|
|
11
|
+
|
|
12
|
+
Bridge the gap between human implementation and OAT's artifact-driven workflow. Analyzes commits made outside the structured OAT flow, maps them to planned tasks, and updates tracking artifacts after human confirmation.
|
|
13
|
+
|
|
14
|
+
## Prerequisites
|
|
15
|
+
|
|
16
|
+
**Required:**
|
|
17
|
+
|
|
18
|
+
- Active OAT project with a `plan.md` containing task definitions
|
|
19
|
+
- Project must be in `implement` phase (or `plan` phase with `oat_phase_status: complete`)
|
|
20
|
+
- At least one commit exists that is not tracked in `implementation.md`
|
|
21
|
+
|
|
22
|
+
## Mode Assertion
|
|
23
|
+
|
|
24
|
+
**OAT MODE: Reconciliation**
|
|
25
|
+
|
|
26
|
+
**Purpose:** Analyze manual/human commits, map them to planned tasks, and reconcile tracking artifacts with user confirmation.
|
|
27
|
+
|
|
28
|
+
## Progress Indicators (User-Facing)
|
|
29
|
+
|
|
30
|
+
- Print a phase banner once at start:
|
|
31
|
+
|
|
32
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
33
|
+
OAT ▸ RECONCILE
|
|
34
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
35
|
+
|
|
36
|
+
- For each step, announce a compact header:
|
|
37
|
+
- `OAT ▸ RECONCILE — Step N: {step_name}`
|
|
38
|
+
- Before multi-step bookkeeping:
|
|
39
|
+
- `[1/N] {action}…`
|
|
40
|
+
- Keep it concise; don't print a line for every shell command.
|
|
41
|
+
|
|
42
|
+
**BLOCKED Activities:**
|
|
43
|
+
|
|
44
|
+
- No modifying code files
|
|
45
|
+
- No rewriting git history
|
|
46
|
+
- No deleting or overwriting existing implementation.md entries
|
|
47
|
+
- No silent assumptions on uncertain mappings
|
|
48
|
+
|
|
49
|
+
**ALLOWED Activities:**
|
|
50
|
+
|
|
51
|
+
- Reading git log, diffs, and file lists
|
|
52
|
+
- Reading plan.md, implementation.md, state.md
|
|
53
|
+
- Appending new entries to implementation.md
|
|
54
|
+
- Updating frontmatter pointers in implementation.md and state.md
|
|
55
|
+
- Asking user for confirmation on mappings
|
|
56
|
+
- Creating a single bookkeeping commit
|
|
57
|
+
|
|
58
|
+
**Self-Correction Protocol:**
|
|
59
|
+
If you catch yourself:
|
|
60
|
+
|
|
61
|
+
- Modifying code files → STOP (reconciliation is tracking-only)
|
|
62
|
+
- Assuming a mapping without user confirmation → STOP (present options)
|
|
63
|
+
- Overwriting existing entries → STOP (append only)
|
|
64
|
+
|
|
65
|
+
**Recovery:**
|
|
66
|
+
|
|
67
|
+
1. Acknowledge the deviation
|
|
68
|
+
2. Return to current step
|
|
69
|
+
3. Ask user for guidance
|
|
70
|
+
|
|
71
|
+
## Process
|
|
72
|
+
|
|
73
|
+
### Step 0: Resolve Active Project
|
|
74
|
+
|
|
75
|
+
OAT stores active project context in `.oat/config.local.json` (`activeProject`, local-only).
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
PROJECT_PATH=$(oat config get activeProject 2>/dev/null || true)
|
|
79
|
+
PROJECTS_ROOT="${OAT_PROJECTS_ROOT:-$(oat config get projects.root 2>/dev/null || echo ".oat/projects/shared")}"
|
|
80
|
+
PROJECTS_ROOT="${PROJECTS_ROOT%/}"
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**If `PROJECT_PATH` is missing/invalid:**
|
|
84
|
+
|
|
85
|
+
- Ask the user for `{project-name}`
|
|
86
|
+
- Set `PROJECT_PATH` to `${PROJECTS_ROOT}/{project-name}`
|
|
87
|
+
- Write it for future phases:
|
|
88
|
+
```bash
|
|
89
|
+
mkdir -p .oat
|
|
90
|
+
oat config set activeProject "$PROJECT_PATH"
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**If `PROJECT_PATH` is valid:** derive `{project-name}` as the directory name (basename of the path).
|
|
94
|
+
|
|
95
|
+
### Step 0.5: Prerequisite Check
|
|
96
|
+
|
|
97
|
+
Verify the project is ready for reconciliation:
|
|
98
|
+
|
|
99
|
+
1. **Check `plan.md` exists:**
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
test -f "$PROJECT_PATH/plan.md" || { echo "ERROR: plan.md not found. Run oat-project-plan first."; exit 1; }
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
2. **Check project phase:**
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
PHASE=$(grep "^oat_phase:" "$PROJECT_PATH/state.md" 2>/dev/null | awk '{print $2}')
|
|
109
|
+
PHASE_STATUS=$(grep "^oat_phase_status:" "$PROJECT_PATH/state.md" 2>/dev/null | awk '{print $2}')
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
- If `PHASE` is `implement`: proceed
|
|
113
|
+
- If `PHASE` is `plan` and `PHASE_STATUS` is `complete`: proceed (plan just finished, implementation starting)
|
|
114
|
+
- Otherwise: STOP — tell user the project is not in implementation phase
|
|
115
|
+
|
|
116
|
+
3. **Check for untracked commits:**
|
|
117
|
+
- Read `implementation.md` if it exists — find the last recorded commit SHA
|
|
118
|
+
- If all recent commits are already tracked, inform user: "No untracked commits found. Nothing to reconcile."
|
|
119
|
+
|
|
120
|
+
### Step 1: Find Checkpoint
|
|
121
|
+
|
|
122
|
+
Identify the last commit that OAT has already tracked. Everything after this commit is "untracked human work" that needs reconciliation.
|
|
123
|
+
|
|
124
|
+
**Priority 1 — Last tracked commit in `implementation.md`:**
|
|
125
|
+
|
|
126
|
+
Read `implementation.md` and find the last task entry with a commit SHA (look for `**Commit:** {sha}` patterns where sha is not `-` or empty). This is the most reliable checkpoint because it's exactly what OAT already recorded.
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
LAST_TRACKED_SHA=$(grep -oP '\*\*Commit:\*\*\s+\K[0-9a-f]{7,40}' "$PROJECT_PATH/implementation.md" | tail -1)
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**Priority 2 — Last OAT-convention commit in git log:**
|
|
133
|
+
|
|
134
|
+
If `implementation.md` has no tracked commits, scan git log for the last commit matching OAT patterns:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
# Task commits: feat(p01-t01): ..., fix(p02-t03): ...
|
|
138
|
+
OAT_TASK_SHA=$(git log --oneline --grep='(p[0-9]*-t[0-9]*)' --extended-regexp -n 1 --format='%H')
|
|
139
|
+
|
|
140
|
+
# Bookkeeping commits: chore(oat): update tracking artifacts ...
|
|
141
|
+
OAT_BOOK_SHA=$(git log --oneline --grep='chore(oat):' -n 1 --format='%H')
|
|
142
|
+
|
|
143
|
+
# Use whichever is more recent (closer to HEAD)
|
|
144
|
+
if [ -n "$OAT_TASK_SHA" ] && [ -n "$OAT_BOOK_SHA" ]; then
|
|
145
|
+
# Compare: is OAT_TASK_SHA an ancestor of OAT_BOOK_SHA?
|
|
146
|
+
if git merge-base --is-ancestor "$OAT_TASK_SHA" "$OAT_BOOK_SHA" 2>/dev/null; then
|
|
147
|
+
CHECKPOINT="$OAT_BOOK_SHA"
|
|
148
|
+
else
|
|
149
|
+
CHECKPOINT="$OAT_TASK_SHA"
|
|
150
|
+
fi
|
|
151
|
+
elif [ -n "$OAT_TASK_SHA" ]; then
|
|
152
|
+
CHECKPOINT="$OAT_TASK_SHA"
|
|
153
|
+
elif [ -n "$OAT_BOOK_SHA" ]; then
|
|
154
|
+
CHECKPOINT="$OAT_BOOK_SHA"
|
|
155
|
+
fi
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
**Priority 3 — Merge-base fallback:**
|
|
159
|
+
|
|
160
|
+
If no OAT commits are found at all, fall back to the merge-base with the default branch:
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
DEFAULT_BRANCH=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@')
|
|
164
|
+
DEFAULT_BRANCH="${DEFAULT_BRANCH:-main}"
|
|
165
|
+
CHECKPOINT=$(git merge-base HEAD "$DEFAULT_BRANCH" 2>/dev/null)
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
If merge-base also fails (e.g., orphan branch), use the first commit on the branch:
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
CHECKPOINT=$(git rev-list --max-parents=0 HEAD | tail -1)
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
**Report checkpoint to user:**
|
|
175
|
+
|
|
176
|
+
```
|
|
177
|
+
OAT ▸ RECONCILE — Step 1: Checkpoint
|
|
178
|
+
|
|
179
|
+
Last tracked commit: {CHECKPOINT_SHA} ({date})
|
|
180
|
+
Source: {implementation.md | git log pattern | merge-base}
|
|
181
|
+
Task: {last_tracked_task_id or "pre-project"}
|
|
182
|
+
|
|
183
|
+
Commits since checkpoint: {count}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Count commits in range:
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
COMMIT_COUNT=$(git rev-list --count "$CHECKPOINT"..HEAD)
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
**User confirmation gate:**
|
|
193
|
+
|
|
194
|
+
Ask user: "Use this as the checkpoint? Or provide a different commit SHA."
|
|
195
|
+
|
|
196
|
+
If user provides an alternative SHA, validate it:
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
git cat-file -t "$USER_SHA" 2>/dev/null | grep -q commit
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Store the confirmed checkpoint as `$CHECKPOINT` for use in subsequent steps.
|
|
203
|
+
|
|
204
|
+
### Step 2: Collect and Analyze Commits
|
|
205
|
+
|
|
206
|
+
Gather all commits between the checkpoint and HEAD, filter out noise, and extract metadata for mapping.
|
|
207
|
+
|
|
208
|
+
**Collect commits in range:**
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
git log --format='%H|%s|%an|%ai' "$CHECKPOINT"..HEAD --reverse
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
This gives oldest-first ordering (matches plan execution order). Parse each line into: `SHA`, `message`, `author`, `date`.
|
|
215
|
+
|
|
216
|
+
**Gather per-commit details:**
|
|
217
|
+
|
|
218
|
+
For each commit SHA, collect:
|
|
219
|
+
|
|
220
|
+
1. Changed files:
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
git diff-tree --no-commit-id -r --name-only "$SHA"
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
2. Diff stats (insertions/deletions):
|
|
227
|
+
```bash
|
|
228
|
+
git diff --stat "$SHA"~1.."$SHA" 2>/dev/null || git diff --stat "$(git hash-object -t tree /dev/null)".."$SHA"
|
|
229
|
+
```
|
|
230
|
+
(The fallback handles the case where `$SHA` is the first commit on the branch.)
|
|
231
|
+
|
|
232
|
+
**Filter out non-implementation commits:**
|
|
233
|
+
|
|
234
|
+
Remove from the analysis set:
|
|
235
|
+
|
|
236
|
+
1. **Merge commits:**
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
git rev-list --merges "$CHECKPOINT"..HEAD
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
Any SHA in this list is excluded.
|
|
243
|
+
|
|
244
|
+
2. **Bookkeeping-only commits** — commits where ALL changed files match OAT tracking patterns:
|
|
245
|
+
- Files ending in `implementation.md`, `state.md`, or `plan.md` within any `.oat/` path
|
|
246
|
+
- Files ending in `state.md` within any `.oat/` path
|
|
247
|
+
- Commit message starts with `chore(oat):`
|
|
248
|
+
|
|
249
|
+
Rule: if every file in the commit is under a `.oat/` subdirectory and matches one of `implementation.md`, `state.md`, `plan.md`, or `discovery.md` — then it's bookkeeping and should be excluded.
|
|
250
|
+
|
|
251
|
+
3. **Already-tracked commits** — commits whose SHA already appears in `implementation.md` task entries (from Step 0.5 check).
|
|
252
|
+
|
|
253
|
+
**Present commit summary to user:**
|
|
254
|
+
|
|
255
|
+
```
|
|
256
|
+
OAT ▸ RECONCILE — Step 2: Commit Analysis
|
|
257
|
+
|
|
258
|
+
Range: {CHECKPOINT_SHORT}..HEAD ({total_count} commits, {filtered_count} after filtering)
|
|
259
|
+
Filtered out: {merge_count} merges, {bookkeeping_count} bookkeeping, {tracked_count} already tracked
|
|
260
|
+
|
|
261
|
+
| # | SHA (short) | Message (first 60 chars) | Files | Insertions | Deletions |
|
|
262
|
+
|----|-------------|-----------------------------------|-------|------------|-----------|
|
|
263
|
+
| 1 | abc1234 | add auth endpoint | 3 | +120 | -5 |
|
|
264
|
+
| 2 | def5678 | fix validation logic | 1 | +15 | -8 |
|
|
265
|
+
| .. | ... | ... | ... | ... | ... |
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
**Extract plan tasks for mapping:**
|
|
269
|
+
|
|
270
|
+
Read `plan.md` and extract all tasks:
|
|
271
|
+
|
|
272
|
+
1. Parse `### Task pNN-tNN: {Name}` headers to get task IDs and names
|
|
273
|
+
2. Parse `**Files:**` blocks under each task to get expected file lists (both `Create:` and `Modify:` entries)
|
|
274
|
+
3. Parse task descriptions/steps for keyword extraction (used in Step 3 for message matching)
|
|
275
|
+
4. Note which tasks already have `completed` status in `implementation.md` (skip these during mapping)
|
|
276
|
+
|
|
277
|
+
Store as a structured list:
|
|
278
|
+
|
|
279
|
+
```
|
|
280
|
+
TASKS = [
|
|
281
|
+
{ id: "p01-t01", name: "...", files: ["path/a.ts", "path/b.ts"], keywords: ["auth", "endpoint"] },
|
|
282
|
+
{ id: "p01-t02", name: "...", files: [...], keywords: [...] },
|
|
283
|
+
...
|
|
284
|
+
]
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
Only include tasks that are **not yet completed** in `implementation.md`.
|
|
288
|
+
|
|
289
|
+
### Step 3: Map Commits to Tasks
|
|
290
|
+
|
|
291
|
+
For each filtered commit from Step 2, attempt to map it to a planned task using signals in priority order. Once a commit is mapped via a higher-priority signal, skip lower-priority signals for that commit.
|
|
292
|
+
|
|
293
|
+
**Signal A — Task ID in commit message (→ High confidence):**
|
|
294
|
+
|
|
295
|
+
Check if the commit message contains a task ID pattern:
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
# Match patterns like: feat(p01-t03): ..., fix(p02-t01): ..., (p01-t02)
|
|
299
|
+
TASK_ID=$(echo "$COMMIT_MSG" | grep -oP 'p[0-9]+-t[0-9]+' | head -1)
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
If `$TASK_ID` matches a pending task in the plan: map with `confidence=high`.
|
|
303
|
+
|
|
304
|
+
**Signal B — File overlap (→ High/Medium/Low confidence):**
|
|
305
|
+
|
|
306
|
+
For each unmatched commit, compare its changed files against each pending task's file list:
|
|
307
|
+
|
|
308
|
+
```
|
|
309
|
+
For each pending task T:
|
|
310
|
+
task_files = set of files listed in plan for T
|
|
311
|
+
commit_files = set of files changed in this commit
|
|
312
|
+
intersection = commit_files ∩ task_files
|
|
313
|
+
overlap_ratio = |intersection| / |task_files| (if task_files is non-empty)
|
|
314
|
+
|
|
315
|
+
Classification:
|
|
316
|
+
overlap_ratio ≥ 0.8 AND only one task matches at this level → confidence=high
|
|
317
|
+
overlap_ratio ≥ 0.4 → confidence=medium
|
|
318
|
+
overlap_ratio > 0 → confidence=low
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
Pick the best match (highest `overlap_ratio`). Break ties by plan order (earlier task wins).
|
|
322
|
+
|
|
323
|
+
If a commit's files don't appear in any task's file list, proceed to Signal C.
|
|
324
|
+
|
|
325
|
+
**Signal C — Message keyword match (→ Medium confidence):**
|
|
326
|
+
|
|
327
|
+
For each still-unmatched commit:
|
|
328
|
+
|
|
329
|
+
1. Tokenize the commit message: split on spaces/punctuation, lowercase, remove stop words (a, the, and, or, to, in, for, of, with, is, this, that)
|
|
330
|
+
2. Tokenize each pending task's name and description similarly
|
|
331
|
+
3. Count matching significant tokens (≥3 chars)
|
|
332
|
+
|
|
333
|
+
```
|
|
334
|
+
If matching_tokens ≥ 2 with a single task → confidence=medium
|
|
335
|
+
If matching_tokens ≥ 2 with multiple tasks → confidence=low (ambiguous)
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
**Signal D — Temporal ordering (→ Low confidence):**
|
|
339
|
+
|
|
340
|
+
For each still-unmatched commit, use its position in the commit sequence as a tiebreaker:
|
|
341
|
+
|
|
342
|
+
```
|
|
343
|
+
Sort remaining unmatched commits by commit date (oldest first).
|
|
344
|
+
Sort remaining pending tasks by plan order (p01-t01, p01-t02, ...).
|
|
345
|
+
|
|
346
|
+
For each unmatched commit (in date order):
|
|
347
|
+
candidate_task = first pending task (in plan order) that has no commits mapped yet
|
|
348
|
+
If candidate_task exists:
|
|
349
|
+
map commit → candidate_task with confidence=low
|
|
350
|
+
Remove candidate_task from pending list
|
|
351
|
+
Else:
|
|
352
|
+
classify as unmapped
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
This signal is intentionally conservative (low confidence) — it only applies when no stronger signal matched. It is most useful for ambiguous manual ranges where commit order is the only remaining signal that correlates with plan task order.
|
|
356
|
+
|
|
357
|
+
**Signal E — No match (→ Unmapped):**
|
|
358
|
+
|
|
359
|
+
Any commits still unmatched after all signals: classify as `unmapped`.
|
|
360
|
+
|
|
361
|
+
**Multi-commit grouping:**
|
|
362
|
+
|
|
363
|
+
After individual mapping, group commits that map to the same task:
|
|
364
|
+
|
|
365
|
+
```
|
|
366
|
+
For each task with multiple mapped commits:
|
|
367
|
+
- representative_sha = latest commit SHA (most recent)
|
|
368
|
+
- combined_files = union of all commit file lists
|
|
369
|
+
- combined_message = concatenation of commit messages (for outcome generation)
|
|
370
|
+
- confidence = lowest confidence among grouped commits (conservative)
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
**Present mapping report:**
|
|
374
|
+
|
|
375
|
+
```
|
|
376
|
+
OAT ▸ RECONCILE — Step 3: Mapping Report
|
|
377
|
+
|
|
378
|
+
Mapped to tasks:
|
|
379
|
+
| Task | Task Name | Commits | Confidence | Files |
|
|
380
|
+
|-----------|--------------------------|------------------|------------|-------|
|
|
381
|
+
| p01-t03 | Add validation logic | abc1234, def5678 | high | 4 |
|
|
382
|
+
| p02-t01 | Implement API endpoint | ghi9012 | medium | 2 |
|
|
383
|
+
|
|
384
|
+
Unmapped commits:
|
|
385
|
+
| SHA (short) | Message | Files |
|
|
386
|
+
|-------------|----------------------------|-------|
|
|
387
|
+
| jkl3456 | update readme | 1 |
|
|
388
|
+
| mno7890 | fix typo in config | 1 |
|
|
389
|
+
|
|
390
|
+
Tasks still pending (no commits matched):
|
|
391
|
+
| Task | Task Name |
|
|
392
|
+
|-----------|--------------------------|
|
|
393
|
+
| p02-t02 | Add integration tests |
|
|
394
|
+
|
|
395
|
+
Summary: {mapped_task_count}/{total_pending_tasks} tasks addressed,
|
|
396
|
+
{mapped_commit_count}/{total_commits} commits mapped,
|
|
397
|
+
{unmapped_count} unmapped
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
### Step 4: Confirm Mappings (Human-in-the-Loop)
|
|
401
|
+
|
|
402
|
+
Present mappings to the user for confirmation. No artifact writes happen in this step — only building the confirmed mapping set.
|
|
403
|
+
|
|
404
|
+
**4a. High-confidence batch approval:**
|
|
405
|
+
|
|
406
|
+
Present all high-confidence mappings as a batch:
|
|
407
|
+
|
|
408
|
+
```
|
|
409
|
+
The following high-confidence mappings were detected:
|
|
410
|
+
|
|
411
|
+
p01-t03 "Add validation logic"
|
|
412
|
+
← abc1234: "add input validation" (file overlap 90%)
|
|
413
|
+
← def5678: "fix validation edge case" (file overlap 85%)
|
|
414
|
+
|
|
415
|
+
p02-t01 "Implement API endpoint"
|
|
416
|
+
← ghi9012: "add /api/users endpoint" (task ID in message)
|
|
417
|
+
|
|
418
|
+
Accept all high-confidence mappings?
|
|
419
|
+
1. Yes, accept all
|
|
420
|
+
2. Review individually
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
If user chooses "Review individually", fall through to the per-mapping flow below.
|
|
424
|
+
|
|
425
|
+
**4b. Medium/Low-confidence individual review:**
|
|
426
|
+
|
|
427
|
+
For each medium or low confidence mapping, present individually:
|
|
428
|
+
|
|
429
|
+
```
|
|
430
|
+
Commit ghi9012: "fix validation logic" (2 files changed: src/validate.ts, src/utils.ts)
|
|
431
|
+
Best match: p02-t01 "Add input validation" (confidence: medium, file overlap 60%)
|
|
432
|
+
|
|
433
|
+
What should we do with this commit?
|
|
434
|
+
1. Accept mapping to p02-t01
|
|
435
|
+
2. Assign to a different task
|
|
436
|
+
3. Mark as unplanned work (log in implementation.md)
|
|
437
|
+
4. Skip (don't log this commit)
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
If user chooses "Assign to a different task", present the list of unmatched pending tasks and let them pick.
|
|
441
|
+
|
|
442
|
+
**4c. Unmapped commits:**
|
|
443
|
+
|
|
444
|
+
For each unmapped commit:
|
|
445
|
+
|
|
446
|
+
```
|
|
447
|
+
Commit jkl3456: "update readme" (1 file changed: README.md)
|
|
448
|
+
No matching task found.
|
|
449
|
+
|
|
450
|
+
What should we do with this commit?
|
|
451
|
+
1. Assign to a task: [list pending tasks]
|
|
452
|
+
2. Log as unplanned work in implementation.md
|
|
453
|
+
3. Skip (don't log)
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
**4d. Task completion status:**
|
|
457
|
+
|
|
458
|
+
For each task that has confirmed mapped commits, ask about completion:
|
|
459
|
+
|
|
460
|
+
```
|
|
461
|
+
Task p02-t01 "Add input validation" — 1 commit mapped.
|
|
462
|
+
Mark this task as:
|
|
463
|
+
1. Completed (all work for this task is done)
|
|
464
|
+
2. In Progress (partial — more work still needed)
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
Default to "Completed" for high-confidence mappings; default to "In Progress" for medium/low.
|
|
468
|
+
|
|
469
|
+
**4e. Final confirmation:**
|
|
470
|
+
|
|
471
|
+
Present the complete confirmed mapping before proceeding:
|
|
472
|
+
|
|
473
|
+
```
|
|
474
|
+
OAT ▸ RECONCILE — Step 4: Confirmed Mappings
|
|
475
|
+
|
|
476
|
+
Tasks to update:
|
|
477
|
+
| Task | Status | Commits | Confidence |
|
|
478
|
+
|-----------|-------------|------------------|------------|
|
|
479
|
+
| p01-t03 | completed | abc1234, def5678 | high |
|
|
480
|
+
| p02-t01 | in_progress | ghi9012 | medium |
|
|
481
|
+
|
|
482
|
+
Unplanned work to log:
|
|
483
|
+
| SHA | Summary |
|
|
484
|
+
|-----------|--------------------------|
|
|
485
|
+
| jkl3456 | update readme |
|
|
486
|
+
|
|
487
|
+
Skipped commits: mno7890
|
|
488
|
+
|
|
489
|
+
Proceed with artifact updates?
|
|
490
|
+
1. Yes, update artifacts
|
|
491
|
+
2. Go back and revise mappings
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
Only proceed to Step 5 after user confirms "Yes, update artifacts".
|
|
495
|
+
|
|
496
|
+
### Step 5: Update Artifacts
|
|
497
|
+
|
|
498
|
+
Apply the confirmed mappings to OAT tracking artifacts. This is the only step that writes files.
|
|
499
|
+
|
|
500
|
+
**5a. Read existing `implementation.md`:**
|
|
501
|
+
|
|
502
|
+
Read the full file. Identify:
|
|
503
|
+
|
|
504
|
+
- Existing task entries (preserve all — never overwrite or delete)
|
|
505
|
+
- The insertion point for each task entry (find the `### Task pNN-tNN:` section)
|
|
506
|
+
- Current progress table values
|
|
507
|
+
- Current frontmatter values
|
|
508
|
+
|
|
509
|
+
**5b. Write task entries in `implementation.md`:**
|
|
510
|
+
|
|
511
|
+
For each confirmed task mapping, check whether a `### Task {task_id}:` section already exists in `implementation.md`:
|
|
512
|
+
|
|
513
|
+
- **If the section does NOT exist:** Insert a new task entry at the correct position (in plan task order within the appropriate phase section).
|
|
514
|
+
- **If the section ALREADY exists:** Do NOT replace or overwrite it. Instead, append a `**Reconciliation Update:**` block below the existing entry to augment it with the reconciled data.
|
|
515
|
+
|
|
516
|
+
**New entry template** (when no existing section):
|
|
517
|
+
|
|
518
|
+
```markdown
|
|
519
|
+
### Task {task_id}: {Task Name}
|
|
520
|
+
|
|
521
|
+
**Status:** {completed | in_progress}
|
|
522
|
+
**Commit:** {representative_sha} (reconciled)
|
|
523
|
+
|
|
524
|
+
**Outcome (reconciled from manual implementation):**
|
|
525
|
+
|
|
526
|
+
- {2-5 bullets derived from commit messages and diff summary}
|
|
527
|
+
- {Use git show --stat and commit messages to infer what changed}
|
|
528
|
+
|
|
529
|
+
**Files changed:**
|
|
530
|
+
|
|
531
|
+
- `{path}` - {inferred purpose from diff context}
|
|
532
|
+
|
|
533
|
+
**Verification:**
|
|
534
|
+
|
|
535
|
+
- Run: `{verification command from plan task, if available}`
|
|
536
|
+
- Result: not verified — reconciled entry
|
|
537
|
+
|
|
538
|
+
**Notes / Decisions:**
|
|
539
|
+
|
|
540
|
+
- Reconciled from manual implementation on {today's date}
|
|
541
|
+
- Original commits: {comma-separated SHA list}
|
|
542
|
+
- Mapping confidence: {high|medium|low}
|
|
543
|
+
- Mapping signal: {task ID in message | file overlap N% | keyword match}
|
|
544
|
+
```
|
|
545
|
+
|
|
546
|
+
**Augmentation template** (when section already exists — append below existing content):
|
|
547
|
+
|
|
548
|
+
```markdown
|
|
549
|
+
**Reconciliation Update ({today's date}):**
|
|
550
|
+
|
|
551
|
+
- Additional commits mapped: {comma-separated SHA list}
|
|
552
|
+
- Mapping confidence: {high|medium|low}
|
|
553
|
+
- Mapping signal: {task ID in message | file overlap N% | keyword match}
|
|
554
|
+
- Additional files: {files not already listed, if any}
|
|
555
|
+
- Status updated: {if status changed, e.g., in_progress → completed}
|
|
556
|
+
```
|
|
557
|
+
|
|
558
|
+
**Important:** Never delete, replace, or overwrite existing task entry content. Existing notes, decisions, and outcomes represent logged history that must be preserved.
|
|
559
|
+
|
|
560
|
+
To generate the **Outcome** bullets:
|
|
561
|
+
|
|
562
|
+
1. Read each commit's message and diff stats
|
|
563
|
+
2. Summarize what changed at a behavior level (not "edited file X" but "added validation for user input")
|
|
564
|
+
3. Use `git show --stat {sha}` and `git log --format='%s' {sha} -1` as source material
|
|
565
|
+
|
|
566
|
+
To generate **Files changed**:
|
|
567
|
+
|
|
568
|
+
1. Use the combined file list from all grouped commits
|
|
569
|
+
2. For each file, infer purpose from the file path and diff context
|
|
570
|
+
|
|
571
|
+
**5c. Add unplanned work entries:**
|
|
572
|
+
|
|
573
|
+
For each commit the user chose to log as unplanned work, append after the last task entry in the relevant phase (or at the end of the last phase):
|
|
574
|
+
|
|
575
|
+
```markdown
|
|
576
|
+
### Unplanned: {commit message summary (first 60 chars)}
|
|
577
|
+
|
|
578
|
+
**Status:** completed
|
|
579
|
+
**Commit:** {sha} (unplanned)
|
|
580
|
+
|
|
581
|
+
**Outcome:**
|
|
582
|
+
|
|
583
|
+
- {1-3 bullets derived from commit message and diff}
|
|
584
|
+
|
|
585
|
+
**Files changed:**
|
|
586
|
+
|
|
587
|
+
- `{path}` - {inferred from diff}
|
|
588
|
+
|
|
589
|
+
**Notes:**
|
|
590
|
+
|
|
591
|
+
- Not part of original plan. Logged during reconciliation on {today's date}.
|
|
592
|
+
```
|
|
593
|
+
|
|
594
|
+
**5d. Update progress table:**
|
|
595
|
+
|
|
596
|
+
Recalculate the `## Progress Overview` table dynamically from the project's actual data:
|
|
597
|
+
|
|
598
|
+
1. Enumerate all phases from `plan.md` by scanning `## Phase N:` headings
|
|
599
|
+
2. For each phase, count tasks by matching `### Task pNN-tNN:` headers where `NN` is the phase number
|
|
600
|
+
3. For each phase, count completed tasks from `implementation.md` entries with `**Status:** completed`
|
|
601
|
+
4. Regenerate the table with actual counts:
|
|
602
|
+
|
|
603
|
+
```markdown
|
|
604
|
+
| Phase | Status | Tasks | Completed |
|
|
605
|
+
| ----- | ------ | ----- | --------- |
|
|
606
|
+
|
|
607
|
+
{for each phase from plan.md:}
|
|
608
|
+
| Phase {N} | {status} | {task_count} | {completed_count}/{task_count} |
|
|
609
|
+
|
|
610
|
+
**Total:** {total_completed}/{total_tasks} tasks completed
|
|
611
|
+
```
|
|
612
|
+
|
|
613
|
+
A phase is `complete` when all its tasks are `completed`. A phase is `in_progress` when at least one task is `completed` or `in_progress`. Otherwise `pending`.
|
|
614
|
+
|
|
615
|
+
Do not hardcode phase counts or task totals — always derive them from the current project's plan and implementation artifacts.
|
|
616
|
+
|
|
617
|
+
**5e. Update frontmatter:**
|
|
618
|
+
|
|
619
|
+
In `implementation.md`:
|
|
620
|
+
|
|
621
|
+
```yaml
|
|
622
|
+
oat_current_task_id: { next_pending_task_id } # or null if all complete
|
|
623
|
+
oat_last_updated: { today }
|
|
624
|
+
```
|
|
625
|
+
|
|
626
|
+
Find the next pending task by scanning plan order: first task with status not `completed`.
|
|
627
|
+
|
|
628
|
+
In `state.md`:
|
|
629
|
+
|
|
630
|
+
```yaml
|
|
631
|
+
oat_current_task: { same as oat_current_task_id above }
|
|
632
|
+
oat_last_commit: { most recent reconciled commit SHA }
|
|
633
|
+
oat_phase: implement
|
|
634
|
+
oat_phase_status: in_progress
|
|
635
|
+
oat_project_state_updated: '{ISO 8601 UTC timestamp}'
|
|
636
|
+
# Always in_progress after reconciliation — only oat-project-review-receive
|
|
637
|
+
# may advance to complete after the final review passes.
|
|
638
|
+
```
|
|
639
|
+
|
|
640
|
+
**5f. Append to Implementation Log:**
|
|
641
|
+
|
|
642
|
+
Add a reconciliation session entry to the `## Implementation Log` section:
|
|
643
|
+
|
|
644
|
+
```markdown
|
|
645
|
+
### {today's date}
|
|
646
|
+
|
|
647
|
+
**Session Start:** reconciliation
|
|
648
|
+
|
|
649
|
+
{For each reconciled task:}
|
|
650
|
+
|
|
651
|
+
- [x] {task_id}: {task_name} - {sha} (reconciled, confidence: {level})
|
|
652
|
+
|
|
653
|
+
{For each unplanned entry:}
|
|
654
|
+
|
|
655
|
+
- [x] unplanned: {summary} - {sha}
|
|
656
|
+
|
|
657
|
+
**What changed (high level):**
|
|
658
|
+
|
|
659
|
+
- Reconciled {N} manually-implemented tasks from {M} commits
|
|
660
|
+
- Logged {K} unplanned work entries
|
|
661
|
+
|
|
662
|
+
**Decisions:**
|
|
663
|
+
|
|
664
|
+
- Mapping confidence breakdown: {high_count} high, {medium_count} medium, {low_count} low
|
|
665
|
+
- Skipped commits: {skip_count}
|
|
666
|
+
|
|
667
|
+
**Session End:** reconciliation complete
|
|
668
|
+
```
|
|
669
|
+
|
|
670
|
+
### Step 6: Commit and Report
|
|
671
|
+
|
|
672
|
+
Create a single bookkeeping commit for all artifact updates and present a final summary.
|
|
673
|
+
|
|
674
|
+
**6a. Stage only tracking files:**
|
|
675
|
+
|
|
676
|
+
```bash
|
|
677
|
+
git add "$PROJECT_PATH/implementation.md" "$PROJECT_PATH/state.md"
|
|
678
|
+
# Only add plan.md if it was modified
|
|
679
|
+
git diff --name-only "$PROJECT_PATH/plan.md" 2>/dev/null | grep -q . && git add "$PROJECT_PATH/plan.md"
|
|
680
|
+
```
|
|
681
|
+
|
|
682
|
+
**Important:** Do NOT use `git add -A` or glob patterns. Only stage the specific OAT tracking files listed above.
|
|
683
|
+
|
|
684
|
+
**6b. Commit with reconciliation message:**
|
|
685
|
+
|
|
686
|
+
```bash
|
|
687
|
+
git diff --cached --quiet || git commit -m "chore(oat): reconcile manual implementation ({first_task_id}..{last_task_id})"
|
|
688
|
+
```
|
|
689
|
+
|
|
690
|
+
Example: `chore(oat): reconcile manual implementation (p01-t03..p02-t01)`
|
|
691
|
+
|
|
692
|
+
If only unplanned work was logged (no task mappings): `chore(oat): reconcile unplanned manual implementation`
|
|
693
|
+
|
|
694
|
+
**6c. Refresh dashboard (optional):**
|
|
695
|
+
|
|
696
|
+
```bash
|
|
697
|
+
oat state refresh 2>/dev/null || pnpm run cli -- state refresh 2>/dev/null || true
|
|
698
|
+
```
|
|
699
|
+
|
|
700
|
+
Dashboard refresh is best-effort; do not fail the reconciliation if it's unavailable.
|
|
701
|
+
|
|
702
|
+
**6d. Print final summary:**
|
|
703
|
+
|
|
704
|
+
```
|
|
705
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
706
|
+
OAT ▸ RECONCILE — Complete
|
|
707
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
708
|
+
|
|
709
|
+
Reconciled: {N} tasks from {M} commits
|
|
710
|
+
High confidence: {high_count}
|
|
711
|
+
Medium confidence: {medium_count}
|
|
712
|
+
Low confidence: {low_count}
|
|
713
|
+
|
|
714
|
+
Unplanned work logged: {K} entries
|
|
715
|
+
Commits skipped: {skip_count}
|
|
716
|
+
Tasks still pending: {pending_count}
|
|
717
|
+
|
|
718
|
+
Next task: {next_task_id} "{next_task_name}" (or "all tasks complete")
|
|
719
|
+
|
|
720
|
+
Tracking commit: {bookkeeping_sha}
|
|
721
|
+
|
|
722
|
+
Recommended next steps:
|
|
723
|
+
- oat-project-implement → continue with remaining tasks
|
|
724
|
+
- oat-project-review-provide → review all changes (including reconciled)
|
|
725
|
+
- oat-project-progress → check overall project status
|
|
726
|
+
```
|
|
727
|
+
|
|
728
|
+
## Success Criteria
|
|
729
|
+
|
|
730
|
+
- Checkpoint correctly identified from implementation.md, git log, or merge-base
|
|
731
|
+
- All post-checkpoint commits collected and filtered (merges, bookkeeping, already-tracked excluded)
|
|
732
|
+
- Commit→task mapping uses all five signal types in priority order (task ID, file overlap, keywords, temporal, unmapped)
|
|
733
|
+
- Every uncertain mapping (medium/low/unmapped) confirmed by user before any writes
|
|
734
|
+
- Generated implementation.md entries match the template format exactly
|
|
735
|
+
- Existing implementation.md entries are preserved (append-only)
|
|
736
|
+
- Frontmatter pointers (`oat_current_task_id`, `oat_current_task`) are consistent across artifacts
|
|
737
|
+
- Single bookkeeping commit with only tracking files staged
|
|
738
|
+
- Downstream skills (`oat-project-progress`, `oat-project-review-provide`) produce correct results after reconciliation
|