@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.
- package/assets/bundle-metadata.json +1 -1
- package/assets/docs/cli-utilities/config-and-local-state.md +1 -0
- package/assets/docs/cli-utilities/configuration.md +10 -8
- package/assets/docs/cli-utilities/project-log.md +16 -0
- package/assets/docs/cli-utilities/workflow-gates.md +124 -16
- package/assets/docs/provider-sync/commands.md +3 -0
- package/assets/docs/provider-sync/instruction-sync.md +107 -0
- package/assets/docs/reference/cli-reference.md +16 -6
- package/assets/docs/reference/oat-directory-structure.md +32 -31
- package/assets/docs/workflows/projects/lifecycle.md +45 -0
- package/assets/docs/workflows/projects/picking-up-projects.md +14 -0
- package/assets/docs/workflows/skills/explainer-kit.md +10 -4
- package/assets/docs/workflows/skills/repo-improve.md +15 -1
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-explainer-kit/SKILL.md +14 -1
- package/assets/skills/oat-explainer-kit/references/config-contract.md +12 -0
- package/assets/skills/oat-explainer-kit/references/lifecycle-contract.md +57 -10
- package/assets/skills/oat-explainer-kit/scripts/check-terminal-outcome.mjs +28 -5
- package/assets/skills/oat-explainer-kit/scripts/probe-recap-seams.mjs +371 -0
- package/assets/skills/oat-explainer-kit/scripts/resolve-intent.mjs +123 -1
- package/assets/skills/oat-project-autonomous/SKILL.md +10 -1
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +121 -121
- package/assets/skills/oat-project-complete/SKILL.md +134 -4
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +121 -121
- package/assets/skills/oat-project-implement/SKILL.md +1 -1
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +38 -6
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +121 -121
- package/assets/skills/oat-project-lite/references/docs/autonomy-contract.md +121 -121
- package/assets/skills/oat-project-next/SKILL.md +62 -19
- package/assets/skills/oat-project-plan/SKILL.md +31 -5
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +121 -121
- package/assets/skills/oat-project-progress/SKILL.md +12 -3
- package/assets/skills/oat-project-quick-start/SKILL.md +264 -4
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +121 -121
- package/assets/skills/oat-project-summary/SKILL.md +34 -23
- package/assets/skills/oat-repo-improve/SKILL.md +40 -5
- package/assets/skills/oat-repo-improve/references/plan-template.md +84 -7
- package/dist/commands/config/index.d.ts +1 -0
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +401 -18
- package/dist/commands/gate/index.d.ts +3 -1
- package/dist/commands/gate/index.d.ts.map +1 -1
- package/dist/commands/gate/index.js +699 -211
- package/dist/commands/init/tools/shared/skill-script-references.d.ts +126 -0
- package/dist/commands/init/tools/shared/skill-script-references.d.ts.map +1 -0
- package/dist/commands/init/tools/shared/skill-script-references.js +311 -0
- package/dist/commands/instructions/instructions.types.d.ts +63 -0
- package/dist/commands/instructions/instructions.types.d.ts.map +1 -1
- package/dist/commands/instructions/instructions.utils.d.ts +51 -2
- package/dist/commands/instructions/instructions.utils.d.ts.map +1 -1
- package/dist/commands/instructions/instructions.utils.js +201 -4
- package/dist/commands/instructions/sync/sync.d.ts.map +1 -1
- package/dist/commands/instructions/sync/sync.js +12 -1
- package/dist/commands/instructions/validate/validate.d.ts.map +1 -1
- package/dist/commands/instructions/validate/validate.js +12 -1
- package/dist/commands/project/log/append.d.ts +195 -0
- package/dist/commands/project/log/append.d.ts.map +1 -1
- package/dist/commands/project/log/append.js +1034 -11
- package/dist/config/oat-config.d.ts +41 -0
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +111 -0
- package/package.json +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-complete
|
|
3
|
-
version: 1.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,
|
|
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.
|
|
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.
|