@wowok/agent-mcp 2.7.2 → 2.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. package/dist/config/runtime.js +1 -1
  2. package/dist/customer/account-events.d.ts +32 -0
  3. package/dist/customer/account-events.js +1 -0
  4. package/dist/customer/customer-advice.d.ts +1 -0
  5. package/dist/customer/customer-advice.js +1 -1
  6. package/dist/customer/info-puzzle.js +1 -1
  7. package/dist/customer/order-strategy.d.ts +1 -1
  8. package/dist/customer/reminder-system.d.ts +2 -0
  9. package/dist/customer/reminder-system.js +1 -1
  10. package/dist/customer/risk-assessment.d.ts +1 -0
  11. package/dist/customer/risk-assessment.js +1 -1
  12. package/dist/customer/types.d.ts +2 -0
  13. package/dist/evaluation/builtins/arbitration-score.d.ts +41 -0
  14. package/dist/evaluation/builtins/arbitration-score.js +1 -0
  15. package/dist/evaluation/builtins/index.d.ts +1 -0
  16. package/dist/evaluation/builtins/index.js +1 -1
  17. package/dist/evaluation/category-match-rules.d.ts +30 -0
  18. package/dist/evaluation/category-match-rules.js +1 -0
  19. package/dist/evaluation/engine.js +1 -1
  20. package/dist/evaluation/extract.js +1 -1
  21. package/dist/evaluation/index.d.ts +1 -0
  22. package/dist/evaluation/index.js +1 -1
  23. package/dist/evaluation/location-match.d.ts +42 -0
  24. package/dist/evaluation/location-match.js +1 -0
  25. package/dist/evaluation/path-reasoning.d.ts +35 -0
  26. package/dist/evaluation/path-reasoning.js +1 -0
  27. package/dist/evaluation/region.d.ts +6 -0
  28. package/dist/evaluation/region.js +1 -1
  29. package/dist/evaluation/types.d.ts +17 -0
  30. package/dist/experience/realtime-feedback.js +1 -1
  31. package/dist/experience/user-profile.d.ts +1 -1
  32. package/dist/extensions/index.d.ts +6 -0
  33. package/dist/extensions/index.js +1 -1
  34. package/dist/extensions/industry-layers.d.ts +75 -0
  35. package/dist/extensions/industry-layers.js +1 -0
  36. package/dist/extensions/industry-pack.d.ts +105 -0
  37. package/dist/extensions/industry-pack.js +1 -0
  38. package/dist/extensions/metric-registry.js +1 -1
  39. package/dist/extensions/mode-evaluator.d.ts +1 -1
  40. package/dist/extensions/registry.d.ts +1 -0
  41. package/dist/extensions/registry.js +1 -1
  42. package/dist/graph/base.d.ts +8 -0
  43. package/dist/graph/base.js +1 -0
  44. package/dist/harness/index.d.ts +1 -0
  45. package/dist/harness/index.js +1 -1
  46. package/dist/harness/plan.d.ts +2 -0
  47. package/dist/harness/plan.js +1 -1
  48. package/dist/harness/recover.d.ts +1 -1
  49. package/dist/harness/types.d.ts +2 -3
  50. package/dist/index.js +1 -1
  51. package/dist/knowledge/allocation-confirm.js +1 -1
  52. package/dist/knowledge/anti-cheat.d.ts +37 -0
  53. package/dist/knowledge/anti-cheat.js +1 -0
  54. package/dist/knowledge/arb-confirm.d.ts +28 -0
  55. package/dist/knowledge/arb-confirm.js +1 -0
  56. package/dist/knowledge/arb-translation.d.ts +48 -0
  57. package/dist/knowledge/arb-translation.js +1 -0
  58. package/dist/knowledge/arbitration-context.js +1 -1
  59. package/dist/knowledge/arbitration-ledger.js +1 -1
  60. package/dist/knowledge/bridge-confirm.d.ts +26 -0
  61. package/dist/knowledge/bridge-confirm.js +1 -0
  62. package/dist/knowledge/bridge-translation.d.ts +37 -0
  63. package/dist/knowledge/bridge-translation.js +1 -0
  64. package/dist/knowledge/contact-confirm.d.ts +27 -0
  65. package/dist/knowledge/contact-confirm.js +1 -0
  66. package/dist/knowledge/contact-translation.d.ts +39 -0
  67. package/dist/knowledge/contact-translation.js +1 -0
  68. package/dist/knowledge/demand-confirm.js +1 -1
  69. package/dist/knowledge/demand-context.d.ts +17 -0
  70. package/dist/knowledge/demand-context.js +1 -0
  71. package/dist/knowledge/demand-ledger.d.ts +26 -0
  72. package/dist/knowledge/demand-ledger.js +1 -0
  73. package/dist/knowledge/demand-puzzle.d.ts +29 -0
  74. package/dist/knowledge/demand-puzzle.js +1 -0
  75. package/dist/knowledge/demand-risk.js +1 -1
  76. package/dist/knowledge/demand-templates.d.ts +12 -0
  77. package/dist/knowledge/demand-templates.js +1 -0
  78. package/dist/knowledge/demand-translation.js +1 -1
  79. package/dist/knowledge/deployment-scanner.js +1 -1
  80. package/dist/knowledge/evidence-review.d.ts +12 -0
  81. package/dist/knowledge/evidence-review.js +1 -0
  82. package/dist/knowledge/examples-scanner-cli.js +1 -1
  83. package/dist/knowledge/examples-scanner.js +1 -1
  84. package/dist/knowledge/flywheel-loop.d.ts +0 -1
  85. package/dist/knowledge/flywheel-loop.js +1 -1
  86. package/dist/knowledge/guard-design-patterns.js +1 -1
  87. package/dist/knowledge/guard-migration.d.ts +1 -1
  88. package/dist/knowledge/index.d.ts +71 -3
  89. package/dist/knowledge/index.js +1 -1
  90. package/dist/knowledge/industry-registry.js +1 -1
  91. package/dist/knowledge/machine-render.js +1 -1
  92. package/dist/knowledge/market-metrics.d.ts +12 -0
  93. package/dist/knowledge/market-metrics.js +1 -0
  94. package/dist/knowledge/market-operations.d.ts +46 -0
  95. package/dist/knowledge/market-operations.js +1 -0
  96. package/dist/knowledge/mcp-schema-audit-cli.js +1 -1
  97. package/dist/knowledge/mcp-schema-audit.d.ts +22 -22
  98. package/dist/knowledge/mcp-schema-audit.js +1 -1
  99. package/dist/knowledge/onchain-constants.d.ts +2 -2
  100. package/dist/knowledge/onchain-constants.js +1 -1
  101. package/dist/knowledge/payment-confirm.d.ts +26 -0
  102. package/dist/knowledge/payment-confirm.js +1 -0
  103. package/dist/knowledge/payment-risk.js +1 -1
  104. package/dist/knowledge/payment-translation.d.ts +37 -0
  105. package/dist/knowledge/payment-translation.js +1 -0
  106. package/dist/knowledge/permission-context.d.ts +11 -0
  107. package/dist/knowledge/permission-context.js +1 -1
  108. package/dist/knowledge/permission-ledger.d.ts +11 -0
  109. package/dist/knowledge/permission-ledger.js +1 -1
  110. package/dist/knowledge/personal-confirm.d.ts +29 -0
  111. package/dist/knowledge/personal-confirm.js +1 -0
  112. package/dist/knowledge/personal-risk.js +1 -1
  113. package/dist/knowledge/personal-translation.d.ts +37 -0
  114. package/dist/knowledge/personal-translation.js +1 -0
  115. package/dist/knowledge/process-model.d.ts +1 -11
  116. package/dist/knowledge/process-model.js +1 -1
  117. package/dist/knowledge/progress-ledger.js +1 -1
  118. package/dist/knowledge/progress-risk.js +1 -1
  119. package/dist/knowledge/progress-templates.js +1 -1
  120. package/dist/knowledge/progress-translation.js +1 -1
  121. package/dist/knowledge/proof-context.d.ts +17 -0
  122. package/dist/knowledge/proof-context.js +1 -0
  123. package/dist/knowledge/proof-ledger.d.ts +34 -0
  124. package/dist/knowledge/proof-ledger.js +1 -0
  125. package/dist/knowledge/proof-puzzle.d.ts +35 -0
  126. package/dist/knowledge/proof-puzzle.js +1 -0
  127. package/dist/knowledge/proof-templates.d.ts +22 -0
  128. package/dist/knowledge/proof-templates.js +1 -0
  129. package/dist/knowledge/registrar-confirm.d.ts +26 -0
  130. package/dist/knowledge/registrar-confirm.js +1 -0
  131. package/dist/knowledge/registrar-risk.js +1 -1
  132. package/dist/knowledge/registrar-translation.d.ts +37 -0
  133. package/dist/knowledge/registrar-translation.js +1 -0
  134. package/dist/knowledge/repository-context.d.ts +12 -0
  135. package/dist/knowledge/repository-context.js +1 -0
  136. package/dist/knowledge/repository-ledger.d.ts +25 -0
  137. package/dist/knowledge/repository-ledger.js +1 -0
  138. package/dist/knowledge/repository-puzzle.d.ts +30 -0
  139. package/dist/knowledge/repository-puzzle.js +1 -0
  140. package/dist/knowledge/repository-templates.d.ts +14 -0
  141. package/dist/knowledge/repository-templates.js +1 -0
  142. package/dist/knowledge/resource-confirm.d.ts +25 -0
  143. package/dist/knowledge/resource-confirm.js +1 -0
  144. package/dist/knowledge/resource-translation.d.ts +37 -0
  145. package/dist/knowledge/resource-translation.js +1 -0
  146. package/dist/knowledge/reward-context.d.ts +2 -2
  147. package/dist/knowledge/reward-ledger.js +1 -1
  148. package/dist/knowledge/reward-translation.js +1 -1
  149. package/dist/knowledge/safety-rules.d.ts +1 -0
  150. package/dist/knowledge/safety-rules.js +1 -1
  151. package/dist/knowledge/service-risk.d.ts +1 -1
  152. package/dist/knowledge/service-risk.js +1 -1
  153. package/dist/knowledge/template-registry.js +1 -1
  154. package/dist/knowledge/tools-reference.js +1 -1
  155. package/dist/knowledge/treasury-context.d.ts +1 -1
  156. package/dist/knowledge/treasury-context.js +1 -1
  157. package/dist/knowledge/treasury-ledger.js +1 -1
  158. package/dist/knowledge/treasury-risk.js +1 -1
  159. package/dist/knowledge/universal-template.d.ts +22 -0
  160. package/dist/knowledge/universal-template.js +1 -0
  161. package/dist/knowledge/util-confirm.d.ts +24 -0
  162. package/dist/knowledge/util-confirm.js +1 -0
  163. package/dist/knowledge/util-risk.js +1 -1
  164. package/dist/knowledge/util-translation.d.ts +39 -0
  165. package/dist/knowledge/util-translation.js +1 -0
  166. package/dist/knowledge/workflow-guidance.d.ts +180 -0
  167. package/dist/knowledge/workflow-guidance.js +1 -0
  168. package/dist/participation/employee-kpi.d.ts +25 -0
  169. package/dist/participation/employee-kpi.js +1 -0
  170. package/dist/participation/employee-store.d.ts +16 -0
  171. package/dist/participation/employee-store.js +1 -0
  172. package/dist/participation/index.d.ts +2 -0
  173. package/dist/participation/index.js +1 -0
  174. package/dist/persona/defaults.js +1 -1
  175. package/dist/persona/index.d.ts +9 -2
  176. package/dist/persona/index.js +1 -1
  177. package/dist/persona/local-region.d.ts +20 -0
  178. package/dist/persona/local-region.js +1 -0
  179. package/dist/persona/model.js +1 -1
  180. package/dist/persona/overrides.d.ts +10 -0
  181. package/dist/persona/overrides.js +1 -0
  182. package/dist/persona/pack-personae.d.ts +11 -0
  183. package/dist/persona/pack-personae.js +1 -0
  184. package/dist/persona/strategy-intent.d.ts +20 -0
  185. package/dist/persona/strategy-intent.js +1 -0
  186. package/dist/persona/types.d.ts +3 -1
  187. package/dist/project/business-puzzle.d.ts +1 -1
  188. package/dist/project/business-puzzle.js +1 -1
  189. package/dist/project/deployment-doc.js +1 -1
  190. package/dist/project/edit-planner.js +1 -1
  191. package/dist/project/evaluation.d.ts +37 -1
  192. package/dist/project/evaluation.js +1 -1
  193. package/dist/project/graph-builder.d.ts +2 -2
  194. package/dist/project/graph-builder.js +1 -1
  195. package/dist/project/graph.d.ts +3 -6
  196. package/dist/project/handlers.d.ts +33 -2
  197. package/dist/project/handlers.js +1 -1
  198. package/dist/project/index.d.ts +1 -0
  199. package/dist/project/index.js +1 -1
  200. package/dist/project/merchant-guide.d.ts +19 -0
  201. package/dist/project/merchant-guide.js +1 -1
  202. package/dist/project/mode-actions.js +1 -1
  203. package/dist/project/rollback-policy.js +1 -1
  204. package/dist/project/semantic-assembler.d.ts +2 -2
  205. package/dist/project/semantic-assembler.js +1 -1
  206. package/dist/project/semantic-graph.d.ts +3 -5
  207. package/dist/project/workflow-design-assessment.d.ts +24 -0
  208. package/dist/project/workflow-design-assessment.js +1 -0
  209. package/dist/safety/confirm-gate.d.ts +1 -1
  210. package/dist/safety/confirm-gate.js +1 -1
  211. package/dist/schema/call/allocation.d.ts +186 -1385
  212. package/dist/schema/call/arbitration.d.ts +272 -1871
  213. package/dist/schema/call/base.d.ts +1831 -9076
  214. package/dist/schema/call/base.js +1 -1
  215. package/dist/schema/call/bridge.d.ts +911 -3171
  216. package/dist/schema/call/contact.d.ts +135 -931
  217. package/dist/schema/call/demand.d.ts +164 -1194
  218. package/dist/schema/call/guard.d.ts +298 -1140
  219. package/dist/schema/call/guard.js +1 -1
  220. package/dist/schema/call/machine.d.ts +459 -5403
  221. package/dist/schema/call/machine.js +1 -1
  222. package/dist/schema/call/order.d.ts +137 -844
  223. package/dist/schema/call/payment.d.ts +74 -561
  224. package/dist/schema/call/permission.d.ts +335 -2791
  225. package/dist/schema/call/personal.d.ts +227 -1814
  226. package/dist/schema/call/progress.d.ts +140 -843
  227. package/dist/schema/call/proof.d.ts +42 -258
  228. package/dist/schema/call/repository.d.ts +324 -2222
  229. package/dist/schema/call/reward.d.ts +153 -1183
  230. package/dist/schema/call/semantic.js +1 -1
  231. package/dist/schema/call/service.d.ts +376 -3431
  232. package/dist/schema/call/treasury.d.ts +252 -2158
  233. package/dist/schema/common/index.d.ts +222 -697
  234. package/dist/schema/common/index.js +1 -1
  235. package/dist/schema/config/index.d.ts +18 -161
  236. package/dist/schema/employee/index.d.ts +99 -0
  237. package/dist/schema/employee/index.js +1 -0
  238. package/dist/schema/evaluation/index.d.ts +1035 -3918
  239. package/dist/schema/evaluation/index.js +1 -1
  240. package/dist/schema/index.d.ts +5 -0
  241. package/dist/schema/index.js +1 -1
  242. package/dist/schema/industry-pack/index.d.ts +132 -0
  243. package/dist/schema/industry-pack/index.js +1 -0
  244. package/dist/schema/intent-radar/index.d.ts +92 -245
  245. package/dist/schema/intent-radar/index.js +1 -1
  246. package/dist/schema/local/index.d.ts +2045 -18080
  247. package/dist/schema/local/index.js +1 -1
  248. package/dist/schema/local/wip.d.ts +61 -651
  249. package/dist/schema/local/wip.js +1 -1
  250. package/dist/schema/messenger/index.d.ts +949 -5557
  251. package/dist/schema/messenger/index.js +1 -1
  252. package/dist/schema/operations.d.ts +3168 -26468
  253. package/dist/schema/operations.js +1 -1
  254. package/dist/schema/permission/index.d.ts +121 -0
  255. package/dist/schema/permission/index.js +1 -0
  256. package/dist/schema/persona/index.d.ts +469 -1820
  257. package/dist/schema/persona/index.js +1 -1
  258. package/dist/schema/project/index.d.ts +1023 -8450
  259. package/dist/schema/project/index.js +1 -1
  260. package/dist/schema/query/index.d.ts +12121 -75556
  261. package/dist/schema/query/index.js +1 -1
  262. package/dist/schema/schema-query/index.d.ts +35 -98
  263. package/dist/schema/schema-query/index.js +1 -1
  264. package/dist/schema/schema-version.js +1 -1
  265. package/dist/schema/task-status.d.ts +26 -132
  266. package/dist/schema/trust/index.d.ts +194 -1290
  267. package/dist/schema/utils/guard-parser.js +1 -1
  268. package/dist/schema/utils/node-parser.js +1 -1
  269. package/dist/schema/utils/skills-recommendation.d.ts +1 -0
  270. package/dist/schema/utils/skills-recommendation.js +1 -1
  271. package/dist/schema/workflow/index.d.ts +161 -0
  272. package/dist/schema/workflow/index.js +1 -0
  273. package/dist/schema/workspace/index.d.ts +69 -0
  274. package/dist/schema/workspace/index.js +1 -0
  275. package/dist/{schema-query → schema-query-impl}/index.js +1 -1
  276. package/dist/schemas/account_operation.output.json +3147 -1655
  277. package/dist/schemas/account_operation.schema.json +225 -218
  278. package/dist/schemas/bridge_operation.output.json +1168 -653
  279. package/dist/schemas/bridge_operation.schema.json +736 -504
  280. package/dist/schemas/config_operation.output.json +185 -179
  281. package/dist/schemas/config_operation.schema.json +21 -26
  282. package/dist/schemas/employee_operation.output.json +207 -0
  283. package/dist/schemas/employee_operation.schema.json +176 -0
  284. package/dist/schemas/evaluation_operation.output.json +2268 -601
  285. package/dist/schemas/evaluation_operation.schema.json +2919 -787
  286. package/dist/schemas/guard2file.output.json +58 -64
  287. package/dist/schemas/guard2file.schema.json +79 -81
  288. package/dist/schemas/index.json +41 -11
  289. package/dist/schemas/industry_pack_operation.output.json +594 -0
  290. package/dist/schemas/industry_pack_operation.schema.json +55 -0
  291. package/dist/schemas/intent_radar.output.json +275 -203
  292. package/dist/schemas/intent_radar.schema.json +124 -126
  293. package/dist/schemas/local_info_operation.output.json +1174 -660
  294. package/dist/schemas/local_info_operation.schema.json +119 -125
  295. package/dist/schemas/local_mark_operation.output.json +1239 -692
  296. package/dist/schemas/local_mark_operation.schema.json +91 -96
  297. package/dist/schemas/machineNode2file.output.json +63 -69
  298. package/dist/schemas/machineNode2file.schema.json +79 -81
  299. package/dist/schemas/messenger_operation.output.json +2722 -1531
  300. package/dist/schemas/messenger_operation.schema.json +1482 -1264
  301. package/dist/schemas/onchain_events.output.json +2590 -978
  302. package/dist/schemas/onchain_events.schema.json +117 -99
  303. package/dist/schemas/onchain_operations.output.json +3957 -2312
  304. package/dist/schemas/onchain_operations.schema.json +20799 -9285
  305. package/dist/schemas/onchain_operations_allocation.schema.json +171 -107
  306. package/dist/schemas/onchain_operations_arbitration.schema.json +233 -146
  307. package/dist/schemas/onchain_operations_contact.schema.json +129 -90
  308. package/dist/schemas/onchain_operations_demand.schema.json +170 -112
  309. package/dist/schemas/onchain_operations_gen_passport.schema.json +61 -646
  310. package/dist/schemas/onchain_operations_gen_proof.schema.json +40 -172
  311. package/dist/schemas/onchain_operations_guard.schema.json +3765 -294
  312. package/dist/schemas/onchain_operations_machine.schema.json +536 -163
  313. package/dist/schemas/onchain_operations_order.schema.json +126 -96
  314. package/dist/schemas/onchain_operations_payment.schema.json +82 -67
  315. package/dist/schemas/onchain_operations_permission.schema.json +331 -93
  316. package/dist/schemas/onchain_operations_personal.schema.json +636 -96
  317. package/dist/schemas/onchain_operations_progress.schema.json +125 -92
  318. package/dist/schemas/onchain_operations_proof.schema.json +76 -69
  319. package/dist/schemas/onchain_operations_repository.schema.json +636 -249
  320. package/dist/schemas/onchain_operations_reward.schema.json +218 -108
  321. package/dist/schemas/onchain_operations_service.schema.json +678 -220
  322. package/dist/schemas/onchain_operations_treasury.schema.json +401 -135
  323. package/dist/schemas/onchain_table_data.output.json +6833 -2432
  324. package/dist/schemas/onchain_table_data.schema.json +684 -417
  325. package/dist/schemas/permission_operation.output.json +173 -0
  326. package/dist/schemas/permission_operation.schema.json +39 -0
  327. package/dist/schemas/persona_operation.output.json +1568 -268
  328. package/dist/schemas/persona_operation.schema.json +346 -205
  329. package/dist/schemas/project_operation.output.json +6922 -5132
  330. package/dist/schemas/project_operation.schema.json +1050 -1020
  331. package/dist/schemas/query_task_status.output.json +195 -99
  332. package/dist/schemas/query_task_status.schema.json +12 -18
  333. package/dist/schemas/query_toolkit.output.json +18862 -14561
  334. package/dist/schemas/query_toolkit.schema.json +614 -522
  335. package/dist/schemas/schema_query.output.json +127 -129
  336. package/dist/schemas/schema_query.schema.json +64 -69
  337. package/dist/schemas/trust_score.output.json +678 -587
  338. package/dist/schemas/trust_score.schema.json +289 -277
  339. package/dist/schemas/wip_file.output.json +116 -124
  340. package/dist/schemas/wip_file.schema.json +142 -143
  341. package/dist/schemas/workflow_operation.output.json +164 -0
  342. package/dist/schemas/workflow_operation.schema.json +116 -0
  343. package/dist/schemas/workspace_operation.output.json +277 -0
  344. package/dist/schemas/workspace_operation.schema.json +45 -0
  345. package/dist/schemas/wowok_buildin_info.output.json +1682 -844
  346. package/dist/schemas/wowok_buildin_info.schema.json +576 -526
  347. package/dist/tools/handlers/bridge.d.ts +8 -1
  348. package/dist/tools/handlers/bridge.js +1 -1
  349. package/dist/tools/handlers/config.js +1 -1
  350. package/dist/tools/handlers/employee.d.ts +2 -0
  351. package/dist/tools/handlers/employee.js +1 -0
  352. package/dist/tools/handlers/evaluation.js +1 -1
  353. package/dist/tools/handlers/file-export.js +1 -1
  354. package/dist/tools/handlers/industry-pack.d.ts +2 -0
  355. package/dist/tools/handlers/industry-pack.js +1 -0
  356. package/dist/tools/handlers/onchain.js +1 -1
  357. package/dist/tools/handlers/permission.d.ts +2 -0
  358. package/dist/tools/handlers/permission.js +1 -0
  359. package/dist/tools/handlers/persona.js +1 -1
  360. package/dist/tools/handlers/project.js +1 -1
  361. package/dist/tools/handlers/query.js +1 -1
  362. package/dist/tools/handlers/schema-query.js +1 -1
  363. package/dist/tools/handlers/trust.js +1 -1
  364. package/dist/tools/handlers/wip.js +1 -1
  365. package/dist/tools/handlers/workflow.d.ts +2 -0
  366. package/dist/tools/handlers/workflow.js +1 -0
  367. package/dist/tools/handlers/workspace.d.ts +4 -0
  368. package/dist/tools/handlers/workspace.js +1 -0
  369. package/dist/tools/index.d.ts +2 -1
  370. package/dist/tools/index.js +1 -1
  371. package/dist/tools/rules-hook.d.ts +1 -1
  372. package/dist/tools/rules-hook.js +1 -1
  373. package/dist/tools/shared.d.ts +1 -1
  374. package/dist/tools/shared.js +1 -1
  375. package/dist/tools/types.d.ts +2 -1
  376. package/package.json +4 -5
  377. package/dist/knowledge/arbitration-trust.d.ts +0 -24
  378. package/dist/knowledge/arbitration-trust.js +0 -1
  379. package/dist/schema/call/bridge-handler.d.ts +0 -8
  380. package/dist/schema/call/bridge-handler.js +0 -1
  381. package/dist/schema/sync-layer4.d.ts +0 -21
  382. package/dist/schema/sync-layer4.js +0 -1
  383. /package/dist/{schema-query → schema-query-impl}/index.d.ts +0 -0
@@ -7,7 +7,7 @@ export declare class ModeEvaluator {
7
7
  private metricRegistry;
8
8
  private constraintRegistry;
9
9
  constructor(capabilityRegistry: CapabilityRegistry, metricRegistry?: MetricRegistry, constraintRegistry?: ConstraintRegistry);
10
- evaluateMode(mode: IndustryMode, intent: string, context: ProjectContext): ModeEvaluation;
10
+ evaluateMode(mode: IndustryMode, _intent: string, _context: ProjectContext): ModeEvaluation;
11
11
  evaluateMigration(source: IndustryMode, target: IndustryMode): ModeMigrationEvaluation;
12
12
  private isCustomMode;
13
13
  private checkCapabilityConflicts;
@@ -15,6 +15,7 @@ export declare class IndustryModeRegistry {
15
15
  listModes(): IndustryMode[];
16
16
  resolveAlias(name: string): string;
17
17
  hasMode(name: string): boolean;
18
+ unregisterMode(name: string): boolean;
18
19
  evaluateMode(name: string, intent: string, context: ProjectContext): ModeEvaluation;
19
20
  evaluateMigration(sourceName: string, targetName: string): ModeMigrationEvaluation;
20
21
  registerUserMode(mode: UserDefinedMode, userId: string): Promise<boolean>;
@@ -1 +1 @@
1
- import{UserModeStorage}from'@wowok/wowok';import{CapabilityRegistry}from'./capability-manifest.js';import{ModeEvaluator}from'./mode-evaluator.js';import{MetricRegistry}from'./metric-registry.js';import{ConstraintRegistry}from'./constraint-registry.js';import{BUILTIN_MODES}from'./modes.js';export class IndustryModeRegistry{static ['instance'];['registrations']=new Map();['userModes']=new Map();['aliases']=new Map();['evaluator'];['initialized']=![];['persistence']=new UserModeStorage();['userModesLoaded']=![];static['Instance'](){return!IndustryModeRegistry['instance']&&(IndustryModeRegistry['instance']=new IndustryModeRegistry()),IndustryModeRegistry['instance'];}constructor(){this['evaluator']=new ModeEvaluator(CapabilityRegistry['Instance'](),MetricRegistry['Instance'](),ConstraintRegistry['Instance']()),this['registerBuiltinModes'](),this['initialized']=!![];}['registerMode'](a,b){if(!a['name']||!a['traits']||!a['machine_shape'])return console['warn']('[IndustryModeRegistry]\x20registerMode\x20rejected:\x20invalid\x20mode\x20'+('(name='+(a['name']||'<missing>')+',\x20traits='+(a['traits']?'ok':'<missing>')+',\x20')+('machine_shape='+(a['machine_shape']?'ok':'<missing>')+').')),![];if(this['registrations']['has'](a['name'])){const c=this['registrations']['get'](a['name']);return console['warn']('[IndustryModeRegistry]\x20registerMode\x20rejected:\x20mode\x20\x27'+a['name']+'\x27\x20already\x20registered\x20'+('(registered_at='+new Date(c?.['registered_at']??0x0)['toISOString']()+').\x20')+'Use\x20evolveMode/deriveMode\x20for\x20user\x20modifications,\x20or\x20unregister\x20first.'),![];}this['registrations']['set'](a['name'],{'mode':a,'aliases':b,'enabled':!![],'registered_at':Date['now']()});if(b)for(const d of b){this['aliases']['set'](d,a['name']);}return!![];}['getMode'](a){const b=this['resolveAlias'](a);return this['registrations']['get'](b)?.['mode'];}['listModes'](){return Array['from'](this['registrations']['values']())['filter'](a=>a['enabled'])['map'](a=>a['mode']);}['resolveAlias'](a){return this['aliases']['get'](a)??a;}['hasMode'](a){const b=this['resolveAlias'](a);return this['registrations']['has'](b);}['evaluateMode'](a,b,c){const d=this['getMode'](a);if(!d)return{'applicable':![],'risk_score':0x64,'benefit_score':0x0,'risk_benefit_ratio':0x0,'capability_conflicts':[],'violated_constraints':[],'unmet_conditions':['Mode\x20\x27'+a+'\x27\x20not\x20found'],'recommendations':['Mode\x20\x27'+a+'\x27\x20not\x20registered,\x20falling\x20back\x20to\x20\x27general\x27']};return this['evaluator']['evaluateMode'](d,b,c);}['evaluateMigration'](a,b){const c=this['getMode'](a),d=this['getMode'](b);if(!c||!d)return{'feasibility_score':0x0,'source_risk_score':0x0,'target_risk_score':0x0,'source_benefit_score':0x0,'target_benefit_score':0x0,'risk_delta':0x0,'benefit_delta':0x0,'added_capabilities':[],'removed_capabilities':[],'conflicting_capabilities':[],'recommendations':['Mode\x20\x27'+a+'\x27\x20or\x20\x27'+b+'\x27\x20not\x20found']};return this['evaluator']['evaluateMigration'](c,d);}async['registerUserMode'](a,b){await this['ensureUserModesLoaded']();if(!a['name']||!a['owner']||!a['machine_shape'])return![];if(a['source']!=='custom')return![];if(a['owner']!==b)return![];const c=this['userModeKey'](a['owner'],a['name']);if(this['registrations']['has'](a['name']))return![];if(this['userModes']['has'](c))return![];return(!a['evolution_history']||a['evolution_history']['length']===0x0)&&(a['evolution_history']=[{'version':a['version']||'v1','changed_at':Date['now'](),'changes':['Initial\x20registration\x20(registerUserMode)']}]),this['userModes']['set'](c,a),await this['persistUserMode'](a),!![];}async['deriveMode'](a,b,c,d,e){await this['ensureUserModesLoaded']();const f=this['getMode'](a);if(!f)return undefined;if(!d||this['registrations']['has'](d))return undefined;const g=this['userModeKey'](c,d);if(this['userModes']['has'](g))return undefined;const h={'name':d,'display_name':e??d,'version':'v1','source':'custom','traits':b['traits']??f['traits'],'machine_shape':b['machine_shape']??f['machine_shape'],'guards':b['guards']??f['guards'],'allocator':b['allocator']??f['allocator'],'risk_checks':b['risk_checks']??f['risk_checks'],'needs':b['needs']??f['needs'],'flywheel':b['flywheel']??f['flywheel'],'key_risk':b['key_risk']??f['key_risk'],'build_notes':b['build_notes']??f['build_notes'],'capabilities_used':b['capabilities_used']??f['capabilities_used'],'config_overrides':b['config_overrides']??f['config_overrides'],'config_override_rules':b['config_override_rules']??f['config_override_rules'],'expected_benefits':b['expected_benefits']??f['expected_benefits'],'risk_appetite':b['risk_appetite']??f['risk_appetite'],'risk_constraints':b['risk_constraints']??f['risk_constraints'],'applicable_conditions':b['applicable_conditions']??f['applicable_conditions'],'similar_industries':b['similar_industries']??f['similar_industries'],'novel_capabilities':b['novel_capabilities']??f['novel_capabilities'],'owner':c,'derived_from':a,'custom_metrics':b['custom_metrics']??f['custom_metrics'],'custom_constraints':b['custom_constraints']??f['custom_constraints'],'evolution_history':[{'version':'v1','changed_at':Date['now'](),'changes':['Derived\x20from\x20builtin\x20\x27'+a+'\x27']}]};return this['userModes']['set'](g,h),await this['persistUserMode'](h),h;}async['evolveMode'](a,b,c,d,e=!![]){await this['ensureUserModesLoaded']();const f=this['userModeKey'](c,a),g=this['userModes']['get'](f);if(!g)return undefined;const h=e?this['bumpPatchVersion'](g['version']):g['version'],i={...g,...b,'name':g['name'],'owner':g['owner'],'source':'custom','derived_from':g['derived_from'],'evolution_history':[...g['evolution_history']??[],{'version':h,'changed_at':Date['now'](),'changes':[d]}],'version':h};return this['userModes']['set'](f,i),await this['persistUserMode'](i),i;}async['listUserModes'](a){await this['ensureUserModesLoaded']();const b=[];for(const c of this['userModes']['values']()){c['owner']===a&&b['push'](c);}return b;}async['getUserMode'](a,b){await this['ensureUserModesLoaded']();const c=this['userModeKey'](b,a);return this['userModes']['get'](c);}async['unregisterUserMode'](a,b){await this['ensureUserModesLoaded']();const c=this['userModeKey'](b,a),d=this['userModes']['delete'](c);return d&&await this['unpersistUserMode'](b,a),d;}['userModeKey'](a,b){return a+':'+b;}async['ensureUserModesLoaded'](){if(this['userModesLoaded'])return;this['userModesLoaded']=!![];try{const a=await this['persistence']['list']();for(const b of a){try{const c=JSON['parse'](b['data']);c?.['name']&&c?.['owner']&&c?.['machine_shape']&&this['userModes']['set'](this['userModeKey'](b['owner'],b['name']),c);}catch{console['warn']('[IndustryModeRegistry]\x20Skipping\x20corrupt\x20user_modes\x20row\x20\x27'+b['owner']+':'+b['name']+'\x27.');}}}catch(d){console['warn']('[IndustryModeRegistry]\x20Failed\x20to\x20load\x20persisted\x20user\x20modes:',d['message']);}}async['persistUserMode'](a){try{await this['persistence']['save'](a['owner'],a['name'],JSON['stringify'](a));}catch(b){console['warn']('[IndustryModeRegistry]\x20Failed\x20to\x20persist\x20user\x20mode\x20\x27'+a['owner']+':'+a['name']+'\x27:',b['message']);}}async['unpersistUserMode'](a,b){try{await this['persistence']['delete'](a,b);}catch(c){console['warn']('[IndustryModeRegistry]\x20Failed\x20to\x20delete\x20persisted\x20user\x20mode\x20\x27'+a+':'+b+'\x27:',c['message']);}}['bumpPatchVersion'](a){const b=a['replace'](/^v/,''),c=b['split']('.');if(c['length']<0x2)return'v'+b+'.1';const d=parseInt(c[0x1]??'0',0xa);return c[0x1]=String(d+0x1),'v'+c['join']('.');}async['applyTemplate'](a,b,c){const d=this['getMode'](a);if(d){const g=this['doApplyTemplate'](d,b,c);return this['recordCapabilitiesUsed'](d),g;}if(a['includes'](':')){const [h,i]=a['split'](':',0x2),j=await this['getUserMode'](i,h);if(j){const k=this['doApplyTemplate'](j,b,c);return this['recordCapabilitiesUsed'](j),k;}}const e=this['getMode']('general');if(!e)throw new Error('IndustryMode\x20\x27general\x27\x20not\x20registered\x20—\x20cannot\x20fallback');const f=this['doApplyTemplate'](e,b,c);return this['recordCapabilitiesUsed'](e),f;}async['applyUserMode'](a,b,c,d){const e=await this['getUserMode'](a,b);if(!e)throw new Error('User\x20mode\x20\x27'+a+'\x27\x20not\x20found\x20for\x20user\x20\x27'+b+'\x27');const f=this['doApplyTemplate'](e,c,d);return this['recordCapabilitiesUsed'](e),f;}['doApplyTemplate'](a,b,c){let d=this['buildObjects'](a,b,c);d=this['applyConfigOverrides'](a,d),d=this['applyConfigOverrideRules'](a,d,b,c);const e=this['buildEdges'](d,c),f=this['buildSteps'](d,e,c['network']),g=this['defaultScenarios'](a,b,d),h=this['validateBlueprint'](d,e,a);if(h['errors']['length']>0x0)throw new Error('Blueprint\x20validation\x20for\x20mode\x20\x27'+a['name']+'\x27\x20failed\x20with\x20'+h['errors']['length']+'\x20CRITICAL\x20error(s):\x0a'+h['errors']['map']((j,k)=>'\x20\x20'+(k+0x1)+'.\x20'+j)['join']('\x0a'));return h['warnings']['length']>0x0&&console['warn']('[IndustryModeRegistry]\x20Blueprint\x20validation\x20for\x20\x27'+a['name']+'\x27\x20produced\x20'+h['warnings']['length']+'\x20warning(s):',h['warnings']),{'context':c,'objects':d,'edges':e,'steps':f,'scenarios':g,'industry_source':a['name'],'applied_template':a['name']+'@'+a['version'],'validation':h};}['validateBlueprint'](a,b,c){const d=[],e=[],f=a['find'](j=>j['object_type']==='machine'),g=a['find'](j=>j['object_type']==='service');if(f){const j=f['config']['entry_node_forward_hint'];if(!j)e['push']('Machine\x20blueprint\x20missing\x20entry_node_forward_hint.\x20'+'The\x20AI\x20must\x20ensure\x20the\x20entry\x20node\x20(prev_node=\x27\x27)\x20has\x20≥1\x20forward\x20when\x20constructing\x20the\x20Machine\x20creation\x20call\x20(P0-2).');else j['required']===!![]&&!j['example_forward']&&e['push']('Machine\x20entry_node_forward_hint\x20marked\x20required\x20but\x20example_forward\x20is\x20missing.');const k=f['config']['nodes'];(!k||k['length']===0x0)&&d['push']('Machine\x20blueprint\x20has\x20no\x20nodes\x20—\x20mode\x20\x27'+c['name']+'\x27\x20machine_shape\x20is\x20empty.\x20'+'Add\x20nodes\x20to\x20the\x20mode\x27s\x20machine_shape\x20before\x20applying\x20template.');}if(g){const l=g['config']['compensation_fund'];l&&d['push']('Service\x20blueprint\x20has\x20compensation_fund=\x27'+l+'\x27\x20(string\x20reference).\x20'+'BUG:\x20compensation_fund\x20is\x20Balance<T>\x20(numeric),\x20NOT\x20a\x20Treasury\x20object\x20reference.\x20'+'Remove\x20compensation_fund\x20field\x20and\x20use\x20compensation_fund_balance\x20+\x20compensation_fund_add_hint\x20instead.\x20'+'Smart\x20contract\x20(service.move:179):\x20compensation_fund:\x20Balance<T>.');const m=g['config']['compensation_fund_balance'];m===undefined&&e['push']('Service\x20blueprint\x20missing\x20compensation_fund_balance.\x20'+'Should\x20be\x200\x20(initial\x20Balance<T>\x20state)\x20—\x20filled\x20via\x20service.compensation_fund_add(coin).');}const h=new Set(a['map'](n=>n['entry_id'])),i=new Set(a['map'](n=>n['name']));for(const n of b){const o=h['has'](n['from'])||i['has'](n['from']),p=h['has'](n['to'])||i['has'](n['to']);(!o||!p)&&d['push']('Edge\x20\x27'+n['from']+'\x27\x20→\x20\x27'+n['to']+'\x27\x20(kind=\x27'+n['edge_kind']+'\x27)\x20references\x20undefined\x20object.\x20'+('from_exists='+o+',\x20to_exists='+p+'.'));}return{'errors':d,'warnings':e};}['buildObjects'](a,b,c){const d=c['prefix'],e=[];e['push'](this['makeObject']('permission',d+'_permission',{'name':d+'_permission','description':'Permission:\x20role\x20permission\x20index\x20('+a['display_name']+')','permission_indexes':this['buildPermissionIndexes'](a),'tags':['industry:'+a['name']]}));const f=this['getFirstServiceGuardName'](a,d);for(const g of a['guards']){const h=this['deriveGuardShortName'](g['template_id']),i=d+'_guard_'+h;e['push'](this['makeObject']('guard',i,{'name':i,'description':'Guard:\x20'+g['purpose']+'\x20('+a['display_name']+')','host':g['host'],'template_id':g['template_id'],'tags':['industry:'+a['name'],'host:'+g['host']]}));}return e['push'](this['makeObject']('machine',d+'_machine',{'name':d+'_machine','description':'Machine:\x20workflow\x20topology\x20('+a['display_name']+')\x20—\x20'+a['machine_shape']['length']+'\x20nodes','nodes':a['machine_shape']['map'](j=>({'name':j['name'],'role':j['role']})),'guard_objects':a['guards']['filter'](j=>j['host']==='machine')['map'](j=>({'template_id':j['template_id'],'object_name':d+'_guard_'+this['deriveGuardShortName'](j['template_id']),'purpose':j['purpose']})),'permission':d+'_permission','entry_node_forward_hint':{'entry_node_name':a['machine_shape'][0x0]?.['name']??'paid','required':!![],'example_forward':{'next_node':a['machine_shape'][0x0]?.['name']??'paid','namedOperator':'','weight':0x1},'reason':'Progress\x20starts\x20at\x20current=\x27\x27\x20and\x20follows\x20the\x20entry\x20node\x27s\x20forwards.\x20'+'Without\x20a\x20forward,\x20Progress\x20is\x20permanently\x20stuck\x20(P0-2).\x20'+'Schema\x20refinement\x20in\x20MachineNodePairSchema\x20enforces\x20this\x20at\x20publish\x20time.'},'tags':['industry:'+a['name']]},!![])),e['push'](this['makeObject']('treasury',d+'_treasury',{'name':d+'_treasury','description':'Treasury:\x20fund\x20escrow\x20('+a['display_name']+')','owner_receive':!![],'tags':['industry:'+a['name']]})),e['push'](this['makeObject']('allocation',d+'_allocation',{'name':d+'_allocation','description':'Allocation:\x20allocation\x20strategy\x20('+a['display_name']+')\x20—\x20'+a['allocator']['description'],'strategy':a['allocator'],'treasury':d+'_treasury','guard':f,'tags':['industry:'+a['name']]})),e['push'](this['makeObject']('service',d+'_service',{'name':d+'_service','description':'Service:\x20business\x20service\x20('+a['display_name']+')\x20—\x20'+b['slice'](0x0,0x64),'machine':d+'_machine','buy_guard':f,'permission':d+'_permission','order_allocators':[d+'_allocation'],'compensation_fund_balance':0x0,'compensation_fund_required':a['risk_constraints']?.['require_compensation_fund']??![],'compensation_fund_coverage_ratio':a['risk_constraints']?.['compensation_fund_coverage_ratio']??0x5,'compensation_fund_add_hint':'Call\x20service.compensation_fund_add\x20with\x20a\x20Coin<T>\x20to\x20deposit.\x20'+'The\x20compensation_fund\x20is\x20a\x20Balance<T>\x20(numeric),\x20not\x20a\x20Treasury\x20object\x20reference.\x20'+'Without\x20deposit,\x20arbitration\x20rulings\x20that\x20award\x20refunds\x20to\x20buyers\x20cannot\x20be\x20paid\x20out.\x20'+('Recommend\x20'+(a['risk_constraints']?.['compensation_fund_coverage_ratio']??0x5)+'×\x20the\x20max\x20single-order\x20amount\x20(P1-1\x20evaluation\x20rule,\x20industry:\x20'+a['name']+').'),'arbitrations':[d+'_arb'],'rewards':[d+'_reward'],'business_intent':b,'industry':a['name'],'tags':['industry:'+a['name']]},!![])),e['push'](this['makeObject']('progress',d+'_progress',{'name':d+'_progress','description':'Progress:\x20order\x20fulfillment\x20progress\x20('+a['display_name']+')','parent':d+'_machine','tags':['industry:'+a['name']]})),e['push'](this['makeObject']('arb',d+'_arb',{'name':d+'_arb','description':'Arbitration:\x20arbitration\x20rules\x20('+a['display_name']+')\x20—\x20'+a['key_risk'],'guard':d+'_guard_buy','tags':['industry:'+a['name']]})),e['push'](this['makeObject']('reward',d+'_reward',{'name':d+'_reward','description':'Reward:\x20incentive\x20rules\x20('+a['display_name']+')','claim_guard':d+'_guard_buy','tags':['industry:'+a['name']]})),e['push'](this['makeObject']('contact',d+'_contact',{'name':d+'_contact','description':'Contact:\x20customer\x20service\x20contact\x20('+a['display_name']+')','tags':['industry:'+a['name']]})),e;}['buildPermissionIndexes'](a){const b=a['config_overrides']?.['permission'];if(b?.['permission_indexes'])return b['permission_indexes'];return[{'name':'merchant','description':'Service\x20owner\x20/\x20provider'},{'name':'customer','description':'Service\x20buyer\x20/\x20customer'},{'name':'arbiter','description':'Arbitration\x20arbiter'}];}['applyConfigOverrides'](a,b){if(!a['config_overrides'])return b;for(const c of b){const d=a['config_overrides'][c['object_type']];if(d)for(const [e,f]of Object['entries'](d)){c['config'][e]=f;}}return b;}['applyConfigOverrideRules'](a,b,c,d){if(!a['config_override_rules'])return b;for(const e of a['config_override_rules']){const f=b['find'](h=>h['object_type']===e['object_type']);if(!f)continue;let g;if(e['condition']){const h=this['evaluateCondition'](e,c,d);g=h?e['condition']['then_value']:e['condition']['else_value']??e['value'];}else g=e['value'];g!==undefined&&this['setNestedField'](f['config'],e['field_path'],g);}return b;}['evaluateCondition'](a,b,c){if(!a['condition'])return![];if(a['condition']['intent_contains'])return b['toLowerCase']()['includes'](a['condition']['intent_contains']['toLowerCase']());if(a['condition']['context_field']&&a['condition']['matches']!==undefined){const d=c[a['condition']['context_field']];return d===a['condition']['matches'];}return![];}['setNestedField'](a,b,c){const d=b['split']('.');let e=a;for(let f=0x0;f<d['length']-0x1;f++){const g=d[f];(e[g]===undefined||e[g]===null)&&(e[g]={}),e=e[g];}e[d[d['length']-0x1]]=c;}['buildEdges'](a,b){const c=[],d=r=>a['find'](s=>s['name']===r),e=a[0x0]?.['config']?.['prefix'],f=b?.['prefix']??(typeof e==='string'?e:undefined)??a[0x0]?.['name']['split']('_')[0x0]??'',g=d(f+'_service'),h=d(f+'_machine'),i=d(f+'_permission'),j=d(f+'_allocation'),k=d(f+'_treasury'),l=d(f+'_arb'),m=d(f+'_reward'),n=d(f+'_progress'),o=a['filter'](r=>r['object_type']==='guard'),p=o['find'](r=>r['config']?.['host']==='service'),q=o['filter'](r=>r['config']?.['host']==='machine');if(!g||!h||!i){const r=[];if(!g)r['push']('service');if(!h)r['push']('machine');if(!i)r['push']('permission');return console['warn']('[buildEdges]\x20Missing\x20core\x20objects:\x20'+r['join'](',\x20')+'.\x20'+('Edges\x20will\x20be\x20empty\x20(prefix=\x27'+f+'\x27).\x20')+'Check\x20buildObjects\x20output\x20or\x20context.prefix.'),c;}c['push'](this['makeEdge'](g,h,'machine','service.machine',!![]));p&&c['push'](this['makeEdge'](g,p,'buy_guard','service.buy_guard',!![]));c['push'](this['makeEdge'](g,i,'permission','service.permission',!![]));if(j)c['push'](this['makeEdge'](g,j,'order_allocators','service.order_allocators',!![]));if(l)c['push'](this['makeEdge'](g,l,'arbitrations','service.arbitrations',![]));if(m)c['push'](this['makeEdge'](g,m,'rewards','service.rewards',![]));c['push'](this['makeEdge'](h,i,'permission','machine.permission',![]));for(const s of q){c['push'](this['makeEdge'](h,s,'guard','machine.forwards.guard',![]));}if(n)c['push'](this['makeEdge'](n,h,'parent','progress.parent',![]));if(j&&k)c['push'](this['makeEdge'](j,k,'treasury','allocation.treasury',![]));if(j&&p)c['push'](this['makeEdge'](j,p,'buy_guard','allocation.guard',![]));return c;}['makeEdge'](a,b,c,d,e){return{'from':a['entry_id'],'to':b['entry_id'],'edge_kind':c,'field_path':d,'required_at_publish':e};}['buildSteps'](a,b,c){const d=['permission','guard','machine','treasury','allocation','arb','reward','contact','service','progress'],e=[],f=new Map();let g=0x1;for(const h of d){const i=a['find'](l=>l['object_type']===h);if(!i)continue;const j=[];for(const l of b){if(l['to']===i['entry_id']){const m=f['get'](l['from']);m!==undefined&&j['push'](m);}}const k=i['publish_required']?'publish':'create';e['push']({'step':g,'object_type':i['object_type'],'operation':k,'substep_count':0x1,'depends_on':j,'entry_id':i['entry_id'],'network_phase':c}),f['set'](i['entry_id'],g),g++;}return e;}['defaultScenarios'](a,b,c){const d=c['find'](e=>e['object_type']==='service');return[{'scenario_id':a['name']+'_primary','description':a['display_name']+'\x20main\x20flow:\x20'+b['slice'](0x0,0x50),'primary_object':d?.['entry_id']??'','supporting_objects':c['filter'](e=>e['object_type']!=='service')['map'](e=>e['entry_id'])}];}['recordCapabilitiesUsed'](a){if(!a['capabilities_used'])return;try{const b=CapabilityRegistry['Instance']();for(const c of a['capabilities_used']){b['recordUsage'](c,a['name']);}}catch{}}['deriveGuardShortName'](a){if(a['startsWith']('tpl_')){const c=a['split']('_');return c[c['length']-0x1]||a;}const b=a['match'](/^([a-z]+)_guard_/);if(b)return b[0x1];return a['split']('_')[0x0]||a;}['getFirstServiceGuardName'](a,b){const c=a['guards']['find'](d=>d['host']==='service');if(!c)return'';return b+'_guard_'+this['deriveGuardShortName'](c['template_id']);}['makeObject'](a,b,c,d=![]){return{'entry_id':a+':'+b,'object_type':a,'name':b,'config':c,'publish_required':d,'status':'draft'};}['registerBuiltinModes'](){for(const a of BUILTIN_MODES){this['registerMode'](a);}}}export function getIndustryModeRegistry(){return IndustryModeRegistry['Instance']();}export const INDUSTRY_MODE_REGISTRY_VERSION=2.2;
1
+ import{UserModeStorage}from'@wowok/wowok';import{CapabilityRegistry}from'./capability-manifest.js';import{ModeEvaluator}from'./mode-evaluator.js';import{MetricRegistry}from'./metric-registry.js';import{ConstraintRegistry}from'./constraint-registry.js';import{BUILTIN_MODES}from'./modes.js';export class IndustryModeRegistry{static ['instance'];['registrations']=new Map();['userModes']=new Map();['aliases']=new Map();['evaluator'];['initialized']=![];['persistence']=new UserModeStorage();['userModesLoaded']=![];static['Instance'](){return!IndustryModeRegistry['instance']&&(IndustryModeRegistry['instance']=new IndustryModeRegistry()),IndustryModeRegistry['instance'];}constructor(){this['evaluator']=new ModeEvaluator(CapabilityRegistry['Instance'](),MetricRegistry['Instance'](),ConstraintRegistry['Instance']()),this['registerBuiltinModes'](),this['initialized']=!![];}['registerMode'](a,b){if(!a['name']||!a['traits']||!a['machine_shape'])return console['warn']('[IndustryModeRegistry]\x20registerMode\x20rejected:\x20invalid\x20mode\x20'+('(name='+(a['name']||'<missing>')+',\x20traits='+(a['traits']?'ok':'<missing>')+',\x20')+('machine_shape='+(a['machine_shape']?'ok':'<missing>')+').')),![];if(this['registrations']['has'](a['name'])){const c=this['registrations']['get'](a['name']);return console['warn']('[IndustryModeRegistry]\x20registerMode\x20rejected:\x20mode\x20\x27'+a['name']+'\x27\x20already\x20registered\x20'+('(registered_at='+new Date(c?.['registered_at']??0x0)['toISOString']()+').\x20')+'Use\x20evolveMode/deriveMode\x20for\x20user\x20modifications,\x20or\x20unregister\x20first.'),![];}this['registrations']['set'](a['name'],{'mode':a,'aliases':b,'enabled':!![],'registered_at':Date['now']()});if(b)for(const d of b){this['aliases']['set'](d,a['name']);}return!![];}['getMode'](a){const b=this['resolveAlias'](a);return this['registrations']['get'](b)?.['mode'];}['listModes'](){return Array['from'](this['registrations']['values']())['filter'](a=>a['enabled'])['map'](a=>a['mode']);}['resolveAlias'](a){return this['aliases']['get'](a)??a;}['hasMode'](a){const b=this['resolveAlias'](a);return this['registrations']['has'](b);}['unregisterMode'](a){const b=this['resolveAlias'](a);if(!this['registrations']['has'](b))return![];this['registrations']['delete'](b);for(const [c,d]of this['aliases']){if(d===b)this['aliases']['delete'](c);}return!![];}['evaluateMode'](a,b,c){const d=this['getMode'](a);if(!d)return{'applicable':![],'risk_score':0x64,'benefit_score':0x0,'risk_benefit_ratio':0x0,'capability_conflicts':[],'violated_constraints':[],'unmet_conditions':['Mode\x20\x27'+a+'\x27\x20not\x20found'],'recommendations':['Mode\x20\x27'+a+'\x27\x20not\x20registered,\x20falling\x20back\x20to\x20\x27general\x27']};return this['evaluator']['evaluateMode'](d,b,c);}['evaluateMigration'](a,b){const c=this['getMode'](a),d=this['getMode'](b);if(!c||!d)return{'feasibility_score':0x0,'source_risk_score':0x0,'target_risk_score':0x0,'source_benefit_score':0x0,'target_benefit_score':0x0,'risk_delta':0x0,'benefit_delta':0x0,'added_capabilities':[],'removed_capabilities':[],'conflicting_capabilities':[],'recommendations':['Mode\x20\x27'+a+'\x27\x20or\x20\x27'+b+'\x27\x20not\x20found']};return this['evaluator']['evaluateMigration'](c,d);}async['registerUserMode'](a,b){await this['ensureUserModesLoaded']();if(!a['name']||!a['owner']||!a['machine_shape'])return![];if(a['source']!=='custom')return![];if(a['owner']!==b)return![];const c=this['userModeKey'](a['owner'],a['name']);if(this['registrations']['has'](a['name']))return![];if(this['userModes']['has'](c))return![];return(!a['evolution_history']||a['evolution_history']['length']===0x0)&&(a['evolution_history']=[{'version':a['version']||'v1','changed_at':Date['now'](),'changes':['Initial\x20registration\x20(registerUserMode)']}]),this['userModes']['set'](c,a),await this['persistUserMode'](a),!![];}async['deriveMode'](a,b,c,d,e){await this['ensureUserModesLoaded']();const f=this['getMode'](a);if(!f)return undefined;if(!d||this['registrations']['has'](d))return undefined;const g=this['userModeKey'](c,d);if(this['userModes']['has'](g))return undefined;const h={'name':d,'display_name':e??d,'version':'v1','source':'custom','traits':b['traits']??f['traits'],'machine_shape':b['machine_shape']??f['machine_shape'],'guards':b['guards']??f['guards'],'allocator':b['allocator']??f['allocator'],'risk_checks':b['risk_checks']??f['risk_checks'],'needs':b['needs']??f['needs'],'flywheel':b['flywheel']??f['flywheel'],'key_risk':b['key_risk']??f['key_risk'],'build_notes':b['build_notes']??f['build_notes'],'capabilities_used':b['capabilities_used']??f['capabilities_used'],'config_overrides':b['config_overrides']??f['config_overrides'],'config_override_rules':b['config_override_rules']??f['config_override_rules'],'expected_benefits':b['expected_benefits']??f['expected_benefits'],'risk_appetite':b['risk_appetite']??f['risk_appetite'],'risk_constraints':b['risk_constraints']??f['risk_constraints'],'applicable_conditions':b['applicable_conditions']??f['applicable_conditions'],'similar_industries':b['similar_industries']??f['similar_industries'],'novel_capabilities':b['novel_capabilities']??f['novel_capabilities'],'owner':c,'derived_from':a,'custom_metrics':b['custom_metrics']??f['custom_metrics'],'custom_constraints':b['custom_constraints']??f['custom_constraints'],'evolution_history':[{'version':'v1','changed_at':Date['now'](),'changes':['Derived\x20from\x20builtin\x20\x27'+a+'\x27']}]};return this['userModes']['set'](g,h),await this['persistUserMode'](h),h;}async['evolveMode'](a,b,c,d,e=!![]){await this['ensureUserModesLoaded']();const f=this['userModeKey'](c,a),g=this['userModes']['get'](f);if(!g)return undefined;const h=e?this['bumpPatchVersion'](g['version']):g['version'],i={...g,...b,'name':g['name'],'owner':g['owner'],'source':'custom','derived_from':g['derived_from'],'evolution_history':[...g['evolution_history']??[],{'version':h,'changed_at':Date['now'](),'changes':[d]}],'version':h};return this['userModes']['set'](f,i),await this['persistUserMode'](i),i;}async['listUserModes'](a){await this['ensureUserModesLoaded']();const b=[];for(const c of this['userModes']['values']()){c['owner']===a&&b['push'](c);}return b;}async['getUserMode'](a,b){await this['ensureUserModesLoaded']();const c=this['userModeKey'](b,a);return this['userModes']['get'](c);}async['unregisterUserMode'](a,b){await this['ensureUserModesLoaded']();const c=this['userModeKey'](b,a),d=this['userModes']['delete'](c);return d&&await this['unpersistUserMode'](b,a),d;}['userModeKey'](a,b){return a+':'+b;}async['ensureUserModesLoaded'](){if(this['userModesLoaded'])return;this['userModesLoaded']=!![];try{const a=await this['persistence']['list']();for(const b of a){try{const c=JSON['parse'](b['data']);c?.['name']&&c?.['owner']&&c?.['machine_shape']&&this['userModes']['set'](this['userModeKey'](b['owner'],b['name']),c);}catch{console['warn']('[IndustryModeRegistry]\x20Skipping\x20corrupt\x20user_modes\x20row\x20\x27'+b['owner']+':'+b['name']+'\x27.');}}}catch(d){console['warn']('[IndustryModeRegistry]\x20Failed\x20to\x20load\x20persisted\x20user\x20modes:',d['message']);}}async['persistUserMode'](a){try{await this['persistence']['save'](a['owner'],a['name'],JSON['stringify'](a));}catch(b){console['warn']('[IndustryModeRegistry]\x20Failed\x20to\x20persist\x20user\x20mode\x20\x27'+a['owner']+':'+a['name']+'\x27:',b['message']);}}async['unpersistUserMode'](a,b){try{await this['persistence']['delete'](a,b);}catch(c){console['warn']('[IndustryModeRegistry]\x20Failed\x20to\x20delete\x20persisted\x20user\x20mode\x20\x27'+a+':'+b+'\x27:',c['message']);}}['bumpPatchVersion'](a){const b=a['replace'](/^v/,''),c=b['split']('.');if(c['length']<0x2)return'v'+b+'.1';const d=parseInt(c[0x1]??'0',0xa);return c[0x1]=String(d+0x1),'v'+c['join']('.');}async['applyTemplate'](a,b,c){const d=this['getMode'](a);if(d){const g=this['doApplyTemplate'](d,b,c);return this['recordCapabilitiesUsed'](d),g;}if(a['includes'](':')){const [h,i]=a['split'](':',0x2),j=await this['getUserMode'](i,h);if(j){const k=this['doApplyTemplate'](j,b,c);return this['recordCapabilitiesUsed'](j),k;}}const e=this['getMode']('general');if(!e)throw new Error('IndustryMode\x20\x27general\x27\x20not\x20registered\x20—\x20cannot\x20fallback');const f=this['doApplyTemplate'](e,b,c);return this['recordCapabilitiesUsed'](e),f;}async['applyUserMode'](a,b,c,d){const e=await this['getUserMode'](a,b);if(!e)throw new Error('User\x20mode\x20\x27'+a+'\x27\x20not\x20found\x20for\x20user\x20\x27'+b+'\x27');const f=this['doApplyTemplate'](e,c,d);return this['recordCapabilitiesUsed'](e),f;}['doApplyTemplate'](a,b,c){let d=this['buildObjects'](a,b,c);d=this['applyConfigOverrides'](a,d),d=this['applyConfigOverrideRules'](a,d,b,c);const e=this['buildEdges'](d,c),f=this['buildSteps'](d,e,c['network']),g=this['defaultScenarios'](a,b,d),h=this['validateBlueprint'](d,e,a);if(h['errors']['length']>0x0)throw new Error('Blueprint\x20validation\x20for\x20mode\x20\x27'+a['name']+'\x27\x20failed\x20with\x20'+h['errors']['length']+'\x20CRITICAL\x20error(s):\x0a'+h['errors']['map']((j,k)=>'\x20\x20'+(k+0x1)+'.\x20'+j)['join']('\x0a'));return h['warnings']['length']>0x0&&console['warn']('[IndustryModeRegistry]\x20Blueprint\x20validation\x20for\x20\x27'+a['name']+'\x27\x20produced\x20'+h['warnings']['length']+'\x20warning(s):',h['warnings']),{'context':c,'objects':d,'edges':e,'steps':f,'scenarios':g,'industry_source':a['name'],'applied_template':a['name']+'@'+a['version'],'validation':h};}['validateBlueprint'](a,b,c){const d=[],e=[],f=a['find'](j=>j['object_type']==='machine'),g=a['find'](j=>j['object_type']==='service');if(f){const j=f['config']['entry_node_forward_hint'];if(!j)e['push']('Machine\x20blueprint\x20missing\x20entry_node_forward_hint.\x20'+'The\x20AI\x20must\x20ensure\x20the\x20entry\x20node\x20(prev_node=\x27\x27)\x20has\x20≥1\x20forward\x20when\x20constructing\x20the\x20Machine\x20creation\x20call\x20(P0-2).');else j['required']===!![]&&!j['example_forward']&&e['push']('Machine\x20entry_node_forward_hint\x20marked\x20required\x20but\x20example_forward\x20is\x20missing.');const k=f['config']['nodes'];(!k||k['length']===0x0)&&d['push']('Machine\x20blueprint\x20has\x20no\x20nodes\x20—\x20mode\x20\x27'+c['name']+'\x27\x20machine_shape\x20is\x20empty.\x20'+'Add\x20nodes\x20to\x20the\x20mode\x27s\x20machine_shape\x20before\x20applying\x20template.');}if(g){const l=g['config']['compensation_fund'];l&&d['push']('Service\x20blueprint\x20has\x20compensation_fund=\x27'+l+'\x27\x20(string\x20reference).\x20'+'BUG:\x20compensation_fund\x20is\x20Balance<T>\x20(numeric),\x20NOT\x20a\x20Treasury\x20object\x20reference.\x20'+'Remove\x20compensation_fund\x20field\x20and\x20use\x20compensation_fund_balance\x20+\x20compensation_fund_add_hint\x20instead.\x20'+'Smart\x20contract\x20(service.move:179):\x20compensation_fund:\x20Balance<T>.');const m=g['config']['compensation_fund_balance'];m===undefined&&e['push']('Service\x20blueprint\x20missing\x20compensation_fund_balance.\x20'+'Should\x20be\x200\x20(initial\x20Balance<T>\x20state)\x20—\x20filled\x20via\x20service.compensation_fund_add(coin).');}const h=new Set(a['map'](n=>n['entry_id'])),i=new Set(a['map'](n=>n['name']));for(const n of b){const o=h['has'](n['from'])||i['has'](n['from']),p=h['has'](n['to'])||i['has'](n['to']);(!o||!p)&&d['push']('Edge\x20\x27'+n['from']+'\x27\x20→\x20\x27'+n['to']+'\x27\x20(kind=\x27'+n['edge_kind']+'\x27)\x20references\x20undefined\x20object.\x20'+('from_exists='+o+',\x20to_exists='+p+'.'));}return{'errors':d,'warnings':e};}['buildObjects'](a,b,c){const d=c['prefix'],e=[];e['push'](this['makeObject']('permission',d+'_permission',{'name':d+'_permission','description':'Permission:\x20role\x20permission\x20index\x20('+a['display_name']+')','permission_indexes':this['buildPermissionIndexes'](a),'tags':['industry:'+a['name']]}));const f=this['getFirstServiceGuardName'](a,d);for(const g of a['guards']){const h=this['deriveGuardShortName'](g['template_id']),i=d+'_guard_'+h;e['push'](this['makeObject']('guard',i,{'name':i,'description':'Guard:\x20'+g['purpose']+'\x20('+a['display_name']+')','host':g['host'],'template_id':g['template_id'],'tags':['industry:'+a['name'],'host:'+g['host']]}));}return e['push'](this['makeObject']('machine',d+'_machine',{'name':d+'_machine','description':'Machine:\x20workflow\x20topology\x20('+a['display_name']+')\x20—\x20'+a['machine_shape']['length']+'\x20nodes','nodes':a['machine_shape']['map'](j=>({'name':j['name'],'role':j['role']})),'guard_objects':a['guards']['filter'](j=>j['host']==='machine')['map'](j=>({'template_id':j['template_id'],'object_name':d+'_guard_'+this['deriveGuardShortName'](j['template_id']),'purpose':j['purpose']})),'permission':d+'_permission','entry_node_forward_hint':{'entry_node_name':a['machine_shape'][0x0]?.['name']??'paid','required':!![],'example_forward':{'next_node':a['machine_shape'][0x0]?.['name']??'paid','namedOperator':'','weight':0x1},'reason':'Progress\x20starts\x20at\x20current=\x27\x27\x20and\x20follows\x20the\x20entry\x20node\x27s\x20forwards.\x20'+'Without\x20a\x20forward,\x20Progress\x20is\x20permanently\x20stuck\x20(P0-2).\x20'+'Schema\x20refinement\x20in\x20MachineNodePairSchema\x20enforces\x20this\x20at\x20publish\x20time.'},'tags':['industry:'+a['name']]},!![])),e['push'](this['makeObject']('treasury',d+'_treasury',{'name':d+'_treasury','description':'Treasury:\x20fund\x20escrow\x20('+a['display_name']+')','owner_receive':!![],'tags':['industry:'+a['name']]})),e['push'](this['makeObject']('allocation',d+'_allocation',{'name':d+'_allocation','description':'Allocation:\x20allocation\x20strategy\x20('+a['display_name']+')\x20—\x20'+a['allocator']['description'],'strategy':a['allocator'],'treasury':d+'_treasury','guard':f,'tags':['industry:'+a['name']]})),e['push'](this['makeObject']('service',d+'_service',{'name':d+'_service','description':'Service:\x20business\x20service\x20('+a['display_name']+')\x20—\x20'+b['slice'](0x0,0x64),'machine':d+'_machine','buy_guard':f,'permission':d+'_permission','order_allocators':[d+'_allocation'],'compensation_fund_balance':0x0,'compensation_fund_required':a['risk_constraints']?.['require_compensation_fund']??![],'compensation_fund_coverage_ratio':a['risk_constraints']?.['compensation_fund_coverage_ratio']??0x5,'compensation_fund_add_hint':'Call\x20service.compensation_fund_add\x20with\x20a\x20Coin<T>\x20to\x20deposit.\x20'+'The\x20compensation_fund\x20is\x20a\x20Balance<T>\x20(numeric),\x20not\x20a\x20Treasury\x20object\x20reference.\x20'+'Without\x20deposit,\x20arbitration\x20rulings\x20that\x20award\x20refunds\x20to\x20buyers\x20cannot\x20be\x20paid\x20out.\x20'+('Recommend\x20'+(a['risk_constraints']?.['compensation_fund_coverage_ratio']??0x5)+'×\x20the\x20max\x20single-order\x20amount\x20(P1-1\x20evaluation\x20rule,\x20industry:\x20'+a['name']+').'),'arbitrations':[d+'_arb'],'rewards':[d+'_reward'],'business_intent':b,'industry':a['name'],'tags':['industry:'+a['name']]},!![])),e['push'](this['makeObject']('progress',d+'_progress',{'name':d+'_progress','description':'Progress:\x20order\x20fulfillment\x20progress\x20('+a['display_name']+')','parent':d+'_machine','tags':['industry:'+a['name']]})),e['push'](this['makeObject']('arb',d+'_arb',{'name':d+'_arb','description':'Arbitration:\x20arbitration\x20rules\x20('+a['display_name']+')\x20—\x20'+a['key_risk'],'guard':d+'_guard_buy','tags':['industry:'+a['name']]})),e['push'](this['makeObject']('reward',d+'_reward',{'name':d+'_reward','description':'Reward:\x20incentive\x20rules\x20('+a['display_name']+')','claim_guard':d+'_guard_buy','tags':['industry:'+a['name']]})),e['push'](this['makeObject']('contact',d+'_contact',{'name':d+'_contact','description':'Contact:\x20customer\x20service\x20contact\x20('+a['display_name']+')','tags':['industry:'+a['name']]})),e;}['buildPermissionIndexes'](a){const b=a['config_overrides']?.['permission'];if(b?.['permission_indexes'])return b['permission_indexes'];return[{'name':'merchant','description':'Service\x20owner\x20/\x20provider'},{'name':'customer','description':'Service\x20buyer\x20/\x20customer'},{'name':'arbiter','description':'Arbitration\x20arbiter'}];}['applyConfigOverrides'](a,b){if(!a['config_overrides'])return b;for(const c of b){const d=a['config_overrides'][c['object_type']];if(d)for(const [e,f]of Object['entries'](d)){c['config'][e]=f;}}return b;}['applyConfigOverrideRules'](a,b,c,d){if(!a['config_override_rules'])return b;for(const e of a['config_override_rules']){const f=b['find'](h=>h['object_type']===e['object_type']);if(!f)continue;let g;if(e['condition']){const h=this['evaluateCondition'](e,c,d);g=h?e['condition']['then_value']:e['condition']['else_value']??e['value'];}else g=e['value'];g!==undefined&&this['setNestedField'](f['config'],e['field_path'],g);}return b;}['evaluateCondition'](a,b,c){if(!a['condition'])return![];if(a['condition']['intent_contains'])return b['toLowerCase']()['includes'](a['condition']['intent_contains']['toLowerCase']());if(a['condition']['context_field']&&a['condition']['matches']!==undefined){const d=c[a['condition']['context_field']];return d===a['condition']['matches'];}return![];}['setNestedField'](a,b,c){const d=b['split']('.');let e=a;for(let f=0x0;f<d['length']-0x1;f++){const g=d[f];(e[g]===undefined||e[g]===null)&&(e[g]={}),e=e[g];}e[d[d['length']-0x1]]=c;}['buildEdges'](a,b){const c=[],d=r=>a['find'](s=>s['name']===r),e=a[0x0]?.['config']?.['prefix'],f=b?.['prefix']??(typeof e==='string'?e:undefined)??a[0x0]?.['name']['split']('_')[0x0]??'',g=d(f+'_service'),h=d(f+'_machine'),i=d(f+'_permission'),j=d(f+'_allocation'),k=d(f+'_treasury'),l=d(f+'_arb'),m=d(f+'_reward'),n=d(f+'_progress'),o=a['filter'](r=>r['object_type']==='guard'),p=o['find'](r=>r['config']?.['host']==='service'),q=o['filter'](r=>r['config']?.['host']==='machine');if(!g||!h||!i){const r=[];if(!g)r['push']('service');if(!h)r['push']('machine');if(!i)r['push']('permission');return console['warn']('[buildEdges]\x20Missing\x20core\x20objects:\x20'+r['join'](',\x20')+'.\x20'+('Edges\x20will\x20be\x20empty\x20(prefix=\x27'+f+'\x27).\x20')+'Check\x20buildObjects\x20output\x20or\x20context.prefix.'),c;}c['push'](this['makeEdge'](g,h,'machine','service.machine',!![]));p&&c['push'](this['makeEdge'](g,p,'buy_guard','service.buy_guard',!![]));c['push'](this['makeEdge'](g,i,'permission','service.permission',!![]));if(j)c['push'](this['makeEdge'](g,j,'order_allocators','service.order_allocators',!![]));if(l)c['push'](this['makeEdge'](g,l,'arbitrations','service.arbitrations',![]));if(m)c['push'](this['makeEdge'](g,m,'rewards','service.rewards',![]));c['push'](this['makeEdge'](h,i,'permission','machine.permission',![]));for(const s of q){c['push'](this['makeEdge'](h,s,'guard','machine.forwards.guard',![]));}if(n)c['push'](this['makeEdge'](n,h,'parent','progress.parent',![]));if(j&&k)c['push'](this['makeEdge'](j,k,'treasury','allocation.treasury',![]));if(j&&p)c['push'](this['makeEdge'](j,p,'buy_guard','allocation.guard',![]));return c;}['makeEdge'](a,b,c,d,e){return{'from':a['entry_id'],'to':b['entry_id'],'edge_kind':c,'field_path':d,'required_at_publish':e};}['buildSteps'](a,b,c){const d=['permission','guard','machine','treasury','allocation','arb','reward','contact','service','progress'],e=[],f=new Map();let g=0x1;for(const h of d){const i=a['find'](l=>l['object_type']===h);if(!i)continue;const j=[];for(const l of b){if(l['to']===i['entry_id']){const m=f['get'](l['from']);m!==undefined&&j['push'](m);}}const k=i['publish_required']?'publish':'create';e['push']({'step':g,'object_type':i['object_type'],'operation':k,'substep_count':0x1,'depends_on':j,'entry_id':i['entry_id'],'network_phase':c}),f['set'](i['entry_id'],g),g++;}return e;}['defaultScenarios'](a,b,c){const d=c['find'](e=>e['object_type']==='service');return[{'scenario_id':a['name']+'_primary','description':a['display_name']+'\x20main\x20flow:\x20'+b['slice'](0x0,0x50),'primary_object':d?.['entry_id']??'','supporting_objects':c['filter'](e=>e['object_type']!=='service')['map'](e=>e['entry_id'])}];}['recordCapabilitiesUsed'](a){if(!a['capabilities_used'])return;try{const b=CapabilityRegistry['Instance']();for(const c of a['capabilities_used']){b['recordUsage'](c,a['name']);}}catch{}}['deriveGuardShortName'](a){if(a['startsWith']('tpl_')){const c=a['split']('_');return c[c['length']-0x1]||a;}const b=a['match'](/^([a-z]+)_guard_/);if(b)return b[0x1];return a['split']('_')[0x0]||a;}['getFirstServiceGuardName'](a,b){const c=a['guards']['find'](d=>d['host']==='service');if(!c)return'';return b+'_guard_'+this['deriveGuardShortName'](c['template_id']);}['makeObject'](a,b,c,d=![]){return{'entry_id':a+':'+b,'object_type':a,'name':b,'config':c,'publish_required':d,'status':'draft'};}['registerBuiltinModes'](){for(const a of BUILTIN_MODES){this['registerMode'](a);}}}export function getIndustryModeRegistry(){return IndustryModeRegistry['Instance']();}export const INDUSTRY_MODE_REGISTRY_VERSION=2.2;
@@ -0,0 +1,8 @@
1
+ export interface GraphNodeBase {
2
+ id: string;
3
+ address?: string;
4
+ }
5
+ export interface GraphEdgeBase {
6
+ from: string;
7
+ to: string;
8
+ }
@@ -0,0 +1 @@
1
+ export{};
@@ -9,6 +9,7 @@ import type { ODG, ExpectedResult, VerifyReport, RecoveryAction, Checkpoint } fr
9
9
  export declare class Harness {
10
10
  private context;
11
11
  plan(userInput: string, taskId?: string): ODG;
12
+ planFromSemanticGraph(graph: import("../project/semantic-graph.js").SemanticObjectGraph, taskId?: string): ODG;
12
13
  classifyIntent(userInput: string): import("./plan.js").IntentClassification;
13
14
  getDecisions(odg: ODG): DecisionPoint[];
14
15
  getMigrationDecisions(options?: {
@@ -1 +1 @@
1
- export*from'./types.js';export*from'./plan.js';export*from'./verify.js';export*from'./recover.js';export*from'./checkpoint.js';import{classifyIntent,generateODG,identifyDecisionPoints,detectCycles,SCENARIO_REGISTRY,identifyMigrationDecisions}from'./plan.js';import{verify,generateExpected}from'./verify.js';import{recover,resetAttempts,getBackoffDelay,RECOVERY_RULES}from'./recover.js';import{saveCheckpoint,loadLatestCheckpoint,listCheckpoints,listTasks,createCheckpoint}from'./checkpoint.js';export class Harness{['context']=new Map();['plan'](a,b){return generateODG(a,b);}['classifyIntent'](a){return classifyIntent(a);}['getDecisions'](a){return identifyDecisionPoints(a);}['getMigrationDecisions'](a){return identifyMigrationDecisions(a);}['detectCycles'](a){return detectCycles(a);}['getScenarioRegistry'](){return SCENARIO_REGISTRY;}['expect'](a,b,c,d){return generateExpected(a,b,c,d);}['verify'](a){return verify(a);}['recover'](a,b,c){return recover(a,b,c);}['resetRecovery'](a){resetAttempts(a);}['getBackoffDelay'](a){return getBackoffDelay(a);}['getRecoveryRules'](){return RECOVERY_RULES;}['checkpoint'](a,b,c,d,e,f,g,h){const i=createCheckpoint(a,b,c,d,e,f,g,h);return saveCheckpoint(i),i;}['loadCheckpoint'](a){return loadLatestCheckpoint(a);}['listCheckpoints'](a){return listCheckpoints(a);}['listTasks'](){return listTasks();}['setContext'](a,b){this['context']['set'](a,b);}['getContext'](a){return this['context']['get'](a);}}let singleton=null;export function getHarness(){return!singleton&&(singleton=new Harness()),singleton;}export function setHarness(a){singleton=a;}
1
+ export*from'./types.js';export*from'./plan.js';export*from'./verify.js';export*from'./recover.js';export*from'./checkpoint.js';import{classifyIntent,generateODG,generateODGFromSemanticGraph,identifyDecisionPoints,detectCycles,SCENARIO_REGISTRY,identifyMigrationDecisions}from'./plan.js';import{verify,generateExpected}from'./verify.js';import{recover,resetAttempts,getBackoffDelay,RECOVERY_RULES}from'./recover.js';import{saveCheckpoint,loadLatestCheckpoint,listCheckpoints,listTasks,createCheckpoint}from'./checkpoint.js';export class Harness{['context']=new Map();['plan'](a,b){return generateODG(a,b);}['planFromSemanticGraph'](a,b){return generateODGFromSemanticGraph(a,b);}['classifyIntent'](a){return classifyIntent(a);}['getDecisions'](a){return identifyDecisionPoints(a);}['getMigrationDecisions'](a){return identifyMigrationDecisions(a);}['detectCycles'](a){return detectCycles(a);}['getScenarioRegistry'](){return SCENARIO_REGISTRY;}['expect'](a,b,c,d){return generateExpected(a,b,c,d);}['verify'](a){return verify(a);}['recover'](a,b,c){return recover(a,b,c);}['resetRecovery'](a){resetAttempts(a);}['getBackoffDelay'](a){return getBackoffDelay(a);}['getRecoveryRules'](){return RECOVERY_RULES;}['checkpoint'](a,b,c,d,e,f,g,h){const i=createCheckpoint(a,b,c,d,e,f,g,h);return saveCheckpoint(i),i;}['loadCheckpoint'](a){return loadLatestCheckpoint(a);}['listCheckpoints'](a){return listCheckpoints(a);}['listTasks'](){return listTasks();}['setContext'](a,b){this['context']['set'](a,b);}['getContext'](a){return this['context']['get'](a);}}let singleton=null;export function getHarness(){return!singleton&&(singleton=new Harness()),singleton;}export function setHarness(a){singleton=a;}
@@ -1,4 +1,5 @@
1
1
  import type { ODG, ScenarioTemplate } from "./types.js";
2
+ import type { SemanticObjectGraph } from "../project/semantic-graph.js";
2
3
  export declare const SCENARIO_REGISTRY: ScenarioTemplate[];
3
4
  export interface IntentClassification {
4
5
  scenario: string;
@@ -8,6 +9,7 @@ export interface IntentClassification {
8
9
  }
9
10
  export declare function classifyIntent(userInput: string): IntentClassification;
10
11
  export declare function generateODG(userInput: string, taskId?: string): ODG;
12
+ export declare function generateODGFromSemanticGraph(graph: SemanticObjectGraph, taskId?: string): ODG;
11
13
  export interface DecisionPoint {
12
14
  round: string;
13
15
  question: string;
@@ -1 +1 @@
1
- export const SCENARIO_REGISTRY=[{'name':'freelance','keywords':['freelance','service','deliverable','client','gig','consult','design','develop'],'description':'Service\x20delivery\x20with\x20escrow:\x20publish\x20→\x20order\x20→\x20deliver\x20→\x20accept\x20→\x20withdraw','default_permissions':{'provider':0x3e8,'customer':'namedOperator','arbiter':0x5dc},'objects':[{'type':'Permission','reversible':!![],'dependencies':[],'user_decisions':['reuse\x20existing\x20or\x20create\x20new?'],'estimated_time':'2min'},{'type':'Service','reversible':!![],'dependencies':['Permission'],'user_decisions':['name','description','token_type'],'estimated_time':'3min'},{'type':'Machine','reversible':!![],'dependencies':['Service'],'user_decisions':['state\x20graph','operators'],'estimated_time':'10min'},{'type':'Guard','reversible':![],'dependencies':['Machine'],'user_decisions':['guard\x20table','submission\x20fields'],'risk_flags':['immutable_after_creation'],'estimated_time':'5min'},{'type':'Guard','reversible':![],'dependencies':['Machine'],'user_decisions':['refund\x20guard'],'risk_flags':['immutable_after_creation'],'estimated_time':'5min'},{'type':'Allocation','reversible':!![],'dependencies':['Service','Guard'],'user_decisions':['sharing\x20ratios','allocators'],'estimated_time':'5min'}],'phases':[{'name':'Foundation','object_types':['Permission','Service']},{'name':'Business\x20Logic','object_types':['Machine']},{'name':'Trust\x20Layer','object_types':['Guard']},{'name':'Revenue','object_types':['Allocation']},{'name':'Publish','object_types':['Service']}]},{'name':'rental','keywords':['rent','rental','lease','property','item','deposit','tenant','landlord'],'description':'Item\x20rental\x20with\x20deposit:\x20publish\x20→\x20rent\x20→\x20inspect\x20→\x20return/refund','default_permissions':{'provider':0x3e8,'customer':'namedOperator','arbiter':0x5dc},'objects':[{'type':'Permission','reversible':!![],'dependencies':[],'user_decisions':['reuse\x20existing\x20or\x20create\x20new?'],'estimated_time':'2min'},{'type':'Service','reversible':!![],'dependencies':['Permission'],'user_decisions':['name','deposit\x20amount','rental\x20terms'],'estimated_time':'3min'},{'type':'Machine','reversible':!![],'dependencies':['Service'],'user_decisions':['rental\x20states','return/inspect\x20flow'],'estimated_time':'10min'},{'type':'Guard','reversible':![],'dependencies':['Machine'],'user_decisions':['return\x20guard','damage\x20guard'],'risk_flags':['immutable_after_creation'],'estimated_time':'5min'},{'type':'Guard','reversible':![],'dependencies':['Machine'],'user_decisions':['refund\x20guard'],'risk_flags':['immutable_after_creation'],'estimated_time':'5min'},{'type':'Allocation','reversible':!![],'dependencies':['Service','Guard'],'user_decisions':['deposit/refund\x20allocation','damage\x20compensation'],'estimated_time':'5min'}],'phases':[{'name':'Foundation','object_types':['Permission','Service']},{'name':'Business\x20Logic','object_types':['Machine']},{'name':'Trust\x20Layer','object_types':['Guard']},{'name':'Revenue','object_types':['Allocation']},{'name':'Publish','object_types':['Service']}]},{'name':'retail','keywords':['retail','shop','store','ecommerce','buy','sell','product','digital','download','ebook','software','license','instant','content'],'description':'Instant\x20digital\x20delivery:\x20publish\x20→\x20buy\x20→\x20instant\x20delivery','default_permissions':{'provider':0x3e8,'customer':'namedOperator'},'objects':[{'type':'Permission','reversible':!![],'dependencies':[],'estimated_time':'2min'},{'type':'Service','reversible':!![],'dependencies':['Permission'],'user_decisions':['name','price','delivery\x20method'],'estimated_time':'3min'},{'type':'Machine','reversible':!![],'dependencies':['Service'],'user_decisions':['instant\x20delivery\x20states'],'estimated_time':'5min'},{'type':'Allocation','reversible':!![],'dependencies':['Service'],'user_decisions':['revenue\x20split'],'estimated_time':'3min'}],'phases':[{'name':'Foundation','object_types':['Permission','Service']},{'name':'Business\x20Logic','object_types':['Machine']},{'name':'Revenue','object_types':['Allocation']},{'name':'Publish','object_types':['Service']}]},{'name':'travel','keywords':['travel','tour','trip','package','booking','itinerary','vacation','hotel'],'description':'Multi-stage\x20service\x20with\x20milestones:\x20publish\x20→\x20book\x20→\x20itinerary\x20→\x20complete','default_permissions':{'provider':0x3e8,'customer':'namedOperator','arbiter':0x5dc},'objects':[{'type':'Permission','reversible':!![],'dependencies':[],'estimated_time':'2min'},{'type':'Service','reversible':!![],'dependencies':['Permission'],'user_decisions':['name','package\x20details','pricing\x20tiers'],'estimated_time':'5min'},{'type':'Machine','reversible':!![],'dependencies':['Service'],'user_decisions':['booking\x20states','milestone\x20flow','cancellation'],'estimated_time':'15min'},{'type':'Guard','reversible':![],'dependencies':['Machine'],'user_decisions':['booking\x20guard','cancellation\x20guard'],'risk_flags':['immutable_after_creation'],'estimated_time':'5min'},{'type':'Allocation','reversible':!![],'dependencies':['Service','Guard'],'user_decisions':['milestone\x20payments','refund\x20policy'],'estimated_time':'5min'}],'phases':[{'name':'Foundation','object_types':['Permission','Service']},{'name':'Business\x20Logic','object_types':['Machine']},{'name':'Trust\x20Layer','object_types':['Guard']},{'name':'Revenue','object_types':['Allocation']},{'name':'Publish','object_types':['Service']}]},{'name':'education','keywords':['education','course','training','tutor','teach','learn','school','coach','class','lesson'],'description':'Long-cycle\x20education\x20with\x20milestones:\x20publish\x20→\x20enroll\x20→\x20teach\x20→\x20complete\x20→\x20certificate','default_permissions':{'provider':0x3e8,'customer':'namedOperator','arbiter':0x5dc},'objects':[{'type':'Permission','reversible':!![],'dependencies':[],'user_decisions':['reuse\x20existing\x20or\x20create\x20new?'],'estimated_time':'2min'},{'type':'Service','reversible':!![],'dependencies':['Permission'],'user_decisions':['name','course\x20details','token_type'],'estimated_time':'3min'},{'type':'Machine','reversible':!![],'dependencies':['Service'],'user_decisions':['enrollment\x20states','milestone\x20flow','completion'],'estimated_time':'15min'},{'type':'Guard','reversible':![],'dependencies':['Machine'],'user_decisions':['enrollment\x20guard','completion\x20guard'],'risk_flags':['immutable_after_creation'],'estimated_time':'5min'},{'type':'Guard','reversible':![],'dependencies':['Machine'],'user_decisions':['refund\x20guard'],'risk_flags':['immutable_after_creation'],'estimated_time':'5min'},{'type':'Allocation','reversible':!![],'dependencies':['Service','Guard'],'user_decisions':['milestone\x20payments','refund\x20policy'],'estimated_time':'5min'}],'phases':[{'name':'Foundation','object_types':['Permission','Service']},{'name':'Business\x20Logic','object_types':['Machine']},{'name':'Trust\x20Layer','object_types':['Guard']},{'name':'Revenue','object_types':['Allocation']},{'name':'Publish','object_types':['Service']}]},{'name':'subscription','keywords':['subscription','subscribe','membership','recurring','monthly','newsletter','patreon','tier'],'description':'Recurring\x20subscription\x20with\x20renewal:\x20publish\x20→\x20subscribe\x20→\x20renew\x20→\x20cancel','default_permissions':{'provider':0x3e8,'customer':'namedOperator'},'objects':[{'type':'Permission','reversible':!![],'dependencies':[],'estimated_time':'2min'},{'type':'Service','reversible':!![],'dependencies':['Permission'],'user_decisions':['name','subscription\x20tiers','token_type'],'estimated_time':'3min'},{'type':'Machine','reversible':!![],'dependencies':['Service'],'user_decisions':['subscribe\x20states','renewal\x20flow','cancellation'],'estimated_time':'10min'},{'type':'Allocation','reversible':!![],'dependencies':['Service'],'user_decisions':['revenue\x20split'],'estimated_time':'3min'}],'phases':[{'name':'Foundation','object_types':['Permission','Service']},{'name':'Business\x20Logic','object_types':['Machine']},{'name':'Revenue','object_types':['Allocation']},{'name':'Publish','object_types':['Service']}]},{'name':'general','keywords':[],'description':'Fallback\x20for\x20unmatched\x20scenarios\x20—\x20generic\x20service\x20template','default_permissions':{'provider':0x3e8,'customer':'namedOperator'},'objects':[{'type':'Permission','reversible':!![],'dependencies':[],'estimated_time':'2min'},{'type':'Service','reversible':!![],'dependencies':['Permission'],'user_decisions':['name','description','token_type'],'estimated_time':'3min'},{'type':'Machine','reversible':!![],'dependencies':['Service'],'user_decisions':['state\x20graph'],'estimated_time':'10min'},{'type':'Guard','reversible':![],'dependencies':['Machine'],'user_decisions':['guard\x20requirements'],'risk_flags':['immutable_after_creation'],'estimated_time':'5min'},{'type':'Allocation','reversible':!![],'dependencies':['Service'],'user_decisions':['sharing'],'estimated_time':'5min'}],'phases':[{'name':'Foundation','object_types':['Permission','Service']},{'name':'Business\x20Logic','object_types':['Machine']},{'name':'Trust\x20Layer','object_types':['Guard']},{'name':'Revenue','object_types':['Allocation']},{'name':'Publish','object_types':['Service']}]}];export function classifyIntent(a){const b=a['toLowerCase']();let c=null,d=0x0,e=[];for(const f of SCENARIO_REGISTRY){if(f['keywords']['length']===0x0)continue;const g=f['keywords']['filter'](h=>b['includes'](h));g['length']>d&&(d=g['length'],c=f,e=g);}if(c&&d>0x0){const h=Math['min'](d/0x3,0x1);return{'scenario':c['name'],'matched_keywords':e,'confidence':h,'fallback':![]};}return{'scenario':'general','matched_keywords':[],'confidence':0.3,'fallback':!![]};}let nodeIdCounter=0x0;function nextNodeId(a){return nodeIdCounter++,a['toLowerCase']()+'_'+nodeIdCounter;}export function generateODG(a,b){const c=classifyIntent(a),d=SCENARIO_REGISTRY['find'](h=>h['name']===c['scenario'])??SCENARIO_REGISTRY[SCENARIO_REGISTRY['length']-0x1],e=d['objects']['map'](h=>({'id':nextNodeId(h['type']),'type':h['type'],'status':'not_created','reversible':h['reversible'],'dependencies':[],'user_decisions':h['user_decisions'],'risk_flags':h['risk_flags'],'estimated_time':h['estimated_time']})),f=new Map();for(const h of e){const i=d['objects']['find'](j=>j['type']===h['type'])?.['dependencies']??[];h['dependencies']=i['map'](j=>f['get'](j))['filter'](j=>j!==undefined),f['set'](h['type'],h['id']);}const g=d['phases']['map'](j=>{const k=e['filter'](l=>j['object_types']['includes'](l['type']))['map'](l=>l['id']);return{'name':j['name'],'objects':k};});return{'task_id':b??'task_'+Date['now'](),'scenario':c['scenario'],'objects':e,'phases':g};}export function identifyDecisionPoints(a){const b=[],c=SCENARIO_REGISTRY['find'](e=>e['name']===a['scenario']);b['push']({'round':'R1','question':'I\x27ve\x20classified\x20your\x20intent\x20as\x20\x22'+a['scenario']+'\x22.\x20Is\x20this\x20correct?','options':['Yes,\x20correct','No,\x20let\x20me\x20clarify']}),b['push']({'round':'R2','question':'Do\x20you\x20have\x20existing\x20Permission\x20objects\x20to\x20reuse,\x20or\x20should\x20I\x20create\x20a\x20new\x20one?','options':['Create\x20new','Reuse\x20existing','Show\x20me\x20what\x20I\x20have']}),b['push']({'round':'R3','question':'What\x20is\x20the\x20service\x20name,\x20description,\x20and\x20pricing\x20token?','options':['WOW\x20(default)','USDT','USDC','Custom\x20token'],'default':'WOW\x20(default)'});c?.['default_permissions']['arbiter']&&b['push']({'round':'R4','question':'Permission\x20model:\x20provider=1000,\x20customer\x20uses\x20namedOperator,\x20arbiter=1500.\x20Adjust?','options':['Use\x20defaults','Customize'],'default':'Use\x20defaults'});b['push']({'round':'R5','question':'What\x20are\x20the\x20service\x20states\x20and\x20transitions?\x20(entry\x20→\x20states\x20→\x20terminals)','options':['Use\x20scenario\x20template','Custom\x20design']});const d=a['objects']['filter'](e=>e['type']==='Guard');return d['length']>0x0&&b['push']({'round':'R6','question':d['length']+'\x20Guard(s)\x20needed.\x20What\x20should\x20each\x20Guard\x20verify?','options':['Withdrawal\x20guard','Refund\x20guard','Delivery\x20guard','Custom']}),b['push']({'round':'R7','question':'How\x20should\x20revenue\x20be\x20split?\x20(e.g.,\x20merchant\x2080%,\x20platform\x2020%)','options':['100%\x20to\x20merchant','80/20\x20split','Custom\x20split'],'default':'100%\x20to\x20merchant'}),b;}export function detectCycles(a){const b=new Set(),c=new Set(),d=[];function e(f,g){if(c['has'](f)){const i=g['indexOf'](f);return d['push'](...g['slice'](i),f),!![];}if(b['has'](f))return![];b['add'](f),c['add'](f);const h=a['objects']['find'](j=>j['id']===f);if(h)for(const j of h['dependencies']){if(e(j,[...g,f]))return!![];}return c['delete'](f),![];}for(const f of a['objects']){if(!b['has'](f['id'])){if(e(f['id'],[]))return d;}}return null;}export function identifyMigrationDecisions(a){const b=a?.['current_payment_token']??'WOW',c=a?.['from_network']??'testnet',d=a?.['to_network']??'mainnet';return[{'round':'M1','question':'Your\x20project\x20currently\x20uses\x20\x22'+b+'\x22\x20as\x20the\x20payment\x20token\x20on\x20'+c+'.\x20'+('When\x20migrating\x20to\x20'+d+',\x20do\x20you\x20want\x20to\x20keep\x20\x22'+b+'\x22\x20or\x20switch\x20to\x20a\x20stablecoin\x20')+'(e.g.\x20USDT,\x20available\x20via\x20the\x20ETH\x20mainnet\x20cross-chain\x20bridge)?','options':['Keep\x20'+b,'Switch\x20to\x20USDT','Switch\x20to\x20USDC','Other\x20stablecoin'],'default':'Keep\x20'+b,'note':'Testnet\x20recommendation:\x20WOW\x20for\x20all\x20merchant\x20and\x20order\x20testing.\x20'+'Mainnet:\x20USDT\x20and\x20other\x20stablecoins\x20are\x20available\x20via\x20the\x20ETH\x20mainnet\x20cross-chain\x20bridge\x20'+'and\x20are\x20often\x20preferred\x20to\x20avoid\x20price\x20volatility.\x20If\x20switching,\x20the\x20Service\x20/\x20Treasury\x20/\x20'+'Allocation\x20type_parameter\x20must\x20be\x20updated\x20to\x20the\x20stablecoin\x27s\x20WOW\x20type\x20tag\x20before\x20publishing\x20on\x20mainnet.'}];}
1
+ export const SCENARIO_REGISTRY=[{'name':'freelance','keywords':['freelance','service','deliverable','client','gig','consult','design','develop'],'description':'Service\x20delivery\x20with\x20escrow:\x20publish\x20→\x20order\x20→\x20deliver\x20→\x20accept\x20→\x20withdraw','default_permissions':{'provider':0x3e8,'customer':'namedOperator','arbiter':0x5dc},'objects':[{'type':'Permission','reversible':!![],'dependencies':[],'user_decisions':['reuse\x20existing\x20or\x20create\x20new?'],'estimated_time':'2min'},{'type':'Service','reversible':!![],'dependencies':['Permission'],'user_decisions':['name','description','token_type'],'estimated_time':'3min'},{'type':'Machine','reversible':!![],'dependencies':['Service'],'user_decisions':['state\x20graph','operators'],'estimated_time':'10min'},{'type':'Guard','reversible':![],'dependencies':['Machine'],'user_decisions':['guard\x20table','submission\x20fields'],'risk_flags':['immutable_after_creation'],'estimated_time':'5min'},{'type':'Guard','reversible':![],'dependencies':['Machine'],'user_decisions':['refund\x20guard'],'risk_flags':['immutable_after_creation'],'estimated_time':'5min'},{'type':'Allocation','reversible':!![],'dependencies':['Service','Guard'],'user_decisions':['sharing\x20ratios','allocators'],'estimated_time':'5min'}],'phases':[{'name':'Foundation','object_types':['Permission','Service']},{'name':'Business\x20Logic','object_types':['Machine']},{'name':'Trust\x20Layer','object_types':['Guard']},{'name':'Revenue','object_types':['Allocation']},{'name':'Publish','object_types':['Service']}]},{'name':'rental','keywords':['rent','rental','lease','property','item','deposit','tenant','landlord'],'description':'Item\x20rental\x20with\x20deposit:\x20publish\x20→\x20rent\x20→\x20inspect\x20→\x20return/refund','default_permissions':{'provider':0x3e8,'customer':'namedOperator','arbiter':0x5dc},'objects':[{'type':'Permission','reversible':!![],'dependencies':[],'user_decisions':['reuse\x20existing\x20or\x20create\x20new?'],'estimated_time':'2min'},{'type':'Service','reversible':!![],'dependencies':['Permission'],'user_decisions':['name','deposit\x20amount','rental\x20terms'],'estimated_time':'3min'},{'type':'Machine','reversible':!![],'dependencies':['Service'],'user_decisions':['rental\x20states','return/inspect\x20flow'],'estimated_time':'10min'},{'type':'Guard','reversible':![],'dependencies':['Machine'],'user_decisions':['return\x20guard','damage\x20guard'],'risk_flags':['immutable_after_creation'],'estimated_time':'5min'},{'type':'Guard','reversible':![],'dependencies':['Machine'],'user_decisions':['refund\x20guard'],'risk_flags':['immutable_after_creation'],'estimated_time':'5min'},{'type':'Allocation','reversible':!![],'dependencies':['Service','Guard'],'user_decisions':['deposit/refund\x20allocation','damage\x20compensation'],'estimated_time':'5min'}],'phases':[{'name':'Foundation','object_types':['Permission','Service']},{'name':'Business\x20Logic','object_types':['Machine']},{'name':'Trust\x20Layer','object_types':['Guard']},{'name':'Revenue','object_types':['Allocation']},{'name':'Publish','object_types':['Service']}]},{'name':'retail','keywords':['retail','shop','store','ecommerce','buy','sell','product','digital','download','ebook','software','license','instant','content'],'description':'Instant\x20digital\x20delivery:\x20publish\x20→\x20buy\x20→\x20instant\x20delivery','default_permissions':{'provider':0x3e8,'customer':'namedOperator'},'objects':[{'type':'Permission','reversible':!![],'dependencies':[],'estimated_time':'2min'},{'type':'Service','reversible':!![],'dependencies':['Permission'],'user_decisions':['name','price','delivery\x20method'],'estimated_time':'3min'},{'type':'Machine','reversible':!![],'dependencies':['Service'],'user_decisions':['instant\x20delivery\x20states'],'estimated_time':'5min'},{'type':'Allocation','reversible':!![],'dependencies':['Service'],'user_decisions':['revenue\x20split'],'estimated_time':'3min'}],'phases':[{'name':'Foundation','object_types':['Permission','Service']},{'name':'Business\x20Logic','object_types':['Machine']},{'name':'Revenue','object_types':['Allocation']},{'name':'Publish','object_types':['Service']}]},{'name':'travel','keywords':['travel','tour','trip','package','booking','itinerary','vacation','hotel'],'description':'Multi-stage\x20service\x20with\x20milestones:\x20publish\x20→\x20book\x20→\x20itinerary\x20→\x20complete','default_permissions':{'provider':0x3e8,'customer':'namedOperator','arbiter':0x5dc},'objects':[{'type':'Permission','reversible':!![],'dependencies':[],'estimated_time':'2min'},{'type':'Service','reversible':!![],'dependencies':['Permission'],'user_decisions':['name','package\x20details','pricing\x20tiers'],'estimated_time':'5min'},{'type':'Machine','reversible':!![],'dependencies':['Service'],'user_decisions':['booking\x20states','milestone\x20flow','cancellation'],'estimated_time':'15min'},{'type':'Guard','reversible':![],'dependencies':['Machine'],'user_decisions':['booking\x20guard','cancellation\x20guard'],'risk_flags':['immutable_after_creation'],'estimated_time':'5min'},{'type':'Allocation','reversible':!![],'dependencies':['Service','Guard'],'user_decisions':['milestone\x20payments','refund\x20policy'],'estimated_time':'5min'}],'phases':[{'name':'Foundation','object_types':['Permission','Service']},{'name':'Business\x20Logic','object_types':['Machine']},{'name':'Trust\x20Layer','object_types':['Guard']},{'name':'Revenue','object_types':['Allocation']},{'name':'Publish','object_types':['Service']}]},{'name':'education','keywords':['education','course','training','tutor','teach','learn','school','coach','class','lesson'],'description':'Long-cycle\x20education\x20with\x20milestones:\x20publish\x20→\x20enroll\x20→\x20teach\x20→\x20complete\x20→\x20certificate','default_permissions':{'provider':0x3e8,'customer':'namedOperator','arbiter':0x5dc},'objects':[{'type':'Permission','reversible':!![],'dependencies':[],'user_decisions':['reuse\x20existing\x20or\x20create\x20new?'],'estimated_time':'2min'},{'type':'Service','reversible':!![],'dependencies':['Permission'],'user_decisions':['name','course\x20details','token_type'],'estimated_time':'3min'},{'type':'Machine','reversible':!![],'dependencies':['Service'],'user_decisions':['enrollment\x20states','milestone\x20flow','completion'],'estimated_time':'15min'},{'type':'Guard','reversible':![],'dependencies':['Machine'],'user_decisions':['enrollment\x20guard','completion\x20guard'],'risk_flags':['immutable_after_creation'],'estimated_time':'5min'},{'type':'Guard','reversible':![],'dependencies':['Machine'],'user_decisions':['refund\x20guard'],'risk_flags':['immutable_after_creation'],'estimated_time':'5min'},{'type':'Allocation','reversible':!![],'dependencies':['Service','Guard'],'user_decisions':['milestone\x20payments','refund\x20policy'],'estimated_time':'5min'}],'phases':[{'name':'Foundation','object_types':['Permission','Service']},{'name':'Business\x20Logic','object_types':['Machine']},{'name':'Trust\x20Layer','object_types':['Guard']},{'name':'Revenue','object_types':['Allocation']},{'name':'Publish','object_types':['Service']}]},{'name':'subscription','keywords':['subscription','subscribe','membership','recurring','monthly','newsletter','patreon','tier'],'description':'Recurring\x20subscription\x20with\x20renewal:\x20publish\x20→\x20subscribe\x20→\x20renew\x20→\x20cancel','default_permissions':{'provider':0x3e8,'customer':'namedOperator'},'objects':[{'type':'Permission','reversible':!![],'dependencies':[],'estimated_time':'2min'},{'type':'Service','reversible':!![],'dependencies':['Permission'],'user_decisions':['name','subscription\x20tiers','token_type'],'estimated_time':'3min'},{'type':'Machine','reversible':!![],'dependencies':['Service'],'user_decisions':['subscribe\x20states','renewal\x20flow','cancellation'],'estimated_time':'10min'},{'type':'Allocation','reversible':!![],'dependencies':['Service'],'user_decisions':['revenue\x20split'],'estimated_time':'3min'}],'phases':[{'name':'Foundation','object_types':['Permission','Service']},{'name':'Business\x20Logic','object_types':['Machine']},{'name':'Revenue','object_types':['Allocation']},{'name':'Publish','object_types':['Service']}]},{'name':'general','keywords':[],'description':'Fallback\x20for\x20unmatched\x20scenarios\x20—\x20generic\x20service\x20template','default_permissions':{'provider':0x3e8,'customer':'namedOperator'},'objects':[{'type':'Permission','reversible':!![],'dependencies':[],'estimated_time':'2min'},{'type':'Service','reversible':!![],'dependencies':['Permission'],'user_decisions':['name','description','token_type'],'estimated_time':'3min'},{'type':'Machine','reversible':!![],'dependencies':['Service'],'user_decisions':['state\x20graph'],'estimated_time':'10min'},{'type':'Guard','reversible':![],'dependencies':['Machine'],'user_decisions':['guard\x20requirements'],'risk_flags':['immutable_after_creation'],'estimated_time':'5min'},{'type':'Allocation','reversible':!![],'dependencies':['Service'],'user_decisions':['sharing'],'estimated_time':'5min'}],'phases':[{'name':'Foundation','object_types':['Permission','Service']},{'name':'Business\x20Logic','object_types':['Machine']},{'name':'Trust\x20Layer','object_types':['Guard']},{'name':'Revenue','object_types':['Allocation']},{'name':'Publish','object_types':['Service']}]}];export function classifyIntent(a){const b=a['toLowerCase']();let c=null,d=0x0,e=[];for(const f of SCENARIO_REGISTRY){if(f['keywords']['length']===0x0)continue;const g=f['keywords']['filter'](h=>b['includes'](h));g['length']>d&&(d=g['length'],c=f,e=g);}if(c&&d>0x0){const h=Math['min'](d/0x3,0x1);return{'scenario':c['name'],'matched_keywords':e,'confidence':h,'fallback':![]};}return{'scenario':'general','matched_keywords':[],'confidence':0.3,'fallback':!![]};}let nodeIdCounter=0x0;function nextNodeId(a){return nodeIdCounter++,a['toLowerCase']()+'_'+nodeIdCounter;}export function generateODG(a,b){const c=classifyIntent(a),d=SCENARIO_REGISTRY['find'](h=>h['name']===c['scenario'])??SCENARIO_REGISTRY[SCENARIO_REGISTRY['length']-0x1],e=d['objects']['map'](h=>({'id':nextNodeId(h['type']),'type':h['type'],'status':'not_created','reversible':h['reversible'],'dependencies':[],'user_decisions':h['user_decisions'],'risk_flags':h['risk_flags'],'estimated_time':h['estimated_time']})),f=new Map();for(const h of e){const i=d['objects']['find'](j=>j['type']===h['type'])?.['dependencies']??[];h['dependencies']=i['map'](j=>f['get'](j))['filter'](j=>j!==undefined),f['set'](h['type'],h['id']);}const g=d['phases']['map'](j=>{const k=e['filter'](l=>j['object_types']['includes'](l['type']))['map'](l=>l['id']);return{'name':j['name'],'objects':k};});return{'task_id':b??'task_'+Date['now'](),'scenario':c['scenario'],'objects':e,'phases':g};}const PROJECT_TO_ODG_TYPE={'service':'Service','machine':'Machine','guard':'Guard','permission':'Permission','reward':'Reward','arb':'Arbitration','progress':'Progress','treasury':'Treasury','demand':'Demand','repository':'Repository','contact':'Contact','order':'Order','allocation':'Allocation','personal':'Personal','payment':'Payment'};function toODGObjectType(a){const b=PROJECT_TO_ODG_TYPE[a];if(b)return b;return a['charAt'](0x0)['toUpperCase']()+a['slice'](0x1);}export function generateODGFromSemanticGraph(a,b){const c=a['nodes']['map'](l=>({'id':l['id'],'type':toODGObjectType(l['type']),'status':l['expectedState']?.['published']?'published':'not_created','reversible':l['type']!=='guard','dependencies':[],'address':l['address']})),d=new Map(c['map'](l=>[l['id'],l]));for(const l of a['edges']){const m=d['get'](l['from']);m&&d['has'](l['to'])&&!m['dependencies']['includes'](l['to'])&&m['dependencies']['push'](l['to']);}const e=new Set(c['map'](n=>n['id'])),f=new Map();for(const n of c){f['set'](n['id'],n['dependencies']['filter'](p=>e['has'](p))['length']);}const g=[];let h=c['filter'](p=>(f['get'](p['id'])??0x0)===0x0)['map'](p=>p['id']);const i=new Set();while(h['length']>0x0){for(const q of h)i['add'](q);g['push']({'name':'Phase\x20'+(g['length']+0x1),'objects':[...h]});const p=[];for(const r of c){if(i['has'](r['id'])||p['includes'](r['id']))continue;const s=r['dependencies']['filter'](t=>e['has'](t)&&!i['has'](t))['length'];if(s===0x0)p['push'](r['id']);}h=p;}const j=c['filter'](t=>!i['has'](t['id']))['map'](t=>t['id']);j['length']>0x0&&g['push']({'name':'Phase\x20'+(g['length']+0x1),'objects':j});const k=classifyIntent(a['businessIntent']?.['description']??'');return{'task_id':b??'task_'+Date['now'](),'scenario':k['scenario'],'objects':c,'phases':g};}export function identifyDecisionPoints(a){const b=[],c=SCENARIO_REGISTRY['find'](e=>e['name']===a['scenario']);b['push']({'round':'R1','question':'I\x27ve\x20classified\x20your\x20intent\x20as\x20\x22'+a['scenario']+'\x22.\x20Is\x20this\x20correct?','options':['Yes,\x20correct','No,\x20let\x20me\x20clarify']}),b['push']({'round':'R2','question':'Do\x20you\x20have\x20existing\x20Permission\x20objects\x20to\x20reuse,\x20or\x20should\x20I\x20create\x20a\x20new\x20one?','options':['Create\x20new','Reuse\x20existing','Show\x20me\x20what\x20I\x20have']}),b['push']({'round':'R3','question':'What\x20is\x20the\x20service\x20name,\x20description,\x20and\x20pricing\x20token?','options':['WOW\x20(default)','USDT','USDC','Custom\x20token'],'default':'WOW\x20(default)'});c?.['default_permissions']['arbiter']&&b['push']({'round':'R4','question':'Permission\x20model:\x20provider=1000,\x20customer\x20uses\x20namedOperator,\x20arbiter=1500.\x20Adjust?','options':['Use\x20defaults','Customize'],'default':'Use\x20defaults'});b['push']({'round':'R5','question':'What\x20are\x20the\x20service\x20states\x20and\x20transitions?\x20(entry\x20→\x20states\x20→\x20terminals)','options':['Use\x20scenario\x20template','Custom\x20design']});const d=a['objects']['filter'](e=>e['type']==='Guard');return d['length']>0x0&&b['push']({'round':'R6','question':d['length']+'\x20Guard(s)\x20needed.\x20What\x20should\x20each\x20Guard\x20verify?','options':['Withdrawal\x20guard','Refund\x20guard','Delivery\x20guard','Custom']}),b['push']({'round':'R7','question':'How\x20should\x20revenue\x20be\x20split?\x20(e.g.,\x20merchant\x2080%,\x20platform\x2020%)','options':['100%\x20to\x20merchant','80/20\x20split','Custom\x20split'],'default':'100%\x20to\x20merchant'}),b;}export function detectCycles(a){const b=new Set(),c=new Set(),d=[];function e(f,g){if(c['has'](f)){const i=g['indexOf'](f);return d['push'](...g['slice'](i),f),!![];}if(b['has'](f))return![];b['add'](f),c['add'](f);const h=a['objects']['find'](j=>j['id']===f);if(h)for(const j of h['dependencies']){if(e(j,[...g,f]))return!![];}return c['delete'](f),![];}for(const f of a['objects']){if(!b['has'](f['id'])){if(e(f['id'],[]))return d;}}return null;}export function identifyMigrationDecisions(a){const b=a?.['current_payment_token']??'WOW',c=a?.['from_network']??'testnet',d=a?.['to_network']??'mainnet';return[{'round':'M1','question':'Your\x20project\x20currently\x20uses\x20\x22'+b+'\x22\x20as\x20the\x20payment\x20token\x20on\x20'+c+'.\x20'+('When\x20migrating\x20to\x20'+d+',\x20do\x20you\x20want\x20to\x20keep\x20\x22'+b+'\x22\x20or\x20switch\x20to\x20a\x20stablecoin\x20')+'(e.g.\x20USDT,\x20available\x20via\x20the\x20ETH\x20mainnet\x20cross-chain\x20bridge)?','options':['Keep\x20'+b,'Switch\x20to\x20USDT','Switch\x20to\x20USDC','Other\x20stablecoin'],'default':'Keep\x20'+b,'note':'Testnet\x20recommendation:\x20WOW\x20for\x20all\x20merchant\x20and\x20order\x20testing.\x20'+'Mainnet:\x20USDT\x20and\x20other\x20stablecoins\x20are\x20available\x20via\x20the\x20ETH\x20mainnet\x20cross-chain\x20bridge\x20'+'and\x20are\x20often\x20preferred\x20to\x20avoid\x20price\x20volatility.\x20If\x20switching,\x20the\x20Service\x20/\x20Treasury\x20/\x20'+'Allocation\x20type_parameter\x20must\x20be\x20updated\x20to\x20the\x20stablecoin\x27s\x20WOW\x20type\x20tag\x20before\x20publishing\x20on\x20mainnet.'}];}
@@ -10,7 +10,7 @@ export interface RecoveryRule {
10
10
  }
11
11
  export declare const RECOVERY_RULES: Record<string, RecoveryRule>;
12
12
  export declare function resetAttempts(operationId: string): void;
13
- export declare function recover(errorCode: string, operationId: string, context?: {
13
+ export declare function recover(errorCode: string, operationId: string, _context?: {
14
14
  operation_type?: string;
15
15
  data?: Record<string, unknown>;
16
16
  }): RecoveryAction;
@@ -1,7 +1,7 @@
1
+ import type { GraphNodeBase } from "../graph/base.js";
1
2
  export type ObjectType = "Permission" | "Service" | "Machine" | "Guard" | "Allocation" | "Progress" | "Repository" | "Treasury" | "Reward" | "Demand" | "Order" | "Arbitration" | "Contact" | "Personal" | "Payment";
2
3
  export type ObjectStatus = "not_created" | "created_unpublished" | "published" | "failed";
3
- export interface ODGNode {
4
- id: string;
4
+ export interface ODGNode extends GraphNodeBase {
5
5
  type: ObjectType;
6
6
  status: ObjectStatus;
7
7
  reversible: boolean;
@@ -9,7 +9,6 @@ export interface ODGNode {
9
9
  user_decisions?: string[];
10
10
  risk_flags?: string[];
11
11
  estimated_time?: string;
12
- address?: string;
13
12
  }
14
13
  export interface ODGPhase {
15
14
  name: string;
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import{McpServer}from'@modelcontextprotocol/sdk/server/mcp.js';import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import{readFileSync}from'fs';const packageJson=JSON['parse'](readFileSync(new URL('../package.json',import.meta.url),'utf-8'));import{OnchainOperationsSchema,WipOperationsSchema,WatchQueryOperationsSchema,AccountOperationSchema,LocalMarkOperationSchema,LocalInfoOperationSchema,ProtocolInfoQuerySchema,CallOutputSchema,MessengerOperationInputSchema,MessengerOperationOutputSchema,createServerConfig,createCapabilitiesConfig}from'./schema/index.js';import{areSchemasAvailable,getSchemaIndex}from'./schema-query/index.js';import{syncDeployedToolDescriptors,shouldAutoSyncAtStartup}from'./schema/sync-layer4.js';import{isProjectServiceEnabled,observe as a51a}from'./project/index.js';import{registerSuccessHook}from'./schema/call/handler.js';import{listServices}from'./config/index.js';import{setTelemetryEnabled}from'./telemetry/index.js';import{registerAllTools}from'./tools/index.js';(process['env']['WOWOK_TELEMETRY']==='false'||process['env']['WOWOK_TELEMETRY']==='0')&&setTelemetryEnabled(![]);process['on']('unhandledRejection',(a,b)=>{const c=a instanceof Error?a['name']+':\x20'+a['message']+'\x0a'+(a['stack']??''):String(a);console['error']('[unhandledRejection]\x20'+new Date()['toISOString']()),console['error']('\x20\x20reason:\x20'+c);}),process['on']('uncaughtException',a=>{console['error']('[uncaughtException]\x20'+new Date()['toISOString']()),console['error']('\x20\x20name:\x20'+a['name']),console['error']('\x20\x20message:\x20'+a['message']),console['error']('\x20\x20stack:\x20'+(a['stack']??''));}),process['on']('beforeExit',a=>{console['error']('[beforeExit]\x20'+new Date()['toISOString']()+'\x20code='+a+'\x20—\x20event\x20loop\x20empty,\x20process\x20would\x20exit'),console['error']('\x20\x20active\x20handles:\x20'+(process['_getActiveHandles']?.()?.['length']??'?')),console['error']('\x20\x20active\x20requests:\x20'+(process['_getActiveRequests']?.()?.['length']??'?'));}),process['on']('exit',a=>{console['error']('[exit]\x20'+new Date()['toISOString']()+'\x20code='+a+'\x20—\x20process\x20exiting');}),process['stdin']['on']('end',()=>{console['error']('[stdin\x20end]\x20'+new Date()['toISOString']()+'\x20—\x20MCP\x20client\x20closed\x20stdin');}),process['stdin']['on']('close',()=>{console['error']('[stdin\x20close]\x20'+new Date()['toISOString']()+'\x20—\x20stdin\x20stream\x20closed');});let keepaliveTimer=null;function startKeepalive(){if(keepaliveTimer)return;keepaliveTimer=setInterval(()=>{const a=process['memoryUsage'](),b=Math['round'](a['heapUsed']/0x400/0x400),c=Math['round'](a['heapTotal']/0x400/0x400),d=Math['round'](a['rss']/0x400/0x400),e=b>0x4b0?'WARNING':b>0x320?'INFO':'DEBUG';console['error']('[memory\x20'+e+']\x20heap='+b+'MB/'+c+'MB\x20rss='+d+'MB');},0xea60);}startKeepalive();const SERVER_DESCRIPTION='WoWok\x20MCP\x20Server\x20-\x20Making\x20It\x20Easy\x20for\x20AI\x20Agents\x20to\x20Communicate,\x20Collaborate,\x20Trade,\x20and\x20Trust.\x0a\x0a##\x20CRITICAL:\x20Unified\x20Single-Tool\x20Architecture\x0a\x0aThis\x20server\x20exposes\x20exactly\x20ONE\x20MCP\x20tool:\x20`wowok`.\x20All\x2017\x20sub-tools\x20are\x20dispatched\x20internally\x20by\x20the\x20`wowok`\x20handler.\x0a\x0a###\x20Call\x20Format\x0a```\x0awowok({\x20tool:\x20\x22<sub-tool-name>\x22,\x20data:\x20{<sub-tool\x20parameters>}\x20})\x0a```\x0a\x0aAccepted\x20aliases\x20(deprecated):\x20`tool_name`/`name`\x20for\x20`tool`,\x20`args`/`params`\x20for\x20`data`.\x20Inline\x20params\x20(e.g.\x20`{\x20tool:\x20\x22schema_query\x22,\x20action:\x20\x22list\x22\x20}`)\x20are\x20also\x20auto-wrapped\x20into\x20`data`.\x0a\x0a###\x20Schema-Gated\x20Execution\x20(Self-Correcting)\x0aIf\x20your\x20parameters\x20don\x27t\x20match\x20the\x20sub-tool\x27s\x20schema,\x20the\x20response\x20includes:\x0a-\x20`result.status\x20=\x20\x22schema_mismatch\x22`\x0a-\x20`result.errors`\x20=\x20specific\x20validation\x20errors\x0a-\x20`schema.input`\x20=\x20the\x20correct\x20JSON\x20schema\x20for\x20the\x20sub-tool\x0a-\x20`schema.tool`\x20=\x20which\x20sub-tool\x20this\x20schema\x20belongs\x20to\x0a\x0aRead\x20the\x20schema,\x20fix\x20your\x20params,\x20and\x20retry.\x20CACHE\x20the\x20schema\x20in\x20your\x20context\x20for\x20future\x20calls\x20to\x20the\x20SAME\x20sub-tool\x20—\x20you\x20should\x20only\x20need\x20to\x20see\x20each\x20sub-tool\x27s\x20schema\x20once\x20per\x20conversation.\x20No\x20separate\x20`schema_query`\x20call\x20is\x20needed\x20for\x20parameter\x20correction.\x0a\x0a###\x20Unified\x20Response\x20Envelope\x0a```\x0a{\x0a\x20\x20\x22result\x22:\x20{\x20\x22status\x22:\x20\x22success|error|schema_mismatch\x22,\x20\x22data\x22:\x20<sub-tool\x20output>,\x20\x22errors\x22:\x20[...]\x20},\x0a\x20\x20\x22schema\x22:\x20null\x20|\x20{\x20\x22input\x22:\x20<JSON\x20schema>,\x20\x22tool\x22:\x20\x22<sub-tool-name>\x22\x20}\x0a}\x0a```\x0a\x0a##\x20CRITICAL:\x20Schema\x20Discovery\x20Rule\x0a\x0aWhen\x20the\x20current\x20context\x20does\x20not\x20contain\x20a\x20sub-tool\x27s\x20input/output\x20schema,\x20or\x20when\x20you\x20are\x20uncertain\x20whether\x20the\x20schema\x20you\x20have\x20is\x20complete\x20and\x20up-to-date,\x20you\x20MUST\x20query\x20it\x20first\x20before\x20calling\x20the\x20sub-tool.\x20Use\x20`wowok({\x20tool:\x20\x22schema_query\x22,\x20data:\x20{\x20action:\x20\x22get\x22,\x20name:\x20\x22<sub-tool>\x22\x20}\x20})'+'`'+'\x20for\x20operational\x20sub-tool\x20schemas\x20or\x20`wowok({\x20tool:\x20\x22wowok_buildin_info\x22,\x20data:\x20{\x20info:\x20\x22...\x22\x20}\x20})`\x20for\x20protocol\x20constants\x20and\x20reference\x20data.\x20Never\x20guess\x20schema\x20parameters,\x20query\x20instruction\x20IDs,\x20or\x20type\x20codes\x20—\x20always\x20retrieve\x20them\x20from\x20the\x20live\x20server.\x0a\x0a##\x20CRITICAL:\x20Global\x20Unread\x20Messenger\x20Check\x20(every\x20conversation)\x0a\x0aAt\x20the\x20START\x20of\x20EVERY\x20conversation\x20—\x20before\x20answering\x20the\x20user\x27s\x20request,\x20regardless\x20of\x20what\x20it\x20is\x20about\x20—\x20check\x20for\x20unread\x20Messenger\x20messages\x20and\x20IMMEDIATELY\x20and\x20PROMINENTLY\x20remind\x20the\x20user\x20to\x20read\x20them:\x0a\x0a```\x0awowok({\x20tool:\x20\x22messenger_operation\x22,\x20data:\x20{\x20operation:\x20\x22watch_conversations\x22,\x20filter:\x20{\x20unreadOnly:\x20true,\x20previewMessageCount:\x200,\x20skipAutoMarkViewed:\x20true\x20}\x20}\x20})\x0a```\x0a\x0aIf\x20the\x20result\x20contains\x20any\x20conversation\x20with\x20`unreadCount\x20>\x200`,\x20surface\x20a\x20prominent\x20reminder\x20at\x20the\x20TOP\x20of\x20your\x20response\x20(do\x20not\x20wait\x20for\x20the\x20user\x20to\x20ask),\x20listing\x20each\x20peer\x20with\x20unread\x20messages\x20and\x20the\x20count.\x20Use\x20`skipAutoMarkViewed:\x20true`\x20so\x20merely\x20checking\x20does\x20not\x20mark\x20them\x20read.\x20If\x20there\x20are\x20none,\x20do\x20not\x20mention\x20the\x20check.\x0a\x0a##\x20CRITICAL:\x20Upgrade\x20&\x20Client\x20Install\x20Reminder\x20(every\x20conversation)\x0a\x0aAt\x20the\x20START\x20of\x20EVERY\x20conversation\x20—\x20together\x20with\x20the\x20unread\x20Messenger\x20check\x20—\x20call:\x0a\x0a```\x0awowok({\x20tool:\x20\x22wowok_buildin_info\x22,\x20data:\x20{\x20info:\x20\x22upgrade_check\x22\x20}\x20})\x0a```\x0a\x0aThen,\x20based\x20on\x20the\x20returned\x20`result.reminder`:\x0a-\x20If\x20`reminder.type\x20===\x20\x22upgrade\x22`\x20AND\x20`reminder.due\x20===\x20true`:\x20IMMEDIATELY\x20remind\x20the\x20user\x20to\x20upgrade\x20(do\x20not\x20wait\x20for\x20them\x20to\x20ask).\x20Use\x20the\x20benefit-focused\x20wording\x20below,\x20filling\x20in\x20the\x20current/latest\x20versions\x20from\x20`result.mcp`\x20/\x20`result.sdk`.\x0a-\x20If\x20`reminder.type\x20===\x20\x22install_client\x22`\x20AND\x20`reminder.due\x20===\x20true`:\x20remind\x20the\x20user\x20to\x20install\x20the\x20WoWok\x20desktop\x20client\x20(this\x20fires\x20at\x20most\x20once\x20per\x20week\x20—\x20the\x20reminder\x20state\x20is\x20persisted\x20automatically).\x0a-\x20If\x20`reminder.type\x20===\x20\x22none\x22`\x20or\x20`reminder.due\x20===\x20false`:\x20do\x20NOT\x20mention\x20upgrades\x20or\x20the\x20client.\x0a\x0aUpgrade\x20wording\x20(paraphrase\x20naturally,\x20keep\x20it\x20short\x20and\x20benefit-driven;\x20adapt\x20to\x20the\x20user\x27s\x20language):\x0a\x20\x20\x22A\x20newer\x20WoWok\x20version\x20is\x20available\x20(current\x20vX\x20→\x20latest\x20vY).\x20Upgrade\x20for\x20more\x20features\x20and\x20improvements.\x20Run:\x20npm\x20install\x20-g\x20@wowok/agent-mcp@latest\x22\x0a\x0aClient\x20install\x20wording:\x0a\x20\x20\x22The\x20WoWok\x20desktop\x20client\x20is\x20not\x20installed\x20yet.\x20It\x20provides\x20wallet\x20management,\x20encrypted\x20Messenger,\x20project\x20management\x20and\x20more.\x20Download\x20it\x20at\x20https://download.wowok.net\x20to\x20get\x20started.\x22\x0a\x0aIf\x20the\x20upgrade_check\x20itself\x20fails\x20(offline\x20/\x20registry\x20unreachable),\x20skip\x20the\x20reminder\x20—\x20never\x20fabricate\x20version\x20numbers.\x0a\x0a##\x20Token\x20System\x20Overview\x0a\x0a###\x20Default\x20Platform\x20Token:\x20WOW\x0a-\x20Token\x20Type:\x200x2::wow::WOW\x0a-\x20Precision:\x201_000_000_000\x20(9\x20decimal\x20places)\x0a-\x20This\x20is\x20the\x20default\x20token\x20for\x20all\x20operations\x20unless\x20specified\x20otherwise\x0a\x0a###\x20Multi-Token\x20Support\x0aThe\x20platform\x20supports\x20ANY\x20token\x20(e.g.,\x20USDT,\x20USDC,\x20custom\x20tokens).\x20To\x20use\x20non-WOW\x20tokens:\x0a1.\x20Use\x20query_toolkit\x20with\x20query_type=\x27token_list\x27\x20to\x20query\x20available\x20tokens\x20and\x20their\x20precision\x20info\x0a2.\x20Use\x20the\x20token\x27s\x20full\x20type\x20string\x20(e.g.,\x20\x270x2::usdt::USDT\x27)\x20in\x20token_type\x20parameter\x0a3.\x20Each\x20token\x20has\x20its\x20own\x20precision\x20-\x20always\x20verify\x20before\x20operations\x0a\x0a###\x20Token\x20Precision\x20Handling\x0aDifferent\x20tokens\x20have\x20different\x20precisions.\x20ALWAYS\x20query\x20to\x20verify:\x0a-\x20WOW\x20(default):\x201_000_000_000\x20(9\x20decimals)\x0a-\x20Other\x20tokens:\x20Use\x20query_toolkit\x20with\x20query_type=\x27token_list\x27\x20to\x20get\x20actual\x20precision\x0a-\x20Never\x20assume\x20a\x20token\x27s\x20decimal\x20places\x20-\x20always\x20query\x20first\x0a\x0a##\x20CRITICAL:\x20Token\x20Amount\x20Handling\x0a\x0a###\x20Amount\x20Input\x20Rules\x0a1.\x20WITH\x20currency\x20unit\x20(e.g.,\x20\x272WOW\x27,\x20\x2710.5WOW\x27,\x20\x27100USDT\x27):\x0a\x20\x20\x20-\x20Auto-converted\x20using\x20token\x27s\x20precision:\x202WOW\x20->\x202_000_000_000\x0a\x20\x20\x20-\x20Use\x20for:\x20All\x20on-chain\x20token\x20operations\x0a\x20\x20\x20-\x20MUST\x20match\x20the\x20token_type\x20parameter\x0a\x0a2.\x20WITHOUT\x20currency\x20unit\x20(e.g.,\x20\x272\x27,\x20\x27100\x27):\x0a\x20\x20\x20-\x20Used\x20as-is:\x202\x20->\x202\x0a\x20\x20\x20-\x20Use\x20for:\x20Regular\x20numeric\x20parameters\x20(counts,\x20indices,\x20etc.)\x0a\x0a###\x20Multi-Token\x20Operation\x20Examples\x0a-\x20Create\x20USDT-priced\x20Service:\x20token_type=\x270x2::usdt::USDT\x27,\x20amount=\x27100USDT\x27\x0a-\x20Allocate\x20USDC\x20rewards:\x20token_type=\x270x2::usdc::USDC\x27,\x20amount=\x27500USDC\x27\x0a-\x20WOW\x20remains\x20default:\x20omit\x20token_type\x20or\x20use\x20\x270x2::wow::WOW\x27\x0a\x0a###\x20Security\x20Warning\x0aToken\x20amounts\x20are\x20HIGHLY\x20SENSITIVE.\x20Always:\x0a-\x20Confirm\x20user\x27s\x20intent\x20before\x20executing\x20transfers\x0a-\x20Verify\x20token\x20type\x20and\x20amount\x20format\x20(with/without\x20unit)\x0a-\x20Query\x20token\x20precision\x20if\x20unsure\x0a-\x20Double-check\x20large\x20amount\x20transactions\x0a-\x20Never\x20assume\x20decimal\x20places\x20-\x20use\x20explicit\x20token\x20unit\x0a\x0a##\x20Sub-tool\x20Selection\x20Guide\x0a\x0aAll\x20sub-tools\x20are\x20called\x20via\x20`wowok({\x20tool:\x20\x22<sub-tool>\x22,\x20data:\x20{...}\x20})`.\x20The\x20table\x20below\x20helps\x20pick\x20the\x20correct\x20`tool`\x20value.\x0a\x0a|\x20User\x20Intent\x20|\x20Correct\x20Sub-tool\x20|\x20Wrong\x20Sub-tool\x20(Avoid)\x20|\x0a|------------|------------------|------------------------|\x0a|\x20Create\x20service\x20listing\x20|\x20onchain_operations\x20(service)\x20|\x20query_toolkit\x20|\x0a|\x20Send\x20coins\x20to\x20address\x20|\x20onchain_operations\x20(payment)\x20|\x20account_operation\x20|\x0a|\x20Check\x20my\x20balance\x20|\x20query_toolkit\x20(account_balance)\x20|\x20onchain_operations\x20|\x0a|\x20Manage\x20local\x20wallet\x20|\x20account_operation\x20|\x20onchain_operations\x20|\x0a|\x20Export\x20Guard\x20for\x20edit\x20|\x20guard2file\x20|\x20query_toolkit\x20|\x0a|\x20Send/Watch\x20encrypted\x20message\x20|\x20messenger_operation\x20|\x20onchain_operations\x20|\x0a|\x20Create\x20workflow\x20template\x20|\x20onchain_operations\x20(machine)\x20|\x20wip_file\x20|\x0a|\x20Store\x20my\x20phone\x20number\x20|\x20local_info_operation\x20|\x20onchain_operations\x20|\x0a|\x20Buy\x20service\x20(create\x20order)\x20|\x20onchain_operations\x20(order)\x20|\x20onchain_operations\x20(service)\x20|\x0a|\x20Manage\x20my\x20orders\x20|\x20onchain_operations\x20(order)\x20|\x20query_toolkit\x20|\x0a|\x20Apply\x20for\x20arbitration\x20|\x20onchain_operations\x20(order)\x20|\x20onchain_operations\x20(arbitration)\x20|\x0a|\x20Create\x20reward\x20pool\x20for\x20marketing\x20|\x20onchain_operations\x20(reward)\x20|\x20onchain_operations\x20(treasury)\x20|\x0a|\x20Claim\x20rewards\x20from\x20pool\x20|\x20onchain_operations\x20(reward)\x20|\x20query_toolkit\x20|\x0a|\x20Create\x20fund\x20allocation\x20plan\x20|\x20onchain_operations\x20(allocation)\x20|\x20onchain_operations\x20(treasury)\x20|\x0a|\x20Execute\x20fund\x20distribution\x20|\x20onchain_operations\x20(allocation)\x20|\x20onchain_operations\x20(payment)\x20|\x0a|\x20Post\x20service\x20demand\x20with\x20reward\x20|\x20onchain_operations\x20(demand)\x20|\x20onchain_operations\x20(service)\x20|\x0a|\x20Submit\x20solution\x20for\x20demand\x20|\x20onchain_operations\x20(demand)\x20|\x20onchain_operations\x20(order)\x20|\x0a|\x20Create\x20team\x20treasury\x20|\x20onchain_operations\x20(treasury)\x20|\x20onchain_operations\x20(allocation)\x20|\x0a|\x20Deposit/Withdraw\x20from\x20treasury\x20|\x20onchain_operations\x20(treasury)\x20|\x20onchain_operations\x20(payment)\x20|\x0a|\x20Create\x20access\x20control\x20rules\x20|\x20onchain_operations\x20(permission)\x20|\x20onchain_operations\x20(guard)\x20|\x0a|\x20Create\x20validation\x20rules\x20(Guard)\x20|\x20onchain_operations\x20(guard)\x20|\x20onchain_operations\x20(permission)\x20|\x0a|\x20Export\x20Guard\x20for\x20editing\x20|\x20guard2file\x20|\x20query_toolkit\x20|\x0a|\x20Export\x20Machine\x20nodes\x20for\x20editing\x20|\x20machineNode2file\x20|\x20query_toolkit\x20|\x0a|\x20Query\x20token\x20list\x20and\x20precision\x20|\x20query_toolkit\x20(token_list)\x20|\x20wowok_buildin_info\x20|\x0a|\x20Watch\x20on-chain\x20events\x20|\x20onchain_events\x20|\x20query_toolkit\x20|\x0a|\x20Generate\x20WIP\x20promise\x20file\x20|\x20wip_file\x20(generate)\x20|\x20messenger_operation\x20|\x0a|\x20Sign\x20WIP\x20file\x20|\x20wip_file\x20(sign)\x20|\x20account_operation\x20(signData)\x20|\x0a|\x20Verify\x20WIP\x20file\x20integrity\x20|\x20wip_file\x20(verify)\x20|\x20query_toolkit\x20|\x0a|\x20Send\x20encrypted\x20file\x20via\x20messenger\x20|\x20messenger_operation\x20(send_file)\x20|\x20wip_file\x20|\x0a|\x20Generate\x20Witness\x20Timestamped\x20Sequence\x20(WTS)\x20|\x20messenger_operation\x20(generate_wts)\x20|\x20wip_file\x20|\x0a|\x20Query\x20protocol\x20constants\x20|\x20wowok_buildin_info\x20|\x20query_toolkit\x20|\x0a|\x20Query\x20sub-tool\x20schemas\x20|\x20schema_query\x20|\x20wowok_buildin_info\x20|\x0a|\x20Cross-chain\x20bridge\x20(WOW<->EVM)\x20|\x20bridge_operation\x20|\x20onchain_operations\x20|\x0a|\x20Project\x20deployment\x20workflow\x20|\x20project_operation\x20|\x20onchain_operations\x20|\x0a|\x20Runtime\x20service\x20toggles\x20|\x20config_operation\x20|\x20—\x20|\x0a|\x20Service\x20trust/risk\x20assessment\x20|\x20trust_score\x20|\x20query_toolkit\x20|\x0a\x0a##\x20Sub-tool\x20Categories\x0a\x0a###\x20LOCAL\x20ONLY\x20(Never\x20touch\x20blockchain):\x0a-\x20account_operation\x0a-\x20local_mark_operation\x0a-\x20local_info_operation\x0a\x0a###\x20ON-CHAIN\x20(Blockchain\x20transactions):\x0a-\x20onchain_operations\x0a-\x20messenger_operation\x20(some\x20operations)\x0a-\x20wip_file\x20(sign\x20operation)\x0a-\x20bridge_operation\x0a\x0a###\x20QUERY\x20(Read-only):\x0a-\x20query_toolkit\x0a-\x20onchain_events\x0a-\x20wowok_buildin_info\x0a-\x20schema_query\x0a-\x20guard2file\x0a-\x20machineNode2file\x0a\x0a###\x20WORKFLOW\x20(Project-level):\x0a-\x20project_operation\x0a-\x20config_operation\x0a-\x20trust_score\x0a',server=new McpServer(createServerConfig(packageJson,SERVER_DESCRIPTION),createCapabilitiesConfig());export{OnchainOperationsSchema,WipOperationsSchema,WatchQueryOperationsSchema,AccountOperationSchema,LocalMarkOperationSchema,LocalInfoOperationSchema,ProtocolInfoQuerySchema,CallOutputSchema,MessengerOperationInputSchema,MessengerOperationOutputSchema};async function main(){if(areSchemasAvailable()){const c=getSchemaIndex();c&&console['error']('Schema\x20system\x20ready:\x20'+(c['tools']?.['length']||0x0)+'\x20tools,\x20'+(c['operations']?.['length']||0x0)+'\x20operations');}else console['error']('Schema\x20files\x20not\x20available.\x20Run\x20\x27npm\x20run\x20generate:schemas\x27\x20to\x20generate\x20them.');if(shouldAutoSyncAtStartup())try{const d=syncDeployedToolDescriptors({'silent':!![]});if(d['failed']>0x0){console['error']('Layer\x204\x20auto-sync:\x20'+d['ok']+'/'+d['total']+'\x20ok,\x20'+d['failed']+'\x20failed');for(const f of d['errors']){console['error']('\x20\x20-\x20'+f['tool']+':\x20'+f['error']);}}else console['error']('Layer\x204\x20auto-sync:\x20'+d['ok']+'/'+d['total']+'\x20tools\x20restored');}catch(g){console['error']('Layer\x204\x20auto-sync\x20skipped:\x20'+g['message']);}else console['error']('Layer\x204\x20auto-sync\x20disabled\x20(WOWOK_SYNC_LAYER4=never)');isProjectServiceEnabled()&&(registerSuccessHook((h,i)=>{i?.['operation_type']&&i?.['data']&&a51a(i['operation_type'],i['data'],h);}),console['error']('ProjectService\x20enabled\x20—\x20object\x20graph\x20observe\x20active'));const a=listServices()['filter'](h=>h['enabled'])['map'](h=>h['name']);console['error']('Phase\x202\x20active\x20services:\x20'+(a['join'](',\x20')||'none')),registerAllTools(server);const b=new StdioServerTransport();await server['connect'](b),process['on']('SIGINT',async()=>{await server['close'](),process['exit'](0x0);}),process['on']('SIGTERM',async()=>{console['error']('[SIGTERM]\x20'+new Date()['toISOString']()+'\x20—\x20graceful\x20shutdown');try{await server['close']();}catch{}process['exit'](0x0);});}main()['catch'](console['error']);
2
+ import{McpServer}from'@modelcontextprotocol/server';import{serveStdio}from'@modelcontextprotocol/server/stdio';import{readFileSync}from'fs';const packageJson=JSON['parse'](readFileSync(new URL('../package.json',import.meta.url),'utf-8'));import{OnchainOperationsSchema,WipOperationsSchema,WatchQueryOperationsSchema,AccountOperationSchema,LocalMarkOperationSchema,LocalInfoOperationSchema,ProtocolInfoQuerySchema,CallOutputSchema,MessengerOperationInputSchema,MessengerOperationOutputSchema,createServerConfig,createCapabilitiesConfig}from'./schema/index.js';import{areSchemasAvailable,getSchemaIndex}from'./schema-query-impl/index.js';import{isProjectServiceEnabled,observe as a59a}from'./project/index.js';import{registerSuccessHook}from'./schema/call/handler.js';import{listServices}from'./config/index.js';import{setTelemetryEnabled}from'./telemetry/index.js';import{registerAllTools,SUB_TOOL_COUNT}from'./tools/index.js';import{scanDefaultIndustryPacks}from'./extensions/index.js';(process['env']['WOWOK_TELEMETRY']==='false'||process['env']['WOWOK_TELEMETRY']==='0')&&setTelemetryEnabled(![]);process['on']('unhandledRejection',(a,b)=>{const c=a instanceof Error?a['name']+':\x20'+a['message']+'\x0a'+(a['stack']??''):String(a);console['error']('[unhandledRejection]\x20'+new Date()['toISOString']()),console['error']('\x20\x20reason:\x20'+c);}),process['on']('uncaughtException',a=>{console['error']('[uncaughtException]\x20'+new Date()['toISOString']()),console['error']('\x20\x20name:\x20'+a['name']),console['error']('\x20\x20message:\x20'+a['message']),console['error']('\x20\x20stack:\x20'+(a['stack']??''));}),process['on']('beforeExit',a=>{console['error']('[beforeExit]\x20'+new Date()['toISOString']()+'\x20code='+a+'\x20—\x20event\x20loop\x20empty,\x20process\x20would\x20exit'),console['error']('\x20\x20active\x20handles:\x20'+(process['_getActiveHandles']?.()?.['length']??'?')),console['error']('\x20\x20active\x20requests:\x20'+(process['_getActiveRequests']?.()?.['length']??'?'));}),process['on']('exit',a=>{console['error']('[exit]\x20'+new Date()['toISOString']()+'\x20code='+a+'\x20—\x20process\x20exiting');}),process['stdin']['on']('end',()=>{console['error']('[stdin\x20end]\x20'+new Date()['toISOString']()+'\x20—\x20MCP\x20client\x20closed\x20stdin');}),process['stdin']['on']('close',()=>{console['error']('[stdin\x20close]\x20'+new Date()['toISOString']()+'\x20—\x20stdin\x20stream\x20closed');});let keepaliveTimer=null;function startKeepalive(){if(keepaliveTimer)return;keepaliveTimer=setInterval(()=>{const a=process['memoryUsage'](),b=Math['round'](a['heapUsed']/0x400/0x400),c=Math['round'](a['heapTotal']/0x400/0x400),d=Math['round'](a['rss']/0x400/0x400),e=b>0x4b0?'WARNING':b>0x320?'INFO':'DEBUG';console['error']('[memory\x20'+e+']\x20heap='+b+'MB/'+c+'MB\x20rss='+d+'MB');},0xea60);}startKeepalive();const SERVER_DESCRIPTION='WoWok\x20MCP\x20Server\x20-\x20Making\x20It\x20Easy\x20for\x20AI\x20Agents\x20to\x20Communicate,\x20Collaborate,\x20Trade,\x20and\x20Trust.\x0a\x0a##\x20CRITICAL:\x20Unified\x20Single-Tool\x20Architecture\x0a\x0aThis\x20server\x20exposes\x20exactly\x20ONE\x20MCP\x20tool:\x20`wowok`.\x20All\x20'+SUB_TOOL_COUNT+'\x20sub-tools\x20are\x20dispatched\x20internally\x20by\x20the\x20`wowok`\x20handler.\x0a\x0a###\x20Call\x20Format\x0a```\x0awowok({\x20tool:\x20\x22<sub-tool-name>\x22,\x20data:\x20{<sub-tool\x20parameters>}\x20})\x0a```\x0a\x0aAccepted\x20aliases\x20(deprecated):\x20`tool_name`/`name`\x20for\x20`tool`,\x20`args`/`params`\x20for\x20`data`.\x20Inline\x20params\x20(e.g.\x20`{\x20tool:\x20\x22schema_query\x22,\x20action:\x20\x22list\x22\x20}`)\x20are\x20also\x20auto-wrapped\x20into\x20`data`.\x0a\x0a###\x20Schema-Gated\x20Execution\x20(Self-Correcting)\x0aIf\x20your\x20parameters\x20don\x27t\x20match\x20the\x20sub-tool\x27s\x20schema,\x20the\x20response\x20includes:\x0a-\x20`result.status\x20=\x20\x22schema_mismatch\x22`\x0a-\x20`result.errors`\x20=\x20specific\x20validation\x20errors\x0a-\x20`schema.input`\x20=\x20the\x20correct\x20JSON\x20schema\x20for\x20the\x20sub-tool\x0a-\x20`schema.tool`\x20=\x20which\x20sub-tool\x20this\x20schema\x20belongs\x20to\x0a\x0aRead\x20the\x20schema,\x20fix\x20your\x20params,\x20and\x20retry.\x20CACHE\x20the\x20schema\x20in\x20your\x20context\x20for\x20future\x20calls\x20to\x20the\x20SAME\x20sub-tool\x20—\x20you\x20should\x20only\x20need\x20to\x20see\x20each\x20sub-tool\x27s\x20schema\x20once\x20per\x20conversation.\x20No\x20separate\x20`schema_query`\x20call\x20is\x20needed\x20for\x20parameter\x20correction.\x0a\x0a###\x20Unified\x20Response\x20Envelope\x0a```\x0a{\x0a\x20\x20\x22result\x22:\x20{\x20\x22status\x22:\x20\x22success|error|schema_mismatch\x22,\x20\x22data\x22:\x20<sub-tool\x20output>,\x20\x22errors\x22:\x20[...]\x20},\x0a\x20\x20\x22schema\x22:\x20null\x20|\x20{\x20\x22input\x22:\x20<JSON\x20schema>,\x20\x22tool\x22:\x20\x22<sub-tool-name>\x22\x20}\x0a}\x0a```\x0a\x0a##\x20CRITICAL:\x20Schema\x20Discovery\x20Rule\x0a\x0aWhen\x20the\x20current\x20context\x20does\x20not\x20contain\x20a\x20sub-tool\x27s\x20input/output\x20schema,\x20or\x20when\x20you\x20are\x20uncertain\x20whether\x20the\x20schema\x20you\x20have\x20is\x20complete\x20and\x20up-to-date,\x20you\x20MUST\x20query\x20it\x20first\x20before\x20calling\x20the\x20sub-tool.\x20Use\x20`wowok({\x20tool:\x20\x22schema_query\x22,\x20data:\x20{\x20action:\x20\x22get\x22,\x20name:\x20\x22<sub-tool>\x22\x20}\x20})'+'`'+'\x20for\x20operational\x20sub-tool\x20schemas\x20or\x20`wowok({\x20tool:\x20\x22wowok_buildin_info\x22,\x20data:\x20{\x20info:\x20\x22...\x22\x20}\x20})`\x20for\x20protocol\x20constants\x20and\x20reference\x20data.\x20Never\x20guess\x20schema\x20parameters,\x20query\x20instruction\x20IDs,\x20or\x20type\x20codes\x20—\x20always\x20retrieve\x20them\x20from\x20the\x20live\x20server.\x0a\x0a##\x20CRITICAL:\x20Global\x20Unread\x20Messenger\x20Check\x20(every\x20conversation)\x0a\x0aAt\x20the\x20START\x20of\x20EVERY\x20conversation\x20—\x20before\x20answering\x20the\x20user\x27s\x20request,\x20regardless\x20of\x20what\x20it\x20is\x20about\x20—\x20check\x20for\x20unread\x20Messenger\x20messages\x20and\x20IMMEDIATELY\x20and\x20PROMINENTLY\x20remind\x20the\x20user\x20to\x20read\x20them:\x0a\x0a```\x0awowok({\x20tool:\x20\x22messenger_operation\x22,\x20data:\x20{\x20operation:\x20\x22watch_conversations\x22,\x20filter:\x20{\x20unreadOnly:\x20true,\x20previewMessageCount:\x200,\x20skipAutoMarkViewed:\x20true\x20}\x20}\x20})\x0a```\x0a\x0aIf\x20the\x20result\x20contains\x20any\x20conversation\x20with\x20`unreadCount\x20>\x200`,\x20surface\x20a\x20prominent\x20reminder\x20at\x20the\x20TOP\x20of\x20your\x20response\x20(do\x20not\x20wait\x20for\x20the\x20user\x20to\x20ask),\x20listing\x20each\x20peer\x20with\x20unread\x20messages\x20and\x20the\x20count.\x20Use\x20`skipAutoMarkViewed:\x20true`\x20so\x20merely\x20checking\x20does\x20not\x20mark\x20them\x20read.\x20If\x20there\x20are\x20none,\x20do\x20not\x20mention\x20the\x20check.\x0a\x0a##\x20CRITICAL:\x20Upgrade\x20&\x20Client\x20Install\x20Reminder\x20(every\x20conversation)\x0a\x0aAt\x20the\x20START\x20of\x20EVERY\x20conversation\x20—\x20together\x20with\x20the\x20unread\x20Messenger\x20check\x20—\x20call:\x0a\x0a```\x0awowok({\x20tool:\x20\x22wowok_buildin_info\x22,\x20data:\x20{\x20info:\x20\x22upgrade_check\x22\x20}\x20})\x0a```\x0a\x0aThen,\x20based\x20on\x20the\x20returned\x20`result.reminder`:\x0a-\x20If\x20`reminder.type\x20===\x20\x22upgrade\x22`\x20AND\x20`reminder.due\x20===\x20true`:\x20IMMEDIATELY\x20remind\x20the\x20user\x20to\x20upgrade\x20(do\x20not\x20wait\x20for\x20them\x20to\x20ask).\x20Use\x20the\x20benefit-focused\x20wording\x20below,\x20filling\x20in\x20the\x20current/latest\x20versions\x20from\x20`result.mcp`\x20/\x20`result.sdk`.\x0a-\x20If\x20`reminder.type\x20===\x20\x22install_client\x22`\x20AND\x20`reminder.due\x20===\x20true`:\x20remind\x20the\x20user\x20to\x20install\x20the\x20WoWok\x20desktop\x20client\x20(this\x20fires\x20at\x20most\x20once\x20per\x20week\x20—\x20the\x20reminder\x20state\x20is\x20persisted\x20automatically).\x0a-\x20If\x20`reminder.type\x20===\x20\x22none\x22`\x20or\x20`reminder.due\x20===\x20false`:\x20do\x20NOT\x20mention\x20upgrades\x20or\x20the\x20client.\x0a\x0aUpgrade\x20wording\x20(paraphrase\x20naturally,\x20keep\x20it\x20short\x20and\x20benefit-driven;\x20adapt\x20to\x20the\x20user\x27s\x20language):\x0a\x20\x20\x22A\x20newer\x20WoWok\x20version\x20is\x20available\x20(current\x20vX\x20→\x20latest\x20vY).\x20Upgrade\x20for\x20more\x20features\x20and\x20improvements.\x20Run:\x20npm\x20install\x20-g\x20@wowok/agent-mcp@latest\x22\x0a\x0aClient\x20install\x20wording:\x0a\x20\x20\x22The\x20WoWok\x20desktop\x20client\x20is\x20not\x20installed\x20yet.\x20It\x20provides\x20wallet\x20management,\x20encrypted\x20Messenger,\x20project\x20management\x20and\x20more.\x20Download\x20it\x20at\x20https://download.wowok.net\x20to\x20get\x20started.\x22\x0a\x0aIf\x20the\x20upgrade_check\x20itself\x20fails\x20(offline\x20/\x20registry\x20unreachable),\x20skip\x20the\x20reminder\x20—\x20never\x20fabricate\x20version\x20numbers.\x0a\x0a##\x20Token\x20System\x20Overview\x0a\x0a###\x20Default\x20Platform\x20Token:\x20WOW\x0a-\x20Token\x20Type:\x200x2::wow::WOW\x0a-\x20Precision:\x201_000_000_000\x20(9\x20decimal\x20places)\x0a-\x20This\x20is\x20the\x20default\x20token\x20for\x20all\x20operations\x20unless\x20specified\x20otherwise\x0a\x0a###\x20Multi-Token\x20Support\x0aThe\x20platform\x20supports\x20ANY\x20token\x20(e.g.,\x20USDT,\x20USDC,\x20custom\x20tokens).\x20To\x20use\x20non-WOW\x20tokens:\x0a1.\x20Use\x20query_toolkit\x20with\x20query_type=\x27token_list\x27\x20to\x20query\x20available\x20tokens\x20and\x20their\x20precision\x20info\x0a2.\x20Use\x20the\x20token\x27s\x20full\x20type\x20string\x20(e.g.,\x20\x270x2::usdt::USDT\x27)\x20in\x20token_type\x20parameter\x0a3.\x20Each\x20token\x20has\x20its\x20own\x20precision\x20-\x20always\x20verify\x20before\x20operations\x0a\x0a###\x20Token\x20Precision\x20Handling\x0aDifferent\x20tokens\x20have\x20different\x20precisions.\x20ALWAYS\x20query\x20to\x20verify:\x0a-\x20WOW\x20(default):\x201_000_000_000\x20(9\x20decimals)\x0a-\x20Other\x20tokens:\x20Use\x20query_toolkit\x20with\x20query_type=\x27token_list\x27\x20to\x20get\x20actual\x20precision\x0a-\x20Never\x20assume\x20a\x20token\x27s\x20decimal\x20places\x20-\x20always\x20query\x20first\x0a\x0a##\x20CRITICAL:\x20Token\x20Amount\x20Handling\x0a\x0a###\x20Amount\x20Input\x20Rules\x0a1.\x20WITH\x20currency\x20unit\x20(e.g.,\x20\x272WOW\x27,\x20\x2710.5WOW\x27,\x20\x27100USDT\x27):\x0a\x20\x20\x20-\x20Auto-converted\x20using\x20token\x27s\x20precision:\x202WOW\x20->\x202_000_000_000\x0a\x20\x20\x20-\x20Use\x20for:\x20All\x20on-chain\x20token\x20operations\x0a\x20\x20\x20-\x20MUST\x20match\x20the\x20token_type\x20parameter\x0a\x0a2.\x20WITHOUT\x20currency\x20unit\x20(e.g.,\x20\x272\x27,\x20\x27100\x27):\x0a\x20\x20\x20-\x20Used\x20as-is:\x202\x20->\x202\x0a\x20\x20\x20-\x20Use\x20for:\x20Regular\x20numeric\x20parameters\x20(counts,\x20indices,\x20etc.)\x0a\x0a###\x20Multi-Token\x20Operation\x20Examples\x0a-\x20Create\x20USDT-priced\x20Service:\x20token_type=\x270x2::usdt::USDT\x27,\x20amount=\x27100USDT\x27\x0a-\x20Allocate\x20USDC\x20rewards:\x20token_type=\x270x2::usdc::USDC\x27,\x20amount=\x27500USDC\x27\x0a-\x20WOW\x20remains\x20default:\x20omit\x20token_type\x20or\x20use\x20\x270x2::wow::WOW\x27\x0a\x0a###\x20Security\x20Warning\x0aToken\x20amounts\x20are\x20HIGHLY\x20SENSITIVE.\x20Always:\x0a-\x20Confirm\x20user\x27s\x20intent\x20before\x20executing\x20transfers\x0a-\x20Verify\x20token\x20type\x20and\x20amount\x20format\x20(with/without\x20unit)\x0a-\x20Query\x20token\x20precision\x20if\x20unsure\x0a-\x20Double-check\x20large\x20amount\x20transactions\x0a-\x20Never\x20assume\x20decimal\x20places\x20-\x20use\x20explicit\x20token\x20unit\x0a\x0a##\x20Sub-tool\x20Selection\x20Guide\x0a\x0aAll\x20sub-tools\x20are\x20called\x20via\x20`wowok({\x20tool:\x20\x22<sub-tool>\x22,\x20data:\x20{...}\x20})`.\x20The\x20table\x20below\x20helps\x20pick\x20the\x20correct\x20`tool`\x20value.\x0a\x0a|\x20User\x20Intent\x20|\x20Correct\x20Sub-tool\x20|\x20Wrong\x20Sub-tool\x20(Avoid)\x20|\x0a|------------|------------------|------------------------|\x0a|\x20Create\x20service\x20listing\x20|\x20onchain_operations\x20(service)\x20|\x20query_toolkit\x20|\x0a|\x20Send\x20coins\x20to\x20address\x20|\x20onchain_operations\x20(payment)\x20|\x20account_operation\x20|\x0a|\x20Check\x20my\x20balance\x20|\x20query_toolkit\x20(account_balance)\x20|\x20onchain_operations\x20|\x0a|\x20Manage\x20local\x20wallet\x20|\x20account_operation\x20|\x20onchain_operations\x20|\x0a|\x20Export\x20Guard\x20for\x20edit\x20|\x20guard2file\x20|\x20query_toolkit\x20|\x0a|\x20Send/Watch\x20encrypted\x20message\x20|\x20messenger_operation\x20|\x20onchain_operations\x20|\x0a|\x20Create\x20workflow\x20template\x20|\x20onchain_operations\x20(machine)\x20|\x20wip_file\x20|\x0a|\x20Store\x20my\x20phone\x20number\x20|\x20local_info_operation\x20|\x20onchain_operations\x20|\x0a|\x20Buy\x20service\x20(create\x20order)\x20|\x20onchain_operations\x20(order)\x20|\x20onchain_operations\x20(service)\x20|\x0a|\x20Manage\x20my\x20orders\x20|\x20onchain_operations\x20(order)\x20|\x20query_toolkit\x20|\x0a|\x20Apply\x20for\x20arbitration\x20|\x20onchain_operations\x20(order)\x20|\x20onchain_operations\x20(arbitration)\x20|\x0a|\x20Create\x20reward\x20pool\x20for\x20marketing\x20|\x20onchain_operations\x20(reward)\x20|\x20onchain_operations\x20(treasury)\x20|\x0a|\x20Claim\x20rewards\x20from\x20pool\x20|\x20onchain_operations\x20(reward)\x20|\x20query_toolkit\x20|\x0a|\x20Create\x20fund\x20allocation\x20plan\x20|\x20onchain_operations\x20(allocation)\x20|\x20onchain_operations\x20(treasury)\x20|\x0a|\x20Execute\x20fund\x20distribution\x20|\x20onchain_operations\x20(allocation)\x20|\x20onchain_operations\x20(payment)\x20|\x0a|\x20Post\x20service\x20demand\x20with\x20reward\x20|\x20onchain_operations\x20(demand)\x20|\x20onchain_operations\x20(service)\x20|\x0a|\x20Submit\x20solution\x20for\x20demand\x20|\x20onchain_operations\x20(demand)\x20|\x20onchain_operations\x20(order)\x20|\x0a|\x20Create\x20team\x20treasury\x20|\x20onchain_operations\x20(treasury)\x20|\x20onchain_operations\x20(allocation)\x20|\x0a|\x20Deposit/Withdraw\x20from\x20treasury\x20|\x20onchain_operations\x20(treasury)\x20|\x20onchain_operations\x20(payment)\x20|\x0a|\x20Create\x20access\x20control\x20rules\x20|\x20onchain_operations\x20(permission)\x20|\x20onchain_operations\x20(guard)\x20|\x0a|\x20Create\x20validation\x20rules\x20(Guard)\x20|\x20onchain_operations\x20(guard)\x20|\x20onchain_operations\x20(permission)\x20|\x0a|\x20Export\x20Guard\x20for\x20editing\x20|\x20guard2file\x20|\x20query_toolkit\x20|\x0a|\x20Export\x20Machine\x20nodes\x20for\x20editing\x20|\x20machineNode2file\x20|\x20query_toolkit\x20|\x0a|\x20Query\x20token\x20list\x20and\x20precision\x20|\x20query_toolkit\x20(token_list)\x20|\x20wowok_buildin_info\x20|\x0a|\x20Watch\x20on-chain\x20events\x20|\x20onchain_events\x20|\x20query_toolkit\x20|\x0a|\x20Generate\x20WIP\x20promise\x20file\x20|\x20wip_file\x20(generate)\x20|\x20messenger_operation\x20|\x0a|\x20Sign\x20WIP\x20file\x20|\x20wip_file\x20(sign)\x20|\x20account_operation\x20(signData)\x20|\x0a|\x20Verify\x20WIP\x20file\x20integrity\x20|\x20wip_file\x20(verify)\x20|\x20query_toolkit\x20|\x0a|\x20Send\x20encrypted\x20file\x20via\x20messenger\x20|\x20messenger_operation\x20(send_file)\x20|\x20wip_file\x20|\x0a|\x20Generate\x20Witness\x20Timestamped\x20Sequence\x20(WTS)\x20|\x20messenger_operation\x20(generate_wts)\x20|\x20wip_file\x20|\x0a|\x20Query\x20protocol\x20constants\x20|\x20wowok_buildin_info\x20|\x20query_toolkit\x20|\x0a|\x20Query\x20sub-tool\x20schemas\x20|\x20schema_query\x20|\x20wowok_buildin_info\x20|\x0a|\x20Cross-chain\x20bridge\x20(WOW<->EVM)\x20|\x20bridge_operation\x20|\x20onchain_operations\x20|\x0a|\x20Project\x20deployment\x20workflow\x20|\x20project_operation\x20|\x20onchain_operations\x20|\x0a|\x20Runtime\x20service\x20toggles\x20|\x20config_operation\x20|\x20—\x20|\x0a|\x20Service\x20trust/risk\x20assessment\x20|\x20trust_score\x20|\x20query_toolkit\x20|\x0a|\x20Query\x20dynamic\x20table\x20data\x20/\x20table\x20items\x20|\x20onchain_table_data\x20|\x20query_toolkit\x20|\x0a|\x20Check\x20async\x20task\x20status\x20|\x20query_task_status\x20|\x20config_operation\x20|\x0a|\x20Business\x20evaluation\x20(risk/match/game/evidence)\x20|\x20evaluation_operation\x20|\x20trust_score\x20|\x0a|\x20Set\x20user\x20persona\x20/\x20preferences\x20|\x20persona_operation\x20|\x20local_info_operation\x20|\x0a|\x20Match\x20business\x20intent\x20to\x20chain\x20events\x20|\x20intent_radar\x20|\x20onchain_events\x20|\x0a|\x20Manage\x20employee\x20KPI\x20/\x20liability\x20|\x20employee_operation\x20|\x20onchain_operations\x20|\x0a|\x20Scaffold\x20/\x20register\x20industry\x20pack\x20|\x20industry_pack_operation\x20|\x20persona_operation\x20|\x0a|\x20Read\x20/\x20write\x20local\x20workspace\x20files\x20|\x20workspace_operation\x20|\x20local_info_operation\x20|\x0a|\x20List\x20local-account\x20actionable\x20progress\x20/\x20advance\x20forward\x20|\x20workflow_operation\x20|\x20onchain_operations\x20|\x0a|\x20List\x20Permissions\x20related\x20to\x20local\x20accounts\x20|\x20permission_operation\x20|\x20query_toolkit\x20|\x0a\x0a##\x20Sub-tool\x20Categories\x0a\x0a###\x20LOCAL\x20ONLY\x20(Never\x20touch\x20blockchain):\x0a-\x20account_operation\x0a-\x20local_mark_operation\x0a-\x20local_info_operation\x0a-\x20persona_operation\x0a-\x20employee_operation\x0a-\x20industry_pack_operation\x0a-\x20workspace_operation\x0a\x0a###\x20ON-CHAIN\x20(Blockchain\x20transactions):\x0a-\x20onchain_operations\x0a-\x20workflow_operation\x20(operate\x20advances/holds\x20progress\x20on-chain;\x20list\x20is\x20read-only)\x0a-\x20messenger_operation\x20(some\x20operations)\x0a-\x20wip_file\x20(sign\x20operation)\x0a-\x20bridge_operation\x0a\x0a###\x20QUERY\x20(Read-only):\x0a-\x20query_toolkit\x0a-\x20onchain_events\x0a-\x20onchain_table_data\x0a-\x20wowok_buildin_info\x0a-\x20schema_query\x0a-\x20guard2file\x0a-\x20machineNode2file\x0a-\x20query_task_status\x0a-\x20evaluation_operation\x0a-\x20intent_radar\x0a-\x20permission_operation\x0a\x0a###\x20WORKFLOW\x20(Project-level):\x0a-\x20project_operation\x0a-\x20config_operation\x0a-\x20trust_score\x0a';function buildServer(){const a=new McpServer(createServerConfig(packageJson,SERVER_DESCRIPTION),createCapabilitiesConfig());return registerAllTools(a),a;}export{OnchainOperationsSchema,WipOperationsSchema,WatchQueryOperationsSchema,AccountOperationSchema,LocalMarkOperationSchema,LocalInfoOperationSchema,ProtocolInfoQuerySchema,CallOutputSchema,MessengerOperationInputSchema,MessengerOperationOutputSchema};async function main(){if(areSchemasAvailable()){const c=getSchemaIndex();c&&console['error']('Schema\x20system\x20ready:\x20'+(c['tools']?.['length']||0x0)+'\x20tools,\x20'+(c['operations']?.['length']||0x0)+'\x20operations');}else console['error']('Schema\x20files\x20not\x20available.\x20Run\x20\x27npm\x20run\x20generate:schemas\x27\x20to\x20generate\x20them.');isProjectServiceEnabled()&&(registerSuccessHook((d,f)=>{f?.['operation_type']&&f?.['data']&&a59a(f['operation_type'],f['data'],d);}),console['error']('ProjectService\x20enabled\x20—\x20object\x20graph\x20observe\x20active'));const a=listServices()['filter'](d=>d['enabled'])['map'](d=>d['name']);console['error']('Phase\x202\x20active\x20services:\x20'+(a['join'](',\x20')||'none'));try{const d=scanDefaultIndustryPacks(),f=d['filter'](g=>g['ok'])['length'];console['error']('Industry\x20packs\x20ready:\x20'+f+'/'+d['length']+'\x20registered\x20at\x20startup');}catch(g){console['error']('[industry]\x20startup\x20bootstrap\x20failed:\x20'+g['message']);}const b=serveStdio(()=>buildServer());process['on']('SIGINT',async()=>{await b['close'](),process['exit'](0x0);}),process['on']('SIGTERM',async()=>{console['error']('[SIGTERM]\x20'+new Date()['toISOString']()+'\x20—\x20graceful\x20shutdown');try{await b['close']();}catch{}process['exit'](0x0);});}main()['catch'](console['error']);
@@ -1 +1 @@
1
- import{MAX_ALLOCATOR_COUNT,ALLOCATION_MAX_SHARING_COUNT,RATE_TOTAL_FULL,ALLOCATION_ERROR_CODES,isSignerRecipient,isEntityRecipient}from'./allocation-ledger.js';import{assessAllocationRisks}from'./allocation-risk.js';export const ALLOCATION_PUBLISH_CHECKLIST=[{'id':'C-A-01','description':'Allocator\x20count\x20<=\x20MAX_ALLOCATOR_COUNT\x20(100)','passed':![],'message':''},{'id':'C-A-02','description':'Sharing\x20count\x20per\x20Allocator\x20<=\x20MAX_SHARING_COUNT\x20(100)','passed':![],'message':''},{'id':'C-A-03','description':'At\x20most\x201\x20Surplus\x20sharing\x20per\x20Allocator\x20(EMULTIPLE_SURPLUS)','passed':![],'message':''},{'id':'C-A-04','description':'Pure\x20Rate\x20mode\x20sum(rates)\x20==\x2010000\x20(ERATE_NOT_10000)\x20OR\x20Rate+Surplus\x20sum\x20<=\x2010000\x20(ERATE_EXCEEDS_10000)','passed':![],'message':''},{'id':'C-A-05','description':'Pure\x20Amount\x20mode\x20sum(fix)\x20>=\x20threshold\x20(EAMOUNT_BELOW_THRESHOLD)','passed':![],'message':''},{'id':'C-A-06','description':'Amount\x20sum(fix)\x20<=\x20max\x20when\x20max\x20is\x20set\x20(EAMOUNT_EXCEEDS_MAX)','passed':![],'message':''},{'id':'C-A-07','description':'allocators[].guard\x20unique\x20within\x20the\x20same\x20Allocators\x20(F-A-14)','passed':![],'message':''},{'id':'C-A-08','description':'Guard\x20addresses\x20valid\x20(0x\x20prefix,\x20length\x20>=\x2040)','passed':![],'message':''},{'id':'C-A-09','description':'Entity\x20addresses\x20valid\x20(0x\x20prefix,\x20length\x20>=\x2040)','passed':![],'message':''},{'id':'C-A-10','description':'Signer\x20recipients\x20have\x20Guard\x20Signer\x20binding\x20(R-A-2-01\x20CRITICAL\x20theft\x20risk)','passed':![],'message':''},{'id':'C-A-11','description':'payment_info\x20present\x20(required\x20at\x20alloc()\x20time\x20—\x20ENO_PAYMENT_INFO)','passed':![],'message':''},{'id':'C-A-12','description':'coin\x20type\x20matches\x20type_parameter\x20(EINSUFFICIENT_BALANCE\x20if\x20mismatch)','passed':![],'message':''}];function isValidAddress(a){return typeof a==='string'&&a['startsWith']('0x')&&a['length']>=0x28;}function runStaticChecklist(b){const c=ALLOCATION_PUBLISH_CHECKLIST['map'](R=>({...R})),d=b['allocation_json'],e=d['object']!==null&&d['object']!==undefined&&typeof d['object']==='object'&&!Array['isArray'](d['object']);if(!e){for(const R of c)R['passed']=!![];if(typeof d['object']==='string'){const S=isValidAddress(d['object']);c['find'](T=>T['id']==='C-A-08')['passed']=S,c['find'](T=>T['id']==='C-A-08')['message']=S?'':'Allocation\x20object\x20address\x20'+d['object']+'\x20invalid';}if(d['alloc_by_guard']!==undefined){const T=isValidAddress(d['alloc_by_guard']);c['find'](U=>U['id']==='C-A-09')['passed']=T,c['find'](U=>U['id']==='C-A-09')['message']=T?'':'alloc_by_guard\x20address\x20'+d['alloc_by_guard']+'\x20invalid';}return{'all_passed':c['every'](U=>U['passed']),'items':c};}const f=d['allocators'];if(!f){for(const U of c){U['id']['startsWith']('C-A-0')?(U['passed']=![],U['message']='Missing\x20required\x20field:\x20allocators'):U['passed']=!![];}return{'all_passed':![],'items':c};}const g=f['allocators'],h=c['find'](V=>V['id']==='C-A-01');h['passed']=g['length']<=MAX_ALLOCATOR_COUNT,h['message']=h['passed']?'':'Allocator\x20count\x20'+g['length']+'\x20>\x20'+MAX_ALLOCATOR_COUNT;let k=!![],l='';for(let V=0x0;V<g['length'];V++){if(g[V]['sharing']['length']>ALLOCATION_MAX_SHARING_COUNT){k=![],l='Allocator\x20'+V+'\x20sharing\x20count\x20'+g[V]['sharing']['length']+'\x20>\x20'+ALLOCATION_MAX_SHARING_COUNT;break;}}const m=c['find'](W=>W['id']==='C-A-02');m['passed']=k,m['message']=l;let n=!![],o='';for(let W=0x0;W<g['length'];W++){const X=g[W]['sharing']['filter'](Y=>Y['mode']==='Surplus')['length'];if(X>0x1){n=![],o='Allocator\x20'+W+'\x20has\x20'+X+'\x20Surplus\x20(max\x201\x20allowed)';break;}}const p=c['find'](Y=>Y['id']==='C-A-03');p['passed']=n,p['message']=o;let q=!![],r='';for(let Y=0x0;Y<g['length'];Y++){const Z=g[Y],a0=Z['sharing']['filter'](a3=>a3['mode']==='Rate')['reduce']((a3,a4)=>a3+Number(a4['sharing']),0x0),a1=Z['sharing']['some'](a3=>a3['mode']==='Surplus'),a2=Z['sharing']['some'](a3=>a3['mode']==='Rate');if(a2&&!a1&&a0!==RATE_TOTAL_FULL){q=![],r='Allocator\x20'+Y+'\x20pure\x20Rate\x20sum\x20'+a0+'\x20!=\x20'+RATE_TOTAL_FULL;break;}if(a2&&a1&&a0>RATE_TOTAL_FULL){q=![],r='Allocator\x20'+Y+'\x20Rate+Surplus\x20sum\x20'+a0+'\x20>\x20'+RATE_TOTAL_FULL;break;}}const t=c['find'](a3=>a3['id']==='C-A-04');t['passed']=q,t['message']=r;let u=!![],v='';const w=Number(f['threshold']);for(let a3=0x0;a3<g['length'];a3++){const a4=g[a3],a5=a4['sharing']['some'](a8=>a8['mode']==='Rate'),a6=a4['sharing']['some'](a8=>a8['mode']==='Surplus'),a7=a4['sharing']['filter'](a8=>a8['mode']==='Amount')['reduce']((a8,a9)=>a8+Number(a9['sharing']),0x0);if(!a5&&!a6&&a7>0x0&&a7<w){u=![],v='Allocator\x20'+a3+'\x20pure\x20Amount\x20sum\x20'+a7+'\x20<\x20threshold\x20'+w;break;}}const x=c['find'](a8=>a8['id']==='C-A-05');x['passed']=u,x['message']=v;let y=!![],z='';for(let a8=0x0;a8<g['length'];a8++){const a9=g[a8];if(a9['max']==null)continue;const aa=a9['sharing']['filter'](ab=>ab['mode']==='Amount')['reduce']((ab,ac)=>ab+Number(ac['sharing']),0x0);if(aa>Number(a9['max'])){y=![],z='Allocator\x20'+a8+'\x20Amount\x20sum\x20'+aa+'\x20>\x20max\x20'+Number(a9['max']);break;}}const A=c['find'](ab=>ab['id']==='C-A-06');A['passed']=y,A['message']=z;const B=new Set();let C=!![],D='';for(let ab=0x0;ab<g['length'];ab++){if(B['has'](g[ab]['guard'])){C=![],D='Allocator\x20'+ab+'\x20guard\x20'+g[ab]['guard']+'\x20duplicates\x20an\x20earlier\x20Allocator\x20(F-A-14)';break;}B['add'](g[ab]['guard']);}const E=c['find'](ac=>ac['id']==='C-A-07');E['passed']=C,E['message']=D;let F=!![],G='';for(let ac=0x0;ac<g['length'];ac++){if(!isValidAddress(g[ac]['guard'])){F=![],G='Allocator\x20'+ac+'\x20guard\x20address\x20'+g[ac]['guard']+'\x20invalid';break;}}const H=c['find'](ad=>ad['id']==='C-A-08');H['passed']=F,H['message']=G;let I=!![],J='';al:for(let ad=0x0;ad<g['length'];ad++){for(let ae=0x0;ae<g[ad]['sharing']['length'];ae++){const af=g[ad]['sharing'][ae];if(isEntityRecipient(af['who'])){const ag=af['who']['Entity'];if(!isValidAddress(ag)){I=![],J='Allocator\x20'+ad+'\x20sharing\x20'+ae+'\x20Entity\x20address\x20'+ag+'\x20invalid';break al;}}}}const K=c['find'](ah=>ah['id']==='C-A-09');K['passed']=I,K['message']=J;let L=!![],M='';for(let ah=0x0;ah<g['length'];ah++){const ai=g[ah],aj=ai['sharing']['some'](al=>isSignerRecipient(al['who']));if(!aj)continue;const ak=b['guard_signer_bindings']?.[ai['guard']]===!![];if(!ak){L=![],M='Allocator\x20'+ah+'\x20(guard='+ai['guard']+')\x20has\x20Signer\x20recipient\x20but\x20no\x20Guard\x20Signer\x20binding\x20—\x20R-A-2-01\x20CRITICAL\x20theft\x20risk';break;}}const N=c['find'](al=>al['id']==='C-A-10');N['passed']=L,N['message']=M;const O=c['find'](al=>al['id']==='C-A-11');O['passed']=d['payment_info']!==undefined&&d['payment_info']!==null,O['message']=O['passed']?'':'payment_info\x20missing\x20—\x20required\x20at\x20alloc()\x20time\x20(ENO_PAYMENT_INFO=9)';const P=c['find'](al=>al['id']==='C-A-12'),Q=d['object'];if(Q['type_parameter']&&d['coin'])P['passed']=!![],P['message']='';else!Q['type_parameter']?(P['passed']=![],P['message']='type_parameter\x20missing\x20on\x20object'):(P['passed']=![],P['message']='coin\x20missing\x20—\x20required\x20for\x20create');return{'all_passed':c['every'](al=>al['passed']),'items':c};}function adaptRiskAssessment(a,b){const c={'object':typeof a['allocation_json']['object']==='string'?a['allocation_json']['object']:null,'allocators_config':a['allocation_json']['allocators'],'operation_type':a['operation_type']??'create','has_payment_info':a['allocation_json']['payment_info']!==undefined,'host_service_published':!![],'referenced_treasuries_permissions':a['referenced_treasuries_permissions'],'guard_signer_bindings':a['guard_signer_bindings'],'passport_identifier_types':a['passport_identifier_types'],'guard_conditions_mutually_exclusive':a['guard_conditions_mutually_exclusive'],'bound_order':a['bound_order'],'order_already_has_allocation':a['order_already_has_allocation']};return assessAllocationRisks(c);}export const ALLOCATION_CONFIRMATION_QUESTIONS=[{'id':'QA1','question':'Are\x20all\x20Treasury\x20/\x20Entity\x20recipient\x20addresses\x20correctly\x20verified\x20as\x20trusted\x20parties?','requires_explicit_yes':!![]},{'id':'QA2','question':'If\x20using\x20multiple\x20Allocators\x20(caller-specified\x20guard),\x20are\x20Guard\x20conditions\x20mutually\x20exclusive\x20to\x20prevent\x20caller\x20confusion\x20or\x20silent\x20lockup\x20(alloc_by_guard\x20silently\x20returns\x20on\x20no\x20match)?','requires_explicit_yes':!![],'related_risk_ids':['R-A-4-02']},{'id':'QA3','question':'⚠️\x20If\x20using\x20sharing.who=Signer:\x20is\x20the\x20Guard\x20Signer\x20binding\x20verified\x20(context(Signer)==authorized)?\x20Signer\x20without\x20Guard\x20binding\x20=\x20CRITICAL\x20theft\x20risk.','requires_explicit_yes':!![],'related_risk_ids':['R-A-2-01']},{'id':'QA4','question':'If\x20using\x20Amount+Surplus\x20hybrid\x20(refund-first):\x20is\x20threshold\x20set\x20to\x20refund\x20amount\x20(fix)\x20to\x20ensure\x20balance\x20covers\x20the\x20Amount\x20distribution?','requires_explicit_yes':!![],'related_risk_ids':['R-A-1-03']},{'id':'QA5','question':'Is\x20payment_info\x20correctly\x20configured?\x20alloc()\x20will\x20abort\x20with\x20ENO_PAYMENT_INFO\x20(9)\x20if\x20missing.','requires_explicit_yes':!![],'related_risk_ids':['R-A-5-02']},{'id':'QA6','question':'Has\x20the\x20Allocation\x20been\x20tested\x20on\x20testnet?\x20Allocation\x20is\x20a\x20\x27passive\x20object\x27\x20—\x20once\x20created,\x20allocators\x20cannot\x20be\x20reconfigured.','requires_explicit_yes':![]}];function processUserConfirmation(a,b){const c=[...ALLOCATION_CONFIRMATION_QUESTIONS],d=a['allocation_json']['allocators']?.['allocators']['some'](g=>g['sharing']['some'](h=>isSignerRecipient(h['who'])))??![];if(!d){const g=c['findIndex'](h=>h['id']==='QA3');if(g>=0x0)c['splice'](g,0x1);}const e=a['allocation_json']['allocators']?.['allocators']['length']??0x0;if(e<=0x1){const h=c['findIndex'](i=>i['id']==='QA2');if(h>=0x0)c['splice'](h,0x1);}const f=a['allocation_json']['allocators']?.['allocators']['some'](i=>i['sharing']['some'](j=>j['mode']==='Amount')&&i['sharing']['some'](j=>j['mode']==='Surplus'))??![];if(!f){const i=c['findIndex'](j=>j['id']==='QA4');if(i>=0x0)c['splice'](i,0x1);}if(a['skip_user_confirmation'])return{'questions_asked':c,'responses':c['map'](j=>({'question_id':j['id'],'response':'yes'})),'all_confirmed':!![]};return{'questions_asked':c,'responses':[],'all_confirmed':![]};}function verifyEnvironment(a){const b=[];typeof a['allocation_json']['object']==='string'&&b['push']({'name':'object_exists','passed':!![],'message':'Allocation\x20object\x20'+a['allocation_json']['object']+'\x20assumed\x20to\x20exist'});if(a['allocation_json']['alloc_by_guard']){const d=a['allocation_json']['alloc_by_guard'],e=a['allocation_json']['allocators']?.['allocators']??[],f=isValidAddress(d);b['push']({'name':'alloc_by_guard_valid','passed':f,'message':f?'Guard\x20'+d+'\x20address\x20valid\x20(SDK\x20will\x20verify\x20it\x20exists\x20in\x20allocators[].guard)':'Guard\x20'+d+'\x20address\x20invalid'});}a['operation_type']==='create'&&b['push']({'name':'signer_authorized','passed':!![],'message':'Signer\x20must\x20hold\x20SERVICE_ORDER_ALLOCATOR=313\x20permission\x20(or\x20ARBITRATION_FEES_ALLOC=365\x20for\x20arbitration\x20fees)'});if(a['bound_order']){const g=a['order_already_has_allocation']===!![];b['push']({'name':'order_allocation_1to1','passed':!g,'message':g?'Order\x20'+a['bound_order']+'\x20already\x20has\x20an\x20Allocation\x20—\x20E_ALLOCATION_ALREADY_SPECIFIED\x20will\x20abort':'Order\x20'+a['bound_order']+'\x20has\x20no\x20Allocation\x20—\x201:1\x20constraint\x20satisfied'});}b['push']({'name':'testnet_test_recommended','passed':!![],'message':'Allocation\x20is\x20a\x20\x27passive\x20object\x27\x20—\x20strongly\x20recommend\x20testnet\x20test\x20before\x20mainnet\x20deployment'});const c=b['every'](h=>h['passed']);return{'passed':c,'checks':b};}export const ALLOCATION_CONFIRM_VERSION='1.0.0';export function runAllocationConfirmGate(a){const b=[],c=[],d=runStaticChecklist(a);if(!d['all_passed'])return c['push']('L1_checklist'),{'status':'blocked_checklist','checklist_result':d,'confirmation_text':generateConfirmationText(a,d),'block_reason':'Checklist\x20failed:\x20'+d['items']['filter'](g=>!g['passed'])['map'](g=>g['id'])['join'](',\x20'),'decision_record':{'timestamp':new Date()['toISOString'](),'gate_version':ALLOCATION_CONFIRM_VERSION,'final_status':'blocked_checklist','layers_passed':b,'layers_failed':c}};b['push']('L1_checklist');const e=adaptRiskAssessment(a,d);if(e['blocks_publish'])return c['push']('L2_risk'),{'status':'blocked_risk','checklist_result':d,'risk_result':e,'confirmation_text':generateConfirmationText(a,d,e),'block_reason':'CRITICAL\x20risks:\x20'+e['risks']['filter'](g=>g['level']==='CRITICAL')['map'](g=>g['id'])['join'](',\x20'),'decision_record':{'timestamp':new Date()['toISOString'](),'gate_version':ALLOCATION_CONFIRM_VERSION,'final_status':'blocked_risk','layers_passed':b,'layers_failed':c}};b['push']('L2_risk');const f=processUserConfirmation(a,e);if(!f['all_confirmed']){}b['push']('L3_user');if(a['skip_environment_check'])b['push']('L4_environment');else{const g=verifyEnvironment(a);if(!g['passed'])return c['push']('L4_environment'),{'status':'blocked_environment','checklist_result':d,'risk_result':e,'user_confirmation':f,'environment_result':g,'confirmation_text':generateConfirmationText(a,d,e),'block_reason':'Environment\x20check\x20failed:\x20'+g['checks']['filter'](h=>!h['passed'])['map'](h=>h['name'])['join'](',\x20'),'decision_record':{'timestamp':new Date()['toISOString'](),'gate_version':ALLOCATION_CONFIRM_VERSION,'final_status':'blocked_environment','layers_passed':b,'layers_failed':c}};b['push']('L4_environment');}return{'status':'approved','checklist_result':d,'risk_result':e,'user_confirmation':f,'confirmation_text':generateConfirmationText(a,d,e),'decision_record':{'timestamp':new Date()['toISOString'](),'gate_version':ALLOCATION_CONFIRM_VERSION,'final_status':'approved','layers_passed':b,'layers_failed':c}};}function generateConfirmationText(a,b,c){const d=[],e=a['allocation_json'];d['push']('═══\x20Allocation\x20Confirmation\x20═══'),d['push']('');const f=e['object']!==null&&e['object']!==undefined&&typeof e['object']==='object';if(f){const g=e['object'];d['push']('Allocation:\x20NEW\x20\x27'+g['name']+'\x27\x20('+(g['type_parameter']??'<missing>')+')');}else typeof e['object']==='string'&&d['push']('Allocation:\x20OPERATE\x20'+e['object']);d['push'](''),d['push']('─\x20Checklist\x20──────────────────');for(const h of b['items']){const i=h['passed']?'✓':'✗';d['push']('\x20\x20'+i+'\x20'+h['id']+':\x20'+h['description']+(h['message']?'\x20—\x20'+h['message']:''));}d['push']('');if(c){d['push']('─\x20Risk\x20Assessment\x20──────────────────'),d['push']('Overall:\x20'+c['overall_risk']),d['push']('Detected:\x20'+c['risks']['length']+'\x20risk(s)');for(const j of c['risks']){d['push']('\x20\x20['+j['level']+']\x20'+j['id']+':\x20'+j['title']);}d['push']('');}return d['push']('─\x20Operations\x20──────────────────'),f&&e['allocators']&&(d['push']('-\x20Description:\x20'+e['allocators']['description']),d['push']('-\x20Threshold:\x20'+e['allocators']['threshold']),d['push']('-\x20Allocators:\x20'+e['allocators']['allocators']['length']),e['allocators']['allocators']['forEach']((k,l)=>{const m=k['sharing']['filter'](p=>p['mode']==='Surplus')['length'],n=k['sharing']['filter'](p=>p['mode']==='Rate')['reduce']((p,q)=>p+Number(q['sharing']),0x0),o=k['sharing']['filter'](p=>p['mode']==='Amount')['reduce']((p,q)=>p+Number(q['sharing']),0x0);d['push']('\x20\x20['+l+']\x20guard='+k['guard']+',\x20sharing='+k['sharing']['length']+'\x20(Rate\x20sum='+n+',\x20Amount\x20sum='+o+',\x20Surplus='+m+'),\x20max='+(k['max']??'null'));})),e['received_coins']&&d['push']('-\x20Receive:\x20'+e['received_coins']['received']['length']+'\x20CoinWrapper\x20deposit(s)'),e['alloc_by_guard']&&d['push']('-\x20Alloc\x20by\x20Guard:\x20'+e['alloc_by_guard']),d['push'](''),d['push']('─\x20Error\x20Code\x20Reference\x20──────────────────'),d['push']('\x20\x20EALLOCATORS_EMPTY='+ALLOCATION_ERROR_CODES['EALLOCATORS_EMPTY']+',\x20ENO_ALLOCATOR='+ALLOCATION_ERROR_CODES['ENO_ALLOCATOR']+',\x20ERATE_NOT_10000='+ALLOCATION_ERROR_CODES['ERATE_NOT_10000']),d['push']('\x20\x20EMULTIPLE_SURPLUS='+ALLOCATION_ERROR_CODES['EMULTIPLE_SURPLUS']+',\x20ERATE_EXCEEDS_10000='+ALLOCATION_ERROR_CODES['ERATE_EXCEEDS_10000']+',\x20EINSUFFICIENT_BALANCE='+ALLOCATION_ERROR_CODES['EINSUFFICIENT_BALANCE']),d['push']('\x20\x20ENO_PAYMENT_INFO='+ALLOCATION_ERROR_CODES['ENO_PAYMENT_INFO']+',\x20ESHARING_COUNT_EXCEEDED='+ALLOCATION_ERROR_CODES['ESHARING_COUNT_EXCEEDED']+',\x20EAMOUNT_BELOW_THRESHOLD='+ALLOCATION_ERROR_CODES['EAMOUNT_BELOW_THRESHOLD']),d['push']('\x20\x20EAMOUNT_EXCEEDS_MAX='+ALLOCATION_ERROR_CODES['EAMOUNT_EXCEEDS_MAX']+',\x20EALLOCATOR_COUNT_EXCEEDED='+ALLOCATION_ERROR_CODES['EALLOCATOR_COUNT_EXCEEDED']),d['push'](''),d['join']('\x0a');}export function progressiveAllocationCheck(a){const b=runStaticChecklist(a);if(!b['all_passed'])return{'stage':'checklist','status':'fail','message':'Checklist\x20failed:\x20'+b['items']['filter'](d=>!d['passed'])['map'](d=>d['id'])['join'](',\x20'),'next_action':'Fix\x20failing\x20checklist\x20items\x20(C-A-XX)'};const c=adaptRiskAssessment(a,b);if(c['blocks_publish'])return{'stage':'risk','status':'fail','message':'CRITICAL\x20risks:\x20'+c['risks']['filter'](d=>d['level']==='CRITICAL')['map'](d=>d['id'])['join'](',\x20'),'next_action':'Resolve\x20CRITICAL\x20risks\x20(R-A-1-01\x20empty\x20allocators,\x20R-A-2-01\x20Signer\x20theft)\x20before\x20proceeding'};if(c['needs_human_review'])return{'stage':'confirmation','status':'pending','message':'Human\x20review\x20required\x20for\x20HIGH\x20risks','next_action':'Confirm\x20risk\x20acceptance\x20(QA1\x20~\x20QA6)'};return{'stage':'complete','status':'pass','message':'All\x20checks\x20passed'};}
1
+ import{MAX_ALLOCATOR_COUNT,ALLOCATION_MAX_SHARING_COUNT,RATE_TOTAL_FULL,ALLOCATION_ERROR_CODES,isSignerRecipient,isEntityRecipient}from'./allocation-ledger.js';import{assessAllocationRisks}from'./allocation-risk.js';export const ALLOCATION_PUBLISH_CHECKLIST=[{'id':'C-A-01','description':'Allocator\x20count\x20<=\x20MAX_ALLOCATOR_COUNT\x20(100)','passed':![],'message':''},{'id':'C-A-02','description':'Sharing\x20count\x20per\x20Allocator\x20<=\x20MAX_SHARING_COUNT\x20(100)','passed':![],'message':''},{'id':'C-A-03','description':'At\x20most\x201\x20Surplus\x20sharing\x20per\x20Allocator\x20(EMULTIPLE_SURPLUS)','passed':![],'message':''},{'id':'C-A-04','description':'Pure\x20Rate\x20mode\x20sum(rates)\x20==\x2010000\x20(ERATE_NOT_10000)\x20OR\x20Rate+Surplus\x20sum\x20<=\x2010000\x20(ERATE_EXCEEDS_10000)','passed':![],'message':''},{'id':'C-A-05','description':'Pure\x20Amount\x20mode\x20sum(fix)\x20>=\x20threshold\x20(EAMOUNT_BELOW_THRESHOLD)','passed':![],'message':''},{'id':'C-A-06','description':'Amount\x20sum(fix)\x20<=\x20max\x20when\x20max\x20is\x20set\x20(EAMOUNT_EXCEEDS_MAX)','passed':![],'message':''},{'id':'C-A-07','description':'allocators[].guard\x20unique\x20within\x20the\x20same\x20Allocators\x20(F-A-14)','passed':![],'message':''},{'id':'C-A-08','description':'Guard\x20addresses\x20valid\x20(0x\x20prefix,\x20length\x20>=\x2040)','passed':![],'message':''},{'id':'C-A-09','description':'Entity\x20addresses\x20valid\x20(0x\x20prefix,\x20length\x20>=\x2040)','passed':![],'message':''},{'id':'C-A-10','description':'Signer\x20recipients\x20have\x20Guard\x20Signer\x20binding\x20(R-A-2-01\x20CRITICAL\x20theft\x20risk)','passed':![],'message':''},{'id':'C-A-11','description':'payment_info\x20present\x20(required\x20at\x20alloc()\x20time\x20—\x20ENO_PAYMENT_INFO)','passed':![],'message':''},{'id':'C-A-12','description':'coin\x20type\x20matches\x20type_parameter\x20(EINSUFFICIENT_BALANCE\x20if\x20mismatch)','passed':![],'message':''}];function isValidAddress(a){return typeof a==='string'&&a['startsWith']('0x')&&a['length']>=0x28;}function runStaticChecklist(b){const c=ALLOCATION_PUBLISH_CHECKLIST['map'](R=>({...R})),d=b['allocation_json'],e=d['object']!==null&&d['object']!==undefined&&typeof d['object']==='object'&&!Array['isArray'](d['object']);if(!e){for(const R of c)R['passed']=!![];if(typeof d['object']==='string'){const S=isValidAddress(d['object']);c['find'](T=>T['id']==='C-A-08')['passed']=S,c['find'](T=>T['id']==='C-A-08')['message']=S?'':'Allocation\x20object\x20address\x20'+d['object']+'\x20invalid';}if(d['alloc_by_guard']!==undefined){const T=isValidAddress(d['alloc_by_guard']);c['find'](U=>U['id']==='C-A-09')['passed']=T,c['find'](U=>U['id']==='C-A-09')['message']=T?'':'alloc_by_guard\x20address\x20'+d['alloc_by_guard']+'\x20invalid';}return{'all_passed':c['every'](U=>U['passed']),'items':c};}const f=d['allocators'];if(!f){for(const U of c){U['id']['startsWith']('C-A-0')?(U['passed']=![],U['message']='Missing\x20required\x20field:\x20allocators'):U['passed']=!![];}return{'all_passed':![],'items':c};}const g=f['allocators'],h=c['find'](V=>V['id']==='C-A-01');h['passed']=g['length']<=MAX_ALLOCATOR_COUNT,h['message']=h['passed']?'':'Allocator\x20count\x20'+g['length']+'\x20>\x20'+MAX_ALLOCATOR_COUNT;let k=!![],l='';for(let V=0x0;V<g['length'];V++){if(g[V]['sharing']['length']>ALLOCATION_MAX_SHARING_COUNT){k=![],l='Allocator\x20'+V+'\x20sharing\x20count\x20'+g[V]['sharing']['length']+'\x20>\x20'+ALLOCATION_MAX_SHARING_COUNT;break;}}const m=c['find'](W=>W['id']==='C-A-02');m['passed']=k,m['message']=l;let n=!![],o='';for(let W=0x0;W<g['length'];W++){const X=g[W]['sharing']['filter'](Y=>Y['mode']==='Surplus')['length'];if(X>0x1){n=![],o='Allocator\x20'+W+'\x20has\x20'+X+'\x20Surplus\x20(max\x201\x20allowed)';break;}}const p=c['find'](Y=>Y['id']==='C-A-03');p['passed']=n,p['message']=o;let q=!![],r='';for(let Y=0x0;Y<g['length'];Y++){const Z=g[Y],a0=Z['sharing']['filter'](a3=>a3['mode']==='Rate')['reduce']((a3,a4)=>a3+Number(a4['sharing']),0x0),a1=Z['sharing']['some'](a3=>a3['mode']==='Surplus'),a2=Z['sharing']['some'](a3=>a3['mode']==='Rate');if(a2&&!a1&&a0!==RATE_TOTAL_FULL){q=![],r='Allocator\x20'+Y+'\x20pure\x20Rate\x20sum\x20'+a0+'\x20!=\x20'+RATE_TOTAL_FULL;break;}if(a2&&a1&&a0>RATE_TOTAL_FULL){q=![],r='Allocator\x20'+Y+'\x20Rate+Surplus\x20sum\x20'+a0+'\x20>\x20'+RATE_TOTAL_FULL;break;}}const t=c['find'](a3=>a3['id']==='C-A-04');t['passed']=q,t['message']=r;let u=!![],v='';const w=Number(f['threshold']);for(let a3=0x0;a3<g['length'];a3++){const a4=g[a3],a5=a4['sharing']['some'](a8=>a8['mode']==='Rate'),a6=a4['sharing']['some'](a8=>a8['mode']==='Surplus'),a7=a4['sharing']['filter'](a8=>a8['mode']==='Amount')['reduce']((a8,a9)=>a8+Number(a9['sharing']),0x0);if(!a5&&!a6&&a7>0x0&&a7<w){u=![],v='Allocator\x20'+a3+'\x20pure\x20Amount\x20sum\x20'+a7+'\x20<\x20threshold\x20'+w;break;}}const x=c['find'](a8=>a8['id']==='C-A-05');x['passed']=u,x['message']=v;let y=!![],z='';for(let a8=0x0;a8<g['length'];a8++){const a9=g[a8];if(a9['max']==null)continue;const aa=a9['sharing']['filter'](ab=>ab['mode']==='Amount')['reduce']((ab,ac)=>ab+Number(ac['sharing']),0x0);if(aa>Number(a9['max'])){y=![],z='Allocator\x20'+a8+'\x20Amount\x20sum\x20'+aa+'\x20>\x20max\x20'+Number(a9['max']);break;}}const A=c['find'](ab=>ab['id']==='C-A-06');A['passed']=y,A['message']=z;const B=new Set();let C=!![],D='';for(let ab=0x0;ab<g['length'];ab++){if(B['has'](g[ab]['guard'])){C=![],D='Allocator\x20'+ab+'\x20guard\x20'+g[ab]['guard']+'\x20duplicates\x20an\x20earlier\x20Allocator\x20(F-A-14)';break;}B['add'](g[ab]['guard']);}const E=c['find'](ac=>ac['id']==='C-A-07');E['passed']=C,E['message']=D;let F=!![],G='';for(let ac=0x0;ac<g['length'];ac++){if(!isValidAddress(g[ac]['guard'])){F=![],G='Allocator\x20'+ac+'\x20guard\x20address\x20'+g[ac]['guard']+'\x20invalid';break;}}const H=c['find'](ad=>ad['id']==='C-A-08');H['passed']=F,H['message']=G;let I=!![],J='';al:for(let ad=0x0;ad<g['length'];ad++){for(let ae=0x0;ae<g[ad]['sharing']['length'];ae++){const af=g[ad]['sharing'][ae];if(isEntityRecipient(af['who'])){const ag=af['who']['Entity'];if(!isValidAddress(ag)){I=![],J='Allocator\x20'+ad+'\x20sharing\x20'+ae+'\x20Entity\x20address\x20'+ag+'\x20invalid';break al;}}}}const K=c['find'](ah=>ah['id']==='C-A-09');K['passed']=I,K['message']=J;let L=!![],M='';for(let ah=0x0;ah<g['length'];ah++){const ai=g[ah],aj=ai['sharing']['some'](al=>isSignerRecipient(al['who']));if(!aj)continue;const ak=b['guard_signer_bindings']?.[ai['guard']]===!![];if(!ak){L=![],M='Allocator\x20'+ah+'\x20(guard='+ai['guard']+')\x20has\x20Signer\x20recipient\x20but\x20no\x20Guard\x20Signer\x20binding\x20—\x20R-A-2-01\x20CRITICAL\x20theft\x20risk';break;}}const N=c['find'](al=>al['id']==='C-A-10');N['passed']=L,N['message']=M;const O=c['find'](al=>al['id']==='C-A-11');O['passed']=d['payment_info']!==undefined&&d['payment_info']!==null,O['message']=O['passed']?'':'payment_info\x20missing\x20—\x20required\x20at\x20alloc()\x20time\x20(ENO_PAYMENT_INFO=9)';const P=c['find'](al=>al['id']==='C-A-12'),Q=d['object'];if(Q['type_parameter']&&d['coin'])P['passed']=!![],P['message']='';else!Q['type_parameter']?(P['passed']=![],P['message']='type_parameter\x20missing\x20on\x20object'):(P['passed']=![],P['message']='coin\x20missing\x20—\x20required\x20for\x20create');return{'all_passed':c['every'](al=>al['passed']),'items':c};}function adaptRiskAssessment(a,b){const c={'object':typeof a['allocation_json']['object']==='string'?a['allocation_json']['object']:null,'allocators_config':a['allocation_json']['allocators'],'operation_type':a['operation_type']??'create','has_payment_info':a['allocation_json']['payment_info']!==undefined,'host_service_published':!![],'referenced_treasuries_permissions':a['referenced_treasuries_permissions'],'guard_signer_bindings':a['guard_signer_bindings'],'passport_identifier_types':a['passport_identifier_types'],'guard_conditions_mutually_exclusive':a['guard_conditions_mutually_exclusive'],'bound_order':a['bound_order'],'order_already_has_allocation':a['order_already_has_allocation']};return assessAllocationRisks(c);}export const ALLOCATION_CONFIRMATION_QUESTIONS=[{'id':'QA1','question':'Are\x20all\x20Treasury\x20/\x20Entity\x20recipient\x20addresses\x20correctly\x20verified\x20as\x20trusted\x20parties?','requires_explicit_yes':!![]},{'id':'QA2','question':'If\x20using\x20multiple\x20Allocators\x20(caller-specified\x20guard),\x20are\x20Guard\x20conditions\x20mutually\x20exclusive\x20to\x20prevent\x20caller\x20confusion\x20or\x20silent\x20lockup\x20(alloc_by_guard\x20silently\x20returns\x20on\x20no\x20match)?','requires_explicit_yes':!![],'related_risk_ids':['R-A-4-02']},{'id':'QA3','question':'⚠️\x20If\x20using\x20sharing.who=Signer:\x20is\x20the\x20Guard\x20Signer\x20binding\x20verified\x20(context(Signer)==authorized)?\x20Signer\x20without\x20Guard\x20binding\x20=\x20CRITICAL\x20theft\x20risk.','requires_explicit_yes':!![],'related_risk_ids':['R-A-2-01']},{'id':'QA4','question':'If\x20using\x20Amount+Surplus\x20hybrid\x20(refund-first):\x20is\x20threshold\x20set\x20to\x20refund\x20amount\x20(fix)\x20to\x20ensure\x20balance\x20covers\x20the\x20Amount\x20distribution?','requires_explicit_yes':!![],'related_risk_ids':['R-A-1-03']},{'id':'QA5','question':'Is\x20payment_info\x20correctly\x20configured?\x20alloc()\x20will\x20abort\x20with\x20ENO_PAYMENT_INFO\x20(9)\x20if\x20missing.','requires_explicit_yes':!![],'related_risk_ids':['R-A-5-02']},{'id':'QA6','question':'Has\x20the\x20Allocation\x20been\x20tested\x20on\x20testnet?\x20Allocation\x20is\x20a\x20\x27passive\x20object\x27\x20—\x20once\x20created,\x20allocators\x20cannot\x20be\x20reconfigured.','requires_explicit_yes':![]}];function processUserConfirmation(a,b){const c=[...ALLOCATION_CONFIRMATION_QUESTIONS],d=a['allocation_json']['allocators']?.['allocators']['some'](g=>g['sharing']['some'](h=>isSignerRecipient(h['who'])))??![];if(!d){const g=c['findIndex'](h=>h['id']==='QA3');if(g>=0x0)c['splice'](g,0x1);}const e=a['allocation_json']['allocators']?.['allocators']['length']??0x0;if(e<=0x1){const h=c['findIndex'](i=>i['id']==='QA2');if(h>=0x0)c['splice'](h,0x1);}const f=a['allocation_json']['allocators']?.['allocators']['some'](i=>i['sharing']['some'](j=>j['mode']==='Amount')&&i['sharing']['some'](j=>j['mode']==='Surplus'))??![];if(!f){const i=c['findIndex'](j=>j['id']==='QA4');if(i>=0x0)c['splice'](i,0x1);}if(a['skip_user_confirmation'])return{'questions_asked':c,'responses':c['map'](j=>({'question_id':j['id'],'response':'yes'})),'all_confirmed':!![]};return{'questions_asked':c,'responses':[],'all_confirmed':![]};}function verifyEnvironment(a){const b=[];typeof a['allocation_json']['object']==='string'&&b['push']({'name':'object_exists','passed':!![],'message':'Allocation\x20object\x20'+a['allocation_json']['object']+'\x20assumed\x20to\x20exist'});if(a['allocation_json']['alloc_by_guard']){const d=a['allocation_json']['alloc_by_guard'],e=isValidAddress(d);b['push']({'name':'alloc_by_guard_valid','passed':e,'message':e?'Guard\x20'+d+'\x20address\x20valid\x20(SDK\x20will\x20verify\x20it\x20exists\x20in\x20allocators[].guard)':'Guard\x20'+d+'\x20address\x20invalid'});}a['operation_type']==='create'&&b['push']({'name':'signer_authorized','passed':!![],'message':'Signer\x20must\x20hold\x20SERVICE_ORDER_ALLOCATOR=313\x20permission\x20(or\x20ARBITRATION_FEES_ALLOC=365\x20for\x20arbitration\x20fees)'});if(a['bound_order']){const f=a['order_already_has_allocation']===!![];b['push']({'name':'order_allocation_1to1','passed':!f,'message':f?'Order\x20'+a['bound_order']+'\x20already\x20has\x20an\x20Allocation\x20—\x20E_ALLOCATION_ALREADY_SPECIFIED\x20will\x20abort':'Order\x20'+a['bound_order']+'\x20has\x20no\x20Allocation\x20—\x201:1\x20constraint\x20satisfied'});}b['push']({'name':'testnet_test_recommended','passed':!![],'message':'Allocation\x20is\x20a\x20\x27passive\x20object\x27\x20—\x20strongly\x20recommend\x20testnet\x20test\x20before\x20mainnet\x20deployment'});const c=b['every'](g=>g['passed']);return{'passed':c,'checks':b};}export const ALLOCATION_CONFIRM_VERSION='1.0.0';export function runAllocationConfirmGate(a){const b=[],c=[],d=runStaticChecklist(a);if(!d['all_passed'])return c['push']('L1_checklist'),{'status':'blocked_checklist','checklist_result':d,'confirmation_text':generateConfirmationText(a,d),'block_reason':'Checklist\x20failed:\x20'+d['items']['filter'](g=>!g['passed'])['map'](g=>g['id'])['join'](',\x20'),'decision_record':{'timestamp':new Date()['toISOString'](),'gate_version':ALLOCATION_CONFIRM_VERSION,'final_status':'blocked_checklist','layers_passed':b,'layers_failed':c}};b['push']('L1_checklist');const e=adaptRiskAssessment(a,d);if(e['blocks_publish'])return c['push']('L2_risk'),{'status':'blocked_risk','checklist_result':d,'risk_result':e,'confirmation_text':generateConfirmationText(a,d,e),'block_reason':'CRITICAL\x20risks:\x20'+e['risks']['filter'](g=>g['level']==='CRITICAL')['map'](g=>g['id'])['join'](',\x20'),'decision_record':{'timestamp':new Date()['toISOString'](),'gate_version':ALLOCATION_CONFIRM_VERSION,'final_status':'blocked_risk','layers_passed':b,'layers_failed':c}};b['push']('L2_risk');const f=processUserConfirmation(a,e);if(!f['all_confirmed']){}b['push']('L3_user');if(a['skip_environment_check'])b['push']('L4_environment');else{const g=verifyEnvironment(a);if(!g['passed'])return c['push']('L4_environment'),{'status':'blocked_environment','checklist_result':d,'risk_result':e,'user_confirmation':f,'environment_result':g,'confirmation_text':generateConfirmationText(a,d,e),'block_reason':'Environment\x20check\x20failed:\x20'+g['checks']['filter'](h=>!h['passed'])['map'](h=>h['name'])['join'](',\x20'),'decision_record':{'timestamp':new Date()['toISOString'](),'gate_version':ALLOCATION_CONFIRM_VERSION,'final_status':'blocked_environment','layers_passed':b,'layers_failed':c}};b['push']('L4_environment');}return{'status':'approved','checklist_result':d,'risk_result':e,'user_confirmation':f,'confirmation_text':generateConfirmationText(a,d,e),'decision_record':{'timestamp':new Date()['toISOString'](),'gate_version':ALLOCATION_CONFIRM_VERSION,'final_status':'approved','layers_passed':b,'layers_failed':c}};}function generateConfirmationText(a,b,c){const d=[],e=a['allocation_json'];d['push']('═══\x20Allocation\x20Confirmation\x20═══'),d['push']('');const f=e['object']!==null&&e['object']!==undefined&&typeof e['object']==='object';if(f){const g=e['object'];d['push']('Allocation:\x20NEW\x20\x27'+g['name']+'\x27\x20('+(g['type_parameter']??'<missing>')+')');}else typeof e['object']==='string'&&d['push']('Allocation:\x20OPERATE\x20'+e['object']);d['push'](''),d['push']('─\x20Checklist\x20──────────────────');for(const h of b['items']){const i=h['passed']?'✓':'✗';d['push']('\x20\x20'+i+'\x20'+h['id']+':\x20'+h['description']+(h['message']?'\x20—\x20'+h['message']:''));}d['push']('');if(c){d['push']('─\x20Risk\x20Assessment\x20──────────────────'),d['push']('Overall:\x20'+c['overall_risk']),d['push']('Detected:\x20'+c['risks']['length']+'\x20risk(s)');for(const j of c['risks']){d['push']('\x20\x20['+j['level']+']\x20'+j['id']+':\x20'+j['title']);}d['push']('');}return d['push']('─\x20Operations\x20──────────────────'),f&&e['allocators']&&(d['push']('-\x20Description:\x20'+e['allocators']['description']),d['push']('-\x20Threshold:\x20'+e['allocators']['threshold']),d['push']('-\x20Allocators:\x20'+e['allocators']['allocators']['length']),e['allocators']['allocators']['forEach']((k,l)=>{const m=k['sharing']['filter'](p=>p['mode']==='Surplus')['length'],n=k['sharing']['filter'](p=>p['mode']==='Rate')['reduce']((p,q)=>p+Number(q['sharing']),0x0),o=k['sharing']['filter'](p=>p['mode']==='Amount')['reduce']((p,q)=>p+Number(q['sharing']),0x0);d['push']('\x20\x20['+l+']\x20guard='+k['guard']+',\x20sharing='+k['sharing']['length']+'\x20(Rate\x20sum='+n+',\x20Amount\x20sum='+o+',\x20Surplus='+m+'),\x20max='+(k['max']??'null'));})),e['received_coins']&&d['push']('-\x20Receive:\x20'+e['received_coins']['received']['length']+'\x20CoinWrapper\x20deposit(s)'),e['alloc_by_guard']&&d['push']('-\x20Alloc\x20by\x20Guard:\x20'+e['alloc_by_guard']),d['push'](''),d['push']('─\x20Error\x20Code\x20Reference\x20──────────────────'),d['push']('\x20\x20EALLOCATORS_EMPTY='+ALLOCATION_ERROR_CODES['EALLOCATORS_EMPTY']+',\x20ENO_ALLOCATOR='+ALLOCATION_ERROR_CODES['ENO_ALLOCATOR']+',\x20ERATE_NOT_10000='+ALLOCATION_ERROR_CODES['ERATE_NOT_10000']),d['push']('\x20\x20EMULTIPLE_SURPLUS='+ALLOCATION_ERROR_CODES['EMULTIPLE_SURPLUS']+',\x20ERATE_EXCEEDS_10000='+ALLOCATION_ERROR_CODES['ERATE_EXCEEDS_10000']+',\x20EINSUFFICIENT_BALANCE='+ALLOCATION_ERROR_CODES['EINSUFFICIENT_BALANCE']),d['push']('\x20\x20ENO_PAYMENT_INFO='+ALLOCATION_ERROR_CODES['ENO_PAYMENT_INFO']+',\x20ESHARING_COUNT_EXCEEDED='+ALLOCATION_ERROR_CODES['ESHARING_COUNT_EXCEEDED']+',\x20EAMOUNT_BELOW_THRESHOLD='+ALLOCATION_ERROR_CODES['EAMOUNT_BELOW_THRESHOLD']),d['push']('\x20\x20EAMOUNT_EXCEEDS_MAX='+ALLOCATION_ERROR_CODES['EAMOUNT_EXCEEDS_MAX']+',\x20EALLOCATOR_COUNT_EXCEEDED='+ALLOCATION_ERROR_CODES['EALLOCATOR_COUNT_EXCEEDED']),d['push'](''),d['join']('\x0a');}export function progressiveAllocationCheck(a){const b=runStaticChecklist(a);if(!b['all_passed'])return{'stage':'checklist','status':'fail','message':'Checklist\x20failed:\x20'+b['items']['filter'](d=>!d['passed'])['map'](d=>d['id'])['join'](',\x20'),'next_action':'Fix\x20failing\x20checklist\x20items\x20(C-A-XX)'};const c=adaptRiskAssessment(a,b);if(c['blocks_publish'])return{'stage':'risk','status':'fail','message':'CRITICAL\x20risks:\x20'+c['risks']['filter'](d=>d['level']==='CRITICAL')['map'](d=>d['id'])['join'](',\x20'),'next_action':'Resolve\x20CRITICAL\x20risks\x20(R-A-1-01\x20empty\x20allocators,\x20R-A-2-01\x20Signer\x20theft)\x20before\x20proceeding'};if(c['needs_human_review'])return{'stage':'confirmation','status':'pending','message':'Human\x20review\x20required\x20for\x20HIGH\x20risks','next_action':'Confirm\x20risk\x20acceptance\x20(QA1\x20~\x20QA6)'};return{'stage':'complete','status':'pass','message':'All\x20checks\x20passed'};}