@wowok/agent-mcp 2.7.1 → 2.7.2

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 (375) hide show
  1. package/dist/config/index.js +1 -1
  2. package/dist/config/runtime.js +1 -238
  3. package/dist/customer/customer-advice.js +1 -130
  4. package/dist/customer/index.js +1 -11
  5. package/dist/customer/industry-risks.js +1 -438
  6. package/dist/customer/info-puzzle.js +1 -681
  7. package/dist/customer/order-monitor.js +1 -328
  8. package/dist/customer/order-strategy.js +1 -373
  9. package/dist/customer/post-purchase.js +1 -351
  10. package/dist/customer/preorder-compare.js +1 -34
  11. package/dist/customer/reminder-system.js +1 -316
  12. package/dist/customer/risk-assessment.js +1 -397
  13. package/dist/customer/types.js +1 -13
  14. package/dist/customer/user-preferences.js +1 -460
  15. package/dist/evaluation/arbitration-game.d.ts +9 -2
  16. package/dist/evaluation/arbitration-game.js +1 -48
  17. package/dist/evaluation/builtins/demand-match.js +1 -153
  18. package/dist/evaluation/builtins/index.js +1 -10
  19. package/dist/evaluation/builtins/service-risk.js +1 -55
  20. package/dist/evaluation/capability.js +1 -13
  21. package/dist/evaluation/composer.js +1 -40
  22. package/dist/evaluation/engine.js +1 -175
  23. package/dist/evaluation/extract.js +1 -115
  24. package/dist/evaluation/game-strategy.d.ts +27 -0
  25. package/dist/evaluation/game-strategy.js +1 -0
  26. package/dist/evaluation/gap.js +1 -100
  27. package/dist/evaluation/index.d.ts +1 -0
  28. package/dist/evaluation/index.js +1 -11
  29. package/dist/evaluation/node-game.d.ts +31 -3
  30. package/dist/evaluation/node-game.js +1 -57
  31. package/dist/evaluation/region.js +1 -36
  32. package/dist/evaluation/types.d.ts +1 -0
  33. package/dist/evaluation/types.js +1 -1
  34. package/dist/evaluation/user-injection.js +1 -27
  35. package/dist/experience/experience-reuse.js +1 -103
  36. package/dist/experience/index.js +1 -5
  37. package/dist/experience/intent-distill.js +1 -83
  38. package/dist/experience/realtime-feedback.js +1 -94
  39. package/dist/experience/types.js +1 -1
  40. package/dist/experience/user-profile.js +1 -171
  41. package/dist/extensions/business-modules.js +1 -287
  42. package/dist/extensions/capability-manifest.js +1 -781
  43. package/dist/extensions/constraint-registry.js +1 -198
  44. package/dist/extensions/index.js +1 -6
  45. package/dist/extensions/metric-registry.js +1 -257
  46. package/dist/extensions/mode-evaluator.js +1 -170
  47. package/dist/extensions/modes.js +1 -499
  48. package/dist/extensions/registry.js +1 -717
  49. package/dist/extensions/types.js +1 -1
  50. package/dist/harness/auto-escalation.js +1 -68
  51. package/dist/harness/checkpoint.js +1 -129
  52. package/dist/harness/index.js +1 -78
  53. package/dist/harness/plan.js +1 -315
  54. package/dist/harness/recover.js +1 -139
  55. package/dist/harness/types.js +1 -1
  56. package/dist/harness/verify.js +1 -237
  57. package/dist/index.js +1 -273
  58. package/dist/intent/enrich.js +1 -67
  59. package/dist/intent/index.js +1 -60
  60. package/dist/intent/matcher.js +1 -81
  61. package/dist/intent/store.js +1 -55
  62. package/dist/intent/types.js +1 -10
  63. package/dist/knowledge/acquisition-flywheel.js +1 -192
  64. package/dist/knowledge/allocation-confirm.js +1 -534
  65. package/dist/knowledge/allocation-context.js +1 -249
  66. package/dist/knowledge/allocation-ledger.js +1 -463
  67. package/dist/knowledge/allocation-puzzle.js +1 -298
  68. package/dist/knowledge/allocation-risk.js +1 -568
  69. package/dist/knowledge/allocation-templates.js +1 -970
  70. package/dist/knowledge/allocation-translation.js +1 -585
  71. package/dist/knowledge/arb-risk.js +1 -210
  72. package/dist/knowledge/arbitration-confirm.js +1 -559
  73. package/dist/knowledge/arbitration-context.js +1 -505
  74. package/dist/knowledge/arbitration-ledger.js +1 -521
  75. package/dist/knowledge/arbitration-puzzle.js +1 -304
  76. package/dist/knowledge/arbitration-risk.js +1 -423
  77. package/dist/knowledge/arbitration-templates.js +1 -276
  78. package/dist/knowledge/arbitration-translation.js +1 -487
  79. package/dist/knowledge/arbitration-trust.js +1 -117
  80. package/dist/knowledge/audit-rules.js +1 -141
  81. package/dist/knowledge/bridge-risk.js +1 -263
  82. package/dist/knowledge/contact-risk.js +1 -200
  83. package/dist/knowledge/contact-templates.js +1 -60
  84. package/dist/knowledge/demand-confirm.js +1 -206
  85. package/dist/knowledge/demand-matching.js +1 -132
  86. package/dist/knowledge/demand-risk.js +1 -240
  87. package/dist/knowledge/demand-translation.js +1 -354
  88. package/dist/knowledge/deployment-scanner.js +1 -823
  89. package/dist/knowledge/dynamic-pricing.js +1 -87
  90. package/dist/knowledge/examples-scanner-cli.js +1 -26
  91. package/dist/knowledge/examples-scanner.js +1 -843
  92. package/dist/knowledge/flywheel-loop.js +1 -404
  93. package/dist/knowledge/fund-layer.js +1 -973
  94. package/dist/knowledge/glossary.js +1 -211
  95. package/dist/knowledge/guard-confirm.js +1 -406
  96. package/dist/knowledge/guard-context.js +1 -287
  97. package/dist/knowledge/guard-design-patterns.js +1 -360
  98. package/dist/knowledge/guard-ledger.js +1 -260
  99. package/dist/knowledge/guard-lint.js +1 -670
  100. package/dist/knowledge/guard-migration.js +1 -228
  101. package/dist/knowledge/guard-puzzle.js +1 -805
  102. package/dist/knowledge/guard-render.js +1 -700
  103. package/dist/knowledge/guard-risk.js +1 -1879
  104. package/dist/knowledge/guard-submission-prompt.js +1 -171
  105. package/dist/knowledge/guard-templates.js +1 -1105
  106. package/dist/knowledge/guard-translation.js +1 -1119
  107. package/dist/knowledge/index.js +1 -436
  108. package/dist/knowledge/industry-evolution.js +1 -323
  109. package/dist/knowledge/industry-generalizer.js +1 -381
  110. package/dist/knowledge/industry-registry.js +1 -174
  111. package/dist/knowledge/intent-metrics.d.ts +4 -3
  112. package/dist/knowledge/intent-metrics.js +1 -566
  113. package/dist/knowledge/machine-confirm.js +1 -559
  114. package/dist/knowledge/machine-context.js +1 -833
  115. package/dist/knowledge/machine-ledger.js +1 -338
  116. package/dist/knowledge/machine-puzzle.js +1 -494
  117. package/dist/knowledge/machine-render.js +1 -565
  118. package/dist/knowledge/machine-risk.js +1 -669
  119. package/dist/knowledge/machine-templates.js +1 -1597
  120. package/dist/knowledge/machine-topology.js +1 -234
  121. package/dist/knowledge/machine-translation.js +1 -513
  122. package/dist/knowledge/mcp-schema-audit-cli.js +1 -45
  123. package/dist/knowledge/mcp-schema-audit.js +1 -777
  124. package/dist/knowledge/onchain-constants.js +1 -35
  125. package/dist/knowledge/order-confirm.js +1 -573
  126. package/dist/knowledge/order-context.js +1 -390
  127. package/dist/knowledge/order-ledger.js +1 -341
  128. package/dist/knowledge/order-puzzle.js +1 -255
  129. package/dist/knowledge/order-risk.js +1 -653
  130. package/dist/knowledge/order-templates.js +1 -368
  131. package/dist/knowledge/order-translation.js +1 -550
  132. package/dist/knowledge/overrides-loader.js +1 -65
  133. package/dist/knowledge/passport-confirm.js +1 -531
  134. package/dist/knowledge/passport-context.js +1 -306
  135. package/dist/knowledge/passport-ledger.js +1 -282
  136. package/dist/knowledge/passport-puzzle.js +1 -333
  137. package/dist/knowledge/passport-risk.js +1 -450
  138. package/dist/knowledge/passport-templates.js +1 -568
  139. package/dist/knowledge/passport-translation.js +1 -516
  140. package/dist/knowledge/payment-risk.js +1 -249
  141. package/dist/knowledge/permission-confirm.js +1 -426
  142. package/dist/knowledge/permission-context.js +1 -224
  143. package/dist/knowledge/permission-ledger.js +1 -403
  144. package/dist/knowledge/permission-puzzle.js +1 -173
  145. package/dist/knowledge/permission-risk.js +1 -411
  146. package/dist/knowledge/permission-templates.js +1 -234
  147. package/dist/knowledge/permission-translation.js +1 -350
  148. package/dist/knowledge/personal-risk.js +1 -212
  149. package/dist/knowledge/process-model.js +1 -160
  150. package/dist/knowledge/progress-confirm.js +1 -456
  151. package/dist/knowledge/progress-context.js +1 -452
  152. package/dist/knowledge/progress-ledger.js +1 -330
  153. package/dist/knowledge/progress-puzzle.js +1 -219
  154. package/dist/knowledge/progress-risk.js +1 -461
  155. package/dist/knowledge/progress-templates.js +1 -228
  156. package/dist/knowledge/progress-translation.js +1 -405
  157. package/dist/knowledge/proof-confirm.js +1 -187
  158. package/dist/knowledge/proof-risk.js +1 -207
  159. package/dist/knowledge/proof-translation.js +1 -283
  160. package/dist/knowledge/registrar-risk.js +1 -217
  161. package/dist/knowledge/repository-confirm.js +1 -286
  162. package/dist/knowledge/repository-risk.js +1 -373
  163. package/dist/knowledge/repository-translation.js +1 -445
  164. package/dist/knowledge/reputation-rules.js +1 -99
  165. package/dist/knowledge/resource-risk.js +1 -157
  166. package/dist/knowledge/reward-confirm.js +1 -526
  167. package/dist/knowledge/reward-context.js +1 -504
  168. package/dist/knowledge/reward-ledger.js +1 -502
  169. package/dist/knowledge/reward-puzzle.js +1 -300
  170. package/dist/knowledge/reward-risk.js +1 -627
  171. package/dist/knowledge/reward-templates.js +1 -197
  172. package/dist/knowledge/reward-translation.js +1 -501
  173. package/dist/knowledge/safety-rules.js +1 -404
  174. package/dist/knowledge/scenario-modes.js +1 -321
  175. package/dist/knowledge/service-confirm.js +1 -807
  176. package/dist/knowledge/service-context.js +1 -403
  177. package/dist/knowledge/service-ledger.js +1 -609
  178. package/dist/knowledge/service-puzzle.js +1 -236
  179. package/dist/knowledge/service-risk.js +1 -651
  180. package/dist/knowledge/service-templates.js +1 -456
  181. package/dist/knowledge/service-translation.js +1 -622
  182. package/dist/knowledge/template-registry.js +1 -353
  183. package/dist/knowledge/tool-constraints.js +1 -195
  184. package/dist/knowledge/tools-reference.js +1 -178
  185. package/dist/knowledge/treasury-confirm.js +1 -512
  186. package/dist/knowledge/treasury-context.js +1 -363
  187. package/dist/knowledge/treasury-ledger.js +1 -300
  188. package/dist/knowledge/treasury-puzzle.js +1 -216
  189. package/dist/knowledge/treasury-risk.js +1 -440
  190. package/dist/knowledge/treasury-templates.js +1 -358
  191. package/dist/knowledge/treasury-translation.js +1 -498
  192. package/dist/knowledge/trust-metrics.js +1 -198
  193. package/dist/knowledge/util-risk.js +1 -135
  194. package/dist/loop-engineering/aggregate.js +1 -132
  195. package/dist/loop-engineering/context-collect.js +1 -83
  196. package/dist/loop-engineering/diagnose.js +1 -273
  197. package/dist/loop-engineering/improve.js +1 -405
  198. package/dist/loop-engineering/index.js +1 -4
  199. package/dist/loop-engineering/pipeline.js +1 -56
  200. package/dist/mode-market/index.js +1 -3
  201. package/dist/mode-market/registry.js +1 -124
  202. package/dist/mode-market/review.js +1 -214
  203. package/dist/mode-market/submission.js +1 -85
  204. package/dist/participation/collaborator-interest.d.ts +23 -0
  205. package/dist/participation/collaborator-interest.js +1 -0
  206. package/dist/participation/customer-interest.d.ts +25 -0
  207. package/dist/participation/customer-interest.js +1 -0
  208. package/dist/participation/merchant-interest.js +1 -100
  209. package/dist/participation/radar-core.d.ts +13 -3
  210. package/dist/participation/radar-core.js +1 -269
  211. package/dist/participation/supplier-interest.d.ts +25 -0
  212. package/dist/participation/supplier-interest.js +1 -0
  213. package/dist/persona/analyzer.js +1 -66
  214. package/dist/persona/bridge.js +1 -86
  215. package/dist/persona/defaults.js +1 -195
  216. package/dist/persona/experience-bridge.js +1 -23
  217. package/dist/persona/index.js +1 -71
  218. package/dist/persona/model.js +1 -111
  219. package/dist/persona/store.js +1 -62
  220. package/dist/persona/types.d.ts +3 -1
  221. package/dist/persona/types.js +1 -5
  222. package/dist/project/business-puzzle.js +1 -383
  223. package/dist/project/context-assembly.js +1 -254
  224. package/dist/project/deployment-bridge.js +1 -120
  225. package/dist/project/deployment-doc.js +1 -1126
  226. package/dist/project/edit-planner.js +1 -1342
  227. package/dist/project/evaluation.js +1 -2011
  228. package/dist/project/game-theory.js +1 -177
  229. package/dist/project/graph-builder.js +1 -656
  230. package/dist/project/graph.js +1 -340
  231. package/dist/project/handlers.js +1 -1784
  232. package/dist/project/index.d.ts +1 -0
  233. package/dist/project/index.js +1 -301
  234. package/dist/project/intent-analyzer.js +1 -149
  235. package/dist/project/machine-nodes.js +1 -36
  236. package/dist/project/merchant-guide.js +1 -264
  237. package/dist/project/migration.js +1 -125
  238. package/dist/project/mode-actions.js +1 -309
  239. package/dist/project/namespace.js +1 -206
  240. package/dist/project/participation-radar.js +1 -428
  241. package/dist/project/pipeline-actions.js +1 -109
  242. package/dist/project/project-store.js +1 -422
  243. package/dist/project/query.js +1 -153
  244. package/dist/project/reverse-mapping.d.ts +34 -0
  245. package/dist/project/reverse-mapping.js +1 -0
  246. package/dist/project/risk-aggregator.js +1 -295
  247. package/dist/project/rollback-policy.js +1 -290
  248. package/dist/project/semantic-assembler.js +1 -345
  249. package/dist/project/semantic-graph.js +1 -292
  250. package/dist/project/stage-gate.js +1 -369
  251. package/dist/project/substep-trace.js +1 -332
  252. package/dist/project/task-tracker.js +1 -78
  253. package/dist/role/derivation.d.ts +18 -0
  254. package/dist/role/derivation.js +1 -0
  255. package/dist/role/index.d.ts +5 -0
  256. package/dist/role/index.js +1 -0
  257. package/dist/role/model.d.ts +8 -0
  258. package/dist/role/model.js +1 -0
  259. package/dist/role/resolution.d.ts +11 -0
  260. package/dist/role/resolution.js +1 -0
  261. package/dist/role/types.d.ts +11 -0
  262. package/dist/role/types.js +1 -0
  263. package/dist/rules.js +1 -52
  264. package/dist/safety/confirm-gate.js +1 -88
  265. package/dist/safety/index.js +1 -3
  266. package/dist/safety/preview.js +1 -52
  267. package/dist/schema/call/allocation.js +1 -34
  268. package/dist/schema/call/arbitration.js +1 -113
  269. package/dist/schema/call/base.d.ts +15 -15
  270. package/dist/schema/call/base.js +1 -370
  271. package/dist/schema/call/bridge-handler.js +1 -265
  272. package/dist/schema/call/bridge.d.ts +7 -7
  273. package/dist/schema/call/bridge.js +1 -458
  274. package/dist/schema/call/contact.js +1 -37
  275. package/dist/schema/call/demand.js +1 -47
  276. package/dist/schema/call/guard.js +1 -161
  277. package/dist/schema/call/handler.js +1 -322
  278. package/dist/schema/call/index.js +1 -20
  279. package/dist/schema/call/machine.js +1 -193
  280. package/dist/schema/call/order.js +1 -35
  281. package/dist/schema/call/payment.js +1 -37
  282. package/dist/schema/call/permission-handler.js +1 -54
  283. package/dist/schema/call/permission.js +1 -105
  284. package/dist/schema/call/personal.js +1 -78
  285. package/dist/schema/call/progress.js +1 -47
  286. package/dist/schema/call/proof.js +1 -33
  287. package/dist/schema/call/repository.js +1 -77
  288. package/dist/schema/call/reward.js +1 -30
  289. package/dist/schema/call/semantic.js +1 -1679
  290. package/dist/schema/call/service.js +1 -184
  291. package/dist/schema/call/treasury.js +1 -71
  292. package/dist/schema/common/index.js +1 -407
  293. package/dist/schema/config/index.js +1 -68
  294. package/dist/schema/evaluation/index.d.ts +213 -16
  295. package/dist/schema/evaluation/index.js +1 -356
  296. package/dist/schema/index.js +1 -17
  297. package/dist/schema/intent-radar/index.d.ts +13 -13
  298. package/dist/schema/intent-radar/index.js +1 -89
  299. package/dist/schema/local/index.d.ts +21 -21
  300. package/dist/schema/local/index.js +1 -927
  301. package/dist/schema/local/wip.js +1 -187
  302. package/dist/schema/messenger/index.d.ts +7 -7
  303. package/dist/schema/messenger/index.js +1 -475
  304. package/dist/schema/operations.d.ts +7 -7
  305. package/dist/schema/operations.js +1 -520
  306. package/dist/schema/persona/index.d.ts +54 -54
  307. package/dist/schema/persona/index.js +1 -148
  308. package/dist/schema/project/index.d.ts +94 -48
  309. package/dist/schema/project/index.js +1 -2057
  310. package/dist/schema/query/index.d.ts +423 -7
  311. package/dist/schema/query/index.js +1 -1646
  312. package/dist/schema/schema-query/index.js +1 -104
  313. package/dist/schema/schema-version.js +1 -76
  314. package/dist/schema/sync-layer4.js +1 -286
  315. package/dist/schema/task-status.js +1 -36
  316. package/dist/schema/trust/index.js +1 -314
  317. package/dist/schema/utils/guard-parser.js +1 -419
  318. package/dist/schema/utils/guard-query-utils.js +1 -46
  319. package/dist/schema/utils/node-parser.js +1 -369
  320. package/dist/schema/utils/object-type-utils.js +1 -35
  321. package/dist/schema/utils/permission-index-utils.js +1 -7
  322. package/dist/schema/utils/permission-machine-check.js +1 -121
  323. package/dist/schema/utils/skills-recommendation.js +1 -77
  324. package/dist/schema-query/index.js +1 -810
  325. package/dist/schemas/account_operation.output.json +5 -2
  326. package/dist/schemas/bridge_operation.output.json +5 -2
  327. package/dist/schemas/evaluation_operation.output.json +112 -7
  328. package/dist/schemas/evaluation_operation.schema.json +93 -6
  329. package/dist/schemas/index.json +1 -1
  330. package/dist/schemas/intent_radar.output.json +4 -1
  331. package/dist/schemas/intent_radar.schema.json +4 -1
  332. package/dist/schemas/local_info_operation.output.json +5 -2
  333. package/dist/schemas/local_mark_operation.output.json +5 -2
  334. package/dist/schemas/messenger_operation.output.json +5 -2
  335. package/dist/schemas/onchain_events.output.json +5 -2
  336. package/dist/schemas/onchain_operations.output.json +5 -2
  337. package/dist/schemas/onchain_operations.schema.json +4 -4
  338. package/dist/schemas/onchain_operations_allocation.schema.json +1 -1
  339. package/dist/schemas/onchain_operations_machine.schema.json +2 -2
  340. package/dist/schemas/onchain_operations_service.schema.json +1 -1
  341. package/dist/schemas/onchain_table_data.output.json +6 -3
  342. package/dist/schemas/persona_operation.output.json +4 -1
  343. package/dist/schemas/persona_operation.schema.json +4 -1
  344. package/dist/schemas/project_operation.output.json +28 -8
  345. package/dist/schemas/query_toolkit.output.json +8 -5
  346. package/dist/schemas/wowok_buildin_info.output.json +132 -0
  347. package/dist/schemas/wowok_buildin_info.schema.json +14 -0
  348. package/dist/telemetry/index.js +1 -112
  349. package/dist/telemetry/redact.js +1 -23
  350. package/dist/telemetry/storage.js +1 -80
  351. package/dist/tools/handlers/bridge.js +1 -1
  352. package/dist/tools/handlers/config.js +1 -74
  353. package/dist/tools/handlers/evaluation.js +1 -123
  354. package/dist/tools/handlers/file-export.js +1 -90
  355. package/dist/tools/handlers/intent-radar.js +1 -76
  356. package/dist/tools/handlers/local.js +1 -53
  357. package/dist/tools/handlers/messenger.js +1 -188
  358. package/dist/tools/handlers/onchain.js +1 -1180
  359. package/dist/tools/handlers/persona.js +1 -89
  360. package/dist/tools/handlers/project.js +1 -211
  361. package/dist/tools/handlers/query.js +1 -434
  362. package/dist/tools/handlers/schema-query.js +1 -176
  363. package/dist/tools/handlers/task-status.js +1 -26
  364. package/dist/tools/handlers/trust.js +1 -380
  365. package/dist/tools/handlers/wip.js +1 -90
  366. package/dist/tools/index.js +1 -1382
  367. package/dist/tools/retry.js +1 -85
  368. package/dist/tools/rules-hook.js +1 -23
  369. package/dist/tools/shared.js +1 -130
  370. package/dist/tools/types.js +1 -1
  371. package/dist/tools/upgrade-check.d.ts +19 -0
  372. package/dist/tools/upgrade-check.js +1 -0
  373. package/dist/tools/wip-deploy-assist.js +1 -306
  374. package/dist/tools/wrap.js +1 -500
  375. package/package.json +4 -2
@@ -1,498 +1 @@
1
- import { isBuiltinTreasuryPermission, getBuiltinPermissionByIndex, findSceneByPermissionIndex, } from "./treasury-ledger.js";
2
- export const SEMANTIC_TO_SCHEMA_RULES = [
3
- {
4
- id: "T-T-01",
5
- pattern_name: "Create new Treasury",
6
- semantic_intent: "Create a new Treasury with a Coin type T and associated Permission",
7
- match_keywords: ["create", "new"],
8
- schema_fields: ["object (TypeNamedObjectWithPermission)", "description"],
9
- example_json: {
10
- object: {
11
- name: "myteam_treasury",
12
- type_parameter: "0x2::wow::WOW",
13
- permission: {
14
- name: "myteam_treasury_permission",
15
- description: "Permission for myteam treasury",
16
- },
17
- },
18
- description: "Team treasury for project X funding",
19
- },
20
- reverse_explanation: "object must be in OBJECT format (not STRING) for creation; type_parameter is the Coin type T; permission can be new or existing",
21
- },
22
- {
23
- id: "T-T-02",
24
- pattern_name: "Internal deposit (Permission path)",
25
- semantic_intent: "Deposit funds to Treasury via Permission authorization",
26
- match_keywords: ["deposit"],
27
- schema_fields: ["object (string)", "deposit.coin", "deposit.payment_info"],
28
- example_json: {
29
- object: "myteam_treasury",
30
- deposit: {
31
- coin: { balance: "1000000000" },
32
- payment_info: { remark: "Q3 budget allocation", index: 0 },
33
- },
34
- },
35
- reverse_explanation: "deposit.by_external_deposit_guard omitted → Permission path (TREASURY_DEPOSIT=252); coin can be {balance} or {coin_object}",
36
- },
37
- {
38
- id: "T-T-03",
39
- pattern_name: "Internal withdraw (Permission path, fixed amount)",
40
- semantic_intent: "Withdraw fixed amount from Treasury via Permission authorization",
41
- match_keywords: ["withdraw"],
42
- schema_fields: ["object (string)", "withdraw.amount.fixed", "withdraw.recipient", "withdraw.payment_info"],
43
- example_json: {
44
- object: "myteam_treasury",
45
- withdraw: {
46
- amount: { fixed: "500000000" },
47
- recipient: "0xRECIPIENT",
48
- payment_info: { remark: "Vendor payment", index: 1 },
49
- },
50
- },
51
- reverse_explanation: "withdraw.amount.fixed → Permission path (TREASURY_WITHDRAW=254); amount is fixed u64; irreversible",
52
- },
53
- {
54
- id: "T-T-04",
55
- pattern_name: "External deposit (Guard + Passport path)",
56
- semantic_intent: "External user deposits via preset Guard verification (no Permission needed)",
57
- match_keywords: ["external deposit", "guard deposit"],
58
- schema_fields: ["object (string)", "deposit.coin", "deposit.by_external_deposit_guard", "deposit.payment_info", "submission (Passport)"],
59
- example_json: {
60
- object: "myteam_treasury",
61
- deposit: {
62
- coin: { balance: "200000000" },
63
- by_external_deposit_guard: "deposit_guard_v1",
64
- payment_info: { remark: "External deposit via guard", index: 2 },
65
- },
66
- },
67
- reverse_explanation: "deposit.by_external_deposit_guard present → Guard path (NO Permission check); Passport required via submission field; amount may split if coin > guard-specified",
68
- },
69
- {
70
- id: "T-T-05",
71
- pattern_name: "External withdraw (Guard + Passport path, amount from Guard)",
72
- semantic_intent: "External user withdraws via preset Guard verification; amount determined by Guard table identifier",
73
- match_keywords: ["external withdraw", "guard withdraw"],
74
- schema_fields: ["object (string)", "withdraw.amount.by_external_withdraw_guard", "withdraw.recipient", "withdraw.payment_info", "submission (Passport)"],
75
- example_json: {
76
- object: "myteam_treasury",
77
- withdraw: {
78
- amount: { by_external_withdraw_guard: "withdraw_guard_v1" },
79
- recipient: "0xRECIPIENT",
80
- payment_info: { remark: "External withdraw via guard", index: 3 },
81
- },
82
- },
83
- reverse_explanation: "withdraw.amount.by_external_withdraw_guard → Guard path (NO Permission check); amount comes from Guard table identifier (u8, required); irreversible",
84
- },
85
- {
86
- id: "T-T-06",
87
- pattern_name: "Manage external deposit/withdraw Guard (add/set/remove/clear)",
88
- semantic_intent: "Add, set, remove, or clear external_deposit_guard / external_withdraw_guard lists",
89
- match_keywords: ["guard add", "guard set", "guard remove", "guard clear"],
90
- schema_fields: ["object (string)", "external_deposit_guard | external_withdraw_guard"],
91
- example_json: {
92
- object: "myteam_treasury",
93
- external_deposit_guard: {
94
- op: "add",
95
- guards: [
96
- { guard: "deposit_guard_v1", identifier: 2, store_from_id: null },
97
- ],
98
- },
99
- },
100
- reverse_explanation: "op='add' (upsert) / 'set' (clear+add) / 'remove' (by guard address) / 'clear' (empty list); Permission index 255 (deposit) / 256 (withdraw) required",
101
- },
102
- {
103
- id: "T-T-07",
104
- pattern_name: "Receive CoinWrapper / owner_receive forward",
105
- semantic_intent: "Receive CoinWrapper into balance, or forward received objects to Permission owner",
106
- match_keywords: ["receive", "owner_receive", "forward"],
107
- schema_fields: ["object (string)", "receive | owner_receive"],
108
- example_json: {
109
- object: "myteam_treasury",
110
- receive: "recently",
111
- },
112
- reverse_explanation: "receive → TREASURY_RECEIVE=253, converts CoinWrapper to balance, writes Record; owner_receive → TREASURY_OWNER_RECEIVE=257, forwards to Permission.owner, no Record",
113
- },
114
- {
115
- id: "T-T-08",
116
- pattern_name: "Set UM / modify description",
117
- semantic_intent: "Delegate User Manager (Contact object) or modify Treasury description",
118
- match_keywords: ["um", "um_set", "um_none", "description", "delegate"],
119
- schema_fields: ["object (string)", "um | description"],
120
- example_json: {
121
- object: "myteam_treasury",
122
- um: "team_contact",
123
- },
124
- reverse_explanation: "um=address → TREASURY_UM=258 (um_set); um=null → TREASURY_UM=258 (um_none); description=string → TREASURY_DESCRIPTION=251",
125
- },
126
- ];
127
- export const SCHEMA_TO_SEMANTIC_RULES = [
128
- {
129
- element_type: "field",
130
- type_name: "object",
131
- semantic_explanation: "Treasury object reference. STRING=operate existing; OBJECT={name, type_parameter, permission}=create new",
132
- constraints: ["type_parameter required at creation, immutable thereafter", "permission can be new (TypeNamedObject) or existing (string address)"],
133
- },
134
- {
135
- element_type: "field",
136
- type_name: "description",
137
- semantic_explanation: "Human-readable description of Treasury purpose. Max 4000 chars (MAX_DESCRIPTION_LENGTH).",
138
- constraints: ["<= 4000 chars", "Modifiable via TREASURY_DESCRIPTION (251)"],
139
- },
140
- {
141
- element_type: "field",
142
- type_name: "deposit",
143
- semantic_explanation: "Deposit operation. Two access paths: (1) Permission path (by_external_deposit_guard omitted, requires TREASURY_DEPOSIT=252); (2) Guard path (by_external_deposit_guard set, requires Passport, no Permission)",
144
- },
145
- {
146
- element_type: "field",
147
- type_name: "deposit.coin",
148
- semantic_explanation: "Coin to deposit. {balance: string} for amount; {coin_object: string} for existing Coin object. Type T must match Treasury's type_parameter.",
149
- },
150
- {
151
- element_type: "field",
152
- type_name: "deposit.by_external_deposit_guard",
153
- semantic_explanation: "Guard address or name for external deposit path. Triggers Guard + Passport verification; bypasses Permission check.",
154
- constraints: ["Guard must be in external_deposit_guard list (else E_EXTERNAL_DEPOSIT_GUARD_NOT_FOUND)", "Passport required"],
155
- },
156
- {
157
- element_type: "field",
158
- type_name: "withdraw",
159
- semantic_explanation: "Withdraw operation. Two access paths: (1) Permission path (amount.fixed, requires TREASURY_WITHDRAW=254); (2) Guard path (amount.by_external_withdraw_guard, requires Passport, no Permission)",
160
- },
161
- {
162
- element_type: "field",
163
- type_name: "withdraw.amount.fixed",
164
- semantic_explanation: "Fixed u64 withdraw amount (Permission path). Irreversible. Recipient specified separately.",
165
- constraints: ["Must be <= balance (else E_WITHDRAW_INSUFFICIENT_AMOUNT)", "u64 format"],
166
- },
167
- {
168
- element_type: "field",
169
- type_name: "withdraw.amount.by_external_withdraw_guard",
170
- semantic_explanation: "Guard address/name for external withdraw path. Amount determined by Guard table identifier (not caller-specified).",
171
- constraints: ["Guard must be in external_withdraw_guard list", "Passport required", "Amount from Guard is authoritative"],
172
- },
173
- {
174
- element_type: "field",
175
- type_name: "external_deposit_guard",
176
- semantic_explanation: "Manage external_deposit_guard list. op: add (upsert) / set (clear+add) / remove (by address) / clear (empty). Requires TREASURY_EXTERNAL_DEPOSIT_GUARD=255.",
177
- constraints: ["Max 100 guards (MAX_EXTERNAL_DEPOSIT_GUARD_COUNT)", "identifier is Option<u8> (None = no amount limit)", "store_from_id is Option<u8>"],
178
- },
179
- {
180
- element_type: "field",
181
- type_name: "external_withdraw_guard",
182
- semantic_explanation: "Manage external_withdraw_guard list. op: add/set/remove/clear. Requires TREASURY_EXTERNAL_WITHDRAW_GUARD=256.",
183
- constraints: ["Max 200 guards (MAX_EXTERNAL_WITHDRAW_GUARD_COUNT)", "identifier is u8 (REQUIRED, not Option)", "store_from_id is Option<u8>"],
184
- },
185
- {
186
- element_type: "field",
187
- type_name: "receive",
188
- semantic_explanation: "Receive CoinWrapper objects into balance. Requires TREASURY_RECEIVE=253. Writes Record(op=RECEIVE) to history.",
189
- constraints: ["CoinWrapper type T must match Treasury's T", "'recently' resolves to all un-received CoinWrapper"],
190
- },
191
- {
192
- element_type: "field",
193
- type_name: "owner_receive",
194
- semantic_explanation: "Unwrap received objects (CoinWrapper + others) and forward to Permission.owner. Requires TREASURY_OWNER_RECEIVE=257. Does NOT write to history.",
195
- constraints: ["Irreversible (funds leave Treasury)", "Recipient is Permission.owner (resolved at tx time)"],
196
- },
197
- {
198
- element_type: "field",
199
- type_name: "um",
200
- semantic_explanation: "User Manager (Contact object address). um=address → um_set; um=null → um_none. Requires TREASURY_UM=258.",
201
- constraints: ["Must be a Contact object (not user wallet)", "UM ≠ admin (no permission management)"],
202
- },
203
- {
204
- element_type: "op",
205
- type_name: "add",
206
- semantic_explanation: "Upsert semantics: if guard exists, update identifier/store_from_id; else append (after count check)",
207
- },
208
- {
209
- element_type: "op",
210
- type_name: "set",
211
- semantic_explanation: "Replace entire list: clear first, then add. Use when wholesale replacement is intended.",
212
- },
213
- {
214
- element_type: "op",
215
- type_name: "remove",
216
- semantic_explanation: "Remove specific guards by address. Count check uses MAX as upper bound (not subtractive).",
217
- },
218
- {
219
- element_type: "op",
220
- type_name: "clear",
221
- semantic_explanation: "Empty the entire guard list. No count check needed.",
222
- },
223
- ];
224
- export const TREASURY_CONSTRAINT_RULES = [
225
- {
226
- id: "MC-T-01",
227
- category: "structural",
228
- rule: "description length <= MAX_DESCRIPTION_LENGTH (4000)",
229
- applies_to: ["description"],
230
- },
231
- {
232
- id: "MC-T-02",
233
- category: "structural",
234
- rule: "external_deposit_guard count <= MAX_EXTERNAL_DEPOSIT_GUARD_COUNT (100)",
235
- applies_to: ["external_deposit_guard.guards"],
236
- },
237
- {
238
- id: "MC-T-03",
239
- category: "structural",
240
- rule: "external_withdraw_guard count <= MAX_EXTERNAL_WITHDRAW_GUARD_COUNT (200)",
241
- applies_to: ["external_withdraw_guard.guards"],
242
- },
243
- {
244
- id: "MC-T-04",
245
- category: "structural",
246
- rule: "external_withdraw_guard.identifier is u8 (REQUIRED, not Option<u8>)",
247
- applies_to: ["external_withdraw_guard.guards[].identifier"],
248
- },
249
- {
250
- id: "MC-T-05",
251
- category: "structural",
252
- rule: "external_deposit_guard.identifier is Option<u8> (None means no amount limit)",
253
- applies_to: ["external_deposit_guard.guards[].identifier"],
254
- },
255
- {
256
- id: "MC-T-06",
257
- category: "semantic",
258
- rule: "Coin type T must match Treasury's type_parameter for all deposit/withdraw/receive operations",
259
- applies_to: ["deposit.coin", "withdraw.amount.fixed", "receive"],
260
- },
261
- {
262
- id: "MC-T-07",
263
- category: "authority",
264
- rule: "deposit via Permission path requires TREASURY_DEPOSIT (252); deposit via Guard path requires no Permission (Guard+Passport only)",
265
- applies_to: ["deposit.by_external_deposit_guard"],
266
- },
267
- {
268
- id: "MC-T-08",
269
- category: "authority",
270
- rule: "withdraw.amount.fixed requires TREASURY_WITHDRAW (254); withdraw.amount.by_external_withdraw_guard requires no Permission",
271
- applies_to: ["withdraw.amount"],
272
- },
273
- {
274
- id: "MC-T-09",
275
- category: "authority",
276
- rule: "external_deposit_guard management requires TREASURY_EXTERNAL_DEPOSIT_GUARD (255); external_withdraw_guard management requires TREASURY_EXTERNAL_WITHDRAW_GUARD (256)",
277
- applies_to: ["external_deposit_guard", "external_withdraw_guard"],
278
- },
279
- {
280
- id: "MC-T-10",
281
- category: "lifecycle",
282
- rule: "withdraw (fixed) and external_withdraw are IRREVERSIBLE; verify recipient and amount before execution",
283
- applies_to: ["withdraw.amount.fixed", "withdraw.amount.by_external_withdraw_guard"],
284
- },
285
- {
286
- id: "MC-T-11",
287
- category: "lifecycle",
288
- rule: "owner_receive forwards assets to Permission.owner and does NOT write to history; verify owner address is current",
289
- applies_to: ["owner_receive"],
290
- },
291
- {
292
- id: "MC-T-12",
293
- category: "lifecycle",
294
- rule: "um_set requires Contact object address (not user wallet); um_set vs um_none both use TREASURY_UM (258)",
295
- applies_to: ["um"],
296
- },
297
- {
298
- id: "MC-T-13",
299
- category: "cross_object",
300
- rule: "If Treasury is referenced by Allocator/Arbitration, TREASURY_RECEIVE (253) must be granted to a trusted operator for regular intake",
301
- applies_to: ["receive"],
302
- },
303
- {
304
- id: "MC-T-14",
305
- category: "semantic",
306
- rule: "external_deposit may split coin if value > guard-specified amount; excess refunded to sender",
307
- applies_to: ["deposit.by_external_deposit_guard"],
308
- },
309
- {
310
- id: "MC-T-15",
311
- category: "semantic",
312
- rule: "inflow/outflow are monotonic counters (never decrease); used for audit reconciliation: theoretical balance = inflow - outflow",
313
- applies_to: ["(read-only audit fields)"],
314
- },
315
- ];
316
- export const TREASURY_TRANSLATION_VERSION = "1.0.0";
317
- export function matchSemanticPattern(userIntent) {
318
- const lower = userIntent.toLowerCase();
319
- const matches = [];
320
- if (lower.includes("create") || lower.includes("new")) {
321
- matches.push(SEMANTIC_TO_SCHEMA_RULES[0]);
322
- }
323
- if (lower.includes("deposit")) {
324
- if (lower.includes("external") || lower.includes("guard")) {
325
- matches.push(SEMANTIC_TO_SCHEMA_RULES[3]);
326
- }
327
- else {
328
- matches.push(SEMANTIC_TO_SCHEMA_RULES[1]);
329
- }
330
- }
331
- if (lower.includes("withdraw")) {
332
- if (lower.includes("external") || lower.includes("guard")) {
333
- matches.push(SEMANTIC_TO_SCHEMA_RULES[4]);
334
- }
335
- else {
336
- matches.push(SEMANTIC_TO_SCHEMA_RULES[2]);
337
- }
338
- }
339
- if (lower.includes("guard add") || lower.includes("guard set") || lower.includes("guard remove") ||
340
- lower.includes("guard clear")) {
341
- matches.push(SEMANTIC_TO_SCHEMA_RULES[5]);
342
- }
343
- if (lower.includes("receive") ||
344
- lower.includes("owner_receive") || lower.includes("forward")) {
345
- matches.push(SEMANTIC_TO_SCHEMA_RULES[6]);
346
- }
347
- if (lower.includes("um") || lower.includes("delegate") || lower.includes("user manager") ||
348
- lower.includes("description")) {
349
- matches.push(SEMANTIC_TO_SCHEMA_RULES[7]);
350
- }
351
- if (matches.length === 0) {
352
- return [...SEMANTIC_TO_SCHEMA_RULES];
353
- }
354
- return matches;
355
- }
356
- export function explainTreasuryCallData(data) {
357
- const lines = [];
358
- if (data.object === null || data.object === undefined) {
359
- lines.push("Operation: INVALID (object field required)");
360
- }
361
- else if (typeof data.object === "string") {
362
- lines.push(`Operation: OPERATE existing Treasury at ${data.object}`);
363
- }
364
- else if (typeof data.object === "object") {
365
- const obj = data.object;
366
- lines.push(`Operation: CREATE new Treasury`);
367
- if (obj.name)
368
- lines.push(` name: ${obj.name}`);
369
- if (obj.type_parameter)
370
- lines.push(` type_parameter (T): ${obj.type_parameter}`);
371
- if (obj.permission) {
372
- if (typeof obj.permission === "string") {
373
- lines.push(` permission: existing ${obj.permission}`);
374
- }
375
- else {
376
- lines.push(` permission: new (TypeNamedObject)`);
377
- }
378
- }
379
- }
380
- if (data.description) {
381
- lines.push(`- Set description: "${data.description}"`);
382
- }
383
- if (data.deposit) {
384
- const d = data.deposit;
385
- if (d.by_external_deposit_guard) {
386
- lines.push(`- External deposit via guard: ${d.by_external_deposit_guard}`);
387
- if (d.coin?.balance)
388
- lines.push(` coin balance: ${d.coin.balance} (may split if > guard limit)`);
389
- if (d.coin?.coin_object)
390
- lines.push(` coin object: ${d.coin.coin_object}`);
391
- lines.push(` ⚠️ No Permission check; Passport required`);
392
- }
393
- else {
394
- lines.push(`- Internal deposit via Permission (TREASURY_DEPOSIT=252)`);
395
- if (d.coin?.balance)
396
- lines.push(` coin balance: ${d.coin.balance}`);
397
- if (d.coin?.coin_object)
398
- lines.push(` coin object: ${d.coin.coin_object}`);
399
- }
400
- if (d.payment_info?.remark)
401
- lines.push(` payment remark: "${d.payment_info.remark}"`);
402
- }
403
- if (data.withdraw) {
404
- const w = data.withdraw;
405
- if (w.amount?.fixed) {
406
- lines.push(`- Internal withdraw via Permission (TREASURY_WITHDRAW=254)`);
407
- lines.push(` amount: ${w.amount.fixed} (fixed, IRREVERSIBLE)`);
408
- }
409
- else if (w.amount?.by_external_withdraw_guard) {
410
- lines.push(`- External withdraw via guard: ${w.amount.by_external_withdraw_guard}`);
411
- lines.push(` ⚠️ Amount determined by Guard table identifier (not caller-specified)`);
412
- lines.push(` ⚠️ IRREVERSIBLE; No Permission check; Passport required`);
413
- }
414
- if (w.recipient)
415
- lines.push(` recipient: ${w.recipient}`);
416
- if (w.payment_info?.remark)
417
- lines.push(` payment remark: "${w.payment_info.remark}"`);
418
- }
419
- if (data.receive) {
420
- if (data.receive === "recently") {
421
- lines.push(`- Receive all recently-received CoinWrapper (TREASURY_RECEIVE=253)`);
422
- }
423
- else if (Array.isArray(data.receive)) {
424
- lines.push(`- Receive ${data.receive.length} CoinWrapper object(s) (TREASURY_RECEIVE=253)`);
425
- }
426
- }
427
- if (data.external_deposit_guard) {
428
- const g = data.external_deposit_guard;
429
- if (g.op === "clear") {
430
- lines.push(`- Clear external_deposit_guard list (TREASURY_EXTERNAL_DEPOSIT_GUARD=255)`);
431
- }
432
- else if (g.op === "remove") {
433
- lines.push(`- Remove ${g.guards.length} guard(s) from external_deposit_guard (Permission 255)`);
434
- }
435
- else {
436
- const count = g.guards.length;
437
- lines.push(`- ${g.op === "set" ? "Set (clear+add)" : "Add (upsert)"} ${count} external_deposit_guard(s) (Permission 255)`);
438
- }
439
- }
440
- if (data.external_withdraw_guard) {
441
- const g = data.external_withdraw_guard;
442
- if (g.op === "clear") {
443
- lines.push(`- Clear external_withdraw_guard list (TREASURY_EXTERNAL_WITHDRAW_GUARD=256)`);
444
- }
445
- else if (g.op === "remove") {
446
- lines.push(`- Remove ${g.guards.length} guard(s) from external_withdraw_guard (Permission 256)`);
447
- }
448
- else {
449
- const count = g.guards.length;
450
- lines.push(`- ${g.op === "set" ? "Set (clear+add)" : "Add (upsert)"} ${count} external_withdraw_guard(s) (Permission 256)`);
451
- lines.push(` ⚠️ withdraw guard identifier is REQUIRED (u8, not Option)`);
452
- }
453
- }
454
- if (data.owner_receive) {
455
- if (data.owner_receive === "recently") {
456
- lines.push(`- owner_receive: forward all recently-received objects to Permission.owner (TREASURY_OWNER_RECEIVE=257)`);
457
- }
458
- else if (Array.isArray(data.owner_receive)) {
459
- lines.push(`- owner_receive: forward ${data.owner_receive.length} object(s) to Permission.owner (Permission 257)`);
460
- }
461
- lines.push(` ⚠️ IRREVERSIBLE; does NOT write to history`);
462
- }
463
- if (data.um !== undefined) {
464
- if (data.um === null) {
465
- lines.push(`- UM revoke (um_none, TREASURY_UM=258)`);
466
- }
467
- else {
468
- lines.push(`- UM set to ${data.um} (TREASURY_UM=258)`);
469
- }
470
- }
471
- return lines.join("\n");
472
- }
473
- export function explainField(fieldName) {
474
- return SCHEMA_TO_SEMANTIC_RULES.find(r => r.element_type === "field" && r.type_name === fieldName);
475
- }
476
- export function explainOp(opName) {
477
- return SCHEMA_TO_SEMANTIC_RULES.find(r => r.element_type === "op" && r.type_name === opName);
478
- }
479
- export function getConstraintsByCategory(category) {
480
- return TREASURY_CONSTRAINT_RULES.filter(r => r.category === category);
481
- }
482
- export function explainTreasuryPermissionIndex(index) {
483
- if (isBuiltinTreasuryPermission(index)) {
484
- const entry = getBuiltinPermissionByIndex(index);
485
- const scene = findSceneByPermissionIndex(index);
486
- return `${entry?.name ?? "Unknown"} (${index}) — ${entry?.description ?? ""} [scene: ${scene?.id ?? "unknown"}]`;
487
- }
488
- if (index === -1) {
489
- return `Reserved (no Permission index) — external operations use Guard + Passport instead`;
490
- }
491
- if (index >= 1000) {
492
- return `Custom permission (${index}) — must be documented via Permission.remark; not used by Treasury builtin operations`;
493
- }
494
- if (index === 259 || index === 260) {
495
- return `STALE index ${index} — was pre-fix SDK value; canonical post-fix indexes are 255-258. See R-T-01.`;
496
- }
497
- return `Index ${index} — not a Treasury builtin permission (range 250-258)`;
498
- }
1
+ import{isBuiltinTreasuryPermission,getBuiltinPermissionByIndex,findSceneByPermissionIndex}from'./treasury-ledger.js';export const SEMANTIC_TO_SCHEMA_RULES=[{'id':'T-T-01','pattern_name':'Create\x20new\x20Treasury','semantic_intent':'Create\x20a\x20new\x20Treasury\x20with\x20a\x20Coin\x20type\x20T\x20and\x20associated\x20Permission','match_keywords':['create','new'],'schema_fields':['object\x20(TypeNamedObjectWithPermission)','description'],'example_json':{'object':{'name':'myteam_treasury','type_parameter':'0x2::wow::WOW','permission':{'name':'myteam_treasury_permission','description':'Permission\x20for\x20myteam\x20treasury'}},'description':'Team\x20treasury\x20for\x20project\x20X\x20funding'},'reverse_explanation':'object\x20must\x20be\x20in\x20OBJECT\x20format\x20(not\x20STRING)\x20for\x20creation;\x20type_parameter\x20is\x20the\x20Coin\x20type\x20T;\x20permission\x20can\x20be\x20new\x20or\x20existing'},{'id':'T-T-02','pattern_name':'Internal\x20deposit\x20(Permission\x20path)','semantic_intent':'Deposit\x20funds\x20to\x20Treasury\x20via\x20Permission\x20authorization','match_keywords':['deposit'],'schema_fields':['object\x20(string)','deposit.coin','deposit.payment_info'],'example_json':{'object':'myteam_treasury','deposit':{'coin':{'balance':'1000000000'},'payment_info':{'remark':'Q3\x20budget\x20allocation','index':0x0}}},'reverse_explanation':'deposit.by_external_deposit_guard\x20omitted\x20→\x20Permission\x20path\x20(TREASURY_DEPOSIT=252);\x20coin\x20can\x20be\x20{balance}\x20or\x20{coin_object}'},{'id':'T-T-03','pattern_name':'Internal\x20withdraw\x20(Permission\x20path,\x20fixed\x20amount)','semantic_intent':'Withdraw\x20fixed\x20amount\x20from\x20Treasury\x20via\x20Permission\x20authorization','match_keywords':['withdraw'],'schema_fields':['object\x20(string)','withdraw.amount.fixed','withdraw.recipient','withdraw.payment_info'],'example_json':{'object':'myteam_treasury','withdraw':{'amount':{'fixed':'500000000'},'recipient':'0xRECIPIENT','payment_info':{'remark':'Vendor\x20payment','index':0x1}}},'reverse_explanation':'withdraw.amount.fixed\x20→\x20Permission\x20path\x20(TREASURY_WITHDRAW=254);\x20amount\x20is\x20fixed\x20u64;\x20irreversible'},{'id':'T-T-04','pattern_name':'External\x20deposit\x20(Guard\x20+\x20Passport\x20path)','semantic_intent':'External\x20user\x20deposits\x20via\x20preset\x20Guard\x20verification\x20(no\x20Permission\x20needed)','match_keywords':['external\x20deposit','guard\x20deposit'],'schema_fields':['object\x20(string)','deposit.coin','deposit.by_external_deposit_guard','deposit.payment_info','submission\x20(Passport)'],'example_json':{'object':'myteam_treasury','deposit':{'coin':{'balance':'200000000'},'by_external_deposit_guard':'deposit_guard_v1','payment_info':{'remark':'External\x20deposit\x20via\x20guard','index':0x2}}},'reverse_explanation':'deposit.by_external_deposit_guard\x20present\x20→\x20Guard\x20path\x20(NO\x20Permission\x20check);\x20Passport\x20required\x20via\x20submission\x20field;\x20amount\x20may\x20split\x20if\x20coin\x20>\x20guard-specified'},{'id':'T-T-05','pattern_name':'External\x20withdraw\x20(Guard\x20+\x20Passport\x20path,\x20amount\x20from\x20Guard)','semantic_intent':'External\x20user\x20withdraws\x20via\x20preset\x20Guard\x20verification;\x20amount\x20determined\x20by\x20Guard\x20table\x20identifier','match_keywords':['external\x20withdraw','guard\x20withdraw'],'schema_fields':['object\x20(string)','withdraw.amount.by_external_withdraw_guard','withdraw.recipient','withdraw.payment_info','submission\x20(Passport)'],'example_json':{'object':'myteam_treasury','withdraw':{'amount':{'by_external_withdraw_guard':'withdraw_guard_v1'},'recipient':'0xRECIPIENT','payment_info':{'remark':'External\x20withdraw\x20via\x20guard','index':0x3}}},'reverse_explanation':'withdraw.amount.by_external_withdraw_guard\x20→\x20Guard\x20path\x20(NO\x20Permission\x20check);\x20amount\x20comes\x20from\x20Guard\x20table\x20identifier\x20(u8,\x20required);\x20irreversible'},{'id':'T-T-06','pattern_name':'Manage\x20external\x20deposit/withdraw\x20Guard\x20(add/set/remove/clear)','semantic_intent':'Add,\x20set,\x20remove,\x20or\x20clear\x20external_deposit_guard\x20/\x20external_withdraw_guard\x20lists','match_keywords':['guard\x20add','guard\x20set','guard\x20remove','guard\x20clear'],'schema_fields':['object\x20(string)','external_deposit_guard\x20|\x20external_withdraw_guard'],'example_json':{'object':'myteam_treasury','external_deposit_guard':{'op':'add','guards':[{'guard':'deposit_guard_v1','identifier':0x2,'store_from_id':null}]}},'reverse_explanation':'op=\x27add\x27\x20(upsert)\x20/\x20\x27set\x27\x20(clear+add)\x20/\x20\x27remove\x27\x20(by\x20guard\x20address)\x20/\x20\x27clear\x27\x20(empty\x20list);\x20Permission\x20index\x20255\x20(deposit)\x20/\x20256\x20(withdraw)\x20required'},{'id':'T-T-07','pattern_name':'Receive\x20CoinWrapper\x20/\x20owner_receive\x20forward','semantic_intent':'Receive\x20CoinWrapper\x20into\x20balance,\x20or\x20forward\x20received\x20objects\x20to\x20Permission\x20owner','match_keywords':['receive','owner_receive','forward'],'schema_fields':['object\x20(string)','receive\x20|\x20owner_receive'],'example_json':{'object':'myteam_treasury','receive':'recently'},'reverse_explanation':'receive\x20→\x20TREASURY_RECEIVE=253,\x20converts\x20CoinWrapper\x20to\x20balance,\x20writes\x20Record;\x20owner_receive\x20→\x20TREASURY_OWNER_RECEIVE=257,\x20forwards\x20to\x20Permission.owner,\x20no\x20Record'},{'id':'T-T-08','pattern_name':'Set\x20UM\x20/\x20modify\x20description','semantic_intent':'Delegate\x20User\x20Manager\x20(Contact\x20object)\x20or\x20modify\x20Treasury\x20description','match_keywords':['um','um_set','um_none','description','delegate'],'schema_fields':['object\x20(string)','um\x20|\x20description'],'example_json':{'object':'myteam_treasury','um':'team_contact'},'reverse_explanation':'um=address\x20→\x20TREASURY_UM=258\x20(um_set);\x20um=null\x20→\x20TREASURY_UM=258\x20(um_none);\x20description=string\x20→\x20TREASURY_DESCRIPTION=251'}];export const SCHEMA_TO_SEMANTIC_RULES=[{'element_type':'field','type_name':'object','semantic_explanation':'Treasury\x20object\x20reference.\x20STRING=operate\x20existing;\x20OBJECT={name,\x20type_parameter,\x20permission}=create\x20new','constraints':['type_parameter\x20required\x20at\x20creation,\x20immutable\x20thereafter','permission\x20can\x20be\x20new\x20(TypeNamedObject)\x20or\x20existing\x20(string\x20address)']},{'element_type':'field','type_name':'description','semantic_explanation':'Human-readable\x20description\x20of\x20Treasury\x20purpose.\x20Max\x204000\x20chars\x20(MAX_DESCRIPTION_LENGTH).','constraints':['<=\x204000\x20chars','Modifiable\x20via\x20TREASURY_DESCRIPTION\x20(251)']},{'element_type':'field','type_name':'deposit','semantic_explanation':'Deposit\x20operation.\x20Two\x20access\x20paths:\x20(1)\x20Permission\x20path\x20(by_external_deposit_guard\x20omitted,\x20requires\x20TREASURY_DEPOSIT=252);\x20(2)\x20Guard\x20path\x20(by_external_deposit_guard\x20set,\x20requires\x20Passport,\x20no\x20Permission)'},{'element_type':'field','type_name':'deposit.coin','semantic_explanation':'Coin\x20to\x20deposit.\x20{balance:\x20string}\x20for\x20amount;\x20{coin_object:\x20string}\x20for\x20existing\x20Coin\x20object.\x20Type\x20T\x20must\x20match\x20Treasury\x27s\x20type_parameter.'},{'element_type':'field','type_name':'deposit.by_external_deposit_guard','semantic_explanation':'Guard\x20address\x20or\x20name\x20for\x20external\x20deposit\x20path.\x20Triggers\x20Guard\x20+\x20Passport\x20verification;\x20bypasses\x20Permission\x20check.','constraints':['Guard\x20must\x20be\x20in\x20external_deposit_guard\x20list\x20(else\x20E_EXTERNAL_DEPOSIT_GUARD_NOT_FOUND)','Passport\x20required']},{'element_type':'field','type_name':'withdraw','semantic_explanation':'Withdraw\x20operation.\x20Two\x20access\x20paths:\x20(1)\x20Permission\x20path\x20(amount.fixed,\x20requires\x20TREASURY_WITHDRAW=254);\x20(2)\x20Guard\x20path\x20(amount.by_external_withdraw_guard,\x20requires\x20Passport,\x20no\x20Permission)'},{'element_type':'field','type_name':'withdraw.amount.fixed','semantic_explanation':'Fixed\x20u64\x20withdraw\x20amount\x20(Permission\x20path).\x20Irreversible.\x20Recipient\x20specified\x20separately.','constraints':['Must\x20be\x20<=\x20balance\x20(else\x20E_WITHDRAW_INSUFFICIENT_AMOUNT)','u64\x20format']},{'element_type':'field','type_name':'withdraw.amount.by_external_withdraw_guard','semantic_explanation':'Guard\x20address/name\x20for\x20external\x20withdraw\x20path.\x20Amount\x20determined\x20by\x20Guard\x20table\x20identifier\x20(not\x20caller-specified).','constraints':['Guard\x20must\x20be\x20in\x20external_withdraw_guard\x20list','Passport\x20required','Amount\x20from\x20Guard\x20is\x20authoritative']},{'element_type':'field','type_name':'external_deposit_guard','semantic_explanation':'Manage\x20external_deposit_guard\x20list.\x20op:\x20add\x20(upsert)\x20/\x20set\x20(clear+add)\x20/\x20remove\x20(by\x20address)\x20/\x20clear\x20(empty).\x20Requires\x20TREASURY_EXTERNAL_DEPOSIT_GUARD=255.','constraints':['Max\x20100\x20guards\x20(MAX_EXTERNAL_DEPOSIT_GUARD_COUNT)','identifier\x20is\x20Option<u8>\x20(None\x20=\x20no\x20amount\x20limit)','store_from_id\x20is\x20Option<u8>']},{'element_type':'field','type_name':'external_withdraw_guard','semantic_explanation':'Manage\x20external_withdraw_guard\x20list.\x20op:\x20add/set/remove/clear.\x20Requires\x20TREASURY_EXTERNAL_WITHDRAW_GUARD=256.','constraints':['Max\x20200\x20guards\x20(MAX_EXTERNAL_WITHDRAW_GUARD_COUNT)','identifier\x20is\x20u8\x20(REQUIRED,\x20not\x20Option)','store_from_id\x20is\x20Option<u8>']},{'element_type':'field','type_name':'receive','semantic_explanation':'Receive\x20CoinWrapper\x20objects\x20into\x20balance.\x20Requires\x20TREASURY_RECEIVE=253.\x20Writes\x20Record(op=RECEIVE)\x20to\x20history.','constraints':['CoinWrapper\x20type\x20T\x20must\x20match\x20Treasury\x27s\x20T','\x27recently\x27\x20resolves\x20to\x20all\x20un-received\x20CoinWrapper']},{'element_type':'field','type_name':'owner_receive','semantic_explanation':'Unwrap\x20received\x20objects\x20(CoinWrapper\x20+\x20others)\x20and\x20forward\x20to\x20Permission.owner.\x20Requires\x20TREASURY_OWNER_RECEIVE=257.\x20Does\x20NOT\x20write\x20to\x20history.','constraints':['Irreversible\x20(funds\x20leave\x20Treasury)','Recipient\x20is\x20Permission.owner\x20(resolved\x20at\x20tx\x20time)']},{'element_type':'field','type_name':'um','semantic_explanation':'User\x20Manager\x20(Contact\x20object\x20address).\x20um=address\x20→\x20um_set;\x20um=null\x20→\x20um_none.\x20Requires\x20TREASURY_UM=258.','constraints':['Must\x20be\x20a\x20Contact\x20object\x20(not\x20user\x20wallet)','UM\x20≠\x20admin\x20(no\x20permission\x20management)']},{'element_type':'op','type_name':'add','semantic_explanation':'Upsert\x20semantics:\x20if\x20guard\x20exists,\x20update\x20identifier/store_from_id;\x20else\x20append\x20(after\x20count\x20check)'},{'element_type':'op','type_name':'set','semantic_explanation':'Replace\x20entire\x20list:\x20clear\x20first,\x20then\x20add.\x20Use\x20when\x20wholesale\x20replacement\x20is\x20intended.'},{'element_type':'op','type_name':'remove','semantic_explanation':'Remove\x20specific\x20guards\x20by\x20address.\x20Count\x20check\x20uses\x20MAX\x20as\x20upper\x20bound\x20(not\x20subtractive).'},{'element_type':'op','type_name':'clear','semantic_explanation':'Empty\x20the\x20entire\x20guard\x20list.\x20No\x20count\x20check\x20needed.'}];export const TREASURY_CONSTRAINT_RULES=[{'id':'MC-T-01','category':'structural','rule':'description\x20length\x20<=\x20MAX_DESCRIPTION_LENGTH\x20(4000)','applies_to':['description']},{'id':'MC-T-02','category':'structural','rule':'external_deposit_guard\x20count\x20<=\x20MAX_EXTERNAL_DEPOSIT_GUARD_COUNT\x20(100)','applies_to':['external_deposit_guard.guards']},{'id':'MC-T-03','category':'structural','rule':'external_withdraw_guard\x20count\x20<=\x20MAX_EXTERNAL_WITHDRAW_GUARD_COUNT\x20(200)','applies_to':['external_withdraw_guard.guards']},{'id':'MC-T-04','category':'structural','rule':'external_withdraw_guard.identifier\x20is\x20u8\x20(REQUIRED,\x20not\x20Option<u8>)','applies_to':['external_withdraw_guard.guards[].identifier']},{'id':'MC-T-05','category':'structural','rule':'external_deposit_guard.identifier\x20is\x20Option<u8>\x20(None\x20means\x20no\x20amount\x20limit)','applies_to':['external_deposit_guard.guards[].identifier']},{'id':'MC-T-06','category':'semantic','rule':'Coin\x20type\x20T\x20must\x20match\x20Treasury\x27s\x20type_parameter\x20for\x20all\x20deposit/withdraw/receive\x20operations','applies_to':['deposit.coin','withdraw.amount.fixed','receive']},{'id':'MC-T-07','category':'authority','rule':'deposit\x20via\x20Permission\x20path\x20requires\x20TREASURY_DEPOSIT\x20(252);\x20deposit\x20via\x20Guard\x20path\x20requires\x20no\x20Permission\x20(Guard+Passport\x20only)','applies_to':['deposit.by_external_deposit_guard']},{'id':'MC-T-08','category':'authority','rule':'withdraw.amount.fixed\x20requires\x20TREASURY_WITHDRAW\x20(254);\x20withdraw.amount.by_external_withdraw_guard\x20requires\x20no\x20Permission','applies_to':['withdraw.amount']},{'id':'MC-T-09','category':'authority','rule':'external_deposit_guard\x20management\x20requires\x20TREASURY_EXTERNAL_DEPOSIT_GUARD\x20(255);\x20external_withdraw_guard\x20management\x20requires\x20TREASURY_EXTERNAL_WITHDRAW_GUARD\x20(256)','applies_to':['external_deposit_guard','external_withdraw_guard']},{'id':'MC-T-10','category':'lifecycle','rule':'withdraw\x20(fixed)\x20and\x20external_withdraw\x20are\x20IRREVERSIBLE;\x20verify\x20recipient\x20and\x20amount\x20before\x20execution','applies_to':['withdraw.amount.fixed','withdraw.amount.by_external_withdraw_guard']},{'id':'MC-T-11','category':'lifecycle','rule':'owner_receive\x20forwards\x20assets\x20to\x20Permission.owner\x20and\x20does\x20NOT\x20write\x20to\x20history;\x20verify\x20owner\x20address\x20is\x20current','applies_to':['owner_receive']},{'id':'MC-T-12','category':'lifecycle','rule':'um_set\x20requires\x20Contact\x20object\x20address\x20(not\x20user\x20wallet);\x20um_set\x20vs\x20um_none\x20both\x20use\x20TREASURY_UM\x20(258)','applies_to':['um']},{'id':'MC-T-13','category':'cross_object','rule':'If\x20Treasury\x20is\x20referenced\x20by\x20Allocator/Arbitration,\x20TREASURY_RECEIVE\x20(253)\x20must\x20be\x20granted\x20to\x20a\x20trusted\x20operator\x20for\x20regular\x20intake','applies_to':['receive']},{'id':'MC-T-14','category':'semantic','rule':'external_deposit\x20may\x20split\x20coin\x20if\x20value\x20>\x20guard-specified\x20amount;\x20excess\x20refunded\x20to\x20sender','applies_to':['deposit.by_external_deposit_guard']},{'id':'MC-T-15','category':'semantic','rule':'inflow/outflow\x20are\x20monotonic\x20counters\x20(never\x20decrease);\x20used\x20for\x20audit\x20reconciliation:\x20theoretical\x20balance\x20=\x20inflow\x20-\x20outflow','applies_to':['(read-only\x20audit\x20fields)']}];export const TREASURY_TRANSLATION_VERSION='1.0.0';export function matchSemanticPattern(a){const b=a['toLowerCase'](),c=[];(b['includes']('create')||b['includes']('new'))&&c['push'](SEMANTIC_TO_SCHEMA_RULES[0x0]);b['includes']('deposit')&&(b['includes']('external')||b['includes']('guard')?c['push'](SEMANTIC_TO_SCHEMA_RULES[0x3]):c['push'](SEMANTIC_TO_SCHEMA_RULES[0x1]));b['includes']('withdraw')&&(b['includes']('external')||b['includes']('guard')?c['push'](SEMANTIC_TO_SCHEMA_RULES[0x4]):c['push'](SEMANTIC_TO_SCHEMA_RULES[0x2]));(b['includes']('guard\x20add')||b['includes']('guard\x20set')||b['includes']('guard\x20remove')||b['includes']('guard\x20clear'))&&c['push'](SEMANTIC_TO_SCHEMA_RULES[0x5]);(b['includes']('receive')||b['includes']('owner_receive')||b['includes']('forward'))&&c['push'](SEMANTIC_TO_SCHEMA_RULES[0x6]);(b['includes']('um')||b['includes']('delegate')||b['includes']('user\x20manager')||b['includes']('description'))&&c['push'](SEMANTIC_TO_SCHEMA_RULES[0x7]);if(c['length']===0x0)return[...SEMANTIC_TO_SCHEMA_RULES];return c;}export function explainTreasuryCallData(a){const b=[];if(a['object']===null||a['object']===undefined)b['push']('Operation:\x20INVALID\x20(object\x20field\x20required)');else{if(typeof a['object']==='string')b['push']('Operation:\x20OPERATE\x20existing\x20Treasury\x20at\x20'+a['object']);else{if(typeof a['object']==='object'){const c=a['object'];b['push']('Operation:\x20CREATE\x20new\x20Treasury');if(c['name'])b['push']('\x20\x20name:\x20'+c['name']);if(c['type_parameter'])b['push']('\x20\x20type_parameter\x20(T):\x20'+c['type_parameter']);c['permission']&&(typeof c['permission']==='string'?b['push']('\x20\x20permission:\x20existing\x20'+c['permission']):b['push']('\x20\x20permission:\x20new\x20(TypeNamedObject)'));}}}a['description']&&b['push']('-\x20Set\x20description:\x20\x22'+a['description']+'\x22');if(a['deposit']){const e=a['deposit'];if(e['by_external_deposit_guard']){b['push']('-\x20External\x20deposit\x20via\x20guard:\x20'+e['by_external_deposit_guard']);if(e['coin']?.['balance'])b['push']('\x20\x20coin\x20balance:\x20'+e['coin']['balance']+'\x20(may\x20split\x20if\x20>\x20guard\x20limit)');if(e['coin']?.['coin_object'])b['push']('\x20\x20coin\x20object:\x20'+e['coin']['coin_object']);b['push']('\x20\x20⚠️\x20No\x20Permission\x20check;\x20Passport\x20required');}else{b['push']('-\x20Internal\x20deposit\x20via\x20Permission\x20(TREASURY_DEPOSIT=252)');if(e['coin']?.['balance'])b['push']('\x20\x20coin\x20balance:\x20'+e['coin']['balance']);if(e['coin']?.['coin_object'])b['push']('\x20\x20coin\x20object:\x20'+e['coin']['coin_object']);}if(e['payment_info']?.['remark'])b['push']('\x20\x20payment\x20remark:\x20\x22'+e['payment_info']['remark']+'\x22');}if(a['withdraw']){const f=a['withdraw'];if(f['amount']?.['fixed'])b['push']('-\x20Internal\x20withdraw\x20via\x20Permission\x20(TREASURY_WITHDRAW=254)'),b['push']('\x20\x20amount:\x20'+f['amount']['fixed']+'\x20(fixed,\x20IRREVERSIBLE)');else f['amount']?.['by_external_withdraw_guard']&&(b['push']('-\x20External\x20withdraw\x20via\x20guard:\x20'+f['amount']['by_external_withdraw_guard']),b['push']('\x20\x20⚠️\x20Amount\x20determined\x20by\x20Guard\x20table\x20identifier\x20(not\x20caller-specified)'),b['push']('\x20\x20⚠️\x20IRREVERSIBLE;\x20No\x20Permission\x20check;\x20Passport\x20required'));if(f['recipient'])b['push']('\x20\x20recipient:\x20'+f['recipient']);if(f['payment_info']?.['remark'])b['push']('\x20\x20payment\x20remark:\x20\x22'+f['payment_info']['remark']+'\x22');}if(a['receive']){if(a['receive']==='recently')b['push']('-\x20Receive\x20all\x20recently-received\x20CoinWrapper\x20(TREASURY_RECEIVE=253)');else Array['isArray'](a['receive'])&&b['push']('-\x20Receive\x20'+a['receive']['length']+'\x20CoinWrapper\x20object(s)\x20(TREASURY_RECEIVE=253)');}if(a['external_deposit_guard']){const h=a['external_deposit_guard'];if(h['op']==='clear')b['push']('-\x20Clear\x20external_deposit_guard\x20list\x20(TREASURY_EXTERNAL_DEPOSIT_GUARD=255)');else{if(h['op']==='remove')b['push']('-\x20Remove\x20'+h['guards']['length']+'\x20guard(s)\x20from\x20external_deposit_guard\x20(Permission\x20255)');else{const i=h['guards']['length'];b['push']('-\x20'+(h['op']==='set'?'Set\x20(clear+add)':'Add\x20(upsert)')+'\x20'+i+'\x20external_deposit_guard(s)\x20(Permission\x20255)');}}}if(a['external_withdraw_guard']){const j=a['external_withdraw_guard'];if(j['op']==='clear')b['push']('-\x20Clear\x20external_withdraw_guard\x20list\x20(TREASURY_EXTERNAL_WITHDRAW_GUARD=256)');else{if(j['op']==='remove')b['push']('-\x20Remove\x20'+j['guards']['length']+'\x20guard(s)\x20from\x20external_withdraw_guard\x20(Permission\x20256)');else{const k=j['guards']['length'];b['push']('-\x20'+(j['op']==='set'?'Set\x20(clear+add)':'Add\x20(upsert)')+'\x20'+k+'\x20external_withdraw_guard(s)\x20(Permission\x20256)'),b['push']('\x20\x20⚠️\x20withdraw\x20guard\x20identifier\x20is\x20REQUIRED\x20(u8,\x20not\x20Option)');}}}if(a['owner_receive']){if(a['owner_receive']==='recently')b['push']('-\x20owner_receive:\x20forward\x20all\x20recently-received\x20objects\x20to\x20Permission.owner\x20(TREASURY_OWNER_RECEIVE=257)');else Array['isArray'](a['owner_receive'])&&b['push']('-\x20owner_receive:\x20forward\x20'+a['owner_receive']['length']+'\x20object(s)\x20to\x20Permission.owner\x20(Permission\x20257)');b['push']('\x20\x20⚠️\x20IRREVERSIBLE;\x20does\x20NOT\x20write\x20to\x20history');}return a['um']!==undefined&&(a['um']===null?b['push']('-\x20UM\x20revoke\x20(um_none,\x20TREASURY_UM=258)'):b['push']('-\x20UM\x20set\x20to\x20'+a['um']+'\x20(TREASURY_UM=258)')),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 TREASURY_CONSTRAINT_RULES['filter'](b=>b['category']===a);}export function explainTreasuryPermissionIndex(a){if(isBuiltinTreasuryPermission(a)){const b=getBuiltinPermissionByIndex(a),c=findSceneByPermissionIndex(a);return(b?.['name']??'Unknown')+'\x20('+a+')\x20—\x20'+(b?.['description']??'')+'\x20[scene:\x20'+(c?.['id']??'unknown')+']';}if(a===-0x1)return'Reserved\x20(no\x20Permission\x20index)\x20—\x20external\x20operations\x20use\x20Guard\x20+\x20Passport\x20instead';if(a>=0x3e8)return'Custom\x20permission\x20('+a+')\x20—\x20must\x20be\x20documented\x20via\x20Permission.remark;\x20not\x20used\x20by\x20Treasury\x20builtin\x20operations';if(a===0x103||a===0x104)return'STALE\x20index\x20'+a+'\x20—\x20was\x20pre-fix\x20SDK\x20value;\x20canonical\x20post-fix\x20indexes\x20are\x20255-258.\x20See\x20R-T-01.';return'Index\x20'+a+'\x20—\x20not\x20a\x20Treasury\x20builtin\x20permission\x20(range\x20250-258)';}