@wowok/agent-mcp 3.0.2 → 3.0.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 (260) hide show
  1. package/LICENSE +0 -3
  2. package/dist/harness/recover.js +1 -1
  3. package/dist/index.d.ts +2 -2
  4. package/dist/index.js +1 -1
  5. package/dist/knowledge/account-marks.js +1 -1
  6. package/dist/knowledge/arbitration-risk.js +1 -1
  7. package/dist/knowledge/flywheel-loop.d.ts +4 -52
  8. package/dist/knowledge/flywheel-loop.js +1 -1
  9. package/dist/knowledge/guard-lint.js +1 -1
  10. package/dist/knowledge/index.d.ts +2 -225
  11. package/dist/knowledge/index.js +1 -1
  12. package/dist/knowledge/industry-registry.js +1 -1
  13. package/dist/knowledge/machine-risk.js +1 -1
  14. package/dist/knowledge/machine-translation.js +1 -1
  15. package/dist/knowledge/onchain-constants.js +1 -1
  16. package/dist/knowledge/order-ledger.d.ts +2 -2
  17. package/dist/knowledge/order-ledger.js +1 -1
  18. package/dist/knowledge/order-puzzle.d.ts +4 -4
  19. package/dist/knowledge/order-puzzle.js +1 -1
  20. package/dist/knowledge/order-risk.d.ts +1 -0
  21. package/dist/knowledge/order-risk.js +1 -1
  22. package/dist/knowledge/order-templates.d.ts +1 -1
  23. package/dist/knowledge/order-templates.js +1 -1
  24. package/dist/knowledge/safety-rules.js +1 -1
  25. package/dist/knowledge/service-ledger.js +1 -1
  26. package/dist/knowledge/service-risk.js +1 -1
  27. package/dist/knowledge/template-registry.js +1 -1
  28. package/dist/knowledge/tools-reference.js +1 -1
  29. package/dist/knowledge/workspace-lists.js +1 -1
  30. package/dist/monitor/MonitorLoop.js +1 -1
  31. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  32. package/dist/playbooks/service-build/context-assembly.d.ts +3 -1
  33. package/dist/playbooks/service-build/context-assembly.js +1 -1
  34. package/dist/playbooks/service-build/machine-nodes.d.ts +2 -0
  35. package/dist/playbooks/service-build/machine-nodes.js +1 -1
  36. package/dist/playbooks/service-build/machine-panorama.d.ts +7 -0
  37. package/dist/playbooks/service-build/machine-panorama.js +1 -1
  38. package/dist/review/machine.js +1 -1
  39. package/dist/safety/confirm-gate.js +1 -1
  40. package/dist/schema/call/base.d.ts +12 -3
  41. package/dist/schema/call/base.js +1 -1
  42. package/dist/schema/call/bridge.d.ts +4 -0
  43. package/dist/schema/call/bridge.js +1 -1
  44. package/dist/schema/call/error-codes.d.ts +2 -0
  45. package/dist/schema/call/error-codes.js +1 -0
  46. package/dist/schema/call/guard.d.ts +4 -4
  47. package/dist/schema/call/semantic.d.ts +9 -1
  48. package/dist/schema/call/semantic.js +1 -1
  49. package/dist/schema/common/index.js +1 -1
  50. package/dist/schema/goal/index.d.ts +3 -3
  51. package/dist/schema/goal/planning.d.ts +2 -2
  52. package/dist/schema/industry-pack/index.d.ts +4 -4
  53. package/dist/schema/industry-pack/modes.d.ts +4 -4
  54. package/dist/schema/local/index.d.ts +558 -0
  55. package/dist/schema/local/index.js +1 -1
  56. package/dist/schema/messenger/index.d.ts +25 -25
  57. package/dist/schema/operations.d.ts +1 -1
  58. package/dist/schema/persona/index.d.ts +2 -2
  59. package/dist/schema/query/bi.d.ts +0 -4
  60. package/dist/schema/query/bi.js +1 -1
  61. package/dist/schema/query/index.js +1 -1
  62. package/dist/schema/schema-query/index.d.ts +1 -1
  63. package/dist/schema/schema-version.js +1 -1
  64. package/dist/schema/trust/index.d.ts +3 -3
  65. package/dist/schema/workspace/index.d.ts +1 -1
  66. package/dist/schema-query-impl/index.js +1 -1
  67. package/dist/schemas/account_operation.output.json +4 -0
  68. package/dist/schemas/bridge_operation.output.json +4 -0
  69. package/dist/schemas/index.json +7 -1
  70. package/dist/schemas/local_history_operation.output.json +1458 -0
  71. package/dist/schemas/local_history_operation.schema.json +105 -0
  72. package/dist/schemas/local_info_operation.output.json +4 -0
  73. package/dist/schemas/local_mark_operation.output.json +4 -0
  74. package/dist/schemas/onchain_operations.output.json +4 -1
  75. package/dist/schemas/onchain_operations.schema.json +30 -10
  76. package/dist/schemas/onchain_operations_guard.schema.json +30 -10
  77. package/dist/schemas/query_toolkit.output.json +17 -16
  78. package/dist/tools/handlers/config.js +1 -1
  79. package/dist/tools/handlers/local.d.ts +1 -0
  80. package/dist/tools/handlers/local.js +1 -1
  81. package/dist/tools/handlers/onchain.js +1 -1
  82. package/dist/tools/index.js +1 -1
  83. package/dist/tools/registry/local.js +1 -1
  84. package/dist/tools/shared.js +1 -1
  85. package/dist/tools/wrap.js +1 -1
  86. package/package.json +2 -2
  87. package/dist/knowledge/allocation-confirm.d.ts +0 -115
  88. package/dist/knowledge/allocation-confirm.js +0 -1
  89. package/dist/knowledge/allocation-context.d.ts +0 -58
  90. package/dist/knowledge/allocation-context.js +0 -1
  91. package/dist/knowledge/allocation-translation.d.ts +0 -72
  92. package/dist/knowledge/allocation-translation.js +0 -1
  93. package/dist/knowledge/arb-confirm.d.ts +0 -28
  94. package/dist/knowledge/arb-confirm.js +0 -1
  95. package/dist/knowledge/arb-translation.d.ts +0 -48
  96. package/dist/knowledge/arb-translation.js +0 -1
  97. package/dist/knowledge/arbitration-confirm.d.ts +0 -135
  98. package/dist/knowledge/arbitration-confirm.js +0 -1
  99. package/dist/knowledge/arbitration-context.d.ts +0 -81
  100. package/dist/knowledge/arbitration-context.js +0 -1
  101. package/dist/knowledge/arbitration-translation.d.ts +0 -91
  102. package/dist/knowledge/arbitration-translation.js +0 -1
  103. package/dist/knowledge/bridge-confirm.d.ts +0 -26
  104. package/dist/knowledge/bridge-confirm.js +0 -1
  105. package/dist/knowledge/bridge-translation.d.ts +0 -37
  106. package/dist/knowledge/bridge-translation.js +0 -1
  107. package/dist/knowledge/contact-confirm.d.ts +0 -27
  108. package/dist/knowledge/contact-confirm.js +0 -1
  109. package/dist/knowledge/contact-translation.d.ts +0 -39
  110. package/dist/knowledge/contact-translation.js +0 -1
  111. package/dist/knowledge/demand-confirm.d.ts +0 -32
  112. package/dist/knowledge/demand-confirm.js +0 -1
  113. package/dist/knowledge/demand-context.d.ts +0 -17
  114. package/dist/knowledge/demand-context.js +0 -1
  115. package/dist/knowledge/demand-ledger.d.ts +0 -26
  116. package/dist/knowledge/demand-ledger.js +0 -1
  117. package/dist/knowledge/demand-puzzle.d.ts +0 -29
  118. package/dist/knowledge/demand-puzzle.js +0 -1
  119. package/dist/knowledge/demand-templates.d.ts +0 -12
  120. package/dist/knowledge/demand-templates.js +0 -1
  121. package/dist/knowledge/demand-translation.d.ts +0 -55
  122. package/dist/knowledge/demand-translation.js +0 -1
  123. package/dist/knowledge/examples-scanner-cli.d.ts +0 -1
  124. package/dist/knowledge/examples-scanner-cli.js +0 -1
  125. package/dist/knowledge/examples-scanner.d.ts +0 -121
  126. package/dist/knowledge/examples-scanner.js +0 -1
  127. package/dist/knowledge/glossary.d.ts +0 -18
  128. package/dist/knowledge/glossary.js +0 -1
  129. package/dist/knowledge/guard-bytecode-spec.d.ts +0 -82
  130. package/dist/knowledge/guard-bytecode-spec.js +0 -1
  131. package/dist/knowledge/guard-confirm.d.ts +0 -86
  132. package/dist/knowledge/guard-confirm.js +0 -1
  133. package/dist/knowledge/immutability.d.ts +0 -11
  134. package/dist/knowledge/immutability.js +0 -1
  135. package/dist/knowledge/machine-confirm.d.ts +0 -102
  136. package/dist/knowledge/machine-confirm.js +0 -1
  137. package/dist/knowledge/machine-context.d.ts +0 -160
  138. package/dist/knowledge/machine-context.js +0 -1
  139. package/dist/knowledge/machine-render.d.ts +0 -41
  140. package/dist/knowledge/machine-render.js +0 -1
  141. package/dist/knowledge/mcp-schema-audit-cli.d.ts +0 -1
  142. package/dist/knowledge/mcp-schema-audit-cli.js +0 -1
  143. package/dist/knowledge/mcp-schema-audit.d.ts +0 -91
  144. package/dist/knowledge/mcp-schema-audit.js +0 -1
  145. package/dist/knowledge/messenger-guard-guidance.d.ts +0 -17
  146. package/dist/knowledge/messenger-guard-guidance.js +0 -1
  147. package/dist/knowledge/order-confirm.d.ts +0 -115
  148. package/dist/knowledge/order-confirm.js +0 -1
  149. package/dist/knowledge/order-context.d.ts +0 -66
  150. package/dist/knowledge/order-context.js +0 -1
  151. package/dist/knowledge/order-translation.d.ts +0 -78
  152. package/dist/knowledge/order-translation.js +0 -1
  153. package/dist/knowledge/overrides-loader.d.ts +0 -13
  154. package/dist/knowledge/overrides-loader.js +0 -1
  155. package/dist/knowledge/passport-confirm.d.ts +0 -130
  156. package/dist/knowledge/passport-confirm.js +0 -1
  157. package/dist/knowledge/passport-context.d.ts +0 -59
  158. package/dist/knowledge/passport-context.js +0 -1
  159. package/dist/knowledge/passport-puzzle.d.ts +0 -108
  160. package/dist/knowledge/passport-puzzle.js +0 -1
  161. package/dist/knowledge/passport-risk.d.ts +0 -70
  162. package/dist/knowledge/passport-risk.js +0 -1
  163. package/dist/knowledge/passport-translation.d.ts +0 -68
  164. package/dist/knowledge/passport-translation.js +0 -1
  165. package/dist/knowledge/payment-confirm.d.ts +0 -26
  166. package/dist/knowledge/payment-confirm.js +0 -1
  167. package/dist/knowledge/payment-translation.d.ts +0 -37
  168. package/dist/knowledge/payment-translation.js +0 -1
  169. package/dist/knowledge/permission-confirm.d.ts +0 -110
  170. package/dist/knowledge/permission-confirm.js +0 -1
  171. package/dist/knowledge/permission-context.d.ts +0 -69
  172. package/dist/knowledge/permission-context.js +0 -1
  173. package/dist/knowledge/permission-translation.d.ts +0 -57
  174. package/dist/knowledge/permission-translation.js +0 -1
  175. package/dist/knowledge/personal-confirm.d.ts +0 -29
  176. package/dist/knowledge/personal-confirm.js +0 -1
  177. package/dist/knowledge/personal-translation.d.ts +0 -37
  178. package/dist/knowledge/personal-translation.js +0 -1
  179. package/dist/knowledge/process-model.d.ts +0 -14
  180. package/dist/knowledge/process-model.js +0 -1
  181. package/dist/knowledge/progress-confirm.d.ts +0 -108
  182. package/dist/knowledge/progress-confirm.js +0 -1
  183. package/dist/knowledge/progress-context.d.ts +0 -123
  184. package/dist/knowledge/progress-context.js +0 -1
  185. package/dist/knowledge/progress-translation.d.ts +0 -52
  186. package/dist/knowledge/progress-translation.js +0 -1
  187. package/dist/knowledge/proof-confirm.d.ts +0 -31
  188. package/dist/knowledge/proof-confirm.js +0 -1
  189. package/dist/knowledge/proof-context.d.ts +0 -17
  190. package/dist/knowledge/proof-context.js +0 -1
  191. package/dist/knowledge/proof-ledger.d.ts +0 -34
  192. package/dist/knowledge/proof-ledger.js +0 -1
  193. package/dist/knowledge/proof-puzzle.d.ts +0 -35
  194. package/dist/knowledge/proof-puzzle.js +0 -1
  195. package/dist/knowledge/proof-templates.d.ts +0 -22
  196. package/dist/knowledge/proof-templates.js +0 -1
  197. package/dist/knowledge/proof-translation.d.ts +0 -52
  198. package/dist/knowledge/proof-translation.js +0 -1
  199. package/dist/knowledge/registrar-confirm.d.ts +0 -26
  200. package/dist/knowledge/registrar-confirm.js +0 -1
  201. package/dist/knowledge/registrar-translation.d.ts +0 -37
  202. package/dist/knowledge/registrar-translation.js +0 -1
  203. package/dist/knowledge/repository-confirm.d.ts +0 -40
  204. package/dist/knowledge/repository-confirm.js +0 -1
  205. package/dist/knowledge/repository-context.d.ts +0 -12
  206. package/dist/knowledge/repository-context.js +0 -1
  207. package/dist/knowledge/repository-ledger.d.ts +0 -25
  208. package/dist/knowledge/repository-ledger.js +0 -1
  209. package/dist/knowledge/repository-puzzle.d.ts +0 -30
  210. package/dist/knowledge/repository-puzzle.js +0 -1
  211. package/dist/knowledge/repository-templates.d.ts +0 -14
  212. package/dist/knowledge/repository-templates.js +0 -1
  213. package/dist/knowledge/repository-translation.d.ts +0 -58
  214. package/dist/knowledge/repository-translation.js +0 -1
  215. package/dist/knowledge/resource-confirm.d.ts +0 -25
  216. package/dist/knowledge/resource-confirm.js +0 -1
  217. package/dist/knowledge/resource-translation.d.ts +0 -37
  218. package/dist/knowledge/resource-translation.js +0 -1
  219. package/dist/knowledge/reward-confirm.d.ts +0 -116
  220. package/dist/knowledge/reward-confirm.js +0 -1
  221. package/dist/knowledge/reward-context.d.ts +0 -127
  222. package/dist/knowledge/reward-context.js +0 -1
  223. package/dist/knowledge/reward-translation.d.ts +0 -58
  224. package/dist/knowledge/reward-translation.js +0 -1
  225. package/dist/knowledge/service-confirm.d.ts +0 -161
  226. package/dist/knowledge/service-confirm.js +0 -1
  227. package/dist/knowledge/service-context.d.ts +0 -66
  228. package/dist/knowledge/service-context.js +0 -1
  229. package/dist/knowledge/service-translation.d.ts +0 -103
  230. package/dist/knowledge/service-translation.js +0 -1
  231. package/dist/knowledge/treasury-confirm.d.ts +0 -133
  232. package/dist/knowledge/treasury-confirm.js +0 -1
  233. package/dist/knowledge/treasury-context.d.ts +0 -64
  234. package/dist/knowledge/treasury-context.js +0 -1
  235. package/dist/knowledge/treasury-translation.d.ts +0 -78
  236. package/dist/knowledge/treasury-translation.js +0 -1
  237. package/dist/knowledge/util-confirm.d.ts +0 -24
  238. package/dist/knowledge/util-confirm.js +0 -1
  239. package/dist/knowledge/util-translation.d.ts +0 -39
  240. package/dist/knowledge/util-translation.js +0 -1
  241. package/dist/loop-engineering/aggregate.d.ts +0 -50
  242. package/dist/loop-engineering/aggregate.js +0 -1
  243. package/dist/loop-engineering/context-collect.d.ts +0 -7
  244. package/dist/loop-engineering/context-collect.js +0 -1
  245. package/dist/loop-engineering/diagnose.d.ts +0 -22
  246. package/dist/loop-engineering/diagnose.js +0 -1
  247. package/dist/loop-engineering/improve.d.ts +0 -55
  248. package/dist/loop-engineering/improve.js +0 -1
  249. package/dist/loop-engineering/index.d.ts +0 -4
  250. package/dist/loop-engineering/index.js +0 -1
  251. package/dist/loop-engineering/pipeline.d.ts +0 -17
  252. package/dist/loop-engineering/pipeline.js +0 -1
  253. package/dist/schema/utils/object-type-utils.d.ts +0 -12
  254. package/dist/schema/utils/object-type-utils.js +0 -1
  255. package/dist/telemetry/index.d.ts +0 -19
  256. package/dist/telemetry/index.js +0 -1
  257. package/dist/telemetry/redact.d.ts +0 -2
  258. package/dist/telemetry/redact.js +0 -1
  259. package/dist/telemetry/storage.d.ts +0 -8
  260. package/dist/telemetry/storage.js +0 -1
@@ -1 +0,0 @@
1
- import{MAX_RECIPIENT_COUNT}from'@wowok/wowok';export const PAYMENT_CONFIRM_VERSION='1.0.0';function checkRecipientCount(a){if(a['recipient_count']===undefined)return{'id':'C-PAYMENT-01','severity':'info','title':'recipient_count\x20in\x20(0,\x20MAX_RECIPIENT_COUNT]\x20('+MAX_RECIPIENT_COUNT+')','description':'create\x20aborts\x20with\x20ERECIPIENT_EMPTY\x20(4)\x20when\x200,\x20or\x20ERECIPIENT_COUNT_EXCEEDED\x20(1)\x20above\x20the\x20cap.','passed':!![],'evidence':'not\x20provided'};const b=a['recipient_count']>0x0&&a['recipient_count']<=MAX_RECIPIENT_COUNT;return{'id':'C-PAYMENT-01','severity':b?'info':'block','title':'recipient_count\x20in\x20(0,\x20MAX_RECIPIENT_COUNT]\x20('+MAX_RECIPIENT_COUNT+')','description':'Payment\x20may\x20carry\x20up\x20to\x20MAX_RECIPIENT_COUNT='+MAX_RECIPIENT_COUNT+'\x20recipients;\x200\x20aborts\x20with\x20ERECIPIENT_EMPTY\x20(4).','passed':b,'evidence':'recipient_count='+a['recipient_count']+',\x20limit='+MAX_RECIPIENT_COUNT,'fix_hint':'Split\x20mass\x20payouts\x20across\x20multiple\x20Payment\x20objects.'};}function checkUnwrap(a){const b=!!a['uses_unsafe_unwrap'];return{'id':'C-PAYMENT-02','severity':b?'block':'info','title':'unwrap_with_check\x20is\x20used\x20(Payment\x20match\x20enforced)','description':'unwrap()\x20performs\x20no\x20Payment\x20match\x20check\x20and\x20can\x20release\x20a\x20CoinWrapper\x20minted\x20for\x20a\x20different\x20Payment.\x20unwrap_with_check\x20enforces\x20EPAYMENT_NOT_MATCH\x20(3).','passed':!b,'evidence':b?'uses_unsafe_unwrap=true':'safe\x20unwrap_with_check','fix_hint':'Use\x20unwrap_with_check\x20for\x20all\x20coin\x20release\x20paths.'};}function checkImmutability(a){const b=!!a['expects_mutation'];return{'id':'C-PAYMENT-03','severity':b?'warn':'info','title':'Payment\x20is\x20immutable\x20after\x20create\x20(freeze_object)','description':'create()\x20freezes\x20the\x20Payment;\x20amount/time/info/from_object/signer/record\x20are\x20permanent.\x20Correction\x20requires\x20a\x20new\x20Payment.','passed':!b,'evidence':b?'expects_mutation=true\x20(frozen\x20at\x20create)':'immutability\x20understood','fix_hint':'Verify\x20all\x20fields\x20before\x20create;\x20issue\x20a\x20reverse\x20Payment\x20for\x20corrections.'};}function checkVariant(a){if(!a['uses_scene_binding'])return{'id':'C-PAYMENT-04','severity':'info','title':'PaymentInfo\x20variant\x20selection','description':'4\x20constructors\x20exist:\x20payment_info\x20/\x20payment_info2\x20/\x20payment_info_with_guard\x20/\x20payment_info2_with_guard.','passed':!![],'evidence':'no\x20scene\x20binding'};const b=a['payment_info_variant']==='payment_info_with_guard';return{'id':'C-PAYMENT-04','severity':b?'info':'warn','title':'Use\x20payment_info_with_guard\x20for\x20exception-branch\x20scene\x20binding','description':'For\x20anti-reuse\x20compensation\x20Payments\x20(for_object\x20+\x20for_guard\x20+\x20index),\x20always\x20use\x20payment_info_with_guard.\x20Other\x20variants\x20drop\x20for_guard\x20or\x20for_object.','passed':b,'evidence':'uses_scene_binding=true,\x20variant='+(a['payment_info_variant']??'unknown'),'fix_hint':'Select\x20payment_info_with_guard\x20to\x20bind\x20order\x20+\x20guard\x20+\x20progress\x20index.'};}export function preCheckPaymentCreation(a){return[checkRecipientCount(a),checkUnwrap(a),checkImmutability(a),checkVariant(a)];}export function canCreatePayment(a){const b=preCheckPaymentCreation(a);return{'canCreate':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 formatPaymentCreationSummary(a){const {canCreate:b,blockers:c,warnings:d}=canCreatePayment(a),e=[b?'✓\x20Payment\x20creation\x20pre-check\x20PASSED':'✗\x20Payment\x20creation\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');}
@@ -1,37 +0,0 @@
1
- export declare const PAYMENT_TRANSLATION_VERSION = "1.0.0";
2
- export interface SemanticToPaymentSchemaRule {
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_PAYMENT_SCHEMA_RULES: SemanticToPaymentSchemaRule[];
12
- export interface PaymentFieldTranslation {
13
- field_name: string;
14
- value_type: string;
15
- semantic: string;
16
- format_example: string;
17
- validation_rules: string[];
18
- }
19
- export declare const PAYMENT_FIELD_TRANSLATIONS: PaymentFieldTranslation[];
20
- export interface PaymentConstraintRule {
21
- id: string;
22
- name: string;
23
- description: string;
24
- related_field: string;
25
- }
26
- export declare const PAYMENT_CONSTRAINT_RULES: PaymentConstraintRule[];
27
- export interface PaymentExplainInput {
28
- recipient_count?: number;
29
- payment_info_variant?: "payment_info" | "payment_info2" | "payment_info_with_guard" | "payment_info2_with_guard";
30
- amount?: number;
31
- }
32
- export interface PaymentExplanation {
33
- summary: string;
34
- variant: string;
35
- warnings: string[];
36
- }
37
- export declare function explainPayment(input: PaymentExplainInput): PaymentExplanation;
@@ -1 +0,0 @@
1
- import{MAX_RECIPIENT_COUNT}from'@wowok/wowok';export const PAYMENT_TRANSLATION_VERSION='1.0.0';export const SEMANTIC_TO_PAYMENT_SCHEMA_RULES=[{'id':'P-PAYMENT-01','pattern_name':'Single-recipient\x20payment','semantic_intent':'Pay\x20a\x20single\x20recipient\x20(new_singleton\x20wraps\x20a\x20CoinWrapper).','match_keywords':['pay','single\x20payment','send\x20to'],'required_fields':['recipient','coin','info'],'optional_fields':[],'example':{'recipient':'0x...','coin':'0x...','info':{'remark':'refund','index':0x0}}},{'id':'P-PAYMENT-02','pattern_name':'Multi-recipient\x20payment','semantic_intent':'Split\x20coins\x20across\x20multiple\x20recipients\x20(new).','match_keywords':['batch\x20pay','multi\x20recipient','mass\x20payout'],'required_fields':['recipient','coin','info'],'optional_fields':[],'example':{'recipient':['0x...','0x...'],'coin':['0x...','0x...'],'info':{'remark':'split','index':0x0}}},{'id':'P-PAYMENT-03','pattern_name':'Scene-bound\x20compensation','semantic_intent':'Exception-branch\x20compensation\x20with\x20full\x20scene\x20binding\x20(for_object+for_guard+index).','match_keywords':['compensation','exception','auto\x20refund'],'required_fields':['recipient','coin','info'],'optional_fields':[],'example':{'recipient':'0x...','coin':'0x...','info':{'for_object':'0x...','for_guard':'0x...','remark':'delay','index':0x2}}}];export const PAYMENT_FIELD_TRANSLATIONS=[{'field_name':'amount','value_type':'u64','semantic':'Total\x20transferred\x20amount.','format_example':'1000000000','validation_rules':['derived\x20from\x20coin\x20values']},{'field_name':'time','value_type':'u64','semantic':'Creation\x20timestamp\x20(clock::timestamp_ms).','format_example':'1710000000000','validation_rules':['frozen\x20at\x20create']},{'field_name':'info','value_type':'PaymentInfo','semantic':'Context\x20binding:\x20for_object\x20/\x20for_guard\x20/\x20remark\x20/\x20index.','format_example':'{for_object,\x20for_guard,\x20remark,\x20index}','validation_rules':['remark\x20uses\x20common::NAME_ALLOW_EMPTY']},{'field_name':'from_object','value_type':'Option<address>','semantic':'Source\x20object\x20(set\x20via\x20from_object_set).','format_example':'0x...order...','validation_rules':['optional']},{'field_name':'signer','value_type':'address','semantic':'Payer\x20address\x20(provenance\x20only,\x20not\x20authorization).','format_example':'0x...payer...','validation_rules':['informational']},{'field_name':'record','value_type':'vector<Revenue>','semantic':'Recipient\x20list\x20(≤\x20MAX_RECIPIENT_COUNT\x20'+MAX_RECIPIENT_COUNT+');\x20Revenue{recipient,\x20amount}.','format_example':'[{recipient,\x20amount}]','validation_rules':['ERECIPIENT_EMPTY\x20(4)\x20when\x200','ERECIPIENT_COUNT_EXCEEDED\x20(1)\x20at\x20cap','EVECTOR_COUNT_NOT_EQUAL\x20(2)']}];export const PAYMENT_CONSTRAINT_RULES=[{'id':'PAYMENT_C_01','name':'recipient\x20count','description':'0\x20<\x20count\x20≤\x20MAX_RECIPIENT_COUNT\x20('+MAX_RECIPIENT_COUNT+').','related_field':'record'},{'id':'PAYMENT_C_02','name':'vector\x20length\x20match','description':'recipient\x20count\x20==\x20coin\x20count\x20(EVECTOR_COUNT_NOT_EQUAL\x202).','related_field':'record'},{'id':'PAYMENT_C_03','name':'unwrap\x20match','description':'unwrap_with_check\x20enforces\x20payment\x20match\x20(EPAYMENT_NOT_MATCH\x203).','related_field':'record'},{'id':'PAYMENT_C_04','name':'immutability','description':'create()\x20freezes\x20the\x20Payment;\x20no\x20post-create\x20edit.','related_field':'amount'}];export function explainPayment(a){const b=[],c=a['payment_info_variant']??'unknown';if(a['recipient_count']!==undefined){if(a['recipient_count']<=0x0)b['push']('recipient_count\x200\x20→\x20ERECIPIENT_EMPTY');if(a['recipient_count']>MAX_RECIPIENT_COUNT)b['push']('recipient_count\x20'+a['recipient_count']+'\x20>\x20'+MAX_RECIPIENT_COUNT);}return a['payment_info_variant']&&a['payment_info_variant']!=='payment_info_with_guard'&&b['push']('consider\x20payment_info_with_guard\x20for\x20scene-bound\x20exception\x20payments'),{'summary':'Payment\x20amount='+(a['amount']??'?')+'.\x20variant='+c+'.\x20'+(a['recipient_count']??'?')+'\x20recipients.','variant':c,'warnings':b};}
@@ -1,110 +0,0 @@
1
- import { type PermissionRiskAssessment } from "./permission-risk.js";
2
- export type ConfirmGateStatus = "approved" | "blocked_checklist" | "blocked_risk" | "blocked_user" | "blocked_environment";
3
- export interface ConfirmGateResult {
4
- status: ConfirmGateStatus;
5
- checklist_result: ChecklistResult;
6
- risk_result?: PermissionRiskAssessment;
7
- user_confirmation?: UserConfirmation;
8
- environment_result?: EnvironmentResult;
9
- confirmation_text?: string;
10
- block_reason?: string;
11
- decision_record: DecisionRecord;
12
- }
13
- export interface ChecklistResult {
14
- all_passed: boolean;
15
- items: ChecklistItem[];
16
- }
17
- export interface ChecklistItem {
18
- id: string;
19
- description: string;
20
- passed: boolean;
21
- message: string;
22
- }
23
- export interface UserConfirmation {
24
- questions_asked: ConfirmationQuestion[];
25
- responses: ConfirmationResponse[];
26
- all_confirmed: boolean;
27
- }
28
- export interface ConfirmationQuestion {
29
- id: string;
30
- question: string;
31
- requires_explicit_yes: boolean;
32
- related_risk_ids?: string[];
33
- }
34
- export interface ConfirmationResponse {
35
- question_id: string;
36
- response: "yes" | "no" | "skip";
37
- }
38
- export interface EnvironmentResult {
39
- passed: boolean;
40
- checks: {
41
- name: string;
42
- passed: boolean;
43
- message: string;
44
- }[];
45
- }
46
- export interface DecisionRecord {
47
- timestamp: string;
48
- gate_version: string;
49
- final_status: ConfirmGateStatus;
50
- layers_passed: string[];
51
- layers_failed: string[];
52
- }
53
- export interface PermissionJsonForConfirm {
54
- object?: string | null;
55
- description?: string;
56
- admin?: {
57
- op: string;
58
- addresses: string[];
59
- };
60
- table?: {
61
- op: string;
62
- index: number;
63
- entity: string[];
64
- } | {
65
- op: string;
66
- entity: string;
67
- index: number[];
68
- };
69
- entity?: {
70
- op: string;
71
- entity1: string;
72
- entity2: string;
73
- } | {
74
- op: string;
75
- entity: string;
76
- };
77
- remark?: {
78
- op: string;
79
- index: number;
80
- remark: string;
81
- } | {
82
- op: string;
83
- index: number;
84
- } | {
85
- op: string;
86
- };
87
- apply?: string[];
88
- builder?: string;
89
- um?: string | null;
90
- }
91
- export interface ConfirmGateInput {
92
- permission_json: PermissionJsonForConfirm;
93
- intent?: string;
94
- target_objects_types?: string[];
95
- current_admin_count?: number;
96
- current_entity_count?: number;
97
- skip_user_confirmation?: boolean;
98
- skip_environment_check?: boolean;
99
- }
100
- export declare const PERMISSION_PUBLISH_CHECKLIST: ChecklistItem[];
101
- export declare const PERMISSION_CONFIRMATION_QUESTIONS: ConfirmationQuestion[];
102
- export declare const PERMISSION_CONFIRM_VERSION = "1.0.0";
103
- export declare function runPermissionConfirmGate(input: ConfirmGateInput): ConfirmGateResult;
104
- export interface ProgressiveCheckResult {
105
- stage: "checklist" | "risk" | "confirmation" | "environment" | "complete";
106
- status: "pass" | "fail" | "pending";
107
- message: string;
108
- next_action?: string;
109
- }
110
- export declare function progressivePermissionCheck(input: ConfirmGateInput): ProgressiveCheckResult;
@@ -1 +0,0 @@
1
- import{USER_DEFINED_PERM_INDEX_START,MAX_ENTITY_COUNT,MAX_PERM_FOR_ENTITY,MAX_ADMIN_COUNT}from'@wowok/wowok';import{isBuiltinPermission,findSceneByPermissionIndex}from'./permission-ledger.js';import{assessPermissionRisks}from'./permission-risk.js';export const PERMISSION_PUBLISH_CHECKLIST=[{'id':'C-P-01','description':'Custom\x20permissionIndex\x20>=\x201000\x20(USER_DEFINED_PERM_INDEX_START)','passed':![],'message':''},{'id':'C-P-02','description':'Entity\x20count\x20<=\x20MAX_ENTITY_COUNT\x20(1000)','passed':![],'message':''},{'id':'C-P-03','description':'Per-entity\x20permission\x20count\x20<=\x20MAX_PERM_FOR_ENTITY\x20(1000)','passed':![],'message':''},{'id':'C-P-04','description':'Admin\x20count\x20<=\x20MAX_ADMIN_COUNT\x20(500)','passed':![],'message':''},{'id':'C-P-05','description':'Owner\x20address\x20valid\x20(if\x20transfer)','passed':![],'message':''},{'id':'C-P-06','description':'Admin\x20addresses\x20valid','passed':![],'message':''},{'id':'C-P-07','description':'Entity\x20addresses\x20valid','passed':![],'message':''},{'id':'C-P-08','description':'UM\x20address\x20valid\x20(Contact\x20object)\x20or\x20null','passed':![],'message':''},{'id':'C-P-09','description':'apply\x20object\x20types\x20match\x20permission\x20indexes','passed':![],'message':''},{'id':'C-P-10','description':'All\x20custom\x20permissions\x20(>=\x201000)\x20have\x20remark','passed':![],'message':''},{'id':'C-P-11','description':'Ownership\x20transfer\x20double-confirmed','passed':![],'message':''}];function runStaticChecklist(a){const b=PERMISSION_PUBLISH_CHECKLIST['map'](f=>({...f})),c=a['permission_json'];if(c['table']&&'index'in c['table']&&typeof c['table']['index']==='number'){const f=c['table']['index'],g=f<USER_DEFINED_PERM_INDEX_START?isBuiltinPermission(f):!![],h=b['find'](j=>j['id']==='C-P-01');h['passed']=g,h['message']=g?'':'Permission\x20index\x20'+f+'\x20is\x20<\x20'+USER_DEFINED_PERM_INDEX_START+'\x20and\x20not\x20builtin';}else b['find'](j=>j['id']==='C-P-01')['passed']=!![];const d=a['current_entity_count']??0x0,e=b['find'](j=>j['id']==='C-P-02');e['passed']=d<=MAX_ENTITY_COUNT,e['message']=e['passed']?'':'Entity\x20count\x20'+d+'\x20>\x20'+MAX_ENTITY_COUNT;if(c['table']&&'index'in c['table']&&Array['isArray'](c['table']['index'])){const i=c['table']['index']['length']<=MAX_PERM_FOR_ENTITY,j=b['find'](k=>k['id']==='C-P-03');j['passed']=i,j['message']=i?'':'Per-entity\x20perm\x20count\x20'+c['table']['index']['length']+'\x20>\x20'+MAX_PERM_FOR_ENTITY;}else b['find'](k=>k['id']==='C-P-03')['passed']=!![];if(c['admin']){const k=c['admin']['op']==='set'?c['admin']['addresses']['length']:a['current_admin_count']??0x0,l=k<=MAX_ADMIN_COUNT,m=b['find'](n=>n['id']==='C-P-04');m['passed']=l,m['message']=l?'':'Admin\x20count\x20'+k+'\x20>\x20'+MAX_ADMIN_COUNT;}else b['find'](n=>n['id']==='C-P-04')['passed']=!![];if(c['builder']){const n=c['builder']['startsWith']('0x')&&c['builder']['length']>=0x28,o=b['find'](p=>p['id']==='C-P-05');o['passed']=n,o['message']=n?'':'New\x20owner\x20address\x20'+c['builder']+'\x20invalid';}else b['find'](p=>p['id']==='C-P-05')['passed']=!![];if(c['admin']){const p=c['admin']['addresses']['every'](r=>r['startsWith']('0x')&&r['length']>=0x28),q=b['find'](r=>r['id']==='C-P-06');q['passed']=p,q['message']=p?'':'Some\x20admin\x20address\x20invalid';}else b['find'](r=>r['id']==='C-P-06')['passed']=!![];if(c['table']){const r='entity'in c['table']?Array['isArray'](c['table']['entity'])?c['table']['entity']:[c['table']['entity']]:[],s=r['every'](u=>u['startsWith']('0x')&&u['length']>=0x28),t=b['find'](u=>u['id']==='C-P-07');t['passed']=s,t['message']=s?'':'Some\x20entity\x20address\x20invalid';}else b['find'](u=>u['id']==='C-P-07')['passed']=!![];if(c['um']!==undefined){const u=c['um']===null||c['um']['startsWith']('0x')&&c['um']['length']>=0x28,v=b['find'](w=>w['id']==='C-P-08');v['passed']=u,v['message']=u?'':'UM\x20address\x20'+c['um']+'\x20invalid';}else b['find'](w=>w['id']==='C-P-08')['passed']=!![];if(c['apply']&&c['apply']['length']>0x0&&c['table']&&'index'in c['table']&&typeof c['table']['index']==='number'){const w=findSceneByPermissionIndex(c['table']['index']);if(w&&a['target_objects_types']){const x=a['target_objects_types']['filter'](z=>z!==w['host_object']),y=b['find'](z=>z['id']==='C-P-09');y['passed']=x['length']===0x0,y['message']=x['length']===0x0?'':'Index\x20'+c['table']['index']+'\x20expects\x20'+w['host_object']+',\x20got\x20'+x['join'](',');}else b['find'](z=>z['id']==='C-P-09')['passed']=!![];}else b['find'](z=>z['id']==='C-P-09')['passed']=!![];if(c['table']&&'index'in c['table']&&typeof c['table']['index']==='number'&&c['table']['index']>=USER_DEFINED_PERM_INDEX_START){const z=c['remark']&&'remark'in c['remark']&&c['remark']['index']===c['table']['index'],A=b['find'](B=>B['id']==='C-P-10');A['passed']=!!z,A['message']=z?'':'Custom\x20permission\x20'+c['table']['index']+'\x20has\x20no\x20remark';}else b['find'](B=>B['id']==='C-P-10')['passed']=!![];return c['builder']?(b['find'](B=>B['id']==='C-P-11')['passed']=![],b['find'](B=>B['id']==='C-P-11')['message']='Pending\x20user\x20confirmation\x20in\x20Layer\x203'):b['find'](B=>B['id']==='C-P-11')['passed']=!![],{'all_passed':b['filter'](B=>B['id']!=='C-P-11')['every'](B=>B['passed']),'items':b};}function adaptRiskAssessment(a,b){const c={'object':a['permission_json']['object'],'description':a['permission_json']['description'],'admin':a['permission_json']['admin'],'table':a['permission_json']['table'],'entity':a['permission_json']['entity'],'remark':a['permission_json']['remark'],'apply':a['permission_json']['apply'],'builder':a['permission_json']['builder'],'um':a['permission_json']['um'],'current_admin_count':a['current_admin_count'],'current_entity_count':a['current_entity_count'],'target_objects_types':a['target_objects_types']};return assessPermissionRisks(c);}export const PERMISSION_CONFIRMATION_QUESTIONS=[{'id':'QP1','question':'Are\x20all\x20admin\x20addresses\x20correctly\x20verified\x20as\x20trusted\x20parties?','requires_explicit_yes':!![]},{'id':'QP2','question':'Are\x20all\x20entity\x20addresses\x20(users/Guards)\x20correctly\x20assigned\x20to\x20their\x20intended\x20permission\x20indexes?','requires_explicit_yes':!![]},{'id':'QP3','question':'If\x20using\x20custom\x20permission\x20indexes\x20(>=\x201000),\x20are\x20all\x20remarks\x20documented?','requires_explicit_yes':!![]},{'id':'QP4','question':'If\x20applying\x20to\x20target\x20objects,\x20have\x20you\x20verified\x20the\x20target\x20object\x20types\x20match\x20the\x20permission\x20indexes\x20used?','requires_explicit_yes':!![]},{'id':'QP5','question':'⚠️\x20If\x20transferring\x20ownership:\x20do\x20you\x20confirm\x20the\x20new\x20owner\x20address\x20is\x20correct?\x20This\x20operation\x20is\x20IRREVERSIBLE.','requires_explicit_yes':!![],'related_risk_ids':['R-P-4-01']},{'id':'QP6','question':'Have\x20you\x20exported\x20the\x20current\x20Permission\x20JSON\x20as\x20a\x20backup\x20before\x20this\x20operation?','requires_explicit_yes':![]}];function processUserConfirmation(a,b){const c=[...PERMISSION_CONFIRMATION_QUESTIONS];if(!a['permission_json']['builder']){const d=c['findIndex'](e=>e['id']==='QP5');if(d>=0x0)c['splice'](d,0x1);}if(a['skip_user_confirmation'])return{'questions_asked':c,'responses':c['map'](e=>({'question_id':e['id'],'response':'yes'})),'all_confirmed':!![]};return{'questions_asked':c,'responses':[],'all_confirmed':![]};}function verifyEnvironment(a){const b=[];a['permission_json']['object']&&b['push']({'name':'object_exists','passed':!![],'message':'Permission\x20object\x20'+a['permission_json']['object']+'\x20assumed\x20to\x20exist'});if(a['permission_json']['builder']||a['permission_json']['um']!==undefined)b['push']({'name':'signer_is_owner','passed':!![],'message':'Signer\x20must\x20be\x20owner\x20for\x20transfer/um_set\x20operations'});else(a['permission_json']['admin']||a['permission_json']['table']||a['permission_json']['remark'])&&b['push']({'name':'signer_is_admin','passed':!![],'message':'Signer\x20must\x20be\x20admin\x20for\x20table/remark/admin\x20operations'});a['permission_json']['apply']&&a['permission_json']['apply']['length']>0x0&&b['push']({'name':'apply_targets_exist_and_owned','passed':!![],'message':'Signer\x20must\x20be\x20owner\x20of\x20'+a['permission_json']['apply']['length']+'\x20target\x20object(s)'});const c=b['every'](d=>d['passed']);return{'passed':c,'checks':b};}export const PERMISSION_CONFIRM_VERSION='1.0.0';export function runPermissionConfirmGate(a){const b=[],c=[],d=runStaticChecklist(a);if(!d['all_passed'])return c['push']('L1_checklist'),{'status':'blocked_checklist','checklist_result':d,'confirmation_text':generateConfirmationText(a,d),'block_reason':'Checklist\x20failed:\x20'+d['items']['filter'](h=>!h['passed'])['map'](h=>h['id'])['join'](',\x20'),'decision_record':{'timestamp':new Date()['toISOString'](),'gate_version':PERMISSION_CONFIRM_VERSION,'final_status':'blocked_checklist','layers_passed':b,'layers_failed':c}};b['push']('L1_checklist');const e=adaptRiskAssessment(a,d),f=e['risks']['some'](h=>h['level']==='CRITICAL');if(f)return c['push']('L2_risk'),{'status':'blocked_risk','checklist_result':d,'risk_result':e,'confirmation_text':generateConfirmationText(a,d,e),'block_reason':'CRITICAL\x20risks:\x20'+e['risks']['filter'](h=>h['level']==='CRITICAL')['map'](h=>h['id'])['join'](',\x20'),'decision_record':{'timestamp':new Date()['toISOString'](),'gate_version':PERMISSION_CONFIRM_VERSION,'final_status':'blocked_risk','layers_passed':b,'layers_failed':c}};b['push']('L2_risk');const g=processUserConfirmation(a,e);if(!g['all_confirmed']){if(a['permission_json']['builder']){const h=d['items']['find'](j=>j['id']==='C-P-11');if(h){const i=g['responses']['find'](j=>j['question_id']==='QP5');h['passed']=i?.['response']==='yes',h['message']=h['passed']?'':'Transfer\x20not\x20confirmed\x20by\x20user';}}if(!d['all_passed']&&a['permission_json']['builder']){const j=d['items']['find'](k=>k['id']==='C-P-11');if(j&&!j['passed'])return c['push']('L3_user'),{'status':'blocked_user','checklist_result':d,'risk_result':e,'user_confirmation':g,'confirmation_text':generateConfirmationText(a,d,e),'block_reason':'User\x20did\x20not\x20confirm\x20ownership\x20transfer','decision_record':{'timestamp':new Date()['toISOString'](),'gate_version':PERMISSION_CONFIRM_VERSION,'final_status':'blocked_user','layers_passed':b,'layers_failed':c}};}}b['push']('L3_user');if(a['skip_environment_check'])b['push']('L4_environment');else{const k=verifyEnvironment(a);if(!k['passed'])return c['push']('L4_environment'),{'status':'blocked_environment','checklist_result':d,'risk_result':e,'user_confirmation':g,'environment_result':k,'confirmation_text':generateConfirmationText(a,d,e),'block_reason':'Environment\x20check\x20failed:\x20'+k['checks']['filter'](l=>!l['passed'])['map'](l=>l['name'])['join'](',\x20'),'decision_record':{'timestamp':new Date()['toISOString'](),'gate_version':PERMISSION_CONFIRM_VERSION,'final_status':'blocked_environment','layers_passed':b,'layers_failed':c}};b['push']('L4_environment');}return{'status':'approved','checklist_result':d,'risk_result':e,'user_confirmation':g,'confirmation_text':generateConfirmationText(a,d,e),'decision_record':{'timestamp':new Date()['toISOString'](),'gate_version':PERMISSION_CONFIRM_VERSION,'final_status':'approved','layers_passed':b,'layers_failed':c}};}function generateConfirmationText(a,b,c){const d=[],e=a['permission_json'];d['push']('═══\x20Permission\x20Confirmation\x20═══'),d['push']('');e['object']?d['push']('Permission:\x20'+e['object']):d['push']('Permission:\x20NEW\x20(to\x20be\x20created)');if(e['description'])d['push']('Description:\x20'+e['description']);d['push'](''),d['push']('─\x20Checklist\x20──────────────────');for(const f of b['items']){const g=f['passed']?'✓':'✗';d['push']('\x20\x20'+g+'\x20'+f['id']+':\x20'+f['description']+(f['message']?'\x20—\x20'+f['message']:''));}d['push']('');if(c){d['push']('─\x20Risk\x20Assessment\x20──────────────────'),d['push']('Overall:\x20'+c['overall_risk']),d['push']('Detected:\x20'+c['risks']['length']+'\x20risk(s)');for(const h of c['risks']){d['push']('\x20\x20['+h['level']+']\x20'+h['id']+':\x20'+h['title']);}d['push']('');}d['push']('─\x20Operations\x20──────────────────');if(e['admin'])d['push']('-\x20Admin\x20'+e['admin']['op']+':\x20'+e['admin']['addresses']['length']+'\x20address(es)');if(e['table'])d['push']('-\x20Table\x20op:\x20'+e['table']['op']);if(e['entity'])d['push']('-\x20Entity\x20op:\x20'+e['entity']['op']);if(e['remark'])d['push']('-\x20Remark\x20op:\x20'+e['remark']['op']);if(e['apply'])d['push']('-\x20Apply\x20to:\x20'+e['apply']['length']+'\x20object(s)');if(e['builder'])d['push']('-\x20⚠️\x20TRANSFER\x20to:\x20'+e['builder']);if(e['um']!==undefined)d['push']('-\x20UM:\x20'+(e['um']??'(revoke)'));return d['push'](''),d['join']('\x0a');}export function progressivePermissionCheck(a){const b=runStaticChecklist(a);if(!b['all_passed'])return{'stage':'checklist','status':'fail','message':'Checklist\x20failed:\x20'+b['items']['filter'](d=>!d['passed'])['map'](d=>d['id'])['join'](',\x20'),'next_action':'Fix\x20failing\x20checklist\x20items'};const c=adaptRiskAssessment(a,b);if(c['risks']['some'](d=>d['level']==='CRITICAL'))return{'stage':'risk','status':'fail','message':'CRITICAL\x20risks:\x20'+c['risks']['filter'](d=>d['level']==='CRITICAL')['map'](d=>d['id'])['join'](',\x20'),'next_action':'Resolve\x20CRITICAL\x20risks\x20before\x20proceeding'};if(c['needs_human_review'])return{'stage':'confirmation','status':'pending','message':'Human\x20review\x20required\x20for\x20HIGH\x20risks','next_action':'Confirm\x20risk\x20acceptance'};return{'stage':'complete','status':'pass','message':'All\x20checks\x20passed'};}
@@ -1,69 +0,0 @@
1
- import { type PermissionScene, type BuiltinPermissionEntry } from "./permission-ledger.js";
2
- import { type PermissionTemplate } from "./permission-templates.js";
3
- import { type SemanticToSchemaRule } from "./permission-translation.js";
4
- import { type RiskRule, type PermissionRiskAssessment, type PermissionStakeholder } from "./permission-risk.js";
5
- import { type PermissionPuzzle, type PuzzleCompleteness } from "./permission-puzzle.js";
6
- import { PERMISSION_PUBLISH_CHECKLIST, PERMISSION_CONFIRMATION_QUESTIONS, type PermissionJsonForConfirm } from "./permission-confirm.js";
7
- export declare const PERMISSION_CONTEXT_VERSION = "1.0.0";
8
- export type PermissionInjectionMode = "initial_design" | "mid_design_review" | "pre_publish" | "post_publish_modify" | "stakeholder_review" | "apply_check";
9
- export type PermissionStakeholderPerspective = PermissionStakeholder | "system";
10
- export interface PermissionContextBundle {
11
- version: string;
12
- mode: PermissionInjectionMode;
13
- stakeholder_perspective?: PermissionStakeholderPerspective;
14
- matched_scene?: PermissionScene;
15
- matched_template?: PermissionTemplate;
16
- matched_pattern?: SemanticToSchemaRule;
17
- puzzle_state?: PermissionPuzzle;
18
- puzzle_completeness?: PuzzleCompleteness;
19
- relevant_risks: RiskRule[];
20
- risk_assessment?: PermissionRiskAssessment;
21
- relevant_checklist: typeof PERMISSION_PUBLISH_CHECKLIST;
22
- relevant_questions: typeof PERMISSION_CONFIRMATION_QUESTIONS;
23
- relevant_builtin_permissions: BuiltinPermissionEntry[];
24
- cross_object_refs: PermissionCrossObjectRef[];
25
- onchain_constraints: PermissionOnchainConstraint[];
26
- rendering_hints: PermissionRenderingHints;
27
- }
28
- export interface PermissionCrossObjectRef {
29
- object: "Service" | "Machine" | "Treasury" | "Arbitration" | "Repository" | "Reward" | "Progress" | "Demand" | "Contact" | "Allocation";
30
- field: string;
31
- scene_id: string;
32
- description: string;
33
- }
34
- export interface PermissionOnchainConstraint {
35
- name: string;
36
- value: string | number;
37
- description: string;
38
- }
39
- export interface PermissionRenderingHints {
40
- include_puzzle_template: boolean;
41
- include_risk_details: boolean;
42
- include_questions: boolean;
43
- include_immutability_warning: boolean;
44
- include_transfer_warning: boolean;
45
- max_length: number;
46
- }
47
- export interface BuildPermissionContextInput {
48
- mode: PermissionInjectionMode;
49
- intent?: string;
50
- permission_json?: PermissionJsonForConfirm;
51
- stakeholder?: PermissionStakeholderPerspective;
52
- target_host_object?: PermissionScene["host_object"];
53
- target_permission_index?: number;
54
- max_length?: number;
55
- }
56
- export declare function buildPermissionContext(input: BuildPermissionContextInput): PermissionContextBundle;
57
- export declare const ENTITY_PERMISSION_ERROR_CODES: {
58
- readonly E_ITEM_COUNT_EXCEEDED: 1;
59
- readonly E_NOT_SYSTEM_ADDRESS: 2;
60
- };
61
- export declare const ENTITY_PERMISSION_OBJECT_ID = "0xaad";
62
- export declare const ENTITY_CONTACT_OBJECT_ID = "0xaa9";
63
- export declare const OBJECT_LINKER_CORE_OBJECT_ID = "0xaae";
64
- export declare const OBJECT_LINKER_TX_OBJECT_ID = "0xaaf";
65
- export declare const VOTE_BIT_LIKE = 2;
66
- export declare const VOTE_BIT_DISLIKE = 4;
67
- export declare const VOTE_BIT_FAVOR = 8;
68
- export declare function buildPromptFromPermissionContext(bundle: PermissionContextBundle): string;
69
- export declare function getPermissionContextSummary(bundle: PermissionContextBundle): string;
@@ -1 +0,0 @@
1
- import{USER_DEFINED_PERM_INDEX_START,MAX_ENTITY_COUNT,MAX_PERM_FOR_ENTITY,MAX_ADMIN_COUNT,MAX_ITEM_COUNT,ROLE_OWNER,ROLE_ADMIN,ROLE_ENTITY}from'@wowok/wowok';import{PERMISSION_SCENES,findSceneByPermissionIndex,inferSceneFromIntent,getScenesByHostObject,getAllBuiltinPermissions}from'./permission-ledger.js';import{getTemplatesByScene}from'./permission-templates.js';import{matchSemanticPattern}from'./permission-translation.js';import{getAllRiskRules,assessPermissionRisks}from'./permission-risk.js';import{initPuzzleFromIntent,checkPuzzleCompleteness}from'./permission-puzzle.js';import{PERMISSION_PUBLISH_CHECKLIST,PERMISSION_CONFIRMATION_QUESTIONS}from'./permission-confirm.js';export const PERMISSION_CONTEXT_VERSION='1.0.0';export function buildPermissionContext(a){const b=a['max_length']??0xfa0;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_host_object']){const p=getScenesByHostObject(a['target_host_object']);if(p['length']>0x0)c=p[0x0];}}}let d;if(c){const q=getTemplatesByScene(c['id']);if(q['length']>0x0)d=q[0x0];}let e;if(a['intent']){const r=matchSemanticPattern(a['intent']);if(r['length']>0x0)e=r[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['permission_json']){const s={'object':a['permission_json']['object'],'admin':a['permission_json']['admin'],'table':a['permission_json']['table'],'entity':a['permission_json']['entity'],'remark':a['permission_json']['remark'],'apply':a['permission_json']['apply'],'builder':a['permission_json']['builder'],'um':a['permission_json']['um']};i=assessPermissionRisks(s);}const j=filterChecklist(a['mode']),k=filterQuestions(a['mode']),l=c?c['builtin_indexes']:getAllBuiltinPermissions(),m=buildCrossObjectRefs(c),n=buildOnchainConstraints(),o=buildRenderingHints(a['mode'],b,!!a['permission_json']?.['builder']);return{'version':PERMISSION_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_builtin_permissions':l,'cross_object_refs':m,'onchain_constraints':n,'rendering_hints':o};}function filterRiskRules(a,b,c){let 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');if(b==='admin')return d['filter'](e=>e['category']==='structural'||e['category']==='semantic');}return d;}function filterChecklist(a){if(a==='initial_design')return PERMISSION_PUBLISH_CHECKLIST['filter'](b=>['C-P-01','C-P-02','C-P-03','C-P-04']['includes'](b['id']));return PERMISSION_PUBLISH_CHECKLIST;}function filterQuestions(a){if(a==='pre_publish')return PERMISSION_CONFIRMATION_QUESTIONS;if(a==='post_publish_modify')return PERMISSION_CONFIRMATION_QUESTIONS['filter'](b=>b['id']!=='QP5');return[];}function buildCrossObjectRefs(a){if(!a)return[];const b=[];for(const c of PERMISSION_SCENES){if(c['host_object']===a['host_object']||c['id']===a['id'])continue;b['push']({'object':c['host_object'],'field':'permission','scene_id':c['id'],'description':c['host_object']+'\x20uses\x20permission\x20indexes\x20'+c['permission_index_range']});}return b;}function buildOnchainConstraints(){return[{'name':'USER_DEFINED_PERM_INDEX_START','value':USER_DEFINED_PERM_INDEX_START,'description':'Custom\x20permission\x20indexes\x20must\x20be\x20>=\x20this\x20value'},{'name':'MAX_ENTITY_COUNT','value':MAX_ENTITY_COUNT,'description':'Maximum\x20entities\x20per\x20Permission'},{'name':'MAX_PERM_FOR_ENTITY','value':MAX_PERM_FOR_ENTITY,'description':'Maximum\x20permission\x20indexes\x20per\x20entity'},{'name':'MAX_ADMIN_COUNT','value':MAX_ADMIN_COUNT,'description':'Maximum\x20admins\x20per\x20Permission'},{'name':'MAX_ITEM_COUNT','value':MAX_ITEM_COUNT,'description':'Maximum\x20permissions\x20per\x20entity\x20in\x20the\x20global\x20reverse\x20index'},{'name':'ROLE_OWNER','value':ROLE_OWNER,'description':'Entity\x20permission\x20role\x20flag:\x20owner'},{'name':'ROLE_ADMIN','value':ROLE_ADMIN,'description':'Entity\x20permission\x20role\x20flag:\x20admin'},{'name':'ROLE_ENTITY','value':ROLE_ENTITY,'description':'Entity\x20permission\x20role\x20flag:\x20entity'}];}export const ENTITY_PERMISSION_ERROR_CODES={'E_ITEM_COUNT_EXCEEDED':0x1,'E_NOT_SYSTEM_ADDRESS':0x2};export const ENTITY_PERMISSION_OBJECT_ID='0xaad';export const ENTITY_CONTACT_OBJECT_ID='0xaa9';export const OBJECT_LINKER_CORE_OBJECT_ID='0xaae';export const OBJECT_LINKER_TX_OBJECT_ID='0xaaf';export const VOTE_BIT_LIKE=0x2;export const VOTE_BIT_DISLIKE=0x4;export const VOTE_BIT_FAVOR=0x8;function buildRenderingHints(a,b,c){return{'include_puzzle_template':a==='initial_design','include_risk_details':a==='pre_publish'||a==='stakeholder_review','include_questions':a==='pre_publish','include_immutability_warning':a==='post_publish_modify','include_transfer_warning':c,'max_length':b};}export function buildPromptFromPermissionContext(a){const b=[],d=a['rendering_hints'];b['push']('═══\x20Permission\x20Context\x20(mode:\x20'+a['mode']+')\x20═══'),b['push']('');a['matched_scene']&&(b['push']('Scene:\x20'+a['matched_scene']['name']),b['push']('Host\x20object:\x20'+a['matched_scene']['host_object']),b['push']('Permission\x20range:\x20'+a['matched_scene']['permission_index_range']),b['push'](''));a['matched_template']&&(b['push']('Suggested\x20template:\x20'+a['matched_template']['id']+'\x20—\x20'+a['matched_template']['name']),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:\x20'+e['missing']['join'](',\x20')),b['push']('Next:\x20'+e['next_step']),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 f of a['relevant_risks']['slice'](0x0,0x5)){b['push']('\x20\x20'+f['id']+'\x20—\x20'+f['trigger']);}a['relevant_risks']['length']>0x5&&b['push']('\x20\x20...\x20and\x20'+(a['relevant_risks']['length']-0x5)+'\x20more'),b['push']('');}a['risk_assessment']&&(b['push']('─\x20Risk\x20Assessment\x20──────────────'),b['push']('Overall:\x20'+a['risk_assessment']['overall_risk']),b['push']('Detected:\x20'+a['risk_assessment']['risks']['length']+'\x20risk(s)'),b['push'](''));if(a['relevant_builtin_permissions']['length']>0x0){b['push']('─\x20Builtin\x20Permissions\x20('+a['relevant_builtin_permissions']['length']+')\x20──────────────');for(const g of a['relevant_builtin_permissions']['slice'](0x0,0x8)){b['push']('\x20\x20['+g['index']+']\x20'+g['name']+':\x20'+g['description']);}a['relevant_builtin_permissions']['length']>0x8&&b['push']('\x20\x20...\x20and\x20'+(a['relevant_builtin_permissions']['length']-0x8)+'\x20more'),b['push']('');}d['include_transfer_warning']&&(b['push']('⚠️\x20TRANSFER\x20OPERATION\x20DETECTED\x20—\x20This\x20is\x20IRREVERSIBLE'),b['push'](''));if(a['onchain_constraints']['length']>0x0){b['push']('─\x20On-chain\x20Constraints\x20──────────────');for(const i of a['onchain_constraints']){b['push']('\x20\x20'+i['name']+'\x20=\x20'+i['value']+'\x20—\x20'+i['description']);}b['push']('');}return b['join']('\x0a');}export function getPermissionContextSummary(a){const b=['mode='+a['mode'],'scene='+(a['matched_scene']?.['id']??'none'),'risks='+a['relevant_risks']['length'],'permissions='+a['relevant_builtin_permissions']['length']];if(a['risk_assessment'])b['push']('overall_risk='+a['risk_assessment']['overall_risk']);return b['join'](',\x20');}
@@ -1,57 +0,0 @@
1
- export interface SemanticToSchemaRule {
2
- id: string;
3
- pattern_name: string;
4
- semantic_intent: string;
5
- match_keywords: string[];
6
- schema_fields: string[];
7
- example_json: object;
8
- reverse_explanation: string;
9
- }
10
- export interface SchemaToSemanticRule {
11
- element_type: "field" | "op" | "index";
12
- type_name: string;
13
- semantic_explanation: string;
14
- constraints?: string[];
15
- }
16
- export interface PermissionConstraintRule {
17
- id: string;
18
- category: "structural" | "semantic" | "authority" | "lifecycle" | "cross_object";
19
- rule: string;
20
- applies_to: string[];
21
- }
22
- export declare const SEMANTIC_TO_SCHEMA_RULES: SemanticToSchemaRule[];
23
- export declare const SCHEMA_TO_SEMANTIC_RULES: SchemaToSemanticRule[];
24
- export declare const PERMISSION_CONSTRAINT_RULES: PermissionConstraintRule[];
25
- export declare const PERMISSION_TRANSLATION_VERSION = "1.0.0";
26
- export declare function matchSemanticPattern(userIntent: string): SemanticToSchemaRule[];
27
- export declare function explainPermissionCallData(data: {
28
- object?: string | null;
29
- description?: string;
30
- admin?: {
31
- op: string;
32
- addresses: string[];
33
- };
34
- table?: {
35
- op: string;
36
- index?: number;
37
- entity?: string | string[];
38
- };
39
- entity?: {
40
- op: string;
41
- entity1?: string;
42
- entity2?: string;
43
- entity?: string;
44
- };
45
- remark?: {
46
- op: string;
47
- index?: number;
48
- remark?: string;
49
- };
50
- apply?: string[];
51
- builder?: string;
52
- um?: string | null;
53
- }): string;
54
- export declare function explainField(fieldName: string): SchemaToSemanticRule | undefined;
55
- export declare function explainOp(opName: string): SchemaToSemanticRule | undefined;
56
- export declare function getConstraintsByCategory(category: PermissionConstraintRule["category"]): PermissionConstraintRule[];
57
- export declare function explainPermissionIndex(index: number): string;
@@ -1 +0,0 @@
1
- import{isBuiltinPermission,getBuiltinPermissionByIndex,findSceneByPermissionIndex}from'./permission-ledger.js';export const SEMANTIC_TO_SCHEMA_RULES=[{'id':'P-P-01','pattern_name':'Create\x20new\x20Permission','semantic_intent':'Create\x20a\x20new\x20Permission\x20for\x20a\x20Service/Machine/Treasury/etc.','match_keywords':['create','new'],'schema_fields':['object(null)','description','admin','table','remark'],'example_json':{'object':null,'description':'Permission\x20for\x20myshop\x20service','admin':{'op':'set','addresses':['0xOWNER','0xADMIN1']},'table':{'op':'set\x20perm\x20by\x20index','index':0x137,'entity':['0xUSER1','0xUSER2']},'remark':{'op':'set','index':0x137,'remark':'service.publish'}},'reverse_explanation':'object=null\x20indicates\x20creation;\x20admin/table/remark\x20initialize\x20the\x20permission'},{'id':'P-P-02','pattern_name':'Grant\x20permission\x20to\x20entities','semantic_intent':'Grant\x20a\x20specific\x20permission\x20index\x20to\x20multiple\x20entities','match_keywords':['grant','authorize'],'schema_fields':['object','table(op=add\x20perm\x20by\x20index)'],'example_json':{'object':'0xPERMISSION_ADDRESS','table':{'op':'add\x20perm\x20by\x20index','index':0x139,'entity':['0xNEW_USER']}},'reverse_explanation':'table.op=\x27add\x20perm\x20by\x20index\x27\x20adds\x20entities\x20to\x20an\x20existing\x20permission\x20index'},{'id':'P-P-03','pattern_name':'Set\x20admin\x20list','semantic_intent':'Replace\x20the\x20admin\x20list','match_keywords':['admin','set\x20admin'],'schema_fields':['object','admin(op=set)'],'example_json':{'object':'0xPERMISSION_ADDRESS','admin':{'op':'set','addresses':['0xADMIN1','0xADMIN2','0xADMIN3']}},'reverse_explanation':'admin.op=\x27set\x27\x20overwrites\x20the\x20entire\x20admin\x20list'},{'id':'P-P-04','pattern_name':'Transfer\x20ownership','semantic_intent':'Transfer\x20Permission\x20ownership\x20to\x20a\x20new\x20address','match_keywords':['transfer','handover'],'schema_fields':['object','builder'],'example_json':{'object':'0xPERMISSION_ADDRESS','builder':'0xNEW_OWNER'},'reverse_explanation':'builder\x20field\x20triggers\x20ownership\x20transfer;\x20irreversible'},{'id':'P-P-05','pattern_name':'Set/clear\x20UM\x20(User\x20Manager)','semantic_intent':'Delegate\x20UM\x20management\x20or\x20revoke\x20UM','match_keywords':['um','user\x20manager','delegate','contact'],'schema_fields':['object','um'],'example_json':{'object':'0xPERMISSION_ADDRESS','um':'0xUM_ADDRESS'},'reverse_explanation':'um=null\x20revokes;\x20um=<address>\x20delegates\x20to\x20Contact\x20object'},{'id':'P-P-06','pattern_name':'Apply\x20Permission\x20to\x20other\x20objects','semantic_intent':'Apply\x20Permission\x20to\x20Service/Machine/Treasury/Arbitration/Repository/Reward/Demand','match_keywords':['apply','bind'],'schema_fields':['object','apply'],'example_json':{'object':'0xPERMISSION_ADDRESS','apply':['0xSERVICE_ADDRESS','0xMACHINE_ADDRESS']},'reverse_explanation':'apply\x20field\x20binds\x20Permission\x20to\x20target\x20objects;\x20signer\x20must\x20be\x20owner\x20of\x20those\x20objects'},{'id':'P-P-07','pattern_name':'Manage\x20remarks','semantic_intent':'Add/remove/clear\x20remarks\x20for\x20permission\x20indexes','match_keywords':['remark','note'],'schema_fields':['object','remark'],'example_json':{'object':'0xPERMISSION_ADDRESS','remark':{'op':'set','index':0x3e8,'remark':'custom.refund_approval'}},'reverse_explanation':'remark.op=\x27set|remove|clear\x27\x20manages\x20documentation\x20for\x20permission\x20indexes'},{'id':'P-P-08','pattern_name':'Entity\x20batch\x20operations','semantic_intent':'Swap/replace/copy/del\x20entities','match_keywords':['swap','replace','copy','del'],'schema_fields':['object','entity'],'example_json':{'object':'0xPERMISSION_ADDRESS','entity':{'op':'swap','entity1':'0xUSER1','entity2':'0xUSER2'}},'reverse_explanation':'entity.op\x20manages\x20bulk\x20entity-permission\x20reassignments'}];export const SCHEMA_TO_SEMANTIC_RULES=[{'element_type':'field','type_name':'object','semantic_explanation':'Permission\x20object\x20address.\x20STRING=operate\x20existing;\x20null/omitted=create\x20new'},{'element_type':'field','type_name':'description','semantic_explanation':'Human-readable\x20description\x20of\x20this\x20Permission\x27s\x20purpose'},{'element_type':'field','type_name':'admin','semantic_explanation':'Admin\x20list\x20management.\x20Admin\x20can\x20modify\x20table/remark/entity/description\x20but\x20cannot\x20transfer\x20ownership'},{'element_type':'field','type_name':'table','semantic_explanation':'Permission\x20table\x20operations.\x20\x27by\x20index\x27\x20=\x20permission-centric\x20(one\x20perm,\x20many\x20entities);\x20\x27by\x20entity\x27\x20=\x20entity-centric\x20(one\x20entity,\x20many\x20perms)'},{'element_type':'field','type_name':'entity','semantic_explanation':'Bulk\x20entity\x20operations\x20(swap/replace/copy/del).\x20Affects\x20all\x20permission\x20indexes\x20of\x20affected\x20entities'},{'element_type':'field','type_name':'remark','semantic_explanation':'Documentation\x20for\x20permission\x20indexes.\x20Highly\x20recommended\x20for\x20custom\x20indexes\x20>=\x201000'},{'element_type':'field','type_name':'apply','semantic_explanation':'Bind\x20Permission\x20to\x20target\x20objects.\x20Signer\x20must\x20be\x20owner\x20of\x20those\x20target\x20objects'},{'element_type':'field','type_name':'builder','semantic_explanation':'Transfer\x20ownership.\x20IRREVERSIBLE.\x20Original\x20owner\x20loses\x20ALL\x20control'},{'element_type':'field','type_name':'um','semantic_explanation':'User\x20Manager\x20(Contact\x20object\x20address).\x20UM\x20≠\x20admin;\x20UM\x20is\x20for\x20contact\x20management'},{'element_type':'field','type_name':'owner_receive','semantic_explanation':'Unwrap\x20received\x20objects\x20and\x20send\x20to\x20owner'},{'element_type':'op','type_name':'add\x20perm\x20by\x20index','semantic_explanation':'Grant\x20a\x20permission\x20index\x20to\x20multiple\x20entities\x20(additive)'},{'element_type':'op','type_name':'set\x20perm\x20by\x20index','semantic_explanation':'REPLACE\x20the\x20entity\x20list\x20for\x20a\x20permission\x20index\x20(destructive)'},{'element_type':'op','type_name':'remove\x20perm\x20by\x20index','semantic_explanation':'Revoke\x20a\x20permission\x20index\x20from\x20multiple\x20entities'},{'element_type':'op','type_name':'add\x20perm\x20by\x20entity','semantic_explanation':'Grant\x20multiple\x20permission\x20indexes\x20to\x20one\x20entity\x20(additive)'},{'element_type':'op','type_name':'set\x20perm\x20by\x20entity','semantic_explanation':'REPLACE\x20all\x20permission\x20indexes\x20for\x20an\x20entity\x20(destructive)'},{'element_type':'op','type_name':'remove\x20perm\x20by\x20entity','semantic_explanation':'Revoke\x20multiple\x20permission\x20indexes\x20from\x20one\x20entity'},{'element_type':'op','type_name':'swap','semantic_explanation':'Exchange\x20ALL\x20permission\x20indexes\x20between\x20two\x20entities'},{'element_type':'op','type_name':'replace','semantic_explanation':'Move\x20all\x20permission\x20indexes\x20from\x20entity1\x20to\x20entity2;\x20entity1\x20loses\x20all\x20permissions'},{'element_type':'op','type_name':'copy','semantic_explanation':'Copy\x20all\x20permission\x20indexes\x20from\x20entity1\x20to\x20entity2\x20(additive);\x20entity1\x20retains\x20permissions'},{'element_type':'op','type_name':'del','semantic_explanation':'Delete\x20an\x20entity\x20and\x20all\x20its\x20permission\x20indexes'}];export const PERMISSION_CONSTRAINT_RULES=[{'id':'MC-P-01','category':'structural','rule':'Custom\x20permission\x20index\x20must\x20be\x20>=\x201000\x20(USER_DEFINED_PERM_INDEX_START)','applies_to':['table.index','remark.index']},{'id':'MC-P-02','category':'structural','rule':'Builtin\x20permission\x20indexes\x20(0-999)\x20must\x20match\x20their\x20host\x20object\x20type','applies_to':['table.index','apply']},{'id':'MC-P-03','category':'structural','rule':'Entity\x20count\x20<=\x20MAX_ENTITY_COUNT\x20(1000)','applies_to':['table.entity','entity.entity1','entity.entity2']},{'id':'MC-P-04','category':'structural','rule':'Per-entity\x20permission\x20count\x20<=\x20MAX_PERM_FOR_ENTITY\x20(1000)','applies_to':['table.index\x20(when\x20array)']},{'id':'MC-P-05','category':'structural','rule':'Admin\x20count\x20<=\x20MAX_ADMIN_COUNT\x20(500)','applies_to':['admin.addresses']},{'id':'MC-P-06','category':'authority','rule':'Only\x20owner\x20can\x20call\x20builder\x20(transfer)\x20and\x20um_set\x20(assert_owner)','applies_to':['builder','um']},{'id':'MC-P-07','category':'authority','rule':'Only\x20admin\x20can\x20modify\x20description/remark/table/entity/admin\x20(assert_admin)','applies_to':['description','remark','table','entity','admin']},{'id':'MC-P-08','category':'lifecycle','rule':'Ownership\x20transfer\x20is\x20irreversible;\x20new\x20owner\x20auto-becomes\x20admin','applies_to':['builder']},{'id':'MC-P-09','category':'semantic','rule':'UM\x20is\x20for\x20contact\x20management\x20only;\x20UM\x20≠\x20admin\x20(cannot\x20modify\x20permissions)','applies_to':['um']},{'id':'MC-P-10','category':'cross_object','rule':'apply\x20target\x20object\x20type\x20must\x20match\x20the\x20permission\x20indexes\x20used','applies_to':['apply','table.index']},{'id':'MC-P-11','category':'cross_object','rule':'Once\x20Permission\x20is\x20bound\x20to\x20Progress\x20(which\x20binds\x20Machine),\x20post-publish\x20permission\x20table\x20changes\x20have\x20limited\x20effect','applies_to':['apply\x20(Progress)']},{'id':'MC-P-12','category':'semantic','rule':'Custom\x20permission\x20indexes\x20(>=\x201000)\x20should\x20have\x20remark\x20for\x20maintainability','applies_to':['remark','table.index']}];export const PERMISSION_TRANSLATION_VERSION='1.0.0';export function matchSemanticPattern(a){const b=a['toLowerCase']();return SEMANTIC_TO_SCHEMA_RULES['filter'](c=>c['match_keywords']['some'](d=>b['includes'](d['toLowerCase']())));}export function explainPermissionCallData(a){const b=[];a['object']===null||a['object']===undefined?b['push']('Operation:\x20CREATE\x20new\x20Permission'):b['push']('Operation:\x20MODIFY\x20existing\x20Permission\x20at\x20'+a['object']);if(a['description'])b['push']('-\x20Set\x20description:\x20\x22'+a['description']+'\x22');a['admin']&&b['push']('-\x20Admin\x20'+a['admin']['op']+':\x20['+a['admin']['addresses']['join'](',\x20')+']');if(a['table']){const c=a['table'];if(typeof c['index']==='number'){const d=getBuiltinPermissionByIndex(c['index']),f=d?d['name']+'\x20('+d['description']+')':'custom\x20index\x20'+c['index'];b['push']('-\x20Table\x20'+c['op']+':\x20'+f);}}if(a['entity']){const g=a['entity'];if(g['op']==='del')b['push']('-\x20Entity\x20del:\x20remove\x20'+g['entity']+'\x20and\x20all\x20its\x20permissions');else g['entity1']&&g['entity2']&&b['push']('-\x20Entity\x20'+g['op']+':\x20'+g['entity1']+'\x20→\x20'+g['entity2']);}if(a['remark']){const h=a['remark'];if(h['op']==='set')b['push']('-\x20Remark\x20set:\x20index\x20'+h['index']+'\x20=\x20\x22'+h['remark']+'\x22');else{if(h['op']==='remove')b['push']('-\x20Remark\x20remove:\x20index\x20'+h['index']);else{if(h['op']==='clear')b['push']('-\x20Remark\x20clear:\x20all\x20indexes');}}}return a['apply']&&a['apply']['length']>0x0&&b['push']('-\x20Apply\x20to:\x20'+a['apply']['join'](',\x20')),a['builder']&&b['push']('-\x20⚠️\x20TRANSFER\x20ownership\x20to\x20'+a['builder']+'\x20(IRREVERSIBLE)'),a['um']!==undefined&&b['push'](a['um']===null?'-\x20UM:\x20revoke':'-\x20UM:\x20set\x20to\x20'+a['um']),b['join']('\x0a');}export function explainField(a){return SCHEMA_TO_SEMANTIC_RULES['find'](b=>b['element_type']==='field'&&b['type_name']===a);}export function explainOp(a){return SCHEMA_TO_SEMANTIC_RULES['find'](b=>b['element_type']==='op'&&b['type_name']===a);}export function getConstraintsByCategory(a){return PERMISSION_CONSTRAINT_RULES['filter'](b=>b['category']===a);}export function explainPermissionIndex(a){if(isBuiltinPermission(a)){const b=getBuiltinPermissionByIndex(a),c=findSceneByPermissionIndex(a);return(b?.['name']??'Unknown')+'\x20('+a+')\x20—\x20'+(b?.['description']??'')+'\x20[host:\x20'+(c?.['host_object']??'unknown')+']';}return'Custom\x20permission\x20('+a+')\x20—\x20must\x20be\x20documented\x20via\x20remark';}
@@ -1,29 +0,0 @@
1
- export declare const PERSONAL_CONFIRM_VERSION = "1.0.0";
2
- export type ConfirmSeverity = "block" | "warn" | "info";
3
- export interface PersonalConfirmItem {
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 PersonalOpCheckInput {
13
- information_entries?: Array<{
14
- name: string;
15
- value: unknown;
16
- }>;
17
- is_mark_destroy?: boolean;
18
- is_mark_transfer?: boolean;
19
- information_count?: number;
20
- singleton_enforced?: boolean;
21
- }
22
- export declare function preCheckPersonalOp(input: PersonalOpCheckInput): PersonalConfirmItem[];
23
- export declare function canProceedPersonalOp(input: PersonalOpCheckInput): {
24
- canProceed: boolean;
25
- blockers: PersonalConfirmItem[];
26
- warnings: PersonalConfirmItem[];
27
- info: PersonalConfirmItem[];
28
- };
29
- export declare function formatPersonalOpSummary(input: PersonalOpCheckInput): string;
@@ -1 +0,0 @@
1
- import{MAX_RECORD_COUNT_REGISTRAR}from'@wowok/wowok';export const PERSONAL_CONFIRM_VERSION='1.0.0';function detectSensitive(a){const b=[];for(const c of a){const d=typeof c['value']==='string'?c['value']:String(c['value']??'');if(/^\+?\d{10,15}$/['test'](d))b['push'](c['name']+'=phone-like');if(/[^\s@]+@[^\s@]+\.[^\s@]+/['test'](d))b['push'](c['name']+'=email-like');if(/^(0x)?[0-9a-fA-F]{64}$/['test'](d))b['push'](c['name']+'=private-key-like');if(/^([a-z]{3,8}\s){11,23}[a-z]{3,8}$/['test'](d['trim']()))b['push'](c['name']+'=mnemonic-like');if(/private[_-]?key|secret|mnemonic|seed/i['test'](c['name']))b['push'](c['name']+'=secret-named');}return b;}function checkSensitive(a){if(!a['information_entries']||a['information_entries']['length']===0x0)return{'id':'C-PERSONAL-01','severity':'info','title':'No\x20sensitive\x20information\x20written\x20on-chain','description':'On-chain\x20records\x20are\x20permanent\x20and\x20public.\x20Phone/email/private-key/mnemonic\x20must\x20never\x20be\x20stored.','passed':!![],'evidence':'no\x20information\x20entries'};const b=detectSensitive(a['information_entries']),c=b['length']===0x0;return{'id':'C-PERSONAL-01','severity':c?'info':'block','title':'Sensitive\x20information\x20detected\x20—\x20on-chain\x20data\x20is\x20permanent','description':'information\x20is\x20stored\x20as\x20on-chain\x20Records\x20with\x20no\x20delete.\x20Once\x20written,\x20phone/email/private-key/mnemonic\x20is\x20public\x20forever.','passed':c,'evidence':c?'no\x20sensitive\x20patterns':'sensitive\x20patterns:\x20'+b['join'](';\x20'),'fix_hint':'Use\x20the\x20\x27local\x27\x20tool\x20for\x20private\x20data;\x20re-confirm\x20before\x20writing\x20on-chain.'};}function checkSingleton(a){if(a['singleton_enforced']!==![])return{'id':'C-PERSONAL-02','severity':'info','title':'Singleton\x20invariant\x20enforced','description':'Each\x20user\x20has\x20exactly\x20one\x20Entity\x20record\x20+\x20one\x20Resource\x20mark\x20via\x20entity_register\x20idempotency.','passed':!![],'evidence':'singleton\x20enforced'};return{'id':'C-PERSONAL-02','severity':'warn','title':'Singleton\x20invariant\x20not\x20enforced\x20—\x20duplicate\x20identity\x20risk','description':'entity_register_with_resource_forced\x20can\x20create\x20a\x20second\x20Resource\x20mark,\x20invalidating\x20the\x20old\x20address.','passed':![],'evidence':'singleton_enforced=false','fix_hint':'Refuse\x20entity_register_with_resource_forced\x20unless\x20the\x20user\x20explicitly\x20opts\x20in.'};}function checkDestroy(a){if(!a['is_mark_destroy'])return{'id':'C-PERSONAL-03','severity':'info','title':'mark\x20destroy\x20is\x20irreversible','description':'Destroying\x20the\x20mark\x20Resource\x20permanently\x20removes\x20the\x20user\x27s\x20on-chain\x20identity\x20mark.','passed':!![],'evidence':'not\x20destroying'};return{'id':'C-PERSONAL-03','severity':'warn','title':'mark\x20destroy\x20is\x20irreversible\x20—\x20identity\x20mark\x20permanently\x20lost','description':'After\x20destroy,\x20the\x20user\x20has\x20no\x20on-chain\x20identity\x20mark\x20until\x20re-created,\x20breaking\x20downstream\x20services\x20keyed\x20on\x20the\x20old\x20Resource.','passed':![],'evidence':'is_mark_destroy=true','fix_hint':'Prefer\x20a\x20\x27replace\x27\x20alternative\x20that\x20swaps\x20the\x20Resource\x20without\x20losing\x20continuity.'};}function checkTransfer(a){if(!a['is_mark_transfer'])return{'id':'C-PERSONAL-04','severity':'info','title':'mark\x20transfer\x20detaches\x20source\x20address','description':'Transferring\x20the\x20mark\x20moves\x20the\x20Resource\x20to\x20a\x20new\x20address;\x20the\x20source\x20loses\x20the\x20binding.','passed':!![],'evidence':'not\x20transferring'};return{'id':'C-PERSONAL-04','severity':'warn','title':'mark\x20transfer\x20will\x20detach\x20the\x20mark\x20from\x20this\x20address','description':'Services\x20keyed\x20on\x20the\x20source\x20address\x20lose\x20the\x20binding;\x20no\x20forwarding\x20stub\x20is\x20left\x20behind.','passed':![],'evidence':'is_mark_transfer=true','fix_hint':'Warn\x20the\x20user\x20that\x20old-address\x20logins\x20will\x20break;\x20track\x20marks\x20by\x20Resource\x20address.'};}function checkRecordCount(a){if(a['information_count']===undefined)return{'id':'C-PERSONAL-05','severity':'info','title':'information_count\x20below\x20MAX_RECORD_COUNT_REGISTRAR\x20('+MAX_RECORD_COUNT_REGISTRAR+')','description':'Personal\x20inherits\x20Entity\x27s\x20record\x20cap.','passed':!![],'evidence':'not\x20provided'};const b=a['information_count']<MAX_RECORD_COUNT_REGISTRAR;return{'id':'C-PERSONAL-05','severity':b?'info':'warn','title':'information_count\x20below\x20MAX_RECORD_COUNT_REGISTRAR\x20('+MAX_RECORD_COUNT_REGISTRAR+')','description':'Entity\x27s\x20record\x20cap\x20is\x20MAX_RECORD_COUNT_REGISTRAR='+MAX_RECORD_COUNT_REGISTRAR+'.','passed':b,'evidence':'information_count='+a['information_count']+',\x20limit='+MAX_RECORD_COUNT_REGISTRAR,'fix_hint':'Self-limit\x20profile\x20data;\x20store\x20bulk\x20data\x20off-chain\x20via\x20Repository/Proof.'};}export function preCheckPersonalOp(a){return[checkSensitive(a),checkSingleton(a),checkDestroy(a),checkTransfer(a),checkRecordCount(a)];}export function canProceedPersonalOp(a){const b=preCheckPersonalOp(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 formatPersonalOpSummary(a){const {canProceed:b,blockers:c,warnings:d}=canProceedPersonalOp(a),e=[b?'✓\x20Personal\x20operation\x20pre-check\x20PASSED':'✗\x20Personal\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');}
@@ -1,37 +0,0 @@
1
- export declare const PERSONAL_TRANSLATION_VERSION = "1.0.0";
2
- export interface SemanticToPersonalSchemaRule {
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_PERSONAL_SCHEMA_RULES: SemanticToPersonalSchemaRule[];
12
- export interface PersonalFieldTranslation {
13
- field_name: string;
14
- value_type: string;
15
- semantic: string;
16
- format_example: string;
17
- validation_rules: string[];
18
- }
19
- export declare const PERSONAL_FIELD_TRANSLATIONS: PersonalFieldTranslation[];
20
- export interface PersonalConstraintRule {
21
- id: string;
22
- name: string;
23
- description: string;
24
- related_field: string;
25
- }
26
- export declare const PERSONAL_CONSTRAINT_RULES: PersonalConstraintRule[];
27
- export interface PersonalExplainInput {
28
- description?: string;
29
- information_count?: number;
30
- has_mark?: boolean;
31
- }
32
- export interface PersonalExplanation {
33
- summary: string;
34
- mark_status: string;
35
- warnings: string[];
36
- }
37
- export declare function explainPersonal(input: PersonalExplainInput): PersonalExplanation;
@@ -1 +0,0 @@
1
- export const PERSONAL_TRANSLATION_VERSION='1.0.0';export const SEMANTIC_TO_PERSONAL_SCHEMA_RULES=[{'id':'P-PERSONAL-01','pattern_name':'Register\x20identity','semantic_intent':'Create\x20a\x20user\x20identity\x20(Entity\x20record\x20+\x20Resource\x20mark)\x20via\x20entity_register.','match_keywords':['register','create\x20identity','open\x20account'],'required_fields':[],'optional_fields':['referrer'],'example':{'referrer':'0x...'}},{'id':'P-PERSONAL-02','pattern_name':'Add\x20information','semantic_intent':'Add\x20a\x20named\x20record\x20to\x20the\x20user\x27s\x20Entity\x20(never\x20store\x20sensitive\x20data).','match_keywords':['add\x20info','set\x20profile','add\x20record'],'required_fields':['name','typed_value'],'optional_fields':[],'example':{'name':'preferences','typed_value':'0x...'}}];export const PERSONAL_FIELD_TRANSLATIONS=[{'field_name':'information','value_type':'vector<Record>\x20(via\x20Entity)','semantic':'User\x20profile\x20records;\x20Record{name,\x20typed_value}.','format_example':'[{name,\x20typed_value}]','validation_rules':['never\x20store\x20phone/email/private-key','record\x20cap\x20via\x20Entity']},{'field_name':'mark','value_type':'address\x20(Resource)','semantic':'Identity\x20mark\x20—\x20a\x20Resource\x20holding\x20tags.','format_example':'0x...resource...','validation_rules':['singleton\x20per\x20user','transfer\x20detaches\x20source']},{'field_name':'referrer','value_type':'Option<address>','semantic':'Self-attested\x20referrer\x20(not\x20a\x20verified\x20trust\x20signal).','format_example':'0x...referrer...','validation_rules':['unverified\x20—\x20treat\x20as\x20hint']},{'field_name':'description','value_type':'string','semantic':'User\x20description\x20(Entity).','format_example':'merchant\x20in\x20Shenzhen','validation_rules':['common::DESCRIPTION']}];export const PERSONAL_CONSTRAINT_RULES=[{'id':'PERSONAL_C_01','name':'sensitive\x20data','description':'no\x20phone/email/private-key/mnemonic\x20on-chain.','related_field':'information'},{'id':'PERSONAL_C_02','name':'singleton','description':'one\x20Entity\x20record\x20+\x20one\x20Resource\x20mark\x20per\x20user.','related_field':'mark'},{'id':'PERSONAL_C_03','name':'referrer\x20unverified','description':'referrer\x20is\x20self-attested,\x20not\x20consent-verified.','related_field':'referrer'}];export function explainPersonal(a){const b=[],c=a['has_mark']?'has\x20identity\x20mark':'no\x20identity\x20mark';if(!a['has_mark'])b['push']('user\x20has\x20no\x20Resource\x20mark;\x20register\x20before\x20on-chain\x20identity\x20ops');return{'summary':'Personal\x20('+(a['description']??'no\x20description')+').\x20'+c+'.\x20'+(a['information_count']??'?')+'\x20information\x20records.','mark_status':c,'warnings':b};}
@@ -1,14 +0,0 @@
1
- export { PERMISSION_TYPES, getPermissionType, type PermissionScope, type PermissionTypeDef, } from "./permission-ledger.js";
2
- export type GameElementType = "player" | "strategy" | "payoff" | "utility" | "equilibrium" | "information" | "sequence" | "repetition" | "commitment" | "punishment" | "reward" | "reputation" | "signaling" | "screening" | "bargaining" | "auction" | "mechanism" | "constraint" | "uncertainty" | "cooperation";
3
- export interface GameElementDef {
4
- id: number;
5
- type: GameElementType;
6
- name: string;
7
- description: string;
8
- wowokApplication: string;
9
- onChainMechanism: string;
10
- }
11
- export declare const GAME_ELEMENTS: GameElementDef[];
12
- export declare function getGameElement(id: number): GameElementDef | undefined;
13
- export declare function getGameElementsByType(type: GameElementType): GameElementDef[];
14
- export declare const PROCESS_MODEL_VERSION = 1;
@@ -1 +0,0 @@
1
- export{PERMISSION_TYPES,getPermissionType}from'./permission-ledger.js';export const GAME_ELEMENTS=[{'id':0x1,'type':'player','name':'Merchant\x20vs\x20Customer','description':'The\x20basic\x20participants\x20of\x20the\x20game:\x20the\x20merchant\x20providing\x20the\x20service\x20and\x20the\x20customer\x20purchasing\x20the\x20service.','wowokApplication':'Service\x20creator\x20(merchant)\x20and\x20Order\x20creator\x20(customer).','onChainMechanism':'Service\x20+\x20Order\x20objects,\x20each\x20with\x20an\x20independent\x20on-chain\x20address.'},{'id':0x2,'type':'player','name':'Arbitrator','description':'Third-party\x20arbitrators\x20participate\x20in\x20the\x20dispute\x20resolution\x20game.','wowokApplication':'NamedOperator\x20of\x20the\x20Arb\x20object,\x20designated\x20by\x20the\x20Service.','onChainMechanism':'Arbitration\x20object\x20+\x20NamedOperator\x20permission.'},{'id':0x3,'type':'strategy','name':'Cooperation\x20vs\x20Deception','description':'The\x20merchant\x20can\x20choose\x20honest\x20fulfillment\x20(cooperation)\x20or\x20fraud\x20(deception).\x20The\x20customer\x20can\x20choose\x20to\x20trust\x20or\x20refuse.','wowokApplication':'Merchant\x20ships\x20vs\x20doesn\x27t\x20ship;\x20customer\x20pays\x20vs\x20refuses\x20to\x20pay.','onChainMechanism':'Progress\x20node\x20advancement\x20+\x20immutable\x20on-chain\x20state.'},{'id':0x4,'type':'payoff','name':'Fulfillment\x20payoff\x20vs\x20Fraud\x20payoff','description':'Honest\x20fulfillment\x20yields\x20sustained\x20income\x20+\x20reputation;\x20fraud\x20yields\x20one-time\x20income\x20but\x20loses\x20reputation\x20and\x20compensation\x20fund.','wowokApplication':'compensation_fund\x20as\x20economic\x20penalty\x20for\x20fraud;\x20repeat\x20business\x20as\x20long-term\x20payoff\x20for\x20cooperation.','onChainMechanism':'Service.compensation_fund\x20+\x20Treasury\x20locked\x20funds.'},{'id':0x5,'type':'utility','name':'Reputation\x20utility','description':'Merchant\x27s\x20total\x20utility\x20=\x20immediate\x20income\x20+\x20reputation-discounted\x20future\x20income\x20-\x20expected\x20penalty.','wowokApplication':'Merchants\x20with\x20high\x20reputation\x20scores\x20get\x20more\x20orders\x20(Demand\x20matching\x20priority).','onChainMechanism':'ReviewRepository\x20(on-chain\x20public\x20reviews)\x20+\x20Demand\x20matching\x20engine.'},{'id':0x6,'type':'equilibrium','name':'Nash\x20equilibrium:\x20mutual\x20cooperation','description':'When\x20penalties\x20are\x20large\x20enough\x20and\x20reputation\x20is\x20important\x20enough,\x20the\x20strategy\x20profile\x20of\x20mutual\x20cooperation\x20becomes\x20a\x20Nash\x20equilibrium.','wowokApplication':'compensation_fund\x20large\x20enough\x20+\x20immutable\x20on-chain\x20reputation\x20->\x20cooperation\x20becomes\x20the\x20optimal\x20strategy.','onChainMechanism':'Guard\x20verifies\x20compensation_fund\x20amount\x20+\x20ReviewRepository\x20public.'},{'id':0x7,'type':'information','name':'Incomplete\x20information','description':'Customers\x20don\x27t\x20fully\x20understand\x20the\x20merchant\x27s\x20service\x20quality;\x20merchants\x20don\x27t\x20fully\x20understand\x20the\x20customer\x27s\x20payment\x20capacity.','wowokApplication':'Service.description\x20+\x20Guard\x20verification\x20as\x20signals;\x20customer\x20wallet\x20balance\x20is\x20queryable\x20on-chain.','onChainMechanism':'Guard\x20+\x20Personal\x20object\x20+\x20on-chain\x20transaction\x20history.'},{'id':0x8,'type':'sequence','name':'Sequential\x20game','description':'Customer\x20places\x20order\x20and\x20pays\x20first,\x20merchant\x20fulfills\x20later\x20—\x20this\x20is\x20a\x20typical\x20sequential\x20game.','wowokApplication':'Order\x20creation\x20->\x20Progress\x20advancement\x20->\x20Acceptance/Arbitration.','onChainMechanism':'Machine\x20node\x20sequence\x20+\x20Progress\x20state\x20machine.'},{'id':0x9,'type':'repetition','name':'Repeated\x20game','description':'Merchants\x20and\x20customers\x20may\x20transact\x20multiple\x20times;\x20repeated\x20games\x20make\x20cooperation\x20strategies\x20superior.','wowokApplication':'Customer\x20repeat\x20purchases\x20+\x20Demand\x20matching\x20prioritizes\x20high-reputation\x20merchants.','onChainMechanism':'ReviewRepository\x20accumulates\x20reviews\x20+\x20Demand\x20matching\x20engine.'},{'id':0xa,'type':'commitment','name':'Compensation\x20fund\x20commitment','description':'Merchants\x20make\x20a\x20credible\x20commitment\x20by\x20locking\x20compensation_fund,\x20reducing\x20customers\x27\x20risk\x20perception.','wowokApplication':'Service.compensation_fund\x20locks\x20funds;\x20customers\x20can\x20claim\x20compensation\x20in\x20case\x20of\x20fraud.','onChainMechanism':'Treasury\x20object\x20+\x20Guard\x20verifies\x20amount\x20+\x20withdrawal\x20rules.'},{'id':0xb,'type':'punishment','name':'Compensation\x20fund\x20penalty','description':'When\x20a\x20merchant\x20commits\x20fraud,\x20the\x20compensation\x20fund\x20is\x20transferred\x20to\x20the\x20customer,\x20constituting\x20economic\x20punishment.','wowokApplication':'Arbitration\x20verdict\x20->\x20compensation_fund\x20withdrawal\x20->\x20customer\x20receives\x20compensation.','onChainMechanism':'Arbitration\x20verdict\x20+\x20Treasury\x20withdrawal\x20rules.'},{'id':0xc,'type':'reward','name':'Reward\x20marketing\x20incentive','description':'Merchants\x20issue\x20rewards\x20via\x20Reward\x20objects,\x20incentivizing\x20customer\x20behavior\x20(first\x20order,\x20referral,\x20loyalty).','wowokApplication':'Reward\x20object\x20+\x20Guard\x20verifies\x20claim\x20conditions\x20(e.g.,\x20completed\x20first\x20order).','onChainMechanism':'Reward\x20object\x20+\x20Guard\x20claim\x20conditions\x20+\x20Allocation\x20distribution.'},{'id':0xd,'type':'reputation','name':'On-chain\x20public\x20reputation','description':'All\x20transactions\x20and\x20reviews\x20are\x20recorded\x20on-chain,\x20forming\x20an\x20immutable\x20reputation\x20system.','wowokApplication':'ReviewRepository\x20stores\x20like/dislike/review\x20tags,\x20queryable\x20on-chain.','onChainMechanism':'Repository\x20object\x20+\x20Guard\x20anti-spam\x20+\x20address-keyed\x20review\x20records.'},{'id':0xe,'type':'signaling','name':'Quality\x20signal','description':'Merchants\x20send\x20quality\x20signals\x20via\x20Guard\x20verification,\x20compensation_fund\x20amount,\x20and\x20Machine\x20transparency.','wowokApplication':'buy_guard\x20verification\x20->\x20signal;\x20compensation_fund\x20amount\x20->\x20signal;\x20Machine\x20public\x20->\x20signal.','onChainMechanism':'Guard\x20+\x20Treasury\x20+\x20Machine\x20object\x27s\x20on-chain\x20public\x20data.'},{'id':0xf,'type':'screening','name':'Customer\x20screening','description':'Merchants\x20screen\x20customers\x20via\x20Guard\x20(e.g.,\x20verify\x20identity,\x20credit\x20score,\x20wallet\x20balance).','wowokApplication':'Service.buy_guard\x20verifies\x20customer\x20eligibility.','onChainMechanism':'Guard\x20object\x20+\x20gen_passport\x20verifies\x20credentials.'},{'id':0x10,'type':'bargaining','name':'Price\x20bargaining','description':'Customers\x20and\x20merchants\x20can\x20bargain\x20via\x20Messenger;\x20the\x20final\x20price\x20is\x20submitted\x20via\x20Demand.','wowokApplication':'Messenger\x20encrypted\x20communication\x20->\x20Demand\x20submits\x20demand\x20with\x20reward.','onChainMechanism':'Contact\x20+\x20Messenger\x20+\x20Demand\x20objects.'},{'id':0x11,'type':'auction','name':'Demand\x20bidding','description':'Multiple\x20service\x20providers\x20can\x20compete\x20for\x20the\x20same\x20Demand,\x20forming\x20a\x20bidding\x20mechanism.','wowokApplication':'Demand\x20publishes\x20demand\x20->\x20multiple\x20Services\x20submit\x20proposals\x20->\x20customer\x20chooses.','onChainMechanism':'Demand\x20object\x20+\x20order\x20creation\x20+\x20Progress\x20advancement.'},{'id':0x12,'type':'mechanism','name':'Mechanism\x20design','description':'WoWok\x27s\x20overall\x20architecture\x20is\x20mechanism\x20design:\x20incentivizing\x20cooperation\x20and\x20punishing\x20fraud\x20via\x20on-chain\x20rules.','wowokApplication':'compensation_fund\x20+\x20Arbitration\x20+\x20ReviewRepository\x20combine\x20to\x20form\x20a\x20trust\x20mechanism.','onChainMechanism':'Move\x20contract-level\x20object\x20composition\x20+\x20Guard\x20verification\x20+\x20immutability.'},{'id':0x13,'type':'constraint','name':'Fund\x20constraint','description':'compensation_fund\x20and\x20Reward\x20fund\x20locks\x20constitute\x20economic\x20constraints,\x20limiting\x20the\x20merchant\x27s\x20incentive\x20to\x20commit\x20fraud.','wowokApplication':'Fund\x20lock\x20>\x20fraud\x20payoff\x20->\x20cooperation\x20is\x20the\x20rational\x20choice.','onChainMechanism':'Treasury\x20+\x20Allocation\x20fund\x20lock.'},{'id':0x14,'type':'cooperation','name':'Supply\x20chain\x20collaboration','description':'Multiple\x20merchants\x20combine\x20via\x20Machine\x20to\x20form\x20a\x20supply\x20chain,\x20cooperating\x20to\x20fulfill\x20complex\x20orders\x20(sub-orders).','wowokApplication':'Service\x27s\x20order_allocators\x20supports\x20multi-supplier\x20allocation;\x20Machine\x20node\x20forwards\x20combine.','onChainMechanism':'Allocation\x20+\x20Machine\x20Forward\x20+\x20Progress\x20cross-object\x20composition.'}];const GAME_ELEMENT_INDEX=new Map(GAME_ELEMENTS['map'](a=>[a['id'],a]));export function getGameElement(a){return GAME_ELEMENT_INDEX['get'](a);}export function getGameElementsByType(a){return GAME_ELEMENTS['filter'](b=>b['type']===a);}export const PROCESS_MODEL_VERSION=0x1;