@wowok/agent-mcp 2.7.7 → 2.7.10

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 (441) hide show
  1. package/README.md +2 -2
  2. package/dist/config/runtime.d.ts +1 -1
  3. package/dist/config/runtime.js +1 -1
  4. package/dist/customer/index.d.ts +3 -4
  5. package/dist/customer/index.js +1 -1
  6. package/dist/customer/info-puzzle.js +1 -1
  7. package/dist/customer/order-monitor.d.ts +0 -9
  8. package/dist/customer/order-monitor.js +1 -1
  9. package/dist/customer/order-strategy.d.ts +0 -19
  10. package/dist/customer/order-strategy.js +1 -1
  11. package/dist/customer/reminder-system.d.ts +0 -5
  12. package/dist/customer/reminder-system.js +1 -1
  13. package/dist/evaluation/game-strategy.js +1 -1
  14. package/dist/evaluation/injection.d.ts +6 -0
  15. package/dist/evaluation/injection.js +1 -0
  16. package/dist/evaluation/node-game.js +1 -1
  17. package/dist/examples/machine-multisig-threshold.json +1 -0
  18. package/dist/examples/rental-ziroom-machine-create.json +1 -2
  19. package/dist/examples/rental-ziroom-permission-create.json +1 -2
  20. package/dist/examples/rental-ziroom-service-create.json +1 -2
  21. package/dist/experience/experience-reuse.js +1 -1
  22. package/dist/experience/index.d.ts +2 -1
  23. package/dist/experience/index.js +1 -1
  24. package/dist/experience/persistence-config.d.ts +6 -0
  25. package/dist/experience/persistence-config.js +1 -0
  26. package/dist/experience/persistence.d.ts +21 -0
  27. package/dist/experience/persistence.js +1 -0
  28. package/dist/experience/realtime-feedback.js +1 -1
  29. package/dist/experience/user-profile.js +1 -1
  30. package/dist/extensions/business-modules.d.ts +1 -1
  31. package/dist/extensions/capability-manifest.d.ts +1 -1
  32. package/dist/extensions/types.d.ts +1 -1
  33. package/dist/goal/GoalClassifier.d.ts +17 -0
  34. package/dist/goal/GoalClassifier.js +1 -0
  35. package/dist/goal/GoalEngine.d.ts +120 -0
  36. package/dist/goal/GoalEngine.js +1 -0
  37. package/dist/goal/GoalStore.d.ts +27 -0
  38. package/dist/goal/GoalStore.js +1 -0
  39. package/dist/goal/plan-approval.d.ts +5 -0
  40. package/dist/goal/plan-approval.js +1 -0
  41. package/dist/goal/types.d.ts +76 -0
  42. package/dist/goal/types.js +1 -0
  43. package/dist/harness/index.d.ts +2 -7
  44. package/dist/harness/index.js +1 -1
  45. package/dist/harness/plan.d.ts +1 -1
  46. package/dist/harness/recover.js +1 -1
  47. package/dist/harness/types.d.ts +1 -36
  48. package/dist/harness/verify.js +1 -1
  49. package/dist/index.js +1 -1
  50. package/dist/intent/enrich.js +1 -1
  51. package/dist/intent/matcher.js +1 -1
  52. package/dist/intent/types.d.ts +1 -1
  53. package/dist/intent/types.js +1 -1
  54. package/dist/knowledge/account-marks.d.ts +35 -0
  55. package/dist/knowledge/account-marks.js +1 -0
  56. package/dist/knowledge/arbitration-ledger.js +1 -1
  57. package/dist/knowledge/audit-rules.d.ts +3 -1
  58. package/dist/knowledge/audit-rules.js +1 -1
  59. package/dist/knowledge/contract-invariants.d.ts +53 -0
  60. package/dist/knowledge/contract-invariants.js +1 -0
  61. package/dist/knowledge/dynamic-pricing.d.ts +0 -2
  62. package/dist/knowledge/dynamic-pricing.js +1 -1
  63. package/dist/knowledge/event-semantics.d.ts +20 -0
  64. package/dist/knowledge/event-semantics.js +1 -0
  65. package/dist/knowledge/examples-scanner-cli.js +1 -1
  66. package/dist/knowledge/examples-scanner.js +1 -1
  67. package/dist/knowledge/glossary.js +1 -1
  68. package/dist/knowledge/goal-completion.d.ts +19 -0
  69. package/dist/knowledge/goal-completion.js +1 -0
  70. package/dist/knowledge/guard-submission-prompt.js +1 -1
  71. package/dist/knowledge/guard-translation.js +1 -1
  72. package/dist/knowledge/immutability.d.ts +11 -0
  73. package/dist/knowledge/immutability.js +1 -0
  74. package/dist/knowledge/index.d.ts +13 -6
  75. package/dist/knowledge/index.js +1 -1
  76. package/dist/knowledge/industry-registry.js +1 -1
  77. package/dist/knowledge/intent-metrics.d.ts +1 -1
  78. package/dist/knowledge/jsonrpc-enum.d.ts +37 -0
  79. package/dist/knowledge/jsonrpc-enum.js +1 -0
  80. package/dist/knowledge/machine-confirm.js +1 -1
  81. package/dist/knowledge/machine-risk.js +1 -1
  82. package/dist/knowledge/machine-topology.d.ts +11 -0
  83. package/dist/knowledge/machine-topology.js +1 -1
  84. package/dist/knowledge/machine-translation.js +1 -1
  85. package/dist/knowledge/market-metrics.d.ts +11 -0
  86. package/dist/knowledge/market-metrics.js +1 -1
  87. package/dist/knowledge/mcp-schema-audit-cli.js +1 -1
  88. package/dist/knowledge/mcp-schema-audit.d.ts +1 -0
  89. package/dist/knowledge/mcp-schema-audit.js +1 -1
  90. package/dist/knowledge/messenger-guard-guidance.d.ts +17 -0
  91. package/dist/knowledge/messenger-guard-guidance.js +1 -0
  92. package/dist/knowledge/operation-dictionary.d.ts +18 -0
  93. package/dist/knowledge/operation-dictionary.js +1 -0
  94. package/dist/knowledge/passport-confirm.js +1 -1
  95. package/dist/knowledge/passport-puzzle.js +1 -1
  96. package/dist/knowledge/passport-translation.js +1 -1
  97. package/dist/knowledge/proof-risk.js +1 -1
  98. package/dist/knowledge/safety-rules.js +1 -1
  99. package/dist/knowledge/service-ledger.js +1 -1
  100. package/dist/knowledge/service-risk.js +1 -1
  101. package/dist/knowledge/service-translation.js +1 -1
  102. package/dist/knowledge/supply-chain.d.ts +24 -0
  103. package/dist/knowledge/supply-chain.js +1 -0
  104. package/dist/knowledge/template-registry.js +1 -1
  105. package/dist/knowledge/tools-reference.js +1 -1
  106. package/dist/knowledge/trust-metrics.d.ts +27 -2
  107. package/dist/knowledge/trust-metrics.js +1 -1
  108. package/dist/knowledge/workflow-guidance.d.ts +22 -0
  109. package/dist/knowledge/workflow-guidance.js +1 -1
  110. package/dist/knowledge/workspace-lists.d.ts +56 -0
  111. package/dist/knowledge/workspace-lists.js +1 -0
  112. package/dist/loop-engineering/context-collect.d.ts +1 -1
  113. package/dist/monitor/EventRouter.d.ts +10 -0
  114. package/dist/monitor/EventRouter.js +1 -0
  115. package/dist/monitor/EventStore.d.ts +98 -0
  116. package/dist/monitor/EventStore.js +1 -0
  117. package/dist/monitor/MonitorLoop.d.ts +79 -0
  118. package/dist/monitor/MonitorLoop.js +1 -0
  119. package/dist/monitor/ProblemBridge.d.ts +32 -0
  120. package/dist/monitor/ProblemBridge.js +1 -0
  121. package/dist/monitor/ScopeResolver.d.ts +59 -0
  122. package/dist/monitor/ScopeResolver.js +1 -0
  123. package/dist/monitor/SubscriptionStore.d.ts +13 -0
  124. package/dist/monitor/SubscriptionStore.js +1 -0
  125. package/dist/monitor/normalize.d.ts +8 -0
  126. package/dist/monitor/normalize.js +1 -0
  127. package/dist/monitor/types.d.ts +89 -0
  128. package/dist/monitor/types.js +1 -0
  129. package/dist/participation/radar-core.d.ts +0 -1
  130. package/dist/participation/radar-core.js +1 -1
  131. package/dist/persona/address-format.d.ts +6 -0
  132. package/dist/persona/address-format.js +1 -0
  133. package/dist/persona/analyzer.js +1 -1
  134. package/dist/persona/distill-goal.d.ts +20 -0
  135. package/dist/persona/distill-goal.js +1 -0
  136. package/dist/persona/index.d.ts +5 -0
  137. package/dist/persona/index.js +1 -1
  138. package/dist/persona/model.js +1 -1
  139. package/dist/persona/types.d.ts +1 -1
  140. package/dist/persona/types.js +1 -1
  141. package/dist/playbooks/service-build/business-puzzle.js +1 -0
  142. package/dist/{project → playbooks/service-build}/context-assembly.d.ts +9 -4
  143. package/dist/playbooks/service-build/context-assembly.js +1 -0
  144. package/dist/{project → playbooks/service-build}/game-theory.d.ts +1 -1
  145. package/dist/playbooks/service-build/index.d.ts +14 -0
  146. package/dist/playbooks/service-build/index.js +1 -0
  147. package/dist/{project → playbooks/service-build}/intent-analyzer.d.ts +1 -1
  148. package/dist/playbooks/service-build/intent-analyzer.js +1 -0
  149. package/dist/playbooks/service-build/machine-nodes.d.ts +25 -0
  150. package/dist/playbooks/service-build/machine-nodes.js +1 -0
  151. package/dist/playbooks/service-build/machine-panorama.d.ts +43 -0
  152. package/dist/playbooks/service-build/machine-panorama.js +1 -0
  153. package/dist/{project → playbooks/service-build}/merchant-guide.d.ts +1 -1
  154. package/dist/playbooks/service-build/merchant-guide.js +1 -0
  155. package/dist/{project → playbooks/service-build}/mode-actions.d.ts +2 -2
  156. package/dist/playbooks/service-build/mode-actions.js +1 -0
  157. package/dist/playbooks/service-build/namespace.d.ts +2 -0
  158. package/dist/playbooks/service-build/namespace.js +1 -0
  159. package/dist/playbooks/service-build/object-panorama.d.ts +178 -0
  160. package/dist/playbooks/service-build/object-panorama.js +1 -0
  161. package/dist/playbooks/service-build/object-type.d.ts +1 -0
  162. package/dist/playbooks/service-build/object-type.js +1 -0
  163. package/dist/{project → playbooks/service-build}/participation-radar.d.ts +4 -5
  164. package/dist/playbooks/service-build/participation-radar.js +1 -0
  165. package/dist/{project → playbooks/service-build}/pipeline-actions.d.ts +9 -9
  166. package/dist/playbooks/service-build/pipeline-actions.js +1 -0
  167. package/dist/playbooks/service-build/process.d.ts +6 -0
  168. package/dist/playbooks/service-build/process.js +1 -0
  169. package/dist/playbooks/service-build/risk-aggregator.js +1 -0
  170. package/dist/{project → playbooks/service-build}/semantic-graph.d.ts +2 -2
  171. package/dist/playbooks/service-build/service-panorama.d.ts +164 -0
  172. package/dist/playbooks/service-build/service-panorama.js +1 -0
  173. package/dist/review/arb.d.ts +6 -0
  174. package/dist/review/arb.js +1 -0
  175. package/dist/review/demand.d.ts +3 -0
  176. package/dist/review/demand.js +1 -0
  177. package/dist/review/index.d.ts +3 -0
  178. package/dist/review/index.js +1 -0
  179. package/dist/review/machine.d.ts +3 -0
  180. package/dist/review/machine.js +1 -0
  181. package/dist/review/order.d.ts +9 -0
  182. package/dist/review/order.js +1 -0
  183. package/dist/review/progress.d.ts +3 -0
  184. package/dist/review/progress.js +1 -0
  185. package/dist/review/repository.d.ts +3 -0
  186. package/dist/review/repository.js +1 -0
  187. package/dist/review/service.d.ts +5 -0
  188. package/dist/review/service.js +1 -0
  189. package/dist/review/types.d.ts +156 -0
  190. package/dist/review/types.js +1 -0
  191. package/dist/role/derivation.d.ts +19 -2
  192. package/dist/role/derivation.js +1 -1
  193. package/dist/role/index.d.ts +2 -2
  194. package/dist/role/index.js +1 -1
  195. package/dist/role/model.js +1 -1
  196. package/dist/role/resolution.d.ts +16 -0
  197. package/dist/role/resolution.js +1 -1
  198. package/dist/role/types.d.ts +1 -1
  199. package/dist/role/types.js +1 -1
  200. package/dist/rules.d.ts +2 -2
  201. package/dist/rules.js +1 -1
  202. package/dist/safety/confirm-gate.js +1 -1
  203. package/dist/safety/index.d.ts +1 -1
  204. package/dist/safety/index.js +1 -1
  205. package/dist/safety/preview.d.ts +1 -0
  206. package/dist/safety/preview.js +1 -1
  207. package/dist/schema/call/allocation.d.ts +2 -1
  208. package/dist/schema/call/arbitration.d.ts +5 -4
  209. package/dist/schema/call/arbitration.js +1 -1
  210. package/dist/schema/call/base.d.ts +17 -1
  211. package/dist/schema/call/base.js +1 -1
  212. package/dist/schema/call/bridge.d.ts +11 -4
  213. package/dist/schema/call/contact.d.ts +2 -1
  214. package/dist/schema/call/contact.js +1 -1
  215. package/dist/schema/call/demand.d.ts +2 -1
  216. package/dist/schema/call/demand.js +1 -1
  217. package/dist/schema/call/guard.d.ts +6 -3
  218. package/dist/schema/call/handler.d.ts +0 -3
  219. package/dist/schema/call/handler.js +1 -1
  220. package/dist/schema/call/machine.d.ts +4 -2
  221. package/dist/schema/call/machine.js +1 -1
  222. package/dist/schema/call/order.d.ts +2 -1
  223. package/dist/schema/call/payment.d.ts +2 -1
  224. package/dist/schema/call/permission.d.ts +2 -1
  225. package/dist/schema/call/personal.d.ts +39 -1
  226. package/dist/schema/call/personal.js +1 -1
  227. package/dist/schema/call/progress.d.ts +2 -1
  228. package/dist/schema/call/proof.d.ts +4 -2
  229. package/dist/schema/call/repository.d.ts +6 -5
  230. package/dist/schema/call/repository.js +1 -1
  231. package/dist/schema/call/reward.d.ts +2 -13
  232. package/dist/schema/call/reward.js +1 -1
  233. package/dist/schema/call/semantic.d.ts +3 -2
  234. package/dist/schema/call/semantic.js +1 -1
  235. package/dist/schema/call/service.d.ts +2 -1
  236. package/dist/schema/call/service.js +1 -1
  237. package/dist/schema/call/treasury.d.ts +2 -1
  238. package/dist/schema/common/index.js +1 -1
  239. package/dist/schema/evaluation/index.d.ts +146 -0
  240. package/dist/schema/evaluation/index.js +1 -1
  241. package/dist/schema/goal/index.d.ts +317 -0
  242. package/dist/schema/goal/index.js +1 -0
  243. package/dist/schema/goal/planning.d.ts +465 -0
  244. package/dist/schema/goal/planning.js +1 -0
  245. package/dist/schema/index.d.ts +2 -2
  246. package/dist/schema/index.js +1 -1
  247. package/dist/schema/industry-pack/index.d.ts +265 -1
  248. package/dist/schema/industry-pack/index.js +1 -1
  249. package/dist/schema/industry-pack/modes.d.ts +268 -0
  250. package/dist/schema/industry-pack/modes.js +1 -0
  251. package/dist/schema/intent-radar/index.d.ts +30 -3
  252. package/dist/schema/intent-radar/index.js +1 -1
  253. package/dist/schema/local/index.d.ts +9 -0
  254. package/dist/schema/local/index.js +1 -1
  255. package/dist/schema/messenger/index.d.ts +54 -0
  256. package/dist/schema/messenger/index.js +1 -1
  257. package/dist/schema/operations.d.ts +1147 -94
  258. package/dist/schema/operations.js +1 -1
  259. package/dist/schema/permission/index.d.ts +18 -0
  260. package/dist/schema/permission/index.js +1 -1
  261. package/dist/schema/persona/index.d.ts +40 -0
  262. package/dist/schema/persona/index.js +1 -1
  263. package/dist/schema/query/bi.d.ts +783 -0
  264. package/dist/schema/query/bi.js +1 -0
  265. package/dist/schema/query/index.d.ts +1471 -208
  266. package/dist/schema/query/index.js +1 -1
  267. package/dist/schema/schema-version.js +1 -1
  268. package/dist/schema/trust/index.d.ts +17 -0
  269. package/dist/schema/trust/index.js +1 -1
  270. package/dist/schema/utils/skills-recommendation.d.ts +0 -1
  271. package/dist/schema/utils/skills-recommendation.js +1 -1
  272. package/dist/schema/watch/index.d.ts +204 -0
  273. package/dist/schema/watch/index.js +1 -0
  274. package/dist/schema/workflow/index.d.ts +301 -0
  275. package/dist/schema/workflow/index.js +1 -1
  276. package/dist/schema-query-impl/index.js +1 -1
  277. package/dist/schemas/account_operation.output.json +8 -5
  278. package/dist/schemas/account_operation.schema.json +2 -2
  279. package/dist/schemas/bridge_operation.output.json +7 -4
  280. package/dist/schemas/bridge_operation.schema.json +37 -21
  281. package/dist/schemas/config_operation.output.json +1 -1
  282. package/dist/schemas/config_operation.schema.json +1 -1
  283. package/dist/schemas/evaluation_operation.output.json +276 -1
  284. package/dist/schemas/evaluation_operation.schema.json +307 -0
  285. package/dist/schemas/goal_operation.schema.json +1016 -0
  286. package/dist/schemas/guard2file.schema.json +9 -5
  287. package/dist/schemas/index.json +22 -11
  288. package/dist/schemas/industry_pack_operation.output.json +898 -0
  289. package/dist/schemas/industry_pack_operation.schema.json +217 -2
  290. package/dist/schemas/intent_radar.output.json +20 -2
  291. package/dist/schemas/intent_radar.schema.json +10 -1
  292. package/dist/schemas/local_info_operation.output.json +7 -4
  293. package/dist/schemas/local_mark_operation.output.json +7 -4
  294. package/dist/schemas/machineNode2file.schema.json +9 -5
  295. package/dist/schemas/messenger_operation.output.json +107 -4
  296. package/dist/schemas/messenger_operation.schema.json +98 -0
  297. package/dist/schemas/monitor_events.output.json +1435 -0
  298. package/dist/schemas/monitor_events.schema.json +85 -0
  299. package/dist/schemas/monitor_subscription.output.json +1462 -0
  300. package/dist/schemas/monitor_subscription.schema.json +327 -0
  301. package/dist/schemas/onchain_events.output.json +241 -18
  302. package/dist/schemas/onchain_events.schema.json +20 -0
  303. package/dist/schemas/onchain_operations.output.json +12 -7
  304. package/dist/schemas/onchain_operations.schema.json +570 -478
  305. package/dist/schemas/onchain_operations_allocation.schema.json +14 -10
  306. package/dist/schemas/onchain_operations_arbitration.schema.json +17 -12
  307. package/dist/schemas/onchain_operations_contact.schema.json +13 -9
  308. package/dist/schemas/onchain_operations_demand.schema.json +13 -9
  309. package/dist/schemas/onchain_operations_gen_passport.schema.json +9 -5
  310. package/dist/schemas/onchain_operations_gen_proof.schema.json +9 -5
  311. package/dist/schemas/onchain_operations_guard.schema.json +9 -5
  312. package/dist/schemas/onchain_operations_machine.schema.json +17 -13
  313. package/dist/schemas/onchain_operations_order.schema.json +12 -8
  314. package/dist/schemas/onchain_operations_payment.schema.json +10 -6
  315. package/dist/schemas/onchain_operations_permission.schema.json +12 -8
  316. package/dist/schemas/onchain_operations_personal.schema.json +47 -5
  317. package/dist/schemas/onchain_operations_progress.schema.json +12 -8
  318. package/dist/schemas/onchain_operations_proof.schema.json +9 -5
  319. package/dist/schemas/onchain_operations_repository.schema.json +295 -310
  320. package/dist/schemas/onchain_operations_reward.schema.json +17 -13
  321. package/dist/schemas/onchain_operations_service.schema.json +21 -17
  322. package/dist/schemas/onchain_operations_treasury.schema.json +17 -13
  323. package/dist/schemas/onchain_table_data.output.json +4125 -239
  324. package/dist/schemas/onchain_table_data.schema.json +326 -15
  325. package/dist/schemas/permission_operation.output.json +32 -0
  326. package/dist/schemas/permission_operation.schema.json +6 -2
  327. package/dist/schemas/persona_operation.output.json +145 -0
  328. package/dist/schemas/persona_operation.schema.json +28 -2
  329. package/dist/schemas/query_toolkit.output.json +3384 -2040
  330. package/dist/schemas/query_toolkit.schema.json +548 -9
  331. package/dist/schemas/trust_score.output.json +38 -0
  332. package/dist/schemas/trust_score.schema.json +32 -0
  333. package/dist/schemas/watch_operation.output.json +827 -0
  334. package/dist/schemas/watch_operation.schema.json +145 -0
  335. package/dist/schemas/workflow_operation.output.json +263 -5
  336. package/dist/schemas/workflow_operation.schema.json +599 -4
  337. package/dist/task/ProcessStore.d.ts +81 -0
  338. package/dist/task/ProcessStore.js +1 -0
  339. package/dist/task/playbook.d.ts +11 -0
  340. package/dist/task/playbook.js +1 -0
  341. package/dist/task/stage-gate.d.ts +22 -0
  342. package/dist/task/stage-gate.js +1 -0
  343. package/dist/{project → task}/substep-trace.d.ts +6 -45
  344. package/dist/task/types.d.ts +120 -0
  345. package/dist/task/types.js +1 -0
  346. package/dist/tools/handlers/config.js +1 -1
  347. package/dist/tools/handlers/evaluation.js +1 -1
  348. package/dist/tools/handlers/goal.d.ts +4 -0
  349. package/dist/tools/handlers/goal.js +1 -0
  350. package/dist/tools/handlers/industry-pack.js +1 -1
  351. package/dist/tools/handlers/intent-radar.js +1 -1
  352. package/dist/tools/handlers/messenger.js +1 -1
  353. package/dist/tools/handlers/monitor.d.ts +26 -0
  354. package/dist/tools/handlers/monitor.js +1 -0
  355. package/dist/tools/handlers/network.d.ts +1 -0
  356. package/dist/tools/handlers/network.js +1 -0
  357. package/dist/tools/handlers/onchain.js +1 -1
  358. package/dist/tools/handlers/permission.js +1 -1
  359. package/dist/tools/handlers/persona.js +1 -1
  360. package/dist/tools/handlers/query.js +1 -1
  361. package/dist/tools/handlers/trust.d.ts +14 -0
  362. package/dist/tools/handlers/trust.js +1 -1
  363. package/dist/tools/handlers/watch.d.ts +2 -0
  364. package/dist/tools/handlers/watch.js +1 -0
  365. package/dist/tools/handlers/workflow.js +1 -1
  366. package/dist/tools/index.d.ts +4 -0
  367. package/dist/tools/index.js +1 -1
  368. package/dist/tools/shared.js +1 -1
  369. package/dist/tools/wrap.js +1 -1
  370. package/package.json +5 -4
  371. package/dist/customer/post-purchase.d.ts +0 -44
  372. package/dist/customer/post-purchase.js +0 -1
  373. package/dist/harness/checkpoint.d.ts +0 -8
  374. package/dist/harness/checkpoint.js +0 -1
  375. package/dist/knowledge/deployment-scanner.d.ts +0 -66
  376. package/dist/knowledge/deployment-scanner.js +0 -1
  377. package/dist/project/business-puzzle.js +0 -1
  378. package/dist/project/context-assembly.js +0 -1
  379. package/dist/project/deployment-bridge.d.ts +0 -5
  380. package/dist/project/deployment-bridge.js +0 -1
  381. package/dist/project/deployment-doc.d.ts +0 -190
  382. package/dist/project/deployment-doc.js +0 -1
  383. package/dist/project/edit-planner.d.ts +0 -123
  384. package/dist/project/edit-planner.js +0 -1
  385. package/dist/project/evaluation-fix.spec.d.ts +0 -1
  386. package/dist/project/evaluation-fix.spec.js +0 -1
  387. package/dist/project/evaluation.d.ts +0 -127
  388. package/dist/project/evaluation.js +0 -1
  389. package/dist/project/graph-builder.d.ts +0 -51
  390. package/dist/project/graph-builder.js +0 -1
  391. package/dist/project/graph.d.ts +0 -70
  392. package/dist/project/graph.js +0 -1
  393. package/dist/project/handlers.d.ts +0 -540
  394. package/dist/project/handlers.js +0 -1
  395. package/dist/project/index.d.ts +0 -91
  396. package/dist/project/index.js +0 -1
  397. package/dist/project/intent-analyzer.js +0 -1
  398. package/dist/project/machine-nodes.d.ts +0 -2
  399. package/dist/project/machine-nodes.js +0 -1
  400. package/dist/project/merchant-guide.js +0 -1
  401. package/dist/project/migration.d.ts +0 -22
  402. package/dist/project/migration.js +0 -1
  403. package/dist/project/mode-actions.js +0 -1
  404. package/dist/project/namespace.d.ts +0 -72
  405. package/dist/project/namespace.js +0 -1
  406. package/dist/project/participation-radar.js +0 -1
  407. package/dist/project/pipeline-actions.js +0 -1
  408. package/dist/project/project-store.d.ts +0 -110
  409. package/dist/project/project-store.js +0 -1
  410. package/dist/project/query.d.ts +0 -43
  411. package/dist/project/query.js +0 -1
  412. package/dist/project/risk-aggregator.js +0 -1
  413. package/dist/project/rollback-policy.d.ts +0 -45
  414. package/dist/project/rollback-policy.js +0 -1
  415. package/dist/project/semantic-assembler.d.ts +0 -93
  416. package/dist/project/semantic-assembler.js +0 -1
  417. package/dist/project/stage-gate.d.ts +0 -53
  418. package/dist/project/stage-gate.js +0 -1
  419. package/dist/project/task-tracker.d.ts +0 -26
  420. package/dist/project/task-tracker.js +0 -1
  421. package/dist/schema/project/index.d.ts +0 -2015
  422. package/dist/schema/project/index.js +0 -1
  423. package/dist/schema/task-status.d.ts +0 -62
  424. package/dist/schema/task-status.js +0 -1
  425. package/dist/schemas/project_operation.output.json +0 -7877
  426. package/dist/schemas/project_operation.schema.json +0 -1133
  427. package/dist/schemas/query_task_status.output.json +0 -211
  428. package/dist/schemas/query_task_status.schema.json +0 -18
  429. package/dist/tools/handlers/project.d.ts +0 -2
  430. package/dist/tools/handlers/project.js +0 -1
  431. package/dist/tools/handlers/task-status.d.ts +0 -2
  432. package/dist/tools/handlers/task-status.js +0 -1
  433. /package/dist/{project → playbooks/service-build}/business-puzzle.d.ts +0 -0
  434. /package/dist/{project → playbooks/service-build}/game-theory.js +0 -0
  435. /package/dist/{project → playbooks/service-build}/reverse-mapping.d.ts +0 -0
  436. /package/dist/{project → playbooks/service-build}/reverse-mapping.js +0 -0
  437. /package/dist/{project → playbooks/service-build}/risk-aggregator.d.ts +0 -0
  438. /package/dist/{project → playbooks/service-build}/semantic-graph.js +0 -0
  439. /package/dist/{project → playbooks/service-build}/workflow-design-assessment.d.ts +0 -0
  440. /package/dist/{project → playbooks/service-build}/workflow-design-assessment.js +0 -0
  441. /package/dist/{project → task}/substep-trace.js +0 -0
@@ -1 +1 @@
1
- import{confirmGate}from'../safety/confirm-gate.js';import{renderPreview}from'../safety/preview.js';import{validateOperation,hasBlockingViolations,getWarningViolations}from'../knowledge/index.js';import{getHarness}from'../harness/index.js';import{isEnabled as a375a}from'../config/index.js';import{classifyError,buildDataSemantic}from'../schema/call/semantic.js';import{strictParse}from'../schema/index.js';export function withHarness(a,b,c){if(!a375a('harness'))return a;try{const d=getHarness(),e=d['expect'](b,c,a['operation_type'],a['data']);return{...a,'harness':d,'expected':e,'operation_id':a['operation_type']+'_'+Date['now']()};}catch{return a;}}export function wrapLocalHandler(a){const {schema:b,operationFn:c,parseLabel:d,buildContext:e}=a;return async f=>{let g;try{g=strictParse(b,f,d);const h=await c(g),i=e(g);return{'content':[{'type':'text','text':JSON['stringify'](h)}],'structuredContent':{'result':{'status':'success','data':h},'semantic':buildDataSemantic(h,i)}};}catch(j){const k=j instanceof Error?j['message']:String(j),l=g?e(g):undefined,m=classifyError(k),n={'status':'error','error':k};if(m['error_code']!==undefined)n['error_code']=m['error_code'];if(m['retryable']!==undefined)n['retryable']=m['retryable'];if(m['recovery_hint']!==undefined)n['recovery_hint']=m['recovery_hint'];return{'content':[{'type':'text','text':'Error:\x20'+k}],'structuredContent':{'result':n,'semantic':buildDataSemantic(undefined,l,!![],k)}};}};}export function buildPendingConfirmation(a,b,c,d){const e=confirmGate(a,b,c,c?.['user_intent_phrases'],d);if(e['pass'])return{'content':[],'structuredContent':null};const f=e['preview'],g=renderPreview(f),h={'message':g,'result':{'type':'pending_confirmation','preview':f,'rule_id':e['rule_id']},'semantic':{'intent':a+'_awaiting_confirmation','status':'pending_input','summary':'Operation\x20blocked\x20by\x20ConfirmGate\x20('+e['level']+').\x20Review\x20the\x20preview\x20and\x20re-call\x20with\x20env.confirmed=true\x20to\x20proceed.','next_actions':[{'action':'confirm:\x20re-call\x20the\x20SAME\x20operation\x20with\x20env.confirmed=true','reason':'ConfirmGate\x20rule\x20\x27'+e['rule_id']+'\x27\x20matched.\x20The\x20operation\x20was\x20NOT\x20executed.','tool':'onchain_operations','priority':'required'}],'warnings':f['warnings']??[]}};return{'content':[{'type':'text','text':g}],'structuredContent':h};}export function buildConstraintError(a,b){const c=b['filter'](g=>g['severity']==='error'),d=c['map'](g=>'\x20\x20•\x20['+g['field']+']\x20'+g['message'])['join']('\x0a'),e='Pre-call\x20constraint\x20violations\x20for\x20\x27'+a+'\x27:\x0a'+d+'\x0a\x0aFix\x20the\x20listed\x20field(s)\x20and\x20retry.',f={'message':e,'result':{'type':'error','error':e,'error_code':'invalid_parameter','retryable':![],'recovery_hint':'Review\x20the\x20constraint\x20violations\x20above\x20and\x20correct\x20the\x20corresponding\x20fields.'}};return{'content':[{'type':'text','text':e}],'structuredContent':f};}export function buildClassifiedErrorResult(a,b,c){const d={...a,'error':b};if(c['error_code']!==undefined)d['error_code']=c['error_code'];if(c['retryable']!==undefined)d['retryable']=c['retryable'];if(c['recovery_hint']!==undefined)d['recovery_hint']=c['recovery_hint'];return d;}export{validateOperation,hasBlockingViolations,getWarningViolations};
1
+ import{confirmGate}from'../safety/confirm-gate.js';import{renderPreview}from'../safety/preview.js';import{validateOperation,hasBlockingViolations,getWarningViolations}from'../knowledge/index.js';import{getHarness}from'../harness/index.js';import{isEnabled as a408a}from'../config/index.js';import{classifyError,buildDataSemantic}from'../schema/call/semantic.js';import{strictParse}from'../schema/index.js';export function withHarness(a,b,c){if(!a408a('harness'))return a;try{const d=getHarness(),e=d['expect'](b,c,a['operation_type'],a['data']);return{...a,'harness':d,'expected':e,'operation_id':a['operation_type']+'_'+Date['now']()};}catch{return a;}}export function wrapLocalHandler(a){const {schema:b,operationFn:c,parseLabel:d,buildContext:e}=a;return async f=>{let g;try{g=strictParse(b,f,d);const h=await c(g),i=e(g);return{'content':[{'type':'text','text':JSON['stringify'](h)}],'structuredContent':{'result':{'status':'success','data':h},'semantic':buildDataSemantic(h,i)}};}catch(j){const k=j instanceof Error?j['message']:String(j),l=g?e(g):undefined,m=classifyError(k),n={'status':'error','error':k};if(m['error_code']!==undefined)n['error_code']=m['error_code'];if(m['retryable']!==undefined)n['retryable']=m['retryable'];if(m['recovery_hint']!==undefined)n['recovery_hint']=m['recovery_hint'];return{'content':[{'type':'text','text':'Error:\x20'+k}],'structuredContent':{'result':n,'semantic':buildDataSemantic(undefined,l,!![],k)}};}};}export function buildPendingConfirmation(a,b,c,d){const e=confirmGate(a,b,c,c?.['user_intent_phrases'],d);if(e['pass'])return{'content':[],'structuredContent':null};const f=e['preview'],g=renderPreview(f),h={'message':g,'result':{'type':'pending_confirmation','preview':f,'rule_id':e['rule_id']},'semantic':{'intent':a+'_awaiting_confirmation','status':'pending_input','summary':'Operation\x20blocked\x20by\x20ConfirmGate\x20('+e['level']+').\x20Review\x20the\x20preview\x20and\x20re-call\x20with\x20env.confirmed=true\x20to\x20proceed.','next_actions':[{'action':'confirm:\x20re-call\x20the\x20SAME\x20operation\x20with\x20env.confirmed=true','reason':'ConfirmGate\x20rule\x20\x27'+e['rule_id']+'\x27\x20matched.\x20The\x20operation\x20was\x20NOT\x20executed.','tool':'onchain_operations','priority':'required'}],'warnings':f['warnings']??[]}};return{'content':[{'type':'text','text':g}],'structuredContent':h};}export function buildConstraintError(a,b){const c=b['filter'](g=>g['severity']==='error'),d=c['map'](g=>'\x20\x20•\x20['+g['field']+']\x20'+g['message'])['join']('\x0a'),e='Pre-call\x20constraint\x20violations\x20for\x20\x27'+a+'\x27:\x0a'+d+'\x0a\x0aFix\x20the\x20listed\x20field(s)\x20and\x20retry.',f={'message':e,'result':{'type':'error','error':e,'error_code':'invalid_parameter','retryable':![],'recovery_hint':'Review\x20the\x20constraint\x20violations\x20above\x20and\x20correct\x20the\x20corresponding\x20fields.'}};return{'content':[{'type':'text','text':e}],'structuredContent':f};}export function buildClassifiedErrorResult(a,b,c){const d={...a,'error':b};if(c['error_code']!==undefined)d['error_code']=c['error_code'];if(c['retryable']!==undefined)d['retryable']=c['retryable'];if(c['recovery_hint']!==undefined)d['recovery_hint']=c['recovery_hint'];return d;}export{validateOperation,hasBlockingViolations,getWarningViolations};
@@ -1 +1 @@
1
- import{classifyError,buildDataSemantic}from'../schema/call/semantic.js';import{buildClassifiedErrorResult}from'./shared.js';import{shouldRunLightHooks,shouldRunHeavyHooks,recordOperationFailure,recordCriticalRisk,recordCriticalOperation,recordSubstepFailure}from'../harness/auto-escalation.js';import{getHarnessTier,setHarnessTier}from'../config/runtime.js';import{getHarness}from'../harness/index.js';import{recordOperationOutcome}from'../experience/index.js';import{recordIndustrySignal}from'../knowledge/flywheel-loop.js';import{getStageCache}from'../project/index.js';import{extractAmount,getAmountThreshold,formatAmount}from'../knowledge/safety-rules.js';export function withTimeout(a,b=0x7530,c='operation'){let d;return Promise['race']([a['finally'](()=>{if(d)clearTimeout(d);}),new Promise((e,f)=>{d=setTimeout(()=>{let g='';c['includes']('messenger')&&(g='\x20This\x20is\x20a\x20messenger\x20network\x20operation.\x20Possible\x20causes:\x20'+'(1)\x20messenger\x20server\x20(https://messenger.wowok.net)\x20unreachable,\x20'+'(2)\x20no\x20messenger-enabled\x20account\x20configured\x20(use\x20account_operation\x20to\x20set\x20messenger\x20name),\x20'+'(3)\x20network\x20connectivity\x20issue.\x20'+'Ensure\x20you\x20have\x20a\x20messenger-enabled\x20account\x20and\x20the\x20server\x20is\x20reachable.'),f(new Error('Operation\x20\x27'+c+'\x27\x20timed\x20out\x20after\x20'+b+'ms.'+g));},b);})]);}export function wrapHandlerWithErrorShape(a,b,c,d){return async e=>{try{return await withTimeout(a(e),b,c);}catch(f){if(d){const g=f instanceof Error?f['message']:String(f),h=classifyError(g),i={'operation_type':c,'data':e},j=d(g,h,i);return{'content':[{'type':'text','text':'Error:\x20'+g}],'structuredContent':j};}throw f;}};}export const statusErrorShape=(a,b,c)=>({'result':buildClassifiedErrorResult({'status':'error'},a,b),'semantic':buildDataSemantic(undefined,c,!![],a)});export const operationErrorShape=(a,b,c)=>({'result':buildClassifiedErrorResult({'operation':'error'},a,b),'semantic':buildDataSemantic(undefined,c,!![],a)});export const strictStatusErrorShape=(a,b,c)=>({'result':{'status':'error','error':a}});function checkProjectStage(a,b,c){const d={'analyze_intent':0x2,'aggregate_risks':0x3,'generate_deployment_doc':0x4,'trace_substeps':0x5},e=d[a];if(!e)return null;const f=getStageCache(b,c);if(!f){if(a==='analyze_intent')return null;return'project_stage:\x20calling\x20\x27'+a+'\x27\x20before\x20\x27analyze_intent\x27\x20—\x20recommend\x20calling\x20analyze_intent\x20first\x20for\x20project\x20\x27'+b+':'+c+'\x27';}if(f['stage']<e-0x1)return'project_stage:\x20calling\x20\x27'+a+'\x27\x20(stage\x20'+e+')\x20but\x20project\x20is\x20at\x20stage\x20'+f['stage']+'\x20—\x20recommend\x20completing\x20prior\x20stages\x20first\x20for\x20\x27'+b+':'+c+'\x27';if(a==='generate_deployment_doc'&&f['risk_can_proceed']===![])return'project_stage:\x20calling\x20\x27generate_deployment_doc\x27\x20but\x20CRITICAL\x20risks\x20are\x20unresolved\x20—\x20recommend\x20fixing\x20risks\x20first\x20for\x20\x27'+b+':'+c+'\x27';if(a==='trace_substeps'&&f['doc_error_count']&&f['doc_error_count']>0x0)return'project_stage:\x20calling\x20\x27trace_substeps\x27\x20but\x20deployment\x20doc\x20has\x20'+f['doc_error_count']+'\x20D-error(s)\x20—\x20recommend\x20fixing\x20doc\x20errors\x20first\x20for\x20\x27'+b+':'+c+'\x27';return null;}export function dispatchWithHarness(a,b){return async d=>{const f=[],g=getHarness(),h=shouldRunLightHooks(),i=shouldRunHeavyHooks(),j=isPublishOperation(b,d),k=isSignOperation(b,d),l=getHarnessTier();let m;if(h)try{const o=extractOperationType(b,d),p=extractIntent(b,d);o&&p&&(m=g['expect'](b,p,o,extractData(d)));}catch(q){f['push']('pre_call\x20hook\x20failed:\x20'+(q instanceof Error?q['message']:String(q)));}if(b==='project_operation'&&h)try{const r=d,s=r?.['action'],t=r?.['project'],u=r?.['version'];if(s&&t&&u){const v=checkProjectStage(s,t,u);v&&f['push'](v);}}catch{}j&&l==='lightweight'&&(setHarnessTier('full'),f['push']('pre_publish:\x20tier\x20forced\x20to\x20full\x20for\x20publish-class\x20operation\x20(GLM5-21\x20§3.3)'));if(j&&l!=='off')try{const x=runPrePublishChecks(b,d);f['push'](...x['warnings']);if(x['critical']['length']>0x0){for(const y of x['critical']){const z=recordCriticalRisk(y);if(z)f['push']('Harness\x20escalated\x20to\x20full\x20tier:\x20'+z['reason']);}return buildHarnessBlockResult('pre_publish','Publish\x20BLOCKED\x20by\x20Harness\x20pre-publish\x20gate\x20(GLM5-21\x20V6):\x20'+(x['critical']['length']+'\x20CRITICAL\x20risk(s)\x20must\x20be\x20resolved\x20before\x20publish.'),x['critical'],x['warnings'],'immutable_violation','Fix\x20the\x20CRITICAL\x20risks\x20listed\x20in\x20the\x20message\x20(e.g.\x20rename\x20dispute/refund\x20nodes\x20per\x20R-M1-11,\x20add\x20the\x20entry\x20pair\x20prev_node=\x22\x22),\x20then\x20retry\x20publish.\x20Nodes/pairs/forwards\x20are\x20immutable\x20after\x20publish\x20—\x20verify\x20via\x20machineNode2file\x20first.');}}catch(A){f['push']('pre_publish\x20hook\x20failed:\x20'+(A instanceof Error?A['message']:String(A)));}if(k&&i)try{const B=extractData(d),C=B?extractAmount(B):null;if(C!==null){const D=getAmountThreshold();let E=null;try{E=BigInt(C);}catch{E=null;}if(E!==null&&E>D)return buildHarnessBlockResult('pre_sign','Sign\x20BLOCKED\x20by\x20Harness\x20pre-sign\x20gate\x20(GLM5-21\x20V7):\x20amount\x20'+formatAmount(E)+'\x20WOW\x20exceeds\x20the\x20full-tier\x20threshold\x20'+formatAmount(D)+'\x20WOW.',['amount\x20'+C+'\x20(smallest\x20unit)\x20>\x20threshold\x20'+D['toString']()+'\x20(smallest\x20unit)'],[],'invalid_parameter','Raise\x20WOWOK_AMOUNT_THRESHOLD\x20to\x20match\x20the\x20intended\x20amount,\x20split\x20the\x20transaction,\x20or\x20reset\x20the\x20harness\x20tier\x20to\x20lightweight\x20(config_operation)\x20after\x20explicit\x20user\x20confirmation.');}}catch(F){f['push']('pre_sign\x20hook\x20failed:\x20'+(F instanceof Error?F['message']:String(F)));}let n;try{n=await a(d);}catch(G){const H=G instanceof Error?G['message']:String(G),I=recordOperationFailure(b,H);I&&f['push']('Harness\x20escalated\x20to\x20full\x20tier:\x20'+I['reason']);if(b==='onchain_operations')try{const J=classifyError(H,G);if(!J['retryable']&&J['error_code']!=='unknown'){const K=recordCriticalOperation(b,J['error_code']);if(K)f['push']('Harness\x20escalated\x20to\x20full\x20tier:\x20'+K['reason']);}}catch{}throw G;}if(h&&m)try{if(n?.['structuredContent']){const L=buildVerifyInput(m,n),M=g['verify'](L);if(M['status']==='fail')f['push']('Harness\x20verify\x20FAIL:\x20'+M['summary']);else M['status']==='warn'&&f['push']('Harness\x20verify\x20WARN:\x20'+M['summary']);}}catch(N){f['push']('post_call\x20hook\x20failed:\x20'+(N instanceof Error?N['message']:String(N)));}if(b==='onchain_operations')try{if(classifyOutcome(n)==='failed'){const O=extractErrorCode(n)??'',P=classifyError(O);if(!P['retryable']&&P['error_code']!=='unknown'){const Q=recordCriticalOperation(b,P['error_code']);if(Q)f['push']('Harness\x20escalated\x20to\x20full\x20tier:\x20'+Q['reason']);}}}catch{}if(b==='project_operation')try{const R=d?.['action'];if(R==='generate_deployment_doc'||R==='trace_substeps'){const S=extractCriticalFindingCount(n);if(S>0x0){const T=recordSubstepFailure(String(R)+':\x20'+S+'\x20critical\x20finding(s)');if(T)f['push']('Harness\x20escalated\x20to\x20full\x20tier:\x20'+T['reason']);}}}catch{}if(isWriteClassTool(b))try{const U=extractOperationType(b,d)??b,V=extractIntent(b,d)??b,W=extractData(d)??d,X=classifyOutcome(n),Y=extractErrorCode(n),Z=extractIndustry(d)??'general';recordOperationOutcome(U,W,V,X,Y),recordIndustrySignal(Z,{'type':U},{'success':X==='success','error_code':Y});}catch(a0){f['push']('signal\x20collection\x20failed:\x20'+(a0 instanceof Error?a0['message']:String(a0)));}if(f['length']>0x0){if(n?.['structuredContent']){const a1=n['structuredContent'],a2=a1['semantic'];if(a2){const a3=Array['isArray'](a2['warnings'])?a2['warnings']:[];a2['warnings']=[...a3,...f];}else for(const a4 of f){console['warn']('[harness]\x20'+a4);}}else for(const a5 of f){console['warn']('[harness]\x20'+a5);}}return n;};}function isPublishOperation(a,b){if(a!=='onchain_operations')return![];const c=extractOperationType(a,b);if(c!=='service'&&c!=='machine')return![];const d=extractData(b);return d?.['publish']===!![]||d?.['bPublished']===!![];}function isSignOperation(a,b){if(a==='wip_file'){const c=b?.['operation_type'];return c==='sign';}return a==='onchain_operations';}function extractOperationType(a,b){if(!b||typeof b!=='object')return undefined;const c=b;if(a==='onchain_operations')return typeof c['operation_type']==='string'?c['operation_type']:undefined;if(a==='project_operation')return typeof c['action']==='string'?c['action']:undefined;return typeof c['operation_type']==='string'?c['operation_type']:undefined;}function extractIntent(a,b){if(!b||typeof b!=='object')return undefined;const c=b;if(a==='project_operation'&&typeof c['action']==='string')return'project:'+c['action'];const d=c['operation_type'];if(typeof d==='string')return a+':'+d;return a;}function extractData(a){if(!a||typeof a!=='object')return undefined;const b=a,c=b['data'];return c&&typeof c==='object'?c:undefined;}function buildVerifyInput(a,b){const c=b['structuredContent']??{},d=c['semantic'];return{'expected':a,'actual':{'result_type':typeof c['result_type']==='string'?c['result_type']:undefined,'semantic':d,'error_code':typeof c['error_code']==='string'?c['error_code']:undefined,'error':typeof c['error']==='string'?c['error']:undefined}};}const WRITE_CLASS_TOOLS=new Set(['onchain_operations','project_operation','wip_file','messenger_operation','bridge_operation']);function isWriteClassTool(a){return WRITE_CLASS_TOOLS['has'](a);}function classifyOutcome(a){if(!a?.['structuredContent'])return'failed';const b=a['structuredContent'],c=typeof b['status']==='string'?b['status']:typeof b['result_type']==='string'?b['result_type']:'';if(c==='error'||c==='failed')return'failed';if(c==='partial')return'partial';return'success';}function extractErrorCode(a){if(!a?.['structuredContent'])return undefined;const b=a['structuredContent'];if(typeof b['error_code']==='string')return b['error_code'];const c=b['error'];if(typeof c==='string')return c;if(c&&typeof c==='object'){const d=c['code'];if(typeof d==='string')return d;}return undefined;}function extractIndustry(a){if(!a||typeof a!=='object')return undefined;const b=a;if(typeof b['industry']==='string')return b['industry'];const c=b['data'];if(c&&typeof c==='object'){const e=c;if(typeof e['industry']==='string')return e['industry'];}return undefined;}const ANTI_PATTERN_NODE_REGEX=/(^|_)(disputed?|refund(?:ed)?|arbitration|arb)(_|$)/i;function runPrePublishChecks(a,b){const c=[],d=[],e=extractOperationType(a,b),g=extractData(b)??{};if(e==='machine'){const h=g['node'],i=Array['isArray'](h)?h:Array['isArray'](h?.['nodes'])?h['nodes']:[];if(i['length']>0x0){for(const l of i){const m=typeof l?.['name']==='string'?l['name']:'';m&&ANTI_PATTERN_NODE_REGEX['test'](m)&&c['push']('R-M1-11:\x20machine\x20node\x20\x22'+m+'\x22\x20models\x20dispute/refund\x20flow\x20—\x20'+'refunds\x20must\x20route\x20via\x20an\x20Allocator\x20triggered\x20by\x20business\x20states,\x20'+'disputes\x20via\x20the\x20separate\x20Arbitration\x20object\x20(off-Machine)');}const j=new Set();for(const o of i){const q=typeof o?.['name']==='string'?o['name']:'';if(!q)continue;j['has'](q)&&c['push']('MC-C-04:\x20duplicate\x20machine\x20node\x20name\x20\x22'+q+'\x22\x20—\x20on-chain\x20will\x20reject\x20the\x20publish\x20transaction'),j['add'](q);}const k=i['some'](r=>Array['isArray'](r?.['pairs'])&&r['pairs']['some'](s=>s?.['prev_node']===''));!k&&c['push']('Machine\x20has\x20no\x20entry\x20pair\x20(prev_node=\x22\x22)\x20—\x20Progress\x20can\x20never\x20advance\x20'+'from\x20the\x20initial\x20state;\x20orders\x20are\x20permanently\x20stuck');for(const r of i){const s=typeof r?.['name']==='string'?r['name']:'?';for(const t of r?.['pairs']??[]){for(const u of t?.['forwards']??[]){const v=u?.['namedOperator']!==undefined&&u?.['namedOperator']!==null,w=u?.['permissionIndex']!==undefined&&u?.['permissionIndex']!==null;!v&&!w&&d['push']('pre_publish:\x20node\x20\x22'+s+'\x22\x20forward\x20\x22'+String(u?.['name']??'?')+'\x22\x20has\x20neither\x20namedOperator\x20nor\x20permissionIndex\x20—\x20no\x20one\x20can\x20advance\x20it');}}}}else d['push']('pre_publish:\x20publishing\x20machine\x20without\x20inline\x20node\x20data\x20—\x20topology\x20not\x20verifiable\x20in\x20this\x20call;\x20'+'verify\x20nodes/pairs/forwards\x20via\x20machineNode2file\x20BEFORE\x20publish\x20(immutable\x20after\x20publish,\x20IMMUT-001)');d['push']('pre_publish:\x20machine\x20nodes/pairs/forwards\x20become\x20immutable\x20after\x20publish\x20(IMMUT-001)');}return e==='service'&&(d['push']('pre_publish:\x20service\x20machine/order_allocators/arbitrations\x20become\x20immutable\x20after\x20publish\x20(IMMUT-002);\x20sales\x20remains\x20modifiable'),g['machine']===undefined&&d['push']('pre_publish:\x20\x27machine\x27\x20not\x20set\x20in\x20this\x20call\x20—\x20if\x20the\x20service\x20was\x20never\x20bound\x20to\x20a\x20published\x20machine,\x20'+'it\x20cannot\x20process\x20orders\x20and\x20CANNOT\x20be\x20fixed\x20after\x20publish'),g['order_allocators']===undefined&&d['push']('pre_publish:\x20\x27order_allocators\x27\x20not\x20set\x20in\x20this\x20call\x20—\x20immutable\x20after\x20publish;\x20'+'orders\x20will\x20have\x20no\x20fund\x20distribution\x20if\x20never\x20configured')),{'critical':c,'warnings':d};}function buildHarnessBlockResult(a,b,c,d,e,f){const g=[...c['map'](i=>'CRITICAL:\x20'+i),...d['map'](i=>'WARN:\x20'+i)]['join']('\x0a'),h='Error:\x20'+b+(g?'\x0a'+g:'')+'\x0aRecovery:\x20'+f;return{'content':[{'type':'text','text':h}],'structuredContent':{'result':{'type':'error','error':b+'\x20[gate='+a+']','error_code':e,'retryable':![],'recovery_hint':f},'message':h}};}function extractCriticalFindingCount(a){const b=a?.['structuredContent'];if(!b)return 0x0;const c=b['semantic'],d=c?.['summary'];if(typeof d?.['critical_count']==='number'&&d['critical_count']>0x0)return d['critical_count'];const e=b['findings']??c?.['findings'];if(Array['isArray'](e))return e['filter'](h=>h?.['severity']==='error')['length'];const f=a?.['content']?.['map'](h=>'text'in h?h['text']:'')['join']('\x0a')??'',g=f['match'](/\[AUDIT ERROR\]/g);return g?g['length']:0x0;}
1
+ import{classifyError,buildDataSemantic}from'../schema/call/semantic.js';import{buildClassifiedErrorResult}from'./shared.js';import{shouldRunLightHooks,shouldRunHeavyHooks,recordOperationFailure,recordCriticalRisk,recordCriticalOperation,recordSubstepFailure}from'../harness/auto-escalation.js';import{getHarnessTier,setHarnessTier}from'../config/runtime.js';import{getHarness}from'../harness/index.js';import{recordOperationOutcome}from'../experience/index.js';import{recordIndustrySignal}from'../knowledge/flywheel-loop.js';import{getStageCache}from'../playbooks/service-build/index.js';import{SERVICE_BUILD_STAGES}from'../playbooks/service-build/process.js';import{extractAmount,getAmountThreshold,formatAmount}from'../knowledge/safety-rules.js';function stageIndexOf(a){const b=SERVICE_BUILD_STAGES['indexOf'](a);return b>=0x0?b:0x0;}export function withTimeout(a,b=0x7530,c='operation'){let d;return Promise['race']([a['finally'](()=>{if(d)clearTimeout(d);}),new Promise((e,f)=>{d=setTimeout(()=>{let g='';c['includes']('messenger')&&(g='\x20This\x20is\x20a\x20messenger\x20network\x20operation.\x20Possible\x20causes:\x20'+'(1)\x20messenger\x20server\x20(https://messenger.wowok.net)\x20unreachable,\x20'+'(2)\x20no\x20messenger-enabled\x20account\x20configured\x20(use\x20account_operation\x20to\x20set\x20messenger\x20name),\x20'+'(3)\x20network\x20connectivity\x20issue.\x20'+'Ensure\x20you\x20have\x20a\x20messenger-enabled\x20account\x20and\x20the\x20server\x20is\x20reachable.'),f(new Error('Operation\x20\x27'+c+'\x27\x20timed\x20out\x20after\x20'+b+'ms.'+g));},b);})]);}export function wrapHandlerWithErrorShape(a,b,c,d){return async e=>{try{return await withTimeout(a(e),b,c);}catch(f){if(d){const g=f instanceof Error?f['message']:String(f),h=classifyError(g),i={'operation_type':c,'data':e},j=d(g,h,i);return{'content':[{'type':'text','text':'Error:\x20'+g}],'structuredContent':j};}throw f;}};}export const statusErrorShape=(a,b,c)=>({'result':buildClassifiedErrorResult({'status':'error'},a,b),'semantic':buildDataSemantic(undefined,c,!![],a)});export const operationErrorShape=(a,b,c)=>({'result':buildClassifiedErrorResult({'operation':'error'},a,b),'semantic':buildDataSemantic(undefined,c,!![],a)});export const strictStatusErrorShape=(a,b,c)=>({'result':{'status':'error','error':a}});function checkProjectStage(a,b,c){const d={'analyze_intent':'puzzle','aggregate_risks':'risk','trace_substeps':'substeps'},e=d[a];if(!e)return null;const f=getStageCache(b,c);if(!f){if(a==='analyze_intent')return null;return'project_stage:\x20calling\x20\x27'+a+'\x27\x20before\x20\x27analyze_intent\x27\x20—\x20recommend\x20calling\x20analyze_intent\x20first\x20for\x20project\x20\x27'+b+':'+c+'\x27';}if(stageIndexOf(f['stage'])<stageIndexOf(e)-0x1)return'project_stage:\x20calling\x20\x27'+a+'\x27\x20(stage\x20\x27'+e+'\x27)\x20but\x20project\x20is\x20at\x20stage\x20\x27'+f['stage']+'\x27\x20—\x20recommend\x20completing\x20prior\x20stages\x20first\x20for\x20\x27'+b+':'+c+'\x27';return null;}export function dispatchWithHarness(a,b){return async d=>{const f=[],g=getHarness(),h=shouldRunLightHooks(),i=shouldRunHeavyHooks(),j=isPublishOperation(b,d),k=isSignOperation(b,d),l=getHarnessTier();let m;if(h)try{const o=extractOperationType(b,d),p=extractIntent(b,d);o&&p&&(m=g['expect'](b,p,o,extractData(d)));}catch(q){f['push']('pre_call\x20hook\x20failed:\x20'+(q instanceof Error?q['message']:String(q)));}if(b==='goal_operation'&&h)try{const r=d,s=r?.['action'],t=r?.['project'],u=r?.['version'];if(s&&t&&u){const v=checkProjectStage(s,t,u);v&&f['push'](v);}}catch{}j&&l==='lightweight'&&(setHarnessTier('full'),f['push']('pre_publish:\x20tier\x20forced\x20to\x20full\x20for\x20publish-class\x20operation\x20(GLM5-21\x20§3.3)'));if(j&&l!=='off')try{const x=runPrePublishChecks(b,d);f['push'](...x['warnings']);if(x['critical']['length']>0x0){for(const y of x['critical']){const z=recordCriticalRisk(y);if(z)f['push']('Harness\x20escalated\x20to\x20full\x20tier:\x20'+z['reason']);}return buildHarnessBlockResult('pre_publish','Publish\x20BLOCKED\x20by\x20Harness\x20pre-publish\x20gate\x20(GLM5-21\x20V6):\x20'+(x['critical']['length']+'\x20CRITICAL\x20risk(s)\x20must\x20be\x20resolved\x20before\x20publish.'),x['critical'],x['warnings'],'immutable_violation','Fix\x20the\x20CRITICAL\x20risks\x20listed\x20in\x20the\x20message\x20(e.g.\x20rename\x20dispute/refund\x20nodes\x20per\x20R-M1-11,\x20add\x20the\x20entry\x20pair\x20prev_node=\x22\x22),\x20then\x20retry\x20publish.\x20Nodes/pairs/forwards\x20are\x20immutable\x20after\x20publish\x20—\x20verify\x20via\x20machineNode2file\x20first.');}}catch(A){f['push']('pre_publish\x20hook\x20failed:\x20'+(A instanceof Error?A['message']:String(A)));}if(k&&i)try{const B=extractData(d),C=B?extractAmount(B):null;if(C!==null){const D=getAmountThreshold();let E=null;try{E=BigInt(C);}catch{E=null;}if(E!==null&&E>D)return buildHarnessBlockResult('pre_sign','Sign\x20BLOCKED\x20by\x20Harness\x20pre-sign\x20gate\x20(GLM5-21\x20V7):\x20amount\x20'+formatAmount(E)+'\x20WOW\x20exceeds\x20the\x20full-tier\x20threshold\x20'+formatAmount(D)+'\x20WOW.',['amount\x20'+C+'\x20(smallest\x20unit)\x20>\x20threshold\x20'+D['toString']()+'\x20(smallest\x20unit)'],[],'invalid_parameter','Raise\x20WOWOK_AMOUNT_THRESHOLD\x20to\x20match\x20the\x20intended\x20amount,\x20split\x20the\x20transaction,\x20or\x20reset\x20the\x20harness\x20tier\x20to\x20lightweight\x20(config_operation)\x20after\x20explicit\x20user\x20confirmation.');}}catch(F){f['push']('pre_sign\x20hook\x20failed:\x20'+(F instanceof Error?F['message']:String(F)));}let n;try{n=await a(d);}catch(G){const H=G instanceof Error?G['message']:String(G),I=recordOperationFailure(b,H);I&&f['push']('Harness\x20escalated\x20to\x20full\x20tier:\x20'+I['reason']);if(b==='onchain_operations')try{const J=classifyError(H,G);if(!J['retryable']&&J['error_code']!=='unknown'){const K=recordCriticalOperation(b,J['error_code']);if(K)f['push']('Harness\x20escalated\x20to\x20full\x20tier:\x20'+K['reason']);}}catch{}throw G;}if(h&&m)try{if(n?.['structuredContent']){const L=buildVerifyInput(m,n),M=g['verify'](L);if(M['status']==='fail')f['push']('Harness\x20verify\x20FAIL:\x20'+M['summary']);else M['status']==='warn'&&f['push']('Harness\x20verify\x20WARN:\x20'+M['summary']);}}catch(N){f['push']('post_call\x20hook\x20failed:\x20'+(N instanceof Error?N['message']:String(N)));}if(b==='onchain_operations')try{if(classifyOutcome(n)==='failed'){const O=extractErrorCode(n)??'',P=classifyError(O);if(!P['retryable']&&P['error_code']!=='unknown'){const Q=recordCriticalOperation(b,P['error_code']);if(Q)f['push']('Harness\x20escalated\x20to\x20full\x20tier:\x20'+Q['reason']);}}}catch{}if(b==='goal_operation')try{const R=d?.['action'];if(R==='trace_substeps'){const S=extractCriticalFindingCount(n);if(S>0x0){const T=recordSubstepFailure(String(R)+':\x20'+S+'\x20critical\x20finding(s)');if(T)f['push']('Harness\x20escalated\x20to\x20full\x20tier:\x20'+T['reason']);}}}catch{}if(isWriteClassTool(b))try{const U=extractOperationType(b,d)??b,V=extractIntent(b,d)??b,W=extractData(d)??d,X=classifyOutcome(n),Y=extractErrorCode(n),Z=extractIndustry(d)??'general';recordOperationOutcome(U,W,V,X,Y),recordIndustrySignal(Z,{'type':U},{'success':X==='success','error_code':Y});}catch(a0){f['push']('signal\x20collection\x20failed:\x20'+(a0 instanceof Error?a0['message']:String(a0)));}if(f['length']>0x0){if(n?.['structuredContent']){const a1=n['structuredContent'],a2=a1['semantic'];if(a2){const a3=Array['isArray'](a2['warnings'])?a2['warnings']:[];a2['warnings']=[...a3,...f];}else for(const a4 of f){console['warn']('[harness]\x20'+a4);}}else for(const a5 of f){console['warn']('[harness]\x20'+a5);}}return n;};}function isPublishOperation(a,b){if(a!=='onchain_operations')return![];const c=extractOperationType(a,b);if(c!=='service'&&c!=='machine')return![];const d=extractData(b);return d?.['publish']===!![]||d?.['bPublished']===!![];}function isSignOperation(a,b){if(a==='wip_file'){const c=b?.['operation_type'];return c==='sign';}return a==='onchain_operations';}function extractOperationType(a,b){if(!b||typeof b!=='object')return undefined;const c=b;if(a==='onchain_operations')return typeof c['operation_type']==='string'?c['operation_type']:undefined;if(a==='goal_operation'||a==='industry_pack_operation')return typeof c['action']==='string'?c['action']:undefined;return typeof c['operation_type']==='string'?c['operation_type']:undefined;}function extractIntent(a,b){if(!b||typeof b!=='object')return undefined;const c=b;if((a==='goal_operation'||a==='industry_pack_operation')&&typeof c['action']==='string')return a+':'+c['action'];const d=c['operation_type'];if(typeof d==='string')return a+':'+d;return a;}function extractData(a){if(!a||typeof a!=='object')return undefined;const b=a,c=b['data'];return c&&typeof c==='object'?c:undefined;}function buildVerifyInput(a,b){const c=b['structuredContent']??{},d=c['semantic'];return{'expected':a,'actual':{'result_type':typeof c['result_type']==='string'?c['result_type']:undefined,'semantic':d,'error_code':typeof c['error_code']==='string'?c['error_code']:undefined,'error':typeof c['error']==='string'?c['error']:undefined}};}const WRITE_CLASS_TOOLS=new Set(['onchain_operations','goal_operation','industry_pack_operation','wip_file','messenger_operation','bridge_operation']);function isWriteClassTool(a){return WRITE_CLASS_TOOLS['has'](a);}function classifyOutcome(a){if(!a?.['structuredContent'])return'failed';const b=a['structuredContent'],c=typeof b['status']==='string'?b['status']:typeof b['result_type']==='string'?b['result_type']:'';if(c==='error'||c==='failed')return'failed';if(c==='partial')return'partial';return'success';}function extractErrorCode(a){if(!a?.['structuredContent'])return undefined;const b=a['structuredContent'];if(typeof b['error_code']==='string')return b['error_code'];const c=b['error'];if(typeof c==='string')return c;if(c&&typeof c==='object'){const d=c['code'];if(typeof d==='string')return d;}return undefined;}function extractIndustry(a){if(!a||typeof a!=='object')return undefined;const b=a;if(typeof b['industry']==='string')return b['industry'];const c=b['data'];if(c&&typeof c==='object'){const e=c;if(typeof e['industry']==='string')return e['industry'];}return undefined;}const ANTI_PATTERN_NODE_REGEX=/(^|_)(disputed?|refund(?:ed)?|arbitration|arb)(_|$)/i;function runPrePublishChecks(a,b){const c=[],d=[],e=extractOperationType(a,b),g=extractData(b)??{};if(e==='machine'){const h=g['node'],i=Array['isArray'](h)?h:Array['isArray'](h?.['nodes'])?h['nodes']:[];if(i['length']>0x0){for(const l of i){const m=typeof l?.['name']==='string'?l['name']:'';m&&ANTI_PATTERN_NODE_REGEX['test'](m)&&c['push']('R-M1-11:\x20machine\x20node\x20\x22'+m+'\x22\x20models\x20dispute/refund\x20flow\x20—\x20'+'refunds\x20must\x20route\x20via\x20an\x20Allocator\x20triggered\x20by\x20business\x20states,\x20'+'disputes\x20via\x20the\x20separate\x20Arbitration\x20object\x20(off-Machine)');}const j=new Set();for(const o of i){const q=typeof o?.['name']==='string'?o['name']:'';if(!q)continue;j['has'](q)&&c['push']('MC-C-04:\x20duplicate\x20machine\x20node\x20name\x20\x22'+q+'\x22\x20—\x20on-chain\x20will\x20reject\x20the\x20publish\x20transaction'),j['add'](q);}const k=i['some'](r=>Array['isArray'](r?.['pairs'])&&r['pairs']['some'](s=>s?.['prev_node']===''));!k&&c['push']('Machine\x20has\x20no\x20entry\x20pair\x20(prev_node=\x22\x22)\x20—\x20Progress\x20can\x20never\x20advance\x20'+'from\x20the\x20initial\x20state;\x20orders\x20are\x20permanently\x20stuck');for(const r of i){const s=typeof r?.['name']==='string'?r['name']:'?';for(const t of r?.['pairs']??[]){for(const u of t?.['forwards']??[]){const v=u?.['namedOperator']!==undefined&&u?.['namedOperator']!==null,w=u?.['permissionIndex']!==undefined&&u?.['permissionIndex']!==null;!v&&!w&&d['push']('pre_publish:\x20node\x20\x22'+s+'\x22\x20forward\x20\x22'+String(u?.['name']??'?')+'\x22\x20has\x20neither\x20namedOperator\x20nor\x20permissionIndex\x20—\x20no\x20one\x20can\x20advance\x20it');}}}}else d['push']('pre_publish:\x20publishing\x20machine\x20without\x20inline\x20node\x20data\x20—\x20topology\x20not\x20verifiable\x20in\x20this\x20call;\x20'+'verify\x20nodes/pairs/forwards\x20via\x20machineNode2file\x20BEFORE\x20publish\x20(immutable\x20after\x20publish,\x20IMMUT-001)');d['push']('pre_publish:\x20machine\x20nodes/pairs/forwards\x20become\x20immutable\x20after\x20publish\x20(IMMUT-001)');}return e==='service'&&(d['push']('pre_publish:\x20service\x20machine/order_allocators/arbitrations\x20become\x20immutable\x20after\x20publish\x20(IMMUT-002);\x20sales\x20remains\x20modifiable'),g['machine']===undefined&&d['push']('pre_publish:\x20\x27machine\x27\x20not\x20set\x20in\x20this\x20call\x20—\x20if\x20the\x20service\x20was\x20never\x20bound\x20to\x20a\x20published\x20machine,\x20'+'it\x20cannot\x20process\x20orders\x20and\x20CANNOT\x20be\x20fixed\x20after\x20publish'),g['order_allocators']===undefined&&d['push']('pre_publish:\x20\x27order_allocators\x27\x20not\x20set\x20in\x20this\x20call\x20—\x20immutable\x20after\x20publish;\x20'+'orders\x20will\x20have\x20no\x20fund\x20distribution\x20if\x20never\x20configured')),{'critical':c,'warnings':d};}function buildHarnessBlockResult(a,b,c,d,e,f){const g=[...c['map'](i=>'CRITICAL:\x20'+i),...d['map'](i=>'WARN:\x20'+i)]['join']('\x0a'),h='Error:\x20'+b+(g?'\x0a'+g:'')+'\x0aRecovery:\x20'+f;return{'content':[{'type':'text','text':h}],'structuredContent':{'result':{'type':'error','error':b+'\x20[gate='+a+']','error_code':e,'retryable':![],'recovery_hint':f},'message':h}};}function extractCriticalFindingCount(a){const b=a?.['structuredContent'];if(!b)return 0x0;const c=b['semantic'],d=c?.['summary'];if(typeof d?.['critical_count']==='number'&&d['critical_count']>0x0)return d['critical_count'];const e=b['findings']??c?.['findings'];if(Array['isArray'](e))return e['filter'](h=>h?.['severity']==='error')['length'];const f=a?.['content']?.['map'](h=>'text'in h?h['text']:'')['join']('\x0a')??'',g=f['match'](/\[AUDIT ERROR\]/g);return g?g['length']:0x0;}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wowok/agent-mcp",
3
- "version": "2.7.7",
3
+ "version": "2.7.10",
4
4
  "description": "Making It Easy for AI Agents to Communicate, Collaborate, Trade, and Trust.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -50,7 +50,7 @@
50
50
  "license": "Apache-2.0",
51
51
  "dependencies": {
52
52
  "@modelcontextprotocol/server": "^2.0.0",
53
- "@wowok/wowok": "2.7.7",
53
+ "@wowok/wowok": "2.7.10",
54
54
  "lodash": "^4.18.1",
55
55
  "zod": "^4.2.0"
56
56
  },
@@ -62,8 +62,9 @@
62
62
  "vitest": "^2.1.0"
63
63
  },
64
64
  "scripts": {
65
- "clean": "rm -rf dist",
66
- "build": "tsc && pnpm generate:schemas && pnpm obfuscate",
65
+ "clean": "node -e \"fs.rmSync('dist',{recursive:true,force:true})\"",
66
+ "build": "pnpm clean && pnpm check:hygiene && tsc && pnpm generate:schemas && pnpm obfuscate",
67
+ "check:hygiene": "node --import tsx/esm scripts/check-hygiene.ts",
67
68
  "obfuscate": "javascript-obfuscator dist --output dist --config obfuscator.json",
68
69
  "watch": "tsc --watch",
69
70
  "start": "tsx src/index.ts",
@@ -1,44 +0,0 @@
1
- import type { InfoPuzzle } from "./types.js";
2
- import { CUSTOMER_INTELLIGENCE_VERSION } from "./types.js";
3
- import { type TokenDisplayHint } from "../knowledge/fund-layer.js";
4
- export type PostPurchasePhase = "refund_tracking" | "quality_issue" | "merchant_unreachable" | "arbitration_support";
5
- export interface PostPurchaseContext {
6
- phase: PostPurchasePhase;
7
- order_id: string;
8
- service_id: string;
9
- puzzle?: InfoPuzzle;
10
- order_amount?: bigint;
11
- refunded_amount?: bigint;
12
- token?: TokenDisplayHint;
13
- wip_hash?: string;
14
- original_wip_hash?: string;
15
- last_merchant_reply_at?: number;
16
- now: number;
17
- arbitration_initiated?: boolean;
18
- arb_window_days?: number;
19
- evidence?: string[];
20
- has_arbitration?: boolean;
21
- refund_requested?: boolean;
22
- }
23
- export interface PostPurchaseAction {
24
- id: string;
25
- phase: PostPurchasePhase;
26
- priority: "required" | "recommended" | "info";
27
- title: string;
28
- message: string;
29
- next_step?: string;
30
- tool?: string;
31
- deadline?: number;
32
- }
33
- export declare function generatePostPurchaseAdvice(ctx: PostPurchaseContext): PostPurchaseAction[];
34
- export declare function trackRefund(ctx: PostPurchaseContext): PostPurchaseAction[];
35
- export declare function handleQualityIssue(ctx: PostPurchaseContext): PostPurchaseAction[];
36
- export declare function handleMerchantUnreachable(ctx: PostPurchaseContext): PostPurchaseAction[];
37
- export declare function arbitrationSupport(ctx: PostPurchaseContext): PostPurchaseAction[];
38
- export declare function generateArbitrationTemplate(ctx: PostPurchaseContext): {
39
- title: string;
40
- description: string;
41
- evidence_required: string[];
42
- claim: string;
43
- };
44
- export { CUSTOMER_INTELLIGENCE_VERSION };
@@ -1 +0,0 @@
1
- import{CUSTOMER_INTELLIGENCE_VERSION}from'./types.js';import{formatAmountText}from'../knowledge/fund-layer.js';export function generatePostPurchaseAdvice(a){switch(a['phase']){case'refund_tracking':return trackRefund(a);case'quality_issue':return handleQualityIssue(a);case'merchant_unreachable':return handleMerchantUnreachable(a);case'arbitration_support':return arbitrationSupport(a);}}export function trackRefund(a){const b=[],c=a['order_amount']??0x0n,d=a['refunded_amount']??0x0n;if(c>0x0n&&d>=c)return b['push']({'id':'refund_complete','phase':'refund_tracking','priority':'info','title':'Refund\x20complete','message':'✅\x20Order\x20'+a['order_id']+'\x20refund\x20fully\x20received\x20('+formatAmountText(d,a['token']?.['decimals'],a['token']?.['symbol'])+')','next_step':'You\x20can\x20close\x20post-purchase\x20tracking;\x20recommend\x20submitting\x20an\x20order\x20review'}),b;if(d>0x0n&&d<c){const f=c-d;return b['push']({'id':'refund_partial','phase':'refund_tracking','priority':'required','title':'Refund\x20incomplete','message':'⚠️\x20Order\x20'+a['order_id']+'\x20only\x20refunded\x20'+formatAmountText(d,a['token']?.['decimals'],a['token']?.['symbol'])+'\x20of\x20'+formatAmountText(c,a['token']?.['decimals'],a['token']?.['symbol'])+';\x20the\x20difference\x20of\x20'+formatAmountText(f,a['token']?.['decimals'],a['token']?.['symbol'])+'\x20has\x20not\x20been\x20received','next_step':'Urge\x20the\x20merchant\x20via\x20Messenger\x20to\x20make\x20up\x20the\x20difference,\x20or\x20initiate\x20arbitration\x20to\x20recover\x20it','tool':'messenger_send'}),b;}if(d===0x0n&&a['refund_requested']===!![])return b['push']({'id':'refund_waiting','phase':'refund_tracking','priority':'recommended','title':'Waiting\x20for\x20merchant\x20refund','message':'⏳\x20Order\x20'+a['order_id']+'\x20refund\x20has\x20been\x20requested;\x20waiting\x20for\x20the\x20merchant\x20to\x20trigger\x20the\x20refund\x20Allocator','next_step':'If\x20not\x20received\x20within\x2048\x20hours,\x20recommend\x20urging\x20via\x20Messenger\x20or\x20initiating\x20arbitration','tool':'query_toolkit'}),b;const e=a['puzzle']?.['workflow_analysis']?.['has_refund_path']??![];if(d===0x0n&&a['refund_requested']!==!![]&&e)return b['push']({'id':'refund_trigger_available','phase':'refund_tracking','priority':'recommended','title':'Can\x20trigger\x20refund\x20via\x20Allocator','message':'ℹ️\x20Order\x20'+a['order_id']+'\x20has\x20a\x20refund\x20path;\x20you\x20can\x20trigger\x20the\x20refund\x20Allocator\x20to\x20refund','next_step':'Query\x20the\x20refund\x20Allocator\x20trigger\x20conditions\x20via\x20query_toolkit\x20and\x20apply\x20for\x20a\x20refund','tool':'query_toolkit'}),b;return b['push']({'id':'refund_no_path','phase':'refund_tracking','priority':'required','title':'No\x20refund\x20path;\x20arbitration\x20required','message':'🔴\x20Order\x20'+a['order_id']+'\x20has\x20no\x20refund\x20Allocator\x20path;\x20funds\x20must\x20be\x20recovered\x20via\x20arbitration','next_step':'Switch\x20to\x20the\x20arbitration_support\x20phase\x20and\x20submit\x20an\x20arbitration\x20application','tool':'mark_arbitration'}),b;}export function handleQualityIssue(a){const b=[];a['original_wip_hash']&&a['wip_hash']&&a['original_wip_hash']!==a['wip_hash']&&b['push']({'id':'quality_wip_mismatch','phase':'quality_issue','priority':'required','title':'WIP\x20hash\x20mismatch\x20detected','message':'🔴\x20Order\x20'+a['order_id']+'\x20WIP\x20hash\x20differs\x20from\x20the\x20one\x20at\x20order\x20time;\x20the\x20deliverable\x20may\x20have\x20been\x20changed.\x0a'+('\x20\x20Original:\x20'+a['original_wip_hash']+'\x0a')+('\x20\x20Current:\x20'+a['wip_hash']),'next_step':'Re-verify\x20the\x20WIP\x20via\x20query_toolkit\x20and\x20initiate\x20arbitration\x20immediately','tool':'query_toolkit'});!a['wip_hash']&&b['push']({'id':'quality_wip_missing','phase':'quality_issue','priority':'recommended','title':'Require\x20merchant\x20to\x20provide\x20WIP\x20hash\x20verification','message':'⚠️\x20Order\x20'+a['order_id']+'\x20is\x20missing\x20the\x20current\x20WIP\x20hash;\x20deliverable\x20integrity\x20cannot\x20be\x20verified','next_step':'Request\x20the\x20latest\x20WIP\x20hash\x20via\x20Messenger\x20and\x20compare\x20it\x20with\x20the\x20original\x20hash','tool':'messenger_send'});const c=a['evidence']?.['length']??0x0;if(c===0x0)b['push']({'id':'quality_collect_evidence','phase':'quality_issue','priority':'recommended','title':'Collect\x20evidence:\x20screenshots,\x20chat\x20logs,\x20deliverable\x20samples','message':'📋\x20Order\x20'+a['order_id']+'\x20has\x20no\x20evidence\x20collected\x20yet.\x20Recommend\x20collecting\x20immediately:\x0a'+'\x20\x20•\x20Deliverable\x20screenshots\x20/\x20screen\x20recordings\x0a'+'\x20\x20•\x20Messenger\x20chat\x20logs\x20(export\x20WTS\x20evidence)\x0a'+'\x20\x20•\x20Deliverable\x20samples\x20or\x20test\x20results','next_step':'Generate\x20a\x20WTS\x20evidence\x20file\x20via\x20messenger_mark_evidence','tool':'messenger_mark_evidence'});else c<0x3&&b['push']({'id':'quality_supplement_evidence','phase':'quality_issue','priority':'recommended','title':'Supplement\x20more\x20evidence\x20(currently\x20'+c+'\x20item(s);\x20recommend\x20≥3)','message':'⚠️\x20Order\x20'+a['order_id']+'\x20has\x20collected\x20'+c+'\x20item(s)\x20of\x20evidence;\x20recommend\x20supplementing\x20to\x20at\x20least\x203\x20to\x20strengthen\x20the\x20arbitration\x20case.\x0a'+('\x20\x20Current\x20evidence:\x20'+(a['evidence']?.['join']('\x20/\x20')??'none')),'next_step':'Add\x20screenshots,\x20chat\x20logs,\x20or\x20third-party\x20appraisal\x20reports','tool':'messenger_mark_evidence'});return b['length']===0x0&&b['push']({'id':'quality_ok','phase':'quality_issue','priority':'info','title':'Quality\x20verification\x20passed','message':'✅\x20Order\x20'+a['order_id']+'\x20WIP\x20hash\x20matches\x20the\x20original,\x20and\x20evidence\x20is\x20complete\x20('+c+'\x20item(s))','next_step':'You\x20can\x20proceed\x20with\x20the\x20acceptance\x20workflow'}),b;}export function handleMerchantUnreachable(a){const b=[],c=a['last_merchant_reply_at'],d=c!==undefined?Math['floor']((a['now']-c)/(0x18*0x3c*0x3c*0x3e8)):Infinity,e=a['has_arbitration']??a['puzzle']?.['workflow_analysis']?.['has_arbitration_path']??![];if(d>0x7)return e?b['push']({'id':'unreachable_arb_recommend','phase':'merchant_unreachable','priority':'required','title':'Recommend\x20initiating\x20arbitration','message':'🔴\x20Order\x20'+a['order_id']+'\x20merchant\x20has\x20been\x20unreachable\x20for\x20'+d+'\x20days;\x20funds\x20may\x20be\x20frozen.\x20Recommend\x20initiating\x20arbitration\x20immediately.','next_step':'Switch\x20to\x20the\x20arbitration_support\x20phase\x20and\x20submit\x20an\x20arbitration\x20application','tool':'mark_arbitration'}):b['push']({'id':'unreachable_no_arb','phase':'merchant_unreachable','priority':'required','title':'No\x20arbitration\x20channel;\x20funds\x20may\x20be\x20frozen;\x20recommend\x20contacting\x20WoWok\x20officials','message':'🔴\x20Order\x20'+a['order_id']+'\x20merchant\x20has\x20been\x20unreachable\x20for\x20'+d+'\x20days,\x20and\x20no\x20arbitration\x20channel\x20is\x20configured;\x20funds\x20may\x20be\x20frozen\x20long-term.\x20Recommend\x20contacting\x20WoWok\x20officials\x20for\x20assistance.','next_step':'Contact\x20WoWok\x20official\x20support\x20and\x20provide\x20the\x20order\x20and\x20communication\x20records'}),b;if(d>0x3)return b['push']({'id':'unreachable_urge','phase':'merchant_unreachable','priority':'recommended','title':'Persistent\x20no\x20response;\x20send\x20a\x20follow-up\x20message','message':'⚠️\x20Order\x20'+a['order_id']+'\x20merchant\x20has\x20not\x20replied\x20for\x20'+d+'\x20days;\x20recommend\x20sending\x20a\x20follow-up\x20message\x20via\x20Messenger\x20and\x20keeping\x20a\x20record','next_step':'If\x20there\x20is\x20still\x20no\x20reply\x20within\x203\x20days,\x20initiate\x20arbitration','tool':'messenger_send'}),b;return b['push']({'id':'unreachable_wait','phase':'merchant_unreachable','priority':'info','title':'Merchant\x20may\x20be\x20busy;\x20await\x20reply','message':'ℹ️\x20Order\x20'+a['order_id']+'\x20merchant\x20'+(d===Infinity?'has\x20not\x20replied\x20yet':'has\x20not\x20replied\x20for\x20'+d+'\x20day(s)')+';\x20may\x20be\x20busy.\x20Recommend\x20waiting\x20another\x201-2\x20days','next_step':'If\x20there\x20is\x20still\x20no\x20reply\x20after\x203\x20days,\x20send\x20a\x20follow-up\x20message'}),b;}export function arbitrationSupport(a){const b=[],c=a['arbitration_initiated']===!![],d=a['evidence']?.['length']??0x0,e=a['arb_window_days']??0x0;if(!c)return b['push']({'id':'arb_not_initiated','phase':'arbitration_support','priority':'required','title':'Recommend\x20initiating\x20an\x20arbitration\x20application','message':'🔔\x20Order\x20'+a['order_id']+'\x20has\x20not\x20initiated\x20arbitration.\x20Recommend\x20generating\x20an\x20arbitration\x20application\x20template\x20and\x20submitting\x20it\x20immediately.','next_step':'Call\x20generateArbitrationTemplate\x20to\x20generate\x20the\x20application\x20template','tool':'mark_arbitration'}),e>0x0&&e<=0x7&&b['push']({'id':'arb_window_closing_soon','phase':'arbitration_support','priority':'required','title':'Arbitration\x20window\x20will\x20close\x20in\x20'+e+'\x20day(s)','message':'⏰\x20Order\x20'+a['order_id']+'\x20arbitration\x20application\x20window\x20has\x20only\x20'+e+'\x20day(s)\x20left;\x20please\x20submit\x20the\x20arbitration\x20application\x20as\x20soon\x20as\x20possible','next_step':'Submit\x20the\x20arbitration\x20application\x20immediately','deadline':a['now']+e*0x18*0x3c*0x3c*0x3e8}),b;e>0x0&&e<=0x3&&b['push']({'id':'arb_window_urgent','phase':'arbitration_support','priority':'required','title':'Arbitration\x20window\x20about\x20to\x20close','message':'⏰\x20Order\x20'+a['order_id']+'\x20arbitration\x20window\x20has\x20only\x20'+e+'\x20day(s)\x20left;\x20please\x20supplement\x20evidence\x20and\x20follow\x20up\x20on\x20voting\x20progress\x20as\x20soon\x20as\x20possible','next_step':'Immediately\x20supplement\x20evidence\x20and\x20query\x20arbitration\x20progress','tool':'query_toolkit','deadline':a['now']+e*0x18*0x3c*0x3c*0x3e8});if(d===0x0)b['push']({'id':'arb_no_evidence','phase':'arbitration_support','priority':'required','title':'Supplement\x20evidence','message':'📋\x20Order\x20'+a['order_id']+'\x20arbitration\x20has\x20been\x20initiated\x20but\x20no\x20evidence\x20is\x20recorded.\x20Recommend\x20collecting\x20immediately:\x0a'+'\x20\x20•\x20Messenger\x20chat\x20logs\x0a'+'\x20\x20•\x20WIP\x20hash\x20comparison\x20records\x0a'+'\x20\x20•\x20Progress\x20stall\x20screenshots','next_step':'Generate\x20an\x20evidence\x20file\x20via\x20messenger_mark_evidence\x20and\x20submit\x20it','tool':'messenger_mark_evidence'});else d<0x3&&b['push']({'id':'arb_supplement_evidence','phase':'arbitration_support','priority':'recommended','title':'Supplement\x20more\x20evidence\x20to\x20strengthen\x20the\x20arbitration\x20case\x20(currently\x20'+d+'\x20item(s))','message':'⚠️\x20Order\x20'+a['order_id']+'\x20has\x20submitted\x20'+d+'\x20item(s)\x20of\x20evidence;\x20recommend\x20supplementing\x20to\x20at\x20least\x203.\x0a'+('\x20\x20Current\x20evidence:\x20'+(a['evidence']?.['join']('\x20/\x20')??'none')),'next_step':'Add\x20third-party\x20appraisals,\x20chat\x20logs,\x20or\x20deliverable\x20screenshots','tool':'messenger_mark_evidence'});return d>=0x3&&(e===0x0||e>0x3)&&b['push']({'id':'arb_monitor_progress','phase':'arbitration_support','priority':'info','title':'Arbitration\x20in\x20progress;\x20continuously\x20monitor\x20voting\x20progress','message':'📊\x20Order\x20'+a['order_id']+'\x20arbitration\x20has\x20been\x20initiated,\x20with\x20'+d+'\x20item(s)\x20of\x20evidence\x20complete.\x20Recommend\x20periodically\x20querying\x20voting\x20progress\x20and\x20preparing\x20supplemental\x20evidence.','next_step':'Query\x20arbitration\x20voting\x20status\x20via\x20query_toolkit','tool':'query_toolkit'}),b;}export function generateArbitrationTemplate(a){const b=phaseToLabel(a['phase']),c=a['evidence']?.['length']??0x0,d='Order\x20'+a['order_id']+'\x20Arbitration\x20Application\x20—\x20'+b,e=[];e['push']('Order\x20ID:\x20'+a['order_id']),e['push']('Service\x20ID:\x20'+a['service_id']),e['push']('Dispute\x20type:\x20'+b);switch(a['phase']){case'refund_tracking':e['push']('Dispute\x20summary:\x20The\x20merchant\x20did\x20not\x20refund\x20as\x20required.\x20Order\x20amount\x20'+(a['order_amount']!==undefined?formatAmountText(a['order_amount'],a['token']?.['decimals'],a['token']?.['symbol']):'unknown')+',\x20refunded\x20'+formatAmountText(a['refunded_amount']??0x0n,a['token']?.['decimals'],a['token']?.['symbol'])+'.');break;case'quality_issue':e['push']('Dispute\x20summary:\x20The\x20deliverable\x20has\x20quality\x20issues.\x20Original\x20WIP\x20hash:\x20'+(a['original_wip_hash']??'unknown')+',\x20current:\x20'+(a['wip_hash']??'unknown')+'.');break;case'merchant_unreachable':e['push']('Dispute\x20summary:\x20The\x20merchant\x20has\x20been\x20unreachable\x20for\x20a\x20long\x20time.\x20Last\x20reply\x20time:\x20'+(a['last_merchant_reply_at']?new Date(a['last_merchant_reply_at'])['toISOString']():'unknown')+'.');break;case'arbitration_support':e['push']('Dispute\x20summary:\x20See\x20the\x20phase\x20records\x20above.');break;}e['push']('Evidence\x20collected:\x20'+c+'\x20item(s)');const f=e['join']('\x0a'),g=['Messenger\x20communication\x20logs\x20(export\x20WTS\x20evidence\x20file)','Order\x20creation\x20and\x20payment\x20proof','Progress\x20node\x20advancement\x20records'];switch(a['phase']){case'quality_issue':g['push']('WIP\x20hash\x20comparison\x20record\x20(original\x20vs\x20current)'),g['push']('Deliverable\x20screenshots\x20or\x20samples');break;case'merchant_unreachable':g['push']('Unreachable\x20duration\x20record\x20(based\x20on\x20last_merchant_reply_at)'),g['push']('Follow-up\x20message\x20sending\x20records');break;case'refund_tracking':g['push']('Refund\x20application\x20record'),g['push']('Refund\x20difference\x20calculation\x20proof');break;}const h=buildClaim(a);return{'title':d,'description':f,'evidence_required':g,'claim':h};}function phaseToLabel(a){switch(a){case'refund_tracking':return'Refund\x20dispute';case'quality_issue':return'Quality\x20issue';case'merchant_unreachable':return'Merchant\x20unreachable';case'arbitration_support':return'Arbitration\x20support';}}function buildClaim(a){switch(a['phase']){case'refund_tracking':{const b=a['order_amount']??0x0n,c=a['refunded_amount']??0x0n,d=b-c;if(c===0x0n)return'Request\x20the\x20arbitrator\x20to\x20order\x20a\x20full\x20refund\x20('+formatAmountText(b,a['token']?.['decimals'],a['token']?.['symbol'])+').';return'Request\x20the\x20arbitrator\x20to\x20order\x20the\x20merchant\x20to\x20make\x20up\x20the\x20refund\x20difference\x20('+formatAmountText(d,a['token']?.['decimals'],a['token']?.['symbol'])+').';}case'quality_issue':return'Request\x20the\x20arbitrator\x20to\x20order\x20the\x20merchant\x20to\x20redeliver\x20a\x20deliverable\x20that\x20meets\x20the\x20agreement,\x20or\x20to\x20fully\x20refund.';case'merchant_unreachable':return'Request\x20the\x20arbitrator\x20to\x20order\x20the\x20merchant\x20to\x20fulfill\x20the\x20order\x20obligations\x20or\x20refund\x20all\x20payments,\x20and\x20to\x20compensate\x20for\x20losses\x20caused\x20by\x20being\x20unreachable.';case'arbitration_support':return'Request\x20the\x20arbitrator\x20to\x20support\x20this\x20party\x27s\x20claim,\x20and\x20based\x20on\x20the\x20attached\x20evidence,\x20rule\x20that\x20the\x20merchant\x20breached\x20the\x20contract\x20and\x20order\x20compensation.';}}export{CUSTOMER_INTELLIGENCE_VERSION};
@@ -1,8 +0,0 @@
1
- import type { Checkpoint } from "./types.js";
2
- export declare function saveCheckpoint(cp: Checkpoint): void;
3
- export declare function loadCheckpoint(taskId: string, checkpointId: string): Checkpoint | null;
4
- export declare function loadLatestCheckpoint(taskId: string): Checkpoint | null;
5
- export declare function listCheckpoints(taskId: string): Checkpoint[];
6
- export declare function listTasks(): string[];
7
- export declare function deleteCheckpoint(taskId: string, checkpointId: string): void;
8
- export declare function createCheckpoint(taskId: string, phase: string, phaseStatus: Checkpoint["phase_status"], odgSnapshot: Checkpoint["odg_snapshot"], userDecisions: Record<string, unknown>, operationLog: Checkpoint["operation_log"], nextPhase: string, semanticSummary: Checkpoint["semantic_summary"]): Checkpoint;
@@ -1 +0,0 @@
1
- import{existsSync,mkdirSync,writeFileSync,readFileSync,readdirSync,unlinkSync,openSync,closeSync}from'fs';import{join}from'path';import{getWowMcpDir}from'@wowok/wowok';const CHECKPOINT_ROOT=join(getWowMcpDir(),'checkpoints');function getTaskDir(a){return join(CHECKPOINT_ROOT,a);}function getCheckpointPath(a,b){return join(getTaskDir(a),b+'.json');}function getLatestPath(a){return join(getTaskDir(a),'latest.json');}function acquireLock(a){const b=a+'.lock';try{const c=openSync(b,'wx');return closeSync(c),!![];}catch{return![];}}function releaseLock(a){const b=a+'.lock';try{unlinkSync(b);}catch{}}export function saveCheckpoint(a){const b=getTaskDir(a['task_id']);!existsSync(b)&&mkdirSync(b,{'recursive':!![]});const c=getCheckpointPath(a['task_id'],a['checkpoint_id']),d=getLatestPath(a['task_id']);if(!acquireLock(c))throw new Error('Cannot\x20acquire\x20lock\x20for\x20checkpoint\x20'+a['checkpoint_id']+'\x20—\x20another\x20process\x20may\x20be\x20writing');try{writeFileSync(c,JSON['stringify'](a,null,0x2),'utf8'),writeFileSync(d,JSON['stringify'](a,null,0x2),'utf8');}finally{releaseLock(c);}}export function loadCheckpoint(a,b){const c=getCheckpointPath(a,b);if(!existsSync(c))return null;try{const d=readFileSync(c,'utf8');return JSON['parse'](d);}catch{return null;}}export function loadLatestCheckpoint(a){const b=getLatestPath(a);if(!existsSync(b))return null;try{const c=readFileSync(b,'utf8');return JSON['parse'](c);}catch{return null;}}export function listCheckpoints(a){const b=getTaskDir(a);if(!existsSync(b))return[];const c=readdirSync(b)['filter'](d=>d['endsWith']('.json')&&d!=='latest.json')['sort']();return c['map'](d=>{try{const e=readFileSync(join(b,d),'utf8');return JSON['parse'](e);}catch{return null;}})['filter'](d=>d!==null);}export function listTasks(){if(!existsSync(CHECKPOINT_ROOT))return[];return readdirSync(CHECKPOINT_ROOT,{'withFileTypes':!![]})['filter'](a=>a['isDirectory']())['map'](a=>a['name']);}export function deleteCheckpoint(a,b){const c=getCheckpointPath(a,b);if(existsSync(c)){if(!acquireLock(c))throw new Error('Cannot\x20acquire\x20lock\x20for\x20deletion\x20of\x20'+b);try{unlinkSync(c);}finally{releaseLock(c);}}}export function createCheckpoint(a,b,c,d,e,f,g,h){const i=new Date()['toISOString']()['replace'](/[:.]/g,'-');return{'checkpoint_id':'CP-'+b['replace'](/\s+/g,'')+'-'+c+'-'+i,'task_id':a,'timestamp':new Date()['toISOString'](),'phase':b,'phase_status':c,'odg_snapshot':d,'user_decisions':e,'operation_log':f,'next_phase':g,'semantic_summary':h};}
@@ -1,66 +0,0 @@
1
- import { type DeploymentDocInput } from "../project/deployment-doc.js";
2
- export interface DeploymentScanInput {
3
- project_name: string;
4
- document_path?: string;
5
- deployment_doc?: DeploymentDocInput;
6
- project_graph?: unknown;
7
- user_confirmed_high_risks?: string[];
8
- }
9
- export interface Finding {
10
- check_id: string;
11
- severity: "critical" | "warning" | "info";
12
- message: string;
13
- location?: string;
14
- suggestion?: string;
15
- }
16
- export interface DeploymentScanResult {
17
- project_name: string;
18
- document_path?: string;
19
- overall_readiness: "ready" | "blocked" | "warnings";
20
- findings: Finding[];
21
- coverage: {
22
- objects_defined: number;
23
- objects_with_scenario: number;
24
- testnet_steps: number;
25
- mainnet_steps: number;
26
- verification_items: number;
27
- };
28
- checks: {
29
- D01_object_defined: "pass" | "fail";
30
- D02_dependency_complete: "pass" | "fail";
31
- D03_scenario_covered: "pass" | "fail";
32
- D04_testnet_topo_order: "pass" | "fail";
33
- D05_testnet_network: "pass" | "fail";
34
- D06_testnet_replace: "pass" | "fail";
35
- D07_permission_index: "pass" | "fail";
36
- D08_guard_gen_passport: "pass" | "fail";
37
- D09_machine_node_count: "pass" | "fail";
38
- D10_substep_coherence: "pass" | "fail";
39
- D11_mainnet_testnet_match: "pass" | "fail";
40
- D12_mainnet_network: "pass" | "fail";
41
- D13_mainnet_replace: "pass" | "fail";
42
- D14_testnet_verification: "pass" | "fail";
43
- D15_mainnet_verification: "pass" | "fail";
44
- D16_no_critical_risk: "pass" | "fail";
45
- D17_no_high_risk: "pass" | "fail";
46
- D18_completeness_checklist: "pass" | "fail";
47
- D19_machine_entry_forward: "pass" | "fail";
48
- D20_service_compensation_fund: "pass" | "fail";
49
- };
50
- scanned_at: number;
51
- scanner_version: string;
52
- }
53
- export declare function analyzeObjectDependencyCompleteness(input: DeploymentScanInput): Finding[];
54
- export declare function analyzeSubstepCoherence(input: DeploymentScanInput): Finding[];
55
- export declare function analyzeNetworkConsistency(input: DeploymentScanInput): Finding[];
56
- export declare function analyzeNamingConvention(input: DeploymentScanInput): Finding[];
57
- export declare function analyzePermissionIndexRange(input: DeploymentScanInput): Finding[];
58
- export declare function analyzeScenarioCoverage(input: DeploymentScanInput): Finding[];
59
- export declare function analyzeVerificationChecklist(input: DeploymentScanInput): Finding[];
60
- export declare function analyzeDeployableReadiness(input: DeploymentScanInput): Finding[];
61
- export declare function analyzeMachineAndServiceReadiness(input: DeploymentScanInput): Finding[];
62
- export declare function scanDeployment(input: DeploymentScanInput): DeploymentScanResult;
63
- export declare function isReady(scan: DeploymentScanResult): boolean;
64
- export declare function isBlocked(scan: DeploymentScanResult): boolean;
65
- export declare function summarizeScan(scan: DeploymentScanResult): string;
66
- export declare const DEPLOYMENT_SCANNER_VERSION = "2.0.0";
@@ -1 +0,0 @@
1
- import*as a100a from'fs';import{MAX_NODE_COUNT,USER_DEFINED_PERM_INDEX_START}from'./onchain-constants.js';import{traceSubsteps}from'../project/substep-trace.js';import{aggregateProjectRisks}from'../project/risk-aggregator.js';function add(a,b,c,d,e,f){a['push']({'check_id':b,'severity':c,'message':d,'location':e,'suggestion':f});}function fromDeploymentDocInput(a){const b=a['version']??'v1',c=a['project_prefix']+'_'+b,d=a['steps']['map'](k=>k['entry_id']),e=[],f=[];for(const k of a['steps']){const l=k['network_phase'];if(l==='both'||l==='testnet')e['push'](synthesizeBlock(k,a,'testnet'));if(l==='both'||l==='mainnet')f['push'](synthesizeBlock(k,a,'mainnet'));}const g=new Map();for(let m=0x1;m<=0xb;m++)g['set']('V-T-'+String(m)['padStart'](0x2,'0'),![]);const h=new Map();for(let n=0x1;n<=0x5;n++)h['set']('V-M-'+String(n)['padStart'](0x2,'0'),![]);const j=new Map();for(let o=0x1;o<=0x14;o++)j['set']('D-'+String(o)['padStart'](0x2,'0'),![]);return{'project_name':a['project_prefix'],'version':b,'namespace_tag':c,'objects':a['objects']??[],'edges':a['edges']??[],'steps':a['steps']??[],'scenarios':a['scenarios']??[],'testnet_blocks':e,'mainnet_blocks':f,'testnet_verification':g,'mainnet_verification':h,'completeness_checklist':j,'topological_order':d};}function synthesizeBlock(a,b,c){const d=b['objects']['find'](h=>h['entry_id']===a['entry_id']),e=d?.['name']??a['object_type']+'_'+a['step'],f=c==='testnet',g=c==='testnet'?'T':'M';return{'step':a['step'],'operation_type':a['object_type'],'data':{'object':{'name':e,'replaceExistName':f},'description':a['operation']+'\x20'+a['object_type']+'\x20(step\x20'+a['step']+')'},'env':{'account':b['project_prefix']+'_merchant_'+c,'network':c,'replaceExistName':f,'confirmed':!![]},'substeps':[{'id':''+g+a['step']+'.1','name':a['operation']+'\x20'+a['object_type'],'inputs':[],'outputs':[''+g+a['step']+'.output']}]};}function parseDeploymentMarkdown(a){const c=a100a['readFileSync'](a,'utf-8'),d=c['split']('\x0a'),e=parseTable(d,'Object\x20List',t=>({'entry_id':t['entry_id']??'','object_type':t['object_type'],'name':t['name']??'','reused_from':t['reused_from']||undefined,'publish_required':t['publish_required']==='true','description':t['description']||undefined}))['filter'](t=>t['entry_id']&&t['name']),f=parseTable(d,'Dependency\x20Edges',t=>({'from':t['from']??'','to':t['to']??'','edge_kind':t['edge_kind']??'','field_path':t['field_path']??'','required_at_publish':t['required_at_publish']==='true'}))['filter'](t=>t['from']&&t['to']),g=parseTable(d,'Scenario\x20Matrix',t=>({'scenario_id':t['scenario_id']??'','description':t['description']??'','primary_object':t['primary_object']??'','supporting_objects':(t['supporting_objects']??'')['split'](',')['map'](u=>u['trim']())['filter'](Boolean),'test_step_refs':t['test_step_refs']?t['test_step_refs']['split'](',')['map'](u=>u['trim']())['filter'](Boolean):undefined}))['filter'](t=>t['scenario_id']),h=parseTable(d,'Topological\x20Execution\x20Plan',t=>{const u=t['network_phase']==='testnet'||t['network_phase']==='mainnet'||t['network_phase']==='both'?t['network_phase']:'both';return{'step':parseInt(t['step']??'0',0xa)||0x0,'object_type':t['object_type'],'operation':t['operation']??'','substep_count':parseInt(t['substep_count']??'0',0xa)||0x0,'depends_on':(t['depends_on']??'')['replace'](/[\[\]]/g,'')['split'](',')['map'](v=>v['trim']())['filter'](Boolean)['map'](v=>parseInt(v,0xa)||0x0),'entry_id':t['entry_id']??'','network_phase':u};})['filter'](t=>t['step']>0x0),i=extractJsonBlocks(d),j=[],k=[];for(const t of i){if(t['env']?.['network']==='mainnet')k['push'](t);else j['push'](t);}const l=parseStatusMap(d,'V-T-'),m=parseStatusMap(d,'V-M-'),n=parseStatusMap(d,'D-','Completeness\x20Checklist'),o=parseMetaTable(d),p=o['get']('project_name')??deriveProjectFromPath(a),q=o['get']('version')??'v1',r=o['get']('namespace\x20tag')??o['get']('namespace_tag')??p+'_'+q,s=h['map'](u=>u['entry_id']);return{'project_name':p,'version':q,'namespace_tag':r,'objects':e,'edges':f,'steps':h,'scenarios':g,'testnet_blocks':j,'mainnet_blocks':k,'testnet_verification':l,'mainnet_verification':m,'completeness_checklist':n,'topological_order':s};}function parseTable(a,b,c){return parseMarkdownTable(a,b)['map'](c);}function parseMarkdownTable(a,b){const c=[];for(let d=0x0;d<a['length'];d++){if(!a[d]['includes'](b))continue;let e=-0x1;for(let j=d;j<Math['min'](d+0xa,a['length']);j++){if(a[j]['trim']()['startsWith']('|')&&a[j]['includes']('|')){e=j;break;}}if(e===-0x1)break;const f=splitTableRow(a[e]);let g=e+0x1;if(g<a['length']&&/^\s*\|[\s-:|]+\|\s*$/['test'](a[g]))g++;while(g<a['length']&&a[g]['trim']()['startsWith']('|')){const l=splitTableRow(a[g]);if(l['length']===0x0)break;const m={};for(let n=0x0;n<f['length'];n++)m[f[n]['trim']()]=(l[n]??'')['trim']();c['push'](m),g++;}break;}return c;}function splitTableRow(a){const b=a['trim']();if(!b['startsWith']('|'))return[];return b['slice'](0x1,b['endsWith']('|')?-0x1:undefined)['split']('|');}function parseStatusMap(a,b,c){const d=new Map(),e=c?parseMarkdownTable(a,c):parseMarkdownTable(a,'Verification\x20Checklist');for(const f of e){const g=f['verification_id']??f['check_id']??'';if(!g['startsWith'](b))continue;const h=(f['status']??'')['trim']();d['set'](g,h['includes']('✅')||h['toLowerCase']()['includes']('pass'));}return d;}function parseMetaTable(a){const b=new Map();for(const c of parseMarkdownTable(a,'Project\x20Metadata')){const d=c['field']??'',e=c['value']??'';if(d)b['set'](d['trim'](),e['trim']());}return b;}function extractJsonBlocks(a){const b=[];let c=0x0;while(c<a['length']){if(a[c]['trim']()['startsWith']('```json')){const d=[];let e=c+0x1;while(e<a['length']&&!a[e]['trim']()['startsWith']('```')){d['push'](a[e]),e++;}try{const f=JSON['parse'](d['join']('\x0a'));if(f&&typeof f==='object'&&'operation_type'in f){const g=f['env']??{},h=f['data']??{},k=f['substeps'],l=Array['isArray'](k)?k['map'](normalizeSubstep):undefined;b['push']({'step':typeof f['step']==='number'?f['step']:0x0,'operation_type':String(f['operation_type']??''),'data':h,'env':{'network':typeof g['network']==='string'?g['network']:undefined,'replaceExistName':typeof g['replaceExistName']==='boolean'?g['replaceExistName']:undefined,'forceClaim':typeof g['forceClaim']==='boolean'?g['forceClaim']:undefined,'confirmed':typeof g['confirmed']==='boolean'?g['confirmed']:undefined,...g},'substeps':l});}}catch{}c=e+0x1;}else c++;}return b;}function normalizeSubstep(a){if(!a||typeof a!=='object')return{'id':'','inputs':[],'outputs':[]};const b=a;return{'id':String(b['id']??''),'name':typeof b['name']==='string'?b['name']:undefined,'inputs':Array['isArray'](b['inputs'])?b['inputs']['map'](String):[],'outputs':Array['isArray'](b['outputs'])?b['outputs']['map'](String):[]};}function deriveProjectFromPath(a){const b=a['split'](/[\\/]/)['pop']()??'project';return b['replace'](/_v\d+_deployment\.md$/i,'')['replace'](/\.md$/i,'');}function*walkPermissionIndices(a){if(a===null||a===undefined||typeof a!=='object')return;if(Array['isArray'](a)){for(const c of a)yield*walkPermissionIndices(c);return;}const b=a;if(typeof b['permissionIndex']==='number')yield b['permissionIndex'];if(typeof b['permission_index']==='number')yield b['permission_index'];if(typeof b['index']==='number'&&b['__isPermission']===!![])yield b['index'];for(const d of Object['values'](b))yield*walkPermissionIndices(d);}function countMachineNodes(a){const b=a['data']?.['node'],c=b?.['nodes'];return Array['isArray'](c)?c['length']:0x0;}function deriveEntryIdFromBlock(a,b){const c=a['data']['object'];let d;if(typeof c==='string')d=c;else{if(c&&typeof c==='object'){const e=c;if(typeof e['name']==='string')d=e['name'];}}if(!d)return undefined;return b['objects']['find'](f=>f['name']===d)?.['entry_id'];}export function analyzeObjectDependencyCompleteness(a){const b=[];try{const c=normalizeInput(a);if(!c)return add(b,'D-01','critical','No\x20deployment\x20document\x20provided\x20(need\x20document_path\x20or\x20deployment_doc)'),b;const d=new Set(c['objects']['map'](h=>h['entry_id'])),f=new Set();for(const h of c['edges']){f['add'](h['from']),f['add'](h['to']);}for(const i of f){if(i['endsWith'](':*'))continue;!d['has'](i)&&add(b,'D-01','critical','Object\x20\x27'+i+'\x27\x20is\x20referenced\x20in\x20§1.2\x20but\x20not\x20defined\x20in\x20§1.1','§1.2\x20Dependency\x20Edges','Add\x20\x27'+i+'\x27\x20to\x20§1.1\x20Object\x20List\x20or\x20remove\x20the\x20reference.');}for(const j of c['edges']){const k=d['has'](j['from'])||j['from']['endsWith'](':*'),l=d['has'](j['to'])||j['to']['endsWith'](':*');(!k||!l)&&add(b,'D-02','critical','Dangling\x20dependency:\x20'+j['from']+'\x20→\x20'+j['to']+'\x20(edge_kind=\x27'+j['edge_kind']+'\x27)','§1.2\x20Dependency\x20Edges','Create\x20the\x20missing\x20object\x20or\x20remove\x20the\x20edge.');}for(const m of c['objects']['filter'](n=>n['object_type']==='guard')){const n=c['testnet_blocks']['some'](p=>p['operation_type']==='guard'&&p['data']['object']?.['name']===m['name']),o=c['testnet_blocks']['some'](p=>p['operation_type']==='passport'||p['data']['gen_passport']===!![]||p['data']['object']===m['name']);if(!n)add(b,'D-08','critical','Guard\x20\x27'+m['entry_id']+'\x27\x20has\x20no\x20create\x20step\x20in\x20§3.2','§3.2\x20(guard:\x20'+m['name']+')','Add\x20a\x20guard\x20creation\x20JSON\x20block\x20for\x20\x27'+m['name']+'\x27.');if(!o)add(b,'D-08','critical','Guard\x20\x27'+m['entry_id']+'\x27\x20has\x20no\x20gen_passport\x20step\x20in\x20§3.2','§3.2\x20(guard:\x20'+m['name']+')','Add\x20a\x20passport/gen_passport\x20JSON\x20block\x20after\x20the\x20guard\x20creation\x20step.');}}catch(p){add(b,'D-01','warning','analyzeObjectDependencyCompleteness\x20failed:\x20'+p['message']);}return b;}export function analyzeSubstepCoherence(a){const b=[];try{const c=normalizeInput(a);if(!c)return[];for(const d of['testnet','mainnet']){const e=collectSubsteps(d==='testnet'?c['testnet_blocks']:c['mainnet_blocks'],d),f=traceSubsteps({'project_prefix':c['project_name'],'version':c['version'],'network':d,'substeps':e});emitCoherenceFindings(f,d,b);}}catch(g){add(b,'D-10','warning','analyzeSubstepCoherence\x20failed:\x20'+g['message']);}return b;}function collectSubsteps(a,b){const c=[],d=b==='testnet'?'T':'M';for(const e of a){if(!e['substeps'])continue;const f=''+d+e['step'];for(const g of e['substeps']){if(!g['id'])continue;c['push']({'step_id':g['id'],'parent_step':f,'object_type':e['operation_type'],'entry_id':'','operation_type':e['operation_type'],'network':b,'input':{'data':e['data'],'input_refs':g['inputs']},'timestamp':0x0,'status':'PENDING','dependencies':{'input_refs':g['inputs'],'output_refs':g['outputs']['map'](h=>({'substep_id':g['id'],'field_path':h}))}});}}return c;}function emitCoherenceFindings(a,e,f){for(const g of a['dangling_inputs']){add(f,'D-10','critical','['+e+']\x20Dangling\x20input:\x20substep\x20\x27'+g['substep_id']+'\x27\x20references\x20missing\x20\x27'+g['missing_ref']+'\x27',e+'\x20§substeps','Ensure\x20\x27'+g['missing_ref']+'\x27\x20is\x20produced\x20by\x20an\x20earlier\x20substep.');}for(const h of a['circular_refs']){add(f,'D-10','critical','['+e+']\x20Circular\x20reference:\x20'+h['cycle']['join']('\x20→\x20'),e+'\x20§substeps','Break\x20the\x20cycle\x20by\x20removing\x20one\x20dependency.');}for(const i of a['missing_outputs']){add(f,'D-10','warning','['+e+']\x20Missing\x20output:\x20substep\x20\x27'+i['substep_id']+'\x27\x20did\x20not\x20produce\x20\x27'+i['expected_field']+'\x27',e+'\x20§substeps','Ensure\x20\x27'+i['substep_id']+'\x27\x20produces\x20\x27'+i['expected_field']+'\x27.');}for(const j of a['cross_step_breaks']){add(f,'D-10','critical','['+e+']\x20Cross-step\x20break:\x20failed\x20step\x20\x27'+j['source_step']+'\x27\x20blocks\x20\x27'+j['target_step']+'\x27',e+'\x20§substeps','Fix\x20step\x20\x27'+j['source_step']+'\x27\x20or\x20adjust\x20the\x20dependency.');}}export function analyzeNetworkConsistency(a){const c=[];try{const d=normalizeInput(a);if(!d)return[];const e=d['testnet_blocks'],f=d['mainnet_blocks'],g=d['topological_order'];if(g['length']>0x0&&e['length']>0x0)for(let h=0x0;h<e['length'];h++){const j=g[h];if(!j)break;const k=deriveEntryIdFromBlock(e[h],d);if(k&&k!==j){add(c,'D-04','critical','testnet\x20step\x20'+e[h]['step']+'\x20order\x20mismatch:\x20expected\x20\x27'+j+'\x27,\x20got\x20\x27'+k+'\x27','§3.2\x20testnet\x20JSON\x20Operation\x20Sequence','Reorder\x20testnet\x20JSON\x20blocks\x20to\x20match\x20§2\x20topological\x20order.');break;}}for(const l of e){if(l['env']['network']!=='testnet')add(c,'D-05','critical','testnet\x20step\x20'+l['step']+'\x20env.network\x20is\x20\x27'+(l['env']['network']??'(missing)')+'\x27,\x20expected\x20\x27testnet\x27','§3.2\x20step\x20'+l['step'],'Set\x20env.network\x20=\x20\x27testnet\x27\x20on\x20all\x20§3.2\x20JSON\x20blocks.');}for(const n of e){if(n['env']['replaceExistName']!==!![])add(c,'D-06','critical','testnet\x20step\x20'+n['step']+'\x20env.replaceExistName\x20is\x20\x27'+(n['env']['replaceExistName']??'(missing)')+'\x27,\x20expected\x20true','§3.2\x20step\x20'+n['step'],'Set\x20env.replaceExistName\x20=\x20true\x20on\x20all\x20§3.2\x20JSON\x20blocks\x20(testnet\x20allows\x20overwrite).');}if(e['length']!==f['length'])add(c,'D-11','critical','mainnet\x20step\x20count\x20('+f['length']+')\x20!=\x20testnet\x20step\x20count\x20('+e['length']+')','§3.2\x20vs\x20§4.2','Ensure\x20mainnet\x20JSON\x20blocks\x20correspond\x201:1\x20with\x20testnet\x20blocks.');else for(let o=0x0;o<f['length'];o++){const p=e[o],q=f[o];if(p['step']!==q['step'])add(c,'D-11','critical','mainnet\x20step\x20'+q['step']+'\x20does\x20not\x20match\x20testnet\x20step\x20'+p['step'],'§4.2\x20step\x20'+q['step'],'Ensure\x20mainnet\x20step\x20numbers\x20match\x20testnet.');if(p['operation_type']!==q['operation_type'])add(c,'D-11','critical','step\x20'+q['step']+'\x20operation_type\x20mismatch:\x20testnet=\x27'+p['operation_type']+'\x27,\x20mainnet=\x27'+q['operation_type']+'\x27','§4.2\x20step\x20'+q['step'],'Align\x20mainnet\x20operation_type\x20with\x20testnet.');}for(const r of f){if(r['env']['network']!=='mainnet')add(c,'D-12','critical','mainnet\x20step\x20'+r['step']+'\x20env.network\x20is\x20\x27'+(r['env']['network']??'(missing)')+'\x27,\x20expected\x20\x27mainnet\x27','§4.2\x20step\x20'+r['step'],'Set\x20env.network\x20=\x20\x27mainnet\x27\x20on\x20all\x20§4.2\x20JSON\x20blocks.');}for(const s of f){if(s['env']['replaceExistName']!==![]&&!s['env']['forceClaim'])add(c,'D-13','critical','mainnet\x20step\x20'+s['step']+'\x20env.replaceExistName\x20is\x20\x27'+(s['env']['replaceExistName']??'(missing)')+'\x27,\x20expected\x20false\x20(or\x20set\x20forceClaim=true)','§4.2\x20step\x20'+s['step'],'Set\x20env.replaceExistName\x20=\x20false\x20on\x20all\x20§4.2\x20JSON\x20blocks\x20(mainnet\x20must\x20not\x20overwrite).');}}catch(u){add(c,'D-04','warning','analyzeNetworkConsistency\x20failed:\x20'+u['message']);}return c;}const NAME_REGEX=/^[a-z][a-z0-9_]{2,63}$/;export function analyzeNamingConvention(a){const b=[];try{const c=normalizeInput(a);if(!c)return[];const d=c['project_name'],e='_'+c['version'];for(const f of c['objects']){if(f['reused_from'])continue;if(!NAME_REGEX['test'](f['name']))add(b,'NAMING-01','warning','Object\x20\x27'+f['entry_id']+'\x27\x20name\x20\x27'+f['name']+'\x27\x20does\x20not\x20match\x20'+NAME_REGEX,'§1.1\x20('+f['entry_id']+')','Rename\x20to\x20match\x20^[a-z][a-z0-9_]{2,63}$\x20and\x20start\x20with\x20project\x20prefix\x20\x27'+d+'\x27.');else d&&!f['name']['startsWith'](d+'_')&&add(b,'NAMING-01','warning','Object\x20\x27'+f['entry_id']+'\x27\x20name\x20\x27'+f['name']+'\x27\x20does\x20not\x20start\x20with\x20project\x20prefix\x20\x27'+d+'_\x27','§1.1\x20('+f['entry_id']+')','Rename\x20to\x20start\x20with\x20\x27'+d+'_\x27.');e&&!f['name']['endsWith'](e)&&add(b,'NAMING-02','warning','Object\x20\x27'+f['entry_id']+'\x27\x20name\x20\x27'+f['name']+'\x27\x20is\x20missing\x20version\x20suffix\x20\x27'+e+'\x27','§1.1\x20('+f['entry_id']+')','Append\x20\x27'+e+'\x27\x20to\x20the\x20name.');}}catch(g){add(b,'NAMING-01','warning','analyzeNamingConvention\x20failed:\x20'+g['message']);}return b;}export function analyzePermissionIndexRange(a){const b=[];try{const c=normalizeInput(a);if(!c)return[];const d=[...c['testnet_blocks'],...c['mainnet_blocks']];for(const e of d){for(const f of walkPermissionIndices(e['data'])){if(f<USER_DEFINED_PERM_INDEX_START)add(b,'D-07','critical','permissionIndex\x20'+f+'\x20<\x20'+USER_DEFINED_PERM_INDEX_START+'\x20(USER_DEFINED_PERM_INDEX_START)\x20in\x20step\x20'+e['step']+'\x20('+e['operation_type']+')',(e['env']['network']??'?')+'\x20step\x20'+e['step'],'Use\x20a\x20permissionIndex\x20>=\x20'+USER_DEFINED_PERM_INDEX_START+'.');}}for(const g of d){if(g['operation_type']!=='machine')continue;const h=countMachineNodes(g);if(h>MAX_NODE_COUNT)add(b,'D-09','critical','Machine\x20in\x20step\x20'+g['step']+'\x20has\x20'+h+'\x20nodes\x20>\x20MAX_NODE_COUNT\x20('+MAX_NODE_COUNT+')',(g['env']['network']??'?')+'\x20step\x20'+g['step'],'Reduce\x20node\x20count\x20to\x20<=\x20'+MAX_NODE_COUNT+'\x20or\x20split\x20into\x20multiple\x20Machines.');}}catch(i){add(b,'D-07','warning','analyzePermissionIndexRange\x20failed:\x20'+i['message']);}return b;}const REQUIRED_SCENARIO_KEYWORDS=['normal_order','refund','dispute','machine_publish','service_publish'];export function analyzeScenarioCoverage(a){const b=[];try{const c=normalizeInput(a);if(!c)return[];const d=new Set();for(const f of c['scenarios']){const g=(f['scenario_id']+'\x20'+f['description'])['toLowerCase']();for(const h of REQUIRED_SCENARIO_KEYWORDS){if(g['includes'](h['toLowerCase']()))d['add'](h);}}if(d['size']<0x3){const i=REQUIRED_SCENARIO_KEYWORDS['filter'](j=>!d['has'](j));add(b,'D-03','warning','Scenario\x20matrix\x20covers\x20'+d['size']+'/'+REQUIRED_SCENARIO_KEYWORDS['length']+'\x20required\x20keywords;\x20missing:\x20'+i['join'](',\x20'),'§1.3\x20Scenario\x20Matrix','Add\x20scenarios\x20covering\x20the\x20missing\x20keywords\x20(normal_order,\x20refund,\x20dispute,\x20machine_publish,\x20service_publish).');}const e=new Set(c['objects']['map'](j=>j['entry_id']));for(const j of c['scenarios']){const k=[j['primary_object'],...j['supporting_objects']];for(const l of k){if(l['endsWith'](':*'))continue;if(!e['has'](l))add(b,'D-03','warning','Scenario\x20\x27'+j['scenario_id']+'\x27\x20references\x20undefined\x20object\x20\x27'+l+'\x27','§1.3\x20('+j['scenario_id']+')','Add\x20\x27'+l+'\x27\x20to\x20§1.1\x20or\x20fix\x20the\x20scenario\x20reference.');}}}catch(m){add(b,'D-03','warning','analyzeScenarioCoverage\x20failed:\x20'+m['message']);}return b;}const TESTNET_VERIFICATION_ITEMS=['V-T-01','V-T-02','V-T-03','V-T-04','V-T-05','V-T-06','V-T-07','V-T-08','V-T-09','V-T-10','V-T-11'],MAINNET_VERIFICATION_ITEMS=['V-M-01','V-M-02','V-M-03','V-M-04','V-M-05'],COMPLETENESS_CHECK_IDS=Array['from']({'length':0x14},(a,b)=>'D-'+String(b+0x1)['padStart'](0x2,'0'));export function analyzeVerificationChecklist(a){const b=[];try{const c=normalizeInput(a);if(!c)return[];for(const d of TESTNET_VERIFICATION_ITEMS){if(!c['testnet_verification']['has'](d))add(b,'D-14','warning','testnet\x20verification\x20item\x20\x27'+d+'\x27\x20is\x20missing\x20from\x20§3.3','§3.3\x20testnet\x20Verification\x20Checklist','Add\x20row\x20\x27'+d+'\x27\x20to\x20§3.3.');}for(const e of MAINNET_VERIFICATION_ITEMS){if(!c['mainnet_verification']['has'](e))add(b,'D-15','warning','mainnet\x20verification\x20item\x20\x27'+e+'\x27\x20is\x20missing\x20from\x20§4.3','§4.3\x20mainnet\x20Verification\x20Checklist','Add\x20row\x20\x27'+e+'\x27\x20to\x20§4.3.');}for(const f of COMPLETENESS_CHECK_IDS){if(!c['completeness_checklist']['has'](f))add(b,'D-18','warning','completeness\x20checklist\x20item\x20\x27'+f+'\x27\x20is\x20missing\x20from\x20§6','§6\x20Completeness\x20Checklist','Add\x20row\x20\x27'+f+'\x27\x20to\x20§6.');}}catch(g){add(b,'D-14','warning','analyzeVerificationChecklist\x20failed:\x20'+g['message']);}return b;}export function analyzeDeployableReadiness(a){const b=[];try{const c=resolveRiskResult(a);if(!c)return add(b,'D-16','info','Risk\x20aggregation\x20result\x20not\x20available;\x20D-16/D-17\x20skipped\x20(provide\x20project_graph\x20with\x20puzzles,\x20or\x20set\x20deployment_doc.risk_status).',undefined,'Run\x20C2\x20risk-aggregator\x20first,\x20or\x20provide\x20deployment_doc.risk_status.'),b;const d=c['severity_summary']['CRITICAL']??0x0;if(d>0x0){const g=c['findings']['filter'](h=>h['severity']==='CRITICAL')['map'](h=>h['risk_rule_id'])['join'](',\x20');add(b,'D-16','critical',d+'\x20CRITICAL\x20risk(s)\x20remain:\x20'+g,'C2\x20risk-aggregator\x20output','Return\x20to\x20stage\x202\x20(business\x20puzzle)\x20and\x20fix\x20all\x20CRITICAL\x20risks\x20before\x20deploying.');}const e=new Set(a['user_confirmed_high_risks']??[]),f=c['findings']['filter'](h=>h['severity']==='HIGH'&&!e['has'](h['risk_rule_id']));if(f['length']>0x0){const h=f['map'](i=>i['risk_rule_id'])['join'](',\x20');add(b,'D-17','critical',f['length']+'\x20unconfirmed\x20HIGH\x20risk(s):\x20'+h,'C2\x20risk-aggregator\x20output','User\x20must\x20confirm\x20each\x20HIGH\x20risk\x20(ACCEPT_AND_PROCEED)\x20or\x20fix\x20them.');}}catch(i){add(b,'D-16','warning','analyzeDeployableReadiness\x20failed:\x20'+i['message']);}return b;}function resolveRiskResult(a){const b=a['project_graph'];if(b&&typeof b==='object'){const d=b;if(typeof d['severity_summary']==='object'&&Array['isArray'](d['findings']))return b;if(typeof d['project_prefix']==='string'&&typeof d['puzzles']==='object')try{return aggregateProjectRisks(b);}catch{}}const c=a['deployment_doc'];if(c&&c['risk_status']){const e=c['risk_critical_count']??0x0,f=c['risk_high_count']??0x0,g=[];for(let h=0x0;h<e;h++)g['push']({'risk_rule_id':'R-CRITICAL-'+h,'object_type':'service','entry_id':'*','severity':'CRITICAL','message':'(synthesized\x20from\x20deployment_doc.risk_critical_count)','fix_suggestion':'See\x20C2\x20risk-aggregator\x20report\x20for\x20details.'});for(let j=0x0;j<f;j++)g['push']({'risk_rule_id':'R-HIGH-'+j,'object_type':'service','entry_id':'*','severity':'HIGH','message':'(synthesized\x20from\x20deployment_doc.risk_high_count)','fix_suggestion':'See\x20C2\x20risk-aggregator\x20report\x20for\x20details.'});return{'namespace':{'prefix':c['project_prefix'],'version':c['version'],'industry':c['industry']},'findings':g,'severity_summary':{'CRITICAL':e,'HIGH':f,'MEDIUM':0x0,'LOW':0x0,'INFO':0x0},'status':c['risk_status'],'calibrated_at':Date['now'](),'warnings':[]};}return undefined;}function extractMachinePairs(a){const b=a['data'];if(!b)return[];const c=b['node'];if(!c||typeof c!=='object')return[];const d=c['nodes'];if(!Array['isArray'](d))return[];return d['filter'](e=>{if(!e||typeof e!=='object')return![];const f=e['pairs'];return Array['isArray'](f);})['flatMap'](e=>e['pairs']??[]);}export function analyzeMachineAndServiceReadiness(a){const b=[];try{const c=normalizeInput(a);if(!c)return[];const d=[...c['testnet_blocks'],...c['mainnet_blocks']];for(const f of d){if(f['operation_type']!=='machine')continue;const g=extractMachinePairs(f);if(g['length']===0x0)continue;const h=g['filter'](i=>i['prev_node']==='');for(const i of h){const j=Array['isArray'](i['forwards'])?i['forwards']['length']:0x0;j===0x0&&add(b,'D-19','critical','Machine\x20in\x20step\x20'+f['step']+'\x20('+(f['env']['network']??'?')+')\x20has\x20an\x20entry\x20node\x20(prev_node=\x22\x22)\x20with\x20no\x20forwards.\x20'+'Progress\x20created\x20from\x20this\x20Machine\x20will\x20be\x20permanently\x20stuck\x20at\x20current=\x22\x22\x20(P0-2\x20root\x20cause).',(f['env']['network']??'?')+'\x20step\x20'+f['step'],'Add\x20at\x20least\x20one\x20forward\x20to\x20the\x20entry\x20node\x27s\x20pairs.\x20Example:\x20pairs:\x20[{prev_node:\x20\x22\x22,\x20forwards:\x20[{next_node:\x20\x22Ordered\x22,\x20...}]}]');}}const e=d['filter'](k=>k['operation_type']==='service');if(e['length']>0x0){const k=e['filter'](l=>{const m=l['data'];return m?.['compensation_fund_add']!=null;});k['length']===0x0&&add(b,'D-20','warning','No\x20Service\x20block\x20in\x20the\x20deployment\x20doc\x20includes\x20a\x20compensation_fund_add\x20step.\x20'+'Without\x20deposit,\x20arbitration\x20rulings\x20that\x20award\x20refunds\x20to\x20buyers\x20cannot\x20be\x20paid\x20out\x20from\x20the\x20Service.\x20'+'Industries\x20like\x20freelance\x20may\x20not\x20require\x20this\x20(info),\x20but\x20rental/travel/education\x20typically\x20do.','§3.2\x20/\x20§4.2\x20Service\x20blocks','Add\x20a\x20compensation_fund_add\x20step\x20for\x20the\x20Service\x20(e.g.,\x20data.compensation_fund_add\x20=\x20{balance:\x20<amount>}).\x20'+'Recommended:\x203-10×\x20the\x20max\x20single-order\x20amount,\x20depending\x20on\x20industry\x20(subscription:\x203×,\x20retail:\x205×,\x20rental:\x2010×).\x20See\x20P1-1\x20evaluation\x20rule.');}}catch(l){add(b,'D-19','warning','analyzeMachineAndServiceReadiness\x20failed:\x20'+l['message']);}return b;}export function scanDeployment(a){const b=[...analyzeObjectDependencyCompleteness(a),...analyzeSubstepCoherence(a),...analyzeNetworkConsistency(a),...analyzeNamingConvention(a),...analyzePermissionIndexRange(a),...analyzeScenarioCoverage(a),...analyzeVerificationChecklist(a),...analyzeDeployableReadiness(a),...analyzeMachineAndServiceReadiness(a)];return{'project_name':a['project_name'],'document_path':a['document_path'],'overall_readiness':computeReadiness(b),'findings':b,'coverage':computeCoverage(a),'checks':computeChecks(b),'scanned_at':Date['now'](),'scanner_version':DEPLOYMENT_SCANNER_VERSION};}function computeChecks(a){const b=c=>a['some'](d=>d['check_id']===c);return{'D01_object_defined':b('D-01')?'fail':'pass','D02_dependency_complete':b('D-02')?'fail':'pass','D03_scenario_covered':b('D-03')?'fail':'pass','D04_testnet_topo_order':b('D-04')?'fail':'pass','D05_testnet_network':b('D-05')?'fail':'pass','D06_testnet_replace':b('D-06')?'fail':'pass','D07_permission_index':b('D-07')?'fail':'pass','D08_guard_gen_passport':b('D-08')?'fail':'pass','D09_machine_node_count':b('D-09')?'fail':'pass','D10_substep_coherence':b('D-10')?'fail':'pass','D11_mainnet_testnet_match':b('D-11')?'fail':'pass','D12_mainnet_network':b('D-12')?'fail':'pass','D13_mainnet_replace':b('D-13')?'fail':'pass','D14_testnet_verification':b('D-14')?'fail':'pass','D15_mainnet_verification':b('D-15')?'fail':'pass','D16_no_critical_risk':b('D-16')?'fail':'pass','D17_no_high_risk':b('D-17')?'fail':'pass','D18_completeness_checklist':b('D-18')?'fail':'pass','D19_machine_entry_forward':b('D-19')?'fail':'pass','D20_service_compensation_fund':b('D-20')?'fail':'pass'};}function computeCoverage(a){const b=normalizeInput(a);if(!b)return{'objects_defined':0x0,'objects_with_scenario':0x0,'testnet_steps':0x0,'mainnet_steps':0x0,'verification_items':0x0};const c=new Set();for(const e of b['scenarios']){c['add'](e['primary_object']);for(const f of e['supporting_objects'])c['add'](f);}const d=b['objects']['filter'](g=>c['has'](g['entry_id'])||c['has'](g['object_type']+':*'))['length'];return{'objects_defined':b['objects']['length'],'objects_with_scenario':d,'testnet_steps':b['testnet_blocks']['length'],'mainnet_steps':b['mainnet_blocks']['length'],'verification_items':b['testnet_verification']['size']+b['mainnet_verification']['size']};}function computeReadiness(a){const b=a['filter'](c=>c['check_id']['startsWith']('D-'));if(b['some'](c=>c['severity']==='critical'))return'blocked';if(b['some'](c=>c['severity']==='warning'))return'warnings';return'ready';}function normalizeInput(a){if(a['deployment_doc'])return fromDeploymentDocInput(a['deployment_doc']);if(a['document_path']){if(!a100a['existsSync'](a['document_path']))return undefined;return parseDeploymentMarkdown(a['document_path']);}return undefined;}export function isReady(a){return a['overall_readiness']==='ready';}export function isBlocked(a){return a['overall_readiness']==='blocked';}export function summarizeScan(a){const b=[];b['push']('#\x20Deployment\x20Scan\x20Report\x20—\x20'+a['project_name'],''),b['push']('-\x20**Overall\x20readiness**:\x20'+a['overall_readiness']),b['push']('-\x20**Scanned\x20at**:\x20'+new Date(a['scanned_at'])['toISOString']()),b['push']('-\x20**Scanner\x20version**:\x20'+a['scanner_version']);if(a['document_path'])b['push']('-\x20**Document**:\x20'+a['document_path']);b['push']('','##\x20Coverage','','|\x20Metric\x20|\x20Count\x20|','|--------|-------|'),b['push']('|\x20Objects\x20defined\x20|\x20'+a['coverage']['objects_defined']+'\x20|'),b['push']('|\x20Objects\x20with\x20scenario\x20|\x20'+a['coverage']['objects_with_scenario']+'\x20|'),b['push']('|\x20testnet\x20steps\x20|\x20'+a['coverage']['testnet_steps']+'\x20|'),b['push']('|\x20mainnet\x20steps\x20|\x20'+a['coverage']['mainnet_steps']+'\x20|'),b['push']('|\x20verification\x20items\x20|\x20'+a['coverage']['verification_items']+'\x20|',''),b['push']('##\x20Checks\x20(D-01\x20~\x20D-20)','','|\x20Check\x20ID\x20|\x20Status\x20|','|----------|--------|');const c=Object['entries'](a['checks']);for(const [d,e]of c)b['push']('|\x20'+d+'\x20|\x20'+(e==='pass'?'✅\x20pass':'❌\x20fail')+'\x20|');b['push']('','##\x20Findings\x20('+a['findings']['length']+')','');if(a['findings']['length']===0x0)b['push']('✅\x20No\x20issues\x20detected.','');else{const g=new Map();for(const h of a['findings']){const i=g['get'](h['severity'])??[];i['push'](h),g['set'](h['severity'],i);}for(const j of['critical','warning','info']){const k=g['get'](j);if(!k||k['length']===0x0)continue;b['push']('###\x20'+j['toUpperCase']()+'\x20('+k['length']+')','');for(const l of k){b['push']('-\x20**['+l['check_id']+']**\x20'+l['message']);if(l['location'])b['push']('\x20\x20-\x20Location:\x20'+l['location']);if(l['suggestion'])b['push']('\x20\x20-\x20Suggestion:\x20'+l['suggestion']);b['push']('');}}}return b['push']('---','','*End\x20of\x20report.*'),b['join']('\x0a');}export const DEPLOYMENT_SCANNER_VERSION='2.0.0';
@@ -1 +0,0 @@
1
- import{initServicePuzzleFromIntent,initMachinePuzzleFromIntent,initAllocationPuzzleFromIntent,initTreasuryPuzzleFromIntent,initArbitrationPuzzleFromIntent,initRewardPuzzleFromIntent,initProgressPuzzleFromIntent,initOrderPuzzleFromIntent,initPuzzleFromIntent as a258a,checkServicePuzzleCompleteness,checkMachinePuzzleCompleteness,checkAllocationPuzzleCompleteness,checkTreasuryPuzzleCompleteness,checkArbitrationPuzzleCompleteness,checkRewardPuzzleCompleteness,checkProgressPuzzleCompleteness,checkOrderPuzzleCompleteness,checkPuzzleCompleteness as a258b}from'../knowledge/index.js';import{initPuzzleFromIntent as a258c,checkPuzzleCompleteness as a258d}from'../knowledge/permission-puzzle.js';const KEYWORD_TABLE=[{'category':'Product/Service','keywords_zh':['product','selling','sell','sales','store','open\x20shop'],'keywords_en':['sell','product','sale','shop','store'],'objects':['service','order','progress'],'required_level':'R','scene_id':'retail'},{'category':'Subscription','keywords_zh':['subscription','cycle','renewal'],'keywords_en':['subscribe','recurring','subscription'],'objects':['service','machine','reward'],'required_level':'C','scene_id':'subscription'},{'category':'Rental','keywords_zh':['rent','lease','return'],'keywords_en':['rent','lease','return'],'objects':['service','machine','arb'],'required_level':'C','scene_id':'rental_return'},{'category':'Trust','keywords_zh':['deposit','pledge','verify','trust'],'keywords_en':['deposit','trust','verify'],'objects':['guard','permission','treasury'],'required_level':'R','scene_id':'trust_deposit'},{'category':'Funds','keywords_zh':['split','collect','share\x20profit','income','incentive'],'keywords_en':['split','revenue','reward'],'objects':['allocation','treasury','reward'],'required_level':'R','scene_id':'revenue_split'},{'category':'Workflow','keywords_zh':['node','stage','process','workflow'],'keywords_en':['workflow','stage','node'],'objects':['machine','progress'],'required_level':'R','scene_id':'workflow'},{'category':'Dispute','keywords_zh':['arbitration','refund','conflict','rights\x20protection'],'keywords_en':['arbitration','refund','dispute'],'objects':['arb','proof'],'required_level':'C','scene_id':'arbitration_dispute'},{'category':'Contact','keywords_zh':['customer\x20service','contact','communication'],'keywords_en':['contact','support','im'],'objects':['contact'],'required_level':'C','scene_id':'contact_im'},{'category':'Data','keywords_zh':['evidence','record','data'],'keywords_en':['evidence','record','data'],'objects':['repository','proof'],'required_level':'C','scene_id':'evidence_record'},{'category':'User\x20Profile','keywords_zh':['personal\x20info','preference','privacy'],'keywords_en':['personal','profile','privacy'],'objects':['personal','contact'],'required_level':'OPTIONAL','scene_id':'user_profile'},{'category':'Demand\x20Submission','keywords_zh':['demand','publish','inquiry'],'keywords_en':['demand','request','inquiry'],'objects':['demand'],'required_level':'OPTIONAL','scene_id':'demand_inquiry'}],INDUSTRY_KEYWORDS=[{'industry':'freelance','words':['freelance','outsourcing','freelance','gig']},{'industry':'rental','words':['rental','lease','rental','rent']},{'industry':'education','words':['education','course','training','education','course']},{'industry':'travel','words':['travel','tour','itinerary','travel','trip']},{'industry':'subscription','words':['subscription','cycle','subscription','recurring']}];function buildPuzzleDispatch(){const a=(c,d)=>{try{return c(d);}catch{return undefined;}},b=(c,d)=>{if(!c)return{'missing':[],'complete':![],'next_step':'init\x20failed'};try{return d(c);}catch{return{'missing':[],'complete':![],'next_step':'check\x20failed'};}};return{'service':{'init':c=>a(initServicePuzzleFromIntent,{'primary_goal':c}),'check':c=>b(c,checkServicePuzzleCompleteness)},'machine':{'init':c=>a(initMachinePuzzleFromIntent,c),'check':c=>b(c,checkMachinePuzzleCompleteness)},'allocation':{'init':c=>a(initAllocationPuzzleFromIntent,{'primary_goal':c}),'check':c=>b(c,checkAllocationPuzzleCompleteness)},'treasury':{'init':c=>a(initTreasuryPuzzleFromIntent,{'primary_goal':c}),'check':c=>b(c,checkTreasuryPuzzleCompleteness)},'arb':{'init':c=>a(initArbitrationPuzzleFromIntent,{'primary_goal':c}),'check':c=>b(c,checkArbitrationPuzzleCompleteness)},'reward':{'init':c=>a(initRewardPuzzleFromIntent,{'primary_goal':c}),'check':c=>b(c,checkRewardPuzzleCompleteness)},'progress':{'init':c=>a(initProgressPuzzleFromIntent,{'primary_goal':c}),'check':c=>b(c,checkProgressPuzzleCompleteness)},'order':{'init':c=>a(initOrderPuzzleFromIntent,{'primary_goal':c}),'check':c=>b(c,checkOrderPuzzleCompleteness)},'permission':{'init':c=>a(a258c,{'primary_goal':c}),'check':c=>b(c,a258d)},'guard':{'init':c=>a(a258a,{'primary_goal':c}),'check':c=>b(c,a258b)}};}export function extractKeywords(a){if(!a||typeof a!=='string')return[];const b=[];for(const c of KEYWORD_TABLE){const d=[...c['keywords_zh'],...c['keywords_en']];for(const e of d){try{const f=new RegExp(escapeRegex(e),'gi'),g=(a['match'](f)||[])['length'];g>0x0&&b['push']({'keyword':e,'category':c['category'],'matched_objects':[...c['objects']],'required_level':c['required_level'],'match_count':g});}catch{}}}return b['sort']((h,i)=>i['match_count']-h['match_count']),b;}function escapeRegex(a){return a['replace'](/[.*+?^${}()|[\]\\]/g,'\x5c$&');}export function resolveIndustry(a,b){const c=((a??'')+'\x20'+(b??''))['toLowerCase']();for(const d of INDUSTRY_KEYWORDS){for(const e of d['words']){if(c['includes'](e['toLowerCase']()))return d['industry'];}}return'general';}export function identifyObjects(a,b){if(b['length']===0x0)return{'primary':'service','secondary':['permission','machine','progress'],'scenes':[{'object':'service','scene_id':'general'}]};const c=b['find'](i=>i['required_level']==='R'),d=(c??b[0x0])['matched_objects'][0x0],e=new Set([d]),f=[];for(const i of b){for(const j of i['matched_objects']){!e['has'](j)&&(e['add'](j),f['push'](j));}}const g=[],h=new Set();for(const k of KEYWORD_TABLE){const l=b['find'](n=>n['category']===k['category']);if(!l)continue;if(h['has'](k['scene_id']))continue;h['add'](k['scene_id']),g['push']({'object':k['objects'][0x0],'scene_id':k['scene_id']});}return{'primary':d,'secondary':f,'scenes':g};}export function analyzeBusinessIntent(a){const b=[];if(!a||!a['user_intent']||typeof a['user_intent']!=='string')return{'intent_parsed':{'primary_object':'service','secondary_objects':[],'detected_scenes':[],'industry':'general','keyword_matches':[]},'puzzles':{},'overall_completeness':'empty','next_step':'Please\x20provide\x20a\x20non-empty\x20business\x20intent.','recommended_creation_order':[],'warnings':['input.user_intent\x20is\x20empty']};const c=a['user_intent'],e=extractKeywords(c),f=resolveIndustry(c,a['industry']),{primary:g,secondary:h,scenes:i}=identifyObjects(c,e);let j=[g,...h];if(a['target_objects']&&a['target_objects']['length']>0x0){const p=a['target_objects']['filter'](q=>['service','machine','guard','permission','reward','arb','progress','treasury','demand','repository','contact','order','allocation','personal','payment','proof']['includes'](q));if(p['length']>0x0)j=p;}const k=buildPuzzleDispatch(),l={};for(const q of j){const r=k[q];if(!r){b['push']('No\x20puzzle\x20module\x20for\x20\x27'+q+'\x27\x20—\x20skipped\x20(L3\x20object)');continue;}const s=r['init'](c),t=s?r['check'](s):undefined,u=extractMissingDimensions(t);l[q]={'puzzle':s,'completeness':t,'missing_dimensions':u},!s&&b['push']('Puzzle\x20init\x20failed\x20for\x20\x27'+q+'\x27');}const m=aggregatePuzzleCompleteness(l),n=suggestNextPuzzleStep({'intent_parsed':{'primary_object':g,'secondary_objects':h,'detected_scenes':i,'industry':f,'keyword_matches':e},'puzzles':l,'overall_completeness':m,'next_step':'','recommended_creation_order':[],'warnings':b}),o=['permission','progress','guard','allocation','machine','service'];return{'intent_parsed':{'primary_object':g,'secondary_objects':h,'detected_scenes':i,'industry':f,'keyword_matches':e},'puzzles':l,'overall_completeness':m,'next_step':n,'recommended_creation_order':o,'warnings':b};}function extractMissingDimensions(a){if(!a||typeof a!=='object')return[];const b=a,d=b['missing'];if(Array['isArray'](d))return d['map'](f=>String(f));const e=b['missing_details'];if(Array['isArray'](e))return e['map'](f=>String(f?.['dimension']??f));return[];}export function aggregatePuzzleCompleteness(a){const b=Object['values'](a??{});if(b['length']===0x0)return'empty';const c=b['filter'](f=>!f['puzzle'])['length'];if(c===b['length'])return'empty';const d=b['reduce']((f,g)=>f+(g['missing_dimensions']?.['length']??0x0),0x0);if(d===0x0)return'complete';return'partial';}export function suggestNextPuzzleStep(a){if(!a)return'No\x20result\x20to\x20suggest\x20from.';if(a['overall_completeness']==='complete')return'All\x20puzzle\x20dimensions\x20are\x20complete\x20—\x20ready\x20for\x20risk\x20calibration\x20(stage\x203).';if(a['overall_completeness']==='empty')return'No\x20puzzle\x20has\x20been\x20initialized.\x20Provide\x20more\x20concrete\x20business\x20intent\x20so\x20the\x20primary\x20object\x20can\x20be\x20identified.';const b=['permission','treasury','allocation','guard','machine','service','order','progress','arb','reward','proof','repository','demand','contact','personal','payment'],d=a['puzzles']??{},e=b['filter'](f=>d[f]);for(const f of e){const g=d[f];if(!g)continue;const h=g['missing_dimensions']??[];if(h['length']===0x0)continue;const i=g['completeness'],j=i&&typeof i==='object'?i['next_step']:undefined;if(typeof j==='string'&&j['trim']())return'['+f+']\x20'+j;return'['+f+']\x20Complete\x20dimension'+(h['length']>0x1?'s':'')+'\x20'+h['join'](',\x20')+'\x20to\x20advance\x20the\x20puzzle.';}return'Continue\x20dialog\x20to\x20fill\x20remaining\x20pending\x20fields.';}
@@ -1 +0,0 @@
1
- import{createHash}from'crypto';import{query_objects,query_events}from'@wowok/wowok';import{annotateEventsMonetaryFields}from'../knowledge/fund-layer.js';import{buildDataSemantic}from'../schema/call/semantic.js';import{collectContextExperience}from'../loop-engineering/context-collect.js';import{extractAddressFields}from'./graph-builder.js';const STATE_TRANSITION_EVENTS=['NewOrderEvent','ProgressEvent','ArbEvent','DemandPresentEvent','DemandFeedbackEvent','NewEntityEvent'],MAX_OBJECTS_PER_QUERY=0x32;export async function assembleContext(a){const b=a['context_objects'];if(!b||b['length']===0x0)throw new Error('assemble_context\x20requires\x20\x27context_objects\x27\x20—\x20an\x20array\x20of\x20object\x20IDs\x20or\x20LocalMark\x20names.');const c=a['context_network']??'testnet',d=a['include_events']??![],e=Math['max'](0x0,Math['min'](0x5,a['context_depth']??0x0)),g=a['context_include']?.['length']?new Set(a['context_include']):null,h=await query_objects({'objects':b,'no_cache':![],'network':c}),k=h?.['objects']??[],l=[],m=[];if(e>0x0){const A=new Set();for(const C of k){const D=C?.['object'];if(typeof D==='string')A['add'](D);}let B=[];for(const E of k){const F=safeExtractAddressFields(E);for(const G of F){if(g&&!g['has'](G['field']))continue;if(A['has'](G['address']))continue;B['push']({'id':G['address'],'parent':E?.['object']??'','viaField':G['field'],'viaType':G['type'],'depth':0x1});}}for(let H=0x1;H<=e&&B['length']>0x0;H++){const I=new Set(),J=[];for(const L of B){if(A['has'](L['id'])||I['has'](L['id']))continue;I['add'](L['id']),A['add'](L['id']),J['push'](L);}if(J['length']===0x0)break;const K=[];for(let M=0x0;M<J['length'];M+=MAX_OBJECTS_PER_QUERY){const N=J['slice'](M,M+MAX_OBJECTS_PER_QUERY);let O;try{O=await query_objects({'objects':N['map'](Q=>Q['id']),'no_cache':![],'network':c});}catch{continue;}const P=O?.['objects']??[];for(let Q=0x0;Q<N['length'];Q++){const R=N[Q],S=P[Q];if(!S)continue;l['push']({'object':R['id'],'depth':R['depth'],'via_field':R['viaField'],'via_type':R['viaType'],'parent':R['parent']}),m['push'](S);if(H<e){const T=safeExtractAddressFields(S);for(const U of T){if(g&&!g['has'](U['field']))continue;if(A['has'](U['address']))continue;K['push']({'id':U['address'],'parent':R['id'],'viaField':U['field'],'viaType':U['type'],'depth':H+0x1});}}}}B=K;}}const n=[...k,...m],p=extractEmbeddedHistory(n),q=Object['keys'](p)['length']>0x0;let s;if(d){s=[];for(const V of STATE_TRANSITION_EVENTS){try{const W=await query_events({'type':V,'limit':0x5,'order':'descending','network':c});W?.['data']&&W['data']['length']>0x0&&s['push'](...W['data']);}catch{}}if(s['length']===0x0)s=undefined;else try{await annotateEventsMonetaryFields(s,c);}catch{}}const t={'operation_type':'assemble_context','data':{'context_objects':k,'embedded_history':p,'events':s}},u=buildDataSemantic({'objects':k,'embedded_history':p,'events':s},t),v=k['map'](X=>(X?.['object']??X?.['data']?.['object']??'?')+':'+(X?.['version']??X?.['data']?.['version']??'?'));m['length']>0x0&&v['push']('deps:'+m['map'](X=>(X?.['object']??'?')+':'+(X?.['version']??'?'))['join'](','));v['push']('ts:'+Date['now']());const w=createHash('sha256')['update'](v['join']('|'))['digest']('hex')['substring'](0x0,0x10),x=l['length']>0x0,y=x?'Context\x20assembled\x20with\x20'+l['length']+'\x20dependency\x20object(s)\x20across\x20'+e+'\x20level(s).\x20'+'Use\x20onchain_transaction\x20with\x20a\x20specific\x20digest\x20to\x20verify\x20a\x20past\x20operation,\x20'+'or\x20proceed\x20with\x20onchain_operations\x20(consider\x20dry_run=true\x20first\x20to\x20validate).':q?'Context\x20assembled\x20with\x20embedded\x20operation\x20history.\x20Use\x20onchain_transaction\x20with\x20a\x20specific\x20digest\x20to\x20verify\x20a\x20past\x20operation,\x20or\x20proceed\x20with\x20onchain_operations\x20(consider\x20dry_run=true\x20first\x20to\x20validate).':s&&s['length']>0x0?'Context\x20assembled\x20with\x20recent\x20events.\x20Use\x20onchain_transaction\x20with\x20a\x20specific\x20digest\x20to\x20verify\x20any\x20event\x27s\x20tx,\x20or\x20proceed\x20with\x20onchain_operations.':'Context\x20assembled\x20(current\x20state\x20only).\x20Proceed\x20with\x20onchain_operations\x20(consider\x20dry_run=true\x20first\x20to\x20validate).';let z;try{z=collectContextExperience({'action':'assemble_context','objects':k,'events':s,'embedded_history':q?p:undefined,'semantic_summary':u,'context_digest':w,'next_action':y},c);}catch{}return{'action':'assemble_context','objects':k,'events':s,'embedded_history':q?p:undefined,'dependencies':x?l:undefined,'dependency_objects':x?m:undefined,'semantic_summary':u,'context_digest':w,'next_action':y,'flywheel_collected':z};}function safeExtractAddressFields(a){if(!a||typeof a!=='object')return[];try{return extractAddressFields(a);}catch{return[];}}function extractEmbeddedHistory(a){const b={};for(const c of a){const d=c?.['data']??c,e=c?.['object']??d?.['object'];if(!e)continue;const f=d?.['type']??'',g={};f['includes']('Progress')&&d?.['session']?.['forwards']&&(g['operation_history']=d['session']['forwards']['map'](h=>({'operation':h['forward'],'operator':h['who'],'accomplished':h['accomplished'],'time':h['time'],'message':h['msg']})),g['next_node']=d['session']?.['next_node'],g['threshold']=d['session']?.['threshold']),f['includes']('Order')&&(d?.['dispute']&&Array['isArray'](d['dispute'])&&d['dispute']['length']>0x0&&(g['disputes']=d['dispute']),d?.['claimed_by']&&(g['claimed_by']=d['claimed_by']),d?.['progress']&&(g['progress_object']=d['progress'])),f['includes']('Service')&&d?.['sales']&&(g['sale_count']=Array['isArray'](d['sales'])?d['sales']['length']:0x0),Object['keys'](g)['length']>0x0&&(b[e]=g);}return b;}
@@ -1,5 +0,0 @@
1
- import type { DeploymentDocValidationResult } from "./deployment-doc.js";
2
- export declare function generateDeploymentDocFromProject(projectId: string, network: "testnet" | "mainnet", detailLevel?: "summary" | "detailed" | "full"): Promise<{
3
- markdown: string;
4
- validation: DeploymentDocValidationResult;
5
- }>;
@@ -1 +0,0 @@
1
- import{LocalProject}from'@wowok/wowok';import{generateDeploymentDoc,validateDeploymentDoc}from'./deployment-doc.js';import{isObjectOfType,shortTypeName}from'../schema/utils/object-type-utils.js';export async function generateDeploymentDocFromProject(a,b,c){const d=await LocalProject['Instance']()['getProject'](a);if(!d)throw new Error('Project\x20not\x20found:\x20'+a);const e=await LocalProject['Instance']()['listObjects'](a),f=await LocalProject['Instance']()['getGraph'](a),g=await LocalProject['Instance']()['listEvaluations'](a,{'evalType':'risk'}),h=e['filter'](v=>{if(v['objectType']===null||v['objectType']===undefined)return![];if(v['objectName']&&/^0x[0-9a-fA-F]{40,}$/['test'](v['objectName']))return![];const w=v['metadata']??{},x=w['type_raw'];if(x&&x['includes']('dynamic_field::Field<'))return![];return!![];}),i=h['map'](v=>{const w=v['objectType'],x=v['metadata']??{},y=x['status']??(v['objectAddress']['startsWith']('draft:')?'draft':'deployed'),z=x['config']??undefined,A=x['publish_required']??(isObjectOfType(w,'service')||isObjectOfType(w,'machine'));return{'entry_id':w+':'+(v['objectName']||v['objectAddress']||v['id']),'object_type':normalizeObjectType(w),'name':v['objectName']||v['objectAddress']||v['id'],'reused_from':y==='deployed'&&v['objectAddress']['startsWith']('0x')?v['objectAddress']:undefined,'publish_required':A,'description':x['description']??(y==='draft'?'[blueprint]\x20pending\x20on-chain':'[on-chain]'),'config':z,'status':y};}),j=new Map();for(const v of h){const w=v['objectType'],x=w+':'+(v['objectName']||v['objectAddress']||v['id']);v['objectAddress']&&j['set'](v['objectAddress'],x),v['objectName']&&j['set'](v['objectName'],x),j['set'](x,x);}const k=f['map'](y=>({'from':j['get'](y['sourceObject'])??y['sourceObject'],'to':j['get'](y['targetObject'])??y['targetObject'],'edge_kind':y['relationshipType'],'field_path':y['fieldName']||'','required_at_publish':y['edgeSource']==='internal'})),l=buildTopoSteps(i,k,b),m=g[0x0],n=m?m['score']!==null&&m['score']<0x32?'RISK_BLOCKED':'RISK_PASSED':undefined,p=m?.['details'],q=p?.['critical_count'],r=p?.['high_count'],s={'project_prefix':d['prefix'],'business_intent':d['description']||d['name'],'industry':d['industry']||'general','version':d['currentVersion']||'v1','objects':i,'edges':k,'steps':l,'risk_status':n,'risk_critical_count':q,'risk_high_count':r,'detail_level':c},t=generateDeploymentDoc(s),u=validateDeploymentDoc(s);return{'markdown':t,'validation':u};}function normalizeObjectType(a){const b=shortTypeName(a)['toLowerCase']();if(b==='arbitration')return'arb';return b;}function buildTopoSteps(a,b,c){const d={'permission':0x1,'treasury':0x2,'allocation':0x3,'guard':0x4,'service':0xa,'machine':0xb,'progress':0xc,'order':0x14,'arb':0x16,'reward':0x1e,'proof':0x20,'repository':0x28,'demand':0x29,'contact':0x2a,'personal':0x33,'payment':0x34},e=[...a]['sort']((f,g)=>{const h=d[f['object_type']]??0x63,i=d[g['object_type']]??0x63;return h-i;});return e['map']((f,g)=>({'step':g+0x1,'object_type':f['object_type'],'operation':f['publish_required']?'publish':'create','substep_count':0x1,'depends_on':b['filter'](h=>h['to']===f['entry_id'])['map'](h=>e['findIndex'](j=>j['entry_id']===h['from'])+0x1)['filter'](h=>h>0x0),'entry_id':f['entry_id'],'network_phase':c}));}