agents-inc 0.168.0 → 0.170.1

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 (200) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/README.md +18 -15
  3. package/dist/{chunk-JIBCVXXL.js → chunk-3G7X2WKI.js} +4 -4
  4. package/dist/{chunk-JOEA52NR.js → chunk-44TE3RKH.js} +46 -2
  5. package/dist/chunk-44TE3RKH.js.map +1 -0
  6. package/dist/{chunk-NU2K5G54.js → chunk-52HDHJ7I.js} +11 -19
  7. package/dist/chunk-52HDHJ7I.js.map +1 -0
  8. package/dist/{chunk-EH2PGPLP.js → chunk-6HNXYYVF.js} +39 -22
  9. package/dist/chunk-6HNXYYVF.js.map +1 -0
  10. package/dist/{chunk-4UKMQUAU.js → chunk-6ZRH5RHC.js} +10 -11
  11. package/dist/chunk-6ZRH5RHC.js.map +1 -0
  12. package/dist/{chunk-5JUQKGCP.js → chunk-7RDMTR64.js} +14 -34
  13. package/dist/chunk-7RDMTR64.js.map +1 -0
  14. package/dist/{chunk-3LZNY46H.js → chunk-BMRUNMPV.js} +4 -4
  15. package/dist/{chunk-VVRI35SK.js → chunk-CLPUWOSA.js} +4 -4
  16. package/dist/{chunk-VVRI35SK.js.map → chunk-CLPUWOSA.js.map} +1 -1
  17. package/dist/{chunk-TW35AEB4.js → chunk-F2BHT5C4.js} +9 -7
  18. package/dist/chunk-F2BHT5C4.js.map +1 -0
  19. package/dist/{chunk-27AVGFXH.js → chunk-F5EBEATU.js} +2 -2
  20. package/dist/{chunk-GE7NUPMI.js → chunk-HED2DAXZ.js} +3 -3
  21. package/dist/{chunk-7PYXS2QU.js → chunk-KOLDW6SF.js} +3 -3
  22. package/dist/{chunk-7PYXS2QU.js.map → chunk-KOLDW6SF.js.map} +1 -1
  23. package/dist/{chunk-C2UISKIM.js → chunk-MQ6CGZNJ.js} +109 -422
  24. package/dist/chunk-MQ6CGZNJ.js.map +1 -0
  25. package/dist/{chunk-P6I72PR3.js → chunk-NCWDK6L7.js} +115 -196
  26. package/dist/chunk-NCWDK6L7.js.map +1 -0
  27. package/dist/{chunk-VRXX4D6K.js → chunk-NEZ4OAOL.js} +1 -1
  28. package/dist/chunk-NEZ4OAOL.js.map +1 -0
  29. package/dist/chunk-NIHUOWE4.js +106 -0
  30. package/dist/chunk-NIHUOWE4.js.map +1 -0
  31. package/dist/{chunk-OI2H6M5I.js → chunk-NQW25DCF.js} +2 -2
  32. package/dist/chunk-NQW25DCF.js.map +1 -0
  33. package/dist/{chunk-ZUGH4MQG.js → chunk-OYJQUA3D.js} +3 -3
  34. package/dist/{chunk-ZUGH4MQG.js.map → chunk-OYJQUA3D.js.map} +1 -1
  35. package/dist/{chunk-AG3ZVM3B.js → chunk-PJWGTNOX.js} +186 -210
  36. package/dist/chunk-PJWGTNOX.js.map +1 -0
  37. package/dist/{chunk-HR7TK2XW.js → chunk-RIPSGNLU.js} +3 -3
  38. package/dist/chunk-RIPSGNLU.js.map +1 -0
  39. package/dist/{chunk-4DRFEYCE.js → chunk-SZYQISA2.js} +7 -7
  40. package/dist/chunk-SZYQISA2.js.map +1 -0
  41. package/dist/{chunk-W6GO2CYX.js → chunk-USVBYQSQ.js} +2 -2
  42. package/dist/{chunk-H4ZKGGTE.js → chunk-V3KTSP3Q.js} +50 -42
  43. package/dist/chunk-V3KTSP3Q.js.map +1 -0
  44. package/dist/{chunk-KTLKR4YY.js → chunk-WTWMGH2C.js} +2 -2
  45. package/dist/commands/build/marketplace.js +23 -22
  46. package/dist/commands/build/marketplace.js.map +1 -1
  47. package/dist/commands/build/plugins.js +8 -9
  48. package/dist/commands/build/plugins.js.map +1 -1
  49. package/dist/commands/compile.js +19 -20
  50. package/dist/commands/compile.js.map +1 -1
  51. package/dist/commands/doctor.js +17 -18
  52. package/dist/commands/doctor.js.map +1 -1
  53. package/dist/commands/edit.js +118 -297
  54. package/dist/commands/edit.js.map +1 -1
  55. package/dist/commands/eject.js +21 -33
  56. package/dist/commands/eject.js.map +1 -1
  57. package/dist/commands/init.js +17 -45
  58. package/dist/commands/list.js +19 -17
  59. package/dist/commands/list.js.map +1 -1
  60. package/dist/commands/new/marketplace.js +11 -11
  61. package/dist/commands/new/marketplace.js.map +1 -1
  62. package/dist/commands/search.js +12 -13
  63. package/dist/commands/search.js.map +1 -1
  64. package/dist/commands/share.js +11 -12
  65. package/dist/commands/share.js.map +1 -1
  66. package/dist/commands/uninstall.js +18 -20
  67. package/dist/commands/uninstall.js.map +1 -1
  68. package/dist/commands/update.js +8 -9
  69. package/dist/commands/update.js.map +1 -1
  70. package/dist/components/common/removal-plan-confirm.js +2 -2
  71. package/dist/components/common/scroll-affordance.js +9 -0
  72. package/dist/components/common/select-list.js +2 -3
  73. package/dist/components/common/skill-agent-summary.js +11 -0
  74. package/dist/components/common/spinner.js +1 -1
  75. package/dist/{chunk-QWFG7Y3R.js → components/common/summary-panel.js} +57 -31
  76. package/dist/components/common/summary-panel.js.map +1 -0
  77. package/dist/config-exports.js +1 -1
  78. package/dist/hooks/init.js +18 -46
  79. package/dist/hooks/init.js.map +1 -1
  80. package/dist/load-agent-defs-YMDWBFDP.js +14 -0
  81. package/dist/recompile-project-agents-SZ76WNTW.js +18 -0
  82. package/dist/{source-loader-FRJTCSDL.js → source-loader-C5SQXZXI.js} +5 -5
  83. package/dist/src/agents/meta/codex-keeper/playbook.md +2 -3
  84. package/package.json +2 -3
  85. package/src/agents/meta/codex-keeper/playbook.md +2 -3
  86. package/src/schemas/project-config.schema.json +1 -1
  87. package/assets/demo.tape +0 -266
  88. package/dist/chunk-23DNVNFP.js +0 -292
  89. package/dist/chunk-23DNVNFP.js.map +0 -1
  90. package/dist/chunk-3DIDV6H3.js +0 -268
  91. package/dist/chunk-3DIDV6H3.js.map +0 -1
  92. package/dist/chunk-4DRFEYCE.js.map +0 -1
  93. package/dist/chunk-4HWOYYY7.js +0 -92
  94. package/dist/chunk-4HWOYYY7.js.map +0 -1
  95. package/dist/chunk-4UKMQUAU.js.map +0 -1
  96. package/dist/chunk-5JUQKGCP.js.map +0 -1
  97. package/dist/chunk-6WGXTB2L.js +0 -28
  98. package/dist/chunk-6WGXTB2L.js.map +0 -1
  99. package/dist/chunk-AG3ZVM3B.js.map +0 -1
  100. package/dist/chunk-C2UISKIM.js.map +0 -1
  101. package/dist/chunk-CMJBKQUH.js +0 -23
  102. package/dist/chunk-CMJBKQUH.js.map +0 -1
  103. package/dist/chunk-DJEO3F2H.js +0 -230
  104. package/dist/chunk-DJEO3F2H.js.map +0 -1
  105. package/dist/chunk-EH2PGPLP.js.map +0 -1
  106. package/dist/chunk-GRL73YPF.js +0 -197
  107. package/dist/chunk-GRL73YPF.js.map +0 -1
  108. package/dist/chunk-H4ZKGGTE.js.map +0 -1
  109. package/dist/chunk-HI6YB7XP.js +0 -59
  110. package/dist/chunk-HI6YB7XP.js.map +0 -1
  111. package/dist/chunk-HL3GYRMR.js +0 -17
  112. package/dist/chunk-HL3GYRMR.js.map +0 -1
  113. package/dist/chunk-HR7TK2XW.js.map +0 -1
  114. package/dist/chunk-JOEA52NR.js.map +0 -1
  115. package/dist/chunk-JPMV4E4E.js +0 -118
  116. package/dist/chunk-JPMV4E4E.js.map +0 -1
  117. package/dist/chunk-JVUN6AOO.js +0 -237
  118. package/dist/chunk-JVUN6AOO.js.map +0 -1
  119. package/dist/chunk-KQ3PDARZ.js +0 -25
  120. package/dist/chunk-KQ3PDARZ.js.map +0 -1
  121. package/dist/chunk-L3W2JWBA.js +0 -168
  122. package/dist/chunk-L3W2JWBA.js.map +0 -1
  123. package/dist/chunk-LFUJCRCT.js +0 -27
  124. package/dist/chunk-LFUJCRCT.js.map +0 -1
  125. package/dist/chunk-NU2K5G54.js.map +0 -1
  126. package/dist/chunk-OI2H6M5I.js.map +0 -1
  127. package/dist/chunk-P6I72PR3.js.map +0 -1
  128. package/dist/chunk-PCFUXQJA.js +0 -317
  129. package/dist/chunk-PCFUXQJA.js.map +0 -1
  130. package/dist/chunk-PLX2FLEQ.js +0 -48
  131. package/dist/chunk-PLX2FLEQ.js.map +0 -1
  132. package/dist/chunk-QWFG7Y3R.js.map +0 -1
  133. package/dist/chunk-SLBL3WIP.js +0 -121
  134. package/dist/chunk-SLBL3WIP.js.map +0 -1
  135. package/dist/chunk-TSIU7DME.js +0 -43
  136. package/dist/chunk-TSIU7DME.js.map +0 -1
  137. package/dist/chunk-TW35AEB4.js.map +0 -1
  138. package/dist/chunk-VRXX4D6K.js.map +0 -1
  139. package/dist/chunk-W5KEYSOL.js +0 -51
  140. package/dist/chunk-W5KEYSOL.js.map +0 -1
  141. package/dist/chunk-WNLF5EDZ.js +0 -1170
  142. package/dist/chunk-WNLF5EDZ.js.map +0 -1
  143. package/dist/chunk-WTJ3AY33.js +0 -31
  144. package/dist/chunk-WTJ3AY33.js.map +0 -1
  145. package/dist/chunk-X6ZZEYO3.js +0 -53
  146. package/dist/chunk-X6ZZEYO3.js.map +0 -1
  147. package/dist/chunk-XQHZPINL.js +0 -89
  148. package/dist/chunk-XQHZPINL.js.map +0 -1
  149. package/dist/chunk-YN3SWF53.js +0 -35
  150. package/dist/chunk-YN3SWF53.js.map +0 -1
  151. package/dist/components/wizard/category-grid.js +0 -13
  152. package/dist/components/wizard/checkbox-grid.js +0 -12
  153. package/dist/components/wizard/domain-selection.js +0 -18
  154. package/dist/components/wizard/run-wizard-session.js +0 -40
  155. package/dist/components/wizard/run-wizard-session.js.map +0 -1
  156. package/dist/components/wizard/scroll-affordance.js +0 -9
  157. package/dist/components/wizard/skill-agent-summary.js +0 -13
  158. package/dist/components/wizard/source-grid.js +0 -16
  159. package/dist/components/wizard/source-grid.js.map +0 -1
  160. package/dist/components/wizard/stack-selection.js +0 -17
  161. package/dist/components/wizard/stack-selection.js.map +0 -1
  162. package/dist/components/wizard/step-agents.js +0 -18
  163. package/dist/components/wizard/step-agents.js.map +0 -1
  164. package/dist/components/wizard/step-build.js +0 -18
  165. package/dist/components/wizard/step-build.js.map +0 -1
  166. package/dist/components/wizard/step-confirm.js +0 -18
  167. package/dist/components/wizard/step-confirm.js.map +0 -1
  168. package/dist/components/wizard/step-sources.js +0 -19
  169. package/dist/components/wizard/step-sources.js.map +0 -1
  170. package/dist/components/wizard/step-stack.js +0 -18
  171. package/dist/components/wizard/step-stack.js.map +0 -1
  172. package/dist/components/wizard/summary-panel.js +0 -17
  173. package/dist/components/wizard/summary-panel.js.map +0 -1
  174. package/dist/components/wizard/toast.js +0 -9
  175. package/dist/components/wizard/toast.js.map +0 -1
  176. package/dist/components/wizard/wizard-layout.js +0 -22
  177. package/dist/components/wizard/wizard-layout.js.map +0 -1
  178. package/dist/components/wizard/wizard-tabs.js +0 -11
  179. package/dist/components/wizard/wizard-tabs.js.map +0 -1
  180. package/dist/components/wizard/wizard.js +0 -39
  181. package/dist/components/wizard/wizard.js.map +0 -1
  182. package/dist/load-agent-defs-5XMVB3MU.js +0 -14
  183. package/dist/load-agent-defs-5XMVB3MU.js.map +0 -1
  184. package/dist/recompile-project-agents-7PQWYQ6B.js +0 -18
  185. package/dist/recompile-project-agents-7PQWYQ6B.js.map +0 -1
  186. package/dist/source-loader-FRJTCSDL.js.map +0 -1
  187. package/dist/stores/wizard-store.js +0 -24
  188. package/dist/stores/wizard-store.js.map +0 -1
  189. /package/assets/{demo.gif → legacy-wizard.gif} +0 -0
  190. /package/dist/{chunk-JIBCVXXL.js.map → chunk-3G7X2WKI.js.map} +0 -0
  191. /package/dist/{chunk-3LZNY46H.js.map → chunk-BMRUNMPV.js.map} +0 -0
  192. /package/dist/{chunk-27AVGFXH.js.map → chunk-F5EBEATU.js.map} +0 -0
  193. /package/dist/{chunk-GE7NUPMI.js.map → chunk-HED2DAXZ.js.map} +0 -0
  194. /package/dist/{chunk-W6GO2CYX.js.map → chunk-USVBYQSQ.js.map} +0 -0
  195. /package/dist/{chunk-KTLKR4YY.js.map → chunk-WTWMGH2C.js.map} +0 -0
  196. /package/dist/components/{wizard → common}/scroll-affordance.js.map +0 -0
  197. /package/dist/components/{wizard → common}/skill-agent-summary.js.map +0 -0
  198. /package/dist/{components/wizard/category-grid.js.map → load-agent-defs-YMDWBFDP.js.map} +0 -0
  199. /package/dist/{components/wizard/checkbox-grid.js.map → recompile-project-agents-SZ76WNTW.js.map} +0 -0
  200. /package/dist/{components/wizard/domain-selection.js.map → source-loader-C5SQXZXI.js.map} +0 -0
package/CHANGELOG.md CHANGED
@@ -7,6 +7,35 @@ Each release has detailed notes in its own file under [`changelogs/`](./changelo
7
7
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
8
8
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
9
9
 
10
+ ## [0.170.1] - 2026-10-17
11
+
12
+ **The built-in catalogue carries the skills repository's rewritten meta skills, and replaces the unpublished 0.170.0**
13
+
14
+ - The built-in matrix is regenerated from skills `4865dfd1`, so the rewritten reviewing and design skills show their new descriptions. Everything in 0.170.0 ships here.
15
+
16
+ See [changelogs/0.170.1.md](./changelogs/0.170.1.md) for full details.
17
+
18
+ ## [0.170.0] - 2026-10-17
19
+
20
+ **The wizard's removal is finished: a stack installs every sub-agent it declares, `edit --from` names what it adds to the global install, and a global run says each warning once**
21
+
22
+ - CLI-926: a stack picked in the editor installs its skill-less sub-agents too. From a project, `edit --from` and `init --from` list the global sub-agents a new skill joins as "Added to sub-agents in the global install". A bare `edit` refuses unusable skill metadata before minting an id. `eject skills` writes the provider's own skills folder, so Codex gets `.agents/skills`. A failed `build marketplace` writes nothing. A global run says each warning once. The Install dialog says when a rate-limited id can be retried. `edit`'s summary, the unreadable-config remedy, `search`'s help and the docs no longer describe the wizard, and the wizard's leftover code is gone.
23
+ - CLI-927: the six e2e specs that failed under a long `TMPDIR` pass at any temp-folder length.
24
+ - CLI-928: the prompt bible is re-validated for Opus 5.5.
25
+ - CLI-929: the `composable-components` rule and the web-reviewing audit quote describe the current skills, and the built-in matrix is regenerated from the published skills commit.
26
+
27
+ See [changelogs/0.170.0.md](./changelogs/0.170.0.md) for full details.
28
+
29
+ ## [0.169.0] - 2026-10-15
30
+
31
+ **The terminal wizard is gone: `init` and `edit` open the editor, and 0.168.0 is the last release with the wizard**
32
+
33
+ - CLI-923: a bare `init` opens agentsinc.sh/editor where nothing is installed, and shows the installation's dashboard where something is. The dashboard's first option is "Edit in the web editor". A bare `edit` does what `edit --ui` does: it mints an id for this installation and opens it in the editor. `init --marketplace <ref>` without `--from` opens the editor and says how to add the marketplace there. Beside `--from`, it still installs from that marketplace. A bare `init` or `edit` without a terminal, `init --ui --marketplace`, and `init --marketplace` over another marketplace's installation now exit 0. `zustand` is no longer a dependency. The wizard is still in 0.168.0: `npx agents-inc@0.168.0 init`.
34
+ - CLI-924: the user-journeys page describes the wizard-free product, and every journey was run by hand on it: 52 PASS, 13 PARTIAL, 2 FAIL and 1 N/A.
35
+ - The findings checks pass again after the 2026-10-14 prune. Older changelogs name pruned findings as text instead of linking them.
36
+
37
+ See [changelogs/0.169.0.md](./changelogs/0.169.0.md) for full details.
38
+
10
39
  ## [0.168.0] - 2026-10-14
11
40
 
12
41
  **A sub-agent can pin a Codex model, share links are version 6 only, and the editor takes the v6 design with named saves**
package/README.md CHANGED
@@ -9,22 +9,23 @@
9
9
 
10
10
  An agent composition framework for [Claude Code](https://docs.anthropic.com/en/docs/claude-code). Compose specialized subagents from atomic skills:
11
11
 
12
- 1. Select a pre-built stack to customise or start from scratch
13
- 2. Select your skills from an interactive grid, organized by domain with compatibility filtering and global/local customising
12
+ 1. Select a pre-built stack to customise or start from scratch in the [editor](https://agentsinc.sh/editor)
13
+ 2. Select your skills from its grid, organized by domain with compatibility filtering and global/project scope
14
14
  3. Choose to eject these skills or install them as plugins ([install modes guide](https://github.com/agents-inc/agents-inc/blob/main/apps/www/src/content/docs/docs/concepts/install-modes.md))
15
15
  4. Select your subagents to compile with these skills
16
- 5. Further customise skills and subagents in the generated `config.ts` ([editing config guide](https://github.com/agents-inc/agents-inc/blob/main/apps/www/src/content/docs/docs/guides/editing-config.md))
17
- 6. Compile subagents with `npx agents-inc compile` after changes
16
+ 5. Install with the `npx agents-inc init --from <id>` command the editor hands you
17
+ 6. Further customise skills and subagents in the generated `config.ts` ([editing config guide](https://github.com/agents-inc/agents-inc/blob/main/apps/www/src/content/docs/docs/guides/editing-config.md))
18
+ 7. Compile subagents with `npx agents-inc compile` after changes
18
19
 
19
20
  See the [Guides](#guides) section below for more.
20
21
 
21
22
  <br />
22
23
 
23
- <img src="./assets/demo.gif" alt="Agents Inc init wizard">
24
+ ### Legacy Wizard
24
25
 
25
- ### Walkthrough (recommended)
26
+ The terminal wizard, last shipped in 0.168.0: `npx agents-inc@0.168.0 init`.
26
27
 
27
- https://github.com/user-attachments/assets/387b99ff-0a43-40e2-b757-9d035be5b550
28
+ <img src="./assets/legacy-wizard.gif" alt="Legacy Wizard">
28
29
 
29
30
  ## Getting Started
30
31
 
@@ -57,7 +58,7 @@ npx agents-inc init
57
58
  | Guide | Description |
58
59
  | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
59
60
  | [Global-first setup](https://github.com/agents-inc/agents-inc/blob/main/apps/www/src/content/docs/docs/guides/global-first-setup.md) | Why global scope is the right default and when to use project scope |
60
- | [Install modes](https://github.com/agents-inc/agents-inc/blob/main/apps/www/src/content/docs/docs/concepts/install-modes.md) | Plugin vs local install, global vs project scope |
61
+ | [Install modes](https://github.com/agents-inc/agents-inc/blob/main/apps/www/src/content/docs/docs/concepts/install-modes.md) | Plugin vs eject, global vs project scope |
61
62
  | [Editing your config](https://github.com/agents-inc/agents-inc/blob/main/apps/www/src/content/docs/docs/guides/editing-config.md) | Skill mappings, preloaded vs dynamic loading, and config structure |
62
63
  | [Customizing subagents](https://github.com/agents-inc/agents-inc/blob/main/apps/www/src/content/docs/docs/guides/customizing-subagents.md) | Eject and modify partials, templates, and skills |
63
64
  | [Writing custom skills and subagents](https://github.com/agents-inc/agents-inc/blob/main/apps/www/src/content/docs/docs/guides/writing-custom-skills.md) | Author skills and subagents from scratch or iterate on existing ones |
@@ -100,13 +101,14 @@ Each subagent is composed from modular partials (role, workflow, output format)
100
101
 
101
102
  ### Core
102
103
 
103
- | Command | Description |
104
- | --------- | --------------------------------------------------------------------------- |
105
- | `init` | Interactive setup wizard: pick a stack, customize skills, compile subagents |
106
- | `edit` | Modify skill selection via the interactive wizard |
107
- | `compile` | Recompile subagents after changes |
108
- | `update` | Refresh the marketplaces this installation uses (ejected skills are yours) |
109
- | `search` | Search this installation's marketplace and your local skills |
104
+ | Command | Description |
105
+ | --------- | ------------------------------------------------------------------------------------------------- |
106
+ | `init` | Build a configuration in agentsinc.sh/editor, or install one by id with `--from` |
107
+ | `edit` | Open this installation in agentsinc.sh/editor, or apply a configuration built there with `--from` |
108
+ | `compile` | Recompile subagents after changes |
109
+ | `update` | Refresh the marketplaces this installation uses (ejected skills are yours) |
110
+ | `search` | Search this installation's marketplace and your local skills |
111
+ | `share` | Share this installation as an id anyone can install |
110
112
 
111
113
  ### Customization
112
114
 
@@ -120,6 +122,7 @@ Each subagent is composed from modular partials (role, workflow, output format)
120
122
  | ------------------- | ---------------------------------------------- |
121
123
  | `build marketplace` | Generate `marketplace.json` from built plugins |
122
124
  | `build plugins` | Build skill and agent plugins for distribution |
125
+ | `new marketplace` | Scaffold a marketplace of your own |
123
126
 
124
127
  ### Diagnostics
125
128
 
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  listAgentMdFiles
4
- } from "./chunk-3LZNY46H.js";
4
+ } from "./chunk-BMRUNMPV.js";
5
5
  import {
6
6
  agentFrontmatterValidationSchema,
7
7
  computeStringHash,
@@ -23,11 +23,11 @@ import {
23
23
  warn,
24
24
  writeContentHash,
25
25
  writePluginManifest
26
- } from "./chunk-C2UISKIM.js";
26
+ } from "./chunk-MQ6CGZNJ.js";
27
27
  import {
28
28
  DIRS,
29
29
  PROJECT_ROOT
30
- } from "./chunk-AG3ZVM3B.js";
30
+ } from "./chunk-PJWGTNOX.js";
31
31
 
32
32
  // src/cli/lib/agents/agent-fetcher.ts
33
33
  import path from "path";
@@ -156,4 +156,4 @@ export {
156
156
  compileAllAgentPlugins,
157
157
  printAgentCompilationSummary
158
158
  };
159
- //# sourceMappingURL=chunk-JIBCVXXL.js.map
159
+ //# sourceMappingURL=chunk-3G7X2WKI.js.map
@@ -1,4 +1,12 @@
1
1
  #!/usr/bin/env node
2
+ import {
3
+ CLI_COLORS,
4
+ UI_SYMBOLS
5
+ } from "./chunk-PJWGTNOX.js";
6
+
7
+ // src/cli/components/common/select-list.tsx
8
+ import { useCallback as useCallback2 } from "react";
9
+ import { Box, Text } from "ink";
2
10
 
3
11
  // src/cli/components/hooks/use-keyboard-navigation.ts
4
12
  import { useState, useCallback, useRef } from "react";
@@ -55,7 +63,43 @@ function useKeyboardNavigation(itemCount, handlers = {}, options = {}) {
55
63
  return { focusedIndex, setFocusedIndex };
56
64
  }
57
65
 
66
+ // src/cli/components/common/select-list.tsx
67
+ import { jsx, jsxs } from "react/jsx-runtime";
68
+ function SelectList({
69
+ items,
70
+ onSelect,
71
+ onCancel,
72
+ renderItem,
73
+ active
74
+ }) {
75
+ const handleEnter = useCallback2(
76
+ (index) => {
77
+ const item = items[index];
78
+ if (item) {
79
+ onSelect(item.value);
80
+ }
81
+ },
82
+ [items, onSelect]
83
+ );
84
+ const { focusedIndex } = useKeyboardNavigation(
85
+ items.length,
86
+ { onEnter: handleEnter, ...onCancel !== void 0 && { onEscape: onCancel } },
87
+ { vimKeys: false, ...active !== void 0 && { active } }
88
+ );
89
+ return /* @__PURE__ */ jsx(Box, { flexDirection: "column", children: items.map((item, index) => {
90
+ const isFocused = index === focusedIndex;
91
+ const marker = isFocused ? UI_SYMBOLS.CHEVRON : UI_SYMBOLS.CHEVRON_SPACER;
92
+ return /* @__PURE__ */ jsxs(Box, { children: [
93
+ /* @__PURE__ */ jsxs(Text, { bold: isFocused, ...isFocused && { color: CLI_COLORS.PRIMARY }, children: [
94
+ marker,
95
+ " "
96
+ ] }),
97
+ renderItem ? renderItem(item, isFocused) : /* @__PURE__ */ jsx(Text, { bold: isFocused, ...isFocused && { color: CLI_COLORS.PRIMARY }, children: item.label })
98
+ ] }, index);
99
+ }) });
100
+ }
101
+
58
102
  export {
59
- useKeyboardNavigation
103
+ SelectList
60
104
  };
61
- //# sourceMappingURL=chunk-JOEA52NR.js.map
105
+ //# sourceMappingURL=chunk-44TE3RKH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/components/common/select-list.tsx","../src/cli/components/hooks/use-keyboard-navigation.ts"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { Box, Text } from \"ink\";\nimport { CLI_COLORS, UI_SYMBOLS } from \"../../consts.js\";\nimport { useKeyboardNavigation } from \"../hooks/use-keyboard-navigation.js\";\n\nexport type SelectListItem<T> = {\n value: T;\n label: string;\n};\n\nexport type SelectListProps<T> = {\n items: readonly SelectListItem<T>[];\n onSelect: (value: T) => void;\n onCancel?: (() => void) | undefined;\n renderItem?: ((item: SelectListItem<T>, isFocused: boolean) => React.ReactNode) | undefined;\n active?: boolean | undefined;\n};\n\nexport function SelectList<T>({\n items,\n onSelect,\n onCancel,\n renderItem,\n active,\n}: SelectListProps<T>): React.ReactElement {\n const handleEnter = useCallback(\n (index: number) => {\n const item = items[index];\n if (item) {\n onSelect(item.value);\n }\n },\n [items, onSelect],\n );\n\n const { focusedIndex } = useKeyboardNavigation(\n items.length,\n { onEnter: handleEnter, ...(onCancel !== undefined && { onEscape: onCancel }) },\n { vimKeys: false, ...(active !== undefined && { active }) },\n );\n\n return (\n <Box flexDirection=\"column\">\n {items.map((item, index) => {\n const isFocused = index === focusedIndex;\n const marker = isFocused ? UI_SYMBOLS.CHEVRON : UI_SYMBOLS.CHEVRON_SPACER;\n\n return (\n <Box key={index}>\n <Text bold={isFocused} {...(isFocused && { color: CLI_COLORS.PRIMARY })}>\n {marker}{\" \"}\n </Text>\n {renderItem ? (\n renderItem(item, isFocused)\n ) : (\n <Text bold={isFocused} {...(isFocused && { color: CLI_COLORS.PRIMARY })}>\n {item.label}\n </Text>\n )}\n </Box>\n );\n })}\n </Box>\n );\n}\n","import type { Dispatch, SetStateAction } from \"react\";\nimport { useState, useCallback, useRef } from \"react\";\nimport { useInput, type Key } from \"ink\";\n\ntype KeyboardNavigationHandlers = {\n onEnter?: (focusedIndex: number) => void;\n onEscape?: () => void;\n};\n\ntype KeyboardNavigationOptions = {\n wrap?: boolean;\n vimKeys?: boolean;\n active?: boolean;\n};\n\nexport function useKeyboardNavigation(\n itemCount: number,\n handlers: KeyboardNavigationHandlers = {},\n options: KeyboardNavigationOptions = {},\n): {\n focusedIndex: number;\n setFocusedIndex: Dispatch<SetStateAction<number>>;\n} {\n const { onEnter, onEscape } = handlers;\n const { wrap = true, vimKeys = true, active = true } = options;\n\n const [focusedIndex, setRenderedIndex] = useState(0);\n // The focus the handlers read, written the moment it moves rather than once the move renders.\n // Keys that arrive in one chunk — a fast typist, a paste — are handled one after another with no\n // render between them, so a copy synced by an effect still held the focus from before the burst\n // when Enter read it: Down, Down, Enter on the dashboard ran Edit.\n const focusedIndexRef = useRef(focusedIndex);\n\n const setFocusedIndex = useCallback<Dispatch<SetStateAction<number>>>((action) => {\n const next = typeof action === \"function\" ? action(focusedIndexRef.current) : action;\n focusedIndexRef.current = next;\n setRenderedIndex(next);\n }, []);\n\n const moveUp = useCallback(() => {\n setFocusedIndex((prev) => {\n if (wrap) {\n return (prev - 1 + itemCount) % itemCount;\n }\n return Math.max(0, prev - 1);\n });\n }, [itemCount, wrap, setFocusedIndex]);\n\n const moveDown = useCallback(() => {\n setFocusedIndex((prev) => {\n if (wrap) {\n return (prev + 1) % itemCount;\n }\n return Math.min(itemCount - 1, prev + 1);\n });\n }, [itemCount, wrap, setFocusedIndex]);\n\n useInput(\n useCallback(\n (input: string, key: Key) => {\n if (key.escape) {\n onEscape?.();\n return;\n }\n\n if (key.return) {\n onEnter?.(focusedIndexRef.current);\n return;\n }\n\n if (key.upArrow || (vimKeys && input === \"k\")) {\n moveUp();\n return;\n }\n\n if (key.downArrow || (vimKeys && input === \"j\")) {\n moveDown();\n }\n },\n [onEnter, onEscape, vimKeys, moveUp, moveDown],\n ),\n { isActive: active },\n );\n\n return { focusedIndex, setFocusedIndex };\n}\n"],"mappings":"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","names":["useCallback","useCallback"]}
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  seatCatalog
4
- } from "./chunk-AG3ZVM3B.js";
4
+ } from "./chunk-PJWGTNOX.js";
5
5
 
6
6
  // src/cli/types/generated/matrix.ts
7
7
  var BUILT_IN_MATRIX = {
@@ -3513,7 +3513,7 @@ var BUILT_IN_MATRIX = {
3513
3513
  {
3514
3514
  skillIds: ["web-framework-react"],
3515
3515
  needsAny: false,
3516
- reason: "Composition patterns are React surface \u2014 base-ui useRender/mergeProps, forwardRef, JSX parts"
3516
+ reason: "Composition patterns are React surface \u2014 JSX parts sharing context, ref as a prop, asChild/render via cloneElement, useId"
3517
3517
  }
3518
3518
  ],
3519
3519
  alternatives: [],
@@ -3524,7 +3524,7 @@ var BUILT_IN_MATRIX = {
3524
3524
  slug: "expressive-typescript",
3525
3525
  displayName: "Expressive TypeScript",
3526
3526
  description: "Readable functional patterns and named abstractions",
3527
- usageGuidance: "Use when writing or refactoring TypeScript functions, data transformations, store actions, or any code that mixes logic levels. Apply the orchestrator pattern and extract until the code reads like prose.",
3527
+ usageGuidance: "Use when writing or refactoring TypeScript functions, data transformations, store actions, or any code that mixes logic levels; when deciding whether an expression should be extracted and named; or when modelling a fixed set of states for exhaustive handling. Apply the orchestrator pattern and extract until the code reads like prose.",
3528
3528
  category: "meta-design",
3529
3529
  author: "@vince",
3530
3530
  conflictsWith: [],
@@ -3622,7 +3622,7 @@ var BUILT_IN_MATRIX = {
3622
3622
  slug: "api-reviewing",
3623
3623
  displayName: "API Reviewing",
3624
3624
  description: "Injection, boundary validation, authorization, data exposure",
3625
- usageGuidance: "Use when reviewing diffs that touch API routes, database queries, auth middleware, or server utilities. Covers injection, input validation at boundaries, authn/authz coverage, secret and PII exposure, error leakage, and query patterns.",
3625
+ usageGuidance: "Use when reviewing a diff that adds or changes API routes or handlers, database queries, authentication or authorization middleware, or server code that reads files, starts processes or fetches URLs using request data.",
3626
3626
  category: "meta-reviewing",
3627
3627
  author: "@vince",
3628
3628
  conflictsWith: [],
@@ -3635,8 +3635,8 @@ var BUILT_IN_MATRIX = {
3635
3635
  id: "meta-reviewing-cli-reviewing",
3636
3636
  slug: "cli-reviewing",
3637
3637
  displayName: "CLI Reviewing",
3638
- description: "CLI code review patterns for Commander.js and @clack/prompts",
3639
- usageGuidance: "Use when reviewing CLI applications built with Commander.js, @clack/prompts, or similar tools. Covers exit codes, signal handling, cancellation, error messages, spinners, and testing adequacy.",
3638
+ description: "Review exit codes, signals, streams and prompts in CLIs",
3639
+ usageGuidance: "Use when reviewing a command-line tool's commands, entry point, prompts, output or tests, whichever parser or prompt library it uses. Covers exit codes, cancellation and signals, non-TTY behaviour, the stdout/stderr split, error text, config precedence, subprocess safety and test adequacy.",
3640
3640
  category: "meta-reviewing",
3641
3641
  author: "@vince",
3642
3642
  conflictsWith: [],
@@ -3650,7 +3650,7 @@ var BUILT_IN_MATRIX = {
3650
3650
  slug: "infra-reviewing",
3651
3651
  displayName: "Infra Reviewing",
3652
3652
  description: "Supply-chain pinning, secret exposure, container hygiene",
3653
- usageGuidance: "Use when reviewing diffs that touch CI/CD workflows, Dockerfiles, deployment configs, or IaC. Covers action and base-image pinning, secret handling, non-root containers, layer caching, least-privilege permissions, and deployment safety.",
3653
+ usageGuidance: "Use when reviewing diffs that touch CI/CD workflows, Dockerfiles, deployment configs, or IaC. Covers action and base-image pinning, secret handling, privileged workflow triggers and script injection, least-privilege permissions, non-root containers, layer caching, and deployment safety.",
3654
3654
  category: "meta-reviewing",
3655
3655
  author: "@vince",
3656
3656
  conflictsWith: [],
@@ -3664,7 +3664,7 @@ var BUILT_IN_MATRIX = {
3664
3664
  slug: "reviewing",
3665
3665
  displayName: "Code Review",
3666
3666
  description: "Code review guidance",
3667
- usageGuidance: "Use when reviewing code, PRs, or making approval/rejection decisions.",
3667
+ usageGuidance: "Use when reviewing a diff or PR, writing review findings, or deciding whether to approve or request changes.",
3668
3668
  category: "meta-reviewing",
3669
3669
  author: "@vince",
3670
3670
  conflictsWith: [],
@@ -3678,7 +3678,7 @@ var BUILT_IN_MATRIX = {
3678
3678
  slug: "web-reviewing",
3679
3679
  displayName: "Web Reviewing",
3680
3680
  description: "React hooks, accessibility, and render performance",
3681
- usageGuidance: "Use when reviewing diffs that touch UI components - React/JSX files, hooks, props and state, styling, or accessibility. Covers rules of hooks, effect cleanup, render performance, list keys, and ARIA/keyboard patterns.",
3681
+ usageGuidance: "Use when reviewing a diff that adds or changes React components or custom hooks \u2014 hook order and dependency arrays, effect and ref cleanup, derived state, list keys and component identity, controlled inputs, memoization claims, and keyboard and screen-reader access for the elements the diff adds.",
3682
3682
  category: "meta-reviewing",
3683
3683
  author: "@vince",
3684
3684
  conflictsWith: [],
@@ -9335,15 +9335,9 @@ function getSkillById(id) {
9335
9335
  function getSkillDisplayName(id) {
9336
9336
  return matrix.skills[id]?.displayName ?? id;
9337
9337
  }
9338
- function allSkills() {
9339
- return typedValues(matrix.skills);
9340
- }
9341
9338
  function getCategoryDomain(category) {
9342
9339
  return matrix.categories[category]?.domain;
9343
9340
  }
9344
- function findStack(stackId) {
9345
- return matrix.suggestedStacks.find((s) => s.id === stackId);
9346
- }
9347
9341
 
9348
9342
  export {
9349
9343
  BUILT_IN_MATRIX,
@@ -9355,8 +9349,6 @@ export {
9355
9349
  initializeMatrix,
9356
9350
  getSkillById,
9357
9351
  getSkillDisplayName,
9358
- allSkills,
9359
- getCategoryDomain,
9360
- findStack
9352
+ getCategoryDomain
9361
9353
  };
9362
- //# sourceMappingURL=chunk-NU2K5G54.js.map
9354
+ //# sourceMappingURL=chunk-52HDHJ7I.js.map