lastlight 0.1.8 → 0.2.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 (478) hide show
  1. package/README.md +265 -118
  2. package/agent-context/rules.md +62 -9
  3. package/agent-context/security.md +69 -0
  4. package/config/default.yaml +89 -0
  5. package/deploy/.env.production.example +20 -2
  6. package/deploy/entrypoint.sh +16 -17
  7. package/deploy/native/README.md +160 -0
  8. package/deploy/native/install.sh +110 -0
  9. package/deploy/native/lastlight.env.example +95 -0
  10. package/deploy/native/lastlight.service +50 -0
  11. package/deploy/sandbox-entrypoint.sh +59 -42
  12. package/dist/admin/auth.d.ts +1 -1
  13. package/dist/admin/auth.js +3 -1
  14. package/dist/admin/auth.js.map +1 -1
  15. package/dist/admin/chat-session-reader.d.ts +11 -14
  16. package/dist/admin/chat-session-reader.js +27 -51
  17. package/dist/admin/chat-session-reader.js.map +1 -1
  18. package/dist/admin/docker.d.ts +37 -0
  19. package/dist/admin/docker.js +86 -1
  20. package/dist/admin/docker.js.map +1 -1
  21. package/dist/admin/index.js +38 -3
  22. package/dist/admin/index.js.map +1 -1
  23. package/dist/admin/log-search.test.d.ts +1 -0
  24. package/dist/admin/log-search.test.js +78 -0
  25. package/dist/admin/log-search.test.js.map +1 -0
  26. package/dist/admin/routes.d.ts +52 -3
  27. package/dist/admin/routes.js +780 -63
  28. package/dist/admin/routes.js.map +1 -1
  29. package/dist/admin/routes.test.js +680 -14
  30. package/dist/admin/routes.test.js.map +1 -1
  31. package/dist/admin/server-logs.test.d.ts +1 -0
  32. package/dist/admin/server-logs.test.js +58 -0
  33. package/dist/admin/server-logs.test.js.map +1 -0
  34. package/dist/admin/sessions.d.ts +26 -39
  35. package/dist/admin/sessions.js +86 -310
  36. package/dist/admin/sessions.js.map +1 -1
  37. package/dist/admin/sessions.test.d.ts +1 -0
  38. package/dist/admin/sessions.test.js +78 -0
  39. package/dist/admin/sessions.test.js.map +1 -0
  40. package/dist/admin/version.d.ts +15 -0
  41. package/dist/admin/version.js +73 -0
  42. package/dist/admin/version.js.map +1 -0
  43. package/dist/admin/version.test.d.ts +1 -0
  44. package/dist/admin/version.test.js +71 -0
  45. package/dist/admin/version.test.js.map +1 -0
  46. package/dist/cli-config.d.ts +55 -0
  47. package/dist/cli-config.js +119 -0
  48. package/dist/cli-config.js.map +1 -0
  49. package/dist/cli-config.test.d.ts +1 -0
  50. package/dist/cli-config.test.js +92 -0
  51. package/dist/cli-config.test.js.map +1 -0
  52. package/dist/cli-format.d.ts +19 -0
  53. package/dist/cli-format.js +107 -0
  54. package/dist/cli-format.js.map +1 -0
  55. package/dist/cli-server.d.ts +73 -0
  56. package/dist/cli-server.js +347 -0
  57. package/dist/cli-server.js.map +1 -0
  58. package/dist/cli-server.test.d.ts +1 -0
  59. package/dist/cli-server.test.js +38 -0
  60. package/dist/cli-server.test.js.map +1 -0
  61. package/dist/cli-timeline.d.ts +35 -0
  62. package/dist/cli-timeline.js +373 -0
  63. package/dist/cli-timeline.js.map +1 -0
  64. package/dist/cli-timeline.test.d.ts +1 -0
  65. package/dist/cli-timeline.test.js +104 -0
  66. package/dist/cli-timeline.test.js.map +1 -0
  67. package/dist/cli.d.ts +0 -19
  68. package/dist/cli.js +910 -194
  69. package/dist/cli.js.map +1 -1
  70. package/dist/config-overlay.test.d.ts +1 -0
  71. package/dist/config-overlay.test.js +112 -0
  72. package/dist/config-overlay.test.js.map +1 -0
  73. package/dist/config-resolve.d.ts +28 -0
  74. package/dist/config-resolve.js +47 -0
  75. package/dist/config-resolve.js.map +1 -0
  76. package/dist/config-resolve.test.d.ts +1 -0
  77. package/dist/config-resolve.test.js +68 -0
  78. package/dist/config-resolve.test.js.map +1 -0
  79. package/dist/config.d.ts +62 -49
  80. package/dist/config.js +452 -76
  81. package/dist/config.js.map +1 -1
  82. package/dist/config.test.js +201 -32
  83. package/dist/config.test.js.map +1 -1
  84. package/dist/connectors/github-webhook.js +83 -5
  85. package/dist/connectors/github-webhook.js.map +1 -1
  86. package/dist/connectors/github-webhook.test.d.ts +1 -0
  87. package/dist/connectors/github-webhook.test.js +156 -0
  88. package/dist/connectors/github-webhook.test.js.map +1 -0
  89. package/dist/connectors/messaging/session-manager.d.ts +18 -0
  90. package/dist/connectors/messaging/session-manager.js +83 -2
  91. package/dist/connectors/messaging/session-manager.js.map +1 -1
  92. package/dist/connectors/messaging/session-manager.test.d.ts +1 -0
  93. package/dist/connectors/messaging/session-manager.test.js +144 -0
  94. package/dist/connectors/messaging/session-manager.test.js.map +1 -0
  95. package/dist/connectors/slack/connector.d.ts +9 -0
  96. package/dist/connectors/slack/connector.js +15 -0
  97. package/dist/connectors/slack/connector.js.map +1 -1
  98. package/dist/connectors/slack/mrkdwn.js +81 -0
  99. package/dist/connectors/slack/mrkdwn.js.map +1 -1
  100. package/dist/connectors/slack/mrkdwn.test.js +49 -0
  101. package/dist/connectors/slack/mrkdwn.test.js.map +1 -1
  102. package/dist/connectors/types.d.ts +1 -1
  103. package/dist/cron/fanout.d.ts +33 -0
  104. package/dist/cron/fanout.js +55 -0
  105. package/dist/cron/fanout.js.map +1 -0
  106. package/dist/cron/fanout.test.d.ts +1 -0
  107. package/dist/cron/fanout.test.js +73 -0
  108. package/dist/cron/fanout.test.js.map +1 -0
  109. package/dist/cron/jobs.d.ts +5 -0
  110. package/dist/cron/jobs.js +10 -3
  111. package/dist/cron/jobs.js.map +1 -1
  112. package/dist/cron/scheduler.d.ts +12 -0
  113. package/dist/cron/scheduler.js +27 -1
  114. package/dist/cron/scheduler.js.map +1 -1
  115. package/dist/engine/agent-executor.d.ts +158 -0
  116. package/dist/engine/agent-executor.js +1140 -0
  117. package/dist/engine/agent-executor.js.map +1 -0
  118. package/dist/engine/agent-executor.test.d.ts +1 -0
  119. package/dist/engine/agent-executor.test.js +395 -0
  120. package/dist/engine/agent-executor.test.js.map +1 -0
  121. package/dist/engine/chat-runner.d.ts +123 -0
  122. package/dist/engine/chat-runner.js +379 -0
  123. package/dist/engine/chat-runner.js.map +1 -0
  124. package/dist/engine/chat-runner.test.d.ts +1 -0
  125. package/dist/engine/chat-runner.test.js +104 -0
  126. package/dist/engine/chat-runner.test.js.map +1 -0
  127. package/dist/engine/chat-skills.d.ts +45 -0
  128. package/dist/engine/chat-skills.js +184 -0
  129. package/dist/engine/chat-skills.js.map +1 -0
  130. package/dist/engine/chat-skills.test.d.ts +1 -0
  131. package/dist/engine/chat-skills.test.js +20 -0
  132. package/dist/engine/chat-skills.test.js.map +1 -0
  133. package/dist/engine/chat.d.ts +20 -23
  134. package/dist/engine/chat.js +251 -155
  135. package/dist/engine/chat.js.map +1 -1
  136. package/dist/engine/chat.test.d.ts +1 -0
  137. package/dist/engine/chat.test.js +42 -0
  138. package/dist/engine/chat.test.js.map +1 -0
  139. package/dist/engine/classifier.d.ts +35 -2
  140. package/dist/engine/classifier.js +170 -31
  141. package/dist/engine/classifier.js.map +1 -1
  142. package/dist/engine/classifier.test.d.ts +1 -0
  143. package/dist/engine/classifier.test.js +115 -0
  144. package/dist/engine/classifier.test.js.map +1 -0
  145. package/dist/engine/dispatcher.d.ts +60 -0
  146. package/dist/engine/dispatcher.js +601 -0
  147. package/dist/engine/dispatcher.js.map +1 -0
  148. package/dist/engine/dispatcher.test.d.ts +1 -0
  149. package/dist/engine/dispatcher.test.js +511 -0
  150. package/dist/engine/dispatcher.test.js.map +1 -0
  151. package/dist/engine/event-shim.d.ts +117 -0
  152. package/dist/engine/event-shim.js +435 -0
  153. package/dist/engine/event-shim.js.map +1 -0
  154. package/dist/engine/event-shim.test.d.ts +1 -0
  155. package/dist/engine/event-shim.test.js +194 -0
  156. package/dist/engine/event-shim.test.js.map +1 -0
  157. package/dist/engine/git-auth.d.ts +13 -17
  158. package/dist/engine/git-auth.js +99 -42
  159. package/dist/engine/git-auth.js.map +1 -1
  160. package/dist/engine/git-auth.test.d.ts +1 -0
  161. package/dist/engine/git-auth.test.js +117 -0
  162. package/dist/engine/git-auth.test.js.map +1 -0
  163. package/dist/engine/github-app-client.d.ts +7 -0
  164. package/dist/engine/github-app-client.js +16 -0
  165. package/dist/engine/github-app-client.js.map +1 -0
  166. package/dist/engine/github-app-client.test.d.ts +1 -0
  167. package/dist/engine/github-app-client.test.js +44 -0
  168. package/dist/engine/github-app-client.test.js.map +1 -0
  169. package/dist/engine/github-tools.d.ts +12 -0
  170. package/dist/engine/github-tools.js +261 -0
  171. package/dist/engine/github-tools.js.map +1 -0
  172. package/dist/engine/github.d.ts +1027 -43
  173. package/dist/engine/github.js +153 -14
  174. package/dist/engine/github.js.map +1 -1
  175. package/dist/engine/llm.d.ts +47 -0
  176. package/dist/engine/llm.js +221 -0
  177. package/dist/engine/llm.js.map +1 -0
  178. package/dist/engine/llm.test.d.ts +1 -0
  179. package/dist/engine/llm.test.js +189 -0
  180. package/dist/engine/llm.test.js.map +1 -0
  181. package/dist/engine/profiles.d.ts +249 -0
  182. package/dist/engine/profiles.js +42 -0
  183. package/dist/engine/profiles.js.map +1 -0
  184. package/dist/engine/router.d.ts +12 -6
  185. package/dist/engine/router.js +339 -81
  186. package/dist/engine/router.js.map +1 -1
  187. package/dist/engine/router.test.js +428 -78
  188. package/dist/engine/router.test.js.map +1 -1
  189. package/dist/engine/screen.d.ts +41 -0
  190. package/dist/engine/screen.js +93 -0
  191. package/dist/engine/screen.js.map +1 -0
  192. package/dist/engine/screen.test.d.ts +1 -0
  193. package/dist/engine/screen.test.js +82 -0
  194. package/dist/engine/screen.test.js.map +1 -0
  195. package/dist/index.js +423 -437
  196. package/dist/index.js.map +1 -1
  197. package/dist/managed-repos.d.ts +7 -9
  198. package/dist/managed-repos.js +12 -15
  199. package/dist/managed-repos.js.map +1 -1
  200. package/dist/managed-repos.test.js +24 -19
  201. package/dist/managed-repos.test.js.map +1 -1
  202. package/dist/notify/index.d.ts +15 -0
  203. package/dist/notify/index.js +6 -0
  204. package/dist/notify/index.js.map +1 -0
  205. package/dist/notify/model.d.ts +57 -0
  206. package/dist/notify/model.js +89 -0
  207. package/dist/notify/model.js.map +1 -0
  208. package/dist/notify/model.test.d.ts +1 -0
  209. package/dist/notify/model.test.js +109 -0
  210. package/dist/notify/model.test.js.map +1 -0
  211. package/dist/notify/notifier.d.ts +17 -0
  212. package/dist/notify/notifier.js +87 -0
  213. package/dist/notify/notifier.js.map +1 -0
  214. package/dist/notify/notifier.test.d.ts +1 -0
  215. package/dist/notify/notifier.test.js +100 -0
  216. package/dist/notify/notifier.test.js.map +1 -0
  217. package/dist/notify/render.d.ts +21 -0
  218. package/dist/notify/render.js +59 -0
  219. package/dist/notify/render.js.map +1 -0
  220. package/dist/notify/render.test.d.ts +1 -0
  221. package/dist/notify/render.test.js +65 -0
  222. package/dist/notify/render.test.js.map +1 -0
  223. package/dist/notify/transports/github.d.ts +26 -0
  224. package/dist/notify/transports/github.js +26 -0
  225. package/dist/notify/transports/github.js.map +1 -0
  226. package/dist/notify/transports/slack.d.ts +26 -0
  227. package/dist/notify/transports/slack.js +28 -0
  228. package/dist/notify/transports/slack.js.map +1 -0
  229. package/dist/notify/transports.test.d.ts +1 -0
  230. package/dist/notify/transports.test.js +71 -0
  231. package/dist/notify/transports.test.js.map +1 -0
  232. package/dist/notify/types.d.ts +95 -0
  233. package/dist/notify/types.js +16 -0
  234. package/dist/notify/types.js.map +1 -0
  235. package/dist/sandbox/docker-compose.test.d.ts +1 -0
  236. package/dist/sandbox/docker-compose.test.js +128 -0
  237. package/dist/sandbox/docker-compose.test.js.map +1 -0
  238. package/dist/sandbox/docker.d.ts +97 -9
  239. package/dist/sandbox/docker.js +192 -41
  240. package/dist/sandbox/docker.js.map +1 -1
  241. package/dist/sandbox/docker.test.d.ts +1 -0
  242. package/dist/sandbox/docker.test.js +137 -0
  243. package/dist/sandbox/docker.test.js.map +1 -0
  244. package/dist/sandbox/egress-allowlist.d.ts +69 -0
  245. package/dist/sandbox/egress-allowlist.js +164 -0
  246. package/dist/sandbox/egress-allowlist.js.map +1 -0
  247. package/dist/sandbox/egress-allowlist.test.d.ts +1 -0
  248. package/dist/sandbox/egress-allowlist.test.js +65 -0
  249. package/dist/sandbox/egress-allowlist.test.js.map +1 -0
  250. package/dist/sandbox/egress-firewall-config.d.ts +127 -0
  251. package/dist/sandbox/egress-firewall-config.js +434 -0
  252. package/dist/sandbox/egress-firewall-config.js.map +1 -0
  253. package/dist/sandbox/egress-firewall-config.test.d.ts +1 -0
  254. package/dist/sandbox/egress-firewall-config.test.js +244 -0
  255. package/dist/sandbox/egress-firewall-config.test.js.map +1 -0
  256. package/dist/sandbox/images.d.ts +23 -0
  257. package/dist/sandbox/images.js +55 -0
  258. package/dist/sandbox/images.js.map +1 -0
  259. package/dist/sandbox/index.d.ts +82 -3
  260. package/dist/sandbox/index.js +223 -93
  261. package/dist/sandbox/index.js.map +1 -1
  262. package/dist/sandbox/index.test.d.ts +1 -0
  263. package/dist/sandbox/index.test.js +157 -0
  264. package/dist/sandbox/index.test.js.map +1 -0
  265. package/dist/session-log.d.ts +63 -0
  266. package/dist/session-log.js +290 -0
  267. package/dist/session-log.js.map +1 -0
  268. package/dist/session-log.test.d.ts +1 -0
  269. package/dist/session-log.test.js +85 -0
  270. package/dist/session-log.test.js.map +1 -0
  271. package/dist/setup.d.ts +31 -12
  272. package/dist/setup.js +516 -174
  273. package/dist/setup.js.map +1 -1
  274. package/dist/setup.test.js +138 -6
  275. package/dist/setup.test.js.map +1 -1
  276. package/dist/state/approval-store.d.ts +86 -0
  277. package/dist/state/approval-store.js +140 -0
  278. package/dist/state/approval-store.js.map +1 -0
  279. package/dist/state/build-assets.d.ts +50 -0
  280. package/dist/state/build-assets.js +154 -0
  281. package/dist/state/build-assets.js.map +1 -0
  282. package/dist/state/build-assets.test.d.ts +1 -0
  283. package/dist/state/build-assets.test.js +106 -0
  284. package/dist/state/build-assets.test.js.map +1 -0
  285. package/dist/state/db.d.ts +65 -333
  286. package/dist/state/db.js +112 -835
  287. package/dist/state/db.js.map +1 -1
  288. package/dist/state/db.test.js +127 -91
  289. package/dist/state/db.test.js.map +1 -1
  290. package/dist/state/execution-store.d.ts +257 -0
  291. package/dist/state/execution-store.js +527 -0
  292. package/dist/state/execution-store.js.map +1 -0
  293. package/dist/state/migrate.d.ts +15 -0
  294. package/dist/state/migrate.js +175 -0
  295. package/dist/state/migrate.js.map +1 -0
  296. package/dist/state/workflow-run-store.d.ts +195 -0
  297. package/dist/state/workflow-run-store.js +363 -0
  298. package/dist/state/workflow-run-store.js.map +1 -0
  299. package/dist/state/workflow-run-store.test.d.ts +1 -0
  300. package/dist/state/workflow-run-store.test.js +264 -0
  301. package/dist/state/workflow-run-store.test.js.map +1 -0
  302. package/dist/telemetry/index.d.ts +38 -0
  303. package/dist/telemetry/index.js +253 -0
  304. package/dist/telemetry/index.js.map +1 -0
  305. package/dist/telemetry/index.test.d.ts +1 -0
  306. package/dist/telemetry/index.test.js +73 -0
  307. package/dist/telemetry/index.test.js.map +1 -0
  308. package/dist/telemetry/pi-events.d.ts +12 -0
  309. package/dist/telemetry/pi-events.js +134 -0
  310. package/dist/telemetry/pi-events.js.map +1 -0
  311. package/dist/telemetry/pi-events.test.d.ts +1 -0
  312. package/dist/telemetry/pi-events.test.js +69 -0
  313. package/dist/telemetry/pi-events.test.js.map +1 -0
  314. package/dist/workflows/dag.d.ts +13 -1
  315. package/dist/workflows/dag.js +7 -3
  316. package/dist/workflows/dag.js.map +1 -1
  317. package/dist/workflows/dag.test.js +22 -0
  318. package/dist/workflows/dag.test.js.map +1 -1
  319. package/dist/workflows/golden-build.test.d.ts +1 -0
  320. package/dist/workflows/golden-build.test.js +45 -0
  321. package/dist/workflows/golden-build.test.js.map +1 -0
  322. package/dist/workflows/loader-overlay.test.d.ts +1 -0
  323. package/dist/workflows/loader-overlay.test.js +101 -0
  324. package/dist/workflows/loader-overlay.test.js.map +1 -0
  325. package/dist/workflows/loader.d.ts +36 -11
  326. package/dist/workflows/loader.js +311 -87
  327. package/dist/workflows/loader.js.map +1 -1
  328. package/dist/workflows/loader.test.js +114 -10
  329. package/dist/workflows/loader.test.js.map +1 -1
  330. package/dist/workflows/loop-eval.js +2 -0
  331. package/dist/workflows/loop-eval.js.map +1 -1
  332. package/dist/workflows/loop-eval.test.js +14 -0
  333. package/dist/workflows/loop-eval.test.js.map +1 -1
  334. package/dist/workflows/phase-executor.d.ts +145 -0
  335. package/dist/workflows/phase-executor.js +691 -0
  336. package/dist/workflows/phase-executor.js.map +1 -0
  337. package/dist/workflows/phase-executor.test.d.ts +1 -0
  338. package/dist/workflows/phase-executor.test.js +434 -0
  339. package/dist/workflows/phase-executor.test.js.map +1 -0
  340. package/dist/workflows/phase-ref.d.ts +44 -0
  341. package/dist/workflows/phase-ref.js +78 -0
  342. package/dist/workflows/phase-ref.js.map +1 -0
  343. package/dist/workflows/phase-ref.test.d.ts +1 -0
  344. package/dist/workflows/phase-ref.test.js +24 -0
  345. package/dist/workflows/phase-ref.test.js.map +1 -0
  346. package/dist/workflows/resume.d.ts +5 -11
  347. package/dist/workflows/resume.js +88 -7
  348. package/dist/workflows/resume.js.map +1 -1
  349. package/dist/workflows/runner.d.ts +34 -27
  350. package/dist/workflows/runner.js +252 -930
  351. package/dist/workflows/runner.js.map +1 -1
  352. package/dist/workflows/runner.test.js +346 -35
  353. package/dist/workflows/runner.test.js.map +1 -1
  354. package/dist/workflows/schema.d.ts +52 -10
  355. package/dist/workflows/schema.js +147 -7
  356. package/dist/workflows/schema.js.map +1 -1
  357. package/dist/workflows/simple.d.ts +67 -3
  358. package/dist/workflows/simple.js +248 -87
  359. package/dist/workflows/simple.js.map +1 -1
  360. package/dist/workflows/simple.test.d.ts +1 -0
  361. package/dist/workflows/simple.test.js +107 -0
  362. package/dist/workflows/simple.test.js.map +1 -0
  363. package/dist/workflows/templates.d.ts +29 -0
  364. package/dist/workflows/templates.js +42 -4
  365. package/dist/workflows/templates.js.map +1 -1
  366. package/dist/workflows/templates.test.js +103 -0
  367. package/dist/workflows/templates.test.js.map +1 -1
  368. package/dist/workflows/triggers.d.ts +21 -0
  369. package/dist/workflows/triggers.js +44 -0
  370. package/dist/workflows/triggers.js.map +1 -0
  371. package/dist/workflows/verdict.d.ts +19 -0
  372. package/dist/workflows/verdict.js +30 -0
  373. package/dist/workflows/verdict.js.map +1 -0
  374. package/dist/workflows/verdict.test.d.ts +1 -0
  375. package/dist/workflows/verdict.test.js +44 -0
  376. package/dist/workflows/verdict.test.js.map +1 -0
  377. package/dist/worktree/manager.d.ts +1 -1
  378. package/dist/worktree/manager.js +14 -14
  379. package/dist/worktree/manager.js.map +1 -1
  380. package/dist/worktree/manager.test.d.ts +1 -0
  381. package/dist/worktree/manager.test.js +87 -0
  382. package/dist/worktree/manager.test.js.map +1 -0
  383. package/docker-compose.yml +206 -5
  384. package/package.json +19 -7
  385. package/sandbox.Dockerfile +97 -18
  386. package/skills/README.md +40 -0
  387. package/skills/browser-qa/SKILL.md +193 -0
  388. package/skills/browser-qa/scripts/agent-browser.mjs +380 -0
  389. package/skills/building/SKILL.md +95 -0
  390. package/skills/chat/SKILL.md +30 -11
  391. package/skills/code-review/SKILL.md +59 -0
  392. package/skills/debug-production/SKILL.md +108 -0
  393. package/skills/demo/SKILL.md +194 -0
  394. package/skills/demo/scripts/compose-demo.sh +205 -0
  395. package/skills/issue-answer/SKILL.md +90 -0
  396. package/skills/issue-comment/SKILL.md +38 -24
  397. package/skills/issue-triage/SKILL.md +103 -37
  398. package/skills/issue-triage/references/AGENT-BRIEF.md +61 -0
  399. package/skills/pr-comment/SKILL.md +64 -0
  400. package/skills/pr-review/SKILL.md +65 -49
  401. package/skills/qa-test/SKILL.md +97 -0
  402. package/skills/repo-health/SKILL.md +48 -45
  403. package/skills/security-feedback/SKILL.md +173 -0
  404. package/skills/security-feedback/references/templates.md +77 -0
  405. package/skills/security-review/SKILL.md +213 -0
  406. package/skills/security-review/references/issue-format.md +302 -0
  407. package/skills/verify/SKILL.md +118 -0
  408. package/workflows/answer.yaml +37 -0
  409. package/workflows/build.yaml +32 -22
  410. package/workflows/cron-security.yaml +6 -0
  411. package/workflows/demo.yaml +55 -0
  412. package/workflows/explore.yaml +9 -0
  413. package/workflows/pr-comment.yaml +16 -0
  414. package/workflows/pr-fix.yaml +3 -0
  415. package/workflows/pr-review.yaml +4 -1
  416. package/workflows/prompts/answer.md +67 -0
  417. package/workflows/prompts/architect.md +24 -7
  418. package/workflows/prompts/demo.md +100 -0
  419. package/workflows/prompts/executor.md +29 -20
  420. package/workflows/prompts/explore-ask.md +51 -22
  421. package/workflows/prompts/explore-publish.md +2 -2
  422. package/workflows/prompts/explore-read.md +24 -10
  423. package/workflows/prompts/explore-synthesize.md +15 -8
  424. package/workflows/prompts/fix.md +9 -10
  425. package/workflows/prompts/guardrails.md +26 -8
  426. package/workflows/prompts/pr-fix.md +6 -7
  427. package/workflows/prompts/pr.md +11 -10
  428. package/workflows/prompts/qa-browser.md +95 -0
  429. package/workflows/prompts/qa-synth.md +44 -0
  430. package/workflows/prompts/qa-test.md +60 -0
  431. package/workflows/prompts/re-reviewer.md +8 -9
  432. package/workflows/prompts/reviewer.md +10 -9
  433. package/workflows/prompts/verify-browser.md +93 -0
  434. package/workflows/prompts/verify-synth.md +44 -0
  435. package/workflows/prompts/verify.md +63 -0
  436. package/workflows/qa-test.yaml +87 -0
  437. package/workflows/security-feedback.yaml +25 -0
  438. package/workflows/security-review.yaml +29 -0
  439. package/workflows/verify.yaml +85 -0
  440. package/deploy/mcp-config.tmpl.json +0 -14
  441. package/dist/cron/rate-limits.d.ts +0 -26
  442. package/dist/cron/rate-limits.js +0 -193
  443. package/dist/cron/rate-limits.js.map +0 -1
  444. package/dist/engine/executor.d.ts +0 -75
  445. package/dist/engine/executor.js +0 -292
  446. package/dist/engine/executor.js.map +0 -1
  447. package/mcp-github-app/package.json +0 -18
  448. package/mcp-github-app/src/auth.js +0 -66
  449. package/mcp-github-app/src/github.js +0 -371
  450. package/mcp-github-app/src/index.js +0 -534
  451. package/skills/devops/webhook-subscriptions/SKILL.md +0 -180
  452. package/skills/github/DESCRIPTION.md +0 -3
  453. package/skills/github/codebase-inspection/SKILL.md +0 -115
  454. package/skills/github/github-auth/SKILL.md +0 -54
  455. package/skills/github/github-auth/scripts/gh-env.sh +0 -66
  456. package/skills/github/github-code-review/SKILL.md +0 -480
  457. package/skills/github/github-code-review/references/review-output-template.md +0 -74
  458. package/skills/github/github-issues/SKILL.md +0 -369
  459. package/skills/github/github-issues/templates/bug-report.md +0 -35
  460. package/skills/github/github-issues/templates/feature-request.md +0 -31
  461. package/skills/github/github-pr-workflow/SKILL.md +0 -395
  462. package/skills/github/github-pr-workflow/references/ci-troubleshooting.md +0 -183
  463. package/skills/github/github-pr-workflow/references/conventional-commits.md +0 -71
  464. package/skills/github/github-pr-workflow/templates/pr-body-bugfix.md +0 -35
  465. package/skills/github/github-pr-workflow/templates/pr-body-feature.md +0 -33
  466. package/skills/github/github-repo-management/SKILL.md +0 -515
  467. package/skills/github/github-repo-management/references/github-api-cheatsheet.md +0 -161
  468. package/skills/github-orchestrator/SKILL.md +0 -103
  469. package/skills/mcp/DESCRIPTION.md +0 -3
  470. package/skills/mcp/mcporter/SKILL.md +0 -122
  471. package/skills/mcp/native-mcp/SKILL.md +0 -356
  472. package/skills/software-development/architect/SKILL.md +0 -154
  473. package/skills/software-development/assure-guardrails/SKILL.md +0 -239
  474. package/skills/software-development/plan/SKILL.md +0 -64
  475. package/skills/software-development/requesting-code-review/SKILL.md +0 -291
  476. package/skills/software-development/subagent-driven-development/SKILL.md +0 -433
  477. package/skills/software-development/systematic-debugging/SKILL.md +0 -366
  478. package/skills/software-development/test-driven-development/SKILL.md +0 -342
@@ -0,0 +1,117 @@
1
+ import type { EmitterRecord } from "agentic-pi";
2
+ /**
3
+ * Translates agentic-pi's JSONL event stream into Claude-SDK-style envelope
4
+ * jsonl on disk, so the dashboard's `SessionReader` /
5
+ * `ChatSessionReader` (`src/admin/`) keeps working unchanged.
6
+ *
7
+ * agentic-pi event → envelope mapping (see agentic-pi/src/emitter.ts and
8
+ * survey in ~/.claude/plans/ok-i-want-noble-sphinx.md):
9
+ *
10
+ * session → header (no envelope line; pins the on-disk
11
+ * path), followed by a `user` line carrying
12
+ * the initial prompt.
13
+ * message_end (assistant) → `assistant` envelope with content (text +
14
+ * tool_use blocks).
15
+ * tool_execution_end → `user` envelope with a `tool_result` block.
16
+ * usage_snapshot → `result` envelope (cost / tokens / turns).
17
+ * fatal_error → `assistant` envelope with isApiErrorMessage.
18
+ *
19
+ * Tool naming: agentic-pi names its github tools `github_*`. Earlier
20
+ * (OpenCode + MCP), tool names were rewritten to `mcp_github_*` before
21
+ * reaching the dashboard, and the dashboard's tool-family classifier
22
+ * already accepts the bare `github_` prefix as a github tool. We pass
23
+ * tool names through unchanged.
24
+ */
25
+ export interface AgenticShimOptions {
26
+ /** Root sessions dir — contains the `projects/<slug>/` tree. */
27
+ homeDir: string;
28
+ /** Project-dir slug, e.g. "-home-agent-workspace" or "-app". */
29
+ projectSlug: string;
30
+ /** Model id surfaced on assistant envelopes. */
31
+ model?: string;
32
+ /** Original user prompt — written as the first envelope. */
33
+ initialPrompt: string;
34
+ }
35
+ export interface ShimResultEnvelope {
36
+ finalText: string;
37
+ turns: number;
38
+ costUsd: number;
39
+ inputTokens: number;
40
+ outputTokens: number;
41
+ cacheReadInputTokens: number;
42
+ cacheCreationInputTokens: number;
43
+ stopReason: string;
44
+ durationMs: number;
45
+ /**
46
+ * Provider-level error (e.g. OpenAI insufficient_quota) extracted from
47
+ * the last assistant message. When set, an `isApiErrorMessage` envelope
48
+ * is appended before the `result` line so the dashboard renders the
49
+ * cause inline instead of showing a silent "success".
50
+ */
51
+ apiErrorMessage?: string;
52
+ }
53
+ export declare class AgenticShim {
54
+ private opts;
55
+ private sessionLog;
56
+ private sessionId;
57
+ private writeChain;
58
+ private initialWritten;
59
+ /**
60
+ * Tool calls we have already emitted a `tool_use` block for via
61
+ * `message_end`. Keyed by tool-call id so the matching
62
+ * `tool_execution_end` event can emit the paired `tool_result` block.
63
+ */
64
+ private seenToolCalls;
65
+ constructor(opts: AgenticShimOptions);
66
+ get isInitialized(): boolean;
67
+ /** Feed one parsed agentic-pi event. */
68
+ feed(record: EmitterRecord): void;
69
+ /**
70
+ * Append a `result` envelope mirroring the existing Claude-stream
71
+ * `result` line. Same shape as the legacy opencode-shim.
72
+ */
73
+ finalize(result: ShimResultEnvelope): void;
74
+ /**
75
+ * Bootstrap a stub envelope when no `session` record was observed (the
76
+ * run died before agentic-pi got far enough to emit one). Returns the
77
+ * synthetic id actually used for the on-disk file so the caller can
78
+ * record it on the executions row.
79
+ */
80
+ finalizeWithFallback(result: ShimResultEnvelope, fallbackSessionId: string, errorMessage?: string): Promise<string | null>;
81
+ flush(): Promise<void>;
82
+ private openSession;
83
+ private translate;
84
+ /**
85
+ * Mirror an agentic-pi `extension_status` event (file-search / github /
86
+ * web-search) as a `system` envelope near the top of the session log, so
87
+ * the raw JSONL shows which extensions were active. The dashboard's
88
+ * SessionReader ignores unknown envelope types, so this is render-safe.
89
+ */
90
+ private translateExtensionStatus;
91
+ /**
92
+ * Mirror agentic-pi's gated `skills_status` event as a `system` envelope in
93
+ * the session log — the skill-loading counterpart to
94
+ * {@link translateExtensionStatus}. Records which skills the agent had
95
+ * available. SessionReader ignores unknown envelope types, so render-safe.
96
+ */
97
+ private translateSkillsStatus;
98
+ /**
99
+ * Surface pi-coding-agent's auto-retry pause as a `system` breadcrumb so
100
+ * rate-limit / transient-error backoffs are visible in the session timeline
101
+ * (the dashboard renders role-based `system` lines via MetaMessage). Emitted
102
+ * as a role-based line — unlike `extension_status`'s `type: "system"` shape,
103
+ * which the reader drops — so it actually renders.
104
+ */
105
+ private translateAutoRetryStart;
106
+ /**
107
+ * Pair to {@link translateAutoRetryStart}: a successful recovery, or a
108
+ * give-up (when `finalError` is present).
109
+ */
110
+ private translateAutoRetryEnd;
111
+ private translateMessageEnd;
112
+ private translateToolEnd;
113
+ private translateFatal;
114
+ private appendLines;
115
+ }
116
+ export declare function safeStringify(v: unknown): string;
117
+ export declare function truncateForLog(s: string, maxBytes?: number): string;
@@ -0,0 +1,435 @@
1
+ import { SessionLog } from "../session-log.js";
2
+ export class AgenticShim {
3
+ opts;
4
+ sessionLog;
5
+ sessionId = null;
6
+ writeChain = Promise.resolve();
7
+ initialWritten = false;
8
+ /**
9
+ * Tool calls we have already emitted a `tool_use` block for via
10
+ * `message_end`. Keyed by tool-call id so the matching
11
+ * `tool_execution_end` event can emit the paired `tool_result` block.
12
+ */
13
+ seenToolCalls = new Set();
14
+ constructor(opts) {
15
+ this.opts = opts;
16
+ this.sessionLog = new SessionLog(opts.homeDir);
17
+ }
18
+ get isInitialized() {
19
+ return this.sessionId !== null;
20
+ }
21
+ /** Feed one parsed agentic-pi event. */
22
+ feed(record) {
23
+ if (!record || typeof record !== "object")
24
+ return;
25
+ const sessionId = typeof record.sessionId === "string"
26
+ ? record.sessionId
27
+ : record.type === "session" && typeof record.id === "string"
28
+ ? record.id
29
+ : null;
30
+ // The `session` header is the first record and carries the id without
31
+ // a `sessionId` field. Subsequent records all have `sessionId`.
32
+ if (record.type === "session" && typeof record.id === "string") {
33
+ this.openSession(record.id);
34
+ return;
35
+ }
36
+ if (!sessionId)
37
+ return;
38
+ if (!this.sessionId)
39
+ this.openSession(sessionId);
40
+ if (!this.sessionId)
41
+ return;
42
+ const ts = isoTimestamp(record.timestamp);
43
+ if (!this.initialWritten) {
44
+ this.initialWritten = true;
45
+ this.appendLines([
46
+ {
47
+ type: "user",
48
+ message: { role: "user", content: this.opts.initialPrompt },
49
+ timestamp: ts,
50
+ sessionId,
51
+ },
52
+ ]);
53
+ }
54
+ const out = this.translate(record, ts, sessionId);
55
+ if (out.length)
56
+ this.appendLines(out);
57
+ }
58
+ /**
59
+ * Append a `result` envelope mirroring the existing Claude-stream
60
+ * `result` line. Same shape as the legacy opencode-shim.
61
+ */
62
+ finalize(result) {
63
+ if (!this.sessionId)
64
+ return;
65
+ const ts = new Date().toISOString();
66
+ const lines = [];
67
+ if (result.apiErrorMessage) {
68
+ lines.push({
69
+ type: "assistant",
70
+ isApiErrorMessage: true,
71
+ error: result.apiErrorMessage,
72
+ timestamp: ts,
73
+ sessionId: this.sessionId,
74
+ });
75
+ }
76
+ lines.push({
77
+ type: "result",
78
+ subtype: result.stopReason === "success" ? "success" : result.stopReason,
79
+ result: result.finalText,
80
+ num_turns: result.turns,
81
+ total_cost_usd: result.costUsd,
82
+ total_input_tokens: result.inputTokens,
83
+ total_output_tokens: result.outputTokens,
84
+ total_cache_read_input_tokens: result.cacheReadInputTokens,
85
+ total_cache_creation_input_tokens: result.cacheCreationInputTokens,
86
+ duration_ms: result.durationMs,
87
+ timestamp: ts,
88
+ });
89
+ this.appendLines(lines);
90
+ }
91
+ /**
92
+ * Bootstrap a stub envelope when no `session` record was observed (the
93
+ * run died before agentic-pi got far enough to emit one). Returns the
94
+ * synthetic id actually used for the on-disk file so the caller can
95
+ * record it on the executions row.
96
+ */
97
+ async finalizeWithFallback(result, fallbackSessionId, errorMessage) {
98
+ if (!this.sessionId) {
99
+ this.openSession(fallbackSessionId);
100
+ const safeId = this.sessionId;
101
+ if (!safeId) {
102
+ await this.flush();
103
+ return null;
104
+ }
105
+ const ts = new Date().toISOString();
106
+ const bootstrap = [];
107
+ if (!this.initialWritten) {
108
+ this.initialWritten = true;
109
+ bootstrap.push({
110
+ type: "user",
111
+ message: { role: "user", content: this.opts.initialPrompt },
112
+ timestamp: ts,
113
+ sessionId: safeId,
114
+ });
115
+ }
116
+ if (errorMessage) {
117
+ bootstrap.push({
118
+ type: "assistant",
119
+ isApiErrorMessage: true,
120
+ error: errorMessage,
121
+ timestamp: ts,
122
+ sessionId: safeId,
123
+ });
124
+ }
125
+ if (bootstrap.length > 0)
126
+ this.appendLines(bootstrap);
127
+ this.finalize(result);
128
+ await this.flush();
129
+ return safeId;
130
+ }
131
+ this.finalize(result);
132
+ await this.flush();
133
+ return this.sessionId;
134
+ }
135
+ async flush() {
136
+ await this.writeChain;
137
+ }
138
+ openSession(sessionId) {
139
+ const safeId = this.sessionLog.normalizeSessionId(sessionId);
140
+ if (!safeId)
141
+ return;
142
+ this.sessionId = safeId;
143
+ }
144
+ translate(r, ts, sessionId) {
145
+ switch (r.type) {
146
+ case "message_end":
147
+ return this.translateMessageEnd(r, ts, sessionId);
148
+ case "tool_execution_end":
149
+ return this.translateToolEnd(r, ts, sessionId);
150
+ case "extension_status":
151
+ return this.translateExtensionStatus(r, ts, sessionId);
152
+ case "skills_status":
153
+ return this.translateSkillsStatus(r, ts, sessionId);
154
+ case "auto_retry_start":
155
+ return this.translateAutoRetryStart(r, ts, sessionId);
156
+ case "auto_retry_end":
157
+ return this.translateAutoRetryEnd(r, ts, sessionId);
158
+ case "fatal_error":
159
+ return this.translateFatal(r, ts, sessionId);
160
+ default:
161
+ return [];
162
+ }
163
+ }
164
+ /**
165
+ * Mirror an agentic-pi `extension_status` event (file-search / github /
166
+ * web-search) as a `system` envelope near the top of the session log, so
167
+ * the raw JSONL shows which extensions were active. The dashboard's
168
+ * SessionReader ignores unknown envelope types, so this is render-safe.
169
+ */
170
+ translateExtensionStatus(r, ts, sessionId) {
171
+ if (typeof r.extension !== "string")
172
+ return [];
173
+ return [
174
+ {
175
+ type: "system",
176
+ subtype: "extension_status",
177
+ extension: r.extension,
178
+ status: r.status,
179
+ ...(r.mode !== undefined ? { mode: r.mode } : {}),
180
+ ...(r.provider !== undefined ? { provider: r.provider } : {}),
181
+ ...(r.toolCount !== undefined ? { toolCount: r.toolCount } : {}),
182
+ ...(r.reason !== undefined ? { reason: r.reason } : {}),
183
+ timestamp: ts,
184
+ sessionId,
185
+ },
186
+ ];
187
+ }
188
+ /**
189
+ * Mirror agentic-pi's gated `skills_status` event as a `system` envelope in
190
+ * the session log — the skill-loading counterpart to
191
+ * {@link translateExtensionStatus}. Records which skills the agent had
192
+ * available. SessionReader ignores unknown envelope types, so render-safe.
193
+ */
194
+ translateSkillsStatus(r, ts, sessionId) {
195
+ if (typeof r.status !== "string")
196
+ return [];
197
+ return [
198
+ {
199
+ type: "system",
200
+ subtype: "skills_status",
201
+ status: r.status,
202
+ ...(r.discovered !== undefined ? { discovered: r.discovered } : {}),
203
+ ...(Array.isArray(r.skills) ? { skills: r.skills } : {}),
204
+ ...(Array.isArray(r.mappedPaths) ? { mappedPaths: r.mappedPaths } : {}),
205
+ ...(r.noSkills !== undefined ? { noSkills: r.noSkills } : {}),
206
+ timestamp: ts,
207
+ sessionId,
208
+ },
209
+ ];
210
+ }
211
+ /**
212
+ * Surface pi-coding-agent's auto-retry pause as a `system` breadcrumb so
213
+ * rate-limit / transient-error backoffs are visible in the session timeline
214
+ * (the dashboard renders role-based `system` lines via MetaMessage). Emitted
215
+ * as a role-based line — unlike `extension_status`'s `type: "system"` shape,
216
+ * which the reader drops — so it actually renders.
217
+ */
218
+ translateAutoRetryStart(r, ts, sessionId) {
219
+ const attempt = typeof r.attempt === "number" ? r.attempt : undefined;
220
+ const maxAttempts = typeof r.maxAttempts === "number" ? r.maxAttempts : undefined;
221
+ const delayMs = typeof r.delayMs === "number" ? r.delayMs : undefined;
222
+ const reason = typeof r.errorMessage === "string" ? r.errorMessage : "transient error";
223
+ const attemptLabel = attempt !== undefined ? ` ${attempt}${maxAttempts !== undefined ? `/${maxAttempts}` : ""}` : "";
224
+ const delayLabel = delayMs !== undefined ? ` in ${Math.round(delayMs / 1000)}s` : "";
225
+ return [
226
+ {
227
+ role: "system",
228
+ subtype: "auto_retry_start",
229
+ content: `⏳ Auto-retry${attemptLabel}${delayLabel} after model error: ${shortReason(reason)}`,
230
+ timestamp: ts,
231
+ sessionId,
232
+ },
233
+ ];
234
+ }
235
+ /**
236
+ * Pair to {@link translateAutoRetryStart}: a successful recovery, or a
237
+ * give-up (when `finalError` is present).
238
+ */
239
+ translateAutoRetryEnd(r, ts, sessionId) {
240
+ const attempt = typeof r.attempt === "number" ? r.attempt : undefined;
241
+ const finalError = typeof r.finalError === "string" ? r.finalError : undefined;
242
+ const attemptLabel = attempt !== undefined ? ` ${attempt}` : "";
243
+ const content = finalError
244
+ ? `❌ Auto-retry gave up after${attemptLabel} attempt(s): ${shortReason(finalError)}`
245
+ : `✓ Auto-retry recovered after${attemptLabel} attempt(s).`;
246
+ return [
247
+ {
248
+ role: "system",
249
+ subtype: "auto_retry_end",
250
+ content,
251
+ timestamp: ts,
252
+ sessionId,
253
+ },
254
+ ];
255
+ }
256
+ translateMessageEnd(r, ts, sessionId) {
257
+ const message = (r.message ?? {});
258
+ if (message.role !== "assistant" || !Array.isArray(message.content)) {
259
+ return [];
260
+ }
261
+ // Pi's content blocks are text / thinking / toolCall. Map toolCall →
262
+ // tool_use, and preserve thinking blocks as `thinking` blocks so the
263
+ // dashboard's reasoning toggle (session-log.ts → AssistantMessage.tsx)
264
+ // can surface the model's reasoning. Redacted/empty thinking is skipped.
265
+ const out = [];
266
+ for (const c of message.content) {
267
+ if (c.type === "text" && typeof c.text === "string") {
268
+ out.push({ type: "text", text: c.text });
269
+ }
270
+ else if (c.type === "thinking" && typeof c.thinking === "string" && c.thinking.length > 0) {
271
+ out.push({ type: "thinking", thinking: c.thinking });
272
+ }
273
+ else if (c.type === "toolCall") {
274
+ const id = typeof c.id === "string" ? c.id : null;
275
+ const name = typeof c.name === "string" ? c.name : null;
276
+ if (!id || !name)
277
+ continue;
278
+ this.seenToolCalls.add(id);
279
+ out.push({
280
+ type: "tool_use",
281
+ id,
282
+ name,
283
+ input: c.arguments ?? {},
284
+ });
285
+ }
286
+ }
287
+ if (out.length === 0)
288
+ return [];
289
+ // Carry pi's per-message usage onto the envelope in Claude-SDK shape
290
+ // (input_tokens / output_tokens / cache_*). This is the only
291
+ // compaction-proof source of usage — pi's terminal `usage_snapshot`
292
+ // recomputes from the post-compaction message window and reports zero
293
+ // once a phase auto-compacts. Per-message records are written at
294
+ // finalization, before any compaction rebuild. Keeping them here also
295
+ // lets Claude-style transcript analyzers cost the session directly.
296
+ const assistantMessage = {
297
+ role: "assistant",
298
+ model: this.opts.model,
299
+ content: out,
300
+ };
301
+ const usage = shimUsage(message.usage);
302
+ if (usage)
303
+ assistantMessage.usage = usage;
304
+ return [
305
+ {
306
+ type: "assistant",
307
+ message: assistantMessage,
308
+ timestamp: ts,
309
+ sessionId,
310
+ },
311
+ ];
312
+ }
313
+ translateToolEnd(r, ts, sessionId) {
314
+ const id = typeof r.toolCallId === "string"
315
+ ? r.toolCallId
316
+ : typeof r.id === "string"
317
+ ? r.id
318
+ : null;
319
+ if (!id)
320
+ return [];
321
+ // If we never saw the matching tool_use in a message_end, skip — a
322
+ // result without a use block confuses the dashboard renderer.
323
+ if (!this.seenToolCalls.has(id))
324
+ return [];
325
+ const raw = r.result ?? r.output ?? r.error ?? "";
326
+ const rawString = typeof raw === "string" ? raw : safeStringify(raw);
327
+ const content = truncateForLog(rawString);
328
+ const block = {
329
+ type: "tool_result",
330
+ tool_use_id: id,
331
+ content,
332
+ };
333
+ if (r.isError === true)
334
+ block.is_error = true;
335
+ return [
336
+ {
337
+ type: "user",
338
+ message: { role: "user", content: [block] },
339
+ timestamp: ts,
340
+ sessionId,
341
+ },
342
+ ];
343
+ }
344
+ translateFatal(r, ts, sessionId) {
345
+ const err = (r.error ?? {});
346
+ const msg = err.message ?? err.name ?? "fatal error";
347
+ return [
348
+ {
349
+ type: "assistant",
350
+ isApiErrorMessage: true,
351
+ error: String(msg),
352
+ timestamp: ts,
353
+ sessionId,
354
+ },
355
+ ];
356
+ }
357
+ appendLines(lines) {
358
+ this.writeChain = this.writeChain
359
+ .then(async () => {
360
+ if (!this.sessionId)
361
+ return;
362
+ await this.sessionLog.appendEnvelopeLines({ projectSlug: this.opts.projectSlug, sessionId: this.sessionId }, lines);
363
+ })
364
+ .catch((err) => {
365
+ const msg = err instanceof Error ? err.message : String(err);
366
+ console.warn(`[shim] failed to append jsonl: ${msg}`);
367
+ });
368
+ }
369
+ }
370
+ /**
371
+ * Translate pi's per-message `usage` ({ input, output, cacheRead, cacheWrite,
372
+ * … }) into the Claude-SDK assistant-message usage shape. Returns undefined
373
+ * when the record carries no usage so we don't write an all-zero block.
374
+ */
375
+ function shimUsage(raw) {
376
+ if (!raw || typeof raw !== "object")
377
+ return undefined;
378
+ const num = (v) => typeof v === "number" && Number.isFinite(v) ? v : 0;
379
+ const usage = {
380
+ input_tokens: num(raw.input),
381
+ output_tokens: num(raw.output),
382
+ cache_read_input_tokens: num(raw.cacheRead),
383
+ cache_creation_input_tokens: num(raw.cacheWrite),
384
+ };
385
+ if (usage.input_tokens === 0 &&
386
+ usage.output_tokens === 0 &&
387
+ usage.cache_read_input_tokens === 0 &&
388
+ usage.cache_creation_input_tokens === 0) {
389
+ return undefined;
390
+ }
391
+ return usage;
392
+ }
393
+ function isoTimestamp(raw) {
394
+ if (typeof raw === "number" && Number.isFinite(raw)) {
395
+ return new Date(raw).toISOString();
396
+ }
397
+ if (typeof raw === "string") {
398
+ const d = new Date(raw);
399
+ if (!Number.isNaN(d.getTime()))
400
+ return d.toISOString();
401
+ }
402
+ return new Date().toISOString();
403
+ }
404
+ export function safeStringify(v) {
405
+ try {
406
+ return JSON.stringify(v);
407
+ }
408
+ catch {
409
+ return String(v);
410
+ }
411
+ }
412
+ /** Collapse an error string to a single short line for a system breadcrumb. */
413
+ function shortReason(reason) {
414
+ const oneLine = reason.replace(/\s+/g, " ").trim();
415
+ return oneLine.length > 200 ? `${oneLine.slice(0, 197)}…` : oneLine;
416
+ }
417
+ /**
418
+ * Cap on the size of a single tool_result content string written to the
419
+ * envelope jsonl. A `Read` on a multi-megabyte file or a `Bash` with huge
420
+ * stdout would otherwise bloat both the in-memory write queue and the
421
+ * on-disk session log. Anything past this is replaced with a marker. The
422
+ * raw tool result still exists wherever the tool wrote it (workspace file,
423
+ * sandbox stdout) — we just don't mirror it into the session jsonl.
424
+ *
425
+ * 64KB matches the rough rendering budget of the dashboard tool-result
426
+ * panel; anything larger would have been truncated for display anyway.
427
+ */
428
+ const TOOL_RESULT_MAX_BYTES = 64 * 1024;
429
+ export function truncateForLog(s, maxBytes = TOOL_RESULT_MAX_BYTES) {
430
+ if (s.length <= maxBytes)
431
+ return s;
432
+ const dropped = s.length - maxBytes;
433
+ return `${s.slice(0, maxBytes)}\n…[truncated ${dropped} chars]`;
434
+ }
435
+ //# sourceMappingURL=event-shim.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-shim.js","sourceRoot":"","sources":["../../src/engine/event-shim.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};