@open-agent-toolkit/cli 0.2.62 → 0.2.63

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.
Files changed (62) hide show
  1. package/assets/bundle-metadata.json +1 -1
  2. package/assets/docs/cli-utilities/config-and-local-state.md +1 -0
  3. package/assets/docs/cli-utilities/configuration.md +10 -8
  4. package/assets/docs/cli-utilities/project-log.md +16 -0
  5. package/assets/docs/cli-utilities/workflow-gates.md +124 -16
  6. package/assets/docs/provider-sync/commands.md +3 -0
  7. package/assets/docs/provider-sync/instruction-sync.md +107 -0
  8. package/assets/docs/reference/cli-reference.md +16 -6
  9. package/assets/docs/reference/oat-directory-structure.md +32 -31
  10. package/assets/docs/workflows/projects/lifecycle.md +45 -0
  11. package/assets/docs/workflows/projects/picking-up-projects.md +14 -0
  12. package/assets/docs/workflows/skills/explainer-kit.md +10 -4
  13. package/assets/docs/workflows/skills/repo-improve.md +15 -1
  14. package/assets/public-package-versions.json +4 -4
  15. package/assets/skills/oat-explainer-kit/SKILL.md +14 -1
  16. package/assets/skills/oat-explainer-kit/references/config-contract.md +12 -0
  17. package/assets/skills/oat-explainer-kit/references/lifecycle-contract.md +57 -10
  18. package/assets/skills/oat-explainer-kit/scripts/check-terminal-outcome.mjs +28 -5
  19. package/assets/skills/oat-explainer-kit/scripts/probe-recap-seams.mjs +371 -0
  20. package/assets/skills/oat-explainer-kit/scripts/resolve-intent.mjs +123 -1
  21. package/assets/skills/oat-project-autonomous/SKILL.md +10 -1
  22. package/assets/skills/oat-project-autonomous/references/gate-inventory.md +121 -121
  23. package/assets/skills/oat-project-complete/SKILL.md +134 -4
  24. package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +121 -121
  25. package/assets/skills/oat-project-implement/SKILL.md +1 -1
  26. package/assets/skills/oat-project-implement/references/completion-and-closeout.md +38 -6
  27. package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +121 -121
  28. package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +121 -121
  29. package/assets/skills/oat-project-next/SKILL.md +62 -19
  30. package/assets/skills/oat-project-plan/SKILL.md +31 -5
  31. package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +121 -121
  32. package/assets/skills/oat-project-progress/SKILL.md +12 -3
  33. package/assets/skills/oat-project-quick-start/SKILL.md +264 -4
  34. package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +121 -121
  35. package/assets/skills/oat-project-summary/SKILL.md +34 -23
  36. package/assets/skills/oat-repo-improve/SKILL.md +40 -5
  37. package/assets/skills/oat-repo-improve/references/plan-template.md +84 -7
  38. package/dist/commands/config/index.d.ts +1 -0
  39. package/dist/commands/config/index.d.ts.map +1 -1
  40. package/dist/commands/config/index.js +401 -18
  41. package/dist/commands/gate/index.d.ts +3 -1
  42. package/dist/commands/gate/index.d.ts.map +1 -1
  43. package/dist/commands/gate/index.js +699 -211
  44. package/dist/commands/init/tools/shared/skill-script-references.d.ts +126 -0
  45. package/dist/commands/init/tools/shared/skill-script-references.d.ts.map +1 -0
  46. package/dist/commands/init/tools/shared/skill-script-references.js +311 -0
  47. package/dist/commands/instructions/instructions.types.d.ts +63 -0
  48. package/dist/commands/instructions/instructions.types.d.ts.map +1 -1
  49. package/dist/commands/instructions/instructions.utils.d.ts +51 -2
  50. package/dist/commands/instructions/instructions.utils.d.ts.map +1 -1
  51. package/dist/commands/instructions/instructions.utils.js +201 -4
  52. package/dist/commands/instructions/sync/sync.d.ts.map +1 -1
  53. package/dist/commands/instructions/sync/sync.js +12 -1
  54. package/dist/commands/instructions/validate/validate.d.ts.map +1 -1
  55. package/dist/commands/instructions/validate/validate.js +12 -1
  56. package/dist/commands/project/log/append.d.ts +195 -0
  57. package/dist/commands/project/log/append.d.ts.map +1 -1
  58. package/dist/commands/project/log/append.js +1034 -11
  59. package/dist/config/oat-config.d.ts +41 -0
  60. package/dist/config/oat-config.d.ts.map +1 -1
  61. package/dist/config/oat-config.js +111 -0
  62. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-project-complete
3
- version: 1.7.7
3
+ version: 1.7.8
4
4
  description: Use when all implementation work is finished and the project is ready to close. Marks the OAT project lifecycle as complete.
5
5
  disable-model-invocation: true
6
6
  user-invocable: true
@@ -493,7 +493,40 @@ mutation. Initialize `SELECTED_PROJECT_RECAP_RUN=""`.
493
493
  When `SHOULD_GENERATE_RECAP="true"`, inspect manifests under
494
494
  `{PROJECT_PATH}/explainers/` before generating. A fresh `project-recap` manifest for the current completed implementation is reused without invoking the adapter again. Fresh means the manifest identifies recipe `project-recap`, belongs to this project, has a terminal outcome, and its recorded source hashes match the current approved implementation inputs, including the refreshed summary when present.
495
495
 
496
- If no fresh recap exists, invoke `scripts/run.mjs#runOatExplainer` exactly once with recipe `project-recap`, project invocation, the active project, and unattended lifecycle mode so approved OAT artifacts do not trigger a second content prompt. A returned `failed` outcome warns but does not block completion. An invocation that returns no terminal outcome blocks lifecycle mutation. Use a returned valid terminal `project-recap` manifest as the selected run; do not rerun to improve its outcome.
496
+ If no fresh recap exists, probe seam availability before invoking the adapter.
497
+ Call `oat-explainer-kit/scripts/probe-recap-seams.mjs#probeRecapSeams` in
498
+ `mode: unattended` with the exact seam inputs this step would pass. The probe is
499
+ pure and covers all five required seams — author, fact critic, browser session,
500
+ visual critic, and set planner — so a host missing only the set planner is
501
+ detected here instead of at the adapter's `E_SET_PLANNER_REQUIRED`. When
502
+ `OAT_AUTONOMOUS=1`, pass the result to autonomous intent resolution as
503
+ `seamProbe`. The resolver accepts a `seamProbe` only for autonomous
504
+ `projectRecap`, so an interactive completion keeps the decision recorded at the
505
+ batched prompt and does not pass one.
506
+
507
+ In autonomy, a probe result of `seams-unavailable` means no provider is
508
+ configured for a required seam. Autonomous resolution then returns a recordable
509
+ `skip` with source `capability_probe`: record it with the warning, leave
510
+ `SELECTED_PROJECT_RECAP_RUN` empty, and complete without a recap. That
511
+ probe-driven skip record supersedes the intent resolved and persisted earlier in
512
+ this run for the remainder of the run: persist it through the same
513
+ `oat-explainer-kit` intent-persistence helper with a freshly captured state hash,
514
+ treat any `SHOULD_GENERATE_RECAP="true"` set from the earlier resolution as
515
+ stale, and pass the skip — not the earlier `generate` — to the terminal-outcome
516
+ guard as `--intent skip --skip-reason capability_probe`. Passing the superseded
517
+ `generate` with no manifest raises `E_RECAP_OUTCOME` and blocks completion,
518
+ which is the exact failure this gate exists to prevent. An interactive
519
+ completion is unchanged: the decision recorded at the batched prompt governs, a
520
+ recorded `generate` still attempts the recap, and a run that fails for a missing
521
+ seam is still the `failed` outcome it is today. A probe result
522
+ of `seams-invalid` means a seam is supplied but violates a resolution rule:
523
+ report the configuration error and fail closed. Never convert a
524
+ configured-but-invalid seam, or a run that failed after a passing probe, into a
525
+ skip; that run stays `failed`.
526
+
527
+ In autonomy, attempt the adapter run exactly once and only when the probe resolves every seam; an interactive `generate` still attempts the run regardless of the probe result, and a seam-less interactive attempt is still the `failed` outcome it is today. The autonomy gate and the interactive rule are two separate rules and are never read as one.
528
+
529
+ When the gate above allows the attempt, invoke `scripts/run.mjs#runOatExplainer` exactly once with recipe `project-recap`, project invocation, the active project, and unattended lifecycle mode so approved OAT artifacts do not trigger a second content prompt. A returned `failed` outcome warns but does not block completion. An invocation that returns no terminal outcome blocks lifecycle mutation. Use a returned valid terminal `project-recap` manifest as the selected run; do not rerun to improve its outcome.
497
530
  Before that invocation, construct exactly one brief-aware, provider-neutral
498
531
  author seam as documented by
499
532
  `oat-explainer-kit/references/author-callback.md`. In-process callers pass
@@ -520,10 +553,13 @@ intent and, for `generate`, the selected or attempted manifest. The only
520
553
  terminal generated outcomes are `built-durable`, `built-not-durable`,
521
554
  `built-needs-review`, and `failed`. Missing records and `incomplete` block
522
555
  completion; do not substitute a warning or infer an outcome from filesystem
523
- presence. A `skip` intent requires no manifest.
556
+ presence. A `skip` intent requires no manifest; pass its recorded source as
557
+ `--skip-reason` so the receipt states why no recap exists.
524
558
 
525
559
  When recap intent resolves to `skip`, leave `SELECTED_PROJECT_RECAP_RUN` empty
526
- and complete without a recap. A terminal `failed` recap attempt is recorded as
560
+ and complete without a recap. This covers both an interactive skip and a
561
+ probe-driven `capability_probe` skip; neither prompts, and neither blocks
562
+ completion. A terminal `failed` recap attempt is recorded as
527
563
  a warning rather than changing project completion status.
528
564
 
529
565
  `project-explainer` runs are active-project working artifacts, not durable post-completion reference products. Do not export, re-attest, or add archive-aware PR or summary reference links for a `project-explainer` run.
@@ -614,6 +650,96 @@ Route on the structured result:
614
650
  it; only when skill loading is unavailable in the current host/runtime, author
615
651
  a complete summary inline before continuing.
616
652
 
653
+ **Absorbed-project retirement sweep.** Run this sweep here — after the status
654
+ probe above and before the roll-up below — so that every finding it produces is dispositioned in the project log while
655
+ appends are still allowed. Retiring an absorbed scaffold is a semantic claim
656
+ about the active planning surfaces, not the physical removal of a directory, so
657
+ this sweep checks the claim. It is advisory: a raw match is never a hard block
658
+ on closeout.
659
+
660
+ ```bash
661
+ PJM_DOCTOR=$(oat pjm doctor --json 2>/dev/null || true)
662
+ ```
663
+
664
+ Skip the sweep, record the single note
665
+ `Retirement sweep skipped: no PJM adoption.`, and continue when `PJM_DOCTOR` is
666
+ empty, is not parseable JSON, or reports an `adoption.state` other than
667
+ `declared` or `inferred-legacy`. This skill ships to repositories that never
668
+ adopted PJM and to repositories where the planning surfaces do not exist; a
669
+ missing surface degrades this sweep and never fails closeout.
670
+
671
+ Otherwise read `absorbed_projects` and `absorbed_backlog_ids` from
672
+ `"$PROJECT_PATH/state.md"` frontmatter. These two fields are the only inputs the
673
+ sweep takes. When both are absent or empty, nothing was consolidated: record
674
+ `Retirement sweep: no absorbed projects recorded.` and continue.
675
+
676
+ For each absorbed slug and each absorbed backlog ID, search the active planning
677
+ surfaces:
678
+
679
+ - `.oat/repo/pjm/roadmap.md` — the Now/Next/Later lanes and the sequencing map
680
+ - `.oat/repo/pjm/current-state.md`
681
+ - `.oat/repo/pjm/backlog/index.md` — the Curated Overview
682
+ - the `state.md` of projects that are still active. Project states are
683
+ scope-nested as `<projects-root-parent>/<scope>/<project>/state.md`, so
684
+ resolve the configured root first — `oat config get projects.root`, default
685
+ `.oat/projects/shared` — and scan its sibling scope directories, which are
686
+ `shared`, `local`, and `synced` under the default layout
687
+ (`.oat/projects/*/*/state.md`). Skip the sibling `archived` tree, which holds
688
+ durable evidence rather than an active claim, and skip any project whose own
689
+ `state.md` already records a terminal `oat_lifecycle: complete` — a completed
690
+ project left in an active scope directory is not a live ownership claim
691
+ either
692
+
693
+ Match a slug or backlog ID only where it carries future-oriented ownership
694
+ language — an active surface that still claims the absorbed work as planned,
695
+ owned, scheduled, or in flight. A bare mention that makes no such claim is not a
696
+ finding. The completing project's own `absorbed_projects` and
697
+ `absorbed_backlog_ids` fields are the sweep's input, never a finding. Prose that
698
+ clearly describes past state is exempt: a dated history entry, a retro, a decision record, a changelog line,
699
+ or any sentence whose tense reports what already happened is evidence, not a
700
+ stale claim.
701
+
702
+ Each remaining hit becomes a named finding carrying a recorded disposition,
703
+ either fixed now — edit the stale surface in this run — or accepted as
704
+ historical with the reason it is exempt. An autonomous run records the third
705
+ disposition, `deferred advisory`, described below. Append the dispositions to the project
706
+ log before the roll-up runs, so the roll-up summarizes them and the seal remains
707
+ the final entry:
708
+
709
+ ```bash
710
+ oat project log append \
711
+ --project "$PROJECT_PATH" \
712
+ --structural \
713
+ --producer oat-project-complete \
714
+ --ref retirement-sweep \
715
+ --body "Retirement sweep: <surface>:<finding> — <fixed|accepted as historical>; <reason>."
716
+ ```
717
+
718
+ If a disposition edits inputs that `summary.md` reflects, regenerate the summary
719
+ before the roll-up, exactly as this step already requires for a log with
720
+ entries.
721
+
722
+ Three bounded variations change where the dispositions land, never whether the
723
+ sweep runs:
724
+
725
+ - **Autonomous completion.** No new interactive gate may be opened here, so
726
+ record every finding as an advisory warning entry with the disposition
727
+ `deferred advisory` and continue, mirroring the warn-and-continue precedent
728
+ for non-blocking completion warnings in
729
+ `oat-project-implement/references/completion-and-closeout.md`.
730
+ - **No project log** (`status: "absent"` from the probe above). Record the
731
+ findings and their dispositions in the Step 12 completion summary
732
+ instead, and never create a project log for them.
733
+ - **Resumed completion whose log already carries a seal.** The status probe
734
+ above reports no seal state, so detect the seal directly before appending
735
+ anything: read `logPath` from `PROJECT_LOG_CHECK` and treat the log as sealed
736
+ when it already contains a structural seal heading of the form
737
+ `### <date> · structural · oat-project-complete · seal`. On a sealed log the
738
+ sweep runs in report-only mode: surface the findings and dispositions in the
739
+ Step 12 completion summary, append nothing to the sealed log, and never
740
+ re-enter the roll-up or the seal. No project-log append may follow the seal,
741
+ on a resume as much as on a first run.
742
+
617
743
  For a log with entries, reuse the summary flow's structured roll-up result only
618
744
  when this completion run has that exact result in memory and it reports
619
745
  `status: "ok"`. Otherwise run the idempotent enforcement surface:
@@ -1505,6 +1631,10 @@ Show user:
1505
1631
  - Report the final recap outcome and tracked reference root. A failed
1506
1632
  attestation is a warning with `built-not-durable`, not a project-completion
1507
1633
  failure.
1634
+ - Report every absorbed-project retirement finding from the Step 3.7 sweep with
1635
+ its disposition. This is the required destination whenever the sweep could not
1636
+ append them to the project log — an absent log, or a resume whose log is
1637
+ already sealed — and it stays a report, never a completion failure.
1508
1638
  - If PR was opened: include the PR URL.
1509
1639
  - If `oat_pr_url` is present, show it in the completion summary even when PR creation was skipped because the project already tracked an open PR.
1510
1640
  - If Step 11.5 ran, report whether the PR description was synced (e.g. `PR description synced: <PR URL>`) or warn that the sync failed and surface the artifact path so the user can update it manually.