@bolloon/bolloon-agent 0.4.33 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/dist/agents/contacts/chain.js +27 -7
  2. package/dist/agents/execution-supervisor.js +580 -40
  3. package/dist/agents/external-events.js +35 -6
  4. package/dist/agents/gateway-group.js +100 -12
  5. package/dist/agents/goal-criteria.js +10 -3
  6. package/dist/agents/goal-flywheel/block-executor.js +346 -0
  7. package/dist/agents/goal-flywheel/continuation-decision.js +592 -0
  8. package/dist/agents/goal-flywheel/goal-change.js +754 -0
  9. package/dist/agents/goal-flywheel/index.js +26 -0
  10. package/dist/agents/goal-flywheel/memory-layers.js +227 -0
  11. package/dist/agents/goal-flywheel/run-closure.js +809 -0
  12. package/dist/agents/goal-flywheel/skill-candidate.js +628 -0
  13. package/dist/agents/goal-flywheel/types.js +329 -0
  14. package/dist/agents/goal-flywheel/wiring/change.js +288 -0
  15. package/dist/agents/goal-flywheel/wiring/closure.js +697 -0
  16. package/dist/agents/goal-flywheel/wiring/continuation.js +432 -0
  17. package/dist/agents/goal-flywheel/wiring/contract.js +270 -0
  18. package/dist/agents/goal-flywheel/wiring/index.js +26 -0
  19. package/dist/agents/goal-flywheel/wiring/monitor.js +254 -0
  20. package/dist/agents/goal-flywheel/wiring/seams.js +592 -0
  21. package/dist/agents/goal-flywheel/work-contract.js +478 -0
  22. package/dist/agents/goal-flywheel/work-monitor.js +488 -0
  23. package/dist/agents/goal-flywheel-wiring.js +1870 -0
  24. package/dist/agents/goal-state-reducer.js +406 -0
  25. package/dist/agents/goal-store.js +35 -1
  26. package/dist/agents/mobile-flywheel-view.js +144 -0
  27. package/dist/agents/mobile-task-actions-verify.js +74 -0
  28. package/dist/agents/mobile-task-actions.js +178 -0
  29. package/dist/agents/mobile-task-views.js +199 -0
  30. package/dist/agents/model-policy.js +651 -0
  31. package/dist/agents/network-pulse.js +304 -18
  32. package/dist/agents/pi-sdk-tools.js +84 -33
  33. package/dist/agents/pi-sdk.js +157 -42
  34. package/dist/agents/run-store.js +71 -5
  35. package/dist/agents/skill-readiness.js +52 -10
  36. package/dist/agents/subagent-manager.js +209 -3
  37. package/dist/agents/task/task-runner.js +17 -4
  38. package/dist/agents/task-group.js +8 -51
  39. package/dist/agents/task-public-text.js +89 -0
  40. package/dist/agents/workflow-pivot-loop.js +19 -12
  41. package/dist/cli/clipboard.js +65 -0
  42. package/dist/cli/commands/index.js +1 -0
  43. package/dist/cli/commands/tasks.js +350 -2
  44. package/dist/cli/identity-command.js +177 -0
  45. package/dist/cli/ink-app.js +145 -17
  46. package/dist/cli/log-gate.js +386 -0
  47. package/dist/cli/mention-data.js +2 -0
  48. package/dist/cli/model-selector.js +538 -0
  49. package/dist/cli/reply-hygiene.js +54 -0
  50. package/dist/cli/setup-wizard.js +757 -69
  51. package/dist/cli/startup-notice.js +160 -0
  52. package/dist/cli/stores.js +22 -1
  53. package/dist/cli/theme.js +49 -0
  54. package/dist/cli/tui-select.js +970 -0
  55. package/dist/cli/update-commands.js +150 -24
  56. package/dist/cli-entry.js +137 -20
  57. package/dist/electron-build/agents/contacts/chain.js +26 -6
  58. package/dist/electron-build/agents/contacts/chain.js.map +1 -1
  59. package/dist/electron-build/agents/execution-supervisor.js +578 -38
  60. package/dist/electron-build/agents/execution-supervisor.js.map +1 -1
  61. package/dist/electron-build/agents/external-events.js +34 -5
  62. package/dist/electron-build/agents/external-events.js.map +1 -1
  63. package/dist/electron-build/agents/goal-criteria.js +10 -3
  64. package/dist/electron-build/agents/goal-criteria.js.map +1 -1
  65. package/dist/electron-build/agents/goal-flywheel/continuation-decision.js +598 -0
  66. package/dist/electron-build/agents/goal-flywheel/continuation-decision.js.map +1 -0
  67. package/dist/electron-build/agents/goal-flywheel/goal-change.js +773 -0
  68. package/dist/electron-build/agents/goal-flywheel/goal-change.js.map +1 -0
  69. package/dist/electron-build/agents/goal-flywheel/memory-layers.js +269 -0
  70. package/dist/electron-build/agents/goal-flywheel/memory-layers.js.map +1 -0
  71. package/dist/electron-build/agents/goal-flywheel/run-closure.js +818 -0
  72. package/dist/electron-build/agents/goal-flywheel/run-closure.js.map +1 -0
  73. package/dist/electron-build/agents/goal-flywheel/skill-candidate.js +642 -0
  74. package/dist/electron-build/agents/goal-flywheel/skill-candidate.js.map +1 -0
  75. package/dist/electron-build/agents/goal-flywheel/types.js +333 -0
  76. package/dist/electron-build/agents/goal-flywheel/types.js.map +1 -0
  77. package/dist/electron-build/agents/goal-flywheel/wiring/change.js +294 -0
  78. package/dist/electron-build/agents/goal-flywheel/wiring/change.js.map +1 -0
  79. package/dist/electron-build/agents/goal-flywheel/wiring/closure.js +742 -0
  80. package/dist/electron-build/agents/goal-flywheel/wiring/closure.js.map +1 -0
  81. package/dist/electron-build/agents/goal-flywheel/wiring/continuation.js +444 -0
  82. package/dist/electron-build/agents/goal-flywheel/wiring/continuation.js.map +1 -0
  83. package/dist/electron-build/agents/goal-flywheel/wiring/contract.js +279 -0
  84. package/dist/electron-build/agents/goal-flywheel/wiring/contract.js.map +1 -0
  85. package/dist/electron-build/agents/goal-flywheel/wiring/index.js +111 -0
  86. package/dist/electron-build/agents/goal-flywheel/wiring/index.js.map +1 -0
  87. package/dist/electron-build/agents/goal-flywheel/wiring/monitor.js +264 -0
  88. package/dist/electron-build/agents/goal-flywheel/wiring/monitor.js.map +1 -0
  89. package/dist/electron-build/agents/goal-flywheel/wiring/seams.js +612 -0
  90. package/dist/electron-build/agents/goal-flywheel/wiring/seams.js.map +1 -0
  91. package/dist/electron-build/agents/goal-flywheel/work-contract.js +488 -0
  92. package/dist/electron-build/agents/goal-flywheel/work-contract.js.map +1 -0
  93. package/dist/electron-build/agents/goal-flywheel/work-monitor.js +501 -0
  94. package/dist/electron-build/agents/goal-flywheel/work-monitor.js.map +1 -0
  95. package/dist/electron-build/agents/goal-flywheel-wiring.js +1962 -0
  96. package/dist/electron-build/agents/goal-flywheel-wiring.js.map +1 -0
  97. package/dist/electron-build/agents/goal-state-reducer.js +414 -0
  98. package/dist/electron-build/agents/goal-state-reducer.js.map +1 -0
  99. package/dist/electron-build/agents/goal-store.js +35 -1
  100. package/dist/electron-build/agents/goal-store.js.map +1 -1
  101. package/dist/electron-build/agents/model-policy.js +706 -0
  102. package/dist/electron-build/agents/model-policy.js.map +1 -0
  103. package/dist/electron-build/agents/network-pulse.js +307 -19
  104. package/dist/electron-build/agents/network-pulse.js.map +1 -1
  105. package/dist/electron-build/agents/pi-sdk-tools.js +84 -33
  106. package/dist/electron-build/agents/pi-sdk-tools.js.map +1 -1
  107. package/dist/electron-build/agents/pi-sdk-types.js.map +1 -1
  108. package/dist/electron-build/agents/pi-sdk.js +156 -41
  109. package/dist/electron-build/agents/pi-sdk.js.map +1 -1
  110. package/dist/electron-build/agents/run-store.js +75 -6
  111. package/dist/electron-build/agents/run-store.js.map +1 -1
  112. package/dist/electron-build/agents/skill-readiness.js +52 -9
  113. package/dist/electron-build/agents/skill-readiness.js.map +1 -1
  114. package/dist/electron-build/agents/task/task-runner.js +16 -3
  115. package/dist/electron-build/agents/task/task-runner.js.map +1 -1
  116. package/dist/electron-build/agents/workflow-pivot-loop.js +19 -12
  117. package/dist/electron-build/agents/workflow-pivot-loop.js.map +1 -1
  118. package/dist/electron-build/llm/config-store.js +146 -6
  119. package/dist/electron-build/llm/config-store.js.map +1 -1
  120. package/dist/electron-build/llm/connection-probe.js +764 -0
  121. package/dist/electron-build/llm/connection-probe.js.map +1 -0
  122. package/dist/electron-build/llm/custom-provider-store.js +272 -0
  123. package/dist/electron-build/llm/custom-provider-store.js.map +1 -0
  124. package/dist/electron-build/llm/data/provider-catalog-baked.js +23 -0
  125. package/dist/electron-build/llm/data/provider-catalog-baked.js.map +1 -0
  126. package/dist/electron-build/llm/model-catalog.js +778 -0
  127. package/dist/electron-build/llm/model-catalog.js.map +1 -0
  128. package/dist/electron-build/llm/model-discovery.js +1202 -0
  129. package/dist/electron-build/llm/model-discovery.js.map +1 -0
  130. package/dist/electron-build/llm/model-selection.js +1315 -0
  131. package/dist/electron-build/llm/model-selection.js.map +1 -0
  132. package/dist/electron-build/llm/pi-ai.js +70 -11
  133. package/dist/electron-build/llm/pi-ai.js.map +1 -1
  134. package/dist/electron-build/llm/provider-catalog.js +969 -0
  135. package/dist/electron-build/llm/provider-catalog.js.map +1 -0
  136. package/dist/electron-build/llm/provider-registry.js +950 -0
  137. package/dist/electron-build/llm/provider-registry.js.map +1 -0
  138. package/dist/electron-build/llm/tool-name.js +266 -0
  139. package/dist/electron-build/llm/tool-name.js.map +1 -0
  140. package/dist/electron-build/orbitdb/cid-database.js +83 -17
  141. package/dist/electron-build/orbitdb/cid-database.js.map +1 -1
  142. package/dist/electron-build/orbitdb/ipfs-node.js +31 -2
  143. package/dist/electron-build/orbitdb/ipfs-node.js.map +1 -1
  144. package/dist/electron-build/utils/dual-source-facts.js +236 -0
  145. package/dist/electron-build/utils/dual-source-facts.js.map +1 -0
  146. package/dist/electron-build/utils/dual-source.js +347 -0
  147. package/dist/electron-build/utils/dual-source.js.map +1 -0
  148. package/dist/electron-build/utils/update-manager.js +328 -104
  149. package/dist/electron-build/utils/update-manager.js.map +1 -1
  150. package/dist/electron-build/utils/update-state.js +9 -11
  151. package/dist/electron-build/utils/update-state.js.map +1 -1
  152. package/dist/electron-build/utils/version-identity.js +193 -0
  153. package/dist/electron-build/utils/version-identity.js.map +1 -0
  154. package/dist/electron-build/utils/version-info.js +57 -31
  155. package/dist/electron-build/utils/version-info.js.map +1 -1
  156. package/dist/index.js +385 -108
  157. package/dist/ios/bolloon-web.json +10 -0
  158. package/dist/ios/chain-explorer.js +617 -0
  159. package/dist/ios/explorer.html +163 -0
  160. package/dist/ios/index.html +96 -0
  161. package/dist/ios/mobile-agent.js +2 -2
  162. package/dist/ios/mobile-contacts.js +362 -0
  163. package/dist/ios/mobile-core.js +3102 -310
  164. package/dist/ios/mobile-privacy.js +185 -0
  165. package/dist/ios/mobile-tasks.js +339 -0
  166. package/dist/ios/mobile-update.js +1442 -0
  167. package/dist/ios/mobile.css +19 -0
  168. package/dist/ios/mobile.html +96 -0
  169. package/dist/ios/mobile.js +1013 -41
  170. package/dist/ios/routes-chain-index.js +108 -0
  171. package/dist/ios/routes-contacts.js +420 -0
  172. package/dist/ios/routes-llm-config.js +344 -52
  173. package/dist/ios/routes-mobile-tasks.js +353 -0
  174. package/dist/ios/routes-onchain-trade.js +99 -0
  175. package/dist/ios/routes-x402-info.js +1 -0
  176. package/dist/ios/server.js +921 -0
  177. package/dist/ios/sw.js +1 -1
  178. package/dist/ios/task-frame-server.js +211 -0
  179. package/dist/llm/config-store.js +146 -6
  180. package/dist/llm/connection-probe.js +744 -0
  181. package/dist/llm/custom-provider-store.js +224 -0
  182. package/dist/llm/data/provider-catalog-baked.js +19 -0
  183. package/dist/llm/model-catalog.js +717 -0
  184. package/dist/llm/model-discovery.js +1137 -0
  185. package/dist/llm/model-selection.js +1241 -0
  186. package/dist/llm/pi-ai.js +70 -11
  187. package/dist/llm/provider-catalog.js +898 -0
  188. package/dist/llm/provider-registry.js +917 -0
  189. package/dist/llm/tool-name.js +220 -0
  190. package/dist/orbitdb/cid-database.js +81 -16
  191. package/dist/orbitdb/ipfs-node.js +31 -2
  192. package/dist/setup/onboard.js +34 -8
  193. package/dist/utils/dual-source-facts.js +223 -0
  194. package/dist/utils/dual-source.js +297 -0
  195. package/dist/utils/update-cli.js +16 -21
  196. package/dist/utils/update-health.js +35 -5
  197. package/dist/utils/update-manager.js +325 -96
  198. package/dist/utils/update-state.js +13 -10
  199. package/dist/utils/version-identity.js +176 -0
  200. package/dist/utils/version-info.js +27 -22
  201. package/dist/web/bolloon-web.json +10 -0
  202. package/dist/web/mobile-contacts.js +44 -11
  203. package/dist/web/mobile-core.js +2901 -580
  204. package/dist/web/mobile-tasks.js +339 -0
  205. package/dist/web/mobile-update.js +1442 -0
  206. package/dist/web/mobile.css +19 -0
  207. package/dist/web/mobile.html +64 -0
  208. package/dist/web/mobile.js +838 -35
  209. package/dist/web/routes-llm-config.js +344 -52
  210. package/dist/web/routes-mobile-tasks.js +353 -0
  211. package/dist/web/server.js +163 -4
  212. package/dist/web/sw.js +1 -1
  213. package/package.json +3 -1
  214. package/scripts/build-web.ts +36 -0
@@ -0,0 +1,279 @@
1
+ "use strict";
2
+ /**
3
+ * wiring/contract.ts — 接缝 ③「这一步该派给谁, 回报算不算完成?」 (**M3 独占**)
4
+ *
5
+ * 归属: `seams.ts` 的 `SEAM_ROSTER` 里 `id: 'contract'`, `stage: 'M3'`。
6
+ * M3 只准改本文件 + `wiring/monitor.ts` + 声明的 `wiringPoints`
7
+ * (`goal-flywheel/work-contract.ts` · `subagent-manager.ts`)。
8
+ *
9
+ * ## 这条接缝钉住的冻结规则
10
+ *
11
+ * **规则 ⑤ 子 Agent 不能直接改 Goal**。
12
+ * 钉法: 派活与收回报**都只经过父侧** (`issueWork` / `acceptReport` / `dispatchWorker`), 且接缝自己做三件事:
13
+ * ① 拒绝 `caller='child_agent'` 的派活 (子不许派生无限子任务);
14
+ * ② 回报一律先过 `validateChildReport` + `acceptsAsComplete` —— **漂亮但没有逐条证据的
15
+ * 回报不算完成** (P5 强负例 7); 子 Agent 侧因此没有任何写 Goal 的路径;
16
+ * ③ **派前必须有工作合同** (M3 新增): `dispatchWorker` 是"签合同 + 交给派遣器"的**唯一**入口 ——
17
+ * 合同签不出来 (缺判据 / 缺目标 / deadline 早于 now / 金额没币种 / 没注入签发面) 就**不派**,
18
+ * 而且派遣端口**一次都不调**。今天 `SubAgentManager` 的旧形状是"签合同失败 → 记个 error 照样派出去",
19
+ * 那正是"派前必须有合同"被绕过的地方 (本文件 + `subagent-manager.ts` 一起堵)。
20
+ *
21
+ * ## 为什么接缝自己带 P2 的核验口径 (`realReportVerdict` / `createContractSeamFromLogic`)
22
+ *
23
+ * 接缝只依赖三样东西: 本目录 `seams.ts` 的接口 · `../types.js` 的冻结类型 · **自己那个阶段**的实现模块。
24
+ * P2 的实现模块就是 `../work-contract.js` (纯函数, 零 I/O)。把它接进来意味着:
25
+ * · 判定口径**全仓一份** —— 接缝不重新实现"算不算完成", 而是直接调真 P2 的那两个函数;
26
+ * · 接缝可以**独立于 M0 组合层**使用 (测试与其它宿主只需注入落盘/读盘这两个端口),
27
+ * 而不是"必须有 `goal-flywheel-wiring.ts` 才能用"。
28
+ * 落盘/读盘仍按参数注入 (接缝不做 I/O, 与 `../work-contract.js` 的边界一致)。
29
+ */
30
+ Object.defineProperty(exports, "__esModule", { value: true });
31
+ exports.CONTRACT_REFUSAL_CODES = exports.CONTRACT_SEAM_ID = void 0;
32
+ exports.realIssueContract = realIssueContract;
33
+ exports.realReportVerdict = realReportVerdict;
34
+ exports.createContractSeamFromLogic = createContractSeamFromLogic;
35
+ exports.childMatchesContract = childMatchesContract;
36
+ exports.createContractSeam = createContractSeam;
37
+ const work_contract_js_1 = require("../work-contract.js");
38
+ const seams_js_1 = require("./seams.js");
39
+ exports.CONTRACT_SEAM_ID = 'contract';
40
+ /**
41
+ * 派活的拒绝码 (接缝自己的闭集)。
42
+ *
43
+ * 刻意**不**复用 `FrozenRule`: 六条冻结规则说的是"责任人是谁", 而这里是"这一步做不成的原因"。
44
+ * 把 `contract_invalid` 硬说成某条冻结规则 = 编一个规则号, 那会让日志与门都开始说谎。
45
+ * 只有真的越界 (`caller_not_allowed`) 才附 `refusal` (它确实违反规则 ⑤)。
46
+ */
47
+ exports.CONTRACT_REFUSAL_CODES = [
48
+ 'caller_not_allowed',
49
+ 'no_criteria',
50
+ 'contract_invalid',
51
+ 'no_dispatch_port',
52
+ 'dispatch_failed',
53
+ ];
54
+ // ============================================================================
55
+ // §0. 与真 P2 模块的唯一耦合点 (判定口径全仓一份)
56
+ // ============================================================================
57
+ /** 用真 `issueWorkContract` 签发 —— 合同不合法时抛带 `issues` 的 `WorkContractError` (接缝抓它转成结构化拒绝) */
58
+ function realIssueContract(input) {
59
+ return (0, work_contract_js_1.issueWorkContract)({
60
+ goalId: input.goalId,
61
+ parentRunId: input.parentRunId,
62
+ childAgentId: input.childAgentId,
63
+ capability: input.capability,
64
+ objective: input.objective,
65
+ inputs: input.inputs ?? {},
66
+ allowedTools: input.allowedTools ?? [],
67
+ budget: input.budget,
68
+ deadline: input.deadline ?? null,
69
+ successCriteria: input.successCriteria,
70
+ now: input.now,
71
+ issuedBy: input.issuedBy ?? 'supervisor',
72
+ });
73
+ }
74
+ /** 用真 `validateChildReport` + `acceptsAsComplete` 核验 —— 接缝不另写一套"算不算完成" */
75
+ function realReportVerdict(contract, report) {
76
+ const validation = (0, work_contract_js_1.validateChildReport)(contract, report);
77
+ const verdict = (0, work_contract_js_1.acceptsAsComplete)(contract, report);
78
+ return {
79
+ outcome: verdict.accepted ? 'accepted' : 'incomplete',
80
+ accepted: verdict.accepted,
81
+ reason: verdict.reason,
82
+ missingFields: validation.missingFields,
83
+ missingEvidence: validation.missingEvidence,
84
+ violation: validation.violation,
85
+ };
86
+ }
87
+ /**
88
+ * 从**真 P2 逻辑** + 两个存储端口拼一条接缝 (M3 的自带适配器)。
89
+ *
90
+ * 为什么需要它: `createContractSeam` 要求宿主自己注入 `issue`/`accept` (M0 组合层注入的是
91
+ * `dispatchChildWork` / `handleChildReport`)。这条工厂让**其它宿主** (测试 / CLI / Web)
92
+ * 也能用同一条接缝, 而判定口径仍是 `../work-contract.js` 那一份 —— 不会出现"第二份判定"。
93
+ *
94
+ * 注意 `persistContract`: 合同**必须先落盘再派出** —— 子拿到合同的依据是盘上那份,
95
+ * 而不是父内存里那句口头约定 (否则子回报时核心验的是"合同存不存在"就永远对不上)。
96
+ */
97
+ function createContractSeamFromLogic(ports) {
98
+ return createContractSeam({
99
+ issue: async (input) => {
100
+ const contract = realIssueContract(input);
101
+ await ports.persistContract(contract);
102
+ return contract;
103
+ },
104
+ accept: async (input) => {
105
+ const contract = await ports.loadContract({ goalId: input.goalId, workId: input.workId });
106
+ if (!contract) {
107
+ return {
108
+ outcome: 'no_contract', accepted: false,
109
+ reason: `没有找到合同 ${input.workId} → 没有合同的回报不核验也不接受`,
110
+ missingFields: [], missingEvidence: [], violation: null,
111
+ };
112
+ }
113
+ return realReportVerdict(contract, input.report);
114
+ },
115
+ dispatch: ports.dispatch,
116
+ });
117
+ }
118
+ // ============================================================================
119
+ // §1. 合同与派遣的边界判定 (纯函数 —— 接线层 / SubAgentManager 直接复用, 不重写一套)
120
+ // ============================================================================
121
+ /**
122
+ * 换人必须重签合同 (M3)。
123
+ *
124
+ * 合同把 `childAgentId` 钉死了 (`validateChildReport` 要求 `report.childAgentId === contract.childAgentId`),
125
+ * 所以"把同一份合同指给另一个子 Agent"不是改个字段: 新子回报必然对不上合同 → 旧的合规判定直接失效
126
+ * (要么假红, 要么被人放宽判据 —— 两条都是两套事实)。
127
+ * 结论: **换人 = 换合同**。本函数是那条规则的唯一判据。
128
+ */
129
+ function childMatchesContract(contract, childAgentId) {
130
+ const next = String(childAgentId ?? '').trim();
131
+ if (!next)
132
+ return { ok: false, reason: '新执行者没有 id —— 合同无法绑定到具体执行者 (换人必须重签)' };
133
+ if (next === contract.childAgentId) {
134
+ return { ok: true, reason: `执行者未变 (${next}), 合同 ${contract.workId} 仍然有效` };
135
+ }
136
+ return {
137
+ ok: false,
138
+ reason: `合同 ${contract.workId} 绑定的执行者是 ${contract.childAgentId}, 不是 ${next} `
139
+ + '—— 换人必须重签合同 (否则新子 Agent 的回报与合同对不上, 合规判定失效)',
140
+ };
141
+ }
142
+ // ============================================================================
143
+ // §2. 接缝本体
144
+ // ============================================================================
145
+ function errText(e) {
146
+ return String(e?.message || e).slice(0, 400);
147
+ }
148
+ /** 抓签发失败的结构化原因 (WorkContractError 带 issues; 其它错误只带 message) */
149
+ function issueFailure(input, e) {
150
+ const issues = e?.issues;
151
+ if (Array.isArray(issues) && issues.length > 0) {
152
+ return {
153
+ code: 'contract_invalid',
154
+ reason: `合同不合法, 拒签也拒派 (${input.capability} → ${input.childAgentId}): ${issues.join('; ')}`,
155
+ };
156
+ }
157
+ return { code: 'contract_invalid', reason: `合同签发失败, 拒派: ${errText(e)}` };
158
+ }
159
+ function createContractSeam(deps) {
160
+ return {
161
+ id: exports.CONTRACT_SEAM_ID,
162
+ stage: 'M3',
163
+ async issueWork(input) {
164
+ if (input.caller === 'child_agent') {
165
+ return (0, seams_js_1.refuse)('child_cannot_mutate_goal', `拒绝: 子 Agent (${input.childAgentId}) 想给「${input.capability}」派活 —— `
166
+ + '子 Agent 不许派生无限子任务, 也不许改父 Goal 的派遣面 (CHILD_PROHIBITIONS.spawn_unbounded_subtasks)');
167
+ }
168
+ if (!input.successCriteria?.length) {
169
+ return (0, seams_js_1.refuse)('child_cannot_mutate_goal', '拒绝: 合同没有成功判据 —— 子 Agent 会自己定义"算完成"');
170
+ }
171
+ return deps.issue(input);
172
+ },
173
+ async acceptReport(input) {
174
+ if (!input.workId) {
175
+ return (0, seams_js_1.refuse)('child_cannot_mutate_goal', '拒绝: 没有 workId 的回报无法对合同核验 → 不接受为完成');
176
+ }
177
+ const verdict = await deps.accept({ goalId: input.goalId, workId: input.workId, report: input.report, now: input.now });
178
+ // 无证据的漂亮回报: 显式拒绝, 并说清缺什么 (不许静默降级成"完成")
179
+ if (verdict.outcome === 'incomplete' && !verdict.reason) {
180
+ return { ...verdict, reason: '报告不完整 → 不接受为完成 (缺字段/缺证据)' };
181
+ }
182
+ return verdict;
183
+ },
184
+ /**
185
+ * 派前必须有工作合同 (M3 唯一派遣入口)。
186
+ *
187
+ * 顺序固定 (便于复现与断言):
188
+ * ① 权限: 子 Agent 不许派活 → 拒 (附冻结规则 ⑤, 端口零调用);
189
+ * ② 判据: 没有成功判据 → 拒 (没有"完成"的定义, 派出去只能扯皮);
190
+ * ③ 派遣面: 没注入 `dispatch` → 拒 (**不假装派过**);
191
+ * ④ 签合同: 真签 (`deps.issue`)。签不出 → 拒, 派遣端口**零调用** (这是"派前必须有合同"的硬点);
192
+ * ⑤ 真派: 调 `dispatch`。端口抛错 / 回 `dispatched:false` → 如实拒绝 + 把人叫上 (不静默降级成"派出去了")。
193
+ *
194
+ * 合同**先落盘再派出**由 `deps.issue` 的宿主保证 (M0: `dispatchChildWork` 先写 goal-works/ 再写 pendingReports)。
195
+ */
196
+ async dispatchWorker(input) {
197
+ if (input.caller === 'child_agent') {
198
+ return {
199
+ ok: false,
200
+ code: 'caller_not_allowed',
201
+ reason: `拒绝派遣: 调用者是子 Agent (${input.childAgentId} → 「${input.capability}」) —— `
202
+ + '子 Agent 不许派生无限子任务 (CHILD_PROHIBITIONS.spawn_unbounded_subtasks)',
203
+ refusal: (0, seams_js_1.refuse)('child_cannot_mutate_goal', '子 Agent 不许派生无限子任务 / 不许改父 Goal 的派遣面'),
204
+ detail: 'no_dispatch: 未签发合同, 派遣端口零调用',
205
+ contract: null,
206
+ };
207
+ }
208
+ if (!input.successCriteria?.length) {
209
+ return {
210
+ ok: false,
211
+ code: 'no_criteria',
212
+ reason: `拒绝派遣「${input.capability}」: 合同没有成功判据 —— 没有"完成"的定义就不许派 `
213
+ + '(子 Agent 会自己定义"算完成")',
214
+ refusal: null,
215
+ detail: 'no_dispatch: 未签发合同, 派遣端口零调用',
216
+ contract: null,
217
+ };
218
+ }
219
+ const dispatch = deps.dispatch;
220
+ if (typeof dispatch !== 'function') {
221
+ return {
222
+ ok: false,
223
+ code: 'no_dispatch_port',
224
+ reason: `拒绝派遣「${input.capability}」: 宿主没有注入派遣面 (端口缺失) —— 拿不到"真派出去了"的事实, `
225
+ + '不许把签发当成已派遣',
226
+ refusal: null,
227
+ detail: 'no_dispatch: 未签发合同, 派遣端口零调用',
228
+ contract: null,
229
+ };
230
+ }
231
+ let contract;
232
+ try {
233
+ contract = await deps.issue(input);
234
+ }
235
+ catch (e) {
236
+ const fail = issueFailure(input, e);
237
+ return {
238
+ ok: false,
239
+ code: fail.code,
240
+ reason: fail.reason,
241
+ refusal: null,
242
+ detail: 'no_dispatch: 合同没签成, 派遣端口零调用',
243
+ contract: null,
244
+ };
245
+ }
246
+ try {
247
+ const receipt = await dispatch({ contract, caller: input.caller, now: input.now });
248
+ if (receipt?.dispatched !== true) {
249
+ return {
250
+ ok: false,
251
+ code: 'dispatch_failed',
252
+ reason: `合同 ${contract.workId} 已签发, 但派遣端口回"没派出去": ${receipt?.detail ?? '(端口没给原因)'}`,
253
+ refusal: null,
254
+ detail: `dispatched=false (workId=${contract.workId})`,
255
+ contract,
256
+ };
257
+ }
258
+ return {
259
+ ok: true,
260
+ contract,
261
+ dispatched: true,
262
+ detail: receipt.detail,
263
+ receipt: receipt.receipt ?? null,
264
+ };
265
+ }
266
+ catch (e) {
267
+ return {
268
+ ok: false,
269
+ code: 'dispatch_failed',
270
+ reason: `合同 ${contract.workId} 已签发, 但派遣端口抛错: ${errText(e)}`,
271
+ refusal: null,
272
+ detail: `dispatch 抛错: ${errText(e)}`,
273
+ contract,
274
+ };
275
+ }
276
+ },
277
+ };
278
+ }
279
+ //# sourceMappingURL=contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../../../../src/agents/goal-flywheel/wiring/contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ /**
3
+ * goal-flywheel/wiring/index.ts — 接线接缝的对外入口 (M0)
4
+ *
5
+ * 只做转发: 接缝名册在 `seams.ts` (M0 冻结), 五个接缝实现各归各的阶段文件。
6
+ * 这里**不定义任何函数** —— 与 `../index.ts` 同一纪律 (转发行, 不夹带实现)。
7
+ *
8
+ * M1–M4 各自只 import 自己那个接缝文件; 想拿到接缝实例请走 M0 接线层
9
+ * (`src/agents/goal-flywheel-wiring.ts` 的 `flywheelSeams()`), 它负责注入真依赖。
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.closureTerminalKindFor = exports.auditTerminalCoverage = exports.auditClosureOutcome = exports.CLOSURE_TERMINAL_KINDS = exports.CLOSURE_SEAM_ID = exports.CLOSURE_IDEMPOTENCY_NOTE = exports.scanContinuationSeamRhythm = exports.safetyCapsFrom = exports.rhythmicDecision = exports.planRhythm = exports.judgeLegacyStop = exports.judgeInjectedOutcome = exports.createContinuationSeam = exports.bindingCaps = exports.SEAM_ROUNDS_AS_RHYTHM = exports.SEAM_RHYTHM_REQUIRED = exports.SEAM_CAP_DEFAULTS = exports.SAFETY_CAP_TEXT = exports.SAFETY_CAPS = exports.RHYTHM_BASIS_TEXT = exports.CONTINUATION_SEAM_ID = exports.stageOf = exports.scanTerminalPaths = exports.scanSkillChannel = exports.scanOnlySupervisorDecides = exports.scanOnlyGoalReducerWritesState = exports.scanOnlyCloseRunCloses = exports.scanFunnelAliases = exports.scanChildCannotMutateGoal = exports.seamRosterViolations = exports.seamOf = exports.seamModuleOf = exports.refuse = exports.isRefusal = exports.filesOfStage = exports.canRunStagesInParallel = exports.WIRING_STAGES = exports.WIRING_CALLERS = exports.TERMINAL_PATHS = exports.SKILL_CHANNEL_EVIDENCE = exports.SEAM_ROSTER = exports.SEAM_MODULES = exports.SEAM_IDS = exports.SCANNED_SOURCES = exports.FUNNEL_ENTRY = exports.FUNNEL_CALL_RE = exports.FUNNEL_ALIASES = exports.FROZEN_RULE_TEXT = exports.FROZEN_RULES = exports.DEFAULT_ALLOW = void 0;
13
+ exports.USER_VISIBLE_STATES = exports.planChangeInjection = exports.toUserVisibleState = exports.normalizeContinuationRecord = exports.createChangeSeam = exports.changeVisibleState = exports.USER_ONLY_CHANGE_KINDS = exports.CHANGE_SEAM_ID = exports.userFacingState = exports.scanInternalLeak = exports.isUserVisibleState = exports.describeVisibleState = exports.createVisibleStateProbe = exports.createMonitorSeam = exports.USER_FACING_STATES = exports.MONITOR_SWEEP_MAX_LIMIT = exports.MONITOR_SWEEP_DEFAULT_LIMIT = exports.MONITOR_SEAM_ID = exports.INTERNAL_VISIBLE_WORDS = exports.realReportVerdict = exports.realIssueContract = exports.createContractSeamFromLogic = exports.createContractSeam = exports.childMatchesContract = exports.CONTRACT_REFUSAL_CODES = exports.CONTRACT_SEAM_ID = exports.terminalRegistryCoverage = exports.terminalKindAccepts = exports.probeClosureArtifacts = exports.createClosureSeam = void 0;
14
+ var seams_js_1 = require("./seams.js");
15
+ Object.defineProperty(exports, "DEFAULT_ALLOW", { enumerable: true, get: function () { return seams_js_1.DEFAULT_ALLOW; } });
16
+ Object.defineProperty(exports, "FROZEN_RULES", { enumerable: true, get: function () { return seams_js_1.FROZEN_RULES; } });
17
+ Object.defineProperty(exports, "FROZEN_RULE_TEXT", { enumerable: true, get: function () { return seams_js_1.FROZEN_RULE_TEXT; } });
18
+ Object.defineProperty(exports, "FUNNEL_ALIASES", { enumerable: true, get: function () { return seams_js_1.FUNNEL_ALIASES; } });
19
+ Object.defineProperty(exports, "FUNNEL_CALL_RE", { enumerable: true, get: function () { return seams_js_1.FUNNEL_CALL_RE; } });
20
+ Object.defineProperty(exports, "FUNNEL_ENTRY", { enumerable: true, get: function () { return seams_js_1.FUNNEL_ENTRY; } });
21
+ Object.defineProperty(exports, "SCANNED_SOURCES", { enumerable: true, get: function () { return seams_js_1.SCANNED_SOURCES; } });
22
+ Object.defineProperty(exports, "SEAM_IDS", { enumerable: true, get: function () { return seams_js_1.SEAM_IDS; } });
23
+ Object.defineProperty(exports, "SEAM_MODULES", { enumerable: true, get: function () { return seams_js_1.SEAM_MODULES; } });
24
+ Object.defineProperty(exports, "SEAM_ROSTER", { enumerable: true, get: function () { return seams_js_1.SEAM_ROSTER; } });
25
+ Object.defineProperty(exports, "SKILL_CHANNEL_EVIDENCE", { enumerable: true, get: function () { return seams_js_1.SKILL_CHANNEL_EVIDENCE; } });
26
+ Object.defineProperty(exports, "TERMINAL_PATHS", { enumerable: true, get: function () { return seams_js_1.TERMINAL_PATHS; } });
27
+ Object.defineProperty(exports, "WIRING_CALLERS", { enumerable: true, get: function () { return seams_js_1.WIRING_CALLERS; } });
28
+ Object.defineProperty(exports, "WIRING_STAGES", { enumerable: true, get: function () { return seams_js_1.WIRING_STAGES; } });
29
+ Object.defineProperty(exports, "canRunStagesInParallel", { enumerable: true, get: function () { return seams_js_1.canRunStagesInParallel; } });
30
+ Object.defineProperty(exports, "filesOfStage", { enumerable: true, get: function () { return seams_js_1.filesOfStage; } });
31
+ Object.defineProperty(exports, "isRefusal", { enumerable: true, get: function () { return seams_js_1.isRefusal; } });
32
+ Object.defineProperty(exports, "refuse", { enumerable: true, get: function () { return seams_js_1.refuse; } });
33
+ Object.defineProperty(exports, "seamModuleOf", { enumerable: true, get: function () { return seams_js_1.seamModuleOf; } });
34
+ Object.defineProperty(exports, "seamOf", { enumerable: true, get: function () { return seams_js_1.seamOf; } });
35
+ Object.defineProperty(exports, "seamRosterViolations", { enumerable: true, get: function () { return seams_js_1.seamRosterViolations; } });
36
+ Object.defineProperty(exports, "scanChildCannotMutateGoal", { enumerable: true, get: function () { return seams_js_1.scanChildCannotMutateGoal; } });
37
+ Object.defineProperty(exports, "scanFunnelAliases", { enumerable: true, get: function () { return seams_js_1.scanFunnelAliases; } });
38
+ Object.defineProperty(exports, "scanOnlyCloseRunCloses", { enumerable: true, get: function () { return seams_js_1.scanOnlyCloseRunCloses; } });
39
+ Object.defineProperty(exports, "scanOnlyGoalReducerWritesState", { enumerable: true, get: function () { return seams_js_1.scanOnlyGoalReducerWritesState; } });
40
+ Object.defineProperty(exports, "scanOnlySupervisorDecides", { enumerable: true, get: function () { return seams_js_1.scanOnlySupervisorDecides; } });
41
+ Object.defineProperty(exports, "scanSkillChannel", { enumerable: true, get: function () { return seams_js_1.scanSkillChannel; } });
42
+ Object.defineProperty(exports, "scanTerminalPaths", { enumerable: true, get: function () { return seams_js_1.scanTerminalPaths; } });
43
+ Object.defineProperty(exports, "stageOf", { enumerable: true, get: function () { return seams_js_1.stageOf; } });
44
+ var continuation_js_1 = require("./continuation.js");
45
+ Object.defineProperty(exports, "CONTINUATION_SEAM_ID", { enumerable: true, get: function () { return continuation_js_1.CONTINUATION_SEAM_ID; } });
46
+ Object.defineProperty(exports, "RHYTHM_BASIS_TEXT", { enumerable: true, get: function () { return continuation_js_1.RHYTHM_BASIS_TEXT; } });
47
+ Object.defineProperty(exports, "SAFETY_CAPS", { enumerable: true, get: function () { return continuation_js_1.SAFETY_CAPS; } });
48
+ Object.defineProperty(exports, "SAFETY_CAP_TEXT", { enumerable: true, get: function () { return continuation_js_1.SAFETY_CAP_TEXT; } });
49
+ Object.defineProperty(exports, "SEAM_CAP_DEFAULTS", { enumerable: true, get: function () { return continuation_js_1.SEAM_CAP_DEFAULTS; } });
50
+ Object.defineProperty(exports, "SEAM_RHYTHM_REQUIRED", { enumerable: true, get: function () { return continuation_js_1.SEAM_RHYTHM_REQUIRED; } });
51
+ Object.defineProperty(exports, "SEAM_ROUNDS_AS_RHYTHM", { enumerable: true, get: function () { return continuation_js_1.SEAM_ROUNDS_AS_RHYTHM; } });
52
+ Object.defineProperty(exports, "bindingCaps", { enumerable: true, get: function () { return continuation_js_1.bindingCaps; } });
53
+ Object.defineProperty(exports, "createContinuationSeam", { enumerable: true, get: function () { return continuation_js_1.createContinuationSeam; } });
54
+ Object.defineProperty(exports, "judgeInjectedOutcome", { enumerable: true, get: function () { return continuation_js_1.judgeInjectedOutcome; } });
55
+ Object.defineProperty(exports, "judgeLegacyStop", { enumerable: true, get: function () { return continuation_js_1.judgeLegacyStop; } });
56
+ Object.defineProperty(exports, "planRhythm", { enumerable: true, get: function () { return continuation_js_1.planRhythm; } });
57
+ Object.defineProperty(exports, "rhythmicDecision", { enumerable: true, get: function () { return continuation_js_1.rhythmicDecision; } });
58
+ Object.defineProperty(exports, "safetyCapsFrom", { enumerable: true, get: function () { return continuation_js_1.safetyCapsFrom; } });
59
+ Object.defineProperty(exports, "scanContinuationSeamRhythm", { enumerable: true, get: function () { return continuation_js_1.scanContinuationSeamRhythm; } });
60
+ var closure_js_1 = require("./closure.js");
61
+ Object.defineProperty(exports, "CLOSURE_IDEMPOTENCY_NOTE", { enumerable: true, get: function () { return closure_js_1.CLOSURE_IDEMPOTENCY_NOTE; } });
62
+ Object.defineProperty(exports, "CLOSURE_SEAM_ID", { enumerable: true, get: function () { return closure_js_1.CLOSURE_SEAM_ID; } });
63
+ Object.defineProperty(exports, "CLOSURE_TERMINAL_KINDS", { enumerable: true, get: function () { return closure_js_1.CLOSURE_TERMINAL_KINDS; } });
64
+ Object.defineProperty(exports, "auditClosureOutcome", { enumerable: true, get: function () { return closure_js_1.auditClosureOutcome; } });
65
+ Object.defineProperty(exports, "auditTerminalCoverage", { enumerable: true, get: function () { return closure_js_1.auditTerminalCoverage; } });
66
+ Object.defineProperty(exports, "closureTerminalKindFor", { enumerable: true, get: function () { return closure_js_1.closureTerminalKindFor; } });
67
+ Object.defineProperty(exports, "createClosureSeam", { enumerable: true, get: function () { return closure_js_1.createClosureSeam; } });
68
+ Object.defineProperty(exports, "probeClosureArtifacts", { enumerable: true, get: function () { return closure_js_1.probeClosureArtifacts; } });
69
+ Object.defineProperty(exports, "terminalKindAccepts", { enumerable: true, get: function () { return closure_js_1.terminalKindAccepts; } });
70
+ Object.defineProperty(exports, "terminalRegistryCoverage", { enumerable: true, get: function () { return closure_js_1.terminalRegistryCoverage; } });
71
+ var contract_js_1 = require("./contract.js");
72
+ Object.defineProperty(exports, "CONTRACT_SEAM_ID", { enumerable: true, get: function () { return contract_js_1.CONTRACT_SEAM_ID; } });
73
+ Object.defineProperty(exports, "CONTRACT_REFUSAL_CODES", { enumerable: true, get: function () { return contract_js_1.CONTRACT_REFUSAL_CODES; } });
74
+ Object.defineProperty(exports, "childMatchesContract", { enumerable: true, get: function () { return contract_js_1.childMatchesContract; } });
75
+ Object.defineProperty(exports, "createContractSeam", { enumerable: true, get: function () { return contract_js_1.createContractSeam; } });
76
+ Object.defineProperty(exports, "createContractSeamFromLogic", { enumerable: true, get: function () { return contract_js_1.createContractSeamFromLogic; } });
77
+ Object.defineProperty(exports, "realIssueContract", { enumerable: true, get: function () { return contract_js_1.realIssueContract; } });
78
+ Object.defineProperty(exports, "realReportVerdict", { enumerable: true, get: function () { return contract_js_1.realReportVerdict; } });
79
+ var monitor_js_1 = require("./monitor.js");
80
+ Object.defineProperty(exports, "INTERNAL_VISIBLE_WORDS", { enumerable: true, get: function () { return monitor_js_1.INTERNAL_VISIBLE_WORDS; } });
81
+ Object.defineProperty(exports, "MONITOR_SEAM_ID", { enumerable: true, get: function () { return monitor_js_1.MONITOR_SEAM_ID; } });
82
+ Object.defineProperty(exports, "MONITOR_SWEEP_DEFAULT_LIMIT", { enumerable: true, get: function () { return monitor_js_1.MONITOR_SWEEP_DEFAULT_LIMIT; } });
83
+ Object.defineProperty(exports, "MONITOR_SWEEP_MAX_LIMIT", { enumerable: true, get: function () { return monitor_js_1.MONITOR_SWEEP_MAX_LIMIT; } });
84
+ Object.defineProperty(exports, "USER_FACING_STATES", { enumerable: true, get: function () { return monitor_js_1.USER_FACING_STATES; } });
85
+ Object.defineProperty(exports, "createMonitorSeam", { enumerable: true, get: function () { return monitor_js_1.createMonitorSeam; } });
86
+ Object.defineProperty(exports, "createVisibleStateProbe", { enumerable: true, get: function () { return monitor_js_1.createVisibleStateProbe; } });
87
+ Object.defineProperty(exports, "describeVisibleState", { enumerable: true, get: function () { return monitor_js_1.describeVisibleState; } });
88
+ Object.defineProperty(exports, "isUserVisibleState", { enumerable: true, get: function () { return monitor_js_1.isUserVisibleState; } });
89
+ Object.defineProperty(exports, "scanInternalLeak", { enumerable: true, get: function () { return monitor_js_1.scanInternalLeak; } });
90
+ Object.defineProperty(exports, "userFacingState", { enumerable: true, get: function () { return monitor_js_1.userFacingState; } });
91
+ var change_js_1 = require("./change.js");
92
+ Object.defineProperty(exports, "CHANGE_SEAM_ID", { enumerable: true, get: function () { return change_js_1.CHANGE_SEAM_ID; } });
93
+ Object.defineProperty(exports, "USER_ONLY_CHANGE_KINDS", { enumerable: true, get: function () { return change_js_1.USER_ONLY_CHANGE_KINDS; } });
94
+ Object.defineProperty(exports, "changeVisibleState", { enumerable: true, get: function () { return change_js_1.changeVisibleState; } });
95
+ Object.defineProperty(exports, "createChangeSeam", { enumerable: true, get: function () { return change_js_1.createChangeSeam; } });
96
+ // ---------------------------------------------------------------------------
97
+ // 跨阶段的**纯函数面** (2026-09-25 串行收口): 接缝与宿主都用的判定/归一化在这里一并转发 ——
98
+ // 宿主与界面要的是"同一份口径", 不该各自深入阶段目录再 import 一遍 (M3 报的"index 补导"的完整形态)。
99
+ //
100
+ // 转发的是**同一个函数对象**, 不是同名的壳: 见 `goal-flywheel-m0-serial-hooks.test.ts` ⑥ 的恒等断言。
101
+ // 尤其 `toUserVisibleState` / `normalizeContinuationRecord` —— 工作监控与 web 路由直传**部分**
102
+ // continuation 时必须读同一份归一化 (2026-09-25 跨阶段真问题 ①)。
103
+ // ---------------------------------------------------------------------------
104
+ var work_monitor_js_1 = require("../work-monitor.js");
105
+ Object.defineProperty(exports, "normalizeContinuationRecord", { enumerable: true, get: function () { return work_monitor_js_1.normalizeContinuationRecord; } });
106
+ Object.defineProperty(exports, "toUserVisibleState", { enumerable: true, get: function () { return work_monitor_js_1.toUserVisibleState; } });
107
+ var goal_change_js_1 = require("../goal-change.js");
108
+ Object.defineProperty(exports, "planChangeInjection", { enumerable: true, get: function () { return goal_change_js_1.planChangeInjection; } });
109
+ var types_js_1 = require("../types.js");
110
+ Object.defineProperty(exports, "USER_VISIBLE_STATES", { enumerable: true, get: function () { return types_js_1.USER_VISIBLE_STATES; } });
111
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/agents/goal-flywheel/wiring/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;AAEH,uCAwCoB;AAvClB,yGAAA,aAAa,OAAA;AACb,wGAAA,YAAY,OAAA;AACZ,4GAAA,gBAAgB,OAAA;AAChB,0GAAA,cAAc,OAAA;AACd,0GAAA,cAAc,OAAA;AACd,wGAAA,YAAY,OAAA;AACZ,2GAAA,eAAe,OAAA;AACf,oGAAA,QAAQ,OAAA;AACR,wGAAA,YAAY,OAAA;AACZ,uGAAA,WAAW,OAAA;AACX,kHAAA,sBAAsB,OAAA;AACtB,0GAAA,cAAc,OAAA;AACd,0GAAA,cAAc,OAAA;AACd,yGAAA,aAAa,OAAA;AACb,kHAAA,sBAAsB,OAAA;AACtB,wGAAA,YAAY,OAAA;AACZ,qGAAA,SAAS,OAAA;AACT,kGAAA,MAAM,OAAA;AACN,wGAAA,YAAY,OAAA;AACZ,kGAAA,MAAM,OAAA;AACN,gHAAA,oBAAoB,OAAA;AACpB,qHAAA,yBAAyB,OAAA;AACzB,6GAAA,iBAAiB,OAAA;AACjB,kHAAA,sBAAsB,OAAA;AACtB,0HAAA,8BAA8B,OAAA;AAC9B,qHAAA,yBAAyB,OAAA;AACzB,4GAAA,gBAAgB,OAAA;AAChB,6GAAA,iBAAiB,OAAA;AACjB,mGAAA,OAAO,OAAA;AAaT,qDA2B2B;AA1BzB,uHAAA,oBAAoB,OAAA;AACpB,oHAAA,iBAAiB,OAAA;AACjB,8GAAA,WAAW,OAAA;AACX,kHAAA,eAAe,OAAA;AACf,oHAAA,iBAAiB,OAAA;AACjB,uHAAA,oBAAoB,OAAA;AACpB,wHAAA,qBAAqB,OAAA;AACrB,8GAAA,WAAW,OAAA;AACX,yHAAA,sBAAsB,OAAA;AACtB,uHAAA,oBAAoB,OAAA;AACpB,kHAAA,eAAe,OAAA;AACf,6GAAA,UAAU,OAAA;AACV,mHAAA,gBAAgB,OAAA;AAChB,iHAAA,cAAc,OAAA;AACd,6HAAA,0BAA0B,OAAA;AAc5B,2CAoBsB;AAnBpB,sHAAA,wBAAwB,OAAA;AACxB,6GAAA,eAAe,OAAA;AACf,oHAAA,sBAAsB,OAAA;AACtB,iHAAA,mBAAmB,OAAA;AACnB,mHAAA,qBAAqB,OAAA;AACrB,oHAAA,sBAAsB,OAAA;AACtB,+GAAA,iBAAiB,OAAA;AACjB,mHAAA,qBAAqB,OAAA;AACrB,iHAAA,mBAAmB,OAAA;AACnB,sHAAA,wBAAwB,OAAA;AAY1B,6CAgBuB;AAfrB,+GAAA,gBAAgB,OAAA;AAChB,qHAAA,sBAAsB,OAAA;AACtB,mHAAA,oBAAoB,OAAA;AACpB,iHAAA,kBAAkB,OAAA;AAClB,0HAAA,2BAA2B,OAAA;AAC3B,gHAAA,iBAAiB,OAAA;AACjB,gHAAA,iBAAiB,OAAA;AAWnB,2CAmBsB;AAlBpB,oHAAA,sBAAsB,OAAA;AACtB,6GAAA,eAAe,OAAA;AACf,yHAAA,2BAA2B,OAAA;AAC3B,qHAAA,uBAAuB,OAAA;AACvB,gHAAA,kBAAkB,OAAA;AAClB,+GAAA,iBAAiB,OAAA;AACjB,qHAAA,uBAAuB,OAAA;AACvB,kHAAA,oBAAoB,OAAA;AACpB,gHAAA,kBAAkB,OAAA;AAClB,8GAAA,gBAAgB,OAAA;AAChB,6GAAA,eAAe,OAAA;AAUjB,yCAeqB;AAdnB,2GAAA,cAAc,OAAA;AACd,mHAAA,sBAAsB,OAAA;AACtB,+GAAA,kBAAkB,OAAA;AAClB,6GAAA,gBAAgB,OAAA;AAalB,8EAA8E;AAC9E,2DAA2D;AAC3D,iEAAiE;AACjE,EAAE;AACF,8EAA8E;AAC9E,kFAAkF;AAClF,iDAAiD;AACjD,8EAA8E;AAC9E,sDAG4B;AAF1B,8HAAA,2BAA2B,OAAA;AAC3B,qHAAA,kBAAkB,OAAA;AAGpB,oDAAwD;AAA/C,qHAAA,mBAAmB,OAAA;AAE5B,wCAAkD;AAAzC,+GAAA,mBAAmB,OAAA"}