lastlight 0.7.0 → 0.7.2

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 (39) hide show
  1. package/dist/connectors/github-webhook.js +5 -0
  2. package/dist/connectors/github-webhook.js.map +1 -1
  3. package/dist/connectors/types.d.ts +2 -0
  4. package/dist/engine/agent-executor.d.ts +7 -16
  5. package/dist/engine/agent-executor.js +34 -305
  6. package/dist/engine/agent-executor.js.map +1 -1
  7. package/dist/engine/dispatcher.js +24 -0
  8. package/dist/engine/dispatcher.js.map +1 -1
  9. package/dist/engine/executors/orchestrator.d.ts +81 -0
  10. package/dist/engine/executors/orchestrator.js +340 -0
  11. package/dist/engine/executors/orchestrator.js.map +1 -0
  12. package/dist/engine/router.js +47 -1
  13. package/dist/engine/router.js.map +1 -1
  14. package/dist/engine/screen/classifier.d.ts +10 -0
  15. package/dist/engine/screen/classifier.js +44 -0
  16. package/dist/engine/screen/classifier.js.map +1 -1
  17. package/dist/index.js +9 -9
  18. package/dist/index.js.map +1 -1
  19. package/dist/sandbox/sandbox.d.ts +189 -0
  20. package/dist/sandbox/sandbox.js +429 -0
  21. package/dist/sandbox/sandbox.js.map +1 -0
  22. package/dist/state/workflow-run-store.d.ts +7 -0
  23. package/dist/state/workflow-run-store.js +14 -0
  24. package/dist/state/workflow-run-store.js.map +1 -1
  25. package/dist/workflows/simple.d.ts +24 -3
  26. package/dist/workflows/simple.js +29 -3
  27. package/dist/workflows/simple.js.map +1 -1
  28. package/docker-compose.yml +1 -1
  29. package/package.json +1 -1
  30. package/plugins/lastlight/.claude-plugin/plugin.json +1 -1
  31. package/plugins/lastlight/skills/lastlight-evals/SKILL.md +30 -2
  32. package/plugins/lastlight/skills/lastlight-evals/references/authoring-from-pr.md +117 -0
  33. package/plugins/lastlight/skills/lastlight-evals/references/instance-schema.md +26 -7
  34. package/skills/README.md +1 -1
  35. package/skills/issue-triage/SKILL.md +34 -7
  36. package/skills/issue-triage/references/AGENT-BRIEF.md +28 -24
  37. package/dist/engine/executors/backends.d.ts +0 -41
  38. package/dist/engine/executors/backends.js +0 -541
  39. package/dist/engine/executors/backends.js.map +0 -1
@@ -150,12 +150,14 @@ export class GitHubWebhookConnector extends EventEmitter {
150
150
  let body = "";
151
151
  let title = "";
152
152
  let labels = [];
153
+ let issueAuthor;
153
154
  switch (githubEvent) {
154
155
  case "issues":
155
156
  issueNumber = payload.issue?.number;
156
157
  body = payload.issue?.body || "";
157
158
  title = payload.issue?.title || "";
158
159
  labels = (payload.issue?.labels || []).map((l) => l.name);
160
+ issueAuthor = payload.issue?.user?.login;
159
161
  if (action === "opened")
160
162
  type = "issue.opened";
161
163
  else if (action === "reopened")
@@ -167,6 +169,7 @@ export class GitHubWebhookConnector extends EventEmitter {
167
169
  body = payload.pull_request?.body || "";
168
170
  title = payload.pull_request?.title || "";
169
171
  labels = (payload.pull_request?.labels || []).map((l) => l.name);
172
+ issueAuthor = payload.pull_request?.user?.login;
170
173
  if (action === "opened")
171
174
  type = "pr.opened";
172
175
  // synchronize fires on every new commit pushed to the PR's branch.
@@ -188,6 +191,7 @@ export class GitHubWebhookConnector extends EventEmitter {
188
191
  // security-feedback skill. Without this, every comment arrived
189
192
  // label-less and fell through to the build path.
190
193
  labels = (payload.issue?.labels || []).map((l) => l.name);
194
+ issueAuthor = payload.issue?.user?.login;
191
195
  if (action === "created")
192
196
  type = "comment.created";
193
197
  // Detect if this is on a PR
@@ -253,6 +257,7 @@ export class GitHubWebhookConnector extends EventEmitter {
253
257
  issueNumber,
254
258
  prNumber,
255
259
  sender,
260
+ issueAuthor,
256
261
  senderIsBot: false, // already filtered bots above
257
262
  body,
258
263
  title,
@@ -1 +1 @@
1
- {"version":3,"file":"github-webhook.js","sourceRoot":"","sources":["../../src/connectors/github-webhook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAErD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAWpD;;;;;;;;;GASG;AACH,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,SAAS;IACT,QAAQ;IACR,SAAS;IACT,WAAW;IACX,UAAU;IACV,YAAY;IACZ,QAAQ;IACR,YAAY;IACZ,cAAc;IACd,QAAQ;IACR,UAAU;IACV,aAAa;IACb,QAAQ;IACR,UAAU;CACX,CAAC,CAAC;AAEH,MAAM,OAAO,sBAAuB,SAAQ,YAAY;IAC7C,IAAI,GAAG,QAAQ,CAAC;IACjB,GAAG,CAAO;IACV,MAAM,GAAoC,IAAI,CAAC;IAC/C,MAAM,CAAsB;IAEpC,YAAY,MAA2B;QACrC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAEO,WAAW;QACjB,eAAe;QACf,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE9E,0BAA0B;QAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAEhC,2BAA2B;YAC3B,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;YACtD,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;gBACzD,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,GAAG,CAAC,CAAC;YACrD,CAAC;YAED,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACjD,MAAM,UAAU,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAE5E,IAAI,OAAY,CAAC;YACjB,IAAI,CAAC;gBACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,GAAG,CAAC,CAAC;YAChD,CAAC;YAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAE9B,6BAA6B;YAC7B,IAAI,MAAM,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1C,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,MAAM,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YACrE,CAAC;YAED,gDAAgD;YAChD,EAAE;YACF,mEAAmE;YACnE,8DAA8D;YAC9D,+DAA+D;YAC/D,kEAAkE;YAClE,iEAAiE;YACjE,iEAAiE;YACjE,0CAA0C;YAC1C,EAAE;YACF,kEAAkE;YAClE,8DAA8D;YAC9D,mEAAmE;YACnE,kEAAkE;YAClE,iDAAiD;YACjD,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;YAChD,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;YAC9C,MAAM,WAAW,GACf,UAAU,KAAK,KAAK;gBACpB,WAAW,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ;gBACpC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAChC,MAAM,aAAa,GACjB,SAAS,KAAK,cAAc;gBAC5B,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,aAAa,IAAI,MAAM,KAAK,UAAU,CAAC,CAAC;YAC7E,IAAI,WAAW,IAAI,CAAC,aAAa,EAAE,CAAC;gBAClC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,GAAG,CAAC,CAAC;YAC/D,CAAC;YAED,wEAAwE;YACxE,uEAAuE;YACvE,0EAA0E;YAC1E,wEAAwE;YACxE,yEAAyE;YACzE,mEAAmE;YACnE,oEAAoE;YACpE,yEAAyE;YACzE,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YACzD,MAAM,eAAe,GACnB,aAAa;gBACb,CAAC,QAAQ,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YACpE,IAAI,eAAe,EAAE,CAAC;gBACpB,OAAO,CAAC,CAAC,IAAI,CACX,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,+BAA+B,EAAE,EAC3D,GAAG,CACJ,CAAC;YACJ,CAAC;YAED,uEAAuE;YACvE,2EAA2E;YAC3E,oCAAoC;YACpC,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC;YACnD,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC;gBACjC,OAAO,CAAC,GAAG,CAAC,iDAAiD,YAAY,EAAE,CAAC,CAAC;gBAC7E,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,qBAAqB,YAAY,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YACtF,CAAC;YAED,6BAA6B;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,SAAU,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;YACzE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAAE,GAAG,CAAC,CAAC;YACnE,CAAC;YAED,yDAAyD;YACzD,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;YAEjD,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,GAAG,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,eAAe,CAAC,IAAY,EAAE,SAAiB;QACrD,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;aACzE,MAAM,CAAC,IAAI,CAAC;aACZ,MAAM,CAAC,KAAK,CAAC,CAAC;QACjB,IAAI,CAAC;YACH,OAAO,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACxE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAEO,SAAS,CACf,WAAmB,EACnB,MAA0B,EAC1B,OAAY,EACZ,UAAkB;QAElB,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC;QACnD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,SAAS,CAAC;QAElD,4CAA4C;QAC5C,IAAI,IAAI,GAAqB,IAAI,CAAC;QAClC,IAAI,WAA+B,CAAC;QACpC,IAAI,QAA4B,CAAC;QACjC,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,MAAM,GAAa,EAAE,CAAC;QAE1B,QAAQ,WAAW,EAAE,CAAC;YACpB,KAAK,QAAQ;gBACX,WAAW,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;gBACpC,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC;gBACjC,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC;gBACnC,MAAM,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC/D,IAAI,MAAM,KAAK,QAAQ;oBAAE,IAAI,GAAG,cAAc,CAAC;qBAC1C,IAAI,MAAM,KAAK,UAAU;oBAAE,IAAI,GAAG,gBAAgB,CAAC;gBACxD,MAAM;YAER,KAAK,cAAc;gBACjB,QAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;gBACxC,WAAW,GAAG,QAAQ,CAAC,CAAC,qBAAqB;gBAC7C,IAAI,GAAG,OAAO,CAAC,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC;gBACxC,KAAK,GAAG,OAAO,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC1C,MAAM,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACtE,IAAI,MAAM,KAAK,QAAQ;oBAAE,IAAI,GAAG,WAAW,CAAC;gBAC5C,mEAAmE;gBACnE,kEAAkE;gBAClE,gEAAgE;gBAChE,8DAA8D;qBACzD,IAAI,MAAM,KAAK,aAAa;oBAAE,IAAI,GAAG,gBAAgB,CAAC;gBAC3D,+DAA+D;qBAC1D,IAAI,MAAM,KAAK,UAAU;oBAAE,IAAI,GAAG,aAAa,CAAC;gBACrD,MAAM;YAER,KAAK,eAAe;gBAClB,WAAW,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;gBACpC,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC;gBACnC,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC;gBACnC,+DAA+D;gBAC/D,8DAA8D;gBAC9D,+DAA+D;gBAC/D,iDAAiD;gBACjD,MAAM,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC/D,IAAI,MAAM,KAAK,SAAS;oBAAE,IAAI,GAAG,iBAAiB,CAAC;gBACnD,4BAA4B;gBAC5B,IAAI,OAAO,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC;oBAChC,QAAQ,GAAG,WAAW,CAAC;gBACzB,CAAC;gBACD,MAAM;YAER,KAAK,qBAAqB;gBACxB,QAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;gBACxC,WAAW,GAAG,QAAQ,CAAC;gBACvB,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;gBAClC,KAAK,GAAG,OAAO,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC1C,IAAI,MAAM,KAAK,WAAW;oBAAE,IAAI,GAAG,qBAAqB,CAAC;gBACzD,MAAM;YAER,KAAK,6BAA6B;gBAChC,QAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;gBACxC,WAAW,GAAG,QAAQ,CAAC;gBACvB,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC;gBACnC,KAAK,GAAG,OAAO,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC1C,IAAI,MAAM,KAAK,SAAS;oBAAE,IAAI,GAAG,2BAA2B,CAAC;gBAC7D,MAAM;YAER,sEAAsE;YACtE,wEAAwE;YACxE,0EAA0E;YAC1E,uEAAuE;YACvE,wEAAwE;YACxE,qEAAqE;YACrE,yEAAyE;YACzE,wEAAwE;YACxE,0EAA0E;YAC1E,KAAK,WAAW;gBACd,IAAI,MAAM,KAAK,aAAa,IAAI,MAAM,KAAK,kBAAkB,EAAE,CAAC;oBAC9D,QAAQ,GAAG,OAAO,CAAC,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;oBACzD,WAAW,GAAG,QAAQ,CAAC;oBACvB,IAAI,QAAQ;wBAAE,IAAI,GAAG,gBAAgB,CAAC;gBACxC,CAAC;gBACD,MAAM;YAER,KAAK,aAAa;gBAChB,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;oBAC7B,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;oBAC3D,WAAW,GAAG,QAAQ,CAAC;oBACvB,IAAI,QAAQ;wBAAE,IAAI,GAAG,gBAAgB,CAAC;gBACxC,CAAC;gBACD,MAAM;QACV,CAAC;QAED,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QAEvB,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEvD,MAAM,KAAK,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;YAClC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,YAAY,IAAI,WAAW,EAAE,CAAC;gBACvD,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC,CAAC;QAEF,OAAO;YACL,EAAE,EAAE,UAAU;YACd,MAAM,EAAE,QAAQ;YAChB,IAAI;YACJ,IAAI,EAAE,YAAY;YAClB,WAAW;YACX,QAAQ;YACR,MAAM;YACN,WAAW,EAAE,KAAK,EAAE,8BAA8B;YAClD,IAAI;YACJ,KAAK;YACL,MAAM;YACN,iBAAiB,EAAE,OAAO,CAAC,OAAO,EAAE,kBAAkB,IAAI,OAAO,CAAC,KAAK,EAAE,kBAAkB,IAAI,OAAO,CAAC,YAAY,EAAE,kBAAkB;YACvI,GAAG,EAAE,OAAO;YACZ,KAAK;YACL,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YAClB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK;YACrB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;YACtB,QAAQ,EAAE,SAAS;SACpB,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,6CAA6C,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"github-webhook.js","sourceRoot":"","sources":["../../src/connectors/github-webhook.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,8 @@ export interface EventEnvelope {
19
19
  prNumber?: number;
20
20
  /** Login/username of the sender */
21
21
  sender: string;
22
+ /** Login of the issue/PR original author (distinct from `sender`, the commenter) */
23
+ issueAuthor?: string;
22
24
  /** Whether sender is a bot */
23
25
  senderIsBot: boolean;
24
26
  /** Event body text (issue body, comment body, PR body, etc.) */
@@ -1,5 +1,8 @@
1
1
  import { type ExecutorConfig, type ExecutionResult, type GitSandboxAccess } from "./github/profiles.js";
2
+ import type { SandboxFactory } from "../sandbox/sandbox.js";
3
+ import { type CommandSpec } from "./executors/orchestrator.js";
2
4
  export { RunResultAccumulator, stageSkillBundle, excludeFromGit, detectAccountError } from "./executors/shared.js";
5
+ export type { CommandSpec } from "./executors/orchestrator.js";
3
6
  export declare function executeAgent(prompt: string, config: ExecutorConfig, opts?: {
4
7
  taskId?: string;
5
8
  /**
@@ -9,23 +12,9 @@ export declare function executeAgent(prompt: string, config: ExecutorConfig, opt
9
12
  */
10
13
  onSessionId?: (sessionId: string) => void;
11
14
  githubAccess?: GitSandboxAccess;
15
+ /** Test seam — substitute a FakeSandbox. Defaults to the real factory. */
16
+ sandboxFactory?: SandboxFactory;
12
17
  }): Promise<ExecutionResult>;
13
- /** What a command phase runs. */
14
- export type CommandSpec = {
15
- kind: "bash";
16
- command: string;
17
- } | {
18
- kind: "script";
19
- script: string;
20
- runtime: "js" | "ts" | "python";
21
- name: string;
22
- };
23
- /**
24
- * Execute a deterministic command/script. Mirrors {@link executeDocker} /
25
- * {@link executeInProcess} for sandbox setup but runs `runCommand` (docker) or
26
- * `spawnSync` (gondolin/none) instead of an agent, and writes a session jsonl
27
- * so the output is visible in the dashboard + CLI.
28
- */
29
18
  export declare function executeCommand(spec: CommandSpec, config: ExecutorConfig, opts?: {
30
19
  taskId?: string;
31
20
  githubAccess?: GitSandboxAccess;
@@ -40,4 +29,6 @@ export declare function executeCommand(spec: CommandSpec, config: ExecutorConfig
40
29
  * shouldn't create a user-facing session log.
41
30
  */
42
31
  writeSession?: boolean;
32
+ /** Test seam — substitute a FakeSandbox. Defaults to the real factory. */
33
+ sandboxFactory?: SandboxFactory;
43
34
  }): Promise<ExecutionResult>;
@@ -1,19 +1,12 @@
1
- import { resolve, join } from "path";
2
- import { mkdirSync, writeFileSync } from "fs";
3
- import { spawnSync } from "child_process";
1
+ import { resolve } from "path";
4
2
  import { randomUUID } from "crypto";
5
- import { createTaskSandbox, setupTaskWorktree, prePopulateWorkspace, SANDBOX_IMAGE_QA, } from "../sandbox/index.js";
6
- import { SmolSandbox, smolAvailable, SMOL_WORKSPACE_DIR } from "../sandbox/smol.js";
7
3
  import { refreshGitAuth } from "./github/git-auth.js";
8
- import { GITHUB_PERMISSION_PROFILES, loadAgentContext, } from "./github/profiles.js";
9
- import { AgenticShim } from "./event-shim.js";
10
- import { projectSlugForCwd } from "../session-log.js";
11
- import { DEFAULT_ALLOWLIST, mergeAllowlist } from "../sandbox/egress-allowlist.js";
4
+ import { GITHUB_PERMISSION_PROFILES, } from "./github/profiles.js";
12
5
  import { getDockerSandboxOtelEnv, getOtelEnvForSandbox, safeSpanAttributes, withSpan } from "../telemetry/index.js";
13
- // Per-backend executors + their shared building blocks live under ./executors/.
14
- import { executeInProcess, executeDocker, executeSmol } from "./executors/backends.js";
15
- import { DEFAULT_MODEL, DOCKER_WORKSPACE_DIR, resolveSessionsDir } from "./executors/shared.js";
16
- // Re-exported for back-compat with existing importers (tests, dashboards).
6
+ import { DEFAULT_MODEL } from "./executors/shared.js";
7
+ import { runSandboxedAgent, runSandboxedCommand, } from "./executors/orchestrator.js";
8
+ // Re-exported for back-compat with existing importers (tests, dashboards,
9
+ // workflow phase executor).
17
10
  export { RunResultAccumulator, stageSkillBundle, excludeFromGit, detectAccountError } from "./executors/shared.js";
18
11
  /**
19
12
  * Shared run preparation for {@link executeAgent} and {@link executeCommand}:
@@ -140,144 +133,30 @@ export async function executeAgent(prompt, config, opts) {
140
133
  "workflow.name": config.telemetry?.workflowName,
141
134
  "phase.name": config.telemetry?.phaseName,
142
135
  });
143
- if (backend === "docker") {
144
- return withSpan("lastlight.agent.execute", spanAttrs, () => executeDocker(prompt, config, {
145
- taskId,
146
- stateDir,
147
- env: ghEnv,
148
- prePopulate,
149
- access,
150
- onSessionId: opts?.onSessionId,
151
- }));
152
- }
153
- if (backend === "smol") {
154
- return withSpan("lastlight.agent.execute", spanAttrs, () => executeSmol(prompt, config, {
155
- taskId,
156
- stateDir,
157
- env: ghEnv,
158
- prePopulate,
159
- access,
160
- onSessionId: opts?.onSessionId,
161
- }));
162
- }
163
- const workDir = setupTaskWorktree({
136
+ const ctx = {
137
+ config,
164
138
  taskId,
165
139
  stateDir,
166
- sandboxDir: config.sandboxDir,
167
- prePopulate,
168
- });
169
- // Drop AGENTS.md into the workspace — agentic-pi reads it as the
170
- // system context (same convention as the previous opencode setup).
171
- try {
172
- const md = loadAgentContext(config.agentContextDir);
173
- if (md)
174
- writeFileSync(join(workDir, "AGENTS.md"), md);
175
- }
176
- catch (err) {
177
- const msg = err instanceof Error ? err.message : String(err);
178
- console.warn(`[executor] Could not write AGENTS.md: ${msg}`);
179
- }
180
- return withSpan("lastlight.agent.execute", spanAttrs, () => executeInProcess(prompt, config, {
181
140
  backend,
182
- taskId,
183
- workDir,
184
- stateDir,
185
141
  env: ghEnv,
142
+ prePopulate,
186
143
  access,
187
144
  onSessionId: opts?.onSessionId,
188
- }));
189
- }
190
- const SCRIPT_EXT = { js: "mjs", ts: "mts", python: "py" };
191
- /**
192
- * Where a `type: script` source file is staged. A workspace-root sibling of
193
- * {@link SKILL_BUNDLE_ROOT}, keyed per phase (`<root>/<phase>/script.<ext>`) —
194
- * same convention as the skill bundle, so it sits beside the skills and is
195
- * never written inside any checked-out repo's git tree.
196
- */
197
- const SCRIPT_BUNDLE_ROOT = ".lastlight-scripts";
198
- /** Build the shell invocation + on-disk filename for a script spec. */
199
- function scriptInvocation(spec) {
200
- const fileName = `script.${SCRIPT_EXT[spec.runtime]}`;
201
- const run = (path) => {
202
- switch (spec.runtime) {
203
- case "js":
204
- return `node ${path}`;
205
- case "ts":
206
- return `node --experimental-strip-types ${path}`;
207
- case "python":
208
- return `uv run ${path}`;
209
- }
145
+ sandboxFactory: opts?.sandboxFactory,
210
146
  };
211
- return { fileName, run };
147
+ return withSpan("lastlight.agent.execute", spanAttrs, () => runSandboxedAgent(prompt, ctx));
212
148
  }
213
- /**
214
- * Mirror a finished command into a session jsonl via the shim. Synthesizes a
215
- * minimal agentic-pi event stream: session assistant(tool_use bash)
216
- * user(tool_result) assistant(text summary) result. Returns the session id
217
- * the shim wrote under (so the executions row can link to it).
218
- */
219
- async function writeCommandSession(opts) {
220
- const shim = new AgenticShim({
221
- homeDir: opts.sessionsDir,
222
- projectSlug: opts.projectSlug,
223
- model: opts.model,
224
- initialPrompt: opts.displayPrompt,
225
- });
226
- const sessionId = randomUUID();
227
- const ts = Date.now();
228
- const toolCallId = `cmd_${randomUUID().slice(0, 8)}`;
229
- const feed = (record) => shim.feed(record);
230
- feed({ type: "session", id: sessionId, timestamp: ts });
231
- feed({
232
- type: "message_end",
233
- sessionId,
234
- timestamp: ts,
235
- message: { role: "assistant", content: [{ type: "toolCall", id: toolCallId, name: opts.toolName, arguments: opts.toolInput }] },
236
- });
237
- const combined = opts.stderr ? `${opts.stdout}${opts.stdout && !opts.stdout.endsWith("\n") ? "\n" : ""}${opts.stderr}` : opts.stdout;
238
- feed({
239
- type: "tool_execution_end",
240
- sessionId,
241
- timestamp: ts,
242
- toolCallId,
243
- result: combined || `(no output, exit ${opts.exitCode})`,
244
- isError: opts.exitCode !== 0,
245
- });
246
- const summary = opts.exitCode === 0 ? "Command succeeded (exit 0)." : `Command failed (exit ${opts.exitCode}).`;
247
- feed({
248
- type: "message_end",
249
- sessionId,
250
- timestamp: ts,
251
- message: { role: "assistant", content: [{ type: "text", text: summary }] },
252
- });
253
- shim.finalize({
254
- finalText: summary,
255
- turns: 1,
256
- costUsd: 0,
257
- inputTokens: 0,
258
- outputTokens: 0,
259
- cacheReadInputTokens: 0,
260
- cacheCreationInputTokens: 0,
261
- stopReason: opts.exitCode === 0 ? "success" : "error_bash",
262
- durationMs: opts.durationMs,
263
- });
264
- await shim.flush();
265
- return shim.isInitialized ? sessionId : null;
266
- }
267
- /**
268
- * Execute a deterministic command/script. Mirrors {@link executeDocker} /
269
- * {@link executeInProcess} for sandbox setup but runs `runCommand` (docker) or
270
- * `spawnSync` (gondolin/none) instead of an agent, and writes a session jsonl
271
- * so the output is visible in the dashboard + CLI.
272
- */
149
+ // ── Deterministic command path (type: bash / type: script) ───────────
150
+ //
151
+ // Runs a deterministic shell command (or inline script) inside the SAME
152
+ // sandbox/workspace an agent phase would use — no LLM. The command's output is
153
+ // mirrored to a Claude-SDK-style session jsonl via the AgenticShim (the same
154
+ // shim agent phases use), so a bash/script phase shows up in the admin console
155
+ // and `lastlight session log` exactly like an agent turn: the command renders
156
+ // as a `bash` tool_use and its stdout/stderr as the tool_result.
273
157
  export async function executeCommand(spec, config, opts) {
274
158
  const { taskId, stateDir, backend, ghEnv, prePopulate } = await prepareRun(config, opts);
275
159
  const access = opts?.githubAccess;
276
- const model = config.model || DEFAULT_MODEL;
277
- const sessionsDir = resolveSessionsDir(config);
278
- const timeoutSeconds = opts?.timeoutSeconds ?? 300;
279
- const startTime = Date.now();
280
- const displayPrompt = spec.kind === "bash" ? `$ ${spec.command}` : `${spec.runtime} script: ${spec.name}\n\n${spec.script}`;
281
160
  const spanAttrs = safeSpanAttributes({
282
161
  "agent.runtime": spec.kind,
283
162
  "sandbox.backend": backend,
@@ -288,171 +167,21 @@ export async function executeCommand(spec, config, opts) {
288
167
  "workflow.name": config.telemetry?.workflowName,
289
168
  "phase.name": config.telemetry?.phaseName,
290
169
  });
291
- return withSpan("lastlight.command.execute", spanAttrs, async () => {
292
- // Per-phase script-bundle dir, a workspace-root sibling of the skill bundle
293
- // (and of any repo checkout) — so a `type: script` file is never written
294
- // inside the target's git tree. `spec.name` is the (sanitized) phase name.
295
- const scriptDir = spec.kind === "script" ? `${SCRIPT_BUNDLE_ROOT}/${spec.name}` : SCRIPT_BUNDLE_ROOT;
296
- if (backend === "docker") {
297
- const dnsIp = config.unrestrictedEgress
298
- ? (process.env.LASTLIGHT_DNS_OPEN || "172.30.0.11")
299
- : (process.env.LASTLIGHT_DNS_STRICT || "172.30.0.10");
300
- const imageName = config.sandboxImage === "qa" ? SANDBOX_IMAGE_QA : undefined;
301
- const sbx = await createTaskSandbox({
302
- taskId, stateDir, sandboxDir: config.sandboxDir, env: ghEnv, prePopulate, dnsIp, imageName,
303
- });
304
- if (!sbx) {
305
- throw new Error("LASTLIGHT_SANDBOX=docker but no docker sandbox was available for command phase.");
306
- }
307
- const agentCwd = prePopulate ? `${DOCKER_WORKSPACE_DIR}/${prePopulate.repo}` : DOCKER_WORKSPACE_DIR;
308
- try {
309
- let command;
310
- let toolName;
311
- let toolInput;
312
- if (spec.kind === "bash") {
313
- command = spec.command;
314
- toolName = "bash";
315
- toolInput = { command: spec.command };
316
- }
317
- else {
318
- const { fileName, run } = scriptInvocation(spec);
319
- mkdirSync(join(sbx.workDir, scriptDir), { recursive: true });
320
- writeFileSync(join(sbx.workDir, scriptDir, fileName), spec.script);
321
- const inContainer = `${DOCKER_WORKSPACE_DIR}/${scriptDir}/${fileName}`;
322
- command = run(inContainer);
323
- toolName = "bash";
324
- toolInput = { command, runtime: spec.runtime };
325
- }
326
- const res = await sbx.sandbox.runCommand(taskId, command, {
327
- cwd: agentCwd,
328
- sandboxEnv: opts?.sandboxEnv,
329
- timeoutSeconds,
330
- onLine: () => { },
331
- });
332
- const durationMs = Date.now() - startTime;
333
- const sessionId = opts?.writeSession === false ? null : await writeCommandSession({
334
- sessionsDir, projectSlug: projectSlugForCwd(agentCwd), model,
335
- displayPrompt, toolName, toolInput,
336
- stdout: res.stdout, stderr: res.stderr, exitCode: res.exitCode, durationMs,
337
- });
338
- if (sessionId && opts?.onSessionId)
339
- opts.onSessionId(sessionId);
340
- return buildCommandResult(res, durationMs, sessionId);
341
- }
342
- finally {
343
- await sbx.cleanup();
344
- }
345
- }
346
- if (backend === "smol") {
347
- if (!smolAvailable()) {
348
- throw new Error("LASTLIGHT_SANDBOX=smol but the smolvm CLI is not available for command phase.");
349
- }
350
- const allowHosts = config.unrestrictedEgress
351
- ? null
352
- : mergeAllowlist(DEFAULT_ALLOWLIST, config.otel?.enabled && config.otel.forwardToSandbox ? config.otel.collectorHosts : []);
353
- // Boot first, then provision the probed share-backed dir (see executeSmol).
354
- const workDir = setupTaskWorktree({ taskId, stateDir, sandboxDir: config.sandboxDir });
355
- const sandbox = new SmolSandbox({ env: ghEnv, allowHosts });
356
- const machine = await sandbox.create({ taskId, worktreePath: workDir });
357
- const hostWs = machine.hostWorkspace;
358
- if (prePopulate)
359
- prePopulateWorkspace(hostWs, prePopulate);
360
- const agentCwd = prePopulate ? `${SMOL_WORKSPACE_DIR}/${prePopulate.repo}` : SMOL_WORKSPACE_DIR;
361
- try {
362
- let command;
363
- let toolName;
364
- let toolInput;
365
- if (spec.kind === "bash") {
366
- command = spec.command;
367
- toolName = "bash";
368
- toolInput = { command: spec.command };
369
- }
370
- else {
371
- const { fileName, run } = scriptInvocation(spec);
372
- mkdirSync(join(hostWs, scriptDir), { recursive: true });
373
- writeFileSync(join(hostWs, scriptDir, fileName), spec.script);
374
- const inGuest = `${SMOL_WORKSPACE_DIR}/${scriptDir}/${fileName}`;
375
- command = run(inGuest);
376
- toolName = "bash";
377
- toolInput = { command, runtime: spec.runtime };
378
- }
379
- const res = await sandbox.runCommand(taskId, command, {
380
- cwd: agentCwd,
381
- sandboxEnv: opts?.sandboxEnv,
382
- timeoutSeconds,
383
- onLine: () => { },
384
- });
385
- const durationMs = Date.now() - startTime;
386
- const sessionId = opts?.writeSession === false ? null : await writeCommandSession({
387
- sessionsDir, projectSlug: projectSlugForCwd(agentCwd), model,
388
- displayPrompt, toolName, toolInput,
389
- stdout: res.stdout, stderr: res.stderr, exitCode: res.exitCode, durationMs,
390
- });
391
- if (sessionId && opts?.onSessionId)
392
- opts.onSessionId(sessionId);
393
- return buildCommandResult(res, durationMs, sessionId);
394
- }
395
- finally {
396
- await sandbox.destroy(taskId);
397
- }
398
- }
399
- // gondolin / none — run on the host worktree via spawnSync (the same
400
- // degraded model those backends already use; matches the pre-existing
401
- // host-side until_bash behaviour).
402
- const workDir = setupTaskWorktree({ taskId, stateDir, sandboxDir: config.sandboxDir, prePopulate });
403
- const agentCwd = access?.prePopulateBranch ? join(workDir, access.repo) : workDir;
404
- let command;
405
- let toolName = "bash";
406
- let toolInput;
407
- if (spec.kind === "bash") {
408
- command = spec.command;
409
- toolInput = { command: spec.command };
410
- }
411
- else {
412
- const { fileName, run } = scriptInvocation(spec);
413
- mkdirSync(join(workDir, scriptDir), { recursive: true });
414
- const filePath = join(workDir, scriptDir, fileName);
415
- writeFileSync(filePath, spec.script);
416
- command = run(filePath);
417
- toolInput = { command, runtime: spec.runtime };
418
- }
419
- const proc = spawnSync("sh", ["-c", command], {
420
- cwd: agentCwd,
421
- env: { ...process.env, ...ghEnv, ...(opts?.sandboxEnv ?? {}) },
422
- encoding: "utf-8",
423
- timeout: timeoutSeconds * 1000,
424
- maxBuffer: 256 * 1024 * 1024,
425
- });
426
- const durationMs = Date.now() - startTime;
427
- const exitCode = proc.status ?? (proc.signal ? 124 : 1);
428
- const res = { exitCode, stdout: proc.stdout ?? "", stderr: proc.stderr ?? "", timedOut: proc.signal === "SIGTERM" };
429
- const sessionId = opts?.writeSession === false ? null : await writeCommandSession({
430
- sessionsDir, projectSlug: projectSlugForCwd(agentCwd), model,
431
- displayPrompt, toolName, toolInput,
432
- stdout: res.stdout, stderr: res.stderr, exitCode: res.exitCode, durationMs,
433
- });
434
- if (sessionId && opts?.onSessionId)
435
- opts.onSessionId(sessionId);
436
- return buildCommandResult(res, durationMs, sessionId);
437
- });
438
- }
439
- /** Map a raw command result onto the ExecutionResult contract (turns 0, no cost). */
440
- function buildCommandResult(res, durationMs, sessionId) {
441
- const success = res.exitCode === 0;
442
- const combined = res.stderr ? `${res.stdout}${res.stdout && !res.stdout.endsWith("\n") ? "\n" : ""}${res.stderr}` : res.stdout;
443
- // Strip the trailing newline so the value substitutes cleanly into a
444
- // downstream command / `{{phaseOutputs.<name>}}` and can be forwarded as an
445
- // `LL_OUT_<PHASE>` env var (mirrors archon's "trailing newline removed"). The
446
- // full raw stdout/stderr is preserved verbatim in the session jsonl.
447
- const output = combined.replace(/\n+$/, "");
448
- return {
449
- success,
450
- output,
451
- turns: 0,
452
- durationMs,
453
- sessionId: sessionId ?? undefined,
454
- error: success ? undefined : res.timedOut ? `command timed out after ${Math.round(durationMs / 1000)}s` : `command exited ${res.exitCode}`,
455
- stopReason: success ? "success" : res.timedOut ? "error_timeout" : "error_bash",
170
+ const ctx = {
171
+ config,
172
+ taskId,
173
+ stateDir,
174
+ backend,
175
+ env: ghEnv,
176
+ prePopulate,
177
+ access,
178
+ onSessionId: opts?.onSessionId,
179
+ sandboxFactory: opts?.sandboxFactory,
456
180
  };
181
+ return withSpan("lastlight.command.execute", spanAttrs, () => runSandboxedCommand(spec, ctx, {
182
+ timeoutSeconds: opts?.timeoutSeconds,
183
+ sandboxEnv: opts?.sandboxEnv,
184
+ writeSession: opts?.writeSession,
185
+ }));
457
186
  }
458
187
  //# sourceMappingURL=agent-executor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-executor.js","sourceRoot":"","sources":["../../src/engine/agent-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-executor.js","sourceRoot":"","sources":["../../src/engine/agent-executor.ts"],"names":[],"mappings":"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"}
@@ -367,18 +367,42 @@ async function handlePrFix(context, handler, deps) {
367
367
  let prBody = context.body || "";
368
368
  let branch = "";
369
369
  let failedChecks = "";
370
+ let isForkPr = false;
371
+ let headRepoFullName = null;
370
372
  if (deps.github) {
371
373
  try {
372
374
  const pr = await deps.github.getPullRequest(owner, repo, prNumber);
373
375
  prTitle = prTitle || pr.title;
374
376
  prBody = prBody || pr.body || "";
375
377
  branch = pr.head.ref;
378
+ // Cross-repo (fork) PR detection. A fork PR's head branch lives on
379
+ // another repo we have no write access to, and its head ref isn't on
380
+ // this repo's origin — so there's nothing for pr-fix to clone or push
381
+ // to. Bail here, before any sandbox is provisioned. `head.repo` is null
382
+ // when the source fork was deleted; treat that as a fork too (the branch
383
+ // is gone either way).
384
+ headRepoFullName = pr.head.repo?.full_name ?? null;
385
+ const baseRepoFullName = pr.base.repo?.full_name ?? `${owner}/${repo}`;
386
+ isForkPr = headRepoFullName === null || headRepoFullName !== baseRepoFullName;
376
387
  failedChecks = await deps.github.getFailedChecks(owner, repo, pr.head.sha);
377
388
  }
378
389
  catch (err) {
379
390
  console.warn(`[event] Could not fetch PR: ${err.message}`);
380
391
  }
381
392
  }
393
+ if (isForkPr) {
394
+ console.log(`[event] pr-fix skipped: PR #${prNumber} is a fork PR ` +
395
+ `(head ${headRepoFullName ?? "deleted fork"} ≠ base ${owner}/${repo})`);
396
+ if (deps.github) {
397
+ const source = headRepoFullName ? `from \`${headRepoFullName}\`` : "from a now-deleted fork";
398
+ await deps.github
399
+ .postComment(owner, repo, prNumber, `I can't apply fixes to this PR — it comes ${source}, and I have no write access to the ` +
400
+ `source branch (nor is its head ref on \`${owner}/${repo}\`). Re-create the change on a ` +
401
+ `branch in \`${owner}/${repo}\` and I'll fix it there.`)
402
+ .catch((e) => console.warn(`[event] fork-PR notice comment failed: ${e instanceof Error ? e.message : String(e)}`));
403
+ }
404
+ return { kind: "ignored", reason: `pr-fix not supported for fork PR #${prNumber}` };
405
+ }
382
406
  if (!branch) {
383
407
  console.error(`[event] Could not determine branch for PR #${prNumber}`);
384
408
  return { kind: "ignored", reason: `could not determine branch for PR #${prNumber}` };