@open-agent-toolkit/cli 0.1.19 → 0.1.21
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 +2 -1
- package/assets/agents/oat-reviewer.md +48 -10
- package/assets/docs/cli-utilities/config-and-local-state.md +13 -1
- package/assets/docs/cli-utilities/configuration.md +24 -6
- package/assets/docs/docs-tooling/workflows.md +8 -2
- package/assets/docs/reference/cli-reference.md +13 -7
- package/assets/docs/reference/file-locations.md +1 -1
- package/assets/docs/reference/oat-directory-structure.md +3 -3
- package/assets/docs/workflows/projects/index.md +1 -1
- package/assets/docs/workflows/projects/lifecycle.md +1 -1
- package/assets/docs/workflows/projects/repo-analysis.md +7 -4
- package/assets/docs/workflows/projects/reviews.md +41 -0
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-agent-instructions-analyze/SKILL.md +43 -13
- package/assets/skills/oat-docs-analyze/SKILL.md +42 -12
- package/assets/skills/oat-project-complete/SKILL.md +16 -152
- package/assets/skills/oat-project-discover/SKILL.md +22 -4
- package/assets/skills/oat-project-import-plan/SKILL.md +38 -9
- package/assets/skills/oat-project-plan/SKILL.md +30 -7
- package/assets/skills/oat-project-plan-writing/SKILL.md +45 -2
- package/assets/skills/oat-project-progress/SKILL.md +9 -3
- package/assets/skills/oat-project-quick-start/SKILL.md +40 -8
- package/assets/skills/oat-project-review-provide/SKILL.md +24 -11
- package/assets/skills/oat-project-review-receive/SKILL.md +37 -17
- package/assets/skills/oat-wrap-up/SKILL.md +9 -9
- package/assets/skills/oat-wrap-up/references/automation-recipes.md +5 -5
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +38 -2
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +2 -0
- package/dist/commands/project/archive/archive-utils.d.ts +19 -0
- package/dist/commands/project/archive/archive-utils.d.ts.map +1 -1
- package/dist/commands/project/archive/archive-utils.js +94 -25
- package/dist/commands/project/archive/index.d.ts +6 -19
- package/dist/commands/project/archive/index.d.ts.map +1 -1
- package/dist/commands/project/archive/index.js +19 -251
- package/dist/commands/project/archive/push-runner.d.ts +21 -0
- package/dist/commands/project/archive/push-runner.d.ts.map +1 -0
- package/dist/commands/project/archive/push-runner.js +151 -0
- package/dist/commands/project/archive/sync-runner.d.ts +47 -0
- package/dist/commands/project/archive/sync-runner.d.ts.map +1 -0
- package/dist/commands/project/archive/sync-runner.js +232 -0
- package/dist/commands/repo/archive/index.d.ts +4 -0
- package/dist/commands/repo/archive/index.d.ts.map +1 -0
- package/dist/commands/repo/archive/index.js +22 -0
- package/dist/commands/repo/index.d.ts.map +1 -1
- package/dist/commands/repo/index.js +2 -0
- package/dist/commands/review/index.d.ts +3 -0
- package/dist/commands/review/index.d.ts.map +1 -0
- package/dist/commands/review/index.js +7 -0
- package/dist/commands/review/latest.d.ts +23 -0
- package/dist/commands/review/latest.d.ts.map +1 -0
- package/dist/commands/review/latest.js +182 -0
- package/dist/config/oat-config.d.ts +5 -0
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +12 -0
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +4 -0
- package/package.json +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-plan-writing
|
|
3
|
-
version: 1.2.
|
|
3
|
+
version: 1.2.5
|
|
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
|
|
@@ -23,6 +23,49 @@ This is a sub-phase indicator; the calling skill owns the top-level banner.
|
|
|
23
23
|
|
|
24
24
|
- When invoked by a calling skill, print the sub-banner immediately before plan authoring begins.
|
|
25
25
|
|
|
26
|
+
## Auto Artifact-Review Loop
|
|
27
|
+
|
|
28
|
+
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.
|
|
29
|
+
|
|
30
|
+
Use this loop after an artifact has been written and before the calling skill hands off to the downstream consumer. Current targets:
|
|
31
|
+
|
|
32
|
+
- `plan`: dispatch `oat-reviewer` with `type: artifact`, `scope: plan`, and `oat_output_mode: structured`.
|
|
33
|
+
- `analysis`: dispatch `oat-reviewer` with `type: analysis`, `scope: docs` or `agent-instructions`, `analysis_artifact`, and `oat_output_mode: structured`.
|
|
34
|
+
|
|
35
|
+
### Canonical Procedure
|
|
36
|
+
|
|
37
|
+
1. **Resolve the gate**
|
|
38
|
+
- Read `workflow.autoArtifactReview.<target>` using the same config-resolution path as other `workflow.*` keys.
|
|
39
|
+
- Missing config means enabled. Only an explicit `false` disables the loop.
|
|
40
|
+
- If disabled, skip the review loop, note the skip in the calling skill's handoff/status output, and continue without pretending the artifact was reviewed.
|
|
41
|
+
|
|
42
|
+
2. **Resolve the retry bound**
|
|
43
|
+
- Read `oat_orchestration_retry_limit` from the active project state.
|
|
44
|
+
- If absent, invalid, or unavailable, use default `2`.
|
|
45
|
+
- The bound controls rewrite/re-dispatch cycles after the initial review. A bound of `0` still permits the initial structured review, then surfaces residual findings without retrying.
|
|
46
|
+
|
|
47
|
+
3. **Dispatch `oat-reviewer` in structured mode**
|
|
48
|
+
- Tier 1: use the configured `oat-reviewer` subagent when available and authorized.
|
|
49
|
+
- Tier 2: if Tier 1 is unavailable or declined, run the same reviewer prompt inline with the same payload and checklist.
|
|
50
|
+
- Always set `oat_output_mode: structured`; the loop consumes `StructuredFindings` in-memory and the reviewer writes no artifact.
|
|
51
|
+
- Do not downgrade the checklist when falling back inline. The fallback changes only execution tier, not review requirements.
|
|
52
|
+
|
|
53
|
+
4. **Apply or offer fixes by severity**
|
|
54
|
+
- If the structured review is clean, proceed to outcome recording.
|
|
55
|
+
- Apply Critical and Important fixes by default when they are local to the reviewed artifact and the fix is unambiguous.
|
|
56
|
+
- Offer Medium and Minor fixes to the user instead of applying them silently.
|
|
57
|
+
- If a finding cannot be fixed within the artifact boundary, preserve it as residual and surface it before handoff.
|
|
58
|
+
|
|
59
|
+
5. **Rewrite and re-dispatch within the bound**
|
|
60
|
+
- After applying fixes, rewrite the artifact and re-dispatch `oat-reviewer` with the same target payload.
|
|
61
|
+
- Each rewrite/re-dispatch cycle consumes one retry.
|
|
62
|
+
- Stop when the reviewer returns no findings or when the retry bound is exhausted.
|
|
63
|
+
|
|
64
|
+
6. **Record the outcome**
|
|
65
|
+
- Record a clean pass or residual findings in the calling skill's lifecycle output before handoff.
|
|
66
|
+
- For `plan`, update the `plan` artifact row in the Reviews table without deleting any existing rows. Use `passed` when clean; if residual findings remain, preserve enough detail in the handoff for the next skill/user to act.
|
|
67
|
+
- For `analysis`, mark the analysis artifact as reviewed/verified using the calling skill's analysis-tracking convention, and surface any residual findings before the corresponding apply skill consumes it.
|
|
68
|
+
|
|
26
69
|
## Canonical Plan Format
|
|
27
70
|
|
|
28
71
|
Every `plan.md` produced or edited by any OAT skill **must** satisfy these invariants.
|
|
@@ -98,7 +141,7 @@ If any required section is missing when a skill edits `plan.md`, it must be rest
|
|
|
98
141
|
|
|
99
142
|
### Review Table Preservation Rules
|
|
100
143
|
|
|
101
|
-
- The `## Reviews` table includes both **code** rows (`p01`, `p02`, …, `final`) and **artifact** rows (`spec`, `design`).
|
|
144
|
+
- The `## Reviews` table includes both **code** rows (`p01`, `p02`, …, `final`) and **artifact** rows (`spec`, `design`, `plan`).
|
|
102
145
|
- Skills must **never delete** existing review rows.
|
|
103
146
|
- New rows may be appended (e.g., `p03` for a newly added phase).
|
|
104
147
|
- Status semantics: `pending` → `received` → `fixes_added` → `fixes_completed` → `passed`.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-progress
|
|
3
|
-
version: 1.2.
|
|
4
|
-
description: Use when
|
|
5
|
-
disable-model-invocation:
|
|
3
|
+
version: 1.2.5
|
|
4
|
+
description: Use when the user explicitly asks to check OAT project progress — e.g. "check progress", "what's next", "where are we", or confirms a previously offered progress check. Do NOT auto-invoke just because a workflow step completed. Reads project status and offers the next route.
|
|
5
|
+
disable-model-invocation: false
|
|
6
6
|
user-invocable: true
|
|
7
7
|
allowed-tools: Read, Glob, Grep, Bash(git:*), AskUserQuestion
|
|
8
8
|
---
|
|
@@ -35,6 +35,12 @@ Run `oat-project-progress` at any time to:
|
|
|
35
35
|
- See current project status
|
|
36
36
|
- Get recommended next skill
|
|
37
37
|
|
|
38
|
+
## Model Invocation Routing
|
|
39
|
+
|
|
40
|
+
This skill is model-invokable for explicit read-only status and routing asks such as "check progress" or "what's next". It has no active-project gate because it can safely report that no project is active.
|
|
41
|
+
|
|
42
|
+
Do NOT auto-invoke only because another workflow step finished. If model-invoked, offer to check progress first when the user's intent is ambiguous. After reporting status, offer the recommended next skill before routing to it.
|
|
43
|
+
|
|
38
44
|
## Process
|
|
39
45
|
|
|
40
46
|
### Step 1: Check Knowledge Base Exists
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-quick-start
|
|
3
|
-
version: 2.1.
|
|
3
|
+
version: 2.1.6
|
|
4
4
|
description: Use when a task is small enough for quick mode or rapid iteration is preferred. Scaffolds a lightweight OAT project from discovery directly to a runnable plan, with optional brainstorming and lightweight design.
|
|
5
5
|
argument-hint: '<project-name> ["project description"]'
|
|
6
6
|
disable-model-invocation: true
|
|
@@ -57,13 +57,14 @@ When executing this skill, provide lightweight progress feedback so the user can
|
|
|
57
57
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
58
58
|
|
|
59
59
|
- Before multi-step work, print step indicators, e.g.:
|
|
60
|
-
- `[0/
|
|
61
|
-
- `[1/
|
|
62
|
-
- `[2/
|
|
63
|
-
- `[3/
|
|
64
|
-
- `[4/
|
|
65
|
-
- `[5/
|
|
66
|
-
- `[6/
|
|
60
|
+
- `[0/7] Checking inherited git state...`
|
|
61
|
+
- `[1/7] Scaffolding quick-mode project…`
|
|
62
|
+
- `[2/7] Exploring solution space + capturing discovery…`
|
|
63
|
+
- `[3/7] Decision point: design depth…`
|
|
64
|
+
- `[4/7] Generating execution plan…`
|
|
65
|
+
- `[5/7] Running plan artifact review…`
|
|
66
|
+
- `[6/7] Initializing implementation tracker…`
|
|
67
|
+
- `[7/7] Refreshing dashboard…`
|
|
67
68
|
- _(If lightweight design is chosen, insert design steps between 3 and 4)_
|
|
68
69
|
|
|
69
70
|
## Artifact Persistence (Required)
|
|
@@ -423,6 +424,14 @@ git add "$PROJECT_PATH/design.md" "$PROJECT_PATH/state.md"
|
|
|
423
424
|
git diff --cached --quiet || git commit -m "chore(oat): capture quick-start design for {project-name}"
|
|
424
425
|
```
|
|
425
426
|
|
|
427
|
+
Complete discovery through the CLI validation boundary before proceeding to plan generation:
|
|
428
|
+
|
|
429
|
+
```bash
|
|
430
|
+
oat project complete-discovery "$PROJECT_PATH" --ready-for oat-project-quick-start
|
|
431
|
+
git add "$PROJECT_PATH/discovery.md" "$PROJECT_PATH/state.md"
|
|
432
|
+
git diff --cached --quiet || git commit -m "chore(oat): complete quick-start discovery for {project-name}"
|
|
433
|
+
```
|
|
434
|
+
|
|
426
435
|
### Step 3: Generate Plan Directly
|
|
427
436
|
|
|
428
437
|
Create/update `"$PROJECT_PATH/plan.md"` from `.oat/templates/plan.md`.
|
|
@@ -513,6 +522,27 @@ must block before work starts if it still cannot resolve a ceiling.
|
|
|
513
522
|
Do not treat provider default effort as the OAT dispatch ceiling. Provider
|
|
514
523
|
default is informational for base/unpinned roles only.
|
|
515
524
|
|
|
525
|
+
### Step 3.6: Run Plan Artifact Review Loop
|
|
526
|
+
|
|
527
|
+
Invoke the shared `Auto Artifact-Review Loop` from `oat-project-plan-writing` with target `plan` before syncing project state or handing off to implementation.
|
|
528
|
+
|
|
529
|
+
Required payload:
|
|
530
|
+
|
|
531
|
+
- `target: plan`
|
|
532
|
+
- `type: artifact`
|
|
533
|
+
- `scope: plan`
|
|
534
|
+
- `artifact_path: "$PROJECT_PATH/plan.md"`
|
|
535
|
+
- `oat_output_mode: structured`
|
|
536
|
+
|
|
537
|
+
Apply the shared loop exactly:
|
|
538
|
+
|
|
539
|
+
- Resolve `workflow.autoArtifactReview.plan`; only an explicit `false` skips the loop.
|
|
540
|
+
- Resolve `oat_orchestration_retry_limit` from project state, defaulting to `2`.
|
|
541
|
+
- Dispatch `oat-reviewer` in structured mode using Tier 1 subagent when available and Tier 2 inline fallback otherwise.
|
|
542
|
+
- Apply Critical and Important artifact-local fixes when unambiguous; offer Medium and Minor fixes instead of silently applying them.
|
|
543
|
+
- Re-dispatch after rewrites until clean or the retry bound is exhausted.
|
|
544
|
+
- Update the `plan` artifact row in the `## Reviews` table to `passed` when clean. If residual findings remain, preserve the row and surface the residual findings before downstream handoff.
|
|
545
|
+
|
|
516
546
|
### Step 4: Sync Project State
|
|
517
547
|
|
|
518
548
|
Update `"$PROJECT_PATH/state.md"`:
|
|
@@ -527,6 +557,7 @@ Recommended quick-mode gate defaults:
|
|
|
527
557
|
|
|
528
558
|
- keep implementation phase checkpoints via `oat_plan_hill_phases`
|
|
529
559
|
- do not require discovery/spec/design artifact review rows to be passed before implementation
|
|
560
|
+
- record the `plan` artifact review row from Step 3.6 unless `workflow.autoArtifactReview.plan` was explicitly disabled
|
|
530
561
|
|
|
531
562
|
### Step 5: Initialize Implementation Tracking
|
|
532
563
|
|
|
@@ -577,5 +608,6 @@ Report:
|
|
|
577
608
|
- ✅ `state.md` marks `oat_workflow_mode: quick`.
|
|
578
609
|
- ✅ `discovery.md` contains synthesized or backfilled quick discovery decisions from the session context.
|
|
579
610
|
- ✅ `plan.md` is complete and executable (`oat_ready_for: oat-project-implement`).
|
|
611
|
+
- ✅ `plan.md` records the plan artifact review row unless `workflow.autoArtifactReview.plan` was explicitly disabled.
|
|
580
612
|
- ✅ `implementation.md` is initialized for resumable execution.
|
|
581
613
|
- ✅ Changed quick-start artifacts are committed before handoff or pause; `.oat/state.md` is refreshed locally when available.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-review-provide
|
|
3
|
-
version: 1.3.
|
|
4
|
-
description: Use when
|
|
5
|
-
disable-model-invocation:
|
|
3
|
+
version: 1.3.7
|
|
4
|
+
description: Use when the user explicitly asks to review an OAT project — e.g. "review project", "review the project", "run project review", or confirms a previously offered review. Do NOT auto-invoke on completed work alone. Resolves a project review scope and offers before running.
|
|
5
|
+
disable-model-invocation: false
|
|
6
6
|
user-invocable: true
|
|
7
7
|
allowed-tools: Read, Glob, Grep, Bash(git:*), AskUserQuestion
|
|
8
8
|
---
|
|
@@ -19,10 +19,18 @@ Reviewers should distinguish implementation defects from artifact drift. If code
|
|
|
19
19
|
|
|
20
20
|
## Prerequisites
|
|
21
21
|
|
|
22
|
-
**Required:** Active project with at least one completed task.
|
|
22
|
+
**Required:** Active project or explicit user-provided project/review target that resolves to project state, with at least one completed task.
|
|
23
23
|
|
|
24
24
|
**Required:** Core project artifacts are already committed before the review begins. Review should not be the first step that notices an untracked project tree or pending bookkeeping-only artifact edits.
|
|
25
25
|
|
|
26
|
+
## Model Invocation Gate
|
|
27
|
+
|
|
28
|
+
This skill is model-invokable only for explicit review asks such as "review project" or "review the project", or when the user confirms a previously offered project-review step. Do NOT auto-invoke merely because a task, phase, or implementation appears complete.
|
|
29
|
+
|
|
30
|
+
Before acting, verify that there is an active OAT project or a user-provided review target that can be resolved to project state. If neither exists, do not run this skill; offer `oat-project-open` / `oat-project-quick-start` for project workflow setup, or `oat-review-provide` for a non-project ad-hoc review.
|
|
31
|
+
|
|
32
|
+
When the gate passes, summarize the inferred review type and scope, then ask before running the review.
|
|
33
|
+
|
|
26
34
|
## Mode Assertion
|
|
27
35
|
|
|
28
36
|
**OAT MODE: Review Request**
|
|
@@ -84,7 +92,7 @@ Run the `oat-project-review-provide` skill and it will:
|
|
|
84
92
|
|
|
85
93
|
## Process
|
|
86
94
|
|
|
87
|
-
### Step 0: Resolve
|
|
95
|
+
### Step 0: Resolve Project or Explicit Review Target
|
|
88
96
|
|
|
89
97
|
OAT stores active project context in `.oat/config.local.json` (`activeProject`, local-only).
|
|
90
98
|
|
|
@@ -96,21 +104,26 @@ PROJECTS_ROOT="${PROJECTS_ROOT%/}"
|
|
|
96
104
|
|
|
97
105
|
Validation rules:
|
|
98
106
|
|
|
99
|
-
- `PROJECT_PATH`
|
|
100
|
-
- `
|
|
107
|
+
- Prefer `PROJECT_PATH` from `activeProject` when it is set and points to an existing directory.
|
|
108
|
+
- If `activeProject` is missing or invalid, allow an explicit user-provided project/review target to resolve `PROJECT_PATH`:
|
|
109
|
+
- project path, e.g. `.oat/projects/shared/{project-name}`
|
|
110
|
+
- project name, resolved as `${PROJECTS_ROOT}/{project-name}`
|
|
111
|
+
- review target phrasing that includes a project name or project path
|
|
112
|
+
- A resolved `PROJECT_PATH` must point to an existing directory.
|
|
113
|
+
- `"$PROJECT_PATH/state.md"` must exist for mode-aware project review validation.
|
|
101
114
|
|
|
102
|
-
If
|
|
115
|
+
If neither an active project nor an explicit target resolves to a valid `PROJECT_PATH` with `state.md`, **stop and route**. Do not create or guess project pointers in this skill.
|
|
103
116
|
|
|
104
117
|
Tell user:
|
|
105
118
|
|
|
106
|
-
- This is a project-scoped skill and needs an initialized OAT project
|
|
107
|
-
- Without project state, review can still proceed via non-project skill: `oat-review-provide`.
|
|
119
|
+
- This is a project-scoped skill and needs an initialized OAT project, either from `activeProject` or from a project/review target the user explicitly provided.
|
|
120
|
+
- Without resolvable project state, review can still proceed via non-project skill: `oat-review-provide`.
|
|
108
121
|
- To continue with project workflow instead, run one of:
|
|
109
122
|
- `oat-project-open` (existing project)
|
|
110
123
|
- `oat-project-quick-start` (new quick project)
|
|
111
124
|
- `oat-project-import-plan` (external plan import)
|
|
112
125
|
|
|
113
|
-
If validation passes, derive `{project-name}` as basename of `PROJECT_PATH`.
|
|
126
|
+
If validation passes, derive `{project-name}` as basename of `PROJECT_PATH`. Summarize the resolved project/review target and ask before continuing to Step 1.
|
|
114
127
|
|
|
115
128
|
### Step 1: Parse Arguments or Ask
|
|
116
129
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-review-receive
|
|
3
|
-
version: 1.5.
|
|
4
|
-
description: Use when review findings
|
|
5
|
-
disable-model-invocation:
|
|
3
|
+
version: 1.5.2
|
|
4
|
+
description: Use when the user explicitly asks to receive review findings for an OAT project — e.g. "receive review", "process review", "process the project review", or confirms a previously offered review-receive step. Do NOT auto-invoke merely because a review file exists. Resolves the latest review and offers before acting.
|
|
5
|
+
disable-model-invocation: false
|
|
6
6
|
user-invocable: true
|
|
7
|
-
allowed-tools: Read, Write, Bash(git:*), Glob, Grep, AskUserQuestion
|
|
7
|
+
allowed-tools: Read, Write, Bash(git:*), Bash(oat:*), Glob, Grep, AskUserQuestion
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# Receive Review
|
|
@@ -17,10 +17,18 @@ Turn review output into plan changes and a clear next action. This closes the fe
|
|
|
17
17
|
|
|
18
18
|
## Prerequisites
|
|
19
19
|
|
|
20
|
-
**Required:** An active review artifact
|
|
20
|
+
**Required:** An active project review artifact can be resolved, usually from the top level of `{PROJECT_PATH}/reviews/`. Conversational entry may first discover the latest project or ad-hoc review with `oat review latest`; ad-hoc reviews should be routed to `oat-review-receive`.
|
|
21
21
|
|
|
22
22
|
This skill assumes the reviewed project artifacts were already committed before the review ran. If you discover untracked core project artifacts here, treat that as earlier workflow drift and include them in the bookkeeping fix instead of leaving the project partially tracked.
|
|
23
23
|
|
|
24
|
+
## Model Invocation Gate
|
|
25
|
+
|
|
26
|
+
This skill is model-invokable only for explicit review-receive asks such as "receive review" or "process review", or when the user confirms a previously offered review-receive step. Do NOT auto-invoke just because a review artifact exists.
|
|
27
|
+
|
|
28
|
+
Before acting, resolve either an active project review or a latest ad-hoc review target. If the latest target is ad-hoc, offer to route to `oat-review-receive` instead of processing it with this project lifecycle skill. If no target is resolvable, offer `oat-project-review-provide` for project reviews or `oat-review-provide` for ad-hoc reviews.
|
|
29
|
+
|
|
30
|
+
When a project review target is resolvable, summarize the selected review path, scope, and generated date, then ask before updating artifacts.
|
|
31
|
+
|
|
24
32
|
## Mode Assertion
|
|
25
33
|
|
|
26
34
|
**OAT MODE: Receive Review**
|
|
@@ -76,27 +84,39 @@ PROJECTS_ROOT="${PROJECTS_ROOT%/}"
|
|
|
76
84
|
|
|
77
85
|
**If `PROJECT_PATH` is missing/invalid:**
|
|
78
86
|
|
|
79
|
-
-
|
|
80
|
-
-
|
|
81
|
-
-
|
|
82
|
-
```bash
|
|
83
|
-
mkdir -p .oat
|
|
84
|
-
oat config set activeProject "$PROJECT_PATH"
|
|
85
|
-
```
|
|
87
|
+
- Continue to Step 1 without a project path so `oat review latest` can still discover ad-hoc review targets.
|
|
88
|
+
- Do not guess or write `activeProject` during model-invoked target discovery.
|
|
89
|
+
- If the user explicitly names a project, set `PROJECT_PATH` to `${PROJECTS_ROOT}/{project-name}` and validate it before Step 1.
|
|
86
90
|
|
|
87
91
|
**If `PROJECT_PATH` is valid:** derive `{project-name}` as the directory name (basename of the path).
|
|
88
92
|
|
|
89
|
-
### Step 1: Locate
|
|
93
|
+
### Step 1: Locate Latest Review Artifact
|
|
90
94
|
|
|
91
95
|
```bash
|
|
92
|
-
|
|
96
|
+
if [ -n "${PROJECT_PATH:-}" ] && [ -d "$PROJECT_PATH" ]; then
|
|
97
|
+
oat review latest --project "$PROJECT_PATH" --json
|
|
98
|
+
else
|
|
99
|
+
oat review latest --json
|
|
100
|
+
fi
|
|
93
101
|
```
|
|
94
102
|
|
|
95
103
|
Selection rules:
|
|
96
104
|
|
|
97
|
-
-
|
|
98
|
-
-
|
|
99
|
-
-
|
|
105
|
+
- Use `oat review latest` as the first-choice resolver. It scans project reviews (`reviews/` and `reviews/archived/`) plus ad-hoc review locations and orders candidates by `oat_generated_at` frontmatter rather than filesystem mtime.
|
|
106
|
+
- Read the JSON result:
|
|
107
|
+
- `path: null` means no review target was found.
|
|
108
|
+
- `kind: "project"` means this skill can process the target when the path is an active top-level project review.
|
|
109
|
+
- `kind: "adhoc"` means route to `oat-review-receive` after offering that handoff to the user.
|
|
110
|
+
- Only process active project review artifacts in the top level of `"$PROJECT_PATH/reviews/"`.
|
|
111
|
+
- Treat archived project artifacts as history only; do not receive them automatically. If `oat review latest` returns an archived project review, tell the user no active project review is waiting and offer to run `oat-project-review-provide`.
|
|
112
|
+
|
|
113
|
+
Fallback when the CLI is unavailable:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
ls -t "$PROJECT_PATH/reviews/"*.md 2>/dev/null | head -10
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Use this fallback only for active project reviews. It cannot discover ad-hoc reviews and its filesystem ordering is less reliable than `oat_generated_at`, so state that limitation if fallback is used.
|
|
100
120
|
|
|
101
121
|
**If no active review files:** Block and ask user to run the `oat-project-review-provide` skill first.
|
|
102
122
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-wrap-up
|
|
3
|
-
version: 1.0.
|
|
3
|
+
version: 1.0.1
|
|
4
4
|
description: Use when preparing a shipping digest or weekly/biweekly wrap-up summarizing OAT projects and merged PRs over a time window. Reads local summary files and GitHub PR metadata; writes a version-controlled markdown report.
|
|
5
5
|
argument-hint: '[--since YYYY-MM-DD] [--until YYYY-MM-DD] [--past-week|--past-2-weeks|--past-month] [--output <path>] [--dry-run]'
|
|
6
6
|
disable-model-invocation: false
|
|
@@ -26,7 +26,7 @@ Don't use when:
|
|
|
26
26
|
|
|
27
27
|
- You need a single specific project's summary — use `oat-project-summary` instead.
|
|
28
28
|
- You want an always-current status view without a fixed window — the wrap-up is window-scoped by design.
|
|
29
|
-
- Archived projects from teammates have not been hydrated locally yet — run `oat
|
|
29
|
+
- Archived projects from teammates have not been hydrated locally yet — run `oat repo archive sync` first so the digest reflects the full team's work. The skill warns if this looks undone but will not auto-run sync.
|
|
30
30
|
|
|
31
31
|
## Arguments
|
|
32
32
|
|
|
@@ -45,7 +45,7 @@ Exactly one time-range specifier is required: either a named range (`--past-week
|
|
|
45
45
|
## Prerequisites
|
|
46
46
|
|
|
47
47
|
- Repository is an OAT project (contains `.oat/`).
|
|
48
|
-
- For cross-teammate visibility: `oat
|
|
48
|
+
- For cross-teammate visibility: `oat repo archive sync` has been run recently so teammates' archived projects are hydrated into `.oat/projects/archived/`. The skill warns if `archive.s3Uri` is configured but the local archive has no `.oat-archive-source.json` metadata files.
|
|
49
49
|
- `gh` CLI authenticated for the current repository (needed for merged-PR fetching via `gh api graphql`).
|
|
50
50
|
|
|
51
51
|
## Mode Assertion
|
|
@@ -57,7 +57,7 @@ Exactly one time-range specifier is required: either a named range (`--past-week
|
|
|
57
57
|
**BLOCKED Activities:**
|
|
58
58
|
|
|
59
59
|
- No modifying OAT project summaries, plan files, or other implementation artifacts.
|
|
60
|
-
- No auto-running `oat
|
|
60
|
+
- No auto-running `oat repo archive sync` — it is a user-gated prerequisite, not a side effect of this skill.
|
|
61
61
|
- No network writes of any kind. The GitHub API is read-only.
|
|
62
62
|
|
|
63
63
|
**ALLOWED Activities:**
|
|
@@ -71,7 +71,7 @@ Exactly one time-range specifier is required: either a named range (`--past-week
|
|
|
71
71
|
If you catch yourself:
|
|
72
72
|
|
|
73
73
|
- About to modify a summary file → STOP, the skill is strictly read-only against summaries.
|
|
74
|
-
- About to auto-run `oat
|
|
74
|
+
- About to auto-run `oat repo archive sync` → STOP, the skill only warns; the user runs sync themselves.
|
|
75
75
|
- About to string-concatenate summary prose verbatim → STOP, the report is a synthesis, not a concatenation.
|
|
76
76
|
- About to skip the prerequisite warning when the local archive is empty and S3 is configured → STOP, emit the warning first.
|
|
77
77
|
|
|
@@ -123,12 +123,12 @@ S3_URI="$(oat config get archive.s3Uri 2>/dev/null || true)"
|
|
|
123
123
|
if [ -n "$S3_URI" ] && [ -d "$ARCHIVE_DIR" ]; then
|
|
124
124
|
if ! find "$ARCHIVE_DIR" -maxdepth 2 -name '.oat-archive-source.json' 2>/dev/null | grep -q . ; then
|
|
125
125
|
printf '⚠️ archive.s3Uri is configured but no archived snapshots are hydrated locally.\n'
|
|
126
|
-
printf ' Run "oat
|
|
126
|
+
printf ' Run "oat repo archive sync" first so teammates archived projects are visible to the wrap-up.\n'
|
|
127
127
|
printf ' (Proceeding with active projects and the version-controlled summaries directory only.)\n'
|
|
128
128
|
fi
|
|
129
129
|
elif [ -n "$S3_URI" ]; then
|
|
130
130
|
printf '⚠️ archive.s3Uri is configured but %s does not exist.\n' "$ARCHIVE_DIR"
|
|
131
|
-
printf ' Run "oat
|
|
131
|
+
printf ' Run "oat repo archive sync" first so archived projects are available.\n'
|
|
132
132
|
printf ' (Proceeding with active projects and the version-controlled summaries directory only.)\n'
|
|
133
133
|
fi
|
|
134
134
|
```
|
|
@@ -362,7 +362,7 @@ so I can review before committing it.
|
|
|
362
362
|
|
|
363
363
|
- Report skeleton: `references/report-template.md`
|
|
364
364
|
- Automation patterns (Claude Code `CronCreate`, Codex host scheduling, plain cron): `references/automation-recipes.md`
|
|
365
|
-
- Prerequisite command: `oat
|
|
365
|
+
- Prerequisite command: `oat repo archive sync` at `packages/cli/src/commands/repo/archive/index.ts`
|
|
366
366
|
- Merged-PR query pattern: `packages/cli/src/commands/repo/pr-comments/collect/collect-comments.ts:198-205`
|
|
367
367
|
- Summary frontmatter schema: `.oat/templates/summary.md`
|
|
368
368
|
- Config key: `archive.wrapUpExportPath` (managed via `oat config set archive.wrapUpExportPath <path>`)
|
|
@@ -377,7 +377,7 @@ so I can review before committing it.
|
|
|
377
377
|
**Report is empty or "no summaries found":**
|
|
378
378
|
|
|
379
379
|
- The window may genuinely have no activity — double-check `SINCE` and `UNTIL`.
|
|
380
|
-
- Check whether teammates' archived projects are hydrated: `ls .oat/projects/archived/` should list directories. If empty and `archive.s3Uri` is configured, run `oat
|
|
380
|
+
- Check whether teammates' archived projects are hydrated: `ls .oat/projects/archived/` should list directories. If empty and `archive.s3Uri` is configured, run `oat repo archive sync` first.
|
|
381
381
|
- Verify that `.oat/projects/*/*/summary.md` and/or `${SUMMARY_EXPORT_PATH}/*.md` contain files whose `oat_last_updated` falls inside the window.
|
|
382
382
|
|
|
383
383
|
**Report is missing PRs that clearly merged in the window:**
|
|
@@ -35,7 +35,7 @@ The generic pattern:
|
|
|
35
35
|
|
|
36
36
|
1. Create a scheduled trigger whose prompt is `/oat-wrap-up --past-week` (or a named range that matches your cadence).
|
|
37
37
|
2. Configure the trigger to run in a workspace where the OAT repository is the current working directory.
|
|
38
|
-
3. Ensure the workspace has `gh` authenticated and, for cross-teammate visibility, a recent run of `oat
|
|
38
|
+
3. Ensure the workspace has `gh` authenticated and, for cross-teammate visibility, a recent run of `oat repo archive sync` (this can be a pre-prompt step in the trigger).
|
|
39
39
|
|
|
40
40
|
If your Codex host does not expose scheduled triggers, fall through to Pattern 3.
|
|
41
41
|
|
|
@@ -48,7 +48,7 @@ When neither Claude Code's `CronCreate` nor Codex host scheduling is available,
|
|
|
48
48
|
```cron
|
|
49
49
|
# Every Monday at 09:00 local time, generate a past-week wrap-up and commit it.
|
|
50
50
|
0 9 * * 1 cd /path/to/repo && \
|
|
51
|
-
oat
|
|
51
|
+
oat repo archive sync --dry-run > /dev/null && \
|
|
52
52
|
claude -p "/oat-wrap-up --past-week" && \
|
|
53
53
|
git add .oat/repo/reference/wrap-ups && \
|
|
54
54
|
git -c user.name="wrapup-bot" -c user.email="wrapup-bot@example.com" commit -m "chore: weekly wrap-up $(date -u +%Y-%m-%d)" >/dev/null 2>&1 || true
|
|
@@ -57,7 +57,7 @@ When neither Claude Code's `CronCreate` nor Codex host scheduling is available,
|
|
|
57
57
|
Notes:
|
|
58
58
|
|
|
59
59
|
- Replace `claude -p ...` with your host's headless invocation (`codex -p ...`, etc.) if using a different host.
|
|
60
|
-
- The `oat
|
|
60
|
+
- The `oat repo archive sync --dry-run` call is a preflight check — it surfaces auth or config problems early. Change it to `oat repo archive sync` if you want to actively pull teammates' archives before each run.
|
|
61
61
|
- The trailing `|| true` keeps cron quiet when there is nothing new to commit (e.g., the wrap-up matched a previous one).
|
|
62
62
|
|
|
63
63
|
### systemd timer example
|
|
@@ -71,7 +71,7 @@ Description=Generate weekly OAT wrap-up
|
|
|
71
71
|
[Service]
|
|
72
72
|
Type=oneshot
|
|
73
73
|
WorkingDirectory=/path/to/repo
|
|
74
|
-
ExecStart=/bin/sh -c 'oat
|
|
74
|
+
ExecStart=/bin/sh -c 'oat repo archive sync --dry-run && claude -p "/oat-wrap-up --past-week"'
|
|
75
75
|
User=wrapup-bot
|
|
76
76
|
```
|
|
77
77
|
|
|
@@ -96,5 +96,5 @@ Enable with `systemctl enable --now oat-wrap-up.timer`.
|
|
|
96
96
|
- **Timezones**: The skill resolves named ranges against `today` in the local timezone of the host running the skill. Always pin the timezone at the scheduler layer (cron `TZ=`, systemd `OnCalendar=Mon 09:00 America/Los_Angeles`, or the Claude Code trigger's `timezone` field) so reports are reproducible across re-runs.
|
|
97
97
|
- **Cadence vs window length**: A weekly cadence usually pairs with `--past-week`. A biweekly cadence with `--past-2-weeks`. Running a weekly cadence with `--past-2-weeks` overlaps every report — fine if you want a rolling window, confusing if you expect discrete chunks.
|
|
98
98
|
- **Commit + push**: The skill itself never commits. If you want the report to land in the repo automatically, the automation wrapper owns the `git add && git commit && git push` step. Keep that wrapper out of the skill so the skill stays portable.
|
|
99
|
-
- **Failure handling**: If `gh` auth expires or `oat
|
|
99
|
+
- **Failure handling**: If `gh` auth expires or `oat repo archive sync` fails, the cron run should log the failure and exit non-zero rather than producing an empty wrap-up. Prefer pinning the shell to `set -euo pipefail` or an equivalent in the wrapper.
|
|
100
100
|
- **Idempotence**: Running the same window twice produces the same report content (modulo `generated_at`). Overwriting is safe; appending duplicate commits is usually not — coalesce with a pre-check (`git diff --quiet` on the wrap-ups directory) if your cadence might cause no-op runs.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAIhF,OAAO,EACL,KAAK,SAAS,EACd,KAAK,cAAc,EAGnB,KAAK,UAAU,EAQhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/config/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAIhF,OAAO,EACL,KAAK,SAAS,EACd,KAAK,cAAc,EAGnB,KAAK,UAAU,EAQhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8DpC,UAAU,yBAAyB;IACjC,mBAAmB,EAAE,CACnB,OAAO,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAC/C,cAAc,CAAC;IACpB,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACxD,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAClE,mBAAmB,EAAE,CACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,KACnB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,cAAc,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/D,eAAe,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,mBAAmB,EAAE,CACnB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,CAAC,UAAU,KACnB,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,sBAAsB,EAAE,CACtB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,CAAC,UAAU,KACnB,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC;CAC/B;AAkvCD,wBAAgB,mBAAmB,CACjC,SAAS,GAAE,OAAO,CAAC,yBAAyB,CAAM,GACjD,OAAO,CA0GT"}
|
|
@@ -40,6 +40,8 @@ const KEY_ORDER = [
|
|
|
40
40
|
'workflow.reviewExecutionModel',
|
|
41
41
|
'workflow.autoReviewAtHillCheckpoints',
|
|
42
42
|
'workflow.autoNarrowReReviewScope',
|
|
43
|
+
'workflow.autoArtifactReview.plan',
|
|
44
|
+
'workflow.autoArtifactReview.analysis',
|
|
43
45
|
'workflow.designMode',
|
|
44
46
|
'workflow.dispatchCeiling.preset',
|
|
45
47
|
'workflow.dispatchCeiling.providers.codex',
|
|
@@ -188,7 +190,7 @@ const CONFIG_CATALOG = [
|
|
|
188
190
|
defaultValue: 'unset',
|
|
189
191
|
mutability: 'read/write',
|
|
190
192
|
owningCommand: 'oat config set archive.awsProfile <value>',
|
|
191
|
-
description: 'AWS named profile forwarded as AWS_PROFILE to every `aws` invocation made by the archive S3 sync (completion + `oat
|
|
193
|
+
description: 'AWS named profile forwarded as AWS_PROFILE to every `aws` invocation made by the archive S3 sync (completion + `oat repo archive sync`). Precedence: per-invocation flag > this config value > existing shell env.',
|
|
192
194
|
},
|
|
193
195
|
{
|
|
194
196
|
key: 'archive.awsRegion',
|
|
@@ -199,7 +201,7 @@ const CONFIG_CATALOG = [
|
|
|
199
201
|
defaultValue: 'unset',
|
|
200
202
|
mutability: 'read/write',
|
|
201
203
|
owningCommand: 'oat config set archive.awsRegion <value>',
|
|
202
|
-
description: 'AWS region forwarded as AWS_REGION to every `aws` invocation made by the archive S3 sync (completion + `oat
|
|
204
|
+
description: 'AWS region forwarded as AWS_REGION to every `aws` invocation made by the archive S3 sync (completion + `oat repo archive sync`). Precedence: per-invocation flag > this config value > existing shell env.',
|
|
203
205
|
},
|
|
204
206
|
{
|
|
205
207
|
key: 'tools.brainstorm',
|
|
@@ -410,6 +412,28 @@ const CONFIG_CATALOG = [
|
|
|
410
412
|
owningCommand: 'oat config set workflow.autoNarrowReReviewScope <true|false>',
|
|
411
413
|
description: 'Auto-narrow re-review scope to fix-task commits in oat-project-review-provide when re-reviewing completed fix tasks. Has no effect on initial reviews (there is nothing to narrow to). When unset, the skill prompts. Resolution: env > local > shared > user > default.',
|
|
412
414
|
},
|
|
415
|
+
{
|
|
416
|
+
key: 'workflow.autoArtifactReview.plan',
|
|
417
|
+
group: 'Workflow Preferences (3-layer: local > shared > user)',
|
|
418
|
+
file: '.oat/config.local.json | .oat/config.json | ~/.oat/config.json',
|
|
419
|
+
scope: 'workflow',
|
|
420
|
+
type: 'boolean',
|
|
421
|
+
defaultValue: 'true',
|
|
422
|
+
mutability: 'read/write',
|
|
423
|
+
owningCommand: 'oat config set workflow.autoArtifactReview.plan <true|false>',
|
|
424
|
+
description: 'Automatically run the bounded artifact-review loop for generated plan artifacts before implementation handoff. Resolution: local > shared > user > default.',
|
|
425
|
+
},
|
|
426
|
+
{
|
|
427
|
+
key: 'workflow.autoArtifactReview.analysis',
|
|
428
|
+
group: 'Workflow Preferences (3-layer: local > shared > user)',
|
|
429
|
+
file: '.oat/config.local.json | .oat/config.json | ~/.oat/config.json',
|
|
430
|
+
scope: 'workflow',
|
|
431
|
+
type: 'boolean',
|
|
432
|
+
defaultValue: 'true',
|
|
433
|
+
mutability: 'read/write',
|
|
434
|
+
owningCommand: 'oat config set workflow.autoArtifactReview.analysis <true|false>',
|
|
435
|
+
description: 'Automatically run the bounded accuracy-review loop for generated analysis artifacts before apply workflows consume them. Resolution: local > shared > user > default.',
|
|
436
|
+
},
|
|
413
437
|
{
|
|
414
438
|
key: 'workflow.designMode',
|
|
415
439
|
group: 'Workflow Preferences (3-layer: local > shared > user)',
|
|
@@ -530,6 +554,8 @@ const WORKFLOW_BOOLEAN_KEYS = new Set([
|
|
|
530
554
|
'workflow.createPrOnComplete',
|
|
531
555
|
'workflow.autoReviewAtHillCheckpoints',
|
|
532
556
|
'workflow.autoNarrowReReviewScope',
|
|
557
|
+
'workflow.autoArtifactReview.plan',
|
|
558
|
+
'workflow.autoArtifactReview.analysis',
|
|
533
559
|
]);
|
|
534
560
|
function isWorkflowKey(key) {
|
|
535
561
|
return key.startsWith('workflow.');
|
|
@@ -638,6 +664,16 @@ function applyWorkflowValue(workflow, key, value) {
|
|
|
638
664
|
},
|
|
639
665
|
};
|
|
640
666
|
}
|
|
667
|
+
if (subKey.startsWith('autoArtifactReview.')) {
|
|
668
|
+
const reviewKey = subKey.slice('autoArtifactReview.'.length);
|
|
669
|
+
return {
|
|
670
|
+
...workflow,
|
|
671
|
+
autoArtifactReview: {
|
|
672
|
+
...workflow.autoArtifactReview,
|
|
673
|
+
[reviewKey]: value,
|
|
674
|
+
},
|
|
675
|
+
};
|
|
676
|
+
}
|
|
641
677
|
return {
|
|
642
678
|
...workflow,
|
|
643
679
|
[subKey]: value,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBzC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqBvD"}
|
package/dist/commands/index.js
CHANGED
|
@@ -13,6 +13,7 @@ import { createProjectCommand } from './project/index.js';
|
|
|
13
13
|
import { createProvidersCommand } from './providers/index.js';
|
|
14
14
|
import { createRemoveCommand } from './remove/index.js';
|
|
15
15
|
import { createRepoCommand } from './repo/index.js';
|
|
16
|
+
import { createReviewCommand } from './review/index.js';
|
|
16
17
|
import { createStateCommand } from './state/index.js';
|
|
17
18
|
import { createStatusCommand } from './status/index.js';
|
|
18
19
|
import { createSyncCommand } from './sync/index.js';
|
|
@@ -27,6 +28,7 @@ export function registerCommands(program) {
|
|
|
27
28
|
program.addCommand(createProvidersCommand());
|
|
28
29
|
program.addCommand(createRemoveCommand());
|
|
29
30
|
program.addCommand(createRepoCommand());
|
|
31
|
+
program.addCommand(createReviewCommand());
|
|
30
32
|
program.addCommand(createDoctorCommand());
|
|
31
33
|
program.addCommand(createCleanupCommand());
|
|
32
34
|
program.addCommand(createDocsCommand());
|
|
@@ -60,6 +60,23 @@ export interface ResolvePrimaryRepoRootDependencies {
|
|
|
60
60
|
dirExists?: typeof dirExists;
|
|
61
61
|
env?: NodeJS.ProcessEnv;
|
|
62
62
|
}
|
|
63
|
+
export interface ResolveArchiveProjectTargetOptions {
|
|
64
|
+
repoRoot: string;
|
|
65
|
+
projectsRoot: string;
|
|
66
|
+
projectName: string;
|
|
67
|
+
}
|
|
68
|
+
export interface ResolveArchiveProjectTargetDependencies extends ResolvePrimaryRepoRootDependencies {
|
|
69
|
+
timestamp?: () => string;
|
|
70
|
+
}
|
|
71
|
+
export interface ArchiveProjectTarget {
|
|
72
|
+
archiveProjectPath: string;
|
|
73
|
+
archiveRepoRoot: string;
|
|
74
|
+
archivePath: string;
|
|
75
|
+
archivePathIsGitignored: boolean;
|
|
76
|
+
primaryRepoRoot: string | null;
|
|
77
|
+
primaryRepoRootAvailable: boolean;
|
|
78
|
+
localOnlyWarning: string | null;
|
|
79
|
+
}
|
|
63
80
|
interface ArchiveProjectOnCompletionDependencies extends EnsureS3ArchiveAccessDependencies, ResolvePrimaryRepoRootDependencies {
|
|
64
81
|
ensureS3ArchiveAccess?: typeof ensureS3ArchiveAccess;
|
|
65
82
|
execFile?: ExecFileLike;
|
|
@@ -120,6 +137,8 @@ export declare function parseArchiveSnapshotName(snapshotName: string): {
|
|
|
120
137
|
};
|
|
121
138
|
export declare function resolveLocalArchiveProjectPath(projectsRoot: string, projectName: string): string;
|
|
122
139
|
export declare function resolvePrimaryRepoRoot(repoRoot: string, dependencies?: ResolvePrimaryRepoRootDependencies): Promise<string>;
|
|
140
|
+
export declare function resolveArchiveProjectTarget(options: ResolveArchiveProjectTargetOptions, dependencies?: ResolveArchiveProjectTargetDependencies): Promise<ArchiveProjectTarget>;
|
|
141
|
+
export declare function assertDurableArchiveProjectTarget(target: ArchiveProjectTarget): void;
|
|
123
142
|
export declare function archiveProjectOnCompletion(options: ArchiveProjectOnCompletionOptions, dependencies?: ArchiveProjectOnCompletionDependencies): Promise<ArchiveProjectOnCompletionResult>;
|
|
124
143
|
export declare function ensureS3ArchiveAccess(options: EnsureS3ArchiveAccessOptions, dependencies?: EnsureS3ArchiveAccessDependencies): Promise<EnsureS3ArchiveAccessResult>;
|
|
125
144
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archive-utils.d.ts","sourceRoot":"","sources":["../../../../src/commands/project/archive/archive-utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"archive-utils.d.ts","sourceRoot":"","sources":["../../../../src/commands/project/archive/archive-utils.ts"],"names":[],"mappings":"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"}
|