@wowok/agent-mcp 2.7.2 → 2.7.3

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 (347) 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/bridge-confirm.d.ts +26 -0
  60. package/dist/knowledge/bridge-confirm.js +1 -0
  61. package/dist/knowledge/bridge-translation.d.ts +37 -0
  62. package/dist/knowledge/bridge-translation.js +1 -0
  63. package/dist/knowledge/contact-confirm.d.ts +27 -0
  64. package/dist/knowledge/contact-confirm.js +1 -0
  65. package/dist/knowledge/contact-translation.d.ts +39 -0
  66. package/dist/knowledge/contact-translation.js +1 -0
  67. package/dist/knowledge/demand-context.d.ts +17 -0
  68. package/dist/knowledge/demand-context.js +1 -0
  69. package/dist/knowledge/demand-ledger.d.ts +26 -0
  70. package/dist/knowledge/demand-ledger.js +1 -0
  71. package/dist/knowledge/demand-puzzle.d.ts +29 -0
  72. package/dist/knowledge/demand-puzzle.js +1 -0
  73. package/dist/knowledge/demand-templates.d.ts +12 -0
  74. package/dist/knowledge/demand-templates.js +1 -0
  75. package/dist/knowledge/demand-translation.js +1 -1
  76. package/dist/knowledge/deployment-scanner.js +1 -1
  77. package/dist/knowledge/evidence-review.d.ts +12 -0
  78. package/dist/knowledge/evidence-review.js +1 -0
  79. package/dist/knowledge/examples-scanner-cli.js +1 -1
  80. package/dist/knowledge/examples-scanner.js +1 -1
  81. package/dist/knowledge/flywheel-loop.d.ts +0 -1
  82. package/dist/knowledge/flywheel-loop.js +1 -1
  83. package/dist/knowledge/guard-design-patterns.js +1 -1
  84. package/dist/knowledge/guard-migration.d.ts +1 -1
  85. package/dist/knowledge/index.d.ts +71 -3
  86. package/dist/knowledge/index.js +1 -1
  87. package/dist/knowledge/industry-registry.js +1 -1
  88. package/dist/knowledge/machine-render.js +1 -1
  89. package/dist/knowledge/market-metrics.d.ts +12 -0
  90. package/dist/knowledge/market-metrics.js +1 -0
  91. package/dist/knowledge/market-operations.d.ts +46 -0
  92. package/dist/knowledge/market-operations.js +1 -0
  93. package/dist/knowledge/mcp-schema-audit-cli.js +1 -1
  94. package/dist/knowledge/mcp-schema-audit.d.ts +22 -22
  95. package/dist/knowledge/mcp-schema-audit.js +1 -1
  96. package/dist/knowledge/onchain-constants.js +1 -1
  97. package/dist/knowledge/payment-confirm.d.ts +26 -0
  98. package/dist/knowledge/payment-confirm.js +1 -0
  99. package/dist/knowledge/payment-translation.d.ts +37 -0
  100. package/dist/knowledge/payment-translation.js +1 -0
  101. package/dist/knowledge/permission-ledger.d.ts +11 -0
  102. package/dist/knowledge/permission-ledger.js +1 -1
  103. package/dist/knowledge/personal-confirm.d.ts +29 -0
  104. package/dist/knowledge/personal-confirm.js +1 -0
  105. package/dist/knowledge/personal-translation.d.ts +37 -0
  106. package/dist/knowledge/personal-translation.js +1 -0
  107. package/dist/knowledge/process-model.d.ts +1 -11
  108. package/dist/knowledge/process-model.js +1 -1
  109. package/dist/knowledge/proof-context.d.ts +17 -0
  110. package/dist/knowledge/proof-context.js +1 -0
  111. package/dist/knowledge/proof-ledger.d.ts +34 -0
  112. package/dist/knowledge/proof-ledger.js +1 -0
  113. package/dist/knowledge/proof-puzzle.d.ts +35 -0
  114. package/dist/knowledge/proof-puzzle.js +1 -0
  115. package/dist/knowledge/proof-templates.d.ts +22 -0
  116. package/dist/knowledge/proof-templates.js +1 -0
  117. package/dist/knowledge/registrar-confirm.d.ts +26 -0
  118. package/dist/knowledge/registrar-confirm.js +1 -0
  119. package/dist/knowledge/registrar-translation.d.ts +37 -0
  120. package/dist/knowledge/registrar-translation.js +1 -0
  121. package/dist/knowledge/repository-context.d.ts +12 -0
  122. package/dist/knowledge/repository-context.js +1 -0
  123. package/dist/knowledge/repository-ledger.d.ts +25 -0
  124. package/dist/knowledge/repository-ledger.js +1 -0
  125. package/dist/knowledge/repository-puzzle.d.ts +30 -0
  126. package/dist/knowledge/repository-puzzle.js +1 -0
  127. package/dist/knowledge/repository-templates.d.ts +14 -0
  128. package/dist/knowledge/repository-templates.js +1 -0
  129. package/dist/knowledge/resource-confirm.d.ts +25 -0
  130. package/dist/knowledge/resource-confirm.js +1 -0
  131. package/dist/knowledge/resource-translation.d.ts +37 -0
  132. package/dist/knowledge/resource-translation.js +1 -0
  133. package/dist/knowledge/reward-context.d.ts +2 -2
  134. package/dist/knowledge/safety-rules.d.ts +1 -0
  135. package/dist/knowledge/safety-rules.js +1 -1
  136. package/dist/knowledge/service-risk.d.ts +1 -1
  137. package/dist/knowledge/service-risk.js +1 -1
  138. package/dist/knowledge/template-registry.js +1 -1
  139. package/dist/knowledge/tools-reference.js +1 -1
  140. package/dist/knowledge/universal-template.d.ts +22 -0
  141. package/dist/knowledge/universal-template.js +1 -0
  142. package/dist/knowledge/util-confirm.d.ts +24 -0
  143. package/dist/knowledge/util-confirm.js +1 -0
  144. package/dist/knowledge/util-translation.d.ts +38 -0
  145. package/dist/knowledge/util-translation.js +1 -0
  146. package/dist/knowledge/workflow-guidance.d.ts +116 -0
  147. package/dist/knowledge/workflow-guidance.js +1 -0
  148. package/dist/participation/employee-kpi.d.ts +25 -0
  149. package/dist/participation/employee-kpi.js +1 -0
  150. package/dist/participation/employee-store.d.ts +16 -0
  151. package/dist/participation/employee-store.js +1 -0
  152. package/dist/participation/index.d.ts +2 -0
  153. package/dist/participation/index.js +1 -0
  154. package/dist/persona/defaults.js +1 -1
  155. package/dist/persona/index.d.ts +9 -2
  156. package/dist/persona/index.js +1 -1
  157. package/dist/persona/local-region.d.ts +20 -0
  158. package/dist/persona/local-region.js +1 -0
  159. package/dist/persona/model.js +1 -1
  160. package/dist/persona/overrides.d.ts +10 -0
  161. package/dist/persona/overrides.js +1 -0
  162. package/dist/persona/pack-personae.d.ts +11 -0
  163. package/dist/persona/pack-personae.js +1 -0
  164. package/dist/persona/strategy-intent.d.ts +20 -0
  165. package/dist/persona/strategy-intent.js +1 -0
  166. package/dist/persona/types.d.ts +3 -1
  167. package/dist/project/business-puzzle.d.ts +1 -1
  168. package/dist/project/business-puzzle.js +1 -1
  169. package/dist/project/deployment-doc.js +1 -1
  170. package/dist/project/edit-planner.js +1 -1
  171. package/dist/project/evaluation.d.ts +37 -1
  172. package/dist/project/evaluation.js +1 -1
  173. package/dist/project/graph.d.ts +3 -6
  174. package/dist/project/handlers.d.ts +33 -2
  175. package/dist/project/handlers.js +1 -1
  176. package/dist/project/index.d.ts +1 -0
  177. package/dist/project/index.js +1 -1
  178. package/dist/project/merchant-guide.d.ts +19 -0
  179. package/dist/project/merchant-guide.js +1 -1
  180. package/dist/project/mode-actions.js +1 -1
  181. package/dist/project/rollback-policy.js +1 -1
  182. package/dist/project/semantic-graph.d.ts +3 -5
  183. package/dist/project/workflow-design-assessment.d.ts +24 -0
  184. package/dist/project/workflow-design-assessment.js +1 -0
  185. package/dist/safety/confirm-gate.d.ts +1 -1
  186. package/dist/safety/confirm-gate.js +1 -1
  187. package/dist/schema/call/allocation.d.ts +186 -1385
  188. package/dist/schema/call/arbitration.d.ts +272 -1871
  189. package/dist/schema/call/base.d.ts +1831 -9076
  190. package/dist/schema/call/base.js +1 -1
  191. package/dist/schema/call/bridge.d.ts +911 -3171
  192. package/dist/schema/call/contact.d.ts +135 -931
  193. package/dist/schema/call/demand.d.ts +164 -1194
  194. package/dist/schema/call/guard.d.ts +298 -1140
  195. package/dist/schema/call/guard.js +1 -1
  196. package/dist/schema/call/machine.d.ts +459 -5403
  197. package/dist/schema/call/machine.js +1 -1
  198. package/dist/schema/call/order.d.ts +137 -844
  199. package/dist/schema/call/payment.d.ts +74 -561
  200. package/dist/schema/call/permission.d.ts +335 -2791
  201. package/dist/schema/call/personal.d.ts +227 -1814
  202. package/dist/schema/call/progress.d.ts +140 -843
  203. package/dist/schema/call/proof.d.ts +42 -258
  204. package/dist/schema/call/repository.d.ts +324 -2222
  205. package/dist/schema/call/reward.d.ts +153 -1183
  206. package/dist/schema/call/semantic.js +1 -1
  207. package/dist/schema/call/service.d.ts +376 -3431
  208. package/dist/schema/call/treasury.d.ts +252 -2158
  209. package/dist/schema/common/index.d.ts +222 -697
  210. package/dist/schema/common/index.js +1 -1
  211. package/dist/schema/config/index.d.ts +18 -161
  212. package/dist/schema/employee/index.d.ts +99 -0
  213. package/dist/schema/employee/index.js +1 -0
  214. package/dist/schema/evaluation/index.d.ts +1035 -3918
  215. package/dist/schema/evaluation/index.js +1 -1
  216. package/dist/schema/index.d.ts +3 -0
  217. package/dist/schema/index.js +1 -1
  218. package/dist/schema/industry-pack/index.d.ts +132 -0
  219. package/dist/schema/industry-pack/index.js +1 -0
  220. package/dist/schema/intent-radar/index.d.ts +92 -245
  221. package/dist/schema/intent-radar/index.js +1 -1
  222. package/dist/schema/local/index.d.ts +2045 -18080
  223. package/dist/schema/local/index.js +1 -1
  224. package/dist/schema/local/wip.d.ts +61 -651
  225. package/dist/schema/local/wip.js +1 -1
  226. package/dist/schema/messenger/index.d.ts +949 -5557
  227. package/dist/schema/messenger/index.js +1 -1
  228. package/dist/schema/operations.d.ts +2969 -26518
  229. package/dist/schema/operations.js +1 -1
  230. package/dist/schema/persona/index.d.ts +469 -1820
  231. package/dist/schema/persona/index.js +1 -1
  232. package/dist/schema/project/index.d.ts +1023 -8450
  233. package/dist/schema/project/index.js +1 -1
  234. package/dist/schema/query/index.d.ts +12042 -75678
  235. package/dist/schema/query/index.js +1 -1
  236. package/dist/schema/schema-query/index.d.ts +35 -98
  237. package/dist/schema/schema-query/index.js +1 -1
  238. package/dist/schema/schema-version.js +1 -1
  239. package/dist/schema/task-status.d.ts +26 -132
  240. package/dist/schema/trust/index.d.ts +194 -1290
  241. package/dist/schema/utils/guard-parser.js +1 -1
  242. package/dist/schema/utils/node-parser.js +1 -1
  243. package/dist/schema/utils/skills-recommendation.d.ts +1 -0
  244. package/dist/schema/utils/skills-recommendation.js +1 -1
  245. package/dist/schema/workspace/index.d.ts +69 -0
  246. package/dist/schema/workspace/index.js +1 -0
  247. package/dist/{schema-query → schema-query-impl}/index.js +1 -1
  248. package/dist/schemas/account_operation.output.json +3147 -1655
  249. package/dist/schemas/account_operation.schema.json +225 -218
  250. package/dist/schemas/bridge_operation.output.json +1168 -653
  251. package/dist/schemas/bridge_operation.schema.json +736 -504
  252. package/dist/schemas/config_operation.output.json +185 -179
  253. package/dist/schemas/config_operation.schema.json +21 -26
  254. package/dist/schemas/employee_operation.output.json +207 -0
  255. package/dist/schemas/employee_operation.schema.json +176 -0
  256. package/dist/schemas/evaluation_operation.output.json +2268 -601
  257. package/dist/schemas/evaluation_operation.schema.json +2919 -787
  258. package/dist/schemas/guard2file.output.json +58 -64
  259. package/dist/schemas/guard2file.schema.json +79 -81
  260. package/dist/schemas/index.json +29 -11
  261. package/dist/schemas/industry_pack_operation.output.json +594 -0
  262. package/dist/schemas/industry_pack_operation.schema.json +55 -0
  263. package/dist/schemas/intent_radar.output.json +275 -203
  264. package/dist/schemas/intent_radar.schema.json +124 -126
  265. package/dist/schemas/local_info_operation.output.json +1174 -660
  266. package/dist/schemas/local_info_operation.schema.json +119 -125
  267. package/dist/schemas/local_mark_operation.output.json +1239 -692
  268. package/dist/schemas/local_mark_operation.schema.json +91 -96
  269. package/dist/schemas/machineNode2file.output.json +63 -69
  270. package/dist/schemas/machineNode2file.schema.json +79 -81
  271. package/dist/schemas/messenger_operation.output.json +2722 -1531
  272. package/dist/schemas/messenger_operation.schema.json +1482 -1264
  273. package/dist/schemas/onchain_events.output.json +2590 -978
  274. package/dist/schemas/onchain_events.schema.json +117 -99
  275. package/dist/schemas/onchain_operations.output.json +3957 -2312
  276. package/dist/schemas/onchain_operations.schema.json +20799 -9285
  277. package/dist/schemas/onchain_operations_allocation.schema.json +171 -107
  278. package/dist/schemas/onchain_operations_arbitration.schema.json +233 -146
  279. package/dist/schemas/onchain_operations_contact.schema.json +129 -90
  280. package/dist/schemas/onchain_operations_demand.schema.json +170 -112
  281. package/dist/schemas/onchain_operations_gen_passport.schema.json +61 -646
  282. package/dist/schemas/onchain_operations_gen_proof.schema.json +40 -172
  283. package/dist/schemas/onchain_operations_guard.schema.json +3765 -294
  284. package/dist/schemas/onchain_operations_machine.schema.json +536 -163
  285. package/dist/schemas/onchain_operations_order.schema.json +126 -96
  286. package/dist/schemas/onchain_operations_payment.schema.json +82 -67
  287. package/dist/schemas/onchain_operations_permission.schema.json +331 -93
  288. package/dist/schemas/onchain_operations_personal.schema.json +636 -96
  289. package/dist/schemas/onchain_operations_progress.schema.json +125 -92
  290. package/dist/schemas/onchain_operations_proof.schema.json +76 -69
  291. package/dist/schemas/onchain_operations_repository.schema.json +636 -249
  292. package/dist/schemas/onchain_operations_reward.schema.json +218 -108
  293. package/dist/schemas/onchain_operations_service.schema.json +678 -220
  294. package/dist/schemas/onchain_operations_treasury.schema.json +401 -135
  295. package/dist/schemas/onchain_table_data.output.json +6018 -2433
  296. package/dist/schemas/onchain_table_data.schema.json +544 -430
  297. package/dist/schemas/persona_operation.output.json +1568 -268
  298. package/dist/schemas/persona_operation.schema.json +346 -205
  299. package/dist/schemas/project_operation.output.json +6922 -5132
  300. package/dist/schemas/project_operation.schema.json +1050 -1020
  301. package/dist/schemas/query_task_status.output.json +195 -99
  302. package/dist/schemas/query_task_status.schema.json +12 -18
  303. package/dist/schemas/query_toolkit.output.json +18862 -14561
  304. package/dist/schemas/query_toolkit.schema.json +614 -522
  305. package/dist/schemas/schema_query.output.json +127 -129
  306. package/dist/schemas/schema_query.schema.json +64 -69
  307. package/dist/schemas/trust_score.output.json +678 -587
  308. package/dist/schemas/trust_score.schema.json +289 -277
  309. package/dist/schemas/wip_file.output.json +116 -124
  310. package/dist/schemas/wip_file.schema.json +142 -143
  311. package/dist/schemas/workspace_operation.output.json +277 -0
  312. package/dist/schemas/workspace_operation.schema.json +45 -0
  313. package/dist/schemas/wowok_buildin_info.output.json +1682 -844
  314. package/dist/schemas/wowok_buildin_info.schema.json +576 -526
  315. package/dist/tools/handlers/bridge.d.ts +8 -1
  316. package/dist/tools/handlers/bridge.js +1 -1
  317. package/dist/tools/handlers/config.js +1 -1
  318. package/dist/tools/handlers/employee.d.ts +2 -0
  319. package/dist/tools/handlers/employee.js +1 -0
  320. package/dist/tools/handlers/evaluation.js +1 -1
  321. package/dist/tools/handlers/file-export.js +1 -1
  322. package/dist/tools/handlers/industry-pack.d.ts +2 -0
  323. package/dist/tools/handlers/industry-pack.js +1 -0
  324. package/dist/tools/handlers/onchain.js +1 -1
  325. package/dist/tools/handlers/persona.js +1 -1
  326. package/dist/tools/handlers/project.js +1 -1
  327. package/dist/tools/handlers/query.js +1 -1
  328. package/dist/tools/handlers/schema-query.js +1 -1
  329. package/dist/tools/handlers/trust.js +1 -1
  330. package/dist/tools/handlers/wip.js +1 -1
  331. package/dist/tools/handlers/workspace.d.ts +2 -0
  332. package/dist/tools/handlers/workspace.js +1 -0
  333. package/dist/tools/index.d.ts +2 -1
  334. package/dist/tools/index.js +1 -1
  335. package/dist/tools/rules-hook.d.ts +1 -1
  336. package/dist/tools/rules-hook.js +1 -1
  337. package/dist/tools/shared.d.ts +1 -1
  338. package/dist/tools/shared.js +1 -1
  339. package/dist/tools/types.d.ts +2 -1
  340. package/package.json +4 -5
  341. package/dist/knowledge/arbitration-trust.d.ts +0 -24
  342. package/dist/knowledge/arbitration-trust.js +0 -1
  343. package/dist/schema/call/bridge-handler.d.ts +0 -8
  344. package/dist/schema/call/bridge-handler.js +0 -1
  345. package/dist/schema/sync-layer4.d.ts +0 -21
  346. package/dist/schema/sync-layer4.js +0 -1
  347. /package/dist/{schema-query → schema-query-impl}/index.d.ts +0 -0
@@ -0,0 +1,37 @@
1
+ export type AntiCheatSeverity = "high" | "medium" | "low";
2
+ export interface AntiCheatSignal {
3
+ kind: "fake_order" | "fake_review" | "shell_merchant" | "reputation_trade";
4
+ severity: AntiCheatSeverity;
5
+ description: string;
6
+ }
7
+ export interface OrderEvidence {
8
+ id: string;
9
+ buyer: string;
10
+ seller: string;
11
+ amount: number | bigint | string;
12
+ status: string;
13
+ allocation?: string | null;
14
+ }
15
+ export interface ReviewEvidence {
16
+ reviewer: string;
17
+ rating: "like" | "dislike";
18
+ orderRef?: string;
19
+ verified?: boolean;
20
+ timestamp?: number;
21
+ }
22
+ export interface MerchantEvidence {
23
+ service: {
24
+ object: string;
25
+ arbitrations: string[];
26
+ compensation_fund: number | bigint | string;
27
+ machine: string | null;
28
+ bPublished: boolean;
29
+ };
30
+ orders: OrderEvidence[];
31
+ reviews: ReviewEvidence[];
32
+ }
33
+ export declare function detectFakeOrders(orders: OrderEvidence[]): AntiCheatSignal[];
34
+ export declare function detectFakeReviews(reviews: ReviewEvidence[]): AntiCheatSignal[];
35
+ export declare function detectShellMerchant(service: MerchantEvidence["service"]): AntiCheatSignal[];
36
+ export declare function reputationTradeNote(): AntiCheatSignal;
37
+ export declare function assessAntiCheat(evidence: MerchantEvidence): AntiCheatSignal[];
@@ -0,0 +1 @@
1
+ export function detectFakeOrders(a){const b=[];if(a['length']===0x0)return b;const c=a['filter'](h=>h['buyer']===h['seller']);c['length']>0x0&&b['push']({'kind':'fake_order','severity':'high','description':c['length']+'\x20order(s)\x20with\x20buyer\x20==\x20seller\x20(self-buy-sell)'});const d=new Set(a['map'](h=>h['buyer'])),e=new Set(a['map'](h=>h['seller'])),f=a['filter'](h=>d['has'](h['seller'])&&e['has'](h['buyer']));f['length']>=0x2&&b['push']({'kind':'fake_order','severity':'medium','description':f['length']+'\x20order(s)\x20in\x20a\x20reciprocal\x20buyer/seller\x20loop\x20(possible\x20fund\x20circulation)'});const g=a['filter'](h=>!h['allocation']&&h['status']==='completed');return g['length']>0x0&&b['push']({'kind':'fake_order','severity':'medium','description':g['length']+'\x20completed\x20order(s)\x20without\x20an\x20Allocation\x20(no\x20fund-closure\x20evidence)'}),b;}export function detectFakeReviews(a){const b=[];if(a['length']===0x0)return b;const c=a['filter'](g=>!g['verified']);c['length']>0x0&&c['length']===a['length']&&b['push']({'kind':'fake_review','severity':'high','description':'all\x20'+a['length']+'\x20review(s)\x20are\x20unverified\x20(no\x20completed-order\x20credential)'});const d=new Map();for(const g of a){d['set'](g['reviewer'],(d['get'](g['reviewer'])??0x0)+0x1);}const e=[...d['values']()]['filter'](h=>h>0x1)['length'];e>0x0&&b['push']({'kind':'fake_review','severity':'medium','description':e+'\x20address(es)\x20submitted\x20multiple\x20reviews'});const f=a['filter'](h=>h['timestamp']!=null);if(f['length']>0xa){const h=[...f]['sort']((j,k)=>(j['timestamp']??0x0)-(k['timestamp']??0x0)),i=(h[h['length']-0x1]['timestamp']??0x0)-(h[0x0]['timestamp']??0x0);i>0x0&&i<0x36ee80&&b['push']({'kind':'fake_review','severity':'medium','description':f['length']+'\x20review(s)\x20within\x201\x20hour\x20(concentrated\x20timing)'});}return b;}export function detectShellMerchant(a){const b=[];if(!a['bPublished'])return b;a['arbitrations']['length']===0x0&&b['push']({'kind':'shell_merchant','severity':a['machine']?'low':'medium','description':'published\x20Service\x20has\x20no\x20Arbitration\x20binding\x20(no\x20dispute\x20path)'});const c=toBigInt(a['compensation_fund'])??0x0n;return c>0x0n&&a['arbitrations']['length']===0x0&&b['push']({'kind':'shell_merchant','severity':'high','description':'funded\x20compensation_fund\x20but\x20no\x20Arbitration\x20(compensation\x20cannot\x20be\x20ruled/disbursed)'}),!a['machine']&&b['push']({'kind':'shell_merchant','severity':'low','description':'published\x20Service\x20has\x20no\x20Machine\x20(no\x20workflow)'}),b;}export function reputationTradeNote(){return{'kind':'reputation_trade','severity':'low','description':'reputation\x20aggregates\x20by\x20historical\x20fulfillment\x20and\x20is\x20not\x20transferable\x20with\x20the\x20object\x20—\x20reputation\x20trading\x20is\x20structurally\x20prevented'};}export function assessAntiCheat(a){return[...detectFakeOrders(a['orders']),...detectFakeReviews(a['reviews']),...detectShellMerchant(a['service']),reputationTradeNote()];}function toBigInt(a){if(a===undefined||a===null)return undefined;try{return BigInt(a);}catch{return undefined;}}
@@ -0,0 +1,28 @@
1
+ export declare const ARB_CONFIRM_VERSION = "1.0.0";
2
+ export type ConfirmSeverity = "block" | "warn" | "info";
3
+ export interface ArbConfirmItem {
4
+ id: string;
5
+ severity: ConfirmSeverity;
6
+ title: string;
7
+ description: string;
8
+ passed: boolean;
9
+ evidence?: string;
10
+ fix_hint?: string;
11
+ }
12
+ export interface ArbOpCheckInput {
13
+ status?: number;
14
+ invalid_transition?: boolean;
15
+ proposition_count?: number;
16
+ votor_count?: number;
17
+ voting_deadline_none?: boolean;
18
+ withdraw_too_early?: boolean;
19
+ order_mismatch?: boolean;
20
+ }
21
+ export declare function preCheckArbOp(input: ArbOpCheckInput): ArbConfirmItem[];
22
+ export declare function canProceedArbOp(input: ArbOpCheckInput): {
23
+ canProceed: boolean;
24
+ blockers: ArbConfirmItem[];
25
+ warnings: ArbConfirmItem[];
26
+ info: ArbConfirmItem[];
27
+ };
28
+ export declare function formatArbOpSummary(input: ArbOpCheckInput): string;
@@ -0,0 +1 @@
1
+ import{MAX_PROPOSITION_COUNT,MAX_VOTOR_COUNT}from'@wowok/wowok';export const ARB_CONFIRM_VERSION='1.0.0';function checkStatusTransition(a){if(!a['invalid_transition'])return{'id':'C-ARB-01','severity':'info','title':'Status\x20transition\x20is\x20valid','description':'Each\x20Arb\x20op\x20asserts\x20the\x20current\x20status;\x20out-of-order\x20calls\x20abort\x20with\x20E_STATUS_NOT_MATCH\x20(3).','passed':!![],'evidence':a['status']===undefined?'status\x20not\x20provided':'status='+a['status']};return{'id':'C-ARB-01','severity':'block','title':'Invalid\x20state\x20transition\x20—\x20will\x20abort\x20with\x20E_STATUS_NOT_MATCH\x20(3)','description':'Arb\x20is\x20a\x207-state\x20machine\x20(0\x20Principal_confirming\x20→\x20…\x20→\x206\x20Withdrawn).\x20Calling\x20an\x20op\x20out\x20of\x20order\x20leaves\x20the\x20case\x20stuck.','passed':![],'evidence':'invalid_transition=true,\x20status='+(a['status']??'?'),'fix_hint':'Validate\x20current\x20status\x20against\x20the\x20op\x27s\x20expected\x20pre-state\x20before\x20submitting.'};}function checkOrderMatch(a){if(!a['order_mismatch'])return{'id':'C-ARB-02','severity':'info','title':'Order\x20matches\x20arb.order','description':'ops\x20assert\x20self.order\x20==\x20id_address(order),\x20else\x20E_ARB_ORDER_NOT_MATCH\x20(2).','passed':!![],'evidence':'order\x20assumed\x20matching'};return{'id':'C-ARB-02','severity':'block','title':'Order\x20mismatch\x20—\x20aborts\x20with\x20E_ARB_ORDER_NOT_MATCH\x20(2)','description':'The\x20passed\x20Order\x20address\x20must\x20equal\x20the\x20Arb\x27s\x20bound\x20order.','passed':![],'evidence':'order_mismatch=true','fix_hint':'Pass\x20the\x20Order\x20that\x20created\x20this\x20Arb.'};}function checkPropositionCount(a){if(a['proposition_count']===undefined)return{'id':'C-ARB-03','severity':'info','title':'proposition_count\x20≤\x20MAX_PROPOSITION_COUNT\x20('+MAX_PROPOSITION_COUNT+')','description':'proposition_change\x20aborts\x20with\x20E_MAX_PROPOSITION_COUNT\x20(1)\x20above\x20the\x20cap.','passed':!![],'evidence':'not\x20provided'};const b=a['proposition_count']<=MAX_PROPOSITION_COUNT;return{'id':'C-ARB-03','severity':b?'info':'block','title':'proposition_count\x20≤\x20MAX_PROPOSITION_COUNT\x20('+MAX_PROPOSITION_COUNT+')','description':'proposition\x20may\x20hold\x20at\x20most\x20MAX_PROPOSITION_COUNT='+MAX_PROPOSITION_COUNT+'\x20entries.','passed':b,'evidence':'proposition_count='+a['proposition_count']+',\x20limit='+MAX_PROPOSITION_COUNT,'fix_hint':'Trim\x20the\x20proposition\x20list\x20to\x20the\x20voting\x20options.'};}function checkVotorCount(a){if(a['votor_count']===undefined)return{'id':'C-ARB-04','severity':'info','title':'votor_count\x20<\x20MAX_VOTOR_COUNT\x20('+MAX_VOTOR_COUNT+')','description':'vote\x20aborts\x20with\x20E_MAX_VOTOR_COUNT\x20(6)\x20at\x20the\x20boundary.','passed':!![],'evidence':'not\x20provided'};const b=a['votor_count']<MAX_VOTOR_COUNT;return{'id':'C-ARB-04','severity':b?'info':'warn','title':'votor_count\x20<\x20MAX_VOTOR_COUNT\x20('+MAX_VOTOR_COUNT+')','description':'A\x20single\x20Arb\x20may\x20record\x20up\x20to\x20MAX_VOTOR_COUNT='+MAX_VOTOR_COUNT+'\x20voters;\x20large\x20juries\x20inflate\x20tally\x20cost.','passed':b,'evidence':'votor_count='+a['votor_count']+',\x20limit='+MAX_VOTOR_COUNT,'fix_hint':'Self-limit\x20voter\x20count\x20based\x20on\x20the\x20Arbitration\x20rule\x27s\x20quorum.'};}function checkVotingDeadline(a){if(!a['voting_deadline_none'])return{'id':'C-ARB-05','severity':'info','title':'voting_deadline\x20is\x20set\x20(Some)','description':'When\x20Some(t),\x20vote()\x20aborts\x20with\x20E_VOTING_DEADLINE_PASSED\x20(7)\x20if\x20clock\x20>\x20t.','passed':!![],'evidence':'deadline\x20set'};return{'id':'C-ARB-05','severity':'warn','title':'voting_deadline\x20is\x20None\x20—\x20open-ended\x20vote','description':'None\x20means\x20no\x20deadline;\x20the\x20vote\x20can\x20stall\x20indefinitely\x20and\x20E_VOTING_DEADLINE_PASSED\x20never\x20triggers.','passed':![],'evidence':'voting_deadline_none=true','fix_hint':'Set\x20an\x20explicit\x20deadline\x20via\x20arbitrator_confirm\x20unless\x20an\x20open\x20vote\x20is\x20intended.'};}function checkWithdraw(a){if(!a['withdraw_too_early'])return{'id':'C-ARB-06','severity':'info','title':'Withdraw\x20timing\x20is\x20valid','description':'Finished(5)\x20withdraws\x20immediately;\x20Arbitrated(3)/Objectionable(4)\x20wait\x20WITHDRAW_DURATION_TIME\x20(30\x20days).','passed':!![],'evidence':'withdraw\x20timing\x20ok'};return{'id':'C-ARB-06','severity':'warn','title':'Withdraw\x20too\x20early\x20—\x20funds\x20still\x20locked\x20(30-day\x20window)','description':'From\x20Arbitrated/Objectionable,\x20the\x20fee\x20Balance\x20is\x20locked\x20until\x20indemnity.time\x20+\x20WITHDRAW_DURATION_TIME\x20(30\x20days).','passed':![],'evidence':'withdraw_too_early=true','fix_hint':'Drive\x20the\x20case\x20to\x20Finished(5)\x20for\x20immediate\x20withdraw,\x20or\x20wait\x20out\x20the\x20lock.'};}export function preCheckArbOp(a){return[checkStatusTransition(a),checkOrderMatch(a),checkPropositionCount(a),checkVotorCount(a),checkVotingDeadline(a),checkWithdraw(a)];}export function canProceedArbOp(a){const b=preCheckArbOp(a);return{'canProceed':b['every'](c=>c['severity']!=='block'||c['passed']),'blockers':b['filter'](c=>c['severity']==='block'&&!c['passed']),'warnings':b['filter'](c=>c['severity']==='warn'&&!c['passed']),'info':b['filter'](c=>c['severity']==='info')};}export function formatArbOpSummary(a){const {canProceed:b,blockers:c,warnings:d}=canProceedArbOp(a),e=[b?'✓\x20Arb\x20operation\x20pre-check\x20PASSED':'✗\x20Arb\x20operation\x20pre-check\x20FAILED',''];return c['length']>0x0&&(e['push']('BLOCKERS:'),c['forEach'](f=>e['push']('\x20\x20['+f['id']+']\x20'+f['title']+'\x20—\x20'+(f['evidence']??''))),e['push']('')),d['length']>0x0&&(e['push']('WARNINGS:'),d['forEach'](f=>e['push']('\x20\x20['+f['id']+']\x20'+f['title']+'\x20—\x20'+(f['evidence']??'')))),e['join']('\x0a');}
@@ -0,0 +1,48 @@
1
+ export declare const ARB_TRANSLATION_VERSION = "1.0.0";
2
+ export declare const ARB_STATUS: {
3
+ readonly PRINCIPAL_CONFIRMING: 0;
4
+ readonly ARBITRATOR_CONFIRMING: 1;
5
+ readonly VOTING: 2;
6
+ readonly ARBITRATED: 3;
7
+ readonly OBJECTIONABLE: 4;
8
+ readonly FINISHED: 5;
9
+ readonly WITHDRAWN: 6;
10
+ };
11
+ export interface SemanticToArbSchemaRule {
12
+ id: string;
13
+ pattern_name: string;
14
+ semantic_intent: string;
15
+ match_keywords: string[];
16
+ required_fields: string[];
17
+ optional_fields: string[];
18
+ example: Record<string, unknown>;
19
+ }
20
+ export declare const SEMANTIC_TO_ARB_SCHEMA_RULES: SemanticToArbSchemaRule[];
21
+ export interface ArbFieldTranslation {
22
+ field_name: string;
23
+ value_type: string;
24
+ semantic: string;
25
+ format_example: string;
26
+ validation_rules: string[];
27
+ }
28
+ export declare const ARB_FIELD_TRANSLATIONS: ArbFieldTranslation[];
29
+ export interface ArbConstraintRule {
30
+ id: string;
31
+ name: string;
32
+ description: string;
33
+ related_field: string;
34
+ }
35
+ export declare const ARB_CONSTRAINT_RULES: ArbConstraintRule[];
36
+ export interface ArbExplainInput {
37
+ status?: number;
38
+ voting_deadline?: number | null;
39
+ indemnity_amount?: number | null;
40
+ proposition_count?: number;
41
+ }
42
+ export interface ArbExplanation {
43
+ summary: string;
44
+ status_label: string;
45
+ deadline: string;
46
+ warnings: string[];
47
+ }
48
+ export declare function explainArb(input: ArbExplainInput): ArbExplanation;
@@ -0,0 +1 @@
1
+ import{MAX_PROPOSITION_COUNT,MAX_VOTOR_COUNT}from'@wowok/wowok';export const ARB_TRANSLATION_VERSION='1.0.0';export const ARB_STATUS={'PRINCIPAL_CONFIRMING':0x0,'ARBITRATOR_CONFIRMING':0x1,'VOTING':0x2,'ARBITRATED':0x3,'OBJECTIONABLE':0x4,'FINISHED':0x5,'WITHDRAWN':0x6};export const SEMANTIC_TO_ARB_SCHEMA_RULES=[{'id':'P-ARB-01','pattern_name':'Create\x20arbitration\x20case','semantic_intent':'Create\x20a\x20shared\x20Arb\x20object\x20bound\x20to\x20an\x20Order\x20+\x20Arbitration.','match_keywords':['open\x20dispute','create\x20arbitration','start\x20case'],'required_fields':['arbitration','order','description','proposition'],'optional_fields':['fee'],'example':{'arbitration':'0x...','order':'0x...','description':'delivery\x20dispute','proposition':['refund','redeliver']}},{'id':'P-ARB-02','pattern_name':'Cast\x20vote','semantic_intent':'A\x20voter\x20casts\x20weighted\x20votes\x20on\x20propositions\x20(Voting\x20status).','match_keywords':['vote','cast\x20vote','jury\x20vote'],'required_fields':['voter','votes','weight'],'optional_fields':[],'example':{'voter':'0x...','votes':[0x0],'weight':0xa}},{'id':'P-ARB-03','pattern_name':'Finalize\x20arbitration','semantic_intent':'Arbitrator\x20finalizes\x20with\x20feedback\x20+\x20indemnity\x20(Voting\x20→\x20Arbitrated).','match_keywords':['arbitrate','finalize','rule','indemnity'],'required_fields':['feedback','indemnity_amount'],'optional_fields':[],'example':{'feedback':'refund\x20awarded','indemnity_amount':0x3b9aca00}}];export const ARB_FIELD_TRANSLATIONS=[{'field_name':'status','value_type':'u8','semantic':'7-state\x20machine:\x200\x20Principal_confirming\x20→\x201\x20Arbitrator_confirming\x20→\x202\x20Voting\x20→\x203\x20Arbitrated\x20→\x204\x20Objectionable\x20→\x205\x20Finished\x20→\x206\x20Withdrawn.','format_example':'2\x20(Voting)','validation_rules':['E_STATUS_NOT_MATCH\x20(3)\x20on\x20out-of-order\x20op']},{'field_name':'order','value_type':'address','semantic':'Bound\x20Order\x20address;\x20ops\x20assert\x20equality\x20(E_ARB_ORDER_NOT_MATCH\x202).','format_example':'0x...order...','validation_rules':['E_ARB_ORDER_NOT_MATCH\x20(2)']},{'field_name':'proposition','value_type':'vector<Proposition>','semantic':'Voting\x20options\x20(≤\x20MAX_PROPOSITION_COUNT\x20'+MAX_PROPOSITION_COUNT+').','format_example':'[{name,\x20votes}]','validation_rules':['E_MAX_PROPOSITION_COUNT\x20(1)']},{'field_name':'voted','value_type':'vector<Voted>','semantic':'Voter\x20records\x20(≤\x20MAX_VOTOR_COUNT\x20'+MAX_VOTOR_COUNT+').','format_example':'[{voter,\x20agrees,\x20weight,\x20time}]','validation_rules':['E_MAX_VOTOR_COUNT\x20(6)']},{'field_name':'voting_deadline','value_type':'Option<u64>','semantic':'None=open-ended;\x20Some(t)\x20enforces\x20deadline\x20(E_VOTING_DEADLINE_PASSED\x207).','format_example':'null\x20or\x201710000000000','validation_rules':['E_VOTING_DEADLINE_PASSED\x20(7)','E_VOTING_DEADLINE_NOT_PASSED\x20(4)']},{'field_name':'indemnity','value_type':'Option<Indemnity>','semantic':'None=no\x20compensation;\x20Some({amount,time}).','format_example':'{amount:\x201000000000,\x20time:\x20...}','validation_rules':['finish()\x20returns\x20amount\x20(0\x20when\x20None)']},{'field_name':'compensation_time','value_type':'Option<u64>','semantic':'Claim-ready\x20time\x20(set\x20when\x20Finished).','format_example':'1710000000000','validation_rules':['set\x20by\x20finish()']}];export const ARB_CONSTRAINT_RULES=[{'id':'ARB_C_01','name':'status\x20transition','description':'each\x20op\x20asserts\x20current\x20status\x20(E_STATUS_NOT_MATCH\x203).','related_field':'status'},{'id':'ARB_C_02','name':'order\x20match','description':'self.order\x20==\x20id_address(order)\x20(E_ARB_ORDER_NOT_MATCH\x202).','related_field':'order'},{'id':'ARB_C_03','name':'proposition\x20cap','description':'proposition\x20≤\x20MAX_PROPOSITION_COUNT\x20('+MAX_PROPOSITION_COUNT+').','related_field':'proposition'},{'id':'ARB_C_04','name':'voter\x20cap','description':'voted\x20<\x20MAX_VOTOR_COUNT\x20('+MAX_VOTOR_COUNT+').','related_field':'voted'},{'id':'ARB_C_05','name':'deadline','description':'vote\x20enforces\x20voting_deadline\x20when\x20Some\x20(E_VOTING_DEADLINE_PASSED\x207).','related_field':'voting_deadline'}];const STATUS_LABELS={0x0:'Principal_confirming',0x1:'Arbitrator_confirming',0x2:'Voting',0x3:'Arbitrated',0x4:'Objectionable',0x5:'Finished',0x6:'Withdrawn'};export function explainArb(a){const b=[],c=a['status']!==undefined?STATUS_LABELS[a['status']]??'unknown('+a['status']+')':'unknown',d=a['voting_deadline']==null?'open-ended\x20(None)':'deadline='+a['voting_deadline'];return a['voting_deadline']==null&&b['push']('voting_deadline\x20None\x20—\x20open-ended\x20vote,\x20may\x20never\x20finalize'),a['indemnity_amount']==null&&b['push']('indemnity\x20None\x20—\x20no\x20compensation\x20awarded'),a['proposition_count']!==undefined&&a['proposition_count']>MAX_PROPOSITION_COUNT&&b['push']('proposition_count\x20'+a['proposition_count']+'\x20exceeds\x20'+MAX_PROPOSITION_COUNT),{'summary':'Arb\x20status='+c+'.\x20Voting\x20'+d+'.\x20Indemnity\x20'+(a['indemnity_amount']==null?'none':a['indemnity_amount'])+'.','status_label':c,'deadline':d,'warnings':b};}
@@ -1 +1 @@
1
- import{MAX_VOTING_GUARD_COUNT}from'@wowok/wowok';import{ARBITRATION_SCENES,DUAL_GUARD_MATRIX,ARB_STATUS_CODE,ARB_TERMINAL_STATUSES,findSceneByPermissionIndex,inferSceneFromIntent,getScenesByCategory,getDualGuardMatrixEntry,isValidArbStatusTransition,isTerminalArbStatus,getActiveArbitrationPermissions,getAllArbitrationPermissions}from'./arbitration-ledger.js';import{getTemplatesByScene}from'./arbitration-templates.js';import{ARBITRATION_CONSTRAINT_RULES,matchSemanticPattern}from'./arbitration-translation.js';import{getAllRiskRules,assessArbitrationRisks}from'./arbitration-risk.js';import{initPuzzleFromIntent,checkPuzzleCompleteness}from'./arbitration-puzzle.js';import{ARBITRATION_OPERATION_CHECKLIST,ARBITRATION_CONFIRMATION_QUESTIONS}from'./arbitration-confirm.js';export const ARBITRATION_CONTEXT_VERSION='1.0.0';export function buildArbitrationContext(a){const b=a['max_length']??0x1194;let c;if(a['intent'])c=inferSceneFromIntent(a['intent']);else{if(a['target_permission_index']!==undefined)c=findSceneByPermissionIndex(a['target_permission_index']);else{if(a['target_operation_category']){const s=getScenesByCategory(a['target_operation_category']);if(s['length']>0x0)c=s[0x0];}}}let d;if(c){const t=getTemplatesByScene(c['id']);if(t['length']>0x0)d=t[0x0];}let e;if(a['intent']){const u=matchSemanticPattern(a['intent']);if(u['length']>0x0)e=u[0x0];}let f,g;a['mode']==='initial_design'&&a['intent']&&(f=initPuzzleFromIntent({'rule_sentence':a['intent']}),g=checkPuzzleCompleteness(f));const h=filterRiskRules(a['mode'],a['stakeholder'],c);let i;if(a['mode']==='pre_publish'&&a['arbitration_json']){const v={'object':a['arbitration_json']['object'],'description':a['arbitration_json']['description'],'location':a['arbitration_json']['location'],'fee':a['arbitration_json']['fee'],'pause':a['arbitration_json']['pause'],'dispute':a['arbitration_json']['dispute'],'confirm':a['arbitration_json']['confirm'],'voting_deadline_change':a['arbitration_json']['voting_deadline_change'],'vote':a['arbitration_json']['vote'],'feedback':a['arbitration_json']['feedback'],'arbitration':a['arbitration_json']['arbitration'],'reset':a['arbitration_json']['reset'],'arb_withdraw':a['arbitration_json']['arb_withdraw'],'fees_transfer':a['arbitration_json']['fees_transfer'],'usage_guard':a['arbitration_json']['usage_guard'],'voting_guard':a['arbitration_json']['voting_guard'],'um':a['arbitration_json']['um'],'builder':a['arbitration_json']['builder'],'current_arb_status':a['current_arb_status'],'expected_arb_status':a['arbitration_json']['arbitration']?'Arbitrated':a['current_arb_status']};i=assessArbitrationRisks(v);}const j=filterChecklist(a['mode']),k=filterQuestions(a['mode']),l=filterConstraints(a['mode'],c),m=a['stakeholder']==='system'?getAllArbitrationPermissions():getActiveArbitrationPermissions();let n;if(a['voting_guard_empty']!==undefined&&a['usage_guard_none']!==undefined)n=getDualGuardMatrixEntry(a['voting_guard_empty'],a['usage_guard_none']);else{if(c){const w=c['requires_voting_guard']==='empty',x=c['requires_usage_guard']==='none';n=getDualGuardMatrixEntry(w,x);}}const o=buildArbLifecycleContext(a['current_arb_status'],c),p=buildCrossObjectRefs(c),q=buildOnchainConstraints(),r=buildRenderingHints(a['mode'],b,!!a['arbitration_json']?.['arbitration'],!!a['arbitration_json']?.['builder']);return{'version':ARBITRATION_CONTEXT_VERSION,'mode':a['mode'],'stakeholder_perspective':a['stakeholder'],'matched_scene':c,'matched_template':d,'matched_pattern':e,'puzzle_state':f,'puzzle_completeness':g,'relevant_risks':h,'risk_assessment':i,'relevant_checklist':j,'relevant_questions':k,'relevant_permissions':m,'relevant_constraints':l,'dual_guard_matrix_entry':n,'arb_lifecycle_context':o,'cross_object_refs':p,'onchain_constraints':q,'rendering_hints':r};}function filterRiskRules(a,b,c){const d=getAllRiskRules();if(a==='initial_design')return d['filter'](e=>e['category']==='structural'||e['category']==='authority');if(a==='pre_publish')return d;if(a==='stakeholder_review'&&b){if(b==='owner')return d['filter'](e=>e['category']==='authority'||e['category']==='lifecycle'||e['category']==='cross_object');if(b==='arbiter')return d['filter'](e=>e['category']==='authority'||e['category']==='lifecycle');if(b==='voter')return d['filter'](e=>e['category']==='structural'||e['category']==='lifecycle');if(b==='disputant')return d['filter'](e=>e['category']==='semantic'||e['category']==='lifecycle');if(b==='system')return d['filter'](e=>e['category']==='structural'||e['category']==='cross_object');}if(a==='post_publish_modify')return d['filter'](e=>e['category']==='lifecycle'||e['category']==='cross_object');return d;}function filterChecklist(a){if(a==='initial_design')return ARBITRATION_OPERATION_CHECKLIST['filter'](b=>['C-AB-01','C-AB-02','C-AB-03','C-AB-04']['includes'](b['id']));return[...ARBITRATION_OPERATION_CHECKLIST];}function filterQuestions(a){if(a==='pre_publish')return[...ARBITRATION_CONFIRMATION_QUESTIONS];if(a==='post_publish_modify')return ARBITRATION_CONFIRMATION_QUESTIONS['filter'](b=>b['id']!=='QAB5');return[];}function filterConstraints(a,b){if(a==='initial_design')return ARBITRATION_CONSTRAINT_RULES['filter'](d=>d['category']==='structural');if(a==='pre_publish')return[...ARBITRATION_CONSTRAINT_RULES];if(b){const c={'lifecycle':['structural','authority'],'dispute':['semantic','lifecycle'],'voting':['semantic','lifecycle'],'ruling':['authority','lifecycle'],'fund':['cross_object'],'guard':['structural','semantic'],'governance':['authority']},d=c[b['operation_category']]??[];return ARBITRATION_CONSTRAINT_RULES['filter'](e=>d['includes'](e['category']));}return[...ARBITRATION_CONSTRAINT_RULES];}function buildArbLifecycleContext(a,b){if(!a&&!b)return undefined;const c=a?isTerminalArbStatus(a):![],d=[];if(a){const f=['Principal_confirming','Arbitrator_confirming','Voting','Arbitrated','Objectionable','Finished','Withdrawn'];for(const g of f){g!==a&&isValidArbStatusTransition(a,g)&&d['push'](g);}}const e=[];for(const h of ARBITRATION_SCENES){a&&h['required_arb_status']&&h['required_arb_status']['includes'](a)&&e['push'](h['id']);}return{'current_status':a,'current_status_code':a?ARB_STATUS_CODE[a]:undefined,'is_terminal':c,'valid_next_statuses':d,'valid_operations_from_here':e};}function buildCrossObjectRefs(a){const b=[],c=[{'object':'Order','field':'dispute.order','scene_id':'arbitration_dispute','description':'dispute()\x20takes\x20Order\x20address\x20—\x20Order\x20is\x20the\x20source\x20of\x20disputes','direction':'references'},{'object':'Arb','field':'dispute\x20(spawns\x20Arb)','scene_id':'arbitration_dispute','description':'Each\x20dispute()\x20creates\x20a\x20new\x20Arb\x20case\x20object\x20with\x207-state\x20lifecycle','direction':'references'},{'object':'Guard','field':'voting_guard\x20/\x20usage_guard','scene_id':'arbitration_voting_guard_config\x20/\x20arbitration_usage_guard_config','description':'voting_guard\x20controls\x20vote\x20weight\x20(max\x2050);\x20usage_guard\x20filters\x20who\x20can\x20file\x20disputes','direction':'references'},{'object':'Allocation','field':'fees_transfer.to.allocation','scene_id':'arbitration_fees_transfer','description':'Withdrawn\x20fees\x20can\x20be\x20routed\x20to\x20Allocation\x20for\x20arbiter\x20compensation\x20distribution','direction':'references'},{'object':'Treasury','field':'fees_transfer.to.treasury','scene_id':'arbitration_fees_transfer','description':'Withdrawn\x20fees\x20can\x20be\x20routed\x20to\x20Treasury\x20as\x20alternative\x20destination','direction':'references'},{'object':'Contact','field':'um','scene_id':'arbitration_um_set','description':'um\x20(Contact\x20object)\x20for\x20arbitrator\x20↔\x20disputant\x20communication\x20channel','direction':'references'},{'object':'Payment','field':'fees_transfer.payment_remark\x20/\x20payment_index','scene_id':'arbitration_fees_transfer','description':'fees_transfer\x20creates\x20Payment\x20object\x20with\x20remark\x20+\x20index\x20for\x20audit\x20trail','direction':'references'}],d=[{'object':'Service','field':'arbitrations\x20(MAX_ARBITRATION_COUNT=20)','scene_id':'service_arbitration_config','description':'Service\x20embeds\x20up\x20to\x2020\x20Arbitration\x20references\x20for\x20dispute\x20resolution\x20per\x20service','direction':'referenced_by'}];if(a){const e=a['id'];return[...c,...d]['filter'](f=>f['scene_id']===e||f['scene_id']['includes'](e['split']('_')[0x1]??''));}return[...c,...d];}function buildOnchainConstraints(){return[{'name':'MAX_VOTING_GUARD_COUNT','value':MAX_VOTING_GUARD_COUNT,'description':'Maximum\x20voting_guard\x20entries\x20per\x20Arbitration\x20(Move\x20source:\x20arbitration.move:25)'},{'name':'ARBITRATION_PERMISSION_INDEX_RANGE','value':'350-368\x20(352\x20reserved)','description':'19\x20built-in\x20permission\x20indexes\x20for\x20Arbitration\x20—\x20most\x20among\x20all\x2022\x20objects'},{'name':'ARB_STATE_COUNT','value':0x7,'description':'Arb\x20has\x207-state\x20lifecycle:\x20Principal_confirming\x20→\x20Arbitrator_confirming\x20→\x20Voting\x20→\x20Arbitrated\x20→\x20Objectionable\x20→\x20Finished/Withdrawn'},{'name':'ARB_TERMINAL_STATUSES','value':ARB_TERMINAL_STATUSES['length'],'description':'Terminal\x20statuses:\x20'+ARB_TERMINAL_STATUSES['join'](',\x20')+'\x20(no\x20further\x20transitions)'},{'name':'DUAL_GUARD_COMBINATIONS','value':DUAL_GUARD_MATRIX['length'],'description':'4\x20dual-Guard\x20combos:\x20(voting_guard\x20empty/non-empty)\x20×\x20(usage_guard\x20none/some)'}];}function buildRenderingHints(a,b,c,d){return{'include_puzzle_template':a==='initial_design','include_risk_details':a==='pre_publish'||a==='stakeholder_review','include_questions':a==='pre_publish','include_dual_guard_matrix':a==='initial_design'||a==='pre_publish','include_arb_lifecycle':a==='pre_publish'||a==='post_publish_modify'||a==='stakeholder_review','include_immutability_warning':a==='post_publish_modify','include_indemnity_warning':c,'include_ownership_transfer_warning':d,'max_length':b};}export function buildPromptFromArbitrationContext(a){const b=[],d=a['rendering_hints'];b['push']('═══\x20Arbitration\x20Context\x20(mode:\x20'+a['mode']+')\x20═══'),b['push']('');a['stakeholder_perspective']&&(b['push']('Stakeholder\x20perspective:\x20'+a['stakeholder_perspective']),b['push'](''));a['matched_scene']&&(b['push']('Scene:\x20'+a['matched_scene']['name']),b['push']('Category:\x20'+a['matched_scene']['operation_category']),b['push']('Permission\x20index:\x20'+a['matched_scene']['permission_index']+'\x20('+a['matched_scene']['permission_name']+')'),a['matched_scene']['required_arb_status']&&a['matched_scene']['required_arb_status']['length']>0x0&&b['push']('Required\x20Arb\x20status:\x20'+a['matched_scene']['required_arb_status']['join']('\x20|\x20')),a['matched_scene']['resulting_arb_status']&&b['push']('Resulting\x20Arb\x20status:\x20'+a['matched_scene']['resulting_arb_status']),b['push']('Has\x20_with_passport\x20variant:\x20'+(a['matched_scene']['has_passport_variant']?'YES':'NO')),b['push'](''));a['matched_template']&&(b['push']('Suggested\x20template:\x20'+a['matched_template']['id']+'\x20—\x20'+a['matched_template']['name']),b['push']('Description:\x20'+a['matched_template']['description']),b['push'](''));a['matched_pattern']&&(b['push']('Matched\x20pattern:\x20'+a['matched_pattern']['id']+'\x20—\x20'+a['matched_pattern']['pattern_name']),b['push']('Intent:\x20'+a['matched_pattern']['semantic_intent']),b['push'](''));if(d['include_puzzle_template']&&a['puzzle_completeness']){const e=a['puzzle_completeness'];b['push']('─\x20Puzzle\x20Completeness\x20──────────────'),b['push']('Complete:\x20'+(e['complete']?'YES':'NO')),e['missing']['length']>0x0&&b['push']('Missing\x20dimensions:\x20'+e['missing']['join'](',\x20')),b['push']('Next\x20step:\x20'+e['next_step']),b['push']('');}if(d['include_dual_guard_matrix']&&a['dual_guard_matrix_entry']){const f=a['dual_guard_matrix_entry'];b['push']('─\x20Dual-Guard\x20Matrix\x20Entry\x20──────────────'),b['push']('Voting\x20guard:\x20'+(f['voting_guard_empty']?'EMPTY\x20(open\x20vote)':'NON-EMPTY\x20(weighted)')),b['push']('Usage\x20guard:\x20'+(f['usage_guard_none']?'NONE\x20(open\x20dispute)':'SOME\x20(filtered\x20dispute)')),b['push']('Vote\x20method:\x20'+f['vote_method']),b['push']('Dispute\x20method:\x20'+f['dispute_method']),b['push']('Scenario:\x20'+f['scenario']),b['push']('');}if(d['include_arb_lifecycle']&&a['arb_lifecycle_context']){const g=a['arb_lifecycle_context'];b['push']('─\x20Arb\x207-State\x20Lifecycle\x20Context\x20──────────────');if(g['current_status']){b['push']('Current\x20Arb\x20status:\x20'+g['current_status']+'\x20(code\x20'+g['current_status_code']+')'),b['push']('Terminal:\x20'+(g['is_terminal']?'YES\x20—\x20no\x20further\x20transitions':'NO'));g['valid_next_statuses']['length']>0x0&&b['push']('Valid\x20next\x20statuses:\x20'+g['valid_next_statuses']['join'](',\x20'));if(g['valid_operations_from_here']['length']>0x0){b['push']('Valid\x20operations\x20from\x20here\x20('+g['valid_operations_from_here']['length']+'):');for(const i of g['valid_operations_from_here']['slice'](0x0,0x6)){b['push']('\x20\x20-\x20'+i);}g['valid_operations_from_here']['length']>0x6&&b['push']('\x20\x20...\x20and\x20'+(g['valid_operations_from_here']['length']-0x6)+'\x20more');}}else b['push']('No\x20current\x20Arb\x20status\x20provided\x20—\x20lifecycle\x20context\x20inactive');b['push']('');}if(d['include_risk_details']&&a['relevant_risks']['length']>0x0){b['push']('─\x20Relevant\x20Risk\x20Rules\x20('+a['relevant_risks']['length']+')\x20──────────────');for(const j of a['relevant_risks']['slice'](0x0,0x6)){b['push']('\x20\x20'+j['id']+'\x20—\x20'+j['trigger']);}a['relevant_risks']['length']>0x6&&b['push']('\x20\x20...\x20and\x20'+(a['relevant_risks']['length']-0x6)+'\x20more'),b['push']('');}if(a['risk_assessment']){b['push']('─\x20Risk\x20Assessment\x20──────────────'),b['push']('Overall\x20risk:\x20'+a['risk_assessment']['overall_risk']),b['push']('Detected:\x20'+a['risk_assessment']['risks']['length']+'\x20risk(s)');if(a['risk_assessment']['risks']['length']>0x0){for(const k of a['risk_assessment']['risks']['slice'](0x0,0x3)){b['push']('\x20\x20['+k['level']+']\x20'+k['id']+':\x20'+k['title']);}a['risk_assessment']['risks']['length']>0x3&&b['push']('\x20\x20...\x20and\x20'+(a['risk_assessment']['risks']['length']-0x3)+'\x20more');}b['push']('');}if(a['relevant_permissions']['length']>0x0){b['push']('─\x20Relevant\x20Permissions\x20('+a['relevant_permissions']['length']+')\x20──────────────');for(const l of a['relevant_permissions']['slice'](0x0,0xa)){const n=l['is_reserved']?'\x20[RESERVED]':'';b['push']('\x20\x20['+l['index']+']\x20'+l['name']+n+':\x20'+l['description']);}a['relevant_permissions']['length']>0xa&&b['push']('\x20\x20...\x20and\x20'+(a['relevant_permissions']['length']-0xa)+'\x20more'),b['push']('');}if(a['relevant_constraints']['length']>0x0){b['push']('─\x20Relevant\x20Constraint\x20Rules\x20('+a['relevant_constraints']['length']+')\x20──────────────');for(const o of a['relevant_constraints']['slice'](0x0,0x5)){b['push']('\x20\x20'+o['id']+'\x20['+o['category']+']:\x20'+o['rule']);}a['relevant_constraints']['length']>0x5&&b['push']('\x20\x20...\x20and\x20'+(a['relevant_constraints']['length']-0x5)+'\x20more'),b['push']('');}d['include_indemnity_warning']&&(b['push']('⚠️\x20INDEMNITY\x20OPERATION\x20DETECTED\x20—\x20arbitration.indemnity\x20transfers\x20WOW\x20from\x20arbiter\x20to\x20disputant'),b['push']('\x20\x20\x20This\x20is\x20IRREVERSIBLE\x20once\x20the\x20ruling\x20is\x20finalized.\x20Verify\x20indemnity\x20amount\x20carefully.'),b['push'](''));d['include_ownership_transfer_warning']&&(b['push']('⚠️\x20OWNERSHIP\x20TRANSFER\x20DETECTED\x20—\x20builder\x20field\x20transfers\x20Arbitration\x20ownership'),b['push']('\x20\x20\x20This\x20is\x20IRREVERSIBLE.\x20Original\x20owner\x20will\x20lose\x20all\x20administrative\x20rights.'),b['push'](''));d['include_immutability_warning']&&(b['push']('ℹ️\x20POST-PUBLISH\x20MODIFICATION\x20—\x20Arbitration\x20is\x20already\x20on-chain'),b['push']('\x20\x20\x20Some\x20fields\x20can\x20be\x20modified\x20(description,\x20location,\x20fee,\x20voting_guard,\x20usage_guard)'),b['push']('\x20\x20\x20but\x20core\x20properties\x20(coin_type,\x20permission\x20object)\x20are\x20immutable.'),b['push'](''));if(a['cross_object_refs']['length']>0x0){b['push']('─\x20Cross-Object\x20References\x20('+a['cross_object_refs']['length']+')\x20──────────────');for(const q of a['cross_object_refs']['slice'](0x0,0x6)){const s=q['direction']==='references'?'→':'←';b['push']('\x20\x20'+s+'\x20'+q['object']+'.'+q['field']+'\x20('+q['direction']+')\x20—\x20'+q['description']);}a['cross_object_refs']['length']>0x6&&b['push']('\x20\x20...\x20and\x20'+(a['cross_object_refs']['length']-0x6)+'\x20more'),b['push']('');}if(a['onchain_constraints']['length']>0x0){b['push']('─\x20On-chain\x20Constraints\x20──────────────');for(const t of a['onchain_constraints']){b['push']('\x20\x20'+t['name']+'\x20=\x20'+t['value']+'\x20—\x20'+t['description']);}b['push']('');}return b['join']('\x0a');}export function getArbitrationContextSummary(a){const b=['mode='+a['mode'],'scene='+(a['matched_scene']?.['id']??'none'),'risks='+a['relevant_risks']['length'],'permissions='+a['relevant_permissions']['length'],'constraints='+a['relevant_constraints']['length']];if(a['stakeholder_perspective'])b['push']('stakeholder='+a['stakeholder_perspective']);if(a['risk_assessment'])b['push']('overall_risk='+a['risk_assessment']['overall_risk']);a['dual_guard_matrix_entry']&&b['push']('dual_guard='+a['dual_guard_matrix_entry']['vote_method']+'+'+a['dual_guard_matrix_entry']['dispute_method']);a['arb_lifecycle_context']?.['current_status']&&b['push']('arb_status='+a['arb_lifecycle_context']['current_status']);if(a['cross_object_refs']['length']>0x0)b['push']('xrefs='+a['cross_object_refs']['length']);return b['join'](',\x20');}export{ARBITRATION_LEDGER_VERSION,ARBITRATION_SCENES,ARBITRATION_PERMISSIONS,DUAL_GUARD_MATRIX,ARB_STATUS_CODE,ARB_TERMINAL_STATUSES,findSceneById,findSceneByPermissionIndex,inferSceneFromIntent,getScenesByCategory,getDualGuardMatrixEntry,isValidArbStatusTransition,isTerminalArbStatus,getActiveArbitrationPermissions,getAllArbitrationPermissions}from'./arbitration-ledger.js';export{ARBITRATION_TEMPLATES_VERSION,ARBITRATION_TEMPLATES,suggestTemplateForScene,getTemplatesByScene,getTemplateById}from'./arbitration-templates.js';export{ARBITRATION_TRANSLATION_VERSION,SEMANTIC_TO_SCHEMA_RULES,ARBITRATION_CONSTRAINT_RULES,matchSemanticPattern,explainArbitrationCallData,explainPermissionIndex,explainArbStatus}from'./arbitration-translation.js';export{ARBITRATION_RISK_VERSION,getAllRiskRules,assessArbitrationRisks}from'./arbitration-risk.js';export{ARBITRATION_CONFIRM_VERSION,ARBITRATION_OPERATION_CHECKLIST,ARBITRATION_CONFIRMATION_QUESTIONS,runArbitrationConfirmGate}from'./arbitration-confirm.js';export{initPuzzleFromIntent,checkPuzzleCompleteness,validateConstraints}from'./arbitration-puzzle.js';
1
+ import{MAX_VOTING_GUARD_COUNT}from'@wowok/wowok';import{ARBITRATION_SCENES,DUAL_GUARD_MATRIX,ARB_STATUS_CODE,ARB_TERMINAL_STATUSES,findSceneByPermissionIndex,inferSceneFromIntent,getScenesByCategory,getDualGuardMatrixEntry,isValidArbStatusTransition,isTerminalArbStatus,getActiveArbitrationPermissions,getAllArbitrationPermissions}from'./arbitration-ledger.js';import{getTemplatesByScene}from'./arbitration-templates.js';import{ARBITRATION_CONSTRAINT_RULES,matchSemanticPattern}from'./arbitration-translation.js';import{getAllRiskRules,assessArbitrationRisks}from'./arbitration-risk.js';import{initPuzzleFromIntent,checkPuzzleCompleteness}from'./arbitration-puzzle.js';import{ARBITRATION_OPERATION_CHECKLIST,ARBITRATION_CONFIRMATION_QUESTIONS}from'./arbitration-confirm.js';export const ARBITRATION_CONTEXT_VERSION='1.0.0';export function buildArbitrationContext(a){const b=a['max_length']??0x1194;let c;if(a['intent'])c=inferSceneFromIntent(a['intent']);else{if(a['target_permission_index']!==undefined)c=findSceneByPermissionIndex(a['target_permission_index']);else{if(a['target_operation_category']){const s=getScenesByCategory(a['target_operation_category']);if(s['length']>0x0)c=s[0x0];}}}let d;if(c){const t=getTemplatesByScene(c['id']);if(t['length']>0x0)d=t[0x0];}let e;if(a['intent']){const u=matchSemanticPattern(a['intent']);if(u['length']>0x0)e=u[0x0];}let f,g;a['mode']==='initial_design'&&a['intent']&&(f=initPuzzleFromIntent({'rule_sentence':a['intent']}),g=checkPuzzleCompleteness(f));const h=filterRiskRules(a['mode'],a['stakeholder'],c);let i;if(a['mode']==='pre_publish'&&a['arbitration_json']){const v={'object':a['arbitration_json']['object'],'description':a['arbitration_json']['description'],'location':a['arbitration_json']['location'],'fee':a['arbitration_json']['fee'],'pause':a['arbitration_json']['pause'],'dispute':a['arbitration_json']['dispute'],'confirm':a['arbitration_json']['confirm'],'voting_deadline_change':a['arbitration_json']['voting_deadline_change'],'vote':a['arbitration_json']['vote'],'feedback':a['arbitration_json']['feedback'],'arbitration':a['arbitration_json']['arbitration'],'reset':a['arbitration_json']['reset'],'arb_withdraw':a['arbitration_json']['arb_withdraw'],'fees_transfer':a['arbitration_json']['fees_transfer'],'usage_guard':a['arbitration_json']['usage_guard'],'voting_guard':a['arbitration_json']['voting_guard'],'um':a['arbitration_json']['um'],'builder':a['arbitration_json']['builder'],'current_arb_status':a['current_arb_status'],'expected_arb_status':a['arbitration_json']['arbitration']?'Arbitrated':a['current_arb_status']};i=assessArbitrationRisks(v);}const j=filterChecklist(a['mode']),k=filterQuestions(a['mode']),l=filterConstraints(a['mode'],c),m=a['stakeholder']==='system'?getAllArbitrationPermissions():getActiveArbitrationPermissions();let n;if(a['voting_guard_empty']!==undefined&&a['usage_guard_none']!==undefined)n=getDualGuardMatrixEntry(a['voting_guard_empty'],a['usage_guard_none']);else{if(c){const w=c['requires_voting_guard']==='empty',x=c['requires_usage_guard']==='none';n=getDualGuardMatrixEntry(w,x);}}const o=buildArbLifecycleContext(a['current_arb_status'],c),p=buildCrossObjectRefs(c),q=buildOnchainConstraints(),r=buildRenderingHints(a['mode'],b,!!a['arbitration_json']?.['arbitration'],!!a['arbitration_json']?.['builder']);return{'version':ARBITRATION_CONTEXT_VERSION,'mode':a['mode'],'stakeholder_perspective':a['stakeholder'],'matched_scene':c,'matched_template':d,'matched_pattern':e,'puzzle_state':f,'puzzle_completeness':g,'relevant_risks':h,'risk_assessment':i,'relevant_checklist':j,'relevant_questions':k,'relevant_permissions':m,'relevant_constraints':l,'dual_guard_matrix_entry':n,'arb_lifecycle_context':o,'cross_object_refs':p,'onchain_constraints':q,'rendering_hints':r};}function filterRiskRules(a,b,c){const d=getAllRiskRules();if(a==='initial_design')return d['filter'](e=>e['category']==='structural'||e['category']==='authority');if(a==='pre_publish')return d;if(a==='stakeholder_review'&&b){if(b==='owner')return d['filter'](e=>e['category']==='authority'||e['category']==='lifecycle'||e['category']==='cross_object');if(b==='arbiter')return d['filter'](e=>e['category']==='authority'||e['category']==='lifecycle');if(b==='voter')return d['filter'](e=>e['category']==='structural'||e['category']==='lifecycle');if(b==='disputant')return d['filter'](e=>e['category']==='semantic'||e['category']==='lifecycle');if(b==='system')return d['filter'](e=>e['category']==='structural'||e['category']==='cross_object');}if(a==='post_publish_modify')return d['filter'](e=>e['category']==='lifecycle'||e['category']==='cross_object');return d;}function filterChecklist(a){if(a==='initial_design')return ARBITRATION_OPERATION_CHECKLIST['filter'](b=>['C-AB-01','C-AB-02','C-AB-03','C-AB-04']['includes'](b['id']));return[...ARBITRATION_OPERATION_CHECKLIST];}function filterQuestions(a){if(a==='pre_publish')return[...ARBITRATION_CONFIRMATION_QUESTIONS];if(a==='post_publish_modify')return ARBITRATION_CONFIRMATION_QUESTIONS['filter'](b=>b['id']!=='QAB5');return[];}function filterConstraints(a,b){if(a==='initial_design')return ARBITRATION_CONSTRAINT_RULES['filter'](d=>d['category']==='structural');if(a==='pre_publish')return[...ARBITRATION_CONSTRAINT_RULES];if(b){const c={'lifecycle':['structural','authority'],'dispute':['semantic','lifecycle'],'voting':['semantic','lifecycle'],'ruling':['authority','lifecycle'],'fund':['cross_object'],'guard':['structural','semantic'],'governance':['authority']},d=c[b['operation_category']]??[];return ARBITRATION_CONSTRAINT_RULES['filter'](e=>d['includes'](e['category']));}return[...ARBITRATION_CONSTRAINT_RULES];}function buildArbLifecycleContext(a,b){if(!a&&!b)return undefined;const c=a?isTerminalArbStatus(a):![],d=[];if(a){const f=['Principal_confirming','Arbitrator_confirming','Voting','Arbitrated','Objectionable','Finished','Withdrawn'];for(const g of f){g!==a&&isValidArbStatusTransition(a,g)&&d['push'](g);}}const e=[];for(const h of ARBITRATION_SCENES){a&&h['required_arb_status']&&h['required_arb_status']['includes'](a)&&e['push'](h['id']);}return{'current_status':a,'current_status_code':a?ARB_STATUS_CODE[a]:undefined,'is_terminal':c,'valid_next_statuses':d,'valid_operations_from_here':e};}function buildCrossObjectRefs(a){const b=[{'object':'Order','field':'dispute.order','scene_id':'arbitration_dispute','description':'dispute()\x20takes\x20Order\x20address\x20—\x20Order\x20is\x20the\x20source\x20of\x20disputes','direction':'references'},{'object':'Arb','field':'dispute\x20(spawns\x20Arb)','scene_id':'arbitration_dispute','description':'Each\x20dispute()\x20creates\x20a\x20new\x20Arb\x20case\x20object\x20with\x207-state\x20lifecycle','direction':'references'},{'object':'Guard','field':'voting_guard\x20/\x20usage_guard','scene_id':'arbitration_voting_guard_config\x20/\x20arbitration_usage_guard_config','description':'voting_guard\x20controls\x20vote\x20weight\x20(max\x2050);\x20usage_guard\x20filters\x20who\x20can\x20file\x20disputes','direction':'references'},{'object':'Allocation','field':'fees_transfer.to.allocation','scene_id':'arbitration_fees_transfer','description':'Withdrawn\x20fees\x20can\x20be\x20routed\x20to\x20Allocation\x20for\x20arbiter\x20compensation\x20distribution','direction':'references'},{'object':'Treasury','field':'fees_transfer.to.treasury','scene_id':'arbitration_fees_transfer','description':'Withdrawn\x20fees\x20can\x20be\x20routed\x20to\x20Treasury\x20as\x20alternative\x20destination','direction':'references'},{'object':'Contact','field':'um','scene_id':'arbitration_um_set','description':'um\x20(Contact\x20object)\x20for\x20arbitrator\x20↔\x20disputant\x20communication\x20channel','direction':'references'},{'object':'Payment','field':'fees_transfer.payment_remark\x20/\x20payment_index','scene_id':'arbitration_fees_transfer','description':'fees_transfer\x20creates\x20Payment\x20object\x20with\x20remark\x20+\x20index\x20for\x20audit\x20trail','direction':'references'}],c=[{'object':'Service','field':'arbitrations\x20(MAX_ARBITRATION_COUNT=20)','scene_id':'service_arbitration_config','description':'Service\x20embeds\x20up\x20to\x2020\x20Arbitration\x20references\x20for\x20dispute\x20resolution\x20per\x20service','direction':'referenced_by'}];if(a){const d=a['id'];return[...b,...c]['filter'](e=>e['scene_id']===d||e['scene_id']['includes'](d['split']('_')[0x1]??''));}return[...b,...c];}function buildOnchainConstraints(){return[{'name':'MAX_VOTING_GUARD_COUNT','value':MAX_VOTING_GUARD_COUNT,'description':'Maximum\x20voting_guard\x20entries\x20per\x20Arbitration\x20(Move\x20source:\x20arbitration.move:25)'},{'name':'ARBITRATION_PERMISSION_INDEX_RANGE','value':'350-368\x20(352\x20reserved)','description':'19\x20built-in\x20permission\x20indexes\x20for\x20Arbitration\x20—\x20most\x20among\x20all\x2022\x20objects'},{'name':'ARB_STATE_COUNT','value':0x7,'description':'Arb\x20has\x207-state\x20lifecycle:\x20Principal_confirming\x20→\x20Arbitrator_confirming\x20→\x20Voting\x20→\x20Arbitrated\x20→\x20Objectionable\x20→\x20Finished/Withdrawn'},{'name':'ARB_TERMINAL_STATUSES','value':ARB_TERMINAL_STATUSES['length'],'description':'Terminal\x20statuses:\x20'+ARB_TERMINAL_STATUSES['join'](',\x20')+'\x20(no\x20further\x20transitions)'},{'name':'DUAL_GUARD_COMBINATIONS','value':DUAL_GUARD_MATRIX['length'],'description':'4\x20dual-Guard\x20combos:\x20(voting_guard\x20empty/non-empty)\x20×\x20(usage_guard\x20none/some)'}];}function buildRenderingHints(a,b,c,d){return{'include_puzzle_template':a==='initial_design','include_risk_details':a==='pre_publish'||a==='stakeholder_review','include_questions':a==='pre_publish','include_dual_guard_matrix':a==='initial_design'||a==='pre_publish','include_arb_lifecycle':a==='pre_publish'||a==='post_publish_modify'||a==='stakeholder_review','include_immutability_warning':a==='post_publish_modify','include_indemnity_warning':c,'include_ownership_transfer_warning':d,'max_length':b};}export function buildPromptFromArbitrationContext(a){const b=[],d=a['rendering_hints'];b['push']('═══\x20Arbitration\x20Context\x20(mode:\x20'+a['mode']+')\x20═══'),b['push']('');a['stakeholder_perspective']&&(b['push']('Stakeholder\x20perspective:\x20'+a['stakeholder_perspective']),b['push'](''));a['matched_scene']&&(b['push']('Scene:\x20'+a['matched_scene']['name']),b['push']('Category:\x20'+a['matched_scene']['operation_category']),b['push']('Permission\x20index:\x20'+a['matched_scene']['permission_index']+'\x20('+a['matched_scene']['permission_name']+')'),a['matched_scene']['required_arb_status']&&a['matched_scene']['required_arb_status']['length']>0x0&&b['push']('Required\x20Arb\x20status:\x20'+a['matched_scene']['required_arb_status']['join']('\x20|\x20')),a['matched_scene']['resulting_arb_status']&&b['push']('Resulting\x20Arb\x20status:\x20'+a['matched_scene']['resulting_arb_status']),b['push']('Has\x20_with_passport\x20variant:\x20'+(a['matched_scene']['has_passport_variant']?'YES':'NO')),b['push'](''));a['matched_template']&&(b['push']('Suggested\x20template:\x20'+a['matched_template']['id']+'\x20—\x20'+a['matched_template']['name']),b['push']('Description:\x20'+a['matched_template']['description']),b['push'](''));a['matched_pattern']&&(b['push']('Matched\x20pattern:\x20'+a['matched_pattern']['id']+'\x20—\x20'+a['matched_pattern']['pattern_name']),b['push']('Intent:\x20'+a['matched_pattern']['semantic_intent']),b['push'](''));if(d['include_puzzle_template']&&a['puzzle_completeness']){const e=a['puzzle_completeness'];b['push']('─\x20Puzzle\x20Completeness\x20──────────────'),b['push']('Complete:\x20'+(e['complete']?'YES':'NO')),e['missing']['length']>0x0&&b['push']('Missing\x20dimensions:\x20'+e['missing']['join'](',\x20')),b['push']('Next\x20step:\x20'+e['next_step']),b['push']('');}if(d['include_dual_guard_matrix']&&a['dual_guard_matrix_entry']){const f=a['dual_guard_matrix_entry'];b['push']('─\x20Dual-Guard\x20Matrix\x20Entry\x20──────────────'),b['push']('Voting\x20guard:\x20'+(f['voting_guard_empty']?'EMPTY\x20(open\x20vote)':'NON-EMPTY\x20(weighted)')),b['push']('Usage\x20guard:\x20'+(f['usage_guard_none']?'NONE\x20(open\x20dispute)':'SOME\x20(filtered\x20dispute)')),b['push']('Vote\x20method:\x20'+f['vote_method']),b['push']('Dispute\x20method:\x20'+f['dispute_method']),b['push']('Scenario:\x20'+f['scenario']),b['push']('');}if(d['include_arb_lifecycle']&&a['arb_lifecycle_context']){const g=a['arb_lifecycle_context'];b['push']('─\x20Arb\x207-State\x20Lifecycle\x20Context\x20──────────────');if(g['current_status']){b['push']('Current\x20Arb\x20status:\x20'+g['current_status']+'\x20(code\x20'+g['current_status_code']+')'),b['push']('Terminal:\x20'+(g['is_terminal']?'YES\x20—\x20no\x20further\x20transitions':'NO'));g['valid_next_statuses']['length']>0x0&&b['push']('Valid\x20next\x20statuses:\x20'+g['valid_next_statuses']['join'](',\x20'));if(g['valid_operations_from_here']['length']>0x0){b['push']('Valid\x20operations\x20from\x20here\x20('+g['valid_operations_from_here']['length']+'):');for(const i of g['valid_operations_from_here']['slice'](0x0,0x6)){b['push']('\x20\x20-\x20'+i);}g['valid_operations_from_here']['length']>0x6&&b['push']('\x20\x20...\x20and\x20'+(g['valid_operations_from_here']['length']-0x6)+'\x20more');}}else b['push']('No\x20current\x20Arb\x20status\x20provided\x20—\x20lifecycle\x20context\x20inactive');b['push']('');}if(d['include_risk_details']&&a['relevant_risks']['length']>0x0){b['push']('─\x20Relevant\x20Risk\x20Rules\x20('+a['relevant_risks']['length']+')\x20──────────────');for(const j of a['relevant_risks']['slice'](0x0,0x6)){b['push']('\x20\x20'+j['id']+'\x20—\x20'+j['trigger']);}a['relevant_risks']['length']>0x6&&b['push']('\x20\x20...\x20and\x20'+(a['relevant_risks']['length']-0x6)+'\x20more'),b['push']('');}if(a['risk_assessment']){b['push']('─\x20Risk\x20Assessment\x20──────────────'),b['push']('Overall\x20risk:\x20'+a['risk_assessment']['overall_risk']),b['push']('Detected:\x20'+a['risk_assessment']['risks']['length']+'\x20risk(s)');if(a['risk_assessment']['risks']['length']>0x0){for(const k of a['risk_assessment']['risks']['slice'](0x0,0x3)){b['push']('\x20\x20['+k['level']+']\x20'+k['id']+':\x20'+k['title']);}a['risk_assessment']['risks']['length']>0x3&&b['push']('\x20\x20...\x20and\x20'+(a['risk_assessment']['risks']['length']-0x3)+'\x20more');}b['push']('');}if(a['relevant_permissions']['length']>0x0){b['push']('─\x20Relevant\x20Permissions\x20('+a['relevant_permissions']['length']+')\x20──────────────');for(const l of a['relevant_permissions']['slice'](0x0,0xa)){const n=l['is_reserved']?'\x20[RESERVED]':'';b['push']('\x20\x20['+l['index']+']\x20'+l['name']+n+':\x20'+l['description']);}a['relevant_permissions']['length']>0xa&&b['push']('\x20\x20...\x20and\x20'+(a['relevant_permissions']['length']-0xa)+'\x20more'),b['push']('');}if(a['relevant_constraints']['length']>0x0){b['push']('─\x20Relevant\x20Constraint\x20Rules\x20('+a['relevant_constraints']['length']+')\x20──────────────');for(const o of a['relevant_constraints']['slice'](0x0,0x5)){b['push']('\x20\x20'+o['id']+'\x20['+o['category']+']:\x20'+o['rule']);}a['relevant_constraints']['length']>0x5&&b['push']('\x20\x20...\x20and\x20'+(a['relevant_constraints']['length']-0x5)+'\x20more'),b['push']('');}d['include_indemnity_warning']&&(b['push']('⚠️\x20INDEMNITY\x20OPERATION\x20DETECTED\x20—\x20arbitration.indemnity\x20transfers\x20WOW\x20from\x20arbiter\x20to\x20disputant'),b['push']('\x20\x20\x20This\x20is\x20IRREVERSIBLE\x20once\x20the\x20ruling\x20is\x20finalized.\x20Verify\x20indemnity\x20amount\x20carefully.'),b['push'](''));d['include_ownership_transfer_warning']&&(b['push']('⚠️\x20OWNERSHIP\x20TRANSFER\x20DETECTED\x20—\x20builder\x20field\x20transfers\x20Arbitration\x20ownership'),b['push']('\x20\x20\x20This\x20is\x20IRREVERSIBLE.\x20Original\x20owner\x20will\x20lose\x20all\x20administrative\x20rights.'),b['push'](''));d['include_immutability_warning']&&(b['push']('ℹ️\x20POST-PUBLISH\x20MODIFICATION\x20—\x20Arbitration\x20is\x20already\x20on-chain'),b['push']('\x20\x20\x20Some\x20fields\x20can\x20be\x20modified\x20(description,\x20location,\x20fee,\x20voting_guard,\x20usage_guard)'),b['push']('\x20\x20\x20but\x20core\x20properties\x20(coin_type,\x20permission\x20object)\x20are\x20immutable.'),b['push'](''));if(a['cross_object_refs']['length']>0x0){b['push']('─\x20Cross-Object\x20References\x20('+a['cross_object_refs']['length']+')\x20──────────────');for(const q of a['cross_object_refs']['slice'](0x0,0x6)){const s=q['direction']==='references'?'→':'←';b['push']('\x20\x20'+s+'\x20'+q['object']+'.'+q['field']+'\x20('+q['direction']+')\x20—\x20'+q['description']);}a['cross_object_refs']['length']>0x6&&b['push']('\x20\x20...\x20and\x20'+(a['cross_object_refs']['length']-0x6)+'\x20more'),b['push']('');}if(a['onchain_constraints']['length']>0x0){b['push']('─\x20On-chain\x20Constraints\x20──────────────');for(const t of a['onchain_constraints']){b['push']('\x20\x20'+t['name']+'\x20=\x20'+t['value']+'\x20—\x20'+t['description']);}b['push']('');}return b['join']('\x0a');}export function getArbitrationContextSummary(a){const b=['mode='+a['mode'],'scene='+(a['matched_scene']?.['id']??'none'),'risks='+a['relevant_risks']['length'],'permissions='+a['relevant_permissions']['length'],'constraints='+a['relevant_constraints']['length']];if(a['stakeholder_perspective'])b['push']('stakeholder='+a['stakeholder_perspective']);if(a['risk_assessment'])b['push']('overall_risk='+a['risk_assessment']['overall_risk']);a['dual_guard_matrix_entry']&&b['push']('dual_guard='+a['dual_guard_matrix_entry']['vote_method']+'+'+a['dual_guard_matrix_entry']['dispute_method']);a['arb_lifecycle_context']?.['current_status']&&b['push']('arb_status='+a['arb_lifecycle_context']['current_status']);if(a['cross_object_refs']['length']>0x0)b['push']('xrefs='+a['cross_object_refs']['length']);return b['join'](',\x20');}export{ARBITRATION_LEDGER_VERSION,ARBITRATION_SCENES,ARBITRATION_PERMISSIONS,DUAL_GUARD_MATRIX,ARB_STATUS_CODE,ARB_TERMINAL_STATUSES,findSceneById,findSceneByPermissionIndex,inferSceneFromIntent,getScenesByCategory,getDualGuardMatrixEntry,isValidArbStatusTransition,isTerminalArbStatus,getActiveArbitrationPermissions,getAllArbitrationPermissions}from'./arbitration-ledger.js';export{ARBITRATION_TEMPLATES_VERSION,ARBITRATION_TEMPLATES,suggestTemplateForScene,getTemplatesByScene,getTemplateById}from'./arbitration-templates.js';export{ARBITRATION_TRANSLATION_VERSION,SEMANTIC_TO_SCHEMA_RULES,ARBITRATION_CONSTRAINT_RULES,matchSemanticPattern,explainArbitrationCallData,explainPermissionIndex,explainArbStatus}from'./arbitration-translation.js';export{ARBITRATION_RISK_VERSION,getAllRiskRules,assessArbitrationRisks}from'./arbitration-risk.js';export{ARBITRATION_CONFIRM_VERSION,ARBITRATION_OPERATION_CHECKLIST,ARBITRATION_CONFIRMATION_QUESTIONS,runArbitrationConfirmGate}from'./arbitration-confirm.js';export{initPuzzleFromIntent,checkPuzzleCompleteness,validateConstraints}from'./arbitration-puzzle.js';
@@ -0,0 +1,26 @@
1
+ export declare const BRIDGE_CONFIRM_VERSION = "1.0.0";
2
+ export type ConfirmSeverity = "block" | "warn" | "info";
3
+ export interface BridgeConfirmItem {
4
+ id: string;
5
+ severity: ConfirmSeverity;
6
+ title: string;
7
+ description: string;
8
+ passed: boolean;
9
+ evidence?: string;
10
+ fix_hint?: string;
11
+ }
12
+ export interface BridgeOpCheckInput {
13
+ is_non_mainnet?: boolean;
14
+ unsupported_token?: string;
15
+ idempotency_key_length?: number;
16
+ is_paused?: boolean;
17
+ versioned_upgrade_in_progress?: boolean;
18
+ }
19
+ export declare function preCheckBridgeOp(input: BridgeOpCheckInput): BridgeConfirmItem[];
20
+ export declare function canProceedBridgeOp(input: BridgeOpCheckInput): {
21
+ canProceed: boolean;
22
+ blockers: BridgeConfirmItem[];
23
+ warnings: BridgeConfirmItem[];
24
+ info: BridgeConfirmItem[];
25
+ };
26
+ export declare function formatBridgeOpSummary(input: BridgeOpCheckInput): string;
@@ -0,0 +1 @@
1
+ import{BRIDGE_CURRENT_VERSION,BRIDGE_MESSAGE_VERSION,BRIDGE_EVM_ADDRESS_LENGTH}from'@wowok/wowok';export const BRIDGE_CONFIRM_VERSION='1.0.0';const SUPPORTED_TOKENS=['ETH','WETH','WBTC','USDC','USDT'],MAX_IDEMPOTENCY_KEY_LENGTH=0x80;function checkEnvironment(a){if(!a['is_non_mainnet'])return{'id':'C-BRIDGE-01','severity':'info','title':'Bridge\x20is\x20mainnet-only','description':'Cross-chain\x20ops\x20abort\x20with\x20EBridgeUnavailable\x20(8)\x20on\x20testnet.','passed':!![],'evidence':'mainnet\x20assumed'};return{'id':'C-BRIDGE-01','severity':'block','title':'Non-mainnet\x20environment\x20—\x20Bridge\x20unavailable','description':'The\x20Bridge\x20role\x20is\x20only\x20configured\x20on\x20mainnet;\x20testnet\x20ops\x20abort\x20with\x20EBridgeUnavailable\x20(8).','passed':![],'evidence':'is_non_mainnet=true','fix_hint':'Run\x20Bridge\x20ops\x20on\x20mainnet\x20only.'};}function checkToken(a){if(!a['unsupported_token'])return{'id':'C-BRIDGE-02','severity':'info','title':'Token\x20is\x20supported\x20('+SUPPORTED_TOKENS['join'](',\x20')+')','description':'Bridge\x20supports\x20exactly\x20'+SUPPORTED_TOKENS['length']+'\x20tokens.','passed':!![],'evidence':'token\x20supported'};return{'id':'C-BRIDGE-02','severity':'block','title':'Unsupported\x20token\x20—\x20aborts\x20with\x20EUnexpectedTokenType\x20(3)','description':'Bridge\x20supports\x20only\x20'+SUPPORTED_TOKENS['join'](',\x20')+'.','passed':![],'evidence':'unsupported_token='+a['unsupported_token'],'fix_hint':'Filter\x20the\x20token\x20picker\x20to\x20supported\x20tokens;\x20use\x20an\x20alternative\x20bridge\x20for\x20others.'};}function checkIdempotency(a){if(a['idempotency_key_length']===undefined)return{'id':'C-BRIDGE-03','severity':'info','title':'idempotency\x20key\x20≤\x20'+MAX_IDEMPOTENCY_KEY_LENGTH+'\x20chars','description':'BridgeIdempotencyKeySchema\x20accepts\x201-128\x20chars.','passed':!![],'evidence':'not\x20provided'};const b=a['idempotency_key_length']>0x0&&a['idempotency_key_length']<=MAX_IDEMPOTENCY_KEY_LENGTH;return{'id':'C-BRIDGE-03','severity':b?'info':'block','title':'idempotency\x20key\x20≤\x20'+MAX_IDEMPOTENCY_KEY_LENGTH+'\x20chars','description':'Keys\x20longer\x20than\x20'+MAX_IDEMPOTENCY_KEY_LENGTH+'\x20chars\x20are\x20rejected.','passed':b,'evidence':'idempotency_key_length='+a['idempotency_key_length']+',\x20limit='+MAX_IDEMPOTENCY_KEY_LENGTH,'fix_hint':'Generate\x20the\x20key\x20from\x20a\x20hash\x20(66\x20hex)\x20or\x20UUID\x20(36\x20chars).'};}function checkPaused(a){if(!a['is_paused'])return{'id':'C-BRIDGE-04','severity':'info','title':'Bridge\x20is\x20not\x20paused','description':'While\x20paused,\x20no\x20cross-chain\x20ops\x20proceed.','passed':!![],'evidence':'not\x20paused'};return{'id':'C-BRIDGE-04','severity':'warn','title':'Bridge\x20is\x20paused\x20—\x20assets\x20lock\x20during\x20pause','description':'EmergencyOp\x20can\x20pause\x20the\x20Bridge;\x20in-flight\x20claims\x20and\x20new\x20transfers\x20are\x20blocked.','passed':![],'evidence':'is_paused=true','fix_hint':'Surface\x20pause\x20state\x20to\x20users\x20and\x20set\x20recovery\x20expectations.'};}function checkVersion(a){if(!a['versioned_upgrade_in_progress'])return{'id':'C-BRIDGE-05','severity':'info','title':'Versioned\x20upgrade\x20(current='+BRIDGE_CURRENT_VERSION+')','description':'Bridge\x20uses\x20Versioned<BridgeInner>;\x20message_version='+BRIDGE_MESSAGE_VERSION+',\x20EVM\x20address\x20length='+BRIDGE_EVM_ADDRESS_LENGTH+'\x20bytes.','passed':!![],'evidence':'no\x20upgrade\x20in\x20progress'};return{'id':'C-BRIDGE-05','severity':'warn','title':'Versioned\x20upgrade\x20in\x20progress\x20—\x20mishandling\x20can\x20brick\x20the\x20Bridge','description':'A\x20botched\x20BridgeInner\x20migration\x20can\x20lock\x20funds\x20in\x20flight\x20and\x20require\x20a\x20new\x20package\x20version.','passed':![],'evidence':'versioned_upgrade_in_progress=true','fix_hint':'Test\x20on\x20a\x20fork,\x20keep\x20a\x20rollback\x20version,\x20and\x20stage\x20a\x20pause\x20window.'};}export function preCheckBridgeOp(a){return[checkEnvironment(a),checkToken(a),checkIdempotency(a),checkPaused(a),checkVersion(a)];}export function canProceedBridgeOp(a){const b=preCheckBridgeOp(a);return{'canProceed':b['every'](c=>c['severity']!=='block'||c['passed']),'blockers':b['filter'](c=>c['severity']==='block'&&!c['passed']),'warnings':b['filter'](c=>c['severity']==='warn'&&!c['passed']),'info':b['filter'](c=>c['severity']==='info')};}export function formatBridgeOpSummary(a){const {canProceed:b,blockers:c,warnings:d}=canProceedBridgeOp(a),e=[b?'✓\x20Bridge\x20operation\x20pre-check\x20PASSED':'✗\x20Bridge\x20operation\x20pre-check\x20FAILED',''];return c['length']>0x0&&(e['push']('BLOCKERS:'),c['forEach'](f=>e['push']('\x20\x20['+f['id']+']\x20'+f['title']+'\x20—\x20'+(f['evidence']??''))),e['push']('')),d['length']>0x0&&(e['push']('WARNINGS:'),d['forEach'](f=>e['push']('\x20\x20['+f['id']+']\x20'+f['title']+'\x20—\x20'+(f['evidence']??'')))),e['join']('\x0a');}
@@ -0,0 +1,37 @@
1
+ export declare const BRIDGE_TRANSLATION_VERSION = "1.0.0";
2
+ export interface SemanticToBridgeSchemaRule {
3
+ id: string;
4
+ pattern_name: string;
5
+ semantic_intent: string;
6
+ match_keywords: string[];
7
+ required_fields: string[];
8
+ optional_fields: string[];
9
+ example: Record<string, unknown>;
10
+ }
11
+ export declare const SEMANTIC_TO_BRIDGE_SCHEMA_RULES: SemanticToBridgeSchemaRule[];
12
+ export interface BridgeFieldTranslation {
13
+ field_name: string;
14
+ value_type: string;
15
+ semantic: string;
16
+ format_example: string;
17
+ validation_rules: string[];
18
+ }
19
+ export declare const BRIDGE_FIELD_TRANSLATIONS: BridgeFieldTranslation[];
20
+ export interface BridgeConstraintRule {
21
+ id: string;
22
+ name: string;
23
+ description: string;
24
+ related_field: string;
25
+ }
26
+ export declare const BRIDGE_CONSTRAINT_RULES: BridgeConstraintRule[];
27
+ export interface BridgeExplainInput {
28
+ token?: string;
29
+ amount?: string | number;
30
+ is_non_mainnet?: boolean;
31
+ }
32
+ export interface BridgeExplanation {
33
+ summary: string;
34
+ token_status: string;
35
+ warnings: string[];
36
+ }
37
+ export declare function explainBridge(input: BridgeExplainInput): BridgeExplanation;
@@ -0,0 +1 @@
1
+ import{BRIDGE_CURRENT_VERSION,BRIDGE_MESSAGE_VERSION,BRIDGE_EVM_ADDRESS_LENGTH}from'@wowok/wowok';export const BRIDGE_TRANSLATION_VERSION='1.0.0';export const SEMANTIC_TO_BRIDGE_SCHEMA_RULES=[{'id':'P-BRIDGE-01','pattern_name':'WoW\x20→\x20EVM\x20transfer','semantic_intent':'Transfer\x20an\x20asset\x20from\x20WoW\x20to\x20an\x20EVM\x20chain.','match_keywords':['wow\x20to\x20evm','bridge\x20out','cross\x20chain'],'required_fields':['token','amount','target_evm_address'],'optional_fields':['idempotency_key'],'example':{'token':'USDC','amount':'100000000','target_evm_address':'0x...'}},{'id':'P-BRIDGE-02','pattern_name':'EVM\x20→\x20WoW\x20claim','semantic_intent':'Claim\x20an\x20asset\x20bridged\x20from\x20EVM\x20to\x20WoW.','match_keywords':['evm\x20to\x20wow','claim','bridge\x20in'],'required_fields':['token','amount'],'optional_fields':['idempotency_key'],'example':{'token':'USDC','amount':'100000000'}}];export const BRIDGE_FIELD_TRANSLATIONS=[{'field_name':'message_version','value_type':'u64','semantic':'Current\x20message\x20schema\x20version\x20('+BRIDGE_MESSAGE_VERSION+').','format_example':''+BRIDGE_MESSAGE_VERSION,'validation_rules':['must\x20match\x20current\x20version']},{'field_name':'evm_address_length','value_type':'u64','semantic':'EVM\x20address\x20byte\x20length\x20('+BRIDGE_EVM_ADDRESS_LENGTH+').','format_example':''+BRIDGE_EVM_ADDRESS_LENGTH,'validation_rules':['fixed']},{'field_name':'token','value_type':'token\x20type','semantic':'Supported\x20token:\x20ETH/WETH/WBTC/USDC/USDT.','format_example':'USDC','validation_rules':['EUnexpectedTokenType\x20(3)\x20for\x20others']},{'field_name':'idempotency_key','value_type':'string','semantic':'Deduplication\x20key\x20(1-128\x20chars).','format_example':'keccak256-hex','validation_rules':['≤\x20128\x20chars']}];export const BRIDGE_CONSTRAINT_RULES=[{'id':'BRIDGE_C_01','name':'mainnet\x20only','description':'Bridge\x20unavailable\x20on\x20non-mainnet\x20(EBridgeUnavailable\x208).','related_field':'message_version'},{'id':'BRIDGE_C_02','name':'supported\x20tokens','description':'only\x20ETH/WETH/WBTC/USDC/USDT.','related_field':'token'},{'id':'BRIDGE_C_03','name':'idempotency\x20length','description':'key\x20≤\x20128\x20chars.','related_field':'idempotency_key'},{'id':'BRIDGE_C_04','name':'version','description':'current='+BRIDGE_CURRENT_VERSION+';\x20message_version='+BRIDGE_MESSAGE_VERSION+'.','related_field':'message_version'}];const SUPPORTED_TOKENS=['ETH','WETH','WBTC','USDC','USDT'];export function explainBridge(a){const b=[],c=a['token']??'unknown',d=SUPPORTED_TOKENS['includes'](c);if(!d)b['push']('token\x20'+c+'\x20unsupported\x20(supported:\x20'+SUPPORTED_TOKENS['join'](',')+')');if(a['is_non_mainnet'])b['push']('Bridge\x20is\x20mainnet-only');return{'summary':'Bridge\x20'+c+'\x20'+(a['amount']??'?')+'.\x20'+(d?'token\x20supported':'token\x20unsupported')+'.','token_status':d?'supported':'unsupported','warnings':b};}
@@ -0,0 +1,27 @@
1
+ export declare const CONTACT_CONFIRM_VERSION = "1.0.0";
2
+ export type ConfirmSeverity = "block" | "warn" | "info";
3
+ export interface ContactConfirmItem {
4
+ id: string;
5
+ severity: ConfirmSeverity;
6
+ title: string;
7
+ description: string;
8
+ passed: boolean;
9
+ evidence?: string;
10
+ fix_hint?: string;
11
+ }
12
+ export interface ContactOpCheckInput {
13
+ description?: string;
14
+ location?: string;
15
+ im_count?: number;
16
+ change_status_from_non_member?: boolean;
17
+ bound_to_permission_um?: boolean;
18
+ is_destroy?: boolean;
19
+ }
20
+ export declare function preCheckContactOp(input: ContactOpCheckInput): ContactConfirmItem[];
21
+ export declare function canProceedContactOp(input: ContactOpCheckInput): {
22
+ canProceed: boolean;
23
+ blockers: ContactConfirmItem[];
24
+ warnings: ContactConfirmItem[];
25
+ info: ContactConfirmItem[];
26
+ };
27
+ export declare function formatContactOpSummary(input: ContactOpCheckInput): string;
@@ -0,0 +1 @@
1
+ import{MAX_IM_COUNT}from'@wowok/wowok';export const CONTACT_CONFIRM_VERSION='1.0.0';function checkDescription(a){const b=!!a['description']&&a['description']['length']>0x0;return{'id':'C-CONTACT-01','severity':b?'info':'warn','title':'description\x20is\x20provided\x20and\x20non-empty','description':'description\x20is\x20validated\x20by\x20common::DESCRIPTION\x20at\x20creation\x20(contact.move\x20new_imp).\x20Empty\x20string\x20is\x20technically\x20valid\x20but\x20makes\x20the\x20Contact\x20hard\x20to\x20identify.','passed':b,'evidence':a['description']===undefined?'undefined':'length='+a['description']['length'],'fix_hint':'Provide\x20a\x20one-line\x20summary\x20of\x20this\x20Contact\x27s\x20purpose.'};}function checkLocation(a){if(a['location']===undefined)return{'id':'C-CONTACT-02','severity':'info','title':'location\x20defaults\x20to\x20empty\x20string\x20(unset)','description':'A\x20fresh\x20Contact\x20has\x20location=\x22\x22.\x20Empty\x20means\x20\x27not\x20specified\x27,\x20not\x20\x27global\x27.','passed':!![],'evidence':'unset\x20→\x20empty\x20string'};const b=a['location']['length']>0x0;return{'id':'C-CONTACT-02','severity':b?'info':'warn','title':'location\x20is\x20set\x20(validated\x20by\x20common::LONG_NAME)','description':'location_set\x20uses\x20common::LONG_NAME\x20validation.\x20Empty\x20location\x20is\x20treated\x20as\x20unset.','passed':b,'evidence':'length='+a['location']['length'],'fix_hint':'Set\x20an\x20explicit\x20region\x20via\x20location_set,\x20or\x20leave\x20unset\x20to\x20mean\x20\x27not\x20specified\x27.'};}function checkImCount(a){if(a['im_count']===undefined)return{'id':'C-CONTACT-03','severity':'info','title':'im_count\x20below\x20MAX_IM_COUNT\x20('+MAX_IM_COUNT+')','description':'im_add\x20aborts\x20with\x20E_IM_COUNT_EXCEEDED\x20(1)\x20when\x20the\x20IM\x20list\x20reaches\x20the\x20cap.','passed':!![],'evidence':'not\x20provided'};const b=a['im_count']<MAX_IM_COUNT;return{'id':'C-CONTACT-03','severity':b?'info':'block','title':'im_count\x20below\x20MAX_IM_COUNT\x20('+MAX_IM_COUNT+')','description':'Contact\x20may\x20hold\x20up\x20to\x20MAX_IM_COUNT='+MAX_IM_COUNT+'\x20IM\x20entries.\x20im_add\x20aborts\x20with\x20E_IM_COUNT_EXCEEDED\x20(1)\x20at\x20the\x20boundary.','passed':b,'evidence':'im_count='+a['im_count']+',\x20limit='+MAX_IM_COUNT,'fix_hint':'Remove\x20stale\x20IM\x20entries\x20(im_remove/im_clear)\x20before\x20adding\x20more.'};}function checkChangeStatus(a){if(!a['change_status_from_non_member'])return{'id':'C-CONTACT-04','severity':'info','title':'change_status\x20caller\x20is\x20an\x20IM\x20member','description':'change_status\x20only\x20updates\x20the\x20caller\x27s\x20own\x20status\x20if\x20the\x20caller\x20is\x20in\x20ims[];\x20otherwise\x20it\x20silently\x20succeeds\x20with\x20no\x20state\x20change.','passed':!![],'evidence':'caller\x20assumed\x20member'};return{'id':'C-CONTACT-04','severity':'warn','title':'change_status\x20from\x20non-IM\x20member\x20will\x20be\x20silently\x20ignored','description':'change_status\x20does\x20not\x20abort\x20for\x20non-members\x20—\x20it\x20silently\x20no-ops.\x20The\x20caller\x20gets\x20no\x20feedback.','passed':![],'evidence':'change_status_from_non_member=true','fix_hint':'Pre-validate\x20IM\x20membership\x20before\x20calling\x20change_status.'};}function checkDeleteOrder(a){const b=!!a['bound_to_permission_um'];if(!a['is_destroy'])return{'id':'C-CONTACT-05','severity':b?'info':'info','title':'Contact\x20deletion\x20/\x20Permission.um\x20binding','description':b?'Contact\x20is\x20bound\x20as\x20a\x20Permission.um;\x20unbind\x20before\x20deletion.':'Contact\x20is\x20not\x20bound\x20as\x20a\x20Permission.um.','passed':!![],'evidence':b?'bound_to_permission_um=true':'not\x20bound'};return{'id':'C-CONTACT-05','severity':b?'block':'warn','title':'Deletion\x20order:\x20unbind\x20Permission.um\x20before\x20deleting\x20Contact','description':'permission_um_set\x20creates\x20a\x20bidirectional\x20dependency\x20(Permission.um\x20→\x20Contact,\x20Contact.permission\x20→\x20Permission).\x20Deleting\x20a\x20bound\x20Contact\x20leaves\x20a\x20dangling\x20Permission.um.','passed':!b,'evidence':b?'bound_to_permission_um=true\x20(unbind\x20first)':'not\x20bound','fix_hint':'Call\x20permission_um_set(null)\x20to\x20unbind,\x20then\x20delete\x20the\x20Contact.'};}export function preCheckContactOp(a){return[checkDescription(a),checkLocation(a),checkImCount(a),checkChangeStatus(a),checkDeleteOrder(a)];}export function canProceedContactOp(a){const b=preCheckContactOp(a);return{'canProceed':b['every'](c=>c['severity']!=='block'||c['passed']),'blockers':b['filter'](c=>c['severity']==='block'&&!c['passed']),'warnings':b['filter'](c=>c['severity']==='warn'&&!c['passed']),'info':b['filter'](c=>c['severity']==='info')};}export function formatContactOpSummary(a){const {canProceed:b,blockers:c,warnings:d}=canProceedContactOp(a),e=[b?'✓\x20Contact\x20operation\x20pre-check\x20PASSED':'✗\x20Contact\x20operation\x20pre-check\x20FAILED',''];return c['length']>0x0&&(e['push']('BLOCKERS:'),c['forEach'](f=>e['push']('\x20\x20['+f['id']+']\x20'+f['title']+'\x20—\x20'+(f['evidence']??''))),e['push']('')),d['length']>0x0&&(e['push']('WARNINGS:'),d['forEach'](f=>e['push']('\x20\x20['+f['id']+']\x20'+f['title']+'\x20—\x20'+(f['evidence']??'')))),e['join']('\x0a');}
@@ -0,0 +1,39 @@
1
+ export declare const CONTACT_TRANSLATION_VERSION = "1.0.0";
2
+ export interface SemanticToContactSchemaRule {
3
+ id: string;
4
+ pattern_name: string;
5
+ semantic_intent: string;
6
+ match_keywords: string[];
7
+ required_fields: string[];
8
+ optional_fields: string[];
9
+ example: Record<string, unknown>;
10
+ }
11
+ export declare const SEMANTIC_TO_CONTACT_SCHEMA_RULES: SemanticToContactSchemaRule[];
12
+ export interface ContactFieldTranslation {
13
+ field_name: string;
14
+ value_type: string;
15
+ semantic: string;
16
+ format_example: string;
17
+ validation_rules: string[];
18
+ }
19
+ export declare const CONTACT_FIELD_TRANSLATIONS: ContactFieldTranslation[];
20
+ export interface ContactConstraintRule {
21
+ id: string;
22
+ name: string;
23
+ description: string;
24
+ related_field: string;
25
+ }
26
+ export declare const CONTACT_CONSTRAINT_RULES: ContactConstraintRule[];
27
+ export interface ContactExplainInput {
28
+ description?: string;
29
+ location?: string;
30
+ im_count?: number;
31
+ bound_to_permission_um?: boolean;
32
+ }
33
+ export interface ContactExplanation {
34
+ summary: string;
35
+ location_status: string;
36
+ im_status: string;
37
+ warnings: string[];
38
+ }
39
+ export declare function explainContact(input: ContactExplainInput): ContactExplanation;
@@ -0,0 +1 @@
1
+ import{MAX_IM_COUNT}from'@wowok/wowok';export const CONTACT_TRANSLATION_VERSION='1.0.0';export const SEMANTIC_TO_CONTACT_SCHEMA_RULES=[{'id':'P-CONTACT-01','pattern_name':'Create\x20contact','semantic_intent':'Create\x20a\x20shared\x20Contact\x20object\x20owned\x20by\x20a\x20Permission\x20(index\x20450).','match_keywords':['create\x20contact','new\x20contact','customer\x20service'],'required_fields':['permission','description'],'optional_fields':[],'example':{'description':'Customer\x20service\x20contact'}},{'id':'P-CONTACT-02','pattern_name':'Add\x20IM\x20member','semantic_intent':'Add\x20an\x20IM\x20entry\x20to\x20the\x20contact\x20list\x20(permission\x20index\x20453).','match_keywords':['add\x20im','add\x20member','add\x20contact\x20im'],'required_fields':['im'],'optional_fields':['description'],'example':{'im':'0x...','description':'support\x20desk'}},{'id':'P-CONTACT-03','pattern_name':'Set\x20location','semantic_intent':'Set\x20the\x20contact\x27s\x20geographic\x20region\x20(permission\x20index\x20452,\x20LONG_NAME).','match_keywords':['set\x20location','update\x20location'],'required_fields':['location'],'optional_fields':[],'example':{'location':'cn-guangdong-shenzhen'}}];export const CONTACT_FIELD_TRANSLATIONS=[{'field_name':'description','value_type':'string','semantic':'Human-readable\x20description\x20of\x20the\x20Contact\x20(common::DESCRIPTION\x20validation).','format_example':'Customer\x20service\x20contact','validation_rules':['common::DESCRIPTION\x20max\x20length']},{'field_name':'location','value_type':'string','semantic':'Geographic\x20region\x20string;\x20defaults\x20to\x20empty\x20(unset).','format_example':'cn-guangdong-shenzhen','validation_rules':['common::LONG_NAME\x20validation','empty\x20means\x20unset']},{'field_name':'ims','value_type':'vector<Im>','semantic':'IM\x20entry\x20list\x20(≤\x20MAX_IM_COUNT\x20'+MAX_IM_COUNT+').\x20Each\x20Im\x20has\x20at/status/join_time/description.','format_example':'[{at,\x20status,\x20join_time,\x20description}]','validation_rules':['im_add\x20aborts\x20E_IM_COUNT_EXCEEDED\x20(1)\x20at\x20cap']},{'field_name':'permission','value_type':'address','semantic':'Owning\x20Permission\x20address\x20(set\x20at\x20creation).','format_example':'0x...permission...','validation_rules':['set\x20via\x20new(permission,\x20…)\x20index\x20450']}];export const CONTACT_CONSTRAINT_RULES=[{'id':'CONTACT_C_01','name':'IM\x20count\x20cap','description':'ims\x20length\x20<\x20MAX_IM_COUNT\x20('+MAX_IM_COUNT+').','related_field':'ims'},{'id':'CONTACT_C_02','name':'description\x20validation','description':'description\x20uses\x20common::DESCRIPTION.','related_field':'description'},{'id':'CONTACT_C_03','name':'location\x20validation','description':'location\x20uses\x20common::LONG_NAME.','related_field':'location'},{'id':'CONTACT_C_04','name':'im\x20description\x20validation','description':'im_add\x20description\x20uses\x20common::LONG_NAME\x20(not\x20DESCRIPTION).','related_field':'ims'},{'id':'CONTACT_C_05','name':'permission\x20gating','description':'create=450,\x20description_set=451,\x20location_set=452,\x20im_add/remove/clear=453,\x20owner_receive=454.','related_field':'permission'}];export function explainContact(a){const b=[],c=a['location']?'location=\x22'+a['location']+'\x22':'location\x20unset\x20(empty\x20string)',d=a['im_count']!==undefined?a['im_count']+'/'+MAX_IM_COUNT+'\x20IM\x20entries':'IM\x20count\x20unknown';return a['im_count']!==undefined&&a['im_count']>=MAX_IM_COUNT&&b['push']('IM\x20list\x20at\x20cap\x20('+MAX_IM_COUNT+');\x20im_add\x20will\x20abort\x20E_IM_COUNT_EXCEEDED'),a['bound_to_permission_um']&&b['push']('Contact\x20is\x20bound\x20as\x20Permission.um;\x20unbind\x20before\x20deletion'),{'summary':'Contact\x20('+(a['description']??'no\x20description')+').\x20'+c+'.\x20'+d+'.','location_status':c,'im_status':d,'warnings':b};}
@@ -0,0 +1,17 @@
1
+ import { type DemandScene } from "./demand-ledger.js";
2
+ export declare const DEMAND_CONTEXT_VERSION = "1.0.0";
3
+ export interface DemandContextBundle {
4
+ scene?: DemandScene;
5
+ rewarded: boolean;
6
+ guarded: boolean;
7
+ summary: string;
8
+ }
9
+ export interface BuildDemandContextInput {
10
+ description?: string;
11
+ reward_count?: number;
12
+ guard_count?: number;
13
+ }
14
+ export declare function buildDemandContext(input: BuildDemandContextInput): DemandContextBundle;
15
+ export declare function getDemandContextSummary(ctx: DemandContextBundle): string;
16
+ export declare function isRewardedDemand(ctx: DemandContextBundle): boolean;
17
+ export declare function getDemandSceneByIdSafe(id: string): DemandScene | undefined;
@@ -0,0 +1 @@
1
+ import{getDemandSceneById}from'./demand-ledger.js';export const DEMAND_CONTEXT_VERSION='1.0.0';export function buildDemandContext(a){const b=(a['reward_count']??0x0)>0x0,c=(a['guard_count']??0x0)>0x0,d=[];return a['description']&&d['push']('demand\x20\x22'+a['description']+'\x22'),d['push'](b?'rewarded':'not\x20rewarded'),d['push'](c?'guarded\x20present':'open\x20present'),{'scene':undefined,'rewarded':b,'guarded':c,'summary':d['join']('\x20·\x20')};}export function getDemandContextSummary(a){return a['summary'];}export function isRewardedDemand(a){return a['rewarded'];}export function getDemandSceneByIdSafe(a){return getDemandSceneById(a);}
@@ -0,0 +1,26 @@
1
+ export declare const DEMAND_LEDGER_VERSION = "1.0.0";
2
+ export type DemandSceneClassification = "publish" | "present" | "feedback";
3
+ export interface DemandScene {
4
+ id: string;
5
+ classification: DemandSceneClassification;
6
+ semantic: string;
7
+ }
8
+ export declare const DEMAND_SCENES: DemandScene[];
9
+ export interface DemandFieldEntry {
10
+ field: string;
11
+ value_type: string;
12
+ semantic: string;
13
+ required: boolean;
14
+ }
15
+ export declare const DEMAND_FIELDS: DemandFieldEntry[];
16
+ export interface DemandErrorEntry {
17
+ code: string;
18
+ value: number;
19
+ description: string;
20
+ }
21
+ export declare const DEMAND_ERROR_CODES: DemandErrorEntry[];
22
+ export declare function getDemandField(field: string): DemandFieldEntry | undefined;
23
+ export declare function getDemandErrorByCode(code: string): DemandErrorEntry | undefined;
24
+ export declare function getDemandErrorByValue(value: number): DemandErrorEntry | undefined;
25
+ export declare function getDemandSceneById(id: string): DemandScene | undefined;
26
+ export declare function inferDemandSceneFromIntent(intent: string): DemandScene | undefined;
@@ -0,0 +1 @@
1
+ export const DEMAND_LEDGER_VERSION='1.0.0';export const DEMAND_SCENES=[{'id':'demand_publish','classification':'publish','semantic':'Create\x20+\x20share\x20the\x20Demand\x20(description\x20+\x20location\x20+\x20rewards\x20+\x20guards).'},{'id':'demand_present','classification':'present','semantic':'A\x20presenter\x20(service/merchant)\x20submits\x20a\x20recommendation\x20to\x20the\x20Demand.'},{'id':'demand_feedback','classification':'feedback','semantic':'Demand\x20owner\x20rates\x20a\x20presenter\x27s\x20submission\x20(acceptance_score\x20+\x20feedback).'}];export const DEMAND_FIELDS=[{'field':'description','value_type':'string','semantic':'Demand\x20description\x20(common::DESCRIPTION\x20validation).','required':!![]},{'field':'location','value_type':'string','semantic':'Geographic\x20region\x20string\x20(structured\x20via\x20region.ts).','required':!![]},{'field':'rewards','value_type':'vector<address>','semantic':'Reward\x20objects\x20offered\x20(≤\x20MAX_REWARD_COUNT\x2020).','required':![]},{'field':'guards','value_type':'vector<ServiceGuard>','semantic':'Guards\x20a\x20presenter\x20must\x20pass\x20to\x20present\x20(≤\x20MAX_GUARD_COUNT\x2020).','required':![]},{'field':'presenters','value_type':'ParentTable<address,\x20ServiceInfo>','semantic':'Presenter\x20submissions\x20(who\x20→\x20recommend/service/acceptance).','required':![]},{'field':'um','value_type':'Option<address>','semantic':'User\x20manager\x20(optional).','required':![]},{'field':'permission','value_type':'address','semantic':'Owning\x20Permission\x20organization.','required':!![]}];export const DEMAND_ERROR_CODES=[{'code':'E_MAX_REWARD_COUNT_EXCEEDED','value':0x1,'description':'rewards\x20>\x20MAX_REWARD_COUNT\x20(20).'},{'code':'E_MAX_GUARD_COUNT_EXCEEDED','value':0x2,'description':'guards\x20>\x20MAX_GUARD_COUNT\x20(20).'},{'code':'E_NEED_PASSPORT','value':0x3,'description':'present\x20requires\x20empty\x20guards\x20(no\x20guard\x20→\x20no\x20passport).'},{'code':'E_GUARD_NOT_FOUND','value':0x4,'description':'Referenced\x20guard\x20not\x20found.'}];export function getDemandField(a){return DEMAND_FIELDS['find'](b=>b['field']===a);}export function getDemandErrorByCode(a){return DEMAND_ERROR_CODES['find'](b=>b['code']===a);}export function getDemandErrorByValue(a){return DEMAND_ERROR_CODES['find'](b=>b['value']===a);}export function getDemandSceneById(a){return DEMAND_SCENES['find'](b=>b['id']===a);}export function inferDemandSceneFromIntent(a){const b=a['toLowerCase']();if(/(publish|post|announce|create|发需求|发布)/['test'](b))return DEMAND_SCENES['find'](c=>c['classification']==='publish');if(/(present|apply|submit|bid|报价|应征)/['test'](b))return DEMAND_SCENES['find'](c=>c['classification']==='present');if(/(feedback|accept|score|rate|评价|采纳)/['test'](b))return DEMAND_SCENES['find'](c=>c['classification']==='feedback');return undefined;}
@@ -0,0 +1,29 @@
1
+ import { type DemandScene } from "./demand-ledger.js";
2
+ export declare const DEMAND_PUZZLE_VERSION = "1.0.0";
3
+ export interface DemandIntentPuzzle {
4
+ scene?: DemandScene;
5
+ }
6
+ export interface DemandFieldState {
7
+ field: string;
8
+ present: boolean;
9
+ required: boolean;
10
+ }
11
+ export interface DemandPuzzle {
12
+ intent: DemandIntentPuzzle;
13
+ fields: DemandFieldState[];
14
+ }
15
+ export interface DemandPuzzleCompleteness {
16
+ complete: boolean;
17
+ missing_required: string[];
18
+ reason: string;
19
+ }
20
+ export interface InitDemandPuzzleInput {
21
+ intent: string;
22
+ description?: string;
23
+ location?: string;
24
+ permission?: string;
25
+ reward_count?: number;
26
+ guard_count?: number;
27
+ }
28
+ export declare function initDemandPuzzleFromIntent(input: InitDemandPuzzleInput): DemandPuzzle;
29
+ export declare function checkDemandPuzzleCompleteness(puzzle: DemandPuzzle): DemandPuzzleCompleteness;
@@ -0,0 +1 @@
1
+ import{DEMAND_FIELDS,inferDemandSceneFromIntent}from'./demand-ledger.js';export const DEMAND_PUZZLE_VERSION='1.0.0';export function initDemandPuzzleFromIntent(a){const b=inferDemandSceneFromIntent(a['intent']),c={'description':!!a['description'],'location':!!a['location'],'permission':!!a['permission'],'rewards':(a['reward_count']??0x0)>0x0,'guards':(a['guard_count']??0x0)>0x0},d=DEMAND_FIELDS['map'](e=>({'field':e['field'],'present':e['field']in c?!!c[e['field']]:![],'required':e['required']}));return{'intent':{'scene':b},'fields':d};}export function checkDemandPuzzleCompleteness(a){const b=a['fields']['filter'](d=>d['required']&&!d['present'])['map'](d=>d['field']),c=b['length']===0x0;return{'complete':c,'missing_required':b,'reason':c?'All\x20required\x20demand\x20fields\x20present.':'Missing\x20required:\x20'+b['join'](',\x20')+'.'};}
@@ -0,0 +1,12 @@
1
+ export declare const DEMAND_TEMPLATES_VERSION = "1.0.0";
2
+ export interface DemandTemplate {
3
+ id: string;
4
+ name: string;
5
+ description: string;
6
+ rewards_required: boolean;
7
+ guards_required: boolean;
8
+ }
9
+ export declare const DEMAND_TEMPLATES: DemandTemplate[];
10
+ export declare function getDemandTemplateById(id: string): DemandTemplate | undefined;
11
+ export declare function listDemandTemplates(): DemandTemplate[];
12
+ export declare function suggestDemandTemplate(rewards: number, guards: number): DemandTemplate | undefined;
@@ -0,0 +1 @@
1
+ export const DEMAND_TEMPLATES_VERSION='1.0.0';export const DEMAND_TEMPLATES=[{'id':'demand_open','name':'Open\x20demand','description':'A\x20public\x20announcement\x20any\x20service\x20can\x20present\x20to\x20(no\x20guards).','rewards_required':![],'guards_required':![]},{'id':'demand_guarded','name':'Guarded\x20demand','description':'Only\x20services\x20passing\x20the\x20present\x20guards\x20may\x20submit.','rewards_required':![],'guards_required':!![]},{'id':'demand_rewarded','name':'Rewarded\x20demand','description':'A\x20demand\x20with\x20monetary\x20rewards\x20to\x20incentivize\x20presentations.','rewards_required':!![],'guards_required':![]}];export function getDemandTemplateById(a){return DEMAND_TEMPLATES['find'](b=>b['id']===a);}export function listDemandTemplates(){return DEMAND_TEMPLATES;}export function suggestDemandTemplate(a,b){if(a>0x0&&b>0x0)return DEMAND_TEMPLATES['find'](c=>c['id']==='demand_rewarded');if(b>0x0)return DEMAND_TEMPLATES['find'](c=>c['id']==='demand_guarded');if(a>0x0)return DEMAND_TEMPLATES['find'](c=>c['id']==='demand_rewarded');return DEMAND_TEMPLATES['find'](c=>c['id']==='demand_open');}