@akagilnc/pi-workflow-roles 0.1.5858 → 0.1.5862

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.
@@ -1800,8 +1800,20 @@ var init_reviewer_output = __esm({
1800
1800
  }
1801
1801
  });
1802
1802
 
1803
- // src/package-contracts/fixer-output.ts
1803
+ // src/package-contracts/self-review-fields.ts
1804
1804
  import { Type as Type7 } from "typebox";
1805
+ var diffItemsField;
1806
+ var init_self_review_fields = __esm({
1807
+ "src/package-contracts/self-review-fields.ts"() {
1808
+ "use strict";
1809
+ diffItemsField = Type7.Unknown({
1810
+ description: "commit \u524D\u81EA\u5BA1\u9010\u9879\u8868\uFF1A\u672C\u6B21\u65B0\u589E\u7684\u6BCF\u4E2A\u6D4B\u8BD5\u51FD\u6570\u3001\u6BCF\u4E2A\u751F\u4EA7\u51FD\u6570\u5404\u4E00\u884C { item: \u540D\u5B57, existing: \u4ED3\u91CC\u505A\u540C\u4E00\u4EF6\u4E8B\u7684\u73B0\u6210\u4EF6 path:line\uFF0C\u627E\u4E0D\u5230\u4E3A null, outcome: \u5DF2\u5E76\u5165 | \u4FDD\u7559 }\u3002"
1811
+ });
1812
+ }
1813
+ });
1814
+
1815
+ // src/package-contracts/fixer-output.ts
1816
+ import { Type as Type8 } from "typebox";
1805
1817
  function validateFixerOutput(value, _phase) {
1806
1818
  return value;
1807
1819
  }
@@ -1811,25 +1823,27 @@ var init_fixer_output = __esm({
1811
1823
  "use strict";
1812
1824
  init_open_tool_schema();
1813
1825
  init_terminating_infrastructure();
1826
+ init_self_review_fields();
1814
1827
  FIXER_OUTPUT_TOOL_NAME = "ak_fixer_output";
1815
1828
  PARTIALLY_COMPLETED_DEFINITION = "partially_completed \u53EA\u80FD\u5728\u6709\u5408\u6CD5\u62D2\u7EDD\u9879\uFF08\u5B8C\u6210\u9879\u4E0E\u5408\u6CD5\u62D2\u7EDD\u9879\u5E76\u5B58\uFF09\u65F6\u7528\uFF0C\u522B\u7684\u60C5\u51B5\u4E0D\u51C6\u7528\u3002";
1816
1829
  FIXER_STATUS_DESCRIPTION = `planned | completed | refused | unfinished | partially_completed\u3002unfinished \u7F3A\u524D\u7F6E\u6216\u8FDD\u5BAA\u7EA6\u675F\u81F4\u672C\u5C40\u672A\u5B8C\u6210\u65F6\u53EF\u7528\uFF0C\u7F3A\u5F85\u51B3 owner \u51B3\u5B9A\u6216\u7B54\u590D\u5C5E\u7F3A\u524D\u7F6E\u3002${PARTIALLY_COMPLETED_DEFINITION}`;
1817
- fixerOutputObject = Type7.Object({
1818
- status: Type7.Unknown({ description: FIXER_STATUS_DESCRIPTION }),
1819
- report: Type7.Unknown({ description: "\u5982\u5B9E\u7ED3\u679C\u62A5\u544A" }),
1820
- remainingScope: Type7.Unknown({
1830
+ fixerOutputObject = Type8.Object({
1831
+ status: Type8.Unknown({ description: FIXER_STATUS_DESCRIPTION }),
1832
+ report: Type8.Unknown({ description: "\u5982\u5B9E\u7ED3\u679C\u62A5\u544A" }),
1833
+ remainingScope: Type8.Unknown({
1821
1834
  description: "\u672C\u5C40\u540E\u5269\u4F59\u5DE5\u4F5C\uFF1B\u4F9D\u6CD5\u4E0D\u80FD\u5B8C\u6210\u7684\u8303\u56F4\u4E5F\u5199\u6B64\u5904\u3002"
1822
1835
  }),
1823
- blocker: Type7.Unknown({
1836
+ blocker: Type8.Unknown({
1824
1837
  description: "\u5408\u6CD5\u963B\u65AD\u5B8C\u6210\u7684 blocker\uFF0C\u539F\u6837\u7559\u5B58\u3002\u53EF\u5199 cause\uFF08authority_violation \u6216 prerequisite_unmet\uFF09\u3001evidence\uFF1Bprerequisite_unmet \u8FD8\u53EF\u5199 prerequisiteId\u3002"
1825
1838
  }),
1826
- reason: Type7.Unknown({
1839
+ reason: Type8.Unknown({
1827
1840
  description: "\u963B\u65AD\u539F\u56E0\uFF1A\u7F3A\u524D\u7F6E\u6216\u8FDD\u5BAA\u7EA6\u675F\u3002\u7F3A\u5F85\u51B3 owner \u51B3\u5B9A\u6216\u7B54\u590D\u5C5E\u7F3A\u524D\u7F6E\u3002"
1828
1841
  }),
1829
- classResults: Type7.Unknown({
1830
- description: "\u5404\u7C7B class \u7ED3\u7B97\uFF0C\u539F\u6837\u7559\u5B58\u3002\u5B8C\u6210\u9879\u7684 disposition \u4E3A completed\uFF0C\u53EF\u5199 name\u3001searchScope\u3001exceptions\uFF08where\u3001reason\uFF09\u3001commitSha\u3002\u62D2\u7EDD\u9879\u7684 disposition \u4E3A refused\uFF0C\u53EF\u5199 name\u3001remainingScope\u3001blocker\u3002"
1842
+ classResults: Type8.Unknown({
1843
+ description: "\u5404\u7C7B class \u7ED3\u7B97\uFF0C\u539F\u6837\u7559\u5B58\u3002\u6BCF\u7C7B\u5199 name\u3001shape\uFF08\u9519\u8BEF\u5F62\u72B6\u4E00\u53E5\uFF09\u3002\u6309\u4EE3\u7801\u5F62\u72B6\u8BA4\u7684\u7C7B\u5199 search\uFF08\u5B9E\u9645\u8DD1\u7684\u641C\u7D22\u547D\u4EE4\uFF0C\u539F\u6837\uFF09\u3001hits\uFF08\u547D\u4EE4\u8F93\u51FA\u7684\u6BCF\u4E2A\u547D\u4E2D\u4E00\u884C { where: path:line, outcome: \u5DF2\u4FEE | \u4E0D\u540C\u7C7B\uFF1A\u7406\u7531 }\uFF09\uFF1B\u6309\u60C5\u5F62\u8BA4\u7684\u7C7B\u5199 cases\uFF08\u6BCF\u79CD\u524D\u5E8F\u7ECF\u5386\u4E00\u884C { case: \u5BF9\u8C61\u5148\u7ECF\u5386\u4E86\u4EC0\u4E48, entry: \u4ECE\u771F\u5B9E\u5165\u53E3\u600E\u4E48\u8D70\u5230\u5B83, before: \u4FEE\u524D\u7ED3\u679C, after: \u4FEE\u540E\u7ED3\u679C }\uFF09\u3002\u5B8C\u6210\u9879\u7684 disposition \u4E3A completed\uFF0C\u53EF\u5199 commitSha\u3002\u62D2\u7EDD\u9879\u7684 disposition \u4E3A refused\uFF0C\u53EF\u5199 remainingScope\u3001blocker\u3002"
1831
1844
  }),
1832
- testEvidence: Type7.Unknown({
1845
+ diffItems: diffItemsField,
1846
+ testEvidence: Type8.Unknown({
1833
1847
  description: "\u6D4B\u8BD5\u8BC1\u636E\u6761\uFF1Bdiff \u542B\u6D4B\u8BD5\u6539\u52A8\u65F6\u63D0\u4EA4\uFF1B\u673A\u5668\u4E0D\u6838\u9A8C\u3002\u53EF\u5199 contract\uFF08\u6D4B\u8BD5\u6539\u52A8\u6240\u8BC1\u660E\u7684\u5951\u7EA6\uFF09\u3001minimumNecessaryCost\uFF08\u6D4B\u8BD5\u6539\u52A8\u7684\u4E00\u884C\u6700\u5C0F\u5FC5\u8981\u6210\u672C\uFF09\u3001measuredDuration\uFF08\u805A\u7126\u9A8C\u8BC1\u5B9E\u6D4B\u65F6\u957F\uFF09\u3002"
1834
1848
  })
1835
1849
  });
@@ -1840,7 +1854,7 @@ var init_fixer_output = __esm({
1840
1854
  });
1841
1855
 
1842
1856
  // src/package-contracts/worker-output.ts
1843
- import { Type as Type8 } from "typebox";
1857
+ import { Type as Type9 } from "typebox";
1844
1858
  function validateAcceptedCoderDetails(output) {
1845
1859
  return output;
1846
1860
  }
@@ -1853,16 +1867,18 @@ var init_worker_output = __esm({
1853
1867
  "use strict";
1854
1868
  init_open_tool_schema();
1855
1869
  init_fixer_output();
1870
+ init_self_review_fields();
1856
1871
  init_terminating_infrastructure();
1857
1872
  CODER_OUTPUT_TOOL_NAME = "ak_coder_output";
1858
1873
  CODER_STATUS_DESCRIPTION = `planned | completed | refused | partially_completed | unfinished\u3002unfinished\uFF1A\u7F3A\u524D\u7F6E\u6216\u8FDD\u5BAA\u7EA6\u675F\u81F4\u672C\u5C40\u672A\u5B8C\u6210\u3002${PARTIALLY_COMPLETED_DEFINITION}`;
1859
- coderOutputObject = Type8.Object({
1860
- status: Type8.Unknown({ description: CODER_STATUS_DESCRIPTION }),
1861
- report: Type8.Unknown({ description: "\u5982\u5B9E\u7ED3\u679C\u62A5\u544A" }),
1862
- remainingScope: Type8.Unknown({ description: "\u672C\u5C40\u540E\u5269\u4F59\u5DE5\u4F5C" }),
1863
- reason: Type8.Unknown({
1874
+ coderOutputObject = Type9.Object({
1875
+ status: Type9.Unknown({ description: CODER_STATUS_DESCRIPTION }),
1876
+ report: Type9.Unknown({ description: "\u5982\u5B9E\u7ED3\u679C\u62A5\u544A" }),
1877
+ remainingScope: Type9.Unknown({ description: "\u672C\u5C40\u540E\u5269\u4F59\u5DE5\u4F5C" }),
1878
+ reason: Type9.Unknown({
1864
1879
  description: "\u963B\u65AD\u539F\u56E0\uFF1A\u7F3A\u524D\u7F6E\u6216\u8FDD\u5BAA\u7EA6\u675F\u3002\u7F3A\u5F85\u51B3 owner \u51B3\u5B9A\u6216\u7B54\u590D\u5C5E\u7F3A\u524D\u7F6E\u3002"
1865
- })
1880
+ }),
1881
+ diffItems: diffItemsField
1866
1882
  });
1867
1883
  coderOutputSchema = withTerminatingOutputDeclarations(
1868
1884
  openToolObject(coderOutputObject)
@@ -1878,7 +1894,7 @@ var init_canonical_json = __esm({
1878
1894
  });
1879
1895
 
1880
1896
  // src/doctor-contracts.ts
1881
- import { Type as Type9 } from "typebox";
1897
+ import { Type as Type10 } from "typebox";
1882
1898
  function validateDoctorSubmissionShape(value) {
1883
1899
  return value;
1884
1900
  }
@@ -1904,25 +1920,25 @@ var init_doctor_contracts = __esm({
1904
1920
  biteNone = "noRealBite";
1905
1921
  DOCTOR_BITE_KINDS = [biteActual, biteNone];
1906
1922
  DOCTOR_STATUS_DESCRIPTION = "completed | refused\u3002completed \u5141\u8BB8\u7A7A findings\uFF1Brefused \u4EC5\u5F53\u8BC1\u636E\u4E0D\u8DB3\u4EE5\u652F\u6491\u5982\u5B9E\u6848\u8BC1\u8BCD";
1907
- doctorSubmissionObject = Type9.Object({
1908
- status: Type9.Unknown({ description: DOCTOR_STATUS_DESCRIPTION }),
1909
- case: Type9.Unknown({
1923
+ doctorSubmissionObject = Type10.Object({
1924
+ status: Type10.Unknown({ description: DOCTOR_STATUS_DESCRIPTION }),
1925
+ case: Type10.Unknown({
1910
1926
  description: "\u7559\u5B58\u592A\u533B\u7F72\u6848\u8EAB\u4EFD\uFF0C\u539F\u6837\u7559\u5B58\uFF08\u5982 issueNumber\u3001runsPath\uFF09\u3002\u673A\u68B0\u5C42\u53E6\u6309\u7ED1\u5B9A run \u6295\u5F71\u6848\u8EAB\u4EFD\uFF0C\u4E0D\u5728\u672C\u5B57\u6BB5\u91CD\u5224\u3002"
1911
1927
  }),
1912
- findings: Type9.Unknown({
1928
+ findings: Type10.Unknown({
1913
1929
  description: `\u9010\u6761\u8D44\u4EA7\u89C2\u5BDF\u4E0E\u5904\u65B9\uFF0C\u539F\u6837\u7559\u5B58\u3002\u4E00\u6761\u53EF\u542B targetKey\u3001targetKind\uFF08${DOCTOR_TARGET_KINDS.join(" | ")}\uFF09\u3001observation\u3001evidenceIds\u3001disposition\uFF08${DOCTOR_DISPOSITIONS.join(" | ")}\uFF09\u3001assetEvidence\uFF08targetKey\u3001targetKind\u3001evidenceId\uFF09\u3001guardrails\uFF08reproducibleFailure\u3001owningSeamOrInvariant\u3001deletionOrSimplificationSuffices\uFF0C\u5404\u9879\u53EF\u542B answer\u3001evidenceIds\u3001explanation\uFF09\u3001prescription\uFF08kind \u4E3A ${DOCTOR_PRESCRIPTION_KINDS.join(" | ")}\uFF0C\u53E6\u53EF\u5199 recommendation\u3001necessityExplanation\uFF09\u3001lastRealBite\uFF08kind \u4E3A ${DOCTOR_BITE_KINDS.join(" | ")}\uFF0C\u53E6\u53EF\u5199 targetKey\u3001evidenceId\u3001eligibleEvidenceIds\uFF09\u3002\u4E0D\u8981\u6C42\u4EFB\u4F55\u5904\u65B9\u6216\u53EF\u590D\u7528 finding\uFF1B\u7F3A\u53EF\u590D\u7528\u8D44\u4EA7\u6216 bounded-bite \u8BC1\u636E\u53EA\u6392\u9664\u5BF9\u5E94\u8D44\u4EA7\u5904\u65B9\u3002\u673A\u5668\u4E0D\u6838\u9A8C\u3002`
1914
1930
  }),
1915
- reason: Type9.Unknown({
1931
+ reason: Type10.Unknown({
1916
1932
  description: "\u8BC1\u636E\u4E0D\u8DB3\u4EE5\u652F\u6491\u5982\u5B9E\u8BC1\u8BCD\u7684\u539F\u56E0\uFF1B\u4EC5 refused \u65F6\u7528\u3002"
1917
1933
  }),
1918
- missingEvidence: Type9.Unknown({
1934
+ missingEvidence: Type10.Unknown({
1919
1935
  description: "\u5982\u5B9E\u8BC1\u8BCD\u6240\u9700\u800C\u5C1A\u7F3A\u7684\u8BC1\u636E\uFF0C\u539F\u6837\u7559\u5B58\uFF08\u5982\u6BCF\u9879 need\u3001targetKeys\uFF09\u3002"
1920
1936
  })
1921
1937
  });
1922
1938
  doctorSubmissionSchema = withTerminatingOutputDeclarations(
1923
1939
  openToolObject(doctorSubmissionObject)
1924
1940
  );
1925
- doctorEvidenceReadSchema = Type9.Object({ evidenceId: Type9.String({ minLength: 1, description: "\u5F85\u8BFB\u7559\u5B58\u8BC1\u636E\u6807\u8BC6" }), offset: Type9.Optional(Type9.Integer({ minimum: 0, description: "\u8D77\u59CB\u5B57\u8282\u504F\u79FB\uFF08\u4ECE 0 \u8BA1\uFF09" })), limit: Type9.Optional(Type9.Integer({ minimum: 1, description: "\u8FD4\u56DE\u5B57\u8282\u6570\uFF08\u65E0\u4E0A\u9650\uFF09" })) }, { additionalProperties: true });
1941
+ doctorEvidenceReadSchema = Type10.Object({ evidenceId: Type10.String({ minLength: 1, description: "\u5F85\u8BFB\u7559\u5B58\u8BC1\u636E\u6807\u8BC6" }), offset: Type10.Optional(Type10.Integer({ minimum: 0, description: "\u8D77\u59CB\u5B57\u8282\u504F\u79FB\uFF08\u4ECE 0 \u8BA1\uFF09" })), limit: Type10.Optional(Type10.Integer({ minimum: 1, description: "\u8FD4\u56DE\u5B57\u8282\u6570\uFF08\u65E0\u4E0A\u9650\uFF09" })) }, { additionalProperties: true });
1926
1942
  DoctorEvidenceStore = class {
1927
1943
  constructor(patient) {
1928
1944
  this.patient = patient;
@@ -1991,7 +2007,7 @@ var init_exact_utf8 = __esm({
1991
2007
  });
1992
2008
 
1993
2009
  // src/merger-contracts.ts
1994
- import { Type as Type10 } from "typebox";
2010
+ import { Type as Type11 } from "typebox";
1995
2011
  function fail(message = "Merger input violates its exact contract") {
1996
2012
  throw new MergerInputContractError(message);
1997
2013
  }
@@ -2025,25 +2041,25 @@ var init_merger_contracts = __esm({
2025
2041
  init_open_tool_schema();
2026
2042
  init_terminating_infrastructure();
2027
2043
  init_unknown_value();
2028
- materialSchema = Type10.Object({ bytesBase64: Type10.String(), sha256: Type10.String() });
2029
- checkSchema = Type10.Object({ name: Type10.String({ minLength: 1 }), argv: Type10.Array(Type10.String({ minLength: 1 }), { minItems: 1 }) });
2030
- mergerInputSchema = Type10.Object({
2031
- attemptId: Type10.String({ minLength: 1, description: "\u5BF9\u8D26 attempt \u8EAB\u4EFD\uFF08transport\uFF09" }),
2032
- targetObjectId: Type10.String({ description: "\u6750\u6599\uFF1Atarget parent OID\uFF1B\u53EF\u7A7A" }),
2033
- sourceObjectId: Type10.String({ description: "\u6750\u6599\uFF1Asource parent OID\uFF1B\u53EF\u7A7A" }),
2044
+ materialSchema = Type11.Object({ bytesBase64: Type11.String(), sha256: Type11.String() });
2045
+ checkSchema = Type11.Object({ name: Type11.String({ minLength: 1 }), argv: Type11.Array(Type11.String({ minLength: 1 }), { minItems: 1 }) });
2046
+ mergerInputSchema = Type11.Object({
2047
+ attemptId: Type11.String({ minLength: 1, description: "\u5BF9\u8D26 attempt \u8EAB\u4EFD\uFF08transport\uFF09" }),
2048
+ targetObjectId: Type11.String({ description: "\u6750\u6599\uFF1Atarget parent OID\uFF1B\u53EF\u7A7A" }),
2049
+ sourceObjectId: Type11.String({ description: "\u6750\u6599\uFF1Asource parent OID\uFF1B\u53EF\u7A7A" }),
2034
2050
  // #1168: task/authority dispatch copies removed; git-fact intents remain.
2035
- materials: Type10.Object({ targetIntent: materialSchema, sourceIntent: materialSchema }),
2036
- expectedConflictPaths: Type10.Array(Type10.String(), { description: "\u6750\u6599\uFF1A\u5F53\u524D\u672A\u5408\u5E76\u8DEF\u5F84\uFF1B\u53EF\u7A7A" }),
2037
- resolutionScope: Type10.Array(Type10.String(), { description: "\u6750\u6599\uFF1A\u89E3\u6790\u8303\u56F4\u63D0\u793A\uFF1B\u53EF\u7A7A" }),
2038
- authorizedChecks: Type10.Array(checkSchema)
2051
+ materials: Type11.Object({ targetIntent: materialSchema, sourceIntent: materialSchema }),
2052
+ expectedConflictPaths: Type11.Array(Type11.String(), { description: "\u6750\u6599\uFF1A\u5F53\u524D\u672A\u5408\u5E76\u8DEF\u5F84\uFF1B\u53EF\u7A7A" }),
2053
+ resolutionScope: Type11.Array(Type11.String(), { description: "\u6750\u6599\uFF1A\u89E3\u6790\u8303\u56F4\u63D0\u793A\uFF1B\u53EF\u7A7A" }),
2054
+ authorizedChecks: Type11.Array(checkSchema)
2039
2055
  });
2040
2056
  MERGER_STATUS_DESCRIPTION = "completed | escalate";
2041
- mergerOutputObject = Type10.Object({
2042
- status: Type10.Unknown({ description: MERGER_STATUS_DESCRIPTION }),
2043
- attemptId: Type10.Unknown({ description: "\u5DF2\u53D7\u7406\u5408\u5E76 attempt \u8EAB\u4EFD" }),
2044
- report: Type10.Unknown({ description: "\u5982\u5B9E\u7ED3\u679C\u62A5\u544A" }),
2045
- mergeCommitId: Type10.Unknown({ description: "\u5B8C\u6210\u5408\u5E76 commit object ID" }),
2046
- diagnosis: Type10.Unknown({
2057
+ mergerOutputObject = Type11.Object({
2058
+ status: Type11.Unknown({ description: MERGER_STATUS_DESCRIPTION }),
2059
+ attemptId: Type11.Unknown({ description: "\u5DF2\u53D7\u7406\u5408\u5E76 attempt \u8EAB\u4EFD" }),
2060
+ report: Type11.Unknown({ description: "\u5982\u5B9E\u7ED3\u679C\u62A5\u544A" }),
2061
+ mergeCommitId: Type11.Unknown({ description: "\u5B8C\u6210\u5408\u5E76 commit object ID" }),
2062
+ diagnosis: Type11.Unknown({
2047
2063
  description: "\u5408\u5E76\u65E0\u6CD5\u6216\u4E0D\u5E94\u7531\u672C\u5E2D\u5B8C\u6210\u7684\u539F\u56E0\uFF08\u542B\u65E0\u8FDB\u884C\u4E2D\u5408\u5E76\u3001\u65E0\u6D3B\u53EF\u5E72\u3001\u9700\u65B0\u7684\u4EA7\u54C1/\u6743\u529B\u51B3\u5B9A\uFF09"
2048
2064
  })
2049
2065
  });
@@ -2098,7 +2114,7 @@ var init_countersign_contracts = __esm({
2098
2114
  });
2099
2115
 
2100
2116
  // src/gleaner-left-contracts.ts
2101
- import { Type as Type11 } from "typebox";
2117
+ import { Type as Type12 } from "typebox";
2102
2118
  var GLEANER_LEFT_OUTPUT_TOOL_NAME, gleanerLeftOutputSchema, GLEANER_LEFT_BASE_FLAG;
2103
2119
  var init_gleaner_left_contracts = __esm({
2104
2120
  "src/gleaner-left-contracts.ts"() {
@@ -2109,11 +2125,11 @@ var init_gleaner_left_contracts = __esm({
2109
2125
  GLEANER_LEFT_OUTPUT_TOOL_NAME = "ak_gleaner_left_output";
2110
2126
  gleanerLeftOutputSchema = withTerminatingOutputDeclarations(
2111
2127
  openToolObject(
2112
- Type11.Object({
2113
- status: Type11.Unknown({
2128
+ Type12.Object({
2129
+ status: Type12.Unknown({
2114
2130
  description: "completed"
2115
2131
  }),
2116
- findings: Type11.Unknown({
2132
+ findings: Type12.Unknown({
2117
2133
  description: "\u5F39\u7AE0\u5217\u8868\uFF1B\u6BCF\u6761\u53EF\u542B pointer\uFF08\u6587\u4EF6/\u884C\u6307\u9488\uFF09\u4E0E statement\uFF08\u7591\u70B9\u9648\u8FF0\uFF09\uFF0C\u539F\u6837\u7559\u5B58\u3002\u7A7A\u5217\u8868\u5408\u6CD5\u5B8C\u5C40\uFF1B\u673A\u5668\u4E0D\u5224\u5F39\u7AE0\u662F\u5426\u6210\u7ACB\u3002"
2118
2134
  })
2119
2135
  })
@@ -2201,7 +2217,7 @@ var init_ticket_provenance_contracts = __esm({
2201
2217
  });
2202
2218
 
2203
2219
  // src/diarist-contracts.ts
2204
- import { Type as Type12 } from "typebox";
2220
+ import { Type as Type13 } from "typebox";
2205
2221
  function projectDiaristSessions(value) {
2206
2222
  const raw = value?.sessions;
2207
2223
  if (raw === void 0) return [];
@@ -2234,20 +2250,20 @@ var init_diarist_contracts = __esm({
2234
2250
  DIARIST_SESSIONS_DESCRIPTION = "\u5BF9\u8BDD\u8FB9\u754C\u3002\u6BCF\u5377\u542B path\uFF08\u4F1A\u8BDD\u5377\u7EDD\u5BF9\u6216\u53EF\u8BFB\u8DEF\u5F84\uFF09\u4E0E ranges\uFF08\u672C\u5377\u672C\u8F6E\u5404\u533A\u95F4\uFF09\u3002\u6BCF\u6BB5\u533A\u95F4\u542B from / to\uFF1B\u8D77\u70B9\u4E0E\u7EC8\u70B9\u5404\u5199 id\uFF08\u539F\u751F id\uFF09\u6216 line\uFF08\u672C\u8F6E\u884C\u53F7\uFF09\uFF0C\u4E8C\u9009\u4E00\u3002\u7A7A\u5217\u8868\uFF1D\u672C\u8F6E\u65E0\u5BF9\u8BDD\u53EF\u5212\u3002\u7AEF\u70B9\u65E0\u6CD5\u6307\u540D\u65F6\u8D70 reask\uFF0C\u4E0D\u4E2D\u6B62\u3002";
2235
2251
  diaristOutputSchema = withTerminatingOutputDeclarations(
2236
2252
  openToolObject(
2237
- Type12.Object({
2238
- status: Type12.Unknown({
2253
+ Type13.Object({
2254
+ status: Type13.Unknown({
2239
2255
  description: "completed | escalate"
2240
2256
  }),
2241
- ticketNumber: Type12.Optional(
2242
- Type12.Unknown({
2257
+ ticketNumber: Type13.Optional(
2258
+ Type13.Unknown({
2243
2259
  description: "\u672C\u5EAD\u5BF9\u8C61\u7968\u53F7\uFF08\u6B63\u6574\u6570\uFF09\u6216 null/\u7701\u7565\uFF1D\u771F\u65E0\u7968\uFF1B\u4E0B\u6E38\u8D70 typed \u952E\uFF1B\u8BA4\u4E0D\u51FA\u7528 status=escalate\uFF0C\u4E0D\u6D17\u6210\u65E0\u5F55\u3002\u673A\u68B0\u5C42\u4E0D\u91CD\u5224\u3002"
2244
2260
  })
2245
2261
  ),
2246
- reason: Type12.Unknown({
2262
+ reason: Type13.Unknown({
2247
2263
  description: "status \u4E3A escalate \u65F6\uFF1A\u8BA4\u4E0D\u51FA\u672C\u5EAD\u5BF9\u8C61\u7684\u539F\u56E0"
2248
2264
  }),
2249
- sessions: Type12.Optional(Type12.Unknown({ description: DIARIST_SESSIONS_DESCRIPTION })),
2250
- ticketSessions: Type12.Unknown({
2265
+ sessions: Type13.Optional(Type13.Unknown({ description: DIARIST_SESSIONS_DESCRIPTION })),
2266
+ ticketSessions: Type13.Unknown({
2251
2267
  description: `\u591A\u7968\u5EAD\u9010\u7968\u5BF9\u8BDD\u8FB9\u754C\uFF1B\u6BCF\u7968\u542B ticketNumber\uFF08\u672C\u6761\u8FB9\u754C\u6240\u5F52\u7968\u53F7\uFF0C\u6B63\u6574\u6570\uFF09\u4E0E sessions\uFF08${DIARIST_SESSIONS_DESCRIPTION}\uFF09\u3002\u4E00\u6B21\u4EA4\u5377\u5404\u7968\u5404\u81EA\u5206\u5F55\u3002\u4E0E\u5355\u7968 sessions \u4E8C\u9009\u4E00\u3002`
2252
2268
  })
2253
2269
  })
@@ -2257,7 +2273,7 @@ var init_diarist_contracts = __esm({
2257
2273
  });
2258
2274
 
2259
2275
  // src/secretariat-contracts.ts
2260
- import { Type as Type13 } from "typebox";
2276
+ import { Type as Type14 } from "typebox";
2261
2277
  var SECRETARIAT_OUTPUT_TOOL_NAME, secretariatVerdictSchema;
2262
2278
  var init_secretariat_contracts = __esm({
2263
2279
  "src/secretariat-contracts.ts"() {
@@ -2265,19 +2281,19 @@ var init_secretariat_contracts = __esm({
2265
2281
  init_terminating_infrastructure();
2266
2282
  SECRETARIAT_OUTPUT_TOOL_NAME = "ak_secretariat_output";
2267
2283
  secretariatVerdictSchema = withTerminatingOutputDeclarations(
2268
- Type13.Object(
2284
+ Type14.Object(
2269
2285
  {
2270
- secretariatStatus: Type13.Unknown({
2286
+ secretariatStatus: Type14.Unknown({
2271
2287
  description: "converged | escalate"
2272
2288
  }),
2273
- ticketNumber: Type13.Optional(
2274
- Type13.Unknown({ description: "\u672C\u7968\u53F7\uFF1B\u7F72\u65F6\u6307\u5411\u6700\u7EC8\u6B63\u6587\u6240\u5728\u7968" })
2289
+ ticketNumber: Type14.Optional(
2290
+ Type14.Unknown({ description: "\u672C\u7968\u53F7\uFF1B\u7F72\u65F6\u6307\u5411\u6700\u7EC8\u6B63\u6587\u6240\u5728\u7968" })
2275
2291
  ),
2276
- note: Type13.Unknown({
2292
+ note: Type14.Unknown({
2277
2293
  description: "\u9644\u6CE8\uFF1B\u7F72\uFF08converged\uFF09\u65F6\u9010\u9898\u5217\u7B54\u6848\u3001\u4F9D\u636E\u4E0E\u843D\u5728\u54EA\u4E00\u53E5\uFF1B\u5C01\u8FD8\uFF08escalate\uFF09\u65F6\u9996\u5199\u300C\u5C01\u8FD8\u300D\u3002\u539F\u6837\u7559\u5B58\u3002"
2278
2294
  }),
2279
- evidence: Type13.Optional(Type13.Unknown({ description: "\u7559\u5B58\u8BC1\u636E" })),
2280
- decisionGate: Type13.Unknown({
2295
+ evidence: Type14.Optional(Type14.Unknown({ description: "\u7559\u5B58\u8BC1\u636E" })),
2296
+ decisionGate: Type14.Unknown({
2281
2297
  description: "\u672C\u8F6E\u9898\u76EE\uFF1A\u6BCF\u9898 question\u3001options\uFF08\u7A3F\u91CC\u505A\u6CD5\uFF0F\u53E6\u4E00\u505A\u6CD5\uFF09\u3001\u4E24\u8FB9\u4EE3\u4EF7\u3001\u5EFA\u8BAE\u3002\u539F\u6837\u7559\u5B58\u3002"
2282
2298
  })
2283
2299
  },
@@ -3060,7 +3076,7 @@ var init_submission_errors = __esm({
3060
3076
  });
3061
3077
 
3062
3078
  // src/collector-tool-schemas.ts
3063
- import { Type as Type14 } from "typebox";
3079
+ import { Type as Type15 } from "typebox";
3064
3080
  var collectorOutputBaseSchema, collectorOutputArgsSchema;
3065
3081
  var init_collector_tool_schemas = __esm({
3066
3082
  "src/collector-tool-schemas.ts"() {
@@ -3068,11 +3084,11 @@ var init_collector_tool_schemas = __esm({
3068
3084
  init_open_tool_schema();
3069
3085
  init_terminating_infrastructure();
3070
3086
  collectorOutputBaseSchema = openToolObject(
3071
- Type14.Object({
3072
- groups: Type14.Unsafe({
3087
+ Type15.Object({
3088
+ groups: Type15.Unsafe({
3073
3089
  description: "\u6309\u673A\u5668\u8EAB\u4EFD\u5F52\u7EC4\u7684\u51FA\u5E2D\u3001\u6750\u6599\u4E0E\u9010\u6761 findings\uFF08LLM \u81EA\u884C\u4ECE\u5BBF\u4E3B CLI \u53D6\u8BC1\u6574\u7406\uFF1B\u4EE3\u7801\u4E0D\u4EE3\u6536\u4E0D\u5F52\u5E76\uFF09\u3002"
3074
3090
  }),
3075
- unfinishedReasons: Type14.Unknown({
3091
+ unfinishedReasons: Type15.Unknown({
3076
3092
  description: "\u672A\u5B8C\u6210\u539F\u56E0\uFF1B\u53D6\u8BC1\u53D7\u9650\u65F6\u5982\u5B9E\u62A5\u544A\u3002"
3077
3093
  })
3078
3094
  })
@@ -8097,7 +8113,7 @@ var init_invocation = __esm({
8097
8113
  });
8098
8114
 
8099
8115
  // src/report-ticket-tool.ts
8100
- import { Type as Type15 } from "typebox";
8116
+ import { Type as Type16 } from "typebox";
8101
8117
  import { existsSync as existsSync4 } from "node:fs";
8102
8118
  function pageString(page, key) {
8103
8119
  const value = page?.[key];
@@ -8206,9 +8222,9 @@ var init_report_ticket_tool = __esm({
8206
8222
  init_run_ticket_number();
8207
8223
  init_unknown_value();
8208
8224
  REPORT_TICKET_TOOL_NAME = "ak_report_ticket";
8209
- reportTicketArgsSchema = Type15.Object(
8225
+ reportTicketArgsSchema = Type16.Object(
8210
8226
  {
8211
- ticketNumber: Type15.Unknown({
8227
+ ticketNumber: Type16.Unknown({
8212
8228
  description: "\u672C\u7968\u53F7\uFF08\u6B63\u6574\u6570\u3001\u6570\u5B57\u4E32\u6216\u524D\u5BFC #N\uFF09\u3002\u5DF2\u77E5\u7968\u53F7\u65F6\u5F00\u5DE5\u5373\u62A5\uFF1B\u5C1A\u65E0\u7968\u53F7\u65F6\u4E0D\u8981\u8C03\u7528\u3002"
8213
8229
  })
8214
8230
  },
@@ -17814,7 +17830,7 @@ var init_analyst_model_groups = __esm({
17814
17830
 
17815
17831
  // src/analyst-entry.ts
17816
17832
  import { readFile as readFile12 } from "node:fs/promises";
17817
- import { Type as Type16 } from "typebox";
17833
+ import { Type as Type17 } from "typebox";
17818
17834
  function cachedPageMatchesRequestedScope(page, input) {
17819
17835
  if (page.bookKey !== input.bookKey) return false;
17820
17836
  const requestedTicket = input.ticketNumber ?? input.issueNumber;
@@ -18019,16 +18035,16 @@ var init_analyst_entry = __esm({
18019
18035
  }
18020
18036
  }
18021
18037
  };
18022
- analystSweepModeInputSchema = Type16.Object(
18038
+ analystSweepModeInputSchema = Type17.Object(
18023
18039
  {
18024
- mode: Type16.Literal("sweep"),
18025
- mergedPullRequests: Type16.Array(
18026
- Type16.Object(
18040
+ mode: Type17.Literal("sweep"),
18041
+ mergedPullRequests: Type17.Array(
18042
+ Type17.Object(
18027
18043
  {
18028
- projectRoot: Type16.String(),
18044
+ projectRoot: Type17.String(),
18029
18045
  /** 排除后改动行数 — omit or 0 → typed 空缺; finite ≥ 0 only. */
18030
- changedLines: Type16.Optional(
18031
- Type16.Number({ minimum: 0, maximum: Number.MAX_VALUE })
18046
+ changedLines: Type17.Optional(
18047
+ Type17.Number({ minimum: 0, maximum: Number.MAX_VALUE })
18032
18048
  )
18033
18049
  }
18034
18050
  )
@@ -20972,18 +20988,18 @@ import { join as join30 } from "node:path";
20972
20988
  import { Value as Value2 } from "typebox/value";
20973
20989
 
20974
20990
  // src/activation-trace.ts
20975
- import { Type as Type17 } from "typebox";
20976
- var causeSchema = Type17.Object({
20977
- identity: Type17.String({ minLength: 1 }),
20978
- name: Type17.String({ minLength: 1 }),
20979
- message: Type17.String(),
20980
- evidenceId: Type17.Optional(Type17.String({ minLength: 1 }))
20991
+ import { Type as Type18 } from "typebox";
20992
+ var causeSchema = Type18.Object({
20993
+ identity: Type18.String({ minLength: 1 }),
20994
+ name: Type18.String({ minLength: 1 }),
20995
+ message: Type18.String(),
20996
+ evidenceId: Type18.Optional(Type18.String({ minLength: 1 }))
20981
20997
  }, { additionalProperties: false });
20982
- var activationTraceRecordSchema = Type17.Object({
20983
- role: Type17.String({ minLength: 1 }),
20984
- stageId: Type17.String({ pattern: "^[a-z][a-z0-9-]*$" }),
20985
- status: Type17.Literal("failed"),
20986
- timestamp: Type17.String({ format: "date-time" }),
20998
+ var activationTraceRecordSchema = Type18.Object({
20999
+ role: Type18.String({ minLength: 1 }),
21000
+ stageId: Type18.String({ pattern: "^[a-z][a-z0-9-]*$" }),
21001
+ status: Type18.Literal("failed"),
21002
+ timestamp: Type18.String({ format: "date-time" }),
20987
21003
  cause: causeSchema
20988
21004
  }, { additionalProperties: false });
20989
21005
  var activationCauseEvidence = 0;
@@ -21146,10 +21162,10 @@ init_engine_detour();
21146
21162
  init_engine_detour_usage();
21147
21163
  init_run_terminal_artifacts();
21148
21164
  init_serialize_thrown_value();
21149
- import { Type as Type18 } from "typebox";
21150
- var engineDetourArgsSchema = Type18.Object(
21165
+ import { Type as Type19 } from "typebox";
21166
+ var engineDetourArgsSchema = Type19.Object(
21151
21167
  {
21152
- argv: Type18.Array(Type18.String({ minLength: 1 }), {
21168
+ argv: Type19.Array(Type19.String({ minLength: 1 }), {
21153
21169
  minItems: 1,
21154
21170
  description: "\u9996\u9879\u4E3A PATH \u4E2D\u7684\u53EF\u6267\u884C\u6587\u4EF6\uFF0C\u5176\u4F59\u9879\u4E3A\u53C2\u6570\u3002"
21155
21171
  })
@@ -756,8 +756,20 @@ var init_navigator_output = __esm({
756
756
  }
757
757
  });
758
758
 
759
- // src/package-contracts/fixer-output.ts
759
+ // src/package-contracts/self-review-fields.ts
760
760
  import { Type as Type7 } from "typebox";
761
+ var diffItemsField;
762
+ var init_self_review_fields = __esm({
763
+ "src/package-contracts/self-review-fields.ts"() {
764
+ "use strict";
765
+ diffItemsField = Type7.Unknown({
766
+ description: "commit \u524D\u81EA\u5BA1\u9010\u9879\u8868\uFF1A\u672C\u6B21\u65B0\u589E\u7684\u6BCF\u4E2A\u6D4B\u8BD5\u51FD\u6570\u3001\u6BCF\u4E2A\u751F\u4EA7\u51FD\u6570\u5404\u4E00\u884C { item: \u540D\u5B57, existing: \u4ED3\u91CC\u505A\u540C\u4E00\u4EF6\u4E8B\u7684\u73B0\u6210\u4EF6 path:line\uFF0C\u627E\u4E0D\u5230\u4E3A null, outcome: \u5DF2\u5E76\u5165 | \u4FDD\u7559 }\u3002"
767
+ });
768
+ }
769
+ });
770
+
771
+ // src/package-contracts/fixer-output.ts
772
+ import { Type as Type8 } from "typebox";
761
773
  function validateFixerOutput(value, _phase) {
762
774
  return value;
763
775
  }
@@ -767,25 +779,27 @@ var init_fixer_output = __esm({
767
779
  "use strict";
768
780
  init_open_tool_schema();
769
781
  init_terminating_infrastructure();
782
+ init_self_review_fields();
770
783
  FIXER_OUTPUT_TOOL_NAME = "ak_fixer_output";
771
784
  PARTIALLY_COMPLETED_DEFINITION = "partially_completed \u53EA\u80FD\u5728\u6709\u5408\u6CD5\u62D2\u7EDD\u9879\uFF08\u5B8C\u6210\u9879\u4E0E\u5408\u6CD5\u62D2\u7EDD\u9879\u5E76\u5B58\uFF09\u65F6\u7528\uFF0C\u522B\u7684\u60C5\u51B5\u4E0D\u51C6\u7528\u3002";
772
785
  FIXER_STATUS_DESCRIPTION = `planned | completed | refused | unfinished | partially_completed\u3002unfinished \u7F3A\u524D\u7F6E\u6216\u8FDD\u5BAA\u7EA6\u675F\u81F4\u672C\u5C40\u672A\u5B8C\u6210\u65F6\u53EF\u7528\uFF0C\u7F3A\u5F85\u51B3 owner \u51B3\u5B9A\u6216\u7B54\u590D\u5C5E\u7F3A\u524D\u7F6E\u3002${PARTIALLY_COMPLETED_DEFINITION}`;
773
- fixerOutputObject = Type7.Object({
774
- status: Type7.Unknown({ description: FIXER_STATUS_DESCRIPTION }),
775
- report: Type7.Unknown({ description: "\u5982\u5B9E\u7ED3\u679C\u62A5\u544A" }),
776
- remainingScope: Type7.Unknown({
786
+ fixerOutputObject = Type8.Object({
787
+ status: Type8.Unknown({ description: FIXER_STATUS_DESCRIPTION }),
788
+ report: Type8.Unknown({ description: "\u5982\u5B9E\u7ED3\u679C\u62A5\u544A" }),
789
+ remainingScope: Type8.Unknown({
777
790
  description: "\u672C\u5C40\u540E\u5269\u4F59\u5DE5\u4F5C\uFF1B\u4F9D\u6CD5\u4E0D\u80FD\u5B8C\u6210\u7684\u8303\u56F4\u4E5F\u5199\u6B64\u5904\u3002"
778
791
  }),
779
- blocker: Type7.Unknown({
792
+ blocker: Type8.Unknown({
780
793
  description: "\u5408\u6CD5\u963B\u65AD\u5B8C\u6210\u7684 blocker\uFF0C\u539F\u6837\u7559\u5B58\u3002\u53EF\u5199 cause\uFF08authority_violation \u6216 prerequisite_unmet\uFF09\u3001evidence\uFF1Bprerequisite_unmet \u8FD8\u53EF\u5199 prerequisiteId\u3002"
781
794
  }),
782
- reason: Type7.Unknown({
795
+ reason: Type8.Unknown({
783
796
  description: "\u963B\u65AD\u539F\u56E0\uFF1A\u7F3A\u524D\u7F6E\u6216\u8FDD\u5BAA\u7EA6\u675F\u3002\u7F3A\u5F85\u51B3 owner \u51B3\u5B9A\u6216\u7B54\u590D\u5C5E\u7F3A\u524D\u7F6E\u3002"
784
797
  }),
785
- classResults: Type7.Unknown({
786
- description: "\u5404\u7C7B class \u7ED3\u7B97\uFF0C\u539F\u6837\u7559\u5B58\u3002\u5B8C\u6210\u9879\u7684 disposition \u4E3A completed\uFF0C\u53EF\u5199 name\u3001searchScope\u3001exceptions\uFF08where\u3001reason\uFF09\u3001commitSha\u3002\u62D2\u7EDD\u9879\u7684 disposition \u4E3A refused\uFF0C\u53EF\u5199 name\u3001remainingScope\u3001blocker\u3002"
798
+ classResults: Type8.Unknown({
799
+ description: "\u5404\u7C7B class \u7ED3\u7B97\uFF0C\u539F\u6837\u7559\u5B58\u3002\u6BCF\u7C7B\u5199 name\u3001shape\uFF08\u9519\u8BEF\u5F62\u72B6\u4E00\u53E5\uFF09\u3002\u6309\u4EE3\u7801\u5F62\u72B6\u8BA4\u7684\u7C7B\u5199 search\uFF08\u5B9E\u9645\u8DD1\u7684\u641C\u7D22\u547D\u4EE4\uFF0C\u539F\u6837\uFF09\u3001hits\uFF08\u547D\u4EE4\u8F93\u51FA\u7684\u6BCF\u4E2A\u547D\u4E2D\u4E00\u884C { where: path:line, outcome: \u5DF2\u4FEE | \u4E0D\u540C\u7C7B\uFF1A\u7406\u7531 }\uFF09\uFF1B\u6309\u60C5\u5F62\u8BA4\u7684\u7C7B\u5199 cases\uFF08\u6BCF\u79CD\u524D\u5E8F\u7ECF\u5386\u4E00\u884C { case: \u5BF9\u8C61\u5148\u7ECF\u5386\u4E86\u4EC0\u4E48, entry: \u4ECE\u771F\u5B9E\u5165\u53E3\u600E\u4E48\u8D70\u5230\u5B83, before: \u4FEE\u524D\u7ED3\u679C, after: \u4FEE\u540E\u7ED3\u679C }\uFF09\u3002\u5B8C\u6210\u9879\u7684 disposition \u4E3A completed\uFF0C\u53EF\u5199 commitSha\u3002\u62D2\u7EDD\u9879\u7684 disposition \u4E3A refused\uFF0C\u53EF\u5199 remainingScope\u3001blocker\u3002"
787
800
  }),
788
- testEvidence: Type7.Unknown({
801
+ diffItems: diffItemsField,
802
+ testEvidence: Type8.Unknown({
789
803
  description: "\u6D4B\u8BD5\u8BC1\u636E\u6761\uFF1Bdiff \u542B\u6D4B\u8BD5\u6539\u52A8\u65F6\u63D0\u4EA4\uFF1B\u673A\u5668\u4E0D\u6838\u9A8C\u3002\u53EF\u5199 contract\uFF08\u6D4B\u8BD5\u6539\u52A8\u6240\u8BC1\u660E\u7684\u5951\u7EA6\uFF09\u3001minimumNecessaryCost\uFF08\u6D4B\u8BD5\u6539\u52A8\u7684\u4E00\u884C\u6700\u5C0F\u5FC5\u8981\u6210\u672C\uFF09\u3001measuredDuration\uFF08\u805A\u7126\u9A8C\u8BC1\u5B9E\u6D4B\u65F6\u957F\uFF09\u3002"
790
804
  })
791
805
  });
@@ -796,7 +810,7 @@ var init_fixer_output = __esm({
796
810
  });
797
811
 
798
812
  // src/package-contracts/worker-output.ts
799
- import { Type as Type8 } from "typebox";
813
+ import { Type as Type9 } from "typebox";
800
814
  function validateAcceptedCoderDetails(output) {
801
815
  return output;
802
816
  }
@@ -809,16 +823,18 @@ var init_worker_output = __esm({
809
823
  "use strict";
810
824
  init_open_tool_schema();
811
825
  init_fixer_output();
826
+ init_self_review_fields();
812
827
  init_terminating_infrastructure();
813
828
  CODER_OUTPUT_TOOL_NAME = "ak_coder_output";
814
829
  CODER_STATUS_DESCRIPTION = `planned | completed | refused | partially_completed | unfinished\u3002unfinished\uFF1A\u7F3A\u524D\u7F6E\u6216\u8FDD\u5BAA\u7EA6\u675F\u81F4\u672C\u5C40\u672A\u5B8C\u6210\u3002${PARTIALLY_COMPLETED_DEFINITION}`;
815
- coderOutputObject = Type8.Object({
816
- status: Type8.Unknown({ description: CODER_STATUS_DESCRIPTION }),
817
- report: Type8.Unknown({ description: "\u5982\u5B9E\u7ED3\u679C\u62A5\u544A" }),
818
- remainingScope: Type8.Unknown({ description: "\u672C\u5C40\u540E\u5269\u4F59\u5DE5\u4F5C" }),
819
- reason: Type8.Unknown({
830
+ coderOutputObject = Type9.Object({
831
+ status: Type9.Unknown({ description: CODER_STATUS_DESCRIPTION }),
832
+ report: Type9.Unknown({ description: "\u5982\u5B9E\u7ED3\u679C\u62A5\u544A" }),
833
+ remainingScope: Type9.Unknown({ description: "\u672C\u5C40\u540E\u5269\u4F59\u5DE5\u4F5C" }),
834
+ reason: Type9.Unknown({
820
835
  description: "\u963B\u65AD\u539F\u56E0\uFF1A\u7F3A\u524D\u7F6E\u6216\u8FDD\u5BAA\u7EA6\u675F\u3002\u7F3A\u5F85\u51B3 owner \u51B3\u5B9A\u6216\u7B54\u590D\u5C5E\u7F3A\u524D\u7F6E\u3002"
821
- })
836
+ }),
837
+ diffItems: diffItemsField
822
838
  });
823
839
  coderOutputSchema = withTerminatingOutputDeclarations(
824
840
  openToolObject(coderOutputObject)
@@ -834,7 +850,7 @@ var init_canonical_json = __esm({
834
850
  });
835
851
 
836
852
  // src/doctor-contracts.ts
837
- import { Type as Type9 } from "typebox";
853
+ import { Type as Type10 } from "typebox";
838
854
  function validateDoctorSubmissionShape(value) {
839
855
  return value;
840
856
  }
@@ -860,25 +876,25 @@ var init_doctor_contracts = __esm({
860
876
  biteNone = "noRealBite";
861
877
  DOCTOR_BITE_KINDS = [biteActual, biteNone];
862
878
  DOCTOR_STATUS_DESCRIPTION = "completed | refused\u3002completed \u5141\u8BB8\u7A7A findings\uFF1Brefused \u4EC5\u5F53\u8BC1\u636E\u4E0D\u8DB3\u4EE5\u652F\u6491\u5982\u5B9E\u6848\u8BC1\u8BCD";
863
- doctorSubmissionObject = Type9.Object({
864
- status: Type9.Unknown({ description: DOCTOR_STATUS_DESCRIPTION }),
865
- case: Type9.Unknown({
879
+ doctorSubmissionObject = Type10.Object({
880
+ status: Type10.Unknown({ description: DOCTOR_STATUS_DESCRIPTION }),
881
+ case: Type10.Unknown({
866
882
  description: "\u7559\u5B58\u592A\u533B\u7F72\u6848\u8EAB\u4EFD\uFF0C\u539F\u6837\u7559\u5B58\uFF08\u5982 issueNumber\u3001runsPath\uFF09\u3002\u673A\u68B0\u5C42\u53E6\u6309\u7ED1\u5B9A run \u6295\u5F71\u6848\u8EAB\u4EFD\uFF0C\u4E0D\u5728\u672C\u5B57\u6BB5\u91CD\u5224\u3002"
867
883
  }),
868
- findings: Type9.Unknown({
884
+ findings: Type10.Unknown({
869
885
  description: `\u9010\u6761\u8D44\u4EA7\u89C2\u5BDF\u4E0E\u5904\u65B9\uFF0C\u539F\u6837\u7559\u5B58\u3002\u4E00\u6761\u53EF\u542B targetKey\u3001targetKind\uFF08${DOCTOR_TARGET_KINDS.join(" | ")}\uFF09\u3001observation\u3001evidenceIds\u3001disposition\uFF08${DOCTOR_DISPOSITIONS.join(" | ")}\uFF09\u3001assetEvidence\uFF08targetKey\u3001targetKind\u3001evidenceId\uFF09\u3001guardrails\uFF08reproducibleFailure\u3001owningSeamOrInvariant\u3001deletionOrSimplificationSuffices\uFF0C\u5404\u9879\u53EF\u542B answer\u3001evidenceIds\u3001explanation\uFF09\u3001prescription\uFF08kind \u4E3A ${DOCTOR_PRESCRIPTION_KINDS.join(" | ")}\uFF0C\u53E6\u53EF\u5199 recommendation\u3001necessityExplanation\uFF09\u3001lastRealBite\uFF08kind \u4E3A ${DOCTOR_BITE_KINDS.join(" | ")}\uFF0C\u53E6\u53EF\u5199 targetKey\u3001evidenceId\u3001eligibleEvidenceIds\uFF09\u3002\u4E0D\u8981\u6C42\u4EFB\u4F55\u5904\u65B9\u6216\u53EF\u590D\u7528 finding\uFF1B\u7F3A\u53EF\u590D\u7528\u8D44\u4EA7\u6216 bounded-bite \u8BC1\u636E\u53EA\u6392\u9664\u5BF9\u5E94\u8D44\u4EA7\u5904\u65B9\u3002\u673A\u5668\u4E0D\u6838\u9A8C\u3002`
870
886
  }),
871
- reason: Type9.Unknown({
887
+ reason: Type10.Unknown({
872
888
  description: "\u8BC1\u636E\u4E0D\u8DB3\u4EE5\u652F\u6491\u5982\u5B9E\u8BC1\u8BCD\u7684\u539F\u56E0\uFF1B\u4EC5 refused \u65F6\u7528\u3002"
873
889
  }),
874
- missingEvidence: Type9.Unknown({
890
+ missingEvidence: Type10.Unknown({
875
891
  description: "\u5982\u5B9E\u8BC1\u8BCD\u6240\u9700\u800C\u5C1A\u7F3A\u7684\u8BC1\u636E\uFF0C\u539F\u6837\u7559\u5B58\uFF08\u5982\u6BCF\u9879 need\u3001targetKeys\uFF09\u3002"
876
892
  })
877
893
  });
878
894
  doctorSubmissionSchema = withTerminatingOutputDeclarations(
879
895
  openToolObject(doctorSubmissionObject)
880
896
  );
881
- doctorEvidenceReadSchema = Type9.Object({ evidenceId: Type9.String({ minLength: 1, description: "\u5F85\u8BFB\u7559\u5B58\u8BC1\u636E\u6807\u8BC6" }), offset: Type9.Optional(Type9.Integer({ minimum: 0, description: "\u8D77\u59CB\u5B57\u8282\u504F\u79FB\uFF08\u4ECE 0 \u8BA1\uFF09" })), limit: Type9.Optional(Type9.Integer({ minimum: 1, description: "\u8FD4\u56DE\u5B57\u8282\u6570\uFF08\u65E0\u4E0A\u9650\uFF09" })) }, { additionalProperties: true });
897
+ doctorEvidenceReadSchema = Type10.Object({ evidenceId: Type10.String({ minLength: 1, description: "\u5F85\u8BFB\u7559\u5B58\u8BC1\u636E\u6807\u8BC6" }), offset: Type10.Optional(Type10.Integer({ minimum: 0, description: "\u8D77\u59CB\u5B57\u8282\u504F\u79FB\uFF08\u4ECE 0 \u8BA1\uFF09" })), limit: Type10.Optional(Type10.Integer({ minimum: 1, description: "\u8FD4\u56DE\u5B57\u8282\u6570\uFF08\u65E0\u4E0A\u9650\uFF09" })) }, { additionalProperties: true });
882
898
  DoctorEvidenceStore = class {
883
899
  constructor(patient) {
884
900
  this.patient = patient;
@@ -947,7 +963,7 @@ var init_exact_utf8 = __esm({
947
963
  });
948
964
 
949
965
  // src/merger-contracts.ts
950
- import { Type as Type10 } from "typebox";
966
+ import { Type as Type11 } from "typebox";
951
967
  function fail(message = "Merger input violates its exact contract") {
952
968
  throw new MergerInputContractError(message);
953
969
  }
@@ -981,25 +997,25 @@ var init_merger_contracts = __esm({
981
997
  init_open_tool_schema();
982
998
  init_terminating_infrastructure();
983
999
  init_unknown_value();
984
- materialSchema = Type10.Object({ bytesBase64: Type10.String(), sha256: Type10.String() });
985
- checkSchema = Type10.Object({ name: Type10.String({ minLength: 1 }), argv: Type10.Array(Type10.String({ minLength: 1 }), { minItems: 1 }) });
986
- mergerInputSchema = Type10.Object({
987
- attemptId: Type10.String({ minLength: 1, description: "\u5BF9\u8D26 attempt \u8EAB\u4EFD\uFF08transport\uFF09" }),
988
- targetObjectId: Type10.String({ description: "\u6750\u6599\uFF1Atarget parent OID\uFF1B\u53EF\u7A7A" }),
989
- sourceObjectId: Type10.String({ description: "\u6750\u6599\uFF1Asource parent OID\uFF1B\u53EF\u7A7A" }),
1000
+ materialSchema = Type11.Object({ bytesBase64: Type11.String(), sha256: Type11.String() });
1001
+ checkSchema = Type11.Object({ name: Type11.String({ minLength: 1 }), argv: Type11.Array(Type11.String({ minLength: 1 }), { minItems: 1 }) });
1002
+ mergerInputSchema = Type11.Object({
1003
+ attemptId: Type11.String({ minLength: 1, description: "\u5BF9\u8D26 attempt \u8EAB\u4EFD\uFF08transport\uFF09" }),
1004
+ targetObjectId: Type11.String({ description: "\u6750\u6599\uFF1Atarget parent OID\uFF1B\u53EF\u7A7A" }),
1005
+ sourceObjectId: Type11.String({ description: "\u6750\u6599\uFF1Asource parent OID\uFF1B\u53EF\u7A7A" }),
990
1006
  // #1168: task/authority dispatch copies removed; git-fact intents remain.
991
- materials: Type10.Object({ targetIntent: materialSchema, sourceIntent: materialSchema }),
992
- expectedConflictPaths: Type10.Array(Type10.String(), { description: "\u6750\u6599\uFF1A\u5F53\u524D\u672A\u5408\u5E76\u8DEF\u5F84\uFF1B\u53EF\u7A7A" }),
993
- resolutionScope: Type10.Array(Type10.String(), { description: "\u6750\u6599\uFF1A\u89E3\u6790\u8303\u56F4\u63D0\u793A\uFF1B\u53EF\u7A7A" }),
994
- authorizedChecks: Type10.Array(checkSchema)
1007
+ materials: Type11.Object({ targetIntent: materialSchema, sourceIntent: materialSchema }),
1008
+ expectedConflictPaths: Type11.Array(Type11.String(), { description: "\u6750\u6599\uFF1A\u5F53\u524D\u672A\u5408\u5E76\u8DEF\u5F84\uFF1B\u53EF\u7A7A" }),
1009
+ resolutionScope: Type11.Array(Type11.String(), { description: "\u6750\u6599\uFF1A\u89E3\u6790\u8303\u56F4\u63D0\u793A\uFF1B\u53EF\u7A7A" }),
1010
+ authorizedChecks: Type11.Array(checkSchema)
995
1011
  });
996
1012
  MERGER_STATUS_DESCRIPTION = "completed | escalate";
997
- mergerOutputObject = Type10.Object({
998
- status: Type10.Unknown({ description: MERGER_STATUS_DESCRIPTION }),
999
- attemptId: Type10.Unknown({ description: "\u5DF2\u53D7\u7406\u5408\u5E76 attempt \u8EAB\u4EFD" }),
1000
- report: Type10.Unknown({ description: "\u5982\u5B9E\u7ED3\u679C\u62A5\u544A" }),
1001
- mergeCommitId: Type10.Unknown({ description: "\u5B8C\u6210\u5408\u5E76 commit object ID" }),
1002
- diagnosis: Type10.Unknown({
1013
+ mergerOutputObject = Type11.Object({
1014
+ status: Type11.Unknown({ description: MERGER_STATUS_DESCRIPTION }),
1015
+ attemptId: Type11.Unknown({ description: "\u5DF2\u53D7\u7406\u5408\u5E76 attempt \u8EAB\u4EFD" }),
1016
+ report: Type11.Unknown({ description: "\u5982\u5B9E\u7ED3\u679C\u62A5\u544A" }),
1017
+ mergeCommitId: Type11.Unknown({ description: "\u5B8C\u6210\u5408\u5E76 commit object ID" }),
1018
+ diagnosis: Type11.Unknown({
1003
1019
  description: "\u5408\u5E76\u65E0\u6CD5\u6216\u4E0D\u5E94\u7531\u672C\u5E2D\u5B8C\u6210\u7684\u539F\u56E0\uFF08\u542B\u65E0\u8FDB\u884C\u4E2D\u5408\u5E76\u3001\u65E0\u6D3B\u53EF\u5E72\u3001\u9700\u65B0\u7684\u4EA7\u54C1/\u6743\u529B\u51B3\u5B9A\uFF09"
1004
1020
  })
1005
1021
  });
@@ -1054,7 +1070,7 @@ var init_countersign_contracts = __esm({
1054
1070
  });
1055
1071
 
1056
1072
  // src/gleaner-left-contracts.ts
1057
- import { Type as Type11 } from "typebox";
1073
+ import { Type as Type12 } from "typebox";
1058
1074
  var GLEANER_LEFT_OUTPUT_TOOL_NAME, gleanerLeftOutputSchema, GLEANER_LEFT_BASE_FLAG;
1059
1075
  var init_gleaner_left_contracts = __esm({
1060
1076
  "src/gleaner-left-contracts.ts"() {
@@ -1065,11 +1081,11 @@ var init_gleaner_left_contracts = __esm({
1065
1081
  GLEANER_LEFT_OUTPUT_TOOL_NAME = "ak_gleaner_left_output";
1066
1082
  gleanerLeftOutputSchema = withTerminatingOutputDeclarations(
1067
1083
  openToolObject(
1068
- Type11.Object({
1069
- status: Type11.Unknown({
1084
+ Type12.Object({
1085
+ status: Type12.Unknown({
1070
1086
  description: "completed"
1071
1087
  }),
1072
- findings: Type11.Unknown({
1088
+ findings: Type12.Unknown({
1073
1089
  description: "\u5F39\u7AE0\u5217\u8868\uFF1B\u6BCF\u6761\u53EF\u542B pointer\uFF08\u6587\u4EF6/\u884C\u6307\u9488\uFF09\u4E0E statement\uFF08\u7591\u70B9\u9648\u8FF0\uFF09\uFF0C\u539F\u6837\u7559\u5B58\u3002\u7A7A\u5217\u8868\u5408\u6CD5\u5B8C\u5C40\uFF1B\u673A\u5668\u4E0D\u5224\u5F39\u7AE0\u662F\u5426\u6210\u7ACB\u3002"
1074
1090
  })
1075
1091
  })
@@ -2071,7 +2087,7 @@ var init_ticket_provenance_contracts = __esm({
2071
2087
  });
2072
2088
 
2073
2089
  // src/diarist-contracts.ts
2074
- import { Type as Type12 } from "typebox";
2090
+ import { Type as Type13 } from "typebox";
2075
2091
  function projectDiaristSessions(value) {
2076
2092
  const raw = value?.sessions;
2077
2093
  if (raw === void 0) return [];
@@ -2104,20 +2120,20 @@ var init_diarist_contracts = __esm({
2104
2120
  DIARIST_SESSIONS_DESCRIPTION = "\u5BF9\u8BDD\u8FB9\u754C\u3002\u6BCF\u5377\u542B path\uFF08\u4F1A\u8BDD\u5377\u7EDD\u5BF9\u6216\u53EF\u8BFB\u8DEF\u5F84\uFF09\u4E0E ranges\uFF08\u672C\u5377\u672C\u8F6E\u5404\u533A\u95F4\uFF09\u3002\u6BCF\u6BB5\u533A\u95F4\u542B from / to\uFF1B\u8D77\u70B9\u4E0E\u7EC8\u70B9\u5404\u5199 id\uFF08\u539F\u751F id\uFF09\u6216 line\uFF08\u672C\u8F6E\u884C\u53F7\uFF09\uFF0C\u4E8C\u9009\u4E00\u3002\u7A7A\u5217\u8868\uFF1D\u672C\u8F6E\u65E0\u5BF9\u8BDD\u53EF\u5212\u3002\u7AEF\u70B9\u65E0\u6CD5\u6307\u540D\u65F6\u8D70 reask\uFF0C\u4E0D\u4E2D\u6B62\u3002";
2105
2121
  diaristOutputSchema = withTerminatingOutputDeclarations(
2106
2122
  openToolObject(
2107
- Type12.Object({
2108
- status: Type12.Unknown({
2123
+ Type13.Object({
2124
+ status: Type13.Unknown({
2109
2125
  description: "completed | escalate"
2110
2126
  }),
2111
- ticketNumber: Type12.Optional(
2112
- Type12.Unknown({
2127
+ ticketNumber: Type13.Optional(
2128
+ Type13.Unknown({
2113
2129
  description: "\u672C\u5EAD\u5BF9\u8C61\u7968\u53F7\uFF08\u6B63\u6574\u6570\uFF09\u6216 null/\u7701\u7565\uFF1D\u771F\u65E0\u7968\uFF1B\u4E0B\u6E38\u8D70 typed \u952E\uFF1B\u8BA4\u4E0D\u51FA\u7528 status=escalate\uFF0C\u4E0D\u6D17\u6210\u65E0\u5F55\u3002\u673A\u68B0\u5C42\u4E0D\u91CD\u5224\u3002"
2114
2130
  })
2115
2131
  ),
2116
- reason: Type12.Unknown({
2132
+ reason: Type13.Unknown({
2117
2133
  description: "status \u4E3A escalate \u65F6\uFF1A\u8BA4\u4E0D\u51FA\u672C\u5EAD\u5BF9\u8C61\u7684\u539F\u56E0"
2118
2134
  }),
2119
- sessions: Type12.Optional(Type12.Unknown({ description: DIARIST_SESSIONS_DESCRIPTION })),
2120
- ticketSessions: Type12.Unknown({
2135
+ sessions: Type13.Optional(Type13.Unknown({ description: DIARIST_SESSIONS_DESCRIPTION })),
2136
+ ticketSessions: Type13.Unknown({
2121
2137
  description: `\u591A\u7968\u5EAD\u9010\u7968\u5BF9\u8BDD\u8FB9\u754C\uFF1B\u6BCF\u7968\u542B ticketNumber\uFF08\u672C\u6761\u8FB9\u754C\u6240\u5F52\u7968\u53F7\uFF0C\u6B63\u6574\u6570\uFF09\u4E0E sessions\uFF08${DIARIST_SESSIONS_DESCRIPTION}\uFF09\u3002\u4E00\u6B21\u4EA4\u5377\u5404\u7968\u5404\u81EA\u5206\u5F55\u3002\u4E0E\u5355\u7968 sessions \u4E8C\u9009\u4E00\u3002`
2122
2138
  })
2123
2139
  })
@@ -2127,7 +2143,7 @@ var init_diarist_contracts = __esm({
2127
2143
  });
2128
2144
 
2129
2145
  // src/secretariat-contracts.ts
2130
- import { Type as Type13 } from "typebox";
2146
+ import { Type as Type14 } from "typebox";
2131
2147
  var SECRETARIAT_OUTPUT_TOOL_NAME, secretariatVerdictSchema;
2132
2148
  var init_secretariat_contracts = __esm({
2133
2149
  "src/secretariat-contracts.ts"() {
@@ -2135,19 +2151,19 @@ var init_secretariat_contracts = __esm({
2135
2151
  init_terminating_infrastructure();
2136
2152
  SECRETARIAT_OUTPUT_TOOL_NAME = "ak_secretariat_output";
2137
2153
  secretariatVerdictSchema = withTerminatingOutputDeclarations(
2138
- Type13.Object(
2154
+ Type14.Object(
2139
2155
  {
2140
- secretariatStatus: Type13.Unknown({
2156
+ secretariatStatus: Type14.Unknown({
2141
2157
  description: "converged | escalate"
2142
2158
  }),
2143
- ticketNumber: Type13.Optional(
2144
- Type13.Unknown({ description: "\u672C\u7968\u53F7\uFF1B\u7F72\u65F6\u6307\u5411\u6700\u7EC8\u6B63\u6587\u6240\u5728\u7968" })
2159
+ ticketNumber: Type14.Optional(
2160
+ Type14.Unknown({ description: "\u672C\u7968\u53F7\uFF1B\u7F72\u65F6\u6307\u5411\u6700\u7EC8\u6B63\u6587\u6240\u5728\u7968" })
2145
2161
  ),
2146
- note: Type13.Unknown({
2162
+ note: Type14.Unknown({
2147
2163
  description: "\u9644\u6CE8\uFF1B\u7F72\uFF08converged\uFF09\u65F6\u9010\u9898\u5217\u7B54\u6848\u3001\u4F9D\u636E\u4E0E\u843D\u5728\u54EA\u4E00\u53E5\uFF1B\u5C01\u8FD8\uFF08escalate\uFF09\u65F6\u9996\u5199\u300C\u5C01\u8FD8\u300D\u3002\u539F\u6837\u7559\u5B58\u3002"
2148
2164
  }),
2149
- evidence: Type13.Optional(Type13.Unknown({ description: "\u7559\u5B58\u8BC1\u636E" })),
2150
- decisionGate: Type13.Unknown({
2165
+ evidence: Type14.Optional(Type14.Unknown({ description: "\u7559\u5B58\u8BC1\u636E" })),
2166
+ decisionGate: Type14.Unknown({
2151
2167
  description: "\u672C\u8F6E\u9898\u76EE\uFF1A\u6BCF\u9898 question\u3001options\uFF08\u7A3F\u91CC\u505A\u6CD5\uFF0F\u53E6\u4E00\u505A\u6CD5\uFF09\u3001\u4E24\u8FB9\u4EE3\u4EF7\u3001\u5EFA\u8BAE\u3002\u539F\u6837\u7559\u5B58\u3002"
2152
2168
  })
2153
2169
  },
@@ -4323,7 +4339,7 @@ var init_collector_config = __esm({
4323
4339
  });
4324
4340
 
4325
4341
  // src/collector-tool-schemas.ts
4326
- import { Type as Type14 } from "typebox";
4342
+ import { Type as Type15 } from "typebox";
4327
4343
  var collectorOutputBaseSchema, collectorOutputArgsSchema;
4328
4344
  var init_collector_tool_schemas = __esm({
4329
4345
  "src/collector-tool-schemas.ts"() {
@@ -4331,11 +4347,11 @@ var init_collector_tool_schemas = __esm({
4331
4347
  init_open_tool_schema();
4332
4348
  init_terminating_infrastructure();
4333
4349
  collectorOutputBaseSchema = openToolObject(
4334
- Type14.Object({
4335
- groups: Type14.Unsafe({
4350
+ Type15.Object({
4351
+ groups: Type15.Unsafe({
4336
4352
  description: "\u6309\u673A\u5668\u8EAB\u4EFD\u5F52\u7EC4\u7684\u51FA\u5E2D\u3001\u6750\u6599\u4E0E\u9010\u6761 findings\uFF08LLM \u81EA\u884C\u4ECE\u5BBF\u4E3B CLI \u53D6\u8BC1\u6574\u7406\uFF1B\u4EE3\u7801\u4E0D\u4EE3\u6536\u4E0D\u5F52\u5E76\uFF09\u3002"
4337
4353
  }),
4338
- unfinishedReasons: Type14.Unknown({
4354
+ unfinishedReasons: Type15.Unknown({
4339
4355
  description: "\u672A\u5B8C\u6210\u539F\u56E0\uFF1B\u53D6\u8BC1\u53D7\u9650\u65F6\u5982\u5B9E\u62A5\u544A\u3002"
4340
4356
  })
4341
4357
  })
@@ -10325,7 +10341,7 @@ var init_run_lifecycle = __esm({
10325
10341
  });
10326
10342
 
10327
10343
  // src/report-ticket-tool.ts
10328
- import { Type as Type15 } from "typebox";
10344
+ import { Type as Type16 } from "typebox";
10329
10345
  import { existsSync as existsSync6 } from "node:fs";
10330
10346
  function pageString(page, key) {
10331
10347
  const value = page?.[key];
@@ -10434,9 +10450,9 @@ var init_report_ticket_tool = __esm({
10434
10450
  init_run_ticket_number();
10435
10451
  init_unknown_value();
10436
10452
  REPORT_TICKET_TOOL_NAME = "ak_report_ticket";
10437
- reportTicketArgsSchema = Type15.Object(
10453
+ reportTicketArgsSchema = Type16.Object(
10438
10454
  {
10439
- ticketNumber: Type15.Unknown({
10455
+ ticketNumber: Type16.Unknown({
10440
10456
  description: "\u672C\u7968\u53F7\uFF08\u6B63\u6574\u6570\u3001\u6570\u5B57\u4E32\u6216\u524D\u5BFC #N\uFF09\u3002\u5DF2\u77E5\u7968\u53F7\u65F6\u5F00\u5DE5\u5373\u62A5\uFF1B\u5C1A\u65E0\u7968\u53F7\u65F6\u4E0D\u8981\u8C03\u7528\u3002"
10441
10457
  })
10442
10458
  },
@@ -19161,7 +19177,7 @@ var init_analyst_model_groups = __esm({
19161
19177
 
19162
19178
  // src/analyst-entry.ts
19163
19179
  import { readFile as readFile13 } from "node:fs/promises";
19164
- import { Type as Type16 } from "typebox";
19180
+ import { Type as Type17 } from "typebox";
19165
19181
  function cachedPageMatchesRequestedScope(page, input) {
19166
19182
  if (page.bookKey !== input.bookKey) return false;
19167
19183
  const requestedTicket = input.ticketNumber ?? input.issueNumber;
@@ -19366,16 +19382,16 @@ var init_analyst_entry = __esm({
19366
19382
  }
19367
19383
  }
19368
19384
  };
19369
- analystSweepModeInputSchema = Type16.Object(
19385
+ analystSweepModeInputSchema = Type17.Object(
19370
19386
  {
19371
- mode: Type16.Literal("sweep"),
19372
- mergedPullRequests: Type16.Array(
19373
- Type16.Object(
19387
+ mode: Type17.Literal("sweep"),
19388
+ mergedPullRequests: Type17.Array(
19389
+ Type17.Object(
19374
19390
  {
19375
- projectRoot: Type16.String(),
19391
+ projectRoot: Type17.String(),
19376
19392
  /** 排除后改动行数 — omit or 0 → typed 空缺; finite ≥ 0 only. */
19377
- changedLines: Type16.Optional(
19378
- Type16.Number({ minimum: 0, maximum: Number.MAX_VALUE })
19393
+ changedLines: Type17.Optional(
19394
+ Type17.Number({ minimum: 0, maximum: Number.MAX_VALUE })
19379
19395
  )
19380
19396
  }
19381
19397
  )
@@ -21118,18 +21134,18 @@ import { join as join30 } from "node:path";
21118
21134
  import { Value as Value2 } from "typebox/value";
21119
21135
 
21120
21136
  // src/activation-trace.ts
21121
- import { Type as Type17 } from "typebox";
21122
- var causeSchema = Type17.Object({
21123
- identity: Type17.String({ minLength: 1 }),
21124
- name: Type17.String({ minLength: 1 }),
21125
- message: Type17.String(),
21126
- evidenceId: Type17.Optional(Type17.String({ minLength: 1 }))
21137
+ import { Type as Type18 } from "typebox";
21138
+ var causeSchema = Type18.Object({
21139
+ identity: Type18.String({ minLength: 1 }),
21140
+ name: Type18.String({ minLength: 1 }),
21141
+ message: Type18.String(),
21142
+ evidenceId: Type18.Optional(Type18.String({ minLength: 1 }))
21127
21143
  }, { additionalProperties: false });
21128
- var activationTraceRecordSchema = Type17.Object({
21129
- role: Type17.String({ minLength: 1 }),
21130
- stageId: Type17.String({ pattern: "^[a-z][a-z0-9-]*$" }),
21131
- status: Type17.Literal("failed"),
21132
- timestamp: Type17.String({ format: "date-time" }),
21144
+ var activationTraceRecordSchema = Type18.Object({
21145
+ role: Type18.String({ minLength: 1 }),
21146
+ stageId: Type18.String({ pattern: "^[a-z][a-z0-9-]*$" }),
21147
+ status: Type18.Literal("failed"),
21148
+ timestamp: Type18.String({ format: "date-time" }),
21133
21149
  cause: causeSchema
21134
21150
  }, { additionalProperties: false });
21135
21151
  var activationCauseEvidence = 0;
@@ -21292,10 +21308,10 @@ init_engine_detour();
21292
21308
  init_engine_detour_usage();
21293
21309
  init_run_terminal_artifacts();
21294
21310
  init_serialize_thrown_value();
21295
- import { Type as Type18 } from "typebox";
21296
- var engineDetourArgsSchema = Type18.Object(
21311
+ import { Type as Type19 } from "typebox";
21312
+ var engineDetourArgsSchema = Type19.Object(
21297
21313
  {
21298
- argv: Type18.Array(Type18.String({ minLength: 1 }), {
21314
+ argv: Type19.Array(Type19.String({ minLength: 1 }), {
21299
21315
  minItems: 1,
21300
21316
  description: "\u9996\u9879\u4E3A PATH \u4E2D\u7684\u53EF\u6267\u884C\u6587\u4EF6\uFF0C\u5176\u4F59\u9879\u4E3A\u53C2\u6570\u3002"
21301
21317
  })
@@ -8826,6 +8826,18 @@ var init_reviewer_output = __esm({
8826
8826
  }
8827
8827
  });
8828
8828
 
8829
+ // src/package-contracts/self-review-fields.ts
8830
+ var diffItemsField;
8831
+ var init_self_review_fields = __esm({
8832
+ "src/package-contracts/self-review-fields.ts"() {
8833
+ "use strict";
8834
+ init_build();
8835
+ diffItemsField = typebox_exports.Unknown({
8836
+ description: "commit \u524D\u81EA\u5BA1\u9010\u9879\u8868\uFF1A\u672C\u6B21\u65B0\u589E\u7684\u6BCF\u4E2A\u6D4B\u8BD5\u51FD\u6570\u3001\u6BCF\u4E2A\u751F\u4EA7\u51FD\u6570\u5404\u4E00\u884C { item: \u540D\u5B57, existing: \u4ED3\u91CC\u505A\u540C\u4E00\u4EF6\u4E8B\u7684\u73B0\u6210\u4EF6 path:line\uFF0C\u627E\u4E0D\u5230\u4E3A null, outcome: \u5DF2\u5E76\u5165 | \u4FDD\u7559 }\u3002"
8837
+ });
8838
+ }
8839
+ });
8840
+
8829
8841
  // src/package-contracts/fixer-output.ts
8830
8842
  var FIXER_OUTPUT_TOOL_NAME, PARTIALLY_COMPLETED_DEFINITION, FIXER_STATUS_DESCRIPTION, fixerOutputObject, fixerOutputSchema;
8831
8843
  var init_fixer_output = __esm({
@@ -8834,6 +8846,7 @@ var init_fixer_output = __esm({
8834
8846
  init_build();
8835
8847
  init_open_tool_schema();
8836
8848
  init_terminating_infrastructure();
8849
+ init_self_review_fields();
8837
8850
  FIXER_OUTPUT_TOOL_NAME = "ak_fixer_output";
8838
8851
  PARTIALLY_COMPLETED_DEFINITION = "partially_completed \u53EA\u80FD\u5728\u6709\u5408\u6CD5\u62D2\u7EDD\u9879\uFF08\u5B8C\u6210\u9879\u4E0E\u5408\u6CD5\u62D2\u7EDD\u9879\u5E76\u5B58\uFF09\u65F6\u7528\uFF0C\u522B\u7684\u60C5\u51B5\u4E0D\u51C6\u7528\u3002";
8839
8852
  FIXER_STATUS_DESCRIPTION = `planned | completed | refused | unfinished | partially_completed\u3002unfinished \u7F3A\u524D\u7F6E\u6216\u8FDD\u5BAA\u7EA6\u675F\u81F4\u672C\u5C40\u672A\u5B8C\u6210\u65F6\u53EF\u7528\uFF0C\u7F3A\u5F85\u51B3 owner \u51B3\u5B9A\u6216\u7B54\u590D\u5C5E\u7F3A\u524D\u7F6E\u3002${PARTIALLY_COMPLETED_DEFINITION}`;
@@ -8850,8 +8863,9 @@ var init_fixer_output = __esm({
8850
8863
  description: "\u963B\u65AD\u539F\u56E0\uFF1A\u7F3A\u524D\u7F6E\u6216\u8FDD\u5BAA\u7EA6\u675F\u3002\u7F3A\u5F85\u51B3 owner \u51B3\u5B9A\u6216\u7B54\u590D\u5C5E\u7F3A\u524D\u7F6E\u3002"
8851
8864
  }),
8852
8865
  classResults: typebox_exports.Unknown({
8853
- description: "\u5404\u7C7B class \u7ED3\u7B97\uFF0C\u539F\u6837\u7559\u5B58\u3002\u5B8C\u6210\u9879\u7684 disposition \u4E3A completed\uFF0C\u53EF\u5199 name\u3001searchScope\u3001exceptions\uFF08where\u3001reason\uFF09\u3001commitSha\u3002\u62D2\u7EDD\u9879\u7684 disposition \u4E3A refused\uFF0C\u53EF\u5199 name\u3001remainingScope\u3001blocker\u3002"
8866
+ description: "\u5404\u7C7B class \u7ED3\u7B97\uFF0C\u539F\u6837\u7559\u5B58\u3002\u6BCF\u7C7B\u5199 name\u3001shape\uFF08\u9519\u8BEF\u5F62\u72B6\u4E00\u53E5\uFF09\u3002\u6309\u4EE3\u7801\u5F62\u72B6\u8BA4\u7684\u7C7B\u5199 search\uFF08\u5B9E\u9645\u8DD1\u7684\u641C\u7D22\u547D\u4EE4\uFF0C\u539F\u6837\uFF09\u3001hits\uFF08\u547D\u4EE4\u8F93\u51FA\u7684\u6BCF\u4E2A\u547D\u4E2D\u4E00\u884C { where: path:line, outcome: \u5DF2\u4FEE | \u4E0D\u540C\u7C7B\uFF1A\u7406\u7531 }\uFF09\uFF1B\u6309\u60C5\u5F62\u8BA4\u7684\u7C7B\u5199 cases\uFF08\u6BCF\u79CD\u524D\u5E8F\u7ECF\u5386\u4E00\u884C { case: \u5BF9\u8C61\u5148\u7ECF\u5386\u4E86\u4EC0\u4E48, entry: \u4ECE\u771F\u5B9E\u5165\u53E3\u600E\u4E48\u8D70\u5230\u5B83, before: \u4FEE\u524D\u7ED3\u679C, after: \u4FEE\u540E\u7ED3\u679C }\uFF09\u3002\u5B8C\u6210\u9879\u7684 disposition \u4E3A completed\uFF0C\u53EF\u5199 commitSha\u3002\u62D2\u7EDD\u9879\u7684 disposition \u4E3A refused\uFF0C\u53EF\u5199 remainingScope\u3001blocker\u3002"
8854
8867
  }),
8868
+ diffItems: diffItemsField,
8855
8869
  testEvidence: typebox_exports.Unknown({
8856
8870
  description: "\u6D4B\u8BD5\u8BC1\u636E\u6761\uFF1Bdiff \u542B\u6D4B\u8BD5\u6539\u52A8\u65F6\u63D0\u4EA4\uFF1B\u673A\u5668\u4E0D\u6838\u9A8C\u3002\u53EF\u5199 contract\uFF08\u6D4B\u8BD5\u6539\u52A8\u6240\u8BC1\u660E\u7684\u5951\u7EA6\uFF09\u3001minimumNecessaryCost\uFF08\u6D4B\u8BD5\u6539\u52A8\u7684\u4E00\u884C\u6700\u5C0F\u5FC5\u8981\u6210\u672C\uFF09\u3001measuredDuration\uFF08\u805A\u7126\u9A8C\u8BC1\u5B9E\u6D4B\u65F6\u957F\uFF09\u3002"
8857
8871
  })
@@ -8870,6 +8884,7 @@ var init_worker_output = __esm({
8870
8884
  init_build();
8871
8885
  init_open_tool_schema();
8872
8886
  init_fixer_output();
8887
+ init_self_review_fields();
8873
8888
  init_terminating_infrastructure();
8874
8889
  CODER_OUTPUT_TOOL_NAME = "ak_coder_output";
8875
8890
  CODER_STATUS_DESCRIPTION = `planned | completed | refused | partially_completed | unfinished\u3002unfinished\uFF1A\u7F3A\u524D\u7F6E\u6216\u8FDD\u5BAA\u7EA6\u675F\u81F4\u672C\u5C40\u672A\u5B8C\u6210\u3002${PARTIALLY_COMPLETED_DEFINITION}`;
@@ -8879,7 +8894,8 @@ var init_worker_output = __esm({
8879
8894
  remainingScope: typebox_exports.Unknown({ description: "\u672C\u5C40\u540E\u5269\u4F59\u5DE5\u4F5C" }),
8880
8895
  reason: typebox_exports.Unknown({
8881
8896
  description: "\u963B\u65AD\u539F\u56E0\uFF1A\u7F3A\u524D\u7F6E\u6216\u8FDD\u5BAA\u7EA6\u675F\u3002\u7F3A\u5F85\u51B3 owner \u51B3\u5B9A\u6216\u7B54\u590D\u5C5E\u7F3A\u524D\u7F6E\u3002"
8882
- })
8897
+ }),
8898
+ diffItems: diffItemsField
8883
8899
  });
8884
8900
  coderOutputSchema = withTerminatingOutputDeclarations(
8885
8901
  openToolObject(coderOutputObject)
@@ -1,6 +1,7 @@
1
1
  import { Type } from "typebox";
2
2
  import { openToolObject } from "../open-tool-schema.js";
3
3
  import { withTerminatingOutputDeclarations } from "./terminating-infrastructure.js";
4
+ import { diffItemsField } from "./self-review-fields.js";
4
5
  const FIXER_OUTPUT_TOOL_NAME = "ak_fixer_output";
5
6
  const PARTIALLY_COMPLETED_DEFINITION = "partially_completed \u53EA\u80FD\u5728\u6709\u5408\u6CD5\u62D2\u7EDD\u9879\uFF08\u5B8C\u6210\u9879\u4E0E\u5408\u6CD5\u62D2\u7EDD\u9879\u5E76\u5B58\uFF09\u65F6\u7528\uFF0C\u522B\u7684\u60C5\u51B5\u4E0D\u51C6\u7528\u3002";
6
7
  const FIXER_STATUS_DESCRIPTION = `planned | completed | refused | unfinished | partially_completed\u3002unfinished \u7F3A\u524D\u7F6E\u6216\u8FDD\u5BAA\u7EA6\u675F\u81F4\u672C\u5C40\u672A\u5B8C\u6210\u65F6\u53EF\u7528\uFF0C\u7F3A\u5F85\u51B3 owner \u51B3\u5B9A\u6216\u7B54\u590D\u5C5E\u7F3A\u524D\u7F6E\u3002${PARTIALLY_COMPLETED_DEFINITION}`;
@@ -17,8 +18,9 @@ const fixerOutputObject = Type.Object({
17
18
  description: "\u963B\u65AD\u539F\u56E0\uFF1A\u7F3A\u524D\u7F6E\u6216\u8FDD\u5BAA\u7EA6\u675F\u3002\u7F3A\u5F85\u51B3 owner \u51B3\u5B9A\u6216\u7B54\u590D\u5C5E\u7F3A\u524D\u7F6E\u3002"
18
19
  }),
19
20
  classResults: Type.Unknown({
20
- description: "\u5404\u7C7B class \u7ED3\u7B97\uFF0C\u539F\u6837\u7559\u5B58\u3002\u5B8C\u6210\u9879\u7684 disposition \u4E3A completed\uFF0C\u53EF\u5199 name\u3001searchScope\u3001exceptions\uFF08where\u3001reason\uFF09\u3001commitSha\u3002\u62D2\u7EDD\u9879\u7684 disposition \u4E3A refused\uFF0C\u53EF\u5199 name\u3001remainingScope\u3001blocker\u3002"
21
+ description: "\u5404\u7C7B class \u7ED3\u7B97\uFF0C\u539F\u6837\u7559\u5B58\u3002\u6BCF\u7C7B\u5199 name\u3001shape\uFF08\u9519\u8BEF\u5F62\u72B6\u4E00\u53E5\uFF09\u3002\u6309\u4EE3\u7801\u5F62\u72B6\u8BA4\u7684\u7C7B\u5199 search\uFF08\u5B9E\u9645\u8DD1\u7684\u641C\u7D22\u547D\u4EE4\uFF0C\u539F\u6837\uFF09\u3001hits\uFF08\u547D\u4EE4\u8F93\u51FA\u7684\u6BCF\u4E2A\u547D\u4E2D\u4E00\u884C { where: path:line, outcome: \u5DF2\u4FEE | \u4E0D\u540C\u7C7B\uFF1A\u7406\u7531 }\uFF09\uFF1B\u6309\u60C5\u5F62\u8BA4\u7684\u7C7B\u5199 cases\uFF08\u6BCF\u79CD\u524D\u5E8F\u7ECF\u5386\u4E00\u884C { case: \u5BF9\u8C61\u5148\u7ECF\u5386\u4E86\u4EC0\u4E48, entry: \u4ECE\u771F\u5B9E\u5165\u53E3\u600E\u4E48\u8D70\u5230\u5B83, before: \u4FEE\u524D\u7ED3\u679C, after: \u4FEE\u540E\u7ED3\u679C }\uFF09\u3002\u5B8C\u6210\u9879\u7684 disposition \u4E3A completed\uFF0C\u53EF\u5199 commitSha\u3002\u62D2\u7EDD\u9879\u7684 disposition \u4E3A refused\uFF0C\u53EF\u5199 remainingScope\u3001blocker\u3002"
21
22
  }),
23
+ diffItems: diffItemsField,
22
24
  testEvidence: Type.Unknown({
23
25
  description: "\u6D4B\u8BD5\u8BC1\u636E\u6761\uFF1Bdiff \u542B\u6D4B\u8BD5\u6539\u52A8\u65F6\u63D0\u4EA4\uFF1B\u673A\u5668\u4E0D\u6838\u9A8C\u3002\u53EF\u5199 contract\uFF08\u6D4B\u8BD5\u6539\u52A8\u6240\u8BC1\u660E\u7684\u5951\u7EA6\uFF09\u3001minimumNecessaryCost\uFF08\u6D4B\u8BD5\u6539\u52A8\u7684\u4E00\u884C\u6700\u5C0F\u5FC5\u8981\u6210\u672C\uFF09\u3001measuredDuration\uFF08\u805A\u7126\u9A8C\u8BC1\u5B9E\u6D4B\u65F6\u957F\uFF09\u3002"
24
26
  })
@@ -0,0 +1,5 @@
1
+ /** Builder-seat self-review table shared by the Coder and Fixer submissions (souls/quality-law.md「交卷前自审」). */
2
+ import { Type } from "typebox";
3
+ export const diffItemsField = Type.Unknown({
4
+ description: "commit 前自审逐项表:本次新增的每个测试函数、每个生产函数各一行 { item: 名字, existing: 仓里做同一件事的现成件 path:line,找不到为 null, outcome: 已并入 | 保留 }。",
5
+ });
@@ -6,6 +6,7 @@ import {
6
6
  PARTIALLY_COMPLETED_DEFINITION,
7
7
  validateFixerOutput
8
8
  } from "./fixer-output.js";
9
+ import { diffItemsField } from "./self-review-fields.js";
9
10
  import { withTerminatingOutputDeclarations } from "./terminating-infrastructure.js";
10
11
  const CODER_OUTPUT_TOOL_NAME = "ak_coder_output";
11
12
  function validateAcceptedCoderDetails(output) {
@@ -21,7 +22,8 @@ const coderOutputObject = Type.Object({
21
22
  remainingScope: Type.Unknown({ description: "\u672C\u5C40\u540E\u5269\u4F59\u5DE5\u4F5C" }),
22
23
  reason: Type.Unknown({
23
24
  description: "\u963B\u65AD\u539F\u56E0\uFF1A\u7F3A\u524D\u7F6E\u6216\u8FDD\u5BAA\u7EA6\u675F\u3002\u7F3A\u5F85\u51B3 owner \u51B3\u5B9A\u6216\u7B54\u590D\u5C5E\u7F3A\u524D\u7F6E\u3002"
24
- })
25
+ }),
26
+ diffItems: diffItemsField
25
27
  });
26
28
  const coderOutputSchema = withTerminatingOutputDeclarations(
27
29
  openToolObject(coderOutputObject)
@@ -9316,6 +9316,18 @@ var init_reviewer_output = __esm({
9316
9316
  }
9317
9317
  });
9318
9318
 
9319
+ // src/package-contracts/self-review-fields.ts
9320
+ var diffItemsField;
9321
+ var init_self_review_fields = __esm({
9322
+ "src/package-contracts/self-review-fields.ts"() {
9323
+ "use strict";
9324
+ init_build();
9325
+ diffItemsField = typebox_exports.Unknown({
9326
+ description: "commit \u524D\u81EA\u5BA1\u9010\u9879\u8868\uFF1A\u672C\u6B21\u65B0\u589E\u7684\u6BCF\u4E2A\u6D4B\u8BD5\u51FD\u6570\u3001\u6BCF\u4E2A\u751F\u4EA7\u51FD\u6570\u5404\u4E00\u884C { item: \u540D\u5B57, existing: \u4ED3\u91CC\u505A\u540C\u4E00\u4EF6\u4E8B\u7684\u73B0\u6210\u4EF6 path:line\uFF0C\u627E\u4E0D\u5230\u4E3A null, outcome: \u5DF2\u5E76\u5165 | \u4FDD\u7559 }\u3002"
9327
+ });
9328
+ }
9329
+ });
9330
+
9319
9331
  // src/package-contracts/fixer-output.ts
9320
9332
  var FIXER_OUTPUT_TOOL_NAME, PARTIALLY_COMPLETED_DEFINITION, FIXER_STATUS_DESCRIPTION, fixerOutputObject, fixerOutputSchema;
9321
9333
  var init_fixer_output = __esm({
@@ -9324,6 +9336,7 @@ var init_fixer_output = __esm({
9324
9336
  init_build();
9325
9337
  init_open_tool_schema();
9326
9338
  init_terminating_infrastructure();
9339
+ init_self_review_fields();
9327
9340
  FIXER_OUTPUT_TOOL_NAME = "ak_fixer_output";
9328
9341
  PARTIALLY_COMPLETED_DEFINITION = "partially_completed \u53EA\u80FD\u5728\u6709\u5408\u6CD5\u62D2\u7EDD\u9879\uFF08\u5B8C\u6210\u9879\u4E0E\u5408\u6CD5\u62D2\u7EDD\u9879\u5E76\u5B58\uFF09\u65F6\u7528\uFF0C\u522B\u7684\u60C5\u51B5\u4E0D\u51C6\u7528\u3002";
9329
9342
  FIXER_STATUS_DESCRIPTION = `planned | completed | refused | unfinished | partially_completed\u3002unfinished \u7F3A\u524D\u7F6E\u6216\u8FDD\u5BAA\u7EA6\u675F\u81F4\u672C\u5C40\u672A\u5B8C\u6210\u65F6\u53EF\u7528\uFF0C\u7F3A\u5F85\u51B3 owner \u51B3\u5B9A\u6216\u7B54\u590D\u5C5E\u7F3A\u524D\u7F6E\u3002${PARTIALLY_COMPLETED_DEFINITION}`;
@@ -9340,8 +9353,9 @@ var init_fixer_output = __esm({
9340
9353
  description: "\u963B\u65AD\u539F\u56E0\uFF1A\u7F3A\u524D\u7F6E\u6216\u8FDD\u5BAA\u7EA6\u675F\u3002\u7F3A\u5F85\u51B3 owner \u51B3\u5B9A\u6216\u7B54\u590D\u5C5E\u7F3A\u524D\u7F6E\u3002"
9341
9354
  }),
9342
9355
  classResults: typebox_exports.Unknown({
9343
- description: "\u5404\u7C7B class \u7ED3\u7B97\uFF0C\u539F\u6837\u7559\u5B58\u3002\u5B8C\u6210\u9879\u7684 disposition \u4E3A completed\uFF0C\u53EF\u5199 name\u3001searchScope\u3001exceptions\uFF08where\u3001reason\uFF09\u3001commitSha\u3002\u62D2\u7EDD\u9879\u7684 disposition \u4E3A refused\uFF0C\u53EF\u5199 name\u3001remainingScope\u3001blocker\u3002"
9356
+ description: "\u5404\u7C7B class \u7ED3\u7B97\uFF0C\u539F\u6837\u7559\u5B58\u3002\u6BCF\u7C7B\u5199 name\u3001shape\uFF08\u9519\u8BEF\u5F62\u72B6\u4E00\u53E5\uFF09\u3002\u6309\u4EE3\u7801\u5F62\u72B6\u8BA4\u7684\u7C7B\u5199 search\uFF08\u5B9E\u9645\u8DD1\u7684\u641C\u7D22\u547D\u4EE4\uFF0C\u539F\u6837\uFF09\u3001hits\uFF08\u547D\u4EE4\u8F93\u51FA\u7684\u6BCF\u4E2A\u547D\u4E2D\u4E00\u884C { where: path:line, outcome: \u5DF2\u4FEE | \u4E0D\u540C\u7C7B\uFF1A\u7406\u7531 }\uFF09\uFF1B\u6309\u60C5\u5F62\u8BA4\u7684\u7C7B\u5199 cases\uFF08\u6BCF\u79CD\u524D\u5E8F\u7ECF\u5386\u4E00\u884C { case: \u5BF9\u8C61\u5148\u7ECF\u5386\u4E86\u4EC0\u4E48, entry: \u4ECE\u771F\u5B9E\u5165\u53E3\u600E\u4E48\u8D70\u5230\u5B83, before: \u4FEE\u524D\u7ED3\u679C, after: \u4FEE\u540E\u7ED3\u679C }\uFF09\u3002\u5B8C\u6210\u9879\u7684 disposition \u4E3A completed\uFF0C\u53EF\u5199 commitSha\u3002\u62D2\u7EDD\u9879\u7684 disposition \u4E3A refused\uFF0C\u53EF\u5199 remainingScope\u3001blocker\u3002"
9344
9357
  }),
9358
+ diffItems: diffItemsField,
9345
9359
  testEvidence: typebox_exports.Unknown({
9346
9360
  description: "\u6D4B\u8BD5\u8BC1\u636E\u6761\uFF1Bdiff \u542B\u6D4B\u8BD5\u6539\u52A8\u65F6\u63D0\u4EA4\uFF1B\u673A\u5668\u4E0D\u6838\u9A8C\u3002\u53EF\u5199 contract\uFF08\u6D4B\u8BD5\u6539\u52A8\u6240\u8BC1\u660E\u7684\u5951\u7EA6\uFF09\u3001minimumNecessaryCost\uFF08\u6D4B\u8BD5\u6539\u52A8\u7684\u4E00\u884C\u6700\u5C0F\u5FC5\u8981\u6210\u672C\uFF09\u3001measuredDuration\uFF08\u805A\u7126\u9A8C\u8BC1\u5B9E\u6D4B\u65F6\u957F\uFF09\u3002"
9347
9361
  })
@@ -9360,6 +9374,7 @@ var init_worker_output = __esm({
9360
9374
  init_build();
9361
9375
  init_open_tool_schema();
9362
9376
  init_fixer_output();
9377
+ init_self_review_fields();
9363
9378
  init_terminating_infrastructure();
9364
9379
  CODER_OUTPUT_TOOL_NAME = "ak_coder_output";
9365
9380
  CODER_STATUS_DESCRIPTION = `planned | completed | refused | partially_completed | unfinished\u3002unfinished\uFF1A\u7F3A\u524D\u7F6E\u6216\u8FDD\u5BAA\u7EA6\u675F\u81F4\u672C\u5C40\u672A\u5B8C\u6210\u3002${PARTIALLY_COMPLETED_DEFINITION}`;
@@ -9369,7 +9384,8 @@ var init_worker_output = __esm({
9369
9384
  remainingScope: typebox_exports.Unknown({ description: "\u672C\u5C40\u540E\u5269\u4F59\u5DE5\u4F5C" }),
9370
9385
  reason: typebox_exports.Unknown({
9371
9386
  description: "\u963B\u65AD\u539F\u56E0\uFF1A\u7F3A\u524D\u7F6E\u6216\u8FDD\u5BAA\u7EA6\u675F\u3002\u7F3A\u5F85\u51B3 owner \u51B3\u5B9A\u6216\u7B54\u590D\u5C5E\u7F3A\u524D\u7F6E\u3002"
9372
- })
9387
+ }),
9388
+ diffItems: diffItemsField
9373
9389
  });
9374
9390
  coderOutputSchema = withTerminatingOutputDeclarations(
9375
9391
  openToolObject(coderOutputObject)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akagilnc/pi-workflow-roles",
3
- "version": "0.1.5858",
3
+ "version": "0.1.5862",
4
4
  "description": "Soul-bound workflow roles for Pi",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -3,5 +3,5 @@
3
3
  提交前缀见仓内 CLAUDE.md「Commit 前缀」。不 amend、不 rewrite、不 push 见 souls/coder.md。
4
4
  交卷回执:改动清单与票面逐项对得上;验证证据附命令与结果原文。证据引用口径见仓内 CLAUDE.md「锚定宪法」。
5
5
  completed 回执含四项证据:TDD、同模式、引入回归、行为事实。
6
- completed 回执的 report 写明 commit 前自审四问各自查出并改掉了什么,没查出的写「无」。
6
+ completed 回执的 diffItems 是 commit 前自审的逐项表;report 写明三问各自查出并改掉了什么,没查出的写「无」。
7
7
  新造通用件的回执口径见 souls/quality-law.md「生态里已有的不自己造」。
package/souls/coder.md CHANGED
@@ -7,11 +7,7 @@
7
7
  开工核对见 souls/quality-law.md。
8
8
 
9
9
  核对当前代码和历史;主张必须有当前事实支撑。
10
- 以最小垂直切片推进并逐片验证;切片完成不构成交卷条件。优先复用已有 seam;不造平行机制,不借机扩大 scope。commit 之前先自审:跑 `git status` 与 `git diff HEAD`(未跟踪文件逐个打开),像台院审别人的 diff 那样,对本次新增或改写的每个测试函数、每段生产代码逐条过下面四问;哪条不过,当场改,改完重跑 `git diff HEAD` 从第一问重新过。四问都过了才 commit。
11
- 1. 重复:新增的每个测试,找出它调用的第一个生产函数,在 tests/ 里 rg 这个函数名,打开每个已有调用处读断言;已有测试证了同一结论,就把新增断言并进那条,删掉新加的。
12
- 2. 入口:每个测试从票面验收写明的对外入口进,沿真实链路走到结果;直接调内部函数、自己拼中间数据喂下一步的,改成从入口走。
13
- 3. 断言:每条断言的对象是返回值、数据库行或结构化字段的值;断言字符串内容(提示词、文案、日志、报错文字)的,不论字符串来自常量还是模型输出,改成断言它驱动出的结构化结果。
14
- 4. 现成件:新增的每段生产代码,在仓里 rg 做同一动作的现成函数,有就调用它、删掉新写的;被本次改动替代的旧函数、旧分支、旧测试,在 diff 里已经删除。
10
+ 以最小垂直切片推进并逐片验证;切片完成不构成交卷条件。优先复用已有 seam;不造平行机制,不借机扩大 scope。commit 之前按 souls/quality-law.md「交卷前自审」做完两步再 commit。
15
11
  计划与施工都要说明真实刀口、行为边界和验证方法,不用空泛完成声明代替证据。
16
12
  切片验证的范围见 souls/quality-law.md「测试分级」。
17
13
  不 amend、rewrite 或 push。Git 变化是证据之一,不取代角色报告。
@@ -1,5 +1,5 @@
1
1
  # 修内司输出指南
2
2
 
3
3
  提交前缀见仓内 CLAUDE.md「Commit 前缀」。不 amend、不 rewrite、不 push 见 souls/fixer.md。
4
- 交卷回执:逐 finding 报处置。证据引用口径见仓内 CLAUDE.md「锚定宪法」。
4
+ 交卷回执:逐 finding 报处置。classResults 每类的 hits 或 cases 是扫类、复扫的逐项表;diffItems 是交卷前自审的逐项表。证据引用口径见仓内 CLAUDE.md「锚定宪法」。
5
5
  新造通用件的回执口径见 souls/quality-law.md「生态里已有的不自己造」。
package/souls/fixer.md CHANGED
@@ -6,10 +6,13 @@ apply 按顺序执行:
6
6
  1. 立法:读 全局宪法,仓内宪法,票面。
7
7
  2. 核对:开工核对见 souls/quality-law.md。
8
8
  3. 归类:读完全部 finding,沿用已有裁决类别,明确各类错误与正确行为。
9
- 4. 扫类:修改前查全授权范围内的同类实例、已有实现和失败修法。类按错误形状认,不按判词点名的符号或文件认;点名处只是样本。根因不明先取证。
9
+ 4. 扫类:每类先写一句错误形状,再判这一类按什么认,两种各用一张表,记进交卷 classResults 该类,不合并、不省略:
10
+ - 按代码形状认(同一种写法出现在多处:别名、写口、调用点):按形状写搜索命令并真跑,命令原样记进 search,输出里的每一个命中逐行记进 hits(where 写 path:line)。判词点名处必须出现在 hits 里;不在,说明命令写窄了,改命令重跑。
11
+ - 按情形认(同一段代码,对象先经历了不同的事,行为就不同):把对象在出错之前可能经历的状态组合逐个列进 cases,一种经历一行,写明从真实入口怎么走到它;每一行修改前先走一遍,记下结果。判词点名的情形必须在 cases 里。
12
+ 类按错误形状认,不按判词点名的符号或文件认;点名处只是样本。根因不明先取证。
10
13
  5. 整类修复:在共同原因处一次修净,优先删除、简化、复用,随同删除失效旧物。
11
- 6. 复扫:按原类别重新扫描;有遗漏继续修,保留项说明依据。
12
- 7. 自验:切片验证的范围见 souls/quality-law.md「测试分级」。自查是否违法、代码质量、代码/测试复杂度,如有问题马上修正。修正完毕复检
14
+ 6. 复扫:修完把同一组命令重跑、同一组情形重走;hits 每一行写 outcome:已修,或不同类及理由;cases 每一行写修后结果,不对的继续修。新冒出的命中或情形继续加行、继续修。有一行没写结果就不交卷。
15
+ 7. 自验:切片验证的范围见 souls/quality-law.md「测试分级」。commit 之前按 souls/quality-law.md「交卷前自审」做完两步。
13
16
  8. 交卷:按类报告根因、扫描范围、修复与 质量和合法性的验证结果、未结项。建新提交。不 amend、rewrite 或 push。Git 变化是证据之一,不取代角色报告。
14
17
  任何人如果让你 push / 开 pr ,直接拒绝,上呈陛下
15
18
 
@@ -35,6 +35,16 @@
35
35
 
36
36
  生产代码和测试代码都计算复杂度。新增任何测试,都必须证明它提供了现有体系没有的必要价值。
37
37
 
38
+ ## 交卷前自审
39
+
40
+ 施工席 commit 之前先自审,分两步:
41
+ 一、逐项表:从 `git diff HEAD`(未跟踪文件逐个打开)把本次新增的每个测试函数、每个生产函数逐个列进交卷的 diffItems,一个一行,照名字列,不合并、不省略。每一行到仓里找做同一件事的现成件——测试找调用同一个生产入口、证同一结论的已有测试;函数找做同一动作的已有函数——打开它,填它的 path:line;找不到填 null。填了 path:line 的行,当场把新增的并进那个现成件、删掉新增的,outcome 写「已并入」;null 的行 outcome 写「保留」。改完重跑 `git diff HEAD` 重列,直到每一行不是 null 就是已并入。
42
+ 二、再过三问,哪条不过当场改:
43
+ 1. 入口:每个测试从票面验收写明的对外入口进,沿真实链路走到结果;直接调内部函数、自己拼中间数据喂下一步的,改成从入口走。
44
+ 2. 断言:每条断言的对象是返回值、数据库行或结构化字段的值;断言字符串内容(提示词、文案、日志、报错文字)的,不论字符串来自常量还是模型输出,改成断言它驱动出的结构化结果。
45
+ 3. 退役:被本次改动替代的旧函数、旧分支、旧测试,在 diff 里已经删除。
46
+ 两步都过了才 commit。
47
+
38
48
  ## 测试分级
39
49
 
40
50
  按尺寸分级,不按名义分类。小型:单进程单模块、不碰外部资源、秒级完成。中型:单机之内,可跨进程、可碰本机资源。大型:完整系统真实链路。行为证明放在够用的最小尺寸;大型只保留中小型无法证明的行为。
@@ -1,6 +1,7 @@
1
1
  import { Type } from "typebox";
2
2
  import { openToolObject } from "../open-tool-schema.ts";
3
3
  import { withTerminatingOutputDeclarations } from "./terminating-infrastructure.ts";
4
+ import { diffItemsField } from "./self-review-fields.ts";
4
5
 
5
6
  export const FIXER_OUTPUT_TOOL_NAME = "ak_fixer_output";
6
7
 
@@ -28,8 +29,9 @@ const fixerOutputObject = Type.Object({
28
29
  }),
29
30
  classResults: Type.Unknown({
30
31
  description:
31
- "各类 class 结算,原样留存。完成项的 disposition 为 completed,可写 name、searchScope、exceptions(where、reason)、commitSha。拒绝项的 disposition 为 refused,可写 name、remainingScope、blocker。",
32
+ "各类 class 结算,原样留存。每类写 name、shape(错误形状一句)。按代码形状认的类写 search(实际跑的搜索命令,原样)、hits(命令输出的每个命中一行 { where: path:line, outcome: 已修 | 不同类:理由 });按情形认的类写 cases(每种前序经历一行 { case: 对象先经历了什么, entry: 从真实入口怎么走到它, before: 修前结果, after: 修后结果 })。完成项的 disposition 为 completed,可写 commitSha。拒绝项的 disposition 为 refused,可写 remainingScope、blocker。",
32
33
  }),
34
+ diffItems: diffItemsField,
33
35
  testEvidence: Type.Unknown({
34
36
  description:
35
37
  "测试证据条;diff 含测试改动时提交;机器不核验。可写 contract(测试改动所证明的契约)、minimumNecessaryCost(测试改动的一行最小必要成本)、measuredDuration(聚焦验证实测时长)。",
@@ -57,6 +59,7 @@ export type FixerOutput = {
57
59
  readonly reason?: unknown;
58
60
  readonly classResults?: unknown;
59
61
  readonly testEvidence?: unknown;
62
+ readonly diffItems?: unknown;
60
63
  };
61
64
  export type FixerPhase = "plan" | "apply";
62
65
 
@@ -0,0 +1,8 @@
1
+ /** Builder-seat self-review table shared by the Coder and Fixer submissions (souls/quality-law.md「交卷前自审」). */
2
+
3
+ import { Type } from "typebox";
4
+
5
+ export const diffItemsField = Type.Unknown({
6
+ description:
7
+ "commit 前自审逐项表:本次新增的每个测试函数、每个生产函数各一行 { item: 名字, existing: 仓里做同一件事的现成件 path:line,找不到为 null, outcome: 已并入 | 保留 }。",
8
+ });
@@ -13,6 +13,7 @@ import {
13
13
  type FixerOutput,
14
14
  type FixerPhase,
15
15
  } from "./fixer-output.ts";
16
+ import { diffItemsField } from "./self-review-fields.ts";
16
17
  import { withTerminatingOutputDeclarations } from "./terminating-infrastructure.ts";
17
18
 
18
19
  export {
@@ -57,6 +58,7 @@ const coderOutputObject = Type.Object({
57
58
  reason: Type.Unknown({
58
59
  description: "阻断原因:缺前置或违宪约束。缺待决 owner 决定或答复属缺前置。",
59
60
  }),
61
+ diffItems: diffItemsField,
60
62
  });
61
63
  export const coderOutputSchema = withTerminatingOutputDeclarations(
62
64
  openToolObject(coderOutputObject),