@wowok/agent-mcp 3.0.2 → 3.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/LICENSE +0 -3
  2. package/dist/harness/recover.js +1 -1
  3. package/dist/index.d.ts +2 -2
  4. package/dist/index.js +1 -1
  5. package/dist/knowledge/account-marks.js +1 -1
  6. package/dist/knowledge/arbitration-risk.js +1 -1
  7. package/dist/knowledge/flywheel-loop.d.ts +4 -52
  8. package/dist/knowledge/flywheel-loop.js +1 -1
  9. package/dist/knowledge/guard-lint.js +1 -1
  10. package/dist/knowledge/index.d.ts +2 -225
  11. package/dist/knowledge/index.js +1 -1
  12. package/dist/knowledge/industry-registry.js +1 -1
  13. package/dist/knowledge/machine-risk.js +1 -1
  14. package/dist/knowledge/machine-translation.js +1 -1
  15. package/dist/knowledge/onchain-constants.js +1 -1
  16. package/dist/knowledge/order-ledger.d.ts +2 -2
  17. package/dist/knowledge/order-ledger.js +1 -1
  18. package/dist/knowledge/order-puzzle.d.ts +4 -4
  19. package/dist/knowledge/order-puzzle.js +1 -1
  20. package/dist/knowledge/order-risk.d.ts +1 -0
  21. package/dist/knowledge/order-risk.js +1 -1
  22. package/dist/knowledge/order-templates.d.ts +1 -1
  23. package/dist/knowledge/order-templates.js +1 -1
  24. package/dist/knowledge/safety-rules.js +1 -1
  25. package/dist/knowledge/service-ledger.js +1 -1
  26. package/dist/knowledge/service-risk.js +1 -1
  27. package/dist/knowledge/template-registry.js +1 -1
  28. package/dist/knowledge/tools-reference.js +1 -1
  29. package/dist/knowledge/workspace-lists.js +1 -1
  30. package/dist/monitor/MonitorLoop.js +1 -1
  31. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  32. package/dist/playbooks/service-build/context-assembly.d.ts +3 -1
  33. package/dist/playbooks/service-build/context-assembly.js +1 -1
  34. package/dist/playbooks/service-build/machine-nodes.d.ts +2 -0
  35. package/dist/playbooks/service-build/machine-nodes.js +1 -1
  36. package/dist/playbooks/service-build/machine-panorama.d.ts +7 -0
  37. package/dist/playbooks/service-build/machine-panorama.js +1 -1
  38. package/dist/review/machine.js +1 -1
  39. package/dist/safety/confirm-gate.js +1 -1
  40. package/dist/schema/call/base.d.ts +12 -3
  41. package/dist/schema/call/base.js +1 -1
  42. package/dist/schema/call/bridge.d.ts +4 -0
  43. package/dist/schema/call/bridge.js +1 -1
  44. package/dist/schema/call/error-codes.d.ts +2 -0
  45. package/dist/schema/call/error-codes.js +1 -0
  46. package/dist/schema/call/guard.d.ts +4 -4
  47. package/dist/schema/call/semantic.d.ts +9 -1
  48. package/dist/schema/call/semantic.js +1 -1
  49. package/dist/schema/common/index.js +1 -1
  50. package/dist/schema/goal/index.d.ts +3 -3
  51. package/dist/schema/goal/planning.d.ts +2 -2
  52. package/dist/schema/industry-pack/index.d.ts +4 -4
  53. package/dist/schema/industry-pack/modes.d.ts +4 -4
  54. package/dist/schema/local/index.d.ts +558 -0
  55. package/dist/schema/local/index.js +1 -1
  56. package/dist/schema/messenger/index.d.ts +25 -25
  57. package/dist/schema/operations.d.ts +1 -1
  58. package/dist/schema/persona/index.d.ts +2 -2
  59. package/dist/schema/query/bi.d.ts +0 -4
  60. package/dist/schema/query/bi.js +1 -1
  61. package/dist/schema/query/index.js +1 -1
  62. package/dist/schema/schema-query/index.d.ts +1 -1
  63. package/dist/schema/schema-version.js +1 -1
  64. package/dist/schema/trust/index.d.ts +3 -3
  65. package/dist/schema/workspace/index.d.ts +1 -1
  66. package/dist/schema-query-impl/index.js +1 -1
  67. package/dist/schemas/account_operation.output.json +4 -0
  68. package/dist/schemas/bridge_operation.output.json +4 -0
  69. package/dist/schemas/index.json +7 -1
  70. package/dist/schemas/local_history_operation.output.json +1458 -0
  71. package/dist/schemas/local_history_operation.schema.json +105 -0
  72. package/dist/schemas/local_info_operation.output.json +4 -0
  73. package/dist/schemas/local_mark_operation.output.json +4 -0
  74. package/dist/schemas/onchain_operations.output.json +4 -1
  75. package/dist/schemas/onchain_operations.schema.json +30 -10
  76. package/dist/schemas/onchain_operations_guard.schema.json +30 -10
  77. package/dist/schemas/query_toolkit.output.json +17 -16
  78. package/dist/tools/handlers/config.js +1 -1
  79. package/dist/tools/handlers/local.d.ts +1 -0
  80. package/dist/tools/handlers/local.js +1 -1
  81. package/dist/tools/handlers/onchain.js +1 -1
  82. package/dist/tools/index.js +1 -1
  83. package/dist/tools/registry/local.js +1 -1
  84. package/dist/tools/shared.js +1 -1
  85. package/dist/tools/wrap.js +1 -1
  86. package/package.json +2 -2
  87. package/dist/knowledge/allocation-confirm.d.ts +0 -115
  88. package/dist/knowledge/allocation-confirm.js +0 -1
  89. package/dist/knowledge/allocation-context.d.ts +0 -58
  90. package/dist/knowledge/allocation-context.js +0 -1
  91. package/dist/knowledge/allocation-translation.d.ts +0 -72
  92. package/dist/knowledge/allocation-translation.js +0 -1
  93. package/dist/knowledge/arb-confirm.d.ts +0 -28
  94. package/dist/knowledge/arb-confirm.js +0 -1
  95. package/dist/knowledge/arb-translation.d.ts +0 -48
  96. package/dist/knowledge/arb-translation.js +0 -1
  97. package/dist/knowledge/arbitration-confirm.d.ts +0 -135
  98. package/dist/knowledge/arbitration-confirm.js +0 -1
  99. package/dist/knowledge/arbitration-context.d.ts +0 -81
  100. package/dist/knowledge/arbitration-context.js +0 -1
  101. package/dist/knowledge/arbitration-translation.d.ts +0 -91
  102. package/dist/knowledge/arbitration-translation.js +0 -1
  103. package/dist/knowledge/bridge-confirm.d.ts +0 -26
  104. package/dist/knowledge/bridge-confirm.js +0 -1
  105. package/dist/knowledge/bridge-translation.d.ts +0 -37
  106. package/dist/knowledge/bridge-translation.js +0 -1
  107. package/dist/knowledge/contact-confirm.d.ts +0 -27
  108. package/dist/knowledge/contact-confirm.js +0 -1
  109. package/dist/knowledge/contact-translation.d.ts +0 -39
  110. package/dist/knowledge/contact-translation.js +0 -1
  111. package/dist/knowledge/demand-confirm.d.ts +0 -32
  112. package/dist/knowledge/demand-confirm.js +0 -1
  113. package/dist/knowledge/demand-context.d.ts +0 -17
  114. package/dist/knowledge/demand-context.js +0 -1
  115. package/dist/knowledge/demand-ledger.d.ts +0 -26
  116. package/dist/knowledge/demand-ledger.js +0 -1
  117. package/dist/knowledge/demand-puzzle.d.ts +0 -29
  118. package/dist/knowledge/demand-puzzle.js +0 -1
  119. package/dist/knowledge/demand-templates.d.ts +0 -12
  120. package/dist/knowledge/demand-templates.js +0 -1
  121. package/dist/knowledge/demand-translation.d.ts +0 -55
  122. package/dist/knowledge/demand-translation.js +0 -1
  123. package/dist/knowledge/examples-scanner-cli.d.ts +0 -1
  124. package/dist/knowledge/examples-scanner-cli.js +0 -1
  125. package/dist/knowledge/examples-scanner.d.ts +0 -121
  126. package/dist/knowledge/examples-scanner.js +0 -1
  127. package/dist/knowledge/glossary.d.ts +0 -18
  128. package/dist/knowledge/glossary.js +0 -1
  129. package/dist/knowledge/guard-bytecode-spec.d.ts +0 -82
  130. package/dist/knowledge/guard-bytecode-spec.js +0 -1
  131. package/dist/knowledge/guard-confirm.d.ts +0 -86
  132. package/dist/knowledge/guard-confirm.js +0 -1
  133. package/dist/knowledge/immutability.d.ts +0 -11
  134. package/dist/knowledge/immutability.js +0 -1
  135. package/dist/knowledge/machine-confirm.d.ts +0 -102
  136. package/dist/knowledge/machine-confirm.js +0 -1
  137. package/dist/knowledge/machine-context.d.ts +0 -160
  138. package/dist/knowledge/machine-context.js +0 -1
  139. package/dist/knowledge/machine-render.d.ts +0 -41
  140. package/dist/knowledge/machine-render.js +0 -1
  141. package/dist/knowledge/mcp-schema-audit-cli.d.ts +0 -1
  142. package/dist/knowledge/mcp-schema-audit-cli.js +0 -1
  143. package/dist/knowledge/mcp-schema-audit.d.ts +0 -91
  144. package/dist/knowledge/mcp-schema-audit.js +0 -1
  145. package/dist/knowledge/messenger-guard-guidance.d.ts +0 -17
  146. package/dist/knowledge/messenger-guard-guidance.js +0 -1
  147. package/dist/knowledge/order-confirm.d.ts +0 -115
  148. package/dist/knowledge/order-confirm.js +0 -1
  149. package/dist/knowledge/order-context.d.ts +0 -66
  150. package/dist/knowledge/order-context.js +0 -1
  151. package/dist/knowledge/order-translation.d.ts +0 -78
  152. package/dist/knowledge/order-translation.js +0 -1
  153. package/dist/knowledge/overrides-loader.d.ts +0 -13
  154. package/dist/knowledge/overrides-loader.js +0 -1
  155. package/dist/knowledge/passport-confirm.d.ts +0 -130
  156. package/dist/knowledge/passport-confirm.js +0 -1
  157. package/dist/knowledge/passport-context.d.ts +0 -59
  158. package/dist/knowledge/passport-context.js +0 -1
  159. package/dist/knowledge/passport-puzzle.d.ts +0 -108
  160. package/dist/knowledge/passport-puzzle.js +0 -1
  161. package/dist/knowledge/passport-risk.d.ts +0 -70
  162. package/dist/knowledge/passport-risk.js +0 -1
  163. package/dist/knowledge/passport-translation.d.ts +0 -68
  164. package/dist/knowledge/passport-translation.js +0 -1
  165. package/dist/knowledge/payment-confirm.d.ts +0 -26
  166. package/dist/knowledge/payment-confirm.js +0 -1
  167. package/dist/knowledge/payment-translation.d.ts +0 -37
  168. package/dist/knowledge/payment-translation.js +0 -1
  169. package/dist/knowledge/permission-confirm.d.ts +0 -110
  170. package/dist/knowledge/permission-confirm.js +0 -1
  171. package/dist/knowledge/permission-context.d.ts +0 -69
  172. package/dist/knowledge/permission-context.js +0 -1
  173. package/dist/knowledge/permission-translation.d.ts +0 -57
  174. package/dist/knowledge/permission-translation.js +0 -1
  175. package/dist/knowledge/personal-confirm.d.ts +0 -29
  176. package/dist/knowledge/personal-confirm.js +0 -1
  177. package/dist/knowledge/personal-translation.d.ts +0 -37
  178. package/dist/knowledge/personal-translation.js +0 -1
  179. package/dist/knowledge/process-model.d.ts +0 -14
  180. package/dist/knowledge/process-model.js +0 -1
  181. package/dist/knowledge/progress-confirm.d.ts +0 -108
  182. package/dist/knowledge/progress-confirm.js +0 -1
  183. package/dist/knowledge/progress-context.d.ts +0 -123
  184. package/dist/knowledge/progress-context.js +0 -1
  185. package/dist/knowledge/progress-translation.d.ts +0 -52
  186. package/dist/knowledge/progress-translation.js +0 -1
  187. package/dist/knowledge/proof-confirm.d.ts +0 -31
  188. package/dist/knowledge/proof-confirm.js +0 -1
  189. package/dist/knowledge/proof-context.d.ts +0 -17
  190. package/dist/knowledge/proof-context.js +0 -1
  191. package/dist/knowledge/proof-ledger.d.ts +0 -34
  192. package/dist/knowledge/proof-ledger.js +0 -1
  193. package/dist/knowledge/proof-puzzle.d.ts +0 -35
  194. package/dist/knowledge/proof-puzzle.js +0 -1
  195. package/dist/knowledge/proof-templates.d.ts +0 -22
  196. package/dist/knowledge/proof-templates.js +0 -1
  197. package/dist/knowledge/proof-translation.d.ts +0 -52
  198. package/dist/knowledge/proof-translation.js +0 -1
  199. package/dist/knowledge/registrar-confirm.d.ts +0 -26
  200. package/dist/knowledge/registrar-confirm.js +0 -1
  201. package/dist/knowledge/registrar-translation.d.ts +0 -37
  202. package/dist/knowledge/registrar-translation.js +0 -1
  203. package/dist/knowledge/repository-confirm.d.ts +0 -40
  204. package/dist/knowledge/repository-confirm.js +0 -1
  205. package/dist/knowledge/repository-context.d.ts +0 -12
  206. package/dist/knowledge/repository-context.js +0 -1
  207. package/dist/knowledge/repository-ledger.d.ts +0 -25
  208. package/dist/knowledge/repository-ledger.js +0 -1
  209. package/dist/knowledge/repository-puzzle.d.ts +0 -30
  210. package/dist/knowledge/repository-puzzle.js +0 -1
  211. package/dist/knowledge/repository-templates.d.ts +0 -14
  212. package/dist/knowledge/repository-templates.js +0 -1
  213. package/dist/knowledge/repository-translation.d.ts +0 -58
  214. package/dist/knowledge/repository-translation.js +0 -1
  215. package/dist/knowledge/resource-confirm.d.ts +0 -25
  216. package/dist/knowledge/resource-confirm.js +0 -1
  217. package/dist/knowledge/resource-translation.d.ts +0 -37
  218. package/dist/knowledge/resource-translation.js +0 -1
  219. package/dist/knowledge/reward-confirm.d.ts +0 -116
  220. package/dist/knowledge/reward-confirm.js +0 -1
  221. package/dist/knowledge/reward-context.d.ts +0 -127
  222. package/dist/knowledge/reward-context.js +0 -1
  223. package/dist/knowledge/reward-translation.d.ts +0 -58
  224. package/dist/knowledge/reward-translation.js +0 -1
  225. package/dist/knowledge/service-confirm.d.ts +0 -161
  226. package/dist/knowledge/service-confirm.js +0 -1
  227. package/dist/knowledge/service-context.d.ts +0 -66
  228. package/dist/knowledge/service-context.js +0 -1
  229. package/dist/knowledge/service-translation.d.ts +0 -103
  230. package/dist/knowledge/service-translation.js +0 -1
  231. package/dist/knowledge/treasury-confirm.d.ts +0 -133
  232. package/dist/knowledge/treasury-confirm.js +0 -1
  233. package/dist/knowledge/treasury-context.d.ts +0 -64
  234. package/dist/knowledge/treasury-context.js +0 -1
  235. package/dist/knowledge/treasury-translation.d.ts +0 -78
  236. package/dist/knowledge/treasury-translation.js +0 -1
  237. package/dist/knowledge/util-confirm.d.ts +0 -24
  238. package/dist/knowledge/util-confirm.js +0 -1
  239. package/dist/knowledge/util-translation.d.ts +0 -39
  240. package/dist/knowledge/util-translation.js +0 -1
  241. package/dist/loop-engineering/aggregate.d.ts +0 -50
  242. package/dist/loop-engineering/aggregate.js +0 -1
  243. package/dist/loop-engineering/context-collect.d.ts +0 -7
  244. package/dist/loop-engineering/context-collect.js +0 -1
  245. package/dist/loop-engineering/diagnose.d.ts +0 -22
  246. package/dist/loop-engineering/diagnose.js +0 -1
  247. package/dist/loop-engineering/improve.d.ts +0 -55
  248. package/dist/loop-engineering/improve.js +0 -1
  249. package/dist/loop-engineering/index.d.ts +0 -4
  250. package/dist/loop-engineering/index.js +0 -1
  251. package/dist/loop-engineering/pipeline.d.ts +0 -17
  252. package/dist/loop-engineering/pipeline.js +0 -1
  253. package/dist/schema/utils/object-type-utils.d.ts +0 -12
  254. package/dist/schema/utils/object-type-utils.js +0 -1
  255. package/dist/telemetry/index.d.ts +0 -19
  256. package/dist/telemetry/index.js +0 -1
  257. package/dist/telemetry/redact.d.ts +0 -2
  258. package/dist/telemetry/redact.js +0 -1
  259. package/dist/telemetry/storage.d.ts +0 -8
  260. package/dist/telemetry/storage.js +0 -1
@@ -1 +0,0 @@
1
- import{MAX_GUARD_COUNT_PASSPORT,MAX_SUBMISSION_SIZE_PASSPORT,PASSPORT_ERROR_CODES}from'./passport-ledger.js';import{assessPassportRisks}from'./passport-risk.js';export const PASSPORT_CONFIRMATION_RULES={'creation':[{'id':'C-PASS-01','check':'Confirm\x20Clock\x20object\x20is\x20accessible\x20(new\x20requires\x20Clock\x20argument)','severity':'HIGH','action':'block','layer':'creation'},{'id':'C-PASS-02','check':'Confirm\x20current\x20transaction\x20context\x20is\x20valid\x20(tx_hash\x20will\x20bind\x20to\x20this\x20transaction)','severity':'CRITICAL','action':'block','layer':'creation'}],'operation':[{'id':'C-PASS-03','check':'guard_add:\x20confirm\x20has_verified=false\x20(E_HAS_VERIFIED)','severity':'CRITICAL','action':'block','related_error':'E_HAS_VERIFIED\x20(4)','layer':'operation'},{'id':'C-PASS-04','check':'guard_add:\x20confirm\x20tx_hash\x20matches\x20current\x20transaction\x20(E_DIGEST_NOT_MATCH)','severity':'CRITICAL','action':'block','related_error':'E_DIGEST_NOT_MATCH\x20(11)','layer':'operation'},{'id':'C-PASS-05','check':'guard_add:\x20confirm\x20depended-on\x20Guards\x20already\x20added\x20(E_RELIES_GUARD_NOT_ADDED)','severity':'HIGH','action':'block','related_error':'E_RELIES_GUARD_NOT_ADDED\x20(2)','layer':'operation'},{'id':'C-PASS-06','check':'guard_add:\x20warn\x20Guard\x20count\x20approaching\x20MAX_GUARD_COUNT=20\x20limit','severity':'MEDIUM','action':'warn','related_error':'E_GUARD_COUNT_EXCEEDED\x20(1)','layer':'operation'},{'id':'C-PASS-07','check':'guard_add:\x20warn\x20impack\x20Guard\x20failure\x20will\x20cause\x20overall\x20result=false','severity':'HIGH','action':'warn','layer':'operation'},{'id':'C-PASS-08','check':'guard_add:\x20warn\x20submission\x20serialized\x20size\x20must\x20be\x20≤\x20256\x20bytes','severity':'MEDIUM','action':'warn','related_error':'E_SUBMISSION_SIZE_EXCEEDED\x20(3)','layer':'operation'},{'id':'C-PASS-09','check':'verify:\x20warn\x20this\x20is\x20a\x20one-time\x20operation;\x20after\x20verify,\x20configuration\x20cannot\x20be\x20modified','severity':'HIGH','action':'confirm_twice','related_error':'E_HAS_VERIFIED\x20(4)','layer':'operation'},{'id':'C-PASS-10','check':'verify:\x20confirm\x20at\x20least\x201\x20impack\x20Guard\x20exists\x20(E_IMPACK_GUARD_NOT_FOUND)','severity':'CRITICAL','action':'block','related_error':'E_IMPACK_GUARD_NOT_FOUND\x20(9)','layer':'operation'},{'id':'C-PASS-11','check':'guard_clear:\x20warn\x20this\x20will\x20clear\x20all\x20Guards\x20(allowed\x20before\x20verify)','severity':'MEDIUM','action':'confirm_twice','layer':'operation'},{'id':'C-PASS-12','check':'freezen:\x20warn\x20after\x20freezing,\x20Passport\x20is\x20permanently\x20retained\x20and\x20cannot\x20be\x20destroyed','severity':'MEDIUM','action':'confirm_twice','layer':'operation'},{'id':'C-PASS-13','check':'destroy:\x20warn\x20Passport\x20cannot\x20be\x20recovered\x20after\x20destruction\x20(must\x20be\x20before\x20freeze)','severity':'HIGH','action':'confirm_twice','layer':'operation'}],'consistency':[{'id':'C-PASS-14','check':'Confirm\x20Passport\x20object\x20is\x20not\x20frozen\x20(no\x20operations\x20allowed\x20after\x20freeze)','severity':'HIGH','action':'block','layer':'consistency'},{'id':'C-PASS-15','check':'Confirm\x20referenced\x20Guard\x20objects\x20have\x20not\x20been\x20deleted','severity':'HIGH','action':'block','layer':'consistency'},{'id':'C-PASS-16','check':'Confirm\x20has_verified=true\x20when\x20querying\x20result\x20(E_NOT_VERIFIED)','severity':'HIGH','action':'block','related_error':'E_NOT_VERIFIED\x20(5)','layer':'consistency'},{'id':'C-PASS-17','check':'Confirm\x20tx_hash\x20matches\x20current\x20transaction\x20when\x20querying\x20result\x20(E_TX_NOT_MATCH)','severity':'CRITICAL','action':'block','related_error':'E_TX_NOT_MATCH\x20(8)','layer':'consistency'},{'id':'C-PASS-18','check':'Info:\x20relies\x20dependencies\x20(avoid\x20circular\x20dependencies)','severity':'INFO','action':'info','layer':'consistency'},{'id':'C-PASS-19','check':'Warn:\x20non-impack\x20Guard\x20result\x20does\x20not\x20affect\x20final\x20result','severity':'INFO','action':'info','layer':'consistency'},{'id':'C-PASS-20','check':'Info:\x20Passport\x20emits\x20no\x20events;\x20status\x20must\x20be\x20queried\x20actively','severity':'INFO','action':'info','layer':'consistency'}]};export function preCheckPassportCreation(a){const b=[],c=[],d=[];return!a['clock']&&b['push']('Clock\x20object\x20is\x20required\x20for\x20Passport\x20creation\x20(C-PASS-01,\x20passport::new_v2\x20requires\x20Clock\x20argument)'),!a['txDigest']&&b['push']('Valid\x20transaction\x20context\x20required\x20—\x20tx_hash\x20will\x20bind\x20to\x20this\x20transaction\x20(C-PASS-02)'),{'errors':b,'warnings':c,'requiresConfirmation':d,'canProceed':b['length']===0x0};}export function preCheckPassportOperation(a){const b=[],c=[],d=[],{passport:e,operation:f,guardObjects:g}=a;switch(f['type']){case'guard_add':{if(e['has_verified']){b['push']('Passport\x20already\x20verified,\x20cannot\x20add\x20guard\x20(C-PASS-03,\x20E_HAS_VERIFIED='+PASSPORT_ERROR_CODES['E_HAS_VERIFIED']+')');break;}c['push']('tx_hash\x20must\x20match\x20current\x20transaction\x20(C-PASS-04,\x20E_DIGEST_NOT_MATCH='+PASSPORT_ERROR_CODES['E_DIGEST_NOT_MATCH']+')');const h=g['get'](f['guard']);if(h?.['relies']&&h['relies']['length']>0x0)for(const i of h['relies']){const j=e['info']['some'](k=>k['guard']===i);!j&&b['push']('Dependency\x20Guard\x20'+i+'\x20not\x20added\x20yet\x20(C-PASS-05,\x20E_RELIES_GUARD_NOT_ADDED='+PASSPORT_ERROR_CODES['E_RELIES_GUARD_NOT_ADDED']+')');}if(e['info']['length']>=MAX_GUARD_COUNT_PASSPORT)b['push']('Guard\x20count\x20'+e['info']['length']+'\x20>=\x20MAX_GUARD_COUNT_PASSPORT='+MAX_GUARD_COUNT_PASSPORT+'\x20(C-PASS-06,\x20E_GUARD_COUNT_EXCEEDED='+PASSPORT_ERROR_CODES['E_GUARD_COUNT_EXCEEDED']+')');else e['info']['length']>=MAX_GUARD_COUNT_PASSPORT-0x5&&c['push']('Guard\x20count\x20'+e['info']['length']+'\x20approaching\x20limit\x20'+MAX_GUARD_COUNT_PASSPORT+'\x20(C-PASS-06)');f['impack']&&c['push']('impack=true\x20Guard\x20failure\x20will\x20cause\x20overall\x20result=false\x20(C-PASS-07)');if(f['submission']){const k=estimateSubmissionSize(f['submission']);if(k>MAX_SUBMISSION_SIZE_PASSPORT)b['push']('Submission\x20size\x20'+k+'\x20>\x20MAX_SUBMISSION_SIZE_PASSPORT='+MAX_SUBMISSION_SIZE_PASSPORT+'\x20(C-PASS-08,\x20E_SUBMISSION_SIZE_EXCEEDED='+PASSPORT_ERROR_CODES['E_SUBMISSION_SIZE_EXCEEDED']+')');else k>MAX_SUBMISSION_SIZE_PASSPORT*0.8&&c['push']('Submission\x20size\x20'+k+'\x20approaching\x20limit\x20'+MAX_SUBMISSION_SIZE_PASSPORT+'\x20(C-PASS-08)');}break;}case'verify':{d['push']('WARNING:\x20verify\x20is\x20ONE-TIME\x20operation.\x20After\x20verify,\x20guard\x20configuration\x20cannot\x20be\x20modified.\x20Type\x20\x27CONFIRM\x27\x20to\x20proceed.\x20(C-PASS-09)');const l=e['info']['some'](m=>m['impack']);!l&&b['push']('No\x20impack\x20Guard\x20found,\x20verify\x20will\x20fail\x20(C-PASS-10,\x20E_IMPACK_GUARD_NOT_FOUND='+PASSPORT_ERROR_CODES['E_IMPACK_GUARD_NOT_FOUND']+')');break;}case'guard_clear':{d['push']('WARNING:\x20guard_clear\x20will\x20remove\x20all\x20'+e['info']['length']+'\x20guards.\x20Type\x20\x27CONFIRM\x27\x20to\x20proceed.\x20(C-PASS-11)');e['has_verified']&&b['push']('Passport\x20already\x20verified,\x20cannot\x20clear\x20guards\x20(C-PASS-11,\x20E_HAS_VERIFIED='+PASSPORT_ERROR_CODES['E_HAS_VERIFIED']+')');break;}case'freezen':{d['push']('WARNING:\x20freezen\x20will\x20PERMANENTLY\x20freeze\x20the\x20Passport.\x20It\x20cannot\x20be\x20destroyed\x20after\x20freezing.\x20Type\x20\x27CONFIRM\x27\x20to\x20proceed.\x20(C-PASS-12)');break;}case'destroy':{d['push']('WARNING:\x20destroy\x20will\x20delete\x20the\x20Passport\x20permanently.\x20This\x20must\x20be\x20done\x20BEFORE\x20freezing.\x20Type\x20\x27CONFIRM\x27\x20to\x20proceed.\x20(C-PASS-13)');break;}case'result_query':case'result_for_guard':case'result_for_permission':{!e['has_verified']&&b['push']('result\x20query\x20requires\x20has_verified=true\x20(C-PASS-16,\x20E_NOT_VERIFIED='+PASSPORT_ERROR_CODES['E_NOT_VERIFIED']+')');c['push']('result\x20query\x20requires\x20tx_hash\x20match\x20current\x20transaction\x20(C-PASS-17,\x20E_TX_NOT_MATCH='+PASSPORT_ERROR_CODES['E_TX_NOT_MATCH']+')');if(f['type']==='result_for_guard'){const m=e['info']['find'](n=>n['guard']===f['guard']);if(!m)b['push']('Guard\x20'+f['guard']+'\x20not\x20found\x20in\x20Passport\x20(C-PASS-15)');else!m['impack']&&b['push']('Guard\x20'+f['guard']+'\x20is\x20not\x20impack,\x20result_for_guard\x20will\x20abort\x20(C-PASS-10,\x20E_NOT_IMPACK_GUARD='+PASSPORT_ERROR_CODES['E_NOT_IMPACK_GUARD']+')');}break;}case'submission_get':{break;}}return{'errors':b,'warnings':c,'requiresConfirmation':d,'canProceed':b['length']===0x0};}export function checkPassportStateConsistency(a){const b=[],c=[],{passport:d,guardObjects:e,isFrozen:f}=a;f&&b['push']('Passport\x20is\x20frozen\x20(immutable),\x20no\x20write\x20operations\x20permitted\x20(C-PASS-14)');for(const i of d['info']){!e['has'](i['guard'])&&c['push']('Guard\x20'+i['guard']+'\x20not\x20found,\x20verification\x20may\x20fail\x20(C-PASS-15)');}!d['has_verified']&&c['push']('Passport\x20not\x20yet\x20verified\x20—\x20result\x20queries\x20will\x20fail\x20(C-PASS-16,\x20E_NOT_VERIFIED)');for(const j of d['info']){const k=e['get'](j['guard']);if(k?.['relies']&&k['relies']['length']>0x0){const l=k['relies_logic_and']===![]?'OR':'AND';c['push']('Guard\x20'+j['guard']+'\x20relies\x20on\x20'+k['relies']['length']+'\x20guards\x20('+l+'\x20logic)\x20(C-PASS-18)');}}const h=d['info']['filter'](m=>!m['impack']);return h['length']>0x0&&c['push'](h['length']+'\x20non-impack\x20guards\x20will\x20not\x20affect\x20final\x20result\x20(C-PASS-19)'),c['push']('Passport\x20does\x20not\x20emit\x20events,\x20must\x20query\x20object\x20state\x20directly\x20(C-PASS-20)'),{'errors':b,'warnings':c,'requiresConfirmation':[],'canProceed':b['length']===0x0};}export const PASSPORT_CONFIRM_VERSION='1.0.0';export function runPassportConfirmGate(a){const b=[],c=[];let d;if(a['creation_input']){const e=preCheckPassportCreation(a['creation_input']);if(!e['canProceed'])return c['push']('L1_creation'),{'status':'blocked_creation','creation_result':e,'risk_assessment':d,'confirmation_text':generateConfirmationText(a,e),'block_reason':'Creation\x20blocked:\x20'+e['errors']['join'](';\x20'),'decision_record':{'timestamp':new Date()['toISOString'](),'gate_version':PASSPORT_CONFIRM_VERSION,'final_status':'blocked_creation','layers_passed':b,'layers_failed':c}};b['push']('L1_creation');}if(a['operation_input']){const f=preCheckPassportOperation(a['operation_input']);if(!f['canProceed'])return c['push']('L2_operation'),{'status':'blocked_operation','operation_result':f,'risk_assessment':d,'confirmation_text':generateConfirmationText(a,undefined,f),'block_reason':'Operation\x20blocked:\x20'+f['errors']['join'](';\x20'),'decision_record':{'timestamp':new Date()['toISOString'](),'gate_version':PASSPORT_CONFIRM_VERSION,'final_status':'blocked_operation','layers_passed':b,'layers_failed':c}};if(!a['skip_user_confirmation']&&f['requiresConfirmation']['length']>0x0)return c['push']('L2_operation_pending_confirmation'),{'status':'pending_confirmation','operation_result':f,'risk_assessment':d,'confirmation_text':generateConfirmationText(a,undefined,f),'block_reason':'User\x20confirmation\x20required:\x20'+f['requiresConfirmation']['length']+'\x20item(s)','decision_record':{'timestamp':new Date()['toISOString'](),'gate_version':PASSPORT_CONFIRM_VERSION,'final_status':'pending_confirmation','layers_passed':b,'layers_failed':c}};b['push']('L2_operation');}if(a['consistency_input']){const g=checkPassportStateConsistency(a['consistency_input']);if(!g['canProceed'])return c['push']('L3_consistency'),{'status':'blocked_consistency','consistency_result':g,'risk_assessment':d,'confirmation_text':generateConfirmationText(a,undefined,undefined,g),'block_reason':'Consistency\x20blocked:\x20'+g['errors']['join'](';\x20'),'decision_record':{'timestamp':new Date()['toISOString'](),'gate_version':PASSPORT_CONFIRM_VERSION,'final_status':'blocked_consistency','layers_passed':b,'layers_failed':c}};b['push']('L3_consistency');}if(!a['skip_risk_assessment']&&a['operation_input']){const h={'object':a['operation_input']['passport']['object'],'has_verified':a['operation_input']['passport']['has_verified'],'guard_count':a['operation_input']['passport']['info']['length'],'has_impack_guard':a['operation_input']['passport']['info']['some'](i=>i['impack']),'operation_type':a['operation_input']['operation']['type']==='guard_add'?'guard_add':a['operation_input']['operation']['type']==='verify'?'verify':a['operation_input']['operation']['type']==='freezen'?'freezen':a['operation_input']['operation']['type']==='destroy'?'destroy':'use','is_frozen':a['consistency_input']?.['isFrozen']??![],'matched_scenario':a['scenario'],'constants_synced':!![],'knowledge_files_present':!![]};d=assessPassportRisks(h);}return{'status':'approved','creation_result':a['creation_input']?preCheckPassportCreation(a['creation_input']):undefined,'operation_result':a['operation_input']?preCheckPassportOperation(a['operation_input']):undefined,'consistency_result':a['consistency_input']?checkPassportStateConsistency(a['consistency_input']):undefined,'risk_assessment':d,'confirmation_text':generateConfirmationText(a),'decision_record':{'timestamp':new Date()['toISOString'](),'gate_version':PASSPORT_CONFIRM_VERSION,'final_status':'approved','layers_passed':b,'layers_failed':c}};}function generateConfirmationText(a,b,d,f){const g=[];g['push']('═══\x20Passport\x20Confirmation\x20═══'),g['push']('');a['scenario']&&(g['push']('Scenario:\x20'+a['scenario']['name']),g['push']('Consumer:\x20'+a['scenario']['consumer_object']+'\x20('+a['scenario']['sdk_entry']+')'),g['push']('Purpose:\x20'+a['scenario']['passport_purpose']),g['push'](''));if(b){g['push']('─\x20Layer\x201:\x20Creation\x20──────────────');if(b['errors']['length']>0x0){for(const h of b['errors'])g['push']('\x20\x20✗\x20'+h);}else g['push']('\x20\x20✓\x20All\x20creation\x20checks\x20passed');g['push']('');}if(d){g['push']('─\x20Layer\x202:\x20Operation\x20──────────────');if(d['errors']['length']>0x0){for(const i of d['errors'])g['push']('\x20\x20✗\x20'+i);}if(d['warnings']['length']>0x0){for(const j of d['warnings'])g['push']('\x20\x20⚠\x20'+j);}if(d['requiresConfirmation']['length']>0x0){for(const k of d['requiresConfirmation'])g['push']('\x20\x20?\x20'+k);}d['errors']['length']===0x0&&d['warnings']['length']===0x0&&d['requiresConfirmation']['length']===0x0&&g['push']('\x20\x20✓\x20All\x20operation\x20checks\x20passed'),g['push']('');}if(f){g['push']('─\x20Layer\x203:\x20Consistency\x20──────────────');if(f['errors']['length']>0x0){for(const l of f['errors'])g['push']('\x20\x20✗\x20'+l);}if(f['warnings']['length']>0x0){for(const m of f['warnings'])g['push']('\x20\x20⚠\x20'+m);}f['errors']['length']===0x0&&f['warnings']['length']===0x0&&g['push']('\x20\x20✓\x20All\x20consistency\x20checks\x20passed'),g['push']('');}return g['push']('─\x20Error\x20Code\x20Reference\x20──────────────'),g['push']('\x20\x20E_GUARD_COUNT_EXCEEDED='+PASSPORT_ERROR_CODES['E_GUARD_COUNT_EXCEEDED']+',\x20E_RELIES_GUARD_NOT_ADDED='+PASSPORT_ERROR_CODES['E_RELIES_GUARD_NOT_ADDED']+',\x20E_SUBMISSION_SIZE_EXCEEDED='+PASSPORT_ERROR_CODES['E_SUBMISSION_SIZE_EXCEEDED']),g['push']('\x20\x20E_HAS_VERIFIED='+PASSPORT_ERROR_CODES['E_HAS_VERIFIED']+',\x20E_NOT_VERIFIED='+PASSPORT_ERROR_CODES['E_NOT_VERIFIED']+',\x20E_NOT_IMPACK_GUARD='+PASSPORT_ERROR_CODES['E_NOT_IMPACK_GUARD']),g['push']('\x20\x20E_VERIFY_FAILED='+PASSPORT_ERROR_CODES['E_VERIFY_FAILED']+',\x20E_TX_NOT_MATCH='+PASSPORT_ERROR_CODES['E_TX_NOT_MATCH']+',\x20E_IMPACK_GUARD_NOT_FOUND='+PASSPORT_ERROR_CODES['E_IMPACK_GUARD_NOT_FOUND']),g['push']('\x20\x20E_SUBMISSION_NOT_FOUND='+PASSPORT_ERROR_CODES['E_SUBMISSION_NOT_FOUND']+',\x20E_DIGEST_NOT_MATCH='+PASSPORT_ERROR_CODES['E_DIGEST_NOT_MATCH']),g['push'](''),g['join']('\x0a');}export function estimateSubmissionSize(a){let b=0x0;for(const c of a){b+=0x1;switch(c['value_type']){case'bool':b+=0x1;break;case'u8':b+=0x1;break;case'u64':b+=0x8;break;case'address':b+=0x20;break;case'string':{const d=typeof c['value']==='string'?c['value']['length']:0x0;b+=0x1+d;break;}case'vector<u8>':{const e=Array['isArray'](c['value'])?c['value']['length']:0x0;b+=0x1+e;break;}default:b+=0x40;}}return b;}export function getAllConfirmationRules(){return[...PASSPORT_CONFIRMATION_RULES['creation'],...PASSPORT_CONFIRMATION_RULES['operation'],...PASSPORT_CONFIRMATION_RULES['consistency']];}export function getConfirmationRulesByLayer(a){return PASSPORT_CONFIRMATION_RULES[a];}export function getConfirmationRuleById(a){return getAllConfirmationRules()['find'](b=>b['id']===a);}
@@ -1,59 +0,0 @@
1
- import { PASSPORT_SCENARIOS, MAX_GUARD_COUNT_PASSPORT, MAX_SUBMISSION_SIZE_PASSPORT, PASSPORT_ERROR_CODES, findScenarioById, inferScenarioFromIntent, getAllScenarios, type PassportScenario, type PassportConsumerObject } from "./passport-ledger.js";
2
- import { PASSPORT_TEMPLATES, PASSPORT_TEMPLATES_VERSION, getTemplateById, getTemplatesByScenario, suggestTemplateForScenario, type PassportTemplate } from "./passport-templates.js";
3
- import { SEMANTIC_TO_SCHEMA_RULES, PASSPORT_CONSTRAINT_RULES, matchSemanticPattern, explainPassport, passportJsonToSemantic, semanticToPassportJson, explainField, explainOp, explainImpack, explainReliesLogic, explainError, getConstraintsByCategory, type SemanticToSchemaRule, type PassportConstraintRule, type PassportCallData } from "./passport-translation.js";
4
- import { getAllRiskRules, assessPassportRisks, PASSPORT_RISK_VERSION, type PassportRiskRule, type PassportRiskAssessment, type PassportStakeholder } from "./passport-risk.js";
5
- import { initPuzzleFromIntent, checkPuzzleCompleteness, validateConstraints, buildPassportPuzzle, buildResultPuzzle, type PassportPuzzle, type PassportPuzzleCompleteness } from "./passport-puzzle.js";
6
- import { PASSPORT_CONFIRMATION_RULES, PASSPORT_CONFIRM_VERSION, preCheckPassportCreation, preCheckPassportOperation, checkPassportStateConsistency, runPassportConfirmGate, type PassportConfirmationRule, type ObjectPassport } from "./passport-confirm.js";
7
- export declare const PASSPORT_CONTEXT_VERSION = "1.0.0";
8
- export type PassportInjectionMode = "initial_design" | "mid_design_review" | "pre_verify" | "post_verify_use" | "stakeholder_review" | "scenario_match";
9
- export type PassportStakeholderPerspective = PassportStakeholder | "system";
10
- export interface PassportContextBundle {
11
- version: string;
12
- mode: PassportInjectionMode;
13
- stakeholder_perspective?: PassportStakeholderPerspective;
14
- matched_scenario?: PassportScenario;
15
- matched_template?: PassportTemplate;
16
- matched_pattern?: SemanticToSchemaRule;
17
- puzzle_state?: PassportPuzzle;
18
- puzzle_completeness?: PassportPuzzleCompleteness;
19
- relevant_risks: PassportRiskRule[];
20
- risk_assessment?: PassportRiskAssessment;
21
- relevant_checklist: PassportConfirmationRule[];
22
- cross_object_refs: PassportCrossObjectRef[];
23
- onchain_constraints: PassportOnchainConstraint[];
24
- rendering_hints: PassportRenderingHints;
25
- }
26
- export interface PassportCrossObjectRef {
27
- object: PassportConsumerObject | "Guard" | "Clock" | "Transaction";
28
- field: string;
29
- scenario_id: string;
30
- description: string;
31
- }
32
- export interface PassportOnchainConstraint {
33
- name: string;
34
- value: string | number;
35
- description: string;
36
- }
37
- export interface PassportRenderingHints {
38
- include_puzzle_template: boolean;
39
- include_risk_details: boolean;
40
- include_tx_hash_warning: boolean;
41
- include_one_time_verify_warning: boolean;
42
- include_impack_warning: boolean;
43
- include_relies_warning: boolean;
44
- max_length: number;
45
- }
46
- export interface BuildPassportContextInput {
47
- mode: PassportInjectionMode;
48
- intent?: string;
49
- passport_state?: ObjectPassport;
50
- submission_call?: PassportCallData;
51
- stakeholder?: PassportStakeholderPerspective;
52
- target_consumer?: PassportConsumerObject;
53
- max_length?: number;
54
- }
55
- export declare function buildPassportContext(input: BuildPassportContextInput): PassportContextBundle;
56
- export declare const getPassportContext: typeof buildPassportContext;
57
- export declare function buildPromptFromPassportContext(bundle: PassportContextBundle): string;
58
- export declare function getPassportContextSummary(bundle: PassportContextBundle): string;
59
- export { PASSPORT_SCENARIOS, MAX_GUARD_COUNT_PASSPORT, MAX_SUBMISSION_SIZE_PASSPORT, PASSPORT_ERROR_CODES, findScenarioById, inferScenarioFromIntent, getAllScenarios, PASSPORT_TEMPLATES, getTemplateById, getTemplatesByScenario, suggestTemplateForScenario, SEMANTIC_TO_SCHEMA_RULES, PASSPORT_CONSTRAINT_RULES, matchSemanticPattern, explainPassport, passportJsonToSemantic, semanticToPassportJson, explainField, explainOp, explainImpack, explainReliesLogic, explainError, getConstraintsByCategory, getAllRiskRules, assessPassportRisks, initPuzzleFromIntent, checkPuzzleCompleteness, validateConstraints, buildPassportPuzzle, buildResultPuzzle, PASSPORT_CONFIRMATION_RULES, preCheckPassportCreation, preCheckPassportOperation, checkPassportStateConsistency, runPassportConfirmGate, PASSPORT_RISK_VERSION, PASSPORT_CONFIRM_VERSION, PASSPORT_TEMPLATES_VERSION, type PassportScenario, type PassportTemplate, type SemanticToSchemaRule, type PassportConstraintRule, type PassportRiskRule, type PassportRiskAssessment, type PassportPuzzle, type PassportPuzzleCompleteness, type PassportConfirmationRule, type ObjectPassport, type PassportCallData, };
@@ -1 +0,0 @@
1
- import{PASSPORT_SCENARIOS,MAX_GUARD_COUNT_PASSPORT,MAX_SUBMISSION_SIZE_PASSPORT,PASSPORT_ERROR_CODES,findScenarioById,inferScenarioFromIntent,getAllScenarios}from'./passport-ledger.js';import{PASSPORT_TEMPLATES,PASSPORT_TEMPLATES_VERSION,getTemplateById,getTemplatesByScenario,suggestTemplateForScenario}from'./passport-templates.js';import{SEMANTIC_TO_SCHEMA_RULES,PASSPORT_CONSTRAINT_RULES,matchSemanticPattern,explainPassport,passportJsonToSemantic,semanticToPassportJson,explainField,explainOp,explainImpack,explainReliesLogic,explainError,getConstraintsByCategory}from'./passport-translation.js';import{getAllRiskRules,assessPassportRisks,PASSPORT_RISK_VERSION}from'./passport-risk.js';import{initPuzzleFromIntent,checkPuzzleCompleteness,validateConstraints,buildPassportPuzzle,buildResultPuzzle}from'./passport-puzzle.js';import{PASSPORT_CONFIRMATION_RULES,PASSPORT_CONFIRM_VERSION,preCheckPassportCreation,preCheckPassportOperation,checkPassportStateConsistency,runPassportConfirmGate,getAllConfirmationRules}from'./passport-confirm.js';export const PASSPORT_CONTEXT_VERSION='1.0.0';export function buildPassportContext(a){const b=a['max_length']??0xfa0;let c;a['intent']&&(c=inferScenarioFromIntent(a['intent']));if(!c&&a['target_consumer']){const p=getAllScenarios()['filter'](q=>q['consumer_object']===a['target_consumer']);if(p['length']>0x0)c=p[0x0];}let d;if(c){const q=suggestTemplateForScenario(c['id']);if(q)d=q;}let e;if(a['intent']){const r=matchSemanticPattern(a['intent']);if(r['length']>0x0)e=r[0x0];}let f,g;a['mode']==='initial_design'&&a['intent']&&(f=initPuzzleFromIntent({'protected_operation':a['intent']}),g=checkPuzzleCompleteness(f));const h=filterRiskRules(a['mode'],a['stakeholder'],c);let i;if(a['mode']==='pre_verify'&&a['passport_state']){const s={'object':a['passport_state']['object'],'has_verified':a['passport_state']['has_verified'],'guard_count':a['passport_state']['info']['length'],'has_impack_guard':a['passport_state']['info']['some'](t=>t['impack']),'operation_type':'verify','constants_synced':!![],'knowledge_files_present':!![],'matched_scenario':c};i=assessPassportRisks(s);}const j=filterChecklist(a['mode']),k=buildCrossObjectRefs(c),l=buildOnchainConstraints(),m=a['passport_state']?.['info']['some'](t=>t['impack'])??![],n=a['passport_state']?.['info']['some'](t=>![])??![],o=buildRenderingHints(a['mode'],b,m,n);return{'version':PASSPORT_CONTEXT_VERSION,'mode':a['mode'],'stakeholder_perspective':a['stakeholder'],'matched_scenario':c,'matched_template':d,'matched_pattern':e,'puzzle_state':f,'puzzle_completeness':g,'relevant_risks':h,'risk_assessment':i,'relevant_checklist':j,'cross_object_refs':k,'onchain_constraints':l,'rendering_hints':o};}export const getPassportContext=buildPassportContext;function filterRiskRules(a,b,c){const d=getAllRiskRules();if(a==='initial_design')return d['filter'](e=>e['category']==='structural'||e['category']==='lifecycle');if(a==='pre_verify')return d;if(a==='stakeholder_review'&&b){if(b==='creator')return d['filter'](e=>e['category']==='lifecycle'||e['category']==='logic');if(b==='consumer')return d['filter'](e=>e['category']==='operational'||e['category']==='lifecycle');if(b==='guard_owner')return d['filter'](e=>e['category']==='logic');if(b==='system')return d['filter'](e=>e['category']==='knowledge'||e['category']==='operational');}return d;}function filterChecklist(a){if(a==='initial_design')return PASSPORT_CONFIRMATION_RULES['creation'];if(a==='pre_verify')return getAllConfirmationRules();if(a==='post_verify_use')return PASSPORT_CONFIRMATION_RULES['consistency'];return getAllConfirmationRules();}function buildCrossObjectRefs(a){const b=[];b['push']({'object':'Guard','field':'guard_objects','scenario_id':a?.['id']??'passport_generic','description':'Passport.guard\x20references\x20Guard\x20objects\x20for\x20verification\x20(guard::relies,\x20guard::verify_guard)'}),b['push']({'object':'Clock','field':'time','scenario_id':a?.['id']??'passport_generic','description':'Passport.time\x20=\x20clock::timestamp_ms(clock)\x20at\x20creation'}),b['push']({'object':'Transaction','field':'tx_hash','scenario_id':a?.['id']??'passport_generic','description':'Passport.tx_hash\x20=\x20tx_context::digest(ctx)\x20—\x20binds\x20Passport\x20to\x20its\x20creation\x20transaction'});a&&b['push']({'object':a['consumer_object'],'field':a['sdk_entry'],'scenario_id':a['id'],'description':a['name']+':\x20'+a['passport_purpose']});for(const c of PASSPORT_SCENARIOS){if(a&&c['id']===a['id'])continue;b['push']({'object':c['consumer_object'],'field':c['sdk_entry'],'scenario_id':c['id'],'description':c['name']+'\x20(alternative\x20consumer)'});}return b;}function buildOnchainConstraints(){return[{'name':'MAX_GUARD_COUNT_PASSPORT','value':MAX_GUARD_COUNT_PASSPORT,'description':'Maximum\x20Guard\x20count\x20per\x20Passport\x20(Move:\x20passport.move:9)'},{'name':'MAX_SUBMISSION_SIZE_PASSPORT','value':MAX_SUBMISSION_SIZE_PASSPORT,'description':'Maximum\x20serialized\x20byte\x20size\x20per\x20submission\x20entry\x20(Move:\x20passport.move:10)'},{'name':'E_GUARD_COUNT_EXCEEDED','value':PASSPORT_ERROR_CODES['E_GUARD_COUNT_EXCEEDED'],'description':'Guard\x20count\x20>\x2020\x20—\x20abort\x20guard_add'},{'name':'E_HAS_VERIFIED','value':PASSPORT_ERROR_CODES['E_HAS_VERIFIED'],'description':'verify()\x20one-time\x20—\x20aborts\x20guard_add/guard_clear/verify\x20if\x20already\x20verified'},{'name':'E_IMPACK_GUARD_NOT_FOUND','value':PASSPORT_ERROR_CODES['E_IMPACK_GUARD_NOT_FOUND'],'description':'verify()\x20requires\x20at\x20least\x201\x20impack=true\x20Guard'},{'name':'E_TX_NOT_MATCH','value':PASSPORT_ERROR_CODES['E_TX_NOT_MATCH'],'description':'result()\x20requires\x20tx_hash\x20match\x20—\x20Passport\x20is\x20tx-bound'},{'name':'E_DIGEST_NOT_MATCH','value':PASSPORT_ERROR_CODES['E_DIGEST_NOT_MATCH'],'description':'guard_add/verify/guard_clear\x20require\x20tx_hash\x20match\x20(write\x20ops\x20are\x20tx-bound)'},{'name':'E_RELIES_GUARD_NOT_ADDED','value':PASSPORT_ERROR_CODES['E_RELIES_GUARD_NOT_ADDED'],'description':'Relied\x20Guard\x20must\x20be\x20added\x20before\x20the\x20dependent\x20Guard\x20(topological\x20order)'}];}function buildRenderingHints(a,b,c,d){return{'include_puzzle_template':a==='initial_design','include_risk_details':a==='pre_verify'||a==='stakeholder_review','include_tx_hash_warning':a==='pre_verify'||a==='post_verify_use','include_one_time_verify_warning':a==='pre_verify','include_impack_warning':c||a==='pre_verify','include_relies_warning':d,'max_length':b};}export function buildPromptFromPassportContext(a){const b=[],d=a['rendering_hints'];b['push']('═══\x20Passport\x20Context\x20(mode:\x20'+a['mode']+')\x20═══'),b['push']('');a['matched_scenario']&&(b['push']('Scenario:\x20'+a['matched_scenario']['name']),b['push']('Consumer:\x20'+a['matched_scenario']['consumer_object']+'\x20('+a['matched_scenario']['sdk_entry']+')'),b['push']('Purpose:\x20'+a['matched_scenario']['passport_purpose']),b['push']('Typical\x20impack:\x20'+a['matched_scenario']['typical_impack']),b['push']('Uses\x20relies:\x20'+a['matched_scenario']['uses_relies']),b['push'](''));a['matched_template']&&(b['push']('Suggested\x20template:\x20'+a['matched_template']['id']+'\x20—\x20'+a['matched_template']['name']),b['push'](''));if(d['include_puzzle_template']&&a['puzzle_completeness']){const e=a['puzzle_completeness'];b['push']('─\x20Puzzle\x20Completeness\x20──────────────'),b['push']('Complete:\x20'+(e['complete']?'YES':'NO')),e['missing']['length']>0x0&&b['push']('Missing:\x20'+e['missing']['join'](',\x20')),b['push']('Next:\x20'+e['next_step']),b['push']('');}if(d['include_risk_details']&&a['relevant_risks']['length']>0x0){b['push']('─\x20Relevant\x20Risk\x20Rules\x20('+a['relevant_risks']['length']+')\x20──────────────');for(const f of a['relevant_risks']['slice'](0x0,0x5)){b['push']('\x20\x20'+f['id']+'\x20—\x20'+f['trigger']);}a['relevant_risks']['length']>0x5&&b['push']('\x20\x20...\x20and\x20'+(a['relevant_risks']['length']-0x5)+'\x20more'),b['push']('');}a['risk_assessment']&&(b['push']('─\x20Risk\x20Assessment\x20──────────────'),b['push']('Overall:\x20'+a['risk_assessment']['summary']),b['push']('Detected:\x20'+a['risk_assessment']['risks']['length']+'\x20risk(s)'),b['push']('Blocks\x20publish:\x20'+(a['risk_assessment']['blocks_publish']?'YES':'no')),b['push'](''));d['include_tx_hash_warning']&&(b['push']('⚠️\x20TX_HASH\x20BINDING\x20—\x20Passport\x20is\x20bound\x20to\x20its\x20creation\x20transaction.'),b['push']('\x20\x20\x20All\x20write\x20operations\x20(guard_add/verify)\x20and\x20result\x20queries\x20MUST\x20happen\x20in\x20the\x20same\x20tx.'),b['push'](''));d['include_one_time_verify_warning']&&(b['push']('⚠️\x20ONE-TIME\x20VERIFY\x20—\x20verify()\x20is\x20irreversible.\x20After\x20verify,\x20Guard\x20config\x20cannot\x20be\x20modified.'),b['push']('\x20\x20\x20Double-confirm\x20all\x20Guard\x20selections\x20and\x20submission\x20data\x20before\x20calling\x20verify().'),b['push'](''));d['include_impack_warning']&&(b['push']('⚠️\x20IMPACK\x20MECHANISM\x20—\x20At\x20least\x201\x20impack=true\x20Guard\x20is\x20required.'),b['push']('\x20\x20\x20impack\x20Guard\x20failing\x20→\x20overall\x20result=false\x20(immediate\x20return).'),b['push']('\x20\x20\x20non-impack\x20Guards\x20only\x20record\x20per-Guard\x20result,\x20do\x20NOT\x20affect\x20final\x20result.'),b['push'](''));d['include_relies_warning']&&(b['push']('⚠️\x20RELIES\x20LOGIC\x20—\x20Guards\x20with\x20relies\x20must\x20be\x20added\x20in\x20topological\x20order.'),b['push']('\x20\x20\x20AND\x20logic:\x20all\x20relies\x20must\x20pass\x20(short-circuit\x20on\x20first\x20false).'),b['push']('\x20\x20\x20OR\x20logic:\x20any\x20rely\x20may\x20pass\x20(short-circuit\x20on\x20first\x20true).'),b['push']('\x20\x20\x20Transitive\x20dependencies\x20are\x20NOT\x20allowed\x20(relied\x20Guard\x20cannot\x20have\x20its\x20own\x20relies).'),b['push'](''));if(a['onchain_constraints']['length']>0x0){b['push']('─\x20On-chain\x20Constraints\x20──────────────');for(const g of a['onchain_constraints']){b['push']('\x20\x20'+g['name']+'\x20=\x20'+g['value']+'\x20—\x20'+g['description']);}b['push']('');}if(a['cross_object_refs']['length']>0x0){b['push']('─\x20Cross-object\x20References\x20('+a['cross_object_refs']['length']+')\x20──────────────');for(const i of a['cross_object_refs']['slice'](0x0,0x6)){b['push']('\x20\x20['+i['object']+']\x20'+i['scenario_id']+':\x20'+i['description']);}a['cross_object_refs']['length']>0x6&&b['push']('\x20\x20...\x20and\x20'+(a['cross_object_refs']['length']-0x6)+'\x20more'),b['push']('');}return b['join']('\x0a');}export function getPassportContextSummary(a){const b=['mode='+a['mode'],'scenario='+(a['matched_scenario']?.['id']??'none'),'risks='+a['relevant_risks']['length'],'refs='+a['cross_object_refs']['length']];if(a['stakeholder_perspective'])b['push']('stakeholder='+a['stakeholder_perspective']);if(a['risk_assessment'])b['push']('summary='+a['risk_assessment']['summary']);return b['join'](',\x20');}export{PASSPORT_SCENARIOS,MAX_GUARD_COUNT_PASSPORT,MAX_SUBMISSION_SIZE_PASSPORT,PASSPORT_ERROR_CODES,findScenarioById,inferScenarioFromIntent,getAllScenarios,PASSPORT_TEMPLATES,getTemplateById,getTemplatesByScenario,suggestTemplateForScenario,SEMANTIC_TO_SCHEMA_RULES,PASSPORT_CONSTRAINT_RULES,matchSemanticPattern,explainPassport,passportJsonToSemantic,semanticToPassportJson,explainField,explainOp,explainImpack,explainReliesLogic,explainError,getConstraintsByCategory,getAllRiskRules,assessPassportRisks,initPuzzleFromIntent,checkPuzzleCompleteness,validateConstraints,buildPassportPuzzle,buildResultPuzzle,PASSPORT_CONFIRMATION_RULES,preCheckPassportCreation,preCheckPassportOperation,checkPassportStateConsistency,runPassportConfirmGate,PASSPORT_RISK_VERSION,PASSPORT_CONFIRM_VERSION,PASSPORT_TEMPLATES_VERSION};
@@ -1,108 +0,0 @@
1
- import { type PassportConsumerObject, type PassportLifecycleStage, type ImpackRole, type ReliesLogic } from "./passport-ledger.js";
2
- export interface PassportIntentPuzzle {
3
- protected_operation: string;
4
- consumer_object: PassportConsumerObject;
5
- verification_rules: string[];
6
- failure_conditions: string[];
7
- }
8
- export interface PassportBindingPuzzle {
9
- guard_objects: string[];
10
- impack_flags: boolean[];
11
- relies_dependencies: string[][];
12
- relies_logic: ReliesLogic[];
13
- topological_order: string[];
14
- }
15
- export interface SubmissionEntry {
16
- guard: string;
17
- identifier: number;
18
- value: string;
19
- value_type: string;
20
- estimated_size: number;
21
- }
22
- export interface PassportSubmissionPuzzle {
23
- submissions: SubmissionEntry[];
24
- max_entry_size: number;
25
- size_ok: boolean;
26
- }
27
- export interface PassportVerifyPuzzle {
28
- tx_hash_binding: true;
29
- has_verified: boolean;
30
- verify_flow: {
31
- step: 1 | 2 | 3 | 4 | 5 | 6 | 7;
32
- action: "pre_check" | "iterate_guards" | "calc_relies_result" | "verify_guard_native" | "check_submission_size" | "impack_decision" | "finalize";
33
- description: string;
34
- }[];
35
- }
36
- export interface PassportResultPuzzle {
37
- decision_rule: "impack_mechanism";
38
- impack_guards: string[];
39
- per_guard_logic: {
40
- guard: string;
41
- impack: ImpackRole;
42
- relies_logic: ReliesLogic;
43
- relies_guards: string[];
44
- computation: string;
45
- }[];
46
- overall_formula: string;
47
- }
48
- export interface PassportLifecyclePuzzle {
49
- stages: {
50
- stage: PassportLifecycleStage;
51
- description: string;
52
- completed: boolean;
53
- }[];
54
- terminal_state: "freeze" | "destroy" | "undecided";
55
- destroy_before_freeze: true;
56
- }
57
- export type PassportPuzzleDimension = "A" | "B" | "C" | "D" | "E" | "F";
58
- export interface PassportPuzzle {
59
- intent?: PassportIntentPuzzle;
60
- binding?: PassportBindingPuzzle;
61
- submission?: PassportSubmissionPuzzle;
62
- verify?: PassportVerifyPuzzle;
63
- result?: PassportResultPuzzle;
64
- lifecycle?: PassportLifecyclePuzzle;
65
- }
66
- export interface PassportPuzzleCompleteness {
67
- dimensions: PassportPuzzleDimension[];
68
- missing: PassportPuzzleDimension[];
69
- missing_details: {
70
- dimension: PassportPuzzleDimension;
71
- reason: string;
72
- }[];
73
- complete: boolean;
74
- next_step: string;
75
- }
76
- export interface InitPuzzleInput {
77
- protected_operation?: string;
78
- consumer_object?: PassportConsumerObject;
79
- verification_rules?: string[];
80
- failure_conditions?: string[];
81
- }
82
- export declare function initPuzzleFromIntent(intent: InitPuzzleInput): PassportPuzzle;
83
- export declare function checkPuzzleCompleteness(puzzle: PassportPuzzle): PassportPuzzleCompleteness;
84
- export interface PassportConstraintViolation {
85
- constraint_id: string;
86
- severity: "CRITICAL" | "HIGH" | "MEDIUM" | "LOW";
87
- message: string;
88
- current_value?: string | number;
89
- limit?: string | number;
90
- related_move_error?: string;
91
- }
92
- export declare function validateConstraints(puzzle: PassportPuzzle): PassportConstraintViolation[];
93
- export declare function buildResultPuzzle(binding: PassportBindingPuzzle): PassportResultPuzzle;
94
- export declare function buildDefaultVerifyFlow(): PassportVerifyPuzzle["verify_flow"];
95
- export declare function buildDefaultLifecycleStages(): PassportLifecyclePuzzle["stages"];
96
- export declare function generateConfirmationText(puzzle: PassportPuzzle): string;
97
- export declare function buildPassportPuzzle(input: {
98
- intent: InitPuzzleInput;
99
- binding: {
100
- guard_objects: string[];
101
- impack_flags: boolean[];
102
- relies_dependencies?: string[][];
103
- relies_logic?: ReliesLogic[];
104
- };
105
- submission: SubmissionEntry[];
106
- terminal_state?: "freeze" | "destroy" | "undecided";
107
- }): PassportPuzzle;
108
- export declare const PASSPORT_PUZZLE_VERSION = "1.0.0";
@@ -1 +0,0 @@
1
- import{MAX_GUARD_COUNT_PASSPORT,MAX_SUBMISSION_SIZE_PASSPORT}from'./passport-ledger.js';export function initPuzzleFromIntent(a){const b={};return(a['protected_operation']||a['verification_rules']||a['consumer_object'])&&(b['intent']={'protected_operation':a['protected_operation']??'','consumer_object':a['consumer_object']??'Service','verification_rules':a['verification_rules']??[],'failure_conditions':a['failure_conditions']??[]}),b['verify']={'tx_hash_binding':!![],'has_verified':![],'verify_flow':buildDefaultVerifyFlow()},b['lifecycle']={'stages':buildDefaultLifecycleStages(),'terminal_state':'undecided','destroy_before_freeze':!![]},b;}export function checkPuzzleCompleteness(a){const b=[],c=[];if(!a['intent'])b['push']('A'),c['push']({'dimension':'A','reason':'Intent\x20not\x20specified\x20(protected_operation\x20+\x20verification_rules)'});else{if(!a['intent']['protected_operation'])b['push']('A'),c['push']({'dimension':'A','reason':'protected_operation\x20is\x20empty'});else a['intent']['verification_rules']['length']===0x0&&(b['push']('A'),c['push']({'dimension':'A','reason':'verification_rules\x20is\x20empty\x20—\x20what\x20should\x20each\x20Guard\x20check?'}));}if(!a['binding'])b['push']('B'),c['push']({'dimension':'B','reason':'Binding\x20not\x20specified\x20(guard_objects\x20+\x20impack_flags\x20+\x20relies)'});else{if(a['binding']['guard_objects']['length']===0x0)b['push']('B'),c['push']({'dimension':'B','reason':'guard_objects\x20is\x20empty\x20—\x20at\x20least\x201\x20Guard\x20required'});else{if(!a['binding']['impack_flags']['some'](d=>d))b['push']('B'),c['push']({'dimension':'B','reason':'No\x20impack=true\x20Guard\x20—\x20at\x20least\x201\x20required\x20(E_IMPACK_GUARD_NOT_FOUND)'});else a['binding']['guard_objects']['length']>MAX_GUARD_COUNT_PASSPORT&&(b['push']('B'),c['push']({'dimension':'B','reason':'guard_objects\x20count\x20'+a['binding']['guard_objects']['length']+'\x20>\x20MAX_GUARD_COUNT_PASSPORT='+MAX_GUARD_COUNT_PASSPORT}));}}if(!a['submission'])b['push']('C'),c['push']({'dimension':'C','reason':'Submission\x20not\x20specified\x20(per-Guard\x20identifier\x20+\x20value\x20+\x20value_type)'});else!a['submission']['size_ok']&&(b['push']('C'),c['push']({'dimension':'C','reason':'max_entry_size\x20'+a['submission']['max_entry_size']+'\x20>\x20MAX_SUBMISSION_SIZE_PASSPORT='+MAX_SUBMISSION_SIZE_PASSPORT}));return!a['verify']&&(b['push']('D'),c['push']({'dimension':'D','reason':'Verify\x20dimension\x20not\x20initialized\x20(should\x20be\x20auto-filled)'})),!a['result']&&(b['push']('E'),c['push']({'dimension':'E','reason':'Result\x20computation\x20not\x20derived\x20(call\x20buildResultPuzzle\x20from\x20binding)'})),!a['lifecycle']&&(b['push']('F'),c['push']({'dimension':'F','reason':'Lifecycle\x20not\x20initialized\x20(should\x20be\x20auto-filled)'})),{'dimensions':['A','B','C','D','E','F'],'missing':b,'missing_details':c,'complete':b['length']===0x0,'next_step':b['length']===0x0?'Puzzle\x20complete\x20—\x20ready\x20for\x20confirmation\x20text\x20generation':'Next:\x20complete\x20dimension\x20'+b[0x0]+'\x20—\x20'+c[0x0]['reason']};}export function validateConstraints(a){const b=[];a['binding']&&a['binding']['guard_objects']['length']>MAX_GUARD_COUNT_PASSPORT&&b['push']({'constraint_id':'F-PASS-04','severity':'CRITICAL','message':'Guard\x20count\x20'+a['binding']['guard_objects']['length']+'\x20exceeds\x20MAX_GUARD_COUNT_PASSPORT='+MAX_GUARD_COUNT_PASSPORT,'current_value':a['binding']['guard_objects']['length'],'limit':MAX_GUARD_COUNT_PASSPORT,'related_move_error':'E_GUARD_COUNT_EXCEEDED\x20(1)'});a['binding']&&!a['binding']['impack_flags']['some'](c=>c)&&b['push']({'constraint_id':'F-PASS-07','severity':'CRITICAL','message':'No\x20impack=true\x20Guard\x20—\x20verify()\x20will\x20abort\x20E_IMPACK_GUARD_NOT_FOUND','related_move_error':'E_IMPACK_GUARD_NOT_FOUND\x20(9)'});if(a['binding']){const c=new Set();for(let d=0x0;d<a['binding']['guard_objects']['length'];d++){const e=a['binding']['guard_objects'][d],f=a['binding']['relies_dependencies'][d]??[];for(const g of f){!c['has'](g)&&b['push']({'constraint_id':'F-PASS-06','severity':'HIGH','message':'Guard\x20'+e+'\x20(index\x20'+d+')\x20relies\x20on\x20'+g+',\x20but\x20'+g+'\x20is\x20not\x20added\x20before\x20it\x20(topological\x20order\x20violated)','related_move_error':'E_RELIES_GUARD_NOT_ADDED\x20(2)'});}c['add'](e);}}a['submission']&&!a['submission']['size_ok']&&b['push']({'constraint_id':'F-PASS-05','severity':'HIGH','message':'Submission\x20max\x20entry\x20size\x20'+a['submission']['max_entry_size']+'\x20>\x20MAX_SUBMISSION_SIZE_PASSPORT='+MAX_SUBMISSION_SIZE_PASSPORT,'current_value':a['submission']['max_entry_size'],'limit':MAX_SUBMISSION_SIZE_PASSPORT,'related_move_error':'E_SUBMISSION_SIZE_EXCEEDED\x20(3)'});if(a['binding']){const h=new Map();for(let j=0x0;j<a['binding']['guard_objects']['length'];j++){h['set'](a['binding']['guard_objects'][j],a['binding']['relies_dependencies'][j]??[]);}for(let k=0x0;k<a['binding']['guard_objects']['length'];k++){const l=a['binding']['guard_objects'][k],m=a['binding']['relies_dependencies'][k]??[];for(const n of m){const o=h['get'](n)??[];o['length']>0x0&&b['push']({'constraint_id':'F-PASS-12','severity':'LOW','message':'Guard\x20'+l+'\x20relies\x20on\x20'+n+',\x20but\x20'+n+'\x20itself\x20has\x20relies\x20'+JSON['stringify'](o)+'\x20—\x20transitive\x20dependencies\x20are\x20not\x20allowed'});}}}return b;}export function buildResultPuzzle(a){const b=a['guard_objects']['filter']((e,f)=>a['impack_flags'][f]),c=a['guard_objects']['map']((e,f)=>{const g=a['impack_flags'][f]?'impack':'non_impack',h=a['relies_logic'][f]??'AND',j=a['relies_dependencies'][f]??[],k=j['length']===0x0?'(no\x20relies)':j['map'](m=>m+'.result')['join']('\x20'+h+'\x20'),l=j['length']===0x0?e+'.result\x20(standalone)':k+'\x20'+h+'\x20'+e+'.result';return{'guard':e,'impack':g,'relies_logic':h,'relies_guards':j,'computation':l};}),d=b['length']===0x0?'result\x20=\x20false\x20(no\x20impack\x20Guard\x20—\x20E_IMPACK_GUARD_NOT_FOUND)':'result\x20=\x20AND('+b['map'](e=>e+'.result')['join'](',\x20')+')';return{'decision_rule':'impack_mechanism','impack_guards':b,'per_guard_logic':c,'overall_formula':d};}export function buildDefaultVerifyFlow(){return[{'step':0x1,'action':'pre_check','description':'assert\x20!has_verified\x20(E_HAS_VERIFIED),\x20tx_hash\x20matches\x20(E_DIGEST_NOT_MATCH)'},{'step':0x2,'action':'iterate_guards','description':'for\x20each\x20GuardInfo\x20in\x20self.guard\x20(in\x20addition\x20order)'},{'step':0x3,'action':'calc_relies_result','description':'calculate\x20relies\x20result\x20via\x20AND/OR\x20logic;\x20short-circuit\x20on\x20AND-false\x20or\x20OR-true'},{'step':0x4,'action':'verify_guard_native','description':'guard::verify_guard(guard,\x20submission,\x20impack)\x20—\x20native\x20function,\x20opaque'},{'step':0x5,'action':'check_submission_size','description':'assert\x20BCS\x20submission\x20size\x20≤\x20MAX_SUBMISSION_SIZE_PASSPORT=256\x20(E_SUBMISSION_SIZE_EXCEEDED)'},{'step':0x6,'action':'impack_decision','description':'if\x20impack=true\x20and\x20result=false\x20→\x20set\x20self.result=false,\x20return\x20immediately'},{'step':0x7,'action':'finalize','description':'assert\x20at\x20least\x201\x20impack\x20Guard\x20(E_IMPACK_GUARD_NOT_FOUND);\x20set\x20has_verified=true,\x20self.result=true'}];}export function buildDefaultLifecycleStages(){return[{'stage':'new','description':'passport::new_v2(clock,\x20object_linker_tx,\x20ctx)\x20—\x20create\x20Passport,\x20bind\x20tx_hash,\x20register\x20creator\x20reverse\x20lookup','completed':![]},{'stage':'guard_add','description':'passport::guard_add(self,\x20guard,\x20identifiers,\x20values,\x20impack,\x20ctx)\x20—\x20add\x20Guards\x20(repeatable,\x20pre-verify)','completed':![]},{'stage':'verify','description':'passport::verify(self,\x20ctx)\x20—\x20one-time\x20verification,\x20sets\x20has_verified=true','completed':![]},{'stage':'use','description':'passport::result\x20/\x20result_for_guard\x20/\x20result_for_permission\x20/\x20submission_get\x20—\x20query\x20results','completed':![]},{'stage':'freeze_or_destroy','description':'passport::freezen(self)\x20[permanent]\x20OR\x20passport::destroy(self)\x20[release]','completed':![]}];}export function generateConfirmationText(a){const c=[];c['push']('═══\x20Passport\x20Confirmation\x20═══'),c['push']('');if(a['intent']){c['push']('─\x20A.\x20Intent\x20──────────────'),c['push']('Protected\x20operation:\x20'+a['intent']['protected_operation']),c['push']('Consumer\x20object:\x20'+a['intent']['consumer_object']);if(a['intent']['verification_rules']['length']>0x0){c['push']('Verification\x20rules:');for(const e of a['intent']['verification_rules'])c['push']('\x20\x20-\x20'+e);}if(a['intent']['failure_conditions']['length']>0x0){c['push']('Failure\x20conditions:');for(const f of a['intent']['failure_conditions'])c['push']('\x20\x20-\x20'+f);}c['push']('');}if(a['binding']){const g=a['binding'];c['push']('─\x20B.\x20Binding\x20──────────────'),c['push']('Guards\x20('+g['guard_objects']['length']+'/'+MAX_GUARD_COUNT_PASSPORT+'):'),g['guard_objects']['forEach']((h,j)=>{const k=g['impack_flags'][j]?'IMPACK':'non-impack',m=g['relies_dependencies'][j]??[],n=g['relies_logic'][j]??'AND',o=m['length']===0x0?'':'\x20relies='+JSON['stringify'](m)+'\x20('+n+')';c['push']('\x20\x20['+j+']\x20'+h+'\x20—\x20'+k+o);}),g['topological_order']['length']>0x0&&c['push']('Topological\x20order:\x20'+g['topological_order']['join']('\x20→\x20')),c['push']('');}if(a['submission']){const h=a['submission'];c['push']('─\x20C.\x20Submission\x20──────────────'),c['push']('Entries:\x20'+h['submissions']['length']+',\x20max\x20entry\x20size:\x20'+h['max_entry_size']+'/'+MAX_SUBMISSION_SIZE_PASSPORT+'\x20bytes\x20('+(h['size_ok']?'OK':'EXCEEDS')+')');for(const i of h['submissions']){c['push']('\x20\x20-\x20guard='+i['guard']+',\x20identifier='+i['identifier']+',\x20value_type='+i['value_type']+',\x20size='+i['estimated_size']);}c['push']('');}if(a['verify']){const j=a['verify'];c['push']('─\x20D.\x20Verify\x20──────────────'),c['push']('tx_hash\x20binding:\x20'+(j['tx_hash_binding']?'YES\x20(Move-level\x20hard-coded)':'NO')),c['push']('has_verified:\x20'+j['has_verified']),c['push']('Verify\x20flow\x20('+j['verify_flow']['length']+'\x20steps):');for(const k of j['verify_flow']){c['push']('\x20\x20'+k['step']+'.\x20'+k['action']+':\x20'+k['description']);}c['push']('');}if(a['result']){const m=a['result'];c['push']('─\x20E.\x20Result\x20──────────────'),c['push']('Decision\x20rule:\x20'+m['decision_rule']),c['push']('impack\x20Guards:\x20'+(m['impack_guards']['length']===0x0?'(none\x20—\x20will\x20fail\x20verify)':m['impack_guards']['join'](',\x20'))),c['push']('Overall\x20formula:\x20'+m['overall_formula']);if(m['per_guard_logic']['length']>0x0){c['push']('Per-Guard\x20logic:');for(const n of m['per_guard_logic']){c['push']('\x20\x20-\x20'+n['guard']+'\x20('+n['impack']+',\x20'+n['relies_logic']+'):\x20'+n['computation']);}}c['push']('');}if(a['lifecycle']){const o=a['lifecycle'];c['push']('─\x20F.\x20Lifecycle\x20──────────────'),c['push']('Terminal\x20state:\x20'+o['terminal_state']);for(const p of o['stages']){const q=p['completed']?'✓':'○';c['push']('\x20\x20'+q+'\x20'+p['stage']+':\x20'+p['description']);}c['push']('');}const d=validateConstraints(a);if(d['length']>0x0){c['push']('─\x20Constraint\x20Violations\x20──────────────');for(const t of d){c['push']('\x20\x20['+t['severity']+']\x20'+t['constraint_id']+':\x20'+t['message']);}c['push']('');}return c['join']('\x0a');}export function buildPassportPuzzle(a){const b=initPuzzleFromIntent(a['intent']),c=computeTopologicalOrder(a['binding']['guard_objects'],a['binding']['relies_dependencies']??a['binding']['guard_objects']['map'](()=>[]));b['binding']={'guard_objects':a['binding']['guard_objects'],'impack_flags':a['binding']['impack_flags'],'relies_dependencies':a['binding']['relies_dependencies']??a['binding']['guard_objects']['map'](()=>[]),'relies_logic':a['binding']['relies_logic']??a['binding']['guard_objects']['map'](()=>'AND'),'topological_order':c};const d=a['submission']['reduce']((e,f)=>Math['max'](e,f['estimated_size']),0x0);return b['submission']={'submissions':a['submission'],'max_entry_size':d,'size_ok':d<=MAX_SUBMISSION_SIZE_PASSPORT},b['result']=buildResultPuzzle(b['binding']),a['terminal_state']&&(b['lifecycle']['terminal_state']=a['terminal_state']),b;}function computeTopologicalOrder(a,b){const c=[],d=new Set();for(let e=0x0;e<a['length'];e++){const f=a[e],g=b[e]??[];for(const h of g){!d['has'](h)&&a['includes'](h)&&(c['push'](h),d['add'](h));}!d['has'](f)&&(c['push'](f),d['add'](f));}return c;}export const PASSPORT_PUZZLE_VERSION='1.0.0';
@@ -1,70 +0,0 @@
1
- import { PASSPORT_ERROR_CODES, type PassportScenario } from "./passport-ledger.js";
2
- export type PassportRiskLevel = "CRITICAL" | "HIGH" | "MEDIUM" | "LOW" | "INFO";
3
- export type PassportRiskCategory = "structural" | "lifecycle" | "logic" | "operational" | "knowledge";
4
- export type PassportStakeholder = "creator" | "consumer" | "guard_owner" | "system";
5
- export interface PassportRisk {
6
- id: string;
7
- level: PassportRiskLevel;
8
- category: PassportRiskCategory;
9
- title: string;
10
- description: string;
11
- affected_stakeholders: PassportStakeholder[];
12
- scenario: string;
13
- mitigation: string;
14
- evidence?: string;
15
- related_move_error?: string;
16
- related_risk?: string;
17
- resolved?: boolean;
18
- auto_fixable: boolean;
19
- }
20
- export interface PassportRiskRule {
21
- id: string;
22
- category: PassportRiskCategory;
23
- trigger: string;
24
- check: (ctx: PassportRiskCheckContext) => PassportRisk | null;
25
- }
26
- export interface PassportRiskCheckContext {
27
- object?: string | null;
28
- guard_config?: {
29
- guard: {
30
- object: string;
31
- impack: boolean;
32
- }[];
33
- submission?: {
34
- guard: string;
35
- submission: {
36
- identifier: number;
37
- value: unknown;
38
- value_type: string;
39
- }[];
40
- }[];
41
- };
42
- has_verified?: boolean;
43
- guard_count?: number;
44
- has_impack_guard?: boolean;
45
- max_submission_size?: number;
46
- relies_map?: Record<string, string[]>;
47
- has_transitive_relies?: boolean;
48
- operation_type?: "create" | "guard_add" | "guard_clear" | "verify" | "use" | "freezen" | "destroy" | "query";
49
- is_frozen?: boolean;
50
- matched_scenario?: PassportScenario;
51
- constants_synced?: boolean;
52
- knowledge_files_present?: boolean;
53
- }
54
- export declare const PASSPORT_RISK_VERSION = "1.0.0";
55
- export declare function getAllRiskRules(): PassportRiskRule[];
56
- export declare function getRiskRulesCount(): number;
57
- export declare function getRiskRulesByCategory(category: PassportRiskCategory): PassportRiskRule[];
58
- export interface PassportRiskAssessment {
59
- summary: string;
60
- scenario?: PassportScenario;
61
- risks: PassportRisk[];
62
- overall_risk: PassportRiskLevel;
63
- risks_by_category: Partial<Record<PassportRiskCategory, number>>;
64
- risks_by_level: Partial<Record<PassportRiskLevel, number>>;
65
- stakeholder_advice: Partial<Record<PassportStakeholder, string[]>>;
66
- needs_human_review: boolean;
67
- blocks_publish: boolean;
68
- }
69
- export declare function assessPassportRisks(ctx: PassportRiskCheckContext): PassportRiskAssessment;
70
- export { PASSPORT_ERROR_CODES };
@@ -1 +0,0 @@
1
- import{MAX_GUARD_COUNT_PASSPORT,MAX_SUBMISSION_SIZE_PASSPORT,PASSPORT_ERROR_CODES}from'./passport-ledger.js';const R_P_1_01={'id':'R-PASS-01','category':'lifecycle','trigger':'tx_hash\x20binding\x20—\x20Passport\x20cannot\x20be\x20reused\x20across\x20transactions','check':a=>{if(a['operation_type']!=='create'&&a['operation_type']!=='use')return null;return{'id':'R-PASS-01','level':'HIGH','category':'lifecycle','title':'tx_hash\x20binding\x20—\x20Passport\x20cannot\x20be\x20reused\x20across\x20transactions','description':'Passport\x20is\x20bound\x20to\x20tx_context::digest(ctx)\x20at\x20creation\x20time.\x20All\x20write\x20functions\x20(guard_add\x20/\x20guard_clear\x20/\x20verify)\x20and\x20result\x20queries\x20require\x20tx_hash\x20to\x20match\x20the\x20current\x20transaction,\x20otherwise\x20abort\x20E_DIGEST_NOT_MATCH\x20(11)\x20or\x20E_TX_NOT_MATCH\x20(8).\x20Caller\x20must\x20complete\x20all\x20operations\x20within\x20the\x20same\x20transaction\x20(new\x20→\x20guard_add\x20→\x20verify\x20→\x20result\x20→\x20consume).','affected_stakeholders':['creator','consumer'],'scenario':'Caller\x20attempts\x20to\x20use\x20Passport\x20created\x20in\x20a\x20previous\x20transaction','mitigation':'SDK\x20encapsulates\x20single-transaction\x20flow\x20(verify_guard:\x20new\x20→\x20guard_add\x20→\x20verify\x20→\x20freeze).\x20To\x20reuse\x20across\x20transactions,\x20you\x20must\x20recreate\x20the\x20Passport\x20and\x20resubmit\x20all\x20Guard\x20data.','evidence':'tx_hash\x20field\x20set\x20at\x20new()\x20time,\x20enforced\x20in\x20guard_add/verify/result','related_move_error':'E_DIGEST_NOT_MATCH\x20(11),\x20E_TX_NOT_MATCH\x20(8)','auto_fixable':![]};}},R_P_1_02={'id':'R-PASS-02','category':'lifecycle','trigger':'has_verified\x20one-time\x20—\x20Guard\x20config\x20cannot\x20be\x20modified\x20after\x20verify','check':a=>{if(!a['has_verified'])return null;if(a['operation_type']!=='guard_add'&&a['operation_type']!=='guard_clear')return null;return{'id':'R-PASS-02','level':'MEDIUM','category':'lifecycle','title':'has_verified\x20one-time\x20—\x20Guard\x20config\x20cannot\x20be\x20modified\x20after\x20verify','description':'After\x20Passport.has_verified=true,\x20guard_add\x20/\x20guard_clear\x20/\x20verify\x20all\x20abort\x20E_HAS_VERIFIED\x20(4).\x20verify\x20is\x20a\x20one-time\x20operation\x20and\x20its\x20result\x20is\x20tamper-proof.\x20This\x20is\x20Passport\x27s\x20core\x20security\x20guarantee\x20(anti-tampering),\x20but\x20also\x20means\x20all\x20Guards\x20must\x20be\x20fully\x20configured\x20before\x20verify.','affected_stakeholders':['creator'],'scenario':'Caller\x20attempts\x20to\x20modify\x20Guard\x20configuration\x20after\x20verify()','mitigation':'Fully\x20plan\x20all\x20Guards\x20(impack\x20+\x20non-impack\x20+\x20relies\x20dependencies)\x20before\x20verify().\x20To\x20modify\x20after\x20verify,\x20create\x20a\x20new\x20Passport.','evidence':'has_verified='+a['has_verified']+',\x20operation='+a['operation_type'],'related_move_error':'E_HAS_VERIFIED\x20(4)','auto_fixable':![]};}},R_P_1_03={'id':'R-PASS-03','category':'structural','trigger':'No\x20impack\x20Guard\x20—\x20verify\x20will\x20fail\x20E_IMPACK_GUARD_NOT_FOUND','check':a=>{if(a['operation_type']!=='verify')return null;if(a['has_impack_guard'])return null;return{'id':'R-PASS-03','level':'MEDIUM','category':'structural','title':'No\x20impack\x20Guard\x20—\x20verify\x20will\x20fail\x20E_IMPACK_GUARD_NOT_FOUND','description':'verify()\x20requires\x20at\x20least\x201\x20impack=true\x20Guard.\x20If\x20all\x20Guards\x20are\x20impack=false,\x20verify\x20aborts\x20E_IMPACK_GUARD_NOT_FOUND\x20(9).\x20Guards\x20with\x20impack=false\x20only\x20record\x20per-Guard\x20result\x20and\x20do\x20not\x20affect\x20the\x20final\x20result.','affected_stakeholders':['creator'],'scenario':'Passport\x20configured\x20with\x20only\x20non-impack\x20Guards','mitigation':'Configure\x20at\x20least\x201\x20Guard\x20as\x20impack=true.\x20Failure\x20of\x20this\x20Guard\x20immediately\x20sets\x20the\x20overall\x20result=false.','evidence':'has_impack_guard='+(a['has_impack_guard']??![]),'related_move_error':'E_IMPACK_GUARD_NOT_FOUND\x20(9)','auto_fixable':!![]};}},R_P_2_01={'id':'R-PASS-04','category':'logic','trigger':'Depended\x20Guard\x20order\x20error\x20—\x20E_RELIES_GUARD_NOT_ADDED','check':a=>{if(a['operation_type']!=='guard_add')return null;if(!a['relies_map'])return null;const b=new Set(a['guard_config']?.['guard']['map'](c=>c['object'])??[]);for(const [c,d]of Object['entries'](a['relies_map'])){if(!b['has'](c))continue;for(const e of d){if(!b['has'](e))return{'id':'R-PASS-04','level':'HIGH','category':'logic','title':'Depended\x20Guard\x20order\x20error\x20—\x20E_RELIES_GUARD_NOT_ADDED','description':'Guard\x20'+c+'\x20depends\x20on\x20Guard\x20'+e+',\x20but\x20'+e+'\x20has\x20not\x20been\x20added\x20to\x20Passport\x20yet.\x20guard_add\x20checks\x20dependencies\x20in\x20topological\x20order;\x20if\x20a\x20depended\x20Guard\x20was\x20not\x20added\x20first,\x20abort\x20E_RELIES_GUARD_NOT_ADDED\x20(2).','affected_stakeholders':['creator'],'scenario':'Adding\x20a\x20Guard\x20with\x20relies\x20before\x20adding\x20the\x20relied\x20Guard','mitigation':'Add\x20the\x20depended\x20Guard\x20'+e+'\x20first,\x20then\x20'+c+'.\x20Dependencies\x20are\x20returned\x20by\x20guard::relies(guard).','evidence':'guard='+c+',\x20missing_rely='+e,'related_move_error':'E_RELIES_GUARD_NOT_ADDED\x20(2)','auto_fixable':![]};}}return null;}},R_P_2_02={'id':'R-PASS-05','category':'structural','trigger':'submission\x20serialized\x20exceeds\x20256\x20bytes\x20—\x20E_SUBMISSION_SIZE_EXCEEDED','check':a=>{if(a['max_submission_size']===undefined)return null;if(a['max_submission_size']<=MAX_SUBMISSION_SIZE_PASSPORT)return null;return{'id':'R-PASS-05','level':'MEDIUM','category':'structural','title':'submission\x20serialized\x20exceeds\x20'+MAX_SUBMISSION_SIZE_PASSPORT+'\x20bytes\x20—\x20E_SUBMISSION_SIZE_EXCEEDED','description':'Single\x20submission\x20serialized\x20size\x20is\x20'+a['max_submission_size']+'\x20bytes\x20>\x20MAX_SUBMISSION_SIZE_PASSPORT='+MAX_SUBMISSION_SIZE_PASSPORT+'.\x20verify()\x20checks\x20BCS\x20serialized\x20size\x20of\x20each\x20submission;\x20if\x20exceeded,\x20abort\x20E_SUBMISSION_SIZE_EXCEEDED\x20(3).','affected_stakeholders':['creator'],'scenario':'Submission\x20value\x20too\x20large\x20(e.g.\x20long\x20string\x20or\x20nested\x20struct)','mitigation':'Trim\x20submission\x20data\x20to\x20<=\x20'+MAX_SUBMISSION_SIZE_PASSPORT+'\x20bytes.\x20For\x20large\x20objects,\x20use\x20Repository\x20references\x20instead\x20of\x20inline\x20data.','evidence':'max_submission_size='+a['max_submission_size']+',\x20limit='+MAX_SUBMISSION_SIZE_PASSPORT,'related_move_error':'E_SUBMISSION_SIZE_EXCEEDED\x20(3)','auto_fixable':![]};}},R_P_2_03={'id':'R-PASS-06','category':'structural','trigger':'Guard\x20count\x20reaches\x2020\x20limit\x20—\x20E_GUARD_COUNT_EXCEEDED','check':a=>{if(a['guard_count']===undefined)return null;if(a['guard_count']<MAX_GUARD_COUNT_PASSPORT)return null;return{'id':'R-PASS-06','level':'LOW','category':'structural','title':'Guard\x20count\x20reaches\x20'+MAX_GUARD_COUNT_PASSPORT+'\x20limit\x20—\x20E_GUARD_COUNT_EXCEEDED','description':'Guard\x20count\x20'+a['guard_count']+'\x20>=\x20MAX_GUARD_COUNT_PASSPORT='+MAX_GUARD_COUNT_PASSPORT+'.\x20guard_add\x20on\x20a\x20new\x20Guard\x20aborts\x20E_GUARD_COUNT_EXCEEDED\x20(1).\x20Existing\x20Guards\x20can\x20still\x20be\x20updated,\x20but\x20no\x20new\x20ones\x20can\x20be\x20added.','affected_stakeholders':['creator'],'scenario':'Passport\x20with\x20many\x20Guard\x20dependencies\x20(e.g.\x20complex\x20multi-factor\x20verification)','mitigation':'Plan\x20Guard\x20count\x20reasonably\x20within\x20<=\x20'+MAX_GUARD_COUNT_PASSPORT+'.\x20For\x20more\x20verifications,\x20merge\x20similar\x20Guards\x20or\x20use\x20relies\x20logical\x20composition.','evidence':'guard_count='+a['guard_count']+',\x20limit='+MAX_GUARD_COUNT_PASSPORT,'related_move_error':'E_GUARD_COUNT_EXCEEDED\x20(1)','auto_fixable':![]};}},R_P_3_01={'id':'R-PASS-07','category':'logic','trigger':'impack\x20Guard\x20failure\x20sets\x20overall\x20result=false;\x20non-impack\x20results\x20are\x20ignored','check':a=>{if(a['operation_type']!=='verify'&&a['operation_type']!=='use')return null;if(!a['has_impack_guard'])return null;return{'id':'R-PASS-07','level':'HIGH','category':'logic','title':'impack\x20Guard\x20failure\x20sets\x20overall\x20result=false;\x20non-impack\x20results\x20are\x20ignored','description':'During\x20verify(),\x20any\x20impack=true\x20Guard\x20failure\x20→\x20immediately\x20sets\x20result=false\x20and\x20returns.\x20Even\x20if\x20all\x20impack=false\x20Guards\x20pass,\x20they\x20do\x20not\x20affect\x20the\x20final\x20result.\x20This\x20may\x20mislead\x20users\x20into\x20thinking\x20non-impack\x20Guard\x20success\x20can\x20salvage\x20the\x20overall\x20result.','affected_stakeholders':['creator','consumer'],'scenario':'Multi-Guard\x20Passport\x20where\x20one\x20impack\x20Guard\x20fails\x20but\x20non-impack\x20Guards\x20pass','mitigation':'Only\x20configure\x20Guards\x20that\x20truly\x20affect\x20business\x20outcomes\x20as\x20impack=true.\x20Non-impack\x20Guards\x20are\x20for\x20logging/audit\x20only.\x20Audit\x20the\x20verify_guard\x20logic\x20of\x20impack\x20Guards\x20to\x20ensure\x20correctness.','evidence':'has_impack_guard='+a['has_impack_guard'],'related_move_error':'E_VERIFY_FAILED\x20(7,\x20indirect)','auto_fixable':![]};}},R_P_3_02={'id':'R-PASS-08','category':'logic','trigger':'relies\x20logic\x20error\x20(AND/OR\x20misuse)\x20causes\x20verification\x20logic\x20to\x20mismatch\x20intent','check':a=>{if(a['operation_type']!=='guard_add'&&a['operation_type']!=='verify')return null;if(!a['relies_map'])return null;const b=Object['values'](a['relies_map'])['filter'](c=>c['length']>0x0)['length'];if(b===0x0)return null;return{'id':'R-PASS-08','level':'HIGH','category':'logic','title':'relies\x20logic\x20error\x20(AND/OR\x20misuse)\x20causes\x20verification\x20logic\x20to\x20mismatch\x20intent','description':'Detected\x20'+b+'\x20Guard(s)\x20using\x20relies\x20dependencies.\x20relies_logic_and=true\x20(AND)\x20requires\x20all\x20dependencies\x20to\x20pass;\x20relies_logic_and=false\x20(OR)\x20requires\x20any\x20dependency\x20to\x20pass.\x20AND/OR\x20misuse\x20causes\x20verification\x20logic\x20to\x20diverge\x20from\x20business\x20intent\x20(e.g.\x20intent\x20is\x20\x22any\x20pass\x22\x20but\x20configured\x20as\x20AND,\x20forcing\x20all\x20dependencies\x20to\x20pass).','affected_stakeholders':['creator','guard_owner'],'scenario':'Guard\x20with\x20relies\x20on\x20multiple\x20dependencies,\x20but\x20logic\x20operator\x20misconfigured\x20at\x20Guard\x20level','mitigation':'Document\x20each\x20Guard\x27s\x20dependency\x20relationships\x20and\x20expected\x20logic.\x20AND\x20for\x20\x27all\x20must\x20satisfy\x27\x20scenarios\x20(multi-factor\x20auth);\x20OR\x20for\x20\x27any\x20satisfies\x27\x20scenarios\x20(multi-path\x20authorization).\x20Note:\x20relies_logic_and\x20is\x20returned\x20by\x20guard::relies()\x20of\x20the\x20Guard\x20object,\x20not\x20configured\x20at\x20the\x20Passport\x20layer.','evidence':'guards_with_relies='+b,'auto_fixable':![]};}},R_P_3_03={'id':'R-PASS-09','category':'knowledge','trigger':'Constant\x20sync\x20gap\x20—\x20MAX_GUARD_COUNT/MAX_SUBMISSION_SIZE\x20(RESOLVED)','check':a=>{if(a['constants_synced']===![])return{'id':'R-PASS-09','level':'MEDIUM','category':'knowledge','title':'Constant\x20sync\x20gap:\x20MAX_GUARD_COUNT/MAX_SUBMISSION_SIZE\x20not\x20synced','description':'Move-layer\x20MAX_GUARD_COUNT=20\x20/\x20MAX_SUBMISSION_SIZE=256\x20were\x20not\x20synced\x20to\x20SDK\x20onchain-constants.ts.\x20Would\x20cause\x20SDK-layer\x20pre-validation\x20gaps\x20or\x20constant\x20drift.','affected_stakeholders':['system'],'scenario':'Constant\x20sync\x20drift\x20between\x20Move\x20/\x20SDK\x20/\x20MCP','mitigation':'Add\x20MAX_GUARD_COUNT_PASSPORT=20\x20and\x20MAX_SUBMISSION_SIZE_PASSPORT=256\x20to\x20onchain-constants.ts','evidence':'constants_synced=false','resolved':![],'auto_fixable':!![]};return{'id':'R-PASS-09','level':'MEDIUM','category':'knowledge','title':'Constant\x20sync\x20gap\x20(RESOLVED)','description':'Historical\x20issue:\x20Move-layer\x20MAX_GUARD_COUNT=20\x20/\x20MAX_SUBMISSION_SIZE=256\x20were\x20previously\x20not\x20synced\x20to\x20SDK.\x20Fixed\x20via\x20onchain-constants.ts\x20L278/L291\x20(ONCHAIN_CONSTANTS\x20object)\x20+\x20L387/L392\x20(named\x20exports).\x20SDK\x20passport.ts\x20imports\x20and\x20re-exports\x20these\x20two\x20constants\x20from\x20the\x20top,\x20no\x20longer\x20has\x20local\x20definitions.','affected_stakeholders':['system'],'scenario':'Constant\x20sync\x20drift\x20between\x20Move\x20/\x20SDK\x20/\x20MCP\x20(historical,\x20now\x20resolved)','mitigation':'Synced\x20via\x20MAX_GUARD_COUNT_PASSPORT\x20/\x20MAX_SUBMISSION_SIZE_PASSPORT.\x20No\x20further\x20action\x20required.','evidence':'constants_synced='+(a['constants_synced']??!![])+',\x20MAX_GUARD_COUNT_PASSPORT='+MAX_GUARD_COUNT_PASSPORT+',\x20MAX_SUBMISSION_SIZE_PASSPORT='+MAX_SUBMISSION_SIZE_PASSPORT,'resolved':!![],'auto_fixable':![]};}},R_P_4_01={'id':'R-PASS-10','category':'knowledge','trigger':'Passport\x20Knowledge\x20layer\x20completely\x20missing\x20(RESOLVED,\x207/7)','check':a=>{if(a['knowledge_files_present']===![])return{'id':'R-PASS-10','level':'CRITICAL','category':'knowledge','title':'Passport\x20Knowledge\x20layer\x20completely\x20missing\x20(0/7)','description':'Passport\x20has\x20no\x20dedicated\x20files\x20under\x20knowledge/\x20directory.\x20AI\x20Agent\x20cannot\x20access\x20Passport\x20knowledge\x20via\x20passport-context.ts\x20aggregation,\x20causing\x20Passport\x20operations\x20to\x20lack\x20risk\x20pre-checks,\x20confirmation\x20gates,\x20translation\x20rules,\x20etc.','affected_stakeholders':['system'],'scenario':'AI\x20Agent\x20attempts\x20Passport\x20operation\x20without\x20knowledge\x20layer','mitigation':'Create\x207\x20files:\x20passport-{risk,confirm,translation,templates,context,puzzle,ledger}.ts','evidence':'knowledge_files_present=false','resolved':![],'auto_fixable':!![]};return{'id':'R-PASS-10','level':'CRITICAL','category':'knowledge','title':'Passport\x20Knowledge\x20layer\x20completely\x20missing\x20(RESOLVED,\x207/7)','description':'Historical\x20issue:\x20Passport\x20previously\x20had\x20no\x20dedicated\x20files\x20under\x20knowledge/\x20(0/7).\x20Fixed\x20by\x20adding\x207\x20files:\x20passport-{risk,confirm,translation,templates,context,puzzle,ledger}.ts.\x20AI\x20Agent\x20can\x20now\x20access\x20Passport\x20knowledge\x20via\x20passport-context.ts\x20aggregation.','affected_stakeholders':['system'],'scenario':'AI\x20Agent\x20attempts\x20Passport\x20operation\x20(historical\x20gap,\x20now\x20resolved)','mitigation':'7\x20knowledge\x20files\x20created.\x20No\x20further\x20action\x20required.','evidence':'knowledge_files_present='+(a['knowledge_files_present']??!![]),'resolved':!![],'auto_fixable':![]};}},R_P_4_02={'id':'R-PASS-11','category':'operational','trigger':'No\x20event\x20emission\x20—\x20Passport\x20creation/verify\x20history\x20cannot\x20be\x20tracked\x20via\x20events','check':a=>{if(a['operation_type']!=='create'&&a['operation_type']!=='verify')return null;return{'id':'R-PASS-11','level':'MEDIUM','category':'operational','title':'No\x20event\x20emission\x20—\x20Passport\x20creation/verify\x20history\x20cannot\x20be\x20tracked\x20via\x20events','description':'Passport\x20structurally\x20has\x200\x20event\x20emissions\x20(unlike\x20Order\x20which\x20emits\x20NewOrderEvent).\x20Passport\x20creation,\x20Guard\x20addition,\x20verify,\x20and\x20other\x20operations\x20cannot\x20be\x20tracked\x20via\x20the\x20Wow\x20event\x20system.\x20Auditors\x20must\x20proactively\x20query\x20object\x20state\x20(query_objects\x20with\x20ObjectType.Passport).','affected_stakeholders':['system','consumer'],'scenario':'Auditor\x20attempts\x20to\x20reconstruct\x20Passport\x20lifecycle\x20from\x20events','mitigation':'Proactively\x20fetch\x20Passport\x20state\x20via\x20query\x20interfaces\x20(ObjectPassportSchema).\x20Downstream\x20consumers\x20should\x20record\x20their\x20own\x20business\x20events\x20and\x20correlate\x20them\x20with\x20Passport\x20object\x20addresses.','evidence':'0\x20events\x20in\x20passport.move','auto_fixable':![]};}},R_P_4_03={'id':'R-PASS-12','category':'operational','trigger':'result_for_permission\x20lazy-loads\x20impack\x20field','check':a=>{if(a['operation_type']!=='use')return null;return{'id':'R-PASS-12','level':'LOW','category':'operational','title':'result_for_permission\x20lazy-loads\x20impack\x20field','description':'The\x20Passport.impack\x20field\x20(vector<address>)\x20is\x20NOT\x20populated\x20at\x20verify()\x20time;\x20it\x20is\x20lazily\x20loaded\x20only\x20on\x20the\x20first\x20call\x20to\x20result_for_permission().\x20This\x20means\x20querying\x20ObjectPassport.impack_guard\x20after\x20verify\x20but\x20before\x20result_for_permission\x20is\x20called\x20may\x20return\x20an\x20empty\x20array.','affected_stakeholders':['consumer','system'],'scenario':'Consumer\x20queries\x20impack_guard\x20list\x20before\x20result_for_permission\x20is\x20called','mitigation':'Document\x20the\x20lazy-loading\x20behavior.\x20To\x20get\x20the\x20impack\x20list\x20immediately,\x20call\x20result_for_permission()\x20explicitly.\x20Note:\x20this\x20function\x20checks\x20result=true\x20(E_VERIFY_FAILED\x20if\x20false).','evidence':'impack\x20field\x20lazy-filled\x20in\x20result_for_permission()','auto_fixable':![]};}},R_P_5_01={'id':'R-PASS-13','category':'lifecycle','trigger':'destroy\x20must\x20occur\x20before\x20freeze\x20—\x20frozen\x20object\x20cannot\x20be\x20destroyed','check':a=>{if(a['operation_type']!=='destroy'&&a['operation_type']!=='freezen')return null;if(a['is_frozen'])return{'id':'R-PASS-13','level':'INFO','category':'lifecycle','title':'destroy\x20must\x20occur\x20before\x20freeze\x20—\x20frozen\x20object\x20cannot\x20be\x20destroyed','description':'Passport\x20is\x20frozen\x20(becomes\x20immutable\x20after\x20freeze_object).\x20destroy()\x20needs\x20to\x20receive\x20self:\x20Passport\x20by\x20value,\x20but\x20a\x20frozen\x20object\x20can\x20no\x20longer\x20be\x20received\x20by\x20value.\x20To\x20destroy,\x20the\x20operation\x20must\x20happen\x20before\x20freeze.','affected_stakeholders':['creator'],'scenario':'Creator\x20attempts\x20to\x20destroy\x20a\x20frozen\x20Passport','mitigation':'Document\x20the\x20workflow:\x20destroy\x20and\x20freezen\x20are\x20mutually\x20exclusive\x20terminal\x20operations.\x20Freeze\x20=\x20permanent\x20retention;\x20destroy\x20=\x20resource\x20release.','evidence':'is_frozen='+a['is_frozen'],'auto_fixable':![]};return{'id':'R-PASS-13','level':'INFO','category':'lifecycle','title':'destroy\x20must\x20occur\x20before\x20freeze\x20—\x20workflow\x20reminder','description':'destroy\x20and\x20freezen\x20are\x20two\x20terminal\x20operations\x20for\x20Passport.\x20destroy\x20releases\x20resources\x20(object::delete);\x20freezen\x20permanently\x20retains\x20(transfer::freeze_object).\x20The\x20two\x20are\x20mutually\x20exclusive:\x20after\x20freeze,\x20destroy\x20is\x20not\x20allowed;\x20after\x20destroy,\x20freeze\x20is\x20not\x20allowed.','affected_stakeholders':['creator'],'scenario':'Creator\x20choosing\x20between\x20destroy\x20and\x20freezen','mitigation':'Use\x20freezen\x20to\x20permanently\x20retain\x20verification\x20records\x20(for\x20audit);\x20use\x20destroy\x20for\x20one-time\x20verification\x20(to\x20release\x20gas\x20storage\x20fees).','evidence':'operation='+a['operation_type'],'auto_fixable':![]};}},R_P_5_02={'id':'R-PASS-14','category':'logic','trigger':'Depended\x20Guard\x20cannot\x20have\x20its\x20own\x20dependencies\x20—\x20restricts\x20complex\x20verification\x20logic','check':a=>{if(!a['has_transitive_relies'])return null;return{'id':'R-PASS-14','level':'LOW','category':'logic','title':'Depended\x20Guard\x20cannot\x20have\x20its\x20own\x20dependencies\x20—\x20restricts\x20complex\x20verification\x20logic','description':'Passport\x27s\x20relies\x20mechanism\x20forbids\x20transitive\x20dependencies:\x20a\x20relied-upon\x20Guard\x20cannot\x20have\x20its\x20own\x20relies.\x20This\x20means\x20\x27A\x20depends\x20on\x20B,\x20B\x20depends\x20on\x20C\x27\x20chain\x20verification\x20cannot\x20be\x20modeled.\x20Complex\x20verification\x20logic\x20must\x20be\x20flattened\x20to\x20single-layer\x20dependencies\x20or\x20split\x20into\x20multiple\x20Passports.','affected_stakeholders':['creator','guard_owner'],'scenario':'Designer\x20attempts\x20to\x20model\x20transitive\x20Guard\x20dependencies','mitigation':'Accept\x20the\x20design\x20constraint.\x20For\x20chain\x20verification,\x20flatten\x20all\x20dependency\x20Guards\x20into\x20a\x20single-layer\x20AND\x20dependency,\x20or\x20use\x20Machine\x20workflows\x20to\x20model\x20multi-stage\x20verification.','evidence':'has_transitive_relies='+a['has_transitive_relies'],'auto_fixable':![]};}},R_P_5_03={'id':'R-PASS-15','category':'operational','trigger':'verify_guard\x20is\x20a\x20native\x20function\x20—\x20verification\x20logic\x20is\x20opaque','check':a=>{if(a['operation_type']!=='verify')return null;return{'id':'R-PASS-15','level':'INFO','category':'operational','title':'verify_guard\x20is\x20a\x20native\x20function\x20—\x20verification\x20logic\x20is\x20opaque','description':'guard::verify_guard(passport,\x20guard,\x20submission,\x20impack)\x20is\x20a\x20native\x20function;\x20its\x20internal\x20implementation\x20is\x20not\x20visible\x20in\x20Move\x20source\x20code.\x20The\x20verification\x20logic\x20(how\x20submission\x20is\x20parsed,\x20how\x20Guard\x20table\x20is\x20matched,\x20how\x20result\x20is\x20returned)\x20is\x20implemented\x20by\x20the\x20Wow\x20runtime.\x20Developers\x20cannot\x20fully\x20understand\x20verification\x20details\x20by\x20reading\x20Move\x20source\x20code.','affected_stakeholders':['creator','guard_owner'],'scenario':'Developer\x20attempts\x20to\x20debug\x20verify()\x20failure','mitigation':'Document\x20native\x20behavior:\x20verify_guard\x20verifies\x20submission\x20item-by-item\x20per\x20Guard.table\x20config;\x20types\x20must\x20match.\x20Returns\x20false\x20on\x20failure\x20(does\x20not\x20abort).\x20To\x20debug,\x20test\x20each\x20Guard\x27s\x20submission\x20individually.','evidence':'guard::verify_guard\x20is\x20native','auto_fixable':![]};}},ALL_RULES=[R_P_1_01,R_P_1_02,R_P_1_03,R_P_2_01,R_P_2_02,R_P_2_03,R_P_3_01,R_P_3_02,R_P_3_03,R_P_4_01,R_P_4_02,R_P_4_03,R_P_5_01,R_P_5_02,R_P_5_03];export const PASSPORT_RISK_VERSION='1.0.0';export function getAllRiskRules(){return[...ALL_RULES];}export function getRiskRulesCount(){return ALL_RULES['length'];}export function getRiskRulesByCategory(a){return ALL_RULES['filter'](b=>b['category']===a);}export function assessPassportRisks(a){const b=[];for(const j of ALL_RULES){const k=j['check'](a);if(k)b['push'](k);}const c={'CRITICAL':0x4,'HIGH':0x3,'MEDIUM':0x2,'LOW':0x1,'INFO':0x0},d=b['length']===0x0?'LOW':b['reduce']((l,m)=>c[m['level']]>c[l]?m['level']:l,'INFO'),e={},f={};for(const l of b){e[l['category']]=(e[l['category']]??0x0)+0x1,f[l['level']]=(f[l['level']]??0x0)+0x1;}const g={};for(const m of b){for(const n of m['affected_stakeholders']){if(!g[n])g[n]=[];g[n]['push'](m['id']+':\x20'+m['mitigation']);}}const h=b['filter'](o=>o['level']==='CRITICAL'&&!o['resolved']),i=b['filter'](o=>(o['level']==='CRITICAL'||o['level']==='HIGH')&&!o['resolved']);return{'summary':'Assessed\x20'+b['length']+'\x20risk(s)\x20across\x20'+Object['keys'](e)['length']+'\x20categories','risks':b,'overall_risk':d,'risks_by_category':e,'risks_by_level':f,'stakeholder_advice':g,'needs_human_review':i['length']>0x0,'blocks_publish':h['length']>0x0};}export{PASSPORT_ERROR_CODES};
@@ -1,68 +0,0 @@
1
- import type { ObjectPassport } from "./passport-confirm.js";
2
- export interface SemanticToSchemaRule {
3
- id: string;
4
- pattern_name: string;
5
- semantic_intent: string;
6
- match_keywords: string[];
7
- schema_fields: string[];
8
- example_json: object;
9
- reverse_explanation: string;
10
- }
11
- export interface SchemaToSemanticRule {
12
- element_type: "field" | "op" | "impack" | "relies_logic" | "lifecycle";
13
- type_name: string;
14
- semantic_explanation: string;
15
- constraints?: string[];
16
- }
17
- export interface PassportConstraintRule {
18
- id: string;
19
- category: "structural" | "lifecycle" | "logic" | "operational" | "cross_object";
20
- rule: string;
21
- applies_to: string[];
22
- }
23
- export declare const SEMANTIC_TO_SCHEMA_RULES: SemanticToSchemaRule[];
24
- export declare const SCHEMA_TO_SEMANTIC_RULES: SchemaToSemanticRule[];
25
- export declare const PASSPORT_CONSTRAINT_RULES: PassportConstraintRule[];
26
- export declare const PASSPORT_TRANSLATION_VERSION = "1.0.0";
27
- export declare function matchSemanticPattern(userIntent: string): SemanticToSchemaRule[];
28
- export declare function explainPassport(passport: ObjectPassport): string;
29
- export interface PassportCallData {
30
- type?: "submission";
31
- guard?: {
32
- object: string;
33
- impack: boolean;
34
- }[];
35
- submission?: {
36
- guard: string;
37
- submission: {
38
- identifier: number;
39
- value: unknown;
40
- value_type: string;
41
- }[];
42
- }[];
43
- operation?: "verify" | "freezen" | "destroy" | "guard_clear" | "result_query" | "result_for_guard" | "result_for_permission" | "submission_get";
44
- guard_target?: string;
45
- identifier?: number;
46
- }
47
- export declare function passportJsonToSemantic(data: PassportCallData): string;
48
- export interface SemanticIntent {
49
- action: "create" | "verify" | "freeze" | "destroy" | "guard_clear" | "query_result" | "query_guard_result" | "query_impack_list" | "get_submission";
50
- guards?: {
51
- object: string;
52
- impack: boolean;
53
- submission?: {
54
- identifier: number;
55
- value: unknown;
56
- value_type: string;
57
- }[];
58
- }[];
59
- targetGuard?: string;
60
- targetIdentifier?: number;
61
- }
62
- export declare function semanticToPassportJson(intent: SemanticIntent): PassportCallData;
63
- export declare function explainField(fieldName: string): SchemaToSemanticRule | undefined;
64
- export declare function explainOp(opName: string): SchemaToSemanticRule | undefined;
65
- export declare function explainImpack(impackValue: boolean): SchemaToSemanticRule | undefined;
66
- export declare function explainReliesLogic(logicAnd: boolean): SchemaToSemanticRule | undefined;
67
- export declare function getConstraintsByCategory(category: PassportConstraintRule["category"]): PassportConstraintRule[];
68
- export declare function explainError(code: number): string;
@@ -1 +0,0 @@
1
- import{PASSPORT_ERROR_CODES,MAX_GUARD_COUNT_PASSPORT,MAX_SUBMISSION_SIZE_PASSPORT}from'./passport-ledger.js';export const SEMANTIC_TO_SCHEMA_RULES=[{'id':'P-PASS-01','pattern_name':'Create\x20Passport','semantic_intent':'Create\x20a\x20new\x20verification\x20carrier\x20object\x20bound\x20to\x20the\x20current\x20transaction','match_keywords':['create','new','passport','instantiate'],'schema_fields':['(SubmissionCall)'],'example_json':{'type':'submission','guard':[],'submission':[]},'reverse_explanation':'Passport\x20created\x20via\x20passport::new_v2(clock,\x20object_linker_tx,\x20ctx).\x20tx_hash\x20bound\x20to\x20tx_context::digest(ctx).\x20Registers\x20the\x20creator\x20(tx\x20sender)\x20into\x20ObjectLinkerTx\x20so\x20the\x20passport\x20can\x20be\x20queried\x20by\x20the\x20creator\x20address.\x20No\x20Guard\x20added\x20yet.'},{'id':'P-PASS-02','pattern_name':'Add\x20impack\x20Guard','semantic_intent':'Add\x20a\x20Guard\x20that\x20affects\x20the\x20final\x20verification\x20result\x20(impack=true)','match_keywords':['impack','affect','decisive','critical\x20guard'],'schema_fields':['guard[].object','guard[].impack=true'],'example_json':{'guard':[{'object':'kyc_guard','impack':!![]}],'submission':[{'guard':'kyc_guard','submission':[{'identifier':0x0,'value':'0x1234...','value_type':'address'}]}]},'reverse_explanation':'guard[].impack=true\x20marks\x20this\x20Guard\x20as\x20affecting\x20final\x20result.\x20At\x20least\x201\x20impack\x20Guard\x20required\x20(else\x20E_IMPACK_GUARD_NOT_FOUND).\x20Failure\x20aborts\x20overall\x20result\x20to\x20false.'},{'id':'P-PASS-03','pattern_name':'Add\x20non-impack\x20Guard','semantic_intent':'Add\x20a\x20Guard\x20that\x20only\x20records\x20per-Guard\x20result\x20(impack=false)','match_keywords':['non-impack','record','audit','log'],'schema_fields':['guard[].object','guard[].impack=false'],'example_json':{'guard':[{'object':'audit_log_guard','impack':![]}],'submission':[]},'reverse_explanation':'guard[].impack=false\x20marks\x20this\x20Guard\x20as\x20audit-only.\x20Its\x20result\x20is\x20recorded\x20but\x20does\x20NOT\x20affect\x20final\x20result.\x20Useful\x20for\x20logging\x20/\x20secondary\x20checks.'},{'id':'P-PASS-04','pattern_name':'Add\x20Guard\x20with\x20relies\x20dependency','semantic_intent':'Add\x20a\x20Guard\x20that\x20depends\x20on\x20other\x20Guards\x20(AND/OR\x20logic)','match_keywords':['relies','depend','dependency','and','or'],'schema_fields':['guard[].object','guard[].impack','(relies\x20read\x20from\x20Guard\x20object)'],'example_json':{'guard':[{'object':'guard_a','impack':!![]},{'object':'guard_b','impack':!![]}],'submission':[]},'reverse_explanation':'relies\x20is\x20read\x20from\x20guard::relies(guard)\x20—\x20NOT\x20set\x20in\x20Passport\x20JSON.\x20Must\x20add\x20relied\x20Guards\x20first\x20(E_RELIES_GUARD_NOT_ADDED).\x20relies_logic_and=true=AND,\x20false=OR.\x20No\x20transitive\x20dependencies\x20allowed.'},{'id':'P-PASS-05','pattern_name':'Verify\x20Passport\x20(one-time)','semantic_intent':'Trigger\x20one-time\x20verification\x20of\x20all\x20Guards;\x20result\x20is\x20immutable\x20after\x20this\x20call','match_keywords':['verify','validation','submit'],'schema_fields':['(verify\x20operation)'],'example_json':{'operation':'verify'},'reverse_explanation':'passport::verify(self,\x20ctx).\x20One-time\x20—\x20has_verified\x20set\x20to\x20true.\x20Computes\x20per-Guard\x20result\x20via\x20relies\x20logic,\x20then\x20impack\x20Guards\x20decide\x20final\x20result.\x20Aborts\x20E_HAS_VERIFIED\x20if\x20called\x20twice.'},{'id':'P-PASS-06','pattern_name':'Freeze\x20Passport\x20(permanent)','semantic_intent':'Permanently\x20freeze\x20the\x20Passport\x20as\x20immutable\x20(cannot\x20be\x20destroyed\x20after)','match_keywords':['freeze','freezen','permanent'],'schema_fields':['(freezen\x20operation)'],'example_json':{'operation':'freezen'},'reverse_explanation':'passport::freezen(self)\x20calls\x20transfer::freeze_object(self).\x20Passport\x20becomes\x20immutable\x20and\x20publicly\x20readable.\x20Cannot\x20be\x20destroyed\x20after\x20freezing.\x20SDK\x20exports\x20as\x20`freeze`\x20(correct\x20spelling).'},{'id':'P-PASS-07','pattern_name':'Query\x20result','semantic_intent':'Get\x20the\x20final\x20verification\x20result\x20(requires\x20has_verified=true\x20+\x20tx_hash\x20match)','match_keywords':['result','query','outcome'],'schema_fields':['(result\x20query)'],'example_json':{'operation':'result_query'},'reverse_explanation':'passport::result(self,\x20ctx)\x20:\x20bool.\x20Aborts\x20E_NOT_VERIFIED\x20(5)\x20if\x20not\x20yet\x20verified;\x20E_TX_NOT_MATCH\x20(8)\x20if\x20called\x20from\x20a\x20different\x20transaction.\x20Must\x20be\x20called\x20in\x20the\x20same\x20tx\x20as\x20verify().'},{'id':'P-PASS-08','pattern_name':'Query\x20specific\x20Guard\x20result\x20(result_for_guard)','semantic_intent':'Hard-verify\x20that\x20a\x20specific\x20impack\x20Guard\x20passed\x20(aborts\x20E_VERIFY_FAILED\x20if\x20not)','match_keywords':['result_for_guard','hard-verify','specific\x20guard'],'schema_fields':['(result_for_guard\x20query)'],'example_json':{'operation':'result_for_guard','guard':'kyc_guard'},'reverse_explanation':'passport::result_for_guard(self,\x20guard,\x20ctx).\x20Aborts\x20E_NOT_IMPACK_GUARD\x20(6)\x20if\x20guard\x20is\x20not\x20impack;\x20E_VERIFY_FAILED\x20(7)\x20if\x20overall\x20result=false.\x20Used\x20by\x20consumers\x20to\x20enforce\x20specific\x20Guard\x20checks.'},{'id':'P-PASS-09','pattern_name':'Query\x20impack\x20Guard\x20list\x20(result_for_permission)','semantic_intent':'Get\x20the\x20list\x20of\x20impack\x20Guard\x20addresses\x20(lazy-filled\x20on\x20first\x20call)','match_keywords':['result_for_permission','impack\x20list','impack\x20addresses'],'schema_fields':['(result_for_permission\x20query)'],'example_json':{'operation':'result_for_permission'},'reverse_explanation':'passport::result_for_permission(self,\x20ctx)\x20:\x20vector<address>.\x20Lazy-fills\x20self.impack\x20on\x20first\x20call.\x20Aborts\x20E_VERIFY_FAILED\x20(7)\x20if\x20overall\x20result=false.\x20Used\x20by\x20Permission/Allocation\x20to\x20get\x20authorized\x20Guard\x20list.'},{'id':'P-PASS-10','pattern_name':'Get\x20submission\x20value','semantic_intent':'Read\x20the\x20submitted\x20value\x20for\x20a\x20(guard,\x20identifier)\x20pair','match_keywords':['submission_get','read','fetch\x20submission'],'schema_fields':['(submission_get\x20query)'],'example_json':{'operation':'submission_get','guard':'voting_guard','identifier':0x0},'reverse_explanation':'passport::submission_get(self,\x20guard,\x20identifier)\x20:\x20vector<u8>.\x20Read-only\x20—\x20no\x20tx_hash\x20check.\x20Returns\x20the\x20BCS-encoded\x20value.\x20Aborts\x20E_SUBMISSION_NOT_FOUND\x20(10)\x20if\x20no\x20entry\x20exists.'},{'id':'P-PASS-11','pattern_name':'Destroy\x20Passport','semantic_intent':'Permanently\x20delete\x20the\x20Passport\x20to\x20release\x20storage\x20(must\x20be\x20before\x20freeze)','match_keywords':['destroy','delete','remove'],'schema_fields':['(destroy\x20operation)'],'example_json':{'operation':'destroy'},'reverse_explanation':'passport::destroy(self)\x20calls\x20object::delete(id).\x20Must\x20be\x20called\x20BEFORE\x20freeze\x20(frozen\x20objects\x20are\x20immutable,\x20cannot\x20be\x20destroyed).\x20Move\x20ownership\x20protects:\x20only\x20signer\x20holding\x20the\x20object\x20can\x20call.'},{'id':'P-PASS-12','pattern_name':'Clear\x20all\x20Guards\x20(pre-verify\x20only)','semantic_intent':'Remove\x20all\x20Guards\x20from\x20Passport\x20(only\x20allowed\x20before\x20verify)','match_keywords':['guard_clear','clear','reset'],'schema_fields':['(guard_clear\x20operation)'],'example_json':{'operation':'guard_clear'},'reverse_explanation':'passport::guard_clear(self,\x20ctx).\x20Aborts\x20E_HAS_VERIFIED\x20(4)\x20if\x20already\x20verified;\x20E_DIGEST_NOT_MATCH\x20(11)\x20if\x20tx_hash\x20mismatch.\x20Useful\x20for\x20resetting\x20configuration\x20before\x20verify.'}];export const SCHEMA_TO_SEMANTIC_RULES=[{'element_type':'field','type_name':'object','semantic_explanation':'Passport\x20object\x20reference\x20(address).\x20For\x20create,\x20no\x20object\x20yet;\x20for\x20operate,\x20the\x20existing\x20Passport\x20address.'},{'element_type':'field','type_name':'guard','semantic_explanation':'Array\x20of\x20{object,\x20impack}.\x20Each\x20entry\x20references\x20a\x20Guard\x20object\x20and\x20marks\x20whether\x20it\x20affects\x20final\x20result.\x20Count\x20≤\x20MAX_GUARD_COUNT_PASSPORT=20.'},{'element_type':'field','type_name':'guard[].object','semantic_explanation':'Guard\x20object\x20address.\x20Must\x20be\x20unique\x20within\x20the\x20Passport\x20(duplicate\x20addresses\x20overwrite\x20existing\x20config).\x20Resolved\x20via\x20LocalMark\x20before\x20on-chain\x20call.'},{'element_type':'field','type_name':'guard[].impack','semantic_explanation':'Boolean.\x20true=affects\x20final\x20result\x20(at\x20least\x201\x20required);\x20false=audit-only.\x20impack\x20Guards\x20failing\x20→\x20overall\x20result=false\x20immediately.'},{'element_type':'field','type_name':'submission','semantic_explanation':'Array\x20of\x20{guard,\x20submission[]}.\x20Each\x20submission\x20is\x20{identifier,\x20value,\x20value_type}.\x20identifier\x20is\x20u8\x20(0-255)\x20matching\x20Guard.table[].identifier.'},{'element_type':'field','type_name':'submission[].identifier','semantic_explanation':'u8\x20(0-255).\x20References\x20Guard.table[identifier].\x20Must\x20be\x20marked\x20b_submission=true\x20in\x20the\x20Guard.'},{'element_type':'field','type_name':'submission[].value','semantic_explanation':'Value\x20matching\x20submission[].value_type.\x20BCS-serialized\x20on-chain;\x20total\x20serialized\x20size\x20per\x20submission\x20≤\x20MAX_SUBMISSION_SIZE_PASSPORT=256\x20bytes.'},{'element_type':'field','type_name':'submission[].value_type','semantic_explanation':'Type\x20string:\x20\x27address\x27\x20|\x20\x27u64\x27\x20|\x20\x27bool\x27\x20|\x20\x27string\x27\x20|\x20\x27vector<u8>\x27\x20etc.\x20Must\x20match\x20Guard.table[identifier].value_type.'},{'element_type':'op','type_name':'create\x20(new)','semantic_explanation':'passport::new_v2(clock,\x20object_linker_tx,\x20ctx)\x20→\x20Passport.\x20Binds\x20tx_hash\x20=\x20tx_context::digest(ctx).\x20signer\x20=\x20tx_context::sender(ctx).\x20time\x20=\x20clock::timestamp_ms(clock).\x20Registers\x20creator\x20(tx\x20sender)\x20into\x20ObjectLinkerTx\x20for\x20creator\x20reverse\x20lookup.'},{'element_type':'op','type_name':'guard_add','semantic_explanation':'passport::guard_add(self,\x20guard,\x20identifiers,\x20values,\x20impack,\x20ctx).\x20Pre-verify\x20only.\x20Reads\x20guard::relies(guard)\x20for\x20dependency\x20info.\x20Aborts\x20E_RELIES_GUARD_NOT_ADDED\x20if\x20relies\x20missing.'},{'element_type':'op','type_name':'verify','semantic_explanation':'passport::verify(self,\x20ctx)\x20:\x20bool.\x20One-time.\x20Computes\x20per-Guard\x20result\x20via\x20relies,\x20then\x20impack\x20Guards\x20decide\x20final\x20result.\x20Sets\x20has_verified=true.'},{'element_type':'op','type_name':'freezen','semantic_explanation':'passport::freezen(self).\x20Permanent\x20freeze\x20(transfer::freeze_object).\x20Cannot\x20destroy\x20after.\x20Historical\x20typo:\x20Move\x20function\x20name\x20is\x20\x27freezen\x27\x20(not\x20\x27freeze\x27),\x20retained\x20for\x20compatibility.\x20SDK\x20exports\x20as\x20`freeze`.'},{'element_type':'op','type_name':'destroy','semantic_explanation':'passport::destroy(self).\x20Releases\x20storage\x20(object::delete).\x20Must\x20be\x20before\x20freeze.\x20Move\x20ownership\x20protects:\x20only\x20object\x20holder\x20can\x20call.'},{'element_type':'impack','type_name':'impack=true','semantic_explanation':'Guard\x20affects\x20final\x20result.\x20At\x20least\x201\x20required\x20(E_IMPACK_GUARD_NOT_FOUND).\x20Failure\x20→\x20overall\x20result=false,\x20immediate\x20return.'},{'element_type':'impack','type_name':'impack=false','semantic_explanation':'Guard\x20is\x20audit-only.\x20Per-Guard\x20result\x20is\x20recorded\x20but\x20does\x20NOT\x20affect\x20final\x20result.\x20Useful\x20for\x20logging\x20/\x20secondary\x20checks.'},{'element_type':'relies_logic','type_name':'AND\x20(relies_logic_and=true)','semantic_explanation':'All\x20relied\x20Guards\x20must\x20pass.\x20Short-circuits\x20on\x20first\x20false.\x20Initial\x20value\x20=\x20true;\x20result\x20=\x20true\x20AND\x20rely1.result\x20AND\x20rely2.result\x20...'},{'element_type':'relies_logic','type_name':'OR\x20(relies_logic_and=false)','semantic_explanation':'Any\x20relied\x20Guard\x20may\x20pass.\x20Short-circuits\x20on\x20first\x20true.\x20Initial\x20value\x20=\x20false;\x20result\x20=\x20false\x20OR\x20rely1.result\x20OR\x20rely2.result\x20...'},{'element_type':'lifecycle','type_name':'new\x20→\x20guard_add\x20→\x20verify\x20→\x20use\x20→\x20freeze/destroy','semantic_explanation':'5-stage\x20lifecycle.\x20verify\x20is\x20one-time.\x20freeze\x20and\x20destroy\x20are\x20mutually\x20exclusive\x20terminal\x20states.\x20All\x20write\x20ops\x20(guard_add/verify)\x20require\x20tx_hash\x20match.'}];export const PASSPORT_CONSTRAINT_RULES=[{'id':'T-PASS-01','category':'structural','rule':'Passport\x20is\x20created\x20via\x20the\x20SubmissionCall\x20mechanism,\x20not\x20the\x20standard\x20Call\x20pattern\x20(schema/call/base.ts\x20SubmissionCallSchema)','applies_to':['SubmissionCall','passport::new_v2']},{'id':'T-PASS-02','category':'logic','rule':'Guards\x20with\x20guard[].impack=true\x20decide\x20the\x20final\x20result;\x20at\x20least\x201\x20impack\x20Guard\x20is\x20required\x20(E_IMPACK_GUARD_NOT_FOUND=9)','applies_to':['guard[].impack','verify\x20operation']},{'id':'T-PASS-03','category':'logic','rule':'Depended-on\x20Guards\x20must\x20be\x20added\x20first\x20(topological\x20order);\x20guard_add\x20checks\x20relies,\x20missing\x20relies\x20aborts\x20E_RELIES_GUARD_NOT_ADDED=2','applies_to':['guard_add\x20operation','guard::relies(guard)']},{'id':'T-PASS-04','category':'lifecycle','rule':'After\x20verify,\x20config\x20cannot\x20be\x20modified\x20(has_verified\x20is\x20one-time);\x20second\x20calls\x20to\x20guard_add/guard_clear/verify\x20abort\x20E_HAS_VERIFIED=4','applies_to':['verify\x20operation','has_verified\x20field']},{'id':'T-PASS-05','category':'lifecycle','rule':'tx_hash\x20binding\x20ensures\x20Passport\x20cannot\x20be\x20reused\x20across\x20transactions;\x20write\x20functions\x20and\x20result\x20queries\x20check\x20tx_hash\x20match','applies_to':['tx_hash\x20field','guard_add','verify','result']},{'id':'T-PASS-06','category':'structural','rule':'submission\x20data\x20must\x20match\x20Guard\x20identifier\x20type;\x20BCS\x20serialization\x20≤\x20MAX_SUBMISSION_SIZE_PASSPORT=256\x20bytes','applies_to':['submission[].value_type','submission[].identifier']},{'id':'T-PASS-07','category':'lifecycle','rule':'result\x20query\x20must\x20be\x20in\x20the\x20same\x20transaction\x20(tx_hash\x20matches\x20current\x20transaction);\x20otherwise\x20E_TX_NOT_MATCH=8','applies_to':['result\x20operation','result_for_guard','result_for_permission']},{'id':'T-PASS-08','category':'lifecycle','rule':'After\x20freeze,\x20Passport\x20is\x20permanently\x20retained\x20(cannot\x20be\x20destroyed);\x20freezen\x20calls\x20transfer::freeze_object','applies_to':['freezen\x20operation','destroy\x20operation']},{'id':'T-PASS-09','category':'lifecycle','rule':'destroy\x20must\x20happen\x20before\x20freeze\x20(destroyable\x20when\x20not\x20frozen);\x20after\x20freezing\x20the\x20object\x20becomes\x20immutable\x20and\x20cannot\x20be\x20received\x20by\x20value','applies_to':['destroy\x20operation','freezen\x20operation']},{'id':'T-PASS-10','category':'operational','rule':'explainPassport\x20must\x20translate\x20impack\x20and\x20result\x20status;\x20use\x20passport.object\x20(not\x20passport.id)\x20as\x20the\x20object\x20identifier','applies_to':['explainPassport\x20function','ObjectPassportSchema']},{'id':'T-PASS-11','category':'logic','rule':'relies\x20logic\x20(AND/OR)\x20must\x20be\x20reflected\x20in\x20explainPassport;\x20relies_logic_and=true=AND,\x20false=OR','applies_to':['explainPassport\x20function','guard::relies(guard)']},{'id':'T-PASS-12','category':'structural','rule':'Guard\x20count\x20≤\x20MAX_GUARD_COUNT_PASSPORT=20;\x20submission\x20serialized\x20size\x20≤\x20MAX_SUBMISSION_SIZE_PASSPORT=256\x20bytes','applies_to':['guard\x20array','submission\x20array']}];export const PASSPORT_TRANSLATION_VERSION='1.0.0';export function matchSemanticPattern(a){const b=a['toLowerCase']();return SEMANTIC_TO_SCHEMA_RULES['filter'](c=>c['match_keywords']['some'](d=>b['includes'](d['toLowerCase']())));}export function explainPassport(a){const b=[];b['push']('Passport\x20'+a['object']),b['push']('\x20\x20Signer:\x20'+a['signer']),b['push']('\x20\x20Time:\x20'+new Date(a['time'])['toISOString']()),b['push']('\x20\x20Verified:\x20'+a['has_verified']);a['has_verified']&&b['push']('\x20\x20Result:\x20'+(a['result']?'PASS\x20✅':'FAIL\x20❌'));b['push']('\x20\x20Guards:\x20'+a['info']['length']+'/'+MAX_GUARD_COUNT_PASSPORT);if(a['info']['length']>0x0){b['push']('\x20\x20Guard\x20details:');for(const c of a['info']){const d=c['impack']?'IMPACK':'non-impack',e=c['result']?'PASS':'FAIL';b['push']('\x20\x20\x20\x20-\x20Guard\x20'+c['guard']+':\x20'+e+'\x20('+d+')');}}return a['impack_guard']&&a['impack_guard']['length']>0x0&&b['push']('\x20\x20impack_guard\x20list\x20(lazy-filled):\x20'+a['impack_guard']['join'](',\x20')),a['tx_hash']&&b['push']('\x20\x20tx_hash:\x20'+a['tx_hash']),b['join']('\x0a');}export function passportJsonToSemantic(a){const b=[];if(a['type']==='submission'||a['guard']&&a['guard']['length']>0x0){b['push']('Operation:\x20CREATE\x20Passport\x20via\x20SubmissionCall');if(a['guard']&&a['guard']['length']>0x0){const c=a['guard']['filter'](e=>e['impack'])['length'],d=a['guard']['length']-c;b['push']('-\x20Guards:\x20'+a['guard']['length']+'/'+MAX_GUARD_COUNT_PASSPORT+'\x20('+c+'\x20impack,\x20'+d+'\x20non-impack)'),c===0x0&&b['push']('\x20\x20⚠️\x20No\x20impack\x20Guard\x20—\x20verify\x20will\x20abort\x20E_IMPACK_GUARD_NOT_FOUND\x20(9)'),a['guard']['forEach']((e,f)=>{const h=e['impack']?'IMPACK\x20(affects\x20result)':'non-impack\x20(audit-only)';b['push']('\x20\x20['+f+']\x20'+e['object']+'\x20—\x20'+h);});}if(a['submission']&&a['submission']['length']>0x0){b['push']('-\x20Submissions:\x20'+a['submission']['length']+'\x20guard(s)\x20with\x20submission\x20data');for(const e of a['submission']){const f=e['submission']['reduce']((h,i)=>h+estimateSubmissionSize(i['value_type']),0x0),g=f>MAX_SUBMISSION_SIZE_PASSPORT?'\x20⚠️\x20'+f+'\x20>\x20'+MAX_SUBMISSION_SIZE_PASSPORT+'\x20bytes\x20(E_SUBMISSION_SIZE_EXCEEDED)':'';b['push']('\x20\x20-\x20guard='+e['guard']+':\x20'+e['submission']['length']+'\x20item(s),\x20estimated\x20size='+f+'\x20bytes'+g);}}}else{if(a['operation']){b['push']('Operation:\x20'+a['operation']['toUpperCase']());switch(a['operation']){case'verify':b['push']('-\x20One-time\x20verification;\x20sets\x20has_verified=true,\x20computes\x20final\x20result'),b['push']('-\x20Aborts\x20E_HAS_VERIFIED\x20(4)\x20if\x20already\x20verified');break;case'freezen':b['push']('-\x20Permanent\x20freeze\x20(transfer::freeze_object)'),b['push']('-\x20Cannot\x20be\x20destroyed\x20after\x20freezing');break;case'destroy':b['push']('-\x20Permanent\x20deletion\x20(object::delete)'),b['push']('-\x20Must\x20be\x20called\x20BEFORE\x20freeze');break;case'guard_clear':b['push']('-\x20Removes\x20all\x20Guards\x20from\x20Passport'),b['push']('-\x20Only\x20allowed\x20before\x20verify\x20(E_HAS_VERIFIED\x20if\x20verified)');break;case'result_query':b['push']('-\x20Returns\x20final\x20verification\x20result\x20(bool)'),b['push']('-\x20Requires\x20has_verified=true\x20(E_NOT_VERIFIED)\x20and\x20tx_hash\x20match\x20(E_TX_NOT_MATCH)');break;case'result_for_guard':b['push']('-\x20Hard-verifies\x20Guard\x20'+a['guard_target']+'\x20is\x20impack\x20and\x20passed'),b['push']('-\x20Aborts\x20E_NOT_IMPACK_GUARD\x20(6)\x20if\x20not\x20impack;\x20E_VERIFY_FAILED\x20(7)\x20if\x20result=false');break;case'result_for_permission':b['push']('-\x20Returns\x20impack\x20Guard\x20address\x20list\x20(lazy-filled)'),b['push']('-\x20Aborts\x20E_VERIFY_FAILED\x20(7)\x20if\x20overall\x20result=false');break;case'submission_get':b['push']('-\x20Reads\x20submission\x20value\x20for\x20(guard='+a['guard_target']+',\x20identifier='+a['identifier']+')'),b['push']('-\x20Read-only,\x20no\x20tx_hash\x20check'),b['push']('-\x20Aborts\x20E_SUBMISSION_NOT_FOUND\x20(10)\x20if\x20no\x20entry');break;}}else b['push']('⚠️\x20Cannot\x20determine\x20operation:\x20provide\x20\x27type:\x20submission\x27\x20with\x20guard[],\x20or\x20\x27operation\x27\x20field');}return b['join']('\x0a');}export function semanticToPassportJson(a){switch(a['action']){case'create':{if(!a['guards']||a['guards']['length']===0x0)throw new Error('Create\x20action\x20requires\x20at\x20least\x201\x20Guard\x20in\x20intent.guards');if(a['guards']['length']>MAX_GUARD_COUNT_PASSPORT)throw new Error('Guard\x20count\x20'+a['guards']['length']+'\x20exceeds\x20MAX_GUARD_COUNT_PASSPORT='+MAX_GUARD_COUNT_PASSPORT);const b=a['guards']['some'](c=>c['impack']);if(!b)throw new Error('At\x20least\x201\x20Guard\x20must\x20have\x20impack=true\x20(else\x20verify\x20aborts\x20E_IMPACK_GUARD_NOT_FOUND=9)');return{'type':'submission','guard':a['guards']['map'](c=>({'object':c['object'],'impack':c['impack']})),'submission':a['guards']['filter'](c=>c['submission']&&c['submission']['length']>0x0)['map'](c=>({'guard':c['object'],'submission':c['submission']}))};}case'verify':return{'operation':'verify'};case'freeze':return{'operation':'freezen'};case'destroy':return{'operation':'destroy'};case'guard_clear':return{'operation':'guard_clear'};case'query_result':return{'operation':'result_query'};case'query_guard_result':if(!a['targetGuard'])throw new Error('query_guard_result\x20requires\x20intent.targetGuard');return{'operation':'result_for_guard','guard_target':a['targetGuard']};case'query_impack_list':return{'operation':'result_for_permission'};case'get_submission':if(!a['targetGuard'])throw new Error('get_submission\x20requires\x20intent.targetGuard');if(a['targetIdentifier']===undefined)throw new Error('get_submission\x20requires\x20intent.targetIdentifier');return{'operation':'submission_get','guard_target':a['targetGuard'],'identifier':a['targetIdentifier']};}}export function explainField(a){return SCHEMA_TO_SEMANTIC_RULES['find'](b=>b['element_type']==='field'&&b['type_name']===a);}export function explainOp(a){return SCHEMA_TO_SEMANTIC_RULES['find'](b=>b['element_type']==='op'&&b['type_name']===a);}export function explainImpack(a){return SCHEMA_TO_SEMANTIC_RULES['find'](b=>b['element_type']==='impack'&&b['type_name']==='impack='+a);}export function explainReliesLogic(a){const b=a?'AND\x20(relies_logic_and=true)':'OR\x20(relies_logic_and=false)';return SCHEMA_TO_SEMANTIC_RULES['find'](c=>c['element_type']==='relies_logic'&&c['type_name']===b);}export function getConstraintsByCategory(a){return PASSPORT_CONSTRAINT_RULES['filter'](b=>b['category']===a);}export function explainError(a){const b={[PASSPORT_ERROR_CODES['E_GUARD_COUNT_EXCEEDED']]:'Guard\x20count\x20exceeds\x20MAX_GUARD_COUNT_PASSPORT\x20(20)\x20—\x20remove\x20non-essential\x20Guards\x20or\x20merge\x20similar\x20ones',[PASSPORT_ERROR_CODES['E_RELIES_GUARD_NOT_ADDED']]:'Relied\x20Guard\x20not\x20yet\x20added\x20—\x20add\x20relied\x20Guards\x20in\x20topological\x20order\x20before\x20adding\x20the\x20dependent\x20Guard',[PASSPORT_ERROR_CODES['E_SUBMISSION_SIZE_EXCEEDED']]:'Submission\x20serialized\x20size\x20exceeds\x20MAX_SUBMISSION_SIZE_PASSPORT\x20(256\x20bytes)\x20—\x20use\x20Repository\x20reference\x20for\x20large\x20data',[PASSPORT_ERROR_CODES['E_HAS_VERIFIED']]:'Passport\x20already\x20verified\x20—\x20verify\x20is\x20one-time;\x20create\x20a\x20new\x20Passport\x20to\x20re-verify',[PASSPORT_ERROR_CODES['E_NOT_VERIFIED']]:'result()\x20called\x20before\x20verify()\x20—\x20call\x20verify()\x20first\x20in\x20the\x20same\x20transaction',[PASSPORT_ERROR_CODES['E_NOT_IMPACK_GUARD']]:'result_for_guard\x20called\x20on\x20non-impack\x20Guard\x20—\x20only\x20impack\x20Guards\x20can\x20be\x20hard-verified',[PASSPORT_ERROR_CODES['E_VERIFY_FAILED']]:'result_for_guard\x20/\x20result_for_permission\x20called\x20when\x20overall\x20result=false\x20—\x20fix\x20Guard\x20configuration\x20or\x20submission\x20data',[PASSPORT_ERROR_CODES['E_TX_NOT_MATCH']]:'result()\x20called\x20from\x20a\x20different\x20transaction\x20—\x20Passport\x20is\x20tx_hash-bound,\x20must\x20query\x20in\x20the\x20same\x20tx\x20as\x20verify()',[PASSPORT_ERROR_CODES['E_IMPACK_GUARD_NOT_FOUND']]:'verify()\x20found\x20no\x20impack\x20Guard\x20—\x20at\x20least\x201\x20Guard\x20must\x20have\x20impack=true',[PASSPORT_ERROR_CODES['E_SUBMISSION_NOT_FOUND']]:'submission_get\x20found\x20no\x20entry\x20for\x20(guard,\x20identifier)\x20—\x20check\x20Guard.table[identifier].b_submission=true',[PASSPORT_ERROR_CODES['E_DIGEST_NOT_MATCH']]:'guard_add\x20/\x20verify\x20/\x20guard_clear\x20called\x20from\x20a\x20different\x20transaction\x20—\x20Passport\x20is\x20tx_hash-bound'};return b[a]??'Unknown\x20Passport\x20error\x20code:\x20'+a;}function estimateSubmissionSize(a){switch(a){case'bool':return 0x1;case'u8':return 0x1;case'u64':return 0x8;case'address':return 0x20;case'string':return 0x20;case'vector<u8>':return 0x20;default:return 0x40;}}
@@ -1,26 +0,0 @@
1
- export declare const PAYMENT_CONFIRM_VERSION = "1.0.0";
2
- export type ConfirmSeverity = "block" | "warn" | "info";
3
- export interface PaymentConfirmItem {
4
- id: string;
5
- severity: ConfirmSeverity;
6
- title: string;
7
- description: string;
8
- passed: boolean;
9
- evidence?: string;
10
- fix_hint?: string;
11
- }
12
- export interface PaymentCreationCheckInput {
13
- recipient_count?: number;
14
- uses_unsafe_unwrap?: boolean;
15
- expects_mutation?: boolean;
16
- payment_info_variant?: "payment_info" | "payment_info2" | "payment_info_with_guard" | "payment_info2_with_guard";
17
- uses_scene_binding?: boolean;
18
- }
19
- export declare function preCheckPaymentCreation(input: PaymentCreationCheckInput): PaymentConfirmItem[];
20
- export declare function canCreatePayment(input: PaymentCreationCheckInput): {
21
- canCreate: boolean;
22
- blockers: PaymentConfirmItem[];
23
- warnings: PaymentConfirmItem[];
24
- info: PaymentConfirmItem[];
25
- };
26
- export declare function formatPaymentCreationSummary(input: PaymentCreationCheckInput): string;