@akagilnc/pi-workflow-roles 0.1.5946 → 0.1.5955

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CLAUDE.md CHANGED
@@ -57,7 +57,7 @@
57
57
 
58
58
  ## 起居录位置(#1092)
59
59
 
60
- 本票记录在 `~/.ak-roles/books/<簿>/<票号>/`,没有票号的在 `~/.ak-roles/books/<簿>/unbound/`。各腿的记录在其下 `runs/<runId>@<席>/`。角色凭已知票号自行定位与读取;代码不计算、不冻结、不向提示或附件递送本票指针。
60
+ 本票记录在 `~/.ak-roles/books/<簿>/<票号>/`,没有票号的在 `~/.ak-roles/books/<簿>/unbound/`。各腿的记录在其下 `runs/<runId>@<席>/`。角色凭已知票号自行定位与读取;代码不计算、不冻结、不向提示或附件递送本票指针。要读会话卷里谁说了什么,可以用 `ak-role dialogue <会话卷>`(用法见 `ak-role help dialogue`)。
61
61
 
62
62
  ## 锚定宪法
63
63
 
@@ -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
  );
@@ -5095,20 +5081,20 @@ function isCodexOwnerResponseItemUser(message) {
5095
5081
  if (kinds === void 0) return false;
5096
5082
  return kinds.some((kind) => kind.startsWith("user."));
5097
5083
  }
5098
- function fromQueueEvent(row) {
5099
- if (row.type !== "queue-operation" || row.operation !== "enqueue") return [];
5100
- const content = row.content;
5101
- if (typeof content !== "string" || content === "") return [];
5102
- const id = nativeEventId(row);
5103
- return [{ speaker: "owner", text: content, ...id === void 0 ? {} : { id } }];
5104
- }
5105
5084
  function hasFixedOpenTagPrefix(content, tag) {
5106
5085
  if (!content.startsWith(tag)) return false;
5107
5086
  const next = content.charAt(tag.length);
5108
5087
  return next === "" || next === ">" || next === " " || next === " " || next === "\n" || next === "\r";
5109
5088
  }
5110
- function isFixedNonOwnerEnqueueShape(content) {
5111
- return hasFixedOpenTagPrefix(content, TASK_NOTIFICATION_OPEN_TAG);
5089
+ function fromQueuedCommandAttachment(row) {
5090
+ if (!isRecord(row.attachment) || row.attachment.type !== "queued_command") return [];
5091
+ const kind = materializationOriginKind(row.attachment);
5092
+ if (isNonOwnerOriginKind(kind)) return [];
5093
+ const text = textParts(row.attachment.prompt).join("");
5094
+ if (text === "") return [];
5095
+ if (kind === void 0 && hasFixedOpenTagPrefix(text, TASK_NOTIFICATION_OPEN_TAG)) return [];
5096
+ const id = nativeEventId(row);
5097
+ return [{ speaker: "owner", text, ...id === void 0 ? {} : { id } }];
5112
5098
  }
5113
5099
  function materializationOriginKind(row) {
5114
5100
  if (!isRecord(row.origin)) return void 0;
@@ -5138,13 +5124,10 @@ function fromMessageEvent(row) {
5138
5124
  function adaptSessionDialogue(rows) {
5139
5125
  return rows.map((row) => {
5140
5126
  if (row === void 0) return [];
5127
+ if (row.type === "queue-operation" || row.type === "api-request-blob") return [];
5128
+ if (row.type === "attachment") return fromQueuedCommandAttachment(row);
5141
5129
  const originKind = materializationOriginKind(row);
5142
5130
  if (isNonOwnerOriginKind(originKind)) return [];
5143
- if (row.type === "queue-operation" && row.operation === "enqueue" && typeof row.content === "string" && isFixedNonOwnerEnqueueShape(row.content)) {
5144
- return [];
5145
- }
5146
- const queued = fromQueueEvent(row);
5147
- if (queued.length > 0) return queued;
5148
5131
  return fromMessageEvent(row);
5149
5132
  });
5150
5133
  }
@@ -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
  );
@@ -6416,20 +6402,20 @@ function isCodexOwnerResponseItemUser(message) {
6416
6402
  if (kinds === void 0) return false;
6417
6403
  return kinds.some((kind) => kind.startsWith("user."));
6418
6404
  }
6419
- function fromQueueEvent(row) {
6420
- if (row.type !== "queue-operation" || row.operation !== "enqueue") return [];
6421
- const content = row.content;
6422
- if (typeof content !== "string" || content === "") return [];
6423
- const id = nativeEventId(row);
6424
- return [{ speaker: "owner", text: content, ...id === void 0 ? {} : { id } }];
6425
- }
6426
6405
  function hasFixedOpenTagPrefix(content, tag) {
6427
6406
  if (!content.startsWith(tag)) return false;
6428
6407
  const next = content.charAt(tag.length);
6429
6408
  return next === "" || next === ">" || next === " " || next === " " || next === "\n" || next === "\r";
6430
6409
  }
6431
- function isFixedNonOwnerEnqueueShape(content) {
6432
- return hasFixedOpenTagPrefix(content, TASK_NOTIFICATION_OPEN_TAG);
6410
+ function fromQueuedCommandAttachment(row) {
6411
+ if (!isRecord(row.attachment) || row.attachment.type !== "queued_command") return [];
6412
+ const kind = materializationOriginKind(row.attachment);
6413
+ if (isNonOwnerOriginKind(kind)) return [];
6414
+ const text = textParts(row.attachment.prompt).join("");
6415
+ if (text === "") return [];
6416
+ if (kind === void 0 && hasFixedOpenTagPrefix(text, TASK_NOTIFICATION_OPEN_TAG)) return [];
6417
+ const id = nativeEventId(row);
6418
+ return [{ speaker: "owner", text, ...id === void 0 ? {} : { id } }];
6433
6419
  }
6434
6420
  function materializationOriginKind(row) {
6435
6421
  if (!isRecord(row.origin)) return void 0;
@@ -6459,13 +6445,10 @@ function fromMessageEvent(row) {
6459
6445
  function adaptSessionDialogue(rows) {
6460
6446
  return rows.map((row) => {
6461
6447
  if (row === void 0) return [];
6448
+ if (row.type === "queue-operation" || row.type === "api-request-blob") return [];
6449
+ if (row.type === "attachment") return fromQueuedCommandAttachment(row);
6462
6450
  const originKind = materializationOriginKind(row);
6463
6451
  if (isNonOwnerOriginKind(originKind)) return [];
6464
- if (row.type === "queue-operation" && row.operation === "enqueue" && typeof row.content === "string" && isFixedNonOwnerEnqueueShape(row.content)) {
6465
- return [];
6466
- }
6467
- const queued = fromQueueEvent(row);
6468
- if (queued.length > 0) return queued;
6469
6452
  return fromMessageEvent(row);
6470
6453
  });
6471
6454
  }