@farmslot/protocol 0.38.0 → 0.40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/agents/reviewer-context.d.ts +4 -4
  3. package/dist/agents/reviewer-context.d.ts.map +1 -1
  4. package/dist/agents/reviewer-context.js +10 -10
  5. package/dist/agents/reviewer-context.js.map +1 -1
  6. package/dist/agents/roles.d.ts +2 -2
  7. package/dist/agents/roles.d.ts.map +1 -1
  8. package/dist/agents/roles.js +5 -9
  9. package/dist/agents/roles.js.map +1 -1
  10. package/dist/checklist-target.d.ts +6 -6
  11. package/dist/checklist-target.d.ts.map +1 -1
  12. package/dist/checklist-target.js +11 -11
  13. package/dist/checklist-target.js.map +1 -1
  14. package/dist/contracts/acceptance.d.ts +19 -34
  15. package/dist/contracts/acceptance.d.ts.map +1 -1
  16. package/dist/contracts/acceptance.js +11 -156
  17. package/dist/contracts/acceptance.js.map +1 -1
  18. package/dist/contracts/agents.d.ts +7 -2
  19. package/dist/contracts/agents.d.ts.map +1 -1
  20. package/dist/contracts/agents.js +13 -2
  21. package/dist/contracts/agents.js.map +1 -1
  22. package/dist/contracts/analytics.d.ts +2 -2
  23. package/dist/contracts/analytics.d.ts.map +1 -1
  24. package/dist/contracts/backlog.d.ts +16 -7
  25. package/dist/contracts/backlog.d.ts.map +1 -1
  26. package/dist/contracts/backlog.js.map +1 -1
  27. package/dist/contracts/config.d.ts +12 -3
  28. package/dist/contracts/config.d.ts.map +1 -1
  29. package/dist/contracts/config.js +32 -0
  30. package/dist/contracts/config.js.map +1 -1
  31. package/dist/contracts/dispatch.d.ts +7 -4
  32. package/dist/contracts/dispatch.d.ts.map +1 -1
  33. package/dist/contracts/family.d.ts +2 -2
  34. package/dist/contracts/family.d.ts.map +1 -1
  35. package/dist/contracts/index.d.ts +3 -0
  36. package/dist/contracts/index.d.ts.map +1 -1
  37. package/dist/contracts/index.js +3 -0
  38. package/dist/contracts/index.js.map +1 -1
  39. package/dist/contracts/pr-monitoring.d.ts +8 -8
  40. package/dist/contracts/pr-monitoring.d.ts.map +1 -1
  41. package/dist/contracts/pr-rules.d.ts +5 -7
  42. package/dist/contracts/pr-rules.d.ts.map +1 -1
  43. package/dist/contracts/pr-rules.js +4 -6
  44. package/dist/contracts/pr-rules.js.map +1 -1
  45. package/dist/contracts/qa.d.ts +2 -2
  46. package/dist/contracts/qa.d.ts.map +1 -1
  47. package/dist/contracts/qa.js +5 -9
  48. package/dist/contracts/qa.js.map +1 -1
  49. package/dist/contracts/recipe-conformance.d.ts +51 -0
  50. package/dist/contracts/recipe-conformance.d.ts.map +1 -1
  51. package/dist/contracts/recipe-conformance.js +134 -1
  52. package/dist/contracts/recipe-conformance.js.map +1 -1
  53. package/dist/contracts/resources.d.ts +1 -1
  54. package/dist/contracts/resources.d.ts.map +1 -1
  55. package/dist/contracts/resources.js.map +1 -1
  56. package/dist/contracts/reviews.d.ts +19 -3
  57. package/dist/contracts/reviews.d.ts.map +1 -1
  58. package/dist/contracts/reviews.js +2 -2
  59. package/dist/contracts/reviews.js.map +1 -1
  60. package/dist/contracts/run-gate-readiness.d.ts +26 -0
  61. package/dist/contracts/run-gate-readiness.d.ts.map +1 -0
  62. package/dist/contracts/run-gate-readiness.js +5 -0
  63. package/dist/contracts/run-gate-readiness.js.map +1 -0
  64. package/dist/contracts/run-lifecycle-view.d.ts +17 -0
  65. package/dist/contracts/run-lifecycle-view.d.ts.map +1 -0
  66. package/dist/contracts/run-lifecycle-view.js +70 -0
  67. package/dist/contracts/run-lifecycle-view.js.map +1 -0
  68. package/dist/contracts/runner-mobile-keys.d.ts +217 -0
  69. package/dist/contracts/runner-mobile-keys.d.ts.map +1 -0
  70. package/dist/contracts/runner-mobile-keys.js +189 -0
  71. package/dist/contracts/runner-mobile-keys.js.map +1 -0
  72. package/dist/contracts/runs.d.ts +109 -91
  73. package/dist/contracts/runs.d.ts.map +1 -1
  74. package/dist/contracts/runs.js +12 -14
  75. package/dist/contracts/runs.js.map +1 -1
  76. package/dist/contracts/runtime-capabilities.d.ts +2 -0
  77. package/dist/contracts/runtime-capabilities.d.ts.map +1 -1
  78. package/dist/contracts/runtime-capabilities.js.map +1 -1
  79. package/dist/contracts/template-placeholders.d.ts +0 -6
  80. package/dist/contracts/template-placeholders.d.ts.map +1 -1
  81. package/dist/contracts/template-placeholders.js +22 -4
  82. package/dist/contracts/template-placeholders.js.map +1 -1
  83. package/dist/contracts/worker-terminal.d.ts +19 -0
  84. package/dist/contracts/worker-terminal.d.ts.map +1 -1
  85. package/dist/contracts/worker-terminal.js.map +1 -1
  86. package/dist/index.d.ts +4 -0
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.js +4 -0
  89. package/dist/index.js.map +1 -1
  90. package/dist/integrations/pr-monitoring.d.ts.map +1 -1
  91. package/dist/integrations/pr-monitoring.js +9 -3
  92. package/dist/integrations/pr-monitoring.js.map +1 -1
  93. package/dist/integrations/pr-rule-config.d.ts.map +1 -1
  94. package/dist/integrations/pr-rule-config.js +21 -25
  95. package/dist/integrations/pr-rule-config.js.map +1 -1
  96. package/dist/integrations/pr-workflow-defaults.d.ts.map +1 -1
  97. package/dist/integrations/pr-workflow-defaults.js +2 -5
  98. package/dist/integrations/pr-workflow-defaults.js.map +1 -1
  99. package/dist/recipe/artifact.d.ts.map +1 -1
  100. package/dist/recipe/artifact.js +20 -4
  101. package/dist/recipe/artifact.js.map +1 -1
  102. package/dist/recipe/document.d.ts +5 -1
  103. package/dist/recipe/document.d.ts.map +1 -1
  104. package/dist/recipe/document.js +66 -37
  105. package/dist/recipe/document.js.map +1 -1
  106. package/dist/recipe/evidence.d.ts +128 -0
  107. package/dist/recipe/evidence.d.ts.map +1 -0
  108. package/dist/recipe/evidence.js +141 -0
  109. package/dist/recipe/evidence.js.map +1 -0
  110. package/dist/recipe/hud-intent.d.ts +56 -0
  111. package/dist/recipe/hud-intent.d.ts.map +1 -0
  112. package/dist/recipe/hud-intent.js +46 -0
  113. package/dist/recipe/hud-intent.js.map +1 -0
  114. package/dist/recipe/index.d.ts +4 -2
  115. package/dist/recipe/index.d.ts.map +1 -1
  116. package/dist/recipe/index.js +4 -2
  117. package/dist/recipe/index.js.map +1 -1
  118. package/dist/recipe/recording.d.ts +7 -0
  119. package/dist/recipe/recording.d.ts.map +1 -1
  120. package/dist/recipe/recording.js +48 -0
  121. package/dist/recipe/recording.js.map +1 -1
  122. package/dist/recipe/workflow.d.ts.map +1 -1
  123. package/dist/recipe/workflow.js +23 -1
  124. package/dist/recipe/workflow.js.map +1 -1
  125. package/dist/recipes/step-io.d.ts +8 -4
  126. package/dist/recipes/step-io.d.ts.map +1 -1
  127. package/dist/recipes/step-io.js.map +1 -1
  128. package/dist/rpc/copilot-runtime.d.ts +1 -1
  129. package/dist/rpc/copilot-runtime.d.ts.map +1 -1
  130. package/dist/rpc/dispatch.d.ts +10 -6
  131. package/dist/rpc/dispatch.d.ts.map +1 -1
  132. package/dist/rpc/native-session.d.ts +1 -0
  133. package/dist/rpc/native-session.d.ts.map +1 -1
  134. package/dist/rpc/native-session.js.map +1 -1
  135. package/dist/rpc/roadmap.d.ts +2 -0
  136. package/dist/rpc/roadmap.d.ts.map +1 -1
  137. package/dist/rpc/run.d.ts +5 -3
  138. package/dist/rpc/run.d.ts.map +1 -1
  139. package/dist/rpc/run.js.map +1 -1
  140. package/dist/rpc/slot.d.ts +1 -0
  141. package/dist/rpc/slot.d.ts.map +1 -1
  142. package/dist/rpc/tmux.d.ts +10 -0
  143. package/dist/rpc/tmux.d.ts.map +1 -1
  144. package/dist/runs/ci-decision-context.d.ts +40 -0
  145. package/dist/runs/ci-decision-context.d.ts.map +1 -0
  146. package/dist/runs/ci-decision-context.js +129 -0
  147. package/dist/runs/ci-decision-context.js.map +1 -0
  148. package/dist/runs/decision-resolution.d.ts +37 -1
  149. package/dist/runs/decision-resolution.d.ts.map +1 -1
  150. package/dist/runs/decision-resolution.js +44 -1
  151. package/dist/runs/decision-resolution.js.map +1 -1
  152. package/dist/runs/family-iteration-ledger.js +1 -1
  153. package/dist/runs/family-iteration-ledger.js.map +1 -1
  154. package/dist/runs/publish-approval.d.ts +20 -0
  155. package/dist/runs/publish-approval.d.ts.map +1 -0
  156. package/dist/runs/publish-approval.js +29 -0
  157. package/dist/runs/publish-approval.js.map +1 -0
  158. package/dist/runs/review-chain.d.ts +2 -2
  159. package/dist/runs/review-chain.d.ts.map +1 -1
  160. package/dist/runs/review-chain.js +4 -4
  161. package/dist/runs/review-chain.js.map +1 -1
  162. package/dist/runs/review-curation.d.ts +51 -0
  163. package/dist/runs/review-curation.d.ts.map +1 -0
  164. package/dist/runs/review-curation.js +138 -0
  165. package/dist/runs/review-curation.js.map +1 -0
  166. package/dist/runs/review-policy.d.ts +9 -0
  167. package/dist/runs/review-policy.d.ts.map +1 -0
  168. package/dist/runs/review-policy.js +34 -0
  169. package/dist/runs/review-policy.js.map +1 -0
  170. package/dist/runs/review-retries.d.ts +10 -10
  171. package/dist/runs/review-retries.d.ts.map +1 -1
  172. package/dist/runs/review-retries.js +17 -22
  173. package/dist/runs/review-retries.js.map +1 -1
  174. package/dist/runs/slot-resolution.js +1 -1
  175. package/dist/runs/slot-resolution.js.map +1 -1
  176. package/dist/transport/signal.d.ts +3 -3
  177. package/dist/transport/signal.d.ts.map +1 -1
  178. package/dist/version.d.ts +1 -1
  179. package/dist/version.js +1 -1
  180. package/package.json +9 -2
  181. package/schemas/recipe-v1.schema.json +113 -22
  182. package/scripts/acceptance.d.mts +16 -0
  183. package/scripts/acceptance.mjs +233 -0
@@ -1 +1 @@
1
- {"version":3,"file":"review-chain.d.ts","sourceRoot":"","sources":["../../src/runs/review-chain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAEhB,mBAAmB,EACnB,GAAG,EACH,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAE/B,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,cAAc,CAAC,GAC3C,eAAe,GAAG,IAAI,CAOxB;AAED,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,IAAI,CACP,GAAG,EACD,IAAI,GACJ,UAAU,GACV,WAAW,GACX,aAAa,GACb,WAAW,GACX,cAAc,GACd,SAAS,GACT,qBAAqB,CACxB,GACA,gBAAgB,GAAG,IAAI,CA4BzB;AAED,oFAAoF;AACpF,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC,CAAC,CAAC,GACjD,gBAAgB,EAAE,CAMpB;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,GAAG,IAAI,GAAG,SAAS,GACrE,mBAAmB,CAErB;AAED,+EAA+E;AAC/E,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,GACvC,WAAW,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,SAAS,CAEpE"}
1
+ {"version":3,"file":"review-chain.d.ts","sourceRoot":"","sources":["../../src/runs/review-chain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAEhB,UAAU,EACV,GAAG,EACH,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAE/B,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,WAAW,GAAG,cAAc,CAAC,GAC3C,eAAe,GAAG,IAAI,CAOxB;AAED,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,IAAI,CACP,GAAG,EACD,IAAI,GACJ,UAAU,GACV,WAAW,GACX,aAAa,GACb,WAAW,GACX,cAAc,GACd,SAAS,GACT,qBAAqB,CACxB,GACA,gBAAgB,GAAG,IAAI,CA4BzB;AAED,oFAAoF;AACpF,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC,CAAC,CAAC,GACjD,gBAAgB,EAAE,CAMpB;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,GAC5D,UAAU,CAEZ;AAED,+EAA+E;AAC/E,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,GACvC,WAAW,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,SAAS,CAEpE"}
@@ -22,11 +22,11 @@ export function currentReviewChainEntry(run) {
22
22
  prNumber: context.prNumber,
23
23
  ...(payload?.reviewSnapshot?.baseSha
24
24
  ? { baseSha: payload.reviewSnapshot.baseSha }
25
- : context.reviewScope === 'incremental' && context.priorReviewedHeadSha
25
+ : context.mode === 'warm' && context.priorReviewedHeadSha
26
26
  ? { baseSha: context.priorReviewedHeadSha }
27
27
  : {}),
28
28
  headSha: payload?.reviewSnapshot?.headSha ?? context.currentHeadSha,
29
- reviewScope: context.reviewScope,
29
+ mode: context.mode,
30
30
  validationDepth: context.validationDepth,
31
31
  verdict: payload?.recommendation?.trim() || 'pending',
32
32
  unresolvedCount: payload ? payload.lineComments.length : null,
@@ -45,8 +45,8 @@ export function reviewChainForRun(run) {
45
45
  return [];
46
46
  return [...(run.repeatReviewContext?.priorGenerations ?? []), current].sort((left, right) => left.generation - right.generation || left.runId.localeCompare(right.runId));
47
47
  }
48
- export function reviewSessionIntentForContext(context) {
49
- return context?.sessionIntent ?? 'reset';
48
+ export function reviewModeForContext(context) {
49
+ return context?.mode ?? 'cold';
50
50
  }
51
51
  /** Never turn missing launch evidence into an affirmative continuity claim. */
52
52
  export function observedReviewSessionContinuity(entry) {
@@ -1 +1 @@
1
- {"version":3,"file":"review-chain.js","sourceRoot":"","sources":["../../src/runs/review-chain.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,kBAAkB,CAChC,GAA4C;IAE5C,IAAI,GAAG,CAAC,YAAY;QAAE,OAAO,GAAG,CAAC,YAAY,CAAC;IAC9C,KAAK,IAAI,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAClE,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAwC,CAAC;QAC/E,IAAI,OAAO,EAAE,IAAI,KAAK,QAAQ;YAAE,OAAO,OAAO,CAAC;IACjD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,GAUC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,mBAAmB,CAAC;IACxC,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACxC,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,KAAK,EAAE,GAAG,CAAC,EAAE;QACb,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO;YAClC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,OAAO,EAAE;YAC7C,CAAC,CAAC,OAAO,CAAC,WAAW,KAAK,aAAa,IAAI,OAAO,CAAC,oBAAoB;gBACrE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,oBAAoB,EAAE;gBAC3C,CAAC,CAAC,EAAE,CAAC;QACT,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,IAAI,OAAO,CAAC,cAAc;QACnE,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,SAAS;QACrD,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;QAC7D,YAAY,EAAE,OAAO,EAAE,gBAAgB,IAAI,EAAE;QAC7C,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI;QAClC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI;QAC3D,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7D,CAAC;AACJ,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,iBAAiB,CAC/B,GAAkD;IAElD,MAAM,OAAO,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAC7C,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,gBAAgB,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CACzE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAC7F,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,OAAsE;IAEtE,OAAO,OAAO,EAAE,aAAa,IAAI,OAAO,CAAC;AAC3C,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,+BAA+B,CAC7C,KAAwC;IAExC,OAAO,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,SAAS,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"review-chain.js","sourceRoot":"","sources":["../../src/runs/review-chain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import type { PRReviewThread } from '../contracts/reviews.js';
2
+ import type { ReviewGatePayload, ReviewLineComment, RunReviewResult } from '../contracts/runs.js';
3
+ export declare function reviewCommentKey(comment: ReviewLineComment): string;
4
+ export declare function reviewCommentsByFile(comments: readonly ReviewLineComment[]): Map<string, ReviewLineComment[]>;
5
+ export declare function reviewCommentCountByFile(commentsByFile: ReadonlyMap<string, readonly ReviewLineComment[]>): Map<string, number>;
6
+ export declare function reviewThreadsForFile(commentsByFile: ReadonlyMap<string, readonly ReviewLineComment[]>, filePath: string, timestamp?: () => string): PRReviewThread[];
7
+ export declare const REVIEW_POST_RECOMMENDATIONS: readonly ["COMMENT", "REQUEST_CHANGES", "APPROVE"];
8
+ export type ReviewPostRecommendation = (typeof REVIEW_POST_RECOMMENDATIONS)[number];
9
+ export declare function reviewPostRecommendation(payload: Pick<ReviewGatePayload, 'recommendation'>): ReviewPostRecommendation;
10
+ /** Bind user choices to content, excluding refresh times and transient artifact URLs. */
11
+ export declare function reviewPostingFingerprint(payload: RunReviewResult): string;
12
+ export interface ReviewCurationState {
13
+ reviewFingerprint: string;
14
+ includedIndices: number[];
15
+ recommendation: ReviewPostRecommendation;
16
+ includeEvidence: boolean;
17
+ }
18
+ export declare function createReviewCuration(payload: ReviewGatePayload): ReviewCurationState;
19
+ export declare function toggleReviewFinding(state: ReviewCurationState, index: number): ReviewCurationState;
20
+ export declare function reviewCurationView(payload: ReviewGatePayload, state: ReviewCurationState): {
21
+ fingerprint: string;
22
+ reviewedSha: string | null;
23
+ findings: {
24
+ index: number;
25
+ included: boolean;
26
+ path: string;
27
+ line: number;
28
+ body: string;
29
+ severity: string;
30
+ }[];
31
+ includedCount: number;
32
+ recommendation: "APPROVE" | "REQUEST_CHANGES" | "COMMENT";
33
+ evidenceAvailable: boolean;
34
+ includeEvidence: boolean;
35
+ reportNote: string;
36
+ };
37
+ export declare function assertReviewCurationFresh(payload: RunReviewResult, selection?: Record<string, unknown>): void;
38
+ /** Existing publication selection semantics, shared with both client models. */
39
+ export declare function selectReviewFindings(result: RunReviewResult, selection: Record<string, unknown>): RunReviewResult;
40
+ export interface ReviewedSourceLine {
41
+ number: number;
42
+ text: string;
43
+ target: boolean;
44
+ }
45
+ export interface ReviewedFindingContext {
46
+ available: boolean;
47
+ note: string;
48
+ lines: ReviewedSourceLine[];
49
+ }
50
+ export declare function reviewedFindingContext(content: string, line: number): ReviewedFindingContext;
51
+ //# sourceMappingURL=review-curation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-curation.d.ts","sourceRoot":"","sources":["../../src/runs/review-curation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGlG,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAEnE;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,GACrC,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAQlC;AAED,wBAAgB,wBAAwB,CACtC,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC,GAChE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAMrB;AAED,wBAAgB,oBAAoB,CAClC,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC,EACjE,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,MAAM,MAAuC,GACvD,cAAc,EAAE,CAkBlB;AAED,eAAO,MAAM,2BAA2B,oDAAqD,CAAC;AAC9F,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpF,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,GACjD,wBAAwB,CAG1B;AAED,yFAAyF;AACzF,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAWzE;AAED,MAAM,WAAW,mBAAmB;IAClC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,wBAAwB,CAAC;IACzC,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,GAAG,mBAAmB,CAOpF;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,MAAM,GACZ,mBAAmB,CAOrB;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,mBAAmB;;;;;;;;;;;;;;;;EAexF;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,eAAe,EACxB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,IAAI,CAUN;AAED,gFAAgF;AAChF,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,eAAe,EACvB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,eAAe,CAyBjB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACjB;AACD,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,kBAAkB,EAAE,CAAC;CAC7B;AACD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,sBAAsB,CAkB5F"}
@@ -0,0 +1,138 @@
1
+ import { digestRecipeDocument } from '../recipe/digest.js';
2
+ export function reviewCommentKey(comment) {
3
+ return `${comment.path}\u0000${comment.line}\u0000${comment.body}`;
4
+ }
5
+ export function reviewCommentsByFile(comments) {
6
+ const map = new Map();
7
+ for (const comment of comments) {
8
+ const list = map.get(comment.path) ?? [];
9
+ list.push(comment);
10
+ map.set(comment.path, list);
11
+ }
12
+ return map;
13
+ }
14
+ export function reviewCommentCountByFile(commentsByFile) {
15
+ const map = new Map();
16
+ for (const [path, comments] of commentsByFile) {
17
+ map.set(path, comments.length);
18
+ }
19
+ return map;
20
+ }
21
+ export function reviewThreadsForFile(commentsByFile, filePath, timestamp = () => new Date().toISOString()) {
22
+ const comments = commentsByFile.get(filePath) ?? [];
23
+ return comments.map((comment, index) => ({
24
+ id: `review-${index}-${comment.line}`,
25
+ path: comment.path,
26
+ line: comment.line,
27
+ resolved: false,
28
+ outdated: false,
29
+ comments: [
30
+ {
31
+ id: index,
32
+ body: `**[${comment.severity}]** ${comment.body}`,
33
+ author: 'Review Agent',
34
+ createdAt: timestamp(),
35
+ updatedAt: timestamp(),
36
+ },
37
+ ],
38
+ }));
39
+ }
40
+ export const REVIEW_POST_RECOMMENDATIONS = ['COMMENT', 'REQUEST_CHANGES', 'APPROVE'];
41
+ export function reviewPostRecommendation(payload) {
42
+ const value = payload.recommendation?.trim().toUpperCase();
43
+ return value === 'APPROVE' || value === 'REQUEST_CHANGES' ? value : 'COMMENT';
44
+ }
45
+ /** Bind user choices to content, excluding refresh times and transient artifact URLs. */
46
+ export function reviewPostingFingerprint(payload) {
47
+ const snapshot = payload.reviewSnapshot;
48
+ return digestRecipeDocument([
49
+ snapshot?.baseSha ?? null,
50
+ snapshot?.headSha ?? null,
51
+ snapshot?.diffHash ?? null,
52
+ snapshot?.untrackedFiles ?? [],
53
+ payload.reviewMd,
54
+ payload.recommendation,
55
+ payload.lineComments,
56
+ ]);
57
+ }
58
+ export function createReviewCuration(payload) {
59
+ return {
60
+ reviewFingerprint: reviewPostingFingerprint(payload),
61
+ includedIndices: payload.lineComments.map((_, index) => index),
62
+ recommendation: reviewPostRecommendation(payload),
63
+ includeEvidence: true,
64
+ };
65
+ }
66
+ export function toggleReviewFinding(state, index) {
67
+ return {
68
+ ...state,
69
+ includedIndices: state.includedIndices.includes(index)
70
+ ? state.includedIndices.filter((value) => value !== index)
71
+ : [...state.includedIndices, index].sort((a, b) => a - b),
72
+ };
73
+ }
74
+ export function reviewCurationView(payload, state) {
75
+ return {
76
+ fingerprint: reviewPostingFingerprint(payload),
77
+ reviewedSha: payload.reviewSnapshot?.headSha?.trim() || null,
78
+ findings: payload.lineComments.map((comment, index) => ({
79
+ ...comment,
80
+ index,
81
+ included: state.includedIndices.includes(index),
82
+ })),
83
+ includedCount: state.includedIndices.length,
84
+ recommendation: state.recommendation,
85
+ evidenceAvailable: Boolean(payload.evidenceMarkdown?.trim()),
86
+ includeEvidence: state.includeEvidence,
87
+ reportNote: 'Selection controls finding comments. The original review report stays unchanged.',
88
+ };
89
+ }
90
+ export function assertReviewCurationFresh(payload, selection) {
91
+ const fingerprint = selection?.reviewFingerprint;
92
+ if (fingerprint !== undefined &&
93
+ (typeof fingerprint !== 'string' || fingerprint !== reviewPostingFingerprint(payload))) {
94
+ throw Object.assign(new Error('Review changed. Inspect the current review before posting.'), {
95
+ code: 'REVIEW_CHANGED',
96
+ });
97
+ }
98
+ }
99
+ /** Existing publication selection semantics, shared with both client models. */
100
+ export function selectReviewFindings(result, selection) {
101
+ assertReviewCurationFresh(result, selection);
102
+ const recommendation = selection.recommendation ?? result.recommendation;
103
+ if (typeof recommendation !== 'string' ||
104
+ !REVIEW_POST_RECOMMENDATIONS.includes(recommendation))
105
+ throw new Error('Invalid selected review recommendation');
106
+ const indices = selection.includedIndices;
107
+ if (indices !== undefined &&
108
+ (!Array.isArray(indices) ||
109
+ indices.some((index) => !Number.isInteger(index) || index < 0 || index >= result.lineComments.length)))
110
+ throw new Error('Invalid selected review comments');
111
+ return {
112
+ ...result,
113
+ recommendation,
114
+ lineComments: indices === undefined
115
+ ? result.lineComments
116
+ : result.lineComments.filter((_, index) => indices.includes(index)),
117
+ };
118
+ }
119
+ export function reviewedFindingContext(content, line) {
120
+ const lines = content.replace(/\r\n?/g, '\n').split('\n');
121
+ if (lines.at(-1) === '')
122
+ lines.pop();
123
+ if (!Number.isSafeInteger(line) || line < 1 || line > lines.length)
124
+ return {
125
+ available: false,
126
+ note: 'Finding line is unavailable in the reviewed revision.',
127
+ lines: [],
128
+ };
129
+ const start = Math.max(1, line - 4), end = Math.min(lines.length, line + 4);
130
+ return {
131
+ available: true,
132
+ note: '',
133
+ lines: lines
134
+ .slice(start - 1, end)
135
+ .map((text, index) => ({ number: start + index, text, target: start + index === line })),
136
+ };
137
+ }
138
+ //# sourceMappingURL=review-curation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-curation.js","sourceRoot":"","sources":["../../src/runs/review-curation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { ReviewPolicy, ReviewStatus } from '../contracts/runs.js';
2
+ export declare function defaultReviewPolicy(existing?: ReviewPolicy | null): ReviewPolicy;
3
+ export declare function effectiveRequiredReviewCount(policy: ReviewPolicy): number;
4
+ /** A separate reviewer session and a captured reviewed head are required evidence. */
5
+ export declare function isQualifyingReview(review: ReviewStatus): boolean;
6
+ /** Retrying a session replaces its verdict, including a later failure on the same head. */
7
+ export declare function qualifyingPassingReviews(reviews: ReviewStatus[]): ReviewStatus[];
8
+ export declare function reviewPolicySatisfied(policy: ReviewPolicy, reviews: ReviewStatus[]): boolean;
9
+ //# sourceMappingURL=review-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-policy.d.ts","sourceRoot":"","sources":["../../src/runs/review-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEvE,wBAAgB,mBAAmB,CAAC,QAAQ,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG,YAAY,CAKhF;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAEzE;AAED,sFAAsF;AACtF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAKhE;AAED,2FAA2F;AAC3F,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAehF;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,OAAO,CAE5F"}
@@ -0,0 +1,34 @@
1
+ export function defaultReviewPolicy(existing) {
2
+ return {
3
+ minimumReviews: Math.max(0, existing?.minimumReviews ?? 1),
4
+ requestedBy: existing?.requestedBy ?? 'dispatch',
5
+ };
6
+ }
7
+ export function effectiveRequiredReviewCount(policy) {
8
+ return Math.max(0, policy.minimumReviews);
9
+ }
10
+ /** A separate reviewer session and a captured reviewed head are required evidence. */
11
+ export function isQualifyingReview(review) {
12
+ return (!!review.reviewerSessionId?.trim() &&
13
+ !!(review.reviewedHeadSha ?? review.reviewSnapshot?.headSha)?.trim());
14
+ }
15
+ /** Retrying a session replaces its verdict, including a later failure on the same head. */
16
+ export function qualifyingPassingReviews(reviews) {
17
+ const latest = new Map();
18
+ for (const review of reviews)
19
+ latest.set(review.id, review);
20
+ const sessions = new Set();
21
+ return [...latest.values()].filter((review) => {
22
+ if (!isQualifyingReview(review) ||
23
+ review.verdict !== 'pass' ||
24
+ review.unresolvedCount !== 0 ||
25
+ sessions.has(review.reviewerSessionId))
26
+ return false;
27
+ sessions.add(review.reviewerSessionId);
28
+ return true;
29
+ });
30
+ }
31
+ export function reviewPolicySatisfied(policy, reviews) {
32
+ return qualifyingPassingReviews(reviews).length >= effectiveRequiredReviewCount(policy);
33
+ }
34
+ //# sourceMappingURL=review-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review-policy.js","sourceRoot":"","sources":["../../src/runs/review-policy.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,mBAAmB,CAAC,QAA8B;IAChE,OAAO;QACL,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,cAAc,IAAI,CAAC,CAAC;QAC1D,WAAW,EAAE,QAAQ,EAAE,WAAW,IAAI,UAAU;KACjD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,MAAoB;IAC/D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;AAC5C,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,kBAAkB,CAAC,MAAoB;IACrD,OAAO,CACL,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE,IAAI,EAAE;QAClC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,CACrE,CAAC;AACJ,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,wBAAwB,CAAC,OAAuB;IAC9D,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC/C,KAAK,MAAM,MAAM,IAAI,OAAO;QAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;QAC5C,IACE,CAAC,kBAAkB,CAAC,MAAM,CAAC;YAC3B,MAAM,CAAC,OAAO,KAAK,MAAM;YACzB,MAAM,CAAC,eAAe,KAAK,CAAC;YAC5B,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAkB,CAAC;YAEvC,OAAO,KAAK,CAAC;QACf,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAkB,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAoB,EAAE,OAAuB;IACjF,OAAO,wBAAwB,CAAC,OAAO,CAAC,CAAC,MAAM,IAAI,4BAA4B,CAAC,MAAM,CAAC,CAAC;AAC1F,CAAC"}
@@ -1,21 +1,21 @@
1
- import type { IndependentReviewStatus } from '../contracts/runs.js';
1
+ import type { ReviewStatus } from '../contracts/runs.js';
2
2
  export declare const APPROVE_PUBLISH_UNRESOLVED_ACTION = "approve-publish-unresolved";
3
- type ReviewRetryFields = Partial<Pick<IndependentReviewStatus, 'source' | 'verdict' | 'unresolvedCount' | 'issues' | 'feedbackSent' | 'recoveryContinuationPending' | 'retryCount' | 'maxRetries' | 'maxRetriesExhausted' | 'attempts' | 'reviewedHeadSha' | 'reviewedReviewSubjectHash' | 'reviewSnapshot'>>;
4
- export declare function independentReviewRetryCount(review: ReviewRetryFields): number;
3
+ type ReviewRetryFields = Partial<Pick<ReviewStatus, 'source' | 'verdict' | 'unresolvedCount' | 'issues' | 'feedbackSent' | 'recoveryContinuationPending' | 'retryCount' | 'maxRetries' | 'maxRetriesExhausted' | 'attempts' | 'reviewedHeadSha' | 'reviewedReviewSubjectHash' | 'reviewSnapshot'>>;
4
+ export declare function reviewRetryCount(review: ReviewRetryFields): number;
5
5
  /**
6
- * True when an extra/independent review consumed its auto-fix budget with
6
+ * True when an review consumed its auto-fix budget with
7
7
  * findings still open. `max_retries: 0` is not a cap-hit: the operator still
8
8
  * uses Continue Fixing to authorize the first worker pass.
9
9
  *
10
10
  * Records without `maxRetries` are exhausted only when `maxRetriesExhausted`
11
11
  * was persisted. Missing cap fields are not inferred.
12
12
  */
13
- export declare function independentReviewFixRetriesExhausted(review: ReviewRetryFields): boolean;
13
+ export declare function reviewFixRetriesExhausted(review: ReviewRetryFields): boolean;
14
14
  /** Repair wiped `retryCount: 0` and stamp a missing cap from project config. */
15
- export declare function stampIndependentReviewRetryCap<T extends ReviewRetryFields>(review: T, configuredMaxRetries?: number): T;
16
- export declare function independentReviewRetryCapReason(review: ReviewRetryFields): string;
17
- export declare function latestIndependentReview(reviews: readonly ReviewRetryFields[] | undefined): ReviewRetryFields | undefined;
18
- /** Latest terminal extra-review that hit its auto-fix cap. Package HEAD drift does not hide this. */
19
- export declare function latestExhaustedIndependentReview(reviews: readonly ReviewRetryFields[] | undefined): ReviewRetryFields | undefined;
15
+ export declare function stampReviewRetryCap<T extends ReviewRetryFields>(review: T, configuredMaxRetries?: number): T;
16
+ export declare function reviewRetryCapReason(review: ReviewRetryFields): string;
17
+ export declare function latestReview(reviews: readonly ReviewRetryFields[] | undefined): ReviewRetryFields | undefined;
18
+ /** Latest terminal review that hit its auto-fix cap. Package HEAD drift does not hide this. */
19
+ export declare function latestExhaustedReview(reviews: readonly ReviewRetryFields[] | undefined): ReviewRetryFields | undefined;
20
20
  export {};
21
21
  //# sourceMappingURL=review-retries.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"review-retries.d.ts","sourceRoot":"","sources":["../../src/runs/review-retries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAEpE,eAAO,MAAM,iCAAiC,+BAA+B,CAAC;AAE9E,KAAK,iBAAiB,GAAG,OAAO,CAC9B,IAAI,CACF,uBAAuB,EACrB,QAAQ,GACR,SAAS,GACT,iBAAiB,GACjB,QAAQ,GACR,cAAc,GACd,6BAA6B,GAC7B,YAAY,GACZ,YAAY,GACZ,qBAAqB,GACrB,UAAU,GACV,iBAAiB,GACjB,2BAA2B,GAC3B,gBAAgB,CACnB,CACF,CAAC;AAEF,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAM7E;AAED;;;;;;;GAOG;AACH,wBAAgB,oCAAoC,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAYvF;AAED,gFAAgF;AAChF,wBAAgB,8BAA8B,CAAC,CAAC,SAAS,iBAAiB,EACxE,MAAM,EAAE,CAAC,EACT,oBAAoB,CAAC,EAAE,MAAM,GAC5B,CAAC,CAgBH;AAED,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAQjF;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,SAAS,iBAAiB,EAAE,GAAG,SAAS,GAChD,iBAAiB,GAAG,SAAS,CAQ/B;AAED,qGAAqG;AACrG,wBAAgB,gCAAgC,CAC9C,OAAO,EAAE,SAAS,iBAAiB,EAAE,GAAG,SAAS,GAChD,iBAAiB,GAAG,SAAS,CAI/B"}
1
+ {"version":3,"file":"review-retries.d.ts","sourceRoot":"","sources":["../../src/runs/review-retries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,eAAO,MAAM,iCAAiC,+BAA+B,CAAC;AAE9E,KAAK,iBAAiB,GAAG,OAAO,CAC9B,IAAI,CACF,YAAY,EACV,QAAQ,GACR,SAAS,GACT,iBAAiB,GACjB,QAAQ,GACR,cAAc,GACd,6BAA6B,GAC7B,YAAY,GACZ,YAAY,GACZ,qBAAqB,GACrB,UAAU,GACV,iBAAiB,GACjB,2BAA2B,GAC3B,gBAAgB,CACnB,CACF,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAMlE;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAW5E;AAED,gFAAgF;AAChF,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,iBAAiB,EAC7D,MAAM,EAAE,CAAC,EACT,oBAAoB,CAAC,EAAE,MAAM,GAC5B,CAAC,CAeH;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAQtE;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,SAAS,iBAAiB,EAAE,GAAG,SAAS,GAChD,iBAAiB,GAAG,SAAS,CAI/B;AAED,+FAA+F;AAC/F,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,SAAS,iBAAiB,EAAE,GAAG,SAAS,GAChD,iBAAiB,GAAG,SAAS,CAI/B"}
@@ -1,5 +1,5 @@
1
1
  export const APPROVE_PUBLISH_UNRESOLVED_ACTION = 'approve-publish-unresolved';
2
- export function independentReviewRetryCount(review) {
2
+ export function reviewRetryCount(review) {
3
3
  const fromAttempts = Math.max(0, (review.attempts?.length ?? 1) - 1);
4
4
  if (typeof review.retryCount === 'number' && Number.isFinite(review.retryCount)) {
5
5
  return Math.max(0, Math.round(review.retryCount), fromAttempts);
@@ -7,22 +7,20 @@ export function independentReviewRetryCount(review) {
7
7
  return fromAttempts;
8
8
  }
9
9
  /**
10
- * True when an extra/independent review consumed its auto-fix budget with
10
+ * True when an review consumed its auto-fix budget with
11
11
  * findings still open. `max_retries: 0` is not a cap-hit: the operator still
12
12
  * uses Continue Fixing to authorize the first worker pass.
13
13
  *
14
14
  * Records without `maxRetries` are exhausted only when `maxRetriesExhausted`
15
15
  * was persisted. Missing cap fields are not inferred.
16
16
  */
17
- export function independentReviewFixRetriesExhausted(review) {
18
- if (review.source === 'self-review')
19
- return false;
17
+ export function reviewFixRetriesExhausted(review) {
20
18
  if (review.verdict !== 'issues')
21
19
  return false;
22
20
  const findings = Math.max(review.unresolvedCount ?? 0, review.issues?.length ?? 0);
23
21
  if (findings <= 0)
24
22
  return false;
25
- const retryCount = independentReviewRetryCount(review);
23
+ const retryCount = reviewRetryCount(review);
26
24
  if (typeof review.maxRetries === 'number' && Number.isFinite(review.maxRetries)) {
27
25
  if (review.maxRetries <= 0)
28
26
  return false;
@@ -33,10 +31,8 @@ export function independentReviewFixRetriesExhausted(review) {
33
31
  return review.maxRetriesExhausted === true;
34
32
  }
35
33
  /** Repair wiped `retryCount: 0` and stamp a missing cap from project config. */
36
- export function stampIndependentReviewRetryCap(review, configuredMaxRetries) {
37
- if (review.source === 'self-review')
38
- return review;
39
- const retryCount = independentReviewRetryCount(review);
34
+ export function stampReviewRetryCap(review, configuredMaxRetries) {
35
+ const retryCount = reviewRetryCount(review);
40
36
  const maxRetries = typeof review.maxRetries === 'number' && Number.isFinite(review.maxRetries)
41
37
  ? review.maxRetries
42
38
  : typeof configuredMaxRetries === 'number' && Number.isFinite(configuredMaxRetries)
@@ -47,29 +43,28 @@ export function stampIndependentReviewRetryCap(review, configuredMaxRetries) {
47
43
  retryCount,
48
44
  ...(typeof maxRetries === 'number' ? { maxRetries } : {}),
49
45
  };
50
- if (!independentReviewFixRetriesExhausted(next))
46
+ if (!reviewFixRetriesExhausted(next))
51
47
  return next;
52
48
  return { ...next, maxRetriesExhausted: true, recoveryContinuationPending: false };
53
49
  }
54
- export function independentReviewRetryCapReason(review) {
55
- const retryCount = independentReviewRetryCount(review);
50
+ export function reviewRetryCapReason(review) {
51
+ const retryCount = reviewRetryCount(review);
56
52
  const findings = Math.max(review.unresolvedCount ?? 0, review.issues?.length ?? 0);
57
53
  const findingLabel = `${findings} finding${findings === 1 ? '' : 's'}`;
58
54
  if (typeof review.maxRetries === 'number' && Number.isFinite(review.maxRetries)) {
59
- return `Independent review stopped after ${retryCount}/${review.maxRetries} fix attempts; ${findingLabel} remain. Request another review, or bypass publish (dangerous).`;
55
+ return `Review stopped after ${retryCount}/${review.maxRetries} fix attempts; ${findingLabel} remain. Request another review, or bypass publish (dangerous).`;
60
56
  }
61
- return `Independent review stopped after ${retryCount} fix attempt${retryCount === 1 ? '' : 's'}; ${findingLabel} remain. Request another review, or bypass publish (dangerous).`;
57
+ return `Review stopped after ${retryCount} fix attempt${retryCount === 1 ? '' : 's'}; ${findingLabel} remain. Request another review, or bypass publish (dangerous).`;
62
58
  }
63
- export function latestIndependentReview(reviews) {
59
+ export function latestReview(reviews) {
64
60
  return [...(reviews ?? [])]
65
61
  .reverse()
66
- .find((review) => review.source !== 'self-review' &&
67
- (review.verdict === 'pass' || review.verdict === 'issues'));
62
+ .find((review) => review.verdict === 'pass' || review.verdict === 'issues');
68
63
  }
69
- /** Latest terminal extra-review that hit its auto-fix cap. Package HEAD drift does not hide this. */
70
- export function latestExhaustedIndependentReview(reviews) {
71
- const latest = latestIndependentReview(reviews);
72
- if (!latest || !independentReviewFixRetriesExhausted(latest))
64
+ /** Latest terminal review that hit its auto-fix cap. Package HEAD drift does not hide this. */
65
+ export function latestExhaustedReview(reviews) {
66
+ const latest = latestReview(reviews);
67
+ if (!latest || !reviewFixRetriesExhausted(latest))
73
68
  return undefined;
74
69
  return latest;
75
70
  }
@@ -1 +1 @@
1
- {"version":3,"file":"review-retries.js","sourceRoot":"","sources":["../../src/runs/review-retries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"review-retries.js","sourceRoot":"","sources":["../../src/runs/review-retries.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ export function resolveRunSlotId(run) {
4
4
  const topLevel = run.slotId?.trim();
5
5
  if (topLevel)
6
6
  return topLevel;
7
- const preferredRoles = ['self-review-fix', 'self-review', 'dev'];
7
+ const preferredRoles = ['review-fix', 'review', 'dev'];
8
8
  for (const role of preferredRoles) {
9
9
  const context = run.agentContexts
10
10
  ?.slice()
@@ -1 +1 @@
1
- {"version":3,"file":"slot-resolution.js","sourceRoot":"","sources":["../../src/runs/slot-resolution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,EAAE,EAAY,MAAM,sBAAsB,CAAC;AAErE,2GAA2G;AAC3G,MAAM,UAAU,gBAAgB,CAC9B,GAAoD;IAEpD,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;IACpC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,MAAM,cAAc,GAAG,CAAC,iBAAiB,EAAE,aAAa,EAAE,KAAK,CAAU,CAAC;IAC1E,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa;YAC/B,EAAE,KAAK,EAAE;aACR,OAAO,EAAE;aACT,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,IAAI,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5E,IAAI,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC5D,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACpF,IAAI,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,OAAO,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAEhE,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC;IACtE,MAAM,YAAY,GAChB,QAAQ,EAAE,OACX,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACxB,OAAO,YAAY,IAAI,IAAI,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"slot-resolution.js","sourceRoot":"","sources":["../../src/runs/slot-resolution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,EAAE,EAAY,MAAM,sBAAsB,CAAC;AAErE,2GAA2G;AAC3G,MAAM,UAAU,gBAAgB,CAC9B,GAAoD;IAEpD,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;IACpC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,MAAM,cAAc,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAU,CAAC;IAChE,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa;YAC/B,EAAE,KAAK,EAAE;aACR,OAAO,EAAE;aACT,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,IAAI,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5E,IAAI,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC5D,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACpF,IAAI,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,OAAO,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAEhE,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC;IACtE,MAAM,YAAY,GAChB,QAAQ,EAAE,OACX,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACxB,OAAO,YAAY,IAAI,IAAI,CAAC;AAC9B,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import type { AgentRole, WorkerTerminalDisposition, WorkerTerminalEvidence } from '../contracts/index.js';
2
2
  /**
3
3
  * Where a child checklist unit hangs off its parent (ADR-060). The checklist is
4
- * a task-dir basename (`CHECKLIST.md`, `SELF-REVIEW.md`), never a path, so the
4
+ * a task-dir basename (`CHECKLIST.md`, `REVIEW.md`), never a path, so the
5
5
  * link survives the task directory travelling to a slot.
6
6
  */
7
7
  export interface WorkerSignalParentLink {
@@ -24,8 +24,8 @@ export interface WorkerSignal {
24
24
  step?: string;
25
25
  reason?: string;
26
26
  prNumber?: number;
27
- /** The worker completed a trivial update-branch task that does not need self-review. */
28
- needsSelfReview?: boolean;
27
+ /** The worker completed a trivial update-branch task that does not need review. */
28
+ needsReview?: boolean;
29
29
  /** Set only on a child unit signal under `subtasks/`; names the owning step. */
30
30
  parent?: WorkerSignalParentLink;
31
31
  timestamp: string;
@@ -1 +1 @@
1
- {"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["../../src/transport/signal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["../../src/transport/signal.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const PROTOCOL_VERSION = "0.38.0";
1
+ export declare const PROTOCOL_VERSION = "0.40.0";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -3,5 +3,5 @@
3
3
  // fleet can be upgraded deliberately; optional method/event fields remain
4
4
  // backward-compatible unless a caller requires a new node capability.
5
5
  // Format: semver-ish, increment when methods/events/frame format changes.
6
- export const PROTOCOL_VERSION = '0.38.0';
6
+ export const PROTOCOL_VERSION = '0.40.0';
7
7
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@farmslot/protocol",
3
- "version": "0.38.0",
3
+ "version": "0.40.0",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -373,6 +373,10 @@
373
373
  "types": "./dist/node/pack-portability.d.ts",
374
374
  "import": "./dist/node/pack-portability.js",
375
375
  "default": "./dist/node/pack-portability.js"
376
+ },
377
+ "./scripts/acceptance.mjs": {
378
+ "types": "./scripts/acceptance.d.mts",
379
+ "default": "./scripts/acceptance.mjs"
376
380
  }
377
381
  },
378
382
  "scripts": {
@@ -419,7 +423,10 @@
419
423
  "dist/**/*.js",
420
424
  "dist/**/*.d.ts",
421
425
  "dist/**/*.d.ts.map",
422
- "dist/**/*.js.map"
426
+ "dist/**/*.js.map",
427
+ "scripts/acceptance.mjs",
428
+ "scripts/acceptance.d.cts",
429
+ "scripts/acceptance.d.mts"
423
430
  ],
424
431
  "publishConfig": {
425
432
  "access": "public"