@open-agent-toolkit/cli 0.2.36 → 0.2.37

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 (183) hide show
  1. package/assets/bundle-metadata.json +1 -1
  2. package/assets/docs/cli-utilities/backlog-lifecycle.md +18 -0
  3. package/assets/docs/cli-utilities/bootstrap.md +6 -3
  4. package/assets/docs/cli-utilities/config-and-local-state.md +26 -12
  5. package/assets/docs/cli-utilities/configuration.md +36 -13
  6. package/assets/docs/cli-utilities/tool-packs.md +423 -51
  7. package/assets/docs/provider-sync/scope-and-surface.md +4 -1
  8. package/assets/docs/reference/cli-reference.md +5 -3
  9. package/assets/docs/reference/file-locations.md +28 -4
  10. package/assets/docs/reference/troubleshooting.md +132 -2
  11. package/assets/docs/workflows/projects/lifecycle.md +21 -2
  12. package/assets/public-package-versions.json +4 -4
  13. package/assets/scripts/generate-oat-state.sh +441 -0
  14. package/assets/scripts/generate-thin-index.sh +200 -0
  15. package/assets/skills/oat-agent-instructions-analyze/SKILL.md +10 -5
  16. package/assets/skills/oat-agent-instructions-apply/SKILL.md +30 -5
  17. package/assets/skills/oat-brainstorm/SKILL.md +34 -8
  18. package/assets/skills/oat-brainstorm/references/destinations.md +6 -1
  19. package/assets/skills/oat-docs-analyze/SKILL.md +9 -4
  20. package/assets/skills/oat-docs-apply/SKILL.md +6 -3
  21. package/assets/skills/oat-pjm-add-backlog-item/SKILL.md +14 -1
  22. package/assets/skills/oat-pjm-decision/SKILL.md +22 -10
  23. package/assets/skills/oat-pjm-review-backlog/SKILL.md +20 -3
  24. package/assets/skills/oat-pjm-update-repo-reference/SKILL.md +20 -10
  25. package/assets/skills/oat-project-autonomous/references/gate-inventory.md +1 -1
  26. package/assets/skills/oat-project-document/SKILL.md +21 -3
  27. package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +1 -1
  28. package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +1 -1
  29. package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +1 -1
  30. package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +1 -1
  31. package/assets/skills/oat-project-summary/SKILL.md +23 -11
  32. package/assets/skills/oat-repo-knowledge-index/SKILL.md +6 -3
  33. package/dist/commands/backlog/index.d.ts +2 -0
  34. package/dist/commands/backlog/index.d.ts.map +1 -1
  35. package/dist/commands/backlog/index.js +67 -23
  36. package/dist/commands/backlog/new.d.ts +3 -0
  37. package/dist/commands/backlog/new.d.ts.map +1 -1
  38. package/dist/commands/backlog/new.js +8 -21
  39. package/dist/commands/decision/agents-guidance.d.ts.map +1 -1
  40. package/dist/commands/decision/agents-guidance.js +2 -1
  41. package/dist/commands/decision/index.d.ts +2 -0
  42. package/dist/commands/decision/index.d.ts.map +1 -1
  43. package/dist/commands/decision/index.js +19 -3
  44. package/dist/commands/decision/new.d.ts +4 -0
  45. package/dist/commands/decision/new.d.ts.map +1 -1
  46. package/dist/commands/decision/new.js +11 -30
  47. package/dist/commands/doctor/index.d.ts +4 -0
  48. package/dist/commands/doctor/index.d.ts.map +1 -1
  49. package/dist/commands/doctor/index.js +254 -9
  50. package/dist/commands/init/tools/brainstorm/index.d.ts.map +1 -1
  51. package/dist/commands/init/tools/brainstorm/index.js +20 -6
  52. package/dist/commands/init/tools/docs/index.d.ts.map +1 -1
  53. package/dist/commands/init/tools/docs/index.js +4 -1
  54. package/dist/commands/init/tools/ideas/index.d.ts.map +1 -1
  55. package/dist/commands/init/tools/ideas/index.js +4 -1
  56. package/dist/commands/init/tools/index.d.ts +11 -2
  57. package/dist/commands/init/tools/index.d.ts.map +1 -1
  58. package/dist/commands/init/tools/index.js +459 -351
  59. package/dist/commands/init/tools/install-state.d.ts +2 -0
  60. package/dist/commands/init/tools/install-state.d.ts.map +1 -1
  61. package/dist/commands/init/tools/install-state.js +11 -0
  62. package/dist/commands/init/tools/project-management/agents-guidance.d.ts.map +1 -1
  63. package/dist/commands/init/tools/project-management/agents-guidance.js +3 -1
  64. package/dist/commands/init/tools/project-management/index.d.ts +1 -0
  65. package/dist/commands/init/tools/project-management/index.d.ts.map +1 -1
  66. package/dist/commands/init/tools/project-management/index.js +24 -55
  67. package/dist/commands/init/tools/project-management/install-project-management.d.ts +4 -0
  68. package/dist/commands/init/tools/project-management/install-project-management.d.ts.map +1 -1
  69. package/dist/commands/init/tools/project-management/install-project-management.js +4 -1
  70. package/dist/commands/init/tools/research/index.d.ts.map +1 -1
  71. package/dist/commands/init/tools/research/index.js +4 -1
  72. package/dist/commands/init/tools/shared/copy-helpers.d.ts.map +1 -1
  73. package/dist/commands/init/tools/shared/copy-helpers.js +10 -0
  74. package/dist/commands/init/tools/shared/skill-manifest.d.ts +15 -15
  75. package/dist/commands/init/tools/shared/skill-manifest.d.ts.map +1 -1
  76. package/dist/commands/init/tools/shared/skill-manifest.js +17 -122
  77. package/dist/commands/init/tools/utility/index.d.ts.map +1 -1
  78. package/dist/commands/init/tools/utility/index.js +4 -1
  79. package/dist/commands/init/tools/workflows/index.d.ts.map +1 -1
  80. package/dist/commands/init/tools/workflows/index.js +4 -1
  81. package/dist/commands/init/tools/workflows/install-workflows.d.ts.map +1 -1
  82. package/dist/commands/init/tools/workflows/install-workflows.js +2 -4
  83. package/dist/commands/pjm/adoption.d.ts +12 -0
  84. package/dist/commands/pjm/adoption.d.ts.map +1 -0
  85. package/dist/commands/pjm/adoption.js +47 -0
  86. package/dist/commands/pjm/doctor.d.ts +3 -2
  87. package/dist/commands/pjm/doctor.d.ts.map +1 -1
  88. package/dist/commands/pjm/doctor.js +28 -13
  89. package/dist/commands/pjm/index.d.ts +2 -0
  90. package/dist/commands/pjm/index.d.ts.map +1 -1
  91. package/dist/commands/pjm/index.js +11 -3
  92. package/dist/commands/pjm/init.d.ts +3 -0
  93. package/dist/commands/pjm/init.d.ts.map +1 -1
  94. package/dist/commands/pjm/init.js +37 -32
  95. package/dist/commands/pjm/migrate.d.ts +1 -0
  96. package/dist/commands/pjm/migrate.d.ts.map +1 -1
  97. package/dist/commands/pjm/migrate.js +1 -0
  98. package/dist/commands/pjm/template-source.d.ts +14 -0
  99. package/dist/commands/pjm/template-source.d.ts.map +1 -0
  100. package/dist/commands/pjm/template-source.js +56 -0
  101. package/dist/commands/remove/skills/remove-skills.d.ts.map +1 -1
  102. package/dist/commands/remove/skills/remove-skills.js +10 -19
  103. package/dist/commands/status/index.d.ts +5 -0
  104. package/dist/commands/status/index.d.ts.map +1 -1
  105. package/dist/commands/status/index.js +203 -2
  106. package/dist/commands/sync/index.d.ts.map +1 -1
  107. package/dist/commands/sync/index.js +40 -7
  108. package/dist/commands/sync/sync.types.d.ts +4 -0
  109. package/dist/commands/sync/sync.types.d.ts.map +1 -1
  110. package/dist/commands/tools/has/has-pack.d.ts +11 -2
  111. package/dist/commands/tools/has/has-pack.d.ts.map +1 -1
  112. package/dist/commands/tools/has/has-pack.js +33 -20
  113. package/dist/commands/tools/index.d.ts.map +1 -1
  114. package/dist/commands/tools/index.js +3 -1
  115. package/dist/commands/tools/info/info-tool.d.ts +3 -0
  116. package/dist/commands/tools/info/info-tool.d.ts.map +1 -1
  117. package/dist/commands/tools/info/info-tool.js +29 -4
  118. package/dist/commands/tools/list/list-tools.d.ts +3 -0
  119. package/dist/commands/tools/list/list-tools.d.ts.map +1 -1
  120. package/dist/commands/tools/list/list-tools.js +31 -4
  121. package/dist/commands/tools/migrate/index.d.ts +26 -0
  122. package/dist/commands/tools/migrate/index.d.ts.map +1 -0
  123. package/dist/commands/tools/migrate/index.js +312 -0
  124. package/dist/commands/tools/migrate/migrate-pack.d.ts +81 -0
  125. package/dist/commands/tools/migrate/migrate-pack.d.ts.map +1 -0
  126. package/dist/commands/tools/migrate/migrate-pack.js +324 -0
  127. package/dist/commands/tools/outdated/outdated-tools.d.ts +11 -0
  128. package/dist/commands/tools/outdated/outdated-tools.d.ts.map +1 -1
  129. package/dist/commands/tools/outdated/outdated-tools.js +33 -5
  130. package/dist/commands/tools/remove/index.d.ts.map +1 -1
  131. package/dist/commands/tools/remove/index.js +73 -20
  132. package/dist/commands/tools/remove/remove-tools.d.ts +28 -0
  133. package/dist/commands/tools/remove/remove-tools.d.ts.map +1 -1
  134. package/dist/commands/tools/remove/remove-tools.js +156 -26
  135. package/dist/commands/tools/shared/apply-pack-reconcile.d.ts +41 -0
  136. package/dist/commands/tools/shared/apply-pack-reconcile.d.ts.map +1 -0
  137. package/dist/commands/tools/shared/apply-pack-reconcile.js +126 -0
  138. package/dist/commands/tools/shared/auto-sync.d.ts +5 -2
  139. package/dist/commands/tools/shared/auto-sync.d.ts.map +1 -1
  140. package/dist/commands/tools/shared/auto-sync.js +1 -0
  141. package/dist/commands/tools/shared/content-digest.d.ts +3 -0
  142. package/dist/commands/tools/shared/content-digest.d.ts.map +1 -0
  143. package/dist/commands/tools/shared/content-digest.js +57 -0
  144. package/dist/commands/tools/shared/format-pack-inventory.d.ts +3 -0
  145. package/dist/commands/tools/shared/format-pack-inventory.d.ts.map +1 -0
  146. package/dist/commands/tools/shared/format-pack-inventory.js +21 -0
  147. package/dist/commands/tools/shared/install-sync-context.d.ts.map +1 -1
  148. package/dist/commands/tools/shared/install-sync-context.js +2 -25
  149. package/dist/commands/tools/shared/pack-inventory.d.ts +46 -0
  150. package/dist/commands/tools/shared/pack-inventory.d.ts.map +1 -0
  151. package/dist/commands/tools/shared/pack-inventory.js +207 -0
  152. package/dist/commands/tools/shared/pack-lifecycle.d.ts +34 -0
  153. package/dist/commands/tools/shared/pack-lifecycle.d.ts.map +1 -0
  154. package/dist/commands/tools/shared/pack-lifecycle.js +67 -0
  155. package/dist/commands/tools/shared/pack-manifest.d.ts +11 -0
  156. package/dist/commands/tools/shared/pack-manifest.d.ts.map +1 -0
  157. package/dist/commands/tools/shared/pack-manifest.js +384 -0
  158. package/dist/commands/tools/shared/pack-paths.d.ts +21 -0
  159. package/dist/commands/tools/shared/pack-paths.d.ts.map +1 -0
  160. package/dist/commands/tools/shared/pack-paths.js +35 -0
  161. package/dist/commands/tools/shared/pack-reconcile.d.ts +64 -0
  162. package/dist/commands/tools/shared/pack-reconcile.d.ts.map +1 -0
  163. package/dist/commands/tools/shared/pack-reconcile.js +158 -0
  164. package/dist/commands/tools/shared/project-tools-config.d.ts.map +1 -1
  165. package/dist/commands/tools/shared/project-tools-config.js +12 -38
  166. package/dist/commands/tools/shared/scan-tools.js +2 -2
  167. package/dist/commands/tools/shared/scoped-pack-intent.d.ts +34 -0
  168. package/dist/commands/tools/shared/scoped-pack-intent.d.ts.map +1 -0
  169. package/dist/commands/tools/shared/scoped-pack-intent.js +116 -0
  170. package/dist/commands/tools/shared/types.d.ts +22 -0
  171. package/dist/commands/tools/shared/types.d.ts.map +1 -1
  172. package/dist/commands/tools/update/index.d.ts.map +1 -1
  173. package/dist/commands/tools/update/index.js +30 -5
  174. package/dist/commands/tools/update/update-tools.d.ts +9 -1
  175. package/dist/commands/tools/update/update-tools.d.ts.map +1 -1
  176. package/dist/commands/tools/update/update-tools.js +176 -64
  177. package/dist/config/oat-config.d.ts +6 -0
  178. package/dist/config/oat-config.d.ts.map +1 -1
  179. package/dist/config/oat-config.js +49 -20
  180. package/dist/fs/paths.d.ts +12 -0
  181. package/dist/fs/paths.d.ts.map +1 -1
  182. package/dist/fs/paths.js +87 -1
  183. package/package.json +2 -2
@@ -1,3 +1,4 @@
1
+ import type { PackInventory } from '../../tools/shared/pack-inventory.js';
1
2
  import type { PackName, ToolInfo } from '../../tools/shared/types.js';
2
3
  export type PackInstallLocation = 'not-installed' | 'project' | 'user' | 'both';
3
4
  export interface PackInstallState {
@@ -7,4 +8,5 @@ export interface PackInstallState {
7
8
  }
8
9
  export declare function resolvePackInstallLocation(project: boolean, user: boolean): PackInstallLocation;
9
10
  export declare function buildPackInstallStateMap<TPack extends PackName>(packs: readonly TPack[], tools: ToolInfo[]): Record<TPack, PackInstallState>;
11
+ export declare function buildPackInstallStateMapFromInventory<TPack extends PackName>(packs: readonly TPack[], inventories: readonly PackInventory[]): Record<TPack, PackInstallState>;
10
12
  //# sourceMappingURL=install-state.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"install-state.d.ts","sourceRoot":"","sources":["../../../../src/commands/init/tools/install-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAEvE,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAEhF,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,mBAAmB,CAAC;CAC/B;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,OAAO,GACZ,mBAAmB,CAcrB;AAED,wBAAgB,wBAAwB,CAAC,KAAK,SAAS,QAAQ,EAC7D,KAAK,EAAE,SAAS,KAAK,EAAE,EACvB,KAAK,EAAE,QAAQ,EAAE,GAChB,MAAM,CAAC,KAAK,EAAE,gBAAgB,CAAC,CA8BjC"}
1
+ {"version":3,"file":"install-state.d.ts","sourceRoot":"","sources":["../../../../src/commands/init/tools/install-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAEvE,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAEhF,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,mBAAmB,CAAC;CAC/B;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,OAAO,GACZ,mBAAmB,CAcrB;AAED,wBAAgB,wBAAwB,CAAC,KAAK,SAAS,QAAQ,EAC7D,KAAK,EAAE,SAAS,KAAK,EAAE,EACvB,KAAK,EAAE,QAAQ,EAAE,GAChB,MAAM,CAAC,KAAK,EAAE,gBAAgB,CAAC,CA8BjC;AAED,wBAAgB,qCAAqC,CAAC,KAAK,SAAS,QAAQ,EAC1E,KAAK,EAAE,SAAS,KAAK,EAAE,EACvB,WAAW,EAAE,SAAS,aAAa,EAAE,GACpC,MAAM,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAgBjC"}
@@ -34,3 +34,14 @@ export function buildPackInstallStateMap(packs, tools) {
34
34
  }
35
35
  return state;
36
36
  }
37
+ export function buildPackInstallStateMapFromInventory(packs, inventories) {
38
+ return Object.fromEntries(packs.map((pack) => {
39
+ const inventory = inventories.find((candidate) => candidate.pack === pack);
40
+ const project = inventory?.placement === 'project' || inventory?.placement === 'both';
41
+ const user = inventory?.placement === 'user' || inventory?.placement === 'both';
42
+ return [
43
+ pack,
44
+ { project, user, location: resolvePackInstallLocation(project, user) },
45
+ ];
46
+ }));
47
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"agents-guidance.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/project-management/agents-guidance.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qCAAqC,uBAAuB,CAAC;AAE1E,wBAAgB,uCAAuC,IAAI,MAAM,CAShE"}
1
+ {"version":3,"file":"agents-guidance.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/project-management/agents-guidance.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qCAAqC,uBAAuB,CAAC;AAE1E,wBAAgB,uCAAuC,IAAI,MAAM,CAWhE"}
@@ -3,9 +3,11 @@ export function buildProjectManagementAgentsSectionBody() {
3
3
  return [
4
4
  '### Project Management',
5
5
  '',
6
+ '- Installed project-management tools provide capability; they do not prove that this repository adopted PJM.',
7
+ '- Run `oat pjm doctor --json` and inspect `adoption.state` before any PJM write.',
6
8
  '- Repository planning and durable context live under `.oat/repo/`.',
7
9
  '- Consult it when prioritizing or planning work, checking the backlog, starting or closing tracked work, or looking for established repository context.',
8
10
  '- Start with `.oat/repo/AGENTS.md`; it routes to `pjm/` for active state and `reference/` for durable records.',
9
- '- If the surface is missing, initialize it with `oat pjm init`.',
11
+ '- If adoption is absent or partial, stop and initialize it with `oat pjm init`.',
10
12
  ].join('\n');
11
13
  }
@@ -4,6 +4,7 @@ import { type InstallProjectManagementOptions, type InstallProjectManagementResu
4
4
  interface InitToolsProjectManagementDependencies {
5
5
  buildCommandContext: (options: GlobalOptions) => CommandContext;
6
6
  resolveProjectRoot: (cwd: string) => Promise<string>;
7
+ resolveScopeRoot: (scope: 'project' | 'user', cwd: string, home: string) => string;
7
8
  resolveAssetsRoot: () => Promise<string>;
8
9
  installProjectManagement: (options: InstallProjectManagementOptions) => Promise<InstallProjectManagementResult>;
9
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/project-management/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAgB9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,OAAO,EAEL,KAAK,+BAA+B,EACpC,KAAK,8BAA8B,EACpC,MAAM,8BAA8B,CAAC;AAMtC,UAAU,sCAAsC;IAC9C,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,wBAAwB,EAAE,CACxB,OAAO,EAAE,+BAA+B,KACrC,OAAO,CAAC,8BAA8B,CAAC,CAAC;CAC9C;AASD,wBAAgB,uCAAuC,CACrD,SAAS,GAAE,OAAO,CAAC,sCAAsC,CAAM,GAC9D,OAAO,CAwIT"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/project-management/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAS9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAEL,KAAK,+BAA+B,EACpC,KAAK,8BAA8B,EACpC,MAAM,8BAA8B,CAAC;AAMtC,UAAU,sCAAsC;IAC9C,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,SAAS,GAAG,MAAM,EACzB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,KACT,MAAM,CAAC;IACZ,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,wBAAwB,EAAE,CACxB,OAAO,EAAE,+BAA+B,KACrC,OAAO,CAAC,8BAA8B,CAAC,CAAC;CAC9C;AAUD,wBAAgB,uCAAuC,CACrD,SAAS,GAAE,OAAO,CAAC,sCAAsC,CAAM,GAC9D,OAAO,CA4FT"}
@@ -1,16 +1,15 @@
1
1
  import { buildCommandContext, } from '../../../../app/command-context.js';
2
- import { buildDecisionAgentsSectionBody, DECISION_AGENTS_SECTION_KEY, } from '../../../decision/agents-guidance.js';
3
- import { upsertAgentsMdSection, } from '../../../shared/agents-md.js';
2
+ import { withScopeOption } from '../../../shared/scope-option.js';
4
3
  import { readGlobalOptions } from '../../../shared/shared.utils.js';
5
4
  import { canonicalPathsForPack, setInstalledCanonicalPaths, } from '../../../tools/shared/install-sync-context.js';
6
5
  import { resolveAssetsRoot } from '../../../../fs/assets.js';
7
- import { resolveProjectRoot } from '../../../../fs/paths.js';
6
+ import { resolveProjectRoot, resolveScopeRoot } from '../../../../fs/paths.js';
8
7
  import { Command } from 'commander';
9
- import { buildProjectManagementAgentsSectionBody, PROJECT_MANAGEMENT_AGENTS_SECTION_KEY, } from './agents-guidance.js';
10
8
  import { installProjectManagement as defaultInstallProjectManagement, } from './install-project-management.js';
11
9
  const DEFAULT_DEPENDENCIES = {
12
10
  buildCommandContext,
13
11
  resolveProjectRoot,
12
+ resolveScopeRoot,
14
13
  resolveAssetsRoot,
15
14
  installProjectManagement: defaultInstallProjectManagement,
16
15
  };
@@ -19,64 +18,44 @@ export function createInitToolsProjectManagementCommand(overrides = {}) {
19
18
  ...DEFAULT_DEPENDENCIES,
20
19
  ...overrides,
21
20
  };
22
- return new Command('project-management')
21
+ return withScopeOption(new Command('project-management'))
23
22
  .description('Install OAT project-management skills and templates')
24
23
  .option('--force', 'Overwrite existing files where applicable')
25
24
  .action(async (options, command) => {
26
- // project-management always installs at project scope. If the caller
27
- // explicitly passed a conflicting --scope on an ancestor (init or tools
28
- // install), reject it rather than silently ignoring it. A matching
29
- // --scope project, or no explicit --scope, proceeds unchanged.
30
- if (command.getOptionValueSourceWithGlobals('scope') === 'cli') {
31
- const opts = command.optsWithGlobals();
32
- if (opts.scope !== 'project') {
33
- const context = dependencies.buildCommandContext(readGlobalOptions(command));
34
- const msg = 'the project-management pack always installs at project scope; remove --scope or pass --scope project';
35
- if (context.json) {
36
- context.logger.json({ status: 'error', message: msg });
37
- }
38
- else {
39
- context.logger.error(msg);
40
- }
41
- process.exitCode = 1;
42
- return;
43
- }
44
- }
45
25
  let didInstall = false;
46
26
  try {
47
27
  const context = dependencies.buildCommandContext(readGlobalOptions(command));
48
- const targetRoot = await dependencies.resolveProjectRoot(context.cwd);
28
+ const optionScope = command.optsWithGlobals()
29
+ .scope;
30
+ const scope = command.getOptionValueSourceWithGlobals('scope') === 'cli' &&
31
+ (optionScope === 'project' || optionScope === 'user')
32
+ ? optionScope
33
+ : context.scope === 'project' || context.scope === 'user'
34
+ ? context.scope
35
+ : 'user';
36
+ const targetRoot = scope === 'project'
37
+ ? await dependencies.resolveProjectRoot(context.cwd)
38
+ : dependencies.resolveScopeRoot('user', context.cwd, context.home);
49
39
  const assetsRoot = await dependencies.resolveAssetsRoot();
50
40
  const result = await dependencies.installProjectManagement({
51
41
  assetsRoot,
52
42
  targetRoot,
53
43
  force: options.force,
44
+ scope,
54
45
  });
55
46
  didInstall = true;
56
- let projectManagementGuidanceAction;
57
- let decisionGuidanceAction;
58
- let agentsGuidanceWarning;
59
- try {
60
- const projectManagementGuidanceResult = await upsertAgentsMdSection(targetRoot, PROJECT_MANAGEMENT_AGENTS_SECTION_KEY, buildProjectManagementAgentsSectionBody());
61
- projectManagementGuidanceAction =
62
- projectManagementGuidanceResult.action;
63
- const decisionGuidanceResult = await upsertAgentsMdSection(targetRoot, DECISION_AGENTS_SECTION_KEY, buildDecisionAgentsSectionBody());
64
- decisionGuidanceAction = decisionGuidanceResult.action;
65
- }
66
- catch (error) {
67
- const message = error instanceof Error ? error.message : String(error);
68
- agentsGuidanceWarning = `Could not update AGENTS.md project-management guidance: ${message}`;
69
- }
70
47
  if (context.json) {
71
48
  context.logger.json({
72
49
  status: 'ok',
73
- scope: 'project',
50
+ scope,
74
51
  targetRoot,
75
52
  assetsRoot,
76
53
  result,
77
- ...(agentsGuidanceWarning === undefined
78
- ? {}
79
- : { warnings: [agentsGuidanceWarning] }),
54
+ adoption: {
55
+ owner: 'repository',
56
+ action: 'oat pjm init',
57
+ changed: false,
58
+ },
80
59
  });
81
60
  }
82
61
  else {
@@ -84,18 +63,8 @@ export function createInitToolsProjectManagementCommand(overrides = {}) {
84
63
  context.logger.info(`Target root: ${targetRoot}`);
85
64
  context.logger.info(`Skills: copied=${result.copiedSkills.length}, updated=${result.updatedSkills.length}, skipped=${result.skippedSkills.length}`);
86
65
  context.logger.info(`Templates: copied=${result.copiedTemplates.length}, updated=${result.updatedTemplates.length}, skipped=${result.skippedTemplates.length}`);
87
- if (projectManagementGuidanceAction !== undefined &&
88
- projectManagementGuidanceAction !== 'no-change') {
89
- context.logger.info(`AGENTS.md project-management section ${projectManagementGuidanceAction}.`);
90
- }
91
- if (decisionGuidanceAction !== undefined &&
92
- decisionGuidanceAction !== 'no-change') {
93
- context.logger.info(`AGENTS.md decisions section ${decisionGuidanceAction}.`);
94
- }
95
- if (agentsGuidanceWarning !== undefined) {
96
- context.logger.warn(agentsGuidanceWarning);
97
- }
98
- context.logger.info('Run: oat sync --scope project');
66
+ context.logger.info('Repository adoption is unchanged. Run `oat pjm init` in each repository that should use PJM.');
67
+ context.logger.info(`Run: oat sync --scope ${scope}`);
99
68
  }
100
69
  process.exitCode = 0;
101
70
  }
@@ -1,11 +1,15 @@
1
1
  import { PROJECT_MANAGEMENT_SCRIPTS, PROJECT_MANAGEMENT_SKILLS, PROJECT_MANAGEMENT_TEMPLATES } from '../../../init/tools/shared/skill-manifest.js';
2
+ import type { ConcreteScope } from '../../../../shared/types.js';
2
3
  export { PROJECT_MANAGEMENT_SCRIPTS, PROJECT_MANAGEMENT_SKILLS, PROJECT_MANAGEMENT_TEMPLATES, };
3
4
  export interface InstallProjectManagementOptions {
4
5
  assetsRoot: string;
5
6
  targetRoot: string;
6
7
  force?: boolean;
8
+ scope?: ConcreteScope;
7
9
  }
8
10
  export interface InstallProjectManagementResult {
11
+ scope: ConcreteScope;
12
+ targetRoot: string;
9
13
  copiedSkills: string[];
10
14
  updatedSkills: string[];
11
15
  skippedSkills: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"install-project-management.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/project-management/install-project-management.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,4BAA4B,EAC7B,MAAM,4CAA4C,CAAC;AAEpD,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,4BAA4B,GAC7B,CAAC;AAEF,MAAM,WAAW,+BAA+B;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,8BAA8B;IAC7C,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,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,8BAA8B,CAAC,CAoDzC"}
1
+ {"version":3,"file":"install-project-management.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/project-management/install-project-management.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,4BAA4B,EAC7B,MAAM,4CAA4C,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,4BAA4B,GAC7B,CAAC;AAEF,MAAM,WAAW,+BAA+B;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,8BAA8B;IAC7C,KAAK,EAAE,aAAa,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,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,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,8BAA8B,CAAC,CA2DzC"}
@@ -4,7 +4,10 @@ import { PROJECT_MANAGEMENT_SCRIPTS, PROJECT_MANAGEMENT_SKILLS, PROJECT_MANAGEME
4
4
  export { PROJECT_MANAGEMENT_SCRIPTS, PROJECT_MANAGEMENT_SKILLS, PROJECT_MANAGEMENT_TEMPLATES, };
5
5
  export async function installProjectManagement(options) {
6
6
  const force = options.force ?? false;
7
+ const scope = options.scope ?? 'user';
7
8
  const result = {
9
+ scope,
10
+ targetRoot: options.targetRoot,
8
11
  copiedSkills: [],
9
12
  updatedSkills: [],
10
13
  skippedSkills: [],
@@ -37,7 +40,7 @@ export async function installProjectManagement(options) {
37
40
  for (const template of PROJECT_MANAGEMENT_TEMPLATES) {
38
41
  const source = join(options.assetsRoot, 'templates', template);
39
42
  const destination = join(options.targetRoot, '.oat', 'templates', template);
40
- const copyStatus = await copyFileWithStatus(source, destination, force);
43
+ const copyStatus = await copyFileWithStatus(source, destination, scope === 'user' ? force : false);
41
44
  if (copyStatus === 'copied') {
42
45
  result.copiedTemplates.push(template);
43
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/research/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAEnB,MAAM,iCAAiC,CAAC;AASzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAG3B,MAAM,oBAAoB,CAAC;AAM5B,KAAK,aAAa,GAAG,SAAS,GAAG,MAAM,CAAC;AAExC,UAAU,6BAA6B;IACrC,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,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9E,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,eAAe,EAAE,CACf,OAAO,EAAE,sBAAsB,KAC5B,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACpC,mBAAmB,EAAE,CAAC,CAAC,SAAS,MAAM,EACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAC/B,GAAG,EAAE,aAAa,KACf,OAAO,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACzB,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AA0ID,wBAAgB,8BAA8B,CAC5C,SAAS,GAAE,OAAO,CAAC,6BAA6B,CAAM,GACrD,OAAO,CAeT"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/research/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAEnB,MAAM,iCAAiC,CAAC;AAUzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAG3B,MAAM,oBAAoB,CAAC;AAM5B,KAAK,aAAa,GAAG,SAAS,GAAG,MAAM,CAAC;AAExC,UAAU,6BAA6B;IACrC,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,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9E,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,eAAe,EAAE,CACf,OAAO,EAAE,sBAAsB,KAC5B,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACpC,mBAAmB,EAAE,CAAC,CAAC,SAAS,MAAM,EACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAC/B,GAAG,EAAE,aAAa,KACf,OAAO,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACzB,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AA4ID,wBAAgB,8BAA8B,CAC5C,SAAS,GAAE,OAAO,CAAC,6BAA6B,CAAM,GACrD,OAAO,CAeT"}
@@ -3,6 +3,7 @@ import { withScopeOption } from '../../../shared/scope-option.js';
3
3
  import { confirmAction, selectManyWithAbort, } from '../../../shared/shared.prompts.js';
4
4
  import { readGlobalOptions } from '../../../shared/shared.utils.js';
5
5
  import { canonicalAgentPaths, canonicalSkillPaths, setInstalledCanonicalPaths, } from '../../../tools/shared/install-sync-context.js';
6
+ import { getPackDefinition } from '../../../tools/shared/pack-manifest.js';
6
7
  import { resolveAssetsRoot } from '../../../../fs/assets.js';
7
8
  import { resolveProjectRoot, resolveScopeRoot } from '../../../../fs/paths.js';
8
9
  import { Command } from 'commander';
@@ -17,7 +18,9 @@ const DEFAULT_DEPENDENCIES = {
17
18
  confirmAction,
18
19
  };
19
20
  function resolveScope(context) {
20
- return context.scope === 'user' ? 'user' : 'project';
21
+ return context.scope === 'project' || context.scope === 'user'
22
+ ? context.scope
23
+ : getPackDefinition('research').defaultScope;
21
24
  }
22
25
  function reportSuccess(context, scope, targetRoot, assetsRoot, selectedSkills, result) {
23
26
  if (context.json) {
@@ -1 +1 @@
1
- {"version":3,"file":"copy-helpers.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/shared/copy-helpers.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAC1D,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,UAAU,CAAC;AAEzD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAwBD,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE/D;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,UAAU,CAAC,CAiBrB;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,UAAU,CAAC,CAerB;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,UAAU,CAAC,CAyBrB"}
1
+ {"version":3,"file":"copy-helpers.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/shared/copy-helpers.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAC1D,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,UAAU,CAAC;AAEzD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAwBD,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE/D;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,UAAU,CAAC,CAsBrB;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,UAAU,CAAC,CAkBrB;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,UAAU,CAAC,CA8BrB"}
@@ -2,6 +2,7 @@ import { chmod, readdir, rm } from 'node:fs/promises';
2
2
  import { join } from 'node:path';
3
3
  import { compareVersions } from '../../../init/tools/shared/version.js';
4
4
  import { getSkillVersion } from '../../../shared/frontmatter.js';
5
+ import { digestDirectory, digestFile, } from '../../../tools/shared/content-digest.js';
5
6
  import { copyDirectory, copySingleFile, dirExists, fileExists } from '../../../../fs/io.js';
6
7
  async function chmodFilesExecutable(directory) {
7
8
  const entries = await readdir(directory, { withFileTypes: true });
@@ -30,6 +31,9 @@ export async function copyDirWithStatus(source, destination, force) {
30
31
  return 'skipped';
31
32
  }
32
33
  if (exists && force) {
34
+ if ((await digestDirectory(source)) === (await digestDirectory(destination))) {
35
+ return 'skipped';
36
+ }
33
37
  await rm(destination, { recursive: true, force: true });
34
38
  await copyDirectory(source, destination);
35
39
  await ensureNestedScriptsExecutable(destination);
@@ -45,6 +49,9 @@ export async function copyFileWithStatus(source, destination, force) {
45
49
  return 'skipped';
46
50
  }
47
51
  if (exists && force) {
52
+ if ((await digestFile(source)) === (await digestFile(destination))) {
53
+ return 'skipped';
54
+ }
48
55
  await rm(destination, { recursive: true, force: true });
49
56
  await copySingleFile(source, destination);
50
57
  return 'updated';
@@ -60,6 +67,9 @@ export async function copyDirWithVersionCheck(source, destination, force) {
60
67
  return { status: 'copied' };
61
68
  }
62
69
  if (force) {
70
+ if ((await digestDirectory(source)) === (await digestDirectory(destination))) {
71
+ return { status: 'skipped' };
72
+ }
63
73
  await rm(destination, { recursive: true, force: true });
64
74
  await copyDirectory(source, destination);
65
75
  await ensureNestedScriptsExecutable(destination);
@@ -11,19 +11,19 @@ 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-cursor-cloud-projects', 'oat-explainer-kit', '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-retro', 'oat-project-retro-file', '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-wave-execute', 'oat-wave-program', 'oat-wrap-up'];
15
- export declare const WORKFLOW_AGENTS: readonly ['oat-codebase-mapper.md', 'oat-phase-implementer.md', 'oat-reviewer.md'];
16
- export declare const WORKFLOW_TEMPLATES: readonly ['state.md', 'discovery.md', 'spec.md', 'design.md', 'plan.md', 'implementation.md', 'summary.md', 'project-log.md', 'project-retro.md'];
17
- export declare const WORKFLOW_SCRIPTS: readonly ['generate-oat-state.sh', 'generate-thin-index.sh', 'resolve-tracking.sh'];
18
- export declare const IDEA_SKILLS: readonly ['oat-idea-new', 'oat-idea-ideate', 'oat-idea-summarize', 'oat-idea-scratchpad'];
19
- export declare const CORE_SKILLS: readonly ['oat-docs', 'oat-doctor'];
20
- export declare const DOCS_SKILLS: readonly ['authoring-docs', 'oat-agent-instructions-analyze', 'oat-agent-instructions-apply', 'oat-docs-analyze', 'oat-docs-apply', 'oat-docs-authoring', 'oat-docs-bootstrap'];
21
- export declare const DOCS_SCRIPTS: readonly ['resolve-tracking.sh'];
22
- export declare const UTILITY_SKILLS: readonly ['create-agnostic-skill', 'explainer-kit', 'oat-dispatch-subagents', 'subagent-orchestration', 'oat-repo-improve', 'oat-repo-maintainability-review', 'oat-review-provide', 'oat-review-provide-remote', 'oat-review-receive', 'oat-review-receive-remote'];
23
- export declare const PROJECT_MANAGEMENT_SKILLS: readonly ['oat-pjm-add-backlog-item', 'oat-pjm-decision', 'oat-pjm-update-repo-reference', 'oat-pjm-review-backlog'];
24
- export declare const PROJECT_MANAGEMENT_TEMPLATES: readonly ['backlog-item.md', 'roadmap.md', 'current-state.md', 'decision.md', 'repo-agents.md', 'pjm-agents.md', 'reference-agents.md'];
25
- export declare const PROJECT_MANAGEMENT_SCRIPTS: readonly [];
26
- export declare const BRAINSTORM_SKILLS: readonly ['oat-brainstorm'];
27
- export declare const RESEARCH_SKILLS: readonly ['analyze', 'compare', 'deep-research', 'skeptic', 'synthesize'];
28
- export declare const RESEARCH_AGENTS: readonly ['skeptical-evaluator.md'];
14
+ export declare const WORKFLOW_SKILLS: string[];
15
+ export declare const WORKFLOW_AGENTS: string[];
16
+ export declare const WORKFLOW_TEMPLATES: string[];
17
+ export declare const WORKFLOW_SCRIPTS: string[];
18
+ export declare const IDEA_SKILLS: string[];
19
+ export declare const CORE_SKILLS: string[];
20
+ export declare const DOCS_SKILLS: string[];
21
+ export declare const DOCS_SCRIPTS: string[];
22
+ export declare const UTILITY_SKILLS: string[];
23
+ export declare const PROJECT_MANAGEMENT_SKILLS: string[];
24
+ export declare const PROJECT_MANAGEMENT_TEMPLATES: string[];
25
+ export declare const PROJECT_MANAGEMENT_SCRIPTS: string[];
26
+ export declare const BRAINSTORM_SKILLS: string[];
27
+ export declare const RESEARCH_SKILLS: string[];
28
+ export declare const RESEARCH_AGENTS: string[];
29
29
  //# sourceMappingURL=skill-manifest.d.ts.map
@@ -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,YAC1B,2BAA2B,EAC3B,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,EACtB,oBAAoB,EACpB,gCAAgC,EAChC,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,yBAAyB,EACzB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,0BAA0B,EAC1B,sBAAsB,EACtB,yBAAyB,EACzB,sBAAsB,EACtB,iCAAiC,EACjC,yBAAyB,EACzB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,oBAAoB,EACpB,4BAA4B,EAC5B,mCAAmC,EACnC,4BAA4B,EAC5B,mCAAmC,EACnC,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,0BAA0B,EAC1B,wBAAwB,EACxB,6BAA6B,EAC7B,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,CACL,CAAC;AAEX,eAAO,MAAM,eAAe,YAC1B,wBAAwB,EACxB,0BAA0B,EAC1B,iBAAiB,CACT,CAAC;AAEX,eAAO,MAAM,kBAAkB,YAC7B,UAAU,EACV,cAAc,EACd,SAAS,EACT,WAAW,EACX,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,CACV,CAAC;AAEX,eAAO,MAAM,gBAAgB,YAC3B,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,CACb,CAAC;AAIX,eAAO,MAAM,WAAW,YACtB,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,CACb,CAAC;AAIX,eAAO,MAAM,WAAW,YAAI,UAAU,EAAE,YAAY,CAAU,CAAC;AAI/D,eAAO,MAAM,WAAW,YACtB,gBAAgB,EAChB,gCAAgC,EAChC,8BAA8B,EAC9B,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,CACZ,CAAC;AAEX,eAAO,MAAM,YAAY,YAAI,qBAAqB,CAAU,CAAC;AAI7D,eAAO,MAAM,cAAc,YACzB,uBAAuB,EACvB,eAAe,EACf,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,iCAAiC,EACjC,oBAAoB,EACpB,2BAA2B,EAC3B,oBAAoB,EACpB,2BAA2B,CACnB,CAAC;AAIX,eAAO,MAAM,yBAAyB,YACpC,0BAA0B,EAC1B,kBAAkB,EAClB,+BAA+B,EAC/B,wBAAwB,CAChB,CAAC;AAEX,eAAO,MAAM,4BAA4B,YACvC,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,qBAAqB,CACb,CAAC;AAEX,eAAO,MAAM,0BAA0B,aAAc,CAAC;AAItD,eAAO,MAAM,iBAAiB,YAAI,gBAAgB,CAAU,CAAC;AAI7D,eAAO,MAAM,eAAe,YAC1B,SAAS,EACT,SAAS,EACT,eAAe,EACf,SAAS,EACT,YAAY,CACJ,CAAC;AAEX,eAAO,MAAM,eAAe,YAAI,wBAAwB,CAAU,CAAC"}
1
+ {"version":3,"file":"skill-manifest.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/shared/skill-manifest.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAqBH,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,CAEtD,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE5E;AAID,eAAO,MAAM,eAAe,UAA2C,CAAC;AAExE,eAAO,MAAM,eAAe,UAA2C,CAAC;AAExE,eAAO,MAAM,kBAAkB,UAA8C,CAAC;AAE9E,eAAO,MAAM,gBAAgB,UAA4C,CAAC;AAI1E,eAAO,MAAM,WAAW,UAAuC,CAAC;AAIhE,eAAO,MAAM,WAAW,UAAsC,CAAC;AAI/D,eAAO,MAAM,WAAW,UAAsC,CAAC;AAE/D,eAAO,MAAM,YAAY,UAAuC,CAAC;AAIjE,eAAO,MAAM,cAAc,UAAyC,CAAC;AAIrE,eAAO,MAAM,yBAAyB,UAGrC,CAAC;AAEF,eAAO,MAAM,4BAA4B,UAGxC,CAAC;AAEF,eAAO,MAAM,0BAA0B,UAGtC,CAAC;AAIF,eAAO,MAAM,iBAAiB,UAA4C,CAAC;AAI3E,eAAO,MAAM,eAAe,UAA0C,CAAC;AAEvE,eAAO,MAAM,eAAe,UAA0C,CAAC"}
@@ -5,136 +5,31 @@
5
5
  * `bundle-assets.sh` maintains its own bash array — `bundle-consistency.test.ts`
6
6
  * validates that it stays in sync with these lists.
7
7
  */
8
- export const PACK_METADATA = {
9
- // Existing user-eligible packs (ideas, docs, utility, research) are
10
- // intentionally absent — absence falls back to 'project', preserving
11
- // current behavior. New packs that want user-default scope add an entry.
12
- brainstorm: { name: 'brainstorm', defaultScope: 'user' },
13
- };
8
+ import { getPackMemberNames, PACK_MANIFEST, } from '../../../tools/shared/pack-manifest.js';
9
+ export const PACK_METADATA = Object.fromEntries(PACK_MANIFEST.map(({ name, defaultScope }) => [name, { name, defaultScope }]));
14
10
  export function resolvePackDefaultScope(packName) {
15
11
  return PACK_METADATA[packName]?.defaultScope ?? 'project';
16
12
  }
17
13
  // ── Workflow pack ──────────────────────────────────────────────────
18
- export const WORKFLOW_SKILLS = [
19
- 'oat-cursor-cloud-projects',
20
- 'oat-explainer-kit',
21
- 'oat-project-autonomous',
22
- 'oat-project-capture',
23
- 'oat-project-clear-active',
24
- 'oat-project-complete',
25
- 'oat-project-design',
26
- 'oat-project-dispatch-subagents',
27
- 'oat-project-discover',
28
- 'oat-project-document',
29
- 'oat-project-implement',
30
- 'oat-project-import-plan',
31
- 'oat-project-new',
32
- 'oat-project-next',
33
- 'oat-project-open',
34
- 'oat-project-plan',
35
- 'oat-project-plan-writing',
36
- 'oat-project-pr-final',
37
- 'oat-project-pr-progress',
38
- 'oat-project-progress',
39
- 'oat-project-promote-spec-driven',
40
- 'oat-project-quick-start',
41
- 'oat-project-reconcile',
42
- 'oat-project-retro',
43
- 'oat-project-retro-file',
44
- 'oat-project-revise',
45
- 'oat-project-review-provide',
46
- 'oat-project-review-provide-remote',
47
- 'oat-project-review-receive',
48
- 'oat-project-review-receive-remote',
49
- 'oat-project-spec',
50
- 'oat-project-split',
51
- 'oat-project-summary',
52
- 'oat-repo-knowledge-index',
53
- 'oat-worktree-bootstrap',
54
- 'oat-worktree-bootstrap-auto',
55
- 'oat-wave-execute',
56
- 'oat-wave-program',
57
- 'oat-wrap-up',
58
- ];
59
- export const WORKFLOW_AGENTS = [
60
- 'oat-codebase-mapper.md',
61
- 'oat-phase-implementer.md',
62
- 'oat-reviewer.md',
63
- ];
64
- export const WORKFLOW_TEMPLATES = [
65
- 'state.md',
66
- 'discovery.md',
67
- 'spec.md',
68
- 'design.md',
69
- 'plan.md',
70
- 'implementation.md',
71
- 'summary.md',
72
- 'project-log.md',
73
- 'project-retro.md',
74
- ];
75
- export const WORKFLOW_SCRIPTS = [
76
- 'generate-oat-state.sh',
77
- 'generate-thin-index.sh',
78
- 'resolve-tracking.sh',
79
- ];
14
+ export const WORKFLOW_SKILLS = getPackMemberNames('workflows', 'skill');
15
+ export const WORKFLOW_AGENTS = getPackMemberNames('workflows', 'agent');
16
+ export const WORKFLOW_TEMPLATES = getPackMemberNames('workflows', 'template');
17
+ export const WORKFLOW_SCRIPTS = getPackMemberNames('workflows', 'script');
80
18
  // ── Ideas pack ─────────────────────────────────────────────────────
81
- export const IDEA_SKILLS = [
82
- 'oat-idea-new',
83
- 'oat-idea-ideate',
84
- 'oat-idea-summarize',
85
- 'oat-idea-scratchpad',
86
- ];
19
+ export const IDEA_SKILLS = getPackMemberNames('ideas', 'skill');
87
20
  // ── Core pack (always user-level) ─────────────────────────────────
88
- export const CORE_SKILLS = ['oat-docs', 'oat-doctor'];
21
+ export const CORE_SKILLS = getPackMemberNames('core', 'skill');
89
22
  // ── Docs pack ─────────────────────────────────────────────────────
90
- export const DOCS_SKILLS = [
91
- 'authoring-docs',
92
- 'oat-agent-instructions-analyze',
93
- 'oat-agent-instructions-apply',
94
- 'oat-docs-analyze',
95
- 'oat-docs-apply',
96
- 'oat-docs-authoring',
97
- 'oat-docs-bootstrap',
98
- ];
99
- export const DOCS_SCRIPTS = ['resolve-tracking.sh'];
23
+ export const DOCS_SKILLS = getPackMemberNames('docs', 'skill');
24
+ export const DOCS_SCRIPTS = getPackMemberNames('docs', 'script');
100
25
  // ── Utility pack ───────────────────────────────────────────────────
101
- export const UTILITY_SKILLS = [
102
- 'create-agnostic-skill',
103
- 'explainer-kit',
104
- 'oat-dispatch-subagents',
105
- 'subagent-orchestration',
106
- 'oat-repo-improve',
107
- 'oat-repo-maintainability-review',
108
- 'oat-review-provide',
109
- 'oat-review-provide-remote',
110
- 'oat-review-receive',
111
- 'oat-review-receive-remote',
112
- ];
26
+ export const UTILITY_SKILLS = getPackMemberNames('utility', 'skill');
113
27
  // ── Project management pack ───────────────────────────────────────
114
- export const PROJECT_MANAGEMENT_SKILLS = [
115
- 'oat-pjm-add-backlog-item',
116
- 'oat-pjm-decision',
117
- 'oat-pjm-update-repo-reference',
118
- 'oat-pjm-review-backlog',
119
- ];
120
- export const PROJECT_MANAGEMENT_TEMPLATES = [
121
- 'backlog-item.md',
122
- 'roadmap.md',
123
- 'current-state.md',
124
- 'decision.md',
125
- 'repo-agents.md',
126
- 'pjm-agents.md',
127
- 'reference-agents.md',
128
- ];
129
- export const PROJECT_MANAGEMENT_SCRIPTS = [];
28
+ export const PROJECT_MANAGEMENT_SKILLS = getPackMemberNames('project-management', 'skill');
29
+ export const PROJECT_MANAGEMENT_TEMPLATES = getPackMemberNames('project-management', 'template');
30
+ export const PROJECT_MANAGEMENT_SCRIPTS = getPackMemberNames('project-management', 'script');
130
31
  // ── Brainstorm pack ───────────────────────────────────────────────
131
- export const BRAINSTORM_SKILLS = ['oat-brainstorm'];
32
+ export const BRAINSTORM_SKILLS = getPackMemberNames('brainstorm', 'skill');
132
33
  // ── Research pack ─────────────────────────────────────────────────
133
- export const RESEARCH_SKILLS = [
134
- 'analyze',
135
- 'compare',
136
- 'deep-research',
137
- 'skeptic',
138
- 'synthesize',
139
- ];
140
- export const RESEARCH_AGENTS = ['skeptical-evaluator.md'];
34
+ export const RESEARCH_SKILLS = getPackMemberNames('research', 'skill');
35
+ export const RESEARCH_AGENTS = getPackMemberNames('research', 'agent');
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/utility/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAEnB,MAAM,iCAAiC,CAAC;AAQzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAE1B,MAAM,mBAAmB,CAAC;AAM3B,KAAK,YAAY,GAAG,SAAS,GAAG,MAAM,CAAC;AAEvC,UAAU,4BAA4B;IACpC,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,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7E,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,cAAc,EAAE,CACd,OAAO,EAAE,qBAAqB,KAC3B,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACnC,mBAAmB,EAAE,CAAC,CAAC,SAAS,MAAM,EACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAC/B,GAAG,EAAE,aAAa,KACf,OAAO,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACzB,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AAsJD,wBAAgB,6BAA6B,CAC3C,SAAS,GAAE,OAAO,CAAC,4BAA4B,CAAM,GACpD,OAAO,CAeT"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/commands/init/tools/utility/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAEnB,MAAM,iCAAiC,CAAC;AASzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAE1B,MAAM,mBAAmB,CAAC;AAM3B,KAAK,YAAY,GAAG,SAAS,GAAG,MAAM,CAAC;AAEvC,UAAU,4BAA4B;IACpC,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,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7E,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,cAAc,EAAE,CACd,OAAO,EAAE,qBAAqB,KAC3B,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACnC,mBAAmB,EAAE,CAAC,CAAC,SAAS,MAAM,EACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAC/B,GAAG,EAAE,aAAa,KACf,OAAO,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACzB,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1E;AAwJD,wBAAgB,6BAA6B,CAC3C,SAAS,GAAE,OAAO,CAAC,4BAA4B,CAAM,GACpD,OAAO,CAeT"}
@@ -3,6 +3,7 @@ import { withScopeOption } from '../../../shared/scope-option.js';
3
3
  import { confirmAction, selectManyWithAbort, } from '../../../shared/shared.prompts.js';
4
4
  import { readGlobalOptions } from '../../../shared/shared.utils.js';
5
5
  import { canonicalSkillPaths, setInstalledCanonicalPaths, } from '../../../tools/shared/install-sync-context.js';
6
+ import { getPackDefinition } from '../../../tools/shared/pack-manifest.js';
6
7
  import { resolveAssetsRoot } from '../../../../fs/assets.js';
7
8
  import { resolveProjectRoot, resolveScopeRoot } from '../../../../fs/paths.js';
8
9
  import { Command } from 'commander';
@@ -17,7 +18,9 @@ const DEFAULT_DEPENDENCIES = {
17
18
  confirmAction,
18
19
  };
19
20
  function resolveScope(context) {
20
- return context.scope === 'user' ? 'user' : 'project';
21
+ return context.scope === 'project' || context.scope === 'user'
22
+ ? context.scope
23
+ : getPackDefinition('utility').defaultScope;
21
24
  }
22
25
  function expandUtilitySelection(selectedSkills) {
23
26
  const dispatchSkill = 'oat-dispatch-subagents';
@@ -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,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"}
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;AASzC,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;AAsGD,wBAAgB,+BAA+B,CAC7C,SAAS,GAAE,OAAO,CAAC,8BAA8B,CAAM,GACtD,OAAO,CAsBT"}
@@ -3,6 +3,7 @@ import { withScopeOption } from '../../../shared/scope-option.js';
3
3
  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
+ import { getPackDefinition } from '../../../tools/shared/pack-manifest.js';
6
7
  import { resolveAssetsRoot } from '../../../../fs/assets.js';
7
8
  import { resolveProjectRoot, resolveScopeRoot } from '../../../../fs/paths.js';
8
9
  import { Command } from 'commander';
@@ -38,7 +39,9 @@ function reportSuccess(context, scope, targetRoot, assetsRoot, result) {
38
39
  }
39
40
  async function runInitToolsWorkflows(context, options, dependencies) {
40
41
  try {
41
- const scope = context.scope === 'user' ? 'user' : 'project';
42
+ const scope = context.scope === 'project' || context.scope === 'user'
43
+ ? context.scope
44
+ : getPackDefinition('workflows').defaultScope;
42
45
  const targetRoot = scope === 'user'
43
46
  ? dependencies.resolveScopeRoot('user', context.cwd, context.home)
44
47
  : await dependencies.resolveProjectRoot(context.cwd);
@@ -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,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"}
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,CA4IjC"}
@@ -79,10 +79,8 @@ export async function installWorkflows(options) {
79
79
  for (const script of WORKFLOW_SCRIPTS) {
80
80
  const source = join(options.assetsRoot, 'scripts', script);
81
81
  const destination = join(options.targetRoot, '.oat', 'scripts', script);
82
- const sourceExists = await fileExists(source);
83
- if (!sourceExists) {
84
- result.skippedScripts.push(script);
85
- continue;
82
+ if (!(await fileExists(source))) {
83
+ throw new Error(`Required workflow script source is missing: ${source}`);
86
84
  }
87
85
  const copyStatus = await copyFileWithStatus(source, destination, force);
88
86
  if (copyStatus !== 'skipped') {
@@ -0,0 +1,12 @@
1
+ export type PjmAdoptionState = 'declared' | 'inferred-legacy' | 'partial-initialization' | 'none';
2
+ export interface PjmAdoption {
3
+ state: PjmAdoptionState;
4
+ repoRoot: string;
5
+ recovery: 'oat pjm init' | null;
6
+ }
7
+ export interface ResolvePjmAdoptionOptions {
8
+ projectRoot: string;
9
+ repoRoot: string;
10
+ }
11
+ export declare function resolvePjmAdoption(options: ResolvePjmAdoptionOptions): Promise<PjmAdoption>;
12
+ //# sourceMappingURL=adoption.d.ts.map