@dewtech/dare-cli 2.17.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. package/README.md +98 -3
  2. package/dist/__tests__/confidence.test.d.ts +2 -0
  3. package/dist/__tests__/confidence.test.d.ts.map +1 -0
  4. package/dist/__tests__/confidence.test.js +73 -0
  5. package/dist/__tests__/confidence.test.js.map +1 -0
  6. package/dist/__tests__/datamodel.test.d.ts +2 -0
  7. package/dist/__tests__/datamodel.test.d.ts.map +1 -0
  8. package/dist/__tests__/datamodel.test.js +131 -0
  9. package/dist/__tests__/datamodel.test.js.map +1 -0
  10. package/dist/__tests__/dna-detector.test.d.ts +2 -0
  11. package/dist/__tests__/dna-detector.test.d.ts.map +1 -0
  12. package/dist/__tests__/dna-detector.test.js +97 -0
  13. package/dist/__tests__/dna-detector.test.js.map +1 -0
  14. package/dist/__tests__/dna-facts.test.d.ts +2 -0
  15. package/dist/__tests__/dna-facts.test.d.ts.map +1 -0
  16. package/dist/__tests__/dna-facts.test.js +44 -0
  17. package/dist/__tests__/dna-facts.test.js.map +1 -0
  18. package/dist/__tests__/graph-renderer.test.d.ts +2 -0
  19. package/dist/__tests__/graph-renderer.test.d.ts.map +1 -0
  20. package/dist/__tests__/graph-renderer.test.js +85 -0
  21. package/dist/__tests__/graph-renderer.test.js.map +1 -0
  22. package/dist/__tests__/migration.test.d.ts +2 -0
  23. package/dist/__tests__/migration.test.d.ts.map +1 -0
  24. package/dist/__tests__/migration.test.js +77 -0
  25. package/dist/__tests__/migration.test.js.map +1 -0
  26. package/dist/__tests__/module-detector.test.d.ts +2 -0
  27. package/dist/__tests__/module-detector.test.d.ts.map +1 -0
  28. package/dist/__tests__/module-detector.test.js +83 -0
  29. package/dist/__tests__/module-detector.test.js.map +1 -0
  30. package/dist/__tests__/refine.test.js +49 -49
  31. package/dist/__tests__/reverse-facts.test.d.ts +2 -0
  32. package/dist/__tests__/reverse-facts.test.d.ts.map +1 -0
  33. package/dist/__tests__/reverse-facts.test.js +78 -0
  34. package/dist/__tests__/reverse-facts.test.js.map +1 -0
  35. package/dist/__tests__/review.test.js +38 -38
  36. package/dist/__tests__/validate.test.js +65 -65
  37. package/dist/bin/dare.js +32 -3
  38. package/dist/bin/dare.js.map +1 -1
  39. package/dist/commands/blueprint.js +122 -122
  40. package/dist/commands/dag.d.ts.map +1 -1
  41. package/dist/commands/dag.js +43 -79
  42. package/dist/commands/dag.js.map +1 -1
  43. package/dist/commands/dna.d.ts +3 -0
  44. package/dist/commands/dna.d.ts.map +1 -0
  45. package/dist/commands/dna.js +69 -0
  46. package/dist/commands/dna.js.map +1 -0
  47. package/dist/commands/migrate.d.ts +3 -0
  48. package/dist/commands/migrate.d.ts.map +1 -0
  49. package/dist/commands/migrate.js +101 -0
  50. package/dist/commands/migrate.js.map +1 -0
  51. package/dist/commands/new.d.ts +16 -0
  52. package/dist/commands/new.d.ts.map +1 -0
  53. package/dist/commands/new.js +103 -0
  54. package/dist/commands/new.js.map +1 -0
  55. package/dist/commands/reverse.d.ts +3 -0
  56. package/dist/commands/reverse.d.ts.map +1 -0
  57. package/dist/commands/reverse.js +201 -0
  58. package/dist/commands/reverse.js.map +1 -0
  59. package/dist/commands/welcome.d.ts +14 -0
  60. package/dist/commands/welcome.d.ts.map +1 -0
  61. package/dist/commands/welcome.js +29 -0
  62. package/dist/commands/welcome.js.map +1 -0
  63. package/dist/skills/commands/add.d.ts +23 -0
  64. package/dist/skills/commands/add.d.ts.map +1 -0
  65. package/dist/skills/commands/add.js +206 -0
  66. package/dist/skills/commands/add.js.map +1 -0
  67. package/dist/skills/commands/info.d.ts +14 -0
  68. package/dist/skills/commands/info.d.ts.map +1 -0
  69. package/dist/skills/commands/info.js +99 -0
  70. package/dist/skills/commands/info.js.map +1 -0
  71. package/dist/skills/commands/list.d.ts +19 -0
  72. package/dist/skills/commands/list.d.ts.map +1 -0
  73. package/dist/skills/commands/list.js +163 -0
  74. package/dist/skills/commands/list.js.map +1 -0
  75. package/dist/skills/commands/publish.d.ts +56 -0
  76. package/dist/skills/commands/publish.d.ts.map +1 -0
  77. package/dist/skills/commands/publish.js +272 -0
  78. package/dist/skills/commands/publish.js.map +1 -0
  79. package/dist/skills/commands/remove.d.ts +19 -0
  80. package/dist/skills/commands/remove.d.ts.map +1 -0
  81. package/dist/skills/commands/remove.js +96 -0
  82. package/dist/skills/commands/remove.js.map +1 -0
  83. package/dist/skills/commands/update.d.ts +31 -0
  84. package/dist/skills/commands/update.d.ts.map +1 -0
  85. package/dist/skills/commands/update.js +132 -0
  86. package/dist/skills/commands/update.js.map +1 -0
  87. package/dist/skills/index.d.ts +22 -0
  88. package/dist/skills/index.d.ts.map +1 -0
  89. package/dist/skills/index.js +33 -0
  90. package/dist/skills/index.js.map +1 -0
  91. package/dist/skills/manifest.d.ts +54 -0
  92. package/dist/skills/manifest.d.ts.map +1 -0
  93. package/dist/skills/manifest.js +162 -0
  94. package/dist/skills/manifest.js.map +1 -0
  95. package/dist/skills/registry-local.d.ts +67 -0
  96. package/dist/skills/registry-local.d.ts.map +1 -0
  97. package/dist/skills/registry-local.js +130 -0
  98. package/dist/skills/registry-local.js.map +1 -0
  99. package/dist/skills/registry-mock.json +109 -0
  100. package/dist/skills/registry-remote.d.ts +110 -0
  101. package/dist/skills/registry-remote.d.ts.map +1 -0
  102. package/dist/skills/registry-remote.js +246 -0
  103. package/dist/skills/registry-remote.js.map +1 -0
  104. package/dist/skills/registry.d.ts +49 -0
  105. package/dist/skills/registry.d.ts.map +1 -0
  106. package/dist/skills/registry.js +94 -0
  107. package/dist/skills/registry.js.map +1 -0
  108. package/dist/skills/tests/manifest.spec.d.ts +8 -0
  109. package/dist/skills/tests/manifest.spec.d.ts.map +1 -0
  110. package/dist/skills/tests/manifest.spec.js +176 -0
  111. package/dist/skills/tests/manifest.spec.js.map +1 -0
  112. package/dist/skills/tests/publish.spec.d.ts +12 -0
  113. package/dist/skills/tests/publish.spec.d.ts.map +1 -0
  114. package/dist/skills/tests/publish.spec.js +276 -0
  115. package/dist/skills/tests/publish.spec.js.map +1 -0
  116. package/dist/skills/tests/registry-local.spec.d.ts +8 -0
  117. package/dist/skills/tests/registry-local.spec.d.ts.map +1 -0
  118. package/dist/skills/tests/registry-local.spec.js +231 -0
  119. package/dist/skills/tests/registry-local.spec.js.map +1 -0
  120. package/dist/skills/tests/registry.spec.d.ts +7 -0
  121. package/dist/skills/tests/registry.spec.d.ts.map +1 -0
  122. package/dist/skills/tests/registry.spec.js +58 -0
  123. package/dist/skills/tests/registry.spec.js.map +1 -0
  124. package/dist/skills/tests/remote-registry.spec.d.ts +9 -0
  125. package/dist/skills/tests/remote-registry.spec.d.ts.map +1 -0
  126. package/dist/skills/tests/remote-registry.spec.js +357 -0
  127. package/dist/skills/tests/remote-registry.spec.js.map +1 -0
  128. package/dist/skills/tests/update.spec.d.ts +9 -0
  129. package/dist/skills/tests/update.spec.d.ts.map +1 -0
  130. package/dist/skills/tests/update.spec.js +166 -0
  131. package/dist/skills/tests/update.spec.js.map +1 -0
  132. package/dist/utils/banner.d.ts +28 -0
  133. package/dist/utils/banner.d.ts.map +1 -0
  134. package/dist/utils/banner.js +77 -0
  135. package/dist/utils/banner.js.map +1 -0
  136. package/dist/utils/banner.spec.d.ts +5 -0
  137. package/dist/utils/banner.spec.d.ts.map +1 -0
  138. package/dist/utils/banner.spec.js +253 -0
  139. package/dist/utils/banner.spec.js.map +1 -0
  140. package/dist/utils/confidence.d.ts +41 -0
  141. package/dist/utils/confidence.d.ts.map +1 -0
  142. package/dist/utils/confidence.js +101 -0
  143. package/dist/utils/confidence.js.map +1 -0
  144. package/dist/utils/datamodel.d.ts +41 -0
  145. package/dist/utils/datamodel.d.ts.map +1 -0
  146. package/dist/utils/datamodel.js +535 -0
  147. package/dist/utils/datamodel.js.map +1 -0
  148. package/dist/utils/dna-detector.d.ts +61 -0
  149. package/dist/utils/dna-detector.d.ts.map +1 -0
  150. package/dist/utils/dna-detector.js +354 -0
  151. package/dist/utils/dna-detector.js.map +1 -0
  152. package/dist/utils/dna-facts.d.ts +13 -0
  153. package/dist/utils/dna-facts.d.ts.map +1 -0
  154. package/dist/utils/dna-facts.js +109 -0
  155. package/dist/utils/dna-facts.js.map +1 -0
  156. package/dist/utils/excalidraw-renderer.d.ts +11 -71
  157. package/dist/utils/excalidraw-renderer.d.ts.map +1 -1
  158. package/dist/utils/excalidraw-renderer.js +29 -162
  159. package/dist/utils/excalidraw-renderer.js.map +1 -1
  160. package/dist/utils/graph-renderer.d.ts +115 -0
  161. package/dist/utils/graph-renderer.d.ts.map +1 -0
  162. package/dist/utils/graph-renderer.js +216 -0
  163. package/dist/utils/graph-renderer.js.map +1 -0
  164. package/dist/utils/migration.d.ts +64 -0
  165. package/dist/utils/migration.d.ts.map +1 -0
  166. package/dist/utils/migration.js +183 -0
  167. package/dist/utils/migration.js.map +1 -0
  168. package/dist/utils/module-detector.d.ts +46 -0
  169. package/dist/utils/module-detector.d.ts.map +1 -0
  170. package/dist/utils/module-detector.js +348 -0
  171. package/dist/utils/module-detector.js.map +1 -0
  172. package/dist/utils/project-generator.js +252 -252
  173. package/dist/utils/reverse-facts.d.ts +50 -0
  174. package/dist/utils/reverse-facts.d.ts.map +1 -0
  175. package/dist/utils/reverse-facts.js +291 -0
  176. package/dist/utils/reverse-facts.js.map +1 -0
  177. package/dist/utils/stack-bootstrap.js +371 -371
  178. package/package.json +8 -3
  179. package/templates/DARE-dag-example.yaml +280 -280
  180. package/templates/UPDATE-MANIFEST.json +48 -48
  181. package/templates/backend/node-nestjs/.env.example +9 -9
  182. package/templates/backend/node-nestjs/nest-cli.json +8 -8
  183. package/templates/backend/node-nestjs/package.json +50 -50
  184. package/templates/backend/node-nestjs/src/app.controller.ts +12 -12
  185. package/templates/backend/node-nestjs/src/app.module.ts +15 -15
  186. package/templates/backend/node-nestjs/src/app.service.ts +8 -8
  187. package/templates/backend/node-nestjs/src/main.ts +24 -24
  188. package/templates/backend/node-nestjs/tsconfig.json +21 -21
  189. package/templates/backend/php-laravel/.env.example +22 -22
  190. package/templates/backend/php-laravel/app/Http/Controllers/HealthController.php +15 -15
  191. package/templates/backend/php-laravel/composer.json +40 -40
  192. package/templates/backend/python-fastapi/.env.example +4 -4
  193. package/templates/backend/python-fastapi/app/api/router.py +8 -8
  194. package/templates/backend/python-fastapi/app/core/config.py +20 -20
  195. package/templates/backend/python-fastapi/main.py +35 -35
  196. package/templates/backend/python-fastapi/requirements.txt +13 -13
  197. package/templates/backend/rust-axum/.env.example +3 -3
  198. package/templates/backend/rust-axum/Cargo.toml +23 -23
  199. package/templates/backend/rust-axum/src/errors.rs +30 -30
  200. package/templates/backend/rust-axum/src/main.rs +32 -32
  201. package/templates/backend/rust-axum/src/routes.rs +6 -6
  202. package/templates/frontend/leptos-csr/.cargo/config.toml +2 -2
  203. package/templates/frontend/leptos-csr/Cargo.toml +16 -16
  204. package/templates/frontend/leptos-csr/Trunk.toml +10 -10
  205. package/templates/frontend/leptos-csr/index.html +11 -11
  206. package/templates/frontend/leptos-csr/src/lib.rs +20 -20
  207. package/templates/frontend/leptos-csr/style/main.scss +19 -19
  208. package/templates/frontend/leptos-fullstack/.cargo/config.toml +4 -4
  209. package/templates/frontend/leptos-fullstack/Cargo.toml +56 -56
  210. package/templates/frontend/leptos-fullstack/src/app.rs +49 -49
  211. package/templates/frontend/leptos-fullstack/src/lib.rs +9 -9
  212. package/templates/frontend/leptos-fullstack/src/main.rs +29 -29
  213. package/templates/frontend/leptos-fullstack/style/main.scss +19 -19
  214. package/templates/frontend/react/index.html +12 -12
  215. package/templates/frontend/react/package.json +35 -35
  216. package/templates/frontend/react/src/App.tsx +25 -25
  217. package/templates/frontend/react/src/main.tsx +9 -9
  218. package/templates/frontend/vue/package.json +32 -32
  219. package/templates/frontend/vue/src/App.vue +7 -7
  220. package/templates/frontend/vue/src/main.ts +10 -10
  221. package/templates/frontend/vue/src/router/index.ts +14 -14
  222. package/templates/frontend/vue/src/views/HomeView.vue +6 -6
  223. package/templates/hooks/pre-commit-dare-validate +24 -24
  224. package/templates/ide/antigravity/.agents/skills/dare-ax/SKILL.md +152 -0
  225. package/templates/ide/antigravity/.agents/skills/dare-dag-build/SKILL.md +154 -0
  226. package/templates/ide/antigravity/.agents/skills/dare-dag-run/SKILL.md +130 -0
  227. package/templates/ide/antigravity/.agents/skills/dare-dag-runner/SKILL.md +203 -203
  228. package/templates/ide/antigravity/.agents/skills/dare-dna/SKILL.md +63 -0
  229. package/templates/ide/antigravity/.agents/skills/dare-docker/SKILL.md +315 -0
  230. package/templates/ide/antigravity/.agents/skills/dare-frontend-design/SKILL.md +192 -0
  231. package/templates/ide/antigravity/.agents/skills/dare-laravel-api/SKILL.md +337 -0
  232. package/templates/ide/antigravity/.agents/skills/dare-layered-design/SKILL.md +166 -0
  233. package/templates/ide/antigravity/.agents/skills/dare-llm-integration/SKILL.md +217 -0
  234. package/templates/ide/antigravity/.agents/skills/dare-migrate/SKILL.md +61 -0
  235. package/templates/ide/antigravity/.agents/skills/dare-quality-telemetry/SKILL.md +187 -0
  236. package/templates/ide/antigravity/.agents/skills/dare-realtime/SKILL.md +217 -0
  237. package/templates/ide/antigravity/.agents/skills/dare-refine/SKILL.md +114 -114
  238. package/templates/ide/antigravity/.agents/skills/dare-reverse/SKILL.md +108 -0
  239. package/templates/ide/antigravity/.agents/skills/dare-review/SKILL.md +111 -111
  240. package/templates/ide/antigravity/.agents/skills/dare-rust-leptos/SKILL.md +263 -0
  241. package/templates/ide/antigravity/.agents/skills/dare-rust-workspace/SKILL.md +275 -275
  242. package/templates/ide/antigravity/.agents/skills/dare-security/SKILL.md +274 -0
  243. package/templates/ide/antigravity/.agents/skills/dare-tasks/SKILL.md +265 -265
  244. package/templates/ide/antigravity/.agents/skills/dare-telemetry/SKILL.md +188 -0
  245. package/templates/ide/antigravity/.agents/skills/skill-fastapi-api/SKILL.md +343 -0
  246. package/templates/ide/antigravity/.agents/skills/skill-go-gin-api/SKILL.md +377 -0
  247. package/templates/ide/antigravity/.agents/skills/skill-mcp-server/SKILL.md +382 -0
  248. package/templates/ide/antigravity/.agents/skills/skill-nestjs-api/SKILL.md +326 -0
  249. package/templates/ide/antigravity/.agents/skills/skill-rails-api/SKILL.md +393 -0
  250. package/templates/ide/antigravity/templates/BLUEPRINT-template.md +193 -193
  251. package/templates/ide/antigravity/templates/DESIGN-template.md +129 -129
  252. package/templates/ide/antigravity/templates/TASK-SPEC-template.md +141 -141
  253. package/templates/ide/claude/.claude/commands/dare-ax.md +131 -0
  254. package/templates/ide/claude/.claude/commands/dare-blueprint.md +134 -134
  255. package/templates/ide/claude/.claude/commands/dare-bugfix-design.md +119 -0
  256. package/templates/ide/claude/.claude/commands/dare-dag-build.md +151 -151
  257. package/templates/ide/claude/.claude/commands/dare-dag-run.md +109 -109
  258. package/templates/ide/claude/.claude/commands/dare-dag-runner.md +117 -0
  259. package/templates/ide/claude/.claude/commands/dare-dag-viz.md +197 -197
  260. package/templates/ide/claude/.claude/commands/dare-design.md +69 -69
  261. package/templates/ide/claude/.claude/commands/dare-dna.md +75 -0
  262. package/templates/ide/claude/.claude/commands/dare-docker.md +207 -0
  263. package/templates/ide/claude/.claude/commands/dare-execute.md +152 -152
  264. package/templates/ide/claude/.claude/commands/dare-feature-design.md +147 -0
  265. package/templates/ide/claude/.claude/commands/dare-frontend-design.md +149 -0
  266. package/templates/ide/claude/.claude/commands/dare-laravel-api.md +211 -0
  267. package/templates/ide/claude/.claude/commands/dare-layered-design.md +124 -0
  268. package/templates/ide/claude/.claude/commands/dare-llm-integration.md +148 -0
  269. package/templates/ide/claude/.claude/commands/dare-migrate.md +72 -0
  270. package/templates/ide/claude/.claude/commands/dare-quality-telemetry.md +166 -0
  271. package/templates/ide/claude/.claude/commands/dare-realtime.md +159 -0
  272. package/templates/ide/claude/.claude/commands/dare-refine.md +145 -145
  273. package/templates/ide/claude/.claude/commands/dare-reverse.md +139 -0
  274. package/templates/ide/claude/.claude/commands/dare-review.md +113 -113
  275. package/templates/ide/claude/.claude/commands/dare-rust-leptos.md +269 -269
  276. package/templates/ide/claude/.claude/commands/dare-rust-workspace.md +209 -209
  277. package/templates/ide/claude/.claude/commands/dare-security.md +232 -232
  278. package/templates/ide/claude/.claude/commands/dare-tasks.md +70 -70
  279. package/templates/ide/claude/.claude/commands/dare-telemetry.md +132 -0
  280. package/templates/ide/claude/.claude/commands/skill-fastapi-api.md +205 -0
  281. package/templates/ide/claude/.claude/commands/skill-go-gin-api.md +232 -0
  282. package/templates/ide/claude/.claude/commands/skill-mcp-server.md +228 -0
  283. package/templates/ide/claude/.claude/commands/skill-nestjs-api.md +210 -0
  284. package/templates/ide/claude/.claude/commands/skill-rails-api.md +236 -0
  285. package/templates/ide/claude/.claude/settings.example.json +35 -35
  286. package/templates/ide/claude/CLAUDE.md +146 -146
  287. package/templates/ide/claude/templates/BLUEPRINT-template.md +193 -193
  288. package/templates/ide/claude/templates/DESIGN-template.md +129 -129
  289. package/templates/ide/claude/templates/TASK-SPEC-template.md +141 -141
  290. package/templates/ide/cursor/.cursor/commands/dag-viz.md +139 -0
  291. package/templates/ide/cursor/.cursor/commands/generate-blueprint.md +86 -86
  292. package/templates/ide/cursor/.cursor/commands/generate-design.md +35 -35
  293. package/templates/ide/cursor/.cursor/commands/generate-tasks.md +184 -184
  294. package/templates/ide/cursor/.cursor/commands/refine-task.md +107 -107
  295. package/templates/ide/cursor/.cursor/commands/review-task.md +91 -91
  296. package/templates/ide/cursor/.cursor/commands/run-dag.md +110 -110
  297. package/templates/ide/cursor/.cursor/rules/skill-ax.mdc +263 -0
  298. package/templates/ide/cursor/.cursor/rules/skill-dag-build.mdc +173 -0
  299. package/templates/ide/cursor/.cursor/rules/skill-dag-run.mdc +134 -0
  300. package/templates/ide/cursor/.cursor/rules/skill-dag-runner.mdc +221 -221
  301. package/templates/ide/cursor/.cursor/rules/skill-dna.mdc +63 -0
  302. package/templates/ide/cursor/.cursor/rules/skill-fastapi-api.mdc +352 -0
  303. package/templates/ide/cursor/.cursor/rules/skill-frontend-design.mdc +244 -0
  304. package/templates/ide/cursor/.cursor/rules/skill-go-gin-api.mdc +371 -0
  305. package/templates/ide/cursor/.cursor/rules/skill-layered-design.mdc +266 -0
  306. package/templates/ide/cursor/.cursor/rules/skill-llm-integration.mdc +295 -0
  307. package/templates/ide/cursor/.cursor/rules/skill-mcp-server.mdc +367 -0
  308. package/templates/ide/cursor/.cursor/rules/skill-migrate.mdc +58 -0
  309. package/templates/ide/cursor/.cursor/rules/skill-nestjs-api.mdc +346 -0
  310. package/templates/ide/cursor/.cursor/rules/skill-quality-telemetry.mdc +248 -0
  311. package/templates/ide/cursor/.cursor/rules/skill-rails-api.mdc +400 -0
  312. package/templates/ide/cursor/.cursor/rules/skill-realtime.mdc +262 -0
  313. package/templates/ide/cursor/.cursor/rules/skill-reverse.mdc +107 -0
  314. package/templates/ide/cursor/.cursor/rules/skill-rust-leptos.mdc +281 -0
  315. package/templates/ide/cursor/.cursor/rules/skill-rust-workspace.mdc +312 -312
  316. package/templates/ide/cursor/.cursor/rules/skill-security.mdc +245 -245
  317. package/templates/ide/cursor/templates/BLUEPRINT-template.md +193 -193
  318. package/templates/ide/cursor/templates/DESIGN-template.md +129 -129
  319. package/templates/ide/cursor/templates/TASK-SPEC-template.md +141 -141
  320. package/templates/shared/docker-compose.yml +41 -41
  321. package/dist/__tests__/dag-runner/adapters.test.d.ts +0 -2
  322. package/dist/__tests__/dag-runner/adapters.test.d.ts.map +0 -1
  323. package/dist/__tests__/dag-runner/adapters.test.js +0 -134
  324. package/dist/__tests__/dag-runner/adapters.test.js.map +0 -1
  325. package/dist/dag-runner/adapters/antigravity.d.ts +0 -6
  326. package/dist/dag-runner/adapters/antigravity.d.ts.map +0 -1
  327. package/dist/dag-runner/adapters/antigravity.js +0 -54
  328. package/dist/dag-runner/adapters/antigravity.js.map +0 -1
  329. package/dist/dag-runner/adapters/claude.d.ts +0 -6
  330. package/dist/dag-runner/adapters/claude.d.ts.map +0 -1
  331. package/dist/dag-runner/adapters/claude.js +0 -48
  332. package/dist/dag-runner/adapters/claude.js.map +0 -1
  333. package/dist/dag-runner/adapters/cursor.d.ts +0 -6
  334. package/dist/dag-runner/adapters/cursor.d.ts.map +0 -1
  335. package/dist/dag-runner/adapters/cursor.js +0 -58
  336. package/dist/dag-runner/adapters/cursor.js.map +0 -1
  337. package/dist/dag-runner/adapters/index.d.ts +0 -46
  338. package/dist/dag-runner/adapters/index.d.ts.map +0 -1
  339. package/dist/dag-runner/adapters/index.js +0 -55
  340. package/dist/dag-runner/adapters/index.js.map +0 -1
  341. package/dist/dag-runner/utils/timeout.d.ts +0 -27
  342. package/dist/dag-runner/utils/timeout.d.ts.map +0 -1
  343. package/dist/dag-runner/utils/timeout.js +0 -55
  344. package/dist/dag-runner/utils/timeout.js.map +0 -1
@@ -0,0 +1,272 @@
1
+ /**
2
+ * `dare skill publish <path>` — publish a local skill to the local or remote registry.
3
+ *
4
+ * Usage:
5
+ * dare skill publish ./packages/skills/my-skill
6
+ * dare skill publish ./packages/skills/my-skill --dry-run
7
+ * dare skill publish ./packages/skills/my-skill --json
8
+ * dare skill publish ./packages/skills/my-skill --remote --token ghp_abc123
9
+ *
10
+ * Behaviour:
11
+ * 1. Validate that <path>/skill.yml exists and contains required fields.
12
+ * 2. Enforce MIT license (D-001).
13
+ * 3. List all publishable files (excluding node_modules/, dist/, .git/).
14
+ * 4. If --dry-run: report what would be published without writing.
15
+ * 5. If --remote: publish to Vercel registry backend (requires --token).
16
+ * 6. Otherwise: copy files into ~/.dare/registry/<name>/<version>/ and
17
+ * update index.json.
18
+ * 7. Print the "URL" where the skill is available.
19
+ *
20
+ * @module skills/commands/publish
21
+ */
22
+ import { Command } from 'commander';
23
+ import chalk from 'chalk';
24
+ import fs from 'fs-extra';
25
+ import path from 'path';
26
+ import { parse as parseYaml } from 'yaml';
27
+ import { LocalRegistry } from '../registry-local.js';
28
+ import { RemoteRegistry } from '../registry-remote.js';
29
+ // ---------------------------------------------------------------------------
30
+ // Validation
31
+ // ---------------------------------------------------------------------------
32
+ const REQUIRED_FIELDS = [
33
+ 'name',
34
+ 'version',
35
+ 'description',
36
+ 'author',
37
+ 'license',
38
+ 'dare_version',
39
+ ];
40
+ /**
41
+ * Reads and validates `skill.yml` from the given directory.
42
+ * Returns the parsed metadata or throws a descriptive Error.
43
+ */
44
+ export function readAndValidateSkillYml(skillPath) {
45
+ const ymlPath = path.join(skillPath, 'skill.yml');
46
+ if (!fs.pathExistsSync(ymlPath)) {
47
+ throw new Error(`Missing skill.yml at ${ymlPath}`);
48
+ }
49
+ const raw = fs.readFileSync(ymlPath, 'utf-8');
50
+ let parsed;
51
+ try {
52
+ parsed = parseYaml(raw);
53
+ }
54
+ catch (err) {
55
+ throw new Error(`Failed to parse skill.yml: ${err instanceof Error ? err.message : String(err)}`);
56
+ }
57
+ if (typeof parsed !== 'object' || parsed === null) {
58
+ throw new Error('skill.yml must be a YAML object');
59
+ }
60
+ const obj = parsed;
61
+ // Validate required fields.
62
+ for (const field of REQUIRED_FIELDS) {
63
+ if (typeof obj[field] !== 'string' || !obj[field].trim()) {
64
+ throw new Error(`skill.yml is missing required field "${field}" (must be a non-empty string)`);
65
+ }
66
+ }
67
+ const meta = parsed;
68
+ // D-001: only MIT license allowed.
69
+ if (meta.license.trim().toUpperCase() !== 'MIT') {
70
+ throw new Error(`License "${meta.license}" is not allowed. Only MIT is accepted (D-001). ` +
71
+ 'Update skill.yml to set license: MIT.');
72
+ }
73
+ return meta;
74
+ }
75
+ // ---------------------------------------------------------------------------
76
+ // File collection
77
+ // ---------------------------------------------------------------------------
78
+ const EXCLUDED_DIRS = new Set(['node_modules', 'dist', '.git']);
79
+ /**
80
+ * Recursively lists all files under `dir`, excluding `EXCLUDED_DIRS`.
81
+ * Returns paths relative to `dir`.
82
+ */
83
+ export function collectFiles(dir, base = dir) {
84
+ const result = [];
85
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
86
+ for (const entry of entries) {
87
+ if (EXCLUDED_DIRS.has(entry.name))
88
+ continue;
89
+ const full = path.join(dir, entry.name);
90
+ const rel = path.relative(base, full);
91
+ if (entry.isDirectory()) {
92
+ result.push(...collectFiles(full, base));
93
+ }
94
+ else {
95
+ result.push(rel);
96
+ }
97
+ }
98
+ return result.sort();
99
+ }
100
+ // ---------------------------------------------------------------------------
101
+ // Command
102
+ // ---------------------------------------------------------------------------
103
+ export const skillPublishCommand = new Command('publish')
104
+ .description('Publish a local skill to the registry (local by default, or remote with --remote)')
105
+ .argument('<path>', 'Path to the skill directory containing skill.yml')
106
+ .option('--dry-run', 'Validate and list files without publishing', false)
107
+ .option('--json', 'Output as JSON (machine-readable)', false)
108
+ .option('--remote', 'Publish to the remote Vercel registry backend', false)
109
+ .option('--token <github-token>', 'GitHub Bearer token (required with --remote)')
110
+ .action(async (skillPathArg, options) => {
111
+ const skillPath = path.resolve(process.cwd(), skillPathArg);
112
+ const result = {
113
+ name: '',
114
+ version: '',
115
+ files: [],
116
+ published: false,
117
+ dryRun: options.dryRun,
118
+ };
119
+ // ── 0. Validate --remote requirements ────────────────────────────────────
120
+ if (options.remote && !options.token) {
121
+ result.error = '--token <github-token> is required when using --remote';
122
+ if (options.json) {
123
+ process.stdout.write(JSON.stringify(result, null, 2) + '\n');
124
+ }
125
+ else {
126
+ console.error(chalk.red(`\n Error: ${result.error}\n`));
127
+ }
128
+ process.exit(1);
129
+ }
130
+ // ── 1. Validate skill.yml ─────────────────────────────────────────────────
131
+ let meta;
132
+ try {
133
+ meta = readAndValidateSkillYml(skillPath);
134
+ }
135
+ catch (err) {
136
+ result.error = err instanceof Error ? err.message : String(err);
137
+ if (options.json) {
138
+ process.stdout.write(JSON.stringify(result, null, 2) + '\n');
139
+ }
140
+ else {
141
+ console.error(chalk.red(`\n ${result.error}\n`));
142
+ }
143
+ process.exit(1);
144
+ }
145
+ result.name = meta.name;
146
+ result.version = meta.version;
147
+ // ── 2. Collect files ──────────────────────────────────────────────────────
148
+ let files;
149
+ try {
150
+ files = collectFiles(skillPath);
151
+ }
152
+ catch (err) {
153
+ result.error = `Cannot read skill directory: ${err instanceof Error ? err.message : String(err)}`;
154
+ if (options.json) {
155
+ process.stdout.write(JSON.stringify(result, null, 2) + '\n');
156
+ }
157
+ else {
158
+ console.error(chalk.red(`\n ${result.error}\n`));
159
+ }
160
+ process.exit(1);
161
+ }
162
+ result.files = files;
163
+ // ── 3. Dry run ─────────────────────────────────────────────────────────────
164
+ if (options.dryRun) {
165
+ const target = options.remote ? 'remote' : 'local';
166
+ if (options.json) {
167
+ process.stdout.write(JSON.stringify({ ...result, target }, null, 2) + '\n');
168
+ }
169
+ else {
170
+ console.log(chalk.bold.yellow('\n Dry run — nothing will be published.\n'));
171
+ console.log(` Skill : ${chalk.cyan(meta.name)}@${meta.version}`);
172
+ console.log(` Author : ${meta.author}`);
173
+ console.log(` License: ${meta.license}`);
174
+ console.log(` Target : ${target}`);
175
+ console.log(`\n Files (${files.length}):`);
176
+ for (const f of files) {
177
+ console.log(` ${chalk.gray(f)}`);
178
+ }
179
+ console.log('');
180
+ }
181
+ return;
182
+ }
183
+ // ── 4a. Remote publish ──────────────────────────────────────────────────────
184
+ if (options.remote && options.token) {
185
+ result.target = 'remote';
186
+ const remote = new RemoteRegistry();
187
+ try {
188
+ await remote.publish(meta.name, {
189
+ version: meta.version,
190
+ description: meta.description,
191
+ author: meta.author,
192
+ license: meta.license,
193
+ dare_version: meta.dare_version,
194
+ dependencies: meta.dependencies ?? {},
195
+ keywords: meta.keywords ?? [],
196
+ homepage: meta.homepage,
197
+ }, options.token);
198
+ }
199
+ catch (err) {
200
+ result.error = `Remote publish failed: ${err instanceof Error ? err.message : String(err)}`;
201
+ if (options.json) {
202
+ process.stdout.write(JSON.stringify(result, null, 2) + '\n');
203
+ }
204
+ else {
205
+ console.error(chalk.red(`\n ${result.error}\n`));
206
+ }
207
+ process.exit(1);
208
+ }
209
+ result.published = true;
210
+ result.url = `https://dare-registry.vercel.app/api/skills/${meta.name}`;
211
+ if (options.json) {
212
+ process.stdout.write(JSON.stringify(result, null, 2) + '\n');
213
+ }
214
+ else {
215
+ console.log(chalk.green(`\n Published ${chalk.bold(meta.name)}@${meta.version} to remote registry.`));
216
+ console.log(chalk.gray(` URL: ${result.url}`));
217
+ console.log('');
218
+ }
219
+ return;
220
+ }
221
+ // ── 4b. Local publish ──────────────────────────────────────────────────────
222
+ result.target = 'local';
223
+ const localRegistry = new LocalRegistry();
224
+ const registryMeta = {
225
+ name: meta.name,
226
+ version: meta.version,
227
+ description: meta.description,
228
+ author: meta.author,
229
+ license: meta.license,
230
+ homepage: meta.homepage,
231
+ repository: meta.repository,
232
+ keywords: meta.keywords ?? [],
233
+ dare_version: meta.dare_version,
234
+ published_at: new Date().toISOString(),
235
+ size_kb: Math.ceil(files.reduce((acc, f) => {
236
+ try {
237
+ return acc + fs.statSync(path.join(skillPath, f)).size;
238
+ }
239
+ catch {
240
+ return acc;
241
+ }
242
+ }, 0) / 1024),
243
+ source: 'local',
244
+ };
245
+ try {
246
+ localRegistry.publish(skillPath, registryMeta);
247
+ }
248
+ catch (err) {
249
+ result.error = `Failed to publish: ${err instanceof Error ? err.message : String(err)}`;
250
+ if (options.json) {
251
+ process.stdout.write(JSON.stringify(result, null, 2) + '\n');
252
+ }
253
+ else {
254
+ console.error(chalk.red(`\n ${result.error}\n`));
255
+ }
256
+ process.exit(1);
257
+ }
258
+ result.published = true;
259
+ result.url = localRegistry['_root']
260
+ ? `file://${path.join(localRegistry['_root'], meta.name, meta.version)}`
261
+ : `local://${meta.name}@${meta.version}`;
262
+ if (options.json) {
263
+ process.stdout.write(JSON.stringify(result, null, 2) + '\n');
264
+ }
265
+ else {
266
+ console.log(chalk.green(`\n Published ${chalk.bold(meta.name)}@${meta.version} to local registry.`));
267
+ console.log(chalk.gray(` URL: ${result.url}`));
268
+ console.log(chalk.gray(` Files: ${files.length}`));
269
+ console.log('');
270
+ }
271
+ });
272
+ //# sourceMappingURL=publish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/skills/commands/publish.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * `dare skill remove <name>` — uninstall a skill from the current project.
3
+ *
4
+ * Usage:
5
+ * dare skill remove dare-ax
6
+ * dare skill remove dare-ax --force # remove even if other skills depend on it
7
+ * dare skill remove dare-ax --json
8
+ *
9
+ * Behaviour:
10
+ * 1. Verify skill is installed.
11
+ * 2. Check for reverse dependencies (other installed skills that depend on this one).
12
+ * 3. Refuse unless --force is passed.
13
+ * 4. Remove from .dare/skills.yml.
14
+ *
15
+ * @module skills/commands/remove
16
+ */
17
+ import { Command } from 'commander';
18
+ export declare const skillRemoveCommand: Command;
19
+ //# sourceMappingURL=remove.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../src/skills/commands/remove.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBpC,eAAO,MAAM,kBAAkB,SA6F3B,CAAC"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * `dare skill remove <name>` — uninstall a skill from the current project.
3
+ *
4
+ * Usage:
5
+ * dare skill remove dare-ax
6
+ * dare skill remove dare-ax --force # remove even if other skills depend on it
7
+ * dare skill remove dare-ax --json
8
+ *
9
+ * Behaviour:
10
+ * 1. Verify skill is installed.
11
+ * 2. Check for reverse dependencies (other installed skills that depend on this one).
12
+ * 3. Refuse unless --force is passed.
13
+ * 4. Remove from .dare/skills.yml.
14
+ *
15
+ * @module skills/commands/remove
16
+ */
17
+ import { Command } from 'commander';
18
+ import chalk from 'chalk';
19
+ import { ManifestReader, ManifestWriter } from '../manifest.js';
20
+ // ---------------------------------------------------------------------------
21
+ // Command
22
+ // ---------------------------------------------------------------------------
23
+ export const skillRemoveCommand = new Command('remove')
24
+ .description('Remove an installed skill from this project')
25
+ .argument('<name>', 'Skill name to remove (e.g. dare-ax)')
26
+ .option('--force', 'Remove even if other installed skills depend on this one', false)
27
+ .option('--json', 'Output as JSON (machine-readable)', false)
28
+ .action((name, options) => {
29
+ const cwd = process.cwd();
30
+ const result = {
31
+ removed: null,
32
+ skipped: false,
33
+ reverseDependencies: [],
34
+ };
35
+ // ── 1. Check manifest ────────────────────────────────────────────────────
36
+ const reader = new ManifestReader();
37
+ if (!reader.exists(cwd)) {
38
+ const reason = 'No .dare/skills.yml found. Nothing to remove.';
39
+ result.skipped = true;
40
+ result.reason = reason;
41
+ if (options.json) {
42
+ process.stdout.write(JSON.stringify(result, null, 2) + '\n');
43
+ }
44
+ else {
45
+ console.log(chalk.yellow(`\n ${reason}\n`));
46
+ }
47
+ return;
48
+ }
49
+ const manifest = reader.read(cwd);
50
+ const target = manifest.skills.find((s) => s.name === name);
51
+ if (!target) {
52
+ const reason = `Skill "${name}" is not installed in this project.`;
53
+ result.skipped = true;
54
+ result.reason = reason;
55
+ if (options.json) {
56
+ process.stdout.write(JSON.stringify(result, null, 2) + '\n');
57
+ }
58
+ else {
59
+ console.log(chalk.yellow(`\n ${reason}\n`));
60
+ console.log(chalk.gray(' Run `dare skill list --installed` to see installed skills.\n'));
61
+ }
62
+ return;
63
+ }
64
+ // ── 2. Reverse dependency check ──────────────────────────────────────────
65
+ const reverseDeps = manifest.skills.filter((s) => s.name !== name && s.dependsOn?.includes(name));
66
+ result.reverseDependencies = reverseDeps.map((s) => s.name);
67
+ if (reverseDeps.length > 0 && !options.force) {
68
+ const reason = `Cannot remove "${name}": other installed skills depend on it — ` +
69
+ `${reverseDeps.map((s) => s.name).join(', ')}. ` +
70
+ 'Use --force to remove anyway.';
71
+ result.skipped = true;
72
+ result.reason = reason;
73
+ if (options.json) {
74
+ process.stdout.write(JSON.stringify(result, null, 2) + '\n');
75
+ }
76
+ else {
77
+ console.error(chalk.red(`\n ${reason}\n`));
78
+ }
79
+ process.exit(1);
80
+ }
81
+ // ── 3. Remove ────────────────────────────────────────────────────────────
82
+ const writer = new ManifestWriter();
83
+ writer.removeSkill(cwd, name);
84
+ result.removed = name;
85
+ if (options.json) {
86
+ process.stdout.write(JSON.stringify(result, null, 2) + '\n');
87
+ return;
88
+ }
89
+ console.log(chalk.green(`\n Removed ${chalk.bold(name)} from .dare/skills.yml.`));
90
+ if (reverseDeps.length > 0) {
91
+ console.log(chalk.yellow(` Warning: ${reverseDeps.map((s) => s.name).join(', ')} ` +
92
+ `still depend on "${name}" (removed with --force).`));
93
+ }
94
+ console.log('');
95
+ });
96
+ //# sourceMappingURL=remove.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/skills/commands/remove.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * `dare skill update <name[@version]>` — update an installed skill.
3
+ *
4
+ * Usage:
5
+ * dare skill update dare-ax # update to latest
6
+ * dare skill update dare-ax@1.1.0 # update to specific version
7
+ * dare skill update dare-ax --dry-run # show diff without changing
8
+ * dare skill update dare-ax --json
9
+ *
10
+ * Behaviour:
11
+ * 1. Parse `name@version` (defaults to registry version if no version given).
12
+ * 2. Verify skill is installed (read manifest).
13
+ * 3. Compare installed version vs. target version.
14
+ * 4. If equal → "already up to date", exit 0.
15
+ * 5. If different → remove old entry, install new entry in manifest.
16
+ *
17
+ * @module skills/commands/update
18
+ */
19
+ import { Command } from 'commander';
20
+ export interface UpdateResult {
21
+ name: string;
22
+ from: string | null;
23
+ to: string;
24
+ updated: boolean;
25
+ alreadyUpToDate: boolean;
26
+ notInstalled: boolean;
27
+ dryRun: boolean;
28
+ error?: string;
29
+ }
30
+ export declare const skillUpdateCommand: Command;
31
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/skills/commands/update.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAsBD,eAAO,MAAM,kBAAkB,SAmH3B,CAAC"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * `dare skill update <name[@version]>` — update an installed skill.
3
+ *
4
+ * Usage:
5
+ * dare skill update dare-ax # update to latest
6
+ * dare skill update dare-ax@1.1.0 # update to specific version
7
+ * dare skill update dare-ax --dry-run # show diff without changing
8
+ * dare skill update dare-ax --json
9
+ *
10
+ * Behaviour:
11
+ * 1. Parse `name@version` (defaults to registry version if no version given).
12
+ * 2. Verify skill is installed (read manifest).
13
+ * 3. Compare installed version vs. target version.
14
+ * 4. If equal → "already up to date", exit 0.
15
+ * 5. If different → remove old entry, install new entry in manifest.
16
+ *
17
+ * @module skills/commands/update
18
+ */
19
+ import { Command } from 'commander';
20
+ import chalk from 'chalk';
21
+ import { registry } from '../registry.js';
22
+ import { LocalRegistry } from '../registry-local.js';
23
+ import { ManifestReader, ManifestWriter } from '../manifest.js';
24
+ // ---------------------------------------------------------------------------
25
+ // Helpers
26
+ // ---------------------------------------------------------------------------
27
+ /**
28
+ * Parses `name[@version]` into { name, version }.
29
+ * Version defaults to `null` (meaning "use registry latest").
30
+ */
31
+ function parsePackageSpec(spec) {
32
+ const atIdx = spec.lastIndexOf('@');
33
+ if (atIdx > 0) {
34
+ return { name: spec.slice(0, atIdx), version: spec.slice(atIdx + 1) || null };
35
+ }
36
+ return { name: spec, version: null };
37
+ }
38
+ // ---------------------------------------------------------------------------
39
+ // Command
40
+ // ---------------------------------------------------------------------------
41
+ export const skillUpdateCommand = new Command('update')
42
+ .description('Update an installed skill to a newer version')
43
+ .argument('<name>', 'Skill name with optional version (e.g. dare-ax or dare-ax@1.1.0)')
44
+ .option('--dry-run', 'Show version diff without making changes', false)
45
+ .option('--json', 'Output as JSON (machine-readable)', false)
46
+ .action(async (spec, options) => {
47
+ const cwd = process.cwd();
48
+ const { name, version: requestedVersion } = parsePackageSpec(spec);
49
+ const result = {
50
+ name,
51
+ from: null,
52
+ to: '',
53
+ updated: false,
54
+ alreadyUpToDate: false,
55
+ notInstalled: false,
56
+ dryRun: options.dryRun,
57
+ };
58
+ // ── 1. Verify skill exists in registry (mock or local) ───────────────────
59
+ const mockSkill = registry.findByName(name);
60
+ const localRegistry = new LocalRegistry();
61
+ const localSkill = localRegistry.find(name);
62
+ const registrySkill = mockSkill ?? (localSkill ? { ...localSkill, dependencies: {}, published_at: localSkill.published_at ?? new Date().toISOString(), size_kb: localSkill.size_kb ?? 0 } : undefined);
63
+ if (!registrySkill) {
64
+ result.error = `Skill "${name}" not found in the registry.`;
65
+ if (options.json) {
66
+ process.stdout.write(JSON.stringify(result, null, 2) + '\n');
67
+ }
68
+ else {
69
+ console.error(chalk.red(`\n ${result.error}`));
70
+ console.error(chalk.gray(' Run `dare skill list` to see available skills.\n'));
71
+ }
72
+ process.exit(1);
73
+ }
74
+ const targetVersion = requestedVersion ?? registrySkill.version;
75
+ result.to = targetVersion;
76
+ // ── 2. Verify skill is installed ─────────────────────────────────────────
77
+ const reader = new ManifestReader();
78
+ const manifest = reader.readOrEmpty(cwd);
79
+ const installed = manifest.skills.find((s) => s.name === name);
80
+ if (!installed) {
81
+ result.notInstalled = true;
82
+ result.error = `Skill "${name}" is not installed. Run \`dare skill add ${name}\` first.`;
83
+ if (options.json) {
84
+ process.stdout.write(JSON.stringify(result, null, 2) + '\n');
85
+ }
86
+ else {
87
+ console.error(chalk.red(`\n ${result.error}\n`));
88
+ }
89
+ process.exit(1);
90
+ }
91
+ result.from = installed.version;
92
+ // ── 3. Compare versions ──────────────────────────────────────────────────
93
+ if (installed.version === targetVersion) {
94
+ result.alreadyUpToDate = true;
95
+ if (options.json) {
96
+ process.stdout.write(JSON.stringify(result, null, 2) + '\n');
97
+ }
98
+ else {
99
+ console.log(chalk.gray(`\n ${chalk.cyan(name)} is already at v${targetVersion} — nothing to do.\n`));
100
+ }
101
+ return;
102
+ }
103
+ // ── 4. Dry run ───────────────────────────────────────────────────────────
104
+ if (options.dryRun) {
105
+ if (options.json) {
106
+ process.stdout.write(JSON.stringify(result, null, 2) + '\n');
107
+ }
108
+ else {
109
+ console.log(chalk.bold.yellow('\n Dry run — no changes will be made.\n'));
110
+ console.log(` Would update ${chalk.cyan(name)}: ` +
111
+ `${chalk.gray('v' + installed.version)} → ${chalk.green('v' + targetVersion)}\n`);
112
+ }
113
+ return;
114
+ }
115
+ // ── 5. Perform update ────────────────────────────────────────────────────
116
+ const writer = new ManifestWriter();
117
+ const newEntry = {
118
+ name,
119
+ version: targetVersion,
120
+ enabled: installed.enabled,
121
+ dependsOn: installed.dependsOn,
122
+ };
123
+ writer.addSkill(cwd, newEntry); // addSkill does upsert by name
124
+ result.updated = true;
125
+ if (options.json) {
126
+ process.stdout.write(JSON.stringify(result, null, 2) + '\n');
127
+ }
128
+ else {
129
+ console.log(chalk.green(`\n Updated ${chalk.bold(name)}: v${installed.version} → v${targetVersion}\n`));
130
+ }
131
+ });
132
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/skills/commands/update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * `dare skill` — skill package management for DARE projects.
3
+ *
4
+ * Subcommands:
5
+ * list [--installed] [--json] list registry or installed skills
6
+ * info <name> [--json] show skill details
7
+ * add <name[@version]> [--dry-run] [--json] install a skill
8
+ * remove <name> [--force] [--json] uninstall a skill
9
+ * update <name[@version]> [--dry-run] [--json] update an installed skill
10
+ * publish <path> [--dry-run] [--json] publish a skill to local registry
11
+ *
12
+ * @module skills
13
+ */
14
+ import { Command } from 'commander';
15
+ export declare const skillCommand: Command;
16
+ export { ManifestReader, ManifestWriter } from './manifest.js';
17
+ export type { Manifest, SkillEntry } from './manifest.js';
18
+ export { Registry, registry } from './registry.js';
19
+ export type { RegistrySkill } from './registry.js';
20
+ export { LocalRegistry } from './registry-local.js';
21
+ export type { LocalRegistrySkill } from './registry-local.js';
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,eAAO,MAAM,YAAY,SAOS,CAAC;AAGnC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/D,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACnD,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * `dare skill` — skill package management for DARE projects.
3
+ *
4
+ * Subcommands:
5
+ * list [--installed] [--json] list registry or installed skills
6
+ * info <name> [--json] show skill details
7
+ * add <name[@version]> [--dry-run] [--json] install a skill
8
+ * remove <name> [--force] [--json] uninstall a skill
9
+ * update <name[@version]> [--dry-run] [--json] update an installed skill
10
+ * publish <path> [--dry-run] [--json] publish a skill to local registry
11
+ *
12
+ * @module skills
13
+ */
14
+ import { Command } from 'commander';
15
+ import { skillListCommand } from './commands/list.js';
16
+ import { skillInfoCommand } from './commands/info.js';
17
+ import { skillAddCommand } from './commands/add.js';
18
+ import { skillRemoveCommand } from './commands/remove.js';
19
+ import { skillUpdateCommand } from './commands/update.js';
20
+ import { skillPublishCommand } from './commands/publish.js';
21
+ export const skillCommand = new Command('skill')
22
+ .description('Manage DARE skills for this project (add, remove, list, info, update, publish)')
23
+ .addCommand(skillListCommand)
24
+ .addCommand(skillInfoCommand)
25
+ .addCommand(skillAddCommand)
26
+ .addCommand(skillRemoveCommand)
27
+ .addCommand(skillUpdateCommand)
28
+ .addCommand(skillPublishCommand);
29
+ // Re-export lower-level utilities so other modules can import from 'skills/index'.
30
+ export { ManifestReader, ManifestWriter } from './manifest.js';
31
+ export { Registry, registry } from './registry.js';
32
+ export { LocalRegistry } from './registry-local.js';
33
+ //# sourceMappingURL=index.js.map