lastlight 0.6.2 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. package/dist/admin/routes.d.ts +1 -1
  2. package/dist/admin/routes.js +1 -1
  3. package/dist/admin/routes.js.map +1 -1
  4. package/dist/cli/cli-config.js.map +1 -0
  5. package/dist/cli/cli-format.js.map +1 -0
  6. package/dist/{cli-server.d.ts → cli/cli-server.d.ts} +1 -1
  7. package/dist/{cli-server.js → cli/cli-server.js} +2 -2
  8. package/dist/cli/cli-server.js.map +1 -0
  9. package/dist/cli/cli-timeline.js.map +1 -0
  10. package/dist/{cli.js → cli/cli.js} +2 -0
  11. package/dist/cli/cli.js.map +1 -0
  12. package/dist/{fork-cli.d.ts → cli/fork-cli.d.ts} +14 -5
  13. package/dist/{fork-cli.js → cli/fork-cli.js} +86 -16
  14. package/dist/cli/fork-cli.js.map +1 -0
  15. package/dist/{setup.js → cli/setup.js} +1 -1
  16. package/dist/cli/setup.js.map +1 -0
  17. package/dist/{skills-install.js → cli/skills-install.js} +1 -1
  18. package/dist/cli/skills-install.js.map +1 -0
  19. package/dist/config/config-resolve.js.map +1 -0
  20. package/dist/{config.js → config/config.js} +2 -2
  21. package/dist/config/config.js.map +1 -0
  22. package/dist/config/overlay-assets.js.map +1 -0
  23. package/dist/config/overlay-bootstrap.js.map +1 -0
  24. package/dist/connectors/github-webhook.js +5 -0
  25. package/dist/connectors/github-webhook.js.map +1 -1
  26. package/dist/connectors/types.d.ts +2 -0
  27. package/dist/engine/agent-executor.d.ts +8 -17
  28. package/dist/engine/agent-executor.js +35 -306
  29. package/dist/engine/agent-executor.js.map +1 -1
  30. package/dist/engine/{chat-runner.d.ts → chat/chat-runner.d.ts} +2 -2
  31. package/dist/engine/{chat-runner.js → chat/chat-runner.js} +1 -1
  32. package/dist/engine/chat/chat-runner.js.map +1 -0
  33. package/dist/engine/{chat-skills.js → chat/chat-skills.js} +1 -1
  34. package/dist/engine/chat/chat-skills.js.map +1 -0
  35. package/dist/engine/{chat.d.ts → chat/chat.d.ts} +2 -2
  36. package/dist/engine/{chat.js → chat/chat.js} +7 -7
  37. package/dist/engine/chat/chat.js.map +1 -0
  38. package/dist/engine/{message-batcher.d.ts → chat/message-batcher.d.ts} +1 -1
  39. package/dist/engine/chat/message-batcher.js.map +1 -0
  40. package/dist/engine/dispatcher.d.ts +2 -2
  41. package/dist/engine/dispatcher.js +24 -0
  42. package/dist/engine/dispatcher.js.map +1 -1
  43. package/dist/engine/executors/orchestrator.d.ts +81 -0
  44. package/dist/engine/executors/orchestrator.js +340 -0
  45. package/dist/engine/executors/orchestrator.js.map +1 -0
  46. package/dist/engine/executors/shared.d.ts +1 -1
  47. package/dist/engine/github/git-auth.js.map +1 -0
  48. package/dist/engine/github/github-app-client.js.map +1 -0
  49. package/dist/engine/github/github-tools.js.map +1 -0
  50. package/dist/engine/github/github.js.map +1 -0
  51. package/dist/engine/{profiles.d.ts → github/profiles.d.ts} +1 -1
  52. package/dist/engine/{profiles.js → github/profiles.js} +1 -1
  53. package/dist/engine/github/profiles.js.map +1 -0
  54. package/dist/engine/router.js +49 -3
  55. package/dist/engine/router.js.map +1 -1
  56. package/dist/engine/{classifier.d.ts → screen/classifier.d.ts} +11 -1
  57. package/dist/engine/{classifier.js → screen/classifier.js} +45 -1
  58. package/dist/engine/screen/classifier.js.map +1 -0
  59. package/dist/engine/{screen.d.ts → screen/screen.d.ts} +1 -1
  60. package/dist/engine/{screen.js → screen/screen.js} +1 -1
  61. package/dist/engine/screen/screen.js.map +1 -0
  62. package/dist/evals-api.d.ts +3 -3
  63. package/dist/evals-api.js +1 -1
  64. package/dist/evals-api.js.map +1 -1
  65. package/dist/index.js +17 -17
  66. package/dist/index.js.map +1 -1
  67. package/dist/managed-repos.js +1 -1
  68. package/dist/managed-repos.js.map +1 -1
  69. package/dist/notify/transports/github.d.ts +1 -1
  70. package/dist/sandbox/sandbox.d.ts +189 -0
  71. package/dist/sandbox/sandbox.js +429 -0
  72. package/dist/sandbox/sandbox.js.map +1 -0
  73. package/dist/state/workflow-run-store.d.ts +7 -0
  74. package/dist/state/workflow-run-store.js +14 -0
  75. package/dist/state/workflow-run-store.js.map +1 -1
  76. package/dist/telemetry/index.d.ts +1 -1
  77. package/dist/workflows/loader.d.ts +1 -1
  78. package/dist/workflows/phase-executor.d.ts +1 -1
  79. package/dist/workflows/resume.d.ts +3 -3
  80. package/dist/workflows/runner.d.ts +2 -2
  81. package/dist/workflows/runner.js +1 -1
  82. package/dist/workflows/runner.js.map +1 -1
  83. package/dist/workflows/schema.d.ts +2 -2
  84. package/dist/workflows/simple.d.ts +26 -5
  85. package/dist/workflows/simple.js +30 -4
  86. package/dist/workflows/simple.js.map +1 -1
  87. package/dist/workflows/triggers.js +1 -1
  88. package/dist/workflows/triggers.js.map +1 -1
  89. package/docker-compose.yml +1 -1
  90. package/package.json +4 -3
  91. package/plugins/lastlight/.claude-plugin/plugin.json +1 -1
  92. package/plugins/lastlight/skills/lastlight-overlay/SKILL.md +7 -1
  93. package/plugins/lastlight/skills/lastlight-overlay/references/forking.md +23 -4
  94. package/skills/README.md +1 -1
  95. package/skills/issue-triage/SKILL.md +34 -7
  96. package/skills/issue-triage/references/AGENT-BRIEF.md +28 -24
  97. package/dist/admin/auth.test.d.ts +0 -1
  98. package/dist/admin/auth.test.js +0 -60
  99. package/dist/admin/auth.test.js.map +0 -1
  100. package/dist/admin/log-search.test.d.ts +0 -1
  101. package/dist/admin/log-search.test.js +0 -78
  102. package/dist/admin/log-search.test.js.map +0 -1
  103. package/dist/admin/routes.test.d.ts +0 -1
  104. package/dist/admin/routes.test.js +0 -877
  105. package/dist/admin/routes.test.js.map +0 -1
  106. package/dist/admin/server-logs.test.d.ts +0 -1
  107. package/dist/admin/server-logs.test.js +0 -58
  108. package/dist/admin/server-logs.test.js.map +0 -1
  109. package/dist/admin/sessions.test.d.ts +0 -1
  110. package/dist/admin/sessions.test.js +0 -78
  111. package/dist/admin/sessions.test.js.map +0 -1
  112. package/dist/admin/version.test.d.ts +0 -1
  113. package/dist/admin/version.test.js +0 -71
  114. package/dist/admin/version.test.js.map +0 -1
  115. package/dist/cli-config.js.map +0 -1
  116. package/dist/cli-config.test.d.ts +0 -1
  117. package/dist/cli-config.test.js +0 -92
  118. package/dist/cli-config.test.js.map +0 -1
  119. package/dist/cli-format.js.map +0 -1
  120. package/dist/cli-server.js.map +0 -1
  121. package/dist/cli-server.test.d.ts +0 -1
  122. package/dist/cli-server.test.js +0 -41
  123. package/dist/cli-server.test.js.map +0 -1
  124. package/dist/cli-timeline.js.map +0 -1
  125. package/dist/cli-timeline.test.d.ts +0 -1
  126. package/dist/cli-timeline.test.js +0 -104
  127. package/dist/cli-timeline.test.js.map +0 -1
  128. package/dist/cli.js.map +0 -1
  129. package/dist/config-overlay.test.d.ts +0 -1
  130. package/dist/config-overlay.test.js +0 -112
  131. package/dist/config-overlay.test.js.map +0 -1
  132. package/dist/config-resolve.js.map +0 -1
  133. package/dist/config-resolve.test.d.ts +0 -1
  134. package/dist/config-resolve.test.js +0 -68
  135. package/dist/config-resolve.test.js.map +0 -1
  136. package/dist/config.js.map +0 -1
  137. package/dist/config.test.d.ts +0 -1
  138. package/dist/config.test.js +0 -288
  139. package/dist/config.test.js.map +0 -1
  140. package/dist/connectors/github-webhook.test.d.ts +0 -1
  141. package/dist/connectors/github-webhook.test.js +0 -156
  142. package/dist/connectors/github-webhook.test.js.map +0 -1
  143. package/dist/connectors/messaging/session-manager.test.d.ts +0 -1
  144. package/dist/connectors/messaging/session-manager.test.js +0 -144
  145. package/dist/connectors/messaging/session-manager.test.js.map +0 -1
  146. package/dist/connectors/slack/connector.test.d.ts +0 -1
  147. package/dist/connectors/slack/connector.test.js +0 -135
  148. package/dist/connectors/slack/connector.test.js.map +0 -1
  149. package/dist/connectors/slack/mrkdwn.test.d.ts +0 -1
  150. package/dist/connectors/slack/mrkdwn.test.js +0 -114
  151. package/dist/connectors/slack/mrkdwn.test.js.map +0 -1
  152. package/dist/cron/fanout.test.d.ts +0 -1
  153. package/dist/cron/fanout.test.js +0 -73
  154. package/dist/cron/fanout.test.js.map +0 -1
  155. package/dist/engine/agent-executor.seam.test.d.ts +0 -1
  156. package/dist/engine/agent-executor.seam.test.js +0 -57
  157. package/dist/engine/agent-executor.seam.test.js.map +0 -1
  158. package/dist/engine/agent-executor.test.d.ts +0 -1
  159. package/dist/engine/agent-executor.test.js +0 -395
  160. package/dist/engine/agent-executor.test.js.map +0 -1
  161. package/dist/engine/chat-runner.js.map +0 -1
  162. package/dist/engine/chat-runner.test.d.ts +0 -1
  163. package/dist/engine/chat-runner.test.js +0 -104
  164. package/dist/engine/chat-runner.test.js.map +0 -1
  165. package/dist/engine/chat-skills.js.map +0 -1
  166. package/dist/engine/chat-skills.test.d.ts +0 -1
  167. package/dist/engine/chat-skills.test.js +0 -20
  168. package/dist/engine/chat-skills.test.js.map +0 -1
  169. package/dist/engine/chat.js.map +0 -1
  170. package/dist/engine/chat.test.d.ts +0 -1
  171. package/dist/engine/chat.test.js +0 -42
  172. package/dist/engine/chat.test.js.map +0 -1
  173. package/dist/engine/classifier.js.map +0 -1
  174. package/dist/engine/classifier.test.d.ts +0 -1
  175. package/dist/engine/classifier.test.js +0 -115
  176. package/dist/engine/classifier.test.js.map +0 -1
  177. package/dist/engine/dispatcher.test.d.ts +0 -1
  178. package/dist/engine/dispatcher.test.js +0 -511
  179. package/dist/engine/dispatcher.test.js.map +0 -1
  180. package/dist/engine/event-shim.test.d.ts +0 -1
  181. package/dist/engine/event-shim.test.js +0 -194
  182. package/dist/engine/event-shim.test.js.map +0 -1
  183. package/dist/engine/executors/backends.d.ts +0 -41
  184. package/dist/engine/executors/backends.js +0 -541
  185. package/dist/engine/executors/backends.js.map +0 -1
  186. package/dist/engine/git-auth.js.map +0 -1
  187. package/dist/engine/git-auth.test.d.ts +0 -1
  188. package/dist/engine/git-auth.test.js +0 -117
  189. package/dist/engine/git-auth.test.js.map +0 -1
  190. package/dist/engine/github-app-client.js.map +0 -1
  191. package/dist/engine/github-app-client.test.d.ts +0 -1
  192. package/dist/engine/github-app-client.test.js +0 -44
  193. package/dist/engine/github-app-client.test.js.map +0 -1
  194. package/dist/engine/github-tools.js.map +0 -1
  195. package/dist/engine/github.js.map +0 -1
  196. package/dist/engine/llm.test.d.ts +0 -1
  197. package/dist/engine/llm.test.js +0 -189
  198. package/dist/engine/llm.test.js.map +0 -1
  199. package/dist/engine/message-batcher.js.map +0 -1
  200. package/dist/engine/message-batcher.test.d.ts +0 -1
  201. package/dist/engine/message-batcher.test.js +0 -109
  202. package/dist/engine/message-batcher.test.js.map +0 -1
  203. package/dist/engine/profiles.js.map +0 -1
  204. package/dist/engine/router.test.d.ts +0 -1
  205. package/dist/engine/router.test.js +0 -695
  206. package/dist/engine/router.test.js.map +0 -1
  207. package/dist/engine/screen.js.map +0 -1
  208. package/dist/engine/screen.test.d.ts +0 -1
  209. package/dist/engine/screen.test.js +0 -82
  210. package/dist/engine/screen.test.js.map +0 -1
  211. package/dist/fork-cli.js.map +0 -1
  212. package/dist/fork-cli.test.d.ts +0 -1
  213. package/dist/fork-cli.test.js +0 -109
  214. package/dist/fork-cli.test.js.map +0 -1
  215. package/dist/managed-repos.test.d.ts +0 -1
  216. package/dist/managed-repos.test.js +0 -39
  217. package/dist/managed-repos.test.js.map +0 -1
  218. package/dist/notify/model.test.d.ts +0 -1
  219. package/dist/notify/model.test.js +0 -109
  220. package/dist/notify/model.test.js.map +0 -1
  221. package/dist/notify/notifier.test.d.ts +0 -1
  222. package/dist/notify/notifier.test.js +0 -100
  223. package/dist/notify/notifier.test.js.map +0 -1
  224. package/dist/notify/render.test.d.ts +0 -1
  225. package/dist/notify/render.test.js +0 -65
  226. package/dist/notify/render.test.js.map +0 -1
  227. package/dist/notify/transports.test.d.ts +0 -1
  228. package/dist/notify/transports.test.js +0 -71
  229. package/dist/notify/transports.test.js.map +0 -1
  230. package/dist/overlay-assets.js.map +0 -1
  231. package/dist/overlay-assets.test.d.ts +0 -1
  232. package/dist/overlay-assets.test.js +0 -75
  233. package/dist/overlay-assets.test.js.map +0 -1
  234. package/dist/overlay-bootstrap.js.map +0 -1
  235. package/dist/overlay-bootstrap.test.d.ts +0 -1
  236. package/dist/overlay-bootstrap.test.js +0 -61
  237. package/dist/overlay-bootstrap.test.js.map +0 -1
  238. package/dist/sandbox/command-exec.integration.test.d.ts +0 -1
  239. package/dist/sandbox/command-exec.integration.test.js +0 -183
  240. package/dist/sandbox/command-exec.integration.test.js.map +0 -1
  241. package/dist/sandbox/docker-compose.test.d.ts +0 -1
  242. package/dist/sandbox/docker-compose.test.js +0 -128
  243. package/dist/sandbox/docker-compose.test.js.map +0 -1
  244. package/dist/sandbox/docker.test.d.ts +0 -1
  245. package/dist/sandbox/docker.test.js +0 -137
  246. package/dist/sandbox/docker.test.js.map +0 -1
  247. package/dist/sandbox/egress-allowlist.test.d.ts +0 -1
  248. package/dist/sandbox/egress-allowlist.test.js +0 -65
  249. package/dist/sandbox/egress-allowlist.test.js.map +0 -1
  250. package/dist/sandbox/egress-firewall-config.test.d.ts +0 -1
  251. package/dist/sandbox/egress-firewall-config.test.js +0 -244
  252. package/dist/sandbox/egress-firewall-config.test.js.map +0 -1
  253. package/dist/sandbox/index.test.d.ts +0 -1
  254. package/dist/sandbox/index.test.js +0 -157
  255. package/dist/sandbox/index.test.js.map +0 -1
  256. package/dist/sandbox/smol.integration.test.d.ts +0 -1
  257. package/dist/sandbox/smol.integration.test.js +0 -130
  258. package/dist/sandbox/smol.integration.test.js.map +0 -1
  259. package/dist/session-log.test.d.ts +0 -1
  260. package/dist/session-log.test.js +0 -85
  261. package/dist/session-log.test.js.map +0 -1
  262. package/dist/setup.js.map +0 -1
  263. package/dist/setup.test.d.ts +0 -1
  264. package/dist/setup.test.js +0 -281
  265. package/dist/setup.test.js.map +0 -1
  266. package/dist/skills-install.js.map +0 -1
  267. package/dist/state/build-assets.test.d.ts +0 -1
  268. package/dist/state/build-assets.test.js +0 -106
  269. package/dist/state/build-assets.test.js.map +0 -1
  270. package/dist/state/db.test.d.ts +0 -1
  271. package/dist/state/db.test.js +0 -484
  272. package/dist/state/db.test.js.map +0 -1
  273. package/dist/state/workflow-run-store.test.d.ts +0 -1
  274. package/dist/state/workflow-run-store.test.js +0 -264
  275. package/dist/state/workflow-run-store.test.js.map +0 -1
  276. package/dist/telemetry/index.test.d.ts +0 -1
  277. package/dist/telemetry/index.test.js +0 -73
  278. package/dist/telemetry/index.test.js.map +0 -1
  279. package/dist/telemetry/pi-events.test.d.ts +0 -1
  280. package/dist/telemetry/pi-events.test.js +0 -69
  281. package/dist/telemetry/pi-events.test.js.map +0 -1
  282. package/dist/workflows/dag.test.d.ts +0 -1
  283. package/dist/workflows/dag.test.js +0 -197
  284. package/dist/workflows/dag.test.js.map +0 -1
  285. package/dist/workflows/golden-build.test.d.ts +0 -1
  286. package/dist/workflows/golden-build.test.js +0 -45
  287. package/dist/workflows/golden-build.test.js.map +0 -1
  288. package/dist/workflows/loader-overlay.test.d.ts +0 -1
  289. package/dist/workflows/loader-overlay.test.js +0 -101
  290. package/dist/workflows/loader-overlay.test.js.map +0 -1
  291. package/dist/workflows/loader.test.d.ts +0 -1
  292. package/dist/workflows/loader.test.js +0 -375
  293. package/dist/workflows/loader.test.js.map +0 -1
  294. package/dist/workflows/loop-eval.test.d.ts +0 -1
  295. package/dist/workflows/loop-eval.test.js +0 -89
  296. package/dist/workflows/loop-eval.test.js.map +0 -1
  297. package/dist/workflows/phase-executor.test.d.ts +0 -1
  298. package/dist/workflows/phase-executor.test.js +0 -497
  299. package/dist/workflows/phase-executor.test.js.map +0 -1
  300. package/dist/workflows/phase-ref.test.d.ts +0 -1
  301. package/dist/workflows/phase-ref.test.js +0 -24
  302. package/dist/workflows/phase-ref.test.js.map +0 -1
  303. package/dist/workflows/runner.test.d.ts +0 -1
  304. package/dist/workflows/runner.test.js +0 -1174
  305. package/dist/workflows/runner.test.js.map +0 -1
  306. package/dist/workflows/simple.test.d.ts +0 -1
  307. package/dist/workflows/simple.test.js +0 -107
  308. package/dist/workflows/simple.test.js.map +0 -1
  309. package/dist/workflows/templates.test.d.ts +0 -1
  310. package/dist/workflows/templates.test.js +0 -258
  311. package/dist/workflows/templates.test.js.map +0 -1
  312. package/dist/workflows/verdict.test.d.ts +0 -1
  313. package/dist/workflows/verdict.test.js +0 -44
  314. package/dist/workflows/verdict.test.js.map +0 -1
  315. package/dist/worktree/manager.test.d.ts +0 -1
  316. package/dist/worktree/manager.test.js +0 -87
  317. package/dist/worktree/manager.test.js.map +0 -1
  318. /package/dist/{cli-config.d.ts → cli/cli-config.d.ts} +0 -0
  319. /package/dist/{cli-config.js → cli/cli-config.js} +0 -0
  320. /package/dist/{cli-format.d.ts → cli/cli-format.d.ts} +0 -0
  321. /package/dist/{cli-format.js → cli/cli-format.js} +0 -0
  322. /package/dist/{cli-timeline.d.ts → cli/cli-timeline.d.ts} +0 -0
  323. /package/dist/{cli-timeline.js → cli/cli-timeline.js} +0 -0
  324. /package/dist/{cli.d.ts → cli/cli.d.ts} +0 -0
  325. /package/dist/{setup.d.ts → cli/setup.d.ts} +0 -0
  326. /package/dist/{skills-install.d.ts → cli/skills-install.d.ts} +0 -0
  327. /package/dist/{config-resolve.d.ts → config/config-resolve.d.ts} +0 -0
  328. /package/dist/{config-resolve.js → config/config-resolve.js} +0 -0
  329. /package/dist/{config.d.ts → config/config.d.ts} +0 -0
  330. /package/dist/{overlay-assets.d.ts → config/overlay-assets.d.ts} +0 -0
  331. /package/dist/{overlay-assets.js → config/overlay-assets.js} +0 -0
  332. /package/dist/{overlay-bootstrap.d.ts → config/overlay-bootstrap.d.ts} +0 -0
  333. /package/dist/{overlay-bootstrap.js → config/overlay-bootstrap.js} +0 -0
  334. /package/dist/engine/{chat-skills.d.ts → chat/chat-skills.d.ts} +0 -0
  335. /package/dist/engine/{message-batcher.js → chat/message-batcher.js} +0 -0
  336. /package/dist/engine/{git-auth.d.ts → github/git-auth.d.ts} +0 -0
  337. /package/dist/engine/{git-auth.js → github/git-auth.js} +0 -0
  338. /package/dist/engine/{github-app-client.d.ts → github/github-app-client.d.ts} +0 -0
  339. /package/dist/engine/{github-app-client.js → github/github-app-client.js} +0 -0
  340. /package/dist/engine/{github-tools.d.ts → github/github-tools.d.ts} +0 -0
  341. /package/dist/engine/{github-tools.js → github/github-tools.js} +0 -0
  342. /package/dist/engine/{github.d.ts → github/github.d.ts} +0 -0
  343. /package/dist/engine/{github.js → github/github.js} +0 -0
@@ -1,25 +1,34 @@
1
- # Writing agent briefs
1
+ # Writing a triage summary
2
2
 
3
- An agent brief is a comment posted when an issue moves to `ready-for-agent`
4
- (or `ready-for-human`). It is the **contract** an AFK agent will build from — the
5
- original body and discussion are context; the brief is what gets implemented.
6
- Post it with `github_add_issue_comment`.
3
+ A triage summary is a comment posted when an issue moves to `ready-for-agent`
4
+ (or `ready-for-human`). It captures the **problem statement** what the issue is
5
+ really asking for and what "done" looks like so a downstream agent (or human)
6
+ can pick it up. The original body and discussion are context; the summary is the
7
+ distilled problem.
8
+
9
+ Triage classifies and **scopes the problem**. It does **not** design the
10
+ solution: triage runs with read-only context and no deep exploration, so any
11
+ implementation it guessed would be wrong as often as right. The build agent
12
+ explores the codebase fresh, with full source access, and owns every
13
+ implementation decision. Post the summary with `github_add_issue_comment`.
7
14
 
8
15
  ## Principles
9
16
 
10
17
  **Durable.** The issue may sit in `ready-for-agent` for weeks while the codebase
11
- moves. Describe interfaces, types, and behavioural contracts name specific
12
- types, function signatures, or config shapes to look for. **Never** reference
13
- file paths or line numbers; they go stale. Don't assume today's structure survives.
14
-
15
- **Behavioural, not procedural.** Say *what* the system should do, not *how* to
16
- code it the agent explores fresh and makes its own implementation calls.
17
- - Good: "`SkillConfig` should accept an optional `schedule: CronExpression`."
18
- - Bad: "Add a `schedule` field in src/types/skill.ts on line 42."
19
-
20
- **Complete acceptance criteria.** Every brief lists concrete, independently
21
- testable criteria so the agent knows when it's done.
22
- - Good: "`gh issue list --label needs-triage` returns issues that passed initial classification."
18
+ moves. Describe the problem and the desired behaviour in terms that stay true as
19
+ the code changes. **Never** reference file paths or line numbers; they go stale.
20
+
21
+ **Problem, not solution.** Say *what* should be true when the work is done, not
22
+ *how* to build it. Do **not** name types, function signatures, or config shapes,
23
+ propose an implementation approach, or point at where in the code to change —
24
+ that is the build agent's job.
25
+ - Good: "Todos can have an optional target date, shown in the list and editable."
26
+ - Bad: "Add a `dueDate: Date` field to the `Todo` interface and a date picker in `TodoForm`."
27
+
28
+ **Complete acceptance criteria.** List concrete, independently testable criteria
29
+ so the agent knows when it's done. These describe the problem's done-state — not
30
+ the implementation.
31
+ - Good: "A todo with a past target date is visually flagged as overdue."
23
32
  - Bad: "Triage should work correctly."
24
33
 
25
34
  **Explicit scope boundaries.** State what is *out of scope* so the agent doesn't
@@ -28,7 +37,7 @@ gold-plate or wander into adjacent features.
28
37
  ## Template
29
38
 
30
39
  ```markdown
31
- ## Agent Brief
40
+ ## Triage Summary
32
41
 
33
42
  **Category:** bug / enhancement
34
43
  **Summary:** one line — what needs to happen
@@ -39,12 +48,7 @@ status quo it builds on.
39
48
 
40
49
  **Desired behavior:**
41
50
  What should happen after the work is done. Be specific about edge cases and
42
- error conditions.
43
-
44
- **Key interfaces:**
45
- - `TypeName` — what changes and why
46
- - `functionName()` — current vs intended return/behaviour
47
- - Config shape — any new options
51
+ error conditions — in user-visible / behavioural terms, not code.
48
52
 
49
53
  **Acceptance criteria:**
50
54
  - [ ] Specific, testable criterion 1
@@ -1 +0,0 @@
1
- export {};
@@ -1,60 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { createToken, verifyToken, authIsEnabled } from "./auth.js";
3
- const SECRET = "test-secret-key";
4
- describe("authIsEnabled", () => {
5
- it("is off when nothing is configured", () => {
6
- expect(authIsEnabled({})).toBe(false);
7
- });
8
- it("is on with an admin password", () => {
9
- expect(authIsEnabled({ adminPassword: "pw" })).toBe(true);
10
- });
11
- it("is on with Slack OAuth (id + secret), no password", () => {
12
- expect(authIsEnabled({ slackOAuthClientId: "C1", slackOAuthClientSecret: "s" })).toBe(true);
13
- });
14
- it("Slack OAuth needs BOTH id and secret", () => {
15
- expect(authIsEnabled({ slackOAuthClientId: "C1" })).toBe(false);
16
- });
17
- it("is on with GitHub OAuth when an allowed-org is set", () => {
18
- expect(authIsEnabled({ githubOAuthClientId: "g", githubOAuthClientSecret: "s", githubAllowedOrg: "acme" })).toBe(true);
19
- });
20
- it("GitHub OAuth without an allowed-org does NOT enable auth", () => {
21
- // Mirrors the dashboard's githubOAuthEnabled gate — creds alone aren't enough.
22
- expect(authIsEnabled({ githubOAuthClientId: "g", githubOAuthClientSecret: "s" })).toBe(false);
23
- });
24
- });
25
- describe("createToken / verifyToken", () => {
26
- it("creates a valid token and verifies it", () => {
27
- const token = createToken(SECRET);
28
- expect(verifyToken(token, SECRET)).toBe(true);
29
- });
30
- it("creates a token with method=password and verifies it", () => {
31
- const token = createToken(SECRET, "password");
32
- expect(verifyToken(token, SECRET)).toBe(true);
33
- });
34
- it("creates a token with method=slack and verifies it", () => {
35
- const token = createToken(SECRET, "slack");
36
- expect(verifyToken(token, SECRET)).toBe(true);
37
- });
38
- it("rejects a token signed with a different secret", () => {
39
- const token = createToken(SECRET, "slack");
40
- expect(verifyToken(token, "wrong-secret")).toBe(false);
41
- });
42
- it("backward compat: tokens without method field still verify", async () => {
43
- // Manually craft a token without method field (old format)
44
- const crypto = await import("node:crypto");
45
- const payload = JSON.stringify({ exp: Math.floor(Date.now() / 1000) + 3600 });
46
- const payloadB64 = Buffer.from(payload).toString("base64url");
47
- const sig = crypto.createHmac("sha256", SECRET).update(payloadB64).digest("base64url");
48
- const token = `${payloadB64}.${sig}`;
49
- expect(verifyToken(token, SECRET)).toBe(true);
50
- });
51
- it("rejects a tampered token", () => {
52
- const token = createToken(SECRET, "slack");
53
- const tampered = token.slice(0, -2) + "xx";
54
- expect(verifyToken(tampered, SECRET)).toBe(false);
55
- });
56
- it("rejects a token with wrong part count", () => {
57
- expect(verifyToken("notavalidtoken", SECRET)).toBe(false);
58
- });
59
- });
60
- //# sourceMappingURL=auth.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.test.js","sourceRoot":"","sources":["../../src/admin/auth.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,78 +0,0 @@
1
- import { describe, it, expect, vi } from "vitest";
2
- import { createAdminRoutes } from "./routes.js";
3
- import { createToken } from "./auth.js";
4
- vi.mock("./docker.js", () => ({
5
- listRunningContainers: vi.fn(async () => []),
6
- killContainer: vi.fn(async () => { }),
7
- getContainerStats: vi.fn(async () => []),
8
- }));
9
- vi.mock("arctic", () => ({ Slack: class {
10
- }, GitHub: class {
11
- } }));
12
- const SECRET = "test-secret";
13
- function makeDb(searchErrors = () => []) {
14
- return {
15
- executions: { searchErrors },
16
- runs: {},
17
- approvals: {},
18
- };
19
- }
20
- function makeSessions(opts = {}) {
21
- return {
22
- listSessionIds: vi.fn(() => opts.ids ?? []),
23
- read: vi.fn(opts.read ?? (async () => [])),
24
- getSessionMeta: vi.fn(async () => null),
25
- exists: vi.fn(() => false),
26
- getFilePath: vi.fn(() => null),
27
- normalizeRawLine: vi.fn((raw) => [raw]),
28
- };
29
- }
30
- function makeConfig() {
31
- return { stateDir: "/tmp", sessionsDir: "/tmp/s", adminPassword: "pw", adminSecret: SECRET };
32
- }
33
- function authed(path) {
34
- return new Request(`http://localhost${path}`, {
35
- headers: { Authorization: `Bearer ${createToken(SECRET)}` },
36
- });
37
- }
38
- describe("GET /log-search", () => {
39
- it("401s without a token", async () => {
40
- const app = createAdminRoutes(makeDb(), makeSessions(), makeSessions(), makeConfig());
41
- const res = await app.fetch(new Request("http://localhost/log-search?q=boom"));
42
- expect(res.status).toBe(401);
43
- });
44
- it("400s when q is missing", async () => {
45
- const app = createAdminRoutes(makeDb(), makeSessions(), makeSessions(), makeConfig());
46
- const res = await app.fetch(authed("/log-search"));
47
- expect(res.status).toBe(400);
48
- });
49
- it("returns error-scope matches from the executions ledger", async () => {
50
- const searchErrors = vi.fn(() => [
51
- { id: "e1", skill: "pr-review:review", repo: "o/r", error: "boom failed", success: false, startedAt: "2026-01-01T00:00:00Z", sessionId: "ses_1", workflowRunId: "wf_1", triggerId: "t1" },
52
- ]);
53
- const app = createAdminRoutes(makeDb(searchErrors), makeSessions(), makeSessions(), makeConfig());
54
- const res = await app.fetch(authed("/log-search?q=boom&limit=10"));
55
- expect(res.status).toBe(200);
56
- const body = (await res.json());
57
- expect(searchErrors).toHaveBeenCalledWith("boom", 10);
58
- expect(body.results).toHaveLength(1);
59
- expect(body.results[0]).toMatchObject({ source: "error", executionId: "e1", sessionId: "ses_1", snippet: "boom failed" });
60
- });
61
- it("greps transcripts in messages scope", async () => {
62
- const sessions = makeSessions({
63
- ids: ["ses_a"],
64
- read: async () => [
65
- { index: 0, msg: { role: "user", content: "please fix the flaky test" } },
66
- { index: 1, msg: { role: "assistant", content: "the flaky retry logic is here" } },
67
- ],
68
- });
69
- const app = createAdminRoutes(makeDb(), sessions, makeSessions(), makeConfig());
70
- const res = await app.fetch(authed("/log-search?q=flaky&scope=messages"));
71
- expect(res.status).toBe(200);
72
- const body = (await res.json());
73
- expect(body.results.length).toBe(2);
74
- expect(body.results[0]).toMatchObject({ source: "message", sessionId: "ses_a" });
75
- expect(body.results[0].snippet.toLowerCase()).toContain("flaky");
76
- });
77
- });
78
- //# sourceMappingURL=log-search.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"log-search.test.js","sourceRoot":"","sources":["../../src/admin/log-search.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};