@mclawnet/swarm 0.1.12 → 0.1.14

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 (368) hide show
  1. package/dist/__tests__/always-on-activity-reader.test.d.ts +2 -0
  2. package/dist/__tests__/always-on-activity-reader.test.d.ts.map +1 -0
  3. package/dist/__tests__/always-on-activity-reader.test.js +193 -0
  4. package/dist/__tests__/always-on-activity-reader.test.js.map +1 -0
  5. package/dist/__tests__/always-on-config.test.d.ts +2 -0
  6. package/dist/__tests__/always-on-config.test.d.ts.map +1 -0
  7. package/dist/__tests__/always-on-config.test.js +285 -0
  8. package/dist/__tests__/always-on-config.test.js.map +1 -0
  9. package/dist/__tests__/always-on-manager.test.d.ts +2 -0
  10. package/dist/__tests__/always-on-manager.test.d.ts.map +1 -0
  11. package/dist/__tests__/always-on-manager.test.js +797 -0
  12. package/dist/__tests__/always-on-manager.test.js.map +1 -0
  13. package/dist/__tests__/always-on-parity.test.d.ts +2 -0
  14. package/dist/__tests__/always-on-parity.test.d.ts.map +1 -0
  15. package/dist/__tests__/always-on-parity.test.js +20 -0
  16. package/dist/__tests__/always-on-parity.test.js.map +1 -0
  17. package/dist/__tests__/cascade-picker.test.d.ts +2 -0
  18. package/dist/__tests__/cascade-picker.test.d.ts.map +1 -0
  19. package/dist/__tests__/cascade-picker.test.js +122 -0
  20. package/dist/__tests__/cascade-picker.test.js.map +1 -0
  21. package/dist/__tests__/coordinator-shipment.test.d.ts +2 -0
  22. package/dist/__tests__/coordinator-shipment.test.d.ts.map +1 -0
  23. package/dist/__tests__/coordinator-shipment.test.js +280 -0
  24. package/dist/__tests__/coordinator-shipment.test.js.map +1 -0
  25. package/dist/__tests__/coordinator-workspace-recover.test.d.ts +2 -0
  26. package/dist/__tests__/coordinator-workspace-recover.test.d.ts.map +1 -0
  27. package/dist/__tests__/coordinator-workspace-recover.test.js +140 -0
  28. package/dist/__tests__/coordinator-workspace-recover.test.js.map +1 -0
  29. package/dist/__tests__/coordinator-workspace.test.d.ts +2 -0
  30. package/dist/__tests__/coordinator-workspace.test.d.ts.map +1 -0
  31. package/dist/__tests__/coordinator-workspace.test.js +135 -0
  32. package/dist/__tests__/coordinator-workspace.test.js.map +1 -0
  33. package/dist/__tests__/default-runner-epipe.test.d.ts +2 -0
  34. package/dist/__tests__/default-runner-epipe.test.d.ts.map +1 -0
  35. package/dist/__tests__/default-runner-epipe.test.js +43 -0
  36. package/dist/__tests__/default-runner-epipe.test.js.map +1 -0
  37. package/dist/__tests__/discovery-scheduler.test.d.ts +2 -0
  38. package/dist/__tests__/discovery-scheduler.test.d.ts.map +1 -0
  39. package/dist/__tests__/discovery-scheduler.test.js +367 -0
  40. package/dist/__tests__/discovery-scheduler.test.js.map +1 -0
  41. package/dist/__tests__/env-forward-e2e.test.d.ts +2 -0
  42. package/dist/__tests__/env-forward-e2e.test.d.ts.map +1 -0
  43. package/dist/__tests__/env-forward-e2e.test.js +57 -0
  44. package/dist/__tests__/env-forward-e2e.test.js.map +1 -0
  45. package/dist/__tests__/gh-pr-creator.test.d.ts +2 -0
  46. package/dist/__tests__/gh-pr-creator.test.d.ts.map +1 -0
  47. package/dist/__tests__/gh-pr-creator.test.js +107 -0
  48. package/dist/__tests__/gh-pr-creator.test.js.map +1 -0
  49. package/dist/__tests__/git-worktree-provider.test.d.ts +2 -0
  50. package/dist/__tests__/git-worktree-provider.test.d.ts.map +1 -0
  51. package/dist/__tests__/git-worktree-provider.test.js +98 -0
  52. package/dist/__tests__/git-worktree-provider.test.js.map +1 -0
  53. package/dist/__tests__/gitignore-check.test.d.ts +2 -0
  54. package/dist/__tests__/gitignore-check.test.d.ts.map +1 -0
  55. package/dist/__tests__/gitignore-check.test.js +39 -0
  56. package/dist/__tests__/gitignore-check.test.js.map +1 -0
  57. package/dist/__tests__/idea-research-source.test.d.ts +2 -0
  58. package/dist/__tests__/idea-research-source.test.d.ts.map +1 -0
  59. package/dist/__tests__/idea-research-source.test.js +425 -0
  60. package/dist/__tests__/idea-research-source.test.js.map +1 -0
  61. package/dist/__tests__/idea-todo-source.test.d.ts +2 -0
  62. package/dist/__tests__/idea-todo-source.test.d.ts.map +1 -0
  63. package/dist/__tests__/idea-todo-source.test.js +258 -0
  64. package/dist/__tests__/idea-todo-source.test.js.map +1 -0
  65. package/dist/__tests__/inbox-store-notbefore.test.d.ts +2 -0
  66. package/dist/__tests__/inbox-store-notbefore.test.d.ts.map +1 -0
  67. package/dist/__tests__/inbox-store-notbefore.test.js +47 -0
  68. package/dist/__tests__/inbox-store-notbefore.test.js.map +1 -0
  69. package/dist/__tests__/inbox-store-swarmid-validation.test.d.ts +2 -0
  70. package/dist/__tests__/inbox-store-swarmid-validation.test.d.ts.map +1 -0
  71. package/dist/__tests__/inbox-store-swarmid-validation.test.js +32 -0
  72. package/dist/__tests__/inbox-store-swarmid-validation.test.js.map +1 -0
  73. package/dist/__tests__/introspection-dedupe.test.d.ts +2 -0
  74. package/dist/__tests__/introspection-dedupe.test.d.ts.map +1 -0
  75. package/dist/__tests__/introspection-dedupe.test.js +484 -0
  76. package/dist/__tests__/introspection-dedupe.test.js.map +1 -0
  77. package/dist/__tests__/introspection-source.test.d.ts +2 -0
  78. package/dist/__tests__/introspection-source.test.d.ts.map +1 -0
  79. package/dist/__tests__/introspection-source.test.js +1051 -0
  80. package/dist/__tests__/introspection-source.test.js.map +1 -0
  81. package/dist/__tests__/migration-roles.test.js +1 -22
  82. package/dist/__tests__/migration-roles.test.js.map +1 -1
  83. package/dist/__tests__/reconcile-researching.test.d.ts +2 -0
  84. package/dist/__tests__/reconcile-researching.test.d.ts.map +1 -0
  85. package/dist/__tests__/reconcile-researching.test.js +224 -0
  86. package/dist/__tests__/reconcile-researching.test.js.map +1 -0
  87. package/dist/__tests__/role-loader-editor.test.js +40 -10
  88. package/dist/__tests__/role-loader-editor.test.js.map +1 -1
  89. package/dist/__tests__/role-loader-preamble-all.test.js +3 -1
  90. package/dist/__tests__/role-loader-preamble-all.test.js.map +1 -1
  91. package/dist/__tests__/role-loader.test.js +95 -0
  92. package/dist/__tests__/role-loader.test.js.map +1 -1
  93. package/dist/__tests__/role-prompt-no-legacy-protocol.test.js +3 -1
  94. package/dist/__tests__/role-prompt-no-legacy-protocol.test.js.map +1 -1
  95. package/dist/__tests__/secret-scrub.test.d.ts +2 -0
  96. package/dist/__tests__/secret-scrub.test.d.ts.map +1 -0
  97. package/dist/__tests__/secret-scrub.test.js +55 -0
  98. package/dist/__tests__/secret-scrub.test.js.map +1 -0
  99. package/dist/__tests__/shipment-actions.test.d.ts +2 -0
  100. package/dist/__tests__/shipment-actions.test.d.ts.map +1 -0
  101. package/dist/__tests__/shipment-actions.test.js +378 -0
  102. package/dist/__tests__/shipment-actions.test.js.map +1 -0
  103. package/dist/__tests__/shipment-persistence.test.d.ts +2 -0
  104. package/dist/__tests__/shipment-persistence.test.d.ts.map +1 -0
  105. package/dist/__tests__/shipment-persistence.test.js +120 -0
  106. package/dist/__tests__/shipment-persistence.test.js.map +1 -0
  107. package/dist/__tests__/shipment-pipeline.test.d.ts +2 -0
  108. package/dist/__tests__/shipment-pipeline.test.d.ts.map +1 -0
  109. package/dist/__tests__/shipment-pipeline.test.js +392 -0
  110. package/dist/__tests__/shipment-pipeline.test.js.map +1 -0
  111. package/dist/__tests__/shipment-report.test.d.ts +2 -0
  112. package/dist/__tests__/shipment-report.test.d.ts.map +1 -0
  113. package/dist/__tests__/shipment-report.test.js +78 -0
  114. package/dist/__tests__/shipment-report.test.js.map +1 -0
  115. package/dist/__tests__/shipment-stdin-integration.test.d.ts +2 -0
  116. package/dist/__tests__/shipment-stdin-integration.test.d.ts.map +1 -0
  117. package/dist/__tests__/shipment-stdin-integration.test.js +49 -0
  118. package/dist/__tests__/shipment-stdin-integration.test.js.map +1 -0
  119. package/dist/__tests__/shipment-type-parity.test.d.ts +2 -0
  120. package/dist/__tests__/shipment-type-parity.test.d.ts.map +1 -0
  121. package/dist/__tests__/shipment-type-parity.test.js +10 -0
  122. package/dist/__tests__/shipment-type-parity.test.js.map +1 -0
  123. package/dist/__tests__/snapshot-copy-provider.test.d.ts +2 -0
  124. package/dist/__tests__/snapshot-copy-provider.test.d.ts.map +1 -0
  125. package/dist/__tests__/snapshot-copy-provider.test.js +88 -0
  126. package/dist/__tests__/snapshot-copy-provider.test.js.map +1 -0
  127. package/dist/__tests__/swarm-coordinator-backend.test.js +153 -0
  128. package/dist/__tests__/swarm-coordinator-backend.test.js.map +1 -1
  129. package/dist/__tests__/swarm-coordinator-complete-intercept.test.d.ts +2 -0
  130. package/dist/__tests__/swarm-coordinator-complete-intercept.test.d.ts.map +1 -0
  131. package/dist/__tests__/swarm-coordinator-complete-intercept.test.js +111 -0
  132. package/dist/__tests__/swarm-coordinator-complete-intercept.test.js.map +1 -0
  133. package/dist/__tests__/task-store-source.test.d.ts +2 -0
  134. package/dist/__tests__/task-store-source.test.d.ts.map +1 -0
  135. package/dist/__tests__/task-store-source.test.js +56 -0
  136. package/dist/__tests__/task-store-source.test.js.map +1 -0
  137. package/dist/__tests__/template-loader-editor.test.js +28 -13
  138. package/dist/__tests__/template-loader-editor.test.js.map +1 -1
  139. package/dist/__tests__/transport-detect.test.d.ts +2 -0
  140. package/dist/__tests__/transport-detect.test.d.ts.map +1 -0
  141. package/dist/__tests__/transport-detect.test.js +92 -0
  142. package/dist/__tests__/transport-detect.test.js.map +1 -0
  143. package/dist/__tests__/wakeup-end-to-end.test.d.ts +2 -0
  144. package/dist/__tests__/wakeup-end-to-end.test.d.ts.map +1 -0
  145. package/dist/__tests__/wakeup-end-to-end.test.js +80 -0
  146. package/dist/__tests__/wakeup-end-to-end.test.js.map +1 -0
  147. package/dist/__tests__/wakeup-scheduler-restore-fires.test.d.ts +2 -0
  148. package/dist/__tests__/wakeup-scheduler-restore-fires.test.d.ts.map +1 -0
  149. package/dist/__tests__/wakeup-scheduler-restore-fires.test.js +33 -0
  150. package/dist/__tests__/wakeup-scheduler-restore-fires.test.js.map +1 -0
  151. package/dist/__tests__/wakeup-scheduler-restore.test.d.ts +2 -0
  152. package/dist/__tests__/wakeup-scheduler-restore.test.d.ts.map +1 -0
  153. package/dist/__tests__/wakeup-scheduler-restore.test.js +62 -0
  154. package/dist/__tests__/wakeup-scheduler-restore.test.js.map +1 -0
  155. package/dist/__tests__/wakeup-scheduler.test.d.ts +2 -0
  156. package/dist/__tests__/wakeup-scheduler.test.d.ts.map +1 -0
  157. package/dist/__tests__/wakeup-scheduler.test.js +65 -0
  158. package/dist/__tests__/wakeup-scheduler.test.js.map +1 -0
  159. package/dist/__tests__/watch-manager.test.d.ts +2 -0
  160. package/dist/__tests__/watch-manager.test.d.ts.map +1 -0
  161. package/dist/__tests__/watch-manager.test.js +203 -0
  162. package/dist/__tests__/watch-manager.test.js.map +1 -0
  163. package/dist/__tests__/workcycle-runner-cascade.test.d.ts +2 -0
  164. package/dist/__tests__/workcycle-runner-cascade.test.d.ts.map +1 -0
  165. package/dist/__tests__/workcycle-runner-cascade.test.js +203 -0
  166. package/dist/__tests__/workcycle-runner-cascade.test.js.map +1 -0
  167. package/dist/__tests__/workcycle-runner.test.d.ts +2 -0
  168. package/dist/__tests__/workcycle-runner.test.d.ts.map +1 -0
  169. package/dist/__tests__/workcycle-runner.test.js +369 -0
  170. package/dist/__tests__/workcycle-runner.test.js.map +1 -0
  171. package/dist/__tests__/workspace-diff.test.d.ts +2 -0
  172. package/dist/__tests__/workspace-diff.test.d.ts.map +1 -0
  173. package/dist/__tests__/workspace-diff.test.js +62 -0
  174. package/dist/__tests__/workspace-diff.test.js.map +1 -0
  175. package/dist/__tests__/workspace-manager.test.d.ts +2 -0
  176. package/dist/__tests__/workspace-manager.test.d.ts.map +1 -0
  177. package/dist/__tests__/workspace-manager.test.js +120 -0
  178. package/dist/__tests__/workspace-manager.test.js.map +1 -0
  179. package/dist/__tests__/workspace-types.test.d.ts +2 -0
  180. package/dist/__tests__/workspace-types.test.d.ts.map +1 -0
  181. package/dist/__tests__/workspace-types.test.js +37 -0
  182. package/dist/__tests__/workspace-types.test.js.map +1 -0
  183. package/dist/__tests__/worktree-gc.test.d.ts +2 -0
  184. package/dist/__tests__/worktree-gc.test.d.ts.map +1 -0
  185. package/dist/__tests__/worktree-gc.test.js +183 -0
  186. package/dist/__tests__/worktree-gc.test.js.map +1 -0
  187. package/dist/always-on/activity-reader.d.ts +27 -0
  188. package/dist/always-on/activity-reader.d.ts.map +1 -0
  189. package/dist/always-on/activity-reader.js +95 -0
  190. package/dist/always-on/activity-reader.js.map +1 -0
  191. package/dist/always-on/always-on-manager.d.ts +170 -0
  192. package/dist/always-on/always-on-manager.d.ts.map +1 -0
  193. package/dist/always-on/always-on-manager.js +538 -0
  194. package/dist/always-on/always-on-manager.js.map +1 -0
  195. package/dist/always-on/config.d.ts +141 -0
  196. package/dist/always-on/config.d.ts.map +1 -0
  197. package/dist/always-on/config.js +324 -0
  198. package/dist/always-on/config.js.map +1 -0
  199. package/dist/always-on/discovery-scheduler.d.ts +60 -0
  200. package/dist/always-on/discovery-scheduler.d.ts.map +1 -0
  201. package/dist/always-on/discovery-scheduler.js +287 -0
  202. package/dist/always-on/discovery-scheduler.js.map +1 -0
  203. package/dist/always-on/ideas-client.d.ts +23 -0
  204. package/dist/always-on/ideas-client.d.ts.map +1 -0
  205. package/dist/always-on/ideas-client.js +13 -0
  206. package/dist/always-on/ideas-client.js.map +1 -0
  207. package/dist/always-on/reconcile-researching.d.ts +42 -0
  208. package/dist/always-on/reconcile-researching.d.ts.map +1 -0
  209. package/dist/always-on/reconcile-researching.js +133 -0
  210. package/dist/always-on/reconcile-researching.js.map +1 -0
  211. package/dist/always-on/task-sources/cascade-picker.d.ts +42 -0
  212. package/dist/always-on/task-sources/cascade-picker.d.ts.map +1 -0
  213. package/dist/always-on/task-sources/cascade-picker.js +65 -0
  214. package/dist/always-on/task-sources/cascade-picker.js.map +1 -0
  215. package/dist/always-on/task-sources/idea-dedupe.d.ts +62 -0
  216. package/dist/always-on/task-sources/idea-dedupe.d.ts.map +1 -0
  217. package/dist/always-on/task-sources/idea-dedupe.js +130 -0
  218. package/dist/always-on/task-sources/idea-dedupe.js.map +1 -0
  219. package/dist/always-on/task-sources/idea-research-source.d.ts +46 -0
  220. package/dist/always-on/task-sources/idea-research-source.d.ts.map +1 -0
  221. package/dist/always-on/task-sources/idea-research-source.js +308 -0
  222. package/dist/always-on/task-sources/idea-research-source.js.map +1 -0
  223. package/dist/always-on/task-sources/idea-sort.d.ts +3 -0
  224. package/dist/always-on/task-sources/idea-sort.d.ts.map +1 -0
  225. package/dist/always-on/task-sources/idea-sort.js +25 -0
  226. package/dist/always-on/task-sources/idea-sort.js.map +1 -0
  227. package/dist/always-on/task-sources/idea-todo-source.d.ts +48 -0
  228. package/dist/always-on/task-sources/idea-todo-source.d.ts.map +1 -0
  229. package/dist/always-on/task-sources/idea-todo-source.js +226 -0
  230. package/dist/always-on/task-sources/idea-todo-source.js.map +1 -0
  231. package/dist/always-on/task-sources/introspection-source.d.ts +101 -0
  232. package/dist/always-on/task-sources/introspection-source.d.ts.map +1 -0
  233. package/dist/always-on/task-sources/introspection-source.js +695 -0
  234. package/dist/always-on/task-sources/introspection-source.js.map +1 -0
  235. package/dist/always-on/task-sources/task-store-source.d.ts +15 -0
  236. package/dist/always-on/task-sources/task-store-source.d.ts.map +1 -0
  237. package/dist/always-on/task-sources/task-store-source.js +59 -0
  238. package/dist/always-on/task-sources/task-store-source.js.map +1 -0
  239. package/dist/always-on/task-sources/types.d.ts +108 -0
  240. package/dist/always-on/task-sources/types.d.ts.map +1 -0
  241. package/dist/always-on/task-sources/types.js +13 -0
  242. package/dist/always-on/task-sources/types.js.map +1 -0
  243. package/dist/always-on/types.d.ts +76 -0
  244. package/dist/always-on/types.d.ts.map +1 -0
  245. package/dist/always-on/types.js +17 -0
  246. package/dist/always-on/types.js.map +1 -0
  247. package/dist/always-on/workcycle-runner.d.ts +115 -0
  248. package/dist/always-on/workcycle-runner.d.ts.map +1 -0
  249. package/dist/always-on/workcycle-runner.js +285 -0
  250. package/dist/always-on/workcycle-runner.js.map +1 -0
  251. package/dist/always-on/worktree-gc.d.ts +41 -0
  252. package/dist/always-on/worktree-gc.d.ts.map +1 -0
  253. package/dist/always-on/worktree-gc.js +167 -0
  254. package/dist/always-on/worktree-gc.js.map +1 -0
  255. package/dist/inbox-store.d.ts +7 -0
  256. package/dist/inbox-store.d.ts.map +1 -1
  257. package/dist/inbox-store.js +8 -1
  258. package/dist/inbox-store.js.map +1 -1
  259. package/dist/index.d.ts +29 -3
  260. package/dist/index.d.ts.map +1 -1
  261. package/dist/index.js +27 -2
  262. package/dist/index.js.map +1 -1
  263. package/dist/persistence.d.ts +37 -1
  264. package/dist/persistence.d.ts.map +1 -1
  265. package/dist/persistence.js +48 -0
  266. package/dist/persistence.js.map +1 -1
  267. package/dist/retrospective.d.ts.map +1 -1
  268. package/dist/retrospective.js +6 -0
  269. package/dist/retrospective.js.map +1 -1
  270. package/dist/roles/role-loader.d.ts +31 -6
  271. package/dist/roles/role-loader.d.ts.map +1 -1
  272. package/dist/roles/role-loader.js +58 -32
  273. package/dist/roles/role-loader.js.map +1 -1
  274. package/dist/roles/types.d.ts +12 -0
  275. package/dist/roles/types.d.ts.map +1 -1
  276. package/dist/shipment/gh-pr-creator.d.ts +28 -0
  277. package/dist/shipment/gh-pr-creator.d.ts.map +1 -0
  278. package/dist/shipment/gh-pr-creator.js +80 -0
  279. package/dist/shipment/gh-pr-creator.js.map +1 -0
  280. package/dist/shipment/report.d.ts +27 -0
  281. package/dist/shipment/report.d.ts.map +1 -0
  282. package/dist/shipment/report.js +41 -0
  283. package/dist/shipment/report.js.map +1 -0
  284. package/dist/shipment/secret-scrub.d.ts +12 -0
  285. package/dist/shipment/secret-scrub.d.ts.map +1 -0
  286. package/dist/shipment/secret-scrub.js +30 -0
  287. package/dist/shipment/secret-scrub.js.map +1 -0
  288. package/dist/shipment/shipment-actions.d.ts +85 -0
  289. package/dist/shipment/shipment-actions.d.ts.map +1 -0
  290. package/dist/shipment/shipment-actions.js +190 -0
  291. package/dist/shipment/shipment-actions.js.map +1 -0
  292. package/dist/shipment/shipment-pipeline.d.ts +48 -0
  293. package/dist/shipment/shipment-pipeline.d.ts.map +1 -0
  294. package/dist/shipment/shipment-pipeline.js +256 -0
  295. package/dist/shipment/shipment-pipeline.js.map +1 -0
  296. package/dist/shipment/transport-detect.d.ts +16 -0
  297. package/dist/shipment/transport-detect.d.ts.map +1 -0
  298. package/dist/shipment/transport-detect.js +54 -0
  299. package/dist/shipment/transport-detect.js.map +1 -0
  300. package/dist/shipment/workspace-diff.d.ts +39 -0
  301. package/dist/shipment/workspace-diff.d.ts.map +1 -0
  302. package/dist/shipment/workspace-diff.js +64 -0
  303. package/dist/shipment/workspace-diff.js.map +1 -0
  304. package/dist/swarm-coordinator.d.ts +20 -1
  305. package/dist/swarm-coordinator.d.ts.map +1 -1
  306. package/dist/swarm-coordinator.js +193 -10
  307. package/dist/swarm-coordinator.js.map +1 -1
  308. package/dist/templates/template-loader.d.ts +23 -9
  309. package/dist/templates/template-loader.d.ts.map +1 -1
  310. package/dist/templates/template-loader.js +33 -26
  311. package/dist/templates/template-loader.js.map +1 -1
  312. package/dist/types.d.ts +62 -0
  313. package/dist/types.d.ts.map +1 -1
  314. package/dist/wakeup-scheduler.d.ts +36 -0
  315. package/dist/wakeup-scheduler.d.ts.map +1 -0
  316. package/dist/wakeup-scheduler.js +107 -0
  317. package/dist/wakeup-scheduler.js.map +1 -0
  318. package/dist/watch-manager.d.ts +32 -0
  319. package/dist/watch-manager.d.ts.map +1 -0
  320. package/dist/watch-manager.js +153 -0
  321. package/dist/watch-manager.js.map +1 -0
  322. package/dist/workspace/git-worktree-provider.d.ts +11 -0
  323. package/dist/workspace/git-worktree-provider.d.ts.map +1 -0
  324. package/dist/workspace/git-worktree-provider.js +123 -0
  325. package/dist/workspace/git-worktree-provider.js.map +1 -0
  326. package/dist/workspace/gitignore-check.d.ts +10 -0
  327. package/dist/workspace/gitignore-check.d.ts.map +1 -0
  328. package/dist/workspace/gitignore-check.js +25 -0
  329. package/dist/workspace/gitignore-check.js.map +1 -0
  330. package/dist/workspace/index.d.ts +5 -0
  331. package/dist/workspace/index.d.ts.map +1 -0
  332. package/dist/workspace/index.js +5 -0
  333. package/dist/workspace/index.js.map +1 -0
  334. package/dist/workspace/snapshot-copy-provider.d.ts +11 -0
  335. package/dist/workspace/snapshot-copy-provider.d.ts.map +1 -0
  336. package/dist/workspace/snapshot-copy-provider.js +66 -0
  337. package/dist/workspace/snapshot-copy-provider.js.map +1 -0
  338. package/dist/workspace/types.d.ts +36 -0
  339. package/dist/workspace/types.d.ts.map +1 -0
  340. package/dist/workspace/types.js +2 -0
  341. package/dist/workspace/types.js.map +1 -0
  342. package/dist/workspace/workspace-manager.d.ts +30 -0
  343. package/dist/workspace/workspace-manager.d.ts.map +1 -0
  344. package/dist/workspace/workspace-manager.js +104 -0
  345. package/dist/workspace/workspace-manager.js.map +1 -0
  346. package/package.json +5 -5
  347. package/roles/queen.md +1 -0
  348. package/templates/introspection.md +64 -0
  349. package/templates/research-only.md +58 -0
  350. package/roles/preset-analyst-simons.md +0 -39
  351. package/roles/preset-architect-knuth.md +0 -39
  352. package/roles/preset-designer-norman.md +0 -39
  353. package/roles/preset-designer.md +0 -39
  354. package/roles/preset-dev-carmack.md +0 -39
  355. package/roles/preset-dev-gosling.md +0 -39
  356. package/roles/preset-developer.md +0 -52
  357. package/roles/preset-manager-grove.md +0 -39
  358. package/roles/preset-manager-musk.md +0 -39
  359. package/roles/preset-pm.md +0 -78
  360. package/roles/preset-researcher-feynman.md +0 -39
  361. package/roles/preset-reviewer.md +0 -46
  362. package/roles/preset-strategist-buffett.md +0 -39
  363. package/roles/preset-strategist-munger.md +0 -39
  364. package/roles/preset-strategist-sunzi.md +0 -39
  365. package/roles/preset-tester-beck.md +0 -40
  366. package/roles/preset-tester.md +0 -47
  367. package/roles/preset-writer-orwell.md +0 -39
  368. package/roles/preset-writer.md +0 -39
@@ -0,0 +1,369 @@
1
+ import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
2
+ import { mkdtempSync, rmSync, mkdirSync, writeFileSync } from "node:fs";
3
+ import { tmpdir } from "node:os";
4
+ import { join } from "node:path";
5
+ import { WorkCycleRunner } from "../always-on/workcycle-runner.js";
6
+ import { loadTemplate } from "../templates/template-loader.js";
7
+ /**
8
+ * Minimal fake SwarmCoordinator. Only the methods WorkCycleRunner touches are
9
+ * implemented; everything else stays unreachable so accidental coupling
10
+ * surfaces as a TypeError during test runs.
11
+ */
12
+ class FakeCoordinator {
13
+ swarms = new Map();
14
+ createCalls = [];
15
+ completeCalls = [];
16
+ failCalls = [];
17
+ destroyCalls = [];
18
+ // Hook for tests: what status the swarm gets after create().
19
+ initialStatus = "running";
20
+ // Hook: programmatic transition during waitForTerminal poll loop.
21
+ onPoll = null;
22
+ // Hook: throw on create().
23
+ throwOnCreate = null;
24
+ async create(swarmId, options) {
25
+ this.createCalls.push({ swarmId, options });
26
+ if (this.throwOnCreate)
27
+ throw this.throwOnCreate;
28
+ const inst = {
29
+ id: swarmId,
30
+ hubSessionId: swarmId,
31
+ workDir: options.workDir,
32
+ teamName: options.templateName,
33
+ roles: new Map(),
34
+ plan: null,
35
+ nextInstanceSeq: new Map(),
36
+ idleCheckCount: 0,
37
+ maxIdleChecks: 10,
38
+ isPaused: false,
39
+ status: this.initialStatus,
40
+ planStatus: "none",
41
+ };
42
+ this.swarms.set(swarmId, inst);
43
+ }
44
+ getSwarm(swarmId) {
45
+ const swarm = this.swarms.get(swarmId);
46
+ if (swarm && this.onPoll)
47
+ this.onPoll(swarm);
48
+ return swarm;
49
+ }
50
+ async complete(swarmId) {
51
+ this.completeCalls.push(swarmId);
52
+ // Mirror real coordinator: removes from registry on cleanup.
53
+ this.swarms.delete(swarmId);
54
+ }
55
+ async fail(swarmId) {
56
+ this.failCalls.push(swarmId);
57
+ this.swarms.delete(swarmId);
58
+ }
59
+ async destroy(swarmId) {
60
+ this.destroyCalls.push(swarmId);
61
+ this.swarms.delete(swarmId);
62
+ }
63
+ }
64
+ function makeFake() {
65
+ return new FakeCoordinator();
66
+ }
67
+ function silentLog() {
68
+ return {
69
+ info: vi.fn(),
70
+ warn: vi.fn(),
71
+ error: vi.fn(),
72
+ debug: vi.fn(),
73
+ };
74
+ }
75
+ /**
76
+ * Build a real on-disk projectRoot inside a tmp dir AND seed it with the
77
+ * .clawnet/projects/<encoded>/swarms/<swarmId>/shipment.json layout that
78
+ * loadShipmentResult expects. We use process.env.CLAWNET_HOME so persistence.ts
79
+ * resolves to our tmp dir instead of ~/.
80
+ */
81
+ function withTmpHome() {
82
+ const home = mkdtempSync(join(tmpdir(), "wcr-test-"));
83
+ const projectRoot = mkdtempSync(join(tmpdir(), "wcr-proj-"));
84
+ process.env.CLAWNET_HOME = home;
85
+ return {
86
+ projectRoot,
87
+ cleanup() {
88
+ delete process.env.CLAWNET_HOME;
89
+ try {
90
+ rmSync(home, { recursive: true, force: true });
91
+ }
92
+ catch { /* ignore */ }
93
+ try {
94
+ rmSync(projectRoot, { recursive: true, force: true });
95
+ }
96
+ catch { /* ignore */ }
97
+ },
98
+ };
99
+ }
100
+ /**
101
+ * Write a fake shipment.json for a given swarmId so loadShipmentResult finds it.
102
+ * Mirrors the path computation in persistence.ts: <CLAWNET_HOME>/.clawnet/projects/<encoded>/swarms/<swarmId>/shipment.json
103
+ */
104
+ function seedShipment(projectRoot, swarmId, result) {
105
+ // Re-derive the path the same way persistence.ts does via projectRoot() from
106
+ // @mclawnet/task. Keep it dynamic so a refactor doesn't silently break tests.
107
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
108
+ const { projectRoot: pr } = require("@mclawnet/task");
109
+ const home = process.env.CLAWNET_HOME;
110
+ const swarmDir = join(pr(projectRoot, home), "swarms", swarmId);
111
+ mkdirSync(swarmDir, { recursive: true });
112
+ writeFileSync(join(swarmDir, "shipment.json"), JSON.stringify(result, null, 2));
113
+ }
114
+ describe("WorkCycleRunner", () => {
115
+ let tmp;
116
+ beforeEach(() => {
117
+ tmp = withTmpHome();
118
+ });
119
+ afterEach(() => {
120
+ tmp.cleanup();
121
+ });
122
+ it("pickNextTask returns null → result.status === 'skipped'", async () => {
123
+ const coord = makeFake();
124
+ const runner = new WorkCycleRunner({
125
+ pickNextTask: async () => null,
126
+ swarmCoordinator: coord,
127
+ log: silentLog(),
128
+ initialSettleMs: 0,
129
+ pollIntervalMs: 1,
130
+ sleep: () => Promise.resolve(),
131
+ });
132
+ const result = await runner.run({ projectRoot: tmp.projectRoot });
133
+ expect(result.status).toBe("skipped");
134
+ expect(result.error).toMatch(/no task available/i);
135
+ expect(result.taskRef).toBeNull();
136
+ expect(coord.createCalls).toHaveLength(0);
137
+ expect(result.cycleId).toBeTruthy();
138
+ expect(result.swarmId).toMatch(/^m7-cycle-/);
139
+ });
140
+ it("happy path: task picked → create called → polling sees completed → shipment loaded", async () => {
141
+ const coord = makeFake();
142
+ const fake = coord;
143
+ // Flip to completed on the very first poll.
144
+ let polled = 0;
145
+ fake.onPoll = (s) => { if (++polled >= 1)
146
+ s.status = "completed"; };
147
+ const task = { id: "t-1", title: "Refactor X", description: "Do the thing" };
148
+ const runner = new WorkCycleRunner({
149
+ pickNextTask: async () => task,
150
+ swarmCoordinator: coord,
151
+ log: silentLog(),
152
+ initialSettleMs: 0,
153
+ pollIntervalMs: 1,
154
+ sleep: () => Promise.resolve(),
155
+ });
156
+ // Pre-stage shipment.json so loadShipmentResult returns something.
157
+ // We need to compute swarmId AFTER run() generates it — so we'll intercept
158
+ // the create call to seed the file then.
159
+ const origCreate = fake.create.bind(fake);
160
+ fake.create = async (swarmId, options) => {
161
+ await origCreate(swarmId, options);
162
+ seedShipment(tmp.projectRoot, swarmId, {
163
+ strategy: "pr",
164
+ createdAt: new Date().toISOString(),
165
+ prUrl: "https://example.com/pr/1",
166
+ branchName: "swarm/test",
167
+ title: "Refactor X",
168
+ });
169
+ };
170
+ const result = await runner.run({ projectRoot: tmp.projectRoot });
171
+ expect(result.status).toBe("completed");
172
+ expect(result.taskRef).toEqual(task);
173
+ expect(fake.createCalls).toHaveLength(1);
174
+ expect(fake.createCalls[0].options.task).toBe("Do the thing");
175
+ // C1 hotfix: default template flipped from the non-existent "default" to
176
+ // the bundled "minimal" template so loadTemplate() actually resolves.
177
+ expect(fake.createCalls[0].options.templateName).toBe("minimal");
178
+ // PR-B D11 — runner stamps kind="always-on-cycle" so UI / GC / shipment
179
+ // can distinguish always-on swarms from chat-driven user swarms.
180
+ expect(fake.createCalls[0].options.kind).toBe("always-on-cycle");
181
+ expect(fake.completeCalls).toEqual([fake.createCalls[0].swarmId]);
182
+ expect(result.shipment).toBeDefined();
183
+ expect(result.shipment?.prUrl).toBe("https://example.com/pr/1");
184
+ });
185
+ it("C1: caller-supplied templateName overrides the default", async () => {
186
+ const coord = makeFake();
187
+ const fake = coord;
188
+ fake.onPoll = (s) => { s.status = "completed"; };
189
+ const runner = new WorkCycleRunner({
190
+ pickNextTask: async () => ({ id: "t-x", title: "Task", description: "d" }),
191
+ swarmCoordinator: coord,
192
+ log: silentLog(),
193
+ initialSettleMs: 0,
194
+ pollIntervalMs: 1,
195
+ sleep: () => Promise.resolve(),
196
+ });
197
+ await runner.run({ projectRoot: tmp.projectRoot, templateName: "dev-team" });
198
+ expect(fake.createCalls[0].options.templateName).toBe("dev-team");
199
+ });
200
+ // M8.1: TaskRef.cycleKind === "research" overrides the template regardless
201
+ // of caller-supplied templateName.
202
+ it("M8.1: TaskRef.cycleKind=research forces template=research-only", async () => {
203
+ const coord = makeFake();
204
+ const fake = coord;
205
+ fake.onPoll = (s) => { s.status = "completed"; };
206
+ const runner = new WorkCycleRunner({
207
+ pickNextTask: async () => ({
208
+ id: "i-1",
209
+ title: "Investigate X",
210
+ description: "look into X",
211
+ cycleKind: "research",
212
+ }),
213
+ swarmCoordinator: coord,
214
+ log: silentLog(),
215
+ initialSettleMs: 0,
216
+ pollIntervalMs: 1,
217
+ sleep: () => Promise.resolve(),
218
+ });
219
+ // Even with caller templateName="dev-team", research wins.
220
+ await runner.run({ projectRoot: tmp.projectRoot, templateName: "dev-team" });
221
+ expect(fake.createCalls[0].options.templateName).toBe("research-only");
222
+ });
223
+ it("M8.1: TaskRef.cycleKind=execute falls back to caller template (default behaviour)", async () => {
224
+ const coord = makeFake();
225
+ const fake = coord;
226
+ fake.onPoll = (s) => { s.status = "completed"; };
227
+ const runner = new WorkCycleRunner({
228
+ pickNextTask: async () => ({
229
+ id: "t-1",
230
+ title: "Do thing",
231
+ description: "d",
232
+ cycleKind: "execute",
233
+ }),
234
+ swarmCoordinator: coord,
235
+ log: silentLog(),
236
+ initialSettleMs: 0,
237
+ pollIntervalMs: 1,
238
+ sleep: () => Promise.resolve(),
239
+ });
240
+ await runner.run({ projectRoot: tmp.projectRoot, templateName: "dev-team" });
241
+ expect(fake.createCalls[0].options.templateName).toBe("dev-team");
242
+ });
243
+ it("M8.1: research-only template ships and resolves via loadTemplate", () => {
244
+ // Sanity: the template file lives under packages/@clawnet/swarm/templates
245
+ // and parses cleanly. If this fails the runner would crash mid-cycle.
246
+ expect(() => loadTemplate("research-only")).not.toThrow();
247
+ });
248
+ it("C1: default template name actually resolves via loadTemplate", async () => {
249
+ // Integration-style sanity check: rather than spinning up a real
250
+ // SwarmCoordinator (which would drag in the whole role lifecycle), we
251
+ // call loadTemplate directly to prove the literal the runner passes is
252
+ // valid. Pre-hotfix this asserted on "default" which threw "Template not
253
+ // found"; the runner now uses "minimal" which ships with the package.
254
+ expect(() => loadTemplate("minimal")).not.toThrow();
255
+ // TODO(M7-followup): full integration test that wires WorkCycleRunner to a
256
+ // real SwarmCoordinator + loadTemplate via roleSpecs resolution.
257
+ });
258
+ it("coordinator.create throws → result.status === 'failed' with throw message", async () => {
259
+ const coord = makeFake();
260
+ const fake = coord;
261
+ fake.throwOnCreate = new Error("backend missing");
262
+ const runner = new WorkCycleRunner({
263
+ pickNextTask: async () => ({ id: "t-2", title: "Task", description: "do" }),
264
+ swarmCoordinator: coord,
265
+ log: silentLog(),
266
+ initialSettleMs: 0,
267
+ pollIntervalMs: 1,
268
+ sleep: () => Promise.resolve(),
269
+ });
270
+ const result = await runner.run({ projectRoot: tmp.projectRoot });
271
+ expect(result.status).toBe("failed");
272
+ expect(result.error).toMatch(/backend missing/);
273
+ expect(fake.completeCalls).toHaveLength(0);
274
+ expect(fake.failCalls).toHaveLength(0);
275
+ });
276
+ it("PR-B D14: swarm.status flips to 'paused' (queen idle 100min) → runner calls complete, result.status === 'completed'", async () => {
277
+ const coord = makeFake();
278
+ const fake = coord;
279
+ fake.onPoll = (s) => { s.status = "paused"; };
280
+ // Seed shipment on create (D14 keeps the cleanup path so any shipment
281
+ // pipeline still fires; surrounding ingest assertions stay valid).
282
+ const runner = new WorkCycleRunner({
283
+ pickNextTask: async () => ({ id: "t-paused", title: "Task" }),
284
+ swarmCoordinator: coord,
285
+ log: silentLog(),
286
+ initialSettleMs: 0,
287
+ pollIntervalMs: 100,
288
+ sleep: (_ms) => Promise.resolve(),
289
+ });
290
+ const result = await runner.run({ projectRoot: tmp.projectRoot });
291
+ // D14: paused → runner promotes to complete, NOT failed.
292
+ expect(result.status).toBe("completed");
293
+ // Runner called complete() (not destroy / fail) so the cleanup chain
294
+ // runs and any in-progress work gets shipped.
295
+ expect(fake.completeCalls).toHaveLength(1);
296
+ expect(fake.completeCalls[0]).toBe(fake.createCalls[0].swarmId);
297
+ expect(fake.destroyCalls).toHaveLength(0);
298
+ expect(fake.failCalls).toHaveLength(0);
299
+ });
300
+ it("swarm.status flips to 'failed' → fail() called, result.status === 'failed', shipment still loaded", async () => {
301
+ const coord = makeFake();
302
+ const fake = coord;
303
+ fake.onPoll = (s) => { s.status = "failed"; };
304
+ // Seed shipment on create
305
+ const origCreate = fake.create.bind(fake);
306
+ fake.create = async (swarmId, options) => {
307
+ await origCreate(swarmId, options);
308
+ seedShipment(tmp.projectRoot, swarmId, {
309
+ strategy: "diff-only",
310
+ createdAt: new Date().toISOString(),
311
+ diffPath: "/tmp/diff.patch",
312
+ prAttemptError: "no gh CLI",
313
+ });
314
+ };
315
+ const runner = new WorkCycleRunner({
316
+ pickNextTask: async () => ({ id: "t-4", title: "T", description: "d" }),
317
+ swarmCoordinator: coord,
318
+ log: silentLog(),
319
+ initialSettleMs: 0,
320
+ pollIntervalMs: 1,
321
+ sleep: () => Promise.resolve(),
322
+ });
323
+ const result = await runner.run({ projectRoot: tmp.projectRoot });
324
+ expect(result.status).toBe("failed");
325
+ expect(fake.failCalls).toEqual([fake.createCalls[0].swarmId]);
326
+ expect(result.shipment).toBeDefined();
327
+ expect(result.shipment?.strategy).toBe("diff-only");
328
+ });
329
+ it("cycleId is unique across calls", async () => {
330
+ const coord = makeFake();
331
+ const runner = new WorkCycleRunner({
332
+ pickNextTask: async () => null,
333
+ swarmCoordinator: coord,
334
+ log: silentLog(),
335
+ initialSettleMs: 0,
336
+ pollIntervalMs: 1,
337
+ sleep: () => Promise.resolve(),
338
+ });
339
+ const a = await runner.run({ projectRoot: tmp.projectRoot });
340
+ const b = await runner.run({ projectRoot: tmp.projectRoot });
341
+ const c = await runner.run({ projectRoot: tmp.projectRoot });
342
+ expect(a.cycleId).not.toBe(b.cycleId);
343
+ expect(b.cycleId).not.toBe(c.cycleId);
344
+ expect(a.cycleId).not.toBe(c.cycleId);
345
+ // UUID v4 shape (basic sanity — 36 chars with dashes, no overlap of swarmId).
346
+ for (const r of [a, b, c]) {
347
+ expect(r.cycleId).toMatch(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i);
348
+ }
349
+ });
350
+ it("swarmId carries 'm7-cycle-' prefix so the UI can identify scheduler-spawned swarms", async () => {
351
+ const coord = makeFake();
352
+ const fake = coord;
353
+ fake.onPoll = (s) => { s.status = "completed"; };
354
+ const runner = new WorkCycleRunner({
355
+ pickNextTask: async () => ({ id: "t-5", title: "Task", description: "d" }),
356
+ swarmCoordinator: coord,
357
+ log: silentLog(),
358
+ initialSettleMs: 0,
359
+ pollIntervalMs: 1,
360
+ sleep: () => Promise.resolve(),
361
+ });
362
+ const result = await runner.run({ projectRoot: tmp.projectRoot });
363
+ expect(result.swarmId.startsWith("m7-cycle-")).toBe(true);
364
+ // The suffix is the cycleId — useful for joining audit logs.
365
+ expect(result.swarmId).toBe(`m7-cycle-${result.cycleId}`);
366
+ expect(fake.createCalls[0].swarmId).toBe(result.swarmId);
367
+ });
368
+ });
369
+ //# sourceMappingURL=workcycle-runner.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workcycle-runner.test.js","sourceRoot":"","sources":["../../src/__tests__/workcycle-runner.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=workspace-diff.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-diff.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/workspace-diff.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,62 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { mkdtempSync, writeFileSync, rmSync } from "node:fs";
3
+ import { execSync } from "node:child_process";
4
+ import { tmpdir } from "node:os";
5
+ import { join } from "node:path";
6
+ import { computeWorkspaceDiff } from "../shipment/workspace-diff.js";
7
+ function setupRepoWithBase() {
8
+ const dir = mkdtempSync(join(tmpdir(), "wd-"));
9
+ execSync("git init -q && git config user.email t@t && git config user.name t", { cwd: dir, shell: "/bin/sh" });
10
+ writeFileSync(join(dir, "README.md"), "# original\n");
11
+ execSync("git add -A && git commit -q -m base", { cwd: dir, shell: "/bin/sh" });
12
+ const baseCommit = execSync("git rev-parse HEAD", { cwd: dir, shell: "/bin/sh" }).toString().trim();
13
+ return { dir, baseCommit };
14
+ }
15
+ describe("computeWorkspaceDiff", () => {
16
+ it("returns empty diff when nothing changed", async () => {
17
+ const { dir, baseCommit } = setupRepoWithBase();
18
+ const d = await computeWorkspaceDiff({ worktreeCwd: dir, baseCommit });
19
+ expect(d.files).toEqual([]);
20
+ expect(d.patch).toBe("");
21
+ expect(d.stat).toBe("");
22
+ rmSync(dir, { recursive: true, force: true });
23
+ });
24
+ it("captures stat / patch / files for committed changes", async () => {
25
+ const { dir, baseCommit } = setupRepoWithBase();
26
+ writeFileSync(join(dir, "README.md"), "# original\n# added\n");
27
+ writeFileSync(join(dir, "newfile.ts"), "export const x = 1;\n");
28
+ execSync("git add -A && git commit -q -m work", { cwd: dir, shell: "/bin/sh" });
29
+ const d = await computeWorkspaceDiff({ worktreeCwd: dir, baseCommit });
30
+ expect(d.stat).toContain("README.md");
31
+ expect(d.stat).toContain("newfile.ts");
32
+ expect(d.patch).toContain("+# added");
33
+ expect(d.patch).toContain("+export const x = 1;");
34
+ expect(d.files.length).toBe(2);
35
+ const f = d.files.find(f => f.path === "newfile.ts");
36
+ expect(f.added).toBe(1);
37
+ expect(f.removed).toBe(0);
38
+ rmSync(dir, { recursive: true, force: true });
39
+ });
40
+ it("returns uncommitted changes (workdir + index, not just HEAD)", async () => {
41
+ const { dir, baseCommit } = setupRepoWithBase();
42
+ // change only in working tree, never committed
43
+ writeFileSync(join(dir, "README.md"), "# original\n# uncommitted\n");
44
+ const d = await computeWorkspaceDiff({ worktreeCwd: dir, baseCommit });
45
+ expect(d.patch).toContain("+# uncommitted");
46
+ rmSync(dir, { recursive: true, force: true });
47
+ });
48
+ it("returns error result (not throws) on non-git dir", async () => {
49
+ const d = await computeWorkspaceDiff({ worktreeCwd: "/no/such/dir/xyz", baseCommit: "abc" });
50
+ expect(d.files).toEqual([]);
51
+ expect(d.patch).toBe("");
52
+ expect(d.error).toBeDefined();
53
+ });
54
+ it("captures removed lines correctly", async () => {
55
+ const { dir, baseCommit } = setupRepoWithBase();
56
+ writeFileSync(join(dir, "README.md"), ""); // remove the line
57
+ const d = await computeWorkspaceDiff({ worktreeCwd: dir, baseCommit });
58
+ const f = d.files.find(f => f.path === "README.md");
59
+ expect(f.removed).toBeGreaterThan(0);
60
+ });
61
+ });
62
+ //# sourceMappingURL=workspace-diff.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-diff.test.js","sourceRoot":"","sources":["../../src/__tests__/workspace-diff.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=workspace-manager.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-manager.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/workspace-manager.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,120 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { mkdtempSync, rmSync, writeFileSync, existsSync } from "node:fs";
3
+ import { execSync } from "node:child_process";
4
+ import { tmpdir } from "node:os";
5
+ import { join } from "node:path";
6
+ import { WorkspaceManager } from "../workspace/workspace-manager.js";
7
+ function setupCleanRepo() {
8
+ const dir = mkdtempSync(join(tmpdir(), "wm-"));
9
+ execSync("git init -q && git config user.email t@t && git config user.name t", { cwd: dir, shell: "/bin/sh" });
10
+ writeFileSync(join(dir, "f"), "x");
11
+ execSync("git add -A && git commit -q -m init", { cwd: dir, shell: "/bin/sh" });
12
+ return dir;
13
+ }
14
+ describe("WorkspaceManager", () => {
15
+ it("picks git-worktree for clean git repo", async () => {
16
+ const dir = setupCleanRepo();
17
+ const mgr = new WorkspaceManager();
18
+ const h = await mgr.prepare({ swarmId: "s1", projectRoot: dir });
19
+ expect(h.strategy).toBe("git-worktree");
20
+ await mgr.dispose("s1", { keep: false });
21
+ rmSync(dir, { recursive: true, force: true });
22
+ });
23
+ it("picks snapshot-copy for non-git dir", async () => {
24
+ const dir = mkdtempSync(join(tmpdir(), "wm-"));
25
+ writeFileSync(join(dir, "f"), "x");
26
+ const mgr = new WorkspaceManager();
27
+ const h = await mgr.prepare({ swarmId: "s1", projectRoot: dir });
28
+ expect(h.strategy).toBe("snapshot-copy");
29
+ await mgr.dispose("s1", { keep: false });
30
+ rmSync(dir, { recursive: true, force: true });
31
+ });
32
+ it("picks snapshot-copy for dirty git repo", async () => {
33
+ const dir = setupCleanRepo();
34
+ writeFileSync(join(dir, "dirty"), "x");
35
+ const mgr = new WorkspaceManager();
36
+ const h = await mgr.prepare({ swarmId: "s1", projectRoot: dir });
37
+ expect(h.strategy).toBe("snapshot-copy");
38
+ await mgr.dispose("s1", { keep: false });
39
+ rmSync(dir, { recursive: true, force: true });
40
+ });
41
+ it("dispose: unknown swarmId is a no-op", async () => {
42
+ const mgr = new WorkspaceManager();
43
+ await expect(mgr.dispose("nope", { keep: false })).resolves.not.toThrow();
44
+ });
45
+ it("get(swarmId) returns handle until disposed", async () => {
46
+ const dir = setupCleanRepo();
47
+ const mgr = new WorkspaceManager();
48
+ await mgr.prepare({ swarmId: "x", projectRoot: dir });
49
+ expect(mgr.get("x")?.strategy).toBe("git-worktree");
50
+ await mgr.dispose("x", { keep: false });
51
+ expect(mgr.get("x")).toBeUndefined();
52
+ rmSync(dir, { recursive: true, force: true });
53
+ });
54
+ it("adopt: register an existing handle so dispose can find it later", async () => {
55
+ const dir = setupCleanRepo();
56
+ const mgr1 = new WorkspaceManager();
57
+ const h = await mgr1.prepare({ swarmId: "x", projectRoot: dir });
58
+ // Simulate fresh process: new WorkspaceManager instance, no in-memory state
59
+ const mgr2 = new WorkspaceManager();
60
+ expect(mgr2.get("x")).toBeUndefined();
61
+ mgr2.adopt(h);
62
+ expect(mgr2.get("x")).toBe(h);
63
+ await mgr2.dispose("x", { keep: false });
64
+ expect(mgr2.get("x")).toBeUndefined();
65
+ rmSync(dir, { recursive: true, force: true });
66
+ });
67
+ it("prepare: rejects swarmId with path-traversal or special chars", async () => {
68
+ const dir = setupCleanRepo();
69
+ const mgr = new WorkspaceManager();
70
+ for (const bad of ["", "../escape", "foo/bar", "with space", "../../etc", "a".repeat(65), "with\0null"]) {
71
+ await expect(mgr.prepare({ swarmId: bad, projectRoot: dir })).rejects.toThrow(/[Ii]nvalid swarmId/);
72
+ }
73
+ rmSync(dir, { recursive: true, force: true });
74
+ });
75
+ it("prepare: concurrent calls with same swarmId share the in-flight promise", async () => {
76
+ const dir = setupCleanRepo();
77
+ const mgr = new WorkspaceManager();
78
+ const [a, b] = await Promise.all([
79
+ mgr.prepare({ swarmId: "concurrent", projectRoot: dir }),
80
+ mgr.prepare({ swarmId: "concurrent", projectRoot: dir }),
81
+ ]);
82
+ expect(a).toBe(b); // same handle, single underlying prepare
83
+ await mgr.dispose("concurrent", { keep: false });
84
+ rmSync(dir, { recursive: true, force: true });
85
+ });
86
+ it("gitignore advisory: writes sentinel so it doesn't re-warn next session", async () => {
87
+ // setupCleanRepo() has no .gitignore -> would warn
88
+ const dir = setupCleanRepo();
89
+ const sentinel = join(dir, ".clawnet", ".gitignore-warned");
90
+ expect(existsSync(sentinel)).toBe(false);
91
+ const mgr1 = new WorkspaceManager();
92
+ await mgr1.prepare({ swarmId: "x", projectRoot: dir });
93
+ await mgr1.dispose("x", { keep: false });
94
+ expect(existsSync(sentinel)).toBe(true);
95
+ // fresh manager (simulates process restart) — sentinel suppresses re-warn.
96
+ // We only assert the file is still there (no easy log spy across loggers).
97
+ const mgr2 = new WorkspaceManager();
98
+ await mgr2.prepare({ swarmId: "y", projectRoot: dir });
99
+ await mgr2.dispose("y", { keep: false });
100
+ expect(existsSync(sentinel)).toBe(true);
101
+ rmSync(dir, { recursive: true, force: true });
102
+ });
103
+ it("custom providers respected (e.g. inject a stub for testing)", async () => {
104
+ const dir = mkdtempSync(join(tmpdir(), "wm-"));
105
+ const stubHandle = { swarmId: "x", projectRoot: dir, strategy: "git-worktree", cwd: dir + "/x", metadata: {} };
106
+ const stub = {
107
+ id: "git-worktree",
108
+ priority: 1,
109
+ isApplicable: async () => true,
110
+ prepare: async () => stubHandle,
111
+ dispose: async () => { },
112
+ };
113
+ const mgr = new WorkspaceManager([stub]);
114
+ const h = await mgr.prepare({ swarmId: "x", projectRoot: dir });
115
+ expect(h).toBe(stubHandle);
116
+ await mgr.dispose("x", { keep: false });
117
+ rmSync(dir, { recursive: true, force: true });
118
+ });
119
+ });
120
+ //# sourceMappingURL=workspace-manager.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-manager.test.js","sourceRoot":"","sources":["../../src/__tests__/workspace-manager.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=workspace-types.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-types.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/workspace-types.test.ts"],"names":[],"mappings":""}