@open-agent-toolkit/cli 0.2.57 → 0.2.59

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 (64) hide show
  1. package/assets/agents/oat-phase-implementer.md +44 -2
  2. package/assets/bundle-metadata.json +1 -1
  3. package/assets/docs/cli-utilities/configuration.md +16 -0
  4. package/assets/docs/cli-utilities/workflow-gates.md +88 -3
  5. package/assets/docs/contributing/skills.md +27 -5
  6. package/assets/docs/contributing/smoke-testing.md +44 -0
  7. package/assets/docs/provider-sync/commands.md +23 -0
  8. package/assets/docs/workflows/projects/autonomy.md +5 -2
  9. package/assets/docs/workflows/projects/dispatch-ceiling.md +43 -7
  10. package/assets/docs/workflows/projects/implementation-execution.md +6 -3
  11. package/assets/docs/workflows/projects/lifecycle.md +4 -3
  12. package/assets/public-package-versions.json +4 -4
  13. package/assets/skills/oat-project-autonomous/SKILL.md +1 -1
  14. package/assets/skills/oat-project-autonomous/references/gate-inventory.md +45 -38
  15. package/assets/skills/oat-project-design/SKILL.md +24 -5
  16. package/assets/skills/oat-project-discover/SKILL.md +10 -5
  17. package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +45 -38
  18. package/assets/skills/oat-project-implement/SKILL.md +1 -1
  19. package/assets/skills/oat-project-implement/references/completion-and-closeout.md +43 -9
  20. package/assets/skills/oat-project-implement/references/dispatch-and-dry-run.md +14 -8
  21. package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +45 -38
  22. package/assets/skills/oat-project-implement/references/phase-execution.md +7 -3
  23. package/assets/skills/oat-project-import-plan/SKILL.md +29 -4
  24. package/assets/skills/oat-project-next/SKILL.md +29 -2
  25. package/assets/skills/oat-project-plan/SKILL.md +29 -4
  26. package/assets/skills/oat-project-plan-writing/SKILL.md +95 -1
  27. package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +45 -38
  28. package/assets/skills/oat-project-progress/SKILL.md +12 -1
  29. package/assets/skills/oat-project-quick-start/SKILL.md +29 -4
  30. package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +45 -38
  31. package/assets/skills/oat-project-review-provide/SKILL.md +13 -6
  32. package/assets/skills/oat-project-review-provide-remote/SKILL.md +12 -5
  33. package/assets/templates/state.md +4 -1
  34. package/dist/commands/gate/index.d.ts.map +1 -1
  35. package/dist/commands/gate/index.js +102 -8
  36. package/dist/commands/init/index.d.ts.map +1 -1
  37. package/dist/commands/init/index.js +16 -1
  38. package/dist/commands/project/dispatch-ceiling/index.d.ts.map +1 -1
  39. package/dist/commands/project/dispatch-ceiling/index.js +10 -1
  40. package/dist/commands/remove/skill/remove-skill.d.ts.map +1 -1
  41. package/dist/commands/remove/skill/remove-skill.js +10 -1
  42. package/dist/commands/shared/frontmatter.d.ts +32 -1
  43. package/dist/commands/shared/frontmatter.d.ts.map +1 -1
  44. package/dist/commands/shared/frontmatter.js +92 -0
  45. package/dist/commands/status/index.d.ts.map +1 -1
  46. package/dist/commands/status/index.js +8 -1
  47. package/dist/commands/sync/apply.d.ts.map +1 -1
  48. package/dist/commands/sync/apply.js +40 -6
  49. package/dist/commands/sync/index.d.ts.map +1 -1
  50. package/dist/commands/sync/index.js +11 -17
  51. package/dist/commands/sync/sync.types.d.ts +6 -6
  52. package/dist/commands/sync/sync.types.d.ts.map +1 -1
  53. package/dist/config/resolve.d.ts +16 -0
  54. package/dist/config/resolve.d.ts.map +1 -1
  55. package/dist/config/resolve.js +16 -8
  56. package/dist/engine/execute-plan.d.ts.map +1 -1
  57. package/dist/engine/execute-plan.js +6 -0
  58. package/dist/manifest/index.d.ts +2 -1
  59. package/dist/manifest/index.d.ts.map +1 -1
  60. package/dist/manifest/index.js +1 -1
  61. package/dist/manifest/manager.d.ts +40 -0
  62. package/dist/manifest/manager.d.ts.map +1 -1
  63. package/dist/manifest/manager.js +35 -0
  64. package/package.json +2 -2
@@ -605,9 +605,13 @@ Both accepted success and accepted terminal-stop branches must:
605
605
  - for a Phase Implementation Report, verify task count; for a Phase Recovery
606
606
  Continuation Report, verify the original task and commit instead;
607
607
  - only for a Phase Implementation Report, verify each planned task commit is
608
- exactly one append-only commit in plan order, changes only declared files, and
609
- has passing task verification; never require a Phase Recovery Continuation
610
- Report to replay or restate all planned task outcomes;
608
+ exactly one append-only commit in plan order, changes only declared or
609
+ mechanically derived in-phase files, meaning the task's declared files plus
610
+ the mechanical additions permitted by, and reported under, the phase
611
+ implementer's cross-cutting option sweep, and has passing task verification;
612
+ a plan-list-only file set is not the acceptance boundary; never require a
613
+ Phase Recovery Continuation Report to replay or restate all planned task
614
+ outcomes;
611
615
  - for each reported attempted recovery (`recovered` or `failed-attempt`), verify
612
616
  attempt accounting, the immutable original commit and original request,
613
617
  exact-target provenance, one in-scope append-only recovery commit when
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-project-import-plan
3
- version: 1.4.12
3
+ version: 1.4.13
4
4
  description: Use when you have an external markdown plan to execute with OAT. Preserves the source plan and normalizes it into canonical plan.md format.
5
5
  argument-hint: '<path-to-plan.md> [--provider codex|cursor|claude] [--project <name>]'
6
6
  oat_gateable: true
@@ -307,6 +307,25 @@ This Phase gate review setup is independent from HiLL checkpoints. Do not read o
307
307
  change HiLL fields here, and do not add a provider/model `--target` to any
308
308
  lifecycle command.
309
309
 
310
+ ### Step 4.35: Configure Lifecycle Gate Posture
311
+
312
+ After normalization has produced stable phase IDs and before Step 4.5 starts
313
+ the import-aware plan artifact review, invoke the `Shared Lifecycle Gate Posture Setup Contract` from
314
+ `oat-project-plan-writing`: load the current
315
+ `oat-project-plan-writing/SKILL.md` and follow that contract as written. This
316
+ runs adjacent to, but independently from, the phase gate review setup above.
317
+
318
+ If `"$PROJECT_PATH/state.md"` already contains an explicit
319
+ `oat_skill_gate_overrides` map, preserve it through the shared contract without
320
+ probing, prompting, or mutation. Otherwise let the contract probe the configured
321
+ gate-aware skills and offer a keep-or-disable choice for each configured gate
322
+ independently.
323
+
324
+ Persist only disabled choices, and only in `"$PROJECT_PATH/state.md"`. Keeping
325
+ every gate leaves the map absent. Never modify the shared, local, or user
326
+ configuration layers, and never prompt or write a new map in non-interactive
327
+ mode.
328
+
310
329
  ### Step 4.5: Run Import-Aware Plan Artifact Review Loop
311
330
 
312
331
  Before dispatching the artifact reviewer, invoke the `Managed Dispatch
@@ -452,13 +471,19 @@ fi
452
471
 
453
472
  Before reporting this skill as complete, run the configured gate as the final step after artifact review, state sync, dashboard refresh, and the import artifact commit:
454
473
 
455
- 1. Resolve the gate for this skill:
474
+ 1. Resolve the gate for this skill with project context:
456
475
 
457
476
  ```bash
458
- oat gate resolve <this-skill> --json
477
+ oat gate resolve <this-skill> --project "$PROJECT_PATH" --json
459
478
  ```
460
479
 
461
- If the command returns JSON `null`, no gate is configured; the skill is complete.
480
+ Handle all three `resolution` values explicitly:
481
+ - `not_configured`: no gate is configured; the skill is complete.
482
+ - `configured_disabled_by_project`: the operator disabled this configured gate for this project. Do not launch any process. Emit `configured but disabled by project override`, including the project path and the `projectOverride` source from the envelope, then the skill is complete. A project-disabled gate never enters the passed, missing, or failed branches, and its `configuredGate` is evidence only, never executed.
483
+ - `configured`: continue with the steps below, executing `effectiveGate` exactly as configured.
484
+
485
+ A null, missing, malformed, or unrecognized result is an operational failure
486
+ that fails closed as unresolved. Never treat it as "no gate configured."
462
487
 
463
488
  2. Export the resolved project path into the command shell:
464
489
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-project-next
3
- version: 1.0.13
3
+ version: 1.0.14
4
4
  description: Use when continuing work on the active OAT project. Reads project state, determines the next lifecycle action, and invokes the appropriate skill automatically.
5
5
  disable-model-invocation: true
6
6
  user-invocable: true
@@ -302,7 +302,8 @@ unresolved or stale — resume with `oat-project-implement` before
302
302
  post-implementation routing."
303
303
 
304
304
  Only an `allowed` and fresh exit-gate disposition falls through to the normal
305
- post-implementation checks.
305
+ post-implementation checks. Every other combination keeps its current
306
+ fail-closed routing.
306
307
 
307
308
  Validate freshness from the complete persisted transition, not from `status`
308
309
  alone:
@@ -316,6 +317,32 @@ alone:
316
317
  `implementation_fingerprint`, configured gate-run provenance, and any eligible
317
318
  receive durably completed. Qualified state also requires the complete rolling
318
319
  freshness fields.
320
+ - `allowed/configured` with `disposition: project_disabled` is the third valid
321
+ combination. Null gate-run and artifact provenance is required here, not
322
+ merely tolerated: nothing launched, so any non-null launch provenance is
323
+ contradictory and fails closed. It additionally requires a matching
324
+ `config_fingerprint`, `reviewed_head`, and `implementation_fingerprint`, a
325
+ `project_override` sub-record recording the disabled value and its
326
+ `state.md:oat_skill_gate_overrides` source, and the same rolling-freshness
327
+ rules as every other allowed result. The complete accepted shape is
328
+ `resolved_command` set to the configured command, `launch_state:
329
+ not_started`, null `launch_attempt_id`, `launch_started_at`,
330
+ `launch_result_receipt`, `gate_run_marker`, `gate_run_id`, `envelope_status`,
331
+ `artifact`, and `handoff`, plus `receive_state: not_started`,
332
+ `receive_correlation`, `receive_source_artifact`,
333
+ `receive_archived_artifact`, `receive_event_identity`, `receive_pre_head`,
334
+ and `receive_commit` all null, `receive_eligible: false`,
335
+ `receive_completed: false`, `attempts_completed: 0`, and `failure: null`.
336
+ Any populated launch, receive, attempt, or failure field contradicts a gate
337
+ that never ran and fails closed.
338
+ - Because the override lives in the state carrier the implementation
339
+ fingerprint excludes, a persisted `project_disabled` result is never accepted
340
+ on its stored value alone. Re-resolve the gate with project context and
341
+ require that the current resolution is still `configured_disabled_by_project`
342
+ and that `config_fingerprint` recomputed from that current resolution equals
343
+ the persisted one. A re-enabled gate changes the resolution and the
344
+ fingerprint, so an override-era transition routes as stale and a fresh
345
+ configured run is required.
319
346
  - `pending`, `blocked`, malformed, contradictory, or legacy-absent state never
320
347
  falls through. Pending and blocked generations resume their persisted
321
348
  configuration; configuration-fingerprint mismatch fails closed.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-project-plan
3
- version: 1.4.7
3
+ version: 1.4.8
4
4
  description: Use when design.md is complete and executable implementation tasks are needed. Breaks design into bite-sized TDD tasks in canonical plan.md format.
5
5
  oat_gateable: true
6
6
  disable-model-invocation: true
@@ -483,6 +483,25 @@ This Phase gate review setup is independent from HiLL checkpoints. Do not read o
483
483
  change HiLL fields here, and do not add a provider/model `--target` to any
484
484
  lifecycle command.
485
485
 
486
+ ### Step 12.35: Configure Lifecycle Gate Posture
487
+
488
+ After the confirmed plan has stable phase IDs and before Step 12.5 starts the
489
+ plan artifact review, invoke the `Shared Lifecycle Gate Posture Setup Contract` from
490
+ `oat-project-plan-writing`: load the current
491
+ `oat-project-plan-writing/SKILL.md` and follow that contract as written. This
492
+ runs adjacent to, but independently from, the phase gate review setup above.
493
+
494
+ If `"$PROJECT_PATH/state.md"` already contains an explicit
495
+ `oat_skill_gate_overrides` map, preserve it through the shared contract without
496
+ probing, prompting, or mutation. Otherwise let the contract probe the configured
497
+ gate-aware skills and offer a keep-or-disable choice for each configured gate
498
+ independently.
499
+
500
+ Persist only disabled choices, and only in `"$PROJECT_PATH/state.md"`. Keeping
501
+ every gate leaves the map absent. Never modify the shared, local, or user
502
+ configuration layers, and never prompt or write a new map in non-interactive
503
+ mode.
504
+
486
505
  ### Step 12.5: Run Plan Artifact Review Loop
487
506
 
488
507
  Before dispatching the artifact reviewer, invoke the `Managed Dispatch
@@ -540,13 +559,19 @@ Apply the shared loop exactly:
540
559
  After the plan artifact is finalized and reviewed, run the configured gate as
541
560
  the last check before the completion boundary:
542
561
 
543
- 1. Resolve the gate for this skill:
562
+ 1. Resolve the gate for this skill with project context:
544
563
 
545
564
  ```bash
546
- oat gate resolve <this-skill> --json
565
+ oat gate resolve <this-skill> --project "$PROJECT_PATH" --json
547
566
  ```
548
567
 
549
- If the command returns JSON `null`, no gate is configured; proceed directly to the completion steps in Step 13 below.
568
+ Handle all three `resolution` values explicitly:
569
+ - `not_configured`: no gate is configured; proceed directly to the completion steps in Step 13 below.
570
+ - `configured_disabled_by_project`: the operator disabled this configured gate for this project. Do not launch any process. Emit `configured but disabled by project override`, including the project path and the `projectOverride` source from the envelope, then proceed directly to the completion steps in Step 13 below. A project-disabled gate never enters the passed, missing, or failed branches, and its `configuredGate` is evidence only, never executed.
571
+ - `configured`: continue with the steps below, executing `effectiveGate` exactly as configured.
572
+
573
+ A null, missing, malformed, or unrecognized result is an operational failure
574
+ that fails closed as unresolved. Never treat it as "no gate configured."
550
575
 
551
576
  2. Export the resolved project path into the command shell:
552
577
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-project-plan-writing
3
- version: 1.2.21
3
+ version: 1.2.22
4
4
  description: Use when authoring or mutating plan.md in any OAT workflow. Defines canonical format invariants — stable task IDs, required sections, review table rules, and resume guardrails.
5
5
  disable-model-invocation: true
6
6
  user-invocable: false
@@ -403,6 +403,100 @@ This setup is independent from HiLL checkpoints. It must not read or change
403
403
  choice is offered; normal lifecycle gate commands remain provider-neutral.
404
404
  They must not add a provider/model `--target` argument.
405
405
 
406
+ ## Shared Lifecycle Gate Posture Setup Contract
407
+
408
+ Every plan-producing workflow invokes this procedure after the complete plan
409
+ has stable phase IDs and before the plan artifact review begins, which is the
410
+ same boundary the phase gate review setup uses. It runs adjacent to, but
411
+ independently from, that setup: neither contract reads, writes, or
412
+ satisfies the other's setting. The calling skill owns the prompt and the write
413
+ to `"$PROJECT_PATH/state.md"`; this section owns the shared eligibility,
414
+ preservation, validation, and non-interactive behavior.
415
+
416
+ This contract governs the configured lifecycle gates declared with
417
+ `oat_gateable: true` in skill frontmatter. It never reads or writes
418
+ `oat_phase_review_gate`, HiLL policy, or any autonomous design-gate setting.
419
+
420
+ ### 1. Preserve an explicit existing map
421
+
422
+ Inspect `"$PROJECT_PATH/state.md"` frontmatter before probing configuration. If
423
+ an explicit `oat_skill_gate_overrides` key is present, preserve the complete
424
+ value unchanged. Do not probe, prompt, or mutate it. This applies equally to
425
+ resumed and imported projects. Report:
426
+
427
+ ```text
428
+ Lifecycle gate posture: preserved existing oat_skill_gate_overrides setting.
429
+ ```
430
+
431
+ A malformed map is never silently repaired, replaced, or dropped. Stop and
432
+ report the offending project state path so the operator can correct it.
433
+
434
+ ### 2. Probe configured gate-aware skills
435
+
436
+ When no explicit map exists, probe each gate-aware skill read-only. The probe
437
+ resolves configuration and never launches a gate:
438
+
439
+ ```bash
440
+ oat gate resolve <gate-aware-skill> --project "$PROJECT_PATH" --json
441
+ ```
442
+
443
+ A gate qualifies for a choice only when `resolution` is literally `configured`.
444
+ `not_configured` means no gate is configured for that skill: offer no choice and
445
+ never fabricate configuration from an override alone.
446
+
447
+ If the probe fails, emit exactly this concise warning and continue planning
448
+ without writing a map:
449
+
450
+ ```text
451
+ Warning: Lifecycle gate posture probe failed; configured gates remain enabled.
452
+ ```
453
+
454
+ If no gate is configured, emit:
455
+
456
+ ```text
457
+ Lifecycle gate posture: no configured lifecycle gates; nothing to disable.
458
+ ```
459
+
460
+ ### 3. Offer one choice per configured gate
461
+
462
+ When at least one gate is configured and an interactive user-response channel is
463
+ available, present each configured gate separately and let the user keep or
464
+ disable it independently. Granularity is per skill; no single answer disables
465
+ every gate at once.
466
+
467
+ For each configured gate, show the skill name, its configured command, and the
468
+ config source reported by the probe, then offer exactly these outcomes:
469
+
470
+ 1. **Keep** - run this configured gate for this project.
471
+ 2. **Disable** - skip this configured gate for this project only.
472
+
473
+ Persist only the disabled choices, as a strict map whose sole permitted value is
474
+ the literal `disabled`:
475
+
476
+ ```yaml
477
+ oat_skill_gate_overrides:
478
+ oat-project-implement: disabled
479
+ ```
480
+
481
+ Keeping every gate leaves the map absent; an explicitly empty map is equivalent.
482
+ Never write an `enabled` value, a boolean, or a list. Write the map only to
483
+ `"$PROJECT_PATH/state.md"`; the shared, local, and user configuration layers are
484
+ never modified. Disabling here records project posture, not gate outcome: it
485
+ never marks a gate passed, failed, or missing.
486
+
487
+ ### 4. Handle non-interactive planning
488
+
489
+ Non-interactive mode includes `OAT_NON_INTERACTIVE=1` and any environment with
490
+ no user-response channel. Never prompt in this mode, and never write a new map,
491
+ even when configured gates exist. Leave the setting absent and emit:
492
+
493
+ ```text
494
+ Lifecycle gate posture: configured gates unchanged (non-interactive; no selection recorded).
495
+ ```
496
+
497
+ An explicit map that already exists is still preserved unchanged in this mode
498
+ under section 1.
499
+
406
500
  ## Auto Artifact-Review Loop
407
501
 
408
502
  This is the canonical contract for bounded automated reviews of generated OAT artifacts. Calling skills own the concrete edits, progress indicators, and commits; this section defines the shared loop they must follow.