@mobrienv/autoloop 0.4.0 → 0.7.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 (440) hide show
  1. package/README.md +40 -14
  2. package/bin/autoloop +1 -1
  3. package/dist/index.d.ts +6 -0
  4. package/dist/index.js +19 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/testing/mock-backend.js +3 -5
  7. package/dist/testing/mock-backend.js.map +1 -1
  8. package/package.json +30 -23
  9. package/plugins/autoloop/.claude-plugin/plugin.json +1 -1
  10. package/dist/agent-map.d.ts +0 -10
  11. package/dist/agent-map.js +0 -58
  12. package/dist/agent-map.js.map +0 -1
  13. package/dist/backend/acp-client.d.ts +0 -38
  14. package/dist/backend/acp-client.js +0 -293
  15. package/dist/backend/acp-client.js.map +0 -1
  16. package/dist/backend/index.d.ts +0 -10
  17. package/dist/backend/index.js +0 -71
  18. package/dist/backend/index.js.map +0 -1
  19. package/dist/backend/kiro-bridge.d.ts +0 -19
  20. package/dist/backend/kiro-bridge.js +0 -114
  21. package/dist/backend/kiro-bridge.js.map +0 -1
  22. package/dist/backend/kiro-worker.d.ts +0 -1
  23. package/dist/backend/kiro-worker.js +0 -96
  24. package/dist/backend/kiro-worker.js.map +0 -1
  25. package/dist/backend/run-command.d.ts +0 -7
  26. package/dist/backend/run-command.js +0 -50
  27. package/dist/backend/run-command.js.map +0 -1
  28. package/dist/backend/run-kiro.d.ts +0 -3
  29. package/dist/backend/run-kiro.js +0 -16
  30. package/dist/backend/run-kiro.js.map +0 -1
  31. package/dist/backend/run-mock.d.ts +0 -1
  32. package/dist/backend/run-mock.js +0 -6
  33. package/dist/backend/run-mock.js.map +0 -1
  34. package/dist/backend/run-pi.d.ts +0 -5
  35. package/dist/backend/run-pi.js +0 -5
  36. package/dist/backend/run-pi.js.map +0 -1
  37. package/dist/backend/types.d.ts +0 -21
  38. package/dist/backend/types.js +0 -2
  39. package/dist/backend/types.js.map +0 -1
  40. package/dist/chains/budget.d.ts +0 -7
  41. package/dist/chains/budget.js +0 -54
  42. package/dist/chains/budget.js.map +0 -1
  43. package/dist/chains/load.d.ts +0 -18
  44. package/dist/chains/load.js +0 -129
  45. package/dist/chains/load.js.map +0 -1
  46. package/dist/chains/render.d.ts +0 -2
  47. package/dist/chains/render.js +0 -74
  48. package/dist/chains/render.js.map +0 -1
  49. package/dist/chains/run.d.ts +0 -17
  50. package/dist/chains/run.js +0 -260
  51. package/dist/chains/run.js.map +0 -1
  52. package/dist/chains/types.d.ts +0 -38
  53. package/dist/chains/types.js +0 -2
  54. package/dist/chains/types.js.map +0 -1
  55. package/dist/chains.d.ts +0 -6
  56. package/dist/chains.js +0 -5
  57. package/dist/chains.js.map +0 -1
  58. package/dist/cli/color.d.ts +0 -6
  59. package/dist/cli/color.js +0 -40
  60. package/dist/cli/color.js.map +0 -1
  61. package/dist/commands/chain.d.ts +0 -1
  62. package/dist/commands/chain.js +0 -53
  63. package/dist/commands/chain.js.map +0 -1
  64. package/dist/commands/config.d.ts +0 -1
  65. package/dist/commands/config.js +0 -74
  66. package/dist/commands/config.js.map +0 -1
  67. package/dist/commands/dashboard.d.ts +0 -1
  68. package/dist/commands/dashboard.js +0 -68
  69. package/dist/commands/dashboard.js.map +0 -1
  70. package/dist/commands/guide.d.ts +0 -1
  71. package/dist/commands/guide.js +0 -33
  72. package/dist/commands/guide.js.map +0 -1
  73. package/dist/commands/inspect.d.ts +0 -1
  74. package/dist/commands/inspect.js +0 -243
  75. package/dist/commands/inspect.js.map +0 -1
  76. package/dist/commands/list.d.ts +0 -1
  77. package/dist/commands/list.js +0 -15
  78. package/dist/commands/list.js.map +0 -1
  79. package/dist/commands/loops.d.ts +0 -1
  80. package/dist/commands/loops.js +0 -72
  81. package/dist/commands/loops.js.map +0 -1
  82. package/dist/commands/memory.d.ts +0 -1
  83. package/dist/commands/memory.js +0 -65
  84. package/dist/commands/memory.js.map +0 -1
  85. package/dist/commands/pi-adapter.d.ts +0 -1
  86. package/dist/commands/pi-adapter.js +0 -6
  87. package/dist/commands/pi-adapter.js.map +0 -1
  88. package/dist/commands/run.d.ts +0 -1
  89. package/dist/commands/run.js +0 -292
  90. package/dist/commands/run.js.map +0 -1
  91. package/dist/commands/runs.d.ts +0 -1
  92. package/dist/commands/runs.js +0 -50
  93. package/dist/commands/runs.js.map +0 -1
  94. package/dist/commands/task.d.ts +0 -1
  95. package/dist/commands/task.js +0 -74
  96. package/dist/commands/task.js.map +0 -1
  97. package/dist/commands/worktree.d.ts +0 -1
  98. package/dist/commands/worktree.js +0 -162
  99. package/dist/commands/worktree.js.map +0 -1
  100. package/dist/config.d.ts +0 -31
  101. package/dist/config.js +0 -261
  102. package/dist/config.js.map +0 -1
  103. package/dist/dashboard/app.d.ts +0 -12
  104. package/dist/dashboard/app.js +0 -23
  105. package/dist/dashboard/app.js.map +0 -1
  106. package/dist/dashboard/routes/api.d.ts +0 -3
  107. package/dist/dashboard/routes/api.js +0 -186
  108. package/dist/dashboard/routes/api.js.map +0 -1
  109. package/dist/dashboard/routes/pages.d.ts +0 -2
  110. package/dist/dashboard/routes/pages.js +0 -16
  111. package/dist/dashboard/routes/pages.js.map +0 -1
  112. package/dist/dashboard/views/alpine-vendor.d.ts +0 -1
  113. package/dist/dashboard/views/alpine-vendor.js +0 -10
  114. package/dist/dashboard/views/alpine-vendor.js.map +0 -1
  115. package/dist/dashboard/views/shell.d.ts +0 -1
  116. package/dist/dashboard/views/shell.js +0 -1062
  117. package/dist/dashboard/views/shell.js.map +0 -1
  118. package/dist/events/decode.d.ts +0 -2
  119. package/dist/events/decode.js +0 -45
  120. package/dist/events/decode.js.map +0 -1
  121. package/dist/events/encode.d.ts +0 -2
  122. package/dist/events/encode.js +0 -33
  123. package/dist/events/encode.js.map +0 -1
  124. package/dist/events/guards.d.ts +0 -5
  125. package/dist/events/guards.js +0 -42
  126. package/dist/events/guards.js.map +0 -1
  127. package/dist/events/types.d.ts +0 -27
  128. package/dist/events/types.js +0 -2
  129. package/dist/events/types.js.map +0 -1
  130. package/dist/harness/artifacts.d.ts +0 -50
  131. package/dist/harness/artifacts.js +0 -333
  132. package/dist/harness/artifacts.js.map +0 -1
  133. package/dist/harness/config-helpers.d.ts +0 -35
  134. package/dist/harness/config-helpers.js +0 -409
  135. package/dist/harness/config-helpers.js.map +0 -1
  136. package/dist/harness/coordination.d.ts +0 -1
  137. package/dist/harness/coordination.js +0 -127
  138. package/dist/harness/coordination.js.map +0 -1
  139. package/dist/harness/display.d.ts +0 -21
  140. package/dist/harness/display.js +0 -176
  141. package/dist/harness/display.js.map +0 -1
  142. package/dist/harness/emit.d.ts +0 -15
  143. package/dist/harness/emit.js +0 -240
  144. package/dist/harness/emit.js.map +0 -1
  145. package/dist/harness/index.d.ts +0 -20
  146. package/dist/harness/index.js +0 -311
  147. package/dist/harness/index.js.map +0 -1
  148. package/dist/harness/iteration.d.ts +0 -16
  149. package/dist/harness/iteration.js +0 -131
  150. package/dist/harness/iteration.js.map +0 -1
  151. package/dist/harness/journal-format.d.ts +0 -25
  152. package/dist/harness/journal-format.js +0 -153
  153. package/dist/harness/journal-format.js.map +0 -1
  154. package/dist/harness/journal.d.ts +0 -31
  155. package/dist/harness/journal.js +0 -178
  156. package/dist/harness/journal.js.map +0 -1
  157. package/dist/harness/metareview.d.ts +0 -4
  158. package/dist/harness/metareview.js +0 -48
  159. package/dist/harness/metareview.js.map +0 -1
  160. package/dist/harness/metrics.d.ts +0 -12
  161. package/dist/harness/metrics.js +0 -180
  162. package/dist/harness/metrics.js.map +0 -1
  163. package/dist/harness/parallel.d.ts +0 -37
  164. package/dist/harness/parallel.js +0 -237
  165. package/dist/harness/parallel.js.map +0 -1
  166. package/dist/harness/prompt.d.ts +0 -46
  167. package/dist/harness/prompt.js +0 -403
  168. package/dist/harness/prompt.js.map +0 -1
  169. package/dist/harness/scratchpad.d.ts +0 -2
  170. package/dist/harness/scratchpad.js +0 -67
  171. package/dist/harness/scratchpad.js.map +0 -1
  172. package/dist/harness/stop.d.ts +0 -5
  173. package/dist/harness/stop.js +0 -70
  174. package/dist/harness/stop.js.map +0 -1
  175. package/dist/harness/tools.d.ts +0 -3
  176. package/dist/harness/tools.js +0 -65
  177. package/dist/harness/tools.js.map +0 -1
  178. package/dist/harness/types.d.ts +0 -110
  179. package/dist/harness/types.js +0 -2
  180. package/dist/harness/types.js.map +0 -1
  181. package/dist/harness/wave/finalize-wave.d.ts +0 -9
  182. package/dist/harness/wave/finalize-wave.js +0 -87
  183. package/dist/harness/wave/finalize-wave.js.map +0 -1
  184. package/dist/harness/wave/launch-branches.d.ts +0 -6
  185. package/dist/harness/wave/launch-branches.js +0 -314
  186. package/dist/harness/wave/launch-branches.js.map +0 -1
  187. package/dist/harness/wave/parse-objectives.d.ts +0 -3
  188. package/dist/harness/wave/parse-objectives.js +0 -32
  189. package/dist/harness/wave/parse-objectives.js.map +0 -1
  190. package/dist/harness/wave/types.d.ts +0 -43
  191. package/dist/harness/wave/types.js +0 -2
  192. package/dist/harness/wave/types.js.map +0 -1
  193. package/dist/harness/wave.d.ts +0 -6
  194. package/dist/harness/wave.js +0 -159
  195. package/dist/harness/wave.js.map +0 -1
  196. package/dist/isolation/index.d.ts +0 -4
  197. package/dist/isolation/index.js +0 -3
  198. package/dist/isolation/index.js.map +0 -1
  199. package/dist/isolation/resolve.d.ts +0 -39
  200. package/dist/isolation/resolve.js +0 -118
  201. package/dist/isolation/resolve.js.map +0 -1
  202. package/dist/isolation/run-scope.d.ts +0 -21
  203. package/dist/isolation/run-scope.js +0 -50
  204. package/dist/isolation/run-scope.js.map +0 -1
  205. package/dist/json.d.ts +0 -8
  206. package/dist/json.js +0 -82
  207. package/dist/json.js.map +0 -1
  208. package/dist/loops/health.d.ts +0 -17
  209. package/dist/loops/health.js +0 -152
  210. package/dist/loops/health.js.map +0 -1
  211. package/dist/loops/list.d.ts +0 -6
  212. package/dist/loops/list.js +0 -21
  213. package/dist/loops/list.js.map +0 -1
  214. package/dist/loops/policy.d.ts +0 -6
  215. package/dist/loops/policy.js +0 -41
  216. package/dist/loops/policy.js.map +0 -1
  217. package/dist/loops/render.d.ts +0 -19
  218. package/dist/loops/render.js +0 -100
  219. package/dist/loops/render.js.map +0 -1
  220. package/dist/loops/show.d.ts +0 -8
  221. package/dist/loops/show.js +0 -31
  222. package/dist/loops/show.js.map +0 -1
  223. package/dist/loops/watch.d.ts +0 -14
  224. package/dist/loops/watch.js +0 -143
  225. package/dist/loops/watch.js.map +0 -1
  226. package/dist/main.d.ts +0 -1
  227. package/dist/main.js +0 -148
  228. package/dist/main.js.map +0 -1
  229. package/dist/markdown.d.ts +0 -10
  230. package/dist/markdown.js +0 -66
  231. package/dist/markdown.js.map +0 -1
  232. package/dist/memory-render.d.ts +0 -6
  233. package/dist/memory-render.js +0 -81
  234. package/dist/memory-render.js.map +0 -1
  235. package/dist/memory.d.ts +0 -22
  236. package/dist/memory.js +0 -318
  237. package/dist/memory.js.map +0 -1
  238. package/dist/pi-adapter.d.ts +0 -1
  239. package/dist/pi-adapter.js +0 -220
  240. package/dist/pi-adapter.js.map +0 -1
  241. package/dist/profiles.d.ts +0 -12
  242. package/dist/profiles.js +0 -71
  243. package/dist/profiles.js.map +0 -1
  244. package/dist/registry/derive.d.ts +0 -8
  245. package/dist/registry/derive.js +0 -88
  246. package/dist/registry/derive.js.map +0 -1
  247. package/dist/registry/discover.d.ts +0 -20
  248. package/dist/registry/discover.js +0 -98
  249. package/dist/registry/discover.js.map +0 -1
  250. package/dist/registry/harness.d.ts +0 -7
  251. package/dist/registry/harness.js +0 -63
  252. package/dist/registry/harness.js.map +0 -1
  253. package/dist/registry/index.d.ts +0 -6
  254. package/dist/registry/index.js +0 -6
  255. package/dist/registry/index.js.map +0 -1
  256. package/dist/registry/read.d.ts +0 -11
  257. package/dist/registry/read.js +0 -50
  258. package/dist/registry/read.js.map +0 -1
  259. package/dist/registry/rebuild.d.ts +0 -5
  260. package/dist/registry/rebuild.js +0 -22
  261. package/dist/registry/rebuild.js.map +0 -1
  262. package/dist/registry/types.d.ts +0 -28
  263. package/dist/registry/types.js +0 -2
  264. package/dist/registry/types.js.map +0 -1
  265. package/dist/registry/update.d.ts +0 -2
  266. package/dist/registry/update.js +0 -7
  267. package/dist/registry/update.js.map +0 -1
  268. package/dist/tasks-render.d.ts +0 -2
  269. package/dist/tasks-render.js +0 -44
  270. package/dist/tasks-render.js.map +0 -1
  271. package/dist/tasks.d.ts +0 -24
  272. package/dist/tasks.js +0 -184
  273. package/dist/tasks.js.map +0 -1
  274. package/dist/topology.d.ts +0 -31
  275. package/dist/topology.js +0 -309
  276. package/dist/topology.js.map +0 -1
  277. package/dist/usage.d.ts +0 -9
  278. package/dist/usage.js +0 -160
  279. package/dist/usage.js.map +0 -1
  280. package/dist/utils.d.ts +0 -21
  281. package/dist/utils.js +0 -349
  282. package/dist/utils.js.map +0 -1
  283. package/dist/worktree/clean.d.ts +0 -12
  284. package/dist/worktree/clean.js +0 -113
  285. package/dist/worktree/clean.js.map +0 -1
  286. package/dist/worktree/create.d.ts +0 -14
  287. package/dist/worktree/create.js +0 -71
  288. package/dist/worktree/create.js.map +0 -1
  289. package/dist/worktree/index.d.ts +0 -10
  290. package/dist/worktree/index.js +0 -6
  291. package/dist/worktree/index.js.map +0 -1
  292. package/dist/worktree/list.d.ts +0 -9
  293. package/dist/worktree/list.js +0 -24
  294. package/dist/worktree/list.js.map +0 -1
  295. package/dist/worktree/merge.d.ts +0 -11
  296. package/dist/worktree/merge.js +0 -129
  297. package/dist/worktree/merge.js.map +0 -1
  298. package/dist/worktree/meta.d.ts +0 -17
  299. package/dist/worktree/meta.js +0 -34
  300. package/dist/worktree/meta.js.map +0 -1
  301. package/presets/autocode/README.md +0 -81
  302. package/presets/autocode/autoloops.toml +0 -30
  303. package/presets/autocode/harness.md +0 -26
  304. package/presets/autocode/miniloops.toml +0 -22
  305. package/presets/autocode/roles/build.md +0 -34
  306. package/presets/autocode/roles/critic.md +0 -40
  307. package/presets/autocode/roles/finalizer.md +0 -43
  308. package/presets/autocode/roles/planner.md +0 -40
  309. package/presets/autocode/topology.toml +0 -32
  310. package/presets/autodebug/README.md +0 -50
  311. package/presets/autodebug/autoloops.toml +0 -18
  312. package/presets/autodebug/harness.md +0 -31
  313. package/presets/autodebug/roles/fixer.md +0 -58
  314. package/presets/autodebug/roles/investigator.md +0 -52
  315. package/presets/autodebug/roles/strategist.md +0 -45
  316. package/presets/autodebug/roles/verifier.md +0 -66
  317. package/presets/autodebug/topology.toml +0 -34
  318. package/presets/autodoc/README.md +0 -42
  319. package/presets/autodoc/autoloops.toml +0 -21
  320. package/presets/autodoc/harness.md +0 -19
  321. package/presets/autodoc/miniloops.toml +0 -21
  322. package/presets/autodoc/roles/auditor.md +0 -39
  323. package/presets/autodoc/roles/checker.md +0 -43
  324. package/presets/autodoc/roles/publisher.md +0 -51
  325. package/presets/autodoc/roles/writer.md +0 -37
  326. package/presets/autodoc/topology.toml +0 -31
  327. package/presets/autofix/README.md +0 -56
  328. package/presets/autofix/autoloops.toml +0 -24
  329. package/presets/autofix/harness.md +0 -25
  330. package/presets/autofix/miniloops.toml +0 -21
  331. package/presets/autofix/roles/closer.md +0 -48
  332. package/presets/autofix/roles/diagnoser.md +0 -43
  333. package/presets/autofix/roles/fixer.md +0 -28
  334. package/presets/autofix/roles/verifier.md +0 -31
  335. package/presets/autofix/topology.toml +0 -33
  336. package/presets/autoideas/README.md +0 -73
  337. package/presets/autoideas/autoloops.toml +0 -18
  338. package/presets/autoideas/harness.md +0 -31
  339. package/presets/autoideas/miniloops.toml +0 -18
  340. package/presets/autoideas/roles/analyst.md +0 -32
  341. package/presets/autoideas/roles/reviewer.md +0 -36
  342. package/presets/autoideas/roles/scanner.md +0 -26
  343. package/presets/autoideas/roles/synthesizer.md +0 -61
  344. package/presets/autoideas/topology.toml +0 -32
  345. package/presets/automerge/README.md +0 -3
  346. package/presets/automerge/autoloops.toml +0 -12
  347. package/presets/automerge/harness.md +0 -10
  348. package/presets/automerge/miniloops.toml +0 -12
  349. package/presets/automerge/roles/merge.md +0 -10
  350. package/presets/automerge/topology.toml +0 -10
  351. package/presets/autoperf/README.md +0 -56
  352. package/presets/autoperf/autoloops.toml +0 -21
  353. package/presets/autoperf/harness.md +0 -21
  354. package/presets/autoperf/miniloops.toml +0 -21
  355. package/presets/autoperf/roles/judge.md +0 -38
  356. package/presets/autoperf/roles/measurer.md +0 -36
  357. package/presets/autoperf/roles/optimizer.md +0 -35
  358. package/presets/autoperf/roles/profiler.md +0 -38
  359. package/presets/autoperf/topology.toml +0 -32
  360. package/presets/autopr/README.md +0 -99
  361. package/presets/autopr/autoloops.toml +0 -22
  362. package/presets/autopr/harness.md +0 -27
  363. package/presets/autopr/miniloops.toml +0 -22
  364. package/presets/autopr/roles/collector.md +0 -55
  365. package/presets/autopr/roles/drafter.md +0 -38
  366. package/presets/autopr/roles/publisher.md +0 -28
  367. package/presets/autopr/roles/validator.md +0 -31
  368. package/presets/autopr/topology.toml +0 -32
  369. package/presets/autopreset/README.md +0 -35
  370. package/presets/autopreset/autoloops.toml +0 -18
  371. package/presets/autopreset/harness.md +0 -38
  372. package/presets/autopreset/roles/designer.md +0 -33
  373. package/presets/autopreset/roles/finalizer.md +0 -23
  374. package/presets/autopreset/roles/generator.md +0 -34
  375. package/presets/autopreset/roles/validator.md +0 -31
  376. package/presets/autopreset/topology.toml +0 -32
  377. package/presets/autoqa/README.md +0 -105
  378. package/presets/autoqa/autoloops.toml +0 -21
  379. package/presets/autoqa/harness.md +0 -52
  380. package/presets/autoqa/miniloops.toml +0 -21
  381. package/presets/autoqa/roles/executor.md +0 -96
  382. package/presets/autoqa/roles/inspector.md +0 -100
  383. package/presets/autoqa/roles/planner.md +0 -87
  384. package/presets/autoqa/roles/reporter.md +0 -117
  385. package/presets/autoqa/topology.toml +0 -31
  386. package/presets/autoresearch/README.md +0 -63
  387. package/presets/autoresearch/autoloops.toml +0 -18
  388. package/presets/autoresearch/harness.md +0 -28
  389. package/presets/autoresearch/miniloops.toml +0 -18
  390. package/presets/autoresearch/roles/benchmarker.md +0 -34
  391. package/presets/autoresearch/roles/evaluator.md +0 -33
  392. package/presets/autoresearch/roles/implementer.md +0 -26
  393. package/presets/autoresearch/roles/strategist.md +0 -43
  394. package/presets/autoresearch/topology.toml +0 -31
  395. package/presets/autoreview/README.md +0 -51
  396. package/presets/autoreview/autoloops.toml +0 -21
  397. package/presets/autoreview/harness.md +0 -20
  398. package/presets/autoreview/miniloops.toml +0 -21
  399. package/presets/autoreview/roles/checker.md +0 -36
  400. package/presets/autoreview/roles/reader.md +0 -33
  401. package/presets/autoreview/roles/suggester.md +0 -26
  402. package/presets/autoreview/roles/summarizer.md +0 -57
  403. package/presets/autoreview/topology.toml +0 -31
  404. package/presets/autosec/README.md +0 -51
  405. package/presets/autosec/autoloops.toml +0 -21
  406. package/presets/autosec/harness.md +0 -20
  407. package/presets/autosec/miniloops.toml +0 -21
  408. package/presets/autosec/roles/analyst.md +0 -38
  409. package/presets/autosec/roles/hardener.md +0 -36
  410. package/presets/autosec/roles/reporter.md +0 -63
  411. package/presets/autosec/roles/scanner.md +0 -38
  412. package/presets/autosec/topology.toml +0 -31
  413. package/presets/autosimplify/README.md +0 -83
  414. package/presets/autosimplify/autoloops.toml +0 -26
  415. package/presets/autosimplify/harness.md +0 -25
  416. package/presets/autosimplify/miniloops.toml +0 -22
  417. package/presets/autosimplify/roles/reviewer.md +0 -38
  418. package/presets/autosimplify/roles/scoper.md +0 -42
  419. package/presets/autosimplify/roles/simplifier.md +0 -51
  420. package/presets/autosimplify/roles/verifier.md +0 -40
  421. package/presets/autosimplify/topology.toml +0 -32
  422. package/presets/autospec/README.md +0 -84
  423. package/presets/autospec/autoloops.toml +0 -21
  424. package/presets/autospec/harness.md +0 -23
  425. package/presets/autospec/miniloops.toml +0 -21
  426. package/presets/autospec/roles/clarifier.md +0 -39
  427. package/presets/autospec/roles/critic.md +0 -41
  428. package/presets/autospec/roles/designer.md +0 -37
  429. package/presets/autospec/roles/planner.md +0 -38
  430. package/presets/autospec/roles/researcher.md +0 -33
  431. package/presets/autospec/topology.toml +0 -38
  432. package/presets/autotest/README.md +0 -55
  433. package/presets/autotest/autoloops.toml +0 -21
  434. package/presets/autotest/harness.md +0 -21
  435. package/presets/autotest/miniloops.toml +0 -21
  436. package/presets/autotest/roles/assessor.md +0 -57
  437. package/presets/autotest/roles/runner.md +0 -31
  438. package/presets/autotest/roles/surveyor.md +0 -39
  439. package/presets/autotest/roles/writer.md +0 -37
  440. package/presets/autotest/topology.toml +0 -32
@@ -1,51 +0,0 @@
1
- # AutoReview miniloop
2
-
3
- Use when you want an automated code review of a PR diff or change set.
4
-
5
- AutoReview reads changes, checks for issues across correctness, security, style, performance, and maintainability, proposes concrete fixes, and compiles structured review feedback with a clear verdict.
6
-
7
- Shape:
8
- - reader — builds context around changes and maps review risk
9
- - checker — skeptically checks for issues across multiple dimensions
10
- - suggester — proposes concrete code fixes for each finding
11
- - summarizer — compiles structured review with verdict
12
-
13
- ## Fail-closed contract
14
-
15
- AutoReview is skeptical by default.
16
-
17
- - Absence of findings is not approval.
18
- - Approval requires checker coverage of the changed files and no unresolved unknowns.
19
- - Missing context, risky ambiguity, or unreviewable areas should block or downgrade the verdict.
20
- - COMMENT is healthier than a fake APPROVE.
21
-
22
- ## How it works
23
-
24
- 1. **Reader** reads the diff and surrounding code, builds architectural context and a risk map for the reviewer.
25
- 2. **Checker** reviews changes for correctness, security, style, performance, and maintainability issues. Classifies each as blocking/warning/nit.
26
- 3. **Suggester** writes concrete code suggestions for every finding.
27
- 4. **Summarizer** compiles the final review: grouped by severity, with verdict and unresolved risks.
28
-
29
- ## Files
30
-
31
- - `autoloops.toml` — loop + backend config
32
- - `topology.toml` — role deck + handoff graph
33
- - `harness.md` — shared harness rules loaded every iteration
34
- - `roles/reader.md`
35
- - `roles/checker.md`
36
- - `roles/suggester.md`
37
- - `roles/summarizer.md`
38
-
39
- ## Shared working files created by the loop
40
-
41
- - `.autoloop/review-context.md` — diff summary, affected files, architectural context, risk map
42
- - `.autoloop/review-findings.md` — structured findings with suggestions and verdict
43
- - `.autoloop/progress.md` — review pass tracking
44
-
45
- ## Run
46
-
47
- From the repo root:
48
-
49
- ```bash
50
- autoloop run presets/autoreview /path/to/target-repo
51
- ```
@@ -1,21 +0,0 @@
1
- event_loop.max_iterations = 100
2
- event_loop.completion_event = "task.complete"
3
- event_loop.completion_promise = "LOOP_COMPLETE"
4
- event_loop.required_events = ["review.checked"]
5
-
6
- backend.kind = "command"
7
- backend.command = "claude"
8
- backend.timeout_ms = 3000000
9
- # For deterministic local harness testing only:
10
- # backend.kind = "command"
11
- # backend.command = "../../examples/mock-backend.sh"
12
-
13
- review.enabled = true
14
- review.timeout_ms = 300000
15
-
16
- memory.prompt_budget_chars = 8000
17
- harness.instructions_file = "harness.md"
18
-
19
- core.state_dir = ".autoloop"
20
- core.journal_file = ".autoloop/journal.jsonl"
21
- core.memory_file = ".autoloop/memory.jsonl"
@@ -1,20 +0,0 @@
1
- This is a autoloops-native autoreview loop for code review of PR diffs or change sets.
2
-
3
- The loop reads changes, checks for issues across multiple dimensions (correctness, security, style, performance), proposes concrete fixes, and compiles structured review feedback.
4
-
5
- Global rules:
6
- - Shared working files are the source of truth: `{{STATE_DIR}}/review-context.md`, `{{STATE_DIR}}/review-findings.md`, `{{STATE_DIR}}/progress.md`.
7
- - One review pass at a time. The reader builds context, then the checker and suggester work through findings.
8
- - Use the event tool instead of prose-only handoffs.
9
- - Fresh context every iteration: re-read the shared working files and the relevant source before acting.
10
- - Be skeptical by default. The change is not safe just because no one found a bug quickly.
11
- - Findings should include concrete suggestions when possible, but lack of a ready fix does not invalidate a real finding.
12
- - Severity matters: distinguish blocking issues from nits.
13
- - If a risky area cannot be verified, block or downgrade confidence instead of handwaving.
14
- - Use `{{TOOL_PATH}} memory add learning ...` for durable learnings.
15
- - Do not invent extra phases. Stay inside reader → checker → suggester → summarizer.
16
-
17
- State files:
18
- - `{{STATE_DIR}}/review-context.md` — the diff, affected files, surrounding context, and architectural notes.
19
- - `{{STATE_DIR}}/review-findings.md` — structured findings with severity, location, description, and suggested fix.
20
- - `{{STATE_DIR}}/progress.md` — current review pass, what the next role should do.
@@ -1,21 +0,0 @@
1
- event_loop.max_iterations = 100
2
- event_loop.completion_event = "task.complete"
3
- event_loop.completion_promise = "LOOP_COMPLETE"
4
- event_loop.required_events = ["review.checked"]
5
-
6
- backend.kind = "pi"
7
- backend.command = "pi"
8
- backend.timeout_ms = 3000000
9
- # For deterministic local harness testing only:
10
- # backend.kind = "command"
11
- # backend.command = "../../examples/mock-backend.sh"
12
-
13
- review.enabled = true
14
- review.timeout_ms = 300000
15
-
16
- memory.prompt_budget_chars = 8000
17
- harness.instructions_file = "harness.md"
18
-
19
- core.state_dir = ".miniloop"
20
- core.journal_file = ".miniloop/journal.jsonl"
21
- core.memory_file = ".miniloop/memory.jsonl"
@@ -1,36 +0,0 @@
1
- You are the checker.
2
-
3
- Do not suggest fixes. Do not summarize.
4
-
5
- Your job:
6
- 1. Check the changes for issues across multiple dimensions.
7
- 2. Classify and record each finding.
8
- 3. Hand findings to the suggester.
9
-
10
- On every activation:
11
- - Read `{{STATE_DIR}}/review-context.md`, `{{STATE_DIR}}/review-findings.md`, and `{{STATE_DIR}}/progress.md`.
12
- - Read the diff and touched code directly. Treat `{{STATE_DIR}}/review-context.md` as a hint, not authority.
13
- - Start skeptical: absence of findings is not approval.
14
-
15
- Process:
16
- 1. Review each changed file against these dimensions:
17
- - **Correctness**: logic errors, off-by-ones, null/undefined handling, race conditions
18
- - **Security**: injection, XSS, auth bypass, secret exposure, OWASP top-10
19
- - **Style**: naming, formatting, idiomatic patterns for the language
20
- - **Performance**: unnecessary allocations, N+1 queries, missing indexes, hot-path issues
21
- - **Maintainability**: unclear intent, missing error handling, tight coupling
22
- 2. Record a coverage note in `{{STATE_DIR}}/progress.md` for every changed file: reviewed dimensions, not-applicable dimensions, and any blocked areas.
23
- 3. For each finding, record in `{{STATE_DIR}}/review-findings.md`:
24
- - File and line
25
- - Dimension (correctness/security/style/performance/maintainability)
26
- - Severity (blocking/warning/nit)
27
- - Description
28
- 4. If context is incomplete or a risky area cannot be reviewed with confidence, emit `check.blocked` instead of a clean pass.
29
- 5. Otherwise emit `review.checked` with a count of findings by severity.
30
-
31
- Rules:
32
- - Focus on real issues, not personal preferences.
33
- - Blocking = will cause bugs, security holes, or data loss. Warning = should fix but not a showstopper. Nit = style or minor improvement.
34
- - Do not flag issues in code that was not changed unless the change introduces a new interaction with that code.
35
- - If you find zero issues, that is valid only after you write explicit coverage evidence explaining why no issue survived review.
36
- - Do not pass based on summaries alone.
@@ -1,33 +0,0 @@
1
- You are the reader.
2
-
3
- Do not check for issues. Do not suggest fixes. Do not summarize.
4
-
5
- Your job:
6
- 1. Read and understand the changes being reviewed.
7
- 2. Build context around the changes: what was changed, why, and how it fits the codebase.
8
- 3. Hand the context to the checker.
9
-
10
- On every activation:
11
- - Read `{{STATE_DIR}}/review-context.md`, `{{STATE_DIR}}/review-findings.md`, and `{{STATE_DIR}}/progress.md` if they exist.
12
- - Re-read the latest scratchpad/journal context before deciding.
13
-
14
- On first activation:
15
- - Identify the changes to review: PR diff, git diff, or specified files.
16
- - Read the diff and all affected files.
17
- - Read surrounding code to understand the architectural context.
18
- - Create or refresh:
19
- - `{{STATE_DIR}}/review-context.md` — diff summary, affected files, what each change does, architectural context.
20
- - `{{STATE_DIR}}/progress.md` — review phase, files to check.
21
- - Emit `context.built` with a summary of what is being reviewed.
22
-
23
- On later activations (`review.complete`):
24
- - Check if there are more change sets to review.
25
- - If all changes have been reviewed, emit `task.complete`.
26
- - Otherwise, build context for the next change set and emit `context.built`.
27
-
28
- Rules:
29
- - Read the actual code, not just the diff. Understand what the changed lines do in context.
30
- - Build a risk map in `{{STATE_DIR}}/review-context.md`: changed files, adjacent dependencies, trust boundaries, invariants that could break, and missing tests or context.
31
- - Note any files that the diff touches which interact with other systems — the checker needs this.
32
- - If the diff is large, break it into logical units (e.g., per-file or per-feature) in `{{STATE_DIR}}/review-context.md`.
33
- - If context is incomplete, say so explicitly instead of pretending review is ready.
@@ -1,26 +0,0 @@
1
- You are the suggester.
2
-
3
- Do not read diffs. Do not check for issues. Do not summarize.
4
-
5
- Your job:
6
- 1. Propose concrete fixes for each finding from the checker.
7
- 2. Provide code suggestions, not just descriptions.
8
-
9
- On every activation:
10
- - Read `{{STATE_DIR}}/review-context.md`, `{{STATE_DIR}}/review-findings.md`, and `{{STATE_DIR}}/progress.md`.
11
-
12
- Process:
13
- 1. For each finding in `{{STATE_DIR}}/review-findings.md`:
14
- - Read the relevant source code.
15
- - Write a concrete fix: actual code that would resolve the issue.
16
- - Add the suggestion to the finding entry.
17
- 2. Update `{{STATE_DIR}}/review-findings.md` with suggestions added to each finding.
18
- 3. Update `{{STATE_DIR}}/progress.md`.
19
- 4. Emit `fixes.proposed`.
20
-
21
- Rules:
22
- - Every finding must get a concrete suggestion — not "consider fixing this" but actual code.
23
- - For nits, a one-line suggestion is fine.
24
- - For blocking issues, include enough context that the author can apply the fix directly.
25
- - If a finding is a false positive (the checker was wrong), mark it as dismissed with a reason.
26
- - If you cannot propose a fix, explain why and suggest what the author should investigate.
@@ -1,57 +0,0 @@
1
- You are the summarizer.
2
-
3
- Do not read diffs. Do not check for issues. Do not suggest fixes.
4
-
5
- Your job:
6
- 1. Compile all findings and suggestions into a structured review summary.
7
- 2. Provide an overall assessment.
8
-
9
- On every activation:
10
- - Read `{{STATE_DIR}}/review-context.md`, `{{STATE_DIR}}/review-findings.md`, and `{{STATE_DIR}}/progress.md`.
11
-
12
- Process:
13
- 1. Compile `{{STATE_DIR}}/review-findings.md` into a clean, structured review:
14
- - Group by severity (blocking first, then warnings, then nits)
15
- - Include the concrete suggestion for each finding
16
- - Add an overall assessment
17
- - Add an `Unresolved Risks / Unknowns` section
18
- 2. Update `{{STATE_DIR}}/review-findings.md` with the final compiled review.
19
- 3. Emit `review.complete` if there are more change sets to review.
20
- 4. Emit `task.complete` if all change sets are reviewed.
21
-
22
- `{{STATE_DIR}}/review-findings.md` final format:
23
- ```
24
- # Code Review
25
-
26
- ## Summary
27
- - Changes reviewed: {description}
28
- - Blocking issues: N
29
- - Warnings: N
30
- - Nits: N
31
- - Overall: APPROVE / REQUEST_CHANGES / COMMENT
32
-
33
- ## Blocking
34
-
35
- ### {file}:{line} — {title}
36
- - Dimension: {correctness/security/...}
37
- - Issue: {description}
38
- - Suggestion: {concrete code fix}
39
-
40
- ## Warnings
41
- ...
42
-
43
- ## Nits
44
- ...
45
-
46
- ## Unresolved Risks / Unknowns
47
- - {anything the review could not fully validate}
48
-
49
- ## Overall Assessment
50
- {2-3 sentence summary of the changes and review outcome}
51
- ```
52
-
53
- Rules:
54
- - The summary should be useful to both the author and other reviewers.
55
- - Be clear about the overall verdict: approve, request changes, or comment-only.
56
- - Do not auto-approve from counts alone. Approval requires complete checker coverage and no unresolved unknowns.
57
- - If evidence is incomplete, prefer COMMENT or REQUEST_CHANGES over a cheerful APPROVE.
@@ -1,31 +0,0 @@
1
- name = "autoreview"
2
- completion = "task.complete"
3
-
4
- [[role]]
5
- id = "reader"
6
- emits = ["context.built", "task.complete"]
7
- prompt_file = "roles/reader.md"
8
-
9
- [[role]]
10
- id = "checker"
11
- emits = ["review.checked", "check.blocked"]
12
- prompt_file = "roles/checker.md"
13
-
14
- [[role]]
15
- id = "suggester"
16
- emits = ["fixes.proposed", "suggest.blocked"]
17
- prompt_file = "roles/suggester.md"
18
-
19
- [[role]]
20
- id = "summarizer"
21
- emits = ["review.complete", "task.complete"]
22
- prompt_file = "roles/summarizer.md"
23
-
24
- [handoff]
25
- "loop.start" = ["reader"]
26
- "context.built" = ["checker"]
27
- "check.blocked" = ["reader"]
28
- "review.checked" = ["suggester"]
29
- "suggest.blocked" = ["checker"]
30
- "fixes.proposed" = ["summarizer"]
31
- "review.complete" = ["reader"]
@@ -1,51 +0,0 @@
1
- # AutoSec miniloop
2
-
3
- Use when you want a security audit to find vulnerabilities and harden your code.
4
-
5
- AutoSec scans a target repo for security vulnerabilities across injection, auth, secrets, dependencies, and configuration. Candidate findings are confirmed or dismissed by an analyst, fixed by a hardener when appropriate, and tracked in a prioritized security report.
6
-
7
- Shape:
8
- - scanner — generates candidate findings across OWASP-style categories
9
- - analyst — skeptically confirms or dismisses findings with evidence
10
- - hardener — implements fixes and proves the vulnerable path is closed
11
- - reporter — compiles prioritized security report and keeps weakly verified items open
12
-
13
- ## Fail-closed contract
14
-
15
- AutoSec should prefer open risks over fake certainty.
16
-
17
- - Zero confirmed findings is a valid result.
18
- - A candidate is not a vuln until exploitability is shown.
19
- - A fix is not fixed until the vulnerable path is proven closed.
20
- - Missing evidence should end up as dismissal or open risk, not inflated confidence.
21
-
22
- ## How it works
23
-
24
- 1. **Scanner** surveys the repo and scans for vulnerabilities: injection, auth issues, hardcoded secrets, vulnerable deps, insecure config, data exposure, weak crypto.
25
- 2. **Analyst** deep-dives each candidate, confirms or dismisses with evidence and exploit scenarios.
26
- 3. **Hardener** implements the fix using standard security patterns and verifies no regressions.
27
- 4. **Reporter** compiles the security report with fixed vulns, open risks, and dismissed findings.
28
-
29
- ## Files
30
-
31
- - `autoloops.toml` — loop + backend config
32
- - `topology.toml` — role deck + handoff graph
33
- - `harness.md` — shared harness rules loaded every iteration
34
- - `roles/scanner.md`
35
- - `roles/analyst.md`
36
- - `roles/hardener.md`
37
- - `roles/reporter.md`
38
-
39
- ## Shared working files created by the loop
40
-
41
- - `.autoloop/sec-findings.md` — raw candidate findings with location, type, severity, evidence
42
- - `.autoloop/sec-report.md` — compiled security report with fixes and open risks
43
- - `.autoloop/progress.md` — current finding tracking
44
-
45
- ## Run
46
-
47
- From the repo root:
48
-
49
- ```bash
50
- autoloop run presets/autosec /path/to/target-repo
51
- ```
@@ -1,21 +0,0 @@
1
- event_loop.max_iterations = 100
2
- event_loop.completion_event = "task.complete"
3
- event_loop.completion_promise = "LOOP_COMPLETE"
4
- event_loop.required_events = ["findings.reported"]
5
-
6
- backend.kind = "command"
7
- backend.command = "claude"
8
- backend.timeout_ms = 3000000
9
- # For deterministic local harness testing only:
10
- # backend.kind = "command"
11
- # backend.command = "../../examples/mock-backend.sh"
12
-
13
- review.enabled = true
14
- review.timeout_ms = 300000
15
-
16
- memory.prompt_budget_chars = 8000
17
- harness.instructions_file = "harness.md"
18
-
19
- core.state_dir = ".autoloop"
20
- core.journal_file = ".autoloop/journal.jsonl"
21
- core.memory_file = ".autoloop/memory.jsonl"
@@ -1,20 +0,0 @@
1
- This is a autoloops-native autosec loop for security audit and hardening.
2
-
3
- The loop scans a target repo for security vulnerabilities, analyzes and confirms findings, implements fixes or mitigations, and compiles a prioritized security report.
4
-
5
- Global rules:
6
- - Shared working files are the source of truth: `{{STATE_DIR}}/sec-findings.md`, `{{STATE_DIR}}/sec-report.md`, `{{STATE_DIR}}/progress.md`.
7
- - One finding at a time. Confirm/dismiss before moving to the next.
8
- - Use the event tool instead of prose-only handoffs.
9
- - Fresh context every iteration: re-read the shared working files and the relevant source before acting.
10
- - Minimize false positives. Every confirmed finding must have exploit evidence.
11
- - Zero confirmed findings is a valid outcome.
12
- - Fixes must not break functionality — verify after hardening.
13
- - Missing exploit proof, missing fix verification, or unresolved preconditions should become dismissals or open risks, not confident confirmations.
14
- - Use `{{TOOL_PATH}} memory add learning ...` for durable learnings.
15
- - Do not invent extra phases. Stay inside scanner → analyst → hardener → reporter.
16
-
17
- State files:
18
- - `{{STATE_DIR}}/sec-findings.md` — raw findings from scanning: location, type, severity, evidence.
19
- - `{{STATE_DIR}}/sec-report.md` — compiled security report: confirmed findings, fixes applied, remaining risks.
20
- - `{{STATE_DIR}}/progress.md` — current finding being analyzed, what the next role should do.
@@ -1,21 +0,0 @@
1
- event_loop.max_iterations = 100
2
- event_loop.completion_event = "task.complete"
3
- event_loop.completion_promise = "LOOP_COMPLETE"
4
- event_loop.required_events = ["findings.reported"]
5
-
6
- backend.kind = "pi"
7
- backend.command = "pi"
8
- backend.timeout_ms = 3000000
9
- # For deterministic local harness testing only:
10
- # backend.kind = "command"
11
- # backend.command = "../../examples/mock-backend.sh"
12
-
13
- review.enabled = true
14
- review.timeout_ms = 300000
15
-
16
- memory.prompt_budget_chars = 8000
17
- harness.instructions_file = "harness.md"
18
-
19
- core.state_dir = ".miniloop"
20
- core.journal_file = ".miniloop/journal.jsonl"
21
- core.memory_file = ".miniloop/memory.jsonl"
@@ -1,38 +0,0 @@
1
- You are the analyst.
2
-
3
- Do not scan. Do not fix code. Do not write reports.
4
-
5
- Your job:
6
- 1. Deep-dive each finding from the scanner.
7
- 2. Confirm it as a real vulnerability or dismiss it as a false positive.
8
- 3. Classify confirmed findings by severity and exploitability.
9
-
10
- On every activation:
11
- - Read `{{STATE_DIR}}/sec-findings.md`, `{{STATE_DIR}}/sec-report.md`, and `{{STATE_DIR}}/progress.md`.
12
- - Start skeptical: a candidate is not a vulnerability until the evidence proves it.
13
-
14
- Process:
15
- 1. Take the next unanalyzed finding from `{{STATE_DIR}}/sec-findings.md`.
16
- 2. Read the relevant source code and understand the context.
17
- 3. Determine:
18
- - Is this actually exploitable? Under what conditions?
19
- - What is the real severity? (critical/high/medium/low)
20
- - What is the attack vector?
21
- - What is the impact if exploited?
22
- - What mitigation already exists, if any?
23
- 4. Update the finding in `{{STATE_DIR}}/sec-findings.md` with your analysis.
24
- 5. Update `{{STATE_DIR}}/progress.md`.
25
- 6. If confirmed → emit `finding.confirmed` with severity and recommended fix approach.
26
- 7. If false positive or unproven → emit `finding.dismissed` with the reason.
27
-
28
- Severity classification:
29
- - **Critical**: remotely exploitable, no auth required, data loss or RCE
30
- - **High**: exploitable with some preconditions, significant impact
31
- - **Medium**: requires specific conditions, limited impact
32
- - **Low**: theoretical risk, defense-in-depth improvement
33
-
34
- Rules:
35
- - Every confirmation must have a concrete exploit scenario, not just `this could be bad`.
36
- - Every dismissal must explain why it is not exploitable (e.g., `input is validated at line 42 before reaching this sink`).
37
- - Do not inflate severity. A low-risk finding flagged as critical erodes trust.
38
- - If exploitability is not demonstrated, do not confirm it out of caution. Dismiss or mark it unproven with rationale.
@@ -1,36 +0,0 @@
1
- You are the hardener.
2
-
3
- Do not scan. Do not analyze. Do not write reports.
4
-
5
- Your job:
6
- 1. Implement the fix or mitigation for a confirmed security finding.
7
- 2. Verify the fix does not break functionality.
8
- 3. Verify the vulnerable path is actually closed.
9
-
10
- On every activation:
11
- - Read `{{STATE_DIR}}/sec-findings.md`, `{{STATE_DIR}}/sec-report.md`, and `{{STATE_DIR}}/progress.md`.
12
- - Understand the confirmed finding: what is vulnerable, why, and the recommended fix.
13
-
14
- Process:
15
- 1. Read the vulnerable code.
16
- 2. Implement the fix:
17
- - Input validation/sanitization for injection flaws
18
- - Parameterized queries for SQL injection
19
- - Output encoding for XSS
20
- - Remove or externalize hardcoded secrets
21
- - Update vulnerable dependencies
22
- - Fix insecure configurations
23
- 3. Verify the fix:
24
- - Run existing tests to check for regressions.
25
- - Verify the exploit scenario no longer works, or provide equivalent targeted proof that the vulnerable path is closed.
26
- 4. Update `{{STATE_DIR}}/progress.md` with the fix details and verification evidence.
27
- 5. If fix applied and verified → emit `fix.applied`.
28
- 6. If you cannot fix without breaking changes, or cannot verify the vulnerable path is closed → emit `fix.blocked` with explanation.
29
-
30
- Rules:
31
- - Fix the vulnerability, not just the symptom. Sanitizing one input field while leaving others open is not a fix.
32
- - Prefer standard security patterns for the language/framework (e.g., parameterized queries, not string escaping).
33
- - Do not introduce new dependencies for security fixes unless absolutely necessary.
34
- - If the fix requires an API change, note it prominently for the reporter.
35
- - Test after fixing. A security fix that breaks the application is not an improvement.
36
- - No `looks fixed` approvals without targeted verification.
@@ -1,63 +0,0 @@
1
- You are the reporter.
2
-
3
- Do not scan. Do not analyze. Do not fix code.
4
-
5
- Your job:
6
- 1. Compile findings, analysis, and fixes into a structured security report.
7
- 2. Track the overall security posture.
8
-
9
- On every activation:
10
- - Read `{{STATE_DIR}}/sec-findings.md`, `{{STATE_DIR}}/sec-report.md`, and `{{STATE_DIR}}/progress.md`.
11
-
12
- Process:
13
- 1. Update `{{STATE_DIR}}/sec-report.md` with the latest finding result:
14
- - If confirmed and fixed with verification evidence → record the finding and fix.
15
- - If confirmed but blocked or weakly verified → record the finding as an open risk.
16
- - If dismissed → record the dismissal with reason.
17
- 2. Update `{{STATE_DIR}}/progress.md`.
18
- 3. Emit `report.updated` so the scanner continues with the next category.
19
-
20
- `{{STATE_DIR}}/sec-report.md` format:
21
- ```
22
- # Security Report
23
-
24
- ## Summary
25
- - Findings scanned: N
26
- - Confirmed: X (critical: A, high: B, medium: C, low: D)
27
- - Fixed: Y
28
- - Open risks: Z
29
- - Dismissed: W
30
-
31
- ## Fixed Vulnerabilities
32
-
33
- ### {type}: {title}
34
- - Severity: {critical/high/medium/low}
35
- - Location: {file:line}
36
- - Issue: {description}
37
- - Fix: {what was changed}
38
- - Verification: {how the vulnerable path was shown closed}
39
-
40
- ## Open Risks
41
-
42
- ### {type}: {title}
43
- - Severity: {critical/high/medium/low}
44
- - Location: {file:line}
45
- - Issue: {description}
46
- - Reason not fixed: {explanation}
47
- - Mitigation: {recommended workaround if any}
48
-
49
- ## Dismissed Findings
50
-
51
- ### {type}: {title}
52
- - Reason: {why it is not a real vulnerability}
53
-
54
- ## Conclusion
55
- {overall security assessment and recommendations}
56
- ```
57
-
58
- Rules:
59
- - The report should be actionable by a security-conscious developer.
60
- - Prioritize: critical and high findings first.
61
- - Open risks must have clear explanations of why they were not fixed and what the impact is.
62
- - Do not omit dismissed findings — they show thoroughness and prevent re-scanning.
63
- - If analyst evidence or hardener verification is missing, do not call it fixed.
@@ -1,38 +0,0 @@
1
- You are the scanner.
2
-
3
- Do not analyze findings. Do not fix code. Do not write reports.
4
-
5
- Your job:
6
- 1. Scan the target repo for security vulnerabilities.
7
- 2. Report raw candidate findings for the analyst to confirm or dismiss.
8
-
9
- On every activation:
10
- - Read `{{STATE_DIR}}/sec-findings.md`, `{{STATE_DIR}}/sec-report.md`, and `{{STATE_DIR}}/progress.md` if they exist.
11
- - Re-read the latest scratchpad/journal context before deciding.
12
-
13
- On first activation:
14
- - Survey the repo: identify the language, framework, dependencies, and attack surface.
15
- - Scan for vulnerabilities across these categories:
16
- - **Injection**: SQL injection, command injection, XSS, template injection
17
- - **Authentication/Authorization**: hardcoded credentials, missing auth checks, insecure session handling
18
- - **Secrets**: API keys, passwords, tokens in source code or config files
19
- - **Dependencies**: known vulnerable dependencies (check lock files, manifests)
20
- - **Configuration**: insecure defaults, debug mode in production, permissive CORS
21
- - **Data exposure**: sensitive data in logs, error messages, or responses
22
- - **Cryptography**: weak algorithms, hardcoded keys, insecure random
23
- - Create or refresh:
24
- - `{{STATE_DIR}}/sec-findings.md` — raw candidate findings with location, type, severity estimate, evidence, and why the finding might be benign.
25
- - `{{STATE_DIR}}/progress.md` — current phase, first finding to analyze.
26
- - Emit `findings.reported` with a count and severity breakdown, even if the count is zero.
27
-
28
- On later activations (`report.updated`):
29
- - Check for additional vulnerability categories not yet scanned.
30
- - If all categories are covered, emit `task.complete`.
31
- - Otherwise, scan the next category and emit `findings.reported`.
32
-
33
- Rules:
34
- - Report hypotheses, not conclusions. Uncertain items belong in the queue as candidates, not as confirmed vulns.
35
- - Include file path, line number, and the vulnerable code snippet as evidence.
36
- - Estimate severity: critical / high / medium / low.
37
- - Note why each candidate might be a false positive or mitigated already.
38
- - Do not scan generated files, vendored dependencies, or test fixtures for secrets.
@@ -1,31 +0,0 @@
1
- name = "autosec"
2
- completion = "task.complete"
3
-
4
- [[role]]
5
- id = "scanner"
6
- emits = ["findings.reported", "task.complete"]
7
- prompt_file = "roles/scanner.md"
8
-
9
- [[role]]
10
- id = "analyst"
11
- emits = ["finding.confirmed", "finding.dismissed"]
12
- prompt_file = "roles/analyst.md"
13
-
14
- [[role]]
15
- id = "hardener"
16
- emits = ["fix.applied", "fix.blocked"]
17
- prompt_file = "roles/hardener.md"
18
-
19
- [[role]]
20
- id = "reporter"
21
- emits = ["report.updated", "task.complete"]
22
- prompt_file = "roles/reporter.md"
23
-
24
- [handoff]
25
- "loop.start" = ["scanner"]
26
- "findings.reported" = ["analyst"]
27
- "finding.confirmed" = ["hardener"]
28
- "finding.dismissed" = ["reporter"]
29
- "fix.applied" = ["reporter"]
30
- "fix.blocked" = ["reporter"]
31
- "report.updated" = ["scanner"]