@wowok/agent-mcp 3.4.3 → 3.4.4

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 (853) hide show
  1. package/dist/.build-stamp.json +3 -3
  2. package/dist/build-stamp.js +1 -0
  3. package/dist/chain-semantics/composition-truth.js +1 -1
  4. package/dist/chain-semantics/eval-order.js +1 -1
  5. package/dist/chain-semantics/freeze-map.js +1 -1
  6. package/dist/chain-semantics/fund-flow.js +1 -1
  7. package/dist/chain-semantics/object-graph.js +1 -1
  8. package/dist/composition/audit.js +1 -1
  9. package/dist/composition/compile.js +1 -1
  10. package/dist/composition/emit-phases.js +1 -1
  11. package/dist/composition/generate.js +1 -1
  12. package/dist/composition/guard-fill.js +1 -1
  13. package/dist/composition/input-normalize.js +1 -1
  14. package/dist/composition/materialize.js +1 -1
  15. package/dist/composition/mode-gates.js +1 -1
  16. package/dist/composition/plan.js +1 -1
  17. package/dist/composition/product-card.js +1 -1
  18. package/dist/composition/shape-expand.js +1 -0
  19. package/dist/config/judgment.js +1 -1
  20. package/dist/config/template-params.js +1 -1
  21. package/dist/data/sync/cdc.js +1 -1
  22. package/dist/data/sync/graphql-source.js +1 -1
  23. package/dist/evaluation/engine.js +1 -1
  24. package/dist/experience/realtime-feedback.js +1 -1
  25. package/dist/graph/onchain/expand.js +1 -1
  26. package/dist/graph/onchain/exposure.js +1 -1
  27. package/dist/graph/onchain/sdk-batch.js +1 -1
  28. package/dist/harness/entry-ignite-selfheal.js +1 -0
  29. package/dist/harness/forward-leg-preflight.js +1 -0
  30. package/dist/harness/recover.js +1 -1
  31. package/dist/keeper/detectors.js +1 -1
  32. package/dist/knowledge/allocator-rail-verifier.js +1 -1
  33. package/dist/knowledge/arb-operation-face.js +1 -0
  34. package/dist/knowledge/arbitration-rail-verifier.js +1 -1
  35. package/dist/knowledge/arbitration-templates.js +1 -1
  36. package/dist/knowledge/audit-rules.d.ts +15 -0
  37. package/dist/knowledge/audit-rules.js +1 -1
  38. package/dist/knowledge/baselines/rules/alloc_audit.json.good +310 -0
  39. package/dist/knowledge/baselines/rules/allocation.json.good +568 -0
  40. package/dist/knowledge/baselines/rules/arb.json.good +174 -0
  41. package/dist/knowledge/baselines/rules/arbitration.json.good +393 -0
  42. package/dist/knowledge/baselines/rules/bridge.json.good +197 -0
  43. package/dist/knowledge/baselines/rules/contact.json.good +152 -0
  44. package/dist/knowledge/baselines/rules/demand.json.good +158 -0
  45. package/dist/knowledge/baselines/rules/graph.json.good +534 -0
  46. package/dist/knowledge/baselines/rules/guard.json +18 -5
  47. package/dist/knowledge/baselines/rules/guard.json.good +1192 -0
  48. package/dist/knowledge/baselines/rules/machine.json.good +734 -0
  49. package/dist/knowledge/baselines/rules/oracle.json +1 -1
  50. package/dist/knowledge/baselines/rules/oracle.json.good +120 -0
  51. package/dist/knowledge/baselines/rules/order.json.good +549 -0
  52. package/dist/knowledge/baselines/rules/payment.json.good +205 -0
  53. package/dist/knowledge/baselines/rules/permission.json.good +330 -0
  54. package/dist/knowledge/baselines/rules/personal.json.good +139 -0
  55. package/dist/knowledge/baselines/rules/plan.json +343 -1
  56. package/dist/knowledge/baselines/rules/plan.json.good +1187 -0
  57. package/dist/knowledge/baselines/rules/progress.json.good +364 -0
  58. package/dist/knowledge/baselines/rules/proof.json.good +158 -0
  59. package/dist/knowledge/baselines/rules/registrar.json.good +159 -0
  60. package/dist/knowledge/baselines/rules/repository.json.good +244 -0
  61. package/dist/knowledge/baselines/rules/resource.json.good +117 -0
  62. package/dist/knowledge/baselines/rules/reward.json +10 -10
  63. package/dist/knowledge/baselines/rules/reward.json.good +586 -0
  64. package/dist/knowledge/baselines/rules/service.json.good +595 -0
  65. package/dist/knowledge/baselines/rules/treasury.json.good +440 -0
  66. package/dist/knowledge/baselines/rules/util.json.good +101 -0
  67. package/dist/knowledge/builtin-templates.d.ts +13 -1
  68. package/dist/knowledge/builtin-templates.js +1 -1
  69. package/dist/knowledge/chain-query-registry.js +1 -1
  70. package/dist/knowledge/discount-threshold.js +1 -1
  71. package/dist/knowledge/fee-param-bindings.js +1 -1
  72. package/dist/knowledge/fund-layer.d.ts +2 -0
  73. package/dist/knowledge/fund-layer.js +1 -1
  74. package/dist/knowledge/getting-started.js +1 -1
  75. package/dist/knowledge/guard-binding-table.js +1 -1
  76. package/dist/knowledge/guard-binding-verifier.js +1 -1
  77. package/dist/knowledge/guard-create-preflight.js +1 -0
  78. package/dist/knowledge/guard-field-cognition.js +1 -1
  79. package/dist/knowledge/guard-host-context.js +1 -1
  80. package/dist/knowledge/guard-leg-eval.js +1 -0
  81. package/dist/knowledge/guard-node-gates.js +1 -1
  82. package/dist/knowledge/guard-puzzle.js +1 -1
  83. package/dist/knowledge/guard-quality.js +1 -0
  84. package/dist/knowledge/guard-render.js +1 -1
  85. package/dist/knowledge/guard-risk.js +1 -1
  86. package/dist/knowledge/guard-semantic-walk.js +1 -0
  87. package/dist/knowledge/guard-templates.d.ts +1 -0
  88. package/dist/knowledge/guard-templates.js +1 -1
  89. package/dist/knowledge/guard-translation.js +1 -1
  90. package/dist/knowledge/index.js +1 -1
  91. package/dist/knowledge/industry-registry.js +1 -1
  92. package/dist/knowledge/jsonrpc-enum.js +1 -1
  93. package/dist/knowledge/param-schema.js +1 -1
  94. package/dist/knowledge/param-tiers.js +1 -1
  95. package/dist/knowledge/path-oracle/coverage.js +1 -1
  96. package/dist/knowledge/path-oracle/index.js +1 -1
  97. package/dist/knowledge/path-oracle/products/airbnb.js +1 -0
  98. package/dist/knowledge/path-oracle/products/algora.js +1 -0
  99. package/dist/knowledge/path-oracle/products/alibaba-1688.js +1 -0
  100. package/dist/knowledge/path-oracle/products/amazon.js +1 -0
  101. package/dist/knowledge/path-oracle/products/beatstars.js +1 -0
  102. package/dist/knowledge/path-oracle/products/booking-com.js +1 -0
  103. package/dist/knowledge/path-oracle/products/contra.js +1 -0
  104. package/dist/knowledge/path-oracle/products/costco.js +1 -0
  105. package/dist/knowledge/path-oracle/products/coursera.js +1 -0
  106. package/dist/knowledge/path-oracle/products/duoduo-maicai.js +1 -0
  107. package/dist/knowledge/path-oracle/products/etsy.js +1 -0
  108. package/dist/knowledge/path-oracle/products/food-delivery.js +1 -1
  109. package/dist/knowledge/path-oracle/products/gamefound.js +1 -0
  110. package/dist/knowledge/path-oracle/products/gofundme.js +1 -0
  111. package/dist/knowledge/path-oracle/products/hackerone.js +1 -0
  112. package/dist/knowledge/path-oracle/products/kickstarter.js +1 -0
  113. package/dist/knowledge/path-oracle/products/klook.js +1 -0
  114. package/dist/knowledge/path-oracle/products/ninety-nine-designs.js +1 -0
  115. package/dist/knowledge/path-oracle/products/onlyfans.js +1 -0
  116. package/dist/knowledge/path-oracle/products/patreon.js +1 -0
  117. package/dist/knowledge/path-oracle/products/pinduoduo-kuaituantuan.js +1 -0
  118. package/dist/knowledge/path-oracle/products/royalty-exchange.js +1 -0
  119. package/dist/knowledge/path-oracle/products/shansong.js +1 -0
  120. package/dist/knowledge/path-oracle/products/taobao-presale.js +1 -0
  121. package/dist/knowledge/path-oracle/products/upwork-catalog.js +1 -0
  122. package/dist/knowledge/path-oracle/products/upwork.js +1 -0
  123. package/dist/knowledge/path-oracle/products/yuanfudao.js +1 -0
  124. package/dist/knowledge/path-oracle/products/ziroom.js +1 -0
  125. package/dist/knowledge/pattern-resolutions.js +1 -1
  126. package/dist/knowledge/product-detail-source.js +1 -1
  127. package/dist/knowledge/product-doc-b5.js +1 -1
  128. package/dist/knowledge/product-doc-facets.js +1 -0
  129. package/dist/knowledge/projection.js +1 -1
  130. package/dist/knowledge/publish-gate.js +1 -1
  131. package/dist/knowledge/publish-surface-contract.js +1 -1
  132. package/dist/knowledge/recipient-constraint.d.ts +20 -0
  133. package/dist/knowledge/recipient-constraint.js +1 -1
  134. package/dist/knowledge/rule-declaration-types.d.ts +13 -0
  135. package/dist/knowledge/rule-declaration-types.js +1 -0
  136. package/dist/knowledge/rule-declarations.js +1 -0
  137. package/dist/knowledge/scenario-modes.d.ts +6 -0
  138. package/dist/knowledge/scenario-topology.js +1 -1
  139. package/dist/knowledge/template-loader.js +1 -1
  140. package/dist/knowledge/template-prose.js +1 -1
  141. package/dist/knowledge/template-registry.js +1 -1
  142. package/dist/knowledge/template-scanner.js +1 -1
  143. package/dist/knowledge/tools-reference.js +1 -1
  144. package/dist/monitor/MonitorLoop.js +1 -1
  145. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  146. package/dist/playbooks/service-build/machine-panorama.js +1 -1
  147. package/dist/playbooks/service-build/merchant-guide.js +1 -1
  148. package/dist/playbooks/service-build/object-panorama.js +1 -1
  149. package/dist/playbooks/service-build/participation-radar.js +1 -1
  150. package/dist/playbooks/service-build/relationship-profile.js +1 -1
  151. package/dist/playbooks/service-build/service-panorama.js +1 -1
  152. package/dist/playbooks/service-build/service-quote.js +1 -1
  153. package/dist/review/index.js +1 -1
  154. package/dist/review/service.js +1 -1
  155. package/dist/safety/confirm-gate.js +1 -1
  156. package/dist/schema/benchmark-migration/index.d.ts +9 -0
  157. package/dist/schema/benchmark-migration/index.js +1 -1
  158. package/dist/schema/call/arbitration.d.ts +8 -0
  159. package/dist/schema/call/arbitration.js +1 -1
  160. package/dist/schema/call/base.d.ts +8 -0
  161. package/dist/schema/call/base.js +1 -1
  162. package/dist/schema/call/bridge.d.ts +2 -0
  163. package/dist/schema/call/error-codes.d.ts +1 -1
  164. package/dist/schema/call/error-codes.js +1 -1
  165. package/dist/schema/call/handler.d.ts +2 -1
  166. package/dist/schema/call/handler.js +1 -1
  167. package/dist/schema/call/order.d.ts +10 -0
  168. package/dist/schema/call/permission-handler.js +1 -1
  169. package/dist/schema/call/permission.js +1 -1
  170. package/dist/schema/call/progress.d.ts +15 -0
  171. package/dist/schema/call/progress.js +1 -1
  172. package/dist/schema/call/receipt.d.ts +1 -0
  173. package/dist/schema/call/receipt.js +1 -1
  174. package/dist/schema/call/repository.d.ts +12 -0
  175. package/dist/schema/call/repository.js +1 -1
  176. package/dist/schema/call/reward.js +1 -1
  177. package/dist/schema/call/semantic.d.ts +1 -0
  178. package/dist/schema/call/semantic.js +1 -1
  179. package/dist/schema/call/service.d.ts +5 -3
  180. package/dist/schema/call/service.js +1 -1
  181. package/dist/schema/common/index.js +1 -1
  182. package/dist/schema/envelope-unify.js +1 -1
  183. package/dist/schema/goal/index.d.ts +23 -0
  184. package/dist/schema/goal/planning.js +1 -1
  185. package/dist/schema/industry-pack/index.d.ts +2 -2
  186. package/dist/schema/local/index.d.ts +20 -0
  187. package/dist/schema/local/index.js +1 -1
  188. package/dist/schema/local/wip.d.ts +4 -0
  189. package/dist/schema/local/wip.js +1 -1
  190. package/dist/schema/messenger/index.d.ts +5 -0
  191. package/dist/schema/messenger/index.js +1 -1
  192. package/dist/schema/operations.d.ts +944 -1
  193. package/dist/schema/operations.js +1 -1
  194. package/dist/schema/query/bi.js +1 -1
  195. package/dist/schema/query/index.d.ts +5 -5
  196. package/dist/schema/query/index.js +1 -1
  197. package/dist/schema/schema-version.js +1 -1
  198. package/dist/schema/workspace/index.d.ts +2 -2
  199. package/dist/schema-query-impl/index.js +1 -1
  200. package/dist/schemas/account_operation.schema.json +1 -257
  201. package/dist/schemas/ask_user.schema.json +1 -78
  202. package/dist/schemas/benchmark_migration_operation.schema.json +1 -626
  203. package/dist/schemas/bridge_operation.schema.json +1 -1069
  204. package/dist/schemas/config_operation.schema.json +1 -82
  205. package/dist/schemas/employee_operation.schema.json +1 -319
  206. package/dist/schemas/evaluation_operation.schema.json +1 -3932
  207. package/dist/schemas/goal_operation.schema.json +1 -1650
  208. package/dist/schemas/guard2file.schema.json +1 -137
  209. package/dist/schemas/index.json +1 -285
  210. package/dist/schemas/industry_pack_operation.schema.json +1 -582
  211. package/dist/schemas/intent_radar.schema.json +1 -155
  212. package/dist/schemas/keeper_operation.schema.json +1 -364
  213. package/dist/schemas/local_cache_operation.schema.json +1 -116
  214. package/dist/schemas/local_history_operation.schema.json +1 -105
  215. package/dist/schemas/local_info_operation.schema.json +1 -140
  216. package/dist/schemas/local_mark_operation.schema.json +1 -124
  217. package/dist/schemas/machineNode2file.schema.json +1 -137
  218. package/dist/schemas/messenger_operation.schema.json +1 -2068
  219. package/dist/schemas/monitor_events.schema.json +1 -87
  220. package/dist/schemas/monitor_subscription.schema.json +1 -327
  221. package/dist/schemas/onchain_events.schema.json +1 -207
  222. package/dist/schemas/onchain_operations.schema.json +1 -28699
  223. package/dist/schemas/onchain_operations_allocation.schema.json +1 -1376
  224. package/dist/schemas/onchain_operations_arbitration.schema.json +1 -1355
  225. package/dist/schemas/onchain_operations_contact.schema.json +1 -988
  226. package/dist/schemas/onchain_operations_demand.schema.json +1 -1146
  227. package/dist/schemas/onchain_operations_gen_passport.schema.json +1 -663
  228. package/dist/schemas/onchain_operations_gen_proof.schema.json +1 -180
  229. package/dist/schemas/onchain_operations_guard.schema.json +1 -8518
  230. package/dist/schemas/onchain_operations_machine.schema.json +1 -1879
  231. package/dist/schemas/onchain_operations_order.schema.json +1 -1121
  232. package/dist/schemas/onchain_operations_payment.schema.json +1 -316
  233. package/dist/schemas/onchain_operations_permission.schema.json +1 -1036
  234. package/dist/schemas/onchain_operations_personal.schema.json +1 -1463
  235. package/dist/schemas/onchain_operations_progress.schema.json +1 -1041
  236. package/dist/schemas/onchain_operations_proof.schema.json +1 -750
  237. package/dist/schemas/onchain_operations_repository.schema.json +1 -2046
  238. package/dist/schemas/onchain_operations_reward.schema.json +1 -1286
  239. package/dist/schemas/onchain_operations_service.schema.json +1 -2602
  240. package/dist/schemas/onchain_operations_treasury.schema.json +1 -1527
  241. package/dist/schemas/onchain_table_data.schema.json +1 -1146
  242. package/dist/schemas/permission_operation.schema.json +1 -43
  243. package/dist/schemas/persona_operation.schema.json +1 -10424
  244. package/dist/schemas/query_toolkit.schema.json +1 -1867
  245. package/dist/schemas/schema_query.schema.json +1 -116
  246. package/dist/schemas/service_clone_operation.schema.json +1 -49
  247. package/dist/schemas/settle_sweep.schema.json +1 -0
  248. package/dist/schemas/strategy_review_operation.schema.json +1 -66
  249. package/dist/schemas/verify_guard_dry_run.schema.json +1 -0
  250. package/dist/schemas/watch_operation.schema.json +1 -145
  251. package/dist/schemas/wip_file.schema.json +1 -299
  252. package/dist/schemas/workflow_operation.schema.json +1 -722
  253. package/dist/schemas/workspace_operation.schema.json +1 -104
  254. package/dist/schemas/wowok_buildin_info.schema.json +1 -758
  255. package/dist/tools/handlers/benchmark-migration.js +1 -1
  256. package/dist/tools/handlers/config.js +1 -1
  257. package/dist/tools/handlers/entry-edge-recipe.js +1 -1
  258. package/dist/tools/handlers/file-export.js +1 -1
  259. package/dist/tools/handlers/local.js +1 -1
  260. package/dist/tools/handlers/messenger.js +1 -1
  261. package/dist/tools/handlers/onchain.js +1 -1
  262. package/dist/tools/handlers/pending-settlement-recipe.js +1 -0
  263. package/dist/tools/handlers/plan-recovery.js +1 -0
  264. package/dist/tools/handlers/query.js +1 -1
  265. package/dist/tools/handlers/repository-row-id.js +1 -0
  266. package/dist/tools/handlers/review-chain.js +1 -1
  267. package/dist/tools/handlers/settle-sweep.js +1 -0
  268. package/dist/tools/handlers/stale-build-check.js +1 -1
  269. package/dist/tools/handlers/submission-assembly.js +1 -1
  270. package/dist/tools/handlers/verify-guard-dry-run.js +1 -0
  271. package/dist/tools/handlers/wip-upload.js +1 -1
  272. package/dist/tools/index.d.ts +3 -1
  273. package/dist/tools/index.js +1 -1
  274. package/dist/tools/move-fn-index.gen.js +1 -1
  275. package/dist/tools/publish-gate-state.js +1 -1
  276. package/dist/tools/registry/business.js +1 -1
  277. package/dist/tools/registry/onchain.js +1 -1
  278. package/dist/tools/shared.js +1 -1
  279. package/dist/tools/types.d.ts +1 -1
  280. package/dist/tools/wrap.js +1 -1
  281. package/package.json +11 -4
  282. package/dist/chain-semantics/composition-truth.d.ts +0 -102
  283. package/dist/chain-semantics/eval-order.d.ts +0 -17
  284. package/dist/chain-semantics/field-capability.d.ts +0 -11
  285. package/dist/chain-semantics/freeze-map.d.ts +0 -11
  286. package/dist/chain-semantics/fund-flow.d.ts +0 -10
  287. package/dist/chain-semantics/guard-verbs.d.ts +0 -22
  288. package/dist/chain-semantics/index.d.ts +0 -12
  289. package/dist/chain-semantics/object-graph.d.ts +0 -18
  290. package/dist/communication/evidence.d.ts +0 -6
  291. package/dist/communication/message-cursors.d.ts +0 -35
  292. package/dist/communication/proof-reuse.d.ts +0 -9
  293. package/dist/communication/wts-attestation.d.ts +0 -39
  294. package/dist/composition/audit.d.ts +0 -15
  295. package/dist/composition/blueprint-view.d.ts +0 -63
  296. package/dist/composition/compile.d.ts +0 -83
  297. package/dist/composition/emit-phases.d.ts +0 -234
  298. package/dist/composition/generate.d.ts +0 -40
  299. package/dist/composition/guard-fill.d.ts +0 -52
  300. package/dist/composition/inflight.d.ts +0 -86
  301. package/dist/composition/input-normalize.d.ts +0 -15
  302. package/dist/composition/materialize.d.ts +0 -78
  303. package/dist/composition/mode-gates.d.ts +0 -35
  304. package/dist/composition/param-disclosure.d.ts +0 -61
  305. package/dist/composition/plan-retry-ledger.d.ts +0 -37
  306. package/dist/composition/plan.d.ts +0 -121
  307. package/dist/composition/product-card.d.ts +0 -94
  308. package/dist/composition/reflux.d.ts +0 -28
  309. package/dist/composition/supply-chain-emit.d.ts +0 -46
  310. package/dist/config/config-audit.spec.d.ts +0 -1
  311. package/dist/config/config-audit.spec.js +0 -1
  312. package/dist/config/config-warnings.d.ts +0 -2
  313. package/dist/config/index.d.ts +0 -4
  314. package/dist/config/judgment.spec.d.ts +0 -1
  315. package/dist/config/judgment.spec.js +0 -1
  316. package/dist/config/match-policy-file.d.ts +0 -34
  317. package/dist/config/match-policy-file.spec.d.ts +0 -1
  318. package/dist/config/match-policy-file.spec.js +0 -1
  319. package/dist/config/rule-engine.spec.d.ts +0 -1
  320. package/dist/config/rule-engine.spec.js +0 -1
  321. package/dist/config/runtime.d.ts +0 -29
  322. package/dist/config/store-policy.d.ts +0 -14
  323. package/dist/config/store-policy.spec.d.ts +0 -1
  324. package/dist/config/store-policy.spec.js +0 -1
  325. package/dist/config/template-params.d.ts +0 -42
  326. package/dist/config/template-params.spec.d.ts +0 -1
  327. package/dist/config/template-params.spec.js +0 -1
  328. package/dist/customer/account-events.d.ts +0 -32
  329. package/dist/data/api/api.spec.d.ts +0 -1
  330. package/dist/data/api/api.spec.js +0 -1
  331. package/dist/data/api/cli.d.ts +0 -1
  332. package/dist/data/api/head.d.ts +0 -16
  333. package/dist/data/api/head.spec.d.ts +0 -1
  334. package/dist/data/api/head.spec.js +0 -1
  335. package/dist/data/api/index.d.ts +0 -2
  336. package/dist/data/api/match.d.ts +0 -69
  337. package/dist/data/api/match.spec.d.ts +0 -1
  338. package/dist/data/api/match.spec.js +0 -1
  339. package/dist/data/api/server.d.ts +0 -13
  340. package/dist/data/projection/cli.d.ts +0 -1
  341. package/dist/data/projection/edges.d.ts +0 -8
  342. package/dist/data/projection/edges.spec.d.ts +0 -1
  343. package/dist/data/projection/edges.spec.js +0 -1
  344. package/dist/data/projection/facets.d.ts +0 -18
  345. package/dist/data/projection/facets.spec.d.ts +0 -1
  346. package/dist/data/projection/facets.spec.js +0 -1
  347. package/dist/data/projection/facts.d.ts +0 -40
  348. package/dist/data/projection/index.d.ts +0 -6
  349. package/dist/data/projection/project.d.ts +0 -10
  350. package/dist/data/projection/projection.spec.d.ts +0 -1
  351. package/dist/data/projection/projection.spec.js +0 -1
  352. package/dist/data/projection/schema.d.ts +0 -1
  353. package/dist/data/projection/store.d.ts +0 -51
  354. package/dist/data/projection/types.d.ts +0 -169
  355. package/dist/data/sync/cdc.d.ts +0 -33
  356. package/dist/data/sync/cdc.spec.d.ts +0 -1
  357. package/dist/data/sync/cdc.spec.js +0 -1
  358. package/dist/data/sync/graphql-source.d.ts +0 -16
  359. package/dist/data/sync/index.d.ts +0 -5
  360. package/dist/data/sync/reconciler.d.ts +0 -14
  361. package/dist/data/sync/reconciler.spec.d.ts +0 -1
  362. package/dist/data/sync/reconciler.spec.js +0 -1
  363. package/dist/data/sync/schema.d.ts +0 -1
  364. package/dist/data/sync/store.d.ts +0 -24
  365. package/dist/data/sync/sync.spec.d.ts +0 -1
  366. package/dist/data/sync/sync.spec.js +0 -1
  367. package/dist/data/sync/synchronizer.d.ts +0 -10
  368. package/dist/data/sync/types.d.ts +0 -164
  369. package/dist/evaluation/acceptance.d.ts +0 -33
  370. package/dist/evaluation/architecture.spec.d.ts +0 -1
  371. package/dist/evaluation/architecture.spec.js +0 -1
  372. package/dist/evaluation/builtins/arbitration-score.d.ts +0 -42
  373. package/dist/evaluation/builtins/demand-match.d.ts +0 -16
  374. package/dist/evaluation/builtins/graph-service.spec.d.ts +0 -1
  375. package/dist/evaluation/builtins/graph-service.spec.js +0 -1
  376. package/dist/evaluation/builtins/index.d.ts +0 -4
  377. package/dist/evaluation/builtins/purity.spec.d.ts +0 -1
  378. package/dist/evaluation/builtins/purity.spec.js +0 -1
  379. package/dist/evaluation/composer.d.ts +0 -38
  380. package/dist/evaluation/facets/catalog.d.ts +0 -19
  381. package/dist/evaluation/gap.d.ts +0 -2
  382. package/dist/evaluation/guard-scan.d.ts +0 -10
  383. package/dist/evaluation/index.d.ts +0 -14
  384. package/dist/evaluation/injection.d.ts +0 -6
  385. package/dist/evaluation/location-match.d.ts +0 -42
  386. package/dist/evaluation/match-operation.d.ts +0 -23
  387. package/dist/evaluation/match-policy-resolver.d.ts +0 -9
  388. package/dist/evaluation/match-policy.spec.d.ts +0 -1
  389. package/dist/evaluation/match-policy.spec.js +0 -1
  390. package/dist/evaluation/path-reasoning.d.ts +0 -37
  391. package/dist/evaluation/standards.d.ts +0 -11
  392. package/dist/evaluation/standards.spec.d.ts +0 -1
  393. package/dist/evaluation/standards.spec.js +0 -1
  394. package/dist/evaluation/structured-lines.d.ts +0 -8
  395. package/dist/evaluation/user-injection.d.ts +0 -6
  396. package/dist/experience/experience-reuse.d.ts +0 -10
  397. package/dist/experience/index.d.ts +0 -7
  398. package/dist/experience/persistence-config.d.ts +0 -6
  399. package/dist/experience/persistence.d.ts +0 -21
  400. package/dist/experience/realtime-feedback.d.ts +0 -5
  401. package/dist/experience/user-profile.d.ts +0 -25
  402. package/dist/extensions/capability.d.ts +0 -91
  403. package/dist/extensions/industry-audit.spec.d.ts +0 -1
  404. package/dist/extensions/industry-audit.spec.js +0 -1
  405. package/dist/goal/GoalClassifier.d.ts +0 -17
  406. package/dist/goal/GoalEngine.d.ts +0 -175
  407. package/dist/goal/GoalStore.d.ts +0 -27
  408. package/dist/goal/next-steps.d.ts +0 -12
  409. package/dist/goal/plan-approval.d.ts +0 -5
  410. package/dist/goal/pursue.d.ts +0 -18
  411. package/dist/graph/base.d.ts +0 -8
  412. package/dist/graph/onchain/analyze.d.ts +0 -59
  413. package/dist/graph/onchain/analyze.spec.d.ts +0 -1
  414. package/dist/graph/onchain/analyze.spec.js +0 -1
  415. package/dist/graph/onchain/anti-cheat.d.ts +0 -69
  416. package/dist/graph/onchain/anti-cheat.spec.d.ts +0 -1
  417. package/dist/graph/onchain/anti-cheat.spec.js +0 -1
  418. package/dist/graph/onchain/dataplane.d.ts +0 -44
  419. package/dist/graph/onchain/edge-batch.spec.d.ts +0 -1
  420. package/dist/graph/onchain/edge-batch.spec.js +0 -1
  421. package/dist/graph/onchain/edge-schema.d.ts +0 -69
  422. package/dist/graph/onchain/entity-profile.spec.d.ts +0 -1
  423. package/dist/graph/onchain/entity-profile.spec.js +0 -1
  424. package/dist/graph/onchain/event-history.spec.d.ts +0 -1
  425. package/dist/graph/onchain/event-history.spec.js +0 -1
  426. package/dist/graph/onchain/expand.d.ts +0 -4
  427. package/dist/graph/onchain/exploration.d.ts +0 -28
  428. package/dist/graph/onchain/exploration.spec.d.ts +0 -1
  429. package/dist/graph/onchain/exploration.spec.js +0 -1
  430. package/dist/graph/onchain/exposure.d.ts +0 -18
  431. package/dist/graph/onchain/exposure.spec.d.ts +0 -1
  432. package/dist/graph/onchain/exposure.spec.js +0 -1
  433. package/dist/graph/onchain/extract-deep.spec.d.ts +0 -1
  434. package/dist/graph/onchain/extract-deep.spec.js +0 -1
  435. package/dist/graph/onchain/extract.d.ts +0 -29
  436. package/dist/graph/onchain/facet-projection.d.ts +0 -99
  437. package/dist/graph/onchain/facet-projection.spec.d.ts +0 -1
  438. package/dist/graph/onchain/facet-projection.spec.js +0 -1
  439. package/dist/graph/onchain/facts.spec.d.ts +0 -1
  440. package/dist/graph/onchain/facts.spec.js +0 -1
  441. package/dist/graph/onchain/field-manifest.d.ts +0 -29
  442. package/dist/graph/onchain/field-manifest.spec.d.ts +0 -1
  443. package/dist/graph/onchain/field-manifest.spec.js +0 -1
  444. package/dist/graph/onchain/fixtures.d.ts +0 -80
  445. package/dist/graph/onchain/fixtures.spec.d.ts +0 -1
  446. package/dist/graph/onchain/fixtures.spec.js +0 -1
  447. package/dist/graph/onchain/graph-policy.spec.d.ts +0 -1
  448. package/dist/graph/onchain/graph-policy.spec.js +0 -1
  449. package/dist/graph/onchain/index.d.ts +0 -29
  450. package/dist/graph/onchain/interest.d.ts +0 -10
  451. package/dist/graph/onchain/interest.spec.d.ts +0 -1
  452. package/dist/graph/onchain/interest.spec.js +0 -1
  453. package/dist/graph/onchain/label-lint.spec.d.ts +0 -1
  454. package/dist/graph/onchain/label-lint.spec.js +0 -1
  455. package/dist/graph/onchain/names.d.ts +0 -23
  456. package/dist/graph/onchain/names.spec.d.ts +0 -1
  457. package/dist/graph/onchain/names.spec.js +0 -1
  458. package/dist/graph/onchain/object-held-receipts.d.ts +0 -20
  459. package/dist/graph/onchain/object-held-receipts.spec.d.ts +0 -1
  460. package/dist/graph/onchain/object-held-receipts.spec.js +0 -1
  461. package/dist/graph/onchain/onchain.spec.d.ts +0 -1
  462. package/dist/graph/onchain/onchain.spec.js +0 -1
  463. package/dist/graph/onchain/policy.d.ts +0 -8
  464. package/dist/graph/onchain/project-relationship.d.ts +0 -3
  465. package/dist/graph/onchain/proposal-graph.d.ts +0 -11
  466. package/dist/graph/onchain/proposal-graph.spec.d.ts +0 -1
  467. package/dist/graph/onchain/proposal-graph.spec.js +0 -1
  468. package/dist/graph/onchain/sdk-batch.d.ts +0 -129
  469. package/dist/graph/onchain/sdk-dataplane.d.ts +0 -44
  470. package/dist/graph/onchain/strategy.spec.d.ts +0 -1
  471. package/dist/graph/onchain/strategy.spec.js +0 -1
  472. package/dist/graph/onchain/synthesis.d.ts +0 -20
  473. package/dist/graph/onchain/synthesis.spec.d.ts +0 -1
  474. package/dist/graph/onchain/synthesis.spec.js +0 -1
  475. package/dist/graph/onchain/table-ledger.spec.d.ts +0 -1
  476. package/dist/graph/onchain/table-ledger.spec.js +0 -1
  477. package/dist/graph/onchain/viewport.d.ts +0 -6
  478. package/dist/harness/auto-escalation.d.ts +0 -15
  479. package/dist/intent/enrich.d.ts +0 -1
  480. package/dist/intent/index.d.ts +0 -23
  481. package/dist/intent/matcher.d.ts +0 -2
  482. package/dist/intent/store.d.ts +0 -19
  483. package/dist/intent/types.d.ts +0 -32
  484. package/dist/keeper/KeeperScan.d.ts +0 -41
  485. package/dist/keeper/KeeperStore.d.ts +0 -43
  486. package/dist/keeper/detectors.d.ts +0 -42
  487. package/dist/keeper/keeper.spec.d.ts +0 -1
  488. package/dist/keeper/keeper.spec.js +0 -1
  489. package/dist/keeper/types.d.ts +0 -67
  490. package/dist/knowledge/account-marks.d.ts +0 -36
  491. package/dist/knowledge/allocation-ledger.d.ts +0 -75
  492. package/dist/knowledge/allocation-puzzle.d.ts +0 -138
  493. package/dist/knowledge/allocation-risk.d.ts +0 -82
  494. package/dist/knowledge/allocation-templates.d.ts +0 -38
  495. package/dist/knowledge/allocator-rail-verifier.d.ts +0 -59
  496. package/dist/knowledge/anti-cheat.d.ts +0 -2
  497. package/dist/knowledge/arb-fund-facts.d.ts +0 -51
  498. package/dist/knowledge/arb-risk.d.ts +0 -39
  499. package/dist/knowledge/arbitration-puzzle.d.ts +0 -84
  500. package/dist/knowledge/arbitration-rail-verifier.d.ts +0 -35
  501. package/dist/knowledge/arbitration-risk.d.ts +0 -114
  502. package/dist/knowledge/arbitration-templates.d.ts +0 -39
  503. package/dist/knowledge/arbitration-venue-order.d.ts +0 -25
  504. package/dist/knowledge/baselines/guard-lint-baseline.spec.d.ts +0 -1
  505. package/dist/knowledge/baselines/guard-lint-baseline.spec.js +0 -1
  506. package/dist/knowledge/baselines/risk-baselines.spec.d.ts +0 -1
  507. package/dist/knowledge/baselines/risk-baselines.spec.js +0 -1
  508. package/dist/knowledge/baselines/risk-cases.d.ts +0 -8
  509. package/dist/knowledge/baselines/semantic-facts.d.ts +0 -12
  510. package/dist/knowledge/bridge-risk.d.ts +0 -36
  511. package/dist/knowledge/catalog-facts.d.ts +0 -4
  512. package/dist/knowledge/chain-query-registry.d.ts +0 -14
  513. package/dist/knowledge/commission-landing.d.ts +0 -26
  514. package/dist/knowledge/component-schema.d.ts +0 -64
  515. package/dist/knowledge/contact-risk.d.ts +0 -32
  516. package/dist/knowledge/contact-templates.d.ts +0 -26
  517. package/dist/knowledge/contract-invariants.d.ts +0 -54
  518. package/dist/knowledge/demand-risk.d.ts +0 -30
  519. package/dist/knowledge/discount-threshold.d.ts +0 -26
  520. package/dist/knowledge/dynamic-pricing.d.ts +0 -29
  521. package/dist/knowledge/entity-recipient-guard.d.ts +0 -21
  522. package/dist/knowledge/event-semantics.d.ts +0 -23
  523. package/dist/knowledge/evidence-review.d.ts +0 -35
  524. package/dist/knowledge/fee-param-bindings.d.ts +0 -28
  525. package/dist/knowledge/flywheel-loop.d.ts +0 -41
  526. package/dist/knowledge/game-scenarios.d.ts +0 -21
  527. package/dist/knowledge/getting-started.d.ts +0 -37
  528. package/dist/knowledge/goal-completion.d.ts +0 -31
  529. package/dist/knowledge/guard-anchor-reach.d.ts +0 -19
  530. package/dist/knowledge/guard-binding-table.d.ts +0 -52
  531. package/dist/knowledge/guard-binding-verifier.d.ts +0 -37
  532. package/dist/knowledge/guard-bindings.d.ts +0 -21
  533. package/dist/knowledge/guard-blueprint.d.ts +0 -68
  534. package/dist/knowledge/guard-design-patterns.d.ts +0 -38
  535. package/dist/knowledge/guard-eval.d.ts +0 -15
  536. package/dist/knowledge/guard-field-cognition.d.ts +0 -48
  537. package/dist/knowledge/guard-host-context.d.ts +0 -24
  538. package/dist/knowledge/guard-ledger.d.ts +0 -19
  539. package/dist/knowledge/guard-leg-map.d.ts +0 -5
  540. package/dist/knowledge/guard-lint.d.ts +0 -79
  541. package/dist/knowledge/guard-node-gates.d.ts +0 -9
  542. package/dist/knowledge/guard-puzzle.d.ts +0 -188
  543. package/dist/knowledge/guard-render.d.ts +0 -71
  544. package/dist/knowledge/guard-risk.d.ts +0 -71
  545. package/dist/knowledge/guard-submission-brief.d.ts +0 -94
  546. package/dist/knowledge/guard-submission-prompt.d.ts +0 -63
  547. package/dist/knowledge/guard-translation.d.ts +0 -58
  548. package/dist/knowledge/index.d.ts +0 -299
  549. package/dist/knowledge/industry-evolution.d.ts +0 -82
  550. package/dist/knowledge/industry-generalizer.d.ts +0 -63
  551. package/dist/knowledge/industry-rule-node.d.ts +0 -7
  552. package/dist/knowledge/industry-strategy.d.ts +0 -91
  553. package/dist/knowledge/intent-metrics.d.ts +0 -43
  554. package/dist/knowledge/jsonrpc-enum.d.ts +0 -102
  555. package/dist/knowledge/knob-docs.d.ts +0 -5
  556. package/dist/knowledge/machine-fork-watch.d.ts +0 -9
  557. package/dist/knowledge/machine-ledger.d.ts +0 -42
  558. package/dist/knowledge/machine-puzzle.d.ts +0 -206
  559. package/dist/knowledge/machine-risk.d.ts +0 -72
  560. package/dist/knowledge/machine-templates.d.ts +0 -92
  561. package/dist/knowledge/machine-topology.d.ts +0 -116
  562. package/dist/knowledge/machine-translation.d.ts +0 -96
  563. package/dist/knowledge/market-metrics.d.ts +0 -34
  564. package/dist/knowledge/market-operations.d.ts +0 -46
  565. package/dist/knowledge/migration-preflight.d.ts +0 -27
  566. package/dist/knowledge/object-dependency.d.ts +0 -31
  567. package/dist/knowledge/operation-dictionary.d.ts +0 -18
  568. package/dist/knowledge/order-ledger.d.ts +0 -69
  569. package/dist/knowledge/order-puzzle.d.ts +0 -162
  570. package/dist/knowledge/order-risk.d.ts +0 -62
  571. package/dist/knowledge/order-templates.d.ts +0 -50
  572. package/dist/knowledge/param-schema.d.ts +0 -93
  573. package/dist/knowledge/param-tiers.d.ts +0 -27
  574. package/dist/knowledge/passport-ledger.d.ts +0 -60
  575. package/dist/knowledge/passport-templates.d.ts +0 -40
  576. package/dist/knowledge/path-oracle/coverage.d.ts +0 -16
  577. package/dist/knowledge/path-oracle/index.d.ts +0 -5
  578. package/dist/knowledge/path-oracle/products/food-delivery.d.ts +0 -2
  579. package/dist/knowledge/path-oracle/schema.d.ts +0 -188
  580. package/dist/knowledge/pattern-resolutions.d.ts +0 -110
  581. package/dist/knowledge/payment-risk.d.ts +0 -38
  582. package/dist/knowledge/payment-tracker.d.ts +0 -63
  583. package/dist/knowledge/permission-ledger.d.ts +0 -49
  584. package/dist/knowledge/permission-puzzle.d.ts +0 -122
  585. package/dist/knowledge/permission-risk.d.ts +0 -70
  586. package/dist/knowledge/permission-templates.d.ts +0 -38
  587. package/dist/knowledge/personal-risk.d.ts +0 -36
  588. package/dist/knowledge/product-detail-source.d.ts +0 -37
  589. package/dist/knowledge/product-doc-b5.d.ts +0 -16
  590. package/dist/knowledge/progress-ledger.d.ts +0 -63
  591. package/dist/knowledge/progress-puzzle.d.ts +0 -82
  592. package/dist/knowledge/progress-risk.d.ts +0 -75
  593. package/dist/knowledge/progress-templates.d.ts +0 -38
  594. package/dist/knowledge/projection.d.ts +0 -54
  595. package/dist/knowledge/projection.spec.d.ts +0 -1
  596. package/dist/knowledge/projection.spec.js +0 -1
  597. package/dist/knowledge/proof-risk.d.ts +0 -33
  598. package/dist/knowledge/protocol-facts.d.ts +0 -17
  599. package/dist/knowledge/publish-gate.d.ts +0 -20
  600. package/dist/knowledge/publish-readiness.d.ts +0 -25
  601. package/dist/knowledge/publish-surface-contract.d.ts +0 -16
  602. package/dist/knowledge/puzzle-projections.d.ts +0 -11
  603. package/dist/knowledge/rail-exit-satisfiability.d.ts +0 -25
  604. package/dist/knowledge/registrar-risk.d.ts +0 -34
  605. package/dist/knowledge/release-sentinel.d.ts +0 -12
  606. package/dist/knowledge/repository-risk.d.ts +0 -46
  607. package/dist/knowledge/repository-write-semantics.d.ts +0 -27
  608. package/dist/knowledge/reputation-rules.d.ts +0 -36
  609. package/dist/knowledge/requirement-families.d.ts +0 -13
  610. package/dist/knowledge/resource-risk.d.ts +0 -32
  611. package/dist/knowledge/reward-ledger.d.ts +0 -97
  612. package/dist/knowledge/reward-puzzle.d.ts +0 -98
  613. package/dist/knowledge/reward-risk.d.ts +0 -86
  614. package/dist/knowledge/reward-templates.d.ts +0 -25
  615. package/dist/knowledge/rule-node-analyzers.d.ts +0 -49
  616. package/dist/knowledge/rule-outcome.d.ts +0 -5
  617. package/dist/knowledge/scenario-topology.d.ts +0 -48
  618. package/dist/knowledge/semantic-ir.d.ts +0 -136
  619. package/dist/knowledge/service-allocation-semantics.d.ts +0 -36
  620. package/dist/knowledge/service-allocator-audit-node.d.ts +0 -3
  621. package/dist/knowledge/service-ledger.d.ts +0 -87
  622. package/dist/knowledge/service-puzzle.d.ts +0 -158
  623. package/dist/knowledge/service-risk-node.d.ts +0 -3
  624. package/dist/knowledge/service-risk.d.ts +0 -110
  625. package/dist/knowledge/service-templates.d.ts +0 -41
  626. package/dist/knowledge/settlement-semantics.d.ts +0 -1
  627. package/dist/knowledge/strategy-manuals.d.ts +0 -15
  628. package/dist/knowledge/supply-chain.d.ts +0 -35
  629. package/dist/knowledge/template-index.d.ts +0 -19
  630. package/dist/knowledge/template-loader.d.ts +0 -425
  631. package/dist/knowledge/template-nav.d.ts +0 -9
  632. package/dist/knowledge/template-prose.d.ts +0 -50
  633. package/dist/knowledge/template-registry.d.ts +0 -48
  634. package/dist/knowledge/template-scanner.d.ts +0 -158
  635. package/dist/knowledge/template-test-profiles.d.ts +0 -17
  636. package/dist/knowledge/template-validation.d.ts +0 -3
  637. package/dist/knowledge/tools-reference.d.ts +0 -17
  638. package/dist/knowledge/treasury-ledger.d.ts +0 -42
  639. package/dist/knowledge/treasury-puzzle.d.ts +0 -163
  640. package/dist/knowledge/treasury-risk.d.ts +0 -88
  641. package/dist/knowledge/treasury-templates.d.ts +0 -38
  642. package/dist/knowledge/universal-template.d.ts +0 -22
  643. package/dist/knowledge/util-risk.d.ts +0 -30
  644. package/dist/knowledge/workflow-guidance.d.ts +0 -194
  645. package/dist/knowledge/workspace-lists.d.ts +0 -61
  646. package/dist/monitor/SuggestionBridge.spec.d.ts +0 -1
  647. package/dist/monitor/SuggestionBridge.spec.js +0 -1
  648. package/dist/participation/arbitrator-interest.d.ts +0 -22
  649. package/dist/participation/demander-interest.d.ts +0 -23
  650. package/dist/participation/employee-kpi.d.ts +0 -37
  651. package/dist/participation/employee-kpi.spec.d.ts +0 -1
  652. package/dist/participation/employee-kpi.spec.js +0 -1
  653. package/dist/participation/employee-store.d.ts +0 -16
  654. package/dist/participation/game-context.d.ts +0 -25
  655. package/dist/participation/index.d.ts +0 -2
  656. package/dist/participation/node-action-advisor.d.ts +0 -68
  657. package/dist/participation/time-window.d.ts +0 -48
  658. package/dist/persona/facet-profile.d.ts +0 -33
  659. package/dist/persona/persona-audit.spec.d.ts +0 -1
  660. package/dist/persona/persona-audit.spec.js +0 -1
  661. package/dist/playbooks/service-build/business-puzzle.d.ts +0 -48
  662. package/dist/playbooks/service-build/context-assembly.d.ts +0 -32
  663. package/dist/playbooks/service-build/facet-money.d.ts +0 -33
  664. package/dist/playbooks/service-build/facet-money.spec.d.ts +0 -1
  665. package/dist/playbooks/service-build/facet-money.spec.js +0 -1
  666. package/dist/playbooks/service-build/game-theory.d.ts +0 -47
  667. package/dist/playbooks/service-build/index.d.ts +0 -15
  668. package/dist/playbooks/service-build/intent-analyzer.d.ts +0 -72
  669. package/dist/playbooks/service-build/machine-nodes.d.ts +0 -27
  670. package/dist/playbooks/service-build/machine-panorama.d.ts +0 -71
  671. package/dist/playbooks/service-build/merchant-guide.d.ts +0 -382
  672. package/dist/playbooks/service-build/migration-planner.d.ts +0 -61
  673. package/dist/playbooks/service-build/mode-actions.d.ts +0 -260
  674. package/dist/playbooks/service-build/object-panorama.d.ts +0 -317
  675. package/dist/playbooks/service-build/object-type.d.ts +0 -1
  676. package/dist/playbooks/service-build/participation-radar.d.ts +0 -20
  677. package/dist/playbooks/service-build/pipeline-actions.d.ts +0 -108
  678. package/dist/playbooks/service-build/process.d.ts +0 -6
  679. package/dist/playbooks/service-build/relationship-profile.d.ts +0 -3
  680. package/dist/playbooks/service-build/reverse-mapping-nk4.spec.d.ts +0 -1
  681. package/dist/playbooks/service-build/reverse-mapping-nk4.spec.js +0 -1
  682. package/dist/playbooks/service-build/reverse-mapping-refund-p0-5.spec.d.ts +0 -1
  683. package/dist/playbooks/service-build/reverse-mapping-refund-p0-5.spec.js +0 -1
  684. package/dist/playbooks/service-build/reverse-mapping.d.ts +0 -66
  685. package/dist/playbooks/service-build/risk-aggregator.d.ts +0 -59
  686. package/dist/playbooks/service-build/service-panorama.d.ts +0 -229
  687. package/dist/playbooks/service-build/service-quote.d.ts +0 -2
  688. package/dist/playbooks/service-build/service-quote.spec.d.ts +0 -1
  689. package/dist/playbooks/service-build/service-quote.spec.js +0 -1
  690. package/dist/playbooks/service-build/topology-evaluation.spec.d.ts +0 -1
  691. package/dist/playbooks/service-build/topology-evaluation.spec.js +0 -1
  692. package/dist/playbooks/service-build/topology-query.d.ts +0 -25
  693. package/dist/playbooks/service-build/workflow-design-assessment.d.ts +0 -33
  694. package/dist/relationship/derivation.d.ts +0 -95
  695. package/dist/relationship/derivation.spec.d.ts +0 -1
  696. package/dist/relationship/derivation.spec.js +0 -1
  697. package/dist/relationship/incentive.d.ts +0 -38
  698. package/dist/relationship/index.d.ts +0 -4
  699. package/dist/relationship/registry.d.ts +0 -13
  700. package/dist/relationship/types.d.ts +0 -45
  701. package/dist/review/arb.d.ts +0 -4
  702. package/dist/review/demand.d.ts +0 -3
  703. package/dist/review/index.d.ts +0 -3
  704. package/dist/review/machine.d.ts +0 -3
  705. package/dist/review/order.d.ts +0 -8
  706. package/dist/review/progress.d.ts +0 -3
  707. package/dist/review/repository.d.ts +0 -3
  708. package/dist/review/service.d.ts +0 -5
  709. package/dist/review/types.d.ts +0 -163
  710. package/dist/role/derivation.d.ts +0 -35
  711. package/dist/role/index.d.ts +0 -6
  712. package/dist/role/intent.d.ts +0 -23
  713. package/dist/role/model.d.ts +0 -9
  714. package/dist/role/profiles.d.ts +0 -26
  715. package/dist/role/resolution.d.ts +0 -27
  716. package/dist/runtime/instance-registry.d.ts +0 -14
  717. package/dist/safety/index.d.ts +0 -3
  718. package/dist/schema/call/permission-handler.d.ts +0 -5
  719. package/dist/schema/call/semantic-customer-advice.spec.d.ts +0 -1
  720. package/dist/schema/call/semantic-customer-advice.spec.js +0 -1
  721. package/dist/schema/common/tokentype-short-probe.spec.d.ts +0 -1
  722. package/dist/schema/common/tokentype-short-probe.spec.js +0 -1
  723. package/dist/schema/envelope-unify.d.ts +0 -5
  724. package/dist/schema/goal/planning.d.ts +0 -742
  725. package/dist/schema/industry-pack/modes.d.ts +0 -447
  726. package/dist/schema/query/bi.d.ts +0 -3369
  727. package/dist/schema/utils/guard-query-utils.d.ts +0 -18
  728. package/dist/schema/utils/permission-index-utils.d.ts +0 -2
  729. package/dist/schema/utils/skills-recommendation.d.ts +0 -2
  730. package/dist/schema-query-impl/index.d.ts +0 -83
  731. package/dist/schemas/account_operation.output.json +0 -3869
  732. package/dist/schemas/ask_user.output.json +0 -54
  733. package/dist/schemas/benchmark_migration_operation.output.json +0 -1669
  734. package/dist/schemas/bridge_operation.output.json +0 -1548
  735. package/dist/schemas/config_operation.output.json +0 -896
  736. package/dist/schemas/employee_operation.output.json +0 -307
  737. package/dist/schemas/evaluation_operation.output.json +0 -4716
  738. package/dist/schemas/guard2file.output.json +0 -83
  739. package/dist/schemas/industry_pack_operation.output.json +0 -2985
  740. package/dist/schemas/intent_radar.output.json +0 -326
  741. package/dist/schemas/keeper_operation.output.json +0 -1441
  742. package/dist/schemas/local_cache_operation.output.json +0 -1718
  743. package/dist/schemas/local_history_operation.output.json +0 -1644
  744. package/dist/schemas/local_info_operation.output.json +0 -1530
  745. package/dist/schemas/local_mark_operation.output.json +0 -1622
  746. package/dist/schemas/machineNode2file.output.json +0 -88
  747. package/dist/schemas/messenger_operation.output.json +0 -4692
  748. package/dist/schemas/monitor_events.output.json +0 -1602
  749. package/dist/schemas/monitor_subscription.output.json +0 -1629
  750. package/dist/schemas/onchain_events.output.json +0 -4053
  751. package/dist/schemas/onchain_operations.output.json +0 -7788
  752. package/dist/schemas/onchain_table_data.output.json +0 -11868
  753. package/dist/schemas/permission_operation.output.json +0 -205
  754. package/dist/schemas/persona_operation.output.json +0 -64612
  755. package/dist/schemas/query_toolkit.output.json +0 -28302
  756. package/dist/schemas/schema_query.output.json +0 -81
  757. package/dist/schemas/service_clone_operation.output.json +0 -247
  758. package/dist/schemas/strategy_review_operation.output.json +0 -532
  759. package/dist/schemas/watch_operation.output.json +0 -930
  760. package/dist/schemas/wip_file.output.json +0 -360
  761. package/dist/schemas/workflow_operation.output.json +0 -422
  762. package/dist/schemas/workspace_operation.output.json +0 -477
  763. package/dist/schemas/wowok_buildin_info.output.json +0 -2477
  764. package/dist/strategy/collectors.d.ts +0 -66
  765. package/dist/strategy/collectors.spec.d.ts +0 -1
  766. package/dist/strategy/collectors.spec.js +0 -1
  767. package/dist/strategy/index.d.ts +0 -5
  768. package/dist/strategy/metrics.d.ts +0 -20
  769. package/dist/strategy/review.d.ts +0 -48
  770. package/dist/strategy/scorecard.d.ts +0 -32
  771. package/dist/strategy/store.d.ts +0 -26
  772. package/dist/task/ProcessStore.d.ts +0 -98
  773. package/dist/task/playbook.d.ts +0 -11
  774. package/dist/task/substep-trace.d.ts +0 -91
  775. package/dist/tools/build-fingerprint.d.ts +0 -28
  776. package/dist/tools/error-catalog.d.ts +0 -17
  777. package/dist/tools/handlers/ask-user.d.ts +0 -3
  778. package/dist/tools/handlers/benchmark-migration.d.ts +0 -121
  779. package/dist/tools/handlers/bridge.d.ts +0 -8
  780. package/dist/tools/handlers/config.d.ts +0 -2
  781. package/dist/tools/handlers/dispatch-expectations.d.ts +0 -2
  782. package/dist/tools/handlers/dispatch-expectations.spec.d.ts +0 -1
  783. package/dist/tools/handlers/dispatch-expectations.spec.js +0 -1
  784. package/dist/tools/handlers/employee.d.ts +0 -8
  785. package/dist/tools/handlers/employee.spec.d.ts +0 -1
  786. package/dist/tools/handlers/employee.spec.js +0 -1
  787. package/dist/tools/handlers/entry-edge-recipe.d.ts +0 -101
  788. package/dist/tools/handlers/escrow-deficit.d.ts +0 -10
  789. package/dist/tools/handlers/evaluation.d.ts +0 -2
  790. package/dist/tools/handlers/evaluation.spec.d.ts +0 -1
  791. package/dist/tools/handlers/evaluation.spec.js +0 -1
  792. package/dist/tools/handlers/file-export.d.ts +0 -3
  793. package/dist/tools/handlers/fund-rail-recipe.d.ts +0 -10
  794. package/dist/tools/handlers/goal.d.ts +0 -4
  795. package/dist/tools/handlers/industry-pack.d.ts +0 -3
  796. package/dist/tools/handlers/intent-radar.d.ts +0 -2
  797. package/dist/tools/handlers/keeper.d.ts +0 -12
  798. package/dist/tools/handlers/local.d.ts +0 -6
  799. package/dist/tools/handlers/mark-namespace.d.ts +0 -30
  800. package/dist/tools/handlers/messenger.d.ts +0 -24
  801. package/dist/tools/handlers/monitor.d.ts +0 -26
  802. package/dist/tools/handlers/name-resolution.d.ts +0 -4
  803. package/dist/tools/handlers/name-resolution.spec.d.ts +0 -1
  804. package/dist/tools/handlers/name-resolution.spec.js +0 -1
  805. package/dist/tools/handlers/network.d.ts +0 -1
  806. package/dist/tools/handlers/onchain-name-registration.d.ts +0 -49
  807. package/dist/tools/handlers/onchain-name-registration.spec.d.ts +0 -1
  808. package/dist/tools/handlers/onchain-name-registration.spec.js +0 -1
  809. package/dist/tools/handlers/onchain.d.ts +0 -132
  810. package/dist/tools/handlers/permission.d.ts +0 -2
  811. package/dist/tools/handlers/persona.d.ts +0 -4
  812. package/dist/tools/handlers/publish-binding-echo.d.ts +0 -22
  813. package/dist/tools/handlers/review-chain.d.ts +0 -19
  814. package/dist/tools/handlers/schema-query.d.ts +0 -2
  815. package/dist/tools/handlers/service-clone.d.ts +0 -20
  816. package/dist/tools/handlers/stale-build-check.d.ts +0 -9
  817. package/dist/tools/handlers/strategy-review.d.ts +0 -2
  818. package/dist/tools/handlers/submission-assembly.d.ts +0 -55
  819. package/dist/tools/handlers/watch.d.ts +0 -2
  820. package/dist/tools/handlers/winner-derivation.d.ts +0 -20
  821. package/dist/tools/handlers/wip-upload.d.ts +0 -22
  822. package/dist/tools/handlers/wip.d.ts +0 -2
  823. package/dist/tools/handlers/workflow.d.ts +0 -2
  824. package/dist/tools/handlers/workspace.d.ts +0 -4
  825. package/dist/tools/move-fn-index.gen.d.ts +0 -3
  826. package/dist/tools/publish-gate-state.d.ts +0 -5
  827. package/dist/tools/registry/agent.d.ts +0 -2
  828. package/dist/tools/registry/bridge.d.ts +0 -2
  829. package/dist/tools/registry/business.d.ts +0 -2
  830. package/dist/tools/registry/config.d.ts +0 -2
  831. package/dist/tools/registry/evaluation.d.ts +0 -2
  832. package/dist/tools/registry/files.d.ts +0 -2
  833. package/dist/tools/registry/identity.d.ts +0 -2
  834. package/dist/tools/registry/interaction.d.ts +0 -2
  835. package/dist/tools/registry/local.d.ts +0 -2
  836. package/dist/tools/registry/messenger.d.ts +0 -2
  837. package/dist/tools/registry/monitor.d.ts +0 -2
  838. package/dist/tools/registry/onchain.d.ts +0 -2
  839. package/dist/tools/registry/query.d.ts +0 -2
  840. package/dist/tools/retry.d.ts +0 -8
  841. package/dist/tools/rules-hook.d.ts +0 -5
  842. package/dist/tools/runtime-health.d.ts +0 -10
  843. package/dist/tools/sanitize-description-roundtrip.spec.d.ts +0 -1
  844. package/dist/tools/sanitize-description-roundtrip.spec.js +0 -1
  845. package/dist/tools/sanitize-output.d.ts +0 -4
  846. package/dist/tools/sanitize-output.spec.d.ts +0 -1
  847. package/dist/tools/sanitize-output.spec.js +0 -1
  848. package/dist/tools/shared.d.ts +0 -20
  849. package/dist/tools/transport-integrity.d.ts +0 -7
  850. package/dist/tools/upgrade-check.d.ts +0 -75
  851. package/dist/tools/wip-deploy-assist.d.ts +0 -34
  852. package/dist/tools/wip-verify-ledger.d.ts +0 -16
  853. package/dist/tools/wrap.d.ts +0 -45
@@ -1 +1 @@
1
- import{listServices,getServiceInfo,toggle as a552a,setEnabled as a552b,reset as a552c}from'../../config/index.js';import{judgmentStatus,setJudgmentOverride,clearJudgmentOverride,clearJudgmentOverrides,patchUserJudgmentDoc,readUserJudgmentDocView}from'../../config/judgment.js';import{getStoreDualPayoutPolicy,setStoreDualPayoutPreauthorization,clearStoreDualPayoutPreauthorization}from'../../config/store-policy.js';import{getMatchPolicyFile,patchMatchPolicyFile,clearMatchPolicyFile}from'../../config/match-policy-file.js';import{getTemplateParamFileState,patchTemplateParamFile,clearTemplateParamFile}from'../../config/template-params.js';import{strictParse}from'../../schema/index.js';import{ConfigOperationInputSchema}from'../../schema/config/index.js';import{LocalMark}from'@wowok/wowok';async function resolvePolicyAccount(a){const b=a['trim']();if(/^0x[0-9a-fA-F]{64}$/['test'](b))return b['toLowerCase']();try{const c=await LocalMark['Instance']()['get_address'](b)['catch'](()=>undefined)??undefined;if(typeof c==='string'&&/^0x[0-9a-fA-F]{64}$/['test'](c))return c['toLowerCase']();}catch{}return b['toLowerCase']();}export async function handleConfigOperation(a){const b=strictParse(ConfigOperationInputSchema,a,'config_operation\x20input'),{action:c,service:d,path:e,value:f}=b;let g;switch(c){case'list':g={'action':'list','services':listServices()};break;case'toggle':{if(!d)throw new Error('\x27service\x27\x20param\x20is\x20required\x20for\x20toggle');const h=d,i=getServiceInfo(h);if(!i)throw new Error('Unknown\x20service:\x20'+h+'.\x20Use\x20action=\x27list\x27\x20to\x20see\x20all\x20valid\x20services.');if(h==='confirm_gate'&&i['enabled'])throw new Error('confirm_gate\x20cannot\x20be\x20disabled\x20at\x20runtime.\x20'+'Set\x20WOWOK_CONFIRM_GATE=0\x20in\x20the\x20server\x20environment\x20and\x20restart\x20if\x20you\x20really\x20want\x20it\x20off.');const j=a552a(h);g={'action':'toggle','service':h,'enabled':j,'reminder':i['reminder']};break;}case'disable':{if(!d)throw new Error('\x27service\x27\x20param\x20is\x20required\x20for\x20disable');const k=d,l=getServiceInfo(k);if(!l)throw new Error('Unknown\x20service:\x20'+k+'.\x20Use\x20action=\x27list\x27\x20to\x20see\x20all\x20valid\x20services.');if(k==='confirm_gate')throw new Error('confirm_gate\x20cannot\x20be\x20disabled\x20at\x20runtime.\x20'+'Set\x20WOWOK_CONFIRM_GATE=0\x20in\x20the\x20server\x20environment\x20and\x20restart\x20if\x20you\x20really\x20want\x20it\x20off.');a552b(k,![]),g={'action':'disable','service':k,'enabled':![],'reminder':l['reminder']};break;}case'enable':{if(!d)throw new Error('\x27service\x27\x20param\x20is\x20required\x20for\x20enable');const m=d,n=getServiceInfo(m);if(!n)throw new Error('Unknown\x20service:\x20'+m+'.\x20Use\x20action=\x27list\x27\x20to\x20see\x20all\x20valid\x20services.');a552b(m,!![]),g={'action':'enable','service':m,'enabled':!![],'reminder':n['reminder']};break;}case'reset':{if(!d)throw new Error('\x27service\x27\x20param\x20is\x20required\x20for\x20reset');const o=d,p=getServiceInfo(o);if(!p)throw new Error('Unknown\x20service:\x20'+o+'.\x20Use\x20action=\x27list\x27\x20to\x20see\x20all\x20valid\x20services.');a552c(o),g={'action':'reset','service':o,'enabled':getServiceInfo(o)?.['enabled'],'reminder':p['reminder'],'reset':!![]};break;}case'info':{if(!d)throw new Error('\x27service\x27\x20param\x20is\x20required\x20for\x20info');const q=d,r=getServiceInfo(q);if(!r)throw new Error('Unknown\x20service:\x20'+q+'.\x20Use\x20action=\x27list\x27\x20to\x20see\x20all\x20valid\x20services.');g={'action':'info',...r};break;}case'judgment_list':g={'action':'judgment_list',...judgmentStatus()};break;case'judgment_set':{if(!e)throw new Error('\x27path\x27\x20param\x20is\x20required\x20for\x20judgment_set\x20(dotted,\x20e.g.\x20\x27evaluation.weights.trust_reviews\x27)');if(!('value'in b))throw new Error('\x27value\x27\x20param\x20is\x20required\x20for\x20judgment_set');const t=setJudgmentOverride(e,f);if(!t['ok'])throw new Error(t['error']);g={'action':'judgment_set','path':e,'value':f,'applied':!![]};break;}case'judgment_reset':{const u=e?clearJudgmentOverride(e)?0x1:0x0:clearJudgmentOverrides();g={'action':'judgment_reset',...e?{'path':e}:{},'cleared':u};break;}case'judgment_doc_read':{g={'action':'judgment_doc_read',...readUserJudgmentDocView()};break;}case'judgment_doc_patch':{if(b['confirm']!==!![])throw new Error('judgment_doc_patch\x20writes\x20the\x20PERSISTENT\x20user\x20judgment\x20document\x20and\x20requires\x20explicit\x20human\x20'+'confirmation:\x20show\x20the\x20user\x20exactly\x20which\x20paths\x20change\x20from\x20what\x20to\x20what,\x20then\x20set\x20'+'confirm=true\x20only\x20after\x20they\x20approve.\x20If\x20the\x20user\x20declined,\x20do\x20NOT\x20retry\x20the\x20same\x20patch.');if(!b['patch']||typeof b['patch']!=='object'||Array['isArray'](b['patch']))throw new Error('\x27patch\x27\x20param\x20is\x20required\x20for\x20judgment_doc_patch\x20(a\x20partial\x20judgment\x20document\x20object,\x20e.g.\x20{\x22evaluation\x22:\x20{\x22weights\x22:\x20{…}}})');g={'action':'judgment_doc_patch',...patchUserJudgmentDoc(b['patch'])};break;}case'match_policy_read':{g={'action':'match_policy_read',...getMatchPolicyFile()};break;}case'match_policy_patch':{if(b['confirm']!==!![])throw new Error('match_policy_patch\x20writes\x20the\x20PERSISTENT\x20match-policy.json\x20and\x20requires\x20explicit\x20human\x20'+'confirmation:\x20show\x20the\x20user\x20exactly\x20which\x20values\x20change\x20from\x20what\x20to\x20what,\x20then\x20set\x20'+'confirm=true\x20only\x20after\x20they\x20approve.\x20If\x20the\x20user\x20declined,\x20do\x20NOT\x20retry\x20the\x20same\x20patch.');if(!b['patch']||typeof b['patch']!=='object'||Array['isArray'](b['patch']))throw new Error('\x27patch\x27\x20param\x20is\x20required\x20for\x20match_policy_patch\x20(e.g.\x20{\x22demand_to_supply\x22:\x20{\x22policy_id\x22:\x20\x22my_style\x22,\x20…}})');g={'action':'match_policy_patch',...patchMatchPolicyFile(b['patch'])};break;}case'match_policy_clear':{if(b['confirm']!==!![])throw new Error('match_policy_clear\x20removes\x20PERSISTENT\x20match-strategy\x20config\x20and\x20requires\x20explicit\x20human\x20'+'confirmation:\x20state\x20exactly\x20what\x20is\x20removed\x20(whole\x20file\x20vs\x20one\x20direction),\x20then\x20set\x20'+'confirm=true\x20only\x20after\x20the\x20user\x20approves.');const v=clearMatchPolicyFile(b['direction']);g={'action':'match_policy_clear','cleared':v['cleared'],'path':v['path'],'scope':v['scope'],'backup_path':v['backup_path']};break;}case'template_params_read':{const w=getTemplateParamFileState();g={'action':'template_params_read','path':w['path'],'exists':w['exists'],'error':w['error'],...w['comment']!==undefined?{'comment':w['comment']}:{},...w['defaults']!==undefined?{'defaults':w['defaults']}:{},...w['templates']!==undefined?{'templates':w['templates']}:{}};break;}case'template_params_patch':{if(b['confirm']!==!![])throw new Error('template_params_patch\x20writes\x20the\x20PERSISTENT\x20template-params.json\x20and\x20requires\x20explicit\x20human\x20'+'confirmation:\x20show\x20the\x20user\x20exactly\x20which\x20fee\x20params\x20change\x20from\x20what\x20to\x20what,\x20then\x20set\x20'+'confirm=true\x20only\x20after\x20they\x20approve.\x20If\x20the\x20user\x20declined,\x20do\x20NOT\x20retry\x20the\x20same\x20patch.');if(!b['patch']||typeof b['patch']!=='object'||Array['isArray'](b['patch']))throw new Error('\x27patch\x27\x20param\x20is\x20required\x20for\x20template_params_patch\x20(e.g.\x20{\x22defaults\x22:\x20{\x22review_window_days\x22:\x207},\x20\x22templates\x22:\x20{\x22travel/global-ota\x22:\x20{\x22escrow_release_days\x22:\x203}}})');g={'action':'template_params_patch',...patchTemplateParamFile(b['patch'])};break;}case'template_params_clear':{if(b['confirm']!==!![])throw new Error('template_params_clear\x20removes\x20PERSISTENT\x20template\x20business-parameter\x20config\x20and\x20requires\x20explicit\x20'+'human\x20confirmation:\x20state\x20exactly\x20what\x20is\x20removed\x20(whole\x20file\x20/\x20defaults\x20/\x20one\x20template\x20section),\x20'+'then\x20set\x20confirm=true\x20only\x20after\x20the\x20user\x20approves.');const x=clearTemplateParamFile(b['template']);g={'action':'template_params_clear','cleared':x['cleared'],'path':x['path'],'scope':x['scope'],...x['template_id']!==undefined?{'template_id':x['template_id']}:{},'backup_path':x['backup_path']};break;}case'store_dual_payout_get':{if(!b['account'])throw new Error('\x27account\x27\x20param\x20is\x20required\x20for\x20store_dual_payout_get\x20(the\x20store\x27s\x20signing\x20account)');const y=await resolvePolicyAccount(b['account']),z=getStoreDualPayoutPolicy(y);g={'action':'store_dual_payout_get','account':b['account'],'preauthorized':z?.['preauthorized']===!![],...z?.['authorized_at']?{'authorized_at':z['authorized_at']}:{},...z?.['note']?{'note':z['note']}:{},...z?.['network']?{'network':z['network']}:{}};break;}case'store_dual_payout_set':{if(!b['account'])throw new Error('\x27account\x27\x20param\x20is\x20required\x20for\x20store_dual_payout_set\x20(the\x20store\x27s\x20signing\x20account)');const A=await resolvePolicyAccount(b['account']),B=setStoreDualPayoutPreauthorization(A,{'confirm':b['confirm']===!![],...b['note']?{'note':b['note']}:{}});g={'action':'store_dual_payout_set','account':b['account'],'preauthorized':!![],'authorized_at':B['authorized_at'],...B['note']?{'note':B['note']}:{},'reminder':'Recorded\x20as\x20a\x20HUMAN\x20merchant\x20decision\x20(D-1).\x20The\x20allocation\x20gate\x20now\x20honors\x20acknowledge_dual_payout\x20'+'for\x20this\x20store.\x20Keep\x20the\x20note\x20meaningful\x20—\x20this\x20is\x20the\x20audit\x20trail\x20for\x20a\x20standing\x20commercial\x20netting\x20policy.'};break;}case'store_dual_payout_clear':{if(!b['account'])throw new Error('\x27account\x27\x20param\x20is\x20required\x20for\x20store_dual_payout_clear\x20(the\x20store\x27s\x20signing\x20account)');const C=await resolvePolicyAccount(b['account']),D=clearStoreDualPayoutPreauthorization(C);g={'action':'store_dual_payout_clear','account':b['account'],'cleared':D};break;}default:throw new Error('Unknown\x20config_operation\x20action:\x20'+String(c));}return{'content':[{'type':'text','text':JSON['stringify']({'result':g})}],'structuredContent':{'result':g}};}
1
+ import{listServices,getServiceInfo,toggle as a532a,setEnabled as a532b,reset as a532c}from'../../config/index.js';import{judgmentStatus,setJudgmentOverride,clearJudgmentOverride,clearJudgmentOverrides,patchUserJudgmentDoc,readUserJudgmentDocView}from'../../config/judgment.js';import{getStoreDualPayoutPolicy,setStoreDualPayoutPreauthorization,clearStoreDualPayoutPreauthorization}from'../../config/store-policy.js';import{getMatchPolicyFile,patchMatchPolicyFile,clearMatchPolicyFile}from'../../config/match-policy-file.js';import{getTemplateParamFileState,patchTemplateParamFile,clearTemplateParamFile}from'../../config/template-params.js';import{strictParse}from'../../schema/index.js';import{ConfigOperationInputSchema}from'../../schema/config/index.js';import{LocalMark}from'@wowok/wowok';async function resolvePolicyAccount(a){const b=a['trim']();if(/^0x[0-9a-fA-F]{64}$/['test'](b))return b['toLowerCase']();try{const c=await LocalMark['Instance']()['get_address'](b)['catch'](()=>undefined)??undefined;if(typeof c==='string'&&/^0x[0-9a-fA-F]{64}$/['test'](c))return c['toLowerCase']();}catch{}return b['toLowerCase']();}export async function handleConfigOperation(a){const b=strictParse(ConfigOperationInputSchema,a,'config_operation\x20input'),{action:c,service:d,path:e,value:f}=b;let g;switch(c){case'list':g={'action':'list','services':listServices()};break;case'toggle':{if(!d)throw new Error('\x27service\x27\x20param\x20is\x20required\x20for\x20toggle');const h=d,i=getServiceInfo(h);if(!i)throw new Error('Unknown\x20service:\x20'+h+'.\x20Use\x20action=\x27list\x27\x20to\x20see\x20all\x20valid\x20services.');if(h==='confirm_gate'&&i['enabled'])throw new Error('confirm_gate\x20cannot\x20be\x20disabled\x20at\x20runtime.\x20'+'Set\x20WOWOK_CONFIRM_GATE=0\x20in\x20the\x20server\x20environment\x20and\x20restart\x20if\x20you\x20really\x20want\x20it\x20off.');const j=a532a(h);g={'action':'toggle','service':h,'enabled':j,'reminder':i['reminder']};break;}case'disable':{if(!d)throw new Error('\x27service\x27\x20param\x20is\x20required\x20for\x20disable');const k=d,l=getServiceInfo(k);if(!l)throw new Error('Unknown\x20service:\x20'+k+'.\x20Use\x20action=\x27list\x27\x20to\x20see\x20all\x20valid\x20services.');if(k==='confirm_gate')throw new Error('confirm_gate\x20cannot\x20be\x20disabled\x20at\x20runtime.\x20'+'Set\x20WOWOK_CONFIRM_GATE=0\x20in\x20the\x20server\x20environment\x20and\x20restart\x20if\x20you\x20really\x20want\x20it\x20off.');a532b(k,![]),g={'action':'disable','service':k,'enabled':![],'reminder':l['reminder']};break;}case'enable':{if(!d)throw new Error('\x27service\x27\x20param\x20is\x20required\x20for\x20enable');const m=d,n=getServiceInfo(m);if(!n)throw new Error('Unknown\x20service:\x20'+m+'.\x20Use\x20action=\x27list\x27\x20to\x20see\x20all\x20valid\x20services.');a532b(m,!![]),g={'action':'enable','service':m,'enabled':!![],'reminder':n['reminder']};break;}case'reset':{if(!d)throw new Error('\x27service\x27\x20param\x20is\x20required\x20for\x20reset');const o=d,p=getServiceInfo(o);if(!p)throw new Error('Unknown\x20service:\x20'+o+'.\x20Use\x20action=\x27list\x27\x20to\x20see\x20all\x20valid\x20services.');a532c(o),g={'action':'reset','service':o,'enabled':getServiceInfo(o)?.['enabled'],'reminder':p['reminder'],'reset':!![]};break;}case'info':{if(!d)throw new Error('\x27service\x27\x20param\x20is\x20required\x20for\x20info');const q=d,r=getServiceInfo(q);if(!r)throw new Error('Unknown\x20service:\x20'+q+'.\x20Use\x20action=\x27list\x27\x20to\x20see\x20all\x20valid\x20services.');g={'action':'info',...r};break;}case'judgment_list':g={'action':'judgment_list',...judgmentStatus()};break;case'judgment_set':{if(!e)throw new Error('\x27path\x27\x20param\x20is\x20required\x20for\x20judgment_set\x20(dotted,\x20e.g.\x20\x27evaluation.weights.trust_reviews\x27)');if(!('value'in b))throw new Error('\x27value\x27\x20param\x20is\x20required\x20for\x20judgment_set');const t=setJudgmentOverride(e,f);if(!t['ok'])throw new Error(t['error']);g={'action':'judgment_set','path':e,'value':f,'applied':!![]};break;}case'judgment_reset':{const u=e?clearJudgmentOverride(e)?0x1:0x0:clearJudgmentOverrides();g={'action':'judgment_reset',...e?{'path':e}:{},'cleared':u};break;}case'judgment_doc_read':{g={'action':'judgment_doc_read',...readUserJudgmentDocView()};break;}case'judgment_doc_patch':{if(b['confirm']!==!![])throw new Error('judgment_doc_patch\x20writes\x20the\x20PERSISTENT\x20user\x20judgment\x20document\x20and\x20requires\x20explicit\x20human\x20'+'confirmation:\x20show\x20the\x20user\x20exactly\x20which\x20paths\x20change\x20from\x20what\x20to\x20what,\x20then\x20set\x20'+'confirm=true\x20only\x20after\x20they\x20approve.\x20If\x20the\x20user\x20declined,\x20do\x20NOT\x20retry\x20the\x20same\x20patch.');if(!b['patch']||typeof b['patch']!=='object'||Array['isArray'](b['patch']))throw new Error('\x27patch\x27\x20param\x20is\x20required\x20for\x20judgment_doc_patch\x20(a\x20partial\x20judgment\x20document\x20object,\x20e.g.\x20{\x22evaluation\x22:\x20{\x22weights\x22:\x20{…}}})');g={'action':'judgment_doc_patch',...patchUserJudgmentDoc(b['patch'])};break;}case'match_policy_read':{g={'action':'match_policy_read',...getMatchPolicyFile()};break;}case'match_policy_patch':{if(b['confirm']!==!![])throw new Error('match_policy_patch\x20writes\x20the\x20PERSISTENT\x20match-policy.json\x20and\x20requires\x20explicit\x20human\x20'+'confirmation:\x20show\x20the\x20user\x20exactly\x20which\x20values\x20change\x20from\x20what\x20to\x20what,\x20then\x20set\x20'+'confirm=true\x20only\x20after\x20they\x20approve.\x20If\x20the\x20user\x20declined,\x20do\x20NOT\x20retry\x20the\x20same\x20patch.');if(!b['patch']||typeof b['patch']!=='object'||Array['isArray'](b['patch']))throw new Error('\x27patch\x27\x20param\x20is\x20required\x20for\x20match_policy_patch\x20(e.g.\x20{\x22demand_to_supply\x22:\x20{\x22policy_id\x22:\x20\x22my_style\x22,\x20…}})');g={'action':'match_policy_patch',...patchMatchPolicyFile(b['patch'])};break;}case'match_policy_clear':{if(b['confirm']!==!![])throw new Error('match_policy_clear\x20removes\x20PERSISTENT\x20match-strategy\x20config\x20and\x20requires\x20explicit\x20human\x20'+'confirmation:\x20state\x20exactly\x20what\x20is\x20removed\x20(whole\x20file\x20vs\x20one\x20direction),\x20then\x20set\x20'+'confirm=true\x20only\x20after\x20the\x20user\x20approves.');const v=clearMatchPolicyFile(b['direction']);g={'action':'match_policy_clear','cleared':v['cleared'],'path':v['path'],'scope':v['scope'],'backup_path':v['backup_path']};break;}case'template_params_read':{const w=getTemplateParamFileState();g={'action':'template_params_read','path':w['path'],'exists':w['exists'],'error':w['error'],...w['comment']!==undefined?{'comment':w['comment']}:{},...w['defaults']!==undefined?{'defaults':w['defaults']}:{},...w['templates']!==undefined?{'templates':w['templates']}:{}};break;}case'template_params_patch':{if(b['confirm']!==!![])throw new Error('template_params_patch\x20writes\x20the\x20PERSISTENT\x20template-params.json\x20and\x20requires\x20explicit\x20human\x20'+'confirmation:\x20show\x20the\x20user\x20exactly\x20which\x20fee\x20params\x20change\x20from\x20what\x20to\x20what,\x20then\x20set\x20'+'confirm=true\x20only\x20after\x20they\x20approve.\x20If\x20the\x20user\x20declined,\x20do\x20NOT\x20retry\x20the\x20same\x20patch.');if(!b['patch']||typeof b['patch']!=='object'||Array['isArray'](b['patch']))throw new Error('\x27patch\x27\x20param\x20is\x20required\x20for\x20template_params_patch\x20(e.g.\x20{\x22defaults\x22:\x20{\x22review_window_days\x22:\x207},\x20\x22templates\x22:\x20{\x22travel/global-ota\x22:\x20{\x22escrow_release_days\x22:\x203}}})');g={'action':'template_params_patch',...patchTemplateParamFile(b['patch'])};break;}case'template_params_clear':{if(b['confirm']!==!![])throw new Error('template_params_clear\x20removes\x20PERSISTENT\x20template\x20business-parameter\x20config\x20and\x20requires\x20explicit\x20'+'human\x20confirmation:\x20state\x20exactly\x20what\x20is\x20removed\x20(whole\x20file\x20/\x20defaults\x20/\x20one\x20template\x20section),\x20'+'then\x20set\x20confirm=true\x20only\x20after\x20the\x20user\x20approves.');const x=clearTemplateParamFile(b['template']);g={'action':'template_params_clear','cleared':x['cleared'],'path':x['path'],'scope':x['scope'],...x['template_id']!==undefined?{'template_id':x['template_id']}:{},'backup_path':x['backup_path']};break;}case'store_dual_payout_get':{if(!b['account'])throw new Error('\x27account\x27\x20param\x20is\x20required\x20for\x20store_dual_payout_get\x20(the\x20store\x27s\x20signing\x20account)');const y=await resolvePolicyAccount(b['account']),z=getStoreDualPayoutPolicy(y);g={'action':'store_dual_payout_get','account':b['account'],'preauthorized':z?.['preauthorized']===!![],...z?.['authorized_at']?{'authorized_at':z['authorized_at']}:{},...z?.['note']?{'note':z['note']}:{},...z?.['network']?{'network':z['network']}:{}};break;}case'store_dual_payout_set':{if(!b['account'])throw new Error('\x27account\x27\x20param\x20is\x20required\x20for\x20store_dual_payout_set\x20(the\x20store\x27s\x20signing\x20account)');const A=await resolvePolicyAccount(b['account']),B=setStoreDualPayoutPreauthorization(A,{'confirm':b['confirm']===!![],...b['note']?{'note':b['note']}:{}});g={'action':'store_dual_payout_set','account':b['account'],'preauthorized':!![],'authorized_at':B['authorized_at'],...B['note']?{'note':B['note']}:{},'reminder':'Recorded\x20as\x20a\x20HUMAN\x20merchant\x20decision\x20(D-1).\x20The\x20allocation\x20gate\x20now\x20honors\x20acknowledge_dual_payout\x20'+'for\x20this\x20store.\x20Keep\x20the\x20note\x20meaningful\x20—\x20this\x20is\x20the\x20audit\x20trail\x20for\x20a\x20standing\x20commercial\x20netting\x20policy.'};break;}case'store_dual_payout_clear':{if(!b['account'])throw new Error('\x27account\x27\x20param\x20is\x20required\x20for\x20store_dual_payout_clear\x20(the\x20store\x27s\x20signing\x20account)');const C=await resolvePolicyAccount(b['account']),D=clearStoreDualPayoutPreauthorization(C);g={'action':'store_dual_payout_clear','account':b['account'],'cleared':D};break;}default:throw new Error('Unknown\x20config_operation\x20action:\x20'+String(c));}return{'content':[{'type':'text','text':JSON['stringify']({'result':g})}],'structuredContent':{'result':g}};}
@@ -1 +1 @@
1
- import{CallProgress}from'@wowok/wowok';import{batchQueryObjectsByIds,fetchMachineNodes}from'../../graph/onchain/sdk-batch.js';import{loadGuardJsonFromChain}from'../../knowledge/guard-submission-brief.js';import{TASK_BINDING_SLOT,ONCE_SLOT_BYTES}from'../../knowledge/onchain-constants.js';export function findEntryEdges(a){const b=[];for(const c of Array['isArray'](a)?a:[]){for(const d of Array['isArray'](c?.['pairs'])?c['pairs']:[]){if(d?.['prev_node']!=='')continue;for(const e of Array['isArray'](d['forwards'])?d['forwards']:[]){if(!e?.['name'])continue;b['push']({'forward':e,'target':c['name'],'threshold':Number(d['threshold']??0x0)});}}}return b;}export function entrySlotSuggestion(a,b){const c=Number(a['identifier']),d=String(a['value_type']??''),e=typeof a['name']==='string'&&a['name']?'\x20(\x22'+a['name']+'\x22)':'';if(c===TASK_BINDING_SLOT)return b?'the\x20protocol\x20task-binding\x20slot\x20—\x20the\x20Order\x20address\x20this\x20workflow\x20is\x20bound\x20to:\x20'+b:'the\x20protocol\x20task-binding\x20slot\x20—\x20the\x20Order\x20address\x20this\x20workflow\x20is\x20bound\x20to\x20(the\x20order\x20that\x20owns\x20the\x20Progress)';if(c===ONCE_SLOT_BYTES)return'the\x20protocol\x20once-key\x20bytes\x20(vector<u8>)\x20—\x20order-anchored\x20edges\x20pass\x20[1]+bcs(order);\x20'+'period-keyed\x20edges\x20pass\x20the\x20guard-pinned\x20key\x20(e.g.\x20\x22period-<N>\x22)\x20as\x20bytes';if(d['includes']('Address'))return'the\x20address\x20this\x20entry\x20leg\x20constrains'+e+'\x20—\x20the\x20Entity\x20address\x20the\x20guard\x20expression\x20pins\x20'+'(permission-gated\x20leg)\x20or\x20the\x20object\x20anchor\x20the\x20expression\x20compares';if(d['includes']('Bool'))return'the\x20boolean\x20flag'+e+'\x20the\x20entry\x20guard\x20expression\x20consumes';if(d['includes']('u64')||d['includes']('u32')||d['includes']('u128')||d['includes']('u8'))return'the\x20human\x20quantity\x20this\x20slot\x20constrains'+e+',\x20in\x20base\x20units\x20(the\x20claimed\x20amount\x20/\x20'+'threshold\x20the\x20entry\x20guard\x20expression\x20compares\x20against)';return'the\x20'+(d||'typed')+'\x20value'+e+'\x20the\x20entry\x20guard\x20expression\x20consumes\x20—\x20read\x20the\x20guard\x27s\x20root\x20'+'expression\x20to\x20derive\x20it\x20(analyze_guard_semantics)';}export function entryGuardSlotRequirements(a,b){const c=Array['isArray'](a?.['table'])?a['table']:[],d=[];for(const e of c){if(!e||typeof e!=='object')continue;const f=e;if(f['b_submission']!==!![])continue;const g=Number(f['identifier']);if(!Number['isFinite'](g))continue;const h=typeof f['value_type']==='string'?f['value_type']:String(f['value_type']??'');d['push']({'identifier':g,'value_type':h,...typeof f['name']==='string'&&f['name']?{'name':f['name']}:{},'suggestion':entrySlotSuggestion({'identifier':g,'value_type':h,'name':typeof f['name']==='string'?f['name']:undefined},b),'autofillable':g===TASK_BINDING_SLOT});}return d;}function isObj(a){return a!=null&&typeof a==='object'&&!Array['isArray'](a);}function childrenOf(a){if(Array['isArray'](a['nodes']))return a['nodes']['filter'](isObj);if(isObj(a['node']))return[a['node']];return[];}const ANCHOR_QUERY_TYPES=new Set(['query_progress_history_time','query_progress_history_time_or_zero']);export function guardTimeAnchors(a){const b=new Set(),c=(d,e)=>{if(e>0xc||!isObj(d))return;if(typeof d['type']==='string'&&ANCHOR_QUERY_TYPES['has'](d['type'])){const f=isObj(d['where'])?d['where']:{};if(typeof f['nextNode']==='string'&&f['nextNode'])b['add'](f['nextNode']);}for(const g of childrenOf(d))c(g,e+0x1);};return c(a,0x0),[...b];}export function classifyEntryFire(a,b){if(a['length']!==0x1)return{'kind':'recipe','edges':a,'reports':b,'reason':a['length']===0x0?'no\x20entry\x20edge\x20exists\x20on\x20the\x20machine\x20topology':a['length']+'\x20entry\x20forwards\x20share\x20the\x20entry\x20state\x20—\x20which\x20one\x20to\x20fire\x20is\x20a\x20business\x20decision'};const c=a[0x0],d=c['forward']['namedOperator']===''&&c['forward']['weight']>=c['threshold'],e=b['find'](f=>f['edge']===c);if(!c['forward']['guard']){if(!d)return{'kind':'recipe','edges':a,'reports':b,'reason':'the\x20entry\x20forward\x20needs\x20weight\x20'+c['forward']['weight']+'\x20>=\x20threshold\x20'+c['threshold']+((c['forward']['namedOperator']?'\x20and\x20namedOperator\x20\x22'+c['forward']['namedOperator']+'\x22\x20(not\x20the\x20order\x20holder)':'')+'\x20to\x20fire')};return{'kind':'open','edge':c};}if(!e||e['unreadable']||!e['guard'])return{'kind':'recipe','edges':a,'reports':b,'reason':'the\x20entry\x20guard\x20could\x20not\x20be\x20read\x20on-chain\x20—\x20refusing\x20to\x20guess\x20its\x20requirements'};if(!d)return{'kind':'recipe','edges':a,'reports':b,'reason':'the\x20entry\x20forward\x20needs\x20weight\x20'+c['forward']['weight']+'\x20>=\x20threshold\x20'+c['threshold']+((c['forward']['namedOperator']?'\x20and\x20namedOperator\x20\x22'+c['forward']['namedOperator']+'\x22\x20(not\x20the\x20order\x20holder)':'')+'\x20to\x20fire')};if(e['slots']['length']>0x0)return{'kind':'recipe','edges':a,'reports':b,'reason':'the\x20entry\x20guard\x20declares\x20'+e['slots']['length']+'\x20submission\x20slot(s)\x20that\x20only\x20the\x20caller\x20can\x20fill'};if(e['has_rely'])return{'kind':'recipe','edges':a,'reports':b,'reason':'the\x20entry\x20guard\x20relies\x20on\x20other\x20guards\x20(rely\x20chain)\x20—\x20out\x20of\x20the\x20auto-ignite\x20posture'};return{'kind':'signature_guard','edge':c,'guard':e['guard']};}export function buildForwardCallTemplate(a,b,c,d){return'onchain_operations\x20{\x20operation_type:\x20\x27progress\x27,\x20data:\x20{\x20object:\x20\x27'+a+'\x27,\x20'+('task:\x20\x27'+b+'\x27,\x20operate:\x20{\x20op:\x20\x27next\x27,\x20operation:\x20{\x20forward:\x20\x27'+c+'\x27,\x20')+('next_node_name:\x20\x27'+d+'\x27\x20}\x20}\x20}\x20}');}export function buildSubmissionEnvelopeTemplate(a,b,c){const d=b['map'](e=>{const f=e['identifier']===TASK_BINDING_SLOT&&c?c:'<'+(e['value_type']||'value')+'\x20—\x20see\x20suggestion>';return'{\x20identifier:\x20'+e['identifier']+',\x20value:\x20\x27'+f+'\x27,\x20value_type:\x20\x27'+e['value_type']+'\x27,\x20name:\x20\x27\x27,\x20b_submission:\x20true\x20}';});return'{\x20type:\x20\x27submission\x27,\x20guard:\x20[{\x20object:\x20\x27'+a+'\x27,\x20impack:\x20true\x20}],\x20'+('submission:\x20[{\x20guard:\x20\x27'+a+'\x27,\x20submission:\x20['+d['join'](',\x20')+']\x20}]\x20}\x20—\x20')+'attach\x20as\x20the\x20TOP-LEVEL\x20submission\x20field\x20of\x20the\x20SAME\x20tool\x20call\x20(a\x20sibling\x20of\x20data\x20and\x20env)';}export function buildEntryEdgePendingRecipe(a){const {machineAddr:b,progressAddr:c,orderAddr:d,edges:e,reports:f,reason:g}=a,h=[];h['push']('ENTRY\x20EDGE\x20PENDING\x20—\x20the\x20order\x20is\x20funded\x20but\x20the\x20workflow\x20has\x20NOT\x20started\x20'+'(chain\x20truth:\x20a\x20fresh\x20Progress\x20sits\x20at\x20the\x20reserved\x20empty\x20entry\x20node;\x20the\x20chain\x20only\x20asserts\x20'+'the\x20entry\x20edge\x20EXISTS\x20at\x20publish\x20(E_NO_ENTRY_EDGE)\x20and\x20service\x20order\x20new\x20does\x20NOT\x20fire\x20it\x20—\x20'+'every\x20order\x20needs\x20ONE\x20explicit\x20entry-ignition\x20transaction).'),h['push']('\x20\x20•\x20entry\x20forward(s):\x20'+e['map'](k=>'\x22'+k['forward']['name']+'\x22\x20→\x20\x22'+k['target']+'\x22'+((k['forward']['guard']?'\x20[guarded]':'\x20[unguarded]')+'\x20(threshold\x20'+k['threshold']+')'))['join'](';\x20')+'.');for(const k of f){if(!k['guard'])continue;if(k['slots']['length']===0x0)h['push']('\x20\x20•\x20guard\x20'+k['guard']+(k['guard_name']?'\x20(\x22'+k['guard_name']+'\x22)':'')+':\x20signature-only\x20'+'(no\x20submission\x20slots).');else{h['push']('\x20\x20•\x20guard\x20'+k['guard']+(k['guard_name']?'\x20(\x22'+k['guard_name']+'\x22)':'')+'\x20requires\x20'+(k['slots']['length']+'\x20submission\x20slot(s):'));for(const l of k['slots']){h['push']('\x20\x20\x20\x20\x20\x20-\x20slot\x20'+l['identifier']+':\x20value_type='+(l['value_type']||'?')+((l['name']?'\x20(name:\x20\x22'+l['name']+'\x22)':'')+'\x20—\x20'+l['suggestion'])+(''+(l['autofillable']?'\x20[auto-fillable:\x20this\x20order\x27s\x20address]':'')));}}k['time_anchors']['length']>0x0&&h['push']('\x20\x20•\x20MC-ENTRYEDGE-01:\x20this\x20entry\x20guard\x20queries\x20progress\x20HISTORY\x20time\x20(anchor\x20node(s):\x20'+(k['time_anchors']['map'](m=>'\x22'+m+'\x22')['join'](',\x20')+').\x20The\x20anchor\x20counts\x20FROM\x20entry\x20ignition\x20—\x20')+'while\x20the\x20entry\x20is\x20unfired\x20the\x20order\x20cannot\x20advance\x20and\x20the\x20anchor\x20query\x20aborts\x20(the\x20'+'Progress\x20history\x20has\x20no\x20records).\x20Fire\x20the\x20entry\x20FIRST,\x20then\x20evaluate\x20the\x20window.');}const i=e[0x0];h['push']('\x20\x20•\x20why\x20not\x20auto-fired:\x20'+g+'.');if(e['length']===0x1&&i['forward']['guard']){const m=f['find'](n=>n['edge']===i);m?.['guard']&&m['slots']['length']>0x0?(h['push']('\x20\x20•\x20READY-TO-RUN\x20(one\x20call):\x20'+buildForwardCallTemplate(c,d,i['forward']['name'],i['target'])),h['push']('\x20\x20\x20\x20...\x20with\x20submission:\x20'+buildSubmissionEnvelopeTemplate(m['guard'],m['slots'],d))):h['push']('\x20\x20•\x20READY-TO-RUN\x20(one\x20call):\x20'+buildForwardCallTemplate(c,d,i['forward']['name'],i['target']));}else h['push']('\x20\x20•\x20FORWARD\x20CALL\x20TEMPLATE:\x20'+buildForwardCallTemplate(c,d,'<entry\x20forward>','<target>'));h['push']('\x20\x20•\x20Skipping\x20ignition\x20=\x20the\x20order\x20stalls\x20at\x20the\x20empty\x20entry\x20state\x20—\x20invisible\x20to\x20workflow\x20'+'guidance,\x20un-advanceable,\x20and\x20any\x20history-time\x20anchor\x20in\x20the\x20workflow\x20aborts.');const j={'status':'pending','machine':b,'progress':c,'order':d,'forward':e[0x0]?.['forward']['name']??'','target_node':e[0x0]?.['target']??'',...e[0x0]?.['threshold']!==undefined?{'threshold':e[0x0]['threshold']}:{},...f[0x0]?.['guard']?{'guard':f[0x0]['guard']}:{},'guard_slots':f['flatMap'](n=>n['slots']),...f['some'](n=>n['time_anchors']['length']>0x0)?{'time_anchors':f['flatMap'](n=>n['time_anchors'])}:{},'forward_call_template':e['length']===0x1?buildForwardCallTemplate(c,d,e[0x0]['forward']['name'],e[0x0]['target']):buildForwardCallTemplate(c,d,'<entry\x20forward>','<target>'),...e['length']===0x1&&f[0x0]?.['guard']&&f[0x0]['slots']['length']>0x0?{'submission_envelope_template':buildSubmissionEnvelopeTemplate(f[0x0]['guard'],f[0x0]['slots'],d)}:{},'note':g};return{'note':h['join']('\x0a'),'structured':j};}async function toAddr(a){if(typeof a!=='string'||a['length']===0x0)return undefined;if(a['startsWith']('0x'))return a;try{const {LocalMark:b}=await import('@wowok/wowok');return await b['Instance']()['get_address'](a)??undefined;}catch{return undefined;}}export async function resolveOrderEntryContext(a,b){const c=await toAddr(a);if(!c)return undefined;const d=await batchQueryObjectsByIds([c],b,!![]),e=d?.[0x0]?.['data']??d?.[0x0],f=typeof e?.['progress']==='string'?e['progress']:undefined;if(!f)return undefined;const g=await batchQueryObjectsByIds([f],b,!![]),h=g?.[0x0]?.['data']??g?.[0x0];if(typeof h?.['current']==='string'&&h['current']!=='')return undefined;const i=typeof h?.['machine']==='string'?h['machine']:undefined;if(!i)return undefined;const j=await fetchMachineNodes(i,b,![]),k=findEntryEdges(j);if(k['length']===0x0)return undefined;return{'orderAddr':c,'progressAddr':f,'machineAddr':i,'edges':k,'nodes':j};}export async function readEntryGuardReports(a,b,c){const d=[];for(const e of a){const f=e['forward']['guard'];if(!f){d['push']({'edge':e,'slots':[],'time_anchors':[]});continue;}const g=await loadGuardJsonFromChain(f,c)['catch'](()=>undefined);if(!g){d['push']({'edge':e,'guard':await toAddr(f),'slots':[],'time_anchors':[],'unreadable':!![]});continue;}const h=entryGuardSlotRequirements(g['json'],b),i=guardTimeAnchors(g['json']['root']),j=g['json']['rely'],k=Array['isArray'](j?.['guards'])&&j['guards']['length']>0x0,l={'edge':e,'guard':g['guard'],...g['name']?{'guard_name':g['name']}:{},'slots':h,'time_anchors':i,...k?{'has_rely':!![]}:{}};d['push'](l);}return d;}export async function fireEntryEdgeForward(a,b){try{const c=new CallProgress({'object':b['progressAddr'],'task':b['orderAddr'],'operate':{'op':'next','operation':{'forward':a['edge']['forward']['name'],'next_node_name':a['edge']['target']}}}),d=a['kind']==='signature_guard'?await c['call_with_submission'](b['env'],{'type':'submission','guard':[{'object':a['guard'],'impack':!![]}],'submission':[]}):await c['call'](b['env']),f=!!d&&typeof d==='object'&&d?.['effects']?.['status']?.['status']==='success';if(f)return{'ok':!![],'digest':d?.['digest']};const g=d&&typeof d==='object'?String(d?.['effects']?.['status']?.['error']??d?.['error']??'unknown\x20rejection'):'unknown\x20rejection';return{'ok':![],'error':g};}catch(h){return{'ok':![],'error':String(h?.['message']??h)};}}export async function entryEdgeStepAfterOrderNew(a,b){if(b?.['dry_run']===!![])return undefined;try{const c=await resolveOrderEntryContext(a,b?.['network']);if(!c)return undefined;const d=await readEntryGuardReports(c['edges'],c['orderAddr'],b?.['network']),f=classifyEntryFire(c['edges'],d);if(f['kind']==='recipe')return buildEntryEdgePendingRecipe({'machineAddr':c['machineAddr'],'progressAddr':c['progressAddr'],'orderAddr':c['orderAddr'],'edges':c['edges'],'reports':d,'reason':f['reason']});const g=await fireEntryEdgeForward(f,{'progressAddr':c['progressAddr'],'orderAddr':c['orderAddr'],'env':b});if(!g)return undefined;const h=f['kind'],i=f['kind']==='signature_guard'?'\x20(signature-only\x20guard\x20'+f['guard']+'\x20evaluated\x20STRICTLY\x20via\x20an\x20ephemeral\x20in-PTB\x20passport\x20—\x20'+'a\x20false\x20result\x20would\x20have\x20aborted\x20the\x20transaction,\x20nothing\x20was\x20bypassed)':'';if(g['ok']){const k={'status':'fired','fired_via':h,'machine':c['machineAddr'],'progress':c['progressAddr'],'order':c['orderAddr'],'forward':f['edge']['forward']['name'],'target_node':f['edge']['target'],'threshold':f['edge']['threshold'],...f['kind']==='signature_guard'?{'guard':f['guard']}:{},'guard_slots':[],'forward_call_template':buildForwardCallTemplate(c['progressAddr'],c['orderAddr'],f['edge']['forward']['name'],f['edge']['target']),'note':'fired\x20in-session\x20('+h+')'};return{'note':'ENTRY\x20EDGE\x20FIRED'+(h==='signature_guard'?'\x20(signature-only\x20guard)':'')+':\x20'+('\x22'+f['edge']['forward']['name']+'\x22\x20→\x20\x22'+f['edge']['target']+'\x22'+i+'\x20—\x20digest\x20'+(g['digest']??'n/a')+'.\x20')+'The\x20workflow\x20has\x20STARTED:\x20the\x20order\x20left\x20the\x20empty\x20entry\x20node,\x20counterparties\x20can\x20see\x20and\x20'+'act\x20on\x20it,\x20and\x20history-time\x20anchors\x20now\x20have\x20their\x20ignition\x20instant.','structured':k};}const j=buildEntryEdgePendingRecipe({'machineAddr':c['machineAddr'],'progressAddr':c['progressAddr'],'orderAddr':c['orderAddr'],'edges':c['edges'],'reports':d,'reason':'the\x20in-session\x20ignition\x20attempt\x20was\x20REJECTED:\x20'+String(g['error']??'')['slice'](0x0,0x12c)});return j;}catch(l){return{'note':'ENTRY\x20EDGE\x20PENDING\x20(probe\x20failed:\x20'+String(l?.['message']??l)['slice'](0x0,0xc8)+'):\x20the\x20order\x20may\x20'+'still\x20sit\x20at\x20the\x20empty\x20entry\x20state\x20—\x20check\x20the\x20Progress\x27s\x20current\x20node\x20and\x20fire\x20the\x20entry\x20'+'forward\x20if\x20the\x20workflow\x20has\x20not\x20started\x20(query\x20the\x20order,\x20then\x20progress\x20operate\x20\x27next\x27).','structured':{'status':'pending','machine':'','progress':'','order':'','forward':'','target_node':'','guard_slots':[],'forward_call_template':'','note':String(l?.['message']??l)['slice'](0x0,0xc8)}};}}export function entryEdgeTimeAnchorAdvisory(a){const b=a['filter'](d=>d['time_anchors']['length']>0x0);if(b['length']===0x0)return undefined;const c=b['map'](d=>'\x22'+d['edge']['forward']['name']+'\x22\x20→\x20\x22'+d['edge']['target']+'\x22'+(''+(d['guard']?'\x20(guard\x20'+d['guard']+(d['guard_name']?'\x20\x22'+d['guard_name']+'\x22':'')+')':''))+('\x20anchored\x20at\x20'+d['time_anchors']['map'](e=>'\x22'+e+'\x22')['join'](',\x20')));return'MC-ENTRYEDGE-01\x20(entry-edge\x20time\x20anchor):\x20an\x20ENTRY-edge\x20guard\x20queries\x20progress\x20HISTORY\x20time\x20—\x20'+(c['join'](';\x20')+'.\x20Chain\x20truth\x20(machine.move):\x20a\x20fresh\x20Progress\x20starts\x20at\x20the\x20reserved\x20empty\x20entry\x20')+'node\x20and\x20publish\x20only\x20asserts\x20the\x20entry\x20edge\x20EXISTS\x20(E_NO_ENTRY_EDGE)\x20—\x20time\x20anchors\x20count\x20FROM\x20entry\x20'+'ignition.\x20An\x20order\x20whose\x20entry\x20forward\x20was\x20never\x20fired\x20cannot\x20advance,\x20and\x20evaluating\x20its\x20anchor\x20'+'query\x20aborts\x20(the\x20Progress\x20history\x20has\x20no\x20records\x20to\x20read).\x20Every\x20order\x20needs\x20an\x20explicit\x20'+'entry-ignition\x20transaction\x20(service\x20order\x20new\x20does\x20NOT\x20fire\x20the\x20entry;\x20this\x20MCP\x20fires\x20open\x20/\x20'+'signature-only\x20entries\x20automatically\x20after\x20order\x20new\x20and\x20otherwise\x20returns\x20an\x20ENTRY\x20EDGE\x20PENDING\x20'+'recipe)\x20—\x20make\x20sure\x20the\x20operator\x20flow\x20ignites\x20entries\x20BEFORE\x20any\x20window\x20on\x20these\x20edges\x20matters.';}export async function entryEdgePublishAdvisory(a,b){try{const c=await fetchMachineNodes(a,b,!![]),d=findEntryEdges(c);if(d['length']===0x0)return undefined;const e=await readEntryGuardReports(d,'',b);return entryEdgeTimeAnchorAdvisory(e);}catch{return undefined;}}
1
+ import{CallProgress}from'@wowok/wowok';import{batchQueryObjectsByIds,fetchMachineNodes}from'../../graph/onchain/sdk-batch.js';import{loadGuardJsonFromChain}from'../../knowledge/guard-submission-brief.js';import{TASK_BINDING_SLOT,ONCE_SLOT_BYTES}from'../../knowledge/onchain-constants.js';export function findEntryEdges(a){const b=[];for(const c of Array['isArray'](a)?a:[]){for(const d of Array['isArray'](c?.['pairs'])?c['pairs']:[]){if(d?.['prev_node']!=='')continue;for(const e of Array['isArray'](d['forwards'])?d['forwards']:[]){if(!e?.['name'])continue;b['push']({'forward':e,'target':c['name'],'threshold':Number(d['threshold']??0x0)});}}}return b;}export function entrySlotSuggestion(a,b){const c=Number(a['identifier']),d=String(a['value_type']??''),e=typeof a['name']==='string'&&a['name']?'\x20(\x22'+a['name']+'\x22)':'';if(c===TASK_BINDING_SLOT)return b?'the\x20protocol\x20task-binding\x20slot\x20—\x20the\x20Order\x20address\x20this\x20workflow\x20is\x20bound\x20to:\x20'+b:'the\x20protocol\x20task-binding\x20slot\x20—\x20the\x20Order\x20address\x20this\x20workflow\x20is\x20bound\x20to\x20(the\x20order\x20that\x20owns\x20the\x20Progress)';if(c===ONCE_SLOT_BYTES)return'the\x20protocol\x20once-key\x20bytes\x20(vector<u8>)\x20—\x20order-anchored\x20edges\x20pass\x20[1]+bcs(order);\x20'+'period-keyed\x20edges\x20pass\x20the\x20guard-pinned\x20key\x20(e.g.\x20\x22period-<N>\x22)\x20as\x20bytes';if(d['includes']('Address'))return'the\x20address\x20this\x20entry\x20leg\x20constrains'+e+'\x20—\x20the\x20Entity\x20address\x20the\x20guard\x20expression\x20pins\x20'+'(permission-gated\x20leg)\x20or\x20the\x20object\x20anchor\x20the\x20expression\x20compares';if(d['includes']('Bool'))return'the\x20boolean\x20flag'+e+'\x20the\x20entry\x20guard\x20expression\x20consumes';if(d['includes']('u64')||d['includes']('u32')||d['includes']('u128')||d['includes']('u8'))return'the\x20human\x20quantity\x20this\x20slot\x20constrains'+e+',\x20in\x20base\x20units\x20(the\x20claimed\x20amount\x20/\x20'+'threshold\x20the\x20entry\x20guard\x20expression\x20compares\x20against)';return'the\x20'+(d||'typed')+'\x20value'+e+'\x20the\x20entry\x20guard\x20expression\x20consumes\x20—\x20read\x20the\x20guard\x27s\x20root\x20'+'expression\x20to\x20derive\x20it\x20(analyze_guard_semantics)';}export function entryGuardSlotRequirements(a,b){const c=Array['isArray'](a?.['table'])?a['table']:[],d=[];for(const e of c){if(!e||typeof e!=='object')continue;const f=e;if(f['b_submission']!==!![])continue;const g=Number(f['identifier']);if(!Number['isFinite'](g))continue;const h=typeof f['value_type']==='string'?f['value_type']:String(f['value_type']??'');d['push']({'identifier':g,'value_type':h,...typeof f['name']==='string'&&f['name']?{'name':f['name']}:{},'suggestion':entrySlotSuggestion({'identifier':g,'value_type':h,'name':typeof f['name']==='string'?f['name']:undefined},b),'autofillable':g===TASK_BINDING_SLOT});}return d;}function isObj(a){return a!=null&&typeof a==='object'&&!Array['isArray'](a);}function childrenOf(a){if(Array['isArray'](a['nodes']))return a['nodes']['filter'](isObj);if(isObj(a['node']))return[a['node']];return[];}const ANCHOR_QUERY_TYPES=new Set(['query_progress_history_time','query_progress_history_time_or_zero']);export function guardTimeAnchors(a){const b=new Set(),c=(d,e)=>{if(e>0xc||!isObj(d))return;if(typeof d['type']==='string'&&ANCHOR_QUERY_TYPES['has'](d['type'])){const f=isObj(d['where'])?d['where']:{};if(typeof f['nextNode']==='string'&&f['nextNode'])b['add'](f['nextNode']);}for(const g of childrenOf(d))c(g,e+0x1);};return c(a,0x0),[...b];}export function classifyEntryFire(a,b){if(a['length']!==0x1)return{'kind':'recipe','edges':a,'reports':b,'reason':a['length']===0x0?'no\x20entry\x20edge\x20exists\x20on\x20the\x20machine\x20topology':a['length']+'\x20entry\x20forwards\x20share\x20the\x20entry\x20state\x20—\x20which\x20one\x20to\x20fire\x20is\x20a\x20business\x20decision'};const c=a[0x0],d=c['forward']['namedOperator']===''&&c['forward']['weight']>=c['threshold'],e=b['find'](f=>f['edge']===c);if(!c['forward']['guard']){if(!d)return{'kind':'recipe','edges':a,'reports':b,'reason':'the\x20entry\x20forward\x20needs\x20weight\x20'+c['forward']['weight']+'\x20>=\x20threshold\x20'+c['threshold']+((c['forward']['namedOperator']?'\x20and\x20namedOperator\x20\x22'+c['forward']['namedOperator']+'\x22\x20(not\x20the\x20order\x20holder)':'')+'\x20to\x20fire')};return{'kind':'open','edge':c};}if(!e||e['unreadable']||!e['guard'])return{'kind':'recipe','edges':a,'reports':b,'reason':'the\x20entry\x20guard\x20could\x20not\x20be\x20read\x20on-chain\x20—\x20refusing\x20to\x20guess\x20its\x20requirements'};if(!d)return{'kind':'recipe','edges':a,'reports':b,'reason':'the\x20entry\x20forward\x20needs\x20weight\x20'+c['forward']['weight']+'\x20>=\x20threshold\x20'+c['threshold']+((c['forward']['namedOperator']?'\x20and\x20namedOperator\x20\x22'+c['forward']['namedOperator']+'\x22\x20(not\x20the\x20order\x20holder)':'')+'\x20to\x20fire')};if(e['slots']['length']>0x0)return{'kind':'recipe','edges':a,'reports':b,'reason':'the\x20entry\x20guard\x20declares\x20'+e['slots']['length']+'\x20submission\x20slot(s)\x20that\x20only\x20the\x20caller\x20can\x20fill'};if(e['has_rely'])return{'kind':'recipe','edges':a,'reports':b,'reason':'the\x20entry\x20guard\x20relies\x20on\x20other\x20guards\x20(rely\x20chain)\x20—\x20out\x20of\x20the\x20auto-ignite\x20posture'};return{'kind':'signature_guard','edge':c,'guard':e['guard']};}export function buildForwardCallTemplate(a,b,c,d){return'onchain_operations\x20{\x20operation_type:\x20\x27progress\x27,\x20data:\x20{\x20object:\x20\x27'+a+'\x27,\x20'+('task:\x20\x27'+b+'\x27,\x20operate:\x20{\x20op:\x20\x27next\x27,\x20operation:\x20{\x20forward:\x20\x27'+c+'\x27,\x20')+('next_node_name:\x20\x27'+d+'\x27\x20}\x20}\x20}\x20}');}export function buildSubmissionEnvelopeTemplate(a,b,c){const d=b['map'](e=>{const f=e['identifier']===TASK_BINDING_SLOT&&c?c:'<'+(e['value_type']||'value')+'\x20—\x20see\x20suggestion>';return'{\x20identifier:\x20'+e['identifier']+',\x20value:\x20\x27'+f+'\x27,\x20value_type:\x20\x27'+e['value_type']+'\x27,\x20name:\x20\x27\x27,\x20b_submission:\x20true\x20}';});return'{\x20type:\x20\x27submission\x27,\x20guard:\x20[{\x20object:\x20\x27'+a+'\x27,\x20impack:\x20true\x20}],\x20'+('submission:\x20[{\x20guard:\x20\x27'+a+'\x27,\x20submission:\x20['+d['join'](',\x20')+']\x20}]\x20}\x20—\x20')+'attach\x20as\x20the\x20TOP-LEVEL\x20submission\x20field\x20of\x20the\x20SAME\x20tool\x20call\x20(a\x20sibling\x20of\x20data\x20and\x20env)';}export function buildEntryEdgePendingRecipe(a){const {machineAddr:b,progressAddr:c,orderAddr:d,edges:e,reports:f,reason:g}=a,h=[];h['push']('ENTRY\x20EDGE\x20PENDING\x20—\x20the\x20order\x20is\x20funded\x20but\x20the\x20workflow\x20has\x20NOT\x20started\x20'+'(chain\x20truth:\x20a\x20fresh\x20Progress\x20sits\x20at\x20the\x20reserved\x20empty\x20entry\x20node;\x20the\x20chain\x20only\x20asserts\x20'+'the\x20entry\x20edge\x20EXISTS\x20at\x20publish\x20(E_NO_ENTRY_EDGE)\x20and\x20service\x20order\x20new\x20does\x20NOT\x20fire\x20it\x20—\x20'+'every\x20order\x20needs\x20ONE\x20explicit\x20entry-ignition\x20transaction).'),h['push']('\x20\x20•\x20entry\x20forward(s):\x20'+e['map'](k=>'\x22'+k['forward']['name']+'\x22\x20→\x20\x22'+k['target']+'\x22'+((k['forward']['guard']?'\x20[guarded]':'\x20[unguarded]')+'\x20(threshold\x20'+k['threshold']+')'))['join'](';\x20')+'.');for(const k of f){if(!k['guard'])continue;if(k['slots']['length']===0x0)h['push']('\x20\x20•\x20guard\x20'+k['guard']+(k['guard_name']?'\x20(\x22'+k['guard_name']+'\x22)':'')+':\x20signature-only\x20'+'(no\x20submission\x20slots).');else{h['push']('\x20\x20•\x20guard\x20'+k['guard']+(k['guard_name']?'\x20(\x22'+k['guard_name']+'\x22)':'')+'\x20requires\x20'+(k['slots']['length']+'\x20submission\x20slot(s):'));for(const l of k['slots']){h['push']('\x20\x20\x20\x20\x20\x20-\x20slot\x20'+l['identifier']+':\x20value_type='+(l['value_type']||'?')+((l['name']?'\x20(name:\x20\x22'+l['name']+'\x22)':'')+'\x20—\x20'+l['suggestion'])+(''+(l['autofillable']?'\x20[auto-fillable:\x20this\x20order\x27s\x20address]':'')));}}k['time_anchors']['length']>0x0&&h['push']('\x20\x20•\x20MC-ENTRYEDGE-01:\x20this\x20entry\x20guard\x20queries\x20progress\x20HISTORY\x20time\x20(anchor\x20node(s):\x20'+(k['time_anchors']['map'](m=>'\x22'+m+'\x22')['join'](',\x20')+').\x20The\x20anchor\x20counts\x20FROM\x20entry\x20ignition\x20—\x20')+'while\x20the\x20entry\x20is\x20unfired\x20the\x20order\x20cannot\x20advance\x20and\x20the\x20anchor\x20query\x20aborts\x20(the\x20'+'Progress\x20history\x20has\x20no\x20records).\x20Fire\x20the\x20entry\x20FIRST,\x20then\x20evaluate\x20the\x20window.');}const i=e[0x0];h['push']('\x20\x20•\x20why\x20not\x20auto-fired:\x20'+g+'.');if(e['length']===0x1&&i['forward']['guard']){const m=f['find'](n=>n['edge']===i);m?.['guard']&&m['slots']['length']>0x0?(h['push']('\x20\x20•\x20READY-TO-RUN\x20(one\x20call):\x20'+buildForwardCallTemplate(c,d,i['forward']['name'],i['target'])),h['push']('\x20\x20\x20\x20...\x20with\x20submission:\x20'+buildSubmissionEnvelopeTemplate(m['guard'],m['slots'],d))):h['push']('\x20\x20•\x20READY-TO-RUN\x20(one\x20call):\x20'+buildForwardCallTemplate(c,d,i['forward']['name'],i['target']));}else h['push']('\x20\x20•\x20FORWARD\x20CALL\x20TEMPLATE:\x20'+buildForwardCallTemplate(c,d,'<entry\x20forward>','<target>'));h['push']('\x20\x20•\x20Skipping\x20ignition\x20=\x20the\x20order\x20stalls\x20at\x20the\x20empty\x20entry\x20state\x20—\x20invisible\x20to\x20workflow\x20'+'guidance,\x20un-advanceable,\x20and\x20any\x20history-time\x20anchor\x20in\x20the\x20workflow\x20aborts.');const j={'status':'pending','machine':b,'progress':c,'order':d,'forward':e[0x0]?.['forward']['name']??'','target_node':e[0x0]?.['target']??'',...e[0x0]?.['threshold']!==undefined?{'threshold':e[0x0]['threshold']}:{},...f[0x0]?.['guard']?{'guard':f[0x0]['guard']}:{},'guard_slots':f['flatMap'](n=>n['slots']),...f['some'](n=>n['time_anchors']['length']>0x0)?{'time_anchors':f['flatMap'](n=>n['time_anchors'])}:{},'forward_call_template':e['length']===0x1?buildForwardCallTemplate(c,d,e[0x0]['forward']['name'],e[0x0]['target']):buildForwardCallTemplate(c,d,'<entry\x20forward>','<target>'),...e['length']===0x1&&f[0x0]?.['guard']&&f[0x0]['slots']['length']>0x0?{'submission_envelope_template':buildSubmissionEnvelopeTemplate(f[0x0]['guard'],f[0x0]['slots'],d)}:{},'note':g};return{'note':h['join']('\x0a'),'structured':j};}export function machineForwardGuardRefs(a){const b=[];for(const c of Array['isArray'](a)?a:[]){for(const d of Array['isArray'](c?.['pairs'])?c['pairs']:[]){for(const e of Array['isArray'](d?.['forwards'])?d['forwards']:[]){const h=e?.['guard'];if(typeof h==='string'&&h&&!b['includes'](h))b['push'](h);}}}return b;}export function contributionRecipeFromGuardJson(a,b){if(!isObj(a?.['root']))return undefined;let c;const d=(n,o,p)=>{if(c||p>0xc||!isObj(n))return;if(typeof n['type']==='string'&&n['type']['startsWith']('query_repository_data_sum_where')){const q=isObj(n['object'])?n['object']:undefined,r=isObj(n['key'])?n['key']:undefined,s=typeof o?.['type']==='string'?o['type']:'',t=Array['isArray'](o?.['nodes'])?o['nodes']:[],u=t['find'](w=>isObj(w)&&w!==n),v=/^logic_as_u256_(greater|lesser)/['test'](s)&&u!==undefined&&u['type']==='identifier'&&Number['isFinite'](Number(u['identifier']))?Number(u['identifier']):undefined;c={'repoSlot':q!==undefined&&Number['isFinite'](Number(q['identifier']))?Number(q['identifier']):undefined,'keySlot':r!==undefined&&Number['isFinite'](Number(r['identifier']))?Number(r['identifier']):undefined,'thresholdSlot':v};return;}for(const w of childrenOf(n))d(w,n,p+0x1);};d(a['root'],undefined,0x0);if(!c)return undefined;const e=Array['isArray'](a['table'])?a['table']:[],f=n=>n===undefined?undefined:e['find'](o=>Number(o?.['identifier'])===n),g=f(c['repoSlot']),h=typeof g?.['value']==='string'&&String(g['value'])['startsWith']('0x')?String(g['value']):undefined;if(!h)return undefined;const i=f(c['keySlot']),j=typeof i?.['value']==='string'?String(i['value']):undefined;if(!j)return undefined;const k=f(c['thresholdSlot']),l=k?.['value'],m=typeof l==='number'&&Number['isInteger'](l)&&l>0x0||typeof l==='string'&&/^\d+$/['test'](l)&&BigInt(l)>0x0n?String(l):undefined;return{'repository':h,'key':j,'row_id':b,...m!==undefined?{'threshold':m}:{},'write_shape':'PREFERRED\x20(v142\x20atomic\x20rail):\x20progress\x20operate\x20{operation:\x22<this\x20entry\x20forward>\x22,\x20op:\x22next\x22,\x20'+('contribute:'+h+'}\x20with\x20the\x20passport\x20submission\x20—\x20the\x20kernel\x20writes\x20YOUR\x20order-keyed\x20row\x20')+('(id='+b+',\x20key=\x22'+j+'\x22'+(m!==undefined?',\x20goal\x20threshold\x20'+m:'')+',\x20value=order\x20')+'amount,\x20idempotent)\x20AND\x20advances\x20the\x20edge\x20in\x20ONE\x20transaction;\x20reaching\x20the\x20armed\x20threshold\x20latches\x20the\x20'+'monotonic\x20GoalStamp\x20(queries\x201179/1181\x20saturate).\x20Requires\x20the\x20ledger\x20owner\x20to\x20have\x20armed\x20the\x20builtin\x20'+('spec\x20(repository\x20builtin_spec\x20{key:\x22'+j+'\x22'+(m!==undefined?',\x20threshold:'+m:'')+'}\x20—\x20')+'aborts\x2025/26\x20otherwise;\x20aborts\x2016/17\x20if\x20the\x20ledger\x20is\x20not\x20a\x20context\x20repo\x20or\x20the\x20v142\x20flag\x20is\x20off).\x20'+('FALLBACK\x20(rail\x20unavailable):\x20repository\x20data_add\x20on\x20'+h+'\x20under\x20the\x20identity\x20write\x20guard:\x20')+('id='+b+'\x20key=\x22'+j+'\x22\x20value=<your\x20paid\x20amount\x20in\x20base\x20units>\x20')+'(an\x20upsert\x20—\x20a\x20later\x20withdrawal\x20upserts\x200\x20through\x20the\x20same\x20identity\x20write\x20guard).'};}export async function campaignContributionRecipe(a,b,c,d){const e=machineForwardGuardRefs(b)['slice'](0x0,0x6);for(const f of e){const g=await loadGuardJsonFromChain(f,d)['catch'](()=>undefined);if(!g)continue;const h=contributionRecipeFromGuardJson(g['json'],c);if(h)return{...h,'aggregate_guard':g['guard']};}return undefined;}function withContributionRow(a,b){if(!b)return a;return a['structured']['contribution_row']=b,a['note']+='\x0a\x0aCONTRIBUTION\x20ROW\x20REQUIRED\x20(campaign\x20aggregate):\x20this\x20machine\x27s\x20goal\x20gate\x20sums\x20ORDER-KEYED\x20rows\x20in\x20'+(b['repository']+'\x20under\x20key\x20\x22'+b['key']+'\x22\x20—\x20your\x20payment\x20counts\x20toward\x20the\x20goal\x20ONLY\x20if\x20this\x20row\x20')+'exists.\x20Write\x20it\x20now,\x20well\x20before\x20the\x20campaign\x20deadline\x20(PREFERRED:\x20the\x20atomic\x20progress\x20operate.contribute\x20'+('rail\x20—\x20row\x20+\x20edge\x20advance\x20in\x20ONE\x20tx):\x20'+b['write_shape']+'.\x20A\x20payment\x20without\x20its\x20')+'row\x20is\x20INVISIBLE\x20to\x20the\x20aggregate\x20—\x20the\x20round\x20can\x20close\x20as\x20\x22missed\x22\x20with\x20your\x20money\x20still\x20escrowed,\x20'+'and\x20the\x20row\x20cannot\x20be\x20back-written\x20after\x20a\x20refund\x20(upynjab\x20P0-2/R-2).',a;}async function toAddr(a){if(typeof a!=='string'||a['length']===0x0)return undefined;if(a['startsWith']('0x'))return a;try{const {LocalMark:b}=await import('@wowok/wowok');return await b['Instance']()['get_address'](a)??undefined;}catch{return undefined;}}export async function resolveOrderEntryContext(a,b){const c=await toAddr(a);if(!c)return undefined;const d=await batchQueryObjectsByIds([c],b,!![]),e=d?.[0x0]?.['data']??d?.[0x0],f=typeof e?.['progress']==='string'?e['progress']:undefined;if(!f)return undefined;const g=await batchQueryObjectsByIds([f],b,!![]),h=g?.[0x0]?.['data']??g?.[0x0];if(typeof h?.['current']==='string'&&h['current']!=='')return undefined;const i=typeof h?.['machine']==='string'?h['machine']:undefined;if(!i)return undefined;const j=await fetchMachineNodes(i,b,![]),k=findEntryEdges(j);if(k['length']===0x0)return undefined;return{'orderAddr':c,'progressAddr':f,'machineAddr':i,'edges':k,'nodes':j};}export async function readEntryGuardReports(a,b,c){const d=[];for(const e of a){const f=e['forward']['guard'];if(!f){d['push']({'edge':e,'slots':[],'time_anchors':[]});continue;}const g=await loadGuardJsonFromChain(f,c)['catch'](()=>undefined);if(!g){d['push']({'edge':e,'guard':await toAddr(f),'slots':[],'time_anchors':[],'unreadable':!![]});continue;}const h=entryGuardSlotRequirements(g['json'],b),i=guardTimeAnchors(g['json']['root']),j=g['json']['rely'],k=Array['isArray'](j?.['guards'])&&j['guards']['length']>0x0,l={'edge':e,'guard':g['guard'],...g['name']?{'guard_name':g['name']}:{},'slots':h,'time_anchors':i,...k?{'has_rely':!![]}:{}};d['push'](l);}return d;}export async function fireEntryEdgeForward(a,b){try{const c=new CallProgress({'object':b['progressAddr'],'task':b['orderAddr'],'operate':{'op':'next','operation':{'forward':a['edge']['forward']['name'],'next_node_name':a['edge']['target']}}}),d=a['kind']==='signature_guard'?await c['call_with_submission'](b['env'],{'type':'submission','guard':[{'object':a['guard'],'impack':!![]}],'submission':[]}):await c['call'](b['env']),f=!!d&&typeof d==='object'&&d?.['effects']?.['status']?.['status']==='success';if(f)return{'ok':!![],'digest':d?.['digest']};const g=d&&typeof d==='object'?String(d?.['effects']?.['status']?.['error']??d?.['error']??'unknown\x20rejection'):'unknown\x20rejection';return{'ok':![],'error':g};}catch(h){return{'ok':![],'error':String(h?.['message']??h)};}}export async function entryEdgeStepAfterOrderNew(a,b){if(b?.['dry_run']===!![])return undefined;try{const c=await resolveOrderEntryContext(a,b?.['network']);if(!c)return undefined;const d=await readEntryGuardReports(c['edges'],c['orderAddr'],b?.['network']),f=classifyEntryFire(c['edges'],d),g=await campaignContributionRecipe(c['machineAddr'],c['nodes'],c['orderAddr'],b?.['network'])['catch'](()=>undefined);if(f['kind']==='recipe')return withContributionRow(buildEntryEdgePendingRecipe({'machineAddr':c['machineAddr'],'progressAddr':c['progressAddr'],'orderAddr':c['orderAddr'],'edges':c['edges'],'reports':d,'reason':f['reason']}),g);const h=await fireEntryEdgeForward(f,{'progressAddr':c['progressAddr'],'orderAddr':c['orderAddr'],'env':b});if(!h)return undefined;const i=f['kind'],j=f['kind']==='signature_guard'?'\x20(signature-only\x20guard\x20'+f['guard']+'\x20evaluated\x20STRICTLY\x20via\x20an\x20ephemeral\x20in-PTB\x20passport\x20—\x20'+'a\x20false\x20result\x20would\x20have\x20aborted\x20the\x20transaction,\x20nothing\x20was\x20bypassed)':'';if(h['ok']){const k={'status':'fired','fired_via':i,'machine':c['machineAddr'],'progress':c['progressAddr'],'order':c['orderAddr'],'forward':f['edge']['forward']['name'],'target_node':f['edge']['target'],'threshold':f['edge']['threshold'],...f['kind']==='signature_guard'?{'guard':f['guard']}:{},'guard_slots':[],'forward_call_template':buildForwardCallTemplate(c['progressAddr'],c['orderAddr'],f['edge']['forward']['name'],f['edge']['target']),'note':'fired\x20in-session\x20('+i+')'};return withContributionRow({'note':'ENTRY\x20EDGE\x20FIRED'+(i==='signature_guard'?'\x20(signature-only\x20guard)':'')+':\x20'+('\x22'+f['edge']['forward']['name']+'\x22\x20→\x20\x22'+f['edge']['target']+'\x22'+j+'\x20—\x20digest\x20'+(h['digest']??'n/a')+'.\x20')+'The\x20workflow\x20has\x20STARTED:\x20the\x20order\x20left\x20the\x20empty\x20entry\x20node,\x20counterparties\x20can\x20see\x20and\x20'+'act\x20on\x20it,\x20and\x20history-time\x20anchors\x20now\x20have\x20their\x20ignition\x20instant.','structured':k},g);}return withContributionRow(buildEntryEdgePendingRecipe({'machineAddr':c['machineAddr'],'progressAddr':c['progressAddr'],'orderAddr':c['orderAddr'],'edges':c['edges'],'reports':d,'reason':'the\x20in-session\x20ignition\x20attempt\x20was\x20REJECTED:\x20'+String(h['error']??'')['slice'](0x0,0x12c)}),g);}catch(l){return{'note':'ENTRY\x20EDGE\x20PENDING\x20(probe\x20failed:\x20'+String(l?.['message']??l)['slice'](0x0,0xc8)+'):\x20the\x20order\x20may\x20'+'still\x20sit\x20at\x20the\x20empty\x20entry\x20state\x20—\x20check\x20the\x20Progress\x27s\x20current\x20node\x20and\x20fire\x20the\x20entry\x20'+'forward\x20if\x20the\x20workflow\x20has\x20not\x20started\x20(query\x20the\x20order,\x20then\x20progress\x20operate\x20\x27next\x27).','structured':{'status':'pending','machine':'','progress':'','order':'','forward':'','target_node':'','guard_slots':[],'forward_call_template':'','note':String(l?.['message']??l)['slice'](0x0,0xc8)}};}}export function entryEdgeTimeAnchorAdvisory(a){const b=a['filter'](d=>d['time_anchors']['length']>0x0);if(b['length']===0x0)return undefined;const c=b['map'](d=>'\x22'+d['edge']['forward']['name']+'\x22\x20→\x20\x22'+d['edge']['target']+'\x22'+(''+(d['guard']?'\x20(guard\x20'+d['guard']+(d['guard_name']?'\x20\x22'+d['guard_name']+'\x22':'')+')':''))+('\x20anchored\x20at\x20'+d['time_anchors']['map'](e=>'\x22'+e+'\x22')['join'](',\x20')));return'MC-ENTRYEDGE-01\x20(entry-edge\x20time\x20anchor):\x20an\x20ENTRY-edge\x20guard\x20queries\x20progress\x20HISTORY\x20time\x20—\x20'+(c['join'](';\x20')+'.\x20Chain\x20truth\x20(machine.move):\x20a\x20fresh\x20Progress\x20starts\x20at\x20the\x20reserved\x20empty\x20entry\x20')+'node\x20and\x20publish\x20only\x20asserts\x20the\x20entry\x20edge\x20EXISTS\x20(E_NO_ENTRY_EDGE)\x20—\x20time\x20anchors\x20count\x20FROM\x20entry\x20'+'ignition.\x20An\x20order\x20whose\x20entry\x20forward\x20was\x20never\x20fired\x20cannot\x20advance,\x20and\x20evaluating\x20its\x20anchor\x20'+'query\x20aborts\x20(the\x20Progress\x20history\x20has\x20no\x20records\x20to\x20read).\x20Every\x20order\x20needs\x20an\x20explicit\x20'+'entry-ignition\x20transaction\x20(service\x20order\x20new\x20does\x20NOT\x20fire\x20the\x20entry;\x20this\x20MCP\x20fires\x20open\x20/\x20'+'signature-only\x20entries\x20automatically\x20after\x20order\x20new\x20and\x20otherwise\x20returns\x20an\x20ENTRY\x20EDGE\x20PENDING\x20'+'recipe)\x20—\x20make\x20sure\x20the\x20operator\x20flow\x20ignites\x20entries\x20BEFORE\x20any\x20window\x20on\x20these\x20edges\x20matters.';}export async function entryEdgePublishAdvisory(a,b){try{const c=await fetchMachineNodes(a,b,!![]),d=findEntryEdges(c);if(d['length']===0x0)return undefined;const e=await readEntryGuardReports(d,'',b);return entryEdgeTimeAnchorAdvisory(e);}catch{return undefined;}}
@@ -1 +1 @@
1
- import{resolve}from'path';import{Config}from'@wowok/wowok';import{strictParse,getEnvConfig,Guard2File_InputSchema,MachineNode2File_InputSchema}from'../../schema/index.js';import{guard2file,machineNode2file}from'@wowok/wowok';import{requiredSubmissionSlots}from'../../knowledge/guard-submission-brief.js';async function effectiveNetwork(a,b){return Config['Instance']()['network_get'](a??b);}export async function handleGuard2File(a){const b=strictParse(Guard2File_InputSchema,a,'guard2file\x20input'),c=getEnvConfig(b['env']),d=await effectiveNetwork(b['network'],c['network']);try{const e=await guard2file(b['guard'],b['file_path'],b['format']||'json',d);let f=undefined;if((b['format']||'json')==='json')try{const h=await import('fs/promises')['then'](j=>j['readFile'](resolve(e),'utf-8')),i=JSON['parse'](h);f=requiredSubmissionSlots(i['table']);}catch{}const g={'result':{'status':'success','data':{'file_path':resolve(e),'format':b['format']||'json','guard':b['guard'],'network':d,...f?{'required_submission_slots':f,'required_submission_slots_note':'Submitting\x20to\x20a\x20Machine\x20forward\x20(or\x20any\x20Guard-triggering\x20operation)\x20requires\x20EVERY\x20slot\x20below\x20in\x20the\x20submission\x20identifier\x20list\x20—\x20the\x20on-chain\x20forward\x20aborts\x20(code\x2011)\x20otherwise.'}:{}}}};return{'content':[{'type':'text','text':JSON['stringify'](g)}],'structuredContent':g};}catch(j){const k={'result':{'status':'error','error':j['message']}};return{'content':[{'type':'text','text':JSON['stringify'](k)}],'structuredContent':k};}}export async function handleMachineNode2File(a){const b=strictParse(MachineNode2File_InputSchema,a,'machineNode2file\x20input'),c=getEnvConfig(b['env']),d=await effectiveNetwork(b['network'],c['network']);try{const e=await machineNode2file(b['machine'],b['file_path'],b['format']||'json',d);let f=undefined;try{const h=resolve(e),i=await import('fs/promises')['then'](j=>j['readFile'](h,'utf-8'));if((b['format']||'json')==='json'){const j=JSON['parse'](i);Array['isArray'](j)&&(f=j['length']);}else{const k=i['match'](/^##\s+Node:/gm);f=k?k['length']:0x0;}}catch{f=undefined;}const g={'result':{'status':'success','data':{'file_path':resolve(e),'format':b['format']||'json','machine_object':b['machine'],'network':d}}};return f!==undefined&&(g['result']['data']['node_count']=f),{'content':[{'type':'text','text':JSON['stringify'](g)}],'structuredContent':g};}catch(l){const m={'result':{'status':'error','error':l['message']}};return{'content':[{'type':'text','text':JSON['stringify'](m)}],'structuredContent':m};}}
1
+ import{resolve}from'path';import{Config}from'@wowok/wowok';import{strictParse,getEnvConfig,Guard2File_InputSchema,MachineNode2File_InputSchema}from'../../schema/index.js';import{guard2file,machineNode2file}from'@wowok/wowok';import{requiredSubmissionSlots}from'../../knowledge/guard-submission-brief.js';async function effectiveNetwork(a,b){return Config['Instance']()['network_get'](a??b);}export async function handleGuard2File(a){const b=strictParse(Guard2File_InputSchema,a,'guard2file\x20input'),c=getEnvConfig(b['env']),d=await effectiveNetwork(b['network'],c['network']);try{const e=await guard2file(b['guard'],b['file_path'],b['format']||'json',d);let f=undefined;if((b['format']||'json')==='json')try{const h=await import('fs/promises')['then'](j=>j['readFile'](resolve(e),'utf-8')),i=JSON['parse'](h);f=requiredSubmissionSlots(i['table']);}catch{}const g={'result':{'status':'success','data':{'file_path':resolve(e),'format':b['format']||'json','guard':b['guard'],'network':d,...f?{'required_submission_slots':f,'required_submission_slots_note':'Submitting\x20to\x20a\x20Machine\x20forward\x20(or\x20any\x20Guard-triggering\x20operation)\x20requires\x20EVERY\x20slot\x20below\x20in\x20the\x20submission\x20identifier\x20list\x20—\x20the\x20on-chain\x20forward\x20aborts\x20(code\x2011)\x20otherwise.'}:{},'roundtrip':{'how_to_recreate':'Edit\x20the\x20exported\x20file,\x20then\x20create\x20the\x20NEW\x20guard\x20with\x20onchain_operations\x20operation=\x27guard\x27:\x20data={root:{type:\x27file\x27,\x20file_path:\x27<this\x20file>\x27},\x20namedNew:{name:\x27<new-name>\x27}}.\x20Schema\x20fields\x20(namedNew/description/table/rely)\x20OVERRIDE\x20the\x20file\x20when\x20both\x20are\x20given.','do_not_inline_root':'Do\x20NOT\x20paste\x20the\x20exported\x20root\x20tree\x20into\x20data.root\x20directly\x20—\x20the\x20export\x20is\x20the\x20on-chain\x20parsed\x20form\x20(e.g.\x20conditionsIdentifier,\x20VecU8\x20condition\x20blocks)\x20and\x20the\x20strict\x20create\x20schema\x20will\x20reject\x20those\x20fields.\x20The\x20file\x20loader\x20converts\x20them.','immutability':'Guards\x20are\x20immutable\x20on-chain:\x20creation\x20always\x20makes\x20a\x20NEW\x20Guard.\x20Rebind\x20the\x20host\x20(guard_remove\x20+\x20guard_add)\x20to\x20point\x20at\x20the\x20new\x20guard;\x20the\x20old\x20guard\x20object\x20remains.'}}}};return{'content':[{'type':'text','text':JSON['stringify'](g)}],'structuredContent':g};}catch(j){const k={'result':{'status':'error','error':j['message']}};return{'content':[{'type':'text','text':JSON['stringify'](k)}],'structuredContent':k};}}export async function handleMachineNode2File(a){const b=strictParse(MachineNode2File_InputSchema,a,'machineNode2file\x20input'),c=getEnvConfig(b['env']),d=await effectiveNetwork(b['network'],c['network']);try{const e=await machineNode2file(b['machine'],b['file_path'],b['format']||'json',d);let f=undefined;try{const h=resolve(e),i=await import('fs/promises')['then'](j=>j['readFile'](h,'utf-8'));if((b['format']||'json')==='json'){const j=JSON['parse'](i);Array['isArray'](j)&&(f=j['length']);}else{const k=i['match'](/^##\s+Node:/gm);f=k?k['length']:0x0;}}catch{f=undefined;}const g={'result':{'status':'success','data':{'file_path':resolve(e),'format':b['format']||'json','machine_object':b['machine'],'network':d}}};return f!==undefined&&(g['result']['data']['node_count']=f),{'content':[{'type':'text','text':JSON['stringify'](g)}],'structuredContent':g};}catch(l){const m={'result':{'status':'error','error':l['message']}};return{'content':[{'type':'text','text':JSON['stringify'](m)}],'structuredContent':m};}}
@@ -1 +1 @@
1
- import{wrapLocalHandler}from'../shared.js';import{withFaucetRetry}from'../retry.js';import{strictParse}from'../../schema/index.js';import{AccountOperationSchema,LocalMarkOperationSchema,LocalInfoOperationSchema,LocalHistoryOperationSchema,LocalCacheOperationSchema}from'../../schema/index.js';import{Cache}from'@wowok/wowok/w/local/cache';import{Account}from'@wowok/wowok/w/local';import{clearInFlightMarkers}from'../../composition/inflight.js';import{clearChainScope,resolveChainIdentity}from'@wowok/wowok/w/local/chain-scope';import{account_operation,local_mark_operation,local_info_operation,local_history_operation,GasTokenType,isFundApprovalExempt}from'@wowok/wowok';import{parseAmount,generateFundConfirmation,generateSkillsHint,formatAmountText}from'../../knowledge/fund-layer.js';import{buildDataSemantic,normalizeErrorMessage}from'../../schema/call/semantic.js';import{resolveNetwork}from'./network.js';function deriveOpType(a,b){for(const c of Object['keys'](b)){if(b[c]!==undefined)return a+'_'+String(c);}return a+'_unknown';}function accountError(a,b){return{'content':[{'type':'text','text':'Error:\x20'+a}],'structuredContent':{'result':{'status':'error','error':a},'semantic':buildDataSemantic(undefined,b,!![],a)}};}function buildAccountContext(a){return{'operation_type':deriveOpType('account',a),'data':a};}const DEFAULT_ACCOUNT_CLIENT_ONLY='The\x20default\x20account\x20is\x20the\x20app\x27s\x20root\x20identity\x20and\x20is\x20managed\x20by\x20the\x20'+'client\x20Wallet\x20app\x20only\x20—\x20it\x20cannot\x20be\x20renamed\x20or\x20suspended\x20via\x20MCP.\x20'+'Ask\x20the\x20user\x20to\x20rename\x20or\x20suspend\x20it\x20in\x20the\x20client\x27s\x20Wallet\x20tab,\x20or\x20'+'target\x20a\x20named\x20(non-default)\x20account\x20instead.',SWAP_DEFAULT_ACCOUNT_CLIENT_ONLY='Swapping\x20a\x20name\x20with\x20the\x20default\x20account\x20is\x20not\x20allowed\x20via\x20MCP\x20—\x20the\x20'+'default\x20account\x20is\x20the\x20app\x27s\x20root\x20identity\x20and\x20is\x20managed\x20by\x20the\x20client\x20'+'Wallet\x20app\x20only.\x20Ask\x20the\x20user\x20to\x20manage\x20it\x20in\x20the\x20client\x27s\x20Wallet\x20tab,\x20'+'or\x20swap\x20two\x20named\x20(non-default)\x20accounts\x20instead.';async function isDefaultAccountTarget(a){if(a===undefined||a['trim']()==='')return!![];try{const b=await Account['Instance']()['get'](a);return!!b&&!b['suspended']&&(b['name']??'')==='';}catch{return![];}}function isDefaultNameRef(a){return a===undefined||a['trim']()==='';}async function fundProcessCoinAmount(a,b,c){try{const d=await parseAmount(a,b,c);return{'parsed':d};}catch(f){return{'error':f instanceof Error?f['message']:String(f)};}}async function coinFundGate(a,b,c,d,e,f){const {parsed:g,error:h}=await fundProcessCoinAmount(a,b,c);if(h||!g)return{'blocked':accountError(h??'Amount\x20parsing\x20failed',f)};try{const j=await Account['Instance']()['balance'](b,e['accountRef'],c),k=j?.['totalBalance'];if(k!==undefined&&BigInt(k)<g['smallestUnit']){const l=e['accountRef']?'\x27'+e['accountRef']+'\x27':'(default\x20account)';return{'blocked':accountError('Insufficient\x20balance:\x20'+e['key']+'\x20requires\x20'+(formatAmountText(g['smallestUnit'],g['decimals'],g['tokenSymbol'])+'\x20but\x20account\x20'+l+'\x20holds\x20')+(formatAmountText(k,g['decimals'],g['tokenSymbol'])+'.\x20')+'Fund\x20the\x20account\x20first\x20(faucet\x20on\x20testnet/localnet)\x20or\x20lower\x20the\x20amount.',f)};}}catch{}const i=isFundApprovalExempt(c,b,g['smallestUnit']['toString']());if(!i&&d!==!![]){const m=generateFundConfirmation([{'path':e['amountPath'],'displayAmount':g['displayAmount'],'tokenType':g['tokenType'],'tokenSymbol':g['tokenSymbol'],'decimals':g['decimals'],'smallestUnit':g['smallestUnit']['toString'](),'verified':g['verified'],'source':g['source'],'converted':g['converted'],'context':e['context']}],[]),n=generateSkillsHint(m),o=[m['message'],'',...e['detailLines'],n??'','The\x20'+e['key']+'\x20was\x20NOT\x20executed.\x20If\x20the\x20user\x20consents,\x20re-call\x20with\x20the\x20SAME\x20parameters\x20plus\x20'+e['key']+'.confirmed=true.']['filter'](p=>p!=='')['join']('\x0a');return{'blocked':{'content':[{'type':'text','text':o}],'structuredContent':{'result':{'status':'pending_confirmation','operation':e['operation'],'message':o,'rule_id':e['ruleId']},'semantic':{...buildDataSemantic(undefined,f,!![],'pending\x20user\x20confirmation'),'summary':e['summary']}}}};}return{'parsed':g};}async function executeAccountOperation(a,b){try{const c=await withFaucetRetry(account_operation)(a);try{if(c['transfer']){const d=c['transfer'];d['network']=await resolveNetwork(a['transfer']?.['network']),d['network_source']=a['transfer']?.['network']?'request':'session_default';}if(c['get']){const e=c['get'];e['network']=await resolveNetwork(a['get']?.['network']),e['network_source']=a['get']?.['network']?'request':'session_default';}}catch{}return{'content':[{'type':'text','text':JSON['stringify'](c)}],'structuredContent':{'result':{'status':'success','data':c},'semantic':buildDataSemantic(c,b)}};}catch(f){const g=normalizeErrorMessage(f);if(/free a slot|MAX_ACCOUNTS|max(?:imum)? (?:number of )?accounts/i['test'](g))return accountError(g+'\x0aACCOUNT\x20POOL\x20RECOVERY\x20(F-17):\x20the\x20local\x20account\x20pool\x20is\x20a\x20static\x20quota.\x20Recover\x20in\x20order:\x20'+'(1)\x20`account_operation`\x20sub-op\x20`suspend`\x20one\x20idle\x20test\x20account\x20—\x20each\x20suspend\x20frees\x20EXACTLY\x20one\x20slot,\x20so\x20pair\x20every\x20suspend\x20with\x20the\x20next\x20`gen`;\x20'+'a\x20suspend\x20candidate\x20has\x20no\x20unreturned\x20funds\x20and\x20NO\x20in-flight\x20order\x20(an\x20[UNOBSERVED-PENDING]\x20marker\x20means\x20the\x20outcome\x20is\x20still\x20unknown\x20—\x20never\x20suspend\x20it);\x20'+'(2)\x20or\x20raise\x20the\x20cap\x20within\x20the\x20build\x20limit\x20via\x20the\x20WOWOK_MAX_ACCOUNTS\x20env\x20var\x20(must\x20be\x20set\x20before\x20the\x20session\x20starts);\x20'+'(3)\x20rename/swap_name\x20never\x20frees\x20a\x20slot.',b);return accountError(g,b);}}export const handleAccountOperation=async a=>{let b;try{b=strictParse(AccountOperationSchema,a,'account_operation\x20input');}catch(d){return accountError('Parameter\x20validation\x20failed:\x20'+(d?.['message']??String(d)));}const c=buildAccountContext(b);if(b['suspend']!==undefined||b['rename']!==undefined){const f=b['suspend']?.['name_or_address']??b['rename']?.['name_or_address'];if(await isDefaultAccountTarget(f))return accountError(DEFAULT_ACCOUNT_CLIENT_ONLY,c);}if(b['swap_name']!==undefined){const {name1:g,name2:h}=b['swap_name'];if(isDefaultNameRef(g)||isDefaultNameRef(h))return accountError(SWAP_DEFAULT_ACCOUNT_CLIENT_ONLY,c);}if(b['transfer']!==undefined){const i=b['transfer'],j=await coinFundGate(i['amount'],i['token_type']??GasTokenType,i['network'],i['confirmed'],{'key':'transfer','amountPath':'transfer.amount','context':'Account\x20token\x20transfer','operation':'account_transfer','ruleId':'account_transfer_fund_movement','summary':'Token\x20transfer\x20blocked\x20pending\x20user\x20confirmation.\x20Re-call\x20with\x20transfer.confirmed=true\x20to\x20proceed.','detailLines':['Recipient:\x20'+(i['name_or_address_to']??'(default\x20account)'),'Sender:\x20'+(i['name_or_address_from']??'(default\x20account)')],'accountRef':i['name_or_address_from']},c);if('blocked'in j)return j['blocked'];const k={...b,'transfer':{...i,'amount':j['parsed']['smallestUnit']['toString']()}};return delete k['transfer']['confirmed'],executeAccountOperation(k,c);}if(b['get']!==undefined){const l=b['get'],m=await coinFundGate(l['balance_required'],l['token_type']??GasTokenType,l['network'],l['confirmed'],{'key':'get','amountPath':'get.balance_required','context':'Coin\x20object\x20production\x20(split/merge\x20+\x20self-delivery)','operation':'account_get_coin_object','ruleId':'account_get_fund_movement','summary':'Coin\x20object\x20production\x20blocked\x20pending\x20user\x20confirmation.\x20Re-call\x20with\x20get.confirmed=true\x20to\x20proceed.','detailLines':['Account:\x20'+(l['name_or_address']??'(default\x20account)'),'Effect:\x20splits/merges\x20the\x20account\x27s\x20coins\x20and\x20self-delivers\x20a\x20coin\x20object;\x20funds\x20never\x20leave\x20the\x20account\x20but\x20GAS\x20IS\x20SPENT.','On\x20success\x20the\x20result\x20reports\x20the\x20coin\x27s\x20ACTUAL\x20on-chain\x20balance\x20—\x20check\x20it\x20against\x20the\x20amount\x20you\x20need\x20before\x20relying\x20on\x20it.'],'accountRef':l['name_or_address']},c);if('blocked'in m)return m['blocked'];const n={...b,'get':{...l,'balance_required':m['parsed']['smallestUnit']['toString']()}};return delete n['get']['confirmed'],executeAccountOperation(n,c);}return executeAccountOperation(b,c);};export const handleMarkOperation=wrapLocalHandler({'schema':LocalMarkOperationSchema,'operationFn':local_mark_operation,'parseLabel':'local_mark_operation\x20input','buildContext':a=>{const b={'operation_type':deriveOpType('mark',a),'data':a},c=a;return c['add']&&Array['isArray'](c['add']['data'])&&c['add']['data']['length']>0x0&&(b['pre_warnings']=['Cross-network\x20consistency\x20(FIX-011):\x20LocalMark\x20names\x20are\x20scoped\x20per\x20network.\x20'+'When\x20creating\x20marks\x20for\x20the\x20same\x20logical\x20object\x20on\x20different\x20networks\x20'+'(e.g.\x20testnet\x20and\x20mainnet),\x20use\x20the\x20SAME\x20name\x20value\x20to\x20keep\x20name-based\x20'+'references\x20portable.\x20Before\x20creating\x20a\x20mark\x20on\x20mainnet,\x20consider\x20querying\x20'+'testnet\x20via\x20query_local\x20with\x20network=\x27testnet\x27\x20to\x20check\x20for\x20an\x20existing\x20'+'same-named\x20mark\x20and\x20replicate\x20it.']),b;}});export const handleInfoOperation=wrapLocalHandler({'schema':LocalInfoOperationSchema,'operationFn':local_info_operation,'parseLabel':'local_info_operation\x20input','buildContext':a=>({'operation_type':deriveOpType('local_info',a),'data':a})});export const handleHistoryOperation=wrapLocalHandler({'schema':LocalHistoryOperationSchema,'operationFn':local_history_operation,'parseLabel':'local_history_operation\x20input','buildContext':a=>({'operation_type':deriveOpType('local_history',a),'data':a})});async function readStorageStats(){if(!Cache['hasStorage']())return{'rows':null,'bytes':null};const a=Cache['storage']?.['getStats'];if(typeof a!=='function')return{'rows':null,'bytes':null};try{const b=await a['call'](Cache['storage']);return{'rows':b?.['count']??null,'bytes':b?.['totalBytes']??null};}catch{return{'rows':null,'bytes':null};}}function buildCacheContext(a){return{'operation_type':deriveOpType('cache',a),'data':a};}function cacheSuccess(a,b){return{'content':[{'type':'text','text':JSON['stringify'](a,null,0x2)}],'structuredContent':{'result':{'status':'success','data':a},'semantic':buildDataSemantic(a,b)}};}export const handleCacheOperation=async a=>{let b;try{b=strictParse(LocalCacheOperationSchema,a,'local_cache_operation\x20input');}catch(d){return{'content':[{'type':'text','text':'Error:\x20'+(d instanceof Error?d['message']:String(d))}],'structuredContent':{'result':{'status':'error','error':d instanceof Error?d['message']:String(d),'error_code':'invalid_param','retryable':![],'recovery_hint':'Pass\x20exactly\x20one\x20nested\x20operation:\x20{status:{op:\x27status\x27}},\x20{clear_prefix:{op:\x27clear_prefix\x27,prefix:\x27objectv2\x27}},\x20{clear:{op:\x27clear\x27}},\x20{refresh_chain_scope:{op:\x27refresh_chain_scope\x27}},\x20or\x20{clear_inflight:{op:\x27clear_inflight\x27}}.'}}};}const c=buildCacheContext(b);try{if(b['status']){const {rows:f,bytes:g}=await readStorageStats();return cacheSuccess({'op':'status','chain_identity':Cache['chainIdentityOf']()??null,'storage_attached':Cache['hasStorage'](),'memory_entries':Cache['memory']['size'],'storage_rows':f,'storage_bytes':g},c);}if(b['clear_prefix']){const {prefix:h}=b['clear_prefix'];return await Cache['clearPrefix'](h),cacheSuccess({'op':'clear_prefix','prefix':h,'chain_identity':Cache['chainIdentityOf']()??null},c);}if(b['clear'])return await Cache['clear'](),cacheSuccess({'op':'clear','cleared':!![],'chain_identity':Cache['chainIdentityOf']()??null},c);if(b['clear_inflight']){const i=clearInFlightMarkers();return cacheSuccess({'op':'clear_inflight','cleared':i},c);}if(b['refresh_chain_scope']){const j=Cache['chainIdentityOf']()??null;clearChainScope();const k=await resolveChainIdentity(b['refresh_chain_scope']['network'])??null;return cacheSuccess({'op':'refresh_chain_scope','previous_chain_identity':j,'chain_identity':k,'changed':k!==null&&k!==j,'resolved':k!==null},c);}return accountError('No\x20cache\x20operation\x20specified',c);}catch(l){const m=l instanceof Error?l['message']:String(l);return{'content':[{'type':'text','text':'Error:\x20'+m}],'structuredContent':{'result':{'status':'error','error':m,'error_code':'unknown_error','retryable':!![],'recovery_hint':'If\x20the\x20cache\x20backend\x20is\x20locked\x20or\x20corrupt,\x20use\x20{clear:\x20{op:\x27clear\x27}}\x20to\x20drop\x20everything,\x20or\x20{refresh_chain_scope:\x20{op:\x27refresh_chain_scope\x27}}\x20if\x20the\x20node\x20was\x20reset.'},'semantic':buildDataSemantic(undefined,c,!![],m)}};}};
1
+ import{wrapLocalHandler}from'../shared.js';import{withFaucetRetry}from'../retry.js';import{strictParse}from'../../schema/index.js';import{AccountOperationSchema,LocalMarkOperationSchema,LocalInfoOperationSchema,LocalHistoryOperationSchema,LocalCacheOperationSchema}from'../../schema/index.js';import{Cache}from'@wowok/wowok/w/local/cache';import{Account}from'@wowok/wowok/w/local';import{clearInFlightMarkers}from'../../composition/inflight.js';import{clearChainScope,resolveChainIdentity}from'@wowok/wowok/w/local/chain-scope';import{account_operation,local_mark_operation,local_info_operation,local_history_operation,GasTokenType,isFundApprovalExempt,MAX_ACCOUNTS,query_account_list}from'@wowok/wowok';import{parseAmount,generateFundConfirmation,generateSkillsHint,formatAmountText}from'../../knowledge/fund-layer.js';import{buildDataSemantic,normalizeErrorMessage}from'../../schema/call/semantic.js';import{resolveNetwork}from'./network.js';function deriveOpType(a,b){for(const c of Object['keys'](b)){if(b[c]!==undefined)return a+'_'+String(c);}return a+'_unknown';}function accountError(a,b){return{'content':[{'type':'text','text':'Error:\x20'+a}],'structuredContent':{'result':{'status':'error','error':a},'semantic':buildDataSemantic(undefined,b,!![],a)}};}function buildAccountContext(a){return{'operation_type':deriveOpType('account',a),'data':a};}const DEFAULT_ACCOUNT_CLIENT_ONLY='The\x20default\x20account\x20is\x20the\x20app\x27s\x20root\x20identity\x20and\x20is\x20managed\x20by\x20the\x20'+'client\x20Wallet\x20app\x20only\x20—\x20it\x20cannot\x20be\x20renamed\x20or\x20suspended\x20via\x20MCP.\x20'+'Ask\x20the\x20user\x20to\x20rename\x20or\x20suspend\x20it\x20in\x20the\x20client\x27s\x20Wallet\x20tab,\x20or\x20'+'target\x20a\x20named\x20(non-default)\x20account\x20instead.',SWAP_DEFAULT_ACCOUNT_CLIENT_ONLY='Swapping\x20a\x20name\x20with\x20the\x20default\x20account\x20is\x20not\x20allowed\x20via\x20MCP\x20—\x20the\x20'+'default\x20account\x20is\x20the\x20app\x27s\x20root\x20identity\x20and\x20is\x20managed\x20by\x20the\x20client\x20'+'Wallet\x20app\x20only.\x20Ask\x20the\x20user\x20to\x20manage\x20it\x20in\x20the\x20client\x27s\x20Wallet\x20tab,\x20'+'or\x20swap\x20two\x20named\x20(non-default)\x20accounts\x20instead.';async function isDefaultAccountTarget(a){if(a===undefined||a['trim']()==='')return!![];try{const b=await Account['Instance']()['get'](a);return!!b&&!b['suspended']&&(b['name']??'')==='';}catch{return![];}}function isDefaultNameRef(a){return a===undefined||a['trim']()==='';}async function fundProcessCoinAmount(a,b,c){try{const d=await parseAmount(a,b,c);return{'parsed':d};}catch(f){return{'error':f instanceof Error?f['message']:String(f)};}}async function coinFundGate(a,b,c,d,e,f){const {parsed:g,error:h}=await fundProcessCoinAmount(a,b,c);if(h||!g)return{'blocked':accountError(h??'Amount\x20parsing\x20failed',f)};try{const j=await Account['Instance']()['balance'](b,e['accountRef'],c),k=j?.['totalBalance'];if(k!==undefined&&BigInt(k)<g['smallestUnit']){const l=e['accountRef']?'\x27'+e['accountRef']+'\x27':'(default\x20account)';return{'blocked':accountError('Insufficient\x20balance:\x20'+e['key']+'\x20requires\x20'+(formatAmountText(g['smallestUnit'],g['decimals'],g['tokenSymbol'])+'\x20but\x20account\x20'+l+'\x20holds\x20')+(formatAmountText(k,g['decimals'],g['tokenSymbol'])+'.\x20')+'Fund\x20the\x20account\x20first\x20(faucet\x20on\x20testnet/localnet)\x20or\x20lower\x20the\x20amount.',f)};}}catch{}const i=isFundApprovalExempt(c,b,g['smallestUnit']['toString']());if(!i&&d!==!![]){const m=generateFundConfirmation([{'path':e['amountPath'],'displayAmount':g['displayAmount'],'tokenType':g['tokenType'],'tokenSymbol':g['tokenSymbol'],'decimals':g['decimals'],'smallestUnit':g['smallestUnit']['toString'](),'verified':g['verified'],'source':g['source'],'converted':g['converted'],'context':e['context']}],[]),n=generateSkillsHint(m),o=[m['message'],'',...e['detailLines'],n??'','The\x20'+e['key']+'\x20was\x20NOT\x20executed.\x20If\x20the\x20user\x20consents,\x20re-call\x20with\x20the\x20SAME\x20parameters\x20plus\x20'+e['key']+'.confirmed=true.']['filter'](p=>p!=='')['join']('\x0a');return{'blocked':{'content':[{'type':'text','text':o}],'structuredContent':{'result':{'status':'pending_confirmation','operation':e['operation'],'message':o,'rule_id':e['ruleId']},'semantic':{...buildDataSemantic(undefined,f,!![],'pending\x20user\x20confirmation'),'summary':e['summary']}}}};}return{'parsed':g};}async function executeAccountOperation(a,b){try{const c=await withFaucetRetry(account_operation)(a);try{if(c['transfer']){const d=c['transfer'];d['network']=await resolveNetwork(a['transfer']?.['network']),d['network_source']=a['transfer']?.['network']?'request':'session_default';}if(c['get']){const e=c['get'];e['network']=await resolveNetwork(a['get']?.['network']),e['network_source']=a['get']?.['network']?'request':'session_default';}}catch{}return{'content':[{'type':'text','text':JSON['stringify'](c)}],'structuredContent':{'result':{'status':'success','data':c},'semantic':buildDataSemantic(c,b)}};}catch(f){const g=normalizeErrorMessage(f);if(/free a slot|MAX_ACCOUNTS|max(?:imum)? (?:number of )?accounts/i['test'](g))return accountError(g+'\x0aACCOUNT\x20POOL\x20RECOVERY\x20(F-17):\x20the\x20local\x20account\x20pool\x20is\x20a\x20static\x20quota.\x20Recover\x20in\x20order:\x20'+'(1)\x20`account_operation`\x20sub-op\x20`suspend`\x20one\x20idle\x20test\x20account\x20—\x20each\x20suspend\x20frees\x20EXACTLY\x20one\x20slot,\x20so\x20pair\x20every\x20suspend\x20with\x20the\x20next\x20`gen`;\x20'+'a\x20suspend\x20candidate\x20has\x20no\x20unreturned\x20funds\x20and\x20NO\x20in-flight\x20order\x20(an\x20[UNOBSERVED-PENDING]\x20marker\x20means\x20the\x20outcome\x20is\x20still\x20unknown\x20—\x20never\x20suspend\x20it);\x20'+'(2)\x20or\x20raise\x20the\x20cap\x20within\x20the\x20build\x20limit\x20via\x20the\x20WOWOK_MAX_ACCOUNTS\x20env\x20var\x20(must\x20be\x20set\x20before\x20the\x20session\x20starts);\x20'+'(3)\x20rename/swap_name\x20never\x20frees\x20a\x20slot.',b);return accountError(g,b);}}export const handleAccountOperation=async a=>{let b;try{b=strictParse(AccountOperationSchema,a,'account_operation\x20input');}catch(d){return accountError('Parameter\x20validation\x20failed:\x20'+(d?.['message']??String(d)));}const c=buildAccountContext(b);if(b['suspend']!==undefined||b['rename']!==undefined){const f=b['suspend']?.['name_or_address']??b['rename']?.['name_or_address'];if(await isDefaultAccountTarget(f))return accountError(DEFAULT_ACCOUNT_CLIENT_ONLY,c);}if(b['swap_name']!==undefined){const {name1:g,name2:h}=b['swap_name'];if(isDefaultNameRef(g)||isDefaultNameRef(h))return accountError(SWAP_DEFAULT_ACCOUNT_CLIENT_ONLY,c);}if(b['gen']!==undefined)try{const i=await query_account_list(),j=i['filter'](k=>!k['suspended']);if(j['length']>=MAX_ACCOUNTS){const k=[...j]['sort']((l,m)=>(l['createdAt']??0x0)-(m['createdAt']??0x0))['slice'](0x0,0xc)['map'](l=>{const m=l['createdAt']?Math['floor']((Date['now']()-l['createdAt'])/0x5265c00):undefined;return'-\x20\x27'+(l['name']||'(default\x20—\x20suspend\x20via\x20MCP\x20not\x20allowed)')+'\x27\x20'+l['address']+(''+(m!==undefined?',\x20created\x20'+m+'d\x20ago':''))+(''+(l['messenger']?',\x20messenger-enabled':''));});return accountError('Account\x20pool\x20is\x20at\x20its\x20cap:\x20'+j['length']+'/'+MAX_ACCOUNTS+'\x20active\x20accounts\x20—\x20the\x20new\x20account\x20was\x20NOT\x20created.\x20'+'Oldest\x20active\x20accounts\x20(likeliest\x20stale\x20candidates):\x0a'+k['join']('\x0a')+'\x0aFree\x20slots:\x20account_operation\x20{suspend:\x20{name_or_address:\x20\x27<name\x20or\x20address>\x27}}\x20—\x20suspended\x20accounts\x20stop\x20counting\x20and\x20cannot\x20sign;\x20resume({address,\x20name?})\x20brings\x20one\x20back.\x20'+'Suspend\x20is\x20NOT\x20allowed\x20on\x20the\x20default\x20account\x20(client\x20Wallet\x20tab\x20only).\x20'+'The\x20ceiling\x20itself\x20is\x20the\x20SDK\x20build\x20cap\x20(runtime\x20env\x20WOWOK_MAX_ACCOUNTS\x20can\x20lower\x20it,\x20never\x20raise\x20it)\x20—\x20suspension\x20is\x20the\x20intended\x20path,\x20there\x20is\x20no\x20bulk\x20prune.',c);}}catch{}if(b['transfer']!==undefined){const l=b['transfer'],m=await coinFundGate(l['amount'],l['token_type']??GasTokenType,l['network'],l['confirmed'],{'key':'transfer','amountPath':'transfer.amount','context':'Account\x20token\x20transfer','operation':'account_transfer','ruleId':'account_transfer_fund_movement','summary':'Token\x20transfer\x20blocked\x20pending\x20user\x20confirmation.\x20Re-call\x20with\x20transfer.confirmed=true\x20to\x20proceed.','detailLines':['Recipient:\x20'+(l['name_or_address_to']??'(default\x20account)'),'Sender:\x20'+(l['name_or_address_from']??'(default\x20account)')],'accountRef':l['name_or_address_from']},c);if('blocked'in m)return m['blocked'];const n={...b,'transfer':{...l,'amount':m['parsed']['smallestUnit']['toString']()}};return delete n['transfer']['confirmed'],executeAccountOperation(n,c);}if(b['get']!==undefined){const o=b['get'],p=await coinFundGate(o['balance_required'],o['token_type']??GasTokenType,o['network'],o['confirmed'],{'key':'get','amountPath':'get.balance_required','context':'Coin\x20object\x20production\x20(split/merge\x20+\x20self-delivery)','operation':'account_get_coin_object','ruleId':'account_get_fund_movement','summary':'Coin\x20object\x20production\x20blocked\x20pending\x20user\x20confirmation.\x20Re-call\x20with\x20get.confirmed=true\x20to\x20proceed.','detailLines':['Account:\x20'+(o['name_or_address']??'(default\x20account)'),'Effect:\x20splits/merges\x20the\x20account\x27s\x20coins\x20and\x20self-delivers\x20a\x20coin\x20object;\x20funds\x20never\x20leave\x20the\x20account\x20but\x20GAS\x20IS\x20SPENT.','On\x20success\x20the\x20result\x20reports\x20the\x20coin\x27s\x20ACTUAL\x20on-chain\x20balance\x20—\x20check\x20it\x20against\x20the\x20amount\x20you\x20need\x20before\x20relying\x20on\x20it.'],'accountRef':o['name_or_address']},c);if('blocked'in p)return p['blocked'];const q={...b,'get':{...o,'balance_required':p['parsed']['smallestUnit']['toString']()}};return delete q['get']['confirmed'],executeAccountOperation(q,c);}return executeAccountOperation(b,c);};export const handleMarkOperation=wrapLocalHandler({'schema':LocalMarkOperationSchema,'operationFn':local_mark_operation,'parseLabel':'local_mark_operation\x20input','buildContext':a=>{const b={'operation_type':deriveOpType('mark',a),'data':a},c=a;return c['add']&&Array['isArray'](c['add']['data'])&&c['add']['data']['length']>0x0&&(b['pre_warnings']=['Cross-network\x20consistency\x20(FIX-011):\x20LocalMark\x20names\x20are\x20scoped\x20per\x20network.\x20'+'When\x20creating\x20marks\x20for\x20the\x20same\x20logical\x20object\x20on\x20different\x20networks\x20'+'(e.g.\x20testnet\x20and\x20mainnet),\x20use\x20the\x20SAME\x20name\x20value\x20to\x20keep\x20name-based\x20'+'references\x20portable.\x20Before\x20creating\x20a\x20mark\x20on\x20mainnet,\x20consider\x20querying\x20'+'testnet\x20via\x20query_local\x20with\x20network=\x27testnet\x27\x20to\x20check\x20for\x20an\x20existing\x20'+'same-named\x20mark\x20and\x20replicate\x20it.']),b;}});export const handleInfoOperation=wrapLocalHandler({'schema':LocalInfoOperationSchema,'operationFn':local_info_operation,'parseLabel':'local_info_operation\x20input','buildContext':a=>({'operation_type':deriveOpType('local_info',a),'data':a})});export const handleHistoryOperation=wrapLocalHandler({'schema':LocalHistoryOperationSchema,'operationFn':local_history_operation,'parseLabel':'local_history_operation\x20input','buildContext':a=>({'operation_type':deriveOpType('local_history',a),'data':a})});async function readStorageStats(){if(!Cache['hasStorage']())return{'rows':null,'bytes':null};const a=Cache['storage']?.['getStats'];if(typeof a!=='function')return{'rows':null,'bytes':null};try{const b=await a['call'](Cache['storage']);return{'rows':b?.['count']??null,'bytes':b?.['totalBytes']??null};}catch{return{'rows':null,'bytes':null};}}function buildCacheContext(a){return{'operation_type':deriveOpType('cache',a),'data':a};}function cacheSuccess(a,b){return{'content':[{'type':'text','text':JSON['stringify'](a,null,0x2)}],'structuredContent':{'result':{'status':'success','data':a},'semantic':buildDataSemantic(a,b)}};}export const handleCacheOperation=async a=>{let b;try{b=strictParse(LocalCacheOperationSchema,a,'local_cache_operation\x20input');}catch(d){return{'content':[{'type':'text','text':'Error:\x20'+(d instanceof Error?d['message']:String(d))}],'structuredContent':{'result':{'status':'error','error':d instanceof Error?d['message']:String(d),'error_code':'invalid_param','retryable':![],'recovery_hint':'Pass\x20exactly\x20one\x20nested\x20operation:\x20{status:{op:\x27status\x27}},\x20{clear_prefix:{op:\x27clear_prefix\x27,prefix:\x27objectv2\x27}},\x20{clear:{op:\x27clear\x27}},\x20{refresh_chain_scope:{op:\x27refresh_chain_scope\x27}},\x20or\x20{clear_inflight:{op:\x27clear_inflight\x27}}.'}}};}const c=buildCacheContext(b);try{if(b['status']){const {rows:f,bytes:g}=await readStorageStats();return cacheSuccess({'op':'status','chain_identity':Cache['chainIdentityOf']()??null,'storage_attached':Cache['hasStorage'](),'memory_entries':Cache['memory']['size'],'storage_rows':f,'storage_bytes':g},c);}if(b['clear_prefix']){const {prefix:h}=b['clear_prefix'];return await Cache['clearPrefix'](h),cacheSuccess({'op':'clear_prefix','prefix':h,'chain_identity':Cache['chainIdentityOf']()??null},c);}if(b['clear'])return await Cache['clear'](),cacheSuccess({'op':'clear','cleared':!![],'chain_identity':Cache['chainIdentityOf']()??null},c);if(b['clear_inflight']){const i=clearInFlightMarkers();return cacheSuccess({'op':'clear_inflight','cleared':i},c);}if(b['refresh_chain_scope']){const j=Cache['chainIdentityOf']()??null;clearChainScope();const k=await resolveChainIdentity(b['refresh_chain_scope']['network'])??null;return cacheSuccess({'op':'refresh_chain_scope','previous_chain_identity':j,'chain_identity':k,'changed':k!==null&&k!==j,'resolved':k!==null},c);}return accountError('No\x20cache\x20operation\x20specified',c);}catch(l){const m=l instanceof Error?l['message']:String(l);return{'content':[{'type':'text','text':'Error:\x20'+m}],'structuredContent':{'result':{'status':'error','error':m,'error_code':'unknown_error','retryable':!![],'recovery_hint':'If\x20the\x20cache\x20backend\x20is\x20locked\x20or\x20corrupt,\x20use\x20{clear:\x20{op:\x27clear\x27}}\x20to\x20drop\x20everything,\x20or\x20{refresh_chain_scope:\x20{op:\x27refresh_chain_scope\x27}}\x20if\x20the\x20node\x20was\x20reset.'},'semantic':buildDataSemantic(undefined,c,!![],m)}};}};
@@ -1 +1 @@
1
- import{strictParse,MessengerOperationInputSchema}from'../../schema/index.js';import{watch_conversations,send_message,send_file,watch_messages,export_attachment,pull_messages,generate_wts,verify_wts,sign_wts,wts2html,proof_message,mark_messages_as_viewed,mark_conversation_as_viewed,blacklist,friendslist,guardlist,settings,LocalInfo,GetAccountOrMark_Address,Config,query_objects,wowAddressKind}from'@wowok/wowok';import{classifyError,buildDataSemantic,normalizeErrorMessage}from'../../schema/call/semantic.js';import{classifyCommunicationEvidence}from'../../communication/evidence.js';import{pageMessagesBySeq,recordConversationRead,getConversationReadReceipt}from'../../communication/message-cursors.js';import{noteProofIssued}from'../../communication/proof-reuse.js';import{isModuleLoadError,noteRuntimeModuleFault}from'../runtime-health.js';import{attestWtsFile,evaluateWtsSealedAvailability}from'../../communication/wts-attestation.js';import{goalEngine}from'../../goal/GoalEngine.js';export function normalizeAccountOrMark(a){if(typeof a==='string')return{'name_or_address':a,'local_mark_first':!![]};return a;}export function normalizeOptionalAccountOrMark(a){if(a===undefined||a===null)return undefined;return normalizeAccountOrMark(a);}export function normalizeManyAccountOrMark(a){if(a===undefined||a===null)return undefined;if(Array['isArray'](a))return{'entities':a['map'](b=>typeof b==='string'?{'name_or_address':b,'local_mark_first':!![]}:b),'check_all_founded':!![]};return a;}function communicationEvidencePayload(a,b){const c=b??{};switch(a){case'send_message':case'send_file':{const d=typeof c['messageId']==='string'?c['messageId']:undefined;return{'detail':d?'message\x20'+d:'message\x20sent','data':d?{'message_id':d}:{}};}case'send_required_info':{const e=typeof c['messageId']==='string'?c['messageId']:undefined,f=Array['isArray'](c['sent_fields'])?c['sent_fields']:undefined;return{'detail':'required-info\x20confirmation\x20sent','data':{...e?{'message_id':e}:{},...f?{'sent_fields':f}:{}}};}case'generate_wts':{const g=typeof c['totalMessageCount']==='number'?c['totalMessageCount']:undefined,h=Array['isArray'](c['files'])?c['files']:undefined,i=Array['isArray'](c['htmlFiles'])?c['htmlFiles']:undefined;return{'detail':'WTS\x20evidence\x20packet\x20generated','data':{...g!==undefined?{'message_count':g}:{},...h?{'files':h}:{},...i?{'html_reports':i}:{}}};}case'verify_wts':{const j=c['attestation'],k=typeof c['error']==='string'?c['error']:undefined;return{'detail':j?'WTS\x20verification\x20—\x20'+j['attested_count']+'/'+j['total_messages']+'\x20message(s)\x20server-attested':'WTS\x20verification\x20—\x20server\x20attestation\x20unavailable','data':{'valid':c['valid']===!![],'hash_valid':c['hashValid']===!![],'has_signature':c['hasSignature']===!![],...c['signatureValid']===undefined?{}:{'packet_signature_valid':c['signatureValid']===!![]},...k?{'error':k}:{},...j?{'attested_messages':j['attested_count'],'total_messages':j['total_messages'],'fully_attested':j['fully_attested'],'packet_signed':j['packet_signed'],'server_public_keys':j['server_public_keys'],'verdict':j['verdict']}:{'attestation':'unavailable\x20—\x20cross-check\x20the\x20seal\x20signer\x20and\x20server\x20keys\x20independently\x20before\x20treating\x20the\x20packet\x20as\x20third-party\x20evidence'}}};}case'sign_wts':{return{'detail':typeof b==='string'?b:'WTS\x20evidence\x20signed','data':{}};}case'proof_message':{const l=typeof c['proofAddress']==='string'?c['proofAddress']:undefined;return{'detail':l?'proof\x20'+l:'message\x20proofed\x20on-chain','data':l?{'proof_address':l}:{}};}default:return{'detail':a,'data':{}};}}export function throwIfTransportAmbiguous(a,b){const c=b instanceof Error?b['message']:String(b);if(/timeout|timed out|ETIMEDOUT|ECONNRESET|ECONNREFUSED|EAI_AGAIN|socket\s+hang\s+up|connection\s+(refused|reset|lost)|fetch\s+failed|unexpected\s+status\s+code:\s*5\d\d/i['test'](c))throw new Error('messenger\x20delivery\x20state\x20UNKNOWN\x20on\x20'+a+':\x20the\x20transport\x20failed\x20AFTER\x20submission\x20('+c+')\x20—\x20'+'the\x20relay\x20may\x20have\x20already\x20committed\x20the\x20message\x20despite\x20the\x20client-side\x20failure.\x20'+'Do\x20NOT\x20re-send\x20blindly:\x20first\x20check\x20the\x20conversation\x20(watch_conversations\x20/\x20read\x20messages)\x20'+'for\x20the\x20same\x20payload;\x20re-send\x20only\x20after\x20confirming\x20it\x20never\x20arrived.\x20A\x20blind\x20re-send\x20DOUBLE-DELIVERS.');throw b instanceof Error?b:new Error(c);}const LOCAL_SCAN_PAGE_SIZE=0x3e8,LOCAL_SCAN_MAX_PAGES=0xa;async function scanConversationMessages(a,b){const c=[];let d=0x0;for(let e=0x0;e<LOCAL_SCAN_MAX_PAGES;e++){const f=await watch_messages({'account':a,'peerAddress':b,'sortOrder':'desc','skipAutoMarkViewed':!![],'limit':LOCAL_SCAN_PAGE_SIZE,'offset':d});c['push'](...f);if(f['length']<LOCAL_SCAN_PAGE_SIZE)return{'messages':c,'truncated':![]};d+=LOCAL_SCAN_PAGE_SIZE;}return{'messages':c,'truncated':!![]};}async function resolveMessengerAddress(a,b){try{const d=await GetAccountOrMark_Address(a);if(typeof d==='string'&&d['length']>0x0)return d;}catch{}const c=typeof a==='string'?a:a?.['name_or_address'];if(typeof c==='string'&&c['length']>0x0)return c;throw new Error(b+'\x20could\x20not\x20be\x20resolved\x20to\x20a\x20messenger\x20account\x20address');}async function resolveContactRecipient(a,b,c){let d;try{d=await GetAccountOrMark_Address(a);}catch{d=undefined;}if(!d||wowAddressKind(d)!=='object')return normalizeAccountOrMark(a);let f;try{const g=await query_objects({'objects':[d],'network':b}),h=g?.['objects']?.[0x0];if(h?.['type']==='Contact'){const i=(Array['isArray'](h['ims'])?h['ims']:[])['find'](j=>typeof j?.['at']==='string'&&j['at'])?.['at'];if(i)return{'name_or_address':i,'local_mark_first':!![]};}f=h?.['type'];}catch(j){throw new Error(c+'\x20\x27'+d+'\x27\x20is\x20an\x20on-chain\x20OBJECT\x20address,\x20not\x20an\x20account\x20—\x20messenger\x20recipients\x20are\x20ACCOUNT\x20'+'addresses.\x20A\x20Contact\x20object\x20would\x20be\x20auto-resolved\x20to\x20the\x20messenger\x20address\x20stored\x20inside\x20it,\x20but\x20the\x20'+('on-chain\x20lookup\x20failed\x20('+(j instanceof Error?j['message']:String(j))+').\x20Re-try,\x20or\x20pass\x20the\x20recipient\x27s\x20')+'account\x20address\x20or\x20account/mark\x20name.');}if(f==='Contact')throw new Error(c+'\x20\x27'+d+'\x27\x20is\x20a\x20Contact\x20object\x20that\x20stores\x20NO\x20messenger\x20address\x20(empty\x20ims)\x20—\x20Messenger\x20routes\x20'+'messages\x20to\x20the\x20Contact\x27s\x20ims\x20members,\x20so\x20this\x20send\x20would\x20have\x20nowhere\x20to\x20arrive.\x20Register\x20an\x20IM\x20address\x20'+'on\x20the\x20Contact\x20first\x20(contact\x20ims\x20add),\x20or\x20pass\x20the\x20recipient\x27s\x20account\x20address\x20directly.');throw new Error(c+'\x20\x27'+d+'\x27\x20is\x20an\x20on-chain\x20'+(f??'non-account')+'\x20object\x20address,\x20not\x20an\x20account\x20—\x20'+'messenger\x20recipients\x20are\x20ACCOUNT\x20addresses\x20(a\x20Contact\x20object\x20is\x20auto-resolved\x20to\x20the\x20messenger\x20address\x20'+'stored\x20inside\x20it).\x20Pass\x20the\x20account\x20address\x20or\x20account/mark\x20name\x20instead.');}export async function handleMessengerOperation(a){let b;try{b=strictParse(MessengerOperationInputSchema,a,'messenger_operation\x20input');const c=b['operation'];let d,f;switch(b['operation']){case'watch_conversations':{const i=await watch_conversations(b['filter']);d={'operation':'watch_conversations','result':i};break;}case'send_message':{const j=await resolveContactRecipient(b['to'],b['options']?.['network'],'send_message.to');let k;try{k=await send_message(normalizeOptionalAccountOrMark(b['from']),j,b['content'],b['options']);}catch(n){throwIfTransportAmbiguous('send_message',n);}if(k['authRequired']){d={'operation':'send_message','result':k};break;}const l=k,m={...l,'merkleData':l['merkleData']?{'leafIndex':l['merkleData']['leafIndex'],'prevRoot':l['merkleData']['prevRoot'],'newRoot':l['merkleData']['newRoot'],'serverSignature':l['merkleData']['serverSignature'],'serverTimestamp':l['merkleData']['serverTimestamp'],'serverPublicKey':l['merkleData']['serverPublicKey']}:undefined};d={'operation':'send_message','result':m};break;}case'send_file':{const o=await resolveContactRecipient(b['to'],b['options']?.['network'],'send_file.to');let p;try{p=await send_file(normalizeOptionalAccountOrMark(b['from']),o,b['filePath'],b['options']);}catch(s){throwIfTransportAmbiguous('send_file',s);}const q=p,r={...q,'merkleData':q['merkleData']?{'leafIndex':q['merkleData']['leafIndex'],'prevRoot':q['merkleData']['prevRoot'],'newRoot':q['merkleData']['newRoot'],'serverSignature':q['merkleData']['serverSignature'],'serverTimestamp':q['merkleData']['serverTimestamp'],'serverPublicKey':q['merkleData']['serverPublicKey']}:undefined};d={'operation':'send_file','result':r};break;}case'send_required_info':{let t=b['content'];const u=[];let v;if(!t){const A=await GetAccountOrMark_Address(b['from']),B=await LocalInfo['Instance']()['list'](undefined,A),C=b['fields'],D=C&&C['length']>0x0?B['filter'](E=>C['includes'](E['name'])):B;if(D['length']===0x0)throw new Error('No\x20LocalInfo\x20fields\x20available.\x20Add\x20private\x20info\x20first\x20via\x20local_info_operation.');t=D['map'](E=>E['name']+':\x20'+E['default'])['join']('\x0a'),u['push'](...D['map'](E=>E['name']));}else b['fields']&&b['fields']['length']>0x0&&(v=[...b['fields']]);const w=await resolveContactRecipient(b['to'],b['options']?.['network'],'send_required_info.to'),x=await send_message(normalizeOptionalAccountOrMark(b['from']),w,t,b['options']),y=x,z={...y,'merkleData':y['merkleData']?{'leafIndex':y['merkleData']['leafIndex'],'prevRoot':y['merkleData']['prevRoot'],'newRoot':y['merkleData']['newRoot'],'serverSignature':y['merkleData']['serverSignature'],'serverTimestamp':y['merkleData']['serverTimestamp'],'serverPublicKey':y['merkleData']['serverPublicKey']}:undefined,...v?{'fields_ignored':v,'note':'content\x20took\x20precedence:\x20the\x20requested\x20LocalInfo\x20fields\x20listed\x20in\x20fields_ignored\x20were\x20NOT\x20assembled\x20and\x20NOT\x20sent\x20—\x20only\x20the\x20explicit\x20content\x20was\x20delivered.\x20To\x20send\x20the\x20LocalInfo\x20assembly\x20instead,\x20re-call\x20WITHOUT\x20content.'}:{},'sent_fields':u};d={'operation':'send_required_info','result':z};break;}case'watch_messages':{const E=b['filter']?{...b['filter'],'peerAddress':b['filter']['peerAddress']?normalizeAccountOrMark(b['filter']['peerAddress']):undefined,'account':b['filter']['account']?normalizeOptionalAccountOrMark(b['filter']['account']):undefined}:undefined,F=await watch_messages(E);d={'operation':'watch_messages','result':F};Array['isArray'](F)&&F['length']===0x0&&(f='watch_messages\x20returned\x200\x20messages:\x20it\x20reads\x20the\x20LOCAL\x20message\x20cache\x20only\x20and\x20never\x20contacts\x20the\x20'+'messenger\x20server,\x20so\x20messages\x20not\x20yet\x20pulled\x20are\x20invisible\x20here.\x20Run\x20pull_messages\x20for\x20this\x20'+'account/peer\x20first,\x20then\x20watch_messages\x20again.\x20(watch_messages\x20intentionally\x20never\x20advances\x20the\x20'+'pull\x20cursor\x20—\x20this\x20is\x20by\x20contract,\x20not\x20a\x20fault.)');break;}case'save_attachment':{const G=await export_attachment(normalizeOptionalAccountOrMark(b['account']),b['messageId'],{'outputDir':b['outputDir'],'saveAs':b['saveAs']});d={'operation':'save_attachment','result':G};break;}case'generate_wts':{const H=b['params']?{...b['params'],'peerAccount':normalizeAccountOrMark(b['params']['peerAccount']),'myAccount':normalizeOptionalAccountOrMark(b['params']['myAccount'])}:undefined,I=await generate_wts(H);let J={'sealed_available':null,'sealed_available_note':null};try{const K=I?.['files'],L=Array['isArray'](K)&&typeof K[0x0]==='string'&&K[0x0]?K[0x0]:undefined;L?J=evaluateWtsSealedAvailability(await verify_wts(L)):J={'sealed_available':null,'sealed_available_note':'Evidence-tier\x20pre-check\x20UNVERIFIED:\x20no\x20packet\x20file\x20was\x20returned\x20to\x20probe\x20—\x20the\x20third-party-verifiable\x20tier\x20is\x20UNKNOWN;\x20run\x20sign_wts\x20then\x20verify_wts\x20and\x20read\x20serverKeysOfficial/serverKeyAnchor\x20there.'};}catch{J={'sealed_available':null,'sealed_available_note':'Evidence-tier\x20pre-check\x20UNVERIFIED:\x20the\x20anchor\x20probe\x20failed\x20(the\x20key\x20book\x20or\x20chain\x20was\x20unreachable)\x20—\x20the\x20WTS\x20itself\x20was\x20generated\x20normally;\x20treat\x20the\x20third-party-verifiable\x20tier\x20as\x20UNKNOWN\x20and\x20re-probe\x20with\x20verify_wts\x20after\x20sign_wts.'};}d={'operation':'generate_wts','result':{...I??{},'sealed_available':J['sealed_available'],'sealed_available_note':J['sealed_available_note']}};break;}case'verify_wts':{const M=await verify_wts(b['wtsFilePath']),N=M??{},O=N['serverKeyAnchor']?.['verified']===![]||/anchor|key book/i['test'](String(N['error']??'')),P=O?'EVIDENCE\x20TIER\x20DOWNGRADE\x20(CSTC2-06,\x20algr12\x20P1-4):\x20the\x20on-chain\x20key-book\x20anchor\x20did\x20not\x20verify\x20('+(N['serverKeyAnchor']?.['reason']??String(N['error']??'anchor\x20check\x20failed'))+(N['serverKeyAnchor']?.['network']?';\x20anchor\x20network\x20\x27'+N['serverKeyAnchor']['network']+'\x27':'')+').\x20A\x20WTS\x20whose\x20key\x20book\x20is\x20not\x20anchored\x20CANNOT\x20be\x20third-party-verifiable\x20evidence\x20—\x20verify_wts\x20is\x20structurally\x20false\x20in\x20this\x20state\x20and\x20this\x20does\x20NOT\x20mean\x20the\x20conversation\x20or\x20the\x20packet\x20is\x20forged.\x20Treat\x20the\x20WTS\x20as\x20a\x20PRIVATE\x20conversation\x20record\x20only;\x20anything\x20that\x20must\x20hold\x20in\x20a\x20dispute\x20rides\x20proof_message\x20(an\x20on-chain\x20Proof\x20anchor)\x20with\x20the\x20WTS\x20quoted\x20as\x20context,\x20never\x20as\x20the\x20sole\x20proof.\x20The\x20anchor\x20itself\x20is\x20an\x20OPS\x20deployment/migration\x20item\x20(the\x20server\x20keybook\x20account\x20re-anchors\x20its\x20key\x20book\x20record\x20—\x20CipherStamp/ops\x20keybook-anchor.mjs;\x20CSTC2-06\x20protocol-train\x20candidate)\x20—\x20re-run\x20verify_wts\x20after\x20the\x20anchor\x20lands.':undefined,Q=M?.['valid']===![]?'A\x20packet\x20generated\x20by\x20generate_wts\x20is\x20UNSEALED\x20(no\x20meta.signature)\x20and\x20always\x20fails\x20verification\x20—\x20run\x20sign_wts\x20on\x20this\x20file\x20first,\x20then\x20verify_wts\x20the\x20SIGNED\x20output.':undefined,R=await attestWtsFile(b['wtsFilePath']);let S;if(M?.['serverKeysOfficial']===!![]){const T=M?.['serverKeysOfficialNetwork'],U=M?.['serverKeyAnchor']?.['network'],V=[];if(T){let W;try{W=String(await Config['Instance']()['network_get']());}catch{}W&&W!==T&&V['push']('NETWORK\x20MISMATCH:\x20official-key\x20verification\x20scored\x20in\x20the\x20\x27'+T+'\x27\x20key\x20partition,\x20but\x20this\x20call\x20was\x20served\x20on\x20network\x20\x27'+W+'\x27.\x20'+('The\x20verdict\x20is\x20evidence\x20for\x20\x27'+T+'\x27\x20only\x20—\x20quote\x20this\x20transcript\x20with\x20its\x20partition\x20stated,\x20or\x20switch\x20env.network\x20to\x20\x27'+T+'\x27\x20and\x20re-verify.')),T!=='mainnet'&&V['push']('PARTITION\x20RULE:\x20this\x20official\x20verdict\x20is\x20bound\x20to\x20the\x20\x27'+T+'\x27\x20partition\x20(anchor\x20network:\x20'+(U??T)+').\x20'+'For\x20a\x20MAINNET\x20case\x20the\x20ONLY\x20network-level\x20truth\x20is\x20an\x20on-chain\x20Proof\x20anchor\x20—\x20a\x20proof_message\x20re-anchored\x20on\x20mainnet.\x20'+'A\x20file-level\x20official\x20verdict\x20from\x20a\x20non-mainnet\x20partition\x20is\x20rehearsal\x20evidence\x20and\x20can\x20never\x20ground\x20a\x20mainnet\x20ruling.');}if(V['length']>0x0)S=V['join']('\x20');}d={'operation':'verify_wts','result':R?{...M,...Q?{'hint':Q}:{},...S?{'network_caveat':S}:{},...P?{'evidence_tier_note':P}:{},'attestation':R}:{...M,...Q?{'hint':Q}:{},...S?{'network_caveat':S}:{},...P?{'evidence_tier_note':P}:{},'attestation_unavailable':'Per-message\x20server\x20attestation\x20could\x20not\x20be\x20computed\x20(file\x20not\x20readable\x20locally\x20or\x20not\x20JSON).\x20The\x20guarded\x20verifier\x27s\x20valid\x20flag\x20already\x20required\x20server\x20attestation\x20+\x20seal;\x20cross-check\x20the\x20seal\x20signer\x20and\x20server\x20keys\x20yourself\x20before\x20treating\x20it\x20as\x20third-party\x20evidence.'}};break;}case'sign_wts':{const X=await sign_wts(b['wtsFilePath'],normalizeOptionalAccountOrMark(b['account']),b['outputPath']);d={'operation':'sign_wts','result':X};break;}case'wts2html':{const Y=await wts2html(b['wtsPath'],b['options']);d={'operation':'wts2html','result':Y};break;}case'proof_message':{let Z;try{Z=await proof_message(normalizeOptionalAccountOrMark(b['account']),b['messageId'],b['network']);}catch(a1){if(isModuleLoadError(a1)){const a2=noteRuntimeModuleFault('proof_message',a1);throw new Error('SDK\x20runtime\x20is\x20stale\x20in\x20this\x20process:\x20the\x20loaded\x20module\x20graph\x20references\x20chunk\x20\x22'+a2['module']+'\x22\x20'+'which\x20no\x20longer\x20exists\x20on\x20disk\x20(the\x20SDK\x20dist\x20was\x20rebuilt\x20after\x20this\x20MCP\x20process\x20started).\x20'+'Restart\x20the\x20MCP\x20server\x20to\x20reload\x20the\x20rebuilt\x20dist;\x20this\x20operation\x20cannot\x20succeed\x20until\x20then.');}throw a1;}const a0=Z?.['proofAddress'];if(typeof a0==='string')noteProofIssued(a0);d={'operation':'proof_message','result':Z};break;}case'blacklist':{const a3={'account':normalizeOptionalAccountOrMark(b['account']),'op':b['blacklist']['op']};'users'in b['blacklist']&&(a3['users']=normalizeManyAccountOrMark(b['blacklist']['users']));const a4=await blacklist(a3);d={'operation':'blacklist','op':b['blacklist']['op'],'result':a4['result']};break;}case'friendslist':{const a5={'account':normalizeOptionalAccountOrMark(b['account']),'op':b['friendslist']['op']};'users'in b['friendslist']&&(a5['users']=normalizeManyAccountOrMark(b['friendslist']['users']));const a6=await friendslist(a5);d={'operation':'friendslist','op':b['friendslist']['op'],'result':a6['result']};break;}case'guardlist':{const a7=await guardlist({'account':normalizeOptionalAccountOrMark(b['account']),...b['guardlist']});d={'operation':'guardlist','op':b['guardlist']['op'],'result':a7['result']};break;}case'settings':{const a8=await settings({'account':normalizeOptionalAccountOrMark(b['account']),...b['settings']});d={'operation':'settings','op':b['settings']['op'],'result':a8['result']};break;}case'mark_messages_as_viewed':{const a9=await mark_messages_as_viewed(b['messageIds'],normalizeOptionalAccountOrMark(b['account']));d={'operation':'mark_messages_as_viewed','result':a9};break;}case'mark_conversation_as_viewed':{const aa=await mark_conversation_as_viewed(normalizeAccountOrMark(b['peerAddress']),normalizeOptionalAccountOrMark(b['account']));d={'operation':'mark_conversation_as_viewed','result':aa};break;}case'mark_conversation_read':{const ab=await resolveMessengerAddress(b['account'],'mark_conversation_read.account'),ac=await resolveMessengerAddress(b['peerAddress'],'mark_conversation_read.peerAddress'),ad=await scanConversationMessages(ab,normalizeAccountOrMark(b['peerAddress'])),ae=ad['messages']['filter'](al=>al['direction']==='received'&&typeof al['leafIndex']==='number')['map'](al=>al['leafIndex']),af=ae['length']>0x0?Math['max'](...ae):null,ag=typeof b['through_seq']==='number'?b['through_seq']:null;let ah=ag??af,ai=![];ah!==null&&(af===null||ah>af)&&(ah=af,ai=!![]);const aj=await mark_conversation_as_viewed(normalizeAccountOrMark(b['peerAddress']),normalizeOptionalAccountOrMark(b['account'])),ak=recordConversationRead(ab,ac,ah);d={'operation':'mark_conversation_read','result':{...ak,'marked_count':aj,'capped':ai,'requested_through_seq':ag}};break;}case'pull_messages':{if(b['after']!==undefined){if(b['allAccounts']||b['accounts']?.['length'])throw new Error('pull_messages.after\x20is\x20conversation-scoped\x20and\x20cannot\x20be\x20combined\x20with\x20allAccounts/accounts\x20fan-out\x20—\x20call\x20it\x20once\x20per\x20account\x20and\x20conversation.');if(!b['peerAddress'])throw new Error('pull_messages.after\x20requires\x20peerAddress:\x20the\x20message\x20sequence\x20(leafIndex)\x20is\x20per\x20conversation,\x20so\x20an\x20incremental\x20cursor\x20must\x20name\x20the\x20conversation.\x20Omit\x20`after`\x20for\x20the\x20legacy\x20bare-array\x20pull.');const am=await resolveMessengerAddress(b['account'],'pull_messages.account'),an=await resolveMessengerAddress(b['peerAddress'],'pull_messages.peerAddress'),ao=typeof b['limit']==='number'?b['limit']:0x32,ap=[];try{await pull_messages(normalizeOptionalAccountOrMark(b['account']),b['limit']);}catch(at){const au=at instanceof Error?at['message']:String(at);ap['push']('server\x20refresh\x20failed,\x20so\x20this\x20page\x20is\x20served\x20from\x20the\x20local\x20store\x20only\x20('+au+')');}const aq=await scanConversationMessages(am,normalizeAccountOrMark(b['peerAddress'])),ar=pageMessagesBySeq(aq['messages'],b['after'],ao,{'scanTruncated':aq['truncated']}),as=[...ap,...ar['degraded_reasons']];d={'operation':'pull_messages','result':{'mode':'incremental','account':am,'peer':an,'after':ar['after'],'messages':ar['messages'],'highest_seq':ar['highest_seq'],'latest_seq':ar['latest_seq'],'has_more':ar['has_more'],'gap':ar['gap'],'degraded':as['length']>0x0,'degraded_reasons':as,'read_receipt':getConversationReadReceipt(am,an)}};break;}const al=await pull_messages(normalizeOptionalAccountOrMark(b['account']),b['limit'],{'allAccounts':b['allAccounts'],'accounts':b['accounts']?.['map'](av=>normalizeAccountOrMark(av)),'concurrency':b['concurrency']});d={'operation':'pull_messages','result':al};break;}default:throw new Error('Unknown\x20messenger\x20operation:\x20'+c);}const g=classifyCommunicationEvidence(c),h=b['goal_id'];if(g&&h){const av=d['result'],{detail:aw,data:ax}=communicationEvidencePayload(c,av);await goalEngine['recordCommunicationEvidence'](h,{'operation':c,'kind':g['kind'],'title':g['title'],'detail':aw,'data':ax},b['network']??'default');}return{'content':[{'type':'text','text':f?JSON['stringify'](d)+'\x0a'+f:JSON['stringify'](d)}],'structuredContent':{'result':d}};}catch(ay){const az=normalizeErrorMessage(ay),aA=b?{'operation_type':'messenger_'+b['operation'],'data':b}:undefined,aB=classifyError(az),aC={'operation':'error','error':az};if(aB['error_code']!==undefined)aC['error_code']=aB['error_code'];if(aB['retryable']!==undefined)aC['retryable']=aB['retryable'];if(aB['recovery_hint']!==undefined)aC['recovery_hint']=aB['recovery_hint'];return{'content':[{'type':'text','text':'Error:\x20'+az}],'structuredContent':{'result':aC,'semantic':buildDataSemantic(undefined,aA,!![],az)}};}}
1
+ import{strictParse,MessengerOperationInputSchema}from'../../schema/index.js';import{watch_conversations,send_message,send_file,watch_messages,export_attachment,pull_messages,generate_wts,verify_wts,sign_wts,wts2html,proof_message,mark_messages_as_viewed,mark_conversation_as_viewed,blacklist,friendslist,guardlist,settings,LocalInfo,GetAccountOrMark_Address,Config,query_objects,wowAddressKind}from'@wowok/wowok';import{classifyError,buildDataSemantic,normalizeErrorMessage}from'../../schema/call/semantic.js';import{classifyCommunicationEvidence}from'../../communication/evidence.js';import{pageMessagesBySeq,recordConversationRead,getConversationReadReceipt}from'../../communication/message-cursors.js';import{noteProofIssued}from'../../communication/proof-reuse.js';import{isModuleLoadError,noteRuntimeModuleFault}from'../runtime-health.js';import{attestWtsFile,evaluateWtsSealedAvailability}from'../../communication/wts-attestation.js';import{goalEngine}from'../../goal/GoalEngine.js';export function normalizeAccountOrMark(a){if(typeof a==='string')return{'name_or_address':a,'local_mark_first':!![]};return a;}export function normalizeOptionalAccountOrMark(a){if(a===undefined||a===null)return undefined;return normalizeAccountOrMark(a);}export function normalizeManyAccountOrMark(a){if(a===undefined||a===null)return undefined;if(Array['isArray'](a))return{'entities':a['map'](b=>typeof b==='string'?{'name_or_address':b,'local_mark_first':!![]}:b),'check_all_founded':!![]};return a;}function communicationEvidencePayload(a,b){const c=b??{};switch(a){case'send_message':case'send_file':{const d=typeof c['messageId']==='string'?c['messageId']:undefined;return{'detail':d?'message\x20'+d:'message\x20sent','data':d?{'message_id':d}:{}};}case'send_required_info':{const e=typeof c['messageId']==='string'?c['messageId']:undefined,f=Array['isArray'](c['sent_fields'])?c['sent_fields']:undefined;return{'detail':'required-info\x20confirmation\x20sent','data':{...e?{'message_id':e}:{},...f?{'sent_fields':f}:{}}};}case'generate_wts':{const g=typeof c['totalMessageCount']==='number'?c['totalMessageCount']:undefined,h=Array['isArray'](c['files'])?c['files']:undefined,i=Array['isArray'](c['htmlFiles'])?c['htmlFiles']:undefined;return{'detail':'WTS\x20evidence\x20packet\x20generated','data':{...g!==undefined?{'message_count':g}:{},...h?{'files':h}:{},...i?{'html_reports':i}:{}}};}case'verify_wts':{const j=c['attestation'],k=typeof c['error']==='string'?c['error']:undefined;return{'detail':j?'WTS\x20verification\x20—\x20'+j['attested_count']+'/'+j['total_messages']+'\x20message(s)\x20server-attested':'WTS\x20verification\x20—\x20server\x20attestation\x20unavailable','data':{'valid':c['valid']===!![],'hash_valid':c['hashValid']===!![],'has_signature':c['hasSignature']===!![],...c['signatureValid']===undefined?{}:{'packet_signature_valid':c['signatureValid']===!![]},...k?{'error':k}:{},...j?{'attested_messages':j['attested_count'],'total_messages':j['total_messages'],'fully_attested':j['fully_attested'],'packet_signed':j['packet_signed'],'server_public_keys':j['server_public_keys'],'verdict':j['verdict']}:{'attestation':'unavailable\x20—\x20cross-check\x20the\x20seal\x20signer\x20and\x20server\x20keys\x20independently\x20before\x20treating\x20the\x20packet\x20as\x20third-party\x20evidence'}}};}case'sign_wts':{return{'detail':typeof b==='string'?b:'WTS\x20evidence\x20signed','data':{}};}case'proof_message':{const l=typeof c['proofAddress']==='string'?c['proofAddress']:undefined;return{'detail':l?'proof\x20'+l:'message\x20proofed\x20on-chain','data':l?{'proof_address':l}:{}};}default:return{'detail':a,'data':{}};}}export function throwIfTransportAmbiguous(a,b){const c=b instanceof Error?b['message']:String(b);if(/timeout|timed out|ETIMEDOUT|ECONNRESET|ECONNREFUSED|EAI_AGAIN|socket\s+hang\s+up|connection\s+(refused|reset|lost)|fetch\s+failed|unexpected\s+status\s+code:\s*5\d\d/i['test'](c))throw new Error('messenger\x20delivery\x20state\x20UNKNOWN\x20on\x20'+a+':\x20the\x20transport\x20failed\x20AFTER\x20submission\x20('+c+')\x20—\x20'+'the\x20relay\x20may\x20have\x20already\x20committed\x20the\x20message\x20despite\x20the\x20client-side\x20failure.\x20'+'Do\x20NOT\x20re-send\x20blindly:\x20first\x20check\x20the\x20conversation\x20(watch_conversations\x20/\x20read\x20messages)\x20'+'for\x20the\x20same\x20payload;\x20re-send\x20only\x20after\x20confirming\x20it\x20never\x20arrived.\x20A\x20blind\x20re-send\x20DOUBLE-DELIVERS.');throw b instanceof Error?b:new Error(c);}const LOCAL_SCAN_PAGE_SIZE=0x3e8,LOCAL_SCAN_MAX_PAGES=0xa;async function scanConversationMessages(a,b){const c=[];let d=0x0;for(let e=0x0;e<LOCAL_SCAN_MAX_PAGES;e++){const f=await watch_messages({'account':a,'peerAddress':b,'sortOrder':'desc','skipAutoMarkViewed':!![],'limit':LOCAL_SCAN_PAGE_SIZE,'offset':d});c['push'](...f);if(f['length']<LOCAL_SCAN_PAGE_SIZE)return{'messages':c,'truncated':![]};d+=LOCAL_SCAN_PAGE_SIZE;}return{'messages':c,'truncated':!![]};}async function resolveMessengerAddress(a,b){try{const d=await GetAccountOrMark_Address(a);if(typeof d==='string'&&d['length']>0x0)return d;}catch{}const c=typeof a==='string'?a:a?.['name_or_address'];if(typeof c==='string'&&c['length']>0x0)return c;throw new Error(b+'\x20could\x20not\x20be\x20resolved\x20to\x20a\x20messenger\x20account\x20address');}async function resolveContactRecipient(a,b,c){let d;try{d=await GetAccountOrMark_Address(a);}catch{d=undefined;}if(!d||wowAddressKind(d)!=='object')return normalizeAccountOrMark(a);let f;try{const g=await query_objects({'objects':[d],'network':b}),h=g?.['objects']?.[0x0];if(h?.['type']==='Contact'){const i=(Array['isArray'](h['ims'])?h['ims']:[])['find'](j=>typeof j?.['at']==='string'&&j['at'])?.['at'];if(i)return{'name_or_address':i,'local_mark_first':!![]};}f=h?.['type'];}catch(j){throw new Error(c+'\x20\x27'+d+'\x27\x20is\x20an\x20on-chain\x20OBJECT\x20address,\x20not\x20an\x20account\x20—\x20messenger\x20recipients\x20are\x20ACCOUNT\x20'+'addresses.\x20A\x20Contact\x20object\x20would\x20be\x20auto-resolved\x20to\x20the\x20messenger\x20address\x20stored\x20inside\x20it,\x20but\x20the\x20'+('on-chain\x20lookup\x20failed\x20('+(j instanceof Error?j['message']:String(j))+').\x20Re-try,\x20or\x20pass\x20the\x20recipient\x27s\x20')+'account\x20address\x20or\x20account/mark\x20name.');}if(f==='Contact')throw new Error(c+'\x20\x27'+d+'\x27\x20is\x20a\x20Contact\x20object\x20that\x20stores\x20NO\x20messenger\x20address\x20(empty\x20ims)\x20—\x20Messenger\x20routes\x20'+'messages\x20to\x20the\x20Contact\x27s\x20ims\x20members,\x20so\x20this\x20send\x20would\x20have\x20nowhere\x20to\x20arrive.\x20Register\x20an\x20IM\x20address\x20'+'on\x20the\x20Contact\x20first\x20(contact\x20ims\x20add),\x20or\x20pass\x20the\x20recipient\x27s\x20account\x20address\x20directly.');throw new Error(c+'\x20\x27'+d+'\x27\x20is\x20an\x20on-chain\x20'+(f??'non-account')+'\x20object\x20address,\x20not\x20an\x20account\x20—\x20'+'messenger\x20recipients\x20are\x20ACCOUNT\x20addresses\x20(a\x20Contact\x20object\x20is\x20auto-resolved\x20to\x20the\x20messenger\x20address\x20'+'stored\x20inside\x20it).\x20Pass\x20the\x20account\x20address\x20or\x20account/mark\x20name\x20instead.');}export async function handleMessengerOperation(a){let b;try{b=strictParse(MessengerOperationInputSchema,a,'messenger_operation\x20input');const c=b['operation'];let d,f;switch(b['operation']){case'watch_conversations':{const i=await watch_conversations(b['filter']);d={'operation':'watch_conversations','result':i};break;}case'send_message':{const j=await resolveContactRecipient(b['to'],b['options']?.['network'],'send_message.to');let k;try{k=await send_message(normalizeOptionalAccountOrMark(b['from']),j,b['content'],b['options']);}catch(n){throwIfTransportAmbiguous('send_message',n);}if(k['authRequired']){d={'operation':'send_message','result':k};break;}const l=k,m={...l,'merkleData':l['merkleData']?{'leafIndex':l['merkleData']['leafIndex'],'prevRoot':l['merkleData']['prevRoot'],'newRoot':l['merkleData']['newRoot'],'serverSignature':l['merkleData']['serverSignature'],'serverTimestamp':l['merkleData']['serverTimestamp'],'serverPublicKey':l['merkleData']['serverPublicKey']}:undefined};d={'operation':'send_message','result':m};break;}case'send_file':{const o=await resolveContactRecipient(b['to'],b['options']?.['network'],'send_file.to');let p;try{p=await send_file(normalizeOptionalAccountOrMark(b['from']),o,b['filePath'],b['options']);}catch(s){throwIfTransportAmbiguous('send_file',s);}const q=p,r={...q,'merkleData':q['merkleData']?{'leafIndex':q['merkleData']['leafIndex'],'prevRoot':q['merkleData']['prevRoot'],'newRoot':q['merkleData']['newRoot'],'serverSignature':q['merkleData']['serverSignature'],'serverTimestamp':q['merkleData']['serverTimestamp'],'serverPublicKey':q['merkleData']['serverPublicKey']}:undefined};d={'operation':'send_file','result':r};break;}case'send_required_info':{let t=b['content'];const u=[];let v;if(!t){const A=await GetAccountOrMark_Address(b['from']),B=await LocalInfo['Instance']()['list'](undefined,A),C=b['fields'],D=C&&C['length']>0x0?B['filter'](E=>C['includes'](E['name'])):B;if(D['length']===0x0)throw new Error('No\x20LocalInfo\x20fields\x20available.\x20Add\x20private\x20info\x20first\x20via\x20local_info_operation.');t=D['map'](E=>E['name']+':\x20'+E['default'])['join']('\x0a'),u['push'](...D['map'](E=>E['name']));}else b['fields']&&b['fields']['length']>0x0&&(v=[...b['fields']]);const w=await resolveContactRecipient(b['to'],b['options']?.['network'],'send_required_info.to'),x=await send_message(normalizeOptionalAccountOrMark(b['from']),w,t,b['options']),y=x,z={...y,'merkleData':y['merkleData']?{'leafIndex':y['merkleData']['leafIndex'],'prevRoot':y['merkleData']['prevRoot'],'newRoot':y['merkleData']['newRoot'],'serverSignature':y['merkleData']['serverSignature'],'serverTimestamp':y['merkleData']['serverTimestamp'],'serverPublicKey':y['merkleData']['serverPublicKey']}:undefined,...v?{'fields_ignored':v,'note':'content\x20took\x20precedence:\x20the\x20requested\x20LocalInfo\x20fields\x20listed\x20in\x20fields_ignored\x20were\x20NOT\x20assembled\x20and\x20NOT\x20sent\x20—\x20only\x20the\x20explicit\x20content\x20was\x20delivered.\x20To\x20send\x20the\x20LocalInfo\x20assembly\x20instead,\x20re-call\x20WITHOUT\x20content.'}:{},'sent_fields':u};d={'operation':'send_required_info','result':z};break;}case'watch_messages':{const E=b['filter']?{...b['filter'],'peerAddress':b['filter']['peerAddress']?normalizeAccountOrMark(b['filter']['peerAddress']):undefined,'account':b['filter']['account']?normalizeOptionalAccountOrMark(b['filter']['account']):undefined}:undefined,F=await watch_messages(E);d={'operation':'watch_messages','result':F};Array['isArray'](F)&&F['length']===0x0&&(f='watch_messages\x20returned\x200\x20messages:\x20it\x20reads\x20the\x20LOCAL\x20message\x20cache\x20only\x20and\x20never\x20contacts\x20the\x20'+'messenger\x20server,\x20so\x20messages\x20not\x20yet\x20pulled\x20are\x20invisible\x20here.\x20Run\x20pull_messages\x20for\x20this\x20'+'account/peer\x20first,\x20then\x20watch_messages\x20again.\x20(watch_messages\x20intentionally\x20never\x20advances\x20the\x20'+'pull\x20cursor\x20—\x20this\x20is\x20by\x20contract,\x20not\x20a\x20fault.)');break;}case'save_attachment':{const G=await export_attachment(normalizeOptionalAccountOrMark(b['account']),b['messageId'],{'outputDir':b['outputDir'],'saveAs':b['saveAs']});d={'operation':'save_attachment','result':G};break;}case'generate_wts':{const H=b['params']?{...b['params'],'peerAccount':normalizeAccountOrMark(b['params']['peerAccount']),'myAccount':normalizeOptionalAccountOrMark(b['params']['myAccount'])}:undefined,I=await generate_wts(H);let J={'sealed_available':null,'sealed_available_note':null};try{const K=I?.['files'],L=Array['isArray'](K)&&typeof K[0x0]==='string'&&K[0x0]?K[0x0]:undefined;L?J=evaluateWtsSealedAvailability(await verify_wts(L)):J={'sealed_available':null,'sealed_available_note':'Evidence-tier\x20pre-check\x20UNVERIFIED:\x20no\x20packet\x20file\x20was\x20returned\x20to\x20probe\x20—\x20the\x20third-party-verifiable\x20tier\x20is\x20UNKNOWN;\x20run\x20sign_wts\x20then\x20verify_wts\x20and\x20read\x20serverKeysOfficial/serverKeyAnchor\x20there.'};}catch{J={'sealed_available':null,'sealed_available_note':'Evidence-tier\x20pre-check\x20UNVERIFIED:\x20the\x20anchor\x20probe\x20failed\x20(the\x20key\x20book\x20or\x20chain\x20was\x20unreachable)\x20—\x20the\x20WTS\x20itself\x20was\x20generated\x20normally;\x20treat\x20the\x20third-party-verifiable\x20tier\x20as\x20UNKNOWN\x20and\x20re-probe\x20with\x20verify_wts\x20after\x20sign_wts.'};}d={'operation':'generate_wts','result':{...I??{},'sealed_available':J['sealed_available'],'sealed_available_note':J['sealed_available_note']}};break;}case'verify_wts':{const M=await verify_wts(b['wtsFilePath']),N=M??{},O=N['serverKeyAnchor']?.['verified']===![]||/anchor|key book/i['test'](String(N['error']??'')),P=O?'EVIDENCE\x20TIER\x20DOWNGRADE\x20(CSTC2-06,\x20algr12\x20P1-4):\x20the\x20on-chain\x20key-book\x20anchor\x20did\x20not\x20verify\x20('+(N['serverKeyAnchor']?.['reason']??String(N['error']??'anchor\x20check\x20failed'))+(N['serverKeyAnchor']?.['network']?';\x20anchor\x20network\x20\x27'+N['serverKeyAnchor']['network']+'\x27':'')+').\x20A\x20WTS\x20whose\x20key\x20book\x20is\x20not\x20anchored\x20CANNOT\x20be\x20third-party-verifiable\x20evidence\x20—\x20verify_wts\x20is\x20structurally\x20false\x20in\x20this\x20state\x20and\x20this\x20does\x20NOT\x20mean\x20the\x20conversation\x20or\x20the\x20packet\x20is\x20forged.\x20Treat\x20the\x20WTS\x20as\x20a\x20PRIVATE\x20conversation\x20record\x20only;\x20anything\x20that\x20must\x20hold\x20in\x20a\x20dispute\x20rides\x20proof_message\x20(an\x20on-chain\x20Proof\x20anchor)\x20with\x20the\x20WTS\x20quoted\x20as\x20context,\x20never\x20as\x20the\x20sole\x20proof.\x20The\x20anchor\x20itself\x20is\x20an\x20OPS\x20deployment/migration\x20item\x20(the\x20server\x20keybook\x20account\x20re-anchors\x20its\x20key\x20book\x20record\x20—\x20CipherStamp/ops\x20keybook-anchor.mjs;\x20CSTC2-06\x20protocol-train\x20candidate)\x20—\x20re-run\x20verify_wts\x20after\x20the\x20anchor\x20lands.':undefined,Q=M?.['valid']===![]?'A\x20packet\x20generated\x20by\x20generate_wts\x20is\x20UNSEALED\x20(no\x20meta.signature)\x20and\x20always\x20fails\x20verification\x20—\x20run\x20sign_wts\x20on\x20this\x20file\x20first,\x20then\x20verify_wts\x20the\x20SIGNED\x20output.':undefined,R=await attestWtsFile(b['wtsFilePath']);let S;if(M?.['serverKeysOfficial']===!![]){const T=M?.['serverKeysOfficialNetwork'],U=M?.['serverKeyAnchor']?.['network'],V=[];if(T){let W;try{W=String(await Config['Instance']()['network_get'](b['network']??undefined));}catch{}if(W&&W!==T){const X=b['network'];V['push']('NETWORK\x20MISMATCH:\x20official-key\x20verification\x20scored\x20in\x20the\x20\x27'+T+'\x27\x20key\x20partition,\x20but\x20this\x20call\x20was\x20'+(X?'DECLARED\x20on\x20network\x20\x27'+W+'\x27':'served\x20on\x20network\x20\x27'+W+'\x27\x20(process\x20pin\x20—\x20pass\x20network:\x27'+T+'\x27\x20to\x20assert\x20the\x20evidence\x27s\x20partition)')+'.\x20'+('The\x20verdict\x20is\x20evidence\x20for\x20\x27'+T+'\x27\x20only\x20—\x20quote\x20this\x20transcript\x20with\x20its\x20partition\x20stated,\x20or\x20re-verify\x20with\x20network:\x27'+T+'\x27.'));}T!=='mainnet'&&V['push']('PARTITION\x20RULE:\x20this\x20official\x20verdict\x20is\x20bound\x20to\x20the\x20\x27'+T+'\x27\x20partition\x20(anchor\x20network:\x20'+(U??T)+').\x20'+'For\x20a\x20MAINNET\x20case\x20the\x20ONLY\x20network-level\x20truth\x20is\x20an\x20on-chain\x20Proof\x20anchor\x20—\x20a\x20proof_message\x20re-anchored\x20on\x20mainnet.\x20'+'A\x20file-level\x20official\x20verdict\x20from\x20a\x20non-mainnet\x20partition\x20is\x20rehearsal\x20evidence\x20and\x20can\x20never\x20ground\x20a\x20mainnet\x20ruling.');}if(V['length']>0x0)S=V['join']('\x20');}d={'operation':'verify_wts','result':R?{...M,...Q?{'hint':Q}:{},...S?{'network_caveat':S}:{},...P?{'evidence_tier_note':P}:{},'attestation':R}:{...M,...Q?{'hint':Q}:{},...S?{'network_caveat':S}:{},...P?{'evidence_tier_note':P}:{},'attestation_unavailable':'Per-message\x20server\x20attestation\x20could\x20not\x20be\x20computed\x20(file\x20not\x20readable\x20locally\x20or\x20not\x20JSON).\x20The\x20guarded\x20verifier\x27s\x20valid\x20flag\x20already\x20required\x20server\x20attestation\x20+\x20seal;\x20cross-check\x20the\x20seal\x20signer\x20and\x20server\x20keys\x20yourself\x20before\x20treating\x20it\x20as\x20third-party\x20evidence.'}};break;}case'sign_wts':{const Y=await sign_wts(b['wtsFilePath'],normalizeOptionalAccountOrMark(b['account']),b['outputPath']);d={'operation':'sign_wts','result':Y};break;}case'wts2html':{const Z=await wts2html(b['wtsPath'],b['options']);d={'operation':'wts2html','result':Z};break;}case'proof_message':{let a0;try{a0=await proof_message(normalizeOptionalAccountOrMark(b['account']),b['messageId'],b['network']);}catch(a2){if(isModuleLoadError(a2)){const a3=noteRuntimeModuleFault('proof_message',a2);throw new Error('SDK\x20runtime\x20is\x20stale\x20in\x20this\x20process:\x20the\x20loaded\x20module\x20graph\x20references\x20chunk\x20\x22'+a3['module']+'\x22\x20'+'which\x20no\x20longer\x20exists\x20on\x20disk\x20(the\x20SDK\x20dist\x20was\x20rebuilt\x20after\x20this\x20MCP\x20process\x20started).\x20'+'Restart\x20the\x20MCP\x20server\x20to\x20reload\x20the\x20rebuilt\x20dist;\x20this\x20operation\x20cannot\x20succeed\x20until\x20then.');}throw a2;}const a1=a0?.['proofAddress'];if(typeof a1==='string')noteProofIssued(a1);d={'operation':'proof_message','result':a0};break;}case'blacklist':{const a4={'account':normalizeOptionalAccountOrMark(b['account']),'op':b['blacklist']['op']};'users'in b['blacklist']&&(a4['users']=normalizeManyAccountOrMark(b['blacklist']['users']));const a5=await blacklist(a4);d={'operation':'blacklist','op':b['blacklist']['op'],'result':a5['result']};break;}case'friendslist':{const a6={'account':normalizeOptionalAccountOrMark(b['account']),'op':b['friendslist']['op']};'users'in b['friendslist']&&(a6['users']=normalizeManyAccountOrMark(b['friendslist']['users']));const a7=await friendslist(a6);d={'operation':'friendslist','op':b['friendslist']['op'],'result':a7['result']};break;}case'guardlist':{const a8=await guardlist({'account':normalizeOptionalAccountOrMark(b['account']),...b['guardlist']});d={'operation':'guardlist','op':b['guardlist']['op'],'result':a8['result']};break;}case'settings':{const a9=await settings({'account':normalizeOptionalAccountOrMark(b['account']),...b['settings']});d={'operation':'settings','op':b['settings']['op'],'result':a9['result']};break;}case'mark_messages_as_viewed':{const aa=await mark_messages_as_viewed(b['messageIds'],normalizeOptionalAccountOrMark(b['account']));d={'operation':'mark_messages_as_viewed','result':aa};break;}case'mark_conversation_as_viewed':{const ab=await mark_conversation_as_viewed(normalizeAccountOrMark(b['peerAddress']),normalizeOptionalAccountOrMark(b['account']));d={'operation':'mark_conversation_as_viewed','result':ab};break;}case'mark_conversation_read':{const ac=await resolveMessengerAddress(b['account'],'mark_conversation_read.account'),ad=await resolveMessengerAddress(b['peerAddress'],'mark_conversation_read.peerAddress'),ae=await scanConversationMessages(ac,normalizeAccountOrMark(b['peerAddress'])),af=ae['messages']['filter'](am=>am['direction']==='received'&&typeof am['leafIndex']==='number')['map'](am=>am['leafIndex']),ag=af['length']>0x0?Math['max'](...af):null,ah=typeof b['through_seq']==='number'?b['through_seq']:null;let ai=ah??ag,aj=![];ai!==null&&(ag===null||ai>ag)&&(ai=ag,aj=!![]);const ak=await mark_conversation_as_viewed(normalizeAccountOrMark(b['peerAddress']),normalizeOptionalAccountOrMark(b['account'])),al=recordConversationRead(ac,ad,ai);d={'operation':'mark_conversation_read','result':{...al,'marked_count':ak,'capped':aj,'requested_through_seq':ah}};break;}case'pull_messages':{if(b['after']!==undefined){if(b['allAccounts']||b['accounts']?.['length'])throw new Error('pull_messages.after\x20is\x20conversation-scoped\x20and\x20cannot\x20be\x20combined\x20with\x20allAccounts/accounts\x20fan-out\x20—\x20call\x20it\x20once\x20per\x20account\x20and\x20conversation.');if(!b['peerAddress'])throw new Error('pull_messages.after\x20requires\x20peerAddress:\x20the\x20message\x20sequence\x20(leafIndex)\x20is\x20per\x20conversation,\x20so\x20an\x20incremental\x20cursor\x20must\x20name\x20the\x20conversation.\x20Omit\x20`after`\x20for\x20the\x20legacy\x20bare-array\x20pull.');const an=await resolveMessengerAddress(b['account'],'pull_messages.account'),ao=await resolveMessengerAddress(b['peerAddress'],'pull_messages.peerAddress'),ap=typeof b['limit']==='number'?b['limit']:0x32,aq=[];try{await pull_messages(normalizeOptionalAccountOrMark(b['account']),b['limit']);}catch(au){const av=au instanceof Error?au['message']:String(au);aq['push']('server\x20refresh\x20failed,\x20so\x20this\x20page\x20is\x20served\x20from\x20the\x20local\x20store\x20only\x20('+av+')');}const ar=await scanConversationMessages(an,normalizeAccountOrMark(b['peerAddress'])),as=pageMessagesBySeq(ar['messages'],b['after'],ap,{'scanTruncated':ar['truncated']}),at=[...aq,...as['degraded_reasons']];d={'operation':'pull_messages','result':{'mode':'incremental','account':an,'peer':ao,'after':as['after'],'messages':as['messages'],'highest_seq':as['highest_seq'],'latest_seq':as['latest_seq'],'has_more':as['has_more'],'gap':as['gap'],'degraded':at['length']>0x0,'degraded_reasons':at,'read_receipt':getConversationReadReceipt(an,ao)}};break;}const am=await pull_messages(normalizeOptionalAccountOrMark(b['account']),b['limit'],{'allAccounts':b['allAccounts'],'accounts':b['accounts']?.['map'](aw=>normalizeAccountOrMark(aw)),'concurrency':b['concurrency']});d={'operation':'pull_messages','result':am};break;}default:throw new Error('Unknown\x20messenger\x20operation:\x20'+c);}const g=classifyCommunicationEvidence(c),h=b['goal_id'];if(g&&h){const aw=d['result'],{detail:ax,data:ay}=communicationEvidencePayload(c,aw);await goalEngine['recordCommunicationEvidence'](h,{'operation':c,'kind':g['kind'],'title':g['title'],'detail':ax,'data':ay},b['network']??'default');}return{'content':[{'type':'text','text':f?JSON['stringify'](d)+'\x0a'+f:JSON['stringify'](d)}],'structuredContent':{'result':d}};}catch(az){const aA=normalizeErrorMessage(az),aB=b?{'operation_type':'messenger_'+b['operation'],'data':b}:undefined,aC=classifyError(aA),aD={'operation':'error','error':aA};if(aC['error_code']!==undefined)aD['error_code']=aC['error_code'];if(aC['retryable']!==undefined)aD['retryable']=aC['retryable'];if(aC['recovery_hint']!==undefined)aD['recovery_hint']=aC['recovery_hint'];return{'content':[{'type':'text','text':'Error:\x20'+aA}],'structuredContent':{'result':aD,'semantic':buildDataSemantic(undefined,aB,!![],aA)}};}}