lastlight 0.6.1 → 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 (326) 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/engine/agent-executor.d.ts +1 -1
  25. package/dist/engine/agent-executor.js +2 -2
  26. package/dist/engine/agent-executor.js.map +1 -1
  27. package/dist/engine/{chat-runner.d.ts → chat/chat-runner.d.ts} +2 -2
  28. package/dist/engine/{chat-runner.js → chat/chat-runner.js} +1 -1
  29. package/dist/engine/chat/chat-runner.js.map +1 -0
  30. package/dist/engine/{chat-skills.js → chat/chat-skills.js} +1 -1
  31. package/dist/engine/chat/chat-skills.js.map +1 -0
  32. package/dist/engine/{chat.d.ts → chat/chat.d.ts} +2 -2
  33. package/dist/engine/{chat.js → chat/chat.js} +7 -7
  34. package/dist/engine/chat/chat.js.map +1 -0
  35. package/dist/engine/{message-batcher.d.ts → chat/message-batcher.d.ts} +1 -1
  36. package/dist/engine/chat/message-batcher.js.map +1 -0
  37. package/dist/engine/dispatcher.d.ts +2 -2
  38. package/dist/engine/executors/backends.d.ts +2 -2
  39. package/dist/engine/executors/backends.js +1 -1
  40. package/dist/engine/executors/backends.js.map +1 -1
  41. package/dist/engine/executors/shared.d.ts +1 -1
  42. package/dist/engine/github/git-auth.js.map +1 -0
  43. package/dist/engine/github/github-app-client.js.map +1 -0
  44. package/dist/engine/github/github-tools.js.map +1 -0
  45. package/dist/engine/github/github.js.map +1 -0
  46. package/dist/engine/{profiles.d.ts → github/profiles.d.ts} +1 -1
  47. package/dist/engine/{profiles.js → github/profiles.js} +1 -1
  48. package/dist/engine/github/profiles.js.map +1 -0
  49. package/dist/engine/router.js +3 -3
  50. package/dist/engine/router.js.map +1 -1
  51. package/dist/engine/{classifier.d.ts → screen/classifier.d.ts} +1 -1
  52. package/dist/engine/{classifier.js → screen/classifier.js} +1 -1
  53. package/dist/engine/screen/classifier.js.map +1 -0
  54. package/dist/engine/{screen.d.ts → screen/screen.d.ts} +1 -1
  55. package/dist/engine/{screen.js → screen/screen.js} +1 -1
  56. package/dist/engine/screen/screen.js.map +1 -0
  57. package/dist/evals-api.d.ts +3 -3
  58. package/dist/evals-api.js +1 -1
  59. package/dist/evals-api.js.map +1 -1
  60. package/dist/index.js +8 -8
  61. package/dist/index.js.map +1 -1
  62. package/dist/managed-repos.js +1 -1
  63. package/dist/managed-repos.js.map +1 -1
  64. package/dist/notify/transports/github.d.ts +1 -1
  65. package/dist/telemetry/index.d.ts +1 -1
  66. package/dist/workflows/loader.d.ts +1 -1
  67. package/dist/workflows/phase-executor.d.ts +1 -1
  68. package/dist/workflows/resume.d.ts +3 -3
  69. package/dist/workflows/runner.d.ts +2 -2
  70. package/dist/workflows/runner.js +1 -1
  71. package/dist/workflows/runner.js.map +1 -1
  72. package/dist/workflows/schema.d.ts +2 -2
  73. package/dist/workflows/simple.d.ts +2 -2
  74. package/dist/workflows/simple.js +1 -1
  75. package/dist/workflows/simple.js.map +1 -1
  76. package/dist/workflows/triggers.js +1 -1
  77. package/dist/workflows/triggers.js.map +1 -1
  78. package/package.json +4 -3
  79. package/plugins/lastlight/.claude-plugin/plugin.json +1 -1
  80. package/plugins/lastlight/skills/lastlight-evals/SKILL.md +52 -19
  81. package/plugins/lastlight/skills/lastlight-overlay/SKILL.md +7 -1
  82. package/plugins/lastlight/skills/lastlight-overlay/references/forking.md +23 -4
  83. package/dist/admin/auth.test.d.ts +0 -1
  84. package/dist/admin/auth.test.js +0 -60
  85. package/dist/admin/auth.test.js.map +0 -1
  86. package/dist/admin/log-search.test.d.ts +0 -1
  87. package/dist/admin/log-search.test.js +0 -78
  88. package/dist/admin/log-search.test.js.map +0 -1
  89. package/dist/admin/routes.test.d.ts +0 -1
  90. package/dist/admin/routes.test.js +0 -877
  91. package/dist/admin/routes.test.js.map +0 -1
  92. package/dist/admin/server-logs.test.d.ts +0 -1
  93. package/dist/admin/server-logs.test.js +0 -58
  94. package/dist/admin/server-logs.test.js.map +0 -1
  95. package/dist/admin/sessions.test.d.ts +0 -1
  96. package/dist/admin/sessions.test.js +0 -78
  97. package/dist/admin/sessions.test.js.map +0 -1
  98. package/dist/admin/version.test.d.ts +0 -1
  99. package/dist/admin/version.test.js +0 -71
  100. package/dist/admin/version.test.js.map +0 -1
  101. package/dist/cli-config.js.map +0 -1
  102. package/dist/cli-config.test.d.ts +0 -1
  103. package/dist/cli-config.test.js +0 -92
  104. package/dist/cli-config.test.js.map +0 -1
  105. package/dist/cli-format.js.map +0 -1
  106. package/dist/cli-server.js.map +0 -1
  107. package/dist/cli-server.test.d.ts +0 -1
  108. package/dist/cli-server.test.js +0 -41
  109. package/dist/cli-server.test.js.map +0 -1
  110. package/dist/cli-timeline.js.map +0 -1
  111. package/dist/cli-timeline.test.d.ts +0 -1
  112. package/dist/cli-timeline.test.js +0 -104
  113. package/dist/cli-timeline.test.js.map +0 -1
  114. package/dist/cli.js.map +0 -1
  115. package/dist/config-overlay.test.d.ts +0 -1
  116. package/dist/config-overlay.test.js +0 -112
  117. package/dist/config-overlay.test.js.map +0 -1
  118. package/dist/config-resolve.js.map +0 -1
  119. package/dist/config-resolve.test.d.ts +0 -1
  120. package/dist/config-resolve.test.js +0 -68
  121. package/dist/config-resolve.test.js.map +0 -1
  122. package/dist/config.js.map +0 -1
  123. package/dist/config.test.d.ts +0 -1
  124. package/dist/config.test.js +0 -288
  125. package/dist/config.test.js.map +0 -1
  126. package/dist/connectors/github-webhook.test.d.ts +0 -1
  127. package/dist/connectors/github-webhook.test.js +0 -156
  128. package/dist/connectors/github-webhook.test.js.map +0 -1
  129. package/dist/connectors/messaging/session-manager.test.d.ts +0 -1
  130. package/dist/connectors/messaging/session-manager.test.js +0 -144
  131. package/dist/connectors/messaging/session-manager.test.js.map +0 -1
  132. package/dist/connectors/slack/connector.test.d.ts +0 -1
  133. package/dist/connectors/slack/connector.test.js +0 -135
  134. package/dist/connectors/slack/connector.test.js.map +0 -1
  135. package/dist/connectors/slack/mrkdwn.test.d.ts +0 -1
  136. package/dist/connectors/slack/mrkdwn.test.js +0 -114
  137. package/dist/connectors/slack/mrkdwn.test.js.map +0 -1
  138. package/dist/cron/fanout.test.d.ts +0 -1
  139. package/dist/cron/fanout.test.js +0 -73
  140. package/dist/cron/fanout.test.js.map +0 -1
  141. package/dist/engine/agent-executor.seam.test.d.ts +0 -1
  142. package/dist/engine/agent-executor.seam.test.js +0 -57
  143. package/dist/engine/agent-executor.seam.test.js.map +0 -1
  144. package/dist/engine/agent-executor.test.d.ts +0 -1
  145. package/dist/engine/agent-executor.test.js +0 -395
  146. package/dist/engine/agent-executor.test.js.map +0 -1
  147. package/dist/engine/chat-runner.js.map +0 -1
  148. package/dist/engine/chat-runner.test.d.ts +0 -1
  149. package/dist/engine/chat-runner.test.js +0 -104
  150. package/dist/engine/chat-runner.test.js.map +0 -1
  151. package/dist/engine/chat-skills.js.map +0 -1
  152. package/dist/engine/chat-skills.test.d.ts +0 -1
  153. package/dist/engine/chat-skills.test.js +0 -20
  154. package/dist/engine/chat-skills.test.js.map +0 -1
  155. package/dist/engine/chat.js.map +0 -1
  156. package/dist/engine/chat.test.d.ts +0 -1
  157. package/dist/engine/chat.test.js +0 -42
  158. package/dist/engine/chat.test.js.map +0 -1
  159. package/dist/engine/classifier.js.map +0 -1
  160. package/dist/engine/classifier.test.d.ts +0 -1
  161. package/dist/engine/classifier.test.js +0 -115
  162. package/dist/engine/classifier.test.js.map +0 -1
  163. package/dist/engine/dispatcher.test.d.ts +0 -1
  164. package/dist/engine/dispatcher.test.js +0 -511
  165. package/dist/engine/dispatcher.test.js.map +0 -1
  166. package/dist/engine/event-shim.test.d.ts +0 -1
  167. package/dist/engine/event-shim.test.js +0 -194
  168. package/dist/engine/event-shim.test.js.map +0 -1
  169. package/dist/engine/git-auth.js.map +0 -1
  170. package/dist/engine/git-auth.test.d.ts +0 -1
  171. package/dist/engine/git-auth.test.js +0 -117
  172. package/dist/engine/git-auth.test.js.map +0 -1
  173. package/dist/engine/github-app-client.js.map +0 -1
  174. package/dist/engine/github-app-client.test.d.ts +0 -1
  175. package/dist/engine/github-app-client.test.js +0 -44
  176. package/dist/engine/github-app-client.test.js.map +0 -1
  177. package/dist/engine/github-tools.js.map +0 -1
  178. package/dist/engine/github.js.map +0 -1
  179. package/dist/engine/llm.test.d.ts +0 -1
  180. package/dist/engine/llm.test.js +0 -189
  181. package/dist/engine/llm.test.js.map +0 -1
  182. package/dist/engine/message-batcher.js.map +0 -1
  183. package/dist/engine/message-batcher.test.d.ts +0 -1
  184. package/dist/engine/message-batcher.test.js +0 -109
  185. package/dist/engine/message-batcher.test.js.map +0 -1
  186. package/dist/engine/profiles.js.map +0 -1
  187. package/dist/engine/router.test.d.ts +0 -1
  188. package/dist/engine/router.test.js +0 -695
  189. package/dist/engine/router.test.js.map +0 -1
  190. package/dist/engine/screen.js.map +0 -1
  191. package/dist/engine/screen.test.d.ts +0 -1
  192. package/dist/engine/screen.test.js +0 -82
  193. package/dist/engine/screen.test.js.map +0 -1
  194. package/dist/fork-cli.js.map +0 -1
  195. package/dist/fork-cli.test.d.ts +0 -1
  196. package/dist/fork-cli.test.js +0 -109
  197. package/dist/fork-cli.test.js.map +0 -1
  198. package/dist/managed-repos.test.d.ts +0 -1
  199. package/dist/managed-repos.test.js +0 -39
  200. package/dist/managed-repos.test.js.map +0 -1
  201. package/dist/notify/model.test.d.ts +0 -1
  202. package/dist/notify/model.test.js +0 -109
  203. package/dist/notify/model.test.js.map +0 -1
  204. package/dist/notify/notifier.test.d.ts +0 -1
  205. package/dist/notify/notifier.test.js +0 -100
  206. package/dist/notify/notifier.test.js.map +0 -1
  207. package/dist/notify/render.test.d.ts +0 -1
  208. package/dist/notify/render.test.js +0 -65
  209. package/dist/notify/render.test.js.map +0 -1
  210. package/dist/notify/transports.test.d.ts +0 -1
  211. package/dist/notify/transports.test.js +0 -71
  212. package/dist/notify/transports.test.js.map +0 -1
  213. package/dist/overlay-assets.js.map +0 -1
  214. package/dist/overlay-assets.test.d.ts +0 -1
  215. package/dist/overlay-assets.test.js +0 -75
  216. package/dist/overlay-assets.test.js.map +0 -1
  217. package/dist/overlay-bootstrap.js.map +0 -1
  218. package/dist/overlay-bootstrap.test.d.ts +0 -1
  219. package/dist/overlay-bootstrap.test.js +0 -61
  220. package/dist/overlay-bootstrap.test.js.map +0 -1
  221. package/dist/sandbox/command-exec.integration.test.d.ts +0 -1
  222. package/dist/sandbox/command-exec.integration.test.js +0 -183
  223. package/dist/sandbox/command-exec.integration.test.js.map +0 -1
  224. package/dist/sandbox/docker-compose.test.d.ts +0 -1
  225. package/dist/sandbox/docker-compose.test.js +0 -128
  226. package/dist/sandbox/docker-compose.test.js.map +0 -1
  227. package/dist/sandbox/docker.test.d.ts +0 -1
  228. package/dist/sandbox/docker.test.js +0 -137
  229. package/dist/sandbox/docker.test.js.map +0 -1
  230. package/dist/sandbox/egress-allowlist.test.d.ts +0 -1
  231. package/dist/sandbox/egress-allowlist.test.js +0 -65
  232. package/dist/sandbox/egress-allowlist.test.js.map +0 -1
  233. package/dist/sandbox/egress-firewall-config.test.d.ts +0 -1
  234. package/dist/sandbox/egress-firewall-config.test.js +0 -244
  235. package/dist/sandbox/egress-firewall-config.test.js.map +0 -1
  236. package/dist/sandbox/index.test.d.ts +0 -1
  237. package/dist/sandbox/index.test.js +0 -157
  238. package/dist/sandbox/index.test.js.map +0 -1
  239. package/dist/sandbox/smol.integration.test.d.ts +0 -1
  240. package/dist/sandbox/smol.integration.test.js +0 -130
  241. package/dist/sandbox/smol.integration.test.js.map +0 -1
  242. package/dist/session-log.test.d.ts +0 -1
  243. package/dist/session-log.test.js +0 -85
  244. package/dist/session-log.test.js.map +0 -1
  245. package/dist/setup.js.map +0 -1
  246. package/dist/setup.test.d.ts +0 -1
  247. package/dist/setup.test.js +0 -281
  248. package/dist/setup.test.js.map +0 -1
  249. package/dist/skills-install.js.map +0 -1
  250. package/dist/state/build-assets.test.d.ts +0 -1
  251. package/dist/state/build-assets.test.js +0 -106
  252. package/dist/state/build-assets.test.js.map +0 -1
  253. package/dist/state/db.test.d.ts +0 -1
  254. package/dist/state/db.test.js +0 -484
  255. package/dist/state/db.test.js.map +0 -1
  256. package/dist/state/workflow-run-store.test.d.ts +0 -1
  257. package/dist/state/workflow-run-store.test.js +0 -264
  258. package/dist/state/workflow-run-store.test.js.map +0 -1
  259. package/dist/telemetry/index.test.d.ts +0 -1
  260. package/dist/telemetry/index.test.js +0 -73
  261. package/dist/telemetry/index.test.js.map +0 -1
  262. package/dist/telemetry/pi-events.test.d.ts +0 -1
  263. package/dist/telemetry/pi-events.test.js +0 -69
  264. package/dist/telemetry/pi-events.test.js.map +0 -1
  265. package/dist/workflows/dag.test.d.ts +0 -1
  266. package/dist/workflows/dag.test.js +0 -197
  267. package/dist/workflows/dag.test.js.map +0 -1
  268. package/dist/workflows/golden-build.test.d.ts +0 -1
  269. package/dist/workflows/golden-build.test.js +0 -45
  270. package/dist/workflows/golden-build.test.js.map +0 -1
  271. package/dist/workflows/loader-overlay.test.d.ts +0 -1
  272. package/dist/workflows/loader-overlay.test.js +0 -101
  273. package/dist/workflows/loader-overlay.test.js.map +0 -1
  274. package/dist/workflows/loader.test.d.ts +0 -1
  275. package/dist/workflows/loader.test.js +0 -375
  276. package/dist/workflows/loader.test.js.map +0 -1
  277. package/dist/workflows/loop-eval.test.d.ts +0 -1
  278. package/dist/workflows/loop-eval.test.js +0 -89
  279. package/dist/workflows/loop-eval.test.js.map +0 -1
  280. package/dist/workflows/phase-executor.test.d.ts +0 -1
  281. package/dist/workflows/phase-executor.test.js +0 -497
  282. package/dist/workflows/phase-executor.test.js.map +0 -1
  283. package/dist/workflows/phase-ref.test.d.ts +0 -1
  284. package/dist/workflows/phase-ref.test.js +0 -24
  285. package/dist/workflows/phase-ref.test.js.map +0 -1
  286. package/dist/workflows/runner.test.d.ts +0 -1
  287. package/dist/workflows/runner.test.js +0 -1174
  288. package/dist/workflows/runner.test.js.map +0 -1
  289. package/dist/workflows/simple.test.d.ts +0 -1
  290. package/dist/workflows/simple.test.js +0 -107
  291. package/dist/workflows/simple.test.js.map +0 -1
  292. package/dist/workflows/templates.test.d.ts +0 -1
  293. package/dist/workflows/templates.test.js +0 -258
  294. package/dist/workflows/templates.test.js.map +0 -1
  295. package/dist/workflows/verdict.test.d.ts +0 -1
  296. package/dist/workflows/verdict.test.js +0 -44
  297. package/dist/workflows/verdict.test.js.map +0 -1
  298. package/dist/worktree/manager.test.d.ts +0 -1
  299. package/dist/worktree/manager.test.js +0 -87
  300. package/dist/worktree/manager.test.js.map +0 -1
  301. /package/dist/{cli-config.d.ts → cli/cli-config.d.ts} +0 -0
  302. /package/dist/{cli-config.js → cli/cli-config.js} +0 -0
  303. /package/dist/{cli-format.d.ts → cli/cli-format.d.ts} +0 -0
  304. /package/dist/{cli-format.js → cli/cli-format.js} +0 -0
  305. /package/dist/{cli-timeline.d.ts → cli/cli-timeline.d.ts} +0 -0
  306. /package/dist/{cli-timeline.js → cli/cli-timeline.js} +0 -0
  307. /package/dist/{cli.d.ts → cli/cli.d.ts} +0 -0
  308. /package/dist/{setup.d.ts → cli/setup.d.ts} +0 -0
  309. /package/dist/{skills-install.d.ts → cli/skills-install.d.ts} +0 -0
  310. /package/dist/{config-resolve.d.ts → config/config-resolve.d.ts} +0 -0
  311. /package/dist/{config-resolve.js → config/config-resolve.js} +0 -0
  312. /package/dist/{config.d.ts → config/config.d.ts} +0 -0
  313. /package/dist/{overlay-assets.d.ts → config/overlay-assets.d.ts} +0 -0
  314. /package/dist/{overlay-assets.js → config/overlay-assets.js} +0 -0
  315. /package/dist/{overlay-bootstrap.d.ts → config/overlay-bootstrap.d.ts} +0 -0
  316. /package/dist/{overlay-bootstrap.js → config/overlay-bootstrap.js} +0 -0
  317. /package/dist/engine/{chat-skills.d.ts → chat/chat-skills.d.ts} +0 -0
  318. /package/dist/engine/{message-batcher.js → chat/message-batcher.js} +0 -0
  319. /package/dist/engine/{git-auth.d.ts → github/git-auth.d.ts} +0 -0
  320. /package/dist/engine/{git-auth.js → github/git-auth.js} +0 -0
  321. /package/dist/engine/{github-app-client.d.ts → github/github-app-client.d.ts} +0 -0
  322. /package/dist/engine/{github-app-client.js → github/github-app-client.js} +0 -0
  323. /package/dist/engine/{github-tools.d.ts → github/github-tools.d.ts} +0 -0
  324. /package/dist/engine/{github-tools.js → github/github-tools.js} +0 -0
  325. /package/dist/engine/{github.d.ts → github/github.d.ts} +0 -0
  326. /package/dist/engine/{github.js → github/github.js} +0 -0
@@ -1,484 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach } from "vitest";
2
- import { StateDb } from "./db.js";
3
- import { randomUUID } from "crypto";
4
- let db;
5
- beforeEach(() => {
6
- db = new StateDb(":memory:");
7
- });
8
- afterEach(() => {
9
- db.close();
10
- });
11
- describe("workflow_runs CRUD", () => {
12
- it("creates a workflow run and retrieves it by ID", () => {
13
- const id = randomUUID();
14
- const now = new Date().toISOString();
15
- db.runs.createRun({
16
- id,
17
- workflowName: "build",
18
- triggerId: "owner/repo#1",
19
- repo: "repo",
20
- issueNumber: 1,
21
- currentPhase: "phase_0",
22
- status: "running",
23
- context: { branch: "lastlight/1-test" },
24
- startedAt: now,
25
- finishedAt: undefined,
26
- });
27
- const run = db.runs.getRun(id);
28
- expect(run).not.toBeNull();
29
- expect(run.id).toBe(id);
30
- expect(run.workflowName).toBe("build");
31
- expect(run.triggerId).toBe("owner/repo#1");
32
- expect(run.repo).toBe("repo");
33
- expect(run.issueNumber).toBe(1);
34
- expect(run.currentPhase).toBe("phase_0");
35
- expect(run.status).toBe("running");
36
- expect(run.phaseHistory).toEqual([]);
37
- expect(run.context).toEqual({ branch: "lastlight/1-test" });
38
- });
39
- it("returns null for a non-existent ID", () => {
40
- expect(db.runs.getRun("no-such-id")).toBeNull();
41
- });
42
- it("updates phase and appends to phase_history", () => {
43
- const id = randomUUID();
44
- const now = new Date().toISOString();
45
- db.runs.createRun({
46
- id,
47
- workflowName: "build",
48
- triggerId: "owner/repo#2",
49
- currentPhase: "phase_0",
50
- status: "running",
51
- startedAt: now,
52
- });
53
- const entry = { phase: "guardrails", timestamp: new Date().toISOString(), success: true, summary: "READY" };
54
- db.runs.appendPhase(id, "guardrails", entry);
55
- const run = db.runs.getRun(id);
56
- expect(run.currentPhase).toBe("guardrails");
57
- expect(run.phaseHistory).toHaveLength(1);
58
- expect(run.phaseHistory[0]).toEqual(entry);
59
- });
60
- it("appends multiple phase history entries", () => {
61
- const id = randomUUID();
62
- const now = new Date().toISOString();
63
- db.runs.createRun({
64
- id,
65
- workflowName: "build",
66
- triggerId: "owner/repo#3",
67
- currentPhase: "phase_0",
68
- status: "running",
69
- startedAt: now,
70
- });
71
- db.runs.appendPhase(id, "guardrails", { phase: "guardrails", timestamp: now, success: true });
72
- db.runs.appendPhase(id, "architect", { phase: "architect", timestamp: now, success: true });
73
- db.runs.appendPhase(id, "executor", { phase: "executor", timestamp: now, success: true });
74
- const run = db.runs.getRun(id);
75
- expect(run.currentPhase).toBe("executor");
76
- expect(run.phaseHistory).toHaveLength(3);
77
- expect(run.phaseHistory.map((e) => e.phase)).toEqual(["guardrails", "architect", "executor"]);
78
- });
79
- it("finishes a workflow run with succeeded status", () => {
80
- const id = randomUUID();
81
- const now = new Date().toISOString();
82
- db.runs.createRun({
83
- id,
84
- workflowName: "build",
85
- triggerId: "owner/repo#4",
86
- currentPhase: "executor",
87
- status: "running",
88
- startedAt: now,
89
- });
90
- db.runs.finishRun(id, "succeeded");
91
- const run = db.runs.getRun(id);
92
- expect(run.status).toBe("succeeded");
93
- expect(run.finishedAt).toBeTruthy();
94
- });
95
- it("finishes a workflow run with failed status", () => {
96
- const id = randomUUID();
97
- const now = new Date().toISOString();
98
- db.runs.createRun({
99
- id,
100
- workflowName: "build",
101
- triggerId: "owner/repo#5",
102
- currentPhase: "architect",
103
- status: "running",
104
- startedAt: now,
105
- });
106
- db.runs.finishRun(id, "failed", { error: "some error" });
107
- const run = db.runs.getRun(id);
108
- expect(run.status).toBe("failed");
109
- expect(run.finishedAt).toBeTruthy();
110
- });
111
- });
112
- describe("node_statuses store removed (issue #94)", () => {
113
- it("no longer exposes updateNodeStatus and getWorkflowRun has no nodeStatuses", () => {
114
- const id = randomUUID();
115
- db.runs.createRun({
116
- id,
117
- workflowName: "build",
118
- triggerId: "owner/repo#77",
119
- currentPhase: "phase_0",
120
- status: "running",
121
- startedAt: new Date().toISOString(),
122
- });
123
- expect(db.updateNodeStatus).toBeUndefined();
124
- const run = db.runs.getRun(id);
125
- expect(run).not.toBeNull();
126
- expect(run.nodeStatuses).toBeUndefined();
127
- });
128
- });
129
- describe("recordSkippedPhase — skips land in the executions ledger", () => {
130
- it("writes a finished, non-successful skip row that shouldRunPhase re-evaluates", () => {
131
- const skill = "build:merge";
132
- const triggerId = "owner/repo#88";
133
- db.executions.recordSkippedPhase(skill, triggerId, "wf-skip-1", "repo");
134
- // Not "done" (success != 1) and not "running" (finished_at set) — so a
135
- // resume re-evaluates the node (it'll simply be re-skipped if still gated).
136
- expect(db.executions.shouldRunPhase(skill, triggerId, "wf-skip-1")).toBe("run");
137
- });
138
- });
139
- describe("getWorkflowRunByTrigger", () => {
140
- it("returns the active run for a trigger", () => {
141
- const id = randomUUID();
142
- const now = new Date().toISOString();
143
- db.runs.createRun({
144
- id,
145
- workflowName: "build",
146
- triggerId: "owner/repo#10",
147
- currentPhase: "executor",
148
- status: "running",
149
- startedAt: now,
150
- });
151
- const run = db.runs.getByTrigger("owner/repo#10");
152
- expect(run).not.toBeNull();
153
- expect(run.id).toBe(id);
154
- });
155
- it("ignores failed or succeeded runs", () => {
156
- const id = randomUUID();
157
- const now = new Date().toISOString();
158
- db.runs.createRun({
159
- id,
160
- workflowName: "build",
161
- triggerId: "owner/repo#11",
162
- currentPhase: "executor",
163
- status: "running",
164
- startedAt: now,
165
- });
166
- db.runs.finishRun(id, "failed");
167
- expect(db.runs.getByTrigger("owner/repo#11")).toBeNull();
168
- });
169
- it("returns null when no run exists for trigger", () => {
170
- expect(db.runs.getByTrigger("owner/repo#999")).toBeNull();
171
- });
172
- it("returns the most recent active run when multiple exist", async () => {
173
- const id1 = randomUUID();
174
- const id2 = randomUUID();
175
- db.runs.createRun({
176
- id: id1,
177
- workflowName: "build",
178
- triggerId: "owner/repo#12",
179
- currentPhase: "guardrails",
180
- status: "running",
181
- startedAt: new Date(Date.now() - 1000).toISOString(),
182
- });
183
- db.runs.createRun({
184
- id: id2,
185
- workflowName: "build",
186
- triggerId: "owner/repo#12",
187
- currentPhase: "architect",
188
- status: "running",
189
- startedAt: new Date().toISOString(),
190
- });
191
- const run = db.runs.getByTrigger("owner/repo#12");
192
- expect(run.id).toBe(id2);
193
- });
194
- });
195
- describe("activeWorkflowRuns", () => {
196
- it("returns only running and paused runs", () => {
197
- const now = new Date().toISOString();
198
- const runningId = randomUUID();
199
- db.runs.createRun({ id: runningId, workflowName: "build", triggerId: "t1", currentPhase: "guardrails", status: "running", startedAt: now });
200
- const failedId = randomUUID();
201
- db.runs.createRun({ id: failedId, workflowName: "build", triggerId: "t2", currentPhase: "executor", status: "running", startedAt: now });
202
- db.runs.finishRun(failedId, "failed");
203
- const active = db.runs.listActive();
204
- expect(active.map((r) => r.id)).toContain(runningId);
205
- expect(active.map((r) => r.id)).not.toContain(failedId);
206
- });
207
- });
208
- describe("recentWorkflowRuns", () => {
209
- it("respects limit and orders by started_at DESC", () => {
210
- const now = Date.now();
211
- for (let i = 0; i < 5; i++) {
212
- db.runs.createRun({
213
- id: randomUUID(),
214
- workflowName: "build",
215
- triggerId: `t${i}`,
216
- currentPhase: "phase_0",
217
- status: "running",
218
- startedAt: new Date(now + i * 1000).toISOString(),
219
- });
220
- }
221
- const runs = db.runs.listRecent(3);
222
- expect(runs).toHaveLength(3);
223
- // Most recent first
224
- expect(runs[0].startedAt >= runs[1].startedAt).toBe(true);
225
- expect(runs[1].startedAt >= runs[2].startedAt).toBe(true);
226
- });
227
- });
228
- describe("cancelWorkflowRun", () => {
229
- it("sets status to cancelled", () => {
230
- const id = randomUUID();
231
- const now = new Date().toISOString();
232
- db.runs.createRun({ id, workflowName: "build", triggerId: "t-cancel", currentPhase: "executor", status: "running", startedAt: now });
233
- db.runs.cancelRun(id);
234
- const run = db.runs.getRun(id);
235
- expect(run.status).toBe("cancelled");
236
- expect(run.finishedAt).toBeTruthy();
237
- });
238
- });
239
- describe("pauseWorkflowRun", () => {
240
- it("sets status to paused", () => {
241
- const id = randomUUID();
242
- db.runs.createRun({ id, workflowName: "build", triggerId: "t-pause", currentPhase: "architect", status: "running", startedAt: new Date().toISOString() });
243
- db.runs.setPaused(id);
244
- const run = db.runs.getRun(id);
245
- expect(run.status).toBe("paused");
246
- });
247
- });
248
- describe("workflow_approvals CRUD", () => {
249
- it("creates an approval and retrieves it by ID", () => {
250
- const id = randomUUID();
251
- const workflowRunId = randomUUID();
252
- db.runs.createRun({ id: workflowRunId, workflowName: "build", triggerId: "owner/repo#20", currentPhase: "architect", status: "running", startedAt: new Date().toISOString() });
253
- const now = new Date().toISOString();
254
- db.approvals.create({
255
- id,
256
- workflowRunId,
257
- gate: "post_architect",
258
- summary: "Plan ready for review",
259
- requestedBy: "alice",
260
- createdAt: now,
261
- });
262
- const approval = db.approvals.getById(id);
263
- expect(approval).not.toBeNull();
264
- expect(approval.id).toBe(id);
265
- expect(approval.workflowRunId).toBe(workflowRunId);
266
- expect(approval.gate).toBe("post_architect");
267
- expect(approval.summary).toBe("Plan ready for review");
268
- expect(approval.status).toBe("pending");
269
- expect(approval.requestedBy).toBe("alice");
270
- expect(approval.createdAt).toBe(now);
271
- });
272
- it("returns null for a non-existent approval", () => {
273
- expect(db.approvals.getById("no-such-id")).toBeNull();
274
- });
275
- it("getPendingApprovalForWorkflow returns pending approval", () => {
276
- const workflowRunId = randomUUID();
277
- db.runs.createRun({ id: workflowRunId, workflowName: "build", triggerId: "owner/repo#21", currentPhase: "architect", status: "running", startedAt: new Date().toISOString() });
278
- const approvalId = randomUUID();
279
- db.approvals.create({ id: approvalId, workflowRunId, gate: "post_architect", summary: "Test", createdAt: new Date().toISOString() });
280
- const approval = db.approvals.getPendingForWorkflow(workflowRunId);
281
- expect(approval).not.toBeNull();
282
- expect(approval.id).toBe(approvalId);
283
- expect(approval.status).toBe("pending");
284
- });
285
- it("getPendingApprovalForWorkflow returns null when no pending approval", () => {
286
- expect(db.approvals.getPendingForWorkflow("no-such-workflow")).toBeNull();
287
- });
288
- it("getPendingApprovalByTrigger returns pending approval by trigger ID", () => {
289
- const workflowRunId = randomUUID();
290
- const triggerId = "owner/repo#22";
291
- db.runs.createRun({ id: workflowRunId, workflowName: "build", triggerId, currentPhase: "architect", status: "running", startedAt: new Date().toISOString() });
292
- const approvalId = randomUUID();
293
- db.approvals.create({ id: approvalId, workflowRunId, gate: "post_architect", summary: "Test", createdAt: new Date().toISOString() });
294
- const approval = db.approvals.getPendingByTrigger(triggerId);
295
- expect(approval).not.toBeNull();
296
- expect(approval.id).toBe(approvalId);
297
- });
298
- it("getPendingApprovalByTrigger returns null when trigger has no pending approval", () => {
299
- expect(db.approvals.getPendingByTrigger("owner/repo#9999")).toBeNull();
300
- });
301
- it("listPendingApprovals returns all pending approvals", () => {
302
- for (let i = 0; i < 3; i++) {
303
- const workflowRunId = randomUUID();
304
- db.runs.createRun({ id: workflowRunId, workflowName: "build", triggerId: `owner/repo#${30 + i}`, currentPhase: "architect", status: "running", startedAt: new Date().toISOString() });
305
- db.approvals.create({ id: randomUUID(), workflowRunId, gate: "post_architect", summary: `Summary ${i}`, createdAt: new Date().toISOString() });
306
- }
307
- const pending = db.approvals.listPending();
308
- expect(pending.length).toBeGreaterThanOrEqual(3);
309
- expect(pending.every((a) => a.status === "pending")).toBe(true);
310
- });
311
- it("respondToApproval sets status and respondedBy", () => {
312
- const workflowRunId = randomUUID();
313
- db.runs.createRun({ id: workflowRunId, workflowName: "build", triggerId: "owner/repo#23", currentPhase: "architect", status: "running", startedAt: new Date().toISOString() });
314
- const approvalId = randomUUID();
315
- db.approvals.create({ id: approvalId, workflowRunId, gate: "post_architect", summary: "Test", createdAt: new Date().toISOString() });
316
- db.approvals.respond(approvalId, "approved", "bob");
317
- const approval = db.approvals.getById(approvalId);
318
- expect(approval.status).toBe("approved");
319
- expect(approval.respondedBy).toBe("bob");
320
- expect(approval.respondedAt).toBeTruthy();
321
- expect(approval.response).toBeUndefined();
322
- });
323
- it("respondToApproval stores rejection reason", () => {
324
- const workflowRunId = randomUUID();
325
- db.runs.createRun({ id: workflowRunId, workflowName: "build", triggerId: "owner/repo#24", currentPhase: "architect", status: "running", startedAt: new Date().toISOString() });
326
- const approvalId = randomUUID();
327
- db.approvals.create({ id: approvalId, workflowRunId, gate: "post_architect", summary: "Test", createdAt: new Date().toISOString() });
328
- db.approvals.respond(approvalId, "rejected", "carol", "Plan is incomplete");
329
- const approval = db.approvals.getById(approvalId);
330
- expect(approval.status).toBe("rejected");
331
- expect(approval.respondedBy).toBe("carol");
332
- expect(approval.response).toBe("Plan is incomplete");
333
- });
334
- it("getPendingApprovalForWorkflow ignores responded approvals", () => {
335
- const workflowRunId = randomUUID();
336
- db.runs.createRun({ id: workflowRunId, workflowName: "build", triggerId: "owner/repo#25", currentPhase: "architect", status: "running", startedAt: new Date().toISOString() });
337
- const approvalId = randomUUID();
338
- db.approvals.create({ id: approvalId, workflowRunId, gate: "post_architect", summary: "Test", createdAt: new Date().toISOString() });
339
- db.approvals.respond(approvalId, "approved", "dave");
340
- expect(db.approvals.getPendingForWorkflow(workflowRunId)).toBeNull();
341
- });
342
- });
343
- describe("dailyStats", () => {
344
- // The shared db path resolves to a file (path.resolve(':memory:')), so rows
345
- // accumulate across tests. Wipe executions before each test in this suite.
346
- beforeEach(() => {
347
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
348
- db.db.exec("DELETE FROM executions");
349
- });
350
- function insertExecution(opts) {
351
- db.executions.recordStart({
352
- id: opts.id,
353
- triggerType: "webhook",
354
- triggerId: "owner/repo#1",
355
- skill: "build",
356
- repo: "owner/repo",
357
- issueNumber: 1,
358
- startedAt: opts.startedAt,
359
- });
360
- if (opts.success !== undefined) {
361
- db.executions.recordFinish(opts.id, {
362
- success: opts.success,
363
- inputTokens: opts.inputTokens,
364
- outputTokens: opts.outputTokens,
365
- cacheReadInputTokens: opts.cacheReadTokens,
366
- costUsd: opts.costUsd,
367
- });
368
- }
369
- }
370
- // Dates relative to "now" so the test data always falls inside the
371
- // dailyStats() window. Hardcoded calendar dates rot once wall-clock
372
- // time moves past the 30-day window.
373
- function daysAgo(n) {
374
- const d = new Date();
375
- d.setUTCDate(d.getUTCDate() - n);
376
- d.setUTCHours(12, 0, 0, 0);
377
- return { iso: d.toISOString(), key: d.toISOString().slice(0, 10) };
378
- }
379
- it("returns days rows of zeros when no executions exist", () => {
380
- const rows = db.executions.dailyStats(30);
381
- expect(rows).toHaveLength(30);
382
- expect(rows.every((r) => r.executions === 0)).toBe(true);
383
- expect(rows.every((r) => r.totalTokens === 0 && r.costUsd === 0)).toBe(true);
384
- });
385
- it("aggregates executions by date", () => {
386
- const day1 = daysAgo(5);
387
- const day2 = daysAgo(4);
388
- insertExecution({ id: randomUUID(), startedAt: day1.iso, success: true });
389
- insertExecution({ id: randomUUID(), startedAt: day1.iso, success: false });
390
- insertExecution({ id: randomUUID(), startedAt: day2.iso, success: true });
391
- const rows = db.executions.dailyStats(30);
392
- expect(rows).toHaveLength(30);
393
- const d1 = rows.find((r) => r.date === day1.key);
394
- const d2 = rows.find((r) => r.date === day2.key);
395
- expect(d1).toBeDefined();
396
- expect(d1.executions).toBe(2);
397
- expect(d1.successes).toBe(1);
398
- expect(d1.failures).toBe(1);
399
- expect(d2).toBeDefined();
400
- expect(d2.executions).toBe(1);
401
- expect(d2.successes).toBe(1);
402
- expect(d2.failures).toBe(0);
403
- });
404
- it("sums token and cost data correctly", () => {
405
- const day = daysAgo(3);
406
- insertExecution({ id: randomUUID(), startedAt: day.iso, success: true, inputTokens: 100, outputTokens: 50, cacheReadTokens: 20, costUsd: 0.01 });
407
- insertExecution({ id: randomUUID(), startedAt: day.iso, success: true, inputTokens: 200, outputTokens: 80, cacheReadTokens: 0, costUsd: 0.02 });
408
- const rows = db.executions.dailyStats(30);
409
- const d = rows.find((r) => r.date === day.key);
410
- expect(d).toBeDefined();
411
- expect(d.inputTokens).toBe(300);
412
- expect(d.outputTokens).toBe(130);
413
- expect(d.cacheReadTokens).toBe(20);
414
- expect(d.totalTokens).toBe(450);
415
- expect(d.costUsd).toBeCloseTo(0.03);
416
- });
417
- it("handles NULL token/cost columns gracefully", () => {
418
- const day = daysAgo(2);
419
- // recordStart only — no recordFinish, so tokens/cost are NULL
420
- db.executions.recordStart({ id: randomUUID(), triggerType: "webhook", triggerId: "t1", skill: "build", repo: "r", issueNumber: 1, startedAt: day.iso });
421
- const rows = db.executions.dailyStats(30);
422
- const d = rows.find((r) => r.date === day.key);
423
- expect(d).toBeDefined();
424
- expect(d.totalTokens).toBe(0);
425
- expect(d.costUsd).toBe(0);
426
- });
427
- it("respects the days limit and excludes older executions", () => {
428
- // Very old execution — 60 days ago
429
- const old = new Date();
430
- old.setDate(old.getDate() - 60);
431
- insertExecution({ id: randomUUID(), startedAt: old.toISOString(), success: true });
432
- // Recent execution — today
433
- insertExecution({ id: randomUUID(), startedAt: new Date().toISOString(), success: true });
434
- const rows = db.executions.dailyStats(30);
435
- // 30 daily rows (filled with zeros), with exactly one having an execution
436
- expect(rows).toHaveLength(30);
437
- const withExec = rows.filter((r) => r.executions > 0);
438
- expect(withExec).toHaveLength(1);
439
- });
440
- it("orders results by date ascending", () => {
441
- const d1 = "2026-04-08T10:00:00.000Z";
442
- const d2 = "2026-04-09T10:00:00.000Z";
443
- const d3 = "2026-04-10T10:00:00.000Z";
444
- insertExecution({ id: randomUUID(), startedAt: d3, success: true });
445
- insertExecution({ id: randomUUID(), startedAt: d1, success: true });
446
- insertExecution({ id: randomUUID(), startedAt: d2, success: true });
447
- const rows = db.executions.dailyStats(30);
448
- expect(rows).toHaveLength(30);
449
- const dates = rows.map((r) => r.date);
450
- const sorted = [...dates].sort();
451
- expect(dates).toEqual(sorted);
452
- });
453
- });
454
- describe("context JSON round-trip", () => {
455
- it("stores and retrieves complex context objects", () => {
456
- const id = randomUUID();
457
- const context = { branch: "lastlight/42-my-feature", taskId: "repo-42", models: { architect: "claude-opus-4-6" } };
458
- db.runs.createRun({
459
- id,
460
- workflowName: "build",
461
- triggerId: "owner/repo#42",
462
- currentPhase: "phase_0",
463
- status: "running",
464
- context,
465
- startedAt: new Date().toISOString(),
466
- });
467
- const run = db.runs.getRun(id);
468
- expect(run.context).toEqual(context);
469
- });
470
- it("handles runs without context", () => {
471
- const id = randomUUID();
472
- db.runs.createRun({
473
- id,
474
- workflowName: "build",
475
- triggerId: "owner/repo#43",
476
- currentPhase: "phase_0",
477
- status: "running",
478
- startedAt: new Date().toISOString(),
479
- });
480
- const run = db.runs.getRun(id);
481
- expect(run.context).toBeUndefined();
482
- });
483
- });
484
- //# sourceMappingURL=db.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"db.test.js","sourceRoot":"","sources":["../../src/state/db.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};