@open-agent-toolkit/cli 0.0.70 → 0.1.0
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/docs/provider-sync/manifest-and-drift.md +2 -0
- package/assets/docs/workflows/projects/implementation-execution.md +2 -0
- package/assets/docs/workflows/projects/lifecycle.md +3 -2
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-project-import-plan/SKILL.md +25 -7
- package/assets/skills/oat-project-new/SKILL.md +20 -3
- package/assets/skills/oat-project-quick-start/SKILL.md +19 -2
- package/assets/skills/oat-worktree-bootstrap-auto/SKILL.md +30 -6
- package/assets/skills/oat-worktree-bootstrap-auto/scripts/bootstrap.sh +43 -1
- package/package.json +2 -2
|
@@ -28,6 +28,8 @@ Tracks managed mappings so the CLI can:
|
|
|
28
28
|
|
|
29
29
|
Install-triggered auto-sync narrows that removal scope further: after `oat tools install <pack>`, the follow-up sync only plans removals for canonical entries from the installed pack. This protects unrelated provider views if the current worktree has stale manifest entries for other packs whose canonical assets are missing locally.
|
|
30
30
|
|
|
31
|
+
Autonomous worktree bootstrap also treats sync output as setup state. `oat-worktree-bootstrap-auto` checks inherited cleanliness before the all-scope sync run, then commits dirty sync-managed output as `chore: run sync` when needed. The commit is scoped to existing or tracked sync paths (`.oat/sync/manifest.json`, `.claude`, `.cursor`, `.codex`) and reports the result as `sync_commit: pass | fail | skip` in its structured status.
|
|
32
|
+
|
|
31
33
|
For transformed mappings such as project-scoped rules, the manifest stores hashes for the rendered provider output that was actually written, not the canonical source markdown. This keeps drift detection aligned with the on-disk managed file.
|
|
32
34
|
|
|
33
35
|
## Drift states
|
|
@@ -75,6 +75,8 @@ oat_plan_parallel_groups: [['p02', 'p03'], ['p04', 'p05']]
|
|
|
75
75
|
### How a parallel group runs
|
|
76
76
|
|
|
77
77
|
1. **Bootstrap worktrees** via `oat-worktree-bootstrap-auto`, one per phase, branch name `{project-name}/{pNN}`.
|
|
78
|
+
- The bootstrap checks inherited git cleanliness before the all-scope provider sync sweep.
|
|
79
|
+
- If that sync leaves `.oat/sync/manifest.json` or provider directories dirty, bootstrap commits only existing or tracked sync-managed paths (`.oat/sync/manifest.json`, `.claude`, `.cursor`, `.codex`) as `chore: run sync` and reports `sync_commit: pass | fail | skip`.
|
|
78
80
|
- If any bootstrap fails, cancel successful worktrees and **degrade the entire group** to sequential inline execution.
|
|
79
81
|
2. **Concurrent dispatch** of `oat-phase-implementer` into each worktree (Tier 1 only — Tier 2 cannot run concurrently and also degrades to sequential).
|
|
80
82
|
3. **Wait for terminal verdicts** (`pass` or `failed`) across every phase in the group.
|
|
@@ -110,7 +110,7 @@ See [Implementation Execution](implementation-execution.md) for the full executi
|
|
|
110
110
|
|
|
111
111
|
### Quick lane diagram
|
|
112
112
|
|
|
113
|
-
1. `oat-project-quick-start` (adaptive discovery — provide a project name and optional description; if only the name is provided, quick-start asks for the missing description before discovery. Well-understood requests synthesize quickly, exploratory requests invest in solution space exploration)
|
|
113
|
+
1. `oat-project-quick-start` (adaptive discovery — provide a project name and optional description; if only the name is provided, quick-start asks for the missing description before discovery. Well-understood requests synthesize quickly, exploratory requests invest in solution space exploration. Before scaffolding, the skill checks inherited git state and asks whether to commit, proceed, or abort when the worktree is already dirty.)
|
|
114
114
|
2. Decision point: straight to plan, optional lightweight `design.md`, or promote to spec-driven
|
|
115
115
|
3. Implement: `oat-project-implement` (sequential by default; parallel when `oat_plan_parallel_groups` is declared)
|
|
116
116
|
4. `oat-project-review-provide` / `oat-project-pr-final`
|
|
@@ -118,7 +118,7 @@ See [Implementation Execution](implementation-execution.md) for the full executi
|
|
|
118
118
|
|
|
119
119
|
### Import lane diagram
|
|
120
120
|
|
|
121
|
-
1. `oat-project-import-plan`
|
|
121
|
+
1. `oat-project-import-plan` (checks inherited git state before import scaffolding so sync-generated or unrelated dirty files do not silently roll into project bookkeeping)
|
|
122
122
|
2. Implement: `oat-project-implement` (sequential by default; parallel when `oat_plan_parallel_groups` is declared)
|
|
123
123
|
3. `oat-project-review-provide` / `oat-project-pr-final`
|
|
124
124
|
4. Optional `oat-project-promote-spec-driven` to switch project mode to spec-driven lifecycle
|
|
@@ -198,6 +198,7 @@ Capture lane progression:
|
|
|
198
198
|
- Keep `state.md`, `plan.md`, and `implementation.md` synchronized.
|
|
199
199
|
- Stop at configured HiLL checkpoints.
|
|
200
200
|
- Do not move lifecycle forward when required review gates are unresolved.
|
|
201
|
+
- Project entry skills (`oat-project-new`, `oat-project-quick-start`, and `oat-project-import-plan`) surface inherited dirty git state before scaffolding. If the dirty list includes `.oat/sync/manifest.json`, `.claude/`, `.cursor/`, or `.codex/`, the skill calls out that those paths are typically sync output and offers Commit now, Proceed anyway, or Abort.
|
|
201
202
|
|
|
202
203
|
## Reducing lifecycle friction with workflow preferences
|
|
203
204
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-import-plan
|
|
3
|
-
version: 1.
|
|
3
|
+
version: 1.3.0
|
|
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
|
disable-model-invocation: true
|
|
@@ -56,15 +56,33 @@ When executing this skill, provide lightweight progress feedback so the user can
|
|
|
56
56
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
57
57
|
|
|
58
58
|
- Before multi-step work, print step indicators, e.g.:
|
|
59
|
-
- `[
|
|
60
|
-
- `[
|
|
61
|
-
- `[
|
|
62
|
-
- `[
|
|
63
|
-
- `[
|
|
59
|
+
- `[0/6] Checking inherited git state...`
|
|
60
|
+
- `[1/6] Resolving project + source plan…`
|
|
61
|
+
- `[2/6] Preserving imported source…`
|
|
62
|
+
- `[3/6] Normalizing plan to OAT task structure…`
|
|
63
|
+
- `[4/6] Updating project metadata + state…`
|
|
64
|
+
- `[5/6] Refreshing dashboard…`
|
|
65
|
+
- `[6/6] Ensuring implementation tracker…`
|
|
64
66
|
|
|
65
67
|
## Process
|
|
66
68
|
|
|
67
|
-
### Step 0:
|
|
69
|
+
### Step 0 (Preflight): Inherited Git State
|
|
70
|
+
|
|
71
|
+
Before scaffolding, surface the working tree state so unrelated changes don't get carried into the project workflow's bookkeeping commits.
|
|
72
|
+
|
|
73
|
+
1. Run `git status --porcelain`. If empty, continue silently to the next step.
|
|
74
|
+
2. If non-empty, present the dirty list to the user.
|
|
75
|
+
3. If `.oat/sync/manifest.json` or paths under `.claude/`, `.cursor/`, `.codex/` appear in the list, note: "These are generated by `oat sync` (often by `pnpm run worktree:init` or `oat-worktree-bootstrap-auto`) and are typically safe to commit as `chore: run sync`."
|
|
76
|
+
4. Offer three choices via `AskUserQuestion`:
|
|
77
|
+
- **Commit now** (recommended when only sync output is dirty) — stage and commit. For sync-only diffs, default the message to `chore: run sync`; otherwise ask the user for the commit message.
|
|
78
|
+
- **Proceed anyway** — start the project workflow with the dirty state acknowledged.
|
|
79
|
+
- **Abort** — exit the skill so the user can clean up manually.
|
|
80
|
+
|
|
81
|
+
> **Tool availability is not the same as interactivity.** If `AskUserQuestion` is unavailable but chat is available, present the three choices as a plain chat message and wait for the user's reply. Only fall back to "Proceed anyway" when `OAT_NON_INTERACTIVE=1` is set or there is no user-response channel at all.
|
|
82
|
+
|
|
83
|
+
Do not advance past this gate without an explicit choice.
|
|
84
|
+
|
|
85
|
+
### Step 0.5: Resolve Active Project
|
|
68
86
|
|
|
69
87
|
```bash
|
|
70
88
|
PROJECT_PATH=$(oat config get activeProject 2>/dev/null || true)
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-new
|
|
3
|
-
version: 1.
|
|
3
|
+
version: 1.3.0
|
|
4
4
|
description: Use when starting a spec-driven OAT project from scratch. Scaffolds a new project under PROJECTS_ROOT and sets it active.
|
|
5
5
|
argument-hint: '<project-name> [--force]'
|
|
6
6
|
disable-model-invocation: true
|
|
7
7
|
user-invocable: true
|
|
8
|
-
allowed-tools: Read, Write, Bash
|
|
8
|
+
allowed-tools: Read, Write, Bash, Glob, Grep, AskUserQuestion
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# New OAT Project
|
|
@@ -21,13 +21,30 @@ Create a new OAT project directory, scaffold standard artifacts from `.oat/templ
|
|
|
21
21
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
22
22
|
|
|
23
23
|
- Before multi-step work, print step indicators, e.g.:
|
|
24
|
+
- `[0/3] Checking inherited git state...`
|
|
24
25
|
- `[1/3] Validating project name…`
|
|
25
26
|
- `[2/3] Scaffolding project artifacts…`
|
|
26
27
|
- `[3/3] Refreshing dashboard…`
|
|
27
28
|
|
|
28
29
|
## Process
|
|
29
30
|
|
|
30
|
-
### Step 0:
|
|
31
|
+
### Step 0 (Preflight): Inherited Git State
|
|
32
|
+
|
|
33
|
+
Before scaffolding, surface the working tree state so unrelated changes don't get carried into the project workflow's bookkeeping commits.
|
|
34
|
+
|
|
35
|
+
1. Run `git status --porcelain`. If empty, continue silently to the next step.
|
|
36
|
+
2. If non-empty, present the dirty list to the user.
|
|
37
|
+
3. If `.oat/sync/manifest.json` or paths under `.claude/`, `.cursor/`, `.codex/` appear in the list, note: "These are generated by `oat sync` (often by `pnpm run worktree:init` or `oat-worktree-bootstrap-auto`) and are typically safe to commit as `chore: run sync`."
|
|
38
|
+
4. Offer three choices via `AskUserQuestion`:
|
|
39
|
+
- **Commit now** (recommended when only sync output is dirty) — stage and commit. For sync-only diffs, default the message to `chore: run sync`; otherwise ask the user for the commit message.
|
|
40
|
+
- **Proceed anyway** — start the project workflow with the dirty state acknowledged.
|
|
41
|
+
- **Abort** — exit the skill so the user can clean up manually.
|
|
42
|
+
|
|
43
|
+
> **Tool availability is not the same as interactivity.** If `AskUserQuestion` is unavailable but chat is available, present the three choices as a plain chat message and wait for the user's reply. Only fall back to "Proceed anyway" when `OAT_NON_INTERACTIVE=1` is set or there is no user-response channel at all.
|
|
44
|
+
|
|
45
|
+
Do not advance past this gate without an explicit choice.
|
|
46
|
+
|
|
47
|
+
### Step 0.5: Resolve Projects Root
|
|
31
48
|
|
|
32
49
|
Resolve `{PROJECTS_ROOT}` (same order as other OAT skills):
|
|
33
50
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-quick-start
|
|
3
|
-
version: 2.0
|
|
3
|
+
version: 2.1.0
|
|
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,6 +57,7 @@ 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/6] Checking inherited git state...`
|
|
60
61
|
- `[1/6] Scaffolding quick-mode project…`
|
|
61
62
|
- `[2/6] Exploring solution space + capturing discovery…`
|
|
62
63
|
- `[3/6] Decision point: design depth…`
|
|
@@ -74,7 +75,23 @@ When executing this skill, provide lightweight progress feedback so the user can
|
|
|
74
75
|
|
|
75
76
|
## Process
|
|
76
77
|
|
|
77
|
-
### Step 0:
|
|
78
|
+
### Step 0 (Preflight): Inherited Git State
|
|
79
|
+
|
|
80
|
+
Before scaffolding, surface the working tree state so unrelated changes don't get carried into the project workflow's bookkeeping commits.
|
|
81
|
+
|
|
82
|
+
1. Run `git status --porcelain`. If empty, continue silently to the next step.
|
|
83
|
+
2. If non-empty, present the dirty list to the user.
|
|
84
|
+
3. If `.oat/sync/manifest.json` or paths under `.claude/`, `.cursor/`, `.codex/` appear in the list, note: "These are generated by `oat sync` (often by `pnpm run worktree:init` or `oat-worktree-bootstrap-auto`) and are typically safe to commit as `chore: run sync`."
|
|
85
|
+
4. Offer three choices via `AskUserQuestion`:
|
|
86
|
+
- **Commit now** (recommended when only sync output is dirty) — stage and commit. For sync-only diffs, default the message to `chore: run sync`; otherwise ask the user for the commit message.
|
|
87
|
+
- **Proceed anyway** — start the project workflow with the dirty state acknowledged.
|
|
88
|
+
- **Abort** — exit the skill so the user can clean up manually.
|
|
89
|
+
|
|
90
|
+
> **Tool availability is not the same as interactivity.** If `AskUserQuestion` is unavailable but chat is available, present the three choices as a plain chat message and wait for the user's reply. Only fall back to "Proceed anyway" when `OAT_NON_INTERACTIVE=1` is set or there is no user-response channel at all.
|
|
91
|
+
|
|
92
|
+
Do not advance past this gate without an explicit choice.
|
|
93
|
+
|
|
94
|
+
### Step 0.5: Resolve Active Project
|
|
78
95
|
|
|
79
96
|
```bash
|
|
80
97
|
PROJECT_PATH=$(oat config get activeProject 2>/dev/null || true)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-worktree-bootstrap-auto
|
|
3
|
-
version: 1.
|
|
3
|
+
version: 1.3.0
|
|
4
4
|
description: Use when an orchestrator/subagent needs autonomous worktree bootstrap. Non-interactive companion to oat-worktree-bootstrap.
|
|
5
5
|
argument-hint: '<branch-name> [--base <ref>] [--path <root>] [--baseline-policy <strict|allow-failing>]'
|
|
6
6
|
disable-model-invocation: true
|
|
@@ -158,9 +158,13 @@ Execute in the target worktree directory:
|
|
|
158
158
|
pnpm run worktree:init # install + build + sync
|
|
159
159
|
oat status --scope project
|
|
160
160
|
pnpm test
|
|
161
|
-
git status --porcelain
|
|
162
161
|
```
|
|
163
162
|
|
|
163
|
+
Continue to Step 4 for provider directory setup, the `git_clean` baseline
|
|
164
|
+
check, and the all-scope sync. The `git_clean` check must run after provider
|
|
165
|
+
directory creation but before the all-scope sync sweep, so it measures inherited
|
|
166
|
+
worktree state plus setup output rather than the sync sweep's generated output.
|
|
167
|
+
|
|
164
168
|
Check behavior per baseline policy:
|
|
165
169
|
|
|
166
170
|
**strict mode:**
|
|
@@ -175,21 +179,38 @@ Check behavior per baseline policy:
|
|
|
175
179
|
- If active project with `implementation.md` exists → append timestamped baseline-failure note.
|
|
176
180
|
- Otherwise → console output only (no fallback file creation).
|
|
177
181
|
|
|
178
|
-
### Step 4: Create Provider Directories
|
|
182
|
+
### Step 4: Create Provider Directories and Sync
|
|
179
183
|
|
|
180
|
-
Worktrees do not inherit gitignored provider directories. Create them if
|
|
184
|
+
Worktrees do not inherit gitignored provider directories. Create them if
|
|
185
|
+
missing, run the `git_clean` baseline check, and then run sync:
|
|
181
186
|
|
|
182
187
|
```bash
|
|
183
188
|
mkdir -p "{target-path}/.claude/skills"
|
|
184
189
|
mkdir -p "{target-path}/.cursor/rules"
|
|
190
|
+
git status --porcelain
|
|
191
|
+
oat sync --scope all
|
|
185
192
|
```
|
|
186
193
|
|
|
187
|
-
|
|
194
|
+
After sync completes, commit sync-managed output if any scoped path is dirty:
|
|
188
195
|
|
|
189
196
|
```bash
|
|
190
|
-
oat
|
|
197
|
+
SYNC_PATHS=(.oat/sync/manifest.json .claude .cursor .codex)
|
|
198
|
+
SYNC_STAGE_PATHS=(existing-or-tracked sync paths)
|
|
199
|
+
git status --porcelain -- "${SYNC_STAGE_PATHS[@]}"
|
|
200
|
+
git add -A -- "${SYNC_STAGE_PATHS[@]}"
|
|
201
|
+
STAGED_SYNC_FILES=(staged sync-managed files from git diff --cached)
|
|
202
|
+
git commit -m "chore: run sync" -- "${STAGED_SYNC_FILES[@]}"
|
|
191
203
|
```
|
|
192
204
|
|
|
205
|
+
Use a staged-diff guard so no empty commit is created. After scoped staging,
|
|
206
|
+
derive the concrete staged sync-managed files from
|
|
207
|
+
`git diff --cached --name-only --no-renames -- "${SYNC_STAGE_PATHS[@]}"` and
|
|
208
|
+
commit only those file paths. Do not pass provider directory pathspecs to
|
|
209
|
+
`git commit`, because empty provider directories can make the commit fail. This
|
|
210
|
+
file-list isolation is what keeps `chore: run sync` limited to sync-managed
|
|
211
|
+
paths even if unrelated files were already staged. If no scoped path is dirty,
|
|
212
|
+
or staging produces no diff, report `sync_commit: skip`.
|
|
213
|
+
|
|
193
214
|
### Step 5: Return Structured Status
|
|
194
215
|
|
|
195
216
|
Return a structured status object (for orchestrator consumption):
|
|
@@ -207,6 +228,7 @@ checks:
|
|
|
207
228
|
tests: pass | fail | skip
|
|
208
229
|
git_clean: pass | fail | skip
|
|
209
230
|
provider_sync: pass | fail | skip
|
|
231
|
+
sync_commit: pass | fail | skip
|
|
210
232
|
warnings: [] # List of warning messages (allow-failing mode)
|
|
211
233
|
error: null # Error message (strict mode failure)
|
|
212
234
|
reason: null # Structured reason on failure (e.g., base-mismatch)
|
|
@@ -221,6 +243,8 @@ baseline_policy: strict | allow-failing
|
|
|
221
243
|
- `success`: All checks passed and Step 2.7 base-resolution verification passed.
|
|
222
244
|
- `warning`: Some checks failed under `allow-failing` policy (Step 2.7 still passed).
|
|
223
245
|
- `error`: A baseline check failed under `strict` policy, or worktree creation failed.
|
|
246
|
+
- `error`: `sync_commit` failed under `strict` policy.
|
|
247
|
+
- `warning`: `sync_commit` failed under `allow-failing` policy.
|
|
224
248
|
- `failed` (with `reason: base-mismatch`): Step 2.7 base-resolution verification failed. Callers should treat this distinctly from a generic baseline error — it is a contract violation, not a flaky check.
|
|
225
249
|
|
|
226
250
|
## Error Handling
|
|
@@ -152,11 +152,12 @@ fi
|
|
|
152
152
|
|
|
153
153
|
run_check "project_status" oat status --scope project
|
|
154
154
|
run_check "tests" pnpm test
|
|
155
|
-
run_check "git_clean" test -z "$(git status --porcelain)"
|
|
156
155
|
|
|
157
156
|
# ─── Step 4: Create Provider Directories ────────────────────────────────────
|
|
158
157
|
mkdir -p "$TARGET_PATH/.claude/skills"
|
|
159
158
|
mkdir -p "$TARGET_PATH/.cursor/rules"
|
|
159
|
+
run_check "git_clean" test -z "$(git status --porcelain)"
|
|
160
|
+
|
|
160
161
|
if oat sync --scope all >/dev/null 2>&1; then
|
|
161
162
|
CHECK_RESULTS["provider_sync"]="pass"
|
|
162
163
|
else
|
|
@@ -168,6 +169,46 @@ else
|
|
|
168
169
|
fi
|
|
169
170
|
fi
|
|
170
171
|
|
|
172
|
+
# ─── Step 4.5: Commit Sync Output ───────────────────────────────────────────
|
|
173
|
+
SYNC_PATHS=(.oat/sync/manifest.json .claude .cursor .codex)
|
|
174
|
+
SYNC_STAGE_PATHS=()
|
|
175
|
+
for sync_path in "${SYNC_PATHS[@]}"; do
|
|
176
|
+
if [[ -e "$sync_path" ]] || [[ -n "$(git ls-files -- "$sync_path")" ]]; then
|
|
177
|
+
SYNC_STAGE_PATHS+=("$sync_path")
|
|
178
|
+
fi
|
|
179
|
+
done
|
|
180
|
+
|
|
181
|
+
SYNC_DIRTY=""
|
|
182
|
+
if [[ ${#SYNC_STAGE_PATHS[@]} -gt 0 ]]; then
|
|
183
|
+
SYNC_DIRTY=$(git status --porcelain -- "${SYNC_STAGE_PATHS[@]}" 2>/dev/null || true)
|
|
184
|
+
fi
|
|
185
|
+
if [[ -n "$SYNC_DIRTY" ]]; then
|
|
186
|
+
git add -A -- "${SYNC_STAGE_PATHS[@]}" 2>/dev/null || true
|
|
187
|
+
if ! git diff --cached --quiet -- "${SYNC_STAGE_PATHS[@]}"; then
|
|
188
|
+
STAGED_SYNC_FILES=()
|
|
189
|
+
while IFS= read -r -d '' staged_sync_file; do
|
|
190
|
+
STAGED_SYNC_FILES+=("$staged_sync_file")
|
|
191
|
+
done < <(git diff --cached --name-only -z --no-renames -- "${SYNC_STAGE_PATHS[@]}")
|
|
192
|
+
|
|
193
|
+
if [[ ${#STAGED_SYNC_FILES[@]} -eq 0 ]]; then
|
|
194
|
+
CHECK_RESULTS["sync_commit"]="skip"
|
|
195
|
+
elif git commit -m "chore: run sync" -- "${STAGED_SYNC_FILES[@]}" >/dev/null 2>&1; then
|
|
196
|
+
CHECK_RESULTS["sync_commit"]="pass"
|
|
197
|
+
else
|
|
198
|
+
CHECK_RESULTS["sync_commit"]="fail"
|
|
199
|
+
if [[ "$BASELINE_POLICY" == "strict" ]]; then
|
|
200
|
+
HAS_ERROR=true
|
|
201
|
+
else
|
|
202
|
+
WARNINGS+=("sync_commit: commit failed")
|
|
203
|
+
fi
|
|
204
|
+
fi
|
|
205
|
+
else
|
|
206
|
+
CHECK_RESULTS["sync_commit"]="skip"
|
|
207
|
+
fi
|
|
208
|
+
else
|
|
209
|
+
CHECK_RESULTS["sync_commit"]="skip"
|
|
210
|
+
fi
|
|
211
|
+
|
|
171
212
|
# ─── Step 5: Return Structured Status ───────────────────────────────────────
|
|
172
213
|
if [[ "$HAS_ERROR" == true ]]; then
|
|
173
214
|
STATUS="error"
|
|
@@ -188,6 +229,7 @@ checks:
|
|
|
188
229
|
tests: ${CHECK_RESULTS[tests]:-skip}
|
|
189
230
|
git_clean: ${CHECK_RESULTS[git_clean]:-skip}
|
|
190
231
|
provider_sync: ${CHECK_RESULTS[provider_sync]:-skip}
|
|
232
|
+
sync_commit: ${CHECK_RESULTS[sync_commit]:-skip}
|
|
191
233
|
warnings: [$(IFS=','; echo "${WARNINGS[*]:-}")]
|
|
192
234
|
error: ${HAS_ERROR:+baseline check failed under strict policy}
|
|
193
235
|
baseline_policy: $BASELINE_POLICY
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-agent-toolkit/cli",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Open Agent Toolkit CLI",
|
|
6
6
|
"homepage": "https://github.com/voxmedia/open-agent-toolkit/tree/main/packages/cli",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"ora": "^9.0.0",
|
|
34
34
|
"yaml": "2.8.2",
|
|
35
35
|
"zod": "^3.25.76",
|
|
36
|
-
"@open-agent-toolkit/control-plane": "0.0
|
|
36
|
+
"@open-agent-toolkit/control-plane": "0.1.0"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@types/node": "^22.10.0",
|