lastlight 0.7.5 → 0.7.6
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.
- package/config/default.yaml +1 -0
- package/dist/admin/auth.d.ts +25 -0
- package/dist/admin/auth.js +55 -10
- package/dist/admin/auth.js.map +1 -1
- package/dist/admin/routes.js +18 -1
- package/dist/admin/routes.js.map +1 -1
- package/dist/cli/cli-config.d.ts +9 -1
- package/dist/cli/cli-config.js +22 -0
- package/dist/cli/cli-config.js.map +1 -1
- package/dist/cli/cli.js +60 -4
- package/dist/cli/cli.js.map +1 -1
- package/dist/config/config.js +1 -0
- package/dist/config/config.js.map +1 -1
- package/dist/engine/dispatcher.js +19 -1
- package/dist/engine/dispatcher.js.map +1 -1
- package/dist/engine/executors/orchestrator.js +10 -1
- package/dist/engine/executors/orchestrator.js.map +1 -1
- package/dist/engine/github/github.d.ts +2 -0
- package/dist/engine/github/github.js +1 -0
- package/dist/engine/github/github.js.map +1 -1
- package/dist/engine/router.js +8 -4
- package/dist/engine/router.js.map +1 -1
- package/dist/engine/screen/classifier.js +8 -3
- package/dist/engine/screen/classifier.js.map +1 -1
- package/package.json +1 -1
- package/plugins/lastlight/.claude-plugin/plugin.json +1 -1
- package/plugins/lastlight/skills/lastlight-evals/SKILL.md +9 -1
- package/skills/pr-review/SKILL.md +81 -33
- package/skills/pr-review/references/findings-schema.md +95 -0
- package/workflows/pr-review.yaml +146 -0
package/dist/engine/router.js
CHANGED
|
@@ -279,6 +279,9 @@ export async function routeEvent(envelope, deps = {}) {
|
|
|
279
279
|
if (envelope.prNumber) {
|
|
280
280
|
// PR comments:
|
|
281
281
|
// build → pr-fix (full Architect→Executor→Reviewer fix loop)
|
|
282
|
+
// review → pr-review (a real formal review with inline comments —
|
|
283
|
+
// "can you review this?" should trigger an actual review,
|
|
284
|
+
// not a one-off Q&A answer)
|
|
282
285
|
// verify → verify (test a behavioural claim against the PR)
|
|
283
286
|
// qa-test → qa-test (drive a flow against the PR, step pass/fail)
|
|
284
287
|
// else → pr-comment (diff-aware Q&A; the issue-comment skill
|
|
@@ -286,10 +289,11 @@ export async function routeEvent(envelope, deps = {}) {
|
|
|
286
289
|
// "does this PR consider X?" with code-cited evidence)
|
|
287
290
|
// Explore isn't meaningful on PRs since the code already exists.
|
|
288
291
|
const { handler: prHandler, routeKey: prRouteKey } = intent === "build" ? { handler: gh.pr_fix || "pr-fix", routeKey: "github.pr_fix" }
|
|
289
|
-
: intent === "
|
|
290
|
-
: intent === "
|
|
291
|
-
: intent === "
|
|
292
|
-
: { handler: gh.
|
|
292
|
+
: intent === "review" ? { handler: gh.pr_review || "pr-review", routeKey: "github.pr_review" }
|
|
293
|
+
: intent === "verify" ? { handler: gh.verify || "verify", routeKey: "github.verify" }
|
|
294
|
+
: intent === "qa-test" ? { handler: gh.qa_test || "qa-test", routeKey: "github.qa_test" }
|
|
295
|
+
: intent === "demo" ? { handler: gh.demo || "demo", routeKey: "github.demo" }
|
|
296
|
+
: { handler: gh.pr_comment || "pr-comment", routeKey: "github.pr_comment" };
|
|
293
297
|
return {
|
|
294
298
|
action: "handler",
|
|
295
299
|
handler: prHandler,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/engine/router.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAC3G,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAmBhD,yEAAyE;AACzE,SAAS,kBAAkB,CAAC,IAAY;IACtC,OAAO,CACL,qCAAqC,IAAI,OAAO;QAChD,kBAAkB,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;QAC1E,yBAAyB,CAC1B,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,kBAAkB,CACzB,IAAwB,EACxB,YAAoB;IAEpB,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,CAAC;IACnF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;IACtF,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,+DAA+D;AAC/D,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;AAEtE,6CAA6C;AAC7C,MAAM,WAAW,GAAG,gBAAgB,CAAC;AAErC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,QAAuB,EACvB,OAAmB,EAAE;IAErB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;IACzB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3B,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,uEAAuE;YACvE,uEAAuE;YACvE,wEAAwE;YACxE,yEAAyE;YACzE,8DAA8D;YAC9D,MAAM,UAAU,GAAG,MAAM,uBAAuB,CAC9C,QAAQ,CAAC,KAAK,IAAI,EAAE,EACpB,QAAQ,CAAC,IAAI,IAAI,EAAE,CACpB,CAAC;YACF,OAAO,CAAC,GAAG,CACT,sBAAsB,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,WAAW,mBAAmB,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CACjH,CAAC;YACF,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,UAAU;oBACjB,CAAC,CAAC,EAAE,CAAC,YAAY,IAAI,QAAQ;oBAC7B,CAAC,CAAC,EAAE,CAAC,YAAY,IAAI,cAAc;gBACrC,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,WAAW,EAAE,QAAQ,CAAC,WAAW;oBACjC,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;iBACxB;aACF,CAAC;QACJ,CAAC;QAED,KAAK,gBAAgB;YACnB,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,EAAE,CAAC,cAAc,IAAI,cAAc;gBAC5C,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,WAAW,EAAE,QAAQ,CAAC,WAAW;oBACjC,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,QAAQ,EAAE,IAAI;iBACf;aACF,CAAC;QAEJ,KAAK,WAAW,CAAC;QACjB,KAAK,gBAAgB,CAAC;QACtB,KAAK,aAAa;YAChB,gEAAgE;YAChE,qEAAqE;YACrE,kEAAkE;YAClE,mEAAmE;YACnE,2CAA2C;YAC3C,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,EAAE,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,WAAW;gBAC/D,OAAO,EAAE;oBACP,SAAS,EAAE,aAAa,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;oBACrD,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;oBAC3B,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;iBACxB;aACF,CAAC;QAEJ,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,gEAAgE;YAChE,oEAAoE;YACpE,kEAAkE;YAClE,mEAAmE;YACnE,qCAAqC;YACrC,IAAI,IAAI,CAAC,EAAE,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACpC,MAAM,SAAS,GAAG,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;gBAC7D,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC;gBAC/E,IAAI,YAAY,EAAE,CAAC;oBACjB,OAAO;wBACL,MAAM,EAAE,SAAS;wBACjB,OAAO,EAAE,EAAE,CAAC,aAAa,IAAI,eAAe;wBAC5C,OAAO,EAAE;4BACP,IAAI,EAAE,QAAQ,CAAC,IAAI;4BACnB,WAAW,EAAE,QAAQ,CAAC,WAAW;4BACjC,MAAM,EAAE,QAAQ,CAAC,MAAM;4BACvB,KAAK,EAAE,QAAQ,CAAC,IAAI;4BACpB,aAAa,EAAE,YAAY,CAAC,aAAa;yBAC1C;qBACF,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,qEAAqE;YACrE,0EAA0E;YAC1E,oEAAoE;YACpE,kEAAkE;YAClE,uEAAuE;YACvE,mEAAmE;YACnE,sCAAsC;YACtC,IACE,IAAI,CAAC,EAAE;gBACP,QAAQ,CAAC,WAAW;gBACpB,CAAC,QAAQ,CAAC,QAAQ;gBAClB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAChC,CAAC;gBACD,MAAM,SAAS,GAAG,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;gBAC7D,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBACvE,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,MAAM,QAAQ,GACZ,CAAC,CAAC,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,WAAW,CAAC;oBACrE,MAAM,YAAY,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;oBAC5E,MAAM,YAAY,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;oBAEpE,IAAI,QAAQ,GAAG,KAAK,CAAC;oBACrB,IAAI,YAAY,IAAI,CAAC,QAAQ,IAAI,YAAY,CAAC,EAAE,CAAC;wBAC/C,uEAAuE;wBACvE,QAAQ,GAAG,IAAI,CAAC;oBAClB,CAAC;yBAAM,IAAI,QAAQ,EAAE,CAAC;wBACpB,mEAAmE;wBACnE,0DAA0D;wBAC1D,QAAQ,GAAG,MAAM,uBAAuB,CAAC,QAAQ,CAAC,IAAI,EAAE;4BACtD,UAAU,EAAE,QAAQ,CAAC,KAAK;yBAC3B,CAAC,CAAC;oBACL,CAAC;oBAED,IAAI,QAAQ,EAAE,CAAC;wBACb,OAAO,CAAC,GAAG,CACT,wBAAwB,SAAS,mCAAmC,CACrE,CAAC;wBACF,OAAO;4BACL,MAAM,EAAE,SAAS;4BACjB,OAAO,EAAE,EAAE,CAAC,YAAY,IAAI,cAAc;4BAC1C,OAAO,EAAE;gCACP,IAAI,EAAE,QAAQ,CAAC,IAAI;gCACnB,WAAW,EAAE,QAAQ,CAAC,WAAW;gCACjC,KAAK,EAAE,QAAQ,CAAC,KAAK;gCACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;gCACvB,WAAW,EAAE,QAAQ,CAAC,IAAI;gCAC1B,IAAI,EAAE,UAAU;6BACjB;yBACF,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAED,mCAAmC;YACnC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC;YACnE,CAAC;YAED,qEAAqE;YACrE,qEAAqE;YACrE,qBAAqB;YACrB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,iBAAiB,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC5D,OAAO;oBACL,MAAM,EAAE,OAAO;oBACf,OAAO,EACL,2BAA2B,QAAQ,CAAC,MAAM,IAAI;wBAC9C,oEAAoE;wBACpE,yEAAyE;iBAC5E,CAAC;YACJ,CAAC;YAED,wDAAwD;YACxD,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;YACrE,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACvE,IAAI,YAAY,IAAI,WAAW,EAAE,CAAC;gBAChC,OAAO;oBACL,MAAM,EAAE,SAAS;oBACjB,OAAO,EAAE,EAAE,CAAC,iBAAiB,IAAI,mBAAmB;oBACpD,OAAO,EAAE;wBACP,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,WAAW,EAAE,QAAQ,CAAC,WAAW;wBACjC,MAAM,EAAE,QAAQ,CAAC,MAAM;wBACvB,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU;wBAChD,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,SAAS;qBACrE;iBACF,CAAC;YACJ,CAAC;YAED,iEAAiE;YACjE,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;YAC9E,IAAI,aAAa,EAAE,CAAC;gBAClB,OAAO;oBACL,MAAM,EAAE,SAAS;oBACjB,OAAO,EAAE,EAAE,CAAC,eAAe,IAAI,iBAAiB;oBAChD,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE;iBACnF,CAAC;YACJ,CAAC;YAED,qEAAqE;YACrE,iEAAiE;YACjE,0EAA0E;YAC1E,gEAAgE;YAChE,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;YAC5E,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO;oBACL,MAAM,EAAE,SAAS;oBACjB,OAAO,EAAE,EAAE,CAAC,MAAM,IAAI,QAAQ;oBAC9B,OAAO,EAAE;wBACP,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,WAAW,EAAE,QAAQ,CAAC,WAAW;wBACjC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC7D,KAAK,EAAE,QAAQ,CAAC,KAAK;wBACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;wBACvB,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,IAAI;qBACpD;iBACF,CAAC;YACJ,CAAC;YACD,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YAC7E,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO;oBACL,MAAM,EAAE,SAAS;oBACjB,OAAO,EAAE,EAAE,CAAC,OAAO,IAAI,SAAS;oBAChC,OAAO,EAAE;wBACP,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,WAAW,EAAE,QAAQ,CAAC,WAAW;wBACjC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC7D,KAAK,EAAE,QAAQ,CAAC,KAAK;wBACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;wBACvB,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,IAAI;qBACpD;iBACF,CAAC;YACJ,CAAC;YACD,sEAAsE;YACtE,uEAAuE;YACvE,yEAAyE;YACzE,iDAAiD;YACjD,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;YACxE,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO;oBACL,MAAM,EAAE,SAAS;oBACjB,OAAO,EAAE,EAAE,CAAC,IAAI,IAAI,MAAM;oBAC1B,OAAO,EAAE;wBACP,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,WAAW,EAAE,QAAQ,CAAC,WAAW;wBACjC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC7D,KAAK,EAAE,QAAQ,CAAC,KAAK;wBACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;wBACvB,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,IAAI;qBAClD;iBACF,CAAC;YACJ,CAAC;YAED,sEAAsE;YACtE,wEAAwE;YACxE,6EAA6E;YAC7E,yBAAyB;YACzB,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAC7C,eAAe,CAAC,QAAQ,CAAC,IAAI,EAAE;oBAC7B,UAAU,EAAE,QAAQ,CAAC,KAAK;oBAC1B,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ;iBACnC,CAAC;gBACF,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC;aAClC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CACT,mCAAmC,MAAM,EAAE;gBAC3C,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,MAAM,CAAC,MAAM,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAC/E,CAAC;YAEF,kEAAkE;YAClE,mEAAmE;YACnE,oEAAoE;YACpE,uCAAuC;YACvC,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO;gBAChC,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE;gBAChD,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;YAElB,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACtB,eAAe;gBACf,kEAAkE;gBAClE,gEAAgE;gBAChE,qEAAqE;gBACrE,mEAAmE;gBACnE,iEAAiE;gBACjE,oEAAoE;gBACpE,iEAAiE;gBACjE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,GAChD,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,MAAM,IAAI,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE;oBAClF,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,MAAM,IAAI,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE;wBACrF,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,IAAI,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE;4BACzF,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,IAAI,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE;gCAC7E,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,UAAU,IAAI,YAAY,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC;gBAC9E,OAAO;oBACL,MAAM,EAAE,SAAS;oBACjB,OAAO,EAAE,SAAS;oBAClB,OAAO,EAAE;wBACP,SAAS,EAAE,UAAU;wBACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;wBAC3B,WAAW,EAAE,QAAQ,CAAC,WAAW;wBACjC,KAAK,EAAE,QAAQ,CAAC,KAAK;wBACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;wBACvB,WAAW;qBACZ;iBACF,CAAC;YACJ,CAAC;YAED,+DAA+D;YAC/D,sEAAsE;YACtE,6BAA6B;YAC7B,EAAE;YACF,oEAAoE;YACpE,wEAAwE;YACxE,uEAAuE;YACvE,qEAAqE;YACrE,oEAAoE;YACpE,EAAE;YACF,qEAAqE;YACrE,uEAAuE;YACvE,oEAAoE;YACpE,kEAAkE;YAClE,MAAM,mBAAmB,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YAC9E,IAAI,mBAAmB,EAAE,CAAC;gBACxB,OAAO;oBACL,MAAM,EAAE,SAAS;oBACjB,OAAO,EAAE,EAAE,CAAC,iBAAiB,IAAI,mBAAmB;oBACpD,OAAO,EAAE;wBACP,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,WAAW,EAAE,QAAQ,CAAC,WAAW;wBACjC,KAAK,EAAE,QAAQ,CAAC,KAAK;wBACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;wBACvB,WAAW;qBACZ;iBACF,CAAC;YACJ,CAAC;YACD,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,GACpD,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,IAAI,qBAAqB,EAAE,QAAQ,EAAE,oBAAoB,EAAE;gBACzG,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,aAAa,IAAI,SAAS,EAAE,QAAQ,EAAE,sBAAsB,EAAE;oBACrG,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,MAAM,IAAI,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE;wBACrF,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,IAAI,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE;4BACzF,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,IAAI,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE;gCAC7E,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,aAAa,IAAI,eAAe,EAAE,QAAQ,EAAE,sBAAsB,EAAE,CAAC;YACvF,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE;oBACP,SAAS,EAAE,aAAa;oBACxB,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,WAAW,EAAE,QAAQ,CAAC,WAAW;oBACjC,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,WAAW;iBACZ;aACF,CAAC;QACJ,CAAC;QAED,KAAK,qBAAqB,CAAC;QAC3B,KAAK,2BAA2B;YAC9B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,kCAAkC,EAAE,CAAC;QAE1E,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAA0C,CAAC;YAChE,MAAM,SAAS,GAAG,GAAG,EAAE,SAA+B,CAAC;YACvD,MAAM,QAAQ,GAAG,GAAG,EAAE,QAA8B,CAAC;YACrD,MAAM,MAAM,GAAI,GAAG,EAAE,IAA2B,IAAK,GAAG,EAAE,OAA8B,IAAI,OAAO,CAAC;YACpG,MAAM,cAAc,GAAG,SAAS,IAAI,QAAQ;gBAC1C,CAAC,CAAC,SAAS,MAAM,IAAI,SAAS,IAAI,QAAQ,EAAE;gBAC5C,CAAC,CAAC,SAAS,CAAC;YAEd,gEAAgE;YAChE,iEAAiE;YACjE,kEAAkE;YAClE,+CAA+C;YAC/C,IAAI,IAAI,CAAC,EAAE,IAAI,cAAc,EAAE,CAAC;gBAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,4BAA4B,CAAC,cAAc,CAAC,CAAC;gBACpF,IAAI,YAAY,EAAE,CAAC;oBACjB,OAAO;wBACL,MAAM,EAAE,SAAS;wBACjB,OAAO,EAAE,KAAK,CAAC,aAAa,IAAI,eAAe;wBAC/C,OAAO,EAAE;4BACP,MAAM,EAAE,QAAQ,CAAC,MAAM;4BACvB,KAAK,EAAE,IAAI;4BACX,aAAa,EAAE,YAAY,CAAC,aAAa;4BACzC,MAAM,EAAE,QAAQ,CAAC,MAAM;4BACvB,SAAS,EAAE,cAAc;4BACzB,SAAS;4BACT,QAAQ;yBACT;qBACF,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,gEAAgE;YAChE,oEAAoE;YACpE,wEAAwE;YACxE,uEAAuE;YACvE,qDAAqD;YACrD,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACjD,eAAe,CAAC,IAAI,CAAC;gBACrB,kBAAkB,CAAC,IAAI,CAAC;aACzB,CAAC,CAAC;YACH,MAAM,EACJ,MAAM,EACN,IAAI,EAAE,cAAc,EACpB,WAAW,EAAE,eAAe,EAC5B,MAAM,EAAE,gBAAgB,GACzB,GAAG,cAAc,CAAC;YACnB,OAAO,CAAC,GAAG,CACT,yCAAyC,MAAM,EAAE;gBACjD,GAAG,cAAc,CAAC,CAAC,CAAC,WAAW,cAAc,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACvD,GAAG,eAAe,CAAC,CAAC,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACpD,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB,MAAM,CAAC,MAAM,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAC/E,CAAC;YAEF,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAEhF,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,OAAO;oBACV,OAAO;wBACL,MAAM,EAAE,SAAS;wBACjB,OAAO,EAAE,KAAK,CAAC,KAAK,IAAI,YAAY;wBACpC,OAAO,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE;qBACzF,CAAC;gBAEJ,KAAK,QAAQ;oBACX,OAAO;wBACL,MAAM,EAAE,SAAS;wBACjB,OAAO,EAAE,KAAK,CAAC,MAAM,IAAI,eAAe;wBACxC,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE;qBAC9D,CAAC;gBAEJ,KAAK,SAAS;oBACZ,OAAO;wBACL,MAAM,EAAE,SAAS;wBACjB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,mBAAmB;wBAC7C,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE;qBACpF,CAAC;gBAEJ,KAAK,QAAQ;oBACX,OAAO;wBACL,MAAM,EAAE,SAAS;wBACjB,OAAO,EAAE,KAAK,CAAC,MAAM,IAAI,mBAAmB;wBAC5C,OAAO,EAAE;4BACP,MAAM,EAAE,QAAQ,CAAC,MAAM;4BACvB,QAAQ,EAAE,UAAU;4BACpB,MAAM,EAAE,gBAAgB;4BACxB,MAAM,EAAE,QAAQ,CAAC,MAAM;yBACxB;qBACF,CAAC;gBAEJ,KAAK,OAAO,CAAC,CAAC,CAAC;oBACb,+DAA+D;oBAC/D,gEAAgE;oBAChE,4DAA4D;oBAC5D,IAAI,CAAC,cAAc,EAAE,CAAC;wBACpB,OAAO;4BACL,MAAM,EAAE,SAAS;4BACjB,OAAO,EAAE,KAAK,CAAC,IAAI,IAAI,MAAM;4BAC7B,OAAO,EAAE;gCACP,SAAS,EAAE,GAAG,EAAE,SAAS;gCACzB,OAAO,EAAE,SAAS;gCAClB,MAAM,EAAE,QAAQ,CAAC,MAAM;gCACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;6BACxB;yBACF,CAAC;oBACJ,CAAC;oBACD,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC;wBACnC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,CAAC,cAAc,CAAC,EAAE,CAAC;oBAC1E,CAAC;oBACD,OAAO;wBACL,MAAM,EAAE,SAAS;wBACjB,OAAO,EAAE,KAAK,CAAC,KAAK,IAAI,qBAAqB;wBAC7C,OAAO,EAAE;4BACP,SAAS,EAAE,aAAa;4BACxB,IAAI,EAAE,cAAc;4BACpB,WAAW,EAAE,eAAe;4BAC5B,MAAM,EAAE,QAAQ,CAAC,MAAM;4BACvB,WAAW,EAAE,SAAS;4BACtB,MAAM,EAAE,QAAQ,CAAC,MAAM;yBACxB;qBACF,CAAC;gBACJ,CAAC;gBAED,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACd,MAAM,IAAI,GAAG,kBAAkB,CAC7B,cAAc,EACd,yDAAyD,CAC1D,CAAC;oBACF,IAAI,CAAC,IAAI,CAAC,EAAE;wBAAE,OAAO,IAAI,CAAC,KAAK,CAAC;oBAChC,OAAO;wBACL,MAAM,EAAE,SAAS;wBACjB,OAAO,EAAE,KAAK,CAAC,MAAM,IAAI,cAAc;wBACvC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE;qBAC/E,CAAC;gBACJ,CAAC;gBAED,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACd,MAAM,IAAI,GAAG,kBAAkB,CAC7B,cAAc,EACd,iEAAiE,CAClE,CAAC;oBACF,IAAI,CAAC,IAAI,CAAC,EAAE;wBAAE,OAAO,IAAI,CAAC,KAAK,CAAC;oBAChC,OAAO;wBACL,MAAM,EAAE,SAAS;wBACjB,OAAO,EAAE,KAAK,CAAC,MAAM,IAAI,WAAW;wBACpC,OAAO,EAAE;4BACP,IAAI,EAAE,IAAI,CAAC,IAAI;4BACf,QAAQ,EAAE,eAAe;4BACzB,WAAW,EAAE,eAAe;4BAC5B,MAAM,EAAE,QAAQ,CAAC,MAAM;4BACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;yBACxB;qBACF,CAAC;gBACJ,CAAC;gBAED,KAAK,UAAU,CAAC,CAAC,CAAC;oBAChB,MAAM,IAAI,GAAG,kBAAkB,CAC7B,cAAc,EACd,gEAAgE,CACjE,CAAC;oBACF,IAAI,CAAC,IAAI,CAAC,EAAE;wBAAE,OAAO,IAAI,CAAC,KAAK,CAAC;oBAChC,OAAO;wBACL,MAAM,EAAE,SAAS;wBACjB,OAAO,EAAE,KAAK,CAAC,QAAQ,IAAI,iBAAiB;wBAC5C,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE;qBAC/E,CAAC;gBACJ,CAAC;gBAED,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACd,MAAM,IAAI,GAAG,kBAAkB,CAC7B,cAAc,EACd,kGAAkG,CACnG,CAAC;oBACF,IAAI,CAAC,IAAI,CAAC,EAAE;wBAAE,OAAO,IAAI,CAAC,KAAK,CAAC;oBAChC,OAAO;wBACL,MAAM,EAAE,SAAS;wBACjB,OAAO,EAAE,KAAK,CAAC,MAAM,IAAI,QAAQ;wBACjC,OAAO,EAAE;4BACP,IAAI,EAAE,IAAI,CAAC,IAAI;4BACf,WAAW,EAAE,eAAe;4BAC5B,MAAM,EAAE,QAAQ,CAAC,MAAM;4BACvB,WAAW,EAAE,SAAS;4BACtB,MAAM,EAAE,QAAQ,CAAC,MAAM;4BACvB,SAAS,EAAE,cAAc;4BACzB,SAAS;4BACT,QAAQ;yBACT;qBACF,CAAC;gBACJ,CAAC;gBAED,KAAK,SAAS,CAAC,CAAC,CAAC;oBACf,MAAM,IAAI,GAAG,kBAAkB,CAC7B,cAAc,EACd,yFAAyF,CAC1F,CAAC;oBACF,IAAI,CAAC,IAAI,CAAC,EAAE;wBAAE,OAAO,IAAI,CAAC,KAAK,CAAC;oBAChC,OAAO;wBACL,MAAM,EAAE,SAAS;wBACjB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,SAAS;wBACnC,OAAO,EAAE;4BACP,IAAI,EAAE,IAAI,CAAC,IAAI;4BACf,WAAW,EAAE,eAAe;4BAC5B,MAAM,EAAE,QAAQ,CAAC,MAAM;4BACvB,WAAW,EAAE,SAAS;4BACtB,MAAM,EAAE,QAAQ,CAAC,MAAM;4BACvB,SAAS,EAAE,cAAc;4BACzB,SAAS;4BACT,QAAQ;yBACT;qBACF,CAAC;gBACJ,CAAC;gBAED,KAAK,UAAU,CAAC,CAAC,CAAC;oBAChB,sEAAsE;oBACtE,mEAAmE;oBACnE,qEAAqE;oBACrE,uEAAuE;oBACvE,IAAI,CAAC,cAAc,EAAE,CAAC;wBACpB,OAAO;4BACL,MAAM,EAAE,SAAS;4BACjB,OAAO,EAAE,KAAK,CAAC,IAAI,IAAI,MAAM;4BAC7B,OAAO,EAAE;gCACP,SAAS,EAAE,GAAG,EAAE,SAAS;gCACzB,OAAO,EAAE,SAAS;gCAClB,MAAM,EAAE,QAAQ,CAAC,MAAM;gCACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;6BACxB;yBACF,CAAC;oBACJ,CAAC;oBACD,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC;wBACnC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,CAAC,cAAc,CAAC,EAAE,CAAC;oBAC1E,CAAC;oBACD,OAAO;wBACL,MAAM,EAAE,SAAS;wBACjB,OAAO,EAAE,KAAK,CAAC,MAAM,IAAI,QAAQ;wBACjC,OAAO,EAAE;4BACP,IAAI,EAAE,cAAc;4BACpB,WAAW,EAAE,eAAe;4BAC5B,MAAM,EAAE,QAAQ,CAAC,MAAM;4BACvB,WAAW,EAAE,SAAS;4BACtB,MAAM,EAAE,QAAQ,CAAC,MAAM;4BACvB,SAAS,EAAE,cAAc;4BACzB,SAAS;4BACT,QAAQ;yBACT;qBACF,CAAC;gBACJ,CAAC;gBAED,KAAK,SAAS,CAAC,CAAC,CAAC;oBACf,MAAM,IAAI,GAAG,kBAAkB,CAC7B,cAAc,EACd,qFAAqF;wBACnF,oEAAoE;wBACpE,wDAAwD,CAC3D,CAAC;oBACF,IAAI,CAAC,IAAI,CAAC,EAAE;wBAAE,OAAO,IAAI,CAAC,KAAK,CAAC;oBAChC,OAAO;wBACL,MAAM,EAAE,SAAS;wBACjB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,SAAS;wBACnC,OAAO,EAAE;4BACP,IAAI,EAAE,IAAI,CAAC,IAAI;4BACf,WAAW,EAAE,eAAe;4BAC5B,MAAM,EAAE,QAAQ,CAAC,MAAM;4BACvB,WAAW,EAAE,SAAS;4BACtB,MAAM,EAAE,QAAQ,CAAC,MAAM;4BACvB,SAAS,EAAE,cAAc;4BACzB,SAAS;4BACT,QAAQ;yBACT;qBACF,CAAC;gBACJ,CAAC;gBAED;oBACE,8BAA8B;oBAC9B,OAAO;wBACL,MAAM,EAAE,SAAS;wBACjB,OAAO,EAAE,KAAK,CAAC,IAAI,IAAI,MAAM;wBAC7B,OAAO,EAAE;4BACP,SAAS,EAAE,GAAG,EAAE,SAAS;4BACzB,OAAO,EAAE,SAAS;4BAClB,MAAM,EAAE,QAAQ,CAAC,MAAM;4BACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;yBACxB;qBACF,CAAC;YACN,CAAC;QACH,CAAC;QAED;YACE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,yBAAyB,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;IAClF,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/engine/router.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ BUILD — The user is ASKING YOU (the bot) to make code changes NOW in a GitHub
|
|
|
15
15
|
EXPLORE — The user wants help shaping an idea BEFORE writing code: "help me think through X", "brainstorm Y", "spec this out", "explore an idea for Z". A bare "explore" / "explore this" / "let's explore" is also EXPLORE — especially as a reply on an existing issue (ISSUE TITLE present), where the implicit object is the issue's idea. EXPLORE = shape the idea / write a spec; BUILD = write the code now.
|
|
16
16
|
QUESTION — The user is asking a substantive INFORMATIONAL question that warrants research to answer well: "how does X work?", "what's the difference between X and Y?", "how does <repo> compare to <other tool>?", "is it possible to do Z?", "why does X happen?". The deliverable is an ANSWER, not code and not a spec. QUESTION is for real questions that benefit from reading docs/code or searching the web — NOT casual chat, thanks, or one-word replies (those stay CHAT). EXPLORE shapes a NEW idea into a spec; QUESTION answers an EXISTING question about how something works or compares.
|
|
17
17
|
TRIAGE — The user wants to scan/triage issues on a repo: "triage cliftonc/repo", "scan for new issues", "can you triage <repo>?".
|
|
18
|
-
REVIEW — The user wants
|
|
18
|
+
REVIEW — The user wants a code review. Either repo-wide ("review cliftonc/repo", "check PRs", "can you review PRs on <repo>?") OR, when the comment is a reply on a PR (ISSUE TITLE present), a request to review THIS PR: "review this", "can you review this?", "please review", "take a look at this PR", "give this a review". The deliverable is a formal PR review (inline comments on the diff). Prefer REVIEW over CHAT whenever there's a clear "review"/"take a look" request on a PR.
|
|
19
19
|
SECURITY — The user wants a security scan/review of a repo: "security review cliftonc/repo", "scan for vulnerabilities", "check security", "can you do a security review of <repo>?".
|
|
20
20
|
VERIFY — The user wants you to TEST whether a specific claim or behaviour is actually true and report the evidence: "verify that the rate limiter blocks", "does this PR really fix the crash?", "confirm X actually works", "check that Y no longer happens", "prove the --fork flag creates a new session". The deliverable is a CONFIRMED/REFUTED verdict backed by RUNNING the code — not a code change and not a code-quality review. Prefer VERIFY over REVIEW when the user wants proof a behaviour works/is fixed, rather than an assessment of the diff.
|
|
21
21
|
QATEST — The user wants you to drive an app or CLI through a flow and report step-level pass/fail: "qa test the signup flow", "run through login and tell me what breaks", "smoke-test the CLI commands", "exercise the checkout flow". The deliverable is a step-by-step QA report. Prefer QATEST over VERIFY when it's a multi-step flow to exercise rather than a single claim to confirm.
|
|
@@ -51,8 +51,11 @@ a clear command directed at the issue's subject:
|
|
|
51
51
|
this", "make it so" → BUILD (write the code now).
|
|
52
52
|
- "explore", "explore this", "let's explore", "think this through", "spec this
|
|
53
53
|
out", "brainstorm this" → EXPLORE (shape the idea / write a spec first).
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
- "review this", "can you review this", "please review", "take a look",
|
|
55
|
+
"give this a review" → REVIEW (do a real code review now; on a PR this means
|
|
56
|
+
review the current PR's diff).
|
|
57
|
+
A bare command word ("explore", "build", "review") on an existing issue/PR is a
|
|
58
|
+
clear command, NOT ambiguous chat.
|
|
56
59
|
This verb rule is for IMPERATIVE requests only. A PR/issue reply that REPORTS
|
|
57
60
|
already-completed work or responds to your review — "thanks, fixed in <sha>",
|
|
58
61
|
"addressed in commit abc123", "done, added a regression test", "this is
|
|
@@ -93,6 +96,8 @@ Examples:
|
|
|
93
96
|
"can you do a security review of https://github.com/cliftonc/lastlight" → INTENT: SECURITY, REPO: cliftonc/lastlight, ISSUE: NONE, REASON: NONE
|
|
94
97
|
"could you triage https://github.com/foo/bar?" → INTENT: TRIAGE, REPO: foo/bar, ISSUE: NONE, REASON: NONE
|
|
95
98
|
"please review https://github.com/foo/bar/pull/42" → INTENT: REVIEW, REPO: foo/bar, ISSUE: 42, REASON: NONE
|
|
99
|
+
"can you review this?" with ISSUE TITLE "Add HTML sanitizer for messages" → INTENT: REVIEW, REPO: NONE, ISSUE: NONE, REASON: NONE
|
|
100
|
+
"take a look at this PR when you get a chance" with ISSUE TITLE "Port fastify adapter" → INTENT: REVIEW, REPO: NONE, ISSUE: NONE, REASON: NONE
|
|
96
101
|
"scan https://github.com/cliftonc/lastlight for vulnerabilities" → INTENT: SECURITY, REPO: cliftonc/lastlight, ISSUE: NONE, REASON: NONE
|
|
97
102
|
"delete any files in ~/work/lastlight/docs" → INTENT: CHAT, REPO: NONE, ISSUE: NONE, REASON: NONE
|
|
98
103
|
"can you remove the old docs folder for me" (no ISSUE TITLE, no repo) → INTENT: CHAT, REPO: NONE, ISSUE: NONE, REASON: NONE
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classifier.js","sourceRoot":"","sources":["../../../src/engine/screen/classifier.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,gBAAgB,IAAI,oBAAoB,EAAqB,MAAM,WAAW,CAAC;AA0C1G,MAAM,iBAAiB,GAAG
|
|
1
|
+
{"version":3,"file":"classifier.js","sourceRoot":"","sources":["../../../src/engine/screen/classifier.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,gBAAgB,IAAI,oBAAoB,EAAqB,MAAM,WAAW,CAAC;AA0C1G,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uGA+F6E,CAAC;AAExG;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,IAAY;IAEZ,yDAAyD;IACzD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAC3B,8DAA8D,CAC/D,CAAC;IACF,IAAI,UAAU,EAAE,CAAC;QACf,OAAO;YACL,IAAI,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;YACxD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;SACzC,CAAC;IACJ,CAAC;IACD,2EAA2E;IAC3E,2DAA2D;IAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;IAC5E,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC1D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,yEAAyE;IACzE,0CAA0C;IAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;gEAiBkC,CAAC;AAEjE;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,KAAa,EACb,IAAY,EACZ,UAA6B,EAAE;IAE/B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC;QACtC,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,oBAAoB,CAAC;QAC1E,MAAM,MAAM,GAAG,MAAM,IAAI,CACvB,OAAO,CAAC,KAAK,IAAI,gBAAgB,CAAC,YAAY,CAAC,EAC/C;YACE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,EAAE;YAClD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,KAAK,aAAa,IAAI,EAAE,EAAE;SAC9D,EACD,EAAE,SAAS,EAAE,EAAE,EAAE,CAClB,CAAC;QACF,OAAO,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,yCAAyC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACtE,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;kEAgByC,CAAC;AAEnE;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,WAAmB,EACnB,UAA6B,EAAE,EAC/B,UAA6B,EAAE;IAE/B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC;QACtC,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,oBAAoB,CAAC;QAC1E,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU;YACnC,CAAC,CAAC,gBAAgB,OAAO,CAAC,UAAU,gBAAgB,WAAW,EAAE;YACjE,CAAC,CAAC,YAAY,WAAW,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,IAAI,CACvB,OAAO,CAAC,KAAK,IAAI,gBAAgB,CAAC,YAAY,CAAC,EAC/C;YACE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE;YAC7C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE;SACtC,EACD,EAAE,SAAS,EAAE,EAAE,EAAE,CAClB,CAAC;QACF,OAAO,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,gDAAgD,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7E,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,WAAmB,EACnB,OAA2B,EAC3B,UAAsC,EAAE;IAExC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU;YACpC,CAAC,CAAC,kDAAkD,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,sBAAsB,OAAO,CAAC,UAAU,gBAAgB,WAAW,EAAE;YAC/J,CAAC,CAAC,6BAA6B,WAAW,EAAE,CAAC;QAE/C,MAAM,eAAe,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QACnF,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,IAAI,QAAQ,CAAC;QAC9C,MAAM,gBAAgB,GAAG,eAAe,CAAC,gBAAgB,IAAI,oBAAoB,CAAC;QAClF,MAAM,MAAM,GAAG,MAAM,IAAI,CACvB,eAAe,CAAC,KAAK,IAAI,gBAAgB,CAAC,YAAY,CAAC,EACvD;YACE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE;YAC9C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE;SACtC,EACD,EAAE,SAAS,EAAE,GAAG,EAAE,CACnB,CAAC;QAEF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE1C,MAAM,SAAS,GAAkC;YAC/C,KAAK,EAAE,OAAO;YACd,OAAO,EAAE,SAAS;YAClB,QAAQ,EAAE,UAAU;YACpB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,UAAU;YACpB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,SAAS;YACjB,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,SAAS;YAClB,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,MAAM;SACb,CAAC;QAEF,oBAAoB;QACpB,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACnD,MAAM,MAAM,GAAkB,WAAW;YACvC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;YACvC,CAAC,CAAC,MAAM,CAAC;QAEX,sEAAsE;QACtE,qEAAqE;QACrE,uDAAuD;QACvD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC7D,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACnD,IAAI,IAAI,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACvE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,QAAQ,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAC;YACvD,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;gBACrB,IAAI,WAAW,KAAK,SAAS,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;oBACpE,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;gBACrC,CAAC;YACH,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,WAAW,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,MAAM;YAC1E,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YACvB,CAAC,CAAC,SAAS,CAAC;QAEd,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;IAC/C,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,2CAA2C,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACxE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json.schemastore.org/claude-code-plugin.json",
|
|
3
3
|
"name": "lastlight",
|
|
4
4
|
"displayName": "Last Light",
|
|
5
|
-
"version": "0.7.
|
|
5
|
+
"version": "0.7.6",
|
|
6
6
|
"description": "Install, configure and operate Last Light (GitHub maintenance agent) — its server, CLI client, deployment overlay, and the Last Light Evals harness.",
|
|
7
7
|
"author": { "name": "Clifton Cunningham" },
|
|
8
8
|
"homepage": "https://github.com/cliftonc/lastlight",
|
|
@@ -20,6 +20,10 @@ compatible. **Node 24+.**
|
|
|
20
20
|
node --version # need >= 24
|
|
21
21
|
command -v lastlight-evals >/dev/null && echo "installed" || npm i -g lastlight-evals
|
|
22
22
|
lastlight-evals --version # prints the evals version + the bundled lastlight core version
|
|
23
|
+
# Optional: for `--sandbox gondolin` (isolate the agent in a QEMU micro-VM so it
|
|
24
|
+
# can't read host gold data) you also need QEMU natively: `brew install qemu`
|
|
25
|
+
# (macOS) or your distro's `qemu-system` package. The default `--sandbox none`
|
|
26
|
+
# needs nothing extra.
|
|
23
27
|
```
|
|
24
28
|
|
|
25
29
|
## 2. Scaffold a workspace
|
|
@@ -99,6 +103,9 @@ lastlight-evals run --compare # cross-vendor set (only models
|
|
|
99
103
|
lastlight-evals run triage --runs 3 # repeat each case 3× (worst-case verdict, mean metrics)
|
|
100
104
|
lastlight-evals run pr-review --limit 3 # only the first 3 cases of the tier (controlled/cheap run)
|
|
101
105
|
lastlight-evals run triage --instance <id> # only this exact instance_id (or set EVAL_INSTANCE)
|
|
106
|
+
lastlight-evals run pr-review --f-beta 0.5 # pr-review F-beta β (default 1=F1; 0.5=precision 2×). Or EVAL_F_BETA
|
|
107
|
+
lastlight-evals run pr-review --judge-with-diff # feed the PR diff to the judge (higher fidelity; off by default)
|
|
108
|
+
lastlight-evals run pr-review --sandbox gondolin # isolate the agent's tools in a QEMU micro-VM (anti-spoil). Or EVAL_SANDBOX
|
|
102
109
|
lastlight-evals run triage --no-open # don't open the report
|
|
103
110
|
# Plain layout: add --overlay . (e.g. lastlight-evals run triage --overlay .)
|
|
104
111
|
|
|
@@ -123,7 +130,8 @@ or `--delete` removes the run dir.
|
|
|
123
130
|
|
|
124
131
|
Three tiers ship: **triage** (cheap, issue-triage), **code-fix** (heavy, build
|
|
125
132
|
workflow with held-out tests), and **pr-review** (PR-review precision, graded by
|
|
126
|
-
an LLM judge against a gold set → precision / recall / **
|
|
133
|
+
an LLM judge against a gold set → precision / recall / **F1** by default, the
|
|
134
|
+
F-beta configurable via `EVAL_F_BETA`). To add cases or
|
|
127
135
|
a custom tier, read **`references/instance-schema.md`** — it has the
|
|
128
136
|
`SweBenchInstance` schema, the exact files to create for each tier, and worked
|
|
129
137
|
examples.
|
|
@@ -1,36 +1,42 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pr-review
|
|
3
3
|
description: Review a GitHub pull request and post one formal review — advance the existing discussion and give precision-first, high-signal feedback. A pure code review — no building. Use when asked to review a PR or on a cron PR scan.
|
|
4
|
-
version:
|
|
4
|
+
version: 6.0.0
|
|
5
5
|
tags: [github, review, code-quality]
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# PR Review
|
|
9
9
|
|
|
10
|
-
Review an open PR
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
Review an open PR — high-signal findings only. This is a **pure code review**:
|
|
11
|
+
read the change and reason about it. Do **not** install dependencies, build, or
|
|
12
|
+
run tests — that is CI's job, and it validates whether the change actually works
|
|
13
|
+
far more reliably than you re-running it here. Your job is judgement on the diff,
|
|
14
|
+
not a build gate. A noisy review gets muted, so precision matters more than
|
|
15
|
+
volume.
|
|
16
|
+
|
|
17
|
+
You do **not** post the review yourself. You write your findings to a JSON file
|
|
18
|
+
(`.lastlight/pr-review/findings.json`) and a deterministic follow-up step posts
|
|
19
|
+
one formal review, anchoring each finding to its diff line as an inline comment
|
|
20
|
+
(§4).
|
|
16
21
|
|
|
17
22
|
This skill is the PR-specific procedure. It uses the **code-review** skill for
|
|
18
23
|
the precision bar and what-to-check rubric.
|
|
19
24
|
|
|
20
25
|
## Workspace
|
|
21
26
|
|
|
22
|
-
The harness pre-clones the PR's head ref
|
|
23
|
-
your cwd
|
|
24
|
-
|
|
27
|
+
The harness pre-clones the PR's head ref and drops you **inside the checkout** —
|
|
28
|
+
your cwd **is** the repo (`ls -la` shows `.git/` directly; `AGENTS.md` is the
|
|
29
|
+
sibling one level up at `../`). Use `git`/`read`/`grep` from here. To refresh:
|
|
25
30
|
`git fetch origin <branch> --depth 50 && git reset --hard FETCH_HEAD`. If the
|
|
26
|
-
|
|
31
|
+
checkout is somehow missing, `git clone https://github.com/{{owner}}/{{repo}}.git .`.
|
|
27
32
|
|
|
28
33
|
**Read code from this local checkout, never the API.** Use `git`/`read`/`grep`
|
|
29
34
|
on disk for the diff and file contents. Do **not** call
|
|
30
35
|
`github_get_pull_request_diff`, `github_list_pull_request_files`, or
|
|
31
36
|
`github_get_file_contents` — the API patch is a large redundant payload that
|
|
32
37
|
re-bloats context every turn. The `github_*` tools are for *API* operations only
|
|
33
|
-
(metadata
|
|
38
|
+
(reading metadata + prior comments in §1–2). You never post the review via a
|
|
39
|
+
tool — you write the findings file and the follow-up step posts it.
|
|
34
40
|
|
|
35
41
|
## Procedure
|
|
36
42
|
|
|
@@ -66,33 +72,75 @@ git diff --stat origin/<baseRef>...HEAD # churn
|
|
|
66
72
|
git diff origin/<baseRef>...HEAD # the patch
|
|
67
73
|
```
|
|
68
74
|
|
|
69
|
-
### 4. Assess and
|
|
75
|
+
### 4. Assess and write your findings
|
|
70
76
|
|
|
71
77
|
Apply the **code-review** skill's rubric — read each changed file in context;
|
|
72
78
|
check correctness / edge-cases / security / regression-risk / test-coverage.
|
|
73
79
|
Reason about the code statically; **don't build or run it** — trust CI to catch
|
|
74
80
|
what only running reveals, and spend your effort on what a human reviewer sees.
|
|
75
|
-
Follow that skill's **precision-first** rule:
|
|
76
|
-
findings, each
|
|
77
|
-
breaks, for which input or caller)
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
81
|
+
Follow that skill's **precision-first** rule: keep **only Critical and Important**
|
|
82
|
+
findings, each anchored to a `path:line` with a one-line concrete impact (what
|
|
83
|
+
breaks, for which input or caller). Drop Suggestions and Nits.
|
|
84
|
+
|
|
85
|
+
Before writing anything, run the **confidence gate**: re-read each finding
|
|
86
|
+
against the actual code and try to refute it; drop any you can't defend against
|
|
87
|
+
what the code really does. A clean PR should be approved with few or no
|
|
88
|
+
findings — that is a good review, not a lazy one.
|
|
89
|
+
|
|
90
|
+
**Do not call `github_create_pull_request_review` (or any review-submitting
|
|
91
|
+
tool).** Write your findings to `.lastlight/pr-review/findings.json` instead. A
|
|
92
|
+
deterministic follow-up step reads that file and posts one formal review with
|
|
93
|
+
your findings as inline comments anchored to the diff. The full contract with
|
|
94
|
+
worked examples is in [references/findings-schema.md](references/findings-schema.md);
|
|
95
|
+
the shape is:
|
|
96
|
+
|
|
97
|
+
```json
|
|
98
|
+
{
|
|
99
|
+
"skip": false,
|
|
100
|
+
"summary": "One or two sentences on what the PR does + overall assessment.",
|
|
101
|
+
"event": "COMMENT",
|
|
102
|
+
"base_ref": "main",
|
|
103
|
+
"head_sha": "<PR head SHA>",
|
|
104
|
+
"findings": [
|
|
105
|
+
{
|
|
106
|
+
"path": "src/foo.ts",
|
|
107
|
+
"line": 42,
|
|
108
|
+
"side": "RIGHT",
|
|
109
|
+
"severity": "Critical",
|
|
110
|
+
"title": "Short label for the finding",
|
|
111
|
+
"body": "Concrete impact — what breaks, for which input or caller.",
|
|
112
|
+
"suggestion": "exact replacement text for the anchored line(s)"
|
|
113
|
+
}
|
|
114
|
+
]
|
|
115
|
+
}
|
|
116
|
+
```
|
|
91
117
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
118
|
+
Rules:
|
|
119
|
+
- **Anchor precisely.** `path` must match the diff path exactly; `line`/`side`
|
|
120
|
+
must point at a line that appears in the diff (added/context → `side: RIGHT`;
|
|
121
|
+
removed/context → `side: LEFT`). A finding whose line isn't in the diff is
|
|
122
|
+
demoted to the summary body, so get the anchor right. Use optional `start_line`
|
|
123
|
+
(same side) for a multi-line range.
|
|
124
|
+
- `severity` is `Critical` or `Important` only.
|
|
125
|
+
- `suggestion` is optional — include it only when a concrete one-to-few-line fix
|
|
126
|
+
is obvious. It must be the exact replacement text for the anchored line(s),
|
|
127
|
+
nothing else; GitHub renders it as an applyable suggestion.
|
|
128
|
+
- `event` is `APPROVE` / `REQUEST_CHANGES` / `COMMENT`, matching what survived
|
|
129
|
+
the gate. A clean PR is an `APPROVE` with an empty `findings` array and a short
|
|
130
|
+
`summary`.
|
|
131
|
+
- `base_ref` and `head_sha` come from the `github_get_pull_request` call in §1 —
|
|
132
|
+
no extra API call. They are **mandatory**: without them the follow-up step
|
|
133
|
+
can't compute the diff and demotes every finding to the body.
|
|
134
|
+
- Create the dir and keep the file out of git first:
|
|
135
|
+
`mkdir -p .lastlight/pr-review && echo '.lastlight/' >> .git/info/exclude`.
|
|
136
|
+
|
|
137
|
+
**Stop / skip:** if a stop condition in §1 holds (bot-authored, merged, already
|
|
138
|
+
reviewed at the current head SHA), write `{"skip": true, "summary": "<reason>"}`
|
|
139
|
+
and stop — the follow-up step then posts nothing.
|
|
95
140
|
|
|
96
141
|
## Verification
|
|
97
142
|
|
|
98
|
-
Confirm
|
|
143
|
+
Confirm `.lastlight/pr-review/findings.json` is valid JSON, has `base_ref` +
|
|
144
|
+
`head_sha`, and every finding carries `path` + `line`. The deterministic
|
|
145
|
+
follow-up step posts the review and logs how many findings landed inline vs in
|
|
146
|
+
the body.
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# PR review findings schema
|
|
2
|
+
|
|
3
|
+
The `pr-review` skill writes its findings to `.lastlight/pr-review/findings.json`
|
|
4
|
+
(relative to the repo checkout — your cwd). The deterministic `post-review`
|
|
5
|
+
workflow phase reads this file and posts **one** formal GitHub review:
|
|
6
|
+
|
|
7
|
+
- Each finding whose `line`/`side` anchors to a line that appears in the PR diff
|
|
8
|
+
becomes an **inline comment** on that exact line.
|
|
9
|
+
- Any finding whose anchor isn't in the diff is **demoted** into the review body
|
|
10
|
+
under an "Additional findings" heading (GitHub rejects comments off the diff).
|
|
11
|
+
- If the diff can't be computed (missing `base_ref`, git failure), **all**
|
|
12
|
+
findings go into the body — the review still posts, so nothing is lost.
|
|
13
|
+
|
|
14
|
+
You never call `github_create_pull_request_review` yourself. Writing this file is
|
|
15
|
+
how you submit.
|
|
16
|
+
|
|
17
|
+
## Top-level object
|
|
18
|
+
|
|
19
|
+
| Field | Type | Required | Meaning |
|
|
20
|
+
|---|---|---|---|
|
|
21
|
+
| `skip` | boolean | no | `true` → you decided not to review (bot-authored / merged / already reviewed at head). The follow-up step posts nothing. |
|
|
22
|
+
| `summary` | string | yes | One or two sentences on what the PR does + your overall assessment. Becomes the review body. |
|
|
23
|
+
| `event` | string | yes | `APPROVE` \| `REQUEST_CHANGES` \| `COMMENT`. A clean PR is `APPROVE` with an empty `findings` array. |
|
|
24
|
+
| `base_ref` | string | yes | The PR base branch (e.g. `main`), from the `github_get_pull_request` call. Used to compute the diff for anchoring. |
|
|
25
|
+
| `head_sha` | string | yes | The PR head SHA, from the same call. Pins the review to the reviewed commit. |
|
|
26
|
+
| `findings` | array | yes | The surviving Critical/Important findings (may be empty). |
|
|
27
|
+
|
|
28
|
+
`base_ref` and `head_sha` are mandatory — without them the follow-up step can't
|
|
29
|
+
compute the diff and demotes every finding to the body.
|
|
30
|
+
|
|
31
|
+
## Finding object
|
|
32
|
+
|
|
33
|
+
| Field | Type | Required | Meaning |
|
|
34
|
+
|---|---|---|---|
|
|
35
|
+
| `path` | string | yes | Repo-relative file path, matching the diff path exactly. |
|
|
36
|
+
| `line` | number | yes | Line number on `side` that the comment anchors to. Must appear in the diff. |
|
|
37
|
+
| `side` | string | no | `RIGHT` (added/context line — default) or `LEFT` (removed/context line). |
|
|
38
|
+
| `start_line` | number | no | Start of a multi-line range (same `side` as `line`). |
|
|
39
|
+
| `severity` | string | yes | `Critical` or `Important` only. |
|
|
40
|
+
| `title` | string | yes | Short label for the finding. |
|
|
41
|
+
| `body` | string | yes | Concrete impact — what breaks, for which input or caller. |
|
|
42
|
+
| `suggestion` | string | no | Exact replacement text for the anchored line(s). Rendered as an applyable ```suggestion block. Include only when a concrete one-to-few-line fix is obvious. |
|
|
43
|
+
|
|
44
|
+
## Example — findings with an inline suggestion
|
|
45
|
+
|
|
46
|
+
```json
|
|
47
|
+
{
|
|
48
|
+
"skip": false,
|
|
49
|
+
"summary": "Adds a `--config` flag to the CLI and threads it into the connect path. Solid overall; one crash on the default path and one missing-await.",
|
|
50
|
+
"event": "REQUEST_CHANGES",
|
|
51
|
+
"base_ref": "main",
|
|
52
|
+
"head_sha": "9f3c1a2b7d4e5f60112233445566778899aabbcc",
|
|
53
|
+
"findings": [
|
|
54
|
+
{
|
|
55
|
+
"path": "src/cli.ts",
|
|
56
|
+
"line": 42,
|
|
57
|
+
"side": "RIGHT",
|
|
58
|
+
"severity": "Critical",
|
|
59
|
+
"title": "Null deref when --config is omitted",
|
|
60
|
+
"body": "`cfg.host` is undefined when no config file is passed, so every default-path invocation throws before connecting.",
|
|
61
|
+
"suggestion": "const host = cfg.host ?? DEFAULT_HOST;"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"path": "src/connect.ts",
|
|
65
|
+
"line": 88,
|
|
66
|
+
"side": "RIGHT",
|
|
67
|
+
"severity": "Important",
|
|
68
|
+
"title": "Missing await on disconnect()",
|
|
69
|
+
"body": "`disconnect()` returns a promise that's never awaited, so the socket can leak if the caller exits immediately after."
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Example — clean PR (approve, no findings)
|
|
76
|
+
|
|
77
|
+
```json
|
|
78
|
+
{
|
|
79
|
+
"skip": false,
|
|
80
|
+
"summary": "Small, well-tested refactor of the retry helper. No correctness or regression concerns.",
|
|
81
|
+
"event": "APPROVE",
|
|
82
|
+
"base_ref": "main",
|
|
83
|
+
"head_sha": "1122334455667788990011223344556677889900",
|
|
84
|
+
"findings": []
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Example — skip (already reviewed this SHA)
|
|
89
|
+
|
|
90
|
+
```json
|
|
91
|
+
{
|
|
92
|
+
"skip": true,
|
|
93
|
+
"summary": "A last-light[bot] review already exists on the current head SHA; nothing new to add."
|
|
94
|
+
}
|
|
95
|
+
```
|
package/workflows/pr-review.yaml
CHANGED
|
@@ -16,6 +16,152 @@ phases:
|
|
|
16
16
|
# pr-review: the PR procedure (primary). code-review: the finding-tier +
|
|
17
17
|
# what-to-check rubric. No `building` — pr-review is a pure code review; CI
|
|
18
18
|
# validates that the change builds/runs.
|
|
19
|
+
#
|
|
20
|
+
# The agent does NOT submit the review itself — it writes structured
|
|
21
|
+
# findings to .lastlight/pr-review/findings.json (the "reference"). The
|
|
22
|
+
# deterministic `post-review` phase below reads that file and posts one
|
|
23
|
+
# formal review with the findings as line-anchored inline comments.
|
|
19
24
|
skills: [pr-review, code-review]
|
|
20
25
|
model: "{{models.review}}"
|
|
21
26
|
variant: "{{variants.review}}"
|
|
27
|
+
|
|
28
|
+
# Deterministic submission step: read the agent's findings.json and post ONE
|
|
29
|
+
# formal PR review, anchoring each finding to its diff line where possible and
|
|
30
|
+
# demoting off-diff findings to the summary body (GitHub 422s on off-diff
|
|
31
|
+
# lines). Terminal + always exits 0 — a posting hiccup must not fail an
|
|
32
|
+
# otherwise-good review (errors go to stderr, captured in the session log).
|
|
33
|
+
# owner/repo come from the template context; pr_number/base_ref/head_sha come
|
|
34
|
+
# from findings.json (the agent recorded them from github_get_pull_request).
|
|
35
|
+
# GITHUB_TOKEN is the run's minted review-write token; in evals the harness
|
|
36
|
+
# injects GITHUB_API_URL pointing at the mock so the review lands there.
|
|
37
|
+
- name: post-review
|
|
38
|
+
label: Post inline review
|
|
39
|
+
type: script
|
|
40
|
+
runtime: js
|
|
41
|
+
timeout_seconds: 120
|
|
42
|
+
script: |
|
|
43
|
+
import { readFileSync } from "node:fs";
|
|
44
|
+
import { execFileSync } from "node:child_process";
|
|
45
|
+
|
|
46
|
+
const api = (process.env.GITHUB_API_URL || "https://api.github.com").replace(/\/+$/, "");
|
|
47
|
+
const token = process.env.GITHUB_TOKEN || process.env.GH_TOKEN || "";
|
|
48
|
+
const owner = "{{owner}}";
|
|
49
|
+
const repo = "{{repo}}";
|
|
50
|
+
const log = (m) => process.stderr.write("[post-review] " + m + "\n");
|
|
51
|
+
|
|
52
|
+
let doc;
|
|
53
|
+
try {
|
|
54
|
+
doc = JSON.parse(readFileSync(".lastlight/pr-review/findings.json", "utf8"));
|
|
55
|
+
} catch (e) {
|
|
56
|
+
log("no readable findings.json (" + e.message + "); nothing to post");
|
|
57
|
+
process.exit(0);
|
|
58
|
+
}
|
|
59
|
+
if (doc.skip) { log("skip: " + (doc.summary || "agent skipped review")); process.exit(0); }
|
|
60
|
+
|
|
61
|
+
const prNumber = doc.pr_number;
|
|
62
|
+
const baseRef = doc.base_ref;
|
|
63
|
+
const headSha = doc.head_sha;
|
|
64
|
+
const findings = Array.isArray(doc.findings) ? doc.findings : [];
|
|
65
|
+
if (!prNumber) { log("findings.json missing pr_number; cannot post"); process.exit(0); }
|
|
66
|
+
|
|
67
|
+
// path -> Set of "SIDE:line". "+"/context are RIGHT:newLine; "-"/context
|
|
68
|
+
// are LEFT:oldLine. Mirrors GitHub's three-dot PR diff anchoring.
|
|
69
|
+
function parseDiff(diff) {
|
|
70
|
+
const map = new Map();
|
|
71
|
+
let path = null, right = 0, left = 0, inHunk = false;
|
|
72
|
+
for (const line of diff.split("\n")) {
|
|
73
|
+
if (line.startsWith("+++ ")) {
|
|
74
|
+
const p = line.slice(4).replace(/^b\//, "");
|
|
75
|
+
path = p === "/dev/null" ? null : p;
|
|
76
|
+
if (path && !map.has(path)) map.set(path, new Set());
|
|
77
|
+
inHunk = false;
|
|
78
|
+
} else if (line.startsWith("@@")) {
|
|
79
|
+
const m = /@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(line);
|
|
80
|
+
if (m) { left = parseInt(m[1], 10); right = parseInt(m[2], 10); inHunk = true; }
|
|
81
|
+
} else if (inHunk && path) {
|
|
82
|
+
const set = map.get(path);
|
|
83
|
+
if (line.startsWith("+")) { set.add("RIGHT:" + right); right++; }
|
|
84
|
+
else if (line.startsWith("-")) { set.add("LEFT:" + left); left++; }
|
|
85
|
+
else if (line.startsWith(" ")) { set.add("RIGHT:" + right); set.add("LEFT:" + left); right++; left++; }
|
|
86
|
+
else if (line.startsWith("\\")) { /* "" */ }
|
|
87
|
+
else { inHunk = false; }
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return map;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// Commentable line set from the local checkout. Failure → null → demote all
|
|
94
|
+
// to the body (the review still posts; the judge/human still sees findings).
|
|
95
|
+
let commentable = null;
|
|
96
|
+
if (baseRef) {
|
|
97
|
+
try {
|
|
98
|
+
try { execFileSync("git", ["fetch", "origin", baseRef, "--depth", "50"], { stdio: "ignore" }); } catch {}
|
|
99
|
+
const diff = execFileSync("git", ["diff", "origin/" + baseRef + "...HEAD"], { encoding: "utf8", maxBuffer: 64 * 1024 * 1024 });
|
|
100
|
+
commentable = parseDiff(diff);
|
|
101
|
+
} catch (e) {
|
|
102
|
+
log("git diff failed (" + e.message + "); demoting all findings to the body");
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
const anchored = (f) => {
|
|
107
|
+
if (!commentable) return false;
|
|
108
|
+
const side = f.side === "LEFT" ? "LEFT" : "RIGHT";
|
|
109
|
+
const set = commentable.get(f.path);
|
|
110
|
+
if (!set || !set.has(side + ":" + f.line)) return false;
|
|
111
|
+
if (f.start_line && !set.has(side + ":" + f.start_line)) return false;
|
|
112
|
+
return true;
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
const inline = [], demoted = [];
|
|
116
|
+
for (const f of findings) {
|
|
117
|
+
if (f && f.path && f.line && anchored(f)) inline.push(f);
|
|
118
|
+
else if (f) demoted.push(f);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
const FENCE = "```";
|
|
122
|
+
const commentBody = (f) => {
|
|
123
|
+
let b = "**[" + (f.severity || "Important") + "] " + (f.title || "") + "**\n\n" + (f.body || "");
|
|
124
|
+
if (f.suggestion) b += "\n\n" + FENCE + "suggestion\n" + f.suggestion + "\n" + FENCE;
|
|
125
|
+
return b;
|
|
126
|
+
};
|
|
127
|
+
const renderDemoted = (list) => list.length
|
|
128
|
+
? "\n\n### Additional findings\n" + list.map((f) =>
|
|
129
|
+
"- **[" + (f.severity || "Important") + "] " + (f.title || "") + "** (" + f.path + ":" + f.line + ") — " + (f.body || "")).join("\n")
|
|
130
|
+
: "";
|
|
131
|
+
const buildComments = (list) => list.map((f) => {
|
|
132
|
+
const side = f.side === "LEFT" ? "LEFT" : "RIGHT";
|
|
133
|
+
const c = { path: f.path, line: f.line, side, body: commentBody(f) };
|
|
134
|
+
if (f.start_line) { c.start_line = f.start_line; c.start_side = side; }
|
|
135
|
+
return c;
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
const event = doc.event || (findings.length === 0 ? "APPROVE" : "COMMENT");
|
|
139
|
+
async function postReview(comments, extraBody) {
|
|
140
|
+
const payload = { body: (doc.summary || "") + (extraBody || ""), event, comments };
|
|
141
|
+
if (headSha) payload.commit_id = headSha;
|
|
142
|
+
return fetch(api + "/repos/" + owner + "/" + repo + "/pulls/" + prNumber + "/reviews", {
|
|
143
|
+
method: "POST",
|
|
144
|
+
headers: {
|
|
145
|
+
"Authorization": "Bearer " + token,
|
|
146
|
+
"Accept": "application/vnd.github+json",
|
|
147
|
+
"Content-Type": "application/json",
|
|
148
|
+
"User-Agent": "last-light",
|
|
149
|
+
"X-GitHub-Api-Version": "2022-11-28",
|
|
150
|
+
},
|
|
151
|
+
body: JSON.stringify(payload),
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
let res = await postReview(buildComments(inline), renderDemoted(demoted));
|
|
156
|
+
if (!res.ok) {
|
|
157
|
+
const t = await res.text().catch(() => "");
|
|
158
|
+
log("inline review POST failed (" + res.status + "): " + t.slice(0, 300) + "; retrying body-only");
|
|
159
|
+
res = await postReview([], renderDemoted([...inline, ...demoted]));
|
|
160
|
+
if (!res.ok) {
|
|
161
|
+
const t2 = await res.text().catch(() => "");
|
|
162
|
+
log("body-only review POST also failed (" + res.status + "): " + t2.slice(0, 300));
|
|
163
|
+
process.exit(0);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
log("posted review: " + inline.length + " inline, " + demoted.length + " in body, event=" + event);
|
|
167
|
+
process.exit(0);
|