@akagilnc/pi-workflow-roles 0.1.5946 → 0.1.5949

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.
@@ -1519,15 +1519,15 @@ function withTerminatingOutputDeclarations(schema) {
1519
1519
  ...baseProperties ?? {},
1520
1520
  ...baseProperties?.ticketNumber === void 0 ? {
1521
1521
  ticketNumber: Type2.Unknown({
1522
- description: "\u53EF\u9009\u672C\u7968\u53F7\u3002\u5C1A\u672A\u7ED1\u5B9A\u65F6\u7531\u89D2\u8272\u5728\u65E2\u6709\u56DE\u6267\u4E2D\u7533\u62A5\uFF08\u6B63\u6574\u6570\u3001\u6570\u5B57\u4E32\u6216\u524D\u5BFC #N\uFF1B\u5F52\u4F4D\u53EA\u8BFB\u672C\u5B57\u6BB5\uFF09\u3002"
1522
+ description: "\u4EC5\u5C1A\u672A\u7ED1\u5B9A\u65F6\u586B\u672C\u7968\u53F7\uFF08\u6B63\u6574\u6570\u3001\u6570\u5B57\u4E32\u6216\u524D\u5BFC #N\uFF1B\u5F52\u4F4D\u53EA\u8BFB\u672C\u5B57\u6BB5\uFF09\uFF1B\u6CA1\u6709\u5C31\u586B null"
1523
1523
  })
1524
1524
  } : {},
1525
1525
  ...baseProperties?.summary === void 0 ? {
1526
1526
  summary: Type2.Unknown({
1527
- description: "\u672C\u5E2D\u81EA\u884C\u586B\u5199\u7684\u4E00\u4E24\u53E5\u300120\u201350 \u5B57\u7ED3\u8BBA\u6458\u8981\u3002\u53EF\u9009\uFF1B\u4E0D\u56E0\u7F3A\u5931\u6216\u8D85\u957F\u62D2\u6536\u3001\u622A\u65AD\u6216\u4EE3\u586B\u3002"
1527
+ description: "\u4EC5\u672C\u5E2D\u6709\u7ED3\u8BBA\u65F6\u586B\u4E00\u4E24\u53E5\u300120\u201350 \u5B57\u7ED3\u8BBA\u6458\u8981\uFF1B\u6CA1\u6709\u5C31\u586B null\u3002\u4E0D\u56E0\u7F3A\u5931\u6216\u8D85\u957F\u62D2\u6536\u3001\u622A\u65AD\u6216\u4EE3\u586B\u3002"
1528
1528
  })
1529
1529
  } : {},
1530
- [INFRASTRUCTURE_FAILURE_DECLARATION_KEY]: infrastructureFailureDeclarationSchema.properties[INFRASTRUCTURE_FAILURE_DECLARATION_KEY]
1530
+ [INFRASTRUCTURE_FAILURE_DECLARATION_KEY]: infrastructureFailureField
1531
1531
  };
1532
1532
  const object = Type2.Object(properties, { additionalProperties: true });
1533
1533
  const incoming = schema.required;
@@ -1535,30 +1535,14 @@ function withTerminatingOutputDeclarations(schema) {
1535
1535
  object.required = preserved;
1536
1536
  return object;
1537
1537
  }
1538
- var INFRASTRUCTURE_FAILURE_DECLARATION_KEY, INFRASTRUCTURE_FAILURE_DIAGNOSTIC_KEY, infrastructureFailureNested, infrastructureFailureDeclarationSchema;
1538
+ var INFRASTRUCTURE_FAILURE_DECLARATION_KEY, infrastructureFailureField;
1539
1539
  var init_terminating_infrastructure = __esm({
1540
1540
  "src/package-contracts/terminating-infrastructure.ts"() {
1541
1541
  "use strict";
1542
1542
  INFRASTRUCTURE_FAILURE_DECLARATION_KEY = "infrastructureFailure";
1543
- INFRASTRUCTURE_FAILURE_DIAGNOSTIC_KEY = "diagnostic";
1544
- infrastructureFailureNested = Type2.Object(
1545
- {
1546
- [INFRASTRUCTURE_FAILURE_DIAGNOSTIC_KEY]: Type2.Unknown({
1547
- description: "\u57FA\u7840\u8BBE\u65BD\u5931\u8D25\u8BCA\u65AD\u5B57\u7B26\u4E32\u3002"
1548
- })
1549
- },
1550
- {
1551
- additionalProperties: true,
1552
- description: "\u4EC5\u57FA\u7840\u8BBE\u65BD\u771F\u5B9E\u5931\u8D25\u65F6\u51FA\u73B0\u3002"
1553
- }
1554
- );
1555
- infrastructureFailureNested.required = [];
1556
- infrastructureFailureDeclarationSchema = Type2.Object(
1557
- {
1558
- [INFRASTRUCTURE_FAILURE_DECLARATION_KEY]: infrastructureFailureNested
1559
- },
1560
- { additionalProperties: true }
1561
- );
1543
+ infrastructureFailureField = Type2.Unknown({
1544
+ description: "\u4EC5\u57FA\u7840\u8BBE\u65BD\u771F\u5B9E\u5931\u8D25\u65F6\u586B {diagnostic}\uFF1B\u6CA1\u6709\u5C31\u586B null"
1545
+ });
1562
1546
  }
1563
1547
  });
1564
1548
 
@@ -1578,10 +1562,10 @@ var init_gatekeeper_output = __esm({
1578
1562
  description: "dispatch | pass"
1579
1563
  }),
1580
1564
  officer: Type3.Unknown({
1581
- description: "status \u4E3A dispatch \u65F6\u4E3A inspector | notary"
1565
+ description: "\u4EC5 status \u4E3A dispatch \u65F6\u586B inspector | notary\uFF1B\u6CA1\u6709\u5C31\u586B null"
1582
1566
  }),
1583
1567
  findings: Type3.Unknown({
1584
- description: "status \u4E3A pass \u65F6\u53EF\u9009 string[] findings"
1568
+ description: "\u4EC5 status \u4E3A pass \u65F6\u586B string[] findings\uFF1B\u6CA1\u6709\u5C31\u586B null"
1585
1569
  })
1586
1570
  })
1587
1571
  );
@@ -1682,13 +1666,13 @@ var init_navigator_output = __esm({
1682
1666
  NAVIGATOR_OUTPUT_TOOL_NAME = "ak_navigator_output";
1683
1667
  navigatorAdviceFields = {
1684
1668
  prose: Type4.Unknown({
1685
- description: "\u5355\u6761\u6563\u6587\u5EFA\u8BAE\u3002\u65E0\u72B6\u6001\u5206\u53C9\u65F6\u4F7F\u7528\uFF1B\u539F\u6837\u5448\u73B0\u3002"
1669
+ description: "\u4EC5\u65E0\u72B6\u6001\u5206\u53C9\u65F6\u586B\u5355\u6761\u6563\u6587\u5EFA\u8BAE\uFF1B\u6CA1\u6709\u5C31\u586B null\u3002\u539F\u6837\u5448\u73B0\u3002"
1686
1670
  }),
1687
1671
  byStatus: Type4.Unknown({
1688
1672
  description: "\u6309\u4E3B\u8859\u95E8\u7ED3\u5C40 status \u9884\u5199\u7684\u6563\u6587\u5EFA\u8BAE\u3002\u952E\u4E3A status \u5B57\u9762\u91CF\uFF0C\u503C\u4E3A\u5EFA\u8BAE\u6B63\u6587\u3002\u7ED3\u7B97\u65F6\u4EE3\u7801\u53EA\u6309\u5B9E\u9645 status \u53D6\u5BF9\u5E94\u539F\u6587\uFF0C\u4E0D\u89E3\u6790\u5EFA\u8BAE\u8BED\u4E49\u3002"
1689
1673
  }),
1690
1674
  byRole: Type4.Unknown({
1691
- description: "\u6574\u5F20\u8DEF\u7EBF\u8868\uFF1A\u952E\u4E3A\u8859\u95E8\u89D2\u8272\uFF0C\u503C\u4E3A\u8BE5\u8859\u95E8 status \u2192 \u5EFA\u8BAE\u3002\u76F4\u63A5\u5165\u53E3\u4E0D\u7ED9\u89D2\u8272\u65F6\u4F7F\u7528\u3002"
1675
+ description: "\u4EC5\u76F4\u63A5\u5165\u53E3\u4E0D\u7ED9\u89D2\u8272\u65F6\u586B\u6574\u5F20\u8DEF\u7EBF\u8868\uFF08\u952E\u4E3A\u8859\u95E8\u89D2\u8272\uFF0C\u503C\u4E3A\u8BE5\u8859\u95E8 status \u2192 \u5EFA\u8BAE\uFF09\uFF1B\u6CA1\u6709\u5C31\u586B null"
1692
1676
  })
1693
1677
  };
1694
1678
  navigatorAdviceBodySchema = openToolObject(Type4.Object(navigatorAdviceFields));
@@ -1721,7 +1705,7 @@ var init_review_submission = __esm({
1721
1705
  reason: Type5.Optional(Type5.Unknown({ description: "\u4E0A\u5448\u7406\u7531" })),
1722
1706
  violations: Type5.Optional(Type5.Unknown({ description: "\u8FDD\u89C4\u6761\u76EE" })),
1723
1707
  conflicts: Type5.Optional(Type5.Unknown({ description: "\u5F85\u51B3\u51B2\u7A81" })),
1724
- fix: Type5.Optional(Type5.Unknown({ description: "continue \u65F6\u7684\u8865\u6551\u8BF4\u660E\uFF1B\u53EF\u5199 summary \u6458\u8981\uFF0C\u5176\u4F59\u5185\u5BB9\u539F\u6837\u7559\u5B58" })),
1708
+ fix: Type5.Optional(Type5.Unknown({ description: "\u4EC5 continue \u65F6\u586B\u8865\u6551\u8BF4\u660E\uFF08\u53EF\u5199 summary \u6458\u8981\uFF0C\u5176\u4F59\u5185\u5BB9\u539F\u6837\u7559\u5B58\uFF09\uFF1B\u6CA1\u6709\u5C31\u586B null" })),
1725
1709
  classes: Type5.Optional(Type5.Unknown({ description: "\u5DF2\u88C1\u51B3 finding \u7C7B\uFF1B\u53EF\u8BF4\u660E name\u3001owner\u3001boundary\u3001disposition\uFF0C\u539F\u6837\u7559\u5B58" })),
1726
1710
  note: Type5.Optional(Type5.Unknown({ description: "\u88C1\u51B3\u9644\u6CE8" })),
1727
1711
  evidence: Type5.Optional(Type5.Unknown({ description: "\u7559\u5B58\u8BC1\u636E" })),
@@ -1812,7 +1796,7 @@ var init_reviewer_output = __esm({
1812
1796
  init_open_tool_schema();
1813
1797
  init_terminating_infrastructure();
1814
1798
  REVIEWER_OUTPUT_TOOL_NAME = "ak_reviewer_output";
1815
- REVIEWER_AMENDMENTS_DESCRIPTION = "\u5DF2\u8FD0\u884C lens \u7684 amendments \u627F\u8F7D candidates\u3001\u9010\u6761\u5904\u7F6E\u4E0E verdict \u7684\u5B8C\u6574\u62A5\u544A\uFF08\u975E\u4EC5 verdict \u884C\uFF09\uFF1B\u663E\u5F0F\u5355\u8F74\u65F6\u53E6\u4E00\u8F74\u53EF\u7701\u7565\uFF08completeness / correctness\uFF09\u3002hard-stop\uFF0Fusage error \u4E3A refused \u65F6\uFF0C\u5DF2\u4EA7\u51FA\u62A5\u544A\u4ECD\u7167\u5F55\u5BF9\u5E94 lens \u5B57\u6BB5\u3002";
1799
+ REVIEWER_AMENDMENTS_DESCRIPTION = "\u5DF2\u8FD0\u884C lens \u7684 amendments \u627F\u8F7D candidates\u3001\u9010\u6761\u5904\u7F6E\u4E0E verdict \u7684\u5B8C\u6574\u62A5\u544A\uFF08\u975E\u4EC5 verdict \u884C\uFF09\uFF1B\u5404\u8F74\uFF08completeness / correctness\uFF09\u4EC5\u6709\u5DF2\u4EA7\u51FA\u62A5\u544A\u65F6\u586B\u62A5\u544A\uFF1B\u6CA1\u6709\u5C31\u586B null\u3002hard-stop\uFF0Fusage error \u4E3A refused \u65F6\uFF0C\u5DF2\u4EA7\u51FA\u62A5\u544A\u4ECD\u7167\u5F55\u5BF9\u5E94 lens \u5B57\u6BB5\u3002";
1816
1800
  REVIEWER_STATUS_DESCRIPTION = "completed | refused\u3002\u4E24\u79CD\u6B63\u5E38 lens verdict\uFF08completeness / correctness\uFF09\u5747 completed\uFF1Bhard-stop \u4E0E usage error \u4E3A refused\uFF08\u5DF2\u4EA7\u51FA\u62A5\u544A\u4ECD\u7167\u5F55\u8FDB\u6240\u9009 lens amendments\uFF09\u3002";
1817
1801
  reviewerOutputObject = Type6.Object({
1818
1802
  status: Type6.Unknown({ description: REVIEWER_STATUS_DESCRIPTION }),
@@ -1871,7 +1855,7 @@ var init_fixer_output = __esm({
1871
1855
  }),
1872
1856
  diffItems: diffItemsField,
1873
1857
  testEvidence: Type8.Unknown({
1874
- 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"
1858
+ description: "\u4EC5 diff \u542B\u6D4B\u8BD5\u6539\u52A8\u65F6\u586B\u6D4B\u8BD5\u8BC1\u636E\u6761\uFF1B\u6CA1\u6709\u5C31\u586B null\u3002\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"
1875
1859
  })
1876
1860
  });
1877
1861
  fixerOutputSchema = withTerminatingOutputDeclarations(
@@ -1956,7 +1940,7 @@ var init_doctor_contracts = __esm({
1956
1940
  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`
1957
1941
  }),
1958
1942
  reason: Type10.Unknown({
1959
- description: "\u8BC1\u636E\u4E0D\u8DB3\u4EE5\u652F\u6491\u5982\u5B9E\u8BC1\u8BCD\u7684\u539F\u56E0\uFF1B\u4EC5 refused \u65F6\u7528\u3002"
1943
+ description: "\u4EC5 refused \u65F6\u586B\u8BC1\u636E\u4E0D\u8DB3\u4EE5\u652F\u6491\u5982\u5B9E\u8BC1\u8BCD\u7684\u539F\u56E0\uFF1B\u6CA1\u6709\u5C31\u586B null"
1960
1944
  }),
1961
1945
  missingEvidence: Type10.Unknown({
1962
1946
  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"
@@ -2247,7 +2231,7 @@ var init_ticket_provenance_contracts = __esm({
2247
2231
  import { Type as Type13 } from "typebox";
2248
2232
  function projectDiaristSessions(value) {
2249
2233
  const raw = value?.sessions;
2250
- if (raw === void 0) return [];
2234
+ if (raw == null) return [];
2251
2235
  return projectTicketProvenanceSessions(raw);
2252
2236
  }
2253
2237
  function projectDiaristTicketSessions(value) {
@@ -2284,15 +2268,17 @@ var init_diarist_contracts = __esm({
2284
2268
  }),
2285
2269
  ticketNumber: Type13.Optional(
2286
2270
  Type13.Unknown({
2287
- 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"
2271
+ description: "\u4EC5\u6709\u672C\u5EAD\u5BF9\u8C61\u65F6\u586B\u7968\u53F7\uFF08\u6B63\u6574\u6570\uFF09\uFF1B\u6CA1\u6709\u5C31\u586B null\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"
2288
2272
  })
2289
2273
  ),
2290
2274
  reason: Type13.Unknown({
2291
- description: "status \u4E3A escalate \u65F6\uFF1A\u4E0A\u5448\u7684\u539F\u56E0"
2275
+ description: "\u4EC5 status \u4E3A escalate \u65F6\u586B\u4E0A\u5448\u7684\u539F\u56E0\uFF1B\u6CA1\u6709\u5C31\u586B null"
2292
2276
  }),
2293
- sessions: Type13.Optional(Type13.Unknown({ description: DIARIST_SESSIONS_DESCRIPTION })),
2277
+ sessions: Type13.Optional(Type13.Unknown({
2278
+ description: `\u4EC5\u5355\u7968\u5EAD\u65F6\u586B\u5BF9\u8BDD\u8FB9\u754C\uFF1B\u6CA1\u6709\u5C31\u586B null\u3002${DIARIST_SESSIONS_DESCRIPTION}`
2279
+ })),
2294
2280
  ticketSessions: Type13.Unknown({
2295
- 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`
2281
+ description: `\u4EC5\u591A\u7968\u5EAD\u65F6\u586B\u9010\u7968\u5BF9\u8BDD\u8FB9\u754C\uFF1B\u6CA1\u6709\u5C31\u586B null\u3002\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`
2296
2282
  })
2297
2283
  })
2298
2284
  )
@@ -3119,7 +3105,7 @@ var init_collector_tool_schemas = __esm({
3119
3105
  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"
3120
3106
  }),
3121
3107
  unfinishedReasons: Type15.Unknown({
3122
- description: "\u672A\u5B8C\u6210\u539F\u56E0\uFF1B\u53D6\u8BC1\u53D7\u9650\u65F6\u5982\u5B9E\u62A5\u544A\u3002"
3108
+ description: "\u4EC5\u53D6\u8BC1\u53D7\u9650\u65F6\u586B\u672A\u5B8C\u6210\u539F\u56E0\uFF1B\u6CA1\u6709\u5C31\u586B null"
3123
3109
  })
3124
3110
  })
3125
3111
  );
@@ -11,7 +11,7 @@ export const collectorOutputBaseSchema = openToolObject(Type.Object({
11
11
  description: "按机器身份归组的出席、材料与逐条 findings(LLM 自行从宿主 CLI 取证整理;代码不代收不归并)。",
12
12
  }),
13
13
  unfinishedReasons: Type.Unknown({
14
- description: "未完成原因;取证受限时如实报告。",
14
+ description: "仅取证受限时填未完成原因;没有就填 null",
15
15
  }),
16
16
  }));
17
17
  /** Runtime does not enrich findings; the model submits the receipt and signals sole-final. */
@@ -31,11 +31,11 @@ export function validateRecordedDiaristOutput(value) {
31
31
  }
32
32
  /**
33
33
  * Project sessions from a completed diarist payload.
34
- * Absent key → empty (lawful). Present but unusable → undefined (caller reasks).
34
+ * Null / absent key → empty (lawful). Non-null but unusable → undefined (caller reasks).
35
35
  */
36
36
  export function projectDiaristSessions(value) {
37
37
  const raw = value?.sessions;
38
- if (raw === undefined)
38
+ if (raw == null)
39
39
  return [];
40
40
  return projectTicketProvenanceSessions(raw);
41
41
  }
@@ -72,13 +72,15 @@ export const diaristOutputSchema = withTerminatingOutputDeclarations(openToolObj
72
72
  description: "completed | escalate",
73
73
  }),
74
74
  ticketNumber: Type.Optional(Type.Unknown({
75
- description: "本庭对象票号(正整数)或 null/省略=真无票;下游走 typed 键;认不出用 status=escalate,不洗成无录。机械层不重判。",
75
+ description: "仅有本庭对象时填票号(正整数);没有就填 null=真无票;下游走 typed 键;认不出用 status=escalate,不洗成无录。机械层不重判。",
76
76
  })),
77
77
  reason: Type.Unknown({
78
- description: "status 为 escalate 时:上呈的原因",
78
+ description: "仅 status 为 escalate 时填上呈的原因;没有就填 null",
79
79
  }),
80
- sessions: Type.Optional(Type.Unknown({ description: DIARIST_SESSIONS_DESCRIPTION })),
80
+ sessions: Type.Optional(Type.Unknown({
81
+ description: `仅单票庭时填对话边界;没有就填 null。${DIARIST_SESSIONS_DESCRIPTION}`,
82
+ })),
81
83
  ticketSessions: Type.Unknown({
82
- description: `多票庭逐票对话边界;每票含 ticketNumber(本条边界所归票号,正整数)与 sessions(${DIARIST_SESSIONS_DESCRIPTION})。一次交卷各票各自分录。与单票 sessions 二选一。`,
84
+ description: `仅多票庭时填逐票对话边界;没有就填 null。每票含 ticketNumber(本条边界所归票号,正整数)与 sessions(${DIARIST_SESSIONS_DESCRIPTION})。一次交卷各票各自分录。`,
83
85
  }),
84
86
  })));
@@ -23,7 +23,7 @@ const doctorSubmissionObject = Type.Object({
23
23
  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`
24
24
  }),
25
25
  reason: Type.Unknown({
26
- description: "\u8BC1\u636E\u4E0D\u8DB3\u4EE5\u652F\u6491\u5982\u5B9E\u8BC1\u8BCD\u7684\u539F\u56E0\uFF1B\u4EC5 refused \u65F6\u7528\u3002"
26
+ description: "\u4EC5 refused \u65F6\u586B\u8BC1\u636E\u4E0D\u8DB3\u4EE5\u652F\u6491\u5982\u5B9E\u8BC1\u8BCD\u7684\u539F\u56E0\uFF1B\u6CA1\u6709\u5C31\u586B null"
27
27
  }),
28
28
  missingEvidence: Type.Unknown({
29
29
  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"
@@ -452,15 +452,15 @@ function withTerminatingOutputDeclarations(schema) {
452
452
  ...baseProperties ?? {},
453
453
  ...baseProperties?.ticketNumber === void 0 ? {
454
454
  ticketNumber: Type.Unknown({
455
- description: "\u53EF\u9009\u672C\u7968\u53F7\u3002\u5C1A\u672A\u7ED1\u5B9A\u65F6\u7531\u89D2\u8272\u5728\u65E2\u6709\u56DE\u6267\u4E2D\u7533\u62A5\uFF08\u6B63\u6574\u6570\u3001\u6570\u5B57\u4E32\u6216\u524D\u5BFC #N\uFF1B\u5F52\u4F4D\u53EA\u8BFB\u672C\u5B57\u6BB5\uFF09\u3002"
455
+ description: "\u4EC5\u5C1A\u672A\u7ED1\u5B9A\u65F6\u586B\u672C\u7968\u53F7\uFF08\u6B63\u6574\u6570\u3001\u6570\u5B57\u4E32\u6216\u524D\u5BFC #N\uFF1B\u5F52\u4F4D\u53EA\u8BFB\u672C\u5B57\u6BB5\uFF09\uFF1B\u6CA1\u6709\u5C31\u586B null"
456
456
  })
457
457
  } : {},
458
458
  ...baseProperties?.summary === void 0 ? {
459
459
  summary: Type.Unknown({
460
- description: "\u672C\u5E2D\u81EA\u884C\u586B\u5199\u7684\u4E00\u4E24\u53E5\u300120\u201350 \u5B57\u7ED3\u8BBA\u6458\u8981\u3002\u53EF\u9009\uFF1B\u4E0D\u56E0\u7F3A\u5931\u6216\u8D85\u957F\u62D2\u6536\u3001\u622A\u65AD\u6216\u4EE3\u586B\u3002"
460
+ description: "\u4EC5\u672C\u5E2D\u6709\u7ED3\u8BBA\u65F6\u586B\u4E00\u4E24\u53E5\u300120\u201350 \u5B57\u7ED3\u8BBA\u6458\u8981\uFF1B\u6CA1\u6709\u5C31\u586B null\u3002\u4E0D\u56E0\u7F3A\u5931\u6216\u8D85\u957F\u62D2\u6536\u3001\u622A\u65AD\u6216\u4EE3\u586B\u3002"
461
461
  })
462
462
  } : {},
463
- [INFRASTRUCTURE_FAILURE_DECLARATION_KEY]: infrastructureFailureDeclarationSchema.properties[INFRASTRUCTURE_FAILURE_DECLARATION_KEY]
463
+ [INFRASTRUCTURE_FAILURE_DECLARATION_KEY]: infrastructureFailureField
464
464
  };
465
465
  const object = Type.Object(properties, { additionalProperties: true });
466
466
  const incoming = schema.required;
@@ -468,30 +468,14 @@ function withTerminatingOutputDeclarations(schema) {
468
468
  object.required = preserved;
469
469
  return object;
470
470
  }
471
- var INFRASTRUCTURE_FAILURE_DECLARATION_KEY, INFRASTRUCTURE_FAILURE_DIAGNOSTIC_KEY, infrastructureFailureNested, infrastructureFailureDeclarationSchema;
471
+ var INFRASTRUCTURE_FAILURE_DECLARATION_KEY, infrastructureFailureField;
472
472
  var init_terminating_infrastructure = __esm({
473
473
  "src/package-contracts/terminating-infrastructure.ts"() {
474
474
  "use strict";
475
475
  INFRASTRUCTURE_FAILURE_DECLARATION_KEY = "infrastructureFailure";
476
- INFRASTRUCTURE_FAILURE_DIAGNOSTIC_KEY = "diagnostic";
477
- infrastructureFailureNested = Type.Object(
478
- {
479
- [INFRASTRUCTURE_FAILURE_DIAGNOSTIC_KEY]: Type.Unknown({
480
- description: "\u57FA\u7840\u8BBE\u65BD\u5931\u8D25\u8BCA\u65AD\u5B57\u7B26\u4E32\u3002"
481
- })
482
- },
483
- {
484
- additionalProperties: true,
485
- description: "\u4EC5\u57FA\u7840\u8BBE\u65BD\u771F\u5B9E\u5931\u8D25\u65F6\u51FA\u73B0\u3002"
486
- }
487
- );
488
- infrastructureFailureNested.required = [];
489
- infrastructureFailureDeclarationSchema = Type.Object(
490
- {
491
- [INFRASTRUCTURE_FAILURE_DECLARATION_KEY]: infrastructureFailureNested
492
- },
493
- { additionalProperties: true }
494
- );
476
+ infrastructureFailureField = Type.Unknown({
477
+ description: "\u4EC5\u57FA\u7840\u8BBE\u65BD\u771F\u5B9E\u5931\u8D25\u65F6\u586B {diagnostic}\uFF1B\u6CA1\u6709\u5C31\u586B null"
478
+ });
495
479
  }
496
480
  });
497
481
 
@@ -520,7 +504,7 @@ var init_review_submission = __esm({
520
504
  reason: Type2.Optional(Type2.Unknown({ description: "\u4E0A\u5448\u7406\u7531" })),
521
505
  violations: Type2.Optional(Type2.Unknown({ description: "\u8FDD\u89C4\u6761\u76EE" })),
522
506
  conflicts: Type2.Optional(Type2.Unknown({ description: "\u5F85\u51B3\u51B2\u7A81" })),
523
- fix: Type2.Optional(Type2.Unknown({ description: "continue \u65F6\u7684\u8865\u6551\u8BF4\u660E\uFF1B\u53EF\u5199 summary \u6458\u8981\uFF0C\u5176\u4F59\u5185\u5BB9\u539F\u6837\u7559\u5B58" })),
507
+ fix: Type2.Optional(Type2.Unknown({ description: "\u4EC5 continue \u65F6\u586B\u8865\u6551\u8BF4\u660E\uFF08\u53EF\u5199 summary \u6458\u8981\uFF0C\u5176\u4F59\u5185\u5BB9\u539F\u6837\u7559\u5B58\uFF09\uFF1B\u6CA1\u6709\u5C31\u586B null" })),
524
508
  classes: Type2.Optional(Type2.Unknown({ description: "\u5DF2\u88C1\u51B3 finding \u7C7B\uFF1B\u53EF\u8BF4\u660E name\u3001owner\u3001boundary\u3001disposition\uFF0C\u539F\u6837\u7559\u5B58" })),
525
509
  note: Type2.Optional(Type2.Unknown({ description: "\u88C1\u51B3\u9644\u6CE8" })),
526
510
  evidence: Type2.Optional(Type2.Unknown({ description: "\u7559\u5B58\u8BC1\u636E" })),
@@ -634,7 +618,7 @@ var init_reviewer_output = __esm({
634
618
  init_open_tool_schema();
635
619
  init_terminating_infrastructure();
636
620
  REVIEWER_OUTPUT_TOOL_NAME = "ak_reviewer_output";
637
- REVIEWER_AMENDMENTS_DESCRIPTION = "\u5DF2\u8FD0\u884C lens \u7684 amendments \u627F\u8F7D candidates\u3001\u9010\u6761\u5904\u7F6E\u4E0E verdict \u7684\u5B8C\u6574\u62A5\u544A\uFF08\u975E\u4EC5 verdict \u884C\uFF09\uFF1B\u663E\u5F0F\u5355\u8F74\u65F6\u53E6\u4E00\u8F74\u53EF\u7701\u7565\uFF08completeness / correctness\uFF09\u3002hard-stop\uFF0Fusage error \u4E3A refused \u65F6\uFF0C\u5DF2\u4EA7\u51FA\u62A5\u544A\u4ECD\u7167\u5F55\u5BF9\u5E94 lens \u5B57\u6BB5\u3002";
621
+ REVIEWER_AMENDMENTS_DESCRIPTION = "\u5DF2\u8FD0\u884C lens \u7684 amendments \u627F\u8F7D candidates\u3001\u9010\u6761\u5904\u7F6E\u4E0E verdict \u7684\u5B8C\u6574\u62A5\u544A\uFF08\u975E\u4EC5 verdict \u884C\uFF09\uFF1B\u5404\u8F74\uFF08completeness / correctness\uFF09\u4EC5\u6709\u5DF2\u4EA7\u51FA\u62A5\u544A\u65F6\u586B\u62A5\u544A\uFF1B\u6CA1\u6709\u5C31\u586B null\u3002hard-stop\uFF0Fusage error \u4E3A refused \u65F6\uFF0C\u5DF2\u4EA7\u51FA\u62A5\u544A\u4ECD\u7167\u5F55\u5BF9\u5E94 lens \u5B57\u6BB5\u3002";
638
622
  REVIEWER_STATUS_DESCRIPTION = "completed | refused\u3002\u4E24\u79CD\u6B63\u5E38 lens verdict\uFF08completeness / correctness\uFF09\u5747 completed\uFF1Bhard-stop \u4E0E usage error \u4E3A refused\uFF08\u5DF2\u4EA7\u51FA\u62A5\u544A\u4ECD\u7167\u5F55\u8FDB\u6240\u9009 lens amendments\uFF09\u3002";
639
623
  reviewerOutputObject = Type4.Object({
640
624
  status: Type4.Unknown({ description: REVIEWER_STATUS_DESCRIPTION }),
@@ -665,10 +649,10 @@ var init_gatekeeper_output = __esm({
665
649
  description: "dispatch | pass"
666
650
  }),
667
651
  officer: Type5.Unknown({
668
- description: "status \u4E3A dispatch \u65F6\u4E3A inspector | notary"
652
+ description: "\u4EC5 status \u4E3A dispatch \u65F6\u586B inspector | notary\uFF1B\u6CA1\u6709\u5C31\u586B null"
669
653
  }),
670
654
  findings: Type5.Unknown({
671
- description: "status \u4E3A pass \u65F6\u53EF\u9009 string[] findings"
655
+ description: "\u4EC5 status \u4E3A pass \u65F6\u586B string[] findings\uFF1B\u6CA1\u6709\u5C31\u586B null"
672
656
  })
673
657
  })
674
658
  );
@@ -769,13 +753,13 @@ var init_navigator_output = __esm({
769
753
  NAVIGATOR_OUTPUT_TOOL_NAME = "ak_navigator_output";
770
754
  navigatorAdviceFields = {
771
755
  prose: Type6.Unknown({
772
- description: "\u5355\u6761\u6563\u6587\u5EFA\u8BAE\u3002\u65E0\u72B6\u6001\u5206\u53C9\u65F6\u4F7F\u7528\uFF1B\u539F\u6837\u5448\u73B0\u3002"
756
+ description: "\u4EC5\u65E0\u72B6\u6001\u5206\u53C9\u65F6\u586B\u5355\u6761\u6563\u6587\u5EFA\u8BAE\uFF1B\u6CA1\u6709\u5C31\u586B null\u3002\u539F\u6837\u5448\u73B0\u3002"
773
757
  }),
774
758
  byStatus: Type6.Unknown({
775
759
  description: "\u6309\u4E3B\u8859\u95E8\u7ED3\u5C40 status \u9884\u5199\u7684\u6563\u6587\u5EFA\u8BAE\u3002\u952E\u4E3A status \u5B57\u9762\u91CF\uFF0C\u503C\u4E3A\u5EFA\u8BAE\u6B63\u6587\u3002\u7ED3\u7B97\u65F6\u4EE3\u7801\u53EA\u6309\u5B9E\u9645 status \u53D6\u5BF9\u5E94\u539F\u6587\uFF0C\u4E0D\u89E3\u6790\u5EFA\u8BAE\u8BED\u4E49\u3002"
776
760
  }),
777
761
  byRole: Type6.Unknown({
778
- description: "\u6574\u5F20\u8DEF\u7EBF\u8868\uFF1A\u952E\u4E3A\u8859\u95E8\u89D2\u8272\uFF0C\u503C\u4E3A\u8BE5\u8859\u95E8 status \u2192 \u5EFA\u8BAE\u3002\u76F4\u63A5\u5165\u53E3\u4E0D\u7ED9\u89D2\u8272\u65F6\u4F7F\u7528\u3002"
762
+ description: "\u4EC5\u76F4\u63A5\u5165\u53E3\u4E0D\u7ED9\u89D2\u8272\u65F6\u586B\u6574\u5F20\u8DEF\u7EBF\u8868\uFF08\u952E\u4E3A\u8859\u95E8\u89D2\u8272\uFF0C\u503C\u4E3A\u8BE5\u8859\u95E8 status \u2192 \u5EFA\u8BAE\uFF09\uFF1B\u6CA1\u6709\u5C31\u586B null"
779
763
  })
780
764
  };
781
765
  navigatorAdviceBodySchema = openToolObject(Type6.Object(navigatorAdviceFields));
@@ -827,7 +811,7 @@ var init_fixer_output = __esm({
827
811
  }),
828
812
  diffItems: diffItemsField,
829
813
  testEvidence: Type8.Unknown({
830
- 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"
814
+ description: "\u4EC5 diff \u542B\u6D4B\u8BD5\u6539\u52A8\u65F6\u586B\u6D4B\u8BD5\u8BC1\u636E\u6761\uFF1B\u6CA1\u6709\u5C31\u586B null\u3002\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"
831
815
  })
832
816
  });
833
817
  fixerOutputSchema = withTerminatingOutputDeclarations(
@@ -912,7 +896,7 @@ var init_doctor_contracts = __esm({
912
896
  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`
913
897
  }),
914
898
  reason: Type10.Unknown({
915
- description: "\u8BC1\u636E\u4E0D\u8DB3\u4EE5\u652F\u6491\u5982\u5B9E\u8BC1\u8BCD\u7684\u539F\u56E0\uFF1B\u4EC5 refused \u65F6\u7528\u3002"
899
+ description: "\u4EC5 refused \u65F6\u586B\u8BC1\u636E\u4E0D\u8DB3\u4EE5\u652F\u6491\u5982\u5B9E\u8BC1\u8BCD\u7684\u539F\u56E0\uFF1B\u6CA1\u6709\u5C31\u586B null"
916
900
  }),
917
901
  missingEvidence: Type10.Unknown({
918
902
  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"
@@ -2117,7 +2101,7 @@ var init_ticket_provenance_contracts = __esm({
2117
2101
  import { Type as Type13 } from "typebox";
2118
2102
  function projectDiaristSessions(value) {
2119
2103
  const raw = value?.sessions;
2120
- if (raw === void 0) return [];
2104
+ if (raw == null) return [];
2121
2105
  return projectTicketProvenanceSessions(raw);
2122
2106
  }
2123
2107
  function projectDiaristTicketSessions(value) {
@@ -2154,15 +2138,17 @@ var init_diarist_contracts = __esm({
2154
2138
  }),
2155
2139
  ticketNumber: Type13.Optional(
2156
2140
  Type13.Unknown({
2157
- 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"
2141
+ description: "\u4EC5\u6709\u672C\u5EAD\u5BF9\u8C61\u65F6\u586B\u7968\u53F7\uFF08\u6B63\u6574\u6570\uFF09\uFF1B\u6CA1\u6709\u5C31\u586B null\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"
2158
2142
  })
2159
2143
  ),
2160
2144
  reason: Type13.Unknown({
2161
- description: "status \u4E3A escalate \u65F6\uFF1A\u4E0A\u5448\u7684\u539F\u56E0"
2145
+ description: "\u4EC5 status \u4E3A escalate \u65F6\u586B\u4E0A\u5448\u7684\u539F\u56E0\uFF1B\u6CA1\u6709\u5C31\u586B null"
2162
2146
  }),
2163
- sessions: Type13.Optional(Type13.Unknown({ description: DIARIST_SESSIONS_DESCRIPTION })),
2147
+ sessions: Type13.Optional(Type13.Unknown({
2148
+ description: `\u4EC5\u5355\u7968\u5EAD\u65F6\u586B\u5BF9\u8BDD\u8FB9\u754C\uFF1B\u6CA1\u6709\u5C31\u586B null\u3002${DIARIST_SESSIONS_DESCRIPTION}`
2149
+ })),
2164
2150
  ticketSessions: Type13.Unknown({
2165
- 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`
2151
+ description: `\u4EC5\u591A\u7968\u5EAD\u65F6\u586B\u9010\u7968\u5BF9\u8BDD\u8FB9\u754C\uFF1B\u6CA1\u6709\u5C31\u586B null\u3002\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`
2166
2152
  })
2167
2153
  })
2168
2154
  )
@@ -4382,7 +4368,7 @@ var init_collector_tool_schemas = __esm({
4382
4368
  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"
4383
4369
  }),
4384
4370
  unfinishedReasons: Type15.Unknown({
4385
- description: "\u672A\u5B8C\u6210\u539F\u56E0\uFF1B\u53D6\u8BC1\u53D7\u9650\u65F6\u5982\u5B9E\u62A5\u544A\u3002"
4371
+ description: "\u4EC5\u53D6\u8BC1\u53D7\u9650\u65F6\u586B\u672A\u5B8C\u6210\u539F\u56E0\uFF1B\u6CA1\u6709\u5C31\u586B null"
4386
4372
  })
4387
4373
  })
4388
4374
  );
@@ -8623,15 +8623,15 @@ function withTerminatingOutputDeclarations(schema) {
8623
8623
  ...baseProperties ?? {},
8624
8624
  ...baseProperties?.ticketNumber === void 0 ? {
8625
8625
  ticketNumber: typebox_exports.Unknown({
8626
- description: "\u53EF\u9009\u672C\u7968\u53F7\u3002\u5C1A\u672A\u7ED1\u5B9A\u65F6\u7531\u89D2\u8272\u5728\u65E2\u6709\u56DE\u6267\u4E2D\u7533\u62A5\uFF08\u6B63\u6574\u6570\u3001\u6570\u5B57\u4E32\u6216\u524D\u5BFC #N\uFF1B\u5F52\u4F4D\u53EA\u8BFB\u672C\u5B57\u6BB5\uFF09\u3002"
8626
+ description: "\u4EC5\u5C1A\u672A\u7ED1\u5B9A\u65F6\u586B\u672C\u7968\u53F7\uFF08\u6B63\u6574\u6570\u3001\u6570\u5B57\u4E32\u6216\u524D\u5BFC #N\uFF1B\u5F52\u4F4D\u53EA\u8BFB\u672C\u5B57\u6BB5\uFF09\uFF1B\u6CA1\u6709\u5C31\u586B null"
8627
8627
  })
8628
8628
  } : {},
8629
8629
  ...baseProperties?.summary === void 0 ? {
8630
8630
  summary: typebox_exports.Unknown({
8631
- description: "\u672C\u5E2D\u81EA\u884C\u586B\u5199\u7684\u4E00\u4E24\u53E5\u300120\u201350 \u5B57\u7ED3\u8BBA\u6458\u8981\u3002\u53EF\u9009\uFF1B\u4E0D\u56E0\u7F3A\u5931\u6216\u8D85\u957F\u62D2\u6536\u3001\u622A\u65AD\u6216\u4EE3\u586B\u3002"
8631
+ description: "\u4EC5\u672C\u5E2D\u6709\u7ED3\u8BBA\u65F6\u586B\u4E00\u4E24\u53E5\u300120\u201350 \u5B57\u7ED3\u8BBA\u6458\u8981\uFF1B\u6CA1\u6709\u5C31\u586B null\u3002\u4E0D\u56E0\u7F3A\u5931\u6216\u8D85\u957F\u62D2\u6536\u3001\u622A\u65AD\u6216\u4EE3\u586B\u3002"
8632
8632
  })
8633
8633
  } : {},
8634
- [INFRASTRUCTURE_FAILURE_DECLARATION_KEY]: infrastructureFailureDeclarationSchema.properties[INFRASTRUCTURE_FAILURE_DECLARATION_KEY]
8634
+ [INFRASTRUCTURE_FAILURE_DECLARATION_KEY]: infrastructureFailureField
8635
8635
  };
8636
8636
  const object = typebox_exports.Object(properties, { additionalProperties: true });
8637
8637
  const incoming = schema.required;
@@ -8639,31 +8639,15 @@ function withTerminatingOutputDeclarations(schema) {
8639
8639
  object.required = preserved;
8640
8640
  return object;
8641
8641
  }
8642
- var INFRASTRUCTURE_FAILURE_DECLARATION_KEY, INFRASTRUCTURE_FAILURE_DIAGNOSTIC_KEY, infrastructureFailureNested, infrastructureFailureDeclarationSchema;
8642
+ var INFRASTRUCTURE_FAILURE_DECLARATION_KEY, infrastructureFailureField;
8643
8643
  var init_terminating_infrastructure = __esm({
8644
8644
  "src/package-contracts/terminating-infrastructure.ts"() {
8645
8645
  "use strict";
8646
8646
  init_build();
8647
8647
  INFRASTRUCTURE_FAILURE_DECLARATION_KEY = "infrastructureFailure";
8648
- INFRASTRUCTURE_FAILURE_DIAGNOSTIC_KEY = "diagnostic";
8649
- infrastructureFailureNested = typebox_exports.Object(
8650
- {
8651
- [INFRASTRUCTURE_FAILURE_DIAGNOSTIC_KEY]: typebox_exports.Unknown({
8652
- description: "\u57FA\u7840\u8BBE\u65BD\u5931\u8D25\u8BCA\u65AD\u5B57\u7B26\u4E32\u3002"
8653
- })
8654
- },
8655
- {
8656
- additionalProperties: true,
8657
- description: "\u4EC5\u57FA\u7840\u8BBE\u65BD\u771F\u5B9E\u5931\u8D25\u65F6\u51FA\u73B0\u3002"
8658
- }
8659
- );
8660
- infrastructureFailureNested.required = [];
8661
- infrastructureFailureDeclarationSchema = typebox_exports.Object(
8662
- {
8663
- [INFRASTRUCTURE_FAILURE_DECLARATION_KEY]: infrastructureFailureNested
8664
- },
8665
- { additionalProperties: true }
8666
- );
8648
+ infrastructureFailureField = typebox_exports.Unknown({
8649
+ description: "\u4EC5\u57FA\u7840\u8BBE\u65BD\u771F\u5B9E\u5931\u8D25\u65F6\u586B {diagnostic}\uFF1B\u6CA1\u6709\u5C31\u586B null"
8650
+ });
8667
8651
  }
8668
8652
  });
8669
8653
 
@@ -8683,10 +8667,10 @@ var init_gatekeeper_output = __esm({
8683
8667
  description: "dispatch | pass"
8684
8668
  }),
8685
8669
  officer: typebox_exports.Unknown({
8686
- description: "status \u4E3A dispatch \u65F6\u4E3A inspector | notary"
8670
+ description: "\u4EC5 status \u4E3A dispatch \u65F6\u586B inspector | notary\uFF1B\u6CA1\u6709\u5C31\u586B null"
8687
8671
  }),
8688
8672
  findings: typebox_exports.Unknown({
8689
- description: "status \u4E3A pass \u65F6\u53EF\u9009 string[] findings"
8673
+ description: "\u4EC5 status \u4E3A pass \u65F6\u586B string[] findings\uFF1B\u6CA1\u6709\u5C31\u586B null"
8690
8674
  })
8691
8675
  })
8692
8676
  );
@@ -8708,13 +8692,13 @@ var init_navigator_output = __esm({
8708
8692
  NAVIGATOR_OUTPUT_TOOL_NAME = "ak_navigator_output";
8709
8693
  navigatorAdviceFields = {
8710
8694
  prose: typebox_exports.Unknown({
8711
- description: "\u5355\u6761\u6563\u6587\u5EFA\u8BAE\u3002\u65E0\u72B6\u6001\u5206\u53C9\u65F6\u4F7F\u7528\uFF1B\u539F\u6837\u5448\u73B0\u3002"
8695
+ description: "\u4EC5\u65E0\u72B6\u6001\u5206\u53C9\u65F6\u586B\u5355\u6761\u6563\u6587\u5EFA\u8BAE\uFF1B\u6CA1\u6709\u5C31\u586B null\u3002\u539F\u6837\u5448\u73B0\u3002"
8712
8696
  }),
8713
8697
  byStatus: typebox_exports.Unknown({
8714
8698
  description: "\u6309\u4E3B\u8859\u95E8\u7ED3\u5C40 status \u9884\u5199\u7684\u6563\u6587\u5EFA\u8BAE\u3002\u952E\u4E3A status \u5B57\u9762\u91CF\uFF0C\u503C\u4E3A\u5EFA\u8BAE\u6B63\u6587\u3002\u7ED3\u7B97\u65F6\u4EE3\u7801\u53EA\u6309\u5B9E\u9645 status \u53D6\u5BF9\u5E94\u539F\u6587\uFF0C\u4E0D\u89E3\u6790\u5EFA\u8BAE\u8BED\u4E49\u3002"
8715
8699
  }),
8716
8700
  byRole: typebox_exports.Unknown({
8717
- description: "\u6574\u5F20\u8DEF\u7EBF\u8868\uFF1A\u952E\u4E3A\u8859\u95E8\u89D2\u8272\uFF0C\u503C\u4E3A\u8BE5\u8859\u95E8 status \u2192 \u5EFA\u8BAE\u3002\u76F4\u63A5\u5165\u53E3\u4E0D\u7ED9\u89D2\u8272\u65F6\u4F7F\u7528\u3002"
8701
+ description: "\u4EC5\u76F4\u63A5\u5165\u53E3\u4E0D\u7ED9\u89D2\u8272\u65F6\u586B\u6574\u5F20\u8DEF\u7EBF\u8868\uFF08\u952E\u4E3A\u8859\u95E8\u89D2\u8272\uFF0C\u503C\u4E3A\u8BE5\u8859\u95E8 status \u2192 \u5EFA\u8BAE\uFF09\uFF1B\u6CA1\u6709\u5C31\u586B null"
8718
8702
  })
8719
8703
  };
8720
8704
  navigatorAdviceBodySchema = openToolObject(typebox_exports.Object(navigatorAdviceFields));
@@ -8747,7 +8731,7 @@ var init_review_submission = __esm({
8747
8731
  reason: typebox_exports.Optional(typebox_exports.Unknown({ description: "\u4E0A\u5448\u7406\u7531" })),
8748
8732
  violations: typebox_exports.Optional(typebox_exports.Unknown({ description: "\u8FDD\u89C4\u6761\u76EE" })),
8749
8733
  conflicts: typebox_exports.Optional(typebox_exports.Unknown({ description: "\u5F85\u51B3\u51B2\u7A81" })),
8750
- fix: typebox_exports.Optional(typebox_exports.Unknown({ description: "continue \u65F6\u7684\u8865\u6551\u8BF4\u660E\uFF1B\u53EF\u5199 summary \u6458\u8981\uFF0C\u5176\u4F59\u5185\u5BB9\u539F\u6837\u7559\u5B58" })),
8734
+ fix: typebox_exports.Optional(typebox_exports.Unknown({ description: "\u4EC5 continue \u65F6\u586B\u8865\u6551\u8BF4\u660E\uFF08\u53EF\u5199 summary \u6458\u8981\uFF0C\u5176\u4F59\u5185\u5BB9\u539F\u6837\u7559\u5B58\uFF09\uFF1B\u6CA1\u6709\u5C31\u586B null" })),
8751
8735
  classes: typebox_exports.Optional(typebox_exports.Unknown({ description: "\u5DF2\u88C1\u51B3 finding \u7C7B\uFF1B\u53EF\u8BF4\u660E name\u3001owner\u3001boundary\u3001disposition\uFF0C\u539F\u6837\u7559\u5B58" })),
8752
8736
  note: typebox_exports.Optional(typebox_exports.Unknown({ description: "\u88C1\u51B3\u9644\u6CE8" })),
8753
8737
  evidence: typebox_exports.Optional(typebox_exports.Unknown({ description: "\u7559\u5B58\u8BC1\u636E" })),
@@ -8838,7 +8822,7 @@ var init_reviewer_output = __esm({
8838
8822
  init_open_tool_schema();
8839
8823
  init_terminating_infrastructure();
8840
8824
  REVIEWER_OUTPUT_TOOL_NAME = "ak_reviewer_output";
8841
- REVIEWER_AMENDMENTS_DESCRIPTION = "\u5DF2\u8FD0\u884C lens \u7684 amendments \u627F\u8F7D candidates\u3001\u9010\u6761\u5904\u7F6E\u4E0E verdict \u7684\u5B8C\u6574\u62A5\u544A\uFF08\u975E\u4EC5 verdict \u884C\uFF09\uFF1B\u663E\u5F0F\u5355\u8F74\u65F6\u53E6\u4E00\u8F74\u53EF\u7701\u7565\uFF08completeness / correctness\uFF09\u3002hard-stop\uFF0Fusage error \u4E3A refused \u65F6\uFF0C\u5DF2\u4EA7\u51FA\u62A5\u544A\u4ECD\u7167\u5F55\u5BF9\u5E94 lens \u5B57\u6BB5\u3002";
8825
+ REVIEWER_AMENDMENTS_DESCRIPTION = "\u5DF2\u8FD0\u884C lens \u7684 amendments \u627F\u8F7D candidates\u3001\u9010\u6761\u5904\u7F6E\u4E0E verdict \u7684\u5B8C\u6574\u62A5\u544A\uFF08\u975E\u4EC5 verdict \u884C\uFF09\uFF1B\u5404\u8F74\uFF08completeness / correctness\uFF09\u4EC5\u6709\u5DF2\u4EA7\u51FA\u62A5\u544A\u65F6\u586B\u62A5\u544A\uFF1B\u6CA1\u6709\u5C31\u586B null\u3002hard-stop\uFF0Fusage error \u4E3A refused \u65F6\uFF0C\u5DF2\u4EA7\u51FA\u62A5\u544A\u4ECD\u7167\u5F55\u5BF9\u5E94 lens \u5B57\u6BB5\u3002";
8842
8826
  REVIEWER_STATUS_DESCRIPTION = "completed | refused\u3002\u4E24\u79CD\u6B63\u5E38 lens verdict\uFF08completeness / correctness\uFF09\u5747 completed\uFF1Bhard-stop \u4E0E usage error \u4E3A refused\uFF08\u5DF2\u4EA7\u51FA\u62A5\u544A\u4ECD\u7167\u5F55\u8FDB\u6240\u9009 lens amendments\uFF09\u3002";
8843
8827
  reviewerOutputObject = typebox_exports.Object({
8844
8828
  status: typebox_exports.Unknown({ description: REVIEWER_STATUS_DESCRIPTION }),
@@ -8894,7 +8878,7 @@ var init_fixer_output = __esm({
8894
8878
  }),
8895
8879
  diffItems: diffItemsField,
8896
8880
  testEvidence: typebox_exports.Unknown({
8897
- 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"
8881
+ description: "\u4EC5 diff \u542B\u6D4B\u8BD5\u6539\u52A8\u65F6\u586B\u6D4B\u8BD5\u8BC1\u636E\u6761\uFF1B\u6CA1\u6709\u5C31\u586B null\u3002\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"
8898
8882
  })
8899
8883
  });
8900
8884
  fixerOutputSchema = withTerminatingOutputDeclarations(
@@ -8966,7 +8950,7 @@ var init_doctor_contracts = __esm({
8966
8950
  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`
8967
8951
  }),
8968
8952
  reason: typebox_exports.Unknown({
8969
- description: "\u8BC1\u636E\u4E0D\u8DB3\u4EE5\u652F\u6491\u5982\u5B9E\u8BC1\u8BCD\u7684\u539F\u56E0\uFF1B\u4EC5 refused \u65F6\u7528\u3002"
8953
+ description: "\u4EC5 refused \u65F6\u586B\u8BC1\u636E\u4E0D\u8DB3\u4EE5\u652F\u6491\u5982\u5B9E\u8BC1\u8BCD\u7684\u539F\u56E0\uFF1B\u6CA1\u6709\u5C31\u586B null"
8970
8954
  }),
8971
8955
  missingEvidence: typebox_exports.Unknown({
8972
8956
  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"
@@ -9174,15 +9158,17 @@ var init_diarist_contracts = __esm({
9174
9158
  }),
9175
9159
  ticketNumber: typebox_exports.Optional(
9176
9160
  typebox_exports.Unknown({
9177
- 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"
9161
+ description: "\u4EC5\u6709\u672C\u5EAD\u5BF9\u8C61\u65F6\u586B\u7968\u53F7\uFF08\u6B63\u6574\u6570\uFF09\uFF1B\u6CA1\u6709\u5C31\u586B null\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"
9178
9162
  })
9179
9163
  ),
9180
9164
  reason: typebox_exports.Unknown({
9181
- description: "status \u4E3A escalate \u65F6\uFF1A\u4E0A\u5448\u7684\u539F\u56E0"
9165
+ description: "\u4EC5 status \u4E3A escalate \u65F6\u586B\u4E0A\u5448\u7684\u539F\u56E0\uFF1B\u6CA1\u6709\u5C31\u586B null"
9182
9166
  }),
9183
- sessions: typebox_exports.Optional(typebox_exports.Unknown({ description: DIARIST_SESSIONS_DESCRIPTION })),
9167
+ sessions: typebox_exports.Optional(typebox_exports.Unknown({
9168
+ description: `\u4EC5\u5355\u7968\u5EAD\u65F6\u586B\u5BF9\u8BDD\u8FB9\u754C\uFF1B\u6CA1\u6709\u5C31\u586B null\u3002${DIARIST_SESSIONS_DESCRIPTION}`
9169
+ })),
9184
9170
  ticketSessions: typebox_exports.Unknown({
9185
- 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`
9171
+ description: `\u4EC5\u591A\u7968\u5EAD\u65F6\u586B\u9010\u7968\u5BF9\u8BDD\u8FB9\u754C\uFF1B\u6CA1\u6709\u5C31\u586B null\u3002\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`
9186
9172
  })
9187
9173
  })
9188
9174
  )
@@ -9737,7 +9723,7 @@ var init_collector_tool_schemas = __esm({
9737
9723
  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"
9738
9724
  }),
9739
9725
  unfinishedReasons: typebox_exports.Unknown({
9740
- description: "\u672A\u5B8C\u6210\u539F\u56E0\uFF1B\u53D6\u8BC1\u53D7\u9650\u65F6\u5982\u5B9E\u62A5\u544A\u3002"
9726
+ description: "\u4EC5\u53D6\u8BC1\u53D7\u9650\u65F6\u586B\u672A\u5B8C\u6210\u539F\u56E0\uFF1B\u6CA1\u6709\u5C31\u586B null"
9741
9727
  })
9742
9728
  })
9743
9729
  );
@@ -22,7 +22,7 @@ const fixerOutputObject = Type.Object({
22
22
  }),
23
23
  diffItems: diffItemsField,
24
24
  testEvidence: Type.Unknown({
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"
25
+ description: "\u4EC5 diff \u542B\u6D4B\u8BD5\u6539\u52A8\u65F6\u586B\u6D4B\u8BD5\u8BC1\u636E\u6761\uFF1B\u6CA1\u6709\u5C31\u586B null\u3002\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"
26
26
  })
27
27
  });
28
28
  const fixerOutputSchema = withTerminatingOutputDeclarations(
@@ -9,10 +9,10 @@ const gatekeeperDecisionSchema = openToolObject(
9
9
  description: "dispatch | pass"
10
10
  }),
11
11
  officer: Type.Unknown({
12
- description: "status \u4E3A dispatch \u65F6\u4E3A inspector | notary"
12
+ description: "\u4EC5 status \u4E3A dispatch \u65F6\u586B inspector | notary\uFF1B\u6CA1\u6709\u5C31\u586B null"
13
13
  }),
14
14
  findings: Type.Unknown({
15
- description: "status \u4E3A pass \u65F6\u53EF\u9009 string[] findings"
15
+ description: "\u4EC5 status \u4E3A pass \u65F6\u586B string[] findings\uFF1B\u6CA1\u6709\u5C31\u586B null"
16
16
  })
17
17
  })
18
18
  );
@@ -5,13 +5,13 @@ import { withTerminatingOutputDeclarations } from "./terminating-infrastructure.
5
5
  const NAVIGATOR_OUTPUT_TOOL_NAME = "ak_navigator_output";
6
6
  const navigatorAdviceFields = {
7
7
  prose: Type.Unknown({
8
- description: "\u5355\u6761\u6563\u6587\u5EFA\u8BAE\u3002\u65E0\u72B6\u6001\u5206\u53C9\u65F6\u4F7F\u7528\uFF1B\u539F\u6837\u5448\u73B0\u3002"
8
+ description: "\u4EC5\u65E0\u72B6\u6001\u5206\u53C9\u65F6\u586B\u5355\u6761\u6563\u6587\u5EFA\u8BAE\uFF1B\u6CA1\u6709\u5C31\u586B null\u3002\u539F\u6837\u5448\u73B0\u3002"
9
9
  }),
10
10
  byStatus: Type.Unknown({
11
11
  description: "\u6309\u4E3B\u8859\u95E8\u7ED3\u5C40 status \u9884\u5199\u7684\u6563\u6587\u5EFA\u8BAE\u3002\u952E\u4E3A status \u5B57\u9762\u91CF\uFF0C\u503C\u4E3A\u5EFA\u8BAE\u6B63\u6587\u3002\u7ED3\u7B97\u65F6\u4EE3\u7801\u53EA\u6309\u5B9E\u9645 status \u53D6\u5BF9\u5E94\u539F\u6587\uFF0C\u4E0D\u89E3\u6790\u5EFA\u8BAE\u8BED\u4E49\u3002"
12
12
  }),
13
13
  byRole: Type.Unknown({
14
- description: "\u6574\u5F20\u8DEF\u7EBF\u8868\uFF1A\u952E\u4E3A\u8859\u95E8\u89D2\u8272\uFF0C\u503C\u4E3A\u8BE5\u8859\u95E8 status \u2192 \u5EFA\u8BAE\u3002\u76F4\u63A5\u5165\u53E3\u4E0D\u7ED9\u89D2\u8272\u65F6\u4F7F\u7528\u3002"
14
+ description: "\u4EC5\u76F4\u63A5\u5165\u53E3\u4E0D\u7ED9\u89D2\u8272\u65F6\u586B\u6574\u5F20\u8DEF\u7EBF\u8868\uFF08\u952E\u4E3A\u8859\u95E8\u89D2\u8272\uFF0C\u503C\u4E3A\u8BE5\u8859\u95E8 status \u2192 \u5EFA\u8BAE\uFF09\uFF1B\u6CA1\u6709\u5C31\u586B null"
15
15
  })
16
16
  };
17
17
  const navigatorAdviceBodySchema = openToolObject(Type.Object(navigatorAdviceFields));
@@ -2,7 +2,7 @@ import { Type } from "typebox";
2
2
  import { openToolObject } from "../open-tool-schema.js";
3
3
  import { withTerminatingOutputDeclarations } from "./terminating-infrastructure.js";
4
4
  const REVIEWER_OUTPUT_TOOL_NAME = "ak_reviewer_output";
5
- const REVIEWER_AMENDMENTS_DESCRIPTION = "\u5DF2\u8FD0\u884C lens \u7684 amendments \u627F\u8F7D candidates\u3001\u9010\u6761\u5904\u7F6E\u4E0E verdict \u7684\u5B8C\u6574\u62A5\u544A\uFF08\u975E\u4EC5 verdict \u884C\uFF09\uFF1B\u663E\u5F0F\u5355\u8F74\u65F6\u53E6\u4E00\u8F74\u53EF\u7701\u7565\uFF08completeness / correctness\uFF09\u3002hard-stop\uFF0Fusage error \u4E3A refused \u65F6\uFF0C\u5DF2\u4EA7\u51FA\u62A5\u544A\u4ECD\u7167\u5F55\u5BF9\u5E94 lens \u5B57\u6BB5\u3002";
5
+ const REVIEWER_AMENDMENTS_DESCRIPTION = "\u5DF2\u8FD0\u884C lens \u7684 amendments \u627F\u8F7D candidates\u3001\u9010\u6761\u5904\u7F6E\u4E0E verdict \u7684\u5B8C\u6574\u62A5\u544A\uFF08\u975E\u4EC5 verdict \u884C\uFF09\uFF1B\u5404\u8F74\uFF08completeness / correctness\uFF09\u4EC5\u6709\u5DF2\u4EA7\u51FA\u62A5\u544A\u65F6\u586B\u62A5\u544A\uFF1B\u6CA1\u6709\u5C31\u586B null\u3002hard-stop\uFF0Fusage error \u4E3A refused \u65F6\uFF0C\u5DF2\u4EA7\u51FA\u62A5\u544A\u4ECD\u7167\u5F55\u5BF9\u5E94 lens \u5B57\u6BB5\u3002";
6
6
  const REVIEWER_STATUS_DESCRIPTION = "completed | refused\u3002\u4E24\u79CD\u6B63\u5E38 lens verdict\uFF08completeness / correctness\uFF09\u5747 completed\uFF1Bhard-stop \u4E0E usage error \u4E3A refused\uFF08\u5DF2\u4EA7\u51FA\u62A5\u544A\u4ECD\u7167\u5F55\u8FDB\u6240\u9009 lens amendments\uFF09\u3002";
7
7
  const reviewerOutputObject = Type.Object({
8
8
  status: Type.Unknown({ description: REVIEWER_STATUS_DESCRIPTION }),
@@ -1,39 +1,23 @@
1
1
  import { Type } from "typebox";
2
2
  const INFRASTRUCTURE_FAILURE_DECLARATION_KEY = "infrastructureFailure";
3
- const INFRASTRUCTURE_FAILURE_DIAGNOSTIC_KEY = "diagnostic";
4
- const infrastructureFailureNested = Type.Object(
5
- {
6
- [INFRASTRUCTURE_FAILURE_DIAGNOSTIC_KEY]: Type.Unknown({
7
- description: "\u57FA\u7840\u8BBE\u65BD\u5931\u8D25\u8BCA\u65AD\u5B57\u7B26\u4E32\u3002"
8
- })
9
- },
10
- {
11
- additionalProperties: true,
12
- description: "\u4EC5\u57FA\u7840\u8BBE\u65BD\u771F\u5B9E\u5931\u8D25\u65F6\u51FA\u73B0\u3002"
13
- }
14
- );
15
- infrastructureFailureNested.required = [];
16
- const infrastructureFailureDeclarationSchema = Type.Object(
17
- {
18
- [INFRASTRUCTURE_FAILURE_DECLARATION_KEY]: infrastructureFailureNested
19
- },
20
- { additionalProperties: true }
21
- );
3
+ const infrastructureFailureField = Type.Unknown({
4
+ description: "\u4EC5\u57FA\u7840\u8BBE\u65BD\u771F\u5B9E\u5931\u8D25\u65F6\u586B {diagnostic}\uFF1B\u6CA1\u6709\u5C31\u586B null"
5
+ });
22
6
  function withTerminatingOutputDeclarations(schema) {
23
7
  const baseProperties = schema.properties;
24
8
  const properties = {
25
9
  ...baseProperties ?? {},
26
10
  ...baseProperties?.ticketNumber === void 0 ? {
27
11
  ticketNumber: Type.Unknown({
28
- description: "\u53EF\u9009\u672C\u7968\u53F7\u3002\u5C1A\u672A\u7ED1\u5B9A\u65F6\u7531\u89D2\u8272\u5728\u65E2\u6709\u56DE\u6267\u4E2D\u7533\u62A5\uFF08\u6B63\u6574\u6570\u3001\u6570\u5B57\u4E32\u6216\u524D\u5BFC #N\uFF1B\u5F52\u4F4D\u53EA\u8BFB\u672C\u5B57\u6BB5\uFF09\u3002"
12
+ description: "\u4EC5\u5C1A\u672A\u7ED1\u5B9A\u65F6\u586B\u672C\u7968\u53F7\uFF08\u6B63\u6574\u6570\u3001\u6570\u5B57\u4E32\u6216\u524D\u5BFC #N\uFF1B\u5F52\u4F4D\u53EA\u8BFB\u672C\u5B57\u6BB5\uFF09\uFF1B\u6CA1\u6709\u5C31\u586B null"
29
13
  })
30
14
  } : {},
31
15
  ...baseProperties?.summary === void 0 ? {
32
16
  summary: Type.Unknown({
33
- description: "\u672C\u5E2D\u81EA\u884C\u586B\u5199\u7684\u4E00\u4E24\u53E5\u300120\u201350 \u5B57\u7ED3\u8BBA\u6458\u8981\u3002\u53EF\u9009\uFF1B\u4E0D\u56E0\u7F3A\u5931\u6216\u8D85\u957F\u62D2\u6536\u3001\u622A\u65AD\u6216\u4EE3\u586B\u3002"
17
+ description: "\u4EC5\u672C\u5E2D\u6709\u7ED3\u8BBA\u65F6\u586B\u4E00\u4E24\u53E5\u300120\u201350 \u5B57\u7ED3\u8BBA\u6458\u8981\uFF1B\u6CA1\u6709\u5C31\u586B null\u3002\u4E0D\u56E0\u7F3A\u5931\u6216\u8D85\u957F\u62D2\u6536\u3001\u622A\u65AD\u6216\u4EE3\u586B\u3002"
34
18
  })
35
19
  } : {},
36
- [INFRASTRUCTURE_FAILURE_DECLARATION_KEY]: infrastructureFailureDeclarationSchema.properties[INFRASTRUCTURE_FAILURE_DECLARATION_KEY]
20
+ [INFRASTRUCTURE_FAILURE_DECLARATION_KEY]: infrastructureFailureField
37
21
  };
38
22
  const object = Type.Object(properties, { additionalProperties: true });
39
23
  const incoming = schema.required;
@@ -43,6 +27,5 @@ function withTerminatingOutputDeclarations(schema) {
43
27
  }
44
28
  export {
45
29
  INFRASTRUCTURE_FAILURE_DECLARATION_KEY,
46
- INFRASTRUCTURE_FAILURE_DIAGNOSTIC_KEY,
47
30
  withTerminatingOutputDeclarations
48
31
  };
@@ -9113,15 +9113,15 @@ function withTerminatingOutputDeclarations(schema) {
9113
9113
  ...baseProperties ?? {},
9114
9114
  ...baseProperties?.ticketNumber === void 0 ? {
9115
9115
  ticketNumber: typebox_exports.Unknown({
9116
- description: "\u53EF\u9009\u672C\u7968\u53F7\u3002\u5C1A\u672A\u7ED1\u5B9A\u65F6\u7531\u89D2\u8272\u5728\u65E2\u6709\u56DE\u6267\u4E2D\u7533\u62A5\uFF08\u6B63\u6574\u6570\u3001\u6570\u5B57\u4E32\u6216\u524D\u5BFC #N\uFF1B\u5F52\u4F4D\u53EA\u8BFB\u672C\u5B57\u6BB5\uFF09\u3002"
9116
+ description: "\u4EC5\u5C1A\u672A\u7ED1\u5B9A\u65F6\u586B\u672C\u7968\u53F7\uFF08\u6B63\u6574\u6570\u3001\u6570\u5B57\u4E32\u6216\u524D\u5BFC #N\uFF1B\u5F52\u4F4D\u53EA\u8BFB\u672C\u5B57\u6BB5\uFF09\uFF1B\u6CA1\u6709\u5C31\u586B null"
9117
9117
  })
9118
9118
  } : {},
9119
9119
  ...baseProperties?.summary === void 0 ? {
9120
9120
  summary: typebox_exports.Unknown({
9121
- description: "\u672C\u5E2D\u81EA\u884C\u586B\u5199\u7684\u4E00\u4E24\u53E5\u300120\u201350 \u5B57\u7ED3\u8BBA\u6458\u8981\u3002\u53EF\u9009\uFF1B\u4E0D\u56E0\u7F3A\u5931\u6216\u8D85\u957F\u62D2\u6536\u3001\u622A\u65AD\u6216\u4EE3\u586B\u3002"
9121
+ description: "\u4EC5\u672C\u5E2D\u6709\u7ED3\u8BBA\u65F6\u586B\u4E00\u4E24\u53E5\u300120\u201350 \u5B57\u7ED3\u8BBA\u6458\u8981\uFF1B\u6CA1\u6709\u5C31\u586B null\u3002\u4E0D\u56E0\u7F3A\u5931\u6216\u8D85\u957F\u62D2\u6536\u3001\u622A\u65AD\u6216\u4EE3\u586B\u3002"
9122
9122
  })
9123
9123
  } : {},
9124
- [INFRASTRUCTURE_FAILURE_DECLARATION_KEY]: infrastructureFailureDeclarationSchema.properties[INFRASTRUCTURE_FAILURE_DECLARATION_KEY]
9124
+ [INFRASTRUCTURE_FAILURE_DECLARATION_KEY]: infrastructureFailureField
9125
9125
  };
9126
9126
  const object = typebox_exports.Object(properties, { additionalProperties: true });
9127
9127
  const incoming = schema.required;
@@ -9129,31 +9129,15 @@ function withTerminatingOutputDeclarations(schema) {
9129
9129
  object.required = preserved;
9130
9130
  return object;
9131
9131
  }
9132
- var INFRASTRUCTURE_FAILURE_DECLARATION_KEY, INFRASTRUCTURE_FAILURE_DIAGNOSTIC_KEY, infrastructureFailureNested, infrastructureFailureDeclarationSchema;
9132
+ var INFRASTRUCTURE_FAILURE_DECLARATION_KEY, infrastructureFailureField;
9133
9133
  var init_terminating_infrastructure = __esm({
9134
9134
  "src/package-contracts/terminating-infrastructure.ts"() {
9135
9135
  "use strict";
9136
9136
  init_build();
9137
9137
  INFRASTRUCTURE_FAILURE_DECLARATION_KEY = "infrastructureFailure";
9138
- INFRASTRUCTURE_FAILURE_DIAGNOSTIC_KEY = "diagnostic";
9139
- infrastructureFailureNested = typebox_exports.Object(
9140
- {
9141
- [INFRASTRUCTURE_FAILURE_DIAGNOSTIC_KEY]: typebox_exports.Unknown({
9142
- description: "\u57FA\u7840\u8BBE\u65BD\u5931\u8D25\u8BCA\u65AD\u5B57\u7B26\u4E32\u3002"
9143
- })
9144
- },
9145
- {
9146
- additionalProperties: true,
9147
- description: "\u4EC5\u57FA\u7840\u8BBE\u65BD\u771F\u5B9E\u5931\u8D25\u65F6\u51FA\u73B0\u3002"
9148
- }
9149
- );
9150
- infrastructureFailureNested.required = [];
9151
- infrastructureFailureDeclarationSchema = typebox_exports.Object(
9152
- {
9153
- [INFRASTRUCTURE_FAILURE_DECLARATION_KEY]: infrastructureFailureNested
9154
- },
9155
- { additionalProperties: true }
9156
- );
9138
+ infrastructureFailureField = typebox_exports.Unknown({
9139
+ description: "\u4EC5\u57FA\u7840\u8BBE\u65BD\u771F\u5B9E\u5931\u8D25\u65F6\u586B {diagnostic}\uFF1B\u6CA1\u6709\u5C31\u586B null"
9140
+ });
9157
9141
  }
9158
9142
  });
9159
9143
 
@@ -9173,10 +9157,10 @@ var init_gatekeeper_output = __esm({
9173
9157
  description: "dispatch | pass"
9174
9158
  }),
9175
9159
  officer: typebox_exports.Unknown({
9176
- description: "status \u4E3A dispatch \u65F6\u4E3A inspector | notary"
9160
+ description: "\u4EC5 status \u4E3A dispatch \u65F6\u586B inspector | notary\uFF1B\u6CA1\u6709\u5C31\u586B null"
9177
9161
  }),
9178
9162
  findings: typebox_exports.Unknown({
9179
- description: "status \u4E3A pass \u65F6\u53EF\u9009 string[] findings"
9163
+ description: "\u4EC5 status \u4E3A pass \u65F6\u586B string[] findings\uFF1B\u6CA1\u6709\u5C31\u586B null"
9180
9164
  })
9181
9165
  })
9182
9166
  );
@@ -9198,13 +9182,13 @@ var init_navigator_output = __esm({
9198
9182
  NAVIGATOR_OUTPUT_TOOL_NAME = "ak_navigator_output";
9199
9183
  navigatorAdviceFields = {
9200
9184
  prose: typebox_exports.Unknown({
9201
- description: "\u5355\u6761\u6563\u6587\u5EFA\u8BAE\u3002\u65E0\u72B6\u6001\u5206\u53C9\u65F6\u4F7F\u7528\uFF1B\u539F\u6837\u5448\u73B0\u3002"
9185
+ description: "\u4EC5\u65E0\u72B6\u6001\u5206\u53C9\u65F6\u586B\u5355\u6761\u6563\u6587\u5EFA\u8BAE\uFF1B\u6CA1\u6709\u5C31\u586B null\u3002\u539F\u6837\u5448\u73B0\u3002"
9202
9186
  }),
9203
9187
  byStatus: typebox_exports.Unknown({
9204
9188
  description: "\u6309\u4E3B\u8859\u95E8\u7ED3\u5C40 status \u9884\u5199\u7684\u6563\u6587\u5EFA\u8BAE\u3002\u952E\u4E3A status \u5B57\u9762\u91CF\uFF0C\u503C\u4E3A\u5EFA\u8BAE\u6B63\u6587\u3002\u7ED3\u7B97\u65F6\u4EE3\u7801\u53EA\u6309\u5B9E\u9645 status \u53D6\u5BF9\u5E94\u539F\u6587\uFF0C\u4E0D\u89E3\u6790\u5EFA\u8BAE\u8BED\u4E49\u3002"
9205
9189
  }),
9206
9190
  byRole: typebox_exports.Unknown({
9207
- description: "\u6574\u5F20\u8DEF\u7EBF\u8868\uFF1A\u952E\u4E3A\u8859\u95E8\u89D2\u8272\uFF0C\u503C\u4E3A\u8BE5\u8859\u95E8 status \u2192 \u5EFA\u8BAE\u3002\u76F4\u63A5\u5165\u53E3\u4E0D\u7ED9\u89D2\u8272\u65F6\u4F7F\u7528\u3002"
9191
+ description: "\u4EC5\u76F4\u63A5\u5165\u53E3\u4E0D\u7ED9\u89D2\u8272\u65F6\u586B\u6574\u5F20\u8DEF\u7EBF\u8868\uFF08\u952E\u4E3A\u8859\u95E8\u89D2\u8272\uFF0C\u503C\u4E3A\u8BE5\u8859\u95E8 status \u2192 \u5EFA\u8BAE\uFF09\uFF1B\u6CA1\u6709\u5C31\u586B null"
9208
9192
  })
9209
9193
  };
9210
9194
  navigatorAdviceBodySchema = openToolObject(typebox_exports.Object(navigatorAdviceFields));
@@ -9237,7 +9221,7 @@ var init_review_submission = __esm({
9237
9221
  reason: typebox_exports.Optional(typebox_exports.Unknown({ description: "\u4E0A\u5448\u7406\u7531" })),
9238
9222
  violations: typebox_exports.Optional(typebox_exports.Unknown({ description: "\u8FDD\u89C4\u6761\u76EE" })),
9239
9223
  conflicts: typebox_exports.Optional(typebox_exports.Unknown({ description: "\u5F85\u51B3\u51B2\u7A81" })),
9240
- fix: typebox_exports.Optional(typebox_exports.Unknown({ description: "continue \u65F6\u7684\u8865\u6551\u8BF4\u660E\uFF1B\u53EF\u5199 summary \u6458\u8981\uFF0C\u5176\u4F59\u5185\u5BB9\u539F\u6837\u7559\u5B58" })),
9224
+ fix: typebox_exports.Optional(typebox_exports.Unknown({ description: "\u4EC5 continue \u65F6\u586B\u8865\u6551\u8BF4\u660E\uFF08\u53EF\u5199 summary \u6458\u8981\uFF0C\u5176\u4F59\u5185\u5BB9\u539F\u6837\u7559\u5B58\uFF09\uFF1B\u6CA1\u6709\u5C31\u586B null" })),
9241
9225
  classes: typebox_exports.Optional(typebox_exports.Unknown({ description: "\u5DF2\u88C1\u51B3 finding \u7C7B\uFF1B\u53EF\u8BF4\u660E name\u3001owner\u3001boundary\u3001disposition\uFF0C\u539F\u6837\u7559\u5B58" })),
9242
9226
  note: typebox_exports.Optional(typebox_exports.Unknown({ description: "\u88C1\u51B3\u9644\u6CE8" })),
9243
9227
  evidence: typebox_exports.Optional(typebox_exports.Unknown({ description: "\u7559\u5B58\u8BC1\u636E" })),
@@ -9328,7 +9312,7 @@ var init_reviewer_output = __esm({
9328
9312
  init_open_tool_schema();
9329
9313
  init_terminating_infrastructure();
9330
9314
  REVIEWER_OUTPUT_TOOL_NAME = "ak_reviewer_output";
9331
- REVIEWER_AMENDMENTS_DESCRIPTION = "\u5DF2\u8FD0\u884C lens \u7684 amendments \u627F\u8F7D candidates\u3001\u9010\u6761\u5904\u7F6E\u4E0E verdict \u7684\u5B8C\u6574\u62A5\u544A\uFF08\u975E\u4EC5 verdict \u884C\uFF09\uFF1B\u663E\u5F0F\u5355\u8F74\u65F6\u53E6\u4E00\u8F74\u53EF\u7701\u7565\uFF08completeness / correctness\uFF09\u3002hard-stop\uFF0Fusage error \u4E3A refused \u65F6\uFF0C\u5DF2\u4EA7\u51FA\u62A5\u544A\u4ECD\u7167\u5F55\u5BF9\u5E94 lens \u5B57\u6BB5\u3002";
9315
+ REVIEWER_AMENDMENTS_DESCRIPTION = "\u5DF2\u8FD0\u884C lens \u7684 amendments \u627F\u8F7D candidates\u3001\u9010\u6761\u5904\u7F6E\u4E0E verdict \u7684\u5B8C\u6574\u62A5\u544A\uFF08\u975E\u4EC5 verdict \u884C\uFF09\uFF1B\u5404\u8F74\uFF08completeness / correctness\uFF09\u4EC5\u6709\u5DF2\u4EA7\u51FA\u62A5\u544A\u65F6\u586B\u62A5\u544A\uFF1B\u6CA1\u6709\u5C31\u586B null\u3002hard-stop\uFF0Fusage error \u4E3A refused \u65F6\uFF0C\u5DF2\u4EA7\u51FA\u62A5\u544A\u4ECD\u7167\u5F55\u5BF9\u5E94 lens \u5B57\u6BB5\u3002";
9332
9316
  REVIEWER_STATUS_DESCRIPTION = "completed | refused\u3002\u4E24\u79CD\u6B63\u5E38 lens verdict\uFF08completeness / correctness\uFF09\u5747 completed\uFF1Bhard-stop \u4E0E usage error \u4E3A refused\uFF08\u5DF2\u4EA7\u51FA\u62A5\u544A\u4ECD\u7167\u5F55\u8FDB\u6240\u9009 lens amendments\uFF09\u3002";
9333
9317
  reviewerOutputObject = typebox_exports.Object({
9334
9318
  status: typebox_exports.Unknown({ description: REVIEWER_STATUS_DESCRIPTION }),
@@ -9384,7 +9368,7 @@ var init_fixer_output = __esm({
9384
9368
  }),
9385
9369
  diffItems: diffItemsField,
9386
9370
  testEvidence: typebox_exports.Unknown({
9387
- 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"
9371
+ description: "\u4EC5 diff \u542B\u6D4B\u8BD5\u6539\u52A8\u65F6\u586B\u6D4B\u8BD5\u8BC1\u636E\u6761\uFF1B\u6CA1\u6709\u5C31\u586B null\u3002\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"
9388
9372
  })
9389
9373
  });
9390
9374
  fixerOutputSchema = withTerminatingOutputDeclarations(
@@ -9456,7 +9440,7 @@ var init_doctor_contracts = __esm({
9456
9440
  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`
9457
9441
  }),
9458
9442
  reason: typebox_exports.Unknown({
9459
- description: "\u8BC1\u636E\u4E0D\u8DB3\u4EE5\u652F\u6491\u5982\u5B9E\u8BC1\u8BCD\u7684\u539F\u56E0\uFF1B\u4EC5 refused \u65F6\u7528\u3002"
9443
+ description: "\u4EC5 refused \u65F6\u586B\u8BC1\u636E\u4E0D\u8DB3\u4EE5\u652F\u6491\u5982\u5B9E\u8BC1\u8BCD\u7684\u539F\u56E0\uFF1B\u6CA1\u6709\u5C31\u586B null"
9460
9444
  }),
9461
9445
  missingEvidence: typebox_exports.Unknown({
9462
9446
  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"
@@ -9660,15 +9644,17 @@ var init_diarist_contracts = __esm({
9660
9644
  }),
9661
9645
  ticketNumber: typebox_exports.Optional(
9662
9646
  typebox_exports.Unknown({
9663
- 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"
9647
+ description: "\u4EC5\u6709\u672C\u5EAD\u5BF9\u8C61\u65F6\u586B\u7968\u53F7\uFF08\u6B63\u6574\u6570\uFF09\uFF1B\u6CA1\u6709\u5C31\u586B null\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"
9664
9648
  })
9665
9649
  ),
9666
9650
  reason: typebox_exports.Unknown({
9667
- description: "status \u4E3A escalate \u65F6\uFF1A\u4E0A\u5448\u7684\u539F\u56E0"
9651
+ description: "\u4EC5 status \u4E3A escalate \u65F6\u586B\u4E0A\u5448\u7684\u539F\u56E0\uFF1B\u6CA1\u6709\u5C31\u586B null"
9668
9652
  }),
9669
- sessions: typebox_exports.Optional(typebox_exports.Unknown({ description: DIARIST_SESSIONS_DESCRIPTION })),
9653
+ sessions: typebox_exports.Optional(typebox_exports.Unknown({
9654
+ description: `\u4EC5\u5355\u7968\u5EAD\u65F6\u586B\u5BF9\u8BDD\u8FB9\u754C\uFF1B\u6CA1\u6709\u5C31\u586B null\u3002${DIARIST_SESSIONS_DESCRIPTION}`
9655
+ })),
9670
9656
  ticketSessions: typebox_exports.Unknown({
9671
- 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`
9657
+ description: `\u4EC5\u591A\u7968\u5EAD\u65F6\u586B\u9010\u7968\u5BF9\u8BDD\u8FB9\u754C\uFF1B\u6CA1\u6709\u5C31\u586B null\u3002\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`
9672
9658
  })
9673
9659
  })
9674
9660
  )
@@ -11482,7 +11468,7 @@ var init_collector_tool_schemas = __esm({
11482
11468
  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"
11483
11469
  }),
11484
11470
  unfinishedReasons: typebox_exports.Unknown({
11485
- description: "\u672A\u5B8C\u6210\u539F\u56E0\uFF1B\u53D6\u8BC1\u53D7\u9650\u65F6\u5982\u5B9E\u62A5\u544A\u3002"
11471
+ description: "\u4EC5\u53D6\u8BC1\u53D7\u9650\u65F6\u586B\u672A\u5B8C\u6210\u539F\u56E0\uFF1B\u6CA1\u6709\u5C31\u586B null"
11486
11472
  })
11487
11473
  })
11488
11474
  );
@@ -18,7 +18,7 @@ const reviewNarrativeFields = {
18
18
  reason: Type.Optional(Type.Unknown({ description: "上呈理由" })),
19
19
  violations: Type.Optional(Type.Unknown({ description: "违规条目" })),
20
20
  conflicts: Type.Optional(Type.Unknown({ description: "待决冲突" })),
21
- fix: Type.Optional(Type.Unknown({ description: "continue 时的补救说明;可写 summary 摘要,其余内容原样留存" })),
21
+ fix: Type.Optional(Type.Unknown({ description: "仅 continue 时填补救说明(可写 summary 摘要,其余内容原样留存);没有就填 null" })),
22
22
  classes: Type.Optional(Type.Unknown({ description: "已裁决 finding 类;可说明 name、owner、boundary、disposition,原样留存" })),
23
23
  note: Type.Optional(Type.Unknown({ description: "裁决附注" })),
24
24
  evidence: Type.Optional(Type.Unknown({ description: "留存证据" })),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akagilnc/pi-workflow-roles",
3
- "version": "0.1.5946",
3
+ "version": "0.1.5949",
4
4
  "description": "Soul-bound workflow roles for Pi",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -14,7 +14,7 @@ export const collectorOutputBaseSchema = openToolObject(
14
14
  "按机器身份归组的出席、材料与逐条 findings(LLM 自行从宿主 CLI 取证整理;代码不代收不归并)。",
15
15
  }),
16
16
  unfinishedReasons: Type.Unknown({
17
- description: "未完成原因;取证受限时如实报告。",
17
+ description: "仅取证受限时填未完成原因;没有就填 null",
18
18
  }),
19
19
  }),
20
20
  );
@@ -31,10 +31,10 @@ export type DiaristOutput =
31
31
  readonly ticketNumber?: number | null;
32
32
  /**
33
33
  * Dialogue bounds: one entry per session volume, each with one or more ranges.
34
- * Empty / absent = lawful empty selection (no dialogue this turn).
34
+ * Empty / null / absent = lawful empty selection (no dialogue this turn).
35
35
  * Malformed endpoints → accept hook reasks (`reask-not-explode`).
36
36
  */
37
- readonly sessions?: readonly TicketProvenanceSession[];
37
+ readonly sessions?: readonly TicketProvenanceSession[] | null;
38
38
  /** Per-ticket dialogue bounds for a single multi-ticket summons (#1107). */
39
39
  readonly ticketSessions?: readonly {
40
40
  readonly ticketNumber: number;
@@ -65,13 +65,13 @@ export function validateRecordedDiaristOutput(value: unknown): DiaristOutput {
65
65
 
66
66
  /**
67
67
  * Project sessions from a completed diarist payload.
68
- * Absent key → empty (lawful). Present but unusable → undefined (caller reasks).
68
+ * Null / absent key → empty (lawful). Non-null but unusable → undefined (caller reasks).
69
69
  */
70
70
  export function projectDiaristSessions(
71
71
  value: unknown,
72
72
  ): readonly TicketProvenanceSession[] | undefined {
73
73
  const raw = (value as { sessions?: unknown } | null)?.sessions;
74
- if (raw === undefined) return [];
74
+ if (raw == null) return [];
75
75
  return projectTicketProvenanceSessions(raw);
76
76
  }
77
77
 
@@ -115,15 +115,17 @@ export const diaristOutputSchema = withTerminatingOutputDeclarations(
115
115
  ticketNumber: Type.Optional(
116
116
  Type.Unknown({
117
117
  description:
118
- "本庭对象票号(正整数)或 null/省略=真无票;下游走 typed 键;认不出用 status=escalate,不洗成无录。机械层不重判。",
118
+ "仅有本庭对象时填票号(正整数);没有就填 null=真无票;下游走 typed 键;认不出用 status=escalate,不洗成无录。机械层不重判。",
119
119
  }),
120
120
  ),
121
121
  reason: Type.Unknown({
122
- description: "status 为 escalate 时:上呈的原因",
122
+ description: "仅 status 为 escalate 时填上呈的原因;没有就填 null",
123
123
  }),
124
- sessions: Type.Optional(Type.Unknown({ description: DIARIST_SESSIONS_DESCRIPTION })),
124
+ sessions: Type.Optional(Type.Unknown({
125
+ description: `仅单票庭时填对话边界;没有就填 null。${DIARIST_SESSIONS_DESCRIPTION}`,
126
+ })),
125
127
  ticketSessions: Type.Unknown({
126
- description: `多票庭逐票对话边界;每票含 ticketNumber(本条边界所归票号,正整数)与 sessions(${DIARIST_SESSIONS_DESCRIPTION})。一次交卷各票各自分录。与单票 sessions 二选一。`,
128
+ description: `仅多票庭时填逐票对话边界;没有就填 null。每票含 ticketNumber(本条边界所归票号,正整数)与 sessions(${DIARIST_SESSIONS_DESCRIPTION})。一次交卷各票各自分录。`,
127
129
  }),
128
130
  }),
129
131
  ),
@@ -72,7 +72,7 @@ const doctorSubmissionObject = Type.Object({
72
72
  `逐条资产观察与处方,原样留存。一条可含 targetKey、targetKind(${DOCTOR_TARGET_KINDS.join(" | ")})、observation、evidenceIds、disposition(${DOCTOR_DISPOSITIONS.join(" | ")})、assetEvidence(targetKey、targetKind、evidenceId)、guardrails(reproducibleFailure、owningSeamOrInvariant、deletionOrSimplificationSuffices,各项可含 answer、evidenceIds、explanation)、prescription(kind 为 ${DOCTOR_PRESCRIPTION_KINDS.join(" | ")},另可写 recommendation、necessityExplanation)、lastRealBite(kind 为 ${DOCTOR_BITE_KINDS.join(" | ")},另可写 targetKey、evidenceId、eligibleEvidenceIds)。不要求任何处方或可复用 finding;缺可复用资产或 bounded-bite 证据只排除对应资产处方。机器不核验。`,
73
73
  }),
74
74
  reason: Type.Unknown({
75
- description: "证据不足以支撑如实证词的原因;仅 refused 时用。",
75
+ description: "仅 refused 时填证据不足以支撑如实证词的原因;没有就填 null",
76
76
  }),
77
77
  missingEvidence: Type.Unknown({
78
78
  description: "如实证词所需而尚缺的证据,原样留存(如每项 need、targetKeys)。",
@@ -34,7 +34,7 @@ const fixerOutputObject = Type.Object({
34
34
  diffItems: diffItemsField,
35
35
  testEvidence: Type.Unknown({
36
36
  description:
37
- "测试证据条;diff 含测试改动时提交;机器不核验。可写 contract(测试改动所证明的契约)、minimumNecessaryCost(测试改动的一行最小必要成本)、measuredDuration(聚焦验证实测时长)。",
37
+ "仅 diff 含测试改动时填测试证据条;没有就填 null。机器不核验。可写 contract(测试改动所证明的契约)、minimumNecessaryCost(测试改动的一行最小必要成本)、measuredDuration(聚焦验证实测时长)。",
38
38
  }),
39
39
  });
40
40
 
@@ -19,10 +19,10 @@ export const gatekeeperDecisionSchema = openToolObject(
19
19
  description: "dispatch | pass",
20
20
  }),
21
21
  officer: Type.Unknown({
22
- description: "status 为 dispatch 时为 inspector | notary",
22
+ description: "仅 status 为 dispatch 时填 inspector | notary;没有就填 null",
23
23
  }),
24
24
  findings: Type.Unknown({
25
- description: "status 为 pass 时可选 string[] findings",
25
+ description: "仅 status 为 pass 时填 string[] findings;没有就填 null",
26
26
  }),
27
27
  }),
28
28
  );
@@ -19,7 +19,7 @@ export const NAVIGATOR_OUTPUT_TOOL_NAME = "ak_navigator_output";
19
19
  */
20
20
  export const navigatorAdviceFields = {
21
21
  prose: Type.Unknown({
22
- description: "单条散文建议。无状态分叉时使用;原样呈现。",
22
+ description: "仅无状态分叉时填单条散文建议;没有就填 null。原样呈现。",
23
23
  }),
24
24
  byStatus: Type.Unknown({
25
25
  description:
@@ -28,7 +28,7 @@ export const navigatorAdviceFields = {
28
28
  }),
29
29
  byRole: Type.Unknown({
30
30
  description:
31
- "整张路线表:键为衙门角色,值为该衙门 status → 建议。直接入口不给角色时使用。",
31
+ "仅直接入口不给角色时填整张路线表(键为衙门角色,值为该衙门 status → 建议);没有就填 null",
32
32
  }),
33
33
  } as const;
34
34
 
@@ -8,7 +8,7 @@ import { withTerminatingOutputDeclarations } from "./terminating-infrastructure.
8
8
  export const REVIEWER_OUTPUT_TOOL_NAME = "ak_reviewer_output";
9
9
 
10
10
  const REVIEWER_AMENDMENTS_DESCRIPTION =
11
- "已运行 lens 的 amendments 承载 candidates、逐条处置与 verdict 的完整报告(非仅 verdict 行);显式单轴时另一轴可省略(completeness / correctness)。hard-stop/usage error 为 refused 时,已产出报告仍照录对应 lens 字段。" as const;
11
+ "已运行 lens 的 amendments 承载 candidates、逐条处置与 verdict 的完整报告(非仅 verdict 行);各轴(completeness / correctness)仅有已产出报告时填报告;没有就填 null。hard-stop/usage error 为 refused 时,已产出报告仍照录对应 lens 字段。" as const;
12
12
  // #1134: `status` alone is the trajectory field (#917 §6 two normal lens verdicts →
13
13
  // completed; hard-stop / usage error → refused); its words ride the description.
14
14
  // amendments/diagnostic are LLM/human-read narrative content returned as
@@ -2,8 +2,9 @@
2
2
  * Package-owned shared infrastructure-failure declaration for every primary
3
3
  * packaged-role output tool (#541 / #1214 A2).
4
4
  *
5
- * One module owns the typed `infrastructureFailure.diagnostic` declaration
6
- * composed into each output tool's schema. The field is part of the role's
5
+ * One module owns the infrastructureFailure declaration composed into each
6
+ * output tool's schema. Name and semantic description only — no object type, so
7
+ * a null fill is not a shape rejection (#1134). The field is part of the role's
7
8
  * original receipt: ledger records it as-is. Declaration alone does not abort
8
9
  * the host (#1214 A2). True host/lifecycle failure still fails honestly on its
9
10
  * own channel.
@@ -12,34 +13,11 @@ import { Type, type TSchema } from "typebox";
12
13
 
13
14
  export const INFRASTRUCTURE_FAILURE_DECLARATION_KEY =
14
15
  "infrastructureFailure" as const;
15
- export const INFRASTRUCTURE_FAILURE_DIAGNOSTIC_KEY = "diagnostic" as const;
16
16
 
17
- /**
18
- * Shared declaration fragment for model guidance (#541 / #676 C / ADR 0057).
19
- * Nested field declarations + descriptions only — host must not pure-shape-reject
20
- * the envelope (仓内 CLAUDE.md 开篇). No required/minLength/type host gates on
21
- * the declaration fragment.
22
- */
23
- const infrastructureFailureNested = Type.Object(
24
- {
25
- [INFRASTRUCTURE_FAILURE_DIAGNOSTIC_KEY]: Type.Unknown({
26
- description: "基础设施失败诊断字符串。",
27
- }),
28
- },
29
- {
30
- additionalProperties: true,
31
- description: "仅基础设施真实失败时出现。",
32
- },
33
- );
34
- // Open nested required so host cannot pure-shape-reject the declaration fragment.
35
- (infrastructureFailureNested as unknown as { required: string[] }).required = [];
36
-
37
- const infrastructureFailureDeclarationSchema = Type.Object(
38
- {
39
- [INFRASTRUCTURE_FAILURE_DECLARATION_KEY]: infrastructureFailureNested,
40
- },
41
- { additionalProperties: true },
42
- );
17
+ /** Name + semantic description. diagnostic's meaning lives in the description. */
18
+ const infrastructureFailureField = Type.Unknown({
19
+ description: "仅基础设施真实失败时填 {diagnostic};没有就填 null",
20
+ });
43
21
 
44
22
  /**
45
23
  * Compose declarations shared by terminating output tools: infrastructure failure,
@@ -62,7 +40,7 @@ export function withTerminatingOutputDeclarations<
62
40
  ? {
63
41
  ticketNumber: Type.Unknown({
64
42
  description:
65
- "可选本票号。尚未绑定时由角色在既有回执中申报(正整数、数字串或前导 #N;归位只读本字段)。",
43
+ "仅尚未绑定时填本票号(正整数、数字串或前导 #N;归位只读本字段);没有就填 null",
66
44
  }),
67
45
  }
68
46
  : {}
@@ -72,15 +50,12 @@ export function withTerminatingOutputDeclarations<
72
50
  ? {
73
51
  summary: Type.Unknown({
74
52
  description:
75
- "本席自行填写的一两句、20–50 字结论摘要。可选;不因缺失或超长拒收、截断或代填。",
53
+ "仅本席有结论时填一两句、20–50 字结论摘要;没有就填 null。不因缺失或超长拒收、截断或代填。",
76
54
  }),
77
55
  }
78
56
  : {}
79
57
  ),
80
- [INFRASTRUCTURE_FAILURE_DECLARATION_KEY]:
81
- infrastructureFailureDeclarationSchema.properties[
82
- INFRASTRUCTURE_FAILURE_DECLARATION_KEY
83
- ],
58
+ [INFRASTRUCTURE_FAILURE_DECLARATION_KEY]: infrastructureFailureField,
84
59
  };
85
60
  const object = Type.Object(properties, { additionalProperties: true });
86
61
  const incoming = (schema as { required?: unknown }).required;
@@ -27,7 +27,7 @@ const reviewNarrativeFields = {
27
27
  reason: Type.Optional(Type.Unknown({ description: "上呈理由" })),
28
28
  violations: Type.Optional(Type.Unknown({ description: "违规条目" })),
29
29
  conflicts: Type.Optional(Type.Unknown({ description: "待决冲突" })),
30
- fix: Type.Optional(Type.Unknown({ description: "continue 时的补救说明;可写 summary 摘要,其余内容原样留存" })),
30
+ fix: Type.Optional(Type.Unknown({ description: "仅 continue 时填补救说明(可写 summary 摘要,其余内容原样留存);没有就填 null" })),
31
31
  classes: Type.Optional(Type.Unknown({ description: "已裁决 finding 类;可说明 name、owner、boundary、disposition,原样留存" })),
32
32
  note: Type.Optional(Type.Unknown({ description: "裁决附注" })),
33
33
  evidence: Type.Optional(Type.Unknown({ description: "留存证据" })),