@akagilnc/pi-workflow-roles 0.1.5860 → 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,19 +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
  }),
1866
- diffItems: Type8.Unknown({
1867
- 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"
1868
- })
1881
+ diffItems: diffItemsField
1869
1882
  });
1870
1883
  coderOutputSchema = withTerminatingOutputDeclarations(
1871
1884
  openToolObject(coderOutputObject)
@@ -1881,7 +1894,7 @@ var init_canonical_json = __esm({
1881
1894
  });
1882
1895
 
1883
1896
  // src/doctor-contracts.ts
1884
- import { Type as Type9 } from "typebox";
1897
+ import { Type as Type10 } from "typebox";
1885
1898
  function validateDoctorSubmissionShape(value) {
1886
1899
  return value;
1887
1900
  }
@@ -1907,25 +1920,25 @@ var init_doctor_contracts = __esm({
1907
1920
  biteNone = "noRealBite";
1908
1921
  DOCTOR_BITE_KINDS = [biteActual, biteNone];
1909
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";
1910
- doctorSubmissionObject = Type9.Object({
1911
- status: Type9.Unknown({ description: DOCTOR_STATUS_DESCRIPTION }),
1912
- case: Type9.Unknown({
1923
+ doctorSubmissionObject = Type10.Object({
1924
+ status: Type10.Unknown({ description: DOCTOR_STATUS_DESCRIPTION }),
1925
+ case: Type10.Unknown({
1913
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"
1914
1927
  }),
1915
- findings: Type9.Unknown({
1928
+ findings: Type10.Unknown({
1916
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`
1917
1930
  }),
1918
- reason: Type9.Unknown({
1931
+ reason: Type10.Unknown({
1919
1932
  description: "\u8BC1\u636E\u4E0D\u8DB3\u4EE5\u652F\u6491\u5982\u5B9E\u8BC1\u8BCD\u7684\u539F\u56E0\uFF1B\u4EC5 refused \u65F6\u7528\u3002"
1920
1933
  }),
1921
- missingEvidence: Type9.Unknown({
1934
+ missingEvidence: Type10.Unknown({
1922
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"
1923
1936
  })
1924
1937
  });
1925
1938
  doctorSubmissionSchema = withTerminatingOutputDeclarations(
1926
1939
  openToolObject(doctorSubmissionObject)
1927
1940
  );
1928
- 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 });
1929
1942
  DoctorEvidenceStore = class {
1930
1943
  constructor(patient) {
1931
1944
  this.patient = patient;
@@ -1994,7 +2007,7 @@ var init_exact_utf8 = __esm({
1994
2007
  });
1995
2008
 
1996
2009
  // src/merger-contracts.ts
1997
- import { Type as Type10 } from "typebox";
2010
+ import { Type as Type11 } from "typebox";
1998
2011
  function fail(message = "Merger input violates its exact contract") {
1999
2012
  throw new MergerInputContractError(message);
2000
2013
  }
@@ -2028,25 +2041,25 @@ var init_merger_contracts = __esm({
2028
2041
  init_open_tool_schema();
2029
2042
  init_terminating_infrastructure();
2030
2043
  init_unknown_value();
2031
- materialSchema = Type10.Object({ bytesBase64: Type10.String(), sha256: Type10.String() });
2032
- checkSchema = Type10.Object({ name: Type10.String({ minLength: 1 }), argv: Type10.Array(Type10.String({ minLength: 1 }), { minItems: 1 }) });
2033
- mergerInputSchema = Type10.Object({
2034
- attemptId: Type10.String({ minLength: 1, description: "\u5BF9\u8D26 attempt \u8EAB\u4EFD\uFF08transport\uFF09" }),
2035
- targetObjectId: Type10.String({ description: "\u6750\u6599\uFF1Atarget parent OID\uFF1B\u53EF\u7A7A" }),
2036
- 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" }),
2037
2050
  // #1168: task/authority dispatch copies removed; git-fact intents remain.
2038
- materials: Type10.Object({ targetIntent: materialSchema, sourceIntent: materialSchema }),
2039
- expectedConflictPaths: Type10.Array(Type10.String(), { description: "\u6750\u6599\uFF1A\u5F53\u524D\u672A\u5408\u5E76\u8DEF\u5F84\uFF1B\u53EF\u7A7A" }),
2040
- resolutionScope: Type10.Array(Type10.String(), { description: "\u6750\u6599\uFF1A\u89E3\u6790\u8303\u56F4\u63D0\u793A\uFF1B\u53EF\u7A7A" }),
2041
- 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)
2042
2055
  });
2043
2056
  MERGER_STATUS_DESCRIPTION = "completed | escalate";
2044
- mergerOutputObject = Type10.Object({
2045
- status: Type10.Unknown({ description: MERGER_STATUS_DESCRIPTION }),
2046
- attemptId: Type10.Unknown({ description: "\u5DF2\u53D7\u7406\u5408\u5E76 attempt \u8EAB\u4EFD" }),
2047
- report: Type10.Unknown({ description: "\u5982\u5B9E\u7ED3\u679C\u62A5\u544A" }),
2048
- mergeCommitId: Type10.Unknown({ description: "\u5B8C\u6210\u5408\u5E76 commit object ID" }),
2049
- 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({
2050
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"
2051
2064
  })
2052
2065
  });
@@ -2101,7 +2114,7 @@ var init_countersign_contracts = __esm({
2101
2114
  });
2102
2115
 
2103
2116
  // src/gleaner-left-contracts.ts
2104
- import { Type as Type11 } from "typebox";
2117
+ import { Type as Type12 } from "typebox";
2105
2118
  var GLEANER_LEFT_OUTPUT_TOOL_NAME, gleanerLeftOutputSchema, GLEANER_LEFT_BASE_FLAG;
2106
2119
  var init_gleaner_left_contracts = __esm({
2107
2120
  "src/gleaner-left-contracts.ts"() {
@@ -2112,11 +2125,11 @@ var init_gleaner_left_contracts = __esm({
2112
2125
  GLEANER_LEFT_OUTPUT_TOOL_NAME = "ak_gleaner_left_output";
2113
2126
  gleanerLeftOutputSchema = withTerminatingOutputDeclarations(
2114
2127
  openToolObject(
2115
- Type11.Object({
2116
- status: Type11.Unknown({
2128
+ Type12.Object({
2129
+ status: Type12.Unknown({
2117
2130
  description: "completed"
2118
2131
  }),
2119
- findings: Type11.Unknown({
2132
+ findings: Type12.Unknown({
2120
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"
2121
2134
  })
2122
2135
  })
@@ -2204,7 +2217,7 @@ var init_ticket_provenance_contracts = __esm({
2204
2217
  });
2205
2218
 
2206
2219
  // src/diarist-contracts.ts
2207
- import { Type as Type12 } from "typebox";
2220
+ import { Type as Type13 } from "typebox";
2208
2221
  function projectDiaristSessions(value) {
2209
2222
  const raw = value?.sessions;
2210
2223
  if (raw === void 0) return [];
@@ -2237,20 +2250,20 @@ var init_diarist_contracts = __esm({
2237
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";
2238
2251
  diaristOutputSchema = withTerminatingOutputDeclarations(
2239
2252
  openToolObject(
2240
- Type12.Object({
2241
- status: Type12.Unknown({
2253
+ Type13.Object({
2254
+ status: Type13.Unknown({
2242
2255
  description: "completed | escalate"
2243
2256
  }),
2244
- ticketNumber: Type12.Optional(
2245
- Type12.Unknown({
2257
+ ticketNumber: Type13.Optional(
2258
+ Type13.Unknown({
2246
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"
2247
2260
  })
2248
2261
  ),
2249
- reason: Type12.Unknown({
2262
+ reason: Type13.Unknown({
2250
2263
  description: "status \u4E3A escalate \u65F6\uFF1A\u8BA4\u4E0D\u51FA\u672C\u5EAD\u5BF9\u8C61\u7684\u539F\u56E0"
2251
2264
  }),
2252
- sessions: Type12.Optional(Type12.Unknown({ description: DIARIST_SESSIONS_DESCRIPTION })),
2253
- ticketSessions: Type12.Unknown({
2265
+ sessions: Type13.Optional(Type13.Unknown({ description: DIARIST_SESSIONS_DESCRIPTION })),
2266
+ ticketSessions: Type13.Unknown({
2254
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`
2255
2268
  })
2256
2269
  })
@@ -2260,7 +2273,7 @@ var init_diarist_contracts = __esm({
2260
2273
  });
2261
2274
 
2262
2275
  // src/secretariat-contracts.ts
2263
- import { Type as Type13 } from "typebox";
2276
+ import { Type as Type14 } from "typebox";
2264
2277
  var SECRETARIAT_OUTPUT_TOOL_NAME, secretariatVerdictSchema;
2265
2278
  var init_secretariat_contracts = __esm({
2266
2279
  "src/secretariat-contracts.ts"() {
@@ -2268,19 +2281,19 @@ var init_secretariat_contracts = __esm({
2268
2281
  init_terminating_infrastructure();
2269
2282
  SECRETARIAT_OUTPUT_TOOL_NAME = "ak_secretariat_output";
2270
2283
  secretariatVerdictSchema = withTerminatingOutputDeclarations(
2271
- Type13.Object(
2284
+ Type14.Object(
2272
2285
  {
2273
- secretariatStatus: Type13.Unknown({
2286
+ secretariatStatus: Type14.Unknown({
2274
2287
  description: "converged | escalate"
2275
2288
  }),
2276
- ticketNumber: Type13.Optional(
2277
- 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" })
2278
2291
  ),
2279
- note: Type13.Unknown({
2292
+ note: Type14.Unknown({
2280
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"
2281
2294
  }),
2282
- evidence: Type13.Optional(Type13.Unknown({ description: "\u7559\u5B58\u8BC1\u636E" })),
2283
- decisionGate: Type13.Unknown({
2295
+ evidence: Type14.Optional(Type14.Unknown({ description: "\u7559\u5B58\u8BC1\u636E" })),
2296
+ decisionGate: Type14.Unknown({
2284
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"
2285
2298
  })
2286
2299
  },
@@ -3063,7 +3076,7 @@ var init_submission_errors = __esm({
3063
3076
  });
3064
3077
 
3065
3078
  // src/collector-tool-schemas.ts
3066
- import { Type as Type14 } from "typebox";
3079
+ import { Type as Type15 } from "typebox";
3067
3080
  var collectorOutputBaseSchema, collectorOutputArgsSchema;
3068
3081
  var init_collector_tool_schemas = __esm({
3069
3082
  "src/collector-tool-schemas.ts"() {
@@ -3071,11 +3084,11 @@ var init_collector_tool_schemas = __esm({
3071
3084
  init_open_tool_schema();
3072
3085
  init_terminating_infrastructure();
3073
3086
  collectorOutputBaseSchema = openToolObject(
3074
- Type14.Object({
3075
- groups: Type14.Unsafe({
3087
+ Type15.Object({
3088
+ groups: Type15.Unsafe({
3076
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"
3077
3090
  }),
3078
- unfinishedReasons: Type14.Unknown({
3091
+ unfinishedReasons: Type15.Unknown({
3079
3092
  description: "\u672A\u5B8C\u6210\u539F\u56E0\uFF1B\u53D6\u8BC1\u53D7\u9650\u65F6\u5982\u5B9E\u62A5\u544A\u3002"
3080
3093
  })
3081
3094
  })
@@ -8100,7 +8113,7 @@ var init_invocation = __esm({
8100
8113
  });
8101
8114
 
8102
8115
  // src/report-ticket-tool.ts
8103
- import { Type as Type15 } from "typebox";
8116
+ import { Type as Type16 } from "typebox";
8104
8117
  import { existsSync as existsSync4 } from "node:fs";
8105
8118
  function pageString(page, key) {
8106
8119
  const value = page?.[key];
@@ -8209,9 +8222,9 @@ var init_report_ticket_tool = __esm({
8209
8222
  init_run_ticket_number();
8210
8223
  init_unknown_value();
8211
8224
  REPORT_TICKET_TOOL_NAME = "ak_report_ticket";
8212
- reportTicketArgsSchema = Type15.Object(
8225
+ reportTicketArgsSchema = Type16.Object(
8213
8226
  {
8214
- ticketNumber: Type15.Unknown({
8227
+ ticketNumber: Type16.Unknown({
8215
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"
8216
8229
  })
8217
8230
  },
@@ -17817,7 +17830,7 @@ var init_analyst_model_groups = __esm({
17817
17830
 
17818
17831
  // src/analyst-entry.ts
17819
17832
  import { readFile as readFile12 } from "node:fs/promises";
17820
- import { Type as Type16 } from "typebox";
17833
+ import { Type as Type17 } from "typebox";
17821
17834
  function cachedPageMatchesRequestedScope(page, input) {
17822
17835
  if (page.bookKey !== input.bookKey) return false;
17823
17836
  const requestedTicket = input.ticketNumber ?? input.issueNumber;
@@ -18022,16 +18035,16 @@ var init_analyst_entry = __esm({
18022
18035
  }
18023
18036
  }
18024
18037
  };
18025
- analystSweepModeInputSchema = Type16.Object(
18038
+ analystSweepModeInputSchema = Type17.Object(
18026
18039
  {
18027
- mode: Type16.Literal("sweep"),
18028
- mergedPullRequests: Type16.Array(
18029
- Type16.Object(
18040
+ mode: Type17.Literal("sweep"),
18041
+ mergedPullRequests: Type17.Array(
18042
+ Type17.Object(
18030
18043
  {
18031
- projectRoot: Type16.String(),
18044
+ projectRoot: Type17.String(),
18032
18045
  /** 排除后改动行数 — omit or 0 → typed 空缺; finite ≥ 0 only. */
18033
- changedLines: Type16.Optional(
18034
- Type16.Number({ minimum: 0, maximum: Number.MAX_VALUE })
18046
+ changedLines: Type17.Optional(
18047
+ Type17.Number({ minimum: 0, maximum: Number.MAX_VALUE })
18035
18048
  )
18036
18049
  }
18037
18050
  )
@@ -20975,18 +20988,18 @@ import { join as join30 } from "node:path";
20975
20988
  import { Value as Value2 } from "typebox/value";
20976
20989
 
20977
20990
  // src/activation-trace.ts
20978
- import { Type as Type17 } from "typebox";
20979
- var causeSchema = Type17.Object({
20980
- identity: Type17.String({ minLength: 1 }),
20981
- name: Type17.String({ minLength: 1 }),
20982
- message: Type17.String(),
20983
- 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 }))
20984
20997
  }, { additionalProperties: false });
20985
- var activationTraceRecordSchema = Type17.Object({
20986
- role: Type17.String({ minLength: 1 }),
20987
- stageId: Type17.String({ pattern: "^[a-z][a-z0-9-]*$" }),
20988
- status: Type17.Literal("failed"),
20989
- 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" }),
20990
21003
  cause: causeSchema
20991
21004
  }, { additionalProperties: false });
20992
21005
  var activationCauseEvidence = 0;
@@ -21149,10 +21162,10 @@ init_engine_detour();
21149
21162
  init_engine_detour_usage();
21150
21163
  init_run_terminal_artifacts();
21151
21164
  init_serialize_thrown_value();
21152
- import { Type as Type18 } from "typebox";
21153
- var engineDetourArgsSchema = Type18.Object(
21165
+ import { Type as Type19 } from "typebox";
21166
+ var engineDetourArgsSchema = Type19.Object(
21154
21167
  {
21155
- argv: Type18.Array(Type18.String({ minLength: 1 }), {
21168
+ argv: Type19.Array(Type19.String({ minLength: 1 }), {
21156
21169
  minItems: 1,
21157
21170
  description: "\u9996\u9879\u4E3A PATH \u4E2D\u7684\u53EF\u6267\u884C\u6587\u4EF6\uFF0C\u5176\u4F59\u9879\u4E3A\u53C2\u6570\u3002"
21158
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,19 +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
  }),
822
- diffItems: Type8.Unknown({
823
- 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"
824
- })
837
+ diffItems: diffItemsField
825
838
  });
826
839
  coderOutputSchema = withTerminatingOutputDeclarations(
827
840
  openToolObject(coderOutputObject)
@@ -837,7 +850,7 @@ var init_canonical_json = __esm({
837
850
  });
838
851
 
839
852
  // src/doctor-contracts.ts
840
- import { Type as Type9 } from "typebox";
853
+ import { Type as Type10 } from "typebox";
841
854
  function validateDoctorSubmissionShape(value) {
842
855
  return value;
843
856
  }
@@ -863,25 +876,25 @@ var init_doctor_contracts = __esm({
863
876
  biteNone = "noRealBite";
864
877
  DOCTOR_BITE_KINDS = [biteActual, biteNone];
865
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";
866
- doctorSubmissionObject = Type9.Object({
867
- status: Type9.Unknown({ description: DOCTOR_STATUS_DESCRIPTION }),
868
- case: Type9.Unknown({
879
+ doctorSubmissionObject = Type10.Object({
880
+ status: Type10.Unknown({ description: DOCTOR_STATUS_DESCRIPTION }),
881
+ case: Type10.Unknown({
869
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"
870
883
  }),
871
- findings: Type9.Unknown({
884
+ findings: Type10.Unknown({
872
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`
873
886
  }),
874
- reason: Type9.Unknown({
887
+ reason: Type10.Unknown({
875
888
  description: "\u8BC1\u636E\u4E0D\u8DB3\u4EE5\u652F\u6491\u5982\u5B9E\u8BC1\u8BCD\u7684\u539F\u56E0\uFF1B\u4EC5 refused \u65F6\u7528\u3002"
876
889
  }),
877
- missingEvidence: Type9.Unknown({
890
+ missingEvidence: Type10.Unknown({
878
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"
879
892
  })
880
893
  });
881
894
  doctorSubmissionSchema = withTerminatingOutputDeclarations(
882
895
  openToolObject(doctorSubmissionObject)
883
896
  );
884
- 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 });
885
898
  DoctorEvidenceStore = class {
886
899
  constructor(patient) {
887
900
  this.patient = patient;
@@ -950,7 +963,7 @@ var init_exact_utf8 = __esm({
950
963
  });
951
964
 
952
965
  // src/merger-contracts.ts
953
- import { Type as Type10 } from "typebox";
966
+ import { Type as Type11 } from "typebox";
954
967
  function fail(message = "Merger input violates its exact contract") {
955
968
  throw new MergerInputContractError(message);
956
969
  }
@@ -984,25 +997,25 @@ var init_merger_contracts = __esm({
984
997
  init_open_tool_schema();
985
998
  init_terminating_infrastructure();
986
999
  init_unknown_value();
987
- materialSchema = Type10.Object({ bytesBase64: Type10.String(), sha256: Type10.String() });
988
- checkSchema = Type10.Object({ name: Type10.String({ minLength: 1 }), argv: Type10.Array(Type10.String({ minLength: 1 }), { minItems: 1 }) });
989
- mergerInputSchema = Type10.Object({
990
- attemptId: Type10.String({ minLength: 1, description: "\u5BF9\u8D26 attempt \u8EAB\u4EFD\uFF08transport\uFF09" }),
991
- targetObjectId: Type10.String({ description: "\u6750\u6599\uFF1Atarget parent OID\uFF1B\u53EF\u7A7A" }),
992
- 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" }),
993
1006
  // #1168: task/authority dispatch copies removed; git-fact intents remain.
994
- materials: Type10.Object({ targetIntent: materialSchema, sourceIntent: materialSchema }),
995
- expectedConflictPaths: Type10.Array(Type10.String(), { description: "\u6750\u6599\uFF1A\u5F53\u524D\u672A\u5408\u5E76\u8DEF\u5F84\uFF1B\u53EF\u7A7A" }),
996
- resolutionScope: Type10.Array(Type10.String(), { description: "\u6750\u6599\uFF1A\u89E3\u6790\u8303\u56F4\u63D0\u793A\uFF1B\u53EF\u7A7A" }),
997
- 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)
998
1011
  });
999
1012
  MERGER_STATUS_DESCRIPTION = "completed | escalate";
1000
- mergerOutputObject = Type10.Object({
1001
- status: Type10.Unknown({ description: MERGER_STATUS_DESCRIPTION }),
1002
- attemptId: Type10.Unknown({ description: "\u5DF2\u53D7\u7406\u5408\u5E76 attempt \u8EAB\u4EFD" }),
1003
- report: Type10.Unknown({ description: "\u5982\u5B9E\u7ED3\u679C\u62A5\u544A" }),
1004
- mergeCommitId: Type10.Unknown({ description: "\u5B8C\u6210\u5408\u5E76 commit object ID" }),
1005
- 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({
1006
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"
1007
1020
  })
1008
1021
  });
@@ -1057,7 +1070,7 @@ var init_countersign_contracts = __esm({
1057
1070
  });
1058
1071
 
1059
1072
  // src/gleaner-left-contracts.ts
1060
- import { Type as Type11 } from "typebox";
1073
+ import { Type as Type12 } from "typebox";
1061
1074
  var GLEANER_LEFT_OUTPUT_TOOL_NAME, gleanerLeftOutputSchema, GLEANER_LEFT_BASE_FLAG;
1062
1075
  var init_gleaner_left_contracts = __esm({
1063
1076
  "src/gleaner-left-contracts.ts"() {
@@ -1068,11 +1081,11 @@ var init_gleaner_left_contracts = __esm({
1068
1081
  GLEANER_LEFT_OUTPUT_TOOL_NAME = "ak_gleaner_left_output";
1069
1082
  gleanerLeftOutputSchema = withTerminatingOutputDeclarations(
1070
1083
  openToolObject(
1071
- Type11.Object({
1072
- status: Type11.Unknown({
1084
+ Type12.Object({
1085
+ status: Type12.Unknown({
1073
1086
  description: "completed"
1074
1087
  }),
1075
- findings: Type11.Unknown({
1088
+ findings: Type12.Unknown({
1076
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"
1077
1090
  })
1078
1091
  })
@@ -2074,7 +2087,7 @@ var init_ticket_provenance_contracts = __esm({
2074
2087
  });
2075
2088
 
2076
2089
  // src/diarist-contracts.ts
2077
- import { Type as Type12 } from "typebox";
2090
+ import { Type as Type13 } from "typebox";
2078
2091
  function projectDiaristSessions(value) {
2079
2092
  const raw = value?.sessions;
2080
2093
  if (raw === void 0) return [];
@@ -2107,20 +2120,20 @@ var init_diarist_contracts = __esm({
2107
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";
2108
2121
  diaristOutputSchema = withTerminatingOutputDeclarations(
2109
2122
  openToolObject(
2110
- Type12.Object({
2111
- status: Type12.Unknown({
2123
+ Type13.Object({
2124
+ status: Type13.Unknown({
2112
2125
  description: "completed | escalate"
2113
2126
  }),
2114
- ticketNumber: Type12.Optional(
2115
- Type12.Unknown({
2127
+ ticketNumber: Type13.Optional(
2128
+ Type13.Unknown({
2116
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"
2117
2130
  })
2118
2131
  ),
2119
- reason: Type12.Unknown({
2132
+ reason: Type13.Unknown({
2120
2133
  description: "status \u4E3A escalate \u65F6\uFF1A\u8BA4\u4E0D\u51FA\u672C\u5EAD\u5BF9\u8C61\u7684\u539F\u56E0"
2121
2134
  }),
2122
- sessions: Type12.Optional(Type12.Unknown({ description: DIARIST_SESSIONS_DESCRIPTION })),
2123
- ticketSessions: Type12.Unknown({
2135
+ sessions: Type13.Optional(Type13.Unknown({ description: DIARIST_SESSIONS_DESCRIPTION })),
2136
+ ticketSessions: Type13.Unknown({
2124
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`
2125
2138
  })
2126
2139
  })
@@ -2130,7 +2143,7 @@ var init_diarist_contracts = __esm({
2130
2143
  });
2131
2144
 
2132
2145
  // src/secretariat-contracts.ts
2133
- import { Type as Type13 } from "typebox";
2146
+ import { Type as Type14 } from "typebox";
2134
2147
  var SECRETARIAT_OUTPUT_TOOL_NAME, secretariatVerdictSchema;
2135
2148
  var init_secretariat_contracts = __esm({
2136
2149
  "src/secretariat-contracts.ts"() {
@@ -2138,19 +2151,19 @@ var init_secretariat_contracts = __esm({
2138
2151
  init_terminating_infrastructure();
2139
2152
  SECRETARIAT_OUTPUT_TOOL_NAME = "ak_secretariat_output";
2140
2153
  secretariatVerdictSchema = withTerminatingOutputDeclarations(
2141
- Type13.Object(
2154
+ Type14.Object(
2142
2155
  {
2143
- secretariatStatus: Type13.Unknown({
2156
+ secretariatStatus: Type14.Unknown({
2144
2157
  description: "converged | escalate"
2145
2158
  }),
2146
- ticketNumber: Type13.Optional(
2147
- 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" })
2148
2161
  ),
2149
- note: Type13.Unknown({
2162
+ note: Type14.Unknown({
2150
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"
2151
2164
  }),
2152
- evidence: Type13.Optional(Type13.Unknown({ description: "\u7559\u5B58\u8BC1\u636E" })),
2153
- decisionGate: Type13.Unknown({
2165
+ evidence: Type14.Optional(Type14.Unknown({ description: "\u7559\u5B58\u8BC1\u636E" })),
2166
+ decisionGate: Type14.Unknown({
2154
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"
2155
2168
  })
2156
2169
  },
@@ -4326,7 +4339,7 @@ var init_collector_config = __esm({
4326
4339
  });
4327
4340
 
4328
4341
  // src/collector-tool-schemas.ts
4329
- import { Type as Type14 } from "typebox";
4342
+ import { Type as Type15 } from "typebox";
4330
4343
  var collectorOutputBaseSchema, collectorOutputArgsSchema;
4331
4344
  var init_collector_tool_schemas = __esm({
4332
4345
  "src/collector-tool-schemas.ts"() {
@@ -4334,11 +4347,11 @@ var init_collector_tool_schemas = __esm({
4334
4347
  init_open_tool_schema();
4335
4348
  init_terminating_infrastructure();
4336
4349
  collectorOutputBaseSchema = openToolObject(
4337
- Type14.Object({
4338
- groups: Type14.Unsafe({
4350
+ Type15.Object({
4351
+ groups: Type15.Unsafe({
4339
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"
4340
4353
  }),
4341
- unfinishedReasons: Type14.Unknown({
4354
+ unfinishedReasons: Type15.Unknown({
4342
4355
  description: "\u672A\u5B8C\u6210\u539F\u56E0\uFF1B\u53D6\u8BC1\u53D7\u9650\u65F6\u5982\u5B9E\u62A5\u544A\u3002"
4343
4356
  })
4344
4357
  })
@@ -10328,7 +10341,7 @@ var init_run_lifecycle = __esm({
10328
10341
  });
10329
10342
 
10330
10343
  // src/report-ticket-tool.ts
10331
- import { Type as Type15 } from "typebox";
10344
+ import { Type as Type16 } from "typebox";
10332
10345
  import { existsSync as existsSync6 } from "node:fs";
10333
10346
  function pageString(page, key) {
10334
10347
  const value = page?.[key];
@@ -10437,9 +10450,9 @@ var init_report_ticket_tool = __esm({
10437
10450
  init_run_ticket_number();
10438
10451
  init_unknown_value();
10439
10452
  REPORT_TICKET_TOOL_NAME = "ak_report_ticket";
10440
- reportTicketArgsSchema = Type15.Object(
10453
+ reportTicketArgsSchema = Type16.Object(
10441
10454
  {
10442
- ticketNumber: Type15.Unknown({
10455
+ ticketNumber: Type16.Unknown({
10443
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"
10444
10457
  })
10445
10458
  },
@@ -19164,7 +19177,7 @@ var init_analyst_model_groups = __esm({
19164
19177
 
19165
19178
  // src/analyst-entry.ts
19166
19179
  import { readFile as readFile13 } from "node:fs/promises";
19167
- import { Type as Type16 } from "typebox";
19180
+ import { Type as Type17 } from "typebox";
19168
19181
  function cachedPageMatchesRequestedScope(page, input) {
19169
19182
  if (page.bookKey !== input.bookKey) return false;
19170
19183
  const requestedTicket = input.ticketNumber ?? input.issueNumber;
@@ -19369,16 +19382,16 @@ var init_analyst_entry = __esm({
19369
19382
  }
19370
19383
  }
19371
19384
  };
19372
- analystSweepModeInputSchema = Type16.Object(
19385
+ analystSweepModeInputSchema = Type17.Object(
19373
19386
  {
19374
- mode: Type16.Literal("sweep"),
19375
- mergedPullRequests: Type16.Array(
19376
- Type16.Object(
19387
+ mode: Type17.Literal("sweep"),
19388
+ mergedPullRequests: Type17.Array(
19389
+ Type17.Object(
19377
19390
  {
19378
- projectRoot: Type16.String(),
19391
+ projectRoot: Type17.String(),
19379
19392
  /** 排除后改动行数 — omit or 0 → typed 空缺; finite ≥ 0 only. */
19380
- changedLines: Type16.Optional(
19381
- Type16.Number({ minimum: 0, maximum: Number.MAX_VALUE })
19393
+ changedLines: Type17.Optional(
19394
+ Type17.Number({ minimum: 0, maximum: Number.MAX_VALUE })
19382
19395
  )
19383
19396
  }
19384
19397
  )
@@ -21121,18 +21134,18 @@ import { join as join30 } from "node:path";
21121
21134
  import { Value as Value2 } from "typebox/value";
21122
21135
 
21123
21136
  // src/activation-trace.ts
21124
- import { Type as Type17 } from "typebox";
21125
- var causeSchema = Type17.Object({
21126
- identity: Type17.String({ minLength: 1 }),
21127
- name: Type17.String({ minLength: 1 }),
21128
- message: Type17.String(),
21129
- 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 }))
21130
21143
  }, { additionalProperties: false });
21131
- var activationTraceRecordSchema = Type17.Object({
21132
- role: Type17.String({ minLength: 1 }),
21133
- stageId: Type17.String({ pattern: "^[a-z][a-z0-9-]*$" }),
21134
- status: Type17.Literal("failed"),
21135
- 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" }),
21136
21149
  cause: causeSchema
21137
21150
  }, { additionalProperties: false });
21138
21151
  var activationCauseEvidence = 0;
@@ -21295,10 +21308,10 @@ init_engine_detour();
21295
21308
  init_engine_detour_usage();
21296
21309
  init_run_terminal_artifacts();
21297
21310
  init_serialize_thrown_value();
21298
- import { Type as Type18 } from "typebox";
21299
- var engineDetourArgsSchema = Type18.Object(
21311
+ import { Type as Type19 } from "typebox";
21312
+ var engineDetourArgsSchema = Type19.Object(
21300
21313
  {
21301
- argv: Type18.Array(Type18.String({ minLength: 1 }), {
21314
+ argv: Type19.Array(Type19.String({ minLength: 1 }), {
21302
21315
  minItems: 1,
21303
21316
  description: "\u9996\u9879\u4E3A PATH \u4E2D\u7684\u53EF\u6267\u884C\u6587\u4EF6\uFF0C\u5176\u4F59\u9879\u4E3A\u53C2\u6570\u3002"
21304
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}`;
@@ -8880,9 +8895,7 @@ var init_worker_output = __esm({
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
  }),
8883
- diffItems: typebox_exports.Unknown({
8884
- 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"
8885
- })
8898
+ diffItems: diffItemsField
8886
8899
  });
8887
8900
  coderOutputSchema = withTerminatingOutputDeclarations(
8888
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) {
@@ -22,9 +23,7 @@ const coderOutputObject = Type.Object({
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
  }),
25
- diffItems: Type.Unknown({
26
- 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"
27
- })
26
+ diffItems: diffItemsField
28
27
  });
29
28
  const coderOutputSchema = withTerminatingOutputDeclarations(
30
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}`;
@@ -9370,9 +9385,7 @@ var init_worker_output = __esm({
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
  }),
9373
- diffItems: typebox_exports.Unknown({
9374
- 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"
9375
- })
9388
+ diffItems: diffItemsField
9376
9389
  });
9377
9390
  coderOutputSchema = withTerminatingOutputDeclarations(
9378
9391
  openToolObject(coderOutputObject)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akagilnc/pi-workflow-roles",
3
- "version": "0.1.5860",
3
+ "version": "0.1.5862",
4
4
  "description": "Soul-bound workflow roles for Pi",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
package/souls/coder.md CHANGED
@@ -7,13 +7,7 @@
7
7
  开工核对见 souls/quality-law.md。
8
8
 
9
9
  核对当前代码和历史;主张必须有当前事实支撑。
10
- 以最小垂直切片推进并逐片验证;切片完成不构成交卷条件。优先复用已有 seam;不造平行机制,不借机扩大 scope。commit 之前先自审,分两步:
11
- 一、逐项表:从 `git diff HEAD`(未跟踪文件逐个打开)把本次新增的每个测试函数、每个生产函数逐个列进交卷的 diffItems,一个一行,照名字列,不合并、不省略。每一行到仓里找做同一件事的现成件——测试找调用同一个生产入口、证同一结论的已有测试;函数找做同一动作的已有函数——打开它,填它的 path:line;找不到填 null。填了 path:line 的行,当场把新增的并进那个现成件、删掉新增的,outcome 写「已并入」;null 的行 outcome 写「保留」。改完重跑 `git diff HEAD` 重列,直到每一行不是 null 就是已并入。
12
- 二、再过三问,哪条不过当场改:
13
- 1. 入口:每个测试从票面验收写明的对外入口进,沿真实链路走到结果;直接调内部函数、自己拼中间数据喂下一步的,改成从入口走。
14
- 2. 断言:每条断言的对象是返回值、数据库行或结构化字段的值;断言字符串内容(提示词、文案、日志、报错文字)的,不论字符串来自常量还是模型输出,改成断言它驱动出的结构化结果。
15
- 3. 退役:被本次改动替代的旧函数、旧分支、旧测试,在 diff 里已经删除。
16
- 两步都过了才 commit。
10
+ 以最小垂直切片推进并逐片验证;切片完成不构成交卷条件。优先复用已有 seam;不造平行机制,不借机扩大 scope。commit 之前按 souls/quality-law.md「交卷前自审」做完两步再 commit。
17
11
  计划与施工都要说明真实刀口、行为边界和验证方法,不用空泛完成声明代替证据。
18
12
  切片验证的范围见 souls/quality-law.md「测试分级」。
19
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,10 +58,7 @@ const coderOutputObject = Type.Object({
57
58
  reason: Type.Unknown({
58
59
  description: "阻断原因:缺前置或违宪约束。缺待决 owner 决定或答复属缺前置。",
59
60
  }),
60
- diffItems: Type.Unknown({
61
- description:
62
- "commit 前自审逐项表:本次新增的每个测试函数、每个生产函数各一行 { item: 名字, existing: 仓里做同一件事的现成件 path:line,找不到为 null, outcome: 已并入 | 保留 }。",
63
- }),
61
+ diffItems: diffItemsField,
64
62
  });
65
63
  export const coderOutputSchema = withTerminatingOutputDeclarations(
66
64
  openToolObject(coderOutputObject),