@wowok/agent-mcp 3.0.2 → 3.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (322) 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/event-semantics.js +1 -1
  8. package/dist/knowledge/flywheel-loop.d.ts +4 -52
  9. package/dist/knowledge/flywheel-loop.js +1 -1
  10. package/dist/knowledge/guard-lint.js +1 -1
  11. package/dist/knowledge/guard-puzzle.js +1 -1
  12. package/dist/knowledge/index.d.ts +2 -225
  13. package/dist/knowledge/index.js +1 -1
  14. package/dist/knowledge/industry-registry.js +1 -1
  15. package/dist/knowledge/machine-risk.js +1 -1
  16. package/dist/knowledge/machine-translation.js +1 -1
  17. package/dist/knowledge/onchain-constants.js +1 -1
  18. package/dist/knowledge/order-ledger.d.ts +2 -2
  19. package/dist/knowledge/order-ledger.js +1 -1
  20. package/dist/knowledge/order-puzzle.d.ts +4 -4
  21. package/dist/knowledge/order-puzzle.js +1 -1
  22. package/dist/knowledge/order-risk.d.ts +1 -0
  23. package/dist/knowledge/order-risk.js +1 -1
  24. package/dist/knowledge/order-templates.d.ts +1 -1
  25. package/dist/knowledge/order-templates.js +1 -1
  26. package/dist/knowledge/safety-rules.js +1 -1
  27. package/dist/knowledge/service-ledger.js +1 -1
  28. package/dist/knowledge/service-risk.js +1 -1
  29. package/dist/knowledge/template-registry.js +1 -1
  30. package/dist/knowledge/tools-reference.js +1 -1
  31. package/dist/knowledge/workspace-lists.js +1 -1
  32. package/dist/monitor/MonitorLoop.js +1 -1
  33. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  34. package/dist/playbooks/service-build/context-assembly.d.ts +3 -1
  35. package/dist/playbooks/service-build/context-assembly.js +1 -1
  36. package/dist/playbooks/service-build/machine-nodes.d.ts +2 -0
  37. package/dist/playbooks/service-build/machine-nodes.js +1 -1
  38. package/dist/playbooks/service-build/machine-panorama.d.ts +7 -0
  39. package/dist/playbooks/service-build/machine-panorama.js +1 -1
  40. package/dist/review/machine.js +1 -1
  41. package/dist/safety/confirm-gate.js +1 -1
  42. package/dist/schema/call/allocation.d.ts +5 -0
  43. package/dist/schema/call/arbitration.d.ts +5 -0
  44. package/dist/schema/call/base.d.ts +17 -3
  45. package/dist/schema/call/base.js +1 -1
  46. package/dist/schema/call/bridge.d.ts +29 -0
  47. package/dist/schema/call/bridge.js +1 -1
  48. package/dist/schema/call/contact.d.ts +5 -0
  49. package/dist/schema/call/demand.d.ts +5 -0
  50. package/dist/schema/call/error-codes.d.ts +2 -0
  51. package/dist/schema/call/error-codes.js +1 -0
  52. package/dist/schema/call/guard.d.ts +19 -4
  53. package/dist/schema/call/machine.d.ts +10 -0
  54. package/dist/schema/call/order.d.ts +5 -0
  55. package/dist/schema/call/payment.d.ts +5 -0
  56. package/dist/schema/call/permission.d.ts +5 -0
  57. package/dist/schema/call/personal.d.ts +5 -0
  58. package/dist/schema/call/progress.d.ts +5 -0
  59. package/dist/schema/call/proof.d.ts +10 -0
  60. package/dist/schema/call/repository.d.ts +5 -0
  61. package/dist/schema/call/reward.d.ts +5 -0
  62. package/dist/schema/call/semantic.d.ts +9 -1
  63. package/dist/schema/call/semantic.js +1 -1
  64. package/dist/schema/call/service.d.ts +5 -0
  65. package/dist/schema/call/treasury.d.ts +5 -0
  66. package/dist/schema/common/index.js +1 -1
  67. package/dist/schema/goal/index.d.ts +3 -3
  68. package/dist/schema/goal/planning.d.ts +2 -2
  69. package/dist/schema/index.d.ts +1 -0
  70. package/dist/schema/index.js +1 -1
  71. package/dist/schema/industry-pack/index.d.ts +4 -4
  72. package/dist/schema/industry-pack/modes.d.ts +4 -4
  73. package/dist/schema/interaction/index.d.ts +34 -0
  74. package/dist/schema/interaction/index.js +1 -0
  75. package/dist/schema/local/index.d.ts +558 -0
  76. package/dist/schema/local/index.js +1 -1
  77. package/dist/schema/messenger/index.d.ts +31 -25
  78. package/dist/schema/messenger/index.js +1 -1
  79. package/dist/schema/operations.d.ts +91 -1
  80. package/dist/schema/operations.js +1 -1
  81. package/dist/schema/persona/index.d.ts +2 -2
  82. package/dist/schema/query/bi.d.ts +0 -4
  83. package/dist/schema/query/bi.js +1 -1
  84. package/dist/schema/query/index.js +1 -1
  85. package/dist/schema/schema-query/index.d.ts +1 -1
  86. package/dist/schema/schema-version.js +1 -1
  87. package/dist/schema/trust/index.d.ts +3 -3
  88. package/dist/schema/workspace/index.d.ts +1 -1
  89. package/dist/schema-query-impl/index.js +1 -1
  90. package/dist/schemas/account_operation.output.json +4 -0
  91. package/dist/schemas/ask_user.output.json +54 -0
  92. package/dist/schemas/ask_user.schema.json +78 -0
  93. package/dist/schemas/bridge_operation.output.json +4 -0
  94. package/dist/schemas/bridge_operation.schema.json +50 -5
  95. package/dist/schemas/guard2file.schema.json +10 -1
  96. package/dist/schemas/index.json +13 -1
  97. package/dist/schemas/local_history_operation.output.json +1458 -0
  98. package/dist/schemas/local_history_operation.schema.json +105 -0
  99. package/dist/schemas/local_info_operation.output.json +4 -0
  100. package/dist/schemas/local_mark_operation.output.json +4 -0
  101. package/dist/schemas/machineNode2file.schema.json +10 -1
  102. package/dist/schemas/messenger_operation.output.json +8 -0
  103. package/dist/schemas/messenger_operation.schema.json +8 -0
  104. package/dist/schemas/onchain_events.output.json +2 -2
  105. package/dist/schemas/onchain_operations.output.json +4 -1
  106. package/dist/schemas/onchain_operations.schema.json +210 -28
  107. package/dist/schemas/onchain_operations_allocation.schema.json +10 -1
  108. package/dist/schemas/onchain_operations_arbitration.schema.json +10 -1
  109. package/dist/schemas/onchain_operations_contact.schema.json +10 -1
  110. package/dist/schemas/onchain_operations_demand.schema.json +10 -1
  111. package/dist/schemas/onchain_operations_gen_passport.schema.json +10 -1
  112. package/dist/schemas/onchain_operations_gen_proof.schema.json +10 -1
  113. package/dist/schemas/onchain_operations_guard.schema.json +40 -11
  114. package/dist/schemas/onchain_operations_machine.schema.json +10 -1
  115. package/dist/schemas/onchain_operations_order.schema.json +10 -1
  116. package/dist/schemas/onchain_operations_payment.schema.json +10 -1
  117. package/dist/schemas/onchain_operations_permission.schema.json +10 -1
  118. package/dist/schemas/onchain_operations_personal.schema.json +10 -1
  119. package/dist/schemas/onchain_operations_progress.schema.json +10 -1
  120. package/dist/schemas/onchain_operations_proof.schema.json +10 -1
  121. package/dist/schemas/onchain_operations_repository.schema.json +10 -1
  122. package/dist/schemas/onchain_operations_reward.schema.json +10 -1
  123. package/dist/schemas/onchain_operations_service.schema.json +10 -1
  124. package/dist/schemas/onchain_operations_treasury.schema.json +10 -1
  125. package/dist/schemas/query_toolkit.output.json +17 -16
  126. package/dist/schemas/query_toolkit.schema.json +1 -1
  127. package/dist/tools/handlers/ask-user.d.ts +3 -0
  128. package/dist/tools/handlers/ask-user.js +1 -0
  129. package/dist/tools/handlers/config.js +1 -1
  130. package/dist/tools/handlers/local.d.ts +1 -0
  131. package/dist/tools/handlers/local.js +1 -1
  132. package/dist/tools/handlers/messenger.js +1 -1
  133. package/dist/tools/handlers/onchain.js +1 -1
  134. package/dist/tools/index.d.ts +2 -2
  135. package/dist/tools/index.js +1 -1
  136. package/dist/tools/registry/bridge.js +1 -1
  137. package/dist/tools/registry/business.js +1 -1
  138. package/dist/tools/registry/interaction.d.ts +2 -0
  139. package/dist/tools/registry/interaction.js +1 -0
  140. package/dist/tools/registry/local.js +1 -1
  141. package/dist/tools/registry/monitor.js +1 -1
  142. package/dist/tools/registry/onchain.js +1 -1
  143. package/dist/tools/registry/query.js +1 -1
  144. package/dist/tools/shared.js +1 -1
  145. package/dist/tools/types.d.ts +7 -1
  146. package/dist/tools/wrap.d.ts +3 -3
  147. package/dist/tools/wrap.js +1 -1
  148. package/package.json +2 -2
  149. package/dist/knowledge/allocation-confirm.d.ts +0 -115
  150. package/dist/knowledge/allocation-confirm.js +0 -1
  151. package/dist/knowledge/allocation-context.d.ts +0 -58
  152. package/dist/knowledge/allocation-context.js +0 -1
  153. package/dist/knowledge/allocation-translation.d.ts +0 -72
  154. package/dist/knowledge/allocation-translation.js +0 -1
  155. package/dist/knowledge/arb-confirm.d.ts +0 -28
  156. package/dist/knowledge/arb-confirm.js +0 -1
  157. package/dist/knowledge/arb-translation.d.ts +0 -48
  158. package/dist/knowledge/arb-translation.js +0 -1
  159. package/dist/knowledge/arbitration-confirm.d.ts +0 -135
  160. package/dist/knowledge/arbitration-confirm.js +0 -1
  161. package/dist/knowledge/arbitration-context.d.ts +0 -81
  162. package/dist/knowledge/arbitration-context.js +0 -1
  163. package/dist/knowledge/arbitration-translation.d.ts +0 -91
  164. package/dist/knowledge/arbitration-translation.js +0 -1
  165. package/dist/knowledge/bridge-confirm.d.ts +0 -26
  166. package/dist/knowledge/bridge-confirm.js +0 -1
  167. package/dist/knowledge/bridge-translation.d.ts +0 -37
  168. package/dist/knowledge/bridge-translation.js +0 -1
  169. package/dist/knowledge/contact-confirm.d.ts +0 -27
  170. package/dist/knowledge/contact-confirm.js +0 -1
  171. package/dist/knowledge/contact-translation.d.ts +0 -39
  172. package/dist/knowledge/contact-translation.js +0 -1
  173. package/dist/knowledge/demand-confirm.d.ts +0 -32
  174. package/dist/knowledge/demand-confirm.js +0 -1
  175. package/dist/knowledge/demand-context.d.ts +0 -17
  176. package/dist/knowledge/demand-context.js +0 -1
  177. package/dist/knowledge/demand-ledger.d.ts +0 -26
  178. package/dist/knowledge/demand-ledger.js +0 -1
  179. package/dist/knowledge/demand-puzzle.d.ts +0 -29
  180. package/dist/knowledge/demand-puzzle.js +0 -1
  181. package/dist/knowledge/demand-templates.d.ts +0 -12
  182. package/dist/knowledge/demand-templates.js +0 -1
  183. package/dist/knowledge/demand-translation.d.ts +0 -55
  184. package/dist/knowledge/demand-translation.js +0 -1
  185. package/dist/knowledge/examples-scanner-cli.d.ts +0 -1
  186. package/dist/knowledge/examples-scanner-cli.js +0 -1
  187. package/dist/knowledge/examples-scanner.d.ts +0 -121
  188. package/dist/knowledge/examples-scanner.js +0 -1
  189. package/dist/knowledge/glossary.d.ts +0 -18
  190. package/dist/knowledge/glossary.js +0 -1
  191. package/dist/knowledge/guard-bytecode-spec.d.ts +0 -82
  192. package/dist/knowledge/guard-bytecode-spec.js +0 -1
  193. package/dist/knowledge/guard-confirm.d.ts +0 -86
  194. package/dist/knowledge/guard-confirm.js +0 -1
  195. package/dist/knowledge/immutability.d.ts +0 -11
  196. package/dist/knowledge/immutability.js +0 -1
  197. package/dist/knowledge/machine-confirm.d.ts +0 -102
  198. package/dist/knowledge/machine-confirm.js +0 -1
  199. package/dist/knowledge/machine-context.d.ts +0 -160
  200. package/dist/knowledge/machine-context.js +0 -1
  201. package/dist/knowledge/machine-render.d.ts +0 -41
  202. package/dist/knowledge/machine-render.js +0 -1
  203. package/dist/knowledge/mcp-schema-audit-cli.d.ts +0 -1
  204. package/dist/knowledge/mcp-schema-audit-cli.js +0 -1
  205. package/dist/knowledge/mcp-schema-audit.d.ts +0 -91
  206. package/dist/knowledge/mcp-schema-audit.js +0 -1
  207. package/dist/knowledge/messenger-guard-guidance.d.ts +0 -17
  208. package/dist/knowledge/messenger-guard-guidance.js +0 -1
  209. package/dist/knowledge/order-confirm.d.ts +0 -115
  210. package/dist/knowledge/order-confirm.js +0 -1
  211. package/dist/knowledge/order-context.d.ts +0 -66
  212. package/dist/knowledge/order-context.js +0 -1
  213. package/dist/knowledge/order-translation.d.ts +0 -78
  214. package/dist/knowledge/order-translation.js +0 -1
  215. package/dist/knowledge/overrides-loader.d.ts +0 -13
  216. package/dist/knowledge/overrides-loader.js +0 -1
  217. package/dist/knowledge/passport-confirm.d.ts +0 -130
  218. package/dist/knowledge/passport-confirm.js +0 -1
  219. package/dist/knowledge/passport-context.d.ts +0 -59
  220. package/dist/knowledge/passport-context.js +0 -1
  221. package/dist/knowledge/passport-puzzle.d.ts +0 -108
  222. package/dist/knowledge/passport-puzzle.js +0 -1
  223. package/dist/knowledge/passport-risk.d.ts +0 -70
  224. package/dist/knowledge/passport-risk.js +0 -1
  225. package/dist/knowledge/passport-translation.d.ts +0 -68
  226. package/dist/knowledge/passport-translation.js +0 -1
  227. package/dist/knowledge/payment-confirm.d.ts +0 -26
  228. package/dist/knowledge/payment-confirm.js +0 -1
  229. package/dist/knowledge/payment-translation.d.ts +0 -37
  230. package/dist/knowledge/payment-translation.js +0 -1
  231. package/dist/knowledge/permission-confirm.d.ts +0 -110
  232. package/dist/knowledge/permission-confirm.js +0 -1
  233. package/dist/knowledge/permission-context.d.ts +0 -69
  234. package/dist/knowledge/permission-context.js +0 -1
  235. package/dist/knowledge/permission-translation.d.ts +0 -57
  236. package/dist/knowledge/permission-translation.js +0 -1
  237. package/dist/knowledge/personal-confirm.d.ts +0 -29
  238. package/dist/knowledge/personal-confirm.js +0 -1
  239. package/dist/knowledge/personal-translation.d.ts +0 -37
  240. package/dist/knowledge/personal-translation.js +0 -1
  241. package/dist/knowledge/process-model.d.ts +0 -14
  242. package/dist/knowledge/process-model.js +0 -1
  243. package/dist/knowledge/progress-confirm.d.ts +0 -108
  244. package/dist/knowledge/progress-confirm.js +0 -1
  245. package/dist/knowledge/progress-context.d.ts +0 -123
  246. package/dist/knowledge/progress-context.js +0 -1
  247. package/dist/knowledge/progress-translation.d.ts +0 -52
  248. package/dist/knowledge/progress-translation.js +0 -1
  249. package/dist/knowledge/proof-confirm.d.ts +0 -31
  250. package/dist/knowledge/proof-confirm.js +0 -1
  251. package/dist/knowledge/proof-context.d.ts +0 -17
  252. package/dist/knowledge/proof-context.js +0 -1
  253. package/dist/knowledge/proof-ledger.d.ts +0 -34
  254. package/dist/knowledge/proof-ledger.js +0 -1
  255. package/dist/knowledge/proof-puzzle.d.ts +0 -35
  256. package/dist/knowledge/proof-puzzle.js +0 -1
  257. package/dist/knowledge/proof-templates.d.ts +0 -22
  258. package/dist/knowledge/proof-templates.js +0 -1
  259. package/dist/knowledge/proof-translation.d.ts +0 -52
  260. package/dist/knowledge/proof-translation.js +0 -1
  261. package/dist/knowledge/registrar-confirm.d.ts +0 -26
  262. package/dist/knowledge/registrar-confirm.js +0 -1
  263. package/dist/knowledge/registrar-translation.d.ts +0 -37
  264. package/dist/knowledge/registrar-translation.js +0 -1
  265. package/dist/knowledge/repository-confirm.d.ts +0 -40
  266. package/dist/knowledge/repository-confirm.js +0 -1
  267. package/dist/knowledge/repository-context.d.ts +0 -12
  268. package/dist/knowledge/repository-context.js +0 -1
  269. package/dist/knowledge/repository-ledger.d.ts +0 -25
  270. package/dist/knowledge/repository-ledger.js +0 -1
  271. package/dist/knowledge/repository-puzzle.d.ts +0 -30
  272. package/dist/knowledge/repository-puzzle.js +0 -1
  273. package/dist/knowledge/repository-templates.d.ts +0 -14
  274. package/dist/knowledge/repository-templates.js +0 -1
  275. package/dist/knowledge/repository-translation.d.ts +0 -58
  276. package/dist/knowledge/repository-translation.js +0 -1
  277. package/dist/knowledge/resource-confirm.d.ts +0 -25
  278. package/dist/knowledge/resource-confirm.js +0 -1
  279. package/dist/knowledge/resource-translation.d.ts +0 -37
  280. package/dist/knowledge/resource-translation.js +0 -1
  281. package/dist/knowledge/reward-confirm.d.ts +0 -116
  282. package/dist/knowledge/reward-confirm.js +0 -1
  283. package/dist/knowledge/reward-context.d.ts +0 -127
  284. package/dist/knowledge/reward-context.js +0 -1
  285. package/dist/knowledge/reward-translation.d.ts +0 -58
  286. package/dist/knowledge/reward-translation.js +0 -1
  287. package/dist/knowledge/service-confirm.d.ts +0 -161
  288. package/dist/knowledge/service-confirm.js +0 -1
  289. package/dist/knowledge/service-context.d.ts +0 -66
  290. package/dist/knowledge/service-context.js +0 -1
  291. package/dist/knowledge/service-translation.d.ts +0 -103
  292. package/dist/knowledge/service-translation.js +0 -1
  293. package/dist/knowledge/treasury-confirm.d.ts +0 -133
  294. package/dist/knowledge/treasury-confirm.js +0 -1
  295. package/dist/knowledge/treasury-context.d.ts +0 -64
  296. package/dist/knowledge/treasury-context.js +0 -1
  297. package/dist/knowledge/treasury-translation.d.ts +0 -78
  298. package/dist/knowledge/treasury-translation.js +0 -1
  299. package/dist/knowledge/util-confirm.d.ts +0 -24
  300. package/dist/knowledge/util-confirm.js +0 -1
  301. package/dist/knowledge/util-translation.d.ts +0 -39
  302. package/dist/knowledge/util-translation.js +0 -1
  303. package/dist/loop-engineering/aggregate.d.ts +0 -50
  304. package/dist/loop-engineering/aggregate.js +0 -1
  305. package/dist/loop-engineering/context-collect.d.ts +0 -7
  306. package/dist/loop-engineering/context-collect.js +0 -1
  307. package/dist/loop-engineering/diagnose.d.ts +0 -22
  308. package/dist/loop-engineering/diagnose.js +0 -1
  309. package/dist/loop-engineering/improve.d.ts +0 -55
  310. package/dist/loop-engineering/improve.js +0 -1
  311. package/dist/loop-engineering/index.d.ts +0 -4
  312. package/dist/loop-engineering/index.js +0 -1
  313. package/dist/loop-engineering/pipeline.d.ts +0 -17
  314. package/dist/loop-engineering/pipeline.js +0 -1
  315. package/dist/schema/utils/object-type-utils.d.ts +0 -12
  316. package/dist/schema/utils/object-type-utils.js +0 -1
  317. package/dist/telemetry/index.d.ts +0 -19
  318. package/dist/telemetry/index.js +0 -1
  319. package/dist/telemetry/redact.d.ts +0 -2
  320. package/dist/telemetry/redact.js +0 -1
  321. package/dist/telemetry/storage.d.ts +0 -8
  322. package/dist/telemetry/storage.js +0 -1
@@ -1 +1 @@
1
- import{aggregateIndustryMetrics,evaluateIndustryHealth,suggestIndustryUpdate}from'./industry-evolution.js';import{getIndustryProfile,resolveIndustryName}from'./industry-registry.js';import{evaluateIndustryHealthByIntent,suggestIndustryUpdateByIntent,getRoleAdvice,filterSuggestionsByRole,getIntentProfile}from'./intent-metrics.js';import{existsSync,mkdirSync,readFileSync,writeFileSync}from'fs';import{dirname,join}from'path';import{getWowMcpDir}from'@wowok/wowok';export const FLYWHEEL_LOOP_VERSION=0x2;const MIN_SIGNALS_FOR_EVOLUTION=0xa,DEFAULT_SCHEDULE={'mode':'semi_realtime','signal_threshold':0x14,'time_interval_ms':0x5*0x3c*0x3e8,'auto_apply':![]},industrySchedules=new Map(),industryLastUpdate=new Map(),industryIntent=new Map(),signalBuffer=new Map(),decisionContexts=new Map(),latestMetrics=new Map(),latestHealth=new Map(),pendingSuggestions=new Map();export function recordIndustrySignal(a,b,c){if(!a)return;const d=resolveIndustryName(a)??a,e={'industry':d,'operation_type':b['type'],'success':c['success'],'error_code':c['error_code'],'timestamp':Date['now']()},f=sanitizeSignal(e),g=signalBuffer['get'](d)??[];g['push'](f),signalBuffer['set'](d,g),tryMaybeAutoTrigger(d,g['length']);}function tryMaybeAutoTrigger(a,b){const c=industrySchedules['get'](a)??DEFAULT_SCHEDULE;if(c['mode']==='manual')return;const d=Date['now'](),e=industryLastUpdate['get'](a)??0x0;if(c['mode']==='realtime'){b>=MIN_SIGNALS_FOR_EVOLUTION&&b%MIN_SIGNALS_FOR_EVOLUTION===0x0&&doAutoUpdate(a,c);return;}if(c['mode']==='semi_realtime'){const f=c['signal_threshold']??0x14,g=c['time_interval_ms']??0x5*0x3c*0x3e8,h=b>=f&&b%f===0x0,i=e>0x0&&d-e>=g;(h||i)&&doAutoUpdate(a,c);}}function doAutoUpdate(a,b){try{const c=updateIndustryCognition(a);industryLastUpdate['set'](a,Date['now']());if(b['auto_apply']&&c['suggestions_generated']>0x0){const d=pendingSuggestions['get'](a)??[],{applyIndustryUpdate:e}=require('./industry-evolution.js');for(const f of d){try{e(a,f);}catch{}}}}catch{}}export function setEvolutionSchedule(a,b){if(!a)return;const c=resolveIndustryName(a)??a;industrySchedules['set'](c,b);}export function getEvolutionSchedule(a){const b=resolveIndustryName(a)??a;return industrySchedules['get'](b)??DEFAULT_SCHEDULE;}export function setIndustryIntent(a,b){if(!a)return;const c=resolveIndustryName(a)??a;industryIntent['set'](c,b);}export function getIndustryIntent(a){const b=resolveIndustryName(a)??a;return industryIntent['get'](b)??'default';}export function getIndustrySignalCount(a){const b=resolveIndustryName(a)??a;return signalBuffer['get'](b)?.['length']??0x0;}export function getIndustrySignals(a){const b=resolveIndustryName(a)??a;return[...signalBuffer['get'](b)??[]];}export function listIndustriesWithSignals(){return Array['from'](signalBuffer['keys']());}export function getPendingSuggestions(a){const b=resolveIndustryName(a)??a;return[...pendingSuggestions['get'](b)??[]];}export function recordDecisionContext(a,b){if(!a['id']||!a['node_id'])return;decisionContexts['set'](a['id'],a);if(b)try{b['attachDecisionContext'](a['node_id'],{'id':a['id'],'decided_at':a['decided_at'],'decider':a['decider'],'industry':a['industry'],'intent':a['intent'],'alternatives':a['alternatives'],'rationale':a['rationale'],'outcome':a['outcome']});}catch{}}export function queryDecisionsByIndustry(a){const b=resolveIndustryName(a)??a;return Array['from'](decisionContexts['values']())['filter'](c=>c['industry']===b)['sort']((c,d)=>d['decided_at']-c['decided_at']);}export function queryDecisionsByNode(a){return Array['from'](decisionContexts['values']())['filter'](b=>b['node_id']===a)['sort']((c,d)=>d['decided_at']-c['decided_at']);}export function backfillDecisionOutcome(a,b){const c=decisionContexts['get'](a);if(!c)return![];return c['outcome']=b,!![];}export function updateIndustryCognition(a,b){const c=resolveIndustryName(a)??a,d=signalBuffer['get'](c)??[],e={'industry':c,'metrics_updated':![],'health_recomputed':![],'suggestions_generated':0x0,'evolution_ready':d['length']>=MIN_SIGNALS_FOR_EVOLUTION};if(d['length']<MIN_SIGNALS_FOR_EVOLUTION&&(!b||b['length']===0x0))return e;let f;if(b&&b['length']>0x0)f=aggregateIndustryMetrics(c,b);else{const j=d['map'](k=>({'industry':c,'completed':k['success'],'has_dispute':!!k['error_code']&&k['error_code']['includes']('dispute'),'has_refund':!!k['error_code']&&k['error_code']['includes']('refund'),'ticket_size':0x0n,'timestamp':k['timestamp']}));f=aggregateIndustryMetrics(c,j);}latestMetrics['set'](c,f),e['metrics_updated']=!![];const g=industryIntent['get'](c)??'default';let h,i;return g!=='default'?(h=evaluateIndustryHealthByIntent(c,f,g),i=suggestIndustryUpdateByIntent(c,f,g)):(h=evaluateIndustryHealth(c,f),i=suggestIndustryUpdate(c,f)),latestHealth['set'](c,h),e['health_recomputed']=!![],pendingSuggestions['set'](c,i),e['suggestions_generated']=i['length'],e;}export function injectEvolutionContext(a,b,c){if(!b)return{'confidence':0x0};const d=resolveIndustryName(b)??b,e=getIndustryProfile(d);if(!e)return{'confidence':0x0,'industry_signal':'Industry\x20'+d+'\x20is\x20not\x20yet\x20registered;\x20recommend\x20synthesizing\x20a\x20profile\x20via\x20the\x20generalizer\x20engine'};const f=latestHealth['get'](d),g=latestMetrics['get'](d),h=pendingSuggestions['get'](d)??[],i=signalBuffer['get'](d)?.['length']??0x0,j=industryIntent['get'](d)??'default',k=[];let l,m=0.5;f&&(k['push']('Industry\x20health\x20'+f['health_score']+'/100\x20('+f['level']+')'),m=Math['max'](m,0.7),f['weaknesses']['length']>0x0&&(l='Weakness:\x20'+f['weaknesses'][0x0]),f['recommendations']['length']>0x0&&(l=l?l+';\x20recommendation:\x20'+f['recommendations'][0x0]:'Recommendation:\x20'+f['recommendations'][0x0]));g&&g['anomalies']['length']>0x0&&(k['push']('Anomaly:\x20'+g['anomalies'][0x0]),m=Math['max'](m,0.8));i>0x0&&k['push']('Accumulated\x20'+i+'\x20industry\x20signals');j!=='default'&&k['push']('Current\x20intent:\x20'+j);if(!l&&h['length']>0x0){const p=h['find'](q=>q['priority']==='high')??h[0x0];l=p['suggestion_type']+':\x20'+p['evidence'],m=Math['max'](m,p['confidence']);}let n,o=h;if(c){const q=getIntentProfile(j);q&&(n=getRoleAdvice(j,c));const r=q?.['suggestion_triggers']??[];o=filterSuggestionsByRole(h,c,r);if(o['length']>0x0){const s=o['find'](t=>t['priority']==='high')??o[0x0];l=s['suggestion_type']+'\x20('+c+'):\x20'+s['evidence'];}}return{'industry_signal':k['length']>0x0?k['join'](';\x20'):undefined,'evolution_advice':l,'confidence':m,'health_score':f?.['health_score'],'pending_suggestions':o['length'],'intent':j!=='default'?j:undefined,'role_advice':n&&n['length']>0x0?n:undefined,'role':c};}export function getIndustryEvolutionStatus(a){const b=resolveIndustryName(a)??a,c=getIndustryProfile(b);return{'industry':b,'version':c?.['version']??'v0','last_updated':c?.['evolution']?.['last_updated']??0x0,'signal_count':signalBuffer['get'](b)?.['length']??0x0,'health':latestHealth['get'](b),'pending_suggestions':pendingSuggestions['get'](b)?.['length']??0x0,'evolution_ready':(signalBuffer['get'](b)?.['length']??0x0)>=MIN_SIGNALS_FOR_EVOLUTION};}export const EVOLUTION_STATE_VERSION=0x1;function evolutionStateFilePath(){return join(getWowMcpDir(),'evolution-state.json');}export function saveEvolutionState(){const a=evolutionStateFilePath(),b=dirname(a);if(!existsSync(b))mkdirSync(b,{'recursive':!![]});const c={'version':EVOLUTION_STATE_VERSION,'saved_at':Date['now'](),'signal_buffer':Object['fromEntries'](signalBuffer),'decision_contexts':Object['fromEntries'](decisionContexts),'latest_metrics':Object['fromEntries'](latestMetrics),'latest_health':Object['fromEntries'](latestHealth),'pending_suggestions':Object['fromEntries'](pendingSuggestions),'industry_schedules':Object['fromEntries'](industrySchedules),'industry_last_update':Object['fromEntries'](industryLastUpdate),'industry_intent':Object['fromEntries'](industryIntent)},d=(e,f)=>{if(typeof f==='bigint')return{'__bigint__':f['toString']()};return f;};return writeFileSync(a,JSON['stringify'](c,d,0x2),'utf-8'),a;}export function loadEvolutionState(){const a=evolutionStateFilePath();if(!existsSync(a))return![];try{const b=readFileSync(a,'utf-8'),c=(e,f)=>{if(f&&typeof f==='object'&&'__bigint__'in f)return BigInt(f['__bigint__']);return f;},d=JSON['parse'](b,c);if(!d||d['version']!==EVOLUTION_STATE_VERSION)return![];_resetFlywheelLoopForTest();for(const [e,f]of Object['entries'](d['signal_buffer'])){signalBuffer['set'](e,f);}for(const [g,h]of Object['entries'](d['decision_contexts'])){decisionContexts['set'](g,h);}for(const [i,j]of Object['entries'](d['latest_metrics'])){latestMetrics['set'](i,j);}for(const [l,m]of Object['entries'](d['latest_health'])){latestHealth['set'](l,m);}for(const [n,o]of Object['entries'](d['pending_suggestions'])){pendingSuggestions['set'](n,o);}for(const [p,q]of Object['entries'](d['industry_schedules'])){industrySchedules['set'](p,q);}for(const [r,s]of Object['entries'](d['industry_last_update'])){industryLastUpdate['set'](r,s);}for(const [t,u]of Object['entries'](d['industry_intent'])){industryIntent['set'](t,u);}return!![];}catch{return![];}}export function hasPersistedEvolutionState(){return existsSync(evolutionStateFilePath());}export function sanitizeSignal(a){return{'industry':a['industry'],'operation_type':a['operation_type'],'success':a['success'],'error_code':a['error_code'],'timestamp':a['timestamp'],'decision_context_id':a['decision_context_id']};}export function checkAndTriggerCognitionUpdate(a){return updateIndustryCognition(a);}export function _resetFlywheelLoopForTest(){signalBuffer['clear'](),decisionContexts['clear'](),latestMetrics['clear'](),latestHealth['clear'](),pendingSuggestions['clear'](),industrySchedules['clear'](),industryLastUpdate['clear'](),industryIntent['clear']();}export function _snapshotSignalBuffer(){return Object['fromEntries'](signalBuffer);}export{MIN_SIGNALS_FOR_EVOLUTION as FLYWHEEL_LOOP_MIN_SIGNALS};
1
+ import{aggregateIndustryMetrics,evaluateIndustryHealth,suggestIndustryUpdate}from'./industry-evolution.js';import{getIndustryProfile,resolveIndustryName}from'./industry-registry.js';import{getRoleAdvice,filterSuggestionsByRole,getIntentProfile}from'./intent-metrics.js';export const FLYWHEEL_LOOP_VERSION=0x3;export const MIN_SIGNALS_FOR_EVOLUTION=0xa;const SEMI_REALTIME_SIGNAL_THRESHOLD=0x14,SEMI_REALTIME_INTERVAL_MS=0x5*0x3c*0x3e8,signalBuffer=new Map(),latestMetrics=new Map(),latestHealth=new Map(),pendingSuggestions=new Map(),industryLastUpdate=new Map();export function recordIndustrySignal(a,b,c){if(!a)return;const d=resolveIndustryName(a)??a,e={'industry':d,'operation_type':b['type'],'success':c['success'],'error_code':c['error_code'],'timestamp':Date['now']()},f=signalBuffer['get'](d)??[];f['push'](e),signalBuffer['set'](d,f),tryMaybeAutoTrigger(d,f['length']);}function tryMaybeAutoTrigger(a,b){const c=Date['now'](),d=industryLastUpdate['get'](a)??0x0,e=b>=SEMI_REALTIME_SIGNAL_THRESHOLD&&b%SEMI_REALTIME_SIGNAL_THRESHOLD===0x0,f=d>0x0&&c-d>=SEMI_REALTIME_INTERVAL_MS;(e||f)&&doAutoUpdate(a);}function doAutoUpdate(a){try{updateIndustryCognition(a),industryLastUpdate['set'](a,Date['now']());}catch{}}export function updateIndustryCognition(a,b){const c=resolveIndustryName(a)??a,d=signalBuffer['get'](c)??[],e={'industry':c,'metrics_updated':![],'health_recomputed':![],'suggestions_generated':0x0,'evolution_ready':d['length']>=MIN_SIGNALS_FOR_EVOLUTION};if(d['length']<MIN_SIGNALS_FOR_EVOLUTION&&(!b||b['length']===0x0))return e;let f;if(b&&b['length']>0x0)f=aggregateIndustryMetrics(c,b);else{const i=d['map'](j=>({'industry':c,'completed':j['success'],'has_dispute':!!j['error_code']&&j['error_code']['includes']('dispute'),'has_refund':!!j['error_code']&&j['error_code']['includes']('refund'),'ticket_size':0x0n,'timestamp':j['timestamp']}));f=aggregateIndustryMetrics(c,i);}latestMetrics['set'](c,f),e['metrics_updated']=!![];const g=evaluateIndustryHealth(c,f),h=suggestIndustryUpdate(c,f);return latestHealth['set'](c,g),e['health_recomputed']=!![],pendingSuggestions['set'](c,h),e['suggestions_generated']=h['length'],e;}export function injectEvolutionContext(a,b,c){if(!b)return{'confidence':0x0};const d=resolveIndustryName(b)??b,e=getIndustryProfile(d);if(!e)return{'confidence':0x0,'industry_signal':'Industry\x20'+d+'\x20is\x20not\x20yet\x20registered;\x20recommend\x20synthesizing\x20a\x20profile\x20via\x20the\x20generalizer\x20engine'};const f=latestHealth['get'](d),g=latestMetrics['get'](d),h=pendingSuggestions['get'](d)??[],i=signalBuffer['get'](d)?.['length']??0x0,j=[];let k,l=0.5;f&&(j['push']('Industry\x20health\x20'+f['health_score']+'/100\x20('+f['level']+')'),l=Math['max'](l,0.7),f['weaknesses']['length']>0x0&&(k='Weakness:\x20'+f['weaknesses'][0x0]),f['recommendations']['length']>0x0&&(k=k?k+';\x20recommendation:\x20'+f['recommendations'][0x0]:'Recommendation:\x20'+f['recommendations'][0x0]));g&&g['anomalies']['length']>0x0&&(j['push']('Anomaly:\x20'+g['anomalies'][0x0]),l=Math['max'](l,0.8));i>0x0&&j['push']('Accumulated\x20'+i+'\x20industry\x20signals');if(!k&&h['length']>0x0){const o=h['find'](p=>p['priority']==='high')??h[0x0];k=o['suggestion_type']+':\x20'+o['evidence'],l=Math['max'](l,o['confidence']);}let m,n=h;if(c){const p=getIntentProfile('default');p&&(m=getRoleAdvice('default',c));const q=p?.['suggestion_triggers']??[];n=filterSuggestionsByRole(h,c,q);if(n['length']>0x0){const r=n['find'](t=>t['priority']==='high')??n[0x0];k=r['suggestion_type']+'\x20('+c+'):\x20'+r['evidence'];}}return{'industry_signal':j['length']>0x0?j['join'](';\x20'):undefined,'evolution_advice':k,'confidence':l,'health_score':f?.['health_score'],'pending_suggestions':n['length'],'role_advice':m&&m['length']>0x0?m:undefined,'role':c};}export function sanitizeSignal(a){return{'industry':a['industry'],'operation_type':a['operation_type'],'success':a['success'],'error_code':a['error_code'],'timestamp':a['timestamp'],'decision_context_id':a['decision_context_id']};}export function _resetFlywheelLoopForTest(){signalBuffer['clear'](),latestMetrics['clear'](),latestHealth['clear'](),pendingSuggestions['clear'](),industryLastUpdate['clear']();}export function _snapshotSignalBuffer(){return Object['fromEntries'](signalBuffer);}export{MIN_SIGNALS_FOR_EVOLUTION as FLYWHEEL_LOOP_MIN_SIGNALS};
@@ -1 +1 @@
1
- import{validateGuardData,MAX_DESCRIPTION_LENGTH,MAX_TABLE_SIZE}from'@wowok/wowok';import{assessGuardRisks}from'./guard-risk.js';import{findScene,inferSceneFromAction}from'./guard-ledger.js';import{suggestTemplateForScene}from'./guard-templates.js';function deepClone(a){return JSON['parse'](JSON['stringify'](a));}function rootToString(a){return JSON['stringify'](a);}function hasSignerContext(a){const b=rootToString(a);return b['includes']('\x22Signer\x22')||b['includes']('\x22context\x22:\x22Signer\x22')||b['includes']('\x22context\x22:\x20\x22Signer\x22');}function getSubmissionEntries(a){return a['filter'](b=>b['b_submission']===!![]);}function inferValueType(a){if(typeof a==='string'){if(a['startsWith']('0x')&&a['length']>=0x3)return'Address';return'String';}if(typeof a==='number'){if(Number['isInteger'](a)){if(a>=0x0&&a<=0xff)return'U8';if(a>=0x0&&a<=0xffff)return'U16';return'U64';}return'U256';}if(typeof a==='boolean')return'Bool';if(Array['isArray'](a)){if(a['length']>0x0){const b=inferValueType(a[0x0]);if(b==='Address')return'Vec<Address>';if(b==='String')return'Vec<String>';if(b==='Bool')return'Vec<Bool>';}return'Vec<Address>';}return undefined;}function sdkIssueToDiagnostic(a){return{'code':a['code'],'message':a['message'],'severity':a['severity'],'source':'sdk','location':{'path':a['path']},'fix':{'description':'SDK\x20validation\x20failed\x20('+(a['sdk_error']??'InvalidParam')+');\x20manual\x20fix\x20required','auto_fixable':![]}};}async function checkSdkSyntax(a){const b=a['table']['map'](d=>({'identifier':d['identifier'],'b_submission':d['b_submission']??![],'value_type':d['value_type']??'Address','value':d['value'],'name':d['name']??''})),c=await validateGuardData({'description':a['description'],'table':b,'root':a['root'],'rely':a['rely']});return c['map'](sdkIssueToDiagnostic);}function checkSemanticErrors(a){const b=[],{table:c,root:d,binding_hint:e}=a,f=e?findScene(e['host_object']??'',e['binding_field']??''):undefined,g=getSubmissionEntries(c);if(g['length']>0x0&&d&&!hasSignerContext(d)){const h=g['some'](j=>j['value_type']==='Address'),i=f?.['id']==='service_order_allocators_guard'&&e?.['sharing_recipients']!==undefined&&e['sharing_recipients']['length']>0x0&&!e['sharing_recipients']['includes']('Signer');if(h&&!i){const j=g['filter'](k=>k['value_type']==='Address')['map'](k=>c['indexOf'](k));b['push']({'code':'LE-04','message':'Submitted\x20data\x20has\x20no\x20Signer\x20binding\x20(submission\x20forgery\x20risk)','severity':'error','source':'lint','location':{'path':j['map'](k=>'/table/'+k)['join']('\x20→\x20')},'fix':{'description':'Add\x20logic_equal(context(Signer),\x20identifier[N])\x20in\x20root\x20to\x20bind\x20the\x20submitter\x20identity','auto_fixable':![]}});}}if(f?.['id']==='arbitration_voting_guard'){const k=g['some'](l=>['U8','U16','U32','U64','U128','U256']['includes'](l['value_type']??''));if(k){const l=g['filter'](m=>['U8','U16','U32','U64','U128','U256']['includes'](m['value_type']??''))['map'](m=>c['indexOf'](m));b['push']({'code':'LE-05','message':'voting_guard\x20voting\x20weight\x20comes\x20from\x20submitted\x20data\x20(weight\x20forgery\x20risk)','severity':'error','source':'lint','location':{'path':l['map'](m=>'/table/'+m)['join']('\x20→\x20')},'fix':{'description':'Derive\x20arbitrator\x20weights\x20from\x20the\x20Arb\x20object\x20via\x20witness\x20(e.g.\x20105\x20TypeArbArbitration)\x20rather\x20than\x20submitting\x20them\x20directly','auto_fixable':![]}});}}if(f?.['id']==='gen_passport_guard'||e?.['action']==='gen_passport'){const m=rootToString(d);if(m['includes']('1167')||m['includes']('repository.data')){const n=m['includes']('quote_guard');n&&b['push']({'code':'LE-06','message':'repository.data\x20query\x20with\x20quote_guard:\x20rigid\x20verification\x20requirement\x20—\x20ensure\x20Passport\x20includes\x20quote_guard\x20verification\x20with\x20necessary\x20submissions\x20(e.g.,\x20Payment\x20proof)','severity':'info','source':'lint','location':{'path':'/root'},'fix':{'description':'Ensure\x20the\x20quote_guard\x20is\x20verified:\x20user\x20submits\x20Payment\x20via\x20Passport,\x20quote_guard\x20verifies\x20Payment\x20fields,\x20repository\x20data\x20query\x20passes','auto_fixable':![]}});}}if(e?.['host_object']&&f){const o=e['host_object'],p=c['filter'](q=>!q['b_submission']&&q['value_type']==='Address'&&typeof q['value']==='string'&&q['value']['startsWith']('0x')&&q['object_type']===o);if(p['length']>0x0){const q=p['map'](r=>c['indexOf'](r));b['push']({'code':'LE-07','message':'Circular\x20reference\x20uses\x20an\x20address\x20rather\x20than\x20a\x20name\x20(Host\x20Object\x20may\x20not\x20be\x20published\x20yet\x20when\x20the\x20Guard\x20is\x20created)','severity':'error','source':'lint','location':{'path':q['map'](r=>'/table/'+r+'/value')['join']('\x20→\x20')},'fix':{'description':'Change\x20value\x20from\x20an\x20address\x20to\x20an\x20object\x20name\x20(e.g.\x20\x22service1\x22);\x20the\x20SDK\x20will\x20resolve\x20it\x20to\x20an\x20address\x20after\x20the\x20Host\x20Object\x20is\x20published','auto_fixable':![]}});}}return b;}function checkSyntaxHints(a){const b=[],{table:c}=a;(!a['description']||a['description']['trim']()==='')&&b['push']({'code':'SH-01','message':'description\x20is\x20missing\x20or\x20empty','severity':'info','source':'lint','location':{'path':'/description'},'fix':{'description':'Add\x20a\x20description,\x20e.g.\x20\x27Service\x20buy_guard:\x20whitelist\x20validation\x27','auto_fixable':!![]}});for(let d=0x0;d<c['length'];d++){const e=c[d];(!e['name']||e['name']['trim']()==='')&&b['push']({'code':'SH-03','message':'table['+d+']\x20is\x20missing\x20name','severity':'warning','source':'lint','location':{'path':'/table/'+d+'/name'},'fix':{'description':'Add\x20a\x20name,\x20e.g.\x20\x22data\x20entry\x20'+e['identifier']+'\x22','auto_fixable':!![]}});}for(let f=0x0;f<c['length'];f++){const g=c[f];!g['value_type']&&b['push']({'code':'SH-05','message':'table['+f+']\x20is\x20missing\x20value_type','severity':'warning','source':'lint','location':{'path':'/table/'+f+'/value_type'},'fix':{'description':'Infer\x20value_type\x20from\x20value\x20(e.g.\x20Address/String/U64,\x20etc.)','auto_fixable':!![]}});}c['length']>MAX_TABLE_SIZE&&b['push']({'code':'SH-07','message':'table\x20entry\x20count\x20'+c['length']+'\x20exceeds\x20the\x20maximum\x20limit\x20'+MAX_TABLE_SIZE,'severity':'error','source':'lint','location':{'path':'/table'},'fix':{'description':'Slim\x20down\x20the\x20table\x20by\x20merging\x20similar\x20entries,\x20or\x20split\x20into\x20multiple\x20Guards\x20+\x20rely','auto_fixable':![]}});for(let h=0x0;h<c['length'];h++){c[h]['b_submission']===undefined&&b['push']({'code':'SH-10','message':'table['+h+']\x20b_submission\x20is\x20missing','severity':'info','source':'lint','location':{'path':'/table/'+h+'/b_submission'},'fix':{'description':'Set\x20to\x20false\x20(constant)\x20or\x20true\x20(submitted\x20data)','auto_fixable':!![]}});}for(let j=0x0;j<c['length'];j++){const k=c[j];k['b_submission']===!![]&&k['value']!==undefined&&k['value']!==null&&b['push']({'code':'SH-11','message':'table['+j+']\x20has\x20a\x20redundant\x20value\x20field\x20on\x20b_submission=true\x20entry\x20(the\x20verifier\x20supplies\x20the\x20value\x20at\x20runtime;\x20this\x20value\x20is\x20ignored\x20by\x20BCS\x20encoding\x20and\x20wastes\x20gas)','severity':'warning','source':'lint','location':{'path':'/table/'+j+'/value'},'fix':{'description':'Remove\x20the\x20value\x20field\x20—\x20it\x20is\x20ignored\x20for\x20b_submission=true\x20entries','auto_fixable':!![]}});}return b;}function checkSuggestions(a){const b=[],{root:c,binding_hint:d,table:e}=a;if(c){const g=rootToString(c);if(g['includes']('vec_contains_address')&&g['includes']('Signer'))b['push']({'code':'SG-01','message':'Matches\x20Pattern\x20P04\x20(whitelist\x20validation)','severity':'hint','source':'lint','location':{'path':'/root'},'fix':{'description':'Refer\x20to\x20the\x20P04\x20Pattern\x20to\x20ensure\x20best\x20practices','auto_fixable':![]}});else{if(g['includes']('logic_equal')&&g['includes']('Signer')){const h=e['some'](i=>!i['b_submission']&&i['value_type']==='Address'&&typeof i['value']==='string'&&i['value']['length']>0x0);h&&b['push']({'code':'SG-01','message':'Matches\x20Pattern\x20P04\x20(whitelist\x20validation\x20—\x20single-address\x20variant)','severity':'hint','source':'lint','location':{'path':'/root'},'fix':{'description':'P04\x20single-address\x20form;\x20for\x20multi-address\x20scenarios,\x20consider\x20vec_contains_address','auto_fixable':![]}});}}(g['includes']('logic_as_u256_greater')||g['includes']('logic_as_u256_lesser'))&&b['push']({'code':'SG-01','message':'Matches\x20Pattern\x20P02\x20(numeric\x20threshold\x20validation)','severity':'hint','source':'lint','location':{'path':'/root'},'fix':{'description':'Suitable\x20for\x20amount/quantity\x20threshold\x20validation\x20scenarios','auto_fixable':![]}}),g['includes']('convert_witness')&&b['push']({'code':'SG-01','message':'Matches\x20Pattern\x20P09\x20(witness-derived\x20validation)','severity':'hint','source':'lint','location':{'path':'/root'},'fix':{'description':'Suitable\x20for\x20cross-object\x20relationship\x20validation\x20(e.g.\x20Order→Progress)','auto_fixable':![]}});}if(d?.['action']){const i=['buy','forward','allocate','claim_reward','vote','dispute','write_repository','submit_progress','gen_passport'];if(i['includes'](d['action'])){const j=inferSceneFromAction(d['action']);if(j){const k=suggestTemplateForScene(j['id']);k&&b['push']({'code':'SG-02','message':'Recommended\x20scene\x20template:\x20'+k['name'],'severity':'hint','source':'lint','location':{'path':'/'},'fix':{'description':'Refer\x20to\x20template\x20'+k['id']+'\x20('+k['example_use_case']+')','auto_fixable':![]}});}}}const f=getSubmissionEntries(e);for(const l of f){const m=l['name']??'';if(m['length']<0xa||/^[a-z_]+$/i['test'](m)){const n=e['indexOf'](l);b['push']({'code':'SG-03','message':'table['+n+']\x20submitted\x20data\x20has\x20a\x20vague\x20name\x20description','severity':'info','source':'lint','location':{'path':'/table/'+n+'/name'},'fix':{'description':'Use\x20a\x20full\x20natural-language\x20description\x20(≥10\x20characters),\x20e.g.\x20\x27user-submitted\x20operation\x20type\x20(return/damage)\x27','auto_fixable':![]}});}}if(c){const o=rootToString(c),p=o['includes']('proof.signer'),q=o['includes']('proof.time'),r=o['includes']('calc_string_length'),s=f['some'](t=>t['value_type']==='String');if(p&&q)b['push']({'code':'SG-04','message':'Strict-mode\x20privacy-delivery\x20guard\x20detected\x20(proof.signer\x20+\x20proof.time).\x20'+'Recommended\x20three\x20conditions:\x20Signer==proof.signer\x20(submitter\x20accountability),\x20'+'proof.time>order.time\x20(freshness),\x20order.service==service\x20(project\x20binding).\x20'+'No\x20content\x20verification\x20—\x20only\x20submission\x20responsibility\x20(\x27whoever\x20benefits\x20bears\x20the\x20burden\x20of\x20proof\x27).','severity':'info','source':'lint','location':{'path':'/root'},'fix':{'description':'Ensure\x20all\x20three\x20conditions\x20are\x20present\x20(logic_and).\x20Refer\x20to\x20template\x20tpl_forward_privacy_delivery_proof.\x20'+'Query\x20IDs:\x20proof.signer=1958,\x20proof.time=1960,\x20order.time=1574,\x20order.service=1563.','auto_fixable':![]}});else r&&s&&b['push']({'code':'SG-04','message':'Broad-mode\x20privacy-delivery\x20guard\x20detected\x20(String\x20submission\x20+\x20length\x20check,\x20e.g.\x20Merkle\x20Root\x20length\x20==\x2066).\x20'+'This\x20trusts\x20the\x20submitter\x27s\x20honesty;\x20the\x20counterparty\x20can\x20dispute\x20by\x20checking\x20their\x20own\x20Messenger\x20conversation.\x20'+'Suitable\x20as\x20an\x20arbitration\x20basis,\x20not\x20a\x20fund-flow\x20gate.','severity':'info','source':'lint','location':{'path':'/root'},'fix':{'description':'For\x20stronger\x20assurance,\x20consider\x20strict\x20mode:\x20submit\x20a\x20Proof\x20object\x20address\x20(from\x20messenger.submitChainProof)\x20+\x20'+'Order\x20address,\x20then\x20verify\x20proof.signer/proof.time/order.service.\x20See\x20template\x20tpl_forward_privacy_delivery_proof.','auto_fixable':![]}});}return b;}export function autoFixGuard(a){const b=deepClone(a),c=[];(!b['description']||b['description']['trim']()==='')&&(b['description']='Guard\x20(table:\x20'+b['table']['length']+'\x20items,\x20root:\x20'+(b['root']?.['type']??'unknown')+')',c['push']({'diagnostic_code':'SH-01','description':'Fill\x20in\x20default\x20description','after':b['description'],'path':'/description'}));if(b['description']&&b['description']['length']>MAX_DESCRIPTION_LENGTH){const f=b['description'];b['description']=b['description']['substring'](0x0,MAX_DESCRIPTION_LENGTH),c['push']({'diagnostic_code':'G-001','description':'Truncate\x20description\x20to\x20'+MAX_DESCRIPTION_LENGTH+'\x20characters','before':f['length']+'\x20characters','after':b['description']['length']+'\x20characters','path':'/description'});}for(let g=0x0;g<b['table']['length'];g++){const h=b['table'][g];(!h['name']||h['name']['trim']()==='')&&(h['name']='data\x20entry\x20'+h['identifier'],c['push']({'diagnostic_code':'SH-03','description':'table['+g+']\x20fill\x20in\x20name','after':h['name'],'path':'/table/'+g+'/name'}));}for(let j=0x0;j<b['table']['length'];j++){const k=b['table'][j];if(!k['value_type']&&k['value']!==undefined&&k['value']!==null){const l=inferValueType(k['value']);l&&(k['value_type']=l,c['push']({'diagnostic_code':'SH-05','description':'table['+j+']\x20infer\x20value_type','after':l,'path':'/table/'+j+'/value_type'}));}}const d=new Map();let e=0x0;for(let m=0x0;m<b['table']['length'];m++){const n=b['table'][m];if(!d['has'](n['identifier']))d['set'](n['identifier'],e),n['identifier']!==e&&c['push']({'diagnostic_code':'G-007','description':'table['+m+']\x20identifier\x20'+n['identifier']+'\x20→\x20'+e,'before':String(n['identifier']),'after':String(e),'path':'/table/'+m+'/identifier'}),n['identifier']=e,e++;else{const o=n['identifier'];n['identifier']=e,d['set'](o,e),c['push']({'diagnostic_code':'G-007','description':'table['+m+']\x20identifier\x20'+o+'\x20duplicate\x20→\x20reallocated\x20to\x20'+e,'before':String(o),'after':String(e),'path':'/table/'+m+'/identifier'}),e++;}}for(let p=0x0;p<b['table']['length'];p++){const q=b['table'][p];q['b_submission']===undefined&&(q['b_submission']=![],c['push']({'diagnostic_code':'SH-10','description':'table['+p+']\x20b_submission\x20default\x20set\x20to\x20false','after':'false','path':'/table/'+p+'/b_submission'}));}if(b['rely']?.['guards']&&b['rely']['guards']['length']>0x0){const r=[...new Set(b['rely']['guards'])];r['length']!==b['rely']['guards']['length']&&(c['push']({'diagnostic_code':'G-009','description':'rely\x20deduplicate:\x20'+b['rely']['guards']['length']+'\x20→\x20'+r['length'],'before':JSON['stringify'](b['rely']['guards']),'after':JSON['stringify'](r),'path':'/rely/guards'}),b['rely']['guards']=r);}for(let s=0x0;s<b['table']['length'];s++){const t=b['table'][s];if(t['b_submission']===!![]&&t['value']!==undefined&&t['value']!==null){const u=JSON['stringify'](t['value']);delete t['value'],c['push']({'diagnostic_code':'SH-11','description':'table['+s+']\x20remove\x20redundant\x20value\x20on\x20b_submission=true\x20entry','before':u,'after':'(removed)','path':'/table/'+s+'/value'});}}return{'fixed':b,'actions':c};}export async function lintGuard(a,b){const c=b?.['auto_fix']??!![],{table:d,root:e,rely:f,binding_hint:g}=a,h=[];let i;const j=await checkSdkSyntax(a);h['push'](...j);const k=checkSemanticErrors(a);h['push'](...k);const l=checkSyntaxHints(a);h['push'](...l);let m,n=[];if(c){const {fixed:v,actions:w}=autoFixGuard(a);w['length']>0x0&&(m=v,n=w);}if(d['length']>0x0&&e){const x=g?findScene(g['host_object']??'',g['binding_field']??''):undefined,y=d['map'](z=>({'identifier':z['identifier'],'b_submission':z['b_submission']??![],'value_type':z['value_type']??'Address','value':z['value'],'name':z['name'],'object_type':z['object_type']}));i=assessGuardRisks({'table':y,'root':e,'rely':f,'scene':x,'sharing_recipients':g?.['sharing_recipients']});for(const z of i['risks']){const A=z['level']==='critical'||z['level']==='high'?'error':z['level']==='medium'?'warning':z['level']==='low'?'info':'hint',B=z['evidence']??'',C=B['startsWith']('/')?B:'/';h['push']({'code':z['id'],'message':'['+z['level']+']\x20'+z['title'],'severity':A,'source':'risk','location':{'path':C},'fix':{'description':z['mitigation'],'auto_fixable':![]}});}}const o=checkSuggestions(a);h['push'](...o);const p=h['filter'](D=>D['severity']==='error')['length'],q=h['filter'](D=>D['severity']==='warning')['length'],s=h['filter'](D=>D['severity']==='info'||D['severity']==='hint')['length'],t=p===0x0;let u;if(p>0x0)u='Fix\x20'+p+'\x20error(s)\x20and\x20re-run\x20lint';else q>0x0?u='Consider\x20addressing\x20'+q+'\x20warning(s),\x20then\x20submit\x20to\x20SDK\x20newGuard()\x20for\x20final\x20syntax\x20validation':u='lint\x20passed\x20(no\x20errors);\x20submit\x20to\x20SDK\x20newGuard()\x20for\x20final\x20syntax\x20validation\x20before\x20going\x20on-chain';return{'json_summary':{'table_count':d['length'],'root_type':e?.['type']??'unknown','has_rely':!!f?.['guards']?.['length'],'rely_count':f?.['guards']?.['length']??0x0,'has_description':!!a['description']},'diagnostics':h,'fixed_json':m,'fix_actions':n,'risk_assessment':i,'summary':{'errors':p,'warnings':q,'infos':s,'auto_fixes_applied':n['length'],'ready':t,'next_step':u}};}export async function isGuardReady(a){const b=await lintGuard(a,{'auto_fix':![]});return b['summary']['ready'];}export async function getGuardErrors(a){const b=await lintGuard(a,{'auto_fix':![]});return b['diagnostics']['filter'](c=>c['severity']==='error');}export function formatLintResult(a){const b=[];b['push']('===\x20Guard\x20JSON\x20Lint\x20Report\x20==='),b['push'](''),b['push']('Summary:'),b['push']('\x20\x20Errors:\x20\x20\x20\x20\x20'+a['summary']['errors']),b['push']('\x20\x20Warnings:\x20\x20\x20'+a['summary']['warnings']),b['push']('\x20\x20Infos:\x20\x20\x20\x20\x20\x20'+a['summary']['infos']),b['push']('\x20\x20Auto-fixes:\x20'+a['summary']['auto_fixes_applied']),b['push']('\x20\x20Ready:\x20\x20\x20\x20\x20\x20'+(a['summary']['ready']?'YES':'NO')),b['push']('\x20\x20Next\x20step:\x20\x20'+a['summary']['next_step']),b['push']('');if(a['fix_actions']['length']>0x0){b['push']('---\x20Auto-fix\x20Actions\x20---');for(const g of a['fix_actions']){b['push']('\x20\x20['+g['diagnostic_code']+']\x20'+g['description']),b['push']('\x20\x20\x20\x20Path:\x20'+g['path']),g['before']&&g['after']&&b['push']('\x20\x20\x20\x20'+g['before']+'\x20->\x20'+g['after']);}b['push']('');}const c=a['diagnostics']['filter'](h=>h['severity']==='error'),e=a['diagnostics']['filter'](h=>h['severity']==='warning'),f=a['diagnostics']['filter'](h=>h['severity']==='info'||h['severity']==='hint');if(c['length']>0x0){b['push']('---\x20Errors\x20(must\x20fix)\x20---');for(const h of c){b['push']('\x20\x20['+h['code']+']\x20('+h['source']+')\x20'+h['message']),b['push']('\x20\x20\x20\x20Path:\x20'+h['location']['path']);if(h['fix'])b['push']('\x20\x20\x20\x20Fix:\x20\x20'+h['fix']['description']);}b['push']('');}if(e['length']>0x0){b['push']('---\x20Warnings\x20(consider\x20fixing)\x20---');for(const i of e){b['push']('\x20\x20['+i['code']+']\x20('+i['source']+')\x20'+i['message']),b['push']('\x20\x20\x20\x20Path:\x20'+i['location']['path']);if(i['fix'])b['push']('\x20\x20\x20\x20Fix:\x20\x20'+i['fix']['description']);}b['push']('');}if(f['length']>0x0){b['push']('---\x20Info\x20&\x20Hints\x20---');for(const j of f){b['push']('\x20\x20['+j['code']+']\x20('+j['source']+')\x20'+j['message']),b['push']('\x20\x20\x20\x20Path:\x20'+j['location']['path']);}}return b['join']('\x0a');}
1
+ import{validateGuardData,MAX_DESCRIPTION_LENGTH,MAX_GUARD_TABLE_ITEM_LENGTH}from'@wowok/wowok';import{assessGuardRisks}from'./guard-risk.js';import{findScene,inferSceneFromAction}from'./guard-ledger.js';import{suggestTemplateForScene}from'./guard-templates.js';function deepClone(a){return JSON['parse'](JSON['stringify'](a));}function rootToString(a){return JSON['stringify'](a);}function hasSignerContext(a){const b=rootToString(a);return b['includes']('\x22Signer\x22')||b['includes']('\x22context\x22:\x22Signer\x22')||b['includes']('\x22context\x22:\x20\x22Signer\x22');}function getSubmissionEntries(a){return a['filter'](b=>b['b_submission']===!![]);}function inferValueType(a){if(typeof a==='string'){if(a['startsWith']('0x')&&a['length']>=0x3)return'Address';return'String';}if(typeof a==='number'){if(Number['isInteger'](a)){if(a>=0x0&&a<=0xff)return'U8';if(a>=0x0&&a<=0xffff)return'U16';return'U64';}return'U256';}if(typeof a==='boolean')return'Bool';if(Array['isArray'](a)){if(a['length']>0x0){const b=inferValueType(a[0x0]);if(b==='Address')return'Vec<Address>';if(b==='String')return'Vec<String>';if(b==='Bool')return'Vec<Bool>';}return'Vec<Address>';}return undefined;}function sdkIssueToDiagnostic(a){return{'code':a['code'],'message':a['message'],'severity':a['severity'],'source':'sdk','location':{'path':a['path']},'fix':{'description':'SDK\x20validation\x20failed\x20('+(a['sdk_error']??'InvalidParam')+');\x20manual\x20fix\x20required','auto_fixable':![]}};}async function checkSdkSyntax(a){const b=a['table']['map'](d=>({'identifier':d['identifier'],'b_submission':d['b_submission']??![],'value_type':d['value_type']??'Address','value':d['value'],'name':d['name']??''})),c=await validateGuardData({'description':a['description'],'table':b,'root':a['root'],'rely':a['rely']});return c['map'](sdkIssueToDiagnostic);}function checkSemanticErrors(a){const b=[],{table:c,root:d,binding_hint:e}=a,f=e?findScene(e['host_object']??'',e['binding_field']??''):undefined,g=getSubmissionEntries(c);if(g['length']>0x0&&d&&!hasSignerContext(d)){const h=g['some'](j=>j['value_type']==='Address'),i=f?.['id']==='service_order_allocators_guard'&&e?.['sharing_recipients']!==undefined&&e['sharing_recipients']['length']>0x0&&!e['sharing_recipients']['includes']('Signer');if(h&&!i){const j=g['filter'](k=>k['value_type']==='Address')['map'](k=>c['indexOf'](k));b['push']({'code':'LE-04','message':'Submitted\x20data\x20has\x20no\x20Signer\x20binding\x20(submission\x20forgery\x20risk)','severity':'error','source':'lint','location':{'path':j['map'](k=>'/table/'+k)['join']('\x20→\x20')},'fix':{'description':'Add\x20logic_equal(context(Signer),\x20identifier[N])\x20in\x20root\x20to\x20bind\x20the\x20submitter\x20identity','auto_fixable':![]}});}}if(f?.['id']==='arbitration_voting_guard'){const k=g['some'](l=>['U8','U16','U32','U64','U128','U256']['includes'](l['value_type']??''));if(k){const l=g['filter'](m=>['U8','U16','U32','U64','U128','U256']['includes'](m['value_type']??''))['map'](m=>c['indexOf'](m));b['push']({'code':'LE-05','message':'voting_guard\x20voting\x20weight\x20comes\x20from\x20submitted\x20data\x20(weight\x20forgery\x20risk)','severity':'error','source':'lint','location':{'path':l['map'](m=>'/table/'+m)['join']('\x20→\x20')},'fix':{'description':'Derive\x20arbitrator\x20weights\x20from\x20the\x20Arb\x20object\x20via\x20witness\x20(e.g.\x20105\x20TypeArbArbitration)\x20rather\x20than\x20submitting\x20them\x20directly','auto_fixable':![]}});}}if(f?.['id']==='gen_passport_guard'||e?.['action']==='gen_passport'){const m=rootToString(d);if(m['includes']('1167')||m['includes']('repository.data')){const n=m['includes']('quote_guard');n&&b['push']({'code':'LE-06','message':'repository.data\x20query\x20with\x20quote_guard:\x20rigid\x20verification\x20requirement\x20—\x20ensure\x20Passport\x20includes\x20quote_guard\x20verification\x20with\x20necessary\x20submissions\x20(e.g.,\x20Payment\x20proof)','severity':'info','source':'lint','location':{'path':'/root'},'fix':{'description':'Ensure\x20the\x20quote_guard\x20is\x20verified:\x20user\x20submits\x20Payment\x20via\x20Passport,\x20quote_guard\x20verifies\x20Payment\x20fields,\x20repository\x20data\x20query\x20passes','auto_fixable':![]}});}}if(e?.['host_object']&&f){const o=e['host_object'],p=c['filter'](q=>!q['b_submission']&&q['value_type']==='Address'&&typeof q['value']==='string'&&q['value']['startsWith']('0x')&&q['object_type']===o);if(p['length']>0x0){const q=p['map'](r=>c['indexOf'](r));b['push']({'code':'LE-07','message':'Circular\x20reference\x20uses\x20an\x20address\x20rather\x20than\x20a\x20name\x20(Host\x20Object\x20may\x20not\x20be\x20published\x20yet\x20when\x20the\x20Guard\x20is\x20created)','severity':'error','source':'lint','location':{'path':q['map'](r=>'/table/'+r+'/value')['join']('\x20→\x20')},'fix':{'description':'Change\x20value\x20from\x20an\x20address\x20to\x20an\x20object\x20name\x20(e.g.\x20\x22service1\x22);\x20the\x20SDK\x20will\x20resolve\x20it\x20to\x20an\x20address\x20after\x20the\x20Host\x20Object\x20is\x20published','auto_fixable':![]}});}}return b;}function checkSyntaxHints(a){const b=[],{table:c}=a;(!a['description']||a['description']['trim']()==='')&&b['push']({'code':'SH-01','message':'description\x20is\x20missing\x20or\x20empty','severity':'info','source':'lint','location':{'path':'/description'},'fix':{'description':'Add\x20a\x20description,\x20e.g.\x20\x27Service\x20buy_guard:\x20whitelist\x20validation\x27','auto_fixable':!![]}});for(let d=0x0;d<c['length'];d++){const e=c[d];(!e['name']||e['name']['trim']()==='')&&b['push']({'code':'SH-03','message':'table['+d+']\x20is\x20missing\x20name','severity':'warning','source':'lint','location':{'path':'/table/'+d+'/name'},'fix':{'description':'Add\x20a\x20name,\x20e.g.\x20\x22data\x20entry\x20'+e['identifier']+'\x22','auto_fixable':!![]}});}for(let f=0x0;f<c['length'];f++){const g=c[f];!g['value_type']&&b['push']({'code':'SH-05','message':'table['+f+']\x20is\x20missing\x20value_type','severity':'warning','source':'lint','location':{'path':'/table/'+f+'/value_type'},'fix':{'description':'Infer\x20value_type\x20from\x20value\x20(e.g.\x20Address/String/U64,\x20etc.)','auto_fixable':!![]}});}c['length']>MAX_GUARD_TABLE_ITEM_LENGTH&&b['push']({'code':'SH-07','message':'table\x20entry\x20count\x20'+c['length']+'\x20exceeds\x20the\x20maximum\x20limit\x20'+MAX_GUARD_TABLE_ITEM_LENGTH,'severity':'error','source':'lint','location':{'path':'/table'},'fix':{'description':'Slim\x20down\x20the\x20table\x20by\x20merging\x20similar\x20entries,\x20or\x20split\x20into\x20multiple\x20Guards\x20+\x20rely','auto_fixable':![]}});for(let h=0x0;h<c['length'];h++){c[h]['b_submission']===undefined&&b['push']({'code':'SH-10','message':'table['+h+']\x20b_submission\x20is\x20missing','severity':'info','source':'lint','location':{'path':'/table/'+h+'/b_submission'},'fix':{'description':'Set\x20to\x20false\x20(constant)\x20or\x20true\x20(submitted\x20data)','auto_fixable':!![]}});}for(let j=0x0;j<c['length'];j++){const k=c[j];k['b_submission']===!![]&&k['value']!==undefined&&k['value']!==null&&b['push']({'code':'SH-11','message':'table['+j+']\x20has\x20a\x20redundant\x20value\x20field\x20on\x20b_submission=true\x20entry\x20(the\x20verifier\x20supplies\x20the\x20value\x20at\x20runtime;\x20this\x20value\x20is\x20ignored\x20by\x20BCS\x20encoding\x20and\x20wastes\x20gas)','severity':'warning','source':'lint','location':{'path':'/table/'+j+'/value'},'fix':{'description':'Remove\x20the\x20value\x20field\x20—\x20it\x20is\x20ignored\x20for\x20b_submission=true\x20entries','auto_fixable':!![]}});}return b;}function checkSuggestions(a){const b=[],{root:c,binding_hint:d,table:e}=a;if(c){const g=rootToString(c);if(g['includes']('vec_contains_address')&&g['includes']('Signer'))b['push']({'code':'SG-01','message':'Matches\x20Pattern\x20P04\x20(whitelist\x20validation)','severity':'hint','source':'lint','location':{'path':'/root'},'fix':{'description':'Refer\x20to\x20the\x20P04\x20Pattern\x20to\x20ensure\x20best\x20practices','auto_fixable':![]}});else{if(g['includes']('logic_equal')&&g['includes']('Signer')){const h=e['some'](i=>!i['b_submission']&&i['value_type']==='Address'&&typeof i['value']==='string'&&i['value']['length']>0x0);h&&b['push']({'code':'SG-01','message':'Matches\x20Pattern\x20P04\x20(whitelist\x20validation\x20—\x20single-address\x20variant)','severity':'hint','source':'lint','location':{'path':'/root'},'fix':{'description':'P04\x20single-address\x20form;\x20for\x20multi-address\x20scenarios,\x20consider\x20vec_contains_address','auto_fixable':![]}});}}(g['includes']('logic_as_u256_greater')||g['includes']('logic_as_u256_lesser'))&&b['push']({'code':'SG-01','message':'Matches\x20Pattern\x20P02\x20(numeric\x20threshold\x20validation)','severity':'hint','source':'lint','location':{'path':'/root'},'fix':{'description':'Suitable\x20for\x20amount/quantity\x20threshold\x20validation\x20scenarios','auto_fixable':![]}}),g['includes']('convert_witness')&&b['push']({'code':'SG-01','message':'Matches\x20Pattern\x20P09\x20(witness-derived\x20validation)','severity':'hint','source':'lint','location':{'path':'/root'},'fix':{'description':'Suitable\x20for\x20cross-object\x20relationship\x20validation\x20(e.g.\x20Order→Progress)','auto_fixable':![]}});}if(d?.['action']){const i=['buy','forward','allocate','claim_reward','vote','dispute','write_repository','submit_progress','gen_passport'];if(i['includes'](d['action'])){const j=inferSceneFromAction(d['action']);if(j){const k=suggestTemplateForScene(j['id']);k&&b['push']({'code':'SG-02','message':'Recommended\x20scene\x20template:\x20'+k['name'],'severity':'hint','source':'lint','location':{'path':'/'},'fix':{'description':'Refer\x20to\x20template\x20'+k['id']+'\x20('+k['example_use_case']+')','auto_fixable':![]}});}}}const f=getSubmissionEntries(e);for(const l of f){const m=l['name']??'';if(m['length']<0xa||/^[a-z_]+$/i['test'](m)){const n=e['indexOf'](l);b['push']({'code':'SG-03','message':'table['+n+']\x20submitted\x20data\x20has\x20a\x20vague\x20name\x20description','severity':'info','source':'lint','location':{'path':'/table/'+n+'/name'},'fix':{'description':'Use\x20a\x20full\x20natural-language\x20description\x20(≥10\x20characters),\x20e.g.\x20\x27user-submitted\x20operation\x20type\x20(return/damage)\x27','auto_fixable':![]}});}}if(c){const o=rootToString(c),p=o['includes']('proof.signer'),q=o['includes']('proof.time'),r=o['includes']('calc_string_length'),s=f['some'](t=>t['value_type']==='String');if(p&&q)b['push']({'code':'SG-04','message':'Strict-mode\x20privacy-delivery\x20guard\x20detected\x20(proof.signer\x20+\x20proof.time).\x20'+'Recommended\x20three\x20conditions:\x20Signer==proof.signer\x20(submitter\x20accountability),\x20'+'proof.time>order.time\x20(freshness),\x20order.service==service\x20(project\x20binding).\x20'+'No\x20content\x20verification\x20—\x20only\x20submission\x20responsibility\x20(\x27whoever\x20benefits\x20bears\x20the\x20burden\x20of\x20proof\x27).','severity':'info','source':'lint','location':{'path':'/root'},'fix':{'description':'Ensure\x20all\x20three\x20conditions\x20are\x20present\x20(logic_and).\x20Refer\x20to\x20template\x20tpl_forward_privacy_delivery_proof.\x20'+'Query\x20IDs:\x20proof.signer=1958,\x20proof.time=1960,\x20order.time=1574,\x20order.service=1563.','auto_fixable':![]}});else r&&s&&b['push']({'code':'SG-04','message':'Broad-mode\x20privacy-delivery\x20guard\x20detected\x20(String\x20submission\x20+\x20length\x20check,\x20e.g.\x20Merkle\x20Root\x20length\x20==\x2066).\x20'+'This\x20trusts\x20the\x20submitter\x27s\x20honesty;\x20the\x20counterparty\x20can\x20dispute\x20by\x20checking\x20their\x20own\x20Messenger\x20conversation.\x20'+'Suitable\x20as\x20an\x20arbitration\x20basis,\x20not\x20a\x20fund-flow\x20gate.','severity':'info','source':'lint','location':{'path':'/root'},'fix':{'description':'For\x20stronger\x20assurance,\x20consider\x20strict\x20mode:\x20submit\x20a\x20Proof\x20object\x20address\x20(from\x20messenger.submitChainProof)\x20+\x20'+'Order\x20address,\x20then\x20verify\x20proof.signer/proof.time/order.service.\x20See\x20template\x20tpl_forward_privacy_delivery_proof.','auto_fixable':![]}});}return b;}export function autoFixGuard(a){const b=deepClone(a),c=[];(!b['description']||b['description']['trim']()==='')&&(b['description']='Guard\x20(table:\x20'+b['table']['length']+'\x20items,\x20root:\x20'+(b['root']?.['type']??'unknown')+')',c['push']({'diagnostic_code':'SH-01','description':'Fill\x20in\x20default\x20description','after':b['description'],'path':'/description'}));if(b['description']&&b['description']['length']>MAX_DESCRIPTION_LENGTH){const f=b['description'];b['description']=b['description']['substring'](0x0,MAX_DESCRIPTION_LENGTH),c['push']({'diagnostic_code':'G-001','description':'Truncate\x20description\x20to\x20'+MAX_DESCRIPTION_LENGTH+'\x20characters','before':f['length']+'\x20characters','after':b['description']['length']+'\x20characters','path':'/description'});}for(let g=0x0;g<b['table']['length'];g++){const h=b['table'][g];(!h['name']||h['name']['trim']()==='')&&(h['name']='data\x20entry\x20'+h['identifier'],c['push']({'diagnostic_code':'SH-03','description':'table['+g+']\x20fill\x20in\x20name','after':h['name'],'path':'/table/'+g+'/name'}));}for(let j=0x0;j<b['table']['length'];j++){const k=b['table'][j];if(!k['value_type']&&k['value']!==undefined&&k['value']!==null){const l=inferValueType(k['value']);l&&(k['value_type']=l,c['push']({'diagnostic_code':'SH-05','description':'table['+j+']\x20infer\x20value_type','after':l,'path':'/table/'+j+'/value_type'}));}}const d=new Map();let e=0x0;for(let m=0x0;m<b['table']['length'];m++){const n=b['table'][m];if(!d['has'](n['identifier']))d['set'](n['identifier'],e),n['identifier']!==e&&c['push']({'diagnostic_code':'G-007','description':'table['+m+']\x20identifier\x20'+n['identifier']+'\x20→\x20'+e,'before':String(n['identifier']),'after':String(e),'path':'/table/'+m+'/identifier'}),n['identifier']=e,e++;else{const o=n['identifier'];n['identifier']=e,d['set'](o,e),c['push']({'diagnostic_code':'G-007','description':'table['+m+']\x20identifier\x20'+o+'\x20duplicate\x20→\x20reallocated\x20to\x20'+e,'before':String(o),'after':String(e),'path':'/table/'+m+'/identifier'}),e++;}}for(let p=0x0;p<b['table']['length'];p++){const q=b['table'][p];q['b_submission']===undefined&&(q['b_submission']=![],c['push']({'diagnostic_code':'SH-10','description':'table['+p+']\x20b_submission\x20default\x20set\x20to\x20false','after':'false','path':'/table/'+p+'/b_submission'}));}if(b['rely']?.['guards']&&b['rely']['guards']['length']>0x0){const r=[...new Set(b['rely']['guards'])];r['length']!==b['rely']['guards']['length']&&(c['push']({'diagnostic_code':'G-009','description':'rely\x20deduplicate:\x20'+b['rely']['guards']['length']+'\x20→\x20'+r['length'],'before':JSON['stringify'](b['rely']['guards']),'after':JSON['stringify'](r),'path':'/rely/guards'}),b['rely']['guards']=r);}for(let s=0x0;s<b['table']['length'];s++){const t=b['table'][s];if(t['b_submission']===!![]&&t['value']!==undefined&&t['value']!==null){const u=JSON['stringify'](t['value']);delete t['value'],c['push']({'diagnostic_code':'SH-11','description':'table['+s+']\x20remove\x20redundant\x20value\x20on\x20b_submission=true\x20entry','before':u,'after':'(removed)','path':'/table/'+s+'/value'});}}return{'fixed':b,'actions':c};}export async function lintGuard(a,b){const c=b?.['auto_fix']??!![],{table:d,root:e,rely:f,binding_hint:g}=a,h=[];let i;const j=await checkSdkSyntax(a);h['push'](...j);const k=checkSemanticErrors(a);h['push'](...k);const l=checkSyntaxHints(a);h['push'](...l);let m,n=[];if(c){const {fixed:v,actions:w}=autoFixGuard(a);w['length']>0x0&&(m=v,n=w);}if(d['length']>0x0&&e){const x=g?findScene(g['host_object']??'',g['binding_field']??''):undefined,y=d['map'](z=>({'identifier':z['identifier'],'b_submission':z['b_submission']??![],'value_type':z['value_type']??'Address','value':z['value'],'name':z['name'],'object_type':z['object_type']}));i=assessGuardRisks({'table':y,'root':e,'rely':f,'scene':x,'sharing_recipients':g?.['sharing_recipients']});for(const z of i['risks']){const A=z['level']==='critical'||z['level']==='high'?'error':z['level']==='medium'?'warning':z['level']==='low'?'info':'hint',B=z['evidence']??'',C=B['startsWith']('/')?B:'/';h['push']({'code':z['id'],'message':'['+z['level']+']\x20'+z['title'],'severity':A,'source':'risk','location':{'path':C},'fix':{'description':z['mitigation'],'auto_fixable':![]}});}}const o=checkSuggestions(a);h['push'](...o);const p=h['filter'](D=>D['severity']==='error')['length'],q=h['filter'](D=>D['severity']==='warning')['length'],s=h['filter'](D=>D['severity']==='info'||D['severity']==='hint')['length'],t=p===0x0;let u;if(p>0x0)u='Fix\x20'+p+'\x20error(s)\x20and\x20re-run\x20lint';else q>0x0?u='Consider\x20addressing\x20'+q+'\x20warning(s),\x20then\x20submit\x20to\x20SDK\x20newGuard()\x20for\x20final\x20syntax\x20validation':u='lint\x20passed\x20(no\x20errors);\x20submit\x20to\x20SDK\x20newGuard()\x20for\x20final\x20syntax\x20validation\x20before\x20going\x20on-chain';return{'json_summary':{'table_count':d['length'],'root_type':e?.['type']??'unknown','has_rely':!!f?.['guards']?.['length'],'rely_count':f?.['guards']?.['length']??0x0,'has_description':!!a['description']},'diagnostics':h,'fixed_json':m,'fix_actions':n,'risk_assessment':i,'summary':{'errors':p,'warnings':q,'infos':s,'auto_fixes_applied':n['length'],'ready':t,'next_step':u}};}export async function isGuardReady(a){const b=await lintGuard(a,{'auto_fix':![]});return b['summary']['ready'];}export async function getGuardErrors(a){const b=await lintGuard(a,{'auto_fix':![]});return b['diagnostics']['filter'](c=>c['severity']==='error');}export function formatLintResult(a){const b=[];b['push']('===\x20Guard\x20JSON\x20Lint\x20Report\x20==='),b['push'](''),b['push']('Summary:'),b['push']('\x20\x20Errors:\x20\x20\x20\x20\x20'+a['summary']['errors']),b['push']('\x20\x20Warnings:\x20\x20\x20'+a['summary']['warnings']),b['push']('\x20\x20Infos:\x20\x20\x20\x20\x20\x20'+a['summary']['infos']),b['push']('\x20\x20Auto-fixes:\x20'+a['summary']['auto_fixes_applied']),b['push']('\x20\x20Ready:\x20\x20\x20\x20\x20\x20'+(a['summary']['ready']?'YES':'NO')),b['push']('\x20\x20Next\x20step:\x20\x20'+a['summary']['next_step']),b['push']('');if(a['fix_actions']['length']>0x0){b['push']('---\x20Auto-fix\x20Actions\x20---');for(const g of a['fix_actions']){b['push']('\x20\x20['+g['diagnostic_code']+']\x20'+g['description']),b['push']('\x20\x20\x20\x20Path:\x20'+g['path']),g['before']&&g['after']&&b['push']('\x20\x20\x20\x20'+g['before']+'\x20->\x20'+g['after']);}b['push']('');}const c=a['diagnostics']['filter'](h=>h['severity']==='error'),e=a['diagnostics']['filter'](h=>h['severity']==='warning'),f=a['diagnostics']['filter'](h=>h['severity']==='info'||h['severity']==='hint');if(c['length']>0x0){b['push']('---\x20Errors\x20(must\x20fix)\x20---');for(const h of c){b['push']('\x20\x20['+h['code']+']\x20('+h['source']+')\x20'+h['message']),b['push']('\x20\x20\x20\x20Path:\x20'+h['location']['path']);if(h['fix'])b['push']('\x20\x20\x20\x20Fix:\x20\x20'+h['fix']['description']);}b['push']('');}if(e['length']>0x0){b['push']('---\x20Warnings\x20(consider\x20fixing)\x20---');for(const i of e){b['push']('\x20\x20['+i['code']+']\x20('+i['source']+')\x20'+i['message']),b['push']('\x20\x20\x20\x20Path:\x20'+i['location']['path']);if(i['fix'])b['push']('\x20\x20\x20\x20Fix:\x20\x20'+i['fix']['description']);}b['push']('');}if(f['length']>0x0){b['push']('---\x20Info\x20&\x20Hints\x20---');for(const j of f){b['push']('\x20\x20['+j['code']+']\x20('+j['source']+')\x20'+j['message']),b['push']('\x20\x20\x20\x20Path:\x20'+j['location']['path']);}}return b['join']('\x0a');}
@@ -1 +1 @@
1
- import{MAX_SUBMISSION_SIZE_PASSPORT}from'@wowok/wowok';export function checkPuzzleCompleteness(a){const b={'intent':isIntentComplete(a['intent']),'binding':isBindingComplete(a['binding']),'data_sources':isDataSourcesComplete(a['data_sources']),'query':isQueryComplete(a['queries']),'logic':isLogicComplete(a['logic']),'constraints':isConstraintsComplete(a['constraints'])},c=Object['keys'](b)['filter'](g=>!b[g]),d=[];!b['intent']&&d['push']('A.\x20Intent:\x20protected\x20action,\x20validation\x20rule,\x20or\x20failure\x20conditions\x20not\x20clarified');!b['binding']&&d['push']('B.\x20Binding:\x20Host\x20Object,\x20binding\x20field,\x20or\x20circular\x20reference\x20mode\x20not\x20determined');!b['data_sources']&&d['push']('C.\x20Data\x20sources:\x20data\x20sources\x20not\x20declared\x20by\x204\x20classifications\x20(on-chain\x20constant\x20/\x20witness-derived\x20/\x20submitted\x20object\x20/\x20system\x20context)');!b['query']&&d['push']('D.\x20Query:\x20query\x20instruction\x20not\x20determined\x20(if\x20the\x20Guard\x20needs\x20to\x20query\x20on-chain\x20data)');!b['logic']&&d['push']('E.\x20Logic:\x20computation\x20tree\x20root\x20or\x20rely\x20composition\x20not\x20designed');!b['constraints']&&d['push']('F.\x20Constraints:\x20creation-time\x2010\x20+\x20runtime\x206\x20constraint\x20checks\x20not\x20completed');const e=c['length']===0x0,f=recommendNextStep(a,c);return{'dimensions':b,'missing':c,'missing_details':d,'complete':e,'next_step':f};}function isIntentComplete(a){return!!a&&!!a['action']&&!!a['rule_sentence']&&a['failure_conditions']['length']>0x0;}function isBindingComplete(a){return!!a&&!!a['host_object']&&!!a['binding_field'];}function isDataSourcesComplete(a){if(!a)return![];const b=a['on_chain_constants']['length']>0x0,c=a['witness_derived']['length']>0x0,d=a['submitted_objects']['length']>0x0,e=a['submitted_values']['length']>0x0,f=a['system_contexts']['length']>0x0;if(!b&&!c&&!d&&!e&&!f)return![];const g=a['submitted_objects']['some'](h=>!h['binding_constraint']);if(g)return![];return!![];}function isQueryComplete(a){return!![];}function isLogicComplete(a){return!!a&&!!a['root']&&a['root']['return_type']==='Bool';}function isConstraintsComplete(a){if(!a)return![];return Object['values'](a)['every'](b=>b===!![]);}function recommendNextStep(a,b){if(b['includes']('intent'))return{'round':'R1','action':'Capture\x20validation\x20intent','questions':['What\x20action\x20do\x20you\x20want\x20to\x20protect?\x20(buy/forward/claim/vote/dispute/write/allocate)','Describe\x20the\x20validation\x20rule\x20in\x20one\x20sentence','List\x20the\x20conditions\x20under\x20which\x20the\x20Guard\x20should\x20FAIL']};if(b['includes']('binding'))return{'round':'R5','action':'Determine\x20binding\x20target','questions':['Which\x20Host\x20Object\x20will\x20the\x20Guard\x20bind\x20to?\x20(Service/Machine/Arbitration/Reward/Repository)','Which\x20field\x20will\x20it\x20bind\x20to?\x20(buy_guard/order_allocators/Forward.guard/...)','Does\x20the\x20Guard\x20need\x20to\x20reference\x20the\x20Host\x20Object?\x20(circular\x20reference\x20mode)']};if(b['includes']('data_sources'))return{'round':'R2','action':'Declare\x20data\x20sources\x20by\x204\x20classifications','questions':['Type1\x20(on-chain\x20constant):\x20Which\x20already-published\x20on-chain\x20objects\x20does\x20the\x20Guard\x20need\x20to\x20query?\x20(Service/Machine/Reward\x20addresses)','Type2\x20(witness-derived):\x20Do\x20you\x20need\x20to\x20derive\x20Progress/Machine/Service\x20from\x20Order/Arb?\x20(choose\x20witness\x20100-108)','Type3\x20(submitted\x20object):\x20Which\x20object\x20addresses\x20does\x20the\x20caller\x20need\x20to\x20submit?\x20(Order/Reward/Progress)\x20—\x20constraint\x20rules\x20must\x20be\x20designed','Type3\x20(submitted\x20value):\x20Which\x20scalar\x20values\x20does\x20the\x20caller\x20need\x20to\x20submit?\x20(amount/weight/node\x20name)','Type4\x20(system\x20context):\x20Do\x20you\x20need\x20Signer\x20(identity)\x20/\x20Clock\x20(time)\x20/\x20Guard\x20(self-reference)?','Do\x20you\x20need\x20to\x20query\x20EntityRegistrar(0xaab)\x20or\x20EntityLinker(0xaaa)?']};if(b['includes']('query'))return{'round':'R3','action':'Design\x20query\x20nodes','questions':['Which\x20on-chain\x20objects\x20does\x20the\x20Guard\x20need\x20to\x20query?','Which\x20instruction\x20ID\x20does\x20each\x20query\x20use?\x20(look\x20up\x20from\x20GUARDQUERY)','Do\x20you\x20need\x20convert_witness\x20to\x20convert\x20objects?\x20(linked\x20to\x20Type2\x20declaration)']};if(b['includes']('logic'))return{'round':'R3','action':'Design\x20computation\x20tree','questions':['What\x20is\x20the\x20root\x20node?\x20(must\x20return\x20Bool)','Which\x20data\x20source\x20nodes\x20are\x20there?\x20(by\x204\x20classifications:\x20identifier/context/query)','Which\x20intermediate\x20conversion\x20nodes\x20are\x20there?\x20(calc_*/convert_*/vec_*)','Do\x20you\x20need\x20rely\x20to\x20compose\x20with\x20other\x20Guards?']};if(b['includes']('constraints'))return{'round':'R6','action':'Pre-creation\x20review','questions':['Run\x20the\x20creation-time\x2010\x20+\x20runtime\x206\x20constraint\x20checklist']};return{'round':'R7','action':'Prepare\x20for\x20on-chain\x20creation','questions':['All\x20dimensions\x20are\x20complete;\x20ready\x20to\x20generate\x20the\x20semantic\x20confirmation\x20text']};}export function generateConfirmationText(a){if(!a['intent']||!a['binding']||!a['data_sources']||!a['logic'])return'[Puzzle\x20incomplete]\x20Cannot\x20generate\x20confirmation\x20text;\x20please\x20complete\x20all\x20dimensions\x20first';const b=[];b['push']('═══════════════════════════════════════════════════════'),b['push']('\x20\x20Guard\x20Semantic\x20Confirmation\x20Report\x20(User\x20Review\x20Edition)'),b['push']('═══════════════════════════════════════════════════════'),b['push'](''),b['push']('[Intent]'),b['push']('Protected\x20action:\x20'+a['intent']['action']),b['push']('Validation\x20rule:\x20'+a['intent']['rule_sentence']),b['push']('Failure\x20conditions:'),a['intent']['failure_conditions']['forEach']((d,e)=>{b['push']('\x20\x20'+(e+0x1)+'.\x20'+d);}),b['push'](''),b['push']('[Binding]'),b['push']('Host\x20Object:\x20'+a['binding']['host_object']);a['binding']['host_object_name']&&b['push']('Host\x20Object\x20name:\x20'+a['binding']['host_object_name']);b['push']('Binding\x20field:\x20'+a['binding']['binding_field']),b['push']('Circular\x20reference:\x20'+(a['binding']['circular_reference']?'Yes\x20(Guard\x20references\x20Host\x20Object)':'No')),b['push']('Host\x20Object\x20state:\x20'+a['binding']['host_object_state']),b['push'](''),b['push']('[Data\x20sources\x20(4\x20classifications)]'),printDataSources(b,a['data_sources']),b['push']('');a['queries']&&a['queries']['length']>0x0&&(b['push']('[Query\x20instructions]'),b['push']('┌──────┬──────────────────────────┬────────────┬──────────┬──────────┐'),b['push']('│\x20ID\x20\x20\x20│\x20Query\x20instruction\x20\x20\x20\x20\x20\x20\x20\x20│\x20Target\x20obj\x20│\x20Params\x20\x20\x20│\x20Return\x20\x20\x20│'),b['push']('├──────┼──────────────────────────┼────────────┼──────────┼──────────┤'),a['queries']['forEach'](d=>{const e=String(d['query_id'])['padEnd'](0x4),f=d['query_name']['length']>0x18?d['query_name']['slice'](0x0,0x17)+'…':d['query_name']['padEnd'](0x18),g=d['object_type']['padEnd'](0xa),h=(d['parameters']['length']===0x0?'(none)':d['parameters']['join'](','))['padEnd'](0x8),i=d['return_type']['padEnd'](0x8);b['push']('│\x20'+e+'\x20│\x20'+f+'\x20│\x20'+g+'\x20│\x20'+h+'\x20│\x20'+i+'\x20│');}),b['push']('└──────┴──────────────────────────┴────────────┴──────────┴──────────┘'),b['push'](''));b['push']('[Computation\x20tree]'),b['push']('root:\x20'+a['logic']['root']['node_type']+'\x20(returns:\x20'+a['logic']['root']['return_type']+')'),b['push']('\x20\x20'+a['logic']['root']['description']);a['logic']['root']['children']&&printLogicTree(b,a['logic']['root']['children'],0x1);b['push']('');a['logic']['rely']&&(b['push']('[rely\x20composition]'),b['push']('Dependent\x20Guards:\x20'+a['logic']['rely']['guards']['join'](',\x20')),b['push']('Logic:\x20'+(a['logic']['rely']['logic_or']?'OR\x20(any\x20passes)':'AND\x20(all\x20must\x20pass)')),b['push']('rep\x20verification:\x20'+(a['logic']['rely']['rep_verified']['every'](d=>d)?'all\x20passed':'some\x20unverified')),b['push'](''));if(a['constraints']){b['push']('[Constraint\x20checklist\x20(creation-time\x2022\x20+\x20runtime\x2011\x20=\x2033;\x20MCP\x20layer\x20static\x20check\x2016)]');const d=[['01','All\x20identifiers\x20exist\x20in\x20the\x20table',a['constraints']['pitfall_01_identifiers_in_table']],['02','Comparison\x20node\x20types\x20are\x20compatible',a['constraints']['pitfall_02_type_compatibility']],['03','Query\x20instruction\x20ID\x20and\x20parameter\x20count\x20are\x20correct',a['constraints']['pitfall_03_query_instruction_valid']],['04','convert_witness\x20type\x20is\x20correct',a['constraints']['pitfall_04_witness_correct']],['05','Time-lock\x20tests\x20use\x20small\x20values',a['constraints']['pitfall_05_time_lock_test_safe']],['06','Old\x20Guard\x20exported\x20before\x20iteration',a['constraints']['pitfall_06_exported_before_recreate']],['07','root\x20returns\x20Bool',a['constraints']['pitfall_07_root_returns_bool']],['08','rely\x20dependency\x20rep=true',a['constraints']['pitfall_08_rely_rep_true']],['09','voting_guard\x20GuardIdentifier\x20numeric',a['constraints']['pitfall_09_voting_weight_numeric']],['10','Arbitration\x20not\x20paused',a['constraints']['pitfall_10_arbitration_not_paused']]],e=[['R1','Guard\x20immutable=true\x20to\x20verify',a['constraints']['runtime_01_guard_immutable']],['R2','submission\x20type\x20bytes\x20match\x20table\x20declaration',a['constraints']['runtime_02_submission_type_match']],['R3','b_submission=true\x20entry\x20found\x20in\x20submission',a['constraints']['runtime_03_submission_complete']],['R4','submission\x20total\x20bytes\x20≤\x20'+MAX_SUBMISSION_SIZE_PASSPORT,a['constraints']['runtime_04_submission_size']],['R5','witness\x20derivation\x20source\x20object\x20has\x20related\x20field',a['constraints']['runtime_05_witness_source_valid']],['R6','query\x20target\x20object\x20exists\x20and\x20types\x20match',a['constraints']['runtime_06_query_object_valid']]];b['push']('\x20\x20Creation-time\x20constraints:'),d['forEach'](([f,g,h])=>{b['push']('\x20\x20'+(h?'✓':'✗')+'\x20['+f+']\x20'+g);}),b['push']('\x20\x20Runtime\x20constraints:'),e['forEach'](([f,g,h])=>{b['push']('\x20\x20'+(h?'✓':'✗')+'\x20['+f+']\x20'+g);}),b['push']('');}b['push']('[Risk\x20warnings]'),b['push']('\x20\x20⚠\x20Guard\x20cannot\x20be\x20modified\x20or\x20deleted\x20after\x20creation\x20(CREATE-only)'),b['push']('\x20\x20⚠\x20On-chain\x20execution\x20will\x20consume\x20gas'),b['push']('\x20\x20⚠\x20To\x20modify\x20after\x20creation:\x20export\x20→\x20edit\x20→\x20create\x20new\x20→\x20rebind'),b['push'](''),b['push']('[Test\x20plan\x20(gen_passport\x20static\x20test)]'),b['push']('\x20\x20Expected\x20pass\x20scenario:\x20submit\x20data\x20meeting\x20conditions\x20→\x20PASS\x20→\x20Passport\x20generated'),b['push']('\x20\x20Expected\x20fail\x20scenario:\x20submit\x20data\x20not\x20meeting\x20conditions\x20→\x20FAIL\x20→\x20verify\x20logic\x20direction'),b['push'](''),b['push']('[Post-creation\x20actions\x20(important)]'),b['push']('\x20\x201.\x20Use\x20guard2file\x20to\x20export\x20the\x20Guard\x20backup\x20(JSON\x20file)\x20for\x20later\x20rebuild\x20or\x20migration'),b['push']('\x20\x202.\x20Record\x20the\x20Guard\x20object\x20ID\x20for\x20subsequent\x20binding\x20and\x20invocation'),b['push']('\x20\x203.\x20If\x20the\x20Guard\x20binds\x20to\x20a\x20Host\x20Object,\x20ensure\x20the\x20Host\x20Object\x20is\x20published\x20after\x20Guard\x20creation'),b['push']('\x20\x204.\x20Verify\x20the\x20Guard\x20logic\x20direction\x20via\x20gen_passport\x20static\x20test'),b['push']('');const c=creationChecksForReadiness(a);return b['push']('[Creation\x20readiness\x20signal]'),b['push']('\x20\x20Puzzle\x20completeness:\x20'+(c?'✓\x20All\x20passed\x20—\x20ready\x20for\x20on-chain\x20CREATE':'✗\x20Some\x20items\x20not\x20passed\x20—\x20please\x20fix\x20first')),b['push'](''),b['push']('═══════════════════════════════════════════════════════'),b['push']('\x20\x20Please\x20review\x20the\x20Guard\x20semantic\x20confirmation\x20report\x20above'),b['push']('\x20\x20After\x20confirming\x20no\x20issues,\x20reply\x20\x22confirm\x20creation\x22\x20to\x20execute\x20on-chain\x20CREATE'),b['push']('\x20\x20If\x20modifications\x20are\x20needed,\x20please\x20point\x20out\x20the\x20parts\x20to\x20adjust'),b['push']('═══════════════════════════════════════════════════════'),b['join']('\x0a');}function creationChecksForReadiness(a){if(!a['intent']||!a['binding']||!a['data_sources']||!a['logic']||!a['constraints'])return![];const b=a['constraints'],d=b['pitfall_01_identifiers_in_table']&&b['pitfall_02_type_compatibility']&&b['pitfall_03_query_instruction_valid']&&b['pitfall_04_witness_correct']&&b['pitfall_05_time_lock_test_safe']&&b['pitfall_06_exported_before_recreate']&&b['pitfall_07_root_returns_bool']&&b['pitfall_08_rely_rep_true']&&b['pitfall_09_voting_weight_numeric']&&b['pitfall_10_arbitration_not_paused'],e=b['runtime_01_guard_immutable']&&b['runtime_02_submission_type_match']&&b['runtime_03_submission_complete']&&b['runtime_04_submission_size']&&b['runtime_05_witness_source_valid']&&b['runtime_06_query_object_valid'];return d&&e;}function printDataSources(a,b){b['on_chain_constants']['length']>0x0&&(a['push']('\x20\x20Type1\x20—\x20On-chain\x20constant\x20objects\x20(OnChainConstant,\x20b_submission=false):'),b['on_chain_constants']['forEach'](c=>{const d=c['is_system_address']?'\x20[system\x20address]':'';a['push']('\x20\x20\x20\x20[id='+c['identifier']+']\x20'+c['object_type']+'('+c['object_address']+')'+d+'\x20—\x20'+c['name']);})),b['witness_derived']['length']>0x0&&(a['push']('\x20\x20Type2\x20—\x20Witness-derived\x20objects\x20(WitnessDerived,\x20convert_witness\x20100-108):'),b['witness_derived']['forEach'](c=>{const d=c['source_b_submission']?'submitted':'constant';a['push']('\x20\x20\x20\x20[id='+c['identifier']+']\x20'+c['source_type']+'('+d+')\x20→\x20'+c['target_type']+'\x20via\x20'+c['witness_name']+'('+c['witness_type']+')\x20—\x20'+c['name']);})),b['submitted_objects']['length']>0x0&&(a['push']('\x20\x20Type3\x20—\x20Submitted\x20objects\x20(SubmittedObject,\x20b_submission=true):'),b['submitted_objects']['forEach'](c=>{a['push']('\x20\x20\x20\x20[id='+c['identifier']+']\x20'+c['expected_object_type']+'('+c['value_type']+')\x20—\x20'+c['name']),c['binding_constraint']&&a['push']('\x20\x20\x20\x20\x20\x20Constraint:\x20'+c['binding_constraint']);})),b['submitted_values']['length']>0x0&&(a['push']('\x20\x20Type3\x20—\x20Submitted\x20values\x20(SubmittedValue,\x20b_submission=true,\x20scalar):'),b['submitted_values']['forEach'](c=>{a['push']('\x20\x20\x20\x20[id='+c['identifier']+']\x20'+c['value_type']+'\x20—\x20'+c['name']),c['binding_constraint']&&a['push']('\x20\x20\x20\x20\x20\x20Constraint:\x20'+c['binding_constraint']);})),b['system_contexts']['length']>0x0&&(a['push']('\x20\x20Type4\x20—\x20System\x20contexts\x20(SystemContext,\x20not\x20in\x20table):'),b['system_contexts']['forEach'](c=>{a['push']('\x20\x20\x20\x20context('+c['context_type']+')\x20—\x20'+c['usage']);})),b['on_chain_constants']['length']===0x0&&b['witness_derived']['length']===0x0&&b['submitted_objects']['length']===0x0&&b['submitted_values']['length']===0x0&&b['system_contexts']['length']===0x0&&a['push']('\x20\x20(No\x20data\x20sources\x20declared)');}function printLogicTree(a,b,c){const d='\x20\x20'['repeat'](c+0x1);b['forEach']((e,f)=>{const g=f===b['length']-0x1?'└──\x20':'├──\x20';a['push'](''+d+g+e['node_type']+'\x20('+e['return_type']+')\x20—\x20'+e['description']),e['references_identifier']!==undefined&&a['push'](d+'\x20\x20\x20\x20→\x20table['+e['references_identifier']+']'),e['query']&&a['push'](d+'\x20\x20\x20\x20→\x20query('+e['query']['query_id']+':\x20'+e['query']['query_name']+')'),e['children']&&printLogicTree(a,e['children'],c+0x1);});}export function initPuzzleFromIntent(a){return{'current_round':'R1','intent':{'action':a['action']??'custom','rule_sentence':a['rule_sentence']??'','failure_conditions':a['failure_conditions']??[]}};}export function inferBindingFromAction(a){const b={'buy':{'host_object':'Service','binding_field':'buy_guard'},'forward':{'host_object':'Machine','binding_field':'Forward.guard'},'allocate':{'host_object':'Service','binding_field':'order_allocators'},'claim_reward':{'host_object':'Reward','binding_field':'guard'},'vote':{'host_object':'Arbitration','binding_field':'voting_guard'},'dispute':{'host_object':'Arbitration','binding_field':'usage_guard'},'write_repository':{'host_object':'Repository','binding_field':'write_guard'},'submit_progress':{'host_object':'Progress','binding_field':'submission'},'gen_passport':{'host_object':'Standalone','binding_field':'none'},'custom':{}};return b[a]??{};}export function emptyDataSources(){return{'on_chain_constants':[],'witness_derived':[],'submitted_objects':[],'submitted_values':[],'system_contexts':[]};}export const WITNESS_NAME_MAP={0x64:{'name':'TypeOrderProgress','source':'Order','target':'Progress'},0x65:{'name':'TypeOrderMachine','source':'Order','target':'Machine'},0x66:{'name':'TypeOrderService','source':'Order','target':'Service'},0x67:{'name':'TypeProgressMachine','source':'Progress','target':'Machine'},0x68:{'name':'TypeArbOrder','source':'Arb','target':'Order'},0x69:{'name':'TypeArbArbitration','source':'Arb','target':'Arbitration'},0x6a:{'name':'TypeArbProgress','source':'Arb','target':'Progress'},0x6b:{'name':'TypeArbMachine','source':'Arb','target':'Machine'},0x6c:{'name':'TypeArbService','source':'Arb','target':'Service'}};export function getWitnessInfo(a){return WITNESS_NAME_MAP[a];}function traverseRoot(a,b){if(!a)return;a['type']==='identifier'&&typeof a['identifier']==='number'&&b['referencedIdentifiers']['add'](a['identifier']);a['type']==='context'&&a['context']&&b['contexts']['add'](a['context']);if(a['type']==='query'&&a['object']){const c=a['object']['identifier'];b['referencedIdentifiers']['add'](c);const d=a['object']['convert_witness'];typeof d==='number'&&d>=0x64&&d<=0x6c&&b['witnessCodes']['push']({'code':d,'objectIdentifier':c});b['queries']['push']({'query':a['query']??'','objectIdentifier':c,'convertWitness':d,'parametersCount':a['parameters']?.['length']??0x0});if(a['parameters'])for(const e of a['parameters']){traverseRoot(e,b);}}if(a['nodes'])for(const f of a['nodes']){traverseRoot(f,b);}a['node']&&traverseRoot(a['node'],b),a['nodeLeft']&&traverseRoot(a['nodeLeft'],b),a['nodeRight']&&traverseRoot(a['nodeRight'],b);}function buildLogicTree(a){if(!a)return undefined;const b={'node_type':a['type'],'return_type':inferNodeType(a['type']),'description':describeNode(a)};a['type']==='identifier'&&typeof a['identifier']==='number'&&(b['references_identifier']=a['identifier']);if(a['type']==='query'&&a['object']){b['query']={'query_id':typeof a['query']==='number'?a['query']:0x0,'query_name':typeof a['query']==='string'?a['query']:String(a['query']??''),'object_type':'','parameters':[],'return_type':'','purpose':''};if(a['object']['convert_witness']){const c=getWitnessInfo(a['object']['convert_witness']);c&&(b['query']['witness']={'witness_type':a['object']['convert_witness'],'witness_name':c['name'],'source_type':c['source'],'target_type':c['target'],'scenario':''});}}if(a['nodes']){const d=a['nodes']['map'](e=>buildLogicTree(e))['filter'](e=>e!==undefined);d['length']>0x0&&(b['children']=d);}if(a['node']){const e=buildLogicTree(a['node']);e&&(b['children']=[e]);}if(a['nodeLeft']){const f=buildLogicTree(a['nodeLeft']);f&&(b['children']=[...b['children']??[],f]);}if(a['nodeRight']){const g=buildLogicTree(a['nodeRight']);g&&(b['children']=[...b['children']??[],g]);}return b;}function inferNodeType(a){const b=['logic_equal','logic_not','logic_and','logic_or','logic_as_u256_greater','logic_as_u256_lesser','logic_as_u256_equal','logic_as_u256_greater_or_equal','logic_as_u256_lesser_or_equal','logic_string_contains','logic_string_nocase_contains','logic_string_nocase_equal','calc_string_contains','calc_string_nocase_contains','calc_string_nocase_equal','vec_contains_bool','vec_contains_address','vec_contains_string','vec_contains_string_nocase','vec_contains_number','query_reward_record_exists'];if(b['includes'](a))return'Bool';const c=['calc_number_add','calc_number_subtract','calc_number_multiply','calc_number_divide','calc_number_mod','convert_address_number','convert_string_number'];if(c['includes'](a))return'U256';const d=['calc_string_length','calc_string_indexof','calc_string_nocase_indexof','vec_length','vec_indexof_bool','vec_indexof_address','vec_indexof_string','vec_indexof_string_nocase','vec_indexof_number','query_reward_record_count','query_progress_history_session_count','query_progress_history_session_forward_count','query_progress_history_session_forward_retained_submission_count'];if(d['includes'](a))return'U64';const e=['convert_number_address'];if(e['includes'](a))return'Address';const f=['convert_number_string'];if(f['includes'](a))return'String';const g=['convert_safe_u8','convert_safe_u16','convert_safe_u32','convert_safe_u64','convert_safe_u128','convert_safe_u256'];if(g['includes'](a))return a['replace']('convert_safe_','U');if(a==='value_type')return'U8';if(a==='query')return'query_defined';if(a==='identifier')return'table_defined';if(a==='context')return'context_defined';return'unknown';}function describeNode(a){switch(a['type']){case'identifier':return'Reference\x20to\x20table['+(a['identifier']??'?')+']';case'context':return'System\x20context:\x20'+(a['context']??'?');case'query':return'Query\x20instruction\x20'+(a['query']??'?')+'\x20(target:\x20table['+(a['object']?.['identifier']??'?')+'])';case'logic_equal':return'Equality\x20comparison\x20(==)';case'logic_not':return'Logical\x20NOT\x20(!)';case'logic_and':return'Logical\x20AND';case'logic_or':return'Logical\x20OR';case'logic_as_u256_greater':return'Numeric\x20greater\x20than\x20(>)';case'logic_as_u256_lesser':return'Numeric\x20less\x20than\x20(<)';case'logic_as_u256_equal':return'Numeric\x20equality\x20(==)';case'logic_as_u256_greater_or_equal':return'Numeric\x20greater\x20than\x20or\x20equal\x20(>=)';case'logic_as_u256_lesser_or_equal':return'Numeric\x20less\x20than\x20or\x20equal\x20(<=)';case'calc_number_add':return'Numeric\x20addition\x20(+)';case'calc_number_subtract':return'Numeric\x20subtraction\x20(-)';case'calc_number_multiply':return'Numeric\x20multiplication\x20(*)';case'calc_number_divide':return'Numeric\x20division\x20(/)';case'calc_number_mod':return'Numeric\x20modulo\x20(%)';case'vec_contains_address':return'Whitelist\x20check\x20(vec_contains_address)';case'vec_length':return'Vector\x20length';case'convert_safe_u64':return'Safe\x20conversion\x20to\x20U64';default:return a['type'];}}function deriveConstraints(a,b,c,d){const e=Array['from'](d['referencedIdentifiers'])['every'](v=>a['some'](w=>w['identifier']===v)),f=b!==undefined,g=!![],h=d['witnessCodes']['every'](v=>v['code']>=0x64&&v['code']<=0x6c),i=!![],j=!![],k=b!==undefined,l=c?c['guards']['length']<=0x4:!![],m=!![],n=!![],o=!![],p=!![],q=!![],r=a['filter'](v=>v['b_submission']),s=r['length']<=MAX_SUBMISSION_SIZE_PASSPORT,t=!![],u=!![];return{'pitfall_01_identifiers_in_table':e,'pitfall_02_type_compatibility':f,'pitfall_03_query_instruction_valid':g,'pitfall_04_witness_correct':h,'pitfall_05_time_lock_test_safe':i,'pitfall_06_exported_before_recreate':j,'pitfall_07_root_returns_bool':k,'pitfall_08_rely_rep_true':l,'pitfall_09_voting_weight_numeric':m,'pitfall_10_arbitration_not_paused':n,'runtime_01_guard_immutable':o,'runtime_02_submission_type_match':p,'runtime_03_submission_complete':q,'runtime_04_submission_size':s,'runtime_05_witness_source_valid':t,'runtime_06_query_object_valid':u};}export function derivePuzzleFromCallData(a){const b=a['table']??[],c=a['root'],d=a['rely'],e=a['binding_hint'],f={'referencedIdentifiers':new Set(),'queries':[],'contexts':new Set(),'witnessCodes':[]};c&&traverseRoot(c,f);let g;e&&(g={'action':e['action'],'rule_sentence':e['rule_sentence']??'','failure_conditions':e['failure_conditions']??[]});let h;e&&(h={'host_object':e['host_object'],'binding_field':e['binding_field'],'circular_reference':e['circular_reference']??![],'host_object_state':'unknown'});const i=new Map();for(const t of f['witnessCodes']){i['set'](t['objectIdentifier'],t['code']);}const j=[],k=[],l=[],m=[];for(const u of b){const v=f['referencedIdentifiers']['has'](u['identifier']),x=i['get'](u['identifier']);if(x!==undefined){const y=getWitnessInfo(x);if(y){k['push']({'identifier':u['identifier'],'source_type':y['source'],'witness_type':x,'witness_name':y['name'],'target_type':y['target'],'source_b_submission':u['b_submission'],'name':u['name']||y['source']+'→'+y['target']+'\x20via\x20'+y['name']});continue;}}if(!u['b_submission']){const z=typeof u['value']==='string'?u['value']['toLowerCase']():'',A=z==='0xaab'||z==='0xaaa';j['push']({'identifier':u['identifier'],'object_address':typeof u['value']==='string'?u['value']:String(u['value']??''),'object_type':u['object_type']??'','name':u['name']||'constant\x20#'+u['identifier'],'is_system_address':A});}else{const B=typeof u['value_type']==='string'?u['value_type']['toLowerCase']():String(u['value_type']);B==='address'?l['push']({'identifier':u['identifier'],'expected_object_type':u['object_type']??'','value_type':'Address','name':u['name']||'submitted\x20object\x20#'+u['identifier'],'binding_constraint':u['object_type']?'must\x20be\x20an\x20on-chain\x20object\x20address\x20of\x20type\x20'+u['object_type']:'must\x20be\x20a\x20valid\x20on-chain\x20object\x20address'}):m['push']({'identifier':u['identifier'],'value_type':typeof u['value_type']==='string'?u['value_type']:String(u['value_type']),'name':u['name']||'submitted\x20value\x20#'+u['identifier'],'binding_constraint':'value\x20type\x20must\x20be\x20'+u['value_type']});}}const n=[];for(const C of f['contexts']){const D={'Signer':'Current\x20transaction\x20signer\x20address\x20verification','Clock':'On-chain\x20timestamp\x20(used\x20for\x20time-lock/time-window)','Guard':'Guard\x20self\x20object\x20ID\x20self-reference'};n['push']({'context_type':C,'usage':D[C]??''});}const o={'on_chain_constants':j,'witness_derived':k,'submitted_objects':l,'submitted_values':m,'system_contexts':n},p=f['queries']['map'](E=>{const F=E['convertWitness']!==undefined?getWitnessInfo(E['convertWitness']):undefined;return{'query_id':typeof E['query']==='number'?E['query']:0x0,'query_name':typeof E['query']==='string'?E['query']:String(E['query']),'object_type':'','parameters':[],'return_type':'','witness':F?{'witness_type':E['convertWitness'],'witness_name':F['name'],'source_type':F['source'],'target_type':F['target'],'scenario':''}:undefined,'purpose':''};});let q;if(c){const E=buildLogicTree(c);if(E){E['return_type']='Bool';let F;d&&d['guards']['length']>0x0&&(F={'guards':d['guards'],'logic_or':d['logic_or']??![],'rep_verified':d['guards']['map'](()=>!![])}),q={'root':E,'rely':F};}}const r=deriveConstraints(b,c,d,f),s={'current_round':'R7','intent':g,'binding':h,'data_sources':o,'queries':p,'logic':q,'constraints':r};return s;}export function getPuzzleStatusBooleans(a){const b=checkPuzzleCompleteness(a);return{'intent':b['dimensions']['intent'],'binding':b['dimensions']['binding'],'data':b['dimensions']['data_sources'],'query':b['dimensions']['query'],'logic':b['dimensions']['logic'],'constraints':b['dimensions']['constraints']};}export function getPendingQuestions(a){const b=checkPuzzleCompleteness(a);if(b['complete'])return[];return b['next_step']['questions'];}
1
+ import{MAX_SUBMISSION_SIZE_PASSPORT,WOW_SYSTEM_SINGLETONS}from'@wowok/wowok';export function checkPuzzleCompleteness(a){const b={'intent':isIntentComplete(a['intent']),'binding':isBindingComplete(a['binding']),'data_sources':isDataSourcesComplete(a['data_sources']),'query':isQueryComplete(a['queries']),'logic':isLogicComplete(a['logic']),'constraints':isConstraintsComplete(a['constraints'])},c=Object['keys'](b)['filter'](g=>!b[g]),d=[];!b['intent']&&d['push']('A.\x20Intent:\x20protected\x20action,\x20validation\x20rule,\x20or\x20failure\x20conditions\x20not\x20clarified');!b['binding']&&d['push']('B.\x20Binding:\x20Host\x20Object,\x20binding\x20field,\x20or\x20circular\x20reference\x20mode\x20not\x20determined');!b['data_sources']&&d['push']('C.\x20Data\x20sources:\x20data\x20sources\x20not\x20declared\x20by\x204\x20classifications\x20(on-chain\x20constant\x20/\x20witness-derived\x20/\x20submitted\x20object\x20/\x20system\x20context)');!b['query']&&d['push']('D.\x20Query:\x20query\x20instruction\x20not\x20determined\x20(if\x20the\x20Guard\x20needs\x20to\x20query\x20on-chain\x20data)');!b['logic']&&d['push']('E.\x20Logic:\x20computation\x20tree\x20root\x20or\x20rely\x20composition\x20not\x20designed');!b['constraints']&&d['push']('F.\x20Constraints:\x20creation-time\x2010\x20+\x20runtime\x206\x20constraint\x20checks\x20not\x20completed');const e=c['length']===0x0,f=recommendNextStep(a,c);return{'dimensions':b,'missing':c,'missing_details':d,'complete':e,'next_step':f};}function isIntentComplete(a){return!!a&&!!a['action']&&!!a['rule_sentence']&&a['failure_conditions']['length']>0x0;}function isBindingComplete(a){return!!a&&!!a['host_object']&&!!a['binding_field'];}function isDataSourcesComplete(a){if(!a)return![];const b=a['on_chain_constants']['length']>0x0,c=a['witness_derived']['length']>0x0,d=a['submitted_objects']['length']>0x0,e=a['submitted_values']['length']>0x0,f=a['system_contexts']['length']>0x0;if(!b&&!c&&!d&&!e&&!f)return![];const g=a['submitted_objects']['some'](h=>!h['binding_constraint']);if(g)return![];return!![];}function isQueryComplete(a){return!![];}function isLogicComplete(a){return!!a&&!!a['root']&&a['root']['return_type']==='Bool';}function isConstraintsComplete(a){if(!a)return![];return Object['values'](a)['every'](b=>b===!![]);}function recommendNextStep(a,b){if(b['includes']('intent'))return{'round':'R1','action':'Capture\x20validation\x20intent','questions':['What\x20action\x20do\x20you\x20want\x20to\x20protect?\x20(buy/forward/claim/vote/dispute/write/allocate)','Describe\x20the\x20validation\x20rule\x20in\x20one\x20sentence','List\x20the\x20conditions\x20under\x20which\x20the\x20Guard\x20should\x20FAIL']};if(b['includes']('binding'))return{'round':'R5','action':'Determine\x20binding\x20target','questions':['Which\x20Host\x20Object\x20will\x20the\x20Guard\x20bind\x20to?\x20(Service/Machine/Arbitration/Reward/Repository)','Which\x20field\x20will\x20it\x20bind\x20to?\x20(buy_guard/order_allocators/Forward.guard/...)','Does\x20the\x20Guard\x20need\x20to\x20reference\x20the\x20Host\x20Object?\x20(circular\x20reference\x20mode)']};if(b['includes']('data_sources'))return{'round':'R2','action':'Declare\x20data\x20sources\x20by\x204\x20classifications','questions':['Type1\x20(on-chain\x20constant):\x20Which\x20already-published\x20on-chain\x20objects\x20does\x20the\x20Guard\x20need\x20to\x20query?\x20(Service/Machine/Reward\x20addresses)','Type2\x20(witness-derived):\x20Do\x20you\x20need\x20to\x20derive\x20Progress/Machine/Service\x20from\x20Order/Arb?\x20(choose\x20witness\x20100-108)','Type3\x20(submitted\x20object):\x20Which\x20object\x20addresses\x20does\x20the\x20caller\x20need\x20to\x20submit?\x20(Order/Reward/Progress)\x20—\x20constraint\x20rules\x20must\x20be\x20designed','Type3\x20(submitted\x20value):\x20Which\x20scalar\x20values\x20does\x20the\x20caller\x20need\x20to\x20submit?\x20(amount/weight/node\x20name)','Type4\x20(system\x20context):\x20Do\x20you\x20need\x20Signer\x20(identity)\x20/\x20Clock\x20(time)\x20/\x20Guard\x20(self-reference)?','Do\x20you\x20need\x20to\x20query\x20EntityRegistrar(0xaab)\x20or\x20EntityLinker(0xaaa)?']};if(b['includes']('query'))return{'round':'R3','action':'Design\x20query\x20nodes','questions':['Which\x20on-chain\x20objects\x20does\x20the\x20Guard\x20need\x20to\x20query?','Which\x20instruction\x20ID\x20does\x20each\x20query\x20use?\x20(look\x20up\x20from\x20GUARDQUERY)','Do\x20you\x20need\x20convert_witness\x20to\x20convert\x20objects?\x20(linked\x20to\x20Type2\x20declaration)']};if(b['includes']('logic'))return{'round':'R3','action':'Design\x20computation\x20tree','questions':['What\x20is\x20the\x20root\x20node?\x20(must\x20return\x20Bool)','Which\x20data\x20source\x20nodes\x20are\x20there?\x20(by\x204\x20classifications:\x20identifier/context/query)','Which\x20intermediate\x20conversion\x20nodes\x20are\x20there?\x20(calc_*/convert_*/vec_*)','Do\x20you\x20need\x20rely\x20to\x20compose\x20with\x20other\x20Guards?']};if(b['includes']('constraints'))return{'round':'R6','action':'Pre-creation\x20review','questions':['Run\x20the\x20creation-time\x2010\x20+\x20runtime\x206\x20constraint\x20checklist']};return{'round':'R7','action':'Prepare\x20for\x20on-chain\x20creation','questions':['All\x20dimensions\x20are\x20complete;\x20ready\x20to\x20generate\x20the\x20semantic\x20confirmation\x20text']};}export function generateConfirmationText(a){if(!a['intent']||!a['binding']||!a['data_sources']||!a['logic'])return'[Puzzle\x20incomplete]\x20Cannot\x20generate\x20confirmation\x20text;\x20please\x20complete\x20all\x20dimensions\x20first';const b=[];b['push']('═══════════════════════════════════════════════════════'),b['push']('\x20\x20Guard\x20Semantic\x20Confirmation\x20Report\x20(User\x20Review\x20Edition)'),b['push']('═══════════════════════════════════════════════════════'),b['push'](''),b['push']('[Intent]'),b['push']('Protected\x20action:\x20'+a['intent']['action']),b['push']('Validation\x20rule:\x20'+a['intent']['rule_sentence']),b['push']('Failure\x20conditions:'),a['intent']['failure_conditions']['forEach']((d,e)=>{b['push']('\x20\x20'+(e+0x1)+'.\x20'+d);}),b['push'](''),b['push']('[Binding]'),b['push']('Host\x20Object:\x20'+a['binding']['host_object']);a['binding']['host_object_name']&&b['push']('Host\x20Object\x20name:\x20'+a['binding']['host_object_name']);b['push']('Binding\x20field:\x20'+a['binding']['binding_field']),b['push']('Circular\x20reference:\x20'+(a['binding']['circular_reference']?'Yes\x20(Guard\x20references\x20Host\x20Object)':'No')),b['push']('Host\x20Object\x20state:\x20'+a['binding']['host_object_state']),b['push'](''),b['push']('[Data\x20sources\x20(4\x20classifications)]'),printDataSources(b,a['data_sources']),b['push']('');a['queries']&&a['queries']['length']>0x0&&(b['push']('[Query\x20instructions]'),b['push']('┌──────┬──────────────────────────┬────────────┬──────────┬──────────┐'),b['push']('│\x20ID\x20\x20\x20│\x20Query\x20instruction\x20\x20\x20\x20\x20\x20\x20\x20│\x20Target\x20obj\x20│\x20Params\x20\x20\x20│\x20Return\x20\x20\x20│'),b['push']('├──────┼──────────────────────────┼────────────┼──────────┼──────────┤'),a['queries']['forEach'](d=>{const e=String(d['query_id'])['padEnd'](0x4),f=d['query_name']['length']>0x18?d['query_name']['slice'](0x0,0x17)+'…':d['query_name']['padEnd'](0x18),g=d['object_type']['padEnd'](0xa),h=(d['parameters']['length']===0x0?'(none)':d['parameters']['join'](','))['padEnd'](0x8),i=d['return_type']['padEnd'](0x8);b['push']('│\x20'+e+'\x20│\x20'+f+'\x20│\x20'+g+'\x20│\x20'+h+'\x20│\x20'+i+'\x20│');}),b['push']('└──────┴──────────────────────────┴────────────┴──────────┴──────────┘'),b['push'](''));b['push']('[Computation\x20tree]'),b['push']('root:\x20'+a['logic']['root']['node_type']+'\x20(returns:\x20'+a['logic']['root']['return_type']+')'),b['push']('\x20\x20'+a['logic']['root']['description']);a['logic']['root']['children']&&printLogicTree(b,a['logic']['root']['children'],0x1);b['push']('');a['logic']['rely']&&(b['push']('[rely\x20composition]'),b['push']('Dependent\x20Guards:\x20'+a['logic']['rely']['guards']['join'](',\x20')),b['push']('Logic:\x20'+(a['logic']['rely']['logic_or']?'OR\x20(any\x20passes)':'AND\x20(all\x20must\x20pass)')),b['push']('rep\x20verification:\x20'+(a['logic']['rely']['rep_verified']['every'](d=>d)?'all\x20passed':'some\x20unverified')),b['push'](''));if(a['constraints']){b['push']('[Constraint\x20checklist\x20(creation-time\x2022\x20+\x20runtime\x2011\x20=\x2033;\x20MCP\x20layer\x20static\x20check\x2016)]');const d=[['01','All\x20identifiers\x20exist\x20in\x20the\x20table',a['constraints']['pitfall_01_identifiers_in_table']],['02','Comparison\x20node\x20types\x20are\x20compatible',a['constraints']['pitfall_02_type_compatibility']],['03','Query\x20instruction\x20ID\x20and\x20parameter\x20count\x20are\x20correct',a['constraints']['pitfall_03_query_instruction_valid']],['04','convert_witness\x20type\x20is\x20correct',a['constraints']['pitfall_04_witness_correct']],['05','Time-lock\x20tests\x20use\x20small\x20values',a['constraints']['pitfall_05_time_lock_test_safe']],['06','Old\x20Guard\x20exported\x20before\x20iteration',a['constraints']['pitfall_06_exported_before_recreate']],['07','root\x20returns\x20Bool',a['constraints']['pitfall_07_root_returns_bool']],['08','rely\x20dependency\x20rep=true',a['constraints']['pitfall_08_rely_rep_true']],['09','voting_guard\x20GuardIdentifier\x20numeric',a['constraints']['pitfall_09_voting_weight_numeric']],['10','Arbitration\x20not\x20paused',a['constraints']['pitfall_10_arbitration_not_paused']]],e=[['R1','Guard\x20immutable=true\x20to\x20verify',a['constraints']['runtime_01_guard_immutable']],['R2','submission\x20type\x20bytes\x20match\x20table\x20declaration',a['constraints']['runtime_02_submission_type_match']],['R3','b_submission=true\x20entry\x20found\x20in\x20submission',a['constraints']['runtime_03_submission_complete']],['R4','submission\x20total\x20bytes\x20≤\x20'+MAX_SUBMISSION_SIZE_PASSPORT,a['constraints']['runtime_04_submission_size']],['R5','witness\x20derivation\x20source\x20object\x20has\x20related\x20field',a['constraints']['runtime_05_witness_source_valid']],['R6','query\x20target\x20object\x20exists\x20and\x20types\x20match',a['constraints']['runtime_06_query_object_valid']]];b['push']('\x20\x20Creation-time\x20constraints:'),d['forEach'](([f,g,h])=>{b['push']('\x20\x20'+(h?'✓':'✗')+'\x20['+f+']\x20'+g);}),b['push']('\x20\x20Runtime\x20constraints:'),e['forEach'](([f,g,h])=>{b['push']('\x20\x20'+(h?'✓':'✗')+'\x20['+f+']\x20'+g);}),b['push']('');}b['push']('[Risk\x20warnings]'),b['push']('\x20\x20⚠\x20Guard\x20cannot\x20be\x20modified\x20or\x20deleted\x20after\x20creation\x20(CREATE-only)'),b['push']('\x20\x20⚠\x20On-chain\x20execution\x20will\x20consume\x20gas'),b['push']('\x20\x20⚠\x20To\x20modify\x20after\x20creation:\x20export\x20→\x20edit\x20→\x20create\x20new\x20→\x20rebind'),b['push'](''),b['push']('[Test\x20plan\x20(gen_passport\x20static\x20test)]'),b['push']('\x20\x20Expected\x20pass\x20scenario:\x20submit\x20data\x20meeting\x20conditions\x20→\x20PASS\x20→\x20Passport\x20generated'),b['push']('\x20\x20Expected\x20fail\x20scenario:\x20submit\x20data\x20not\x20meeting\x20conditions\x20→\x20FAIL\x20→\x20verify\x20logic\x20direction'),b['push'](''),b['push']('[Post-creation\x20actions\x20(important)]'),b['push']('\x20\x201.\x20Use\x20guard2file\x20to\x20export\x20the\x20Guard\x20backup\x20(JSON\x20file)\x20for\x20later\x20rebuild\x20or\x20migration'),b['push']('\x20\x202.\x20Record\x20the\x20Guard\x20object\x20ID\x20for\x20subsequent\x20binding\x20and\x20invocation'),b['push']('\x20\x203.\x20If\x20the\x20Guard\x20binds\x20to\x20a\x20Host\x20Object,\x20ensure\x20the\x20Host\x20Object\x20is\x20published\x20after\x20Guard\x20creation'),b['push']('\x20\x204.\x20Verify\x20the\x20Guard\x20logic\x20direction\x20via\x20gen_passport\x20static\x20test'),b['push']('');const c=creationChecksForReadiness(a);return b['push']('[Creation\x20readiness\x20signal]'),b['push']('\x20\x20Puzzle\x20completeness:\x20'+(c?'✓\x20All\x20passed\x20—\x20ready\x20for\x20on-chain\x20CREATE':'✗\x20Some\x20items\x20not\x20passed\x20—\x20please\x20fix\x20first')),b['push'](''),b['push']('═══════════════════════════════════════════════════════'),b['push']('\x20\x20Please\x20review\x20the\x20Guard\x20semantic\x20confirmation\x20report\x20above'),b['push']('\x20\x20After\x20confirming\x20no\x20issues,\x20reply\x20\x22confirm\x20creation\x22\x20to\x20execute\x20on-chain\x20CREATE'),b['push']('\x20\x20If\x20modifications\x20are\x20needed,\x20please\x20point\x20out\x20the\x20parts\x20to\x20adjust'),b['push']('═══════════════════════════════════════════════════════'),b['join']('\x0a');}function creationChecksForReadiness(a){if(!a['intent']||!a['binding']||!a['data_sources']||!a['logic']||!a['constraints'])return![];const b=a['constraints'],d=b['pitfall_01_identifiers_in_table']&&b['pitfall_02_type_compatibility']&&b['pitfall_03_query_instruction_valid']&&b['pitfall_04_witness_correct']&&b['pitfall_05_time_lock_test_safe']&&b['pitfall_06_exported_before_recreate']&&b['pitfall_07_root_returns_bool']&&b['pitfall_08_rely_rep_true']&&b['pitfall_09_voting_weight_numeric']&&b['pitfall_10_arbitration_not_paused'],e=b['runtime_01_guard_immutable']&&b['runtime_02_submission_type_match']&&b['runtime_03_submission_complete']&&b['runtime_04_submission_size']&&b['runtime_05_witness_source_valid']&&b['runtime_06_query_object_valid'];return d&&e;}function printDataSources(a,b){b['on_chain_constants']['length']>0x0&&(a['push']('\x20\x20Type1\x20—\x20On-chain\x20constant\x20objects\x20(OnChainConstant,\x20b_submission=false):'),b['on_chain_constants']['forEach'](c=>{const d=c['is_system_address']?'\x20[system\x20address]':'';a['push']('\x20\x20\x20\x20[id='+c['identifier']+']\x20'+c['object_type']+'('+c['object_address']+')'+d+'\x20—\x20'+c['name']);})),b['witness_derived']['length']>0x0&&(a['push']('\x20\x20Type2\x20—\x20Witness-derived\x20objects\x20(WitnessDerived,\x20convert_witness\x20100-108):'),b['witness_derived']['forEach'](c=>{const d=c['source_b_submission']?'submitted':'constant';a['push']('\x20\x20\x20\x20[id='+c['identifier']+']\x20'+c['source_type']+'('+d+')\x20→\x20'+c['target_type']+'\x20via\x20'+c['witness_name']+'('+c['witness_type']+')\x20—\x20'+c['name']);})),b['submitted_objects']['length']>0x0&&(a['push']('\x20\x20Type3\x20—\x20Submitted\x20objects\x20(SubmittedObject,\x20b_submission=true):'),b['submitted_objects']['forEach'](c=>{a['push']('\x20\x20\x20\x20[id='+c['identifier']+']\x20'+c['expected_object_type']+'('+c['value_type']+')\x20—\x20'+c['name']),c['binding_constraint']&&a['push']('\x20\x20\x20\x20\x20\x20Constraint:\x20'+c['binding_constraint']);})),b['submitted_values']['length']>0x0&&(a['push']('\x20\x20Type3\x20—\x20Submitted\x20values\x20(SubmittedValue,\x20b_submission=true,\x20scalar):'),b['submitted_values']['forEach'](c=>{a['push']('\x20\x20\x20\x20[id='+c['identifier']+']\x20'+c['value_type']+'\x20—\x20'+c['name']),c['binding_constraint']&&a['push']('\x20\x20\x20\x20\x20\x20Constraint:\x20'+c['binding_constraint']);})),b['system_contexts']['length']>0x0&&(a['push']('\x20\x20Type4\x20—\x20System\x20contexts\x20(SystemContext,\x20not\x20in\x20table):'),b['system_contexts']['forEach'](c=>{a['push']('\x20\x20\x20\x20context('+c['context_type']+')\x20—\x20'+c['usage']);})),b['on_chain_constants']['length']===0x0&&b['witness_derived']['length']===0x0&&b['submitted_objects']['length']===0x0&&b['submitted_values']['length']===0x0&&b['system_contexts']['length']===0x0&&a['push']('\x20\x20(No\x20data\x20sources\x20declared)');}function printLogicTree(a,b,c){const d='\x20\x20'['repeat'](c+0x1);b['forEach']((e,f)=>{const g=f===b['length']-0x1?'└──\x20':'├──\x20';a['push'](''+d+g+e['node_type']+'\x20('+e['return_type']+')\x20—\x20'+e['description']),e['references_identifier']!==undefined&&a['push'](d+'\x20\x20\x20\x20→\x20table['+e['references_identifier']+']'),e['query']&&a['push'](d+'\x20\x20\x20\x20→\x20query('+e['query']['query_id']+':\x20'+e['query']['query_name']+')'),e['children']&&printLogicTree(a,e['children'],c+0x1);});}export function initPuzzleFromIntent(a){return{'current_round':'R1','intent':{'action':a['action']??'custom','rule_sentence':a['rule_sentence']??'','failure_conditions':a['failure_conditions']??[]}};}export function inferBindingFromAction(a){const b={'buy':{'host_object':'Service','binding_field':'buy_guard'},'forward':{'host_object':'Machine','binding_field':'Forward.guard'},'allocate':{'host_object':'Service','binding_field':'order_allocators'},'claim_reward':{'host_object':'Reward','binding_field':'guard'},'vote':{'host_object':'Arbitration','binding_field':'voting_guard'},'dispute':{'host_object':'Arbitration','binding_field':'usage_guard'},'write_repository':{'host_object':'Repository','binding_field':'write_guard'},'submit_progress':{'host_object':'Progress','binding_field':'submission'},'gen_passport':{'host_object':'Standalone','binding_field':'none'},'custom':{}};return b[a]??{};}export function emptyDataSources(){return{'on_chain_constants':[],'witness_derived':[],'submitted_objects':[],'submitted_values':[],'system_contexts':[]};}export const WITNESS_NAME_MAP={0x64:{'name':'TypeOrderProgress','source':'Order','target':'Progress'},0x65:{'name':'TypeOrderMachine','source':'Order','target':'Machine'},0x66:{'name':'TypeOrderService','source':'Order','target':'Service'},0x67:{'name':'TypeProgressMachine','source':'Progress','target':'Machine'},0x68:{'name':'TypeArbOrder','source':'Arb','target':'Order'},0x69:{'name':'TypeArbArbitration','source':'Arb','target':'Arbitration'},0x6a:{'name':'TypeArbProgress','source':'Arb','target':'Progress'},0x6b:{'name':'TypeArbMachine','source':'Arb','target':'Machine'},0x6c:{'name':'TypeArbService','source':'Arb','target':'Service'}};export function getWitnessInfo(a){return WITNESS_NAME_MAP[a];}function traverseRoot(a,b){if(!a)return;a['type']==='identifier'&&typeof a['identifier']==='number'&&b['referencedIdentifiers']['add'](a['identifier']);a['type']==='context'&&a['context']&&b['contexts']['add'](a['context']);if(a['type']==='query'&&a['object']){const c=a['object']['identifier'];b['referencedIdentifiers']['add'](c);const d=a['object']['convert_witness'];typeof d==='number'&&d>=0x64&&d<=0x6c&&b['witnessCodes']['push']({'code':d,'objectIdentifier':c});b['queries']['push']({'query':a['query']??'','objectIdentifier':c,'convertWitness':d,'parametersCount':a['parameters']?.['length']??0x0});if(a['parameters'])for(const e of a['parameters']){traverseRoot(e,b);}}if(a['nodes'])for(const f of a['nodes']){traverseRoot(f,b);}a['node']&&traverseRoot(a['node'],b),a['nodeLeft']&&traverseRoot(a['nodeLeft'],b),a['nodeRight']&&traverseRoot(a['nodeRight'],b);}function buildLogicTree(a){if(!a)return undefined;const b={'node_type':a['type'],'return_type':inferNodeType(a['type']),'description':describeNode(a)};a['type']==='identifier'&&typeof a['identifier']==='number'&&(b['references_identifier']=a['identifier']);if(a['type']==='query'&&a['object']){b['query']={'query_id':typeof a['query']==='number'?a['query']:0x0,'query_name':typeof a['query']==='string'?a['query']:String(a['query']??''),'object_type':'','parameters':[],'return_type':'','purpose':''};if(a['object']['convert_witness']){const c=getWitnessInfo(a['object']['convert_witness']);c&&(b['query']['witness']={'witness_type':a['object']['convert_witness'],'witness_name':c['name'],'source_type':c['source'],'target_type':c['target'],'scenario':''});}}if(a['nodes']){const d=a['nodes']['map'](e=>buildLogicTree(e))['filter'](e=>e!==undefined);d['length']>0x0&&(b['children']=d);}if(a['node']){const e=buildLogicTree(a['node']);e&&(b['children']=[e]);}if(a['nodeLeft']){const f=buildLogicTree(a['nodeLeft']);f&&(b['children']=[...b['children']??[],f]);}if(a['nodeRight']){const g=buildLogicTree(a['nodeRight']);g&&(b['children']=[...b['children']??[],g]);}return b;}function inferNodeType(a){const b=['logic_equal','logic_not','logic_and','logic_or','logic_as_u256_greater','logic_as_u256_lesser','logic_as_u256_equal','logic_as_u256_greater_or_equal','logic_as_u256_lesser_or_equal','logic_string_contains','logic_string_nocase_contains','logic_string_nocase_equal','calc_string_contains','calc_string_nocase_contains','calc_string_nocase_equal','vec_contains_bool','vec_contains_address','vec_contains_string','vec_contains_string_nocase','vec_contains_number','query_reward_record_exists'];if(b['includes'](a))return'Bool';const c=['calc_number_add','calc_number_subtract','calc_number_multiply','calc_number_divide','calc_number_mod','convert_address_number','convert_string_number'];if(c['includes'](a))return'U256';const d=['calc_string_length','calc_string_indexof','calc_string_nocase_indexof','vec_length','vec_indexof_bool','vec_indexof_address','vec_indexof_string','vec_indexof_string_nocase','vec_indexof_number','query_reward_record_count','query_progress_history_session_count','query_progress_history_session_forward_count','query_progress_history_session_forward_retained_submission_count'];if(d['includes'](a))return'U64';const e=['convert_number_address'];if(e['includes'](a))return'Address';const f=['convert_number_string'];if(f['includes'](a))return'String';const g=['convert_safe_u8','convert_safe_u16','convert_safe_u32','convert_safe_u64','convert_safe_u128','convert_safe_u256'];if(g['includes'](a))return a['replace']('convert_safe_','U');if(a==='value_type')return'U8';if(a==='query')return'query_defined';if(a==='identifier')return'table_defined';if(a==='context')return'context_defined';return'unknown';}function describeNode(a){switch(a['type']){case'identifier':return'Reference\x20to\x20table['+(a['identifier']??'?')+']';case'context':return'System\x20context:\x20'+(a['context']??'?');case'query':return'Query\x20instruction\x20'+(a['query']??'?')+'\x20(target:\x20table['+(a['object']?.['identifier']??'?')+'])';case'logic_equal':return'Equality\x20comparison\x20(==)';case'logic_not':return'Logical\x20NOT\x20(!)';case'logic_and':return'Logical\x20AND';case'logic_or':return'Logical\x20OR';case'logic_as_u256_greater':return'Numeric\x20greater\x20than\x20(>)';case'logic_as_u256_lesser':return'Numeric\x20less\x20than\x20(<)';case'logic_as_u256_equal':return'Numeric\x20equality\x20(==)';case'logic_as_u256_greater_or_equal':return'Numeric\x20greater\x20than\x20or\x20equal\x20(>=)';case'logic_as_u256_lesser_or_equal':return'Numeric\x20less\x20than\x20or\x20equal\x20(<=)';case'calc_number_add':return'Numeric\x20addition\x20(+)';case'calc_number_subtract':return'Numeric\x20subtraction\x20(-)';case'calc_number_multiply':return'Numeric\x20multiplication\x20(*)';case'calc_number_divide':return'Numeric\x20division\x20(/)';case'calc_number_mod':return'Numeric\x20modulo\x20(%)';case'vec_contains_address':return'Whitelist\x20check\x20(vec_contains_address)';case'vec_length':return'Vector\x20length';case'convert_safe_u64':return'Safe\x20conversion\x20to\x20U64';default:return a['type'];}}function deriveConstraints(a,b,c,d){const e=Array['from'](d['referencedIdentifiers'])['every'](v=>a['some'](w=>w['identifier']===v)),f=b!==undefined,g=!![],h=d['witnessCodes']['every'](v=>v['code']>=0x64&&v['code']<=0x6c),i=!![],j=!![],k=b!==undefined,l=c?c['guards']['length']<=0x4:!![],m=!![],n=!![],o=!![],p=!![],q=!![],r=a['filter'](v=>v['b_submission']),s=r['length']<=MAX_SUBMISSION_SIZE_PASSPORT,t=!![],u=!![];return{'pitfall_01_identifiers_in_table':e,'pitfall_02_type_compatibility':f,'pitfall_03_query_instruction_valid':g,'pitfall_04_witness_correct':h,'pitfall_05_time_lock_test_safe':i,'pitfall_06_exported_before_recreate':j,'pitfall_07_root_returns_bool':k,'pitfall_08_rely_rep_true':l,'pitfall_09_voting_weight_numeric':m,'pitfall_10_arbitration_not_paused':n,'runtime_01_guard_immutable':o,'runtime_02_submission_type_match':p,'runtime_03_submission_complete':q,'runtime_04_submission_size':s,'runtime_05_witness_source_valid':t,'runtime_06_query_object_valid':u};}export function derivePuzzleFromCallData(a){const b=a['table']??[],c=a['root'],d=a['rely'],e=a['binding_hint'],f={'referencedIdentifiers':new Set(),'queries':[],'contexts':new Set(),'witnessCodes':[]};c&&traverseRoot(c,f);let g;e&&(g={'action':e['action'],'rule_sentence':e['rule_sentence']??'','failure_conditions':e['failure_conditions']??[]});let h;e&&(h={'host_object':e['host_object'],'binding_field':e['binding_field'],'circular_reference':e['circular_reference']??![],'host_object_state':'unknown'});const i=new Map();for(const t of f['witnessCodes']){i['set'](t['objectIdentifier'],t['code']);}const j=[],k=[],l=[],m=[];for(const u of b){const v=f['referencedIdentifiers']['has'](u['identifier']),x=i['get'](u['identifier']);if(x!==undefined){const y=getWitnessInfo(x);if(y){k['push']({'identifier':u['identifier'],'source_type':y['source'],'witness_type':x,'witness_name':y['name'],'target_type':y['target'],'source_b_submission':u['b_submission'],'name':u['name']||y['source']+'→'+y['target']+'\x20via\x20'+y['name']});continue;}}if(!u['b_submission']){const z=typeof u['value']==='string'?u['value']['toLowerCase']():'',A=z in WOW_SYSTEM_SINGLETONS||Object['values'](WOW_SYSTEM_SINGLETONS)['includes'](z);j['push']({'identifier':u['identifier'],'object_address':typeof u['value']==='string'?u['value']:String(u['value']??''),'object_type':u['object_type']??'','name':u['name']||'constant\x20#'+u['identifier'],'is_system_address':A});}else{const B=typeof u['value_type']==='string'?u['value_type']['toLowerCase']():String(u['value_type']);B==='address'?l['push']({'identifier':u['identifier'],'expected_object_type':u['object_type']??'','value_type':'Address','name':u['name']||'submitted\x20object\x20#'+u['identifier'],'binding_constraint':u['object_type']?'must\x20be\x20an\x20on-chain\x20object\x20address\x20of\x20type\x20'+u['object_type']:'must\x20be\x20a\x20valid\x20on-chain\x20object\x20address'}):m['push']({'identifier':u['identifier'],'value_type':typeof u['value_type']==='string'?u['value_type']:String(u['value_type']),'name':u['name']||'submitted\x20value\x20#'+u['identifier'],'binding_constraint':'value\x20type\x20must\x20be\x20'+u['value_type']});}}const n=[];for(const C of f['contexts']){const D={'Signer':'Current\x20transaction\x20signer\x20address\x20verification','Clock':'On-chain\x20timestamp\x20(used\x20for\x20time-lock/time-window)','Guard':'Guard\x20self\x20object\x20ID\x20self-reference'};n['push']({'context_type':C,'usage':D[C]??''});}const o={'on_chain_constants':j,'witness_derived':k,'submitted_objects':l,'submitted_values':m,'system_contexts':n},p=f['queries']['map'](E=>{const F=E['convertWitness']!==undefined?getWitnessInfo(E['convertWitness']):undefined;return{'query_id':typeof E['query']==='number'?E['query']:0x0,'query_name':typeof E['query']==='string'?E['query']:String(E['query']),'object_type':'','parameters':[],'return_type':'','witness':F?{'witness_type':E['convertWitness'],'witness_name':F['name'],'source_type':F['source'],'target_type':F['target'],'scenario':''}:undefined,'purpose':''};});let q;if(c){const E=buildLogicTree(c);if(E){E['return_type']='Bool';let F;d&&d['guards']['length']>0x0&&(F={'guards':d['guards'],'logic_or':d['logic_or']??![],'rep_verified':d['guards']['map'](()=>!![])}),q={'root':E,'rely':F};}}const r=deriveConstraints(b,c,d,f),s={'current_round':'R7','intent':g,'binding':h,'data_sources':o,'queries':p,'logic':q,'constraints':r};return s;}export function getPuzzleStatusBooleans(a){const b=checkPuzzleCompleteness(a);return{'intent':b['dimensions']['intent'],'binding':b['dimensions']['binding'],'data':b['dimensions']['data_sources'],'query':b['dimensions']['query'],'logic':b['dimensions']['logic'],'constraints':b['dimensions']['constraints']};}export function getPendingQuestions(a){const b=checkPuzzleCompleteness(a);if(b['complete'])return[];return b['next_step']['questions'];}