lastlight 0.16.0 → 0.16.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 (385) hide show
  1. package/README.md +71 -692
  2. package/dist/cli-config.js.map +1 -0
  3. package/dist/cli-format.js.map +1 -0
  4. package/dist/{cli/cli-server.d.ts → cli-server.d.ts} +26 -1
  5. package/dist/{cli/cli-server.js → cli-server.js} +40 -5
  6. package/dist/cli-server.js.map +1 -0
  7. package/dist/cli-timeline.js.map +1 -0
  8. package/dist/{cli/cli.js → cli.js} +4 -3
  9. package/dist/cli.js.map +1 -0
  10. package/dist/{cli/fork-cli.d.ts → fork-cli.d.ts} +3 -3
  11. package/dist/{cli/fork-cli.js → fork-cli.js} +28 -27
  12. package/dist/fork-cli.js.map +1 -0
  13. package/dist/{cli/oauth-cli.js → oauth-cli.js} +1 -1
  14. package/dist/oauth-cli.js.map +1 -0
  15. package/dist/{cli/setup.js → setup.js} +10 -4
  16. package/dist/setup.js.map +1 -0
  17. package/dist/{cli/skills-install.d.ts → skills-install.d.ts} +6 -0
  18. package/dist/{cli/skills-install.js → skills-install.js} +6 -2
  19. package/dist/skills-install.js.map +1 -0
  20. package/package.json +20 -65
  21. package/plugins/lastlight/.claude-plugin/plugin.json +1 -1
  22. package/agent-context/rules.md +0 -80
  23. package/agent-context/security.md +0 -69
  24. package/agent-context/soul.md +0 -21
  25. package/config/default.yaml +0 -119
  26. package/deploy/.env.production.example +0 -100
  27. package/deploy/entrypoint.sh +0 -82
  28. package/deploy/native/README.md +0 -160
  29. package/deploy/native/install.sh +0 -110
  30. package/deploy/native/lastlight.env.example +0 -95
  31. package/deploy/native/lastlight.service +0 -50
  32. package/deploy/sandbox-entrypoint.sh +0 -93
  33. package/dist/admin/auth.d.ts +0 -51
  34. package/dist/admin/auth.js +0 -121
  35. package/dist/admin/auth.js.map +0 -1
  36. package/dist/admin/chat-session-reader.d.ts +0 -39
  37. package/dist/admin/chat-session-reader.js +0 -84
  38. package/dist/admin/chat-session-reader.js.map +0 -1
  39. package/dist/admin/docker.d.ts +0 -61
  40. package/dist/admin/docker.js +0 -187
  41. package/dist/admin/docker.js.map +0 -1
  42. package/dist/admin/index.d.ts +0 -9
  43. package/dist/admin/index.js +0 -59
  44. package/dist/admin/index.js.map +0 -1
  45. package/dist/admin/routes.d.ts +0 -81
  46. package/dist/admin/routes.js +0 -1381
  47. package/dist/admin/routes.js.map +0 -1
  48. package/dist/admin/sessions.d.ts +0 -89
  49. package/dist/admin/sessions.js +0 -204
  50. package/dist/admin/sessions.js.map +0 -1
  51. package/dist/admin/tail.d.ts +0 -12
  52. package/dist/admin/tail.js +0 -145
  53. package/dist/admin/tail.js.map +0 -1
  54. package/dist/admin/version.d.ts +0 -22
  55. package/dist/admin/version.js +0 -92
  56. package/dist/admin/version.js.map +0 -1
  57. package/dist/cli/cli-config.js.map +0 -1
  58. package/dist/cli/cli-format.js.map +0 -1
  59. package/dist/cli/cli-server.js.map +0 -1
  60. package/dist/cli/cli-timeline.js.map +0 -1
  61. package/dist/cli/cli.js.map +0 -1
  62. package/dist/cli/fork-cli.js.map +0 -1
  63. package/dist/cli/oauth-cli.js.map +0 -1
  64. package/dist/cli/setup.js.map +0 -1
  65. package/dist/cli/skills-install.js.map +0 -1
  66. package/dist/config/config-resolve.d.ts +0 -28
  67. package/dist/config/config-resolve.js +0 -47
  68. package/dist/config/config-resolve.js.map +0 -1
  69. package/dist/config/config.d.ts +0 -157
  70. package/dist/config/config.js +0 -581
  71. package/dist/config/config.js.map +0 -1
  72. package/dist/config/core-pin.d.ts +0 -16
  73. package/dist/config/core-pin.js +0 -85
  74. package/dist/config/core-pin.js.map +0 -1
  75. package/dist/config/overlay-assets.d.ts +0 -20
  76. package/dist/config/overlay-assets.js +0 -114
  77. package/dist/config/overlay-assets.js.map +0 -1
  78. package/dist/config/overlay-bootstrap.d.ts +0 -44
  79. package/dist/config/overlay-bootstrap.js +0 -304
  80. package/dist/config/overlay-bootstrap.js.map +0 -1
  81. package/dist/connectors/github-webhook.d.ts +0 -45
  82. package/dist/connectors/github-webhook.js +0 -321
  83. package/dist/connectors/github-webhook.js.map +0 -1
  84. package/dist/connectors/index.d.ts +0 -18
  85. package/dist/connectors/index.js +0 -41
  86. package/dist/connectors/index.js.map +0 -1
  87. package/dist/connectors/messaging/base.d.ts +0 -42
  88. package/dist/connectors/messaging/base.js +0 -139
  89. package/dist/connectors/messaging/base.js.map +0 -1
  90. package/dist/connectors/messaging/delivery.d.ts +0 -14
  91. package/dist/connectors/messaging/delivery.js +0 -38
  92. package/dist/connectors/messaging/delivery.js.map +0 -1
  93. package/dist/connectors/messaging/index.d.ts +0 -4
  94. package/dist/connectors/messaging/index.js +0 -4
  95. package/dist/connectors/messaging/index.js.map +0 -1
  96. package/dist/connectors/messaging/session-manager.d.ts +0 -53
  97. package/dist/connectors/messaging/session-manager.js +0 -255
  98. package/dist/connectors/messaging/session-manager.js.map +0 -1
  99. package/dist/connectors/messaging/types.d.ts +0 -58
  100. package/dist/connectors/messaging/types.js +0 -7
  101. package/dist/connectors/messaging/types.js.map +0 -1
  102. package/dist/connectors/slack/connector.d.ts +0 -142
  103. package/dist/connectors/slack/connector.js +0 -494
  104. package/dist/connectors/slack/connector.js.map +0 -1
  105. package/dist/connectors/slack/index.d.ts +0 -2
  106. package/dist/connectors/slack/index.js +0 -3
  107. package/dist/connectors/slack/index.js.map +0 -1
  108. package/dist/connectors/slack/mrkdwn.d.ts +0 -19
  109. package/dist/connectors/slack/mrkdwn.js +0 -240
  110. package/dist/connectors/slack/mrkdwn.js.map +0 -1
  111. package/dist/connectors/types.d.ts +0 -61
  112. package/dist/connectors/types.js +0 -2
  113. package/dist/connectors/types.js.map +0 -1
  114. package/dist/cron/fanout.d.ts +0 -33
  115. package/dist/cron/fanout.js +0 -55
  116. package/dist/cron/fanout.js.map +0 -1
  117. package/dist/cron/jobs.d.ts +0 -18
  118. package/dist/cron/jobs.js +0 -37
  119. package/dist/cron/jobs.js.map +0 -1
  120. package/dist/cron/scheduler.d.ts +0 -45
  121. package/dist/cron/scheduler.js +0 -105
  122. package/dist/cron/scheduler.js.map +0 -1
  123. package/dist/engine/agent-executor.d.ts +0 -34
  124. package/dist/engine/agent-executor.js +0 -246
  125. package/dist/engine/agent-executor.js.map +0 -1
  126. package/dist/engine/chat/chat-runner.d.ts +0 -132
  127. package/dist/engine/chat/chat-runner.js +0 -424
  128. package/dist/engine/chat/chat-runner.js.map +0 -1
  129. package/dist/engine/chat/chat-skills.d.ts +0 -45
  130. package/dist/engine/chat/chat-skills.js +0 -184
  131. package/dist/engine/chat/chat-skills.js.map +0 -1
  132. package/dist/engine/chat/chat.d.ts +0 -54
  133. package/dist/engine/chat/chat.js +0 -316
  134. package/dist/engine/chat/chat.js.map +0 -1
  135. package/dist/engine/chat/message-batcher.d.ts +0 -32
  136. package/dist/engine/chat/message-batcher.js +0 -109
  137. package/dist/engine/chat/message-batcher.js.map +0 -1
  138. package/dist/engine/dispatcher.d.ts +0 -73
  139. package/dist/engine/dispatcher.js +0 -663
  140. package/dist/engine/dispatcher.js.map +0 -1
  141. package/dist/engine/event-shim.d.ts +0 -117
  142. package/dist/engine/event-shim.js +0 -435
  143. package/dist/engine/event-shim.js.map +0 -1
  144. package/dist/engine/executors/orchestrator.d.ts +0 -81
  145. package/dist/engine/executors/orchestrator.js +0 -365
  146. package/dist/engine/executors/orchestrator.js.map +0 -1
  147. package/dist/engine/executors/shared.d.ts +0 -189
  148. package/dist/engine/executors/shared.js +0 -616
  149. package/dist/engine/executors/shared.js.map +0 -1
  150. package/dist/engine/github/git-auth.d.ts +0 -62
  151. package/dist/engine/github/git-auth.js +0 -161
  152. package/dist/engine/github/git-auth.js.map +0 -1
  153. package/dist/engine/github/github-app-client.d.ts +0 -23
  154. package/dist/engine/github/github-app-client.js +0 -33
  155. package/dist/engine/github/github-app-client.js.map +0 -1
  156. package/dist/engine/github/github-tools.d.ts +0 -18
  157. package/dist/engine/github/github-tools.js +0 -263
  158. package/dist/engine/github/github-tools.js.map +0 -1
  159. package/dist/engine/github/github.d.ts +0 -1193
  160. package/dist/engine/github/github.js +0 -357
  161. package/dist/engine/github/github.js.map +0 -1
  162. package/dist/engine/github/profiles.d.ts +0 -279
  163. package/dist/engine/github/profiles.js +0 -42
  164. package/dist/engine/github/profiles.js.map +0 -1
  165. package/dist/engine/github/review-poster.d.ts +0 -98
  166. package/dist/engine/github/review-poster.js +0 -177
  167. package/dist/engine/github/review-poster.js.map +0 -1
  168. package/dist/engine/llm.d.ts +0 -79
  169. package/dist/engine/llm.js +0 -269
  170. package/dist/engine/llm.js.map +0 -1
  171. package/dist/engine/oauth.d.ts +0 -43
  172. package/dist/engine/oauth.js +0 -103
  173. package/dist/engine/oauth.js.map +0 -1
  174. package/dist/engine/router.d.ts +0 -29
  175. package/dist/engine/router.js +0 -680
  176. package/dist/engine/router.js.map +0 -1
  177. package/dist/engine/screen/classifier.d.ts +0 -93
  178. package/dist/engine/screen/classifier.js +0 -215
  179. package/dist/engine/screen/classifier.js.map +0 -1
  180. package/dist/engine/screen/screen.d.ts +0 -41
  181. package/dist/engine/screen/screen.js +0 -93
  182. package/dist/engine/screen/screen.js.map +0 -1
  183. package/dist/evals-api.d.ts +0 -24
  184. package/dist/evals-api.js +0 -22
  185. package/dist/evals-api.js.map +0 -1
  186. package/dist/index.d.ts +0 -1
  187. package/dist/index.js +0 -940
  188. package/dist/index.js.map +0 -1
  189. package/dist/managed-repos.d.ts +0 -30
  190. package/dist/managed-repos.js +0 -72
  191. package/dist/managed-repos.js.map +0 -1
  192. package/dist/notify/blocks.d.ts +0 -23
  193. package/dist/notify/blocks.js +0 -118
  194. package/dist/notify/blocks.js.map +0 -1
  195. package/dist/notify/index.d.ts +0 -17
  196. package/dist/notify/index.js +0 -7
  197. package/dist/notify/index.js.map +0 -1
  198. package/dist/notify/model.d.ts +0 -57
  199. package/dist/notify/model.js +0 -89
  200. package/dist/notify/model.js.map +0 -1
  201. package/dist/notify/notifier.d.ts +0 -18
  202. package/dist/notify/notifier.js +0 -100
  203. package/dist/notify/notifier.js.map +0 -1
  204. package/dist/notify/render.d.ts +0 -21
  205. package/dist/notify/render.js +0 -59
  206. package/dist/notify/render.js.map +0 -1
  207. package/dist/notify/transports/github.d.ts +0 -26
  208. package/dist/notify/transports/github.js +0 -27
  209. package/dist/notify/transports/github.js.map +0 -1
  210. package/dist/notify/transports/slack.d.ts +0 -27
  211. package/dist/notify/transports/slack.js +0 -37
  212. package/dist/notify/transports/slack.js.map +0 -1
  213. package/dist/notify/types.d.ts +0 -119
  214. package/dist/notify/types.js +0 -16
  215. package/dist/notify/types.js.map +0 -1
  216. package/dist/providers.d.ts +0 -125
  217. package/dist/providers.js +0 -279
  218. package/dist/providers.js.map +0 -1
  219. package/dist/sandbox/docker.d.ts +0 -180
  220. package/dist/sandbox/docker.js +0 -517
  221. package/dist/sandbox/docker.js.map +0 -1
  222. package/dist/sandbox/egress-allowlist.d.ts +0 -74
  223. package/dist/sandbox/egress-allowlist.js +0 -164
  224. package/dist/sandbox/egress-allowlist.js.map +0 -1
  225. package/dist/sandbox/egress-firewall-config.d.ts +0 -127
  226. package/dist/sandbox/egress-firewall-config.js +0 -434
  227. package/dist/sandbox/egress-firewall-config.js.map +0 -1
  228. package/dist/sandbox/images.d.ts +0 -23
  229. package/dist/sandbox/images.js +0 -55
  230. package/dist/sandbox/images.js.map +0 -1
  231. package/dist/sandbox/index.d.ts +0 -112
  232. package/dist/sandbox/index.js +0 -332
  233. package/dist/sandbox/index.js.map +0 -1
  234. package/dist/sandbox/sandbox.d.ts +0 -214
  235. package/dist/sandbox/sandbox.js +0 -453
  236. package/dist/sandbox/sandbox.js.map +0 -1
  237. package/dist/sandbox/smol.d.ts +0 -162
  238. package/dist/sandbox/smol.js +0 -485
  239. package/dist/sandbox/smol.js.map +0 -1
  240. package/dist/session-log.d.ts +0 -63
  241. package/dist/session-log.js +0 -290
  242. package/dist/session-log.js.map +0 -1
  243. package/dist/state/approval-store.d.ts +0 -88
  244. package/dist/state/approval-store.js +0 -149
  245. package/dist/state/approval-store.js.map +0 -1
  246. package/dist/state/build-assets.d.ts +0 -50
  247. package/dist/state/build-assets.js +0 -154
  248. package/dist/state/build-assets.js.map +0 -1
  249. package/dist/state/db.d.ts +0 -81
  250. package/dist/state/db.js +0 -155
  251. package/dist/state/db.js.map +0 -1
  252. package/dist/state/execution-store.d.ts +0 -257
  253. package/dist/state/execution-store.js +0 -527
  254. package/dist/state/execution-store.js.map +0 -1
  255. package/dist/state/migrate.d.ts +0 -15
  256. package/dist/state/migrate.js +0 -175
  257. package/dist/state/migrate.js.map +0 -1
  258. package/dist/state/workflow-run-store.d.ts +0 -216
  259. package/dist/state/workflow-run-store.js +0 -403
  260. package/dist/state/workflow-run-store.js.map +0 -1
  261. package/dist/telemetry/index.d.ts +0 -38
  262. package/dist/telemetry/index.js +0 -253
  263. package/dist/telemetry/index.js.map +0 -1
  264. package/dist/telemetry/pi-events.d.ts +0 -12
  265. package/dist/telemetry/pi-events.js +0 -134
  266. package/dist/telemetry/pi-events.js.map +0 -1
  267. package/dist/workflows/dag.d.ts +0 -37
  268. package/dist/workflows/dag.js +0 -118
  269. package/dist/workflows/dag.js.map +0 -1
  270. package/dist/workflows/loader.d.ts +0 -53
  271. package/dist/workflows/loader.js +0 -421
  272. package/dist/workflows/loader.js.map +0 -1
  273. package/dist/workflows/loop-eval.d.ts +0 -28
  274. package/dist/workflows/loop-eval.js +0 -74
  275. package/dist/workflows/loop-eval.js.map +0 -1
  276. package/dist/workflows/phase-executor.d.ts +0 -222
  277. package/dist/workflows/phase-executor.js +0 -1153
  278. package/dist/workflows/phase-executor.js.map +0 -1
  279. package/dist/workflows/phase-ref.d.ts +0 -50
  280. package/dist/workflows/phase-ref.js +0 -91
  281. package/dist/workflows/phase-ref.js.map +0 -1
  282. package/dist/workflows/resume.d.ts +0 -58
  283. package/dist/workflows/resume.js +0 -313
  284. package/dist/workflows/resume.js.map +0 -1
  285. package/dist/workflows/runner.d.ts +0 -63
  286. package/dist/workflows/runner.js +0 -381
  287. package/dist/workflows/runner.js.map +0 -1
  288. package/dist/workflows/schema.d.ts +0 -344
  289. package/dist/workflows/schema.js +0 -460
  290. package/dist/workflows/schema.js.map +0 -1
  291. package/dist/workflows/simple.d.ts +0 -90
  292. package/dist/workflows/simple.js +0 -393
  293. package/dist/workflows/simple.js.map +0 -1
  294. package/dist/workflows/target-policy.d.ts +0 -74
  295. package/dist/workflows/target-policy.js +0 -80
  296. package/dist/workflows/target-policy.js.map +0 -1
  297. package/dist/workflows/templates.d.ts +0 -88
  298. package/dist/workflows/templates.js +0 -127
  299. package/dist/workflows/templates.js.map +0 -1
  300. package/dist/workflows/triggers.d.ts +0 -21
  301. package/dist/workflows/triggers.js +0 -45
  302. package/dist/workflows/triggers.js.map +0 -1
  303. package/dist/workflows/verdict.d.ts +0 -19
  304. package/dist/workflows/verdict.js +0 -30
  305. package/dist/workflows/verdict.js.map +0 -1
  306. package/dist/worktree/manager.d.ts +0 -43
  307. package/dist/worktree/manager.js +0 -127
  308. package/dist/worktree/manager.js.map +0 -1
  309. package/docker-compose.yml +0 -274
  310. package/sandbox.Dockerfile +0 -68
  311. package/skills/README.md +0 -42
  312. package/skills/browser-qa/SKILL.md +0 -208
  313. package/skills/browser-qa/scripts/agent-browser.mjs +0 -531
  314. package/skills/building/SKILL.md +0 -95
  315. package/skills/chat/SKILL.md +0 -36
  316. package/skills/code-review/SKILL.md +0 -82
  317. package/skills/debug-production/SKILL.md +0 -108
  318. package/skills/demo/SKILL.md +0 -228
  319. package/skills/demo/scripts/compose-demo.sh +0 -243
  320. package/skills/issue-answer/SKILL.md +0 -91
  321. package/skills/issue-comment/SKILL.md +0 -49
  322. package/skills/issue-triage/SKILL.md +0 -149
  323. package/skills/issue-triage/references/AGENT-BRIEF.md +0 -65
  324. package/skills/pr-comment/SKILL.md +0 -64
  325. package/skills/pr-review/SKILL.md +0 -148
  326. package/skills/pr-review/references/findings-schema.md +0 -89
  327. package/skills/qa-test/SKILL.md +0 -97
  328. package/skills/repo-health/SKILL.md +0 -67
  329. package/skills/security-feedback/SKILL.md +0 -173
  330. package/skills/security-feedback/references/templates.md +0 -77
  331. package/skills/security-review/SKILL.md +0 -215
  332. package/skills/security-review/references/issue-format.md +0 -302
  333. package/skills/verify/SKILL.md +0 -118
  334. package/workflows/answer.yaml +0 -44
  335. package/workflows/build.yaml +0 -129
  336. package/workflows/cron-health.yaml +0 -6
  337. package/workflows/cron-review.yaml +0 -8
  338. package/workflows/cron-security.yaml +0 -6
  339. package/workflows/cron-triage.yaml +0 -8
  340. package/workflows/demo.yaml +0 -62
  341. package/workflows/examples/bash-smoke.yaml +0 -41
  342. package/workflows/examples/parallel-review.yaml +0 -36
  343. package/workflows/examples/tdd-loop.yaml +0 -17
  344. package/workflows/explore.yaml +0 -80
  345. package/workflows/issue-comment.yaml +0 -15
  346. package/workflows/issue-triage.yaml +0 -22
  347. package/workflows/pr-comment.yaml +0 -16
  348. package/workflows/pr-fix.yaml +0 -17
  349. package/workflows/pr-review.yaml +0 -50
  350. package/workflows/prompts/answer.md +0 -68
  351. package/workflows/prompts/architect.md +0 -44
  352. package/workflows/prompts/classifier.md +0 -60
  353. package/workflows/prompts/classify-adds-info.md +0 -17
  354. package/workflows/prompts/demo.md +0 -125
  355. package/workflows/prompts/executor.md +0 -42
  356. package/workflows/prompts/explore-ask.md +0 -99
  357. package/workflows/prompts/explore-publish.md +0 -31
  358. package/workflows/prompts/explore-read.md +0 -120
  359. package/workflows/prompts/explore-synthesize.md +0 -88
  360. package/workflows/prompts/fix.md +0 -18
  361. package/workflows/prompts/guardrails.md +0 -96
  362. package/workflows/prompts/pr-fix.md +0 -26
  363. package/workflows/prompts/pr.md +0 -39
  364. package/workflows/prompts/qa-browser.md +0 -95
  365. package/workflows/prompts/qa-synth.md +0 -44
  366. package/workflows/prompts/qa-test.md +0 -60
  367. package/workflows/prompts/re-reviewer.md +0 -33
  368. package/workflows/prompts/reviewer.md +0 -60
  369. package/workflows/prompts/verify-browser.md +0 -93
  370. package/workflows/prompts/verify-synth.md +0 -44
  371. package/workflows/prompts/verify.md +0 -63
  372. package/workflows/qa-test.yaml +0 -94
  373. package/workflows/repo-health.yaml +0 -15
  374. package/workflows/security-feedback.yaml +0 -25
  375. package/workflows/security-review.yaml +0 -37
  376. package/workflows/verify.yaml +0 -93
  377. /package/dist/{cli/cli-config.d.ts → cli-config.d.ts} +0 -0
  378. /package/dist/{cli/cli-config.js → cli-config.js} +0 -0
  379. /package/dist/{cli/cli-format.d.ts → cli-format.d.ts} +0 -0
  380. /package/dist/{cli/cli-format.js → cli-format.js} +0 -0
  381. /package/dist/{cli/cli-timeline.d.ts → cli-timeline.d.ts} +0 -0
  382. /package/dist/{cli/cli-timeline.js → cli-timeline.js} +0 -0
  383. /package/dist/{cli/cli.d.ts → cli.d.ts} +0 -0
  384. /package/dist/{cli/oauth-cli.d.ts → oauth-cli.d.ts} +0 -0
  385. /package/dist/{cli/setup.d.ts → setup.d.ts} +0 -0
@@ -1,42 +0,0 @@
1
- import { loadAgentContext as loadResolvedAgentContext } from "../../workflows/loader.js";
2
- /**
3
- * agentic-pi's GitHub extension uses the same four profile names — they
4
- * pass through unchanged. Kept as an explicit map so renames on either
5
- * side surface as a type error rather than a silent runtime mismatch.
6
- */
7
- export const AGENTIC_PROFILE_FOR = {
8
- read: "read",
9
- "issues-write": "issues-write",
10
- "review-write": "review-write",
11
- "repo-write": "repo-write",
12
- };
13
- export const GITHUB_PERMISSION_PROFILES = {
14
- read: {
15
- contents: "read",
16
- issues: "read",
17
- pull_requests: "read",
18
- metadata: "read",
19
- },
20
- "issues-write": {
21
- contents: "read",
22
- issues: "write",
23
- pull_requests: "read",
24
- metadata: "read",
25
- },
26
- "review-write": {
27
- contents: "read",
28
- issues: "write",
29
- pull_requests: "write",
30
- metadata: "read",
31
- },
32
- "repo-write": {
33
- contents: "write",
34
- issues: "write",
35
- pull_requests: "write",
36
- metadata: "read",
37
- },
38
- };
39
- export function loadAgentContext(_dir) {
40
- return loadResolvedAgentContext();
41
- }
42
- //# sourceMappingURL=profiles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../../src/engine/github/profiles.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,IAAI,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAiOzF;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAqC;IACnE,IAAI,EAAE,MAAM;IACZ,cAAc,EAAE,cAAc;IAC9B,cAAc,EAAE,cAAc;IAC9B,YAAY,EAAE,YAAY;CAC3B,CAAC;AAoDF,MAAM,CAAC,MAAM,0BAA0B,GAAqD;IAC1F,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,MAAM;QACd,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,MAAM;KACjB;IACD,cAAc,EAAE;QACd,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,aAAa,EAAE,MAAM;QACrB,QAAQ,EAAE,MAAM;KACjB;IACD,cAAc,EAAE;QACd,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO;QACf,aAAa,EAAE,OAAO;QACtB,QAAQ,EAAE,MAAM;KACjB;IACD,YAAY,EAAE;QACZ,QAAQ,EAAE,OAAO;QACjB,MAAM,EAAE,OAAO;QACf,aAAa,EAAE,OAAO;QACtB,QAAQ,EAAE,MAAM;KACjB;CACF,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC5C,OAAO,wBAAwB,EAAE,CAAC;AACpC,CAAC"}
@@ -1,98 +0,0 @@
1
- /**
2
- * Pure PR-review composition: turn a set of structured findings + the PR diff
3
- * into the payload for one formal GitHub review (`POST /pulls/{n}/reviews`).
4
- *
5
- * This is the tested core of the first-class `post-review` action
6
- * (`PhaseExecutor.runPostReview`). It replaces the ~150-line JS blob that used
7
- * to live inline in `workflows/pr-review.yaml` — that script depended on the AI
8
- * agent hand-writing `pr_number`/`base_ref`/`head_sha` into the findings file
9
- * and silently `exit 0`'d on any mismatch. Here the harness owns all of that:
10
- * the agent supplies only *content* (`summary`, `event`, `findings`), and this
11
- * module anchors each finding to the diff, demoting anything off-diff to the
12
- * body (GitHub 422s on comments that don't sit on a changed line).
13
- *
14
- * No I/O — every function is a pure transform, so the anchoring rules are
15
- * exercised directly in `review-poster.test.ts` rather than by eval-extracting
16
- * a function out of a YAML string.
17
- */
18
- export type ReviewEvent = "APPROVE" | "REQUEST_CHANGES" | "COMMENT";
19
- export type ReviewSide = "LEFT" | "RIGHT";
20
- /** One finding as written by the `pr-review` skill into findings.json. */
21
- export interface ReviewFinding {
22
- path: string;
23
- line: number;
24
- side?: ReviewSide;
25
- start_line?: number;
26
- severity?: string;
27
- title?: string;
28
- body?: string;
29
- suggestion?: string;
30
- }
31
- /**
32
- * The findings document the agent writes. `pr_number` / `base_ref` /
33
- * `head_sha` are intentionally NOT here — the harness knows them from its own
34
- * run context and the PR object, so the agent never hand-copies metadata.
35
- */
36
- export interface ReviewFindingsDoc {
37
- skip?: boolean;
38
- summary?: string;
39
- event?: ReviewEvent;
40
- findings?: ReviewFinding[];
41
- }
42
- /** An inline review comment in the shape GitHub's create-review API expects. */
43
- export interface InlineComment {
44
- path: string;
45
- line: number;
46
- side: ReviewSide;
47
- body: string;
48
- start_line?: number;
49
- start_side?: ReviewSide;
50
- }
51
- /** Everything needed to POST one review, ready for `createPullRequestReview`. */
52
- export interface BuiltReview {
53
- event: ReviewEvent;
54
- body: string;
55
- comments: InlineComment[];
56
- inlineCount: number;
57
- demotedCount: number;
58
- }
59
- /**
60
- * Map a unified diff to `path -> Set<"SIDE:line">`. Added/`+` and context lines
61
- * are `RIGHT:<newLine>`; removed/`-` and context lines are `LEFT:<oldLine>` —
62
- * mirroring GitHub's three-dot PR diff anchoring. A finding may be commented
63
- * inline only when its `side:line` appears in this set.
64
- */
65
- export declare function parseDiff(diff: string): Map<string, Set<string>>;
66
- /** True when a finding anchors onto a line that appears in the diff. */
67
- export declare function isAnchored(f: ReviewFinding, commentable: Map<string, Set<string>> | null): boolean;
68
- /**
69
- * Partition findings into `inline` (anchor is on the diff) and `demoted`
70
- * (off-diff, or missing path/line — folded into the body). When `commentable`
71
- * is null (the diff couldn't be computed) every finding is demoted, so the
72
- * review still posts and nothing is lost.
73
- */
74
- export declare function splitFindings(findings: ReviewFinding[], commentable: Map<string, Set<string>> | null): {
75
- inline: ReviewFinding[];
76
- demoted: ReviewFinding[];
77
- };
78
- /** The "Additional findings" section appended to the body for demoted findings. */
79
- export declare function renderDemoted(list: ReviewFinding[]): string;
80
- /** Build the inline-comment objects GitHub's create-review API expects. */
81
- export declare function toInlineComments(list: ReviewFinding[]): InlineComment[];
82
- /**
83
- * Resolve the review event. An explicit `doc.event` wins; otherwise an empty
84
- * findings set is an `APPROVE` and anything else is a `COMMENT` (never an
85
- * automatic `REQUEST_CHANGES` — that stays an explicit, deliberate call).
86
- */
87
- export declare function resolveEvent(doc: ReviewFindingsDoc): ReviewEvent;
88
- /**
89
- * Compose the full review payload. Pass `commentable = null` to force every
90
- * finding into the body (the diff-unavailable fallback).
91
- */
92
- export declare function buildReview(doc: ReviewFindingsDoc, commentable: Map<string, Set<string>> | null): BuiltReview;
93
- /**
94
- * The body-only fallback: when the inline POST is rejected (e.g. a stale diff
95
- * yields a 422 on a comment line), re-render with ALL findings in the body so
96
- * the review still lands. Same event as the inline attempt.
97
- */
98
- export declare function buildBodyOnlyReview(doc: ReviewFindingsDoc): BuiltReview;
@@ -1,177 +0,0 @@
1
- /**
2
- * Pure PR-review composition: turn a set of structured findings + the PR diff
3
- * into the payload for one formal GitHub review (`POST /pulls/{n}/reviews`).
4
- *
5
- * This is the tested core of the first-class `post-review` action
6
- * (`PhaseExecutor.runPostReview`). It replaces the ~150-line JS blob that used
7
- * to live inline in `workflows/pr-review.yaml` — that script depended on the AI
8
- * agent hand-writing `pr_number`/`base_ref`/`head_sha` into the findings file
9
- * and silently `exit 0`'d on any mismatch. Here the harness owns all of that:
10
- * the agent supplies only *content* (`summary`, `event`, `findings`), and this
11
- * module anchors each finding to the diff, demoting anything off-diff to the
12
- * body (GitHub 422s on comments that don't sit on a changed line).
13
- *
14
- * No I/O — every function is a pure transform, so the anchoring rules are
15
- * exercised directly in `review-poster.test.ts` rather than by eval-extracting
16
- * a function out of a YAML string.
17
- */
18
- const FENCE = "```";
19
- /**
20
- * Map a unified diff to `path -> Set<"SIDE:line">`. Added/`+` and context lines
21
- * are `RIGHT:<newLine>`; removed/`-` and context lines are `LEFT:<oldLine>` —
22
- * mirroring GitHub's three-dot PR diff anchoring. A finding may be commented
23
- * inline only when its `side:line` appears in this set.
24
- */
25
- export function parseDiff(diff) {
26
- const map = new Map();
27
- let path = null;
28
- let right = 0;
29
- let left = 0;
30
- let inHunk = false;
31
- for (const line of diff.split("\n")) {
32
- if (line.startsWith("+++ ")) {
33
- const p = line.slice(4).replace(/^b\//, "");
34
- path = p === "/dev/null" ? null : p;
35
- if (path && !map.has(path))
36
- map.set(path, new Set());
37
- inHunk = false;
38
- }
39
- else if (line.startsWith("@@")) {
40
- const m = /@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(line);
41
- if (m) {
42
- left = parseInt(m[1], 10);
43
- right = parseInt(m[2], 10);
44
- inHunk = true;
45
- }
46
- }
47
- else if (inHunk && path) {
48
- const set = map.get(path);
49
- if (line.startsWith("+")) {
50
- set.add("RIGHT:" + right);
51
- right++;
52
- }
53
- else if (line.startsWith("-")) {
54
- set.add("LEFT:" + left);
55
- left++;
56
- }
57
- else if (line.startsWith(" ")) {
58
- set.add("RIGHT:" + right);
59
- set.add("LEFT:" + left);
60
- right++;
61
- left++;
62
- }
63
- else if (line.startsWith("\\")) {
64
- /* "" */
65
- }
66
- else {
67
- inHunk = false;
68
- }
69
- }
70
- }
71
- return map;
72
- }
73
- /** True when a finding anchors onto a line that appears in the diff. */
74
- export function isAnchored(f, commentable) {
75
- if (!commentable)
76
- return false;
77
- const side = f.side === "LEFT" ? "LEFT" : "RIGHT";
78
- const set = commentable.get(f.path);
79
- if (!set || !set.has(side + ":" + f.line))
80
- return false;
81
- if (f.start_line && !set.has(side + ":" + f.start_line))
82
- return false;
83
- return true;
84
- }
85
- /**
86
- * Partition findings into `inline` (anchor is on the diff) and `demoted`
87
- * (off-diff, or missing path/line — folded into the body). When `commentable`
88
- * is null (the diff couldn't be computed) every finding is demoted, so the
89
- * review still posts and nothing is lost.
90
- */
91
- export function splitFindings(findings, commentable) {
92
- const inline = [];
93
- const demoted = [];
94
- for (const f of findings) {
95
- if (f && f.path && f.line && isAnchored(f, commentable))
96
- inline.push(f);
97
- else if (f)
98
- demoted.push(f);
99
- }
100
- return { inline, demoted };
101
- }
102
- function commentBody(f) {
103
- let b = "**[" + (f.severity || "Important") + "] " + (f.title || "") + "**\n\n" + (f.body || "");
104
- if (f.suggestion)
105
- b += "\n\n" + FENCE + "suggestion\n" + f.suggestion + "\n" + FENCE;
106
- return b;
107
- }
108
- /** The "Additional findings" section appended to the body for demoted findings. */
109
- export function renderDemoted(list) {
110
- if (!list.length)
111
- return "";
112
- return ("\n\n### Additional findings\n" +
113
- list
114
- .map((f) => "- **[" +
115
- (f.severity || "Important") +
116
- "] " +
117
- (f.title || "") +
118
- "** (" +
119
- f.path +
120
- ":" +
121
- f.line +
122
- ") — " +
123
- (f.body || ""))
124
- .join("\n"));
125
- }
126
- /** Build the inline-comment objects GitHub's create-review API expects. */
127
- export function toInlineComments(list) {
128
- return list.map((f) => {
129
- const side = f.side === "LEFT" ? "LEFT" : "RIGHT";
130
- const c = { path: f.path, line: f.line, side, body: commentBody(f) };
131
- if (f.start_line) {
132
- c.start_line = f.start_line;
133
- c.start_side = side;
134
- }
135
- return c;
136
- });
137
- }
138
- /**
139
- * Resolve the review event. An explicit `doc.event` wins; otherwise an empty
140
- * findings set is an `APPROVE` and anything else is a `COMMENT` (never an
141
- * automatic `REQUEST_CHANGES` — that stays an explicit, deliberate call).
142
- */
143
- export function resolveEvent(doc) {
144
- const findings = Array.isArray(doc.findings) ? doc.findings : [];
145
- return doc.event || (findings.length === 0 ? "APPROVE" : "COMMENT");
146
- }
147
- /**
148
- * Compose the full review payload. Pass `commentable = null` to force every
149
- * finding into the body (the diff-unavailable fallback).
150
- */
151
- export function buildReview(doc, commentable) {
152
- const findings = Array.isArray(doc.findings) ? doc.findings : [];
153
- const { inline, demoted } = splitFindings(findings, commentable);
154
- return {
155
- event: resolveEvent(doc),
156
- body: (doc.summary || "") + renderDemoted(demoted),
157
- comments: toInlineComments(inline),
158
- inlineCount: inline.length,
159
- demotedCount: demoted.length,
160
- };
161
- }
162
- /**
163
- * The body-only fallback: when the inline POST is rejected (e.g. a stale diff
164
- * yields a 422 on a comment line), re-render with ALL findings in the body so
165
- * the review still lands. Same event as the inline attempt.
166
- */
167
- export function buildBodyOnlyReview(doc) {
168
- const findings = Array.isArray(doc.findings) ? doc.findings : [];
169
- return {
170
- event: resolveEvent(doc),
171
- body: (doc.summary || "") + renderDemoted(findings),
172
- comments: [],
173
- inlineCount: 0,
174
- demotedCount: findings.length,
175
- };
176
- }
177
- //# sourceMappingURL=review-poster.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"review-poster.js","sourceRoot":"","sources":["../../../src/engine/github/review-poster.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAgDH,MAAM,KAAK,GAAG,KAAK,CAAC;AAEpB;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC3C,IAAI,IAAI,GAAkB,IAAI,CAAC;IAC/B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAC5C,IAAI,GAAG,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YACrD,MAAM,GAAG,KAAK,CAAC;QACjB,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,GAAG,wCAAwC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9D,IAAI,CAAC,EAAE,CAAC;gBACN,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC;gBAC3B,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC;gBAC5B,MAAM,GAAG,IAAI,CAAC;YAChB,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;YAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,GAAG,CAAC,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;gBAC1B,KAAK,EAAE,CAAC;YACV,CAAC;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,GAAG,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;gBACxB,IAAI,EAAE,CAAC;YACT,CAAC;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,GAAG,CAAC,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;gBAC1B,GAAG,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;gBACxB,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,CAAC;YACT,CAAC;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,mCAAmC;YACrC,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,KAAK,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,UAAU,CACxB,CAAgB,EAChB,WAA4C;IAE5C,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAC/B,MAAM,IAAI,GAAe,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9D,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACxD,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IACtE,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,QAAyB,EACzB,WAA4C;IAE5C,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACnE,IAAI,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC;AAED,SAAS,WAAW,CAAC,CAAgB;IACnC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,WAAW,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACjG,IAAI,CAAC,CAAC,UAAU;QAAE,CAAC,IAAI,MAAM,GAAG,KAAK,GAAG,cAAc,GAAG,CAAC,CAAC,UAAU,GAAG,IAAI,GAAG,KAAK,CAAC;IACrF,OAAO,CAAC,CAAC;AACX,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,aAAa,CAAC,IAAqB;IACjD,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAC5B,OAAO,CACL,+BAA+B;QAC/B,IAAI;aACD,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,OAAO;YACP,CAAC,CAAC,CAAC,QAAQ,IAAI,WAAW,CAAC;YAC3B,IAAI;YACJ,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACf,MAAM;YACN,CAAC,CAAC,IAAI;YACN,GAAG;YACH,CAAC,CAAC,IAAI;YACN,MAAM;YACN,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CACjB;aACA,IAAI,CAAC,IAAI,CAAC,CACd,CAAC;AACJ,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,gBAAgB,CAAC,IAAqB;IACpD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACpB,MAAM,IAAI,GAAe,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QAC9D,MAAM,CAAC,GAAkB,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;YACjB,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;YAC5B,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,GAAsB;IACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,OAAO,GAAG,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,GAAsB,EACtB,WAA4C;IAE5C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACjE,OAAO;QACL,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC;QACxB,IAAI,EAAE,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC;QAClD,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC;QAClC,WAAW,EAAE,MAAM,CAAC,MAAM;QAC1B,YAAY,EAAE,OAAO,CAAC,MAAM;KAC7B,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAsB;IACxD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,OAAO;QACL,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC;QACxB,IAAI,EAAE,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC;QACnD,QAAQ,EAAE,EAAE;QACZ,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,QAAQ,CAAC,MAAM;KAC9B,CAAC;AACJ,CAAC"}
@@ -1,79 +0,0 @@
1
- /**
2
- * Thin one-shot LLM chat helper used by the prompt-injection screener and the
3
- * intent classifier. Powered by `src/providers.ts` — that registry is the
4
- * single source of truth for which providers this helper can call.
5
- *
6
- * The screener + classifier are deliberately small and explicit. They need a
7
- * cheap/fast model on the SAME provider the user picked (or any registered
8
- * provider whose key is present) so the agent's primary model and the cheap
9
- * helper share one footprint. We support two request families:
10
- *
11
- * `openai-completions` — body `{ model, messages, <maxTokensField> }`,
12
- * response `choices[0].message.content`. Covers
13
- * OpenAI, OpenRouter, Groq, Cerebras, xAI,
14
- * Hugging Face, Moonshot, NVIDIA, Fireworks,
15
- * Together, DeepSeek, Z.AI, and Google/Mistral
16
- * via their OpenAI-compatible endpoints.
17
- * `anthropic-messages` — `system` field + content-block response.
18
- * Covers Anthropic, Kimi for Coding, MiniMax.
19
- *
20
- * Scope: this helper supports the providers listed in `src/providers.ts`.
21
- * Workflow phases themselves are provider-agnostic (whatever pi-ai
22
- * supports); only the screener/classifier path is constrained here.
23
- */
24
- import { type ApiType } from "../providers.js";
25
- export type ChatRole = "system" | "user" | "assistant";
26
- export interface ChatMessage {
27
- role: ChatRole;
28
- content: string;
29
- }
30
- export interface ChatOptions {
31
- /** Hard cap on output tokens (default: 256 — these calls are tiny). */
32
- maxTokens?: number;
33
- /** Per-call timeout (default: 30s). */
34
- timeoutMs?: number;
35
- }
36
- export type CallLlmOptions = ChatOptions;
37
- export type ChatFunction = (model: string, messages: ChatMessage[], opts?: ChatOptions) => Promise<string>;
38
- /** Resolved routing for a `provider/model` spec. */
39
- export interface ResolvedProvider {
40
- /** Pi-ai-style provider prefix (`anthropic`, `openai`, `openrouter`, …). */
41
- provider: string;
42
- /** Model id the upstream API expects (prefix stripped, nested tail preserved if applicable). */
43
- modelId: string;
44
- /** Which request family to use. */
45
- api: ApiType;
46
- }
47
- /**
48
- * Resolve a `provider/model` spec (or a bare model id) into a routing
49
- * decision. Prefers an explicit `<prefix>/<model>` over name-inference.
50
- *
51
- * @throws if the prefix is present but not registered — silently
52
- * mis-routing a `xai/grok-4` to OpenAI would bill the wrong account and
53
- * fail at request time with a confusing error, so we surface it early.
54
- */
55
- export declare function resolveProvider(model: string): ResolvedProvider;
56
- /**
57
- * Resolve the model id for a tiny one-shot helper call (classifier / screener).
58
- * Precedence for a given `taskType`:
59
- * 1. an explicit per-task entry in the config `models:` map (`models.classifier`,
60
- * `models.screener`) — which already has env `OPENCODE_MODELS` /
61
- * `LASTLIGHT_MODELS` layered on top at config-load, so this covers both
62
- * config.yaml and the env override in one lookup;
63
- * 2. the env `OPENCODE_MODELS` map read directly — a fallback for contexts
64
- * where runtime config isn't loaded (some CLI / test paths);
65
- * 3. the first configured provider in `PROVIDERS` order (registry order:
66
- * Anthropic first, then OpenAI, OpenRouter, then the rest — `src/providers.ts`).
67
- *
68
- * Note: only an EXPLICIT per-task entry counts — never `models.default` — so the
69
- * cheap helpers stay cheap unless a deployment deliberately pins them.
70
- */
71
- export declare function defaultFastModel(taskType?: string): string;
72
- /**
73
- * Make a provider-agnostic chat call and return the final assistant text.
74
- *
75
- * @throws if the relevant API key isn't set or the upstream returns non-2xx
76
- */
77
- export declare function chat(model: string, messages: ChatMessage[], opts?: ChatOptions): Promise<string>;
78
- /** Compatibility wrapper for older single-turn call sites. */
79
- export declare function callLlm(model: string, systemPrompt: string, userPrompt: string, opts?: CallLlmOptions): Promise<string>;