@wowok/agent-mcp 3.3.9 → 3.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (480) hide show
  1. package/README.md +8 -0
  2. package/dist/chain-semantics/composition-truth.d.ts +102 -0
  3. package/dist/chain-semantics/composition-truth.js +1 -0
  4. package/dist/chain-semantics/eval-order.js +1 -1
  5. package/dist/chain-semantics/field-capability.js +1 -1
  6. package/dist/chain-semantics/freeze-map.js +1 -1
  7. package/dist/chain-semantics/fund-flow.js +1 -1
  8. package/dist/chain-semantics/guard-verbs.js +1 -1
  9. package/dist/chain-semantics/index.d.ts +1 -0
  10. package/dist/chain-semantics/index.js +1 -1
  11. package/dist/chain-semantics/object-graph.js +1 -1
  12. package/dist/composition/audit.js +1 -1
  13. package/dist/composition/blueprint-view.d.ts +3 -3
  14. package/dist/composition/blueprint-view.js +1 -1
  15. package/dist/composition/compile.d.ts +26 -4
  16. package/dist/composition/compile.js +1 -1
  17. package/dist/composition/emit-phases.d.ts +206 -0
  18. package/dist/composition/emit-phases.js +1 -0
  19. package/dist/composition/generate.d.ts +40 -0
  20. package/dist/composition/generate.js +1 -0
  21. package/dist/composition/guard-fill.d.ts +44 -0
  22. package/dist/composition/guard-fill.js +1 -0
  23. package/dist/composition/inflight.d.ts +26 -2
  24. package/dist/composition/inflight.js +1 -1
  25. package/dist/composition/input-normalize.d.ts +15 -0
  26. package/dist/composition/input-normalize.js +1 -0
  27. package/dist/composition/materialize.d.ts +22 -13
  28. package/dist/composition/materialize.js +1 -1
  29. package/dist/composition/mode-gates.d.ts +35 -0
  30. package/dist/composition/mode-gates.js +1 -0
  31. package/dist/composition/param-disclosure.d.ts +61 -0
  32. package/dist/composition/param-disclosure.js +1 -0
  33. package/dist/composition/plan-retry-ledger.d.ts +21 -0
  34. package/dist/composition/plan-retry-ledger.js +1 -0
  35. package/dist/composition/plan.d.ts +17 -2
  36. package/dist/composition/plan.js +1 -1
  37. package/dist/composition/product-card.d.ts +94 -0
  38. package/dist/composition/product-card.js +1 -0
  39. package/dist/composition/supply-chain-emit.d.ts +46 -0
  40. package/dist/composition/supply-chain-emit.js +1 -0
  41. package/dist/config/config-audit.spec.js +1 -1
  42. package/dist/config/config-warnings.d.ts +2 -0
  43. package/dist/config/config-warnings.js +1 -0
  44. package/dist/config/exposure.d.ts +2 -2
  45. package/dist/config/judgment.d.ts +31 -5
  46. package/dist/config/judgment.js +1 -1
  47. package/dist/config/judgment.spec.js +1 -1
  48. package/dist/config/match-policy-file.d.ts +34 -0
  49. package/dist/config/match-policy-file.js +1 -0
  50. package/dist/config/match-policy-file.spec.d.ts +1 -0
  51. package/dist/config/match-policy-file.spec.js +1 -0
  52. package/dist/config/rule-engine.d.ts +5 -5
  53. package/dist/config/rule-engine.js +1 -1
  54. package/dist/config/runtime.d.ts +0 -1
  55. package/dist/config/runtime.js +1 -1
  56. package/dist/config/severity.d.ts +0 -2
  57. package/dist/config/severity.js +1 -1
  58. package/dist/config/store-policy.spec.js +1 -1
  59. package/dist/config/template-params.d.ts +42 -0
  60. package/dist/config/template-params.js +1 -0
  61. package/dist/config/template-params.spec.d.ts +1 -0
  62. package/dist/config/template-params.spec.js +1 -0
  63. package/dist/customer/account-events.js +1 -1
  64. package/dist/data/api/api.spec.js +1 -1
  65. package/dist/data/api/cli.js +1 -1
  66. package/dist/data/api/server.d.ts +1 -0
  67. package/dist/data/api/server.js +1 -1
  68. package/dist/data/projection/store.d.ts +3 -1
  69. package/dist/data/projection/store.js +1 -1
  70. package/dist/data/projection/types.d.ts +32 -0
  71. package/dist/data/sync/cdc.d.ts +1 -2
  72. package/dist/data/sync/cdc.js +1 -1
  73. package/dist/data/sync/cdc.spec.js +1 -1
  74. package/dist/data/sync/store.d.ts +5 -0
  75. package/dist/data/sync/store.js +1 -1
  76. package/dist/data/sync/types.d.ts +2 -0
  77. package/dist/evaluation/acceptance.d.ts +8 -0
  78. package/dist/evaluation/acceptance.js +1 -1
  79. package/dist/evaluation/builtins/demand-match.js +1 -1
  80. package/dist/evaluation/builtins/graph-service.spec.js +1 -1
  81. package/dist/evaluation/capability.d.ts +2 -0
  82. package/dist/evaluation/category-match-rules.d.ts +0 -1
  83. package/dist/evaluation/category-match-rules.js +1 -1
  84. package/dist/evaluation/composer.d.ts +25 -0
  85. package/dist/evaluation/composer.js +1 -1
  86. package/dist/evaluation/engine.js +1 -1
  87. package/dist/evaluation/extract.d.ts +7 -0
  88. package/dist/evaluation/extract.js +1 -1
  89. package/dist/evaluation/game-strategy.d.ts +0 -3
  90. package/dist/evaluation/game-strategy.js +1 -1
  91. package/dist/evaluation/guard-scan.js +1 -1
  92. package/dist/evaluation/match-operation.d.ts +9 -0
  93. package/dist/evaluation/match-operation.js +1 -1
  94. package/dist/evaluation/match-policy-resolver.d.ts +9 -0
  95. package/dist/evaluation/match-policy-resolver.js +1 -0
  96. package/dist/evaluation/match-policy.d.ts +3 -1
  97. package/dist/evaluation/match-policy.js +1 -1
  98. package/dist/evaluation/region.d.ts +0 -6
  99. package/dist/evaluation/region.js +1 -1
  100. package/dist/evaluation/standards.d.ts +2 -1
  101. package/dist/evaluation/standards.js +1 -1
  102. package/dist/evaluation/structured-lines.d.ts +8 -0
  103. package/dist/evaluation/structured-lines.js +1 -0
  104. package/dist/evaluation/types.d.ts +6 -0
  105. package/dist/experience/realtime-feedback.js +1 -1
  106. package/dist/extensions/capability-manifest.d.ts +1 -0
  107. package/dist/extensions/capability-manifest.js +1 -1
  108. package/dist/extensions/capability.d.ts +91 -0
  109. package/dist/extensions/capability.js +1 -0
  110. package/dist/extensions/industry-audit.spec.js +1 -1
  111. package/dist/extensions/industry-pack.d.ts +13 -0
  112. package/dist/extensions/industry-pack.js +1 -1
  113. package/dist/extensions/modes.js +1 -1
  114. package/dist/extensions/registry.d.ts +0 -2
  115. package/dist/extensions/registry.js +1 -1
  116. package/dist/goal/GoalEngine.js +1 -1
  117. package/dist/graph/onchain/analyze.js +1 -1
  118. package/dist/graph/onchain/expand.js +1 -1
  119. package/dist/graph/onchain/exposure.js +1 -1
  120. package/dist/graph/onchain/facts.js +1 -1
  121. package/dist/graph/onchain/order-status.d.ts +0 -1
  122. package/dist/graph/onchain/order-status.js +1 -1
  123. package/dist/harness/recover.js +1 -1
  124. package/dist/harness/verify.d.ts +0 -3
  125. package/dist/harness/verify.js +1 -1
  126. package/dist/index.js +1 -1
  127. package/dist/intent/types.d.ts +0 -1
  128. package/dist/intent/types.js +1 -1
  129. package/dist/keeper/detectors.js +1 -1
  130. package/dist/keeper/types.d.ts +0 -1
  131. package/dist/keeper/types.js +1 -1
  132. package/dist/knowledge/allocation-risk.d.ts +1 -0
  133. package/dist/knowledge/allocation-risk.js +1 -1
  134. package/dist/knowledge/allocation-templates.js +1 -1
  135. package/dist/knowledge/allocator-rail-verifier.d.ts +6 -1
  136. package/dist/knowledge/allocator-rail-verifier.js +1 -1
  137. package/dist/knowledge/arb-fund-facts.d.ts +1 -0
  138. package/dist/knowledge/arb-fund-facts.js +1 -1
  139. package/dist/knowledge/arbitration-ledger.js +1 -1
  140. package/dist/knowledge/arbitration-puzzle.js +1 -1
  141. package/dist/knowledge/arbitration-risk.d.ts +1 -0
  142. package/dist/knowledge/arbitration-risk.js +1 -1
  143. package/dist/knowledge/audit-rules.d.ts +2 -2
  144. package/dist/knowledge/audit-rules.js +1 -1
  145. package/dist/knowledge/baselines/judgment-baselines.json +21 -2
  146. package/dist/knowledge/baselines/rules/allocation.json +6 -6
  147. package/dist/knowledge/baselines/rules/arb.json +2 -2
  148. package/dist/knowledge/baselines/rules/guard.json +11 -11
  149. package/dist/knowledge/baselines/rules/oracle.json +120 -0
  150. package/dist/knowledge/baselines/rules/order.json +1 -1
  151. package/dist/knowledge/baselines/rules/plan.json +385 -18
  152. package/dist/knowledge/baselines/rules/progress.json +20 -2
  153. package/dist/knowledge/baselines/semantic-facts.js +1 -1
  154. package/dist/knowledge/builtin-templates.d.ts +25 -1
  155. package/dist/knowledge/builtin-templates.js +1 -1
  156. package/dist/knowledge/catalog-facts.d.ts +4 -0
  157. package/dist/knowledge/catalog-facts.js +1 -0
  158. package/dist/knowledge/commission-landing.js +1 -1
  159. package/dist/knowledge/component-schema.d.ts +64 -0
  160. package/dist/knowledge/component-schema.js +1 -0
  161. package/dist/knowledge/contact-templates.d.ts +0 -1
  162. package/dist/knowledge/contact-templates.js +1 -1
  163. package/dist/knowledge/dynamic-pricing.js +1 -1
  164. package/dist/knowledge/entity-recipient-guard.js +1 -1
  165. package/dist/knowledge/event-semantics.js +1 -1
  166. package/dist/knowledge/fee-param-bindings.d.ts +26 -0
  167. package/dist/knowledge/fee-param-bindings.js +1 -0
  168. package/dist/knowledge/fund-layer.d.ts +1 -0
  169. package/dist/knowledge/fund-layer.js +1 -1
  170. package/dist/knowledge/game-scenarios.js +1 -1
  171. package/dist/knowledge/getting-started.d.ts +2 -2
  172. package/dist/knowledge/getting-started.js +1 -1
  173. package/dist/knowledge/guard-anchor-reach.js +1 -1
  174. package/dist/knowledge/guard-binding-table.d.ts +52 -0
  175. package/dist/knowledge/guard-binding-table.js +1 -0
  176. package/dist/knowledge/guard-binding-verifier.d.ts +30 -0
  177. package/dist/knowledge/guard-binding-verifier.js +1 -0
  178. package/dist/knowledge/guard-bindings.js +1 -1
  179. package/dist/knowledge/guard-blueprint.d.ts +68 -0
  180. package/dist/knowledge/guard-blueprint.js +1 -0
  181. package/dist/knowledge/guard-design-patterns.d.ts +1 -1
  182. package/dist/knowledge/guard-design-patterns.js +1 -1
  183. package/dist/knowledge/guard-field-cognition.js +1 -1
  184. package/dist/knowledge/guard-host-context.d.ts +24 -0
  185. package/dist/knowledge/guard-host-context.js +1 -0
  186. package/dist/knowledge/guard-ledger.js +1 -1
  187. package/dist/knowledge/guard-lint.d.ts +1 -0
  188. package/dist/knowledge/guard-lint.js +1 -1
  189. package/dist/knowledge/guard-node-gates.d.ts +3 -0
  190. package/dist/knowledge/guard-node-gates.js +1 -1
  191. package/dist/knowledge/guard-puzzle.js +1 -1
  192. package/dist/knowledge/guard-render.js +1 -1
  193. package/dist/knowledge/guard-risk.js +1 -1
  194. package/dist/knowledge/guard-submission-prompt.d.ts +11 -0
  195. package/dist/knowledge/guard-submission-prompt.js +1 -1
  196. package/dist/knowledge/guard-templates.d.ts +1 -1
  197. package/dist/knowledge/guard-templates.js +1 -1
  198. package/dist/knowledge/guard-translation.js +1 -1
  199. package/dist/knowledge/index.d.ts +1 -1
  200. package/dist/knowledge/index.js +1 -1
  201. package/dist/knowledge/industry-generalizer.d.ts +6 -1
  202. package/dist/knowledge/industry-generalizer.js +1 -1
  203. package/dist/knowledge/industry-registry.js +1 -1
  204. package/dist/knowledge/industry-strategy.js +1 -1
  205. package/dist/knowledge/jsonrpc-enum.d.ts +52 -3
  206. package/dist/knowledge/jsonrpc-enum.js +1 -1
  207. package/dist/knowledge/knob-docs.d.ts +5 -0
  208. package/dist/knowledge/knob-docs.js +1 -0
  209. package/dist/knowledge/machine-templates.js +1 -1
  210. package/dist/knowledge/machine-topology.js +1 -1
  211. package/dist/knowledge/machine-translation.js +1 -1
  212. package/dist/knowledge/object-dependency.d.ts +31 -0
  213. package/dist/knowledge/object-dependency.js +1 -0
  214. package/dist/knowledge/onchain-constants.d.ts +4 -0
  215. package/dist/knowledge/onchain-constants.js +1 -1
  216. package/dist/knowledge/order-ledger.js +1 -1
  217. package/dist/knowledge/param-schema.d.ts +93 -0
  218. package/dist/knowledge/param-schema.js +1 -0
  219. package/dist/knowledge/param-tiers.d.ts +25 -0
  220. package/dist/knowledge/param-tiers.js +1 -0
  221. package/dist/knowledge/passport-ledger.d.ts +1 -1
  222. package/dist/knowledge/passport-ledger.js +1 -1
  223. package/dist/knowledge/path-oracle/coverage.d.ts +16 -0
  224. package/dist/knowledge/path-oracle/coverage.js +1 -0
  225. package/dist/knowledge/path-oracle/index.d.ts +5 -0
  226. package/dist/knowledge/path-oracle/index.js +1 -0
  227. package/dist/knowledge/path-oracle/products/food-delivery.d.ts +2 -0
  228. package/dist/knowledge/path-oracle/products/food-delivery.js +1 -0
  229. package/dist/knowledge/path-oracle/schema.d.ts +188 -0
  230. package/dist/knowledge/path-oracle/schema.js +1 -0
  231. package/dist/knowledge/pattern-resolutions.d.ts +108 -0
  232. package/dist/knowledge/pattern-resolutions.js +1 -0
  233. package/dist/knowledge/progress-ledger.js +1 -1
  234. package/dist/knowledge/progress-risk.js +1 -1
  235. package/dist/knowledge/projection.spec.js +1 -1
  236. package/dist/knowledge/protocol-facts.js +1 -1
  237. package/dist/knowledge/requirement-families.d.ts +13 -0
  238. package/dist/knowledge/requirement-families.js +1 -0
  239. package/dist/knowledge/reward-ledger.js +1 -1
  240. package/dist/knowledge/safety-rules.js +1 -1
  241. package/dist/knowledge/scenario-modes.d.ts +2 -0
  242. package/dist/knowledge/scenario-modes.js +1 -1
  243. package/dist/knowledge/scenario-topology.js +1 -1
  244. package/dist/knowledge/semantic-ir.d.ts +4 -0
  245. package/dist/knowledge/semantic-ir.js +1 -1
  246. package/dist/knowledge/service-allocation-semantics.js +1 -1
  247. package/dist/knowledge/service-ledger.d.ts +1 -1
  248. package/dist/knowledge/service-ledger.js +1 -1
  249. package/dist/knowledge/service-templates.js +1 -1
  250. package/dist/knowledge/sku-name-gate.d.ts +17 -0
  251. package/dist/knowledge/sku-name-gate.js +1 -0
  252. package/dist/knowledge/strategy-manuals.d.ts +1 -1
  253. package/dist/knowledge/strategy-manuals.js +1 -1
  254. package/dist/knowledge/supply-chain.d.ts +9 -0
  255. package/dist/knowledge/supply-chain.js +1 -1
  256. package/dist/knowledge/template-loader.d.ts +114 -6
  257. package/dist/knowledge/template-loader.js +1 -1
  258. package/dist/knowledge/template-nav.d.ts +9 -0
  259. package/dist/knowledge/template-nav.js +1 -0
  260. package/dist/knowledge/template-prose.d.ts +1 -1
  261. package/dist/knowledge/template-registry.js +1 -1
  262. package/dist/knowledge/template-scanner.d.ts +95 -0
  263. package/dist/knowledge/template-scanner.js +1 -1
  264. package/dist/knowledge/template-test-profiles.d.ts +17 -0
  265. package/dist/knowledge/template-test-profiles.js +1 -0
  266. package/dist/knowledge/template-validation.d.ts +1 -0
  267. package/dist/knowledge/template-validation.js +1 -1
  268. package/dist/knowledge/tools-reference.js +1 -1
  269. package/dist/knowledge/treasury-templates.js +1 -1
  270. package/dist/knowledge/workflow-guidance.d.ts +5 -0
  271. package/dist/knowledge/workflow-guidance.js +1 -1
  272. package/dist/monitor/MonitorLoop.js +1 -1
  273. package/dist/participation/radar-core.js +1 -1
  274. package/dist/participation/time-window.d.ts +37 -0
  275. package/dist/participation/time-window.js +1 -0
  276. package/dist/persona/address-format.d.ts +0 -1
  277. package/dist/persona/address-format.js +1 -1
  278. package/dist/persona/bridge.js +1 -1
  279. package/dist/persona/index.d.ts +0 -2
  280. package/dist/persona/index.js +1 -1
  281. package/dist/persona/model.js +1 -1
  282. package/dist/persona/persona-audit.spec.js +1 -1
  283. package/dist/persona/types.d.ts +6 -0
  284. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  285. package/dist/playbooks/service-build/game-theory.d.ts +2 -2
  286. package/dist/playbooks/service-build/intent-analyzer.js +1 -1
  287. package/dist/playbooks/service-build/machine-panorama.d.ts +1 -0
  288. package/dist/playbooks/service-build/machine-panorama.js +1 -1
  289. package/dist/playbooks/service-build/merchant-guide.d.ts +52 -22
  290. package/dist/playbooks/service-build/merchant-guide.js +1 -1
  291. package/dist/playbooks/service-build/migration-planner.d.ts +2 -0
  292. package/dist/playbooks/service-build/migration-planner.js +1 -1
  293. package/dist/playbooks/service-build/mode-actions.js +1 -1
  294. package/dist/playbooks/service-build/object-panorama.d.ts +8 -0
  295. package/dist/playbooks/service-build/object-panorama.js +1 -1
  296. package/dist/playbooks/service-build/participation-radar.d.ts +1 -0
  297. package/dist/playbooks/service-build/participation-radar.js +1 -1
  298. package/dist/playbooks/service-build/relationship-profile.js +1 -1
  299. package/dist/playbooks/service-build/reverse-mapping.d.ts +6 -0
  300. package/dist/playbooks/service-build/reverse-mapping.js +1 -1
  301. package/dist/playbooks/service-build/service-panorama.d.ts +2 -0
  302. package/dist/playbooks/service-build/service-panorama.js +1 -1
  303. package/dist/playbooks/service-build/service-quote.js +1 -1
  304. package/dist/playbooks/service-build/service-quote.spec.js +1 -1
  305. package/dist/playbooks/service-build/workflow-design-assessment.d.ts +10 -1
  306. package/dist/playbooks/service-build/workflow-design-assessment.js +1 -1
  307. package/dist/relationship/registry.js +1 -1
  308. package/dist/review/index.js +1 -1
  309. package/dist/review/repository.js +1 -1
  310. package/dist/runtime/instance-registry.d.ts +7 -1
  311. package/dist/runtime/instance-registry.js +1 -1
  312. package/dist/safety/confirm-gate.js +1 -1
  313. package/dist/schema/benchmark-migration/index.d.ts +106 -0
  314. package/dist/schema/benchmark-migration/index.js +1 -1
  315. package/dist/schema/call/allocation.d.ts +15 -6
  316. package/dist/schema/call/allocation.js +1 -1
  317. package/dist/schema/call/arbitration.js +1 -1
  318. package/dist/schema/call/base.d.ts +264 -0
  319. package/dist/schema/call/base.js +1 -1
  320. package/dist/schema/call/bridge.d.ts +34 -6
  321. package/dist/schema/call/demand.d.ts +15 -6
  322. package/dist/schema/call/demand.js +1 -1
  323. package/dist/schema/call/error-codes.d.ts +1 -1
  324. package/dist/schema/call/error-codes.js +1 -1
  325. package/dist/schema/call/guard.d.ts +8 -8
  326. package/dist/schema/call/guard.js +1 -1
  327. package/dist/schema/call/handler.d.ts +3 -0
  328. package/dist/schema/call/handler.js +1 -1
  329. package/dist/schema/call/machine.d.ts +32 -8
  330. package/dist/schema/call/machine.js +1 -1
  331. package/dist/schema/call/order.d.ts +26 -8
  332. package/dist/schema/call/order.js +1 -1
  333. package/dist/schema/call/payment.d.ts +20 -8
  334. package/dist/schema/call/payment.js +1 -1
  335. package/dist/schema/call/permission-handler.js +1 -1
  336. package/dist/schema/call/permission.d.ts +330 -114
  337. package/dist/schema/call/permission.js +1 -1
  338. package/dist/schema/call/personal.d.ts +10 -4
  339. package/dist/schema/call/personal.js +1 -1
  340. package/dist/schema/call/progress.d.ts +16 -4
  341. package/dist/schema/call/reward.d.ts +10 -4
  342. package/dist/schema/call/reward.js +1 -1
  343. package/dist/schema/call/semantic.d.ts +1 -0
  344. package/dist/schema/call/semantic.js +1 -1
  345. package/dist/schema/call/service.d.ts +131 -43
  346. package/dist/schema/call/service.js +1 -1
  347. package/dist/schema/call/treasury.d.ts +15 -6
  348. package/dist/schema/call/treasury.js +1 -1
  349. package/dist/schema/common/index.js +1 -1
  350. package/dist/schema/config/index.d.ts +61 -0
  351. package/dist/schema/config/index.js +1 -1
  352. package/dist/schema/envelope-unify.d.ts +4 -0
  353. package/dist/schema/envelope-unify.js +1 -0
  354. package/dist/schema/evaluation/index.d.ts +224 -19
  355. package/dist/schema/evaluation/index.js +1 -1
  356. package/dist/schema/goal/index.d.ts +47 -0
  357. package/dist/schema/goal/planning.d.ts +116 -1
  358. package/dist/schema/goal/planning.js +1 -1
  359. package/dist/schema/industry-pack/index.d.ts +166 -6
  360. package/dist/schema/industry-pack/index.js +1 -1
  361. package/dist/schema/industry-pack/modes.d.ts +6 -6
  362. package/dist/schema/keeper/index.d.ts +26 -0
  363. package/dist/schema/local/index.d.ts +157 -0
  364. package/dist/schema/local/index.js +1 -1
  365. package/dist/schema/local/wip.d.ts +6 -0
  366. package/dist/schema/local/wip.js +1 -1
  367. package/dist/schema/messenger/index.d.ts +28 -0
  368. package/dist/schema/messenger/index.js +1 -1
  369. package/dist/schema/operations.d.ts +343 -84
  370. package/dist/schema/operations.js +1 -1
  371. package/dist/schema/persona/index.d.ts +2907 -640
  372. package/dist/schema/persona/index.js +1 -1
  373. package/dist/schema/query/bi.d.ts +251 -4
  374. package/dist/schema/query/bi.js +1 -1
  375. package/dist/schema/query/index.d.ts +271 -78
  376. package/dist/schema/query/index.js +1 -1
  377. package/dist/schema/schema-query/index.d.ts +1 -1
  378. package/dist/schema/schema-query/index.js +1 -1
  379. package/dist/schema/schema-version.js +1 -1
  380. package/dist/schema/utils/permission-machine-check.d.ts +2 -0
  381. package/dist/schema/utils/permission-machine-check.js +1 -1
  382. package/dist/schema/watch/index.d.ts +16 -0
  383. package/dist/schema/watch/index.js +1 -1
  384. package/dist/schema/workflow/index.d.ts +2 -2
  385. package/dist/schema/workflow/index.js +1 -1
  386. package/dist/schema-query-impl/index.d.ts +1 -1
  387. package/dist/schema-query-impl/index.js +1 -1
  388. package/dist/schemas/account_operation.output.json +98 -2
  389. package/dist/schemas/benchmark_migration_operation.output.json +341 -12
  390. package/dist/schemas/benchmark_migration_operation.schema.json +42 -3
  391. package/dist/schemas/bridge_operation.output.json +98 -2
  392. package/dist/schemas/bridge_operation.schema.json +5 -5
  393. package/dist/schemas/config_operation.output.json +352 -0
  394. package/dist/schemas/config_operation.schema.json +20 -2
  395. package/dist/schemas/evaluation_operation.output.json +586 -4
  396. package/dist/schemas/evaluation_operation.schema.json +194 -3
  397. package/dist/schemas/goal_operation.schema.json +183 -0
  398. package/dist/schemas/guard2file.schema.json +1 -1
  399. package/dist/schemas/index.json +1 -1
  400. package/dist/schemas/industry_pack_operation.output.json +771 -1
  401. package/dist/schemas/industry_pack_operation.schema.json +28 -4
  402. package/dist/schemas/keeper_operation.output.json +96 -2
  403. package/dist/schemas/local_cache_operation.output.json +98 -2
  404. package/dist/schemas/local_history_operation.output.json +98 -2
  405. package/dist/schemas/local_info_operation.output.json +98 -2
  406. package/dist/schemas/local_mark_operation.output.json +98 -2
  407. package/dist/schemas/machineNode2file.schema.json +1 -1
  408. package/dist/schemas/messenger_operation.output.json +107 -2
  409. package/dist/schemas/messenger_operation.schema.json +41 -34
  410. package/dist/schemas/monitor_events.output.json +96 -2
  411. package/dist/schemas/monitor_subscription.output.json +96 -2
  412. package/dist/schemas/onchain_events.output.json +108 -14
  413. package/dist/schemas/onchain_operations.output.json +326 -11
  414. package/dist/schemas/onchain_operations.schema.json +1343 -734
  415. package/dist/schemas/onchain_operations_allocation.schema.json +35 -19
  416. package/dist/schemas/onchain_operations_arbitration.schema.json +16 -8
  417. package/dist/schemas/onchain_operations_contact.schema.json +12 -4
  418. package/dist/schemas/onchain_operations_demand.schema.json +33 -17
  419. package/dist/schemas/onchain_operations_gen_passport.schema.json +12 -4
  420. package/dist/schemas/onchain_operations_gen_proof.schema.json +1 -1
  421. package/dist/schemas/onchain_operations_guard.schema.json +297 -111
  422. package/dist/schemas/onchain_operations_machine.schema.json +56 -39
  423. package/dist/schemas/onchain_operations_order.schema.json +67 -42
  424. package/dist/schemas/onchain_operations_payment.schema.json +27 -12
  425. package/dist/schemas/onchain_operations_permission.schema.json +363 -232
  426. package/dist/schemas/onchain_operations_personal.schema.json +43 -28
  427. package/dist/schemas/onchain_operations_progress.schema.json +49 -32
  428. package/dist/schemas/onchain_operations_proof.schema.json +12 -4
  429. package/dist/schemas/onchain_operations_repository.schema.json +17 -8
  430. package/dist/schemas/onchain_operations_reward.schema.json +36 -20
  431. package/dist/schemas/onchain_operations_service.schema.json +230 -130
  432. package/dist/schemas/onchain_operations_treasury.schema.json +36 -20
  433. package/dist/schemas/onchain_table_data.output.json +276 -19
  434. package/dist/schemas/onchain_table_data.schema.json +104 -64
  435. package/dist/schemas/persona_operation.output.json +7752 -0
  436. package/dist/schemas/persona_operation.schema.json +1232 -4
  437. package/dist/schemas/query_toolkit.output.json +1054 -146
  438. package/dist/schemas/query_toolkit.schema.json +144 -13
  439. package/dist/schemas/schema_query.schema.json +1 -1
  440. package/dist/schemas/watch_operation.output.json +86 -3
  441. package/dist/schemas/wip_file.output.json +8 -0
  442. package/dist/schemas/workflow_operation.schema.json +5 -4
  443. package/dist/schemas/wowok_buildin_info.schema.json +1 -1
  444. package/dist/task/playbook.js +1 -1
  445. package/dist/tools/handlers/benchmark-migration.d.ts +12 -3
  446. package/dist/tools/handlers/benchmark-migration.js +1 -1
  447. package/dist/tools/handlers/config.js +1 -1
  448. package/dist/tools/handlers/evaluation.js +1 -1
  449. package/dist/tools/handlers/evaluation.spec.js +1 -1
  450. package/dist/tools/handlers/industry-pack.js +1 -1
  451. package/dist/tools/handlers/messenger.js +1 -1
  452. package/dist/tools/handlers/onchain.d.ts +24 -0
  453. package/dist/tools/handlers/onchain.js +1 -1
  454. package/dist/tools/handlers/persona.js +1 -1
  455. package/dist/tools/handlers/query.d.ts +8 -0
  456. package/dist/tools/handlers/query.js +1 -1
  457. package/dist/tools/handlers/winner-derivation.d.ts +20 -0
  458. package/dist/tools/handlers/winner-derivation.js +1 -0
  459. package/dist/tools/handlers/wip-upload.js +1 -1
  460. package/dist/tools/index.d.ts +1 -0
  461. package/dist/tools/index.js +1 -1
  462. package/dist/tools/registry/business.js +1 -1
  463. package/dist/tools/registry/config.js +1 -1
  464. package/dist/tools/registry/evaluation.js +1 -1
  465. package/dist/tools/registry/identity.js +1 -1
  466. package/dist/tools/registry/onchain.js +1 -1
  467. package/dist/tools/registry/query.js +1 -1
  468. package/dist/tools/sanitize-output.js +1 -1
  469. package/dist/tools/sanitize-output.spec.js +1 -1
  470. package/dist/tools/transport-integrity.d.ts +7 -0
  471. package/dist/tools/transport-integrity.js +1 -0
  472. package/dist/tools/types.d.ts +1 -0
  473. package/dist/tools/upgrade-check.d.ts +22 -0
  474. package/dist/tools/upgrade-check.js +1 -1
  475. package/dist/tools/wrap.d.ts +6 -1
  476. package/dist/tools/wrap.js +1 -1
  477. package/package.json +7 -6
  478. package/dist/extensions/business-modules.d.ts +0 -54
  479. package/dist/extensions/business-modules.js +0 -1
  480. package/dist/schemas/guard-templates.json +0 -379
@@ -27,6 +27,8 @@ export interface BusinessReport {
27
27
  export interface ReverseMappingEdge {
28
28
  from: string;
29
29
  to: string;
30
+ forward_count?: number;
31
+ unguarded_forward_count?: number;
30
32
  }
31
33
  export interface ReverseMappingOrder {
32
34
  id?: string;
@@ -53,6 +55,10 @@ export interface ReverseMappingInput {
53
55
  now_ms?: number;
54
56
  pending_stale_hours?: number;
55
57
  order_amount?: string;
58
+ arbitrations?: Array<{
59
+ found?: boolean;
60
+ paused?: boolean;
61
+ }>;
56
62
  }
57
63
  export declare const PENDING_STALE_HOURS_DEFAULT = 168;
58
64
  export declare function generateBusinessReport(input: ReverseMappingInput): BusinessReport;
@@ -1 +1 @@
1
- function fld(a,b){return a?.[b]??a?.['data']?.[b];}function detectType(a){const b=fld(a,'type')??fld(a,'type_raw');if(typeof b!=='string'||b['length']===0x0)return'';const c=b['split']('::')['pop']()??b;return c;}function objectsOfType(a,b){return a['filter'](c=>detectType(c)===b);}function identity(a){const b=fld(a,'name');if(typeof b==='string'&&b['trim']())return b['trim']();const c=fld(a,'object')??fld(a,'id');if(typeof c==='string'&&c['trim']())return c['trim']();return'unknown';}function balanceStr(a){if(a==null)return undefined;if(typeof a==='object'&&'balance'in a)return String(a['balance']);return String(a);}function extractService(a){const b=objectsOfType(a,'Service')[0x0];if(!b)return{'found':![],'name':'unavailable','description':'No\x20Service\x20object\x20found','published':![],'paused':![],'salesCount':0x0,'arbitrations':[],'hasBuyGuard':![],'hasUm':![],'rewardsCount':0x0};return{'found':!![],'name':identity(b),'description':fld(b,'description')??'Service\x20(no\x20description)','published':fld(b,'bPublished')??![],'paused':fld(b,'bPaused')??![],'salesCount':Array['isArray'](fld(b,'sales'))?fld(b,'sales')['length']:0x0,'arbitrations':(fld(b,'arbitrations')??[])['filter'](c=>!!c),'compensationFund':balanceStr(fld(b,'compensation_fund')),'hasBuyGuard':fld(b,'buy_guard')!=null,'hasUm':fld(b,'um')!=null,'rewardsCount':(fld(b,'rewards')??[])['length']};}const REFUND_TERMS=['refund','refunded','return','returned','cancel','cancelled','canceled','reverse','reversal','chargeback','reimburse','compensat','expir','expired','void','voided','reject','rejected','fail','failed','abort','aborted','walk','dispute'],TERMINAL_SUFFIXES=['complete','completed','done','finish','finished','delivered','accepted',...REFUND_TERMS],matchesAny=(a,b)=>{const c=a['toLowerCase']();return b['some'](d=>c['includes'](d));},MACHINE_START_NODE='';function extractMachine(a,b,c){const d=objectsOfType(a,'Machine')[0x0];if(!d)return{'found':![],'nodeCount':0x0,'published':![],'paused':![],'entryNodes':[],'terminalNodeNames':[],'terminalSource':'names','refundNodeNames':[],'refundReachable':[],'reachabilityKnown':![]};const f=(b??[])['map'](j=>j['name'])['filter'](j=>typeof j==='string'),g=f['filter'](j=>matchesAny(j,REFUND_TERMS)),h=(c??[])['filter'](j=>!!j&&typeof j['from']==='string'&&typeof j['to']==='string');if(h['length']>0x0){const j=new Map();for(const p of h){const q=j['get'](p['from'])??[];q['push'](p['to']),j['set'](p['from'],q);}const k=new Set(f);for(const r of h){if(r['from'])k['add'](r['from']);if(r['to'])k['add'](r['to']);}k['delete'](MACHINE_START_NODE);const l=[...k]['filter'](s=>(j['get'](s)?.['length']??0x0)===0x0)['sort'](),n=new Set();if(j['has'](MACHINE_START_NODE)){n['add'](MACHINE_START_NODE);const s=[MACHINE_START_NODE];while(s['length']>0x0){const t=s['shift']();for(const u of j['get'](t)??[]){!n['has'](u)&&(n['add'](u),s['push'](u));}}}const o=j['has'](MACHINE_START_NODE);return{'found':!![],'nodeCount':f['length']>0x0?f['length']:(fld(d,'node_count')??0x0)+0x1,'published':fld(d,'bPublished')??![],'paused':fld(d,'bPaused')??![],'entryNodes':[],'terminalNodeNames':l,'terminalSource':'topology','refundNodeNames':g,'refundReachable':o?g['filter'](v=>n['has'](v)):[],'reachabilityKnown':o};}const i=f['filter'](v=>matchesAny(v,TERMINAL_SUFFIXES));return{'found':!![],'nodeCount':f['length']>0x0?f['length']:(fld(d,'node_count')??0x0)+0x1,'published':fld(d,'bPublished')??![],'paused':fld(d,'bPaused')??![],'entryNodes':[],'terminalNodeNames':i,'terminalSource':'names','refundNodeNames':g,'refundReachable':[],'reachabilityKnown':![]};}function detectAllocationRefundSlot(a){const b=objectsOfType(a,'Service')[0x0],c=fld(b,'order_allocators'),d=Array['isArray'](c)?c:Array['isArray'](c?.['allocators'])?c['allocators']:[];for(const e of d){for(const f of e?.['sharing']??[]){const g=f?.['who'];if(g==null)continue;if(typeof g==='object'){if('GuardIdentifier'in g)return!![];if('Signer'in g)return!![];continue;}if(typeof g==='string'){const h=g['toLowerCase']();if(h['includes']('guard\x20identifier')||h==='signer')return!![];}}}return![];}export const PENDING_STALE_HOURS_DEFAULT=0xa8;function computeOrderHealth(a,b,c,d){if(!a||a['length']===0x0)return undefined;const e=d&&d['size']>0x0?d:undefined,f=l=>e!=null&&typeof l?.['current_node']==='string'&&e['has'](l['current_node']),g=a['filter'](l=>l&&l['claimed_by']==null&&!f(l)),h=e?a['filter'](l=>l&&f(l))['length']:undefined,i=typeof b==='number'&&Number['isFinite'](b)&&b>0x0;let j=0x0,k=null;for(const l of g){const m=Number(l?.['created_at_ms']??0x0);if(!i||!Number['isFinite'](m)||m<=0x0)continue;const n=b-m;if(n>c*0x36ee80)j++;if(k==null||n>k)k=n;}return{'observed':a['length'],'pending':g['length'],'settled':h,'agingKnown':i,'overdue':i?j:0x0,'oldestPendingAgeDays':i&&k!=null?Math['floor'](k/0x5265c00):null,'staleHours':c};}export function generateBusinessReport(a){const b=a['objects']??[],c=extractService(b),d=extractMachine(b,a['machine_nodes'],a['machine_edges']),e=detectAllocationRefundSlot(b),f=d['refundNodeNames']['length']>0x0,g=d['refundReachable']['length']>0x0,h=d['reachabilityKnown']?g||e:f||e,i=d['reachabilityKnown']&&f&&!g,j=a['pending_stale_hours']??PENDING_STALE_HOURS_DEFAULT,k=d['terminalSource']==='topology'&&d['terminalNodeNames']['length']>0x0?new Set(d['terminalNodeNames']):undefined,l=computeOrderHealth(a['orders'],a['now_ms'],j,k),m=l?.['agingKnown']?l['overdue']:0x0,n=l?.['pending']??0x0,o=c['arbitrations']['length']>0x0,p=c['compensationFund'],q=p==null||p==='0',r=!c['found']?'unavailable':c['published']?c['paused']?'published\x20but\x20PAUSED':'published\x20and\x20active':'not\x20yet\x20published',s=!c['found']?'No\x20Service\x20object\x20available\x20to\x20describe.':c['description']+'\x20('+r+(c['salesCount']>0x0?',\x20'+c['salesCount']+'\x20sale\x20option(s)':'')+').',t=!d['found']?'Workflow\x20(Machine)\x20unavailable\x20—\x20cannot\x20describe\x20the\x20process.':d['nodeCount']>0x0?d['nodeCount']+'-node\x20workflow\x20('+(d['published']?'published':'draft')+(d['paused']?',\x20paused':'')+').'+(d['terminalNodeNames']['length']>0x0?d['terminalSource']==='topology'?'\x20Stop\x20nodes\x20(derived\x20from\x20workflow\x20edges):\x20'+d['terminalNodeNames']['join'](',\x20')+'.':'\x20Stop/refund\x20nodes\x20detected\x20(name\x20convention\x20only\x20—\x20no\x20edge\x20table\x20to\x20verify):\x20'+d['terminalNodeNames']['join'](',\x20')+'.':d['terminalSource']==='topology'?'\x20No\x20stop\x20node\x20in\x20the\x20workflow\x20graph.':'\x20No\x20explicit\x20stop\x20node\x20detected\x20from\x20names.'):'Workflow\x20node\x20details\x20unavailable\x20(node_count\x20not\x20resolved).',u=!f?'':d['reachabilityKnown']?g?'\x20Workflow\x20edges\x20verify\x20the\x20reversal\x20rail\x20is\x20reachable:\x20node(s)\x20'+d['refundReachable']['join'](',\x20')+'.':'\x20WARNING:\x20the\x20named\x20refund\x20node(s)\x20'+d['refundNodeNames']['join'](',\x20')+'\x20are\x20UNREACHABLE\x20from\x20the\x20workflow\x20entry\x20—\x20that\x20rail\x20cannot\x20fire.':'\x20Reversal\x20rail:\x20workflow\x20node(s)\x20'+d['refundNodeNames']['join'](',\x20')+'.',v=h?['A\x20refund\x20path\x20is\x20present.',u,e?'\x20Escrow\x20can\x20be\x20routed\x20back\x20to\x20the\x20payer\x20or\x20to\x20the\x20order\x20by\x20an\x20allocation\x20slot.':'']['filter'](Boolean)['join'](''):'NO\x20refund\x20path\x20detected\x20—\x20funds\x20may\x20be\x20unrecoverable\x20once\x20the\x20workflow\x20advances\x20to\x20completion.'+(i?u:''),w=o?c['arbitrations']['length']+'\x20arbitration\x20service(s)\x20bound\x20—\x20disputes\x20have\x20a\x20resolution\x20path.':'NO\x20arbitration\x20bound\x20—\x20disputes\x20have\x20no\x20neutral\x20resolution\x20path.',x=[];if(!h)x['push']('No\x20refund\x20path\x20—\x20escrowed\x20funds\x20may\x20be\x20unrecoverable.');i&&h&&x['push']('The\x20named\x20refund\x20node(s)\x20'+d['refundNodeNames']['join'](',\x20')+'\x20are\x20unreachable\x20from\x20the\x20workflow\x20entry\x20—\x20'+'that\x20rail\x20is\x20dead;\x20only\x20the\x20allocation\x20slot\x20can\x20still\x20return\x20funds.');if(!o)x['push']('No\x20arbitration\x20bound\x20—\x20no\x20dispute\x20recourse.');if(q)x['push']('Compensation\x20fund\x20is\x20empty\x20—\x20arbitration\x20indemnity\x20would\x20be\x20unenforceable.');m>0x0&&x['push'](m+'\x20pending\x20order(s)\x20exceed\x20the\x20'+j+'h\x20settlement\x20window'+(l?.['oldestPendingAgeDays']!=null?'\x20(oldest:\x20'+l['oldestPendingAgeDays']+'d)':'')+'\x20—\x20funds\x20held\x20in\x20escrow\x20with\x20no\x20settlement\x20progress.');const y=[];if(c['published']&&!c['paused'])y['push']('Service\x20is\x20published\x20and\x20active.');h&&y['push'](d['reachabilityKnown']&&g&&e?'Refund\x20path\x20statically\x20reachable\x20—\x20workflow\x20edges\x20reach\x20the\x20rail\x20and\x20an\x20order-routed\x20allocation\x20slot\x20exists\x20(static\x20graph\x20check\x20only;\x20leg\x20executability\x20is\x20audited\x20by\x20the\x20allocator\x20guard\x20lint,\x20not\x20here).':d['reachabilityKnown']&&g?'Refund\x20path\x20statically\x20reachable\x20via\x20workflow\x20edges\x20(no\x20order-routed\x20allocation\x20slot\x20found).':'Refund\x20path\x20present.');if(o)y['push']('Arbitration\x20bound\x20(neutral\x20dispute\x20resolution).');if(!q)y['push']('Compensation\x20fund\x20funded\x20('+p+'\x20raw\x20units)\x20—\x20indemnity\x20enforceable.');if(c['hasBuyGuard'])y['push']('Buy\x20guard\x20present\x20(purchase\x20is\x20validated\x20by\x20on-chain\x20rules).');const z=[];if(!h)z['push']('Refund\x20path');if(!o)z['push']('Arbitration');if(q)z['push']('Compensation\x20fund');let A='low';if(!h&&!o)A='critical';else{if(!h||!o)A='high';else q&&(A='medium');}if(m>=0x3&&(A==='low'||A==='medium'))A='high';else{if(m>=0x1&&A==='low')A='medium';}const B=[];if(c['found']&&c['paused'])B['push']('Service\x20is\x20currently\x20PAUSED\x20—\x20purchases\x20are\x20rejected\x20until\x20the\x20merchant\x20resumes\x20it.\x20This\x20is\x20a\x20merchant-side\x20availability\x20state,\x20not\x20a\x20trust\x20signal:\x20do\x20not\x20purchase\x20while\x20paused.');else c['found']&&!c['published']&&B['push']('Service\x20is\x20not\x20yet\x20published\x20—\x20purchases\x20are\x20not\x20possible\x20until\x20the\x20merchant\x20publishes\x20it.\x20This\x20is\x20a\x20launch\x20state,\x20not\x20a\x20trust\x20signal.');c['found']&&!c['hasUm']&&B['push']('No\x20contact\x20channel\x20(um)\x20configured\x20—\x20Messenger\x20pre-order\x20negotiation\x20with\x20the\x20merchant\x20is\x20unavailable.');n>0x0&&m===0x0&&B['push'](n+'\x20order(s)\x20in\x20the\x20recent\x20window\x20are\x20pending\x20(not\x20yet\x20settled).');const C=[];C['push']('Escrowed\x20settlement:\x20funds\x20release\x20only\x20when\x20the\x20workflow\x20advances\x20—\x20the\x20merchant\x20is\x20incentivized\x20to\x20deliver.'),C['push']('On-chain\x20reputation\x20(Registrar\x20like/dislike\x20+\x20dispute\x20rate)\x20is\x20a\x20public\x20trust\x20signal\x20for\x20future\x20buyers.');if(c['rewardsCount']>0x0)C['push'](c['rewardsCount']+'\x20reward(s)\x20configured\x20—\x20repeat-buyer\x20incentives\x20lower\x20acquisition\x20cost.');const D=[];D['push']('Escrow\x20safety:\x20money\x20is\x20locked\x20on-chain\x20until\x20completion,\x20not\x20held\x20by\x20the\x20merchant.');if(h)D['push']('Refund\x20path\x20exists\x20—\x20a\x20verified\x20refund\x20returns\x20the\x20escrow.');if(o)D['push']('Arbitration\x20recourse\x20—\x20a\x20neutral\x20third\x20party\x20can\x20rule\x20on\x20disputes.');if(!q)D['push']('Compensation\x20fund\x20backs\x20arbitration\x20indemnity.');const E=[];E['push']('Merchant\x20wants\x20settlement\x20released\x20early;\x20user\x20wants\x20to\x20verify\x20the\x20deliverable\x20first\x20—\x20the\x20workflow\x27s\x20confirm\x20step\x20is\x20the\x20contention\x20point.'),E['push']('Merchant\x20controls\x20the\x20Machine/Guards;\x20user\x20is\x20limited\x20to\x20the\x20confirm/refund\x20forwards\x20the\x20merchant\x20designed.');if(!o)E['push']('No\x20arbitration:\x20a\x20deadlock\x20has\x20no\x20neutral\x20tie-breaker.');const F=[];F['push']('Escrow\x20alignment:\x20funds\x20stay\x20locked\x20until\x20both\x20sides\x20advance\x20the\x20workflow\x20—\x20neither\x20can\x20unilaterally\x20take\x20the\x20money.');if(h)F['push']('Allocation\x20alignment:\x20a\x20refund\x20slot\x20routes\x20the\x20escrow\x20back\x20to\x20the\x20buyer\x20on\x20the\x20refund\x20path.');if(o)F['push']('Arbitration\x20alignment:\x20an\x20independent\x20Permission\x20+\x20public\x20voters\x20provide\x20a\x20neutral\x20dispute\x20authority.');F['push']('Reputation\x20alignment:\x20Registrar\x20like/dislike\x20is\x20framework-enforced\x20and\x20unforgeable\x20—\x20both\x20sides\x20are\x20accountable\x20to\x20public\x20history.');const G=A['toUpperCase'](),H=a['order_amount']!=null?'\x20'+a['order_amount']+'\x20raw\x20units\x20are\x20escrowed.':'',I=c['found']&&c['paused']?'\x20NOTE:\x20the\x20service\x20is\x20PAUSED\x20—\x20purchases\x20are\x20rejected\x20until\x20the\x20merchant\x20resumes\x20it.':c['found']&&!c['published']?'\x20NOTE:\x20the\x20service\x20is\x20not\x20yet\x20published\x20—\x20purchases\x20are\x20not\x20possible.':'',J=!c['found']?'No\x20Service\x20object\x20found\x20—\x20reverse\x20mapping\x20produced\x20a\x20minimal\x20report.':'\x22'+c['name']+'\x22\x20is\x20'+r+'.'+H+'\x20'+('Risk\x20level:\x20'+G+'.\x20'+(h?'Refund\x20path\x20present.':'NO\x20refund\x20path.')+'\x20')+(''+(o?'Arbitration\x20bound.':'NO\x20arbitration.'))+(I+'\x20')+'This\x20report\x20is\x20generated\x20deterministically\x20from\x20on-chain\x20facts\x20—\x20the\x20buyer\x20decides.';return{'summary':J,'merchantProfile':{'serviceDescription':s,'workflowDescription':t,'refundPolicy':v,'arbitrationPolicy':w},'userRiskAssessment':{'riskLevel':A,'keyRisks':x,'protections':y,'missingProtections':z,'notices':B},'gameTheoryAnalysis':{'merchantIncentives':C,'userIncentives':D,'potentialConflicts':E,'wowAlignments':F},'orderHealth':l};}export function classifyObjectType(a){return detectType(a);}export function extractObjectFields(a){if(!a||typeof a!=='object')return{};const b=a['data']??a;if(!b||typeof b!=='object')return{};return{...b};}
1
+ function fld(a,b){return a?.[b]??a?.['data']?.[b];}function detectType(a){const b=fld(a,'type')??fld(a,'type_raw');if(typeof b!=='string'||b['length']===0x0)return'';const c=b['split']('::')['pop']()??b;return c;}function objectsOfType(a,b){return a['filter'](c=>detectType(c)===b);}function identity(a){const b=fld(a,'name');if(typeof b==='string'&&b['trim']())return b['trim']();const c=fld(a,'object')??fld(a,'id');if(typeof c==='string'&&c['trim']())return c['trim']();return'unknown';}function balanceStr(a){if(a==null)return undefined;if(typeof a==='object'&&'balance'in a)return String(a['balance']);return String(a);}function extractService(a){const b=objectsOfType(a,'Service')[0x0];if(!b)return{'found':![],'name':'unavailable','description':'No\x20Service\x20object\x20found','published':![],'paused':![],'salesCount':0x0,'arbitrations':[],'hasBuyGuard':![],'hasUm':![],'rewardsCount':0x0};return{'found':!![],'name':identity(b),'description':fld(b,'description')??'Service\x20(no\x20description)','published':fld(b,'bPublished')??![],'paused':fld(b,'bPaused')??![],'salesCount':Array['isArray'](fld(b,'sales'))?fld(b,'sales')['length']:0x0,'arbitrations':(fld(b,'arbitrations')??[])['filter'](c=>!!c),'compensationFund':balanceStr(fld(b,'compensation_fund')),'hasBuyGuard':fld(b,'buy_guard')!=null,'hasUm':fld(b,'um')!=null,'rewardsCount':(fld(b,'rewards')??[])['length']};}const REFUND_TERMS=['refund','refunded','return','returned','cancel','cancelled','canceled','reverse','reversal','chargeback','reimburse','compensat','expir','expired','void','voided','reject','rejected','fail','failed','abort','aborted','walk','dispute'],TERMINAL_SUFFIXES=['complete','completed','done','finish','finished','delivered','accepted',...REFUND_TERMS],matchesAny=(a,b)=>{const c=a['toLowerCase']();return b['some'](d=>c['includes'](d));},MACHINE_START_NODE='';function extractMachine(a,b,c){const d=objectsOfType(a,'Machine')[0x0];if(!d)return{'found':![],'nodeCount':0x0,'published':![],'paused':![],'entryNodes':[],'terminalNodeNames':[],'terminalSource':'names','refundNodeNames':[],'refundReachable':[],'reachabilityKnown':![]};const f=(b??[])['map'](j=>j['name'])['filter'](j=>typeof j==='string'),g=f['filter'](j=>matchesAny(j,REFUND_TERMS)),h=(c??[])['filter'](j=>!!j&&typeof j['from']==='string'&&typeof j['to']==='string');if(h['length']>0x0){const j=new Map();for(const p of h){const q=j['get'](p['from'])??[];q['push'](p['to']),j['set'](p['from'],q);}const k=new Set(f);for(const r of h){if(r['from'])k['add'](r['from']);if(r['to'])k['add'](r['to']);}k['delete'](MACHINE_START_NODE);const l=[...k]['filter'](s=>(j['get'](s)?.['length']??0x0)===0x0)['sort'](),n=new Set();if(j['has'](MACHINE_START_NODE)){n['add'](MACHINE_START_NODE);const s=[MACHINE_START_NODE];while(s['length']>0x0){const t=s['shift']();for(const u of j['get'](t)??[]){!n['has'](u)&&(n['add'](u),s['push'](u));}}}const o=j['has'](MACHINE_START_NODE);return{'found':!![],'nodeCount':f['length']>0x0?f['length']:(fld(d,'node_count')??0x0)+0x1,'published':fld(d,'bPublished')??![],'paused':fld(d,'bPaused')??![],'entryNodes':[],'terminalNodeNames':l,'terminalSource':'topology','refundNodeNames':g,'refundReachable':o?g['filter'](v=>n['has'](v)):[],'reachabilityKnown':o};}const i=f['filter'](v=>matchesAny(v,TERMINAL_SUFFIXES));return{'found':!![],'nodeCount':f['length']>0x0?f['length']:(fld(d,'node_count')??0x0)+0x1,'published':fld(d,'bPublished')??![],'paused':fld(d,'bPaused')??![],'entryNodes':[],'terminalNodeNames':i,'terminalSource':'names','refundNodeNames':g,'refundReachable':[],'reachabilityKnown':![]};}function detectAllocationRefundSlot(a){const b=objectsOfType(a,'Service')[0x0],c=fld(b,'order_allocators'),d=Array['isArray'](c)?c:Array['isArray'](c?.['allocators'])?c['allocators']:[];for(const e of d){for(const f of e?.['sharing']??[]){const g=f?.['who'];if(g==null)continue;if(typeof g==='object'){if('GuardIdentifier'in g)return!![];if('Signer'in g)return!![];continue;}if(typeof g==='string'){const h=g['toLowerCase']();if(h['includes']('guard\x20identifier')||h==='signer')return!![];}}}return![];}export const PENDING_STALE_HOURS_DEFAULT=0xa8;function computeOrderHealth(a,b,c,d){if(!a||a['length']===0x0)return undefined;const e=d&&d['size']>0x0?d:undefined,f=l=>e!=null&&typeof l?.['current_node']==='string'&&e['has'](l['current_node']),g=a['filter'](l=>l&&l['claimed_by']==null&&!f(l)),h=e?a['filter'](l=>l&&f(l))['length']:undefined,i=typeof b==='number'&&Number['isFinite'](b)&&b>0x0;let j=0x0,k=null;for(const l of g){const m=Number(l?.['created_at_ms']??0x0);if(!i||!Number['isFinite'](m)||m<=0x0)continue;const n=b-m;if(n>c*0x36ee80)j++;if(k==null||n>k)k=n;}return{'observed':a['length'],'pending':g['length'],'settled':h,'agingKnown':i,'overdue':i?j:0x0,'oldestPendingAgeDays':i&&k!=null?Math['floor'](k/0x5265c00):null,'staleHours':c};}export function generateBusinessReport(a){const b=a['objects']??[],c=extractService(b),d=extractMachine(b,a['machine_nodes'],a['machine_edges']),f=detectAllocationRefundSlot(b),g=d['refundNodeNames']['length']>0x0,h=d['refundReachable']['length']>0x0,i=d['reachabilityKnown']?h||f:g||f,j=d['reachabilityKnown']&&g&&!h,k=a['pending_stale_hours']??PENDING_STALE_HOURS_DEFAULT,l=d['terminalSource']==='topology'&&d['terminalNodeNames']['length']>0x0?new Set(d['terminalNodeNames']):undefined,m=computeOrderHealth(a['orders'],a['now_ms'],k,l),n=m?.['agingKnown']?m['overdue']:0x0,o=m?.['pending']??0x0,p=[];if(l)for(const M of a['machine_edges']??[]){const N=M?.['forward_count'],O=M?.['unguarded_forward_count'];l['has'](M['to'])&&typeof N==='number'&&N>0x0&&typeof O==='number'&&O>0x0&&p['push']('Settlement\x20transition\x20'+M['from']+'\x20→\x20'+M['to']+'\x20advances\x20with\x20NO\x20guard\x20on\x20'+O+'/'+N+'\x20forward(s)\x20—\x20deliverable\x20verification\x20is\x20not\x20enforced\x20on\x20this\x20money\x20exit\x20(static\x20graph\x20check).');}(a['arbitrations']??[])['some'](P=>P?.['found']&&P?.['paused'])&&p['push']('A\x20bound\x20arbitration\x20venue\x20is\x20PAUSED\x20—\x20dispute\x20recourse\x20cannot\x20progress\x20on\x20it.');m?.['agingKnown']&&m['settled']!=null&&m['observed']>=0x3&&m['settled']===0x0&&p['push']('No\x20order\x20has\x20ever\x20reached\x20a\x20stop\x20node\x20('+m['observed']+'\x20observed,\x200\x20settled)\x20—\x20workflow\x20completion\x20is\x20unproven.');const q=c['arbitrations']['length']>0x0,r=c['compensationFund'],s=r==null||r==='0',t=!c['found']?'unavailable':c['published']?c['paused']?'published\x20but\x20PAUSED':'published\x20and\x20active':'not\x20yet\x20published',u=!c['found']?'No\x20Service\x20object\x20available\x20to\x20describe.':c['description']+'\x20('+t+(c['salesCount']>0x0?',\x20'+c['salesCount']+'\x20sale\x20option(s)':'')+').',v=!d['found']?'Workflow\x20(Machine)\x20unavailable\x20—\x20cannot\x20describe\x20the\x20process.':d['nodeCount']>0x0?d['nodeCount']+'-node\x20workflow\x20('+(d['published']?'published':'draft')+(d['paused']?',\x20paused':'')+').'+(d['terminalNodeNames']['length']>0x0?d['terminalSource']==='topology'?'\x20Stop\x20nodes\x20(derived\x20from\x20workflow\x20edges):\x20'+d['terminalNodeNames']['join'](',\x20')+'.':'\x20Stop/refund\x20nodes\x20detected\x20(name\x20convention\x20only\x20—\x20no\x20edge\x20table\x20to\x20verify):\x20'+d['terminalNodeNames']['join'](',\x20')+'.':d['terminalSource']==='topology'?'\x20No\x20stop\x20node\x20in\x20the\x20workflow\x20graph.':'\x20No\x20explicit\x20stop\x20node\x20detected\x20from\x20names.'):'Workflow\x20node\x20details\x20unavailable\x20(node_count\x20not\x20resolved).',w=!g?'':d['reachabilityKnown']?h?'\x20Workflow\x20edges\x20verify\x20the\x20reversal\x20rail\x20is\x20reachable:\x20node(s)\x20'+d['refundReachable']['join'](',\x20')+'.':'\x20WARNING:\x20the\x20named\x20refund\x20node(s)\x20'+d['refundNodeNames']['join'](',\x20')+'\x20are\x20UNREACHABLE\x20from\x20the\x20workflow\x20entry\x20—\x20that\x20rail\x20cannot\x20fire.':'\x20Reversal\x20rail:\x20workflow\x20node(s)\x20'+d['refundNodeNames']['join'](',\x20')+'.',x=i?['A\x20refund\x20path\x20is\x20present.',w,f?'\x20Escrow\x20can\x20be\x20routed\x20back\x20to\x20the\x20payer\x20or\x20to\x20the\x20order\x20by\x20an\x20allocation\x20slot.':'']['filter'](Boolean)['join'](''):'NO\x20refund\x20path\x20detected\x20—\x20funds\x20may\x20be\x20unrecoverable\x20once\x20the\x20workflow\x20advances\x20to\x20completion.'+(j?w:''),y=q?c['arbitrations']['length']+'\x20arbitration\x20service(s)\x20bound\x20—\x20disputes\x20have\x20a\x20resolution\x20path.':'NO\x20arbitration\x20bound\x20—\x20disputes\x20have\x20no\x20neutral\x20resolution\x20path.',z=[];if(!i)z['push']('No\x20refund\x20path\x20—\x20escrowed\x20funds\x20may\x20be\x20unrecoverable.');j&&i&&z['push']('The\x20named\x20refund\x20node(s)\x20'+d['refundNodeNames']['join'](',\x20')+'\x20are\x20unreachable\x20from\x20the\x20workflow\x20entry\x20—\x20'+'that\x20rail\x20is\x20dead;\x20only\x20the\x20allocation\x20slot\x20can\x20still\x20return\x20funds.');if(!q)z['push']('No\x20arbitration\x20bound\x20—\x20no\x20dispute\x20recourse.');if(s)z['push']('Compensation\x20fund\x20is\x20empty\x20—\x20arbitration\x20indemnity\x20would\x20be\x20unenforceable.');n>0x0&&z['push'](n+'\x20pending\x20order(s)\x20exceed\x20the\x20'+k+'h\x20settlement\x20window'+(m?.['oldestPendingAgeDays']!=null?'\x20(oldest:\x20'+m['oldestPendingAgeDays']+'d)':'')+'\x20—\x20funds\x20held\x20in\x20escrow\x20with\x20no\x20settlement\x20progress.');z['push'](...p);const A=[];if(c['published']&&!c['paused'])A['push']('Service\x20is\x20published\x20and\x20active.');i&&A['push'](d['reachabilityKnown']&&h&&f?'Refund\x20path\x20statically\x20reachable\x20—\x20workflow\x20edges\x20reach\x20the\x20rail\x20and\x20an\x20order-routed\x20allocation\x20slot\x20exists\x20(static\x20graph\x20check\x20only;\x20leg\x20executability\x20is\x20audited\x20by\x20the\x20allocator\x20guard\x20lint,\x20not\x20here).':d['reachabilityKnown']&&h?'Refund\x20path\x20statically\x20reachable\x20via\x20workflow\x20edges\x20(no\x20order-routed\x20allocation\x20slot\x20found).':'Refund\x20path\x20present.');if(q)A['push']('Arbitration\x20bound\x20(neutral\x20dispute\x20resolution).');if(!s)A['push']('Compensation\x20fund\x20funded\x20('+r+'\x20raw\x20units)\x20—\x20indemnity\x20enforceable.');if(c['hasBuyGuard'])A['push']('Buy\x20guard\x20present\x20(purchase\x20is\x20validated\x20by\x20on-chain\x20rules).');const B=[];if(!i)B['push']('Refund\x20path');if(!q)B['push']('Arbitration');if(s)B['push']('Compensation\x20fund');let C='low';if(!i&&!q)C='critical';else{if(!i||!q)C='high';else s&&(C='medium');}if(n>=0x3&&(C==='low'||C==='medium'))C='high';else{if(n>=0x1&&C==='low')C='medium';}if(p['length']>0x0&&(C==='low'||C==='medium'))C='medium';const D=[];if(c['found']&&c['paused'])D['push']('Service\x20is\x20currently\x20PAUSED\x20—\x20purchases\x20are\x20rejected\x20until\x20the\x20merchant\x20resumes\x20it.\x20This\x20is\x20a\x20merchant-side\x20availability\x20state,\x20not\x20a\x20trust\x20signal:\x20do\x20not\x20purchase\x20while\x20paused.');else c['found']&&!c['published']&&D['push']('Service\x20is\x20not\x20yet\x20published\x20—\x20purchases\x20are\x20not\x20possible\x20until\x20the\x20merchant\x20publishes\x20it.\x20This\x20is\x20a\x20launch\x20state,\x20not\x20a\x20trust\x20signal.');c['found']&&!c['hasUm']&&D['push']('No\x20contact\x20channel\x20(um)\x20configured\x20—\x20Messenger\x20pre-order\x20negotiation\x20with\x20the\x20merchant\x20is\x20unavailable.');o>0x0&&n===0x0&&D['push'](o+'\x20order(s)\x20in\x20the\x20recent\x20window\x20are\x20pending\x20(not\x20yet\x20settled).');const E=[];E['push']('Escrowed\x20settlement:\x20funds\x20release\x20only\x20when\x20the\x20workflow\x20advances\x20—\x20the\x20merchant\x20is\x20incentivized\x20to\x20deliver.'),E['push']('On-chain\x20reputation\x20(Registrar\x20like/dislike\x20+\x20dispute\x20rate)\x20is\x20a\x20public\x20trust\x20signal\x20for\x20future\x20buyers.');if(c['rewardsCount']>0x0)E['push'](c['rewardsCount']+'\x20reward(s)\x20configured\x20—\x20repeat-buyer\x20incentives\x20lower\x20acquisition\x20cost.');const F=[];F['push']('Escrow\x20safety:\x20money\x20is\x20locked\x20on-chain\x20until\x20completion,\x20not\x20held\x20by\x20the\x20merchant.');if(i)F['push']('Refund\x20path\x20exists\x20—\x20a\x20verified\x20refund\x20returns\x20the\x20escrow.');if(q)F['push']('Arbitration\x20recourse\x20—\x20a\x20neutral\x20third\x20party\x20can\x20rule\x20on\x20disputes.');if(!s)F['push']('Compensation\x20fund\x20backs\x20arbitration\x20indemnity.');const G=[];G['push']('Merchant\x20wants\x20settlement\x20released\x20early;\x20user\x20wants\x20to\x20verify\x20the\x20deliverable\x20first\x20—\x20the\x20workflow\x27s\x20confirm\x20step\x20is\x20the\x20contention\x20point.'),G['push']('Merchant\x20controls\x20the\x20Machine/Guards;\x20user\x20is\x20limited\x20to\x20the\x20confirm/refund\x20forwards\x20the\x20merchant\x20designed.');if(!q)G['push']('No\x20arbitration:\x20a\x20deadlock\x20has\x20no\x20neutral\x20tie-breaker.');const H=[];H['push']('Escrow\x20alignment:\x20funds\x20stay\x20locked\x20until\x20both\x20sides\x20advance\x20the\x20workflow\x20—\x20neither\x20can\x20unilaterally\x20take\x20the\x20money.');if(i)H['push']('Allocation\x20alignment:\x20a\x20refund\x20slot\x20routes\x20the\x20escrow\x20back\x20to\x20the\x20buyer\x20on\x20the\x20refund\x20path.');if(q)H['push']('Arbitration\x20alignment:\x20an\x20independent\x20Permission\x20+\x20public\x20voters\x20provide\x20a\x20neutral\x20dispute\x20authority.');H['push']('Reputation\x20alignment:\x20Registrar\x20like/dislike\x20is\x20framework-enforced\x20and\x20unforgeable\x20—\x20both\x20sides\x20are\x20accountable\x20to\x20public\x20history.');const I=C['toUpperCase'](),J=a['order_amount']!=null?'\x20'+a['order_amount']+'\x20raw\x20units\x20are\x20escrowed.':'',K=c['found']&&c['paused']?'\x20NOTE:\x20the\x20service\x20is\x20PAUSED\x20—\x20purchases\x20are\x20rejected\x20until\x20the\x20merchant\x20resumes\x20it.':c['found']&&!c['published']?'\x20NOTE:\x20the\x20service\x20is\x20not\x20yet\x20published\x20—\x20purchases\x20are\x20not\x20possible.':'',L=!c['found']?'No\x20Service\x20object\x20found\x20—\x20reverse\x20mapping\x20produced\x20a\x20minimal\x20report.':'\x22'+c['name']+'\x22\x20is\x20'+t+'.'+J+'\x20'+('Risk\x20level:\x20'+I+'.\x20'+(i?'Refund\x20path\x20present.':'NO\x20refund\x20path.')+'\x20')+(''+(q?'Arbitration\x20bound.':'NO\x20arbitration.'))+(K+'\x20')+'This\x20report\x20is\x20generated\x20deterministically\x20from\x20on-chain\x20facts\x20—\x20the\x20buyer\x20decides.';return{'summary':L,'merchantProfile':{'serviceDescription':u,'workflowDescription':v,'refundPolicy':x,'arbitrationPolicy':y},'userRiskAssessment':{'riskLevel':C,'keyRisks':z,'protections':A,'missingProtections':B,'notices':D},'gameTheoryAnalysis':{'merchantIncentives':E,'userIncentives':F,'potentialConflicts':G,'wowAlignments':H},'orderHealth':m};}export function classifyObjectType(a){return detectType(a);}export function extractObjectFields(a){if(!a||typeof a!=='object')return{};const b=a['data']??a;if(!b||typeof b!=='object')return{};return{...b};}
@@ -10,6 +10,7 @@ export interface PanoramaSale {
10
10
  price_tip: string;
11
11
  stock: string | null;
12
12
  suspension: boolean;
13
+ restock_on_refund: boolean;
13
14
  wip: string;
14
15
  wip_hash: string;
15
16
  }
@@ -138,6 +139,7 @@ export interface PanoramaRecentOrders {
138
139
  export interface ServicePanoramaResult {
139
140
  action: "service_panorama";
140
141
  network: string;
142
+ now_ms: number;
141
143
  service: {
142
144
  address: string;
143
145
  name: string | null;
@@ -1 +1 @@
1
- import{Config,LocalMark,query_serviceContext,query_object_last_updated,query_affiliations,objectTypeFromAddress,ObjectType}from'@wowok/wowok';import{resolveAddress as a394a}from'../../tools/handlers/name-resolution.js';import{generateBusinessReport}from'./reverse-mapping.js';import{resolveSupplyChainGraph}from'../../knowledge/supply-chain.js';import{batchQueryObjectsByIds,fetchServiceOrders,ringWindowSaturated}from'../../graph/onchain/sdk-batch.js';import{computeFundListingWall}from'../../graph/onchain/facts.js';import{classifyFundWaterLevelUnits,fundWaterReminder}from'../../knowledge/fund-layer.js';import{projectExploration}from'../../graph/onchain/exploration.js';import{buildMachineGraph}from'./machine-nodes.js';import{formatMoneyAnnotation}from'./facet-money.js';function balanceStr(a){if(a===null||a===undefined)return null;if(typeof a==='bigint')return a['toString']();return String(a);}function ownerAddr(a){if(typeof a==='string')return a;const b=a;if(b&&typeof b==='object'){if(typeof b['AddressOwner']==='string')return b['AddressOwner'];if(typeof b['ObjectOwner']==='string')return b['ObjectOwner'];}return null;}function requireField(a,b){if(a===undefined||a===null)throw new Error('\x27'+b+'\x27\x20is\x20required\x20for\x20this\x20action');return a;}function summarizeGuard(a){if(!a)return null;const b=a,c=Array['isArray'](b['table'])?b['table']:[],d=c['filter'](e=>e?.['b_submission']===!![])['length'];return{'address':b['object']??'','description':b['description']??null,'rep':typeof b['rep']==='boolean'?b['rep']:null,'table_entry_count':c['length'],'submission_slot_count':d,'relies':Array['isArray'](b['relies'])?b['relies']['filter'](e=>typeof e==='string'):[],'relies_logic_and':typeof b['relies_logic_and']==='boolean'?b['relies_logic_and']:null};}function summarizePermission(a,b){if(!a)return null;const c=a,d=Array['isArray'](c['admin'])?c['admin']:[],e=d[0x0],f=typeof e==='string'?e:typeof e?.['account']==='string'?e['account']:c['builder']??null;return{'address':c['object']??'','description':c['description']??null,'builder':c['builder']??null,'owner':f,'owner_name':b?.['name']??null,'admin_count':d['length'],'entity_count':typeof c['entity_count']==='number'?c['entity_count']:null,'perm_remark':Array['isArray'](c['perm_remark'])?c['perm_remark']['map'](g=>({'index':String(g?.['index']??''),'remark':typeof g?.['remark']==='string'?g['remark']:''})):[],'um':c['um']??null,'tags':b?.['tags']??[],'updated_timestamp_ms':b?.['updated_at_ms']!=null?String(b['updated_at_ms']):null};}async function markOf(a){if(!a)return{'name':null,'tags':[],'updated_at_ms':null};try{const b=await LocalMark['Instance']()['get'](a);if(b)return{'name':b['name']??null,'tags':Array['isArray'](b['tags'])?b['tags']:[],'updated_at_ms':typeof b['updatedAt']==='number'?b['updatedAt']:null};}catch{}try{const c=await LocalMark['Instance']()['list']({'address':a}),d=c?.[0x0];if(d)return{'name':d['name']??null,'tags':Array['isArray'](d['tags'])?d['tags']:[],'updated_at_ms':typeof d['updatedAt']==='number'?d['updatedAt']:null};}catch{}return{'name':null,'tags':[],'updated_at_ms':null};}async function markOfMany(a){const b=[...new Set(a['filter'](e=>!!e))],c=await Promise['all'](b['map'](e=>markOf(e))),d=new Map();for(let e=0x0;e<b['length'];e++)d['set'](b[e],c[e]);return d;}export async function handleServicePanorama(b){const c=requireField(b['service_address'],'service_address'),d=b['context_network']??undefined;let h=d??await Config['Instance']()['network_get']();const j=[];let k=await a394a(c,'service'),l=await query_serviceContext({'service':k,'include_machine_nodes':!![],'network':h});if(!l?.['service']&&d){const ac=await Config['Instance']()['network_get']();ac&&ac!==h&&(h=ac,l=await query_serviceContext({'service':k,'include_machine_nodes':!![],'network':h}));}const m=l['service'];k=m['object']??k;const q=new Set(),w=ad=>{if(ad)q['add'](ad);};w(k),w(m['machine']),w(m['permission']),w(m['um']);for(const ad of m['arbitrations']??[])w(ad);for(const ae of m['rewards']??[])w(ae);for(const af of m['repositories']??[])w(af);const x=l['permission'];if(x){const ag=Array['isArray'](x['admin'])?x['admin']:[];ag[0x0]&&w(typeof ag[0x0]==='string'?ag[0x0]:ag[0x0]?.['account']);if(x['builder'])w(x['builder']);}const y=await markOfMany([...q]),z=y['get'](k)??{'name':null,'tags':[],'updated_at_ms':null},A=z['name'],B=ah=>ah?y['get'](ah)??{'name':null,'tags':[],'updated_at_ms':null}:{'name':null,'tags':[],'updated_at_ms':null};let C=null;const D=l['machine'],E=l['machine_nodes']??[];if(D||E['length']>0x0){const {nodes:ah,edges:ai}=buildMachineGraph(E);C={'address':D?.['object']??m['machine']??'','name':B(D?.['object']??m['machine'])['name'],'description':D?.['description']??null,'published':typeof D?.['bPublished']==='boolean'?D['bPublished']:null,'paused':typeof D?.['bPaused']==='boolean'?D['bPaused']:null,'node_count':typeof D?.['node_count']==='number'?D['node_count']:null,'consensus_repositories':Array['isArray'](D?.['consensus_repositories'])?D['consensus_repositories']:[],'nodes':ah,'edges':ai};}let F=null;try{const aj=await query_object_last_updated({'object':k,'network':h});aj?.['timestamp_ms']&&(F={'timestamp_ms':aj['timestamp_ms'],'digest':aj['digest']??null,'sender':aj['sender']??null});}catch{j['push']('onchain_last_updated:\x20query\x20failed\x20(non-blocking)');}let G=null;try{G=await resolveSupplyChainGraph(k,h);}catch{j['push']('supply_chain:\x20resolution\x20failed\x20(non-blocking)');}let H=null,I=[];const J=m?.['type_raw']??m?.['type']??'',K=J['match'](/<(.+)>$/),L=K?K[0x1]:null,M=(ak,al)=>{const am=[];return ak?am['push']('Pricing\x20&\x20settlement\x20coin:\x20'+ak+'\x20—\x20the\x20Service\x27s\x20generic\x20T,\x20FIXED\x20at\x20creation\x20(immutable).\x20Sales\x20prices\x20and\x20order\x20amounts\x20are\x20denominated\x20in\x20this\x20exact\x20token;\x20buyers\x20must\x20hold\x20it\x20to\x20order.'):am['push']('Pricing\x20&\x20settlement\x20coin:\x20unavailable\x20from\x20the\x20Service\x20type\x20(no\x20generic\x20found)\x20—\x20treat\x20amounts\x20as\x20raw\x20smallest\x20units.'),am['push']('To\x20price\x20in\x20a\x20different\x20token,\x20publish\x20a\x20NEW\x20Service\x20with\x20type_parameter\x20set\x20to\x20that\x20token\x27s\x20full\x20type\x20—\x20this\x20one\x20keeps\x20settling\x20in\x20its\x20coin.'),/testnet/i['test'](al)?am['push']('Testnet\x20has\x20ONLY\x20WOW\x20(no\x20stablecoins\x20are\x20bridged)\x20—\x20testnet\x20services\x20stay\x20WOW-denominated;\x20multi-token\x20pricing\x20is\x20a\x20mainnet\x20capability.'):am['push']('Mainnet\x20accepts\x20bridged\x20tokens\x20(USDT\x20/\x20USDC\x20/\x20ETH\x20/\x20WBTC\x20/\x20WOW):\x20buyers\x20bridge\x20them\x20from\x20Ethereum\x20via\x20the\x20cross-chain\x20bridge.\x20Query\x20wowok_buildin_info\x20info=\x27mainnet\x20bridge\x20tokens\x27\x20for\x20each\x20token\x27s\x20exact\x20type\x20tag\x20(wowTypeTag)\x20to\x20use\x20in\x20type_parameter\x20when\x20publishing.'),am['join']('\x20');},N=ak=>formatMoneyAnnotation(ak,L,h),O=0x3,P=0x32;let Q=null;try{const ak=await fetchServiceOrders(k,h,!![]),al=Array['isArray'](ak?.['items'])?ak['items']:[],am=al['slice'](-P),an=al['slice'](-O),ao=am['map'](aM=>typeof aM?.['who']==='string'?aM['who']:'')['filter'](aM=>aM!==''),ap=an['map'](aM=>typeof aM?.['who']==='string'?aM['who']:'')['filter'](aM=>aM!==''),aq=new Map();try{if(ao['length']>0x0){const aM=await batchQueryObjectsByIds(ao,h,!![]);for(const aN of aM){aN&&aN['type']===ObjectType['Order']&&aq['set'](aN['object'],aN);}}}catch{j['push']('recent_orders:\x20order\x20details\x20unavailable\x20(non-blocking)');}const ar=new Map();try{const aO=new Set();for(const aP of aq['values']()){if(aP?.['allocation'])aO['add'](aP['allocation']);}if(aO['size']>0x0){const aQ=await batchQueryObjectsByIds(Array['from'](aO),h,!![]);for(const aR of aQ){if(!aR?.['object'])continue;if(aR['type']===ObjectType['Allocation']){const aS=Number(aR?.['balance']??0x0);ar['set'](aR['object'],Number['isFinite'](aS)&&aS===0x0?'allocated':'pending');}}}}catch{j['push']('recent_orders:\x20allocation\x20details\x20unavailable\x20(non-blocking)');}const as=new Map(),at=new Map();try{const aT=new Set();for(const aU of ap){const aV=aq['get'](aU);if(aV?.['progress'])aT['add'](aV['progress']);}if(aT['size']>0x0){const aW=await batchQueryObjectsByIds(Array['from'](aT),h,!![]);for(const aX of aW){if(!aX?.['object'])continue;if(aX['type']===ObjectType['Progress']){const aY=aX?.['current'];as['set'](aX['object'],typeof aY==='string'&&aY!==''?aY:null),at['set'](aX['object'],Number(aX?.['current_time'])||null);}}}}catch{j['push']('recent_orders:\x20progress\x20details\x20unavailable\x20(non-blocking)');}I=Array['from'](aq['values']())['map'](aZ=>({'id':aZ['object'],'created_at_ms':Number(aZ['time'])||undefined,'claimed_by':aZ['claimed_by']??null,'current_node':aZ['progress']?as['get'](aZ['progress'])??null:null}));const au=new Map();try{const aZ=ap,b0=await Promise['allSettled'](aZ['map'](b1=>query_object_last_updated({'object':b1,'network':h})));for(let b1=0x0;b1<aZ['length'];b1++){const b2=b0[b1];au['set'](aZ[b1],b2['status']==='fulfilled'&&b2['value']?.['timestamp_ms']?Number(b2['value']['timestamp_ms'])||null:null);}}catch{j['push']('recent_orders:\x20order\x20updated\x20times\x20unavailable\x20(non-blocking)');}const av=await Promise['all'](an['map'](async b3=>{const b4=typeof b3?.['who']==='string'?b3['who']:'',b5=aq['get'](b4),b6=b5?.['amount']!==null&&b5?.['amount']!==undefined?String(b5['amount']):'',b7=await N(b6);return{'order':b4,'time':typeof b3?.['time']==='number'?b3['time']:0x0,'updated_ms':au['get'](b4)??null,'amount':b6,'amount_display':b7['display'],'amount_tip':b7['tip'],'progress':b5?.['progress']??null,'allocation':b5?.['allocation']??null,'disputes':Array['isArray'](b5?.['dispute'])?b5['dispute']:[],'agent':Array['isArray'](b5?.['agent'])?b5['agent']:[],'owner':ownerAddr(b5?.['builder']??b5?.['owner']),'claimed_by':b5?.['claimed_by']??null,'required_info':b5?.['required_info']??null,'progress_next':b5?.['progress']?as['get'](b5['progress'])??null:null,'progress_since':b5?.['progress']?at['get'](b5['progress'])??null:null,'allocation_state':b5?.['allocation']?ar['get'](b5['allocation'])??'pending':'none','bought':await Promise['all']((Array['isArray'](b5?.['items'])?b5['items']:[])['map'](async b8=>({'name':String(b8?.['name']??''),'price_display':(await N(b8?.['price']!==null&&b8?.['price']!==undefined?String(b8['price']):null))['display'],'quantity':String(b8?.['quantity']??'0'),'wip_hash':String(b8?.['wip_hash']??'')})))};})),aw=av['filter'](b3=>b3['order']!==''),ax=ao['map'](b3=>aq['get'](b3))['filter'](b3=>!!b3);let ay=0x0n,az=0x0,aA=0x0,aB=0x0,aC=0x0,aD=0x0,aE=null,aF=null;for(const b3 of ax){const b4=b3?.['amount']!==null&&b3?.['amount']!==undefined?String(b3['amount']):'';/^\d+$/['test'](b4)&&(ay+=BigInt(b4),az++);if(Array['isArray'](b3?.['dispute'])&&b3['dispute']['length']>0x0)aA++;const b5=b3?.['allocation']?ar['get'](b3['allocation'])??'pending':'none';if(b5==='pending')aB++;else{if(b5==='allocated')aC++;else aD++;}}for(const b6 of am){if(typeof b6?.['time']==='number'){if(aE===null||b6['time']<aE)aE=b6['time'];if(aF===null||b6['time']>aF)aF=b6['time'];}}const aG=az>0x0?ay['toString']():null,aH=aG!==null?await N(aG):null,aI=al['length'],aJ=ak?.['ring_saturated']??ringWindowSaturated(aI),aK=aw['length'],aL='Analyze\x20ALL\x20orders\x20of\x20Service\x20'+k+'\x20('+h+')\x20one\x20by\x20one,\x20newest\x20first.\x20'+('The\x20orders\x20live\x20in\x20the\x20Service\x27s\x20FIFO\x20tx-linker\x20window\x20holding\x20at\x20most\x205200\x20newest\x20entries\x20—\x20the\x20retained\x20count\x20is\x20a\x20lower\x20bound\x20when\x20the\x20window\x20is\x20saturated\x20(currently\x20'+aI+(aJ?',\x20saturated':'')+').\x20')+'For\x20each\x20order\x20call\x20object_panorama\x20with\x20the\x20order\x27s\x20FULL\x200x\x20address\x20(collect\x20the\x20addresses\x20from\x20the\x20same\x20reverse-index\x20source;\x20work\x20newest-first)\x20and\x20render\x20ONE\x20table\x20row\x20per\x20order:\x20'+'order\x20address\x20chip\x20(first\x20column)\x20|\x20created\x20+\x20last-updated\x20(local\x20dates)\x20|\x20amount\x20(the\x20display\x20value\x20with\x20its\x20token\x20symbol\x20—\x20never\x20reconvert\x20from\x20raw)\x20|\x20fund\x20state\x20(none\x20/\x20pending\x20/\x20allocated)\x20|\x20current\x20machine\x20node\x20|\x20disputes\x20(each\x20dispute\x20case\x20as\x20its\x20own\x20address\x20chip\x20ON\x20THE\x20SAME\x20ROW\x20—\x20an\x20order\x27s\x20progress,\x20allocation\x20and\x20arb\x20cases\x20are\x20its\x20children\x20and\x20are\x20never\x20split\x20into\x20a\x20separate\x20flat\x20list)\x20|\x20buyer\x20address\x20chip.\x20'+'Close\x20with\x20the\x203\x20most\x20valuable\x20patterns\x20across\x20the\x20rows\x20(amount\x20distribution,\x20stuck\x20or\x20paused\x20orders,\x20dispute\x20rate).\x20Orders\x20only\x20—\x20do\x20not\x20re-analyze\x20the\x20Service\x20itself.';Q={'count':aI,'window_saturated':aJ,'preview_truncated':aI>aK,'stats':{'scope_count':ax['length'],'scoped':ax['length']<aI,'amount_sum_raw':aG,'amount_sum_display':aH?.['display']??null,'amount_sum_tip':aH?.['tip']??null,'amount_known_count':az,'disputed_order_count':aA,'allocation_pending_count':aB,'allocation_allocated_count':aC,'allocation_none_count':aD,'first_created_ms':aE,'last_created_ms':aF},...aI>aK?{'drilldown':{'total_count':aI,'analyzed_count':aK,'stats_scope_count':ax['length'],'prompt':aL},'order_addresses':ax['map'](b7=>b7['object'])}:{},'items':aw};}catch{j['push']('recent_orders:\x20reverse-index\x20query\x20failed\x20(non-blocking)');}try{const b7=[m,l['machine'],l['buy_guard'],...l['allocator_guards']??[]]['filter'](Boolean);H=generateBusinessReport({'objects':b7,'machine_nodes':E['map'](b8=>({'name':b8['name']})),'machine_edges':C?.['edges']?C['edges']['map'](b8=>({'from':b8['from'],'to':b8['to']})):undefined,'orders':I['length']>0x0?I:undefined,'now_ms':Date['now']()});}catch{j['push']('business_report:\x20generation\x20failed\x20(non-blocking)');}const R=[];try{const b8=await query_affiliations({'address':k,'no_cache':!![],'network':h}),b9=new Set(),ba=new Map();for(const bc of b8?.['entries']??[]){const bd=typeof bc?.['who']==='string'?bc['who']:'';if(!bd||b9['has'](bd))continue;b9['add'](bd);const be=objectTypeFromAddress(bd);if(!be)continue;if(be===ObjectType['Order'])continue;const bf=String(be);let bg=ba['get'](bf);!bg&&(bg=[],ba['set'](bf,bg)),bg['push']({'address':bd,'type_label':bf,'name':B(bd)['name'],'time':typeof bc?.['time']==='number'?bc['time']:null,'via':typeof bc?.['table']==='string'?bc['table']:null});}const bb=['Progress','Allocation','Payment','Guard'];for(const bh of bb){const bi=ba['get'](bh);bi&&bi['length']>0x0&&(R['push']({'type_label':bh,'items':bi}),ba['delete'](bh));}for(const [bj,bk]of ba){if(bk['length']>0x0)R['push']({'type_label':bj,'items':bk});}}catch{j['push']('related:\x20global-table\x20lookup\x20failed\x20(non-blocking)');}const S=new Set(),T=bl=>{typeof bl==='string'&&/^0x[0-9a-fA-F]{40,64}$/['test'](bl)&&S['add'](bl['toLowerCase']());};T(m['buy_guard']);for(const bl of E){for(const bm of bl?.['pairs']??[]){for(const bn of bm?.['forwards']??[])T(bn?.['guard']);}}for(const bo of m['order_allocators']?.['allocators']??[])T(bo?.['guard']);for(const bp of l['allocator_guards']??[])T(bp?.['object']);for(const bq of Object['values'](l['referenced']??{})){const br=bq;if(!br||typeof br!=='object')continue;if(br['type']===ObjectType['Reward']){for(const bs of br['guards']??[])T(bs?.['guard']);}if(br['type']===ObjectType['Treasury']){for(const bt of br['external_withdraw_guard']??[])T(bt?.['guard']);for(const bu of br['external_deposit_guard']??[])T(bu?.['guard']);}(br['type']===ObjectType['Arbitration']||br['type']===ObjectType['Arb'])&&T(br['voting_guard']);}const U=R['find'](bv=>bv['type_label']===String(ObjectType['Guard']));if(U){U['items']=U['items']['filter'](bv=>!S['has'](bv['address']['toLowerCase']()));if(U['items']['length']===0x0)R['splice'](R['indexOf'](U),0x1);else{const bv=U['items'];try{const bw=await batchQueryObjectsByIds(bv['map'](by=>by['address']),h,!![]),bx=new Map();for(const by of bw){if(by?.['object'])bx['set'](String(by['object'])['toLowerCase'](),by);}for(const bz of bv){const bA=bx['get'](bz['address']['toLowerCase']());if(!bA){bz['explanation']=null;continue;}const bB=Array['isArray'](bA['table'])?bA['table']:[],bC=[];let bD=0x0;for(const bF of bB){if(bF?.['b_submission']===!![]){bD++;continue;}bF?.['value_type']==='Address'&&typeof bF?.['value']==='string'&&bF['value']['startsWith']('0x')&&bC['push'](bF['value']);}const bE=bC['some'](bG=>bG['toLowerCase']()===k['toLowerCase']());bz['explanation']={'description':typeof bA['description']==='string'?bA['description']:null,'table_refs':bC,'references_this_service':bE,'submission_slots':bD,'note':bE?'One-off\x20verification\x20guard:\x20NOT\x20mounted\x20on\x20any\x20host\x20field;\x20its\x20table\x20carries\x20this\x20Service\x20as\x20an\x20on-chain\x20constant\x20(the\x20affiliation\x20is\x20written\x20at\x20creation).\x20It\x20acts\x20only\x20when\x20submitted\x20inside\x20a\x20passport\x20at\x20runtime.':'Guard\x20surfaced\x20by\x20the\x20affiliation\x20window\x20only;\x20not\x20mounted\x20on\x20any\x20host\x20field\x20reachable\x20from\x20this\x20panorama.\x20It\x20acts\x20only\x20when\x20referenced\x20at\x20runtime\x20(passport\x20submission\x20or\x20a\x20host\x20outside\x20this\x20view).'};}}catch{j['push']('related:\x20unbound-guard\x20explanation\x20unavailable\x20(non-blocking)');}}}const V=new Map();for(const bG of l['allocator_guards']??[]){const bH=bG;if(bH?.['object'])V['set'](String(bH['object'])['toLowerCase'](),bH);}const W=[];for(const bI of Array['isArray'](m['sales'])?m['sales']:[]){const bJ=balanceStr(bI?.['price']),bK=await N(bJ);W['push']({'name':typeof bI?.['name']==='string'?bI['name']:'','price':bJ,'price_display':bK['display'],'price_tip':bK['tip'],'stock':balanceStr(bI?.['stock']),'suspension':bI?.['suspension']===!![],'wip':typeof bI?.['wip']==='string'?bI['wip']:'','wip_hash':typeof bI?.['wip_hash']==='string'?bI['wip_hash']:''});}const X=bL=>bL===0x0?'amount':bL===0x2?'surplus':'rate',Y=bL=>{const bM=bL?.['who'];if(bM&&typeof bM==='object'&&'Entity'in bM){const bN=bM['Entity'],bO=typeof bN==='string'?bN:typeof bN?.['name_or_address']==='string'?bN['name_or_address']:null;return{'who':bO?'Entity\x20'+bO:'Entity','entity':bO&&/^0x[0-9a-fA-F]{6,64}$/['test'](bO)?bO:null,'mode':X(bL?.['mode']),'value':balanceStr(bL?.['sharing'])};}if(bM&&typeof bM==='object'&&'GuardIdentifier'in bM)return{'who':'Guard\x20identifier\x20#'+bM['GuardIdentifier'],'entity':null,'mode':X(bL?.['mode']),'value':balanceStr(bL?.['sharing'])};return{'who':'Signer','entity':null,'mode':X(bL?.['mode']),'value':balanceStr(bL?.['sharing'])};},Z=m['order_allocators']?{'description':m['order_allocators']['description']??'','threshold':balanceStr(m['order_allocators']['threshold']),'allocators':(m['order_allocators']['allocators']??[])['map'](bL=>({'guard':bL['guard'],'sharing_count':Array['isArray'](bL['sharing'])?bL['sharing']['length']:0x0,'sharing':(Array['isArray'](bL['sharing'])?bL['sharing']:[])['map'](Y),'max':balanceStr(bL['max']??null),'guard_summary':summarizeGuard(V['get'](String(bL['guard']??'')['toLowerCase']()))}))}:null,a0=[];{const bL=new Map();for(const bM of m['order_allocators']?.['allocators']??[]){for(const bN of Array['isArray'](bM['sharing'])?bM['sharing']:[]){const bO=Y(bN);if(bO['entity']){const bP=bO['entity']['toLowerCase'](),bQ=bL['get'](bP)??{'raw':bO['entity'],'guards':[]};bQ['guards']['push'](bM['guard']??''),bL['set'](bP,bQ);}}}if(bL['size']>0x0)try{const bR=await batchQueryObjectsByIds([...bL['keys']()],h,!![]),bS=new Map();for(const bT of bR){if(bT?.['object'])bS['set'](String(bT['object'])['toLowerCase'](),bT);}for(const [bU,bV]of bL){const bW=bS['get'](bU),bX='order_allocators\x20sharing\x20of\x20allocator\x20guard\x20'+bV['guards'][0x0];if(bW&&bW['permission']!==undefined){const bY=balanceStr(bW['balance']),bZ=await N(bY);a0['push']({'address':String(bW['object']),'kind':'treasury','description':typeof bW['description']==='string'?bW['description']:null,'permission':typeof bW['permission']==='string'?bW['permission']:null,'balance':bY,'balance_display':bZ['display'],'balance_tip':bZ['tip'],'external_deposit_guard_count':Array['isArray'](bW['external_deposit_guard'])?bW['external_deposit_guard']['length']:null,'external_withdraw_guard_count':Array['isArray'](bW['external_withdraw_guard'])?bW['external_withdraw_guard']['length']:null,'via':bX});}else a0['push']({'address':bV['raw'],'kind':'account','description':null,'permission':null,'balance':null,'balance_display':null,'balance_tip':null,'external_deposit_guard_count':null,'external_withdraw_guard_count':null,'via':bX});}}catch{j['push']('income_recipients:\x20Sharing\x20entity\x20read\x20failed\x20(non-blocking)');}}const a1=summarizePermission(l['permission'],B(m['permission'])),a2=a1?.['owner']??F?.['sender']??null,a3=a2?await markOf(a2):null,a4=await N(balanceStr(m['compensation_fund'])),a5=balanceStr(m['compensation_fund']),a6=/^\d+$/['test'](a5?.['trim']()??'')?BigInt(a5['trim']()):null,a7=a6===null?null:(a6/0x3n)['toString'](),a8=a7===null?null:await N(a7),a9=a6===null?null:a6===0x0n?'No\x20compensation\x20fund:\x20this\x20Service\x20carries\x20NO\x20payout\x20protection\x20—\x20a\x20won\x20arbitration\x20award\x20cannot\x20be\x20paid\x20(the\x20claim\x20aborts,\x20code\x2027).\x20Running\x20without\x20a\x20fund\x20is\x20a\x20legitimate\x20merchant\x20choice,\x20but\x20it\x20is\x20one\x20a\x20buyer\x20should\x20see\x20before\x20ordering.':'Orders\x20at\x20or\x20under\x20this\x20cap\x20are\x20fully\x20protected\x20(award\x20ceiling\x203x\x20order).\x20Above\x20the\x20cap\x20there\x20is\x20NO\x20partial\x20payout\x20—\x20settlement\x20is\x20all-or-nothing\x20and\x20the\x20claim\x20aborts\x20(code\x2027)\x20until\x20the\x20fund\x20covers\x20the\x20award;\x20the\x20order\x20itself\x20is\x20unaffected.';let aa=null;if(a6!==null){const c0=W['filter'](c8=>!c8['suspension']&&/^\d+$/['test'](c8['price']?.['trim']()??''))['map'](c8=>({'name':c8['name'],'price':BigInt(c8['price']['trim']())})),c1=computeFundListingWall(a6,c0),c2=await Promise['all'](c1['blocked']['map'](async c8=>({'name':c8['name'],'price':c8['price']['toString'](),'price_display':(await N(c8['price']['toString']()))['display']}))),c3=c2['length']===0x0?null:'The\x20fund\x20currently\x20backs\x20orders\x20up\x20to\x20'+(a8?.['display']??a7)+'.\x20'+((c2['length']===0x1?'1\x20listing\x20is':c2['length']+'\x20listings\x20are')+'\x20priced\x20above\x20that\x20and\x20check\x20out\x20UNDER-COVERED\x20—\x20the\x20order\x20proceeds\x20with\x20a\x20buy-time\x20warning\x20(拍板⑤\x20dm-mtw-261027\x20demoted\x20the\x20refusal;\x20no\x20money\x20is\x20blocked),\x20but\x20the\x20fund\x20cannot\x20back\x20its\x20maximum\x20award:\x20a\x20ruling\x20at\x20the\x20cap\x20aborts\x20code\x2027\x20(claim\x20NOT\x20consumed)\x20until\x20a\x20top-up.\x20')+'The\x20highest-priced\x20listing\x20is\x20affected\x20first;\x20top\x20the\x20fund\x20above\x203x\x20a\x20listing\x27s\x20price\x20(service.compensation_fund_add)\x20or\x20cut\x20the\x20price\x20to\x20fully\x20cover\x20it.\x20'+'This\x20recomputes\x20on\x20every\x20read:\x20after\x20every\x20award\x20that\x20spends\x20the\x20fund,\x20re-check\x20your\x20top\x20listing.',c4=c0['reduce']((c8,c9)=>c9['price']>c8?c9['price']:c8,0x0n),c5=c4*0x3n,c6=a6<=0x0n?'depleted':classifyFundWaterLevelUnits(a6,c5)??'healthy';let c7=null;c6!=='healthy'&&(c7=fundWaterReminder(c6,{'balance':a6<=0x0n?'0':(await N(a6['toString']()))['display'],'threshold':(await N(c5['toString']()))['display']})),aa={'blocked':c2,'note':c3,'water_level':c6,'water_reminder':c7};}const ab=projectExploration([],{'truncations':[],'budgetExhausted':{},'dataGaps':j});return{'action':'service_panorama','network':h,'service':{'address':k,'name':A,'description':m['description']??'','location':m['location']??'','published':m['bPublished']===!![],'paused':m['bPaused']===!![],'paused_time':typeof m['paused_time']==='number'?m['paused_time']:typeof m['paused_time']==='string'&&/^\d+$/['test'](m['paused_time'])?Number(m['paused_time']):null,'setting_lock_duration':balanceStr(m['setting_lock_duration']),'customer_required':Array['isArray'](m['customer_required'])?m['customer_required']:[],'compensation_fund':balanceStr(m['compensation_fund']),'compensation_fund_display':a4['display'],'compensation_fund_tip':a4['tip'],'compensation_fund_cover_cap':a7,'compensation_fund_cover_cap_display':a8?.['display']??null,'compensation_fund_cover_cap_note':a9,'compensation_fund_listing_wall':aa,'sales':W,'machine':m['machine']??null,'buy_guard':m['buy_guard']??null,'permission':m['permission']??'','um':m['um']??null,'arbitrations':Array['isArray'](m['arbitrations'])?m['arbitrations']:[],'rewards':Array['isArray'](m['rewards'])?m['rewards']:[],'repositories':Array['isArray'](m['repositories'])?m['repositories']:[],'order_allocators':Z,'income_recipients':a0,'payment_token':{'coin_type':L,'guidance':M(L,h)},'onchain_last_updated':F,'tags':z['tags']??[],'owner':a2,'owner_name':a3?.['name']??null},'machine_graph':C,'buy_guard':summarizeGuard(l['buy_guard']),'permission':a1,'related':{'groups':R},'supply_chain':G,'business_report':H,'recent_orders':Q,'data_gaps':j,...ab['open_questions']['length']>0x0?{'exploration':ab}:{}};}
1
+ import{Config,LocalMark,query_serviceContext,query_object_last_updated,query_affiliations,objectTypeFromAddress,ObjectType}from'@wowok/wowok';import{resolveAddress as a432a}from'../../tools/handlers/name-resolution.js';import{generateBusinessReport}from'./reverse-mapping.js';import{resolveSupplyChainGraph}from'../../knowledge/supply-chain.js';import{batchQueryObjectsByIds,fetchServiceOrders,ringWindowSaturated}from'../../graph/onchain/sdk-batch.js';import{computeFundListingWall}from'../../graph/onchain/facts.js';import{classifyFundWaterLevelUnits,fundWaterReminder}from'../../knowledge/fund-layer.js';import{projectExploration}from'../../graph/onchain/exploration.js';import{buildMachineGraph}from'./machine-nodes.js';import{formatMoneyAnnotation}from'./facet-money.js';function balanceStr(a){if(a===null||a===undefined)return null;if(typeof a==='bigint')return a['toString']();return String(a);}function ownerAddr(a){if(typeof a==='string')return a;const b=a;if(b&&typeof b==='object'){if(typeof b['AddressOwner']==='string')return b['AddressOwner'];if(typeof b['ObjectOwner']==='string')return b['ObjectOwner'];}return null;}function requireField(a,b){if(a===undefined||a===null)throw new Error('\x27'+b+'\x27\x20is\x20required\x20for\x20this\x20action');return a;}function summarizeGuard(a){if(!a)return null;const b=a,c=Array['isArray'](b['table'])?b['table']:[],d=c['filter'](e=>e?.['b_submission']===!![])['length'];return{'address':b['object']??'','description':b['description']??null,'rep':typeof b['rep']==='boolean'?b['rep']:null,'table_entry_count':c['length'],'submission_slot_count':d,'relies':Array['isArray'](b['relies'])?b['relies']['filter'](e=>typeof e==='string'):[],'relies_logic_and':typeof b['relies_logic_and']==='boolean'?b['relies_logic_and']:null};}function summarizePermission(a,b){if(!a)return null;const c=a,d=Array['isArray'](c['admin'])?c['admin']:[],e=d[0x0],f=typeof e==='string'?e:typeof e?.['account']==='string'?e['account']:c['builder']??null;return{'address':c['object']??'','description':c['description']??null,'builder':c['builder']??null,'owner':f,'owner_name':b?.['name']??null,'admin_count':d['length'],'entity_count':typeof c['entity_count']==='number'?c['entity_count']:null,'perm_remark':Array['isArray'](c['perm_remark'])?c['perm_remark']['map'](g=>({'index':String(g?.['index']??''),'remark':typeof g?.['remark']==='string'?g['remark']:''})):[],'um':c['um']??null,'tags':b?.['tags']??[],'updated_timestamp_ms':b?.['updated_at_ms']!=null?String(b['updated_at_ms']):null};}async function markOf(a){if(!a)return{'name':null,'tags':[],'updated_at_ms':null};try{const b=await LocalMark['Instance']()['get'](a);if(b)return{'name':b['name']??null,'tags':Array['isArray'](b['tags'])?b['tags']:[],'updated_at_ms':typeof b['updatedAt']==='number'?b['updatedAt']:null};}catch{}try{const c=await LocalMark['Instance']()['list']({'address':a}),d=c?.[0x0];if(d)return{'name':d['name']??null,'tags':Array['isArray'](d['tags'])?d['tags']:[],'updated_at_ms':typeof d['updatedAt']==='number'?d['updatedAt']:null};}catch{}return{'name':null,'tags':[],'updated_at_ms':null};}async function markOfMany(a){const b=[...new Set(a['filter'](e=>!!e))],c=await Promise['all'](b['map'](e=>markOf(e))),d=new Map();for(let e=0x0;e<b['length'];e++)d['set'](b[e],c[e]);return d;}export async function handleServicePanorama(b){const c=b['object_address']??b['service_address']??requireField(undefined,'object_address\x20(or\x20service_address)'),d=b['context_network']??undefined;let h=d??await Config['Instance']()['network_get']();const j=[];let k=await a432a(c,'service'),l=await query_serviceContext({'service':k,'include_machine_nodes':!![],'network':h});if(!l?.['service']&&d){const ac=await Config['Instance']()['network_get']();ac&&ac!==h&&(h=ac,l=await query_serviceContext({'service':k,'include_machine_nodes':!![],'network':h}));}const m=l['service'];k=m['object']??k;const q=new Set(),w=ad=>{if(ad)q['add'](ad);};w(k),w(m['machine']),w(m['permission']),w(m['um']);for(const ad of m['arbitrations']??[])w(ad);for(const ae of m['rewards']??[])w(ae);for(const af of m['repositories']??[])w(af);const x=l['permission'];if(x){const ag=Array['isArray'](x['admin'])?x['admin']:[];ag[0x0]&&w(typeof ag[0x0]==='string'?ag[0x0]:ag[0x0]?.['account']);if(x['builder'])w(x['builder']);}const y=await markOfMany([...q]),z=y['get'](k)??{'name':null,'tags':[],'updated_at_ms':null},A=z['name'],B=ah=>ah?y['get'](ah)??{'name':null,'tags':[],'updated_at_ms':null}:{'name':null,'tags':[],'updated_at_ms':null};let C=null;const D=l['machine'],E=l['machine_nodes']??[];if(D||E['length']>0x0){const {nodes:ah,edges:ai}=buildMachineGraph(E);C={'address':D?.['object']??m['machine']??'','name':B(D?.['object']??m['machine'])['name'],'description':D?.['description']??null,'published':typeof D?.['bPublished']==='boolean'?D['bPublished']:null,'paused':typeof D?.['bPaused']==='boolean'?D['bPaused']:null,'node_count':typeof D?.['node_count']==='number'?D['node_count']:null,'consensus_repositories':Array['isArray'](D?.['consensus_repositories'])?D['consensus_repositories']:[],'nodes':ah,'edges':ai};}let F=null;try{const aj=await query_object_last_updated({'object':k,'network':h});aj?.['timestamp_ms']&&(F={'timestamp_ms':aj['timestamp_ms'],'digest':aj['digest']??null,'sender':aj['sender']??null});}catch{j['push']('onchain_last_updated:\x20query\x20failed\x20(non-blocking)');}let G=null;try{G=await resolveSupplyChainGraph(k,h);}catch{j['push']('supply_chain:\x20resolution\x20failed\x20(non-blocking)');}let H=null,I=[];const J=m?.['type_raw']??m?.['type']??'',K=J['match'](/<(.+)>$/),L=K?K[0x1]:null,M=(ak,al)=>{const am=[];return ak?am['push']('Pricing\x20&\x20settlement\x20coin:\x20'+ak+'\x20—\x20the\x20Service\x27s\x20generic\x20T,\x20FIXED\x20at\x20creation\x20(immutable).\x20Sales\x20prices\x20and\x20order\x20amounts\x20are\x20denominated\x20in\x20this\x20exact\x20token;\x20buyers\x20must\x20hold\x20it\x20to\x20order.'):am['push']('Pricing\x20&\x20settlement\x20coin:\x20unavailable\x20from\x20the\x20Service\x20type\x20(no\x20generic\x20found)\x20—\x20treat\x20amounts\x20as\x20raw\x20smallest\x20units.'),am['push']('To\x20price\x20in\x20a\x20different\x20token,\x20publish\x20a\x20NEW\x20Service\x20with\x20type_parameter\x20set\x20to\x20that\x20token\x27s\x20full\x20type\x20—\x20this\x20one\x20keeps\x20settling\x20in\x20its\x20coin.'),/testnet/i['test'](al)?am['push']('Testnet\x20has\x20ONLY\x20WOW\x20(no\x20stablecoins\x20are\x20bridged)\x20—\x20testnet\x20services\x20stay\x20WOW-denominated;\x20multi-token\x20pricing\x20is\x20a\x20mainnet\x20capability.'):am['push']('Mainnet\x20accepts\x20bridged\x20tokens\x20(USDT\x20/\x20USDC\x20/\x20ETH\x20/\x20WBTC\x20/\x20WOW):\x20buyers\x20bridge\x20them\x20from\x20Ethereum\x20via\x20the\x20cross-chain\x20bridge.\x20Query\x20wowok_buildin_info\x20info=\x27mainnet\x20bridge\x20tokens\x27\x20for\x20each\x20token\x27s\x20exact\x20type\x20tag\x20(wowTypeTag)\x20to\x20use\x20in\x20type_parameter\x20when\x20publishing.'),am['join']('\x20');},N=ak=>formatMoneyAnnotation(ak,L,h),O=0x3,P=0x32;let Q=null;try{const ak=await fetchServiceOrders(k,h,!![]),al=Array['isArray'](ak?.['items'])?ak['items']:[],am=al['slice'](-P),an=al['slice'](-O),ao=am['map'](aM=>typeof aM?.['who']==='string'?aM['who']:'')['filter'](aM=>aM!==''),ap=an['map'](aM=>typeof aM?.['who']==='string'?aM['who']:'')['filter'](aM=>aM!==''),aq=new Map();try{if(ao['length']>0x0){const aM=await batchQueryObjectsByIds(ao,h,!![]);for(const aN of aM){aN&&aN['type']===ObjectType['Order']&&aq['set'](aN['object'],aN);}}}catch{j['push']('recent_orders:\x20order\x20details\x20unavailable\x20(non-blocking)');}const ar=new Map();try{const aO=new Set();for(const aP of aq['values']()){if(aP?.['allocation'])aO['add'](aP['allocation']);}if(aO['size']>0x0){const aQ=await batchQueryObjectsByIds(Array['from'](aO),h,!![]);for(const aR of aQ){if(!aR?.['object'])continue;if(aR['type']===ObjectType['Allocation']){const aS=Number(aR?.['balance']??0x0);ar['set'](aR['object'],Number['isFinite'](aS)&&aS===0x0?'allocated':'pending');}}}}catch{j['push']('recent_orders:\x20allocation\x20details\x20unavailable\x20(non-blocking)');}const as=new Map(),at=new Map();try{const aT=new Set();for(const aU of ap){const aV=aq['get'](aU);if(aV?.['progress'])aT['add'](aV['progress']);}if(aT['size']>0x0){const aW=await batchQueryObjectsByIds(Array['from'](aT),h,!![]);for(const aX of aW){if(!aX?.['object'])continue;if(aX['type']===ObjectType['Progress']){const aY=aX?.['current'];as['set'](aX['object'],typeof aY==='string'&&aY!==''?aY:null),at['set'](aX['object'],Number(aX?.['current_time'])||null);}}}}catch{j['push']('recent_orders:\x20progress\x20details\x20unavailable\x20(non-blocking)');}I=Array['from'](aq['values']())['map'](aZ=>({'id':aZ['object'],'created_at_ms':Number(aZ['time'])||undefined,'claimed_by':aZ['claimed_by']??null,'current_node':aZ['progress']?as['get'](aZ['progress'])??null:null}));const au=new Map();try{const aZ=ap,b0=await Promise['allSettled'](aZ['map'](b1=>query_object_last_updated({'object':b1,'network':h})));for(let b1=0x0;b1<aZ['length'];b1++){const b2=b0[b1];au['set'](aZ[b1],b2['status']==='fulfilled'&&b2['value']?.['timestamp_ms']?Number(b2['value']['timestamp_ms'])||null:null);}}catch{j['push']('recent_orders:\x20order\x20updated\x20times\x20unavailable\x20(non-blocking)');}const av=await Promise['all'](an['map'](async b3=>{const b4=typeof b3?.['who']==='string'?b3['who']:'',b5=aq['get'](b4),b6=b5?.['amount']!==null&&b5?.['amount']!==undefined?String(b5['amount']):'',b7=await N(b6);return{'order':b4,'time':typeof b3?.['time']==='number'?b3['time']:0x0,'updated_ms':au['get'](b4)??null,'amount':b6,'amount_display':b7['display'],'amount_tip':b7['tip'],'progress':b5?.['progress']??null,'allocation':b5?.['allocation']??null,'disputes':Array['isArray'](b5?.['dispute'])?b5['dispute']:[],'agent':Array['isArray'](b5?.['agent'])?b5['agent']:[],'owner':ownerAddr(b5?.['builder']??b5?.['owner']),'claimed_by':b5?.['claimed_by']??null,'required_info':b5?.['required_info']??null,'progress_next':b5?.['progress']?as['get'](b5['progress'])??null:null,'progress_since':b5?.['progress']?at['get'](b5['progress'])??null:null,'allocation_state':b5?.['allocation']?ar['get'](b5['allocation'])??'pending':'none','bought':await Promise['all']((Array['isArray'](b5?.['items'])?b5['items']:[])['map'](async b8=>({'name':String(b8?.['name']??''),'price_display':(await N(b8?.['price']!==null&&b8?.['price']!==undefined?String(b8['price']):null))['display'],'quantity':String(b8?.['quantity']??'0'),'wip_hash':String(b8?.['wip_hash']??'')})))};})),aw=av['filter'](b3=>b3['order']!==''),ax=ao['map'](b3=>aq['get'](b3))['filter'](b3=>!!b3);let ay=0x0n,az=0x0,aA=0x0,aB=0x0,aC=0x0,aD=0x0,aE=null,aF=null;for(const b3 of ax){const b4=b3?.['amount']!==null&&b3?.['amount']!==undefined?String(b3['amount']):'';/^\d+$/['test'](b4)&&(ay+=BigInt(b4),az++);if(Array['isArray'](b3?.['dispute'])&&b3['dispute']['length']>0x0)aA++;const b5=b3?.['allocation']?ar['get'](b3['allocation'])??'pending':'none';if(b5==='pending')aB++;else{if(b5==='allocated')aC++;else aD++;}}for(const b6 of am){if(typeof b6?.['time']==='number'){if(aE===null||b6['time']<aE)aE=b6['time'];if(aF===null||b6['time']>aF)aF=b6['time'];}}const aG=az>0x0?ay['toString']():null,aH=aG!==null?await N(aG):null,aI=al['length'],aJ=ak?.['ring_saturated']??ringWindowSaturated(aI),aK=aw['length'],aL='Analyze\x20ALL\x20orders\x20of\x20Service\x20'+k+'\x20('+h+')\x20one\x20by\x20one,\x20newest\x20first.\x20'+('The\x20orders\x20live\x20in\x20the\x20Service\x27s\x20FIFO\x20tx-linker\x20window\x20holding\x20at\x20most\x205200\x20newest\x20entries\x20—\x20the\x20retained\x20count\x20is\x20a\x20lower\x20bound\x20when\x20the\x20window\x20is\x20saturated\x20(currently\x20'+aI+(aJ?',\x20saturated':'')+').\x20')+'For\x20each\x20order\x20call\x20object_panorama\x20with\x20the\x20order\x27s\x20FULL\x200x\x20address\x20(collect\x20the\x20addresses\x20from\x20the\x20same\x20reverse-index\x20source;\x20work\x20newest-first)\x20and\x20render\x20ONE\x20table\x20row\x20per\x20order:\x20'+'order\x20address\x20chip\x20(first\x20column)\x20|\x20created\x20+\x20last-updated\x20(local\x20dates)\x20|\x20amount\x20(the\x20display\x20value\x20with\x20its\x20token\x20symbol\x20—\x20never\x20reconvert\x20from\x20raw)\x20|\x20fund\x20state\x20(none\x20/\x20pending\x20/\x20allocated)\x20|\x20current\x20machine\x20node\x20|\x20disputes\x20(each\x20dispute\x20case\x20as\x20its\x20own\x20address\x20chip\x20ON\x20THE\x20SAME\x20ROW\x20—\x20an\x20order\x27s\x20progress,\x20allocation\x20and\x20arb\x20cases\x20are\x20its\x20children\x20and\x20are\x20never\x20split\x20into\x20a\x20separate\x20flat\x20list)\x20|\x20buyer\x20address\x20chip.\x20'+'Close\x20with\x20the\x203\x20most\x20valuable\x20patterns\x20across\x20the\x20rows\x20(amount\x20distribution,\x20stuck\x20or\x20paused\x20orders,\x20dispute\x20rate).\x20Orders\x20only\x20—\x20do\x20not\x20re-analyze\x20the\x20Service\x20itself.';Q={'count':aI,'window_saturated':aJ,'preview_truncated':aI>aK,'stats':{'scope_count':ax['length'],'scoped':ax['length']<aI,'amount_sum_raw':aG,'amount_sum_display':aH?.['display']??null,'amount_sum_tip':aH?.['tip']??null,'amount_known_count':az,'disputed_order_count':aA,'allocation_pending_count':aB,'allocation_allocated_count':aC,'allocation_none_count':aD,'first_created_ms':aE,'last_created_ms':aF},...aI>aK?{'drilldown':{'total_count':aI,'analyzed_count':aK,'stats_scope_count':ax['length'],'prompt':aL},'order_addresses':ax['map'](b7=>b7['object'])}:{},'items':aw};}catch{j['push']('recent_orders:\x20reverse-index\x20query\x20failed\x20(non-blocking)');}try{const b7=[m,l['machine'],l['buy_guard'],...l['allocator_guards']??[]]['filter'](Boolean),b8=Object['values'](l['referenced']??{}),b9=(m['arbitrations']??[])['map'](ba=>{const bb=b8['find'](bd=>bd?.['object']===ba||bd?.['id']===ba),bc=typeof bb?.['bPaused']==='boolean'?bb['bPaused']:undefined;return{'found':bc!==undefined,'paused':bc};});H=generateBusinessReport({'objects':b7,'machine_nodes':E['map'](ba=>({'name':ba['name']})),'machine_edges':C?.['edges']?C['edges']['map'](ba=>({'from':ba['from'],'to':ba['to'],'forward_count':ba['forwards']?.['length']??0x0,'unguarded_forward_count':(ba['forwards']??[])['filter'](bb=>bb?.['guard']==null)['length']})):undefined,'orders':I['length']>0x0?I:undefined,'now_ms':Date['now'](),...b9['length']>0x0?{'arbitrations':b9}:{}});}catch{j['push']('business_report:\x20generation\x20failed\x20(non-blocking)');}const R=[];try{const ba=await query_affiliations({'address':k,'no_cache':!![],'network':h}),bb=new Set(),bc=new Map();for(const be of ba?.['entries']??[]){const bf=typeof be?.['who']==='string'?be['who']:'';if(!bf||bb['has'](bf))continue;bb['add'](bf);const bg=objectTypeFromAddress(bf);if(!bg)continue;if(bg===ObjectType['Order'])continue;const bh=String(bg);let bi=bc['get'](bh);!bi&&(bi=[],bc['set'](bh,bi)),bi['push']({'address':bf,'type_label':bh,'name':B(bf)['name'],'time':typeof be?.['time']==='number'?be['time']:null,'via':typeof be?.['table']==='string'?be['table']:null});}const bd=['Progress','Allocation','Payment','Guard'];for(const bj of bd){const bk=bc['get'](bj);bk&&bk['length']>0x0&&(R['push']({'type_label':bj,'items':bk}),bc['delete'](bj));}for(const [bl,bm]of bc){if(bm['length']>0x0)R['push']({'type_label':bl,'items':bm});}}catch{j['push']('related:\x20global-table\x20lookup\x20failed\x20(non-blocking)');}const S=new Set(),T=bn=>{typeof bn==='string'&&/^0x[0-9a-fA-F]{40,64}$/['test'](bn)&&S['add'](bn['toLowerCase']());};T(m['buy_guard']);for(const bn of E){for(const bo of bn?.['pairs']??[]){for(const bp of bo?.['forwards']??[])T(bp?.['guard']);}}for(const bq of m['order_allocators']?.['allocators']??[])T(bq?.['guard']);for(const br of l['allocator_guards']??[])T(br?.['object']);for(const bs of Object['values'](l['referenced']??{})){const bt=bs;if(!bt||typeof bt!=='object')continue;if(bt['type']===ObjectType['Reward']){for(const bu of bt['guards']??[])T(bu?.['guard']);}if(bt['type']===ObjectType['Treasury']){for(const bv of bt['external_withdraw_guard']??[])T(bv?.['guard']);for(const bw of bt['external_deposit_guard']??[])T(bw?.['guard']);}(bt['type']===ObjectType['Arbitration']||bt['type']===ObjectType['Arb'])&&T(bt['voting_guard']);}const U=R['find'](bx=>bx['type_label']===String(ObjectType['Guard']));if(U){U['items']=U['items']['filter'](bx=>!S['has'](bx['address']['toLowerCase']()));if(U['items']['length']===0x0)R['splice'](R['indexOf'](U),0x1);else{const bx=U['items'];try{const by=await batchQueryObjectsByIds(bx['map'](bA=>bA['address']),h,!![]),bz=new Map();for(const bA of by){if(bA?.['object'])bz['set'](String(bA['object'])['toLowerCase'](),bA);}for(const bB of bx){const bC=bz['get'](bB['address']['toLowerCase']());if(!bC){bB['explanation']=null;continue;}const bD=Array['isArray'](bC['table'])?bC['table']:[],bE=[];let bF=0x0;for(const bH of bD){if(bH?.['b_submission']===!![]){bF++;continue;}bH?.['value_type']==='Address'&&typeof bH?.['value']==='string'&&bH['value']['startsWith']('0x')&&bE['push'](bH['value']);}const bG=bE['some'](bI=>bI['toLowerCase']()===k['toLowerCase']());bB['explanation']={'description':typeof bC['description']==='string'?bC['description']:null,'table_refs':bE,'references_this_service':bG,'submission_slots':bF,'note':bG?'One-off\x20verification\x20guard:\x20NOT\x20mounted\x20on\x20any\x20host\x20field;\x20its\x20table\x20carries\x20this\x20Service\x20as\x20an\x20on-chain\x20constant\x20(the\x20affiliation\x20is\x20written\x20at\x20creation).\x20It\x20acts\x20only\x20when\x20submitted\x20inside\x20a\x20passport\x20at\x20runtime.':'Guard\x20surfaced\x20by\x20the\x20affiliation\x20window\x20only;\x20not\x20mounted\x20on\x20any\x20host\x20field\x20reachable\x20from\x20this\x20panorama.\x20It\x20acts\x20only\x20when\x20referenced\x20at\x20runtime\x20(passport\x20submission\x20or\x20a\x20host\x20outside\x20this\x20view).'};}}catch{j['push']('related:\x20unbound-guard\x20explanation\x20unavailable\x20(non-blocking)');}}}const V=new Map();for(const bI of l['allocator_guards']??[]){const bJ=bI;if(bJ?.['object'])V['set'](String(bJ['object'])['toLowerCase'](),bJ);}const W=[];for(const bK of Array['isArray'](m['sales'])?m['sales']:[]){const bL=balanceStr(bK?.['price']),bM=await N(bL);W['push']({'name':typeof bK?.['name']==='string'?bK['name']:'','price':bL,'price_display':bM['display'],'price_tip':bM['tip'],'stock':balanceStr(bK?.['stock']),'suspension':bK?.['suspension']===!![],'restock_on_refund':bK?.['restock_on_refund']===!![],'wip':typeof bK?.['wip']==='string'?bK['wip']:'','wip_hash':typeof bK?.['wip_hash']==='string'?bK['wip_hash']:''});}const X=bN=>bN===0x0?'amount':bN===0x2?'surplus':'rate',Y=bN=>{const bO=bN?.['who'];if(bO&&typeof bO==='object'&&'Entity'in bO){const bP=bO['Entity'],bQ=typeof bP==='string'?bP:typeof bP?.['name_or_address']==='string'?bP['name_or_address']:null;return{'who':bQ?'Entity\x20'+bQ:'Entity','entity':bQ&&/^0x[0-9a-fA-F]{6,64}$/['test'](bQ)?bQ:null,'mode':X(bN?.['mode']),'value':balanceStr(bN?.['sharing'])};}if(bO&&typeof bO==='object'&&'GuardIdentifier'in bO)return{'who':'Guard\x20identifier\x20#'+bO['GuardIdentifier'],'entity':null,'mode':X(bN?.['mode']),'value':balanceStr(bN?.['sharing'])};return{'who':'Signer','entity':null,'mode':X(bN?.['mode']),'value':balanceStr(bN?.['sharing'])};},Z=m['order_allocators']?{'description':m['order_allocators']['description']??'','threshold':balanceStr(m['order_allocators']['threshold']),'allocators':(m['order_allocators']['allocators']??[])['map'](bN=>({'guard':bN['guard'],'sharing_count':Array['isArray'](bN['sharing'])?bN['sharing']['length']:0x0,'sharing':(Array['isArray'](bN['sharing'])?bN['sharing']:[])['map'](Y),'max':balanceStr(bN['max']??null),'guard_summary':summarizeGuard(V['get'](String(bN['guard']??'')['toLowerCase']()))}))}:null,a0=[];{const bN=new Map();for(const bO of m['order_allocators']?.['allocators']??[]){for(const bP of Array['isArray'](bO['sharing'])?bO['sharing']:[]){const bQ=Y(bP);if(bQ['entity']){const bR=bQ['entity']['toLowerCase'](),bS=bN['get'](bR)??{'raw':bQ['entity'],'guards':[]};bS['guards']['push'](bO['guard']??''),bN['set'](bR,bS);}}}if(bN['size']>0x0)try{const bT=await batchQueryObjectsByIds([...bN['keys']()],h,!![]),bU=new Map();for(const bV of bT){if(bV?.['object'])bU['set'](String(bV['object'])['toLowerCase'](),bV);}for(const [bW,bX]of bN){const bY=bU['get'](bW),bZ='order_allocators\x20sharing\x20of\x20allocator\x20guard\x20'+bX['guards'][0x0];if(bY&&bY['permission']!==undefined){const c0=balanceStr(bY['balance']),c1=await N(c0);a0['push']({'address':String(bY['object']),'kind':'treasury','description':typeof bY['description']==='string'?bY['description']:null,'permission':typeof bY['permission']==='string'?bY['permission']:null,'balance':c0,'balance_display':c1['display'],'balance_tip':c1['tip'],'external_deposit_guard_count':Array['isArray'](bY['external_deposit_guard'])?bY['external_deposit_guard']['length']:null,'external_withdraw_guard_count':Array['isArray'](bY['external_withdraw_guard'])?bY['external_withdraw_guard']['length']:null,'via':bZ});}else a0['push']({'address':bX['raw'],'kind':'account','description':null,'permission':null,'balance':null,'balance_display':null,'balance_tip':null,'external_deposit_guard_count':null,'external_withdraw_guard_count':null,'via':bZ});}}catch{j['push']('income_recipients:\x20Sharing\x20entity\x20read\x20failed\x20(non-blocking)');}}const a1=summarizePermission(l['permission'],B(m['permission'])),a2=a1?.['owner']??F?.['sender']??null,a3=a2?await markOf(a2):null,a4=await N(balanceStr(m['compensation_fund'])),a5=balanceStr(m['compensation_fund']),a6=/^\d+$/['test'](a5?.['trim']()??'')?BigInt(a5['trim']()):null,a7=a6===null?null:(a6/0x3n)['toString'](),a8=a7===null?null:await N(a7),a9=a6===null?null:a6===0x0n?'No\x20compensation\x20fund:\x20this\x20Service\x20carries\x20NO\x20payout\x20protection\x20—\x20a\x20won\x20arbitration\x20award\x20cannot\x20be\x20paid\x20(the\x20claim\x20aborts,\x20code\x2027).\x20Running\x20without\x20a\x20fund\x20is\x20a\x20legitimate\x20merchant\x20choice,\x20but\x20it\x20is\x20one\x20a\x20buyer\x20should\x20see\x20before\x20ordering.':'Orders\x20at\x20or\x20under\x20this\x20cap\x20are\x20fully\x20protected\x20(award\x20ceiling\x203x\x20order).\x20Above\x20the\x20cap\x20there\x20is\x20NO\x20partial\x20payout\x20—\x20settlement\x20is\x20all-or-nothing\x20and\x20the\x20claim\x20aborts\x20(code\x2027)\x20until\x20the\x20fund\x20covers\x20the\x20award;\x20the\x20order\x20itself\x20is\x20unaffected.';let aa=null;if(a6!==null){const c2=W['filter'](ca=>!ca['suspension']&&/^\d+$/['test'](ca['price']?.['trim']()??''))['map'](ca=>({'name':ca['name'],'price':BigInt(ca['price']['trim']())})),c3=computeFundListingWall(a6,c2),c4=await Promise['all'](c3['blocked']['map'](async ca=>({'name':ca['name'],'price':ca['price']['toString'](),'price_display':(await N(ca['price']['toString']()))['display']}))),c5=c4['length']===0x0?null:'The\x20fund\x20currently\x20backs\x20orders\x20up\x20to\x20'+(a8?.['display']??a7)+'.\x20'+((c4['length']===0x1?'1\x20listing\x20is':c4['length']+'\x20listings\x20are')+'\x20priced\x20above\x20that\x20and\x20check\x20out\x20UNDER-COVERED\x20—\x20the\x20order\x20proceeds\x20with\x20a\x20buy-time\x20warning\x20(拍板⑤\x20dm-mtw-261027\x20demoted\x20the\x20refusal;\x20no\x20money\x20is\x20blocked),\x20but\x20the\x20fund\x20cannot\x20back\x20its\x20maximum\x20award:\x20a\x20ruling\x20at\x20the\x20cap\x20aborts\x20code\x2027\x20(claim\x20NOT\x20consumed)\x20until\x20a\x20top-up.\x20')+'The\x20highest-priced\x20listing\x20is\x20affected\x20first;\x20top\x20the\x20fund\x20above\x203x\x20a\x20listing\x27s\x20price\x20(service.compensation_fund_add)\x20or\x20cut\x20the\x20price\x20to\x20fully\x20cover\x20it.\x20'+'This\x20recomputes\x20on\x20every\x20read:\x20after\x20every\x20award\x20that\x20spends\x20the\x20fund,\x20re-check\x20your\x20top\x20listing.',c6=c2['reduce']((ca,cb)=>cb['price']>ca?cb['price']:ca,0x0n),c7=c6*0x3n,c8=a6<=0x0n?'depleted':classifyFundWaterLevelUnits(a6,c7)??'healthy';let c9=null;c8!=='healthy'&&(c9=fundWaterReminder(c8,{'balance':a6<=0x0n?'0':(await N(a6['toString']()))['display'],'threshold':(await N(c7['toString']()))['display']})),aa={'blocked':c4,'note':c5,'water_level':c8,'water_reminder':c9};}const ab=projectExploration([],{'truncations':[],'budgetExhausted':{},'dataGaps':j});return{'action':'service_panorama','network':h,'now_ms':Date['now'](),'service':{'address':k,'name':A,'description':m['description']??'','location':m['location']??'','published':m['bPublished']===!![],'paused':m['bPaused']===!![],'paused_time':typeof m['paused_time']==='number'?m['paused_time']:typeof m['paused_time']==='string'&&/^\d+$/['test'](m['paused_time'])?Number(m['paused_time']):null,'setting_lock_duration':balanceStr(m['setting_lock_duration']),'customer_required':Array['isArray'](m['customer_required'])?m['customer_required']:[],'compensation_fund':balanceStr(m['compensation_fund']),'compensation_fund_display':a4['display'],'compensation_fund_tip':a4['tip'],'compensation_fund_cover_cap':a7,'compensation_fund_cover_cap_display':a8?.['display']??null,'compensation_fund_cover_cap_note':a9,'compensation_fund_listing_wall':aa,'sales':W,'machine':m['machine']??null,'buy_guard':m['buy_guard']??null,'permission':m['permission']??'','um':m['um']??null,'arbitrations':Array['isArray'](m['arbitrations'])?m['arbitrations']:[],'rewards':Array['isArray'](m['rewards'])?m['rewards']:[],'repositories':Array['isArray'](m['repositories'])?m['repositories']:[],'order_allocators':Z,'income_recipients':a0,'payment_token':{'coin_type':L,'guidance':M(L,h)},'onchain_last_updated':F,'tags':z['tags']??[],'owner':a2,'owner_name':a3?.['name']??null},'machine_graph':C,'buy_guard':summarizeGuard(l['buy_guard']),'permission':a1,'related':{'groups':R},'supply_chain':G,'business_report':H,'recent_orders':Q,'data_gaps':j,...ab['open_questions']['length']>0x0?{'exploration':ab}:{}};}
@@ -1 +1 @@
1
- import{Config,LocalMark,query_objects,query_serviceContext}from'@wowok/wowok';import{resolveAddress as a395a}from'../../tools/handlers/name-resolution.js';import{parseGuardTimeBounds}from'../../knowledge/guard-anchor-reach.js';import{formatMoneyAnnotation}from'./facet-money.js';const balanceStr=a=>a===null||a===undefined?'0':typeof a==='bigint'?a['toString']():String(a);async function displayOf(a,b,c){try{return(await formatMoneyAnnotation(a,b,c))['display'];}catch{return a;}}function describeRecipient(a){if(typeof a==='string')return a;if(a&&typeof a==='object'){const b=a;if('GuardIdentifier'in b)return'submission\x20slot\x20'+String(b['GuardIdentifier']);if('Entity'in b){const c=b['Entity'],d=c&&typeof c==='object'?c['name_or_address']:c;return d===''?'Entity(\x22\x22)\x20—\x20MCP\x20default\x20local\x20account':'Entity:'+String(d);}return JSON['stringify'](a);}return'unknown';}const PER_ORDER_REPLAY_NOTE='A\x20per-order\x20replay\x20on\x20the\x20reward\x20PULL\x20rail\x20needs\x20BOTH\x20a\x20guard_add\x20store_from_id\x20stamp\x20on\x20the\x20'+'submitted-Order\x20slot\x20(0\x20by\x20convention)\x20AND\x20an\x20order-scoped\x20where:{storeFromId:{identifier:<same\x20slot>}}\x20'+'record\x20gate\x20in\x20the\x20claim\x20guard\x20(SV-2).\x20For\x20a\x20per-order\x20once\x20the\x20CHAIN\x20enforces\x20regardless\x20of\x20guard-tree\x20'+'mistakes,\x20route\x20the\x20incentive\x20through\x20an\x20Allocation\x20leg\x20declaring\x20protocol\x20slot\x20254\x20(the\x20once\x20key\x20derives\x20'+'on-chain\x20from\x20bcs(payment_info.for_object);\x20a\x20second\x20alloc\x20aborts\x2016,\x20E_ONCE_TRIGGERED).',quoteOwnerAddr=a=>{if(typeof a==='string')return a;const b=a;if(b&&typeof b==='object'){if(typeof b['AddressOwner']==='string')return b['AddressOwner'];if(typeof b['ObjectOwner']==='string')return b['ObjectOwner'];const c=Object['values'](b)['find'](d=>typeof d==='string'&&d['length']>0x14);if(typeof c==='string')return c;}return null;};export async function handleServiceQuote(a){const b=a['context_network']??undefined??await Config['Instance']()['network_get'](),d=await a395a(a['service_address'],'service_address'),f=await query_serviceContext({'service':d,'network':b}),h=f['service'];if(!h)throw new Error('Service\x20\x27'+a['service_address']+'\x27\x20not\x20found\x20on\x20network\x20'+b+'.');const i=h?.['type_raw']??h?.['type']??'',j=i['match'](/<(.+)>$/),k=j?j[0x1]:null,l=Array['isArray'](h['sales'])?h['sales']:[],m=new Map();for(const P of l){if(!P||typeof P['name']!=='string')continue;m['set'](P['name'],{'price':balanceStr(P['price']?.['balance']??P['price']??0x0),'suspended':P['suspension']===!![]});}let n=0x0n;for(const Q of m['values']()){const R=/^\d+$/['test'](Q['price'])?BigInt(Q['price']):0x0n;R>0x0n&&(n===0x0n||R<n)&&(n=R);}const q=h['paused']===!![]||h['bPaused']===!![],t=a['items']??[...m['keys']()]['map'](S=>({'name':S,'quantity':0x1})),u=t['filter'](S=>!m['has'](S['name']));if(u['length']>0x0)throw new Error('Sale(s)\x20not\x20found\x20on\x20this\x20Service:\x20'+u['map'](S=>'\x27'+S['name']+'\x27')['join'](',\x20')+'.\x20'+('Available\x20sales:\x20'+([...m['keys']()]['map'](S=>'\x27'+S+'\x27')['join'](',\x20')||'<none>')+'.'));if(t['length']===0x0)throw new Error('This\x20Service\x20has\x20NO\x20configured\x20sales\x20—\x20nothing\x20to\x20quote.');const w=[];let x=0x0n;for(const S of t){const T=m['get'](S['name']),U=BigInt(T['price']||'0'),V=U*BigInt(S['quantity']);x+=V,w['push']({'name':S['name'],'quantity':S['quantity'],'unit_price':T['price'],'unit_price_display':await displayOf(T['price'],k,b),'line_total':V['toString'](),'suspended':T['suspended']});}let y=x,z=null;if(typeof a['discount']==='string'&&a['discount']['trim']()!==''){const W=await a395a(a['discount'],'discount');let X=null;try{const aa=await query_objects({'objects':[W],'network':b});X=aa?.['objects']?.[0x0]??null;}catch{X=null;}if(!X)throw new Error('E_DISCOUNT_NOT_FOUND:\x20coupon\x20\x27'+W+'\x27\x20not\x20found\x20—\x20it\x20was\x20already\x20burned\x20on\x20a\x20'+'previous\x20buy\x20(a\x20burned\x20coupon\x20is\x20destroyed\x20on\x20chain\x20and\x20cannot\x20be\x20quoted\x20again)\x20'+'or\x20the\x20address\x20is\x20wrong.\x20Re-quote\x20without\x20the\x20coupon.');const Y=String(X['service']??'');if(Y['toLowerCase']()!==d['toLowerCase']())throw new Error('E_SERVICE_DISCOUNT_NOT_MATCH:\x20coupon\x20\x27'+W+'\x27\x20is\x20bound\x20to\x20service\x20'+((Y||'<unparseable>')+',\x20not\x20to\x20'+d+'.\x20A\x20buy\x20with\x20this\x20coupon\x20aborts.'));const Z=ab=>{const ac=balanceStr(ab)['trim']();return/^\d+$/['test'](ac)?BigInt(ac):0x0n;},a0=BigInt(Date['now']()),a1=Z(X['time_start']),a2=Z(X['time_end']);if(a0<a1||a0>a2)throw new Error('E_DISCOUNT_TIME_INVALID:\x20coupon\x20\x27'+W+'\x27\x20is\x20valid\x20'+(a1+'–'+a2+'\x20(ms\x20epoch),\x20now\x20is\x20'+a0+'.\x20A\x20buy\x20with\x20this\x20coupon\x20aborts.'));const a3=Number(X['discount_type'])===0x0,a4=Z(X['off']),a5=quoteOwnerAddr(X['owner']),a6=a5?'Coupon\x20is\x20owned\x20by\x20'+a5+';\x20only\x20the\x20holder\x20can\x20redeem\x20it\x20—\x20a\x20coupon\x20held\x20by\x20another\x20address\x20cannot\x20be\x20applied\x20to\x20your\x20order,\x20have\x20the\x20owner\x20transfer\x20it\x20first\x20(call\x20service\x20discount_send).\x20Refunds\x20settle\x20the\x20post-coupon\x20amount\x20only.':'Coupon\x20holder\x20could\x20not\x20be\x20read\x20from\x20the\x20chain\x20—\x20VERIFY\x20the\x20holder\x20before\x20checkout:\x20only\x20the\x20holder\x20can\x20redeem,\x20a\x20coupon\x20held\x20by\x20another\x20address\x20cannot\x20be\x20applied\x20to\x20your\x20order\x20(have\x20the\x20owner\x20transfer\x20it\x20first\x20via\x20call\x20service\x20discount_send),\x20and\x20refunds\x20settle\x20the\x20post-coupon\x20amount\x20only.',a7=X['benchmark']===null||X['benchmark']===undefined?null:Z(X['benchmark']),a8=a7===null?!![]:x>=a7;let a9=![];a8&&(a9=!![],y=a3?x-x*a4/0x2710n:x>a4?x-a4:0x0n),z={'coupon':W,'name':typeof X['name']==='string'?X['name']:null,'owned_by':a5,'ownership_note':a6,'type':a3?'rates':'minus','off':a4['toString'](),'benchmark':a7===null?null:a7['toString'](),'benchmark_met':a8,'applied':a9,'list_total':x['toString'](),'final_total':y['toString'](),'final_total_display':await displayOf(y['toString'](),k,b),'note':a9?y===0x0n?'DEAD\x20BASKET\x20(F-BS-75):\x20the\x20coupon\x20covers\x20the\x20entire\x20basket,\x20but\x20the\x20chain\x20REFUSES\x20zero-total\x20'+'buys\x20—\x20the\x20client\x20gate\x20(order_new_zero_total_dead_order)\x20and\x20the\x20on-chain\x20zero-total\x20gate\x20'+'(abort\x2042)\x20both\x20reject\x20this\x20buy;\x20NOTHING\x20is\x20purchasable\x20at\x20total\x200,\x20free\x20product\x20or\x20not.\x20'+'Lower\x20the\x20coupon\x20value\x20so\x20the\x20final\x20total\x20stays\x20>=\x201\x20smallest\x20unit\x20(or\x20price\x20a\x20deliberate\x20'+'free\x20tier\x20at\x201\x20smallest\x20unit,\x20or\x20deliver\x20it\x20outside\x20the\x20sales\x20rails).\x20allow_zero_total\x20does\x20'+'NOT\x20unlock\x20this\x20buy\x20and\x20no\x20longer\x20waives\x20the\x20issuance\x20gate\x20either\x20(BSX-F07).':'Discounted\x20total\x20shown\x20—\x20order_new.buy.total_pay.balance\x20must\x20be\x20>=\x20this\x20final_total\x20(bs29\x20R-17:\x20total_pay\x20is\x20a\x20FLOOR;\x20the\x20order\x20escrows\x20exactly\x20this\x20amount,\x20an\x20over-funded\x20total\x20is\x20never\x20escrowed).\x20Pass\x20exactly\x20this\x20value;\x20the\x20coupon\x20is\x20consumed\x20at\x20buy.\x20'+'BURN-ON-USE\x20(F-ETS-03):\x20attaching\x20this\x20coupon\x20to\x20a\x20buy\x20DESTROYS\x20it\x20on\x20chain\x20—\x20the\x20coupon\x20'+'object\x20is\x20gone\x20once\x20the\x20order\x20is\x20created\x20(a\x20later\x20quote\x20hits\x20E_DISCOUNT_NOT_FOUND).\x20'+'CANCELLATION\x20REFUNDS\x20THE\x20DISCOUNTED\x20AMOUNT\x20ONLY:\x20refund\x20rails\x20pay\x20the\x20order\x27s\x20escrowed\x20'+'amount\x20(this\x20final_total),\x20so\x20a\x20cancelled\x20order\x20does\x20NOT\x20restore\x20the\x20coupon\x27s\x20face\x20value\x20—\x20'+'the\x20difference\x20is\x20forfeited\x20even\x20on\x20a\x20no-fault\x20cancel.\x20Disclose\x20this\x20to\x20the\x20buyer\x20before\x20checkout.':'⚠\x20Benchmark\x20NOT\x20met\x20(list\x20total\x20'+x+'\x20<\x20'+a7+'):\x20the\x20chain\x20REJECTS\x20this\x20buy\x20when\x20the\x20coupon\x20is\x20attached\x20(error\x2038\x20—\x20full\x20rollback,\x20nothing\x20paid,\x20coupon\x20preserved).\x20Raise\x20the\x20basket\x20to\x20>=\x20'+a7+',\x20or\x20order\x20without\x20the\x20coupon\x20and\x20keep\x20it.'};}const A=balanceStr(h['compensation_fund']??0x0),B=/^\d+$/['test'](A['trim']())?BigInt(A['trim']()):0x0n,C=0x3n*y,D=C>B?C-B:0x0n,E=B/0x3n,F=await displayOf(E['toString'](),k,b),G={'fund_balance':B['toString'](),'fund_balance_display':await displayOf(B['toString'](),k,b),'max_coverable_order':E['toString'](),'max_coverable_order_display':F,'required_for_this_basket':C['toString'](),'required_display':await displayOf(C['toString'](),k,b),'shortfall':D['toString'](),'shortfall_display':await displayOf(D['toString'](),k,b),'covered':B>=C,'note':B===0x0n?'This\x20Service\x20runs\x20WITHOUT\x20a\x20compensation\x20fund\x20—\x20a\x20legitimate\x20merchant\x20choice,\x20never\x20blocked\x20at\x20buy.\x20An\x20arbitration\x20award\x20beyond\x20the\x20pool\x20aborts\x20the\x20buyer\x27s\x20payout\x20(code\x2027,\x20claim\x20NOT\x20consumed)\x20and\x20waits\x20on\x20the\x20merchant\x20wallet.':B>=C?'The\x20fund\x20covers\x203x\x20this\x20basket\x27s\x20amount\x20—\x20a\x20single\x20ruling\x20at\x20the\x20maximum\x20award\x20multiple\x20is\x20payable\x20from\x20the\x20pool.\x20Storefront\x20ceiling:\x20orders\x20above\x20'+F+'\x20(fund/3)\x20are\x20NOT\x20fully\x20covered\x20(they\x20proceed\x20with\x20a\x20buy-time\x20warning)\x20—\x20quote\x20a\x20bigger\x20basket\x20against\x20the\x20ceiling,\x20not\x20just\x20this\x20one.':'BELOW\x20the\x20per-order\x20payout\x20requirement\x20(compensation_fund_below_order_ceiling):\x20the\x20buy\x20still\x20PROCEEDS\x20with\x20a\x20warning\x20—\x20coverage\x20is\x20no\x20longer\x20enforced\x20pre-buy\x20(拍板⑤\x20dm-mtw-261027).\x20Risk\x20to\x20disclose\x20to\x20the\x20buyer\x20BEFORE\x20checkout:\x20if\x20a\x20ruling\x20awards\x20at\x20the\x20cap,\x20settlement\x20is\x20ALL-OR-NOTHING\x20—\x20the\x20claim\x20aborts\x20(code\x2027),\x20nothing\x20is\x20paid,\x20and\x20it\x20waits\x20on\x20the\x20merchant\x20topping\x20up\x20via\x20service.compensation_fund_add\x20by\x20'+await displayOf(D['toString'](),k,b)+'\x20(to\x20>=\x203x\x20this\x20basket).\x20Standing\x20ceiling:\x20orders\x20above\x20'+F+'\x20(fund/3)\x20are\x20not\x20fully\x20covered,\x20so\x20this\x20basket\x20is\x20only\x20the\x20latest\x20casualty\x20—\x20every\x20bigger\x20SKU\x20is\x20under-covered\x20too.'},H=await displayOf(y['toString'](),k,b),I=h['order_allocators'],J=Array['isArray'](I?.['allocators'])?I['allocators']:[],K=J['length']>0x0?J[0x0]:undefined,L=K?{'allocator_index':0x0,'note':'Sharing\x20rows\x20of\x20the\x20FIRST\x20order_allocator\x20(index\x200\x20—\x20NOT\x20necessarily\x20the\x20normal\x20'+'payout\x20path:\x20services\x20that\x20ship\x20refund-first\x20rails\x20put\x20the\x20refund\x20track\x20at\x20index\x200,\x20'+'klk15\x20C-06).\x20Guards\x20select\x20per-case\x20allocators\x20(refund\x20/\x20damage\x20/\x20late-cancel),\x20so\x20'+'the\x20LIVE\x20split\x20depends\x20on\x20which\x20guard\x20passes\x20—\x20identify\x20the\x20settlement\x20allocator\x20'+'via\x20service_panorama\x20before\x20ordering.','sharing':(Array['isArray'](K['sharing'])?K['sharing']:[])['map'](ab=>({'recipient':describeRecipient(ab?.['who']),'mode':typeof ab?.['mode']==='string'?ab['mode']:null,'value':balanceStr(ab?.['sharing']?.['balance']??ab?.['sharing']??0x0)}))}:null,M=Array['isArray'](h['rewards'])?h['rewards']['filter'](ab=>typeof ab==='string'&&ab!==''):[];let N=null;if(M['length']>0x0){const ab=[],ac=[];let ad=[];try{const ae=await query_objects({'objects':M,'network':b});ad=Array['isArray'](ae?.['objects'])?ae['objects']:[];}catch(af){ab['push']('Reward\x20lookup\x20failed\x20('+(af instanceof Error?af['message']:String(af))+')\x20—\x20reward\x20terms\x20NOT\x20verified;\x20do\x20not\x20rely\x20on\x20them.');}for(const ag of M){const ah=ad['find'](ay=>typeof ay?.['object']==='string'&&ay['object']['toLowerCase']()===ag['toLowerCase']());if(!ah){ab['push']('Reward\x20\x27'+ag+'\x27\x20could\x20not\x20be\x20read\x20—\x20its\x20terms\x20are\x20unknown;\x20do\x20not\x20rely\x20on\x20it.');continue;}const ai=balanceStr(ah['balance']??0x0),aj=/^\d+$/['test'](ai)?BigInt(ai):0x0n,ak=[];let al=0x0n,am=![];for(const ay of Array['isArray'](ah['guards'])?ah['guards']:[]){const az=ay?.['amount'],aA=az!=null&&(az['type']===0x1||az['type']==='Fixed'),aB=ay?.['expiration_time'],aC=aB==null?null:Number(aB),aD=aC!=null&&Number['isFinite'](aC)?aC:null;if(aA){const aE=balanceStr(az['value']??0x0),aF=/^\d+$/['test'](aE)?BigInt(aE):0x0n;if(aF>al)al=aF;ak['push']({'guard':String(ay?.['guard']??''),'amount_type':'fixed','amount':aE,'amount_display':await displayOf(aE,k,b),'expiration_time':aD,'expiration_display':aD!=null?new Date(aD)['toISOString']():null,'expired':aD!=null?Date['now']()>aD:null,'min_rating':null,'claim_window':null});}else am=!![],ak['push']({'guard':String(ay?.['guard']??''),'amount_type':'guard_submission','amount':'submission\x20identifier\x20'+String(az?.['value']??'?'),'amount_display':null,'expiration_time':aD,'expiration_display':aD!=null?new Date(aD)['toISOString']():null,'expired':aD!=null?Date['now']()>aD:null,'min_rating':null,'claim_window':null});}const an=Array['from'](new Set(ak['map'](aG=>aG['guard'])['filter'](aG=>aG!==''))),ao=new Map();if(an['length']>0x0)try{const aG=await query_objects({'objects':an,'network':b});for(const aH of Array['isArray'](aG?.['objects'])?aG['objects']:[]){if(typeof aH?.['object']==='string')ao['set'](aH['object']['toLowerCase'](),aH);}}catch{ab['push']('Claim\x20guard\x20lookup\x20failed\x20—\x20rating\x20conditions\x20on\x20'+an['length']+'\x20claim\x20guard(s)\x20NOT\x20verified;\x20do\x20not\x20promise\x20the\x20incentive.');}const ap=(aI,aJ=0x0)=>{if(!aI||typeof aI!=='object'||aJ>0x4)return null;if(aI['root']&&Array['isArray'](aI['table']))return aI;for(const aK of Object['values'](aI)){if(aK&&typeof aK==='object'){const aL=ap(aK,aJ+0x1);if(aL)return aL;}}return null;},aq=(aI,aJ)=>{const aK=aI['table']['find'](aM=>aM?.['identifier']===aJ&&aM?.['b_submission']===![]);if(!aK)return null;const aL=typeof aK['value']==='number'?aK['value']:Number(String(aK['value']??''));return Number['isFinite'](aL)?aL:null;},ar=(aI,aJ,aK=0x0)=>{if(!aI||typeof aI!=='object'||aK>0x18)return null;const aL=typeof aI['type']==='string'?aI['type']:'';if(aL==='logic_as_u256_greater_or_equal'||aL==='logic_as_u256_greater'||aL==='logic_as_u256_equal'){const aM=Array['isArray'](aI['nodes'])?aI['nodes']:[],aN=aM[0x0];if(aM['length']>=0x2&&JSON['stringify'](aN??{})['includes']('repository.data')){const aO=aM[aM['length']-0x1],aP=aO?.['type']==='identifier'?aq(aJ,Number(aO['identifier'])):typeof aO?.['value']==='number'?aO['value']:null;if(aP!=null){const aQ=aL==='logic_as_u256_greater_or_equal'?'>=':aL==='logic_as_u256_greater'?'>':'==';return aQ+'\x20'+aP;}}}for(const aR of Object['values'](aI)){if(Array['isArray'](aR))for(const aS of aR){const aT=ar(aS,aJ,aK+0x1);if(aT)return aT;}else{if(aR&&typeof aR==='object'){const aU=ar(aR,aJ,aK+0x1);if(aU)return aU;}}}return null;};for(const aI of ak){aI['min_rating']=null;const aJ=ao['get'](aI['guard']['toLowerCase']());if(!aJ)continue;{const aO=ap(aJ),aP=aO?parseGuardTimeBounds(aO['root'],aO['table']):null;aP&&(aI['claim_window']={'opens_after_s':aP['lowerOffsetMs']!=null?aP['lowerOffsetMs']/0x3e8:null,'closes_after_s':aP['upperWindowMs']!=null?aP['upperWindowMs']/0x3e8:null,'anchor':aP['anchor']});}let aK;try{aK=JSON['stringify'](aJ,(aQ,aR)=>aR instanceof Uint8Array?Buffer['from'](aR)['toString']('base64'):aR);}catch{continue;}const aL=aK['includes']('\x22rating\x22')||aK['includes']('114,97,116,105,110,103')||aK['toLowerCase']()['includes']('726174696e67')||aK['includes']('cmF0aW5n');if(!aL)continue;const aM=ap(aJ),aN=aM?ar(aM['root'],aM):null;if(aN)aI['min_rating']=aN;else{const aQ=aK['toLowerCase']();if(aQ['includes']('\x22like\x22'))aI['min_rating']='like';else{if(aQ['includes']('\x22dislike\x22'))aI['min_rating']='dislike';else aI['min_rating']='unknown';}}}let as='';if(al>0x0n&&n>0x0n){const aR=Number(al)/Number(n);Number['isFinite'](aR)&&(as='\x20Bounty/cheapest-SKU\x20price\x20ratio:\x20'+aR['toFixed'](0x2)+'x\x20'+('('+await displayOf(al['toString'](),k,b)+'\x20vs\x20')+(await displayOf(n['toString'](),k,b)+').')+(aR>0.5?'\x20⚠\x20SCALE\x20(T-02):\x20each\x20claimed\x20order\x20pays\x20out\x20MORE\x20than\x20the\x20cheapest\x20sale\x20earns\x20—\x20a\x20bounty-farm\x20shape;\x20a\x20sybil\x20can\x20mint\x20cheap\x20orders\x20and\x20drain\x20this\x20pool.\x20Rebalance\x20the\x20bounty\x20or\x20the\x20catalog\x20before\x20funding.':''));}const at=aj===0x0n?'Pool\x20is\x20EMPTY\x20—\x20any\x20claim\x20aborts\x20on-chain\x20on\x20the\x20reward\x20module\x27s\x20E_INSUFFICIENT_BALANCE\x20(not\x20the\x20allocation\x20module\x27s\x20same-named\x20constant);\x20do\x20not\x20budget\x20on\x20this\x20reward.':am||al===0x0n?null:'Pool\x20covers\x20~'+(aj/al)['toString']()+'\x20further\x20claim(s)\x20at\x20the\x20largest\x20configured\x20per-claim\x20amount.'+as,au=Array['isArray'](ah['guards'])?ah['guards']:[],av=au['filter'](aS=>aS?.['store_from_id']!=null)['map'](aS=>Number(aS['store_from_id'])),aw=((()=>{if(au['length']===0x0)return{'scope':'unknown','detail':'No\x20mounted\x20guard\x20entry\x20was\x20readable,\x20so\x20the\x20claim\x20scope\x20could\x20not\x20be\x20determined\x20—\x20do\x20not\x20assume\x20a\x20per-order\x20bounty.','per_order_note':PER_ORDER_REPLAY_NOTE};if(av['length']===au['length']&&av['every'](aS=>aS===0x0))return{'scope':'once_per_order','detail':'Every\x20claim\x20entry\x20stamps\x20store_from_id=0\x20(the\x20conventional\x20submitted-Order\x20slot):\x20claims\x20are\x20keyed\x20per\x20(recipient,\x20guard,\x20order)\x20—\x20the\x20same\x20buyer\x20can\x20claim\x20again\x20on\x20a\x20NEW\x20order,\x20never\x20twice\x20on\x20the\x20same\x20one\x20(a\x20replay\x20aborts\x2013,\x20E_CLAIM_ALREADY_MADE).','per_order_note':PER_ORDER_REPLAY_NOTE};if(av['length']===au['length'])return{'scope':'once_per_stamp','detail':'Every\x20claim\x20entry\x20carries\x20a\x20store_from_id\x20stamp,\x20but\x20not\x20the\x20conventional\x20Order\x20slot\x200\x20(slots:\x20'+av['join'](',\x20')+'):\x20claims\x20are\x20keyed\x20per\x20(recipient,\x20guard,\x20stamped\x20value)\x20—\x20per-ORDER\x20only\x20when\x20that\x20slot\x20is\x20the\x20submitted\x20Order.','per_order_note':PER_ORDER_REPLAY_NOTE};if(av['length']===0x0)return{'scope':'once_per_recipient_guard','detail':'Every\x20claim\x20entry\x20has\x20an\x20EMPTY\x20store_from\x20slot:\x20ONE\x20claim\x20per\x20(recipient,\x20guard)\x20for\x20LIFE\x20—\x20the\x20same\x20buyer\x27s\x20second\x20order\x20claims\x20nothing\x20(abort\x2013,\x20E_CLAIM_ALREADY_MADE),\x20even\x20when\x20the\x20bounty\x20is\x20described\x20as\x20per-order.','per_order_note':PER_ORDER_REPLAY_NOTE};return{'scope':'mixed','detail':av['length']+'\x20of\x20'+au['length']+'\x20claim\x20entries\x20carry\x20a\x20store_from_id\x20stamp\x20—\x20those\x20are\x20per-stamp\x20scoped;\x20the\x20remaining\x20entries\x20are\x20once\x20per\x20(recipient,\x20guard)\x20for\x20life.\x20Read\x20each\x20claims[]\x20row.','per_order_note':PER_ORDER_REPLAY_NOTE};})()),ax=ak['filter'](aS=>aS['min_rating']==='unknown')['length'];ax>0x0&&ab['push'](ax+'\x20claim(s)\x20gate\x20on\x20a\x20rating\x20condition\x20whose\x20polarity\x20could\x20not\x20be\x20parsed\x20'+'(min_rating=unknown)\x20—\x20read\x20the\x20claim\x20guard\x20before\x20promising\x20this\x20incentive\x20to\x20the\x20buyer'),ac['push']({'reward':ag,'description':typeof ah['description']==='string'?ah['description']:null,'pool_balance':aj['toString'](),'pool_balance_display':await displayOf(aj['toString'](),k,b),'record_count':Number['isFinite'](Number(ah['record_count']))?Number(ah['record_count']):0x0,'claims':ak,'replay_scope':aw,'coverage':at});}N={'note':'Pre-order\x20reward\x20terms\x20for\x20every\x20Reward\x20hung\x20on\x20this\x20Service\x20(bound\x20at\x20build\x20time):\x20pool\x20balance,\x20'+'per-claim\x20amount\x20and\x20claim\x20windows.\x20A\x20claim\x20aborts\x20after\x20its\x20window\x20(E_GUARD_EXPIRED)\x20or\x20'+'against\x20an\x20empty\x20pool\x20(E_INSUFFICIENT_BALANCE)\x20—\x20never\x20budget\x20on\x20an\x20expired\x20or\x20empty\x20'+'reward.\x20Claiming\x20requires\x20passing\x20the\x20claim\x20guard\x27s\x20conditions.','rewards':ac,'data_gaps':ab};}let O=null;try{const aS=await LocalMark['Instance']()['list']({'address':d});O=aS?.[0x0]?.['name']??null;}catch{O=null;}return{'action':'service_quote','network':String(b),'service':{'address':d,'name':O},'paused':q,'payment_token':{'coin_type':k,'display_note':k?'Prices\x20and\x20the\x20order\x20total\x20are\x20denominated\x20in\x20this\x20token\x27s\x20smallest\x20units;\x20displays\x20convert\x20with\x20the\x20token\x27s\x20on-chain\x20precision.':'Payment\x20token\x20could\x20not\x20be\x20parsed\x20from\x20the\x20Service\x20type\x20—\x20raw\x20smallest\x20units\x20only,\x20precision\x20NOT\x20guessed.'},'items':w,'total_pay':{'balance':y['toString'](),'display':H,'note':(q?'⚠\x20SERVICE\x20PAUSED\x20(bs29\x20R-16):\x20this\x20Service\x20is\x20currently\x20paused\x20—\x20every\x20buy\x20is\x20refused\x20'+'(client\x20pre-buy\x20gate,\x20then\x20the\x20on-chain\x20E_PAUSED\x20assert,\x20service.move:526)\x20while\x20the\x20pause\x20'+'stands,\x20and\x20there\x20is\x20NO\x20on-chain\x20scheduled\x20resume:\x20the\x20merchant\x20must\x20submit\x20pause:false.\x20'+'The\x20prices\x20below\x20are\x20reference\x20only.\x20':'')+(y===0x0n?'DEAD\x20BASKET\x20(F-BS-75):\x20this\x20quote\x20totals\x20ZERO\x20—\x20the\x20chain\x20REFUSES\x20zero-total\x20buys\x20(client\x20'+'order_new_zero_total_dead_order,\x20on-chain\x20abort\x2042),\x20so\x20this\x20basket\x20cannot\x20be\x20purchased\x20at\x20'+'all.\x20Either\x20the\x20basket\x20contains\x20a\x20zero-priced\x20SKU\x20(permanently\x20unbuyable\x20—\x20F-BS-76;\x20the\x20'+'merchant\x20must\x20reprice\x20it\x20to\x20>=\x201\x20smallest\x20unit)\x20or\x20a\x20coupon\x20zeroes\x20it\x20(lower\x20the\x20coupon\x20'+'value).\x20Do\x20NOT\x20attempt\x20the\x20buy.\x20allow_zero_total\x20waives\x20nothing\x20(BSX-F07).':z?.['applied']?'FLOOR\x20semantics\x20(bs29\x20R-17,\x20service.move:480-481):\x20order_new.buy.total_pay.balance\x20must\x20be\x20>=\x20'+'this\x20discounted\x20total\x20—\x20an\x20under-funded\x20total\x20aborts\x20(E_COIN_NOT_ENOUGH);\x20an\x20over-funded\x20one\x20'+'succeeds\x20but\x20the\x20ORDER\x20still\x20escrows\x20exactly\x20this\x20amount\x20(the\x20excess\x20is\x20split\x20back,\x20never\x20'+'escrowed).\x20Pass\x20exactly\x20this\x20value.\x20The\x20on-chain\x20buy\x20aborts\x20only\x20on\x20an\x20UNDER-funded\x20total;\x20'+'the\x20coupon\x20is\x20consumed\x20at\x20buy.':'FLOOR\x20semantics\x20(bs29\x20R-17,\x20service.move:480-481):\x20order_new.buy.total_pay.balance\x20must\x20be\x20>=\x20'+'this\x20total\x20—\x20an\x20under-funded\x20total\x20aborts\x20(E_COIN_NOT_ENOUGH);\x20an\x20over-funded\x20one\x20'+'succeeds\x20but\x20the\x20ORDER\x20still\x20escrows\x20exactly\x20Σ(unit_price\x20×\x20quantity)\x20—\x20the\x20excess\x20is\x20split\x20'+'back\x20to\x20the\x20payer\x20and\x20never\x20enters\x20the\x20escrow.\x20WITHOUT\x20a\x20discount\x20you\x20may\x20also\x20omit\x20'+'total_pay\x20entirely:\x20the\x20buy\x20auto-derives\x20this\x20exact\x20total\x20(M-K17).')},'discount':z,'allocation_preview':L,'compensation_fund_coverage':G,'reward_terms':N};}
1
+ import{Config,LocalMark,query_objects,query_serviceContext,queryTableItem_RepositoryData}from'@wowok/wowok';import{resolveAddress as a433a}from'../../tools/handlers/name-resolution.js';import{parseGuardTimeBounds}from'../../knowledge/guard-anchor-reach.js';import{lineBuyability,skuNameGateNote}from'../../knowledge/sku-name-gate.js';import{formatMoneyAnnotation}from'./facet-money.js';const balanceStr=a=>a===null||a===undefined?'0':typeof a==='bigint'?a['toString']():String(a);async function displayOf(a,b,c){try{return(await formatMoneyAnnotation(a,b,c))['display'];}catch{return a;}}function describeRecipient(a){if(typeof a==='string')return a;if(a&&typeof a==='object'){const b=a;if('GuardIdentifier'in b)return'submission\x20slot\x20'+String(b['GuardIdentifier']);if('Entity'in b){const c=b['Entity'],d=c&&typeof c==='object'?c['name_or_address']:c;return d===''?'Entity(\x22\x22)\x20—\x20MCP\x20default\x20local\x20account':'Entity:'+String(d);}return JSON['stringify'](a);}return'unknown';}const PER_ORDER_REPLAY_NOTE='A\x20per-order\x20replay\x20on\x20the\x20reward\x20PULL\x20rail\x20needs\x20BOTH\x20a\x20guard_add\x20store_from_id\x20stamp\x20on\x20the\x20'+'submitted-Order\x20slot\x20(0\x20by\x20convention)\x20AND\x20an\x20order-scoped\x20where:{storeFromId:{identifier:<same\x20slot>}}\x20'+'record\x20gate\x20in\x20the\x20claim\x20guard\x20(SV-2).\x20For\x20a\x20per-order\x20once\x20the\x20CHAIN\x20enforces\x20regardless\x20of\x20guard-tree\x20'+'mistakes,\x20route\x20the\x20incentive\x20through\x20an\x20Allocation\x20leg\x20declaring\x20protocol\x20slot\x20254\x20(the\x20once\x20key\x20derives\x20'+'on-chain\x20from\x20bcs(payment_info.for_object);\x20a\x20second\x20alloc\x20aborts\x2016,\x20E_ONCE_TRIGGERED).',quoteOwnerAddr=a=>{if(typeof a==='string')return a;const b=a;if(b&&typeof b==='object'){if(typeof b['AddressOwner']==='string')return b['AddressOwner'];if(typeof b['ObjectOwner']==='string')return b['ObjectOwner'];const c=Object['values'](b)['find'](d=>typeof d==='string'&&d['length']>0x14);if(typeof c==='string')return c;}return null;};export async function handleServiceQuote(a){const b=a['context_network']??undefined??await Config['Instance']()['network_get'](),d=await a433a(a['object_address']??a['service_address']??'','object_address\x20(or\x20service_address)'),f=await query_serviceContext({'service':d,'network':b}),h=f['service'];if(!h)throw new Error('Service\x20\x27'+a['service_address']+'\x27\x20not\x20found\x20on\x20network\x20'+b+'.');const i=h?.['type_raw']??h?.['type']??'',j=i['match'](/<(.+)>$/),k=j?j[0x1]:null,l=Array['isArray'](h['sales'])?h['sales']:[],m=new Map();for(const a2 of l){if(!a2||typeof a2['name']!=='string')continue;const a3=a2['stock']?.['balance']??a2['stock'];m['set'](a2['name'],{'price':balanceStr(a2['price']?.['balance']??a2['price']??0x0),'suspended':a2['suspension']===!![],'stock':a3==null?null:balanceStr(a3),'wip':typeof a2['wip']==='string'&&a2['wip']!==''?a2['wip']:null});}let n=0x0n;for(const a4 of m['values']()){const a5=/^\d+$/['test'](a4['price'])?BigInt(a4['price']):0x0n;a5>0x0n&&(n===0x0n||a5<n)&&(n=a5);}const q=h['paused']===!![]||h['bPaused']===!![],t=async()=>{try{const a6=h['buy_guard'];if(typeof a6!=='string'||!/^0x[0-9a-fA-F]{40,64}$/['test'](a6))return null;const a7=await query_objects({'objects':[a6],'network':b}),a8=Array['isArray'](a7?.['objects'])?a7['objects'][0x0]:null,a9=(ao,ap=0x0)=>{if(!ao||typeof ao!=='object'||ap>0x4)return null;if(ao['root']&&Array['isArray'](ao['table']))return ao;for(const aq of Object['values'](ao)){if(aq&&typeof aq==='object'){const ar=a9(aq,ap+0x1);if(ar)return ar;}}return null;},aa=a9(a8);if(!aa)return null;const ab=ao=>Array['isArray'](aa['table'])?aa['table']['find'](ap=>ap?.['identifier']===ao&&ap?.['b_submission']===![])??null:null,ac=(ao,ap=0x0)=>{if(!ao||typeof ao!=='object'||ap>0xc)return null;if(ao['type']==='logic_as_u256_lesser_or_equal'&&Array['isArray'](ao['nodes'])&&ao['nodes']['some'](aq=>aq?.['type']==='context'&&aq?.['context']==='Clock')){const aq=ao['nodes']['find'](ar=>ar?.['type']==='query'&&ar?.['query']==='repository.data');if(aq)return aq;}for(const ar of Object['values'](ao)){if(ar&&typeof ar==='object'){const as=ac(ar,ap+0x1);if(as)return as;}}return null;},ad=ac(aa['root']);if(!ad)return null;const ae=ab(ad['parameters']?.[0x0]?.['identifier']);if(!ae||ae['value']!=='next_cycle_deadline')return null;const af=ab(ad['object']?.['identifier']),ag=ab(ad['parameters']?.[0x1]?.['identifier']);if(!af||!ag)return null;const ah=typeof af['value']==='string'?af['value']:String(af['value']??'');if(!ah)return null;const ai=ag['value'],aj=typeof ai==='number'&&Number['isFinite'](ai)?BigInt(Math['trunc'](ai)):typeof ai==='string'&&/^\d+$/['test'](ai)?BigInt(ai):typeof ai==='string'&&ai!==''?ai:null;if(aj===null)return null;const ak=await queryTableItem_RepositoryData({'parent':ah,'name':'next_cycle_deadline','entity':aj,'network':b});if(ak===undefined)return{'closed':!![],'deadlineMs':null,'note':'the\x20campaign\x20window\x20row\x20(next_cycle_deadline)\x20is\x20NOT\x20seeded\x20—\x20the\x20mounted\x20buy\x20window\x20'+'reads\x200\x20and\x20Clock\x20<=\x200\x20is\x20false,\x20so\x20the\x20chain\x20refuses\x20EVERY\x20order\x20until\x20the\x20merchant\x20'+'seeds\x20the\x20row\x20(fail-closed,\x20W5-22)'};const al=ao=>{const ap=ao?.['data']?.['value']??ao?.['value'];try{if(typeof ap==='bigint')return ap;if(typeof ap==='number'&&Number['isFinite'](ap))return BigInt(Math['trunc'](ap));if(typeof ap==='string'&&/^\d+$/['test'](ap['trim']()))return BigInt(ap['trim']());if(ap instanceof Uint8Array&&(ap['length']===0x8||ap['length']===0x20)){let aq=0x0n;for(let ar=ap['length']-0x1;ar>=0x0;ar--)aq=aq<<0x8n|BigInt(ap[ar]);return aq;}}catch{}return null;},am=al(ak);if(am===null||am<=0x0n)return null;const an=Date['now']()>am;return{'closed':an,'deadlineMs':am['toString'](),'note':an?'the\x20campaign\x20window\x20closed\x20at\x20epoch-ms\x20'+am+'\x20('+new Date(Number(am))['toISOString']()+')\x20—\x20'+'order_new\x20aborts\x20at\x20the\x20buy\x20guard;\x20the\x20merchant\x20re-opens\x20by\x20rolling\x20the\x20'+'next_cycle_deadline\x20row\x20forward\x20(tpl_buy_guard_campaign_window)':'the\x20campaign\x20window\x20is\x20OPEN\x20until\x20epoch-ms\x20'+am+'\x20('+new Date(Number(am))['toISOString']()+')'};}catch{return null;}},u=await t(),w=a['items']??[...m['keys']()]['map'](a6=>({'name':a6,'quantity':0x1})),x=w['filter'](a6=>!m['has'](a6['name']));if(x['length']>0x0)throw new Error('Sale(s)\x20not\x20found\x20on\x20this\x20Service:\x20'+x['map'](a6=>'\x27'+a6['name']+'\x27')['join'](',\x20')+'.\x20'+('Available\x20sales:\x20'+([...m['keys']()]['map'](a6=>'\x27'+a6+'\x27')['join'](',\x20')||'<none>')+'.'));if(w['length']===0x0)throw new Error('This\x20Service\x20has\x20NO\x20configured\x20sales\x20—\x20nothing\x20to\x20quote.');const y=[];let z=0x0n;for(const a6 of w){const a7=m['get'](a6['name']),a8=BigInt(a7['price']||'0'),a9=a8*BigInt(a6['quantity']);z+=a9;const aa=a7['stock']!=null&&/^\d+$/['test'](a7['stock'])?BigInt(a7['stock']):null,ab=lineBuyability(a6['name'],[...a7['suspended']?['sale\x20is\x20suspended\x20(merchant\x20sale_suspension)']:[],...aa!=null&&aa<BigInt(a6['quantity'])?['stock\x20'+a7['stock']+'\x20<\x20requested\x20quantity\x20'+a6['quantity']]:[],...u?.['closed']?['CAMPAIGN_CLOSED\x20—\x20the\x20storefront\x20deadline\x20window\x20has\x20closed\x20(or\x20is\x20unseeded)']:[]],aa!=null);y['push']({'name':a6['name'],'quantity':a6['quantity'],'unit_price':a7['price'],'unit_price_display':await displayOf(a7['price'],k,b),'line_total':a9['toString'](),'suspended':a7['suspended'],'stock':a7['stock'],'stock_ok':aa==null?null:aa>=BigInt(a6['quantity']),'buyable':ab['buyable'],'buyable_blockers':ab['blockers'],'wip':a7['wip']});}let A=z,B=null;if(typeof a['discount']==='string'&&a['discount']['trim']()!==''){const ac=await a433a(a['discount'],'discount');let ad=null;try{const aq=await query_objects({'objects':[ac],'network':b});ad=aq?.['objects']?.[0x0]??null;}catch{ad=null;}if(!ad)throw new Error('E_DISCOUNT_NOT_FOUND:\x20coupon\x20\x27'+ac+'\x27\x20not\x20found\x20—\x20it\x20was\x20already\x20burned\x20on\x20a\x20'+'previous\x20buy\x20(a\x20burned\x20coupon\x20is\x20destroyed\x20on\x20chain\x20and\x20cannot\x20be\x20quoted\x20again)\x20'+'or\x20the\x20address\x20is\x20wrong.\x20Re-quote\x20without\x20the\x20coupon.');const ae=String(ad['service']??'');if(ae['toLowerCase']()!==d['toLowerCase']())throw new Error('E_SERVICE_DISCOUNT_NOT_MATCH:\x20coupon\x20\x27'+ac+'\x27\x20is\x20bound\x20to\x20service\x20'+((ae||'<unparseable>')+',\x20not\x20to\x20'+d+'.\x20A\x20buy\x20with\x20this\x20coupon\x20aborts.'));const af=ar=>{const as=balanceStr(ar)['trim']();return/^\d+$/['test'](as)?BigInt(as):0x0n;},ag=BigInt(Date['now']()),ah=af(ad['time_start']),ai=af(ad['time_end']);if(ag<ah||ag>ai)throw new Error('E_DISCOUNT_TIME_INVALID:\x20coupon\x20\x27'+ac+'\x27\x20is\x20valid\x20'+(ah+'–'+ai+'\x20(ms\x20epoch),\x20now\x20is\x20'+ag+'.\x20A\x20buy\x20with\x20this\x20coupon\x20aborts.'));const aj=Number(ad['discount_type'])===0x0,ak=af(ad['off']),al=quoteOwnerAddr(ad['owner']),am=al?'Coupon\x20is\x20owned\x20by\x20'+al+';\x20only\x20the\x20holder\x20can\x20redeem\x20it\x20—\x20a\x20coupon\x20held\x20by\x20another\x20address\x20cannot\x20be\x20applied\x20to\x20your\x20order,\x20have\x20the\x20owner\x20transfer\x20it\x20first\x20(call\x20service\x20discount_send).\x20Refunds\x20settle\x20the\x20post-coupon\x20amount\x20only.':'Coupon\x20holder\x20could\x20not\x20be\x20read\x20from\x20the\x20chain\x20—\x20VERIFY\x20the\x20holder\x20before\x20checkout:\x20only\x20the\x20holder\x20can\x20redeem,\x20a\x20coupon\x20held\x20by\x20another\x20address\x20cannot\x20be\x20applied\x20to\x20your\x20order\x20(have\x20the\x20owner\x20transfer\x20it\x20first\x20via\x20call\x20service\x20discount_send),\x20and\x20refunds\x20settle\x20the\x20post-coupon\x20amount\x20only.',an=ad['benchmark']===null||ad['benchmark']===undefined?null:af(ad['benchmark']),ao=an===null?!![]:z>=an;let ap=![];ao&&(ap=!![],A=aj?z-z*ak/0x2710n:z>ak?z-ak:0x0n),B={'coupon':ac,'name':typeof ad['name']==='string'?ad['name']:null,'owned_by':al,'ownership_note':am,'type':aj?'rates':'minus','off':ak['toString'](),'benchmark':an===null?null:an['toString'](),'benchmark_met':ao,'applied':ap,'list_total':z['toString'](),'final_total':A['toString'](),'final_total_display':await displayOf(A['toString'](),k,b),'note':ap?A===0x0n?'DEAD\x20BASKET\x20(F-BS-75):\x20the\x20coupon\x20covers\x20the\x20entire\x20basket,\x20but\x20the\x20chain\x20REFUSES\x20zero-total\x20'+'buys\x20—\x20the\x20client\x20gate\x20(order_new_zero_total_dead_order)\x20and\x20the\x20on-chain\x20zero-total\x20gate\x20'+'(abort\x2042)\x20both\x20reject\x20this\x20buy;\x20NOTHING\x20is\x20purchasable\x20at\x20total\x200,\x20free\x20product\x20or\x20not.\x20'+'Lower\x20the\x20coupon\x20value\x20so\x20the\x20final\x20total\x20stays\x20>=\x201\x20smallest\x20unit\x20(or\x20price\x20a\x20deliberate\x20'+'free\x20tier\x20at\x201\x20smallest\x20unit,\x20or\x20deliver\x20it\x20outside\x20the\x20sales\x20rails).\x20allow_zero_total\x20does\x20'+'NOT\x20unlock\x20this\x20buy\x20and\x20no\x20longer\x20waives\x20the\x20issuance\x20gate\x20either\x20(BSX-F07).':'Discounted\x20total\x20shown\x20—\x20order_new.buy.total_pay.balance\x20must\x20be\x20>=\x20this\x20final_total\x20(bs29\x20R-17:\x20total_pay\x20is\x20a\x20FLOOR;\x20the\x20order\x20escrows\x20exactly\x20this\x20amount,\x20an\x20over-funded\x20total\x20is\x20never\x20escrowed).\x20Pass\x20exactly\x20this\x20value;\x20the\x20coupon\x20is\x20consumed\x20at\x20buy.\x20'+'BURN-ON-USE\x20(F-ETS-03):\x20attaching\x20this\x20coupon\x20to\x20a\x20buy\x20DESTROYS\x20it\x20on\x20chain\x20—\x20the\x20coupon\x20'+'object\x20is\x20gone\x20once\x20the\x20order\x20is\x20created\x20(a\x20later\x20quote\x20hits\x20E_DISCOUNT_NOT_FOUND).\x20'+'CANCELLATION\x20REFUNDS\x20THE\x20DISCOUNTED\x20AMOUNT\x20ONLY:\x20refund\x20rails\x20pay\x20the\x20order\x27s\x20escrowed\x20'+'amount\x20(this\x20final_total),\x20so\x20a\x20cancelled\x20order\x20does\x20NOT\x20restore\x20the\x20coupon\x27s\x20face\x20value\x20—\x20'+'the\x20difference\x20is\x20forfeited\x20even\x20on\x20a\x20no-fault\x20cancel.\x20Disclose\x20this\x20to\x20the\x20buyer\x20before\x20checkout.':'⚠\x20Benchmark\x20NOT\x20met\x20(list\x20total\x20'+z+'\x20<\x20'+an+'):\x20the\x20chain\x20REJECTS\x20this\x20buy\x20when\x20the\x20coupon\x20is\x20attached\x20(error\x2038\x20—\x20full\x20rollback,\x20nothing\x20paid,\x20coupon\x20preserved).\x20Raise\x20the\x20basket\x20to\x20>=\x20'+an+',\x20or\x20order\x20without\x20the\x20coupon\x20and\x20keep\x20it.'};}const C=balanceStr(h['compensation_fund']??0x0),D=/^\d+$/['test'](C['trim']())?BigInt(C['trim']()):0x0n,E=0x3n*A,F=E>D?E-D:0x0n,G=D/0x3n,H=await displayOf(G['toString'](),k,b),I={'fund_balance':D['toString'](),'fund_balance_display':await displayOf(D['toString'](),k,b),'max_coverable_order':G['toString'](),'max_coverable_order_display':H,'required_for_this_basket':E['toString'](),'required_display':await displayOf(E['toString'](),k,b),'shortfall':F['toString'](),'shortfall_display':await displayOf(F['toString'](),k,b),'covered':D>=E,'note':D===0x0n?'This\x20Service\x20runs\x20WITHOUT\x20a\x20compensation\x20fund\x20—\x20a\x20legitimate\x20merchant\x20choice,\x20never\x20blocked\x20at\x20buy.\x20An\x20arbitration\x20award\x20beyond\x20the\x20pool\x20aborts\x20the\x20buyer\x27s\x20payout\x20(code\x2027,\x20claim\x20NOT\x20consumed)\x20and\x20waits\x20on\x20the\x20merchant\x20wallet.':D>=E?'The\x20fund\x20covers\x203x\x20this\x20basket\x27s\x20amount\x20—\x20a\x20single\x20ruling\x20at\x20the\x20maximum\x20award\x20multiple\x20is\x20payable\x20from\x20the\x20pool.\x20Storefront\x20ceiling:\x20orders\x20above\x20'+H+'\x20(fund/3)\x20are\x20NOT\x20fully\x20covered\x20(they\x20proceed\x20with\x20a\x20buy-time\x20warning)\x20—\x20quote\x20a\x20bigger\x20basket\x20against\x20the\x20ceiling,\x20not\x20just\x20this\x20one.':'BELOW\x20the\x20per-order\x20payout\x20requirement\x20(compensation_fund_below_order_ceiling):\x20the\x20buy\x20still\x20PROCEEDS\x20with\x20a\x20warning\x20—\x20coverage\x20is\x20no\x20longer\x20enforced\x20pre-buy\x20(拍板⑤\x20dm-mtw-261027).\x20Risk\x20to\x20disclose\x20to\x20the\x20buyer\x20BEFORE\x20checkout:\x20if\x20a\x20ruling\x20awards\x20at\x20the\x20cap,\x20settlement\x20is\x20ALL-OR-NOTHING\x20—\x20the\x20claim\x20aborts\x20(code\x2027),\x20nothing\x20is\x20paid,\x20and\x20it\x20waits\x20on\x20the\x20merchant\x20topping\x20up\x20via\x20service.compensation_fund_add\x20by\x20'+await displayOf(F['toString'](),k,b)+'\x20(to\x20>=\x203x\x20this\x20basket).\x20Standing\x20ceiling:\x20orders\x20above\x20'+H+'\x20(fund/3)\x20are\x20not\x20fully\x20covered,\x20so\x20this\x20basket\x20is\x20only\x20the\x20latest\x20casualty\x20—\x20every\x20bigger\x20SKU\x20is\x20under-covered\x20too.'},J=await displayOf(A['toString'](),k,b),K=h['order_allocators'],L=Array['isArray'](K?.['allocators'])?K['allocators']:[],M=L['length']>0x0?L[0x0]:undefined,N=M?{'allocator_index':0x0,'note':'Sharing\x20rows\x20of\x20the\x20FIRST\x20order_allocator\x20(index\x200\x20—\x20NOT\x20necessarily\x20the\x20normal\x20'+'payout\x20path:\x20services\x20that\x20ship\x20refund-first\x20rails\x20put\x20the\x20refund\x20track\x20at\x20index\x200,\x20'+'klk15\x20C-06).\x20Guards\x20select\x20per-case\x20allocators\x20(refund\x20/\x20damage\x20/\x20late-cancel),\x20so\x20'+'the\x20LIVE\x20split\x20depends\x20on\x20which\x20guard\x20passes\x20—\x20identify\x20the\x20settlement\x20allocator\x20'+'via\x20service_panorama\x20before\x20ordering.','sharing':(Array['isArray'](M['sharing'])?M['sharing']:[])['map'](ar=>({'recipient':describeRecipient(ar?.['who']),'mode':typeof ar?.['mode']==='string'?ar['mode']:null,'value':balanceStr(ar?.['sharing']?.['balance']??ar?.['sharing']??0x0)}))}:null,O=Array['isArray'](h['rewards'])?h['rewards']['filter'](ar=>typeof ar==='string'&&ar!==''):[];let P=null;if(O['length']>0x0){const ar=[],as=[];let at=[];try{const au=await query_objects({'objects':O,'network':b});at=Array['isArray'](au?.['objects'])?au['objects']:[];}catch(av){ar['push']('Reward\x20lookup\x20failed\x20('+(av instanceof Error?av['message']:String(av))+')\x20—\x20reward\x20terms\x20NOT\x20verified;\x20do\x20not\x20rely\x20on\x20them.');}for(const aw of O){const ax=at['find'](b2=>typeof b2?.['object']==='string'&&b2['object']['toLowerCase']()===aw['toLowerCase']());if(!ax){ar['push']('Reward\x20\x27'+aw+'\x27\x20could\x20not\x20be\x20read\x20—\x20its\x20terms\x20are\x20unknown;\x20do\x20not\x20rely\x20on\x20it.');continue;}const ay=balanceStr(ax['balance']??0x0),az=/^\d+$/['test'](ay)?BigInt(ay):0x0n,aA=[];let aB=0x0n,aC=![];for(const b2 of Array['isArray'](ax['guards'])?ax['guards']:[]){const b3=b2?.['amount'],b4=b3!=null&&(b3['type']===0x1||b3['type']==='Fixed'),b5=b2?.['expiration_time'],b6=b5==null?null:Number(b5),b7=b6!=null&&Number['isFinite'](b6)?b6:null;if(b4){const b8=balanceStr(b3['value']??0x0),b9=/^\d+$/['test'](b8)?BigInt(b8):0x0n;if(b9>aB)aB=b9;aA['push']({'guard':String(b2?.['guard']??''),'amount_type':'fixed','amount':b8,'amount_display':await displayOf(b8,k,b),'expiration_time':b7,'expiration_display':b7!=null?new Date(b7)['toISOString']():null,'expired':b7!=null?Date['now']()>b7:null,'min_rating':null,'min_rows':null,'unreadable_legs':null,'claim_window':null,'claim_state':'unknown','claim_state_note':'Not\x20decoded\x20yet.'});}else aC=!![],aA['push']({'guard':String(b2?.['guard']??''),'amount_type':'guard_submission','amount':'submission\x20identifier\x20'+String(b3?.['value']??'?'),'amount_display':null,'expiration_time':b7,'expiration_display':b7!=null?new Date(b7)['toISOString']():null,'expired':b7!=null?Date['now']()>b7:null,'min_rating':null,'min_rows':null,'unreadable_legs':null,'claim_window':null,'claim_state':'unknown','claim_state_note':'Not\x20decoded\x20yet.'});}const aD=Array['from'](new Set(aA['map'](ba=>ba['guard'])['filter'](ba=>ba!==''))),aE=new Map();if(aD['length']>0x0)try{const ba=await query_objects({'objects':aD,'network':b});for(const bb of Array['isArray'](ba?.['objects'])?ba['objects']:[]){if(typeof bb?.['object']==='string')aE['set'](bb['object']['toLowerCase'](),bb);}}catch{ar['push']('Claim\x20guard\x20lookup\x20failed\x20—\x20rating\x20conditions\x20on\x20'+aD['length']+'\x20claim\x20guard(s)\x20NOT\x20verified;\x20do\x20not\x20promise\x20the\x20incentive.');}const aF=(bc,bd=0x0)=>{if(!bc||typeof bc!=='object'||bd>0x4)return null;if(bc['root']&&Array['isArray'](bc['table']))return bc;for(const be of Object['values'](bc)){if(be&&typeof be==='object'){const bf=aF(be,bd+0x1);if(bf)return bf;}}return null;},aG=bc=>{if(bc>=0x15180&&bc%0x15180===0x0)return bc/0x15180+'\x20day(s)';if(bc>=0xe10&&bc%0xe10===0x0)return bc/0xe10+'\x20hour(s)';return bc+'\x20seconds';},aH=(bc,bd)=>{const be=bc['table']['find'](bg=>bg?.['identifier']===bd&&bg?.['b_submission']===![]);if(!be)return null;const bf=typeof be['value']==='number'?be['value']:Number(String(be['value']??''));return Number['isFinite'](bf)?bf:null;},aI=/^query_repository_data_(count|find|sum)(?:_bound)?_where$/,aJ=bc=>{if(!bc||typeof bc!=='object')return null;const bd=be=>{const bf=typeof be==='number'?be:Number(String(be??''));return Number['isFinite'](bf)?bf:null;};switch(bc['kind']){case'gte':{const be=bd(bc['value']);return be!=null?'>=\x20'+be:null;}case'gt':{const bf=bd(bc['value']);return bf!=null?'>\x20'+bf:null;}case'numEq':{const bg=bd(bc['value']);return bg!=null?'==\x20'+bg:null;}case'range':{const bh=bd(bc['valueMin']);if(bh!=null)return bc['minInclusive']===![]?'>\x20'+bh:'>=\x20'+bh;const bi=bd(bc['valueMax']);if(bi!=null)return bc['maxInclusive']===![]?'<\x20'+bi:'<=\x20'+bi;return null;}default:return null;}},aK=bc=>{const bd=[],be=(bf,bg)=>{if(!bf||typeof bf!=='object'||bg>0x18)return;const bh=typeof bf['type']==='string'?bf['type']:'';if(bh['startsWith']('vec_contains')){const bi=JSON['stringify'](bf),bj=bi['includes']('find_where')||bi['includes']('1176');bd['push'](bj?bh+'[repository\x20find_where\x20membership\x20read]\x20—\x20set-membership\x20gate\x20over\x20found\x20rows;\x20not\x20statically\x20decodable,\x20evaluated\x20only\x20on\x20chain\x20at\x20claim\x20time':bh+'\x20membership\x20gate\x20—\x20not\x20statically\x20decodable,\x20evaluated\x20only\x20on\x20chain\x20at\x20claim\x20time');return;}else bh==='query'&&typeof bf['query']==='string'&&bf['query']['includes']('find_where')&&bd['push']('query\x20'+bf['query']+'\x20—\x20repository\x20find_where\x20read\x20feeding\x20a\x20comparison;\x20not\x20statically\x20decodable,\x20evaluated\x20only\x20on\x20chain\x20at\x20claim\x20time');for(const bk of Object['values'](bf)){if(Array['isArray'](bk)){for(const bl of bk)be(bl,bg+0x1);}else bk&&typeof bk==='object'&&be(bk,bg+0x1);}};return be(bc,0x0),bd;},aL=(bc,bd)=>{const be=new Set();for(const bj of bd['table']??[]){if(bj?.['b_submission']===![]&&typeof bj?.['value']==='string'&&/rating/i['test'](bj['value']))be['add'](Number(bj['identifier']));}const bf=bk=>{if(!bk)return null;if(bk['type']==='identifier')return aH(bd,Number(bk['identifier']));if(typeof bk['value']==='number')return bk['value'];const bl=Number(String(bk['value']??''));return Number['isFinite'](bl)?bl:null;};let bg=null;const bh=bk=>{if(!bg||bk['ratingKeyed']&&!bg['ratingKeyed'])bg=bk;},bi=(bk,bl)=>{if(!bk||typeof bk!=='object'||bl>0x18)return;const bm=typeof bk['type']==='string'?bk['type']:'';if(bm==='logic_as_u256_greater_or_equal'||bm==='logic_as_u256_greater'||bm==='logic_as_u256_equal'){const bn=Array['isArray'](bk['nodes'])?bk['nodes']:[],bo=bn[0x0],bp=JSON['stringify'](bo??{});if(bn['length']>=0x2&&bo&&(bp['includes']('repository.data')||bp['includes']('repository_data'))){let bq=null;const br=(bt,bu)=>{if(!bt||typeof bt!=='object'||bu>0x8||bq)return;if(bt['type']==='query'&&bt['where']&&(typeof bt['query']==='string'&&aI['test'](bt['query'])||typeof bt['query']==='number')){bq=bt;return;}for(const bv of Object['values'](bt))if(bv&&typeof bv==='object')br(bv,bu+0x1);};br(bo,0x0);const bs=bf(bn[bn['length']-0x1]);if(bq){const bt=bq['key']?.['identifier']!=null?Number(bq['key']['identifier']):null;bh({'floor':aJ(bq['where']),'min_rows':bs,'aggregate':!![],'ratingKeyed':bt!=null&&be['has'](bt)});}else{const bu=bf(bn[bn['length']-0x1]);if(bu!=null){const bv=bm==='logic_as_u256_greater_or_equal'?'>=':bm==='logic_as_u256_greater'?'>':'==';bh({'floor':bv+'\x20'+bu,'min_rows':null,'aggregate':![],'ratingKeyed':![]});}}}}for(const bw of Object['values'](bk)){if(Array['isArray'](bw)){for(const bx of bw)bi(bx,bl+0x1);}else bw&&typeof bw==='object'&&bi(bw,bl+0x1);}};return bi(bc,0x0),bg??{'floor':null,'min_rows':null,'aggregate':![],'ratingKeyed':![]};};for(const bc of aA){bc['min_rating']=null;const bd=aE['get'](bc['guard']['toLowerCase']());if(!bd)continue;{const bi=aF(bd),bj=bi?parseGuardTimeBounds(bi['root'],bi['table']):null;bj&&(bc['claim_window']={'opens_after_s':bj['lowerOffsetMs']!=null?bj['lowerOffsetMs']/0x3e8:null,'closes_after_s':bj['upperWindowMs']!=null?bj['upperWindowMs']/0x3e8:null,'anchor':bj['anchor']});}{const bk=bc['claim_window'],bl=bk?.['opens_after_s']??null,bm=bk?.['closes_after_s']??null;if(bc['expiration_time']!=null&&bc['expired']===!![])bc['claim_state']='expired',bc['claim_state_note']='The\x20pool-level\x20entry\x20expired\x20at\x20'+bc['expiration_display']+'\x20—\x20claims\x20abort\x20E_GUARD_EXPIRED.';else{if(!bk)bc['claim_state']='unknown',bc['claim_state_note']='The\x20claim\x20guard\x27s\x20window\x20could\x20not\x20be\x20decoded\x20(unreadable\x20payload\x20or\x20no\x20Clock\x20comparison)\x20—\x20check\x20the\x20guard\x20before\x20promising\x20a\x20timing\x20to\x20the\x20buyer.';else{if(bl!=null&&bl>0x0&&bm==null)bc['claim_state']='delayed_open_ended',bc['claim_state_note']='NOT\x20claimable\x20at\x20the\x20anchor\x20event\x20—\x20opens\x20'+aG(bl)+'\x20after\x20it\x20('+bk['anchor']+'),\x20and\x20the\x20window\x20NEVER\x20closes:\x20any\x20\x22N\x20days\x20to\x20claim\x22\x20wording\x20is\x20fictional\x20(bsw4\x20F-11).';else{if(bl!=null&&bl>0x0){bc['claim_state']='delayed_window';const bn=bm-bl;bc['claim_state_note']='Opens\x20'+aG(bl)+'\x20after\x20the\x20anchor\x20event\x20('+bk['anchor']+'),\x20stays\x20claimable\x20for\x20a\x20further\x20'+aG(bn)+'\x20—\x20hard\x20deadline\x20'+aG(bm)+'\x20after\x20the\x20anchor.';}else bm!=null?(bc['claim_state']='open_window',bc['claim_state_note']='Claimable\x20at\x20the\x20anchor\x20event\x20('+bk['anchor']+'),\x20until\x20'+aG(bm)+'\x20after\x20it.'):(bc['claim_state']='open_ended',bc['claim_state_note']='Claimable\x20at\x20the\x20anchor\x20event\x20('+bk['anchor']+')\x20and\x20never\x20closes\x20—\x20an\x20open-ended\x20bounty\x20(a\x20deliberate\x20design;\x20disclose\x20it\x20explicitly).');}}}}let be;try{be=JSON['stringify'](bd,(bo,bp)=>bp instanceof Uint8Array?Buffer['from'](bp)['toString']('base64'):bp);}catch{continue;}const bf=be['includes']('\x22rating\x22')||be['includes']('114,97,116,105,110,103')||be['toLowerCase']()['includes']('726174696e67')||be['includes']('cmF0aW5n');if(!bf)continue;const bg=aF(bd),bh=bg?aL(bg['root'],bg):null;if(bh?.['floor'])bc['min_rating']=bh['floor'],bc['min_rows']=bh['min_rows'];else{const bo=be['toLowerCase']();if(bo['includes']('\x22like\x22'))bc['min_rating']='like';else{if(bo['includes']('\x22dislike\x22'))bc['min_rating']='dislike';else bc['min_rating']='unknown';}if(bh?.['min_rows']!=null)bc['min_rows']=bh['min_rows'];const bp=bg?aK(bg['root']):[];if(bp['length']>0x0)bc['unreadable_legs']=bp;}}let aM='';if(aB>0x0n&&n>0x0n){const bq=Number(aB)/Number(n);Number['isFinite'](bq)&&(aM='\x20Bounty/cheapest-SKU\x20price\x20ratio:\x20'+bq['toFixed'](0x2)+'x\x20'+('('+await displayOf(aB['toString'](),k,b)+'\x20vs\x20')+(await displayOf(n['toString'](),k,b)+').')+(bq>0.5?'\x20⚠\x20SCALE\x20(T-02):\x20each\x20claimed\x20order\x20pays\x20out\x20MORE\x20than\x20the\x20cheapest\x20sale\x20earns\x20—\x20a\x20bounty-farm\x20shape;\x20a\x20sybil\x20can\x20mint\x20cheap\x20orders\x20and\x20drain\x20this\x20pool.\x20Rebalance\x20the\x20bounty\x20or\x20the\x20catalog\x20before\x20funding.':''));}const aN=az===0x0n?'Pool\x20is\x20EMPTY\x20—\x20any\x20claim\x20aborts\x20on-chain\x20on\x20the\x20reward\x20module\x27s\x20E_INSUFFICIENT_BALANCE\x20(not\x20the\x20allocation\x20module\x27s\x20same-named\x20constant);\x20do\x20not\x20budget\x20on\x20this\x20reward.':aC||aB===0x0n?null:'Pool\x20covers\x20~'+(az/aB)['toString']()+'\x20further\x20claim(s)\x20at\x20the\x20largest\x20configured\x20per-claim\x20amount.'+aM,aO=Array['isArray'](ax['guards'])?ax['guards']:[],aP=aO['filter'](br=>br?.['store_from_id']!=null)['map'](br=>Number(br['store_from_id'])),aQ=((()=>{if(aO['length']===0x0)return{'scope':'unknown','detail':'No\x20mounted\x20guard\x20entry\x20was\x20readable,\x20so\x20the\x20claim\x20scope\x20could\x20not\x20be\x20determined\x20—\x20do\x20not\x20assume\x20a\x20per-order\x20bounty.','per_order_note':PER_ORDER_REPLAY_NOTE};if(aP['length']===aO['length']&&aP['every'](br=>br===0x0))return{'scope':'once_per_order','detail':'Every\x20claim\x20entry\x20stamps\x20store_from_id=0\x20(the\x20conventional\x20submitted-Order\x20slot):\x20the\x20once\x20key\x20is\x20(guard,\x20order)\x20with\x20the\x20recipient\x20pinned\x20to\x20the\x20@0x0\x20sentinel\x20—\x20the\x20FIRST\x20claim\x20consumes\x20the\x20slot\x20for\x20EVERY\x20signer\x20on\x20that\x20order\x20(a\x20second\x20claim\x20aborts\x2013,\x20E_CLAIM_ALREADY_MADE:\x20this\x20(guard,\x20order)\x20was\x20already\x20claimed\x20by\x20any\x20signer);\x20the\x20same\x20buyer\x20can\x20still\x20claim\x20again\x20on\x20a\x20NEW\x20order\x20(fresh\x20slot).','per_order_note':PER_ORDER_REPLAY_NOTE};if(aP['length']===aO['length'])return{'scope':'once_per_stamp','detail':'Every\x20claim\x20entry\x20carries\x20a\x20store_from_id\x20stamp,\x20but\x20not\x20the\x20conventional\x20Order\x20slot\x200\x20(slots:\x20'+aP['join'](',\x20')+'):\x20claims\x20are\x20keyed\x20per\x20(guard,\x20stamped\x20value)\x20with\x20the\x20recipient\x20pinned\x20to\x20the\x20@0x0\x20sentinel\x20—\x20the\x20first\x20claim\x20consumes\x20the\x20slot\x20for\x20every\x20signer;\x20per-ORDER\x20only\x20when\x20that\x20slot\x20is\x20the\x20submitted\x20Order.','per_order_note':PER_ORDER_REPLAY_NOTE};if(aP['length']===0x0)return{'scope':'once_per_recipient_guard','detail':'Every\x20claim\x20entry\x20has\x20an\x20EMPTY\x20store_from\x20slot:\x20ONE\x20claim\x20per\x20(recipient,\x20guard)\x20for\x20LIFE\x20—\x20the\x20same\x20buyer\x27s\x20second\x20order\x20claims\x20nothing\x20(abort\x2013,\x20E_CLAIM_ALREADY_MADE),\x20even\x20when\x20the\x20bounty\x20is\x20described\x20as\x20per-order.','per_order_note':PER_ORDER_REPLAY_NOTE};return{'scope':'mixed','detail':aP['length']+'\x20of\x20'+aO['length']+'\x20claim\x20entries\x20carry\x20a\x20store_from_id\x20stamp\x20—\x20those\x20are\x20per-stamp\x20scoped;\x20the\x20remaining\x20entries\x20are\x20once\x20per\x20(recipient,\x20guard)\x20for\x20life.\x20Read\x20each\x20claims[]\x20row.','per_order_note':PER_ORDER_REPLAY_NOTE};})()),aR=aA['filter'](br=>br['min_rating']==='unknown')['length'];aR>0x0&&ar['push'](aR+'\x20claim(s)\x20gate\x20on\x20a\x20rating\x20condition\x20whose\x20polarity\x20could\x20not\x20be\x20parsed\x20'+'(min_rating=unknown)\x20—\x20read\x20the\x20claim\x20guard\x20before\x20promising\x20this\x20incentive\x20to\x20the\x20buyer');const aS=aA['find'](br=>br['claim_window']!=null),aT=aS?.['claim_window']?.['opens_after_s']??null,aU=aS?.['claim_window']?.['closes_after_s']??null,aV=br=>br!=null&&br>0x0&&br%0x15180===0x0?br/0x15180:null,aW=aV(aT),aX=aU!=null?aU-(aT??0x0):null,aY=aV(aX),aZ=aA['find'](br=>typeof br['min_rating']==='string'&&/\d/['test'](br['min_rating'])),b0=typeof aZ?.['min_rating']==='string'?aZ['min_rating']['match'](/\d+/):null,b1=aQ['scope']==='once_per_order'?0x1:null;as['push']({'reward':aw,'description':typeof ax['description']==='string'?ax['description']:null,'pool_balance':az['toString'](),'pool_balance_display':await displayOf(az['toString'](),k,b),'record_count':Number['isFinite'](Number(ax['record_count']))?Number(ax['record_count']):0x0,'rating_floor':b0?Number(b0[0x0]):null,'opens_after_days':aW,'closes_after_days':aY,'per_order_limit':b1,'claims':aA,'replay_scope':aQ,'coverage':aN});}P={'note':'Pre-order\x20reward\x20terms\x20for\x20every\x20Reward\x20hung\x20on\x20this\x20Service\x20(bound\x20at\x20build\x20time):\x20pool\x20balance,\x20'+'per-claim\x20amount\x20and\x20claim\x20windows.\x20A\x20claim\x20aborts\x20after\x20its\x20window\x20(E_GUARD_EXPIRED)\x20or\x20'+'against\x20an\x20empty\x20pool\x20(E_INSUFFICIENT_BALANCE)\x20—\x20never\x20budget\x20on\x20an\x20expired\x20or\x20empty\x20'+'reward.\x20Claiming\x20requires\x20passing\x20the\x20claim\x20guard\x27s\x20conditions.','rewards':as,'data_gaps':ar};}const Q=Array['isArray'](h['arbitrations'])?h['arbitrations']['filter'](br=>typeof br==='string'&&br!=='')['length']:0x0,R=Q>0x0?'⚠\x20DISPUTE\x20FILING\x20BOUNDARY\x20(ddmc2\x20F-02):\x20advancing\x20a\x20dispute\x20on\x20this\x20Service\x20validates\x20only\x20the\x20filing\x20'+'edge\x27s\x20guard\x20—\x20the\x20chain\x20does\x20NOT\x20require\x20an\x20arbitration\x20case\x20to\x20exist\x20(protocol-level\x20gap,\x20fix\x20'+'registered).\x20Any\x20account\x20passing\x20that\x20edge\x27s\x20guard\x20can\x20advance\x20an\x20order\x20into\x20its\x20dispute\x20node\x20'+'(append-only,\x20no\x20clearing\x20primitive),\x20wedging\x20settlement\x20until\x20the\x20buyer\x20withdraws\x20or\x20a\x20real\x20case\x20'+'resolves.\x20File\x20disputes\x20through\x20the\x20bound\x20arbitration\x20service\x20(Arbitration.dispute\x20creates\x20a\x20REAL\x20'+'case)\x20and\x20have\x20the\x20filing\x20edge\x27s\x20identity\x20legs\x20checked\x20(service_panorama)\x20before\x20large\x20orders.\x20':'';let S=null;try{const br=await LocalMark['Instance']()['list']({'address':d});S=br?.[0x0]?.['name']??null;}catch{S=null;}const T=l['filter'](bs=>typeof bs?.['wip']==='string'&&bs['wip']['includes']('wip.store.wowok.net'))['map'](bs=>String(bs['name'])),U=T['length']>0x0?'⚠\x20WIP\x20FREE-STORE\x20HOSTING\x20(ks7\x20F-24):\x20item\x20detail(s)\x20'+T['map'](bs=>'\x27'+bs+'\x27')['join'](',\x20')+'\x20are\x20hosted\x20on\x20the\x20official\x20free\x20WIP\x20store\x20(wip.store.wowok.net)\x20—\x20a\x20free,\x20best-effort\x20service\x20'+'(10\x20files/account,\x20~6-month\x20retention,\x20no\x20availability\x20guarantee).\x20The\x20item\x27s\x20on-chain\x20wip_hash\x20'+'stays\x20verifiable\x20only\x20while\x20that\x20file\x20remains\x20reachable,\x20which\x20can\x20be\x20SHORTER\x20than\x20this\x20order\x27s\x20'+'after-sales\x20window.\x20Ask\x20the\x20merchant\x20about\x20self-hosted\x20(storage=\x27custom\x27)\x20WIP\x20hosting\x20for\x20'+'long-lived\x20verifiability.\x20':'',V=y['filter'](bs=>bs['stock_ok']===![]),W=V['length']>0x0?'⚠\x20STOCK\x20SHORT\x20(F-20):\x20the\x20chain\x20refuses\x20a\x20buy\x20whose\x20quantity\x20exceeds\x20the\x20sale\x27s\x20remaining\x20'+'stock\x20(service:16\x20E_STOCK_NOT_ENOUGH)\x20—\x20this\x20basket\x20CANNOT\x20be\x20purchased\x20as\x20quoted.\x20Short\x20line(s):\x20'+V['map'](bs=>bs['name']+'\x20(asked\x20'+bs['quantity']+',\x20stock\x20'+(bs['stock']??'?')+')')['join'](';\x20')+'.\x20Reduce\x20the\x20quantity\x20to\x20the\x20stock\x20shown,\x20pick\x20another\x20item,\x20or\x20ask\x20the\x20merchant\x20to\x20restock\x20'+'(service\x20sales\x20stock_add)\x20and\x20re-quote.\x20':'',X=y['filter'](bs=>bs['buyable']===![]),Y=y['filter'](bs=>bs['buyable']===null),Z=X['map'](bs=>bs['name'])['find'](bs=>skuNameGateNote(bs)!==''),a0={'purchasable':X['length']>0x0||q||A===0x0n||u?.['closed']===!![]?![]:Y['length']>0x0?null:!![],'blocked_items':X['map'](bs=>bs['name']),'note':u?.['closed']===!![]?'⚠\x20CAMPAIGN_CLOSED\x20(W5-22):\x20'+u['note']+'.':Z!==undefined?'⚠\x20UNBUYABLE\x20SKU\x20NAME\x20(F-RQ-01):\x20'+skuNameGateNote(Z):X['length']>0x0?'Blocked\x20line(s):\x20'+X['map'](bs=>bs['name']+'\x20—\x20'+bs['buyable_blockers']['join'](';\x20'))['join']('\x20|\x20')+'.':Y['length']>0x0?'No\x20known\x20blocker,\x20but\x20at\x20least\x20one\x20line\x27s\x20stock\x20could\x20not\x20be\x20read\x20from\x20the\x20chain\x20—\x20verify\x20before\x20checkout.':'Every\x20line\x20passes\x20the\x20known\x20buy\x20gates\x20(name\x20≤\x2064\x20bytes,\x20not\x20suspended,\x20stock\x20sufficient).'},a1=a0['purchasable']===![]?'⚠\x20UNBUYABLE\x20BASKET\x20(F-RQ-01):\x20this\x20quote\x20is\x20PRICED\x20but\x20the\x20chain\x20will\x20refuse\x20every\x20order\x20—\x20read\x20the\x20buyable\x20block\x20before\x20attempting\x20order_new.\x20':'';return{'action':'service_quote','network':String(b),'service':{'address':d,'name':S},'paused':q,'payment_token':{'coin_type':k,'display_note':k?'Prices\x20and\x20the\x20order\x20total\x20are\x20denominated\x20in\x20this\x20token\x27s\x20smallest\x20units;\x20displays\x20convert\x20with\x20the\x20token\x27s\x20on-chain\x20precision.':'Payment\x20token\x20could\x20not\x20be\x20parsed\x20from\x20the\x20Service\x20type\x20—\x20raw\x20smallest\x20units\x20only,\x20precision\x20NOT\x20guessed.'},'items':y,'buyable':a0,'total_pay':{'balance':A['toString'](),'display':J,'note':a1+W+R+U+(u?'⚠\x20CAMPAIGN\x20WINDOW\x20('+(u['closed']?'CLOSED':'OPEN')+')\x20(W5-22):\x20'+u['note']+'\x20':'')+(q?'⚠\x20SERVICE\x20PAUSED\x20(bs29\x20R-16):\x20this\x20Service\x20is\x20currently\x20paused\x20—\x20every\x20buy\x20is\x20refused\x20'+'(client\x20pre-buy\x20gate,\x20then\x20the\x20on-chain\x20E_PAUSED\x20assert)\x20while\x20the\x20pause\x20'+'stands,\x20and\x20there\x20is\x20NO\x20on-chain\x20scheduled\x20resume:\x20the\x20merchant\x20must\x20submit\x20pause:false.\x20'+'The\x20prices\x20below\x20are\x20reference\x20only.\x20':'')+(A===0x0n?'DEAD\x20BASKET\x20(F-BS-75):\x20this\x20quote\x20totals\x20ZERO\x20—\x20the\x20chain\x20REFUSES\x20zero-total\x20buys\x20(client\x20'+'order_new_zero_total_dead_order,\x20on-chain\x20abort\x2042),\x20so\x20this\x20basket\x20cannot\x20be\x20purchased\x20at\x20'+'all.\x20Either\x20the\x20basket\x20contains\x20a\x20zero-priced\x20SKU\x20(permanently\x20unbuyable\x20—\x20F-BS-76;\x20the\x20'+'merchant\x20must\x20reprice\x20it\x20to\x20>=\x201\x20smallest\x20unit)\x20or\x20a\x20coupon\x20zeroes\x20it\x20(lower\x20the\x20coupon\x20'+'value).\x20Do\x20NOT\x20attempt\x20the\x20buy.\x20allow_zero_total\x20waives\x20nothing\x20(BSX-F07).':B?.['applied']?'FLOOR\x20semantics\x20(bs29\x20R-17,\x20the\x20published\x20buy\x20contract):\x20order_new.buy.total_pay.balance\x20must\x20be\x20>=\x20'+'this\x20discounted\x20total\x20—\x20an\x20under-funded\x20total\x20aborts\x20(E_COIN_NOT_ENOUGH);\x20an\x20over-funded\x20one\x20'+'succeeds\x20but\x20the\x20ORDER\x20still\x20escrows\x20exactly\x20this\x20amount\x20(the\x20excess\x20is\x20split\x20back,\x20never\x20'+'escrowed).\x20Pass\x20exactly\x20this\x20value.\x20The\x20on-chain\x20buy\x20aborts\x20only\x20on\x20an\x20UNDER-funded\x20total;\x20'+'the\x20coupon\x20is\x20consumed\x20at\x20buy.':'FLOOR\x20semantics\x20(bs29\x20R-17,\x20the\x20published\x20buy\x20contract):\x20order_new.buy.total_pay.balance\x20must\x20be\x20>=\x20'+'this\x20total\x20—\x20an\x20under-funded\x20total\x20aborts\x20(E_COIN_NOT_ENOUGH);\x20an\x20over-funded\x20one\x20'+'succeeds\x20but\x20the\x20ORDER\x20still\x20escrows\x20exactly\x20Σ(unit_price\x20×\x20quantity)\x20—\x20the\x20excess\x20is\x20split\x20'+'back\x20to\x20the\x20payer\x20and\x20never\x20enters\x20the\x20escrow.\x20WITHOUT\x20a\x20discount\x20you\x20may\x20also\x20omit\x20'+'total_pay\x20entirely:\x20the\x20buy\x20auto-derives\x20this\x20exact\x20total\x20(M-K17).')},'discount':B,'allocation_preview':N,'compensation_fund_coverage':I,'reward_terms':P};}