@open-agent-toolkit/cli 0.1.62 → 0.1.64

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 (61) hide show
  1. package/assets/agents/oat-phase-implementer.md +9 -1
  2. package/assets/agents/oat-reviewer.md +8 -1
  3. package/assets/docs/cli-utilities/configuration.md +29 -0
  4. package/assets/docs/cli-utilities/tool-packs.md +29 -1
  5. package/assets/docs/contributing/skills.md +22 -0
  6. package/assets/docs/workflows/projects/artifacts.md +30 -0
  7. package/assets/docs/workflows/projects/autonomy.md +154 -0
  8. package/assets/docs/workflows/projects/cursor-cloud.md +151 -0
  9. package/assets/docs/workflows/projects/dispatch-ceiling.md +13 -0
  10. package/assets/docs/workflows/projects/index.md +6 -0
  11. package/assets/public-package-versions.json +4 -4
  12. package/assets/skills/oat-cursor-cloud-projects/SKILL.md +318 -0
  13. package/assets/skills/oat-cursor-cloud-projects/references/cursor-cloud-mechanics.md +173 -0
  14. package/assets/skills/oat-project-autonomous/SKILL.md +439 -0
  15. package/assets/skills/oat-project-autonomous/references/gate-inventory.md +294 -0
  16. package/assets/skills/oat-project-design/SKILL.md +79 -1
  17. package/assets/skills/oat-project-discover/SKILL.md +76 -1
  18. package/assets/skills/oat-project-document/SKILL.md +24 -1
  19. package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +294 -0
  20. package/assets/skills/oat-project-implement/SKILL.md +18 -1
  21. package/assets/skills/oat-project-implement/references/completion-and-closeout.md +72 -7
  22. package/assets/skills/oat-project-implement/references/dispatch-and-dry-run.md +17 -9
  23. package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +294 -0
  24. package/assets/skills/oat-project-implement/references/plan-and-resume.md +56 -0
  25. package/assets/skills/oat-project-plan-writing/SKILL.md +48 -12
  26. package/assets/skills/oat-project-pr-final/SKILL.md +31 -4
  27. package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +294 -0
  28. package/assets/skills/oat-project-quick-start/SKILL.md +50 -2
  29. package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +294 -0
  30. package/assets/skills/oat-project-review-provide/SKILL.md +9 -1
  31. package/assets/skills/oat-project-review-receive/SKILL.md +9 -1
  32. package/assets/skills/oat-project-summary/SKILL.md +76 -14
  33. package/assets/templates/summary.md +24 -0
  34. package/dist/commands/gate/index.d.ts.map +1 -1
  35. package/dist/commands/gate/index.js +4 -1
  36. package/dist/commands/init/tools/index.d.ts.map +1 -1
  37. package/dist/commands/init/tools/index.js +67 -45
  38. package/dist/commands/init/tools/shared/skill-manifest.d.ts +1 -1
  39. package/dist/commands/init/tools/shared/skill-manifest.d.ts.map +1 -1
  40. package/dist/commands/init/tools/shared/skill-manifest.js +2 -0
  41. package/dist/commands/init/tools/workflows/index.d.ts +2 -1
  42. package/dist/commands/init/tools/workflows/index.d.ts.map +1 -1
  43. package/dist/commands/init/tools/workflows/index.js +13 -11
  44. package/dist/commands/init/tools/workflows/install-workflows.d.ts +2 -0
  45. package/dist/commands/init/tools/workflows/install-workflows.d.ts.map +1 -1
  46. package/dist/commands/init/tools/workflows/install-workflows.js +4 -0
  47. package/dist/commands/project/new/scaffold.d.ts +1 -0
  48. package/dist/commands/project/new/scaffold.d.ts.map +1 -1
  49. package/dist/commands/project/new/scaffold.js +23 -4
  50. package/dist/commands/tools/remove/index.js +2 -2
  51. package/dist/commands/tools/remove/remove-tools.d.ts.map +1 -1
  52. package/dist/commands/tools/remove/remove-tools.js +23 -0
  53. package/dist/commands/tools/update/index.d.ts.map +1 -1
  54. package/dist/commands/tools/update/index.js +7 -1
  55. package/dist/commands/tools/update/update-tools.d.ts +9 -0
  56. package/dist/commands/tools/update/update-tools.d.ts.map +1 -1
  57. package/dist/commands/tools/update/update-tools.js +25 -5
  58. package/dist/providers/identity/family.d.ts +1 -1
  59. package/dist/providers/identity/family.d.ts.map +1 -1
  60. package/dist/providers/identity/family.js +2 -0
  61. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-project-review-receive
3
- version: 1.5.6
3
+ version: 1.5.7
4
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
5
  disable-model-invocation: false
6
6
  user-invocable: true
@@ -70,6 +70,14 @@ When executing this skill, provide lightweight progress feedback so the user can
70
70
  - Routing to oat-project-implement
71
71
  - For `artifact` reviews: updating reviewed artifact files directly after user confirmation
72
72
 
73
+ ## Artifact Hygiene
74
+
75
+ Artifact hygiene contract: Before finishing or committing, format every file you created or edited. Use the concrete write/fix formatting command supplied by the governing plan, task, or brief. If none is usable, discover the repository's documented write/fix command from applicable `AGENTS.md`/`CLAUDE.md` instructions and relevant package manifests; do not infer or hardcode a formatter. Prefer a file-scoped invocation when supported, and avoid rewriting unrelated files. If no command is discoverable, warn once with `no format command discovered in repo instructions; skipping`, then continue.
76
+
77
+ After formatting, run only repository checks relevant to the files changed;
78
+ writing prose artifacts or review bookkeeping does not imply unrelated full
79
+ test suites.
80
+
73
81
  ## Process
74
82
 
75
83
  ### Step 0: Resolve Active Project
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: oat-project-summary
3
- version: 1.2.0
3
+ version: 1.3.1
4
4
  description: Use when the user requests or confirms summarizing an active OAT project — e.g. "summarize the project", "generate the summary", "run oat-project-summary", or confirms a previously offered summary run. Do NOT auto-invoke when implementation completes. Generates summary.md from project artifacts as institutional memory.
5
5
  disable-model-invocation: false
6
6
  user-invocable: true
@@ -69,6 +69,13 @@ If you catch yourself:
69
69
  2. Return to summary generation
70
70
  3. Keep content grounded in artifacts
71
71
 
72
+ ## Artifact Hygiene
73
+
74
+ Artifact hygiene contract: Before finishing or committing, format every file you created or edited. Use the concrete write/fix formatting command supplied by the governing plan, task, or brief. If none is usable, discover the repository's documented write/fix command from applicable `AGENTS.md`/`CLAUDE.md` instructions and relevant package manifests; do not infer or hardcode a formatter. Prefer a file-scoped invocation when supported, and avoid rewriting unrelated files. If no command is discoverable, warn once with `no format command discovered in repo instructions; skipping`, then continue.
75
+
76
+ After formatting, run only repository checks relevant to the files changed;
77
+ writing prose artifacts does not imply unrelated full test suites.
78
+
72
79
  ## Process
73
80
 
74
81
  ### Step 0: Resolve Active Project
@@ -113,9 +120,14 @@ Read all available artifacts for synthesis:
113
120
  - `"$PROJECT_PATH/plan.md"` — phases, tasks, reviews, deferred items
114
121
  - `"$PROJECT_PATH/implementation.md"` — task outcomes, deviations, challenges, review notes
115
122
  - `"$PROJECT_PATH/state.md"` — associated issues, workflow mode
123
+ - `"$PROJECT_PATH/oat-execution-learnings.md"` — optional append-only
124
+ autonomous-run observations and recommendations
116
125
 
117
126
  **Priority for content:** Implementation.md outcomes take precedence over design.md plans. Summary should reflect what actually happened, not what was planned.
118
127
 
128
+ If `oat-execution-learnings.md` is absent, do not infer autonomous learnings
129
+ from other artifacts and do not add an Autonomous Execution Learnings section.
130
+
119
131
  ### Step 3: Check for Existing Summary
120
132
 
121
133
  ```bash
@@ -138,9 +150,15 @@ test -f "$PROJECT_PATH/summary.md"
138
150
  ```
139
151
 
140
152
  3. Determine update scope:
141
- - If `oat_summary_last_task == current_last_task` AND `oat_summary_revision_count == current_rev_count`: **No changes detected. Skip update.** Report: "Summary is current. No updates needed."
153
+ - If `oat-execution-learnings.md` exists, compare its dated entry
154
+ identifiers (timestamp, category, and title) with the source pointers in
155
+ the existing `## Autonomous Execution Learnings` section. Treat missing,
156
+ added, or changed recommendations as `learnings_changed`.
157
+ - If `oat_summary_last_task == current_last_task` AND `oat_summary_revision_count == current_rev_count` AND learnings are absent or unchanged: **No changes detected. Skip update.** Report: "Summary is current. No updates needed."
142
158
  - If `current_rev_count > oat_summary_revision_count`: New revision phases exist. Update: Revision History, What Was Implemented, Follow-up Items.
143
159
  - If `current_last_task > oat_summary_last_task`: New tasks completed. Update: What Was Implemented, Notable Challenges, Tradeoffs Made.
160
+ - If `learnings_changed`: update Autonomous Execution Learnings even when
161
+ task and revision tracking fields are unchanged.
144
162
 
145
163
  **If does not exist (first run):**
146
164
 
@@ -162,18 +180,57 @@ For each section, synthesize content from the relevant artifacts. Apply these ru
162
180
 
163
181
  **Section sources:**
164
182
 
165
- | Section | Primary Sources |
166
- | -------------------- | ---------------------------------------------------------------------- |
167
- | Overview | discovery.md initial request, spec.md problem statement |
168
- | What Was Implemented | implementation.md task outcomes, plan.md phase structure |
169
- | Key Decisions | design.md decisions, implementation.md notes/decisions |
170
- | Design Deltas | implementation.md deviations table; review-received design drift notes |
171
- | Notable Challenges | implementation.md issues/blockers in task notes |
172
- | Tradeoffs Made | implementation.md decisions, design.md tradeoff sections |
173
- | Integration Notes | implementation.md notes about cross-cutting concerns |
174
- | Revision History | plan.md p-revN phases, implementation.md revision notes |
175
- | Follow-up Items | implementation.md deferred findings, plan.md deferred items |
176
- | Associated Issues | state.md `associated_issues` field |
183
+ | Section | Primary Sources |
184
+ | ------------------------------ | ---------------------------------------------------------------------- |
185
+ | Overview | discovery.md initial request, spec.md problem statement |
186
+ | What Was Implemented | implementation.md task outcomes, plan.md phase structure |
187
+ | Key Decisions | design.md decisions, implementation.md notes/decisions |
188
+ | Design Deltas | implementation.md deviations table; review-received design drift notes |
189
+ | Notable Challenges | implementation.md issues/blockers in task notes |
190
+ | Tradeoffs Made | implementation.md decisions, design.md tradeoff sections |
191
+ | Integration Notes | implementation.md notes about cross-cutting concerns |
192
+ | Revision History | plan.md p-revN phases, implementation.md revision notes |
193
+ | Follow-up Items | implementation.md deferred findings, plan.md deferred items |
194
+ | Associated Issues | state.md `associated_issues` field |
195
+ | Autonomous Execution Learnings | oat-execution-learnings.md dated entries |
196
+
197
+ **Autonomous Execution Learnings (conditional):**
198
+
199
+ When `"$PROJECT_PATH/oat-execution-learnings.md"` exists, synthesize
200
+ `## Autonomous Execution Learnings` as actionable recommendations grouped
201
+ under exactly these categories:
202
+
203
+ - **Agent-instruction updates** — durable skill, agent-rule, or instruction
204
+ changes;
205
+ - **Cloud-environment improvements** — image, setup, credentials,
206
+ provisioning, tool-availability, or environment-readiness changes;
207
+ - **Code follow-ups** — concrete product or toolkit code changes not completed
208
+ by this project;
209
+ - **Workflow issues** — lifecycle, gate, review, dispatch, or orchestration
210
+ process changes.
211
+
212
+ For each source entry:
213
+
214
+ 1. Use its `Observation`, `Impact`, and `Recommendation` fields to decide
215
+ whether it contains an actionable recommendation. Do not copy raw run notes
216
+ that have no durable action.
217
+ 2. Place each recommendation in the single best-fit category above. The source
218
+ taxonomy (`gotcha`, `efficiency`, `documentation-gap`,
219
+ `candidate-skill-content`, `decision`, `environment-limited`) is evidence,
220
+ not a one-to-one output mapping.
221
+ 3. Write a concise action plus one-line rationale. Preserve uncertainty and
222
+ environment-limited status; do not claim an unverified fix.
223
+ 4. End the item with a relative link to `oat-execution-learnings.md` and the
224
+ exact source entry identifier (`timestamp — category — title`). Link to the
225
+ entry heading anchor when one exists; otherwise link to the file and include
226
+ the identifier in the link text so the entry remains traceable.
227
+ 5. Deduplicate recommendations that describe the same action, while retaining
228
+ pointers to every supporting source entry.
229
+
230
+ Omit empty category subheadings. If the learnings file contains no actionable
231
+ entries, omit the entire section. If the file is absent, this behavior is inert:
232
+ remove the template placeholder during a first render and make no
233
+ learnings-driven update on a re-run.
177
234
 
178
235
  **For incremental updates (re-run):**
179
236
 
@@ -293,5 +350,10 @@ Summary tracks: last task {task_id}, {N} revision phases
293
350
  - Summary is under 200 lines for typical projects
294
351
  - Re-run after revisions updates only affected sections
295
352
  - Re-run with no changes produces no modifications
353
+ - When `oat-execution-learnings.md` exists, actionable recommendations are
354
+ grouped under Agent-instruction updates, Cloud-environment improvements, Code
355
+ follow-ups, and Workflow issues with source-entry pointers
356
+ - When `oat-execution-learnings.md` is absent, no Autonomous Execution
357
+ Learnings section is rendered and normal summary behavior is unchanged
296
358
  - When the PJM tool pack is installed, each Key Decision is promoted to a canonical `reference/decisions/DR-YYMMDD-slug` record via `oat decision new` (status `accepted`), deduped on the date-independent slug so re-runs never create duplicate records
297
359
  - When the PJM tool pack is not installed, decision promotion is skipped silently with no prompt
@@ -67,6 +67,30 @@ Pull from implementation.md task notes flagged as issues/blockers.}
67
67
 
68
68
  {If revisions happened post-PR, what changed and why. One entry per revision round.}
69
69
 
70
+ ## Autonomous Execution Learnings
71
+
72
+ <!-- CONDITIONAL: Include this entire section only when the project contains
73
+ oat-execution-learnings.md with actionable entries. Otherwise remove the
74
+ heading, category subheadings, and placeholders. Omit empty categories.
75
+ Each recommendation needs a one-line rationale and a relative pointer to
76
+ every supporting source entry (timestamp, category, and title). -->
77
+
78
+ ### Agent-instruction updates
79
+
80
+ {Durable skill, agent-rule, or instruction recommendations.}
81
+
82
+ ### Cloud-environment improvements
83
+
84
+ {Image, setup, credentials, provisioning, or environment-readiness recommendations.}
85
+
86
+ ### Code follow-ups
87
+
88
+ {Concrete product or toolkit code recommendations not completed by this project.}
89
+
90
+ ### Workflow issues
91
+
92
+ {Lifecycle, gate, review, dispatch, or orchestration recommendations.}
93
+
70
94
  ## Follow-up Items
71
95
 
72
96
  <!-- Omit this section if there are no deferred items or known limitations. -->
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/gate/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAQ9B,OAAO,EAQL,KAAK,UAAU,EAIf,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,UAAU,EAEhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,iBAAiB,CAAC;AAWzB,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EAExB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EACL,sBAAsB,EAIvB,MAAM,kBAAkB,CAAC;AAE1B,UAAU,uBAAuB;IAC/B,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,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,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,CACV,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,iBAAiB,KACvB,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC/B,sBAAsB,EAAE,OAAO,sBAAsB,CAAC;IACtD,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC;IAC9B,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AA6CD,UAAU,iBAAiB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACtD,OAAO,EAAE,gBAAgB,GAAG,cAAc,GAAG,SAAS,CAAC;IACvD,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;IACrC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,gBAAgB;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,oBAAoB;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,kBAAkB,GAAG,aAAa,GAAG,cAAc,GAAG,MAAM,CAAC;AAClE,KAAK,qBAAqB,GACtB,kBAAkB,GAClB,4BAA4B,GAC5B,2CAA2C,GAC3C,kBAAkB,CAAC;AAUvB,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,kBAAkB,CAAC;IAC/B,UAAU,EAAE,kBAAkB,CAAC;IAC/B,MAAM,EAAE,WAAW,CAAC;IACpB,aAAa,EAAE,WAAW,EAAE,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,mBAAmB,GAAG,SAAS,CAAC;CAC5D;AAED,UAAU,qBAAqB;IAC7B,KAAK,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,EAAE,qBAAqB,CAAC;IAChC,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,kBAAkB,CAAC;QAC/B,UAAU,EAAE,kBAAkB,CAAC;QAC/B,MAAM,EAAE,WAAW,CAAC;QACpB,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QACvC,aAAa,EAAE,WAAW,EAAE,CAAC;QAC7B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC9B,sBAAsB,CAAC,EAAE,MAAM,CAAC;KACjC,CAAC;IACF,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,WAAW,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA2lCD,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,EAC9C,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,kBAAkB,EACzB,gBAAgB,CAAC,EAAE,oBAAoB,GACtC,kBAAkB,GAAG,IAAI,CAS3B;AAshDD,wBAAgB,iBAAiB,CAC/B,SAAS,GAAE,OAAO,CAAC,uBAAuB,CAAM,GAC/C,OAAO,CAwMT"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/gate/index.ts"],"names":[],"mappings":"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"}
@@ -54,7 +54,10 @@ const VALID_IDENTITY_PROVENANCES = [
54
54
  'inferred',
55
55
  'unknown',
56
56
  ];
57
- const REVIEW_GATE_CONTEXT_NOTE = 'This review is gate-originated. If you run `oat-project-review-provide`, set `oat_review_invocation: gate` in the review artifact. Write a canonical review artifact with `### Critical`, `### Important`, `### Medium`, and `### Minor` headings in that order, using `None` for empty sections.';
57
+ const REVIEW_GATE_CONTEXT_NOTE = [
58
+ 'This review is gate-originated. If you run `oat-project-review-provide`, set `oat_review_invocation: gate` in the review artifact. Write a canonical review artifact with `### Critical`, `### Important`, `### Medium`, and `### Minor` headings in that order, using `None` for empty sections.',
59
+ "Artifact hygiene contract: Before finishing or committing, format every file you created or edited. Use the concrete write/fix formatting command supplied by the governing plan, task, or brief. If none is usable, discover the repository's documented write/fix command from applicable `AGENTS.md`/`CLAUDE.md` instructions and relevant package manifests; do not infer or hardcode a formatter. Prefer a file-scoped invocation when supported, and avoid rewriting unrelated files. If no command is discoverable, warn once with `no format command discovered in repo instructions; skipping`, then continue.",
60
+ ].join('\n\n');
58
61
  const GATE_CHECK_TIMEOUT_MS = 5_000;
59
62
  const GATE_EXEC_TIMEOUT_MS = 15 * 60 * 1_000;
60
63
  const GATE_LIVENESS_INTERVAL_MS = 30_000;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/init/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/init/tools/index.ts"],"names":[],"mappings":"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"}
@@ -26,7 +26,7 @@ import { createInitToolsProjectManagementCommand } from './project-management/in
26
26
  import { installProjectManagement as defaultInstallProjectManagement, } from './project-management/install-project-management.js';
27
27
  import { createInitToolsResearchCommand } from './research/index.js';
28
28
  import { installResearch as defaultInstallResearch, } from './research/install-research.js';
29
- import { BRAINSTORM_SKILLS, DOCS_SKILLS, IDEA_SKILLS, RESEARCH_AGENTS, RESEARCH_SKILLS, UTILITY_SKILLS, resolvePackDefaultScope, } from './shared/skill-manifest.js';
29
+ import { BRAINSTORM_SKILLS, DOCS_SKILLS, IDEA_SKILLS, RESEARCH_AGENTS, RESEARCH_SKILLS, UTILITY_SKILLS, WORKFLOW_AGENTS, WORKFLOW_SCRIPTS, WORKFLOW_SKILLS, WORKFLOW_TEMPLATES, resolvePackDefaultScope, } from './shared/skill-manifest.js';
30
30
  import { createInitToolsUtilityCommand } from './utility/index.js';
31
31
  import { installUtility as defaultInstallUtility, } from './utility/install-utility.js';
32
32
  import { createInitToolsWorkflowsCommand } from './workflows/index.js';
@@ -53,6 +53,10 @@ const USER_ELIGIBLE_PACK_MEMBERS = {
53
53
  skills: DOCS_SKILLS,
54
54
  agents: [],
55
55
  },
56
+ workflows: {
57
+ skills: WORKFLOW_SKILLS,
58
+ agents: WORKFLOW_AGENTS,
59
+ },
56
60
  utility: {
57
61
  skills: UTILITY_SKILLS,
58
62
  agents: [],
@@ -110,6 +114,7 @@ const DEFAULT_DEPENDENCIES = {
110
114
  const USER_ELIGIBLE_PACKS = new Set([
111
115
  'ideas',
112
116
  'docs',
117
+ 'workflows',
113
118
  'utility',
114
119
  'research',
115
120
  'brainstorm',
@@ -241,7 +246,7 @@ function buildPackChoices(installedPackStates) {
241
246
  checked: false,
242
247
  },
243
248
  {
244
- label: `Workflows [project]${installedPackStates.workflows.location === 'not-installed' ? '' : ` (installed: ${formatInstalledLocation(installedPackStates.workflows.location)})`}`,
249
+ label: `Workflows [project|user]${installedPackStates.workflows.location === 'not-installed' ? '' : ` (installed: ${formatInstalledLocation(installedPackStates.workflows.location)})`}`,
245
250
  value: 'workflows',
246
251
  checked: true,
247
252
  },
@@ -275,6 +280,14 @@ async function removePackFromScope(pack, root, dependencies) {
275
280
  for (const agent of members.agents) {
276
281
  await dependencies.removeFile(join(root, '.agents', 'agents', agent));
277
282
  }
283
+ if (pack === 'workflows') {
284
+ for (const template of WORKFLOW_TEMPLATES) {
285
+ await dependencies.removeFile(join(root, '.oat', 'templates', template));
286
+ }
287
+ for (const script of WORKFLOW_SCRIPTS) {
288
+ await dependencies.removeFile(join(root, '.oat', 'scripts', script));
289
+ }
290
+ }
278
291
  }
279
292
  /**
280
293
  * Resolve a possibly-deferred scope-selection signal into a concrete mode.
@@ -311,7 +324,7 @@ async function resolveDeferredGate(scopeSelection, interactive, dependencies) {
311
324
  }
312
325
  async function resolvePackScopes(context, selections, installedPackStates, dependencies) {
313
326
  const scopes = {};
314
- // Workflows is always project-only
327
+ // Packs outside the user-eligible set are project-only.
315
328
  for (const pack of selections) {
316
329
  if (!USER_ELIGIBLE_PACKS.has(pack)) {
317
330
  scopes[pack] = 'project';
@@ -684,50 +697,59 @@ export async function runInitTools(context, dependencies) {
684
697
  }
685
698
  }
686
699
  if (selectedPacks.includes('workflows')) {
687
- affectedScopes.add('project');
688
- const workflowsResult = await dependencies.installWorkflows({
689
- assetsRoot,
690
- targetRoot: projectRoot,
691
- });
692
- for (const skill of workflowsResult.outdatedSkills) {
693
- outdatedSkills.push({
694
- ...skill,
695
- targetRoot: projectRoot,
696
- selectionKey: `${skill.name}:${projectRoot}`,
700
+ const workflowsAdded = addedScopes('workflows');
701
+ for (const targetRoot of packTargets('workflows')) {
702
+ const targetScope = targetRoot === userRoot ? 'user' : 'project';
703
+ if (workflowsAdded.has(targetScope)) {
704
+ affectedScopes.add(targetScope);
705
+ }
706
+ const workflowsResult = await dependencies.installWorkflows({
707
+ assetsRoot,
708
+ targetRoot,
709
+ scope: targetScope,
697
710
  });
698
- }
699
- const resolvedRoot = workflowsResult.resolvedProjectsRoot || '.oat/projects/shared';
700
- const projectsBase = resolvedRoot.replace(/\/[^/]+$/, '');
701
- const PR_ARCHIVE_LOCAL_PATHS = [
702
- `${projectsBase}/**/pr`,
703
- `${projectsBase}/**/reviews/archived`,
704
- ];
705
- const existingConfig = await dependencies.readOatConfig(projectRoot);
706
- const existingLocalPaths = new Set(dependencies.resolveLocalPaths(existingConfig));
707
- const alreadyConfigured = PR_ARCHIVE_LOCAL_PATHS.every((p) => existingLocalPaths.has(p));
708
- if (!alreadyConfigured) {
709
- let makeLocal = true;
710
- if (context.interactive) {
711
- const selected = await dependencies.selectWithAbort('Should shared-project PR directories and archived review history be local-only (gitignored) or version-controlled?', [
712
- {
713
- label: 'Local only (recommended)',
714
- value: 'local',
715
- description: 'PR artifacts and archived reviews stay local; active reviews remain tracked until received',
716
- },
717
- {
718
- label: 'Version controlled',
719
- value: 'tracked',
720
- description: 'PR artifacts and archived reviews are committed to the repo too',
721
- },
722
- ], { interactive: context.interactive });
723
- makeLocal = selected !== 'tracked';
711
+ for (const skill of workflowsResult.outdatedSkills) {
712
+ outdatedSkills.push({
713
+ ...skill,
714
+ targetRoot,
715
+ selectionKey: `${skill.name}:${targetRoot}`,
716
+ });
724
717
  }
725
- if (makeLocal) {
726
- const addResult = await dependencies.addLocalPaths(projectRoot, PR_ARCHIVE_LOCAL_PATHS);
727
- if (addResult.added.length > 0) {
728
- const config = await dependencies.readOatConfig(projectRoot);
729
- const allPaths = dependencies.resolveLocalPaths(config);
730
- await dependencies.applyGitignore(projectRoot, allPaths);
718
+ if (targetScope === 'project') {
719
+ const resolvedRoot = workflowsResult.resolvedProjectsRoot || '.oat/projects/shared';
720
+ const projectsBase = resolvedRoot.replace(/\/[^/]+$/, '');
721
+ const PR_ARCHIVE_LOCAL_PATHS = [
722
+ `${projectsBase}/**/pr`,
723
+ `${projectsBase}/**/reviews/archived`,
724
+ ];
725
+ const existingConfig = await dependencies.readOatConfig(projectRoot);
726
+ const existingLocalPaths = new Set(dependencies.resolveLocalPaths(existingConfig));
727
+ const alreadyConfigured = PR_ARCHIVE_LOCAL_PATHS.every((p) => existingLocalPaths.has(p));
728
+ if (!alreadyConfigured) {
729
+ let makeLocal = true;
730
+ if (context.interactive) {
731
+ const selected = await dependencies.selectWithAbort('Should shared-project PR directories and archived review history be local-only (gitignored) or version-controlled?', [
732
+ {
733
+ label: 'Local only (recommended)',
734
+ value: 'local',
735
+ description: 'PR artifacts and archived reviews stay local; active reviews remain tracked until received',
736
+ },
737
+ {
738
+ label: 'Version controlled',
739
+ value: 'tracked',
740
+ description: 'PR artifacts and archived reviews are committed to the repo too',
741
+ },
742
+ ], { interactive: context.interactive });
743
+ makeLocal = selected !== 'tracked';
744
+ }
745
+ if (makeLocal) {
746
+ const addResult = await dependencies.addLocalPaths(projectRoot, PR_ARCHIVE_LOCAL_PATHS);
747
+ if (addResult.added.length > 0) {
748
+ const config = await dependencies.readOatConfig(projectRoot);
749
+ const allPaths = dependencies.resolveLocalPaths(config);
750
+ await dependencies.applyGitignore(projectRoot, allPaths);
751
+ }
752
+ }
731
753
  }
732
754
  }
733
755
  }
@@ -11,7 +11,7 @@ export interface PackMetadata {
11
11
  }
12
12
  export declare const PACK_METADATA: Record<string, PackMetadata>;
13
13
  export declare function resolvePackDefaultScope(packName: string): 'user' | 'project';
14
- export declare const WORKFLOW_SKILLS: readonly ["oat-project-capture", "oat-project-clear-active", "oat-project-complete", "oat-project-design", "oat-project-dispatch-subagents", "oat-project-discover", "oat-project-document", "oat-project-implement", "oat-project-import-plan", "oat-project-new", "oat-project-next", "oat-project-open", "oat-project-plan", "oat-project-plan-writing", "oat-project-pr-final", "oat-project-pr-progress", "oat-project-progress", "oat-project-promote-spec-driven", "oat-project-quick-start", "oat-project-reconcile", "oat-project-revise", "oat-project-review-provide", "oat-project-review-provide-remote", "oat-project-review-receive", "oat-project-review-receive-remote", "oat-project-spec", "oat-project-split", "oat-project-summary", "oat-repo-knowledge-index", "oat-worktree-bootstrap", "oat-worktree-bootstrap-auto", "oat-wrap-up"];
14
+ export declare const WORKFLOW_SKILLS: readonly ["oat-cursor-cloud-projects", "oat-project-autonomous", "oat-project-capture", "oat-project-clear-active", "oat-project-complete", "oat-project-design", "oat-project-dispatch-subagents", "oat-project-discover", "oat-project-document", "oat-project-implement", "oat-project-import-plan", "oat-project-new", "oat-project-next", "oat-project-open", "oat-project-plan", "oat-project-plan-writing", "oat-project-pr-final", "oat-project-pr-progress", "oat-project-progress", "oat-project-promote-spec-driven", "oat-project-quick-start", "oat-project-reconcile", "oat-project-revise", "oat-project-review-provide", "oat-project-review-provide-remote", "oat-project-review-receive", "oat-project-review-receive-remote", "oat-project-spec", "oat-project-split", "oat-project-summary", "oat-repo-knowledge-index", "oat-worktree-bootstrap", "oat-worktree-bootstrap-auto", "oat-wrap-up"];
15
15
  export declare const WORKFLOW_AGENTS: readonly ["oat-codebase-mapper.md", "oat-phase-implementer.md", "oat-reviewer.md"];
16
16
  export declare const WORKFLOW_TEMPLATES: readonly ["state.md", "discovery.md", "spec.md", "design.md", "plan.md", "implementation.md", "summary.md"];
17
17
  export declare const WORKFLOW_SCRIPTS: readonly ["generate-oat-state.sh", "generate-thin-index.sh", "resolve-tracking.sh"];
@@ -1 +1 @@
1
- {"version":3,"file":"skill-manifest.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/shared/skill-manifest.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgBH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAKtD,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE5E;AAID,eAAO,MAAM,eAAe,+zBAiClB,CAAC;AAEX,eAAO,MAAM,eAAe,oFAIlB,CAAC;AAEX,eAAO,MAAM,kBAAkB,6GAQrB,CAAC;AAEX,eAAO,MAAM,gBAAgB,qFAInB,CAAC;AAIX,eAAO,MAAM,WAAW,2FAKd,CAAC;AAIX,eAAO,MAAM,WAAW,qCAAsC,CAAC;AAI/D,eAAO,MAAM,WAAW,iLAQd,CAAC;AAEX,eAAO,MAAM,YAAY,kCAAmC,CAAC;AAI7D,eAAO,MAAM,cAAc,2NASjB,CAAC;AAIX,eAAO,MAAM,yBAAyB,sHAK5B,CAAC;AAEX,eAAO,MAAM,4BAA4B,yIAQ/B,CAAC;AAEX,eAAO,MAAM,0BAA0B,aAAc,CAAC;AAItD,eAAO,MAAM,iBAAiB,6BAA8B,CAAC;AAI7D,eAAO,MAAM,eAAe,2EAMlB,CAAC;AAEX,eAAO,MAAM,eAAe,qCAAsC,CAAC"}
1
+ {"version":3,"file":"skill-manifest.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/shared/skill-manifest.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgBH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAKtD,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE5E;AAID,eAAO,MAAM,eAAe,s3BAmClB,CAAC;AAEX,eAAO,MAAM,eAAe,oFAIlB,CAAC;AAEX,eAAO,MAAM,kBAAkB,6GAQrB,CAAC;AAEX,eAAO,MAAM,gBAAgB,qFAInB,CAAC;AAIX,eAAO,MAAM,WAAW,2FAKd,CAAC;AAIX,eAAO,MAAM,WAAW,qCAAsC,CAAC;AAI/D,eAAO,MAAM,WAAW,iLAQd,CAAC;AAEX,eAAO,MAAM,YAAY,kCAAmC,CAAC;AAI7D,eAAO,MAAM,cAAc,2NASjB,CAAC;AAIX,eAAO,MAAM,yBAAyB,sHAK5B,CAAC;AAEX,eAAO,MAAM,4BAA4B,yIAQ/B,CAAC;AAEX,eAAO,MAAM,0BAA0B,aAAc,CAAC;AAItD,eAAO,MAAM,iBAAiB,6BAA8B,CAAC;AAI7D,eAAO,MAAM,eAAe,2EAMlB,CAAC;AAEX,eAAO,MAAM,eAAe,qCAAsC,CAAC"}
@@ -16,6 +16,8 @@ export function resolvePackDefaultScope(packName) {
16
16
  }
17
17
  // ── Workflow pack ──────────────────────────────────────────────────
18
18
  export const WORKFLOW_SKILLS = [
19
+ 'oat-cursor-cloud-projects',
20
+ 'oat-project-autonomous',
19
21
  'oat-project-capture',
20
22
  'oat-project-clear-active',
21
23
  'oat-project-complete',
@@ -1,10 +1,11 @@
1
1
  import { type CommandContext, type GlobalOptions } from '../../../../app/command-context.js';
2
2
  import { type PromptContext } from '../../../shared/shared.prompts.js';
3
3
  import { Command } from 'commander';
4
- import { type InstallWorkflowsOptions, type InstallWorkflowsResult } from './install-workflows.js';
4
+ import { type InstallWorkflowsOptions, type InstallWorkflowsResult, type InstallWorkflowsScope } from './install-workflows.js';
5
5
  interface InitToolsWorkflowsDependencies {
6
6
  buildCommandContext: (options: GlobalOptions) => CommandContext;
7
7
  resolveProjectRoot: (cwd: string) => Promise<string>;
8
+ resolveScopeRoot: (scope: InstallWorkflowsScope, cwd: string, home: string) => string;
8
9
  resolveAssetsRoot: () => Promise<string>;
9
10
  installWorkflows: (options: InstallWorkflowsOptions) => Promise<InstallWorkflowsResult>;
10
11
  confirmAction: (message: string, ctx: PromptContext) => Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/workflows/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,iCAAiC,CAAC;AAQzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC5B,MAAM,qBAAqB,CAAC;AAM7B,UAAU,8BAA8B;IACtC,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,gBAAgB,EAAE,CAChB,OAAO,EAAE,uBAAuB,KAC7B,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACrC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AAkGD,wBAAgB,+BAA+B,CAC7C,SAAS,GAAE,OAAO,CAAC,8BAA8B,CAAM,GACtD,OAAO,CAsBT"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/workflows/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,iCAAiC,CAAC;AAQzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAM7B,UAAU,8BAA8B;IACtC,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,gBAAgB,EAAE,CAChB,KAAK,EAAE,qBAAqB,EAC5B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,KACT,MAAM,CAAC;IACZ,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,gBAAgB,EAAE,CAChB,OAAO,EAAE,uBAAuB,KAC7B,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACrC,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AAoGD,wBAAgB,+BAA+B,CAC7C,SAAS,GAAE,OAAO,CAAC,8BAA8B,CAAM,GACtD,OAAO,CAsBT"}
@@ -4,22 +4,22 @@ import { confirmAction, } from '../../../shared/shared.prompts.js';
4
4
  import { readGlobalOptions } from '../../../shared/shared.utils.js';
5
5
  import { canonicalPathsForPack, setInstalledCanonicalPaths, } from '../../../tools/shared/install-sync-context.js';
6
6
  import { resolveAssetsRoot } from '../../../../fs/assets.js';
7
- import { resolveProjectRoot } from '../../../../fs/paths.js';
7
+ import { resolveProjectRoot, resolveScopeRoot } from '../../../../fs/paths.js';
8
8
  import { Command } from 'commander';
9
9
  import { installWorkflows as defaultInstallWorkflows, } from './install-workflows.js';
10
- const PROJECT_SCOPE_ONLY_MESSAGE = 'oat init tools workflows currently supports only --scope project.';
11
10
  const DEFAULT_DEPENDENCIES = {
12
11
  buildCommandContext,
13
12
  resolveProjectRoot,
13
+ resolveScopeRoot,
14
14
  resolveAssetsRoot,
15
15
  installWorkflows: defaultInstallWorkflows,
16
16
  confirmAction,
17
17
  };
18
- function reportSuccess(context, targetRoot, assetsRoot, result) {
18
+ function reportSuccess(context, scope, targetRoot, assetsRoot, result) {
19
19
  if (context.json) {
20
20
  context.logger.json({
21
21
  status: 'ok',
22
- scope: 'project',
22
+ scope,
23
23
  targetRoot,
24
24
  assetsRoot,
25
25
  result,
@@ -27,22 +27,23 @@ function reportSuccess(context, targetRoot, assetsRoot, result) {
27
27
  return;
28
28
  }
29
29
  context.logger.info('Installed workflows tool pack.');
30
+ context.logger.info(`Scope: ${scope}`);
30
31
  context.logger.info(`Target root: ${targetRoot}`);
31
32
  context.logger.info(`Skills: copied=${result.copiedSkills.length}, updated=${result.updatedSkills.length}, skipped=${result.skippedSkills.length}`);
32
33
  context.logger.info(`Agents: copied=${result.copiedAgents.length}, updated=${result.updatedAgents.length}, skipped=${result.skippedAgents.length}`);
33
34
  context.logger.info(`Templates: copied=${result.copiedTemplates.length}, updated=${result.updatedTemplates.length}, skipped=${result.skippedTemplates.length}`);
34
35
  context.logger.info(`Scripts: copied=${result.copiedScripts.length}, updated=${result.updatedScripts.length}, skipped=${result.skippedScripts.length}`);
35
36
  context.logger.info(`Projects root initialized: ${result.projectsRootInitialized ? 'yes' : 'no'}`);
36
- context.logger.info('Run: oat sync --scope project');
37
+ context.logger.info(`Run: oat sync --scope ${scope}`);
37
38
  }
38
39
  async function runInitToolsWorkflows(context, options, dependencies) {
39
40
  try {
40
- if (context.scope === 'user') {
41
- throw new Error(PROJECT_SCOPE_ONLY_MESSAGE);
42
- }
43
- const targetRoot = await dependencies.resolveProjectRoot(context.cwd);
41
+ const scope = context.scope === 'user' ? 'user' : 'project';
42
+ const targetRoot = scope === 'user'
43
+ ? dependencies.resolveScopeRoot('user', context.cwd, context.home)
44
+ : await dependencies.resolveProjectRoot(context.cwd);
44
45
  if (options.force && context.interactive) {
45
- const confirmed = await dependencies.confirmAction('Force overwrite existing workflows assets in project scope?', { interactive: context.interactive });
46
+ const confirmed = await dependencies.confirmAction(`Force overwrite existing workflows assets in ${scope} scope?`, { interactive: context.interactive });
46
47
  if (!confirmed) {
47
48
  if (!context.json) {
48
49
  context.logger.info('Cancelled: no files were overwritten.');
@@ -55,9 +56,10 @@ async function runInitToolsWorkflows(context, options, dependencies) {
55
56
  const result = await dependencies.installWorkflows({
56
57
  assetsRoot,
57
58
  targetRoot,
59
+ scope,
58
60
  force: options.force,
59
61
  });
60
- reportSuccess(context, targetRoot, assetsRoot, result);
62
+ reportSuccess(context, scope, targetRoot, assetsRoot, result);
61
63
  process.exitCode = 0;
62
64
  return true;
63
65
  }
@@ -1,8 +1,10 @@
1
1
  import { WORKFLOW_AGENTS, WORKFLOW_SCRIPTS, WORKFLOW_SKILLS, WORKFLOW_TEMPLATES } from '../../../init/tools/shared/skill-manifest.js';
2
+ export type InstallWorkflowsScope = 'project' | 'user';
2
3
  export { WORKFLOW_AGENTS, WORKFLOW_SCRIPTS, WORKFLOW_SKILLS, WORKFLOW_TEMPLATES, };
3
4
  export interface InstallWorkflowsOptions {
4
5
  assetsRoot: string;
5
6
  targetRoot: string;
7
+ scope?: InstallWorkflowsScope;
6
8
  force?: boolean;
7
9
  }
8
10
  export interface InstallWorkflowsResult {
@@ -1 +1 @@
1
- {"version":3,"file":"install-workflows.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/workflows/install-workflows.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EACnB,MAAM,4CAA4C,CAAC;AAIpD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,kBAAkB,GACnB,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,EAAE,KAAK,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB,CAAC,CAAC;IACH,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,uBAAuB,EAAE,OAAO,CAAC;IACjC,6BAA6B,EAAE,OAAO,CAAC;IACvC,sBAAsB,EAAE,OAAO,CAAC;IAChC,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CA0IjC"}
1
+ {"version":3,"file":"install-workflows.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/workflows/install-workflows.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EACnB,MAAM,4CAA4C,CAAC;AAIpD,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,MAAM,CAAC;AAEvD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,kBAAkB,GACnB,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,EAAE,KAAK,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB,CAAC,CAAC;IACH,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,uBAAuB,EAAE,OAAO,CAAC;IACjC,6BAA6B,EAAE,OAAO,CAAC;IACvC,sBAAsB,EAAE,OAAO,CAAC;IAChC,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,sBAAsB,CAAC,CA+IjC"}
@@ -7,6 +7,7 @@ import { dirExists, ensureDir, fileExists } from '../../../../fs/io.js';
7
7
  export { WORKFLOW_AGENTS, WORKFLOW_SCRIPTS, WORKFLOW_SKILLS, WORKFLOW_TEMPLATES, };
8
8
  export async function installWorkflows(options) {
9
9
  const force = options.force ?? false;
10
+ const scope = options.scope ?? 'project';
10
11
  const result = {
11
12
  copiedSkills: [],
12
13
  updatedSkills: [],
@@ -97,6 +98,9 @@ export async function installWorkflows(options) {
97
98
  result.skippedScripts.push(script);
98
99
  }
99
100
  }
101
+ if (scope === 'user') {
102
+ return result;
103
+ }
100
104
  const projectsRootPath = join(options.targetRoot, '.oat', 'projects-root');
101
105
  const hasProjectsRoot = await fileExists(projectsRootPath);
102
106
  if (!hasProjectsRoot) {
@@ -14,6 +14,7 @@ export interface ScaffoldProjectOptions {
14
14
  */
15
15
  commit?: boolean;
16
16
  env?: NodeJS.ProcessEnv;
17
+ home?: string;
17
18
  today?: string;
18
19
  nowUtc?: string;
19
20
  refreshDashboardCallback?: (repoRoot: string) => void | Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../../../src/commands/project/new/scaffold.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG,OAAO,GAAG,QAAQ,CAAC;AAErE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wBAAwB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvE;AAED;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAC5B,WAAW,GACX,kBAAkB,GAClB,qBAAqB,GACrB,iBAAiB,GACjB,QAAQ,CAAC;AAEb,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,oBAAoB,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAoRD,wBAAsB,eAAe,CACnC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CA4EhC"}
1
+ {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../../../src/commands/project/new/scaffold.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG,OAAO,GAAG,QAAQ,CAAC;AAErE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wBAAwB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvE;AAED;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAC5B,WAAW,GACX,kBAAkB,GAClB,qBAAqB,GACrB,iBAAiB,GACjB,QAAQ,CAAC;AAEb,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,oBAAoB,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA2SD,wBAAsB,eAAe,CACnC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAoFhC"}