@wowok/agent-mcp 2.7.8 → 3.0.0

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 (393) 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/examples/rental-ziroom-machine-create.json +1 -2
  5. package/dist/examples/rental-ziroom-permission-create.json +1 -2
  6. package/dist/examples/rental-ziroom-service-create.json +1 -2
  7. package/dist/experience/experience-reuse.js +1 -1
  8. package/dist/experience/index.d.ts +2 -1
  9. package/dist/experience/index.js +1 -1
  10. package/dist/experience/persistence-config.d.ts +6 -0
  11. package/dist/experience/persistence-config.js +1 -0
  12. package/dist/experience/persistence.d.ts +21 -0
  13. package/dist/experience/persistence.js +1 -0
  14. package/dist/experience/realtime-feedback.js +1 -1
  15. package/dist/experience/user-profile.js +1 -1
  16. package/dist/extensions/business-modules.d.ts +1 -1
  17. package/dist/extensions/capability-manifest.d.ts +2 -83
  18. package/dist/extensions/capability-manifest.js +1 -1
  19. package/dist/extensions/constraint-registry.d.ts +6 -4
  20. package/dist/extensions/constraint-registry.js +1 -1
  21. package/dist/extensions/index.d.ts +4 -5
  22. package/dist/extensions/index.js +1 -1
  23. package/dist/extensions/industry-pack.js +1 -1
  24. package/dist/extensions/metric-registry.d.ts +6 -4
  25. package/dist/extensions/metric-registry.js +1 -1
  26. package/dist/extensions/mode-evaluator.d.ts +2 -3
  27. package/dist/extensions/mode-evaluator.js +1 -1
  28. package/dist/extensions/registry.d.ts +3 -25
  29. package/dist/extensions/registry.js +1 -1
  30. package/dist/extensions/types.d.ts +1 -69
  31. package/dist/goal/GoalClassifier.d.ts +17 -0
  32. package/dist/goal/GoalClassifier.js +1 -0
  33. package/dist/goal/GoalEngine.d.ts +155 -0
  34. package/dist/goal/GoalEngine.js +1 -0
  35. package/dist/goal/GoalStore.d.ts +27 -0
  36. package/dist/goal/GoalStore.js +1 -0
  37. package/dist/goal/plan-approval.d.ts +5 -0
  38. package/dist/goal/plan-approval.js +1 -0
  39. package/dist/goal/types.d.ts +80 -0
  40. package/dist/goal/types.js +1 -0
  41. package/dist/harness/index.d.ts +2 -7
  42. package/dist/harness/index.js +1 -1
  43. package/dist/harness/plan.d.ts +1 -1
  44. package/dist/harness/types.d.ts +0 -35
  45. package/dist/index.js +1 -1
  46. package/dist/knowledge/account-marks.d.ts +36 -0
  47. package/dist/knowledge/account-marks.js +1 -0
  48. package/dist/knowledge/audit-rules.d.ts +3 -1
  49. package/dist/knowledge/audit-rules.js +1 -1
  50. package/dist/knowledge/examples-scanner-cli.js +1 -1
  51. package/dist/knowledge/examples-scanner.js +1 -1
  52. package/dist/knowledge/fund-layer.d.ts +13 -9
  53. package/dist/knowledge/fund-layer.js +1 -1
  54. package/dist/knowledge/goal-completion.d.ts +19 -0
  55. package/dist/knowledge/goal-completion.js +1 -0
  56. package/dist/knowledge/guard-bindings.d.ts +21 -0
  57. package/dist/knowledge/guard-bindings.js +1 -0
  58. package/dist/knowledge/guard-translation.js +1 -1
  59. package/dist/knowledge/index.d.ts +6 -3
  60. package/dist/knowledge/index.js +1 -1
  61. package/dist/knowledge/industry-registry.js +1 -1
  62. package/dist/knowledge/mcp-schema-audit-cli.js +1 -1
  63. package/dist/knowledge/mcp-schema-audit.js +1 -1
  64. package/dist/knowledge/operation-dictionary.js +1 -1
  65. package/dist/knowledge/passport-confirm.js +1 -1
  66. package/dist/knowledge/passport-puzzle.js +1 -1
  67. package/dist/knowledge/passport-translation.js +1 -1
  68. package/dist/knowledge/proof-risk.js +1 -1
  69. package/dist/knowledge/reward-risk.d.ts +1 -1
  70. package/dist/knowledge/reward-risk.js +1 -1
  71. package/dist/knowledge/safety-rules.d.ts +2 -1
  72. package/dist/knowledge/safety-rules.js +1 -1
  73. package/dist/knowledge/scenario-topology.d.ts +43 -0
  74. package/dist/knowledge/scenario-topology.js +1 -0
  75. package/dist/knowledge/service-translation.js +1 -1
  76. package/dist/knowledge/supply-chain.js +1 -1
  77. package/dist/knowledge/template-registry.js +1 -1
  78. package/dist/knowledge/tools-reference.js +1 -1
  79. package/dist/knowledge/workflow-guidance.d.ts +36 -0
  80. package/dist/knowledge/workflow-guidance.js +1 -1
  81. package/dist/knowledge/workspace-lists.d.ts +57 -0
  82. package/dist/knowledge/workspace-lists.js +1 -0
  83. package/dist/loop-engineering/context-collect.d.ts +1 -1
  84. package/dist/monitor/EventRouter.d.ts +10 -0
  85. package/dist/monitor/EventRouter.js +1 -0
  86. package/dist/monitor/EventStore.d.ts +32 -12
  87. package/dist/monitor/EventStore.js +1 -1
  88. package/dist/monitor/MonitorLoop.d.ts +81 -0
  89. package/dist/monitor/MonitorLoop.js +1 -0
  90. package/dist/monitor/ProblemBridge.d.ts +32 -0
  91. package/dist/monitor/ProblemBridge.js +1 -0
  92. package/dist/monitor/ScopeResolver.d.ts +59 -0
  93. package/dist/monitor/ScopeResolver.js +1 -0
  94. package/dist/monitor/SubscriptionStore.d.ts +13 -0
  95. package/dist/monitor/SubscriptionStore.js +1 -0
  96. package/dist/monitor/SuggestionBridge.d.ts +38 -0
  97. package/dist/monitor/SuggestionBridge.js +1 -0
  98. package/dist/monitor/normalize.d.ts +8 -0
  99. package/dist/monitor/normalize.js +1 -0
  100. package/dist/monitor/types.d.ts +89 -0
  101. package/dist/monitor/types.js +1 -0
  102. package/dist/participation/arbitrator-interest.d.ts +20 -0
  103. package/dist/participation/arbitrator-interest.js +1 -0
  104. package/dist/participation/demander-interest.d.ts +23 -0
  105. package/dist/participation/demander-interest.js +1 -0
  106. package/dist/persona/address-format.d.ts +1 -1
  107. package/dist/persona/address-format.js +1 -1
  108. package/dist/persona/distill-goal.d.ts +20 -0
  109. package/dist/persona/distill-goal.js +1 -0
  110. package/dist/persona/index.d.ts +2 -0
  111. package/dist/persona/index.js +1 -1
  112. package/dist/persona/model.js +1 -1
  113. package/dist/playbooks/service-build/business-puzzle.js +1 -0
  114. package/dist/{project → playbooks/service-build}/context-assembly.d.ts +9 -4
  115. package/dist/playbooks/service-build/context-assembly.js +1 -0
  116. package/dist/{project → playbooks/service-build}/game-theory.d.ts +1 -1
  117. package/dist/playbooks/service-build/index.d.ts +14 -0
  118. package/dist/playbooks/service-build/index.js +1 -0
  119. package/dist/{project → playbooks/service-build}/intent-analyzer.d.ts +1 -1
  120. package/dist/playbooks/service-build/intent-analyzer.js +1 -0
  121. package/dist/playbooks/service-build/machine-nodes.js +1 -0
  122. package/dist/{project → playbooks/service-build}/machine-panorama.d.ts +5 -3
  123. package/dist/playbooks/service-build/machine-panorama.js +1 -0
  124. package/dist/{project → playbooks/service-build}/merchant-guide.d.ts +21 -1
  125. package/dist/playbooks/service-build/merchant-guide.js +1 -0
  126. package/dist/{project → playbooks/service-build}/mode-actions.d.ts +32 -8
  127. package/dist/playbooks/service-build/mode-actions.js +1 -0
  128. package/dist/playbooks/service-build/namespace.d.ts +2 -0
  129. package/dist/playbooks/service-build/namespace.js +1 -0
  130. package/dist/{project → playbooks/service-build}/object-panorama.d.ts +2 -3
  131. package/dist/playbooks/service-build/object-panorama.js +1 -0
  132. package/dist/{project → playbooks/service-build}/participation-radar.d.ts +4 -5
  133. package/dist/playbooks/service-build/participation-radar.js +1 -0
  134. package/dist/{project → playbooks/service-build}/pipeline-actions.d.ts +9 -9
  135. package/dist/playbooks/service-build/pipeline-actions.js +1 -0
  136. package/dist/playbooks/service-build/process.d.ts +6 -0
  137. package/dist/playbooks/service-build/process.js +1 -0
  138. package/dist/playbooks/service-build/relationship-profile.d.ts +2 -0
  139. package/dist/playbooks/service-build/relationship-profile.js +1 -0
  140. package/dist/playbooks/service-build/risk-aggregator.js +1 -0
  141. package/dist/{project → playbooks/service-build}/semantic-graph.d.ts +7 -3
  142. package/dist/playbooks/service-build/semantic-graph.js +1 -0
  143. package/dist/{project → playbooks/service-build}/service-panorama.d.ts +3 -19
  144. package/dist/playbooks/service-build/service-panorama.js +1 -0
  145. package/dist/relationship/derivation.d.ts +88 -0
  146. package/dist/relationship/derivation.js +1 -0
  147. package/dist/relationship/incentive.d.ts +38 -0
  148. package/dist/relationship/incentive.js +1 -0
  149. package/dist/relationship/index.d.ts +4 -0
  150. package/dist/relationship/index.js +1 -0
  151. package/dist/relationship/registry.d.ts +13 -0
  152. package/dist/relationship/registry.js +1 -0
  153. package/dist/relationship/types.d.ts +45 -0
  154. package/dist/relationship/types.js +1 -0
  155. package/dist/review/arb.d.ts +6 -0
  156. package/dist/review/arb.js +1 -0
  157. package/dist/review/demand.d.ts +3 -0
  158. package/dist/review/demand.js +1 -0
  159. package/dist/review/index.d.ts +3 -0
  160. package/dist/review/index.js +1 -0
  161. package/dist/review/machine.d.ts +3 -0
  162. package/dist/review/machine.js +1 -0
  163. package/dist/review/order.d.ts +9 -0
  164. package/dist/review/order.js +1 -0
  165. package/dist/review/progress.d.ts +3 -0
  166. package/dist/review/progress.js +1 -0
  167. package/dist/review/repository.d.ts +3 -0
  168. package/dist/review/repository.js +1 -0
  169. package/dist/review/service.d.ts +5 -0
  170. package/dist/review/service.js +1 -0
  171. package/dist/review/types.d.ts +156 -0
  172. package/dist/review/types.js +1 -0
  173. package/dist/rules.d.ts +2 -2
  174. package/dist/rules.js +1 -1
  175. package/dist/safety/confirm-gate.js +1 -1
  176. package/dist/safety/index.d.ts +1 -1
  177. package/dist/safety/index.js +1 -1
  178. package/dist/safety/preview.d.ts +1 -0
  179. package/dist/safety/preview.js +1 -1
  180. package/dist/schema/call/allocation.d.ts +1 -1
  181. package/dist/schema/call/arbitration.d.ts +1 -1
  182. package/dist/schema/call/base.d.ts +1 -1
  183. package/dist/schema/call/base.js +1 -1
  184. package/dist/schema/call/bridge.d.ts +29 -7
  185. package/dist/schema/call/bridge.js +1 -1
  186. package/dist/schema/call/contact.d.ts +1 -1
  187. package/dist/schema/call/contact.js +1 -1
  188. package/dist/schema/call/demand.d.ts +1 -1
  189. package/dist/schema/call/demand.js +1 -1
  190. package/dist/schema/call/guard.d.ts +3 -3
  191. package/dist/schema/call/handler.d.ts +0 -3
  192. package/dist/schema/call/handler.js +1 -1
  193. package/dist/schema/call/machine.d.ts +2 -2
  194. package/dist/schema/call/order.d.ts +1 -1
  195. package/dist/schema/call/payment.d.ts +1 -1
  196. package/dist/schema/call/permission.d.ts +1 -1
  197. package/dist/schema/call/personal.d.ts +1 -1
  198. package/dist/schema/call/progress.d.ts +1 -1
  199. package/dist/schema/call/proof.d.ts +2 -2
  200. package/dist/schema/call/repository.d.ts +1 -1
  201. package/dist/schema/call/repository.js +1 -1
  202. package/dist/schema/call/reward.d.ts +1 -1
  203. package/dist/schema/call/semantic.js +1 -1
  204. package/dist/schema/call/service.d.ts +1 -1
  205. package/dist/schema/call/service.js +1 -1
  206. package/dist/schema/call/treasury.d.ts +1 -1
  207. package/dist/schema/common/index.js +1 -1
  208. package/dist/schema/goal/index.d.ts +343 -0
  209. package/dist/schema/goal/index.js +1 -0
  210. package/dist/schema/goal/planning.d.ts +465 -0
  211. package/dist/schema/goal/planning.js +1 -0
  212. package/dist/schema/index.d.ts +1 -2
  213. package/dist/schema/index.js +1 -1
  214. package/dist/schema/industry-pack/index.d.ts +323 -1
  215. package/dist/schema/industry-pack/index.js +1 -1
  216. package/dist/schema/industry-pack/modes.d.ts +326 -0
  217. package/dist/schema/industry-pack/modes.js +1 -0
  218. package/dist/schema/intent-radar/index.d.ts +19 -19
  219. package/dist/schema/local/index.d.ts +11 -0
  220. package/dist/schema/local/index.js +1 -1
  221. package/dist/schema/operations.d.ts +258 -19
  222. package/dist/schema/operations.js +1 -1
  223. package/dist/schema/permission/index.d.ts +1 -0
  224. package/dist/schema/permission/index.js +1 -1
  225. package/dist/schema/persona/index.d.ts +40 -0
  226. package/dist/schema/persona/index.js +1 -1
  227. package/dist/schema/query/bi.d.ts +912 -0
  228. package/dist/schema/query/bi.js +1 -0
  229. package/dist/schema/query/index.d.ts +663 -2
  230. package/dist/schema/query/index.js +1 -1
  231. package/dist/schema/schema-version.js +1 -1
  232. package/dist/schema/utils/skills-recommendation.d.ts +0 -1
  233. package/dist/schema/utils/skills-recommendation.js +1 -1
  234. package/dist/schema-query-impl/index.js +1 -1
  235. package/dist/schemas/account_operation.output.json +32 -3
  236. package/dist/schemas/account_operation.schema.json +8 -4
  237. package/dist/schemas/bridge_operation.output.json +26 -3
  238. package/dist/schemas/bridge_operation.schema.json +85 -13
  239. package/dist/schemas/config_operation.output.json +1 -1
  240. package/dist/schemas/config_operation.schema.json +1 -1
  241. package/dist/schemas/goal_operation.schema.json +1092 -0
  242. package/dist/schemas/guard2file.schema.json +3 -3
  243. package/dist/schemas/index.json +12 -13
  244. package/dist/schemas/industry_pack_operation.output.json +1073 -0
  245. package/dist/schemas/industry_pack_operation.schema.json +236 -2
  246. package/dist/schemas/local_info_operation.output.json +2 -2
  247. package/dist/schemas/local_mark_operation.output.json +2 -2
  248. package/dist/schemas/machineNode2file.schema.json +3 -3
  249. package/dist/schemas/messenger_operation.output.json +2 -2
  250. package/dist/schemas/monitor_events.output.json +78 -3
  251. package/dist/schemas/monitor_events.schema.json +24 -1
  252. package/dist/schemas/monitor_subscription.output.json +1462 -0
  253. package/dist/schemas/monitor_subscription.schema.json +327 -0
  254. package/dist/schemas/onchain_events.output.json +5 -5
  255. package/dist/schemas/onchain_operations.output.json +2 -2
  256. package/dist/schemas/onchain_operations.schema.json +100 -100
  257. package/dist/schemas/onchain_operations_allocation.schema.json +7 -7
  258. package/dist/schemas/onchain_operations_arbitration.schema.json +6 -6
  259. package/dist/schemas/onchain_operations_contact.schema.json +6 -6
  260. package/dist/schemas/onchain_operations_demand.schema.json +6 -6
  261. package/dist/schemas/onchain_operations_gen_passport.schema.json +3 -3
  262. package/dist/schemas/onchain_operations_gen_proof.schema.json +3 -3
  263. package/dist/schemas/onchain_operations_guard.schema.json +3 -3
  264. package/dist/schemas/onchain_operations_machine.schema.json +5 -5
  265. package/dist/schemas/onchain_operations_order.schema.json +5 -5
  266. package/dist/schemas/onchain_operations_payment.schema.json +4 -4
  267. package/dist/schemas/onchain_operations_permission.schema.json +5 -5
  268. package/dist/schemas/onchain_operations_personal.schema.json +3 -3
  269. package/dist/schemas/onchain_operations_progress.schema.json +5 -5
  270. package/dist/schemas/onchain_operations_proof.schema.json +3 -3
  271. package/dist/schemas/onchain_operations_repository.schema.json +7 -7
  272. package/dist/schemas/onchain_operations_reward.schema.json +9 -9
  273. package/dist/schemas/onchain_operations_service.schema.json +11 -11
  274. package/dist/schemas/onchain_operations_treasury.schema.json +9 -9
  275. package/dist/schemas/onchain_table_data.output.json +399 -2
  276. package/dist/schemas/onchain_table_data.schema.json +22 -22
  277. package/dist/schemas/permission_operation.schema.json +6 -2
  278. package/dist/schemas/persona_operation.output.json +145 -0
  279. package/dist/schemas/persona_operation.schema.json +28 -2
  280. package/dist/schemas/query_toolkit.output.json +1514 -22
  281. package/dist/schemas/query_toolkit.schema.json +465 -11
  282. package/dist/schemas/workflow_operation.schema.json +4 -4
  283. package/dist/task/ProcessStore.d.ts +98 -0
  284. package/dist/task/ProcessStore.js +1 -0
  285. package/dist/task/playbook.d.ts +11 -0
  286. package/dist/task/playbook.js +1 -0
  287. package/dist/task/stage-gate.d.ts +22 -0
  288. package/dist/task/stage-gate.js +1 -0
  289. package/dist/{project → task}/substep-trace.d.ts +6 -45
  290. package/dist/task/types.d.ts +144 -0
  291. package/dist/task/types.js +1 -0
  292. package/dist/tools/handlers/config.js +1 -1
  293. package/dist/tools/handlers/evaluation.js +1 -1
  294. package/dist/tools/handlers/goal.d.ts +4 -0
  295. package/dist/tools/handlers/goal.js +1 -0
  296. package/dist/tools/handlers/industry-pack.js +1 -1
  297. package/dist/tools/handlers/local.d.ts +4 -3
  298. package/dist/tools/handlers/local.js +1 -1
  299. package/dist/tools/handlers/monitor.d.ts +24 -0
  300. package/dist/tools/handlers/monitor.js +1 -1
  301. package/dist/tools/handlers/network.d.ts +1 -0
  302. package/dist/tools/handlers/network.js +1 -0
  303. package/dist/tools/handlers/onchain.js +1 -1
  304. package/dist/tools/handlers/permission.js +1 -1
  305. package/dist/tools/handlers/persona.js +1 -1
  306. package/dist/tools/handlers/query.js +1 -1
  307. package/dist/tools/handlers/watch.js +1 -1
  308. package/dist/tools/handlers/workflow.js +1 -1
  309. package/dist/tools/index.d.ts +2 -0
  310. package/dist/tools/index.js +1 -1
  311. package/dist/tools/rules-hook.d.ts +1 -0
  312. package/dist/tools/rules-hook.js +1 -1
  313. package/dist/tools/shared.js +1 -1
  314. package/dist/tools/wrap.js +1 -1
  315. package/package.json +5 -4
  316. package/dist/harness/checkpoint.d.ts +0 -8
  317. package/dist/harness/checkpoint.js +0 -1
  318. package/dist/knowledge/deployment-scanner.d.ts +0 -66
  319. package/dist/knowledge/deployment-scanner.js +0 -1
  320. package/dist/mode-market/index.d.ts +0 -3
  321. package/dist/mode-market/index.js +0 -1
  322. package/dist/mode-market/registry.d.ts +0 -53
  323. package/dist/mode-market/registry.js +0 -1
  324. package/dist/mode-market/review.d.ts +0 -27
  325. package/dist/mode-market/review.js +0 -1
  326. package/dist/mode-market/submission.d.ts +0 -25
  327. package/dist/mode-market/submission.js +0 -1
  328. package/dist/project/business-puzzle.js +0 -1
  329. package/dist/project/context-assembly.js +0 -1
  330. package/dist/project/deployment-bridge.d.ts +0 -5
  331. package/dist/project/deployment-bridge.js +0 -1
  332. package/dist/project/deployment-doc.d.ts +0 -190
  333. package/dist/project/deployment-doc.js +0 -1
  334. package/dist/project/edit-planner.d.ts +0 -123
  335. package/dist/project/edit-planner.js +0 -1
  336. package/dist/project/evaluation-fix.spec.d.ts +0 -1
  337. package/dist/project/evaluation-fix.spec.js +0 -1
  338. package/dist/project/evaluation.d.ts +0 -127
  339. package/dist/project/evaluation.js +0 -1
  340. package/dist/project/graph-builder.d.ts +0 -51
  341. package/dist/project/graph-builder.js +0 -1
  342. package/dist/project/graph.d.ts +0 -70
  343. package/dist/project/graph.js +0 -1
  344. package/dist/project/handlers.d.ts +0 -524
  345. package/dist/project/handlers.js +0 -1
  346. package/dist/project/index.d.ts +0 -91
  347. package/dist/project/index.js +0 -1
  348. package/dist/project/intent-analyzer.js +0 -1
  349. package/dist/project/machine-nodes.js +0 -1
  350. package/dist/project/machine-panorama.js +0 -1
  351. package/dist/project/merchant-guide.js +0 -1
  352. package/dist/project/mode-actions.js +0 -1
  353. package/dist/project/namespace.d.ts +0 -72
  354. package/dist/project/namespace.js +0 -1
  355. package/dist/project/object-panorama.js +0 -1
  356. package/dist/project/participation-radar.js +0 -1
  357. package/dist/project/pipeline-actions.js +0 -1
  358. package/dist/project/project-store.d.ts +0 -110
  359. package/dist/project/project-store.js +0 -1
  360. package/dist/project/query.d.ts +0 -43
  361. package/dist/project/query.js +0 -1
  362. package/dist/project/risk-aggregator.js +0 -1
  363. package/dist/project/semantic-assembler.d.ts +0 -93
  364. package/dist/project/semantic-assembler.js +0 -1
  365. package/dist/project/semantic-graph.js +0 -1
  366. package/dist/project/service-panorama.js +0 -1
  367. package/dist/project/stage-gate.d.ts +0 -52
  368. package/dist/project/stage-gate.js +0 -1
  369. package/dist/project/task-tracker.d.ts +0 -30
  370. package/dist/project/task-tracker.js +0 -1
  371. package/dist/schema/project/index.d.ts +0 -2021
  372. package/dist/schema/project/index.js +0 -1
  373. package/dist/schema/task-status.d.ts +0 -62
  374. package/dist/schema/task-status.js +0 -1
  375. package/dist/schemas/project_operation.output.json +0 -7877
  376. package/dist/schemas/project_operation.schema.json +0 -1139
  377. package/dist/schemas/query_task_status.output.json +0 -211
  378. package/dist/schemas/query_task_status.schema.json +0 -18
  379. package/dist/tools/handlers/project.d.ts +0 -2
  380. package/dist/tools/handlers/project.js +0 -1
  381. package/dist/tools/handlers/task-status.d.ts +0 -2
  382. package/dist/tools/handlers/task-status.js +0 -1
  383. /package/dist/{project → playbooks/service-build}/business-puzzle.d.ts +0 -0
  384. /package/dist/{project → playbooks/service-build}/game-theory.js +0 -0
  385. /package/dist/{project → playbooks/service-build}/machine-nodes.d.ts +0 -0
  386. /package/dist/{project → playbooks/service-build}/object-type.d.ts +0 -0
  387. /package/dist/{project → playbooks/service-build}/object-type.js +0 -0
  388. /package/dist/{project → playbooks/service-build}/reverse-mapping.d.ts +0 -0
  389. /package/dist/{project → playbooks/service-build}/reverse-mapping.js +0 -0
  390. /package/dist/{project → playbooks/service-build}/risk-aggregator.d.ts +0 -0
  391. /package/dist/{project → playbooks/service-build}/workflow-design-assessment.d.ts +0 -0
  392. /package/dist/{project → playbooks/service-build}/workflow-design-assessment.js +0 -0
  393. /package/dist/{project → task}/substep-trace.js +0 -0
@@ -0,0 +1,59 @@
1
+ import { SQLiteStorage } from "@wowok/wowok/w/local";
2
+ import { MonitorEventStore } from "./EventStore.js";
3
+ import { type ScopeSnapshot, type SubscriptionConfig } from "./types.js";
4
+ export interface ScopeResolverDeps {
5
+ listLocalAccounts(): Promise<{
6
+ address: string;
7
+ name?: string;
8
+ }[]>;
9
+ fetchEntityPermission(addr: string, network?: string): Promise<{
10
+ items: {
11
+ permission: string;
12
+ role?: number;
13
+ time?: number;
14
+ }[];
15
+ } | undefined>;
16
+ fetchObjectLinkerCore(target: string, network?: string): Promise<{
17
+ items: {
18
+ who: string;
19
+ }[];
20
+ } | undefined>;
21
+ fetchObjectLinkerTx(target: string, network?: string): Promise<{
22
+ items: {
23
+ who: string;
24
+ }[];
25
+ } | undefined>;
26
+ queryServiceOrders(query: {
27
+ address: string;
28
+ network?: string;
29
+ }): Promise<{
30
+ items: {
31
+ who: string;
32
+ }[];
33
+ } | undefined>;
34
+ queryOrdersByUser(query: {
35
+ address: string;
36
+ network?: string;
37
+ }): Promise<{
38
+ is_owner: boolean;
39
+ is_agent: boolean;
40
+ time?: number;
41
+ order: any;
42
+ }[]>;
43
+ queryObjects(query: {
44
+ objects: string[];
45
+ network?: string;
46
+ }): Promise<{
47
+ objects?: any[];
48
+ }>;
49
+ objectTypeFromAddress(addr: string): string | null;
50
+ store: Pick<MonitorEventStore, "list">;
51
+ storage: Pick<SQLiteStorage, "get" | "put">;
52
+ now(): number;
53
+ }
54
+ export interface ResolveScopeResult {
55
+ snapshot: ScopeSnapshot;
56
+ changed: boolean;
57
+ }
58
+ export declare function loadScopeSnapshot(network: string, storage?: Pick<SQLiteStorage, "get">): Promise<ScopeSnapshot | undefined>;
59
+ export declare function resolveScope(network: string, config: SubscriptionConfig, deps?: Partial<ScopeResolverDeps>): Promise<ResolveScopeResult>;
@@ -0,0 +1 @@
1
+ import{SQLiteStorage}from'@wowok/wowok/w/local';import{query_objects,queryOrdersByUser,objectTypeFromAddress}from'@wowok/wowok';import{fetchEntityPermission,fetchObjectLinkerCore,fetchObjectLinkerTx,fetchServiceOrders,listLocalAccounts}from'../knowledge/workflow-guidance.js';import{monitorEventStore}from'./EventStore.js';import{LOOP_DEFAULTS,normalizeAddr,shortId}from'./types.js';const SCOPE_PREFIX='mon_scope:v4:',SCOPE_HIST_PREFIX='mon_scope_hist:v4:',SCOPE_HISTORY_KEEP=0x5,FAVOR_SCAN_MAX=0x1388;function netKey(a){return(a||'default')['replace'](/[^a-zA-Z0-9_-]/g,'_');}function realDeps(){return{'listLocalAccounts':()=>listLocalAccounts(),'fetchEntityPermission':(a,b)=>fetchEntityPermission(a,b),'fetchObjectLinkerCore':(a,b)=>fetchObjectLinkerCore(a,b),'fetchObjectLinkerTx':(a,b)=>fetchObjectLinkerTx(a,b),'queryServiceOrders':a=>fetchServiceOrders(a['address'],a['network']),'queryOrdersByUser':a=>queryOrdersByUser({'address':a['address'],'network':a['network']}),'queryObjects':a=>query_objects({'objects':a['objects'],'network':a['network']}),'objectTypeFromAddress':a=>objectTypeFromAddress(a),'store':monitorEventStore,'storage':new SQLiteStorage(),'now':()=>Date['now']()};}function canonicalize(a){if(Array['isArray'](a))return a['map'](canonicalize)['sort']((c,d)=>{const e=JSON['stringify'](c),f=JSON['stringify'](d);return e<f?-0x1:e>f?0x1:0x0;});if(a&&typeof a==='object'){const b={};for(const c of Object['keys'](a)['sort']()){b[c]=canonicalize(a[c]);}return b;}return a;}function semanticHashOf(a){return JSON['stringify'](canonicalize({'accounts':a['accounts'],'permissions':a['permissions'],'managed_objects':a['managed_objects'],'services':a['services'],'orders':a['orders'],'order_children':a['order_children'],'focus':a['focus']}));}function lowerTypeOf(a,b){try{return a['objectTypeFromAddress'](b)?.['toLowerCase']()??null;}catch{return null;}}function objectFields(a){return a?.['data']??a??{};}function childrenOfOrder(a){const b=[],c=Array['isArray'](a?.['dispute'])?a['dispute']:[];for(const e of c){if(typeof e==='string'&&e)b['push']({'type':'arb','object':e});}return typeof a?.['progress']==='string'&&a['progress']&&b['push']({'type':'progress','object':a['progress']}),typeof a?.['allocation']==='string'&&a['allocation']&&b['push']({'type':'allocation','object':a['allocation']}),b;}export async function loadScopeSnapshot(a,b){try{const c=await(b??new SQLiteStorage())['get'](''+SCOPE_PREFIX+netKey(a));if(!c)return undefined;const d=JSON['parse'](c);return d&&typeof d['version']==='number'?d:undefined;}catch{return undefined;}}export async function resolveScope(a,b,e){const g={...realDeps(),...e??{}},h=g['now'](),j=[],k=async(N,O)=>{try{return await O();}catch{return j['push'](N),undefined;}},l=''+SCOPE_PREFIX+netKey(a),n=''+SCOPE_HIST_PREFIX+netKey(a);let p;try{const N=await g['storage']['get'](l);p=N?JSON['parse'](N):undefined;}catch{p=undefined;}let q;if(b['scope']['accounts']==='local-all'){const O=await k('accounts',()=>g['listLocalAccounts']());q=(O??[])['map'](P=>P['address'])['filter'](P=>typeof P==='string'&&P);}else q=[...b['scope']['accounts']];q=[...new Set(q)];const s=b['scope']['rules'],t=[],u=[],w=new Map();if(s['managed_objects']||s['merchant_orders']){for(const R of q){const S=await k('entity_permission:'+shortId(R),()=>g['fetchEntityPermission'](R,a));for(const T of S?.['items']??[]){if(T?.['permission'])t['push'](T['permission']);}}const P=[...new Set(t)];t['length']=0x0,t['push'](...P);const Q=new Set();for(const U of P){const V=await k('object_linker_core:'+shortId(U),()=>g['fetchObjectLinkerCore'](U,a)),W=await k('object_linker_tx:'+shortId(U),()=>g['fetchObjectLinkerTx'](U,a)),X=[...(V?.['items']??[])['map'](Y=>Y?.['who']),...(W?.['items']??[])['map'](Y=>Y?.['who'])];for(const Y of X){if(typeof Y!=='string'||!Y)continue;const Z=lowerTypeOf(g,Y);if(!Z)continue;const a0=normalizeAddr(Y);if(Q['has'](a0))continue;Q['add'](a0),u['push']({'type':Z,'object':Y}),w['set'](a0,U);}}}const x=u['filter'](a1=>a1['type']==='service')['map'](a1=>a1['object']),y=new Map(),z=(a1,a2)=>{const a3=normalizeAddr(a1);if(!a3)return;const a4=y['get'](a3)??{'order':a1,'merchant':![],'buyer':![]};a4[a2]=!![],y['set'](a3,a4);};if(s['merchant_orders'])for(const a1 of x){const a2=await k('service_orders:'+shortId(a1),()=>g['queryServiceOrders']({'address':a1,'network':a}));for(const a3 of a2?.['items']??[]){if(typeof a3?.['who']==='string'&&a3['who'])z(a3['who'],'merchant');}}if(s['my_orders'])for(const a4 of q){const a5=await k('user_orders:'+shortId(a4),()=>g['queryOrdersByUser']({'address':a4,'network':a}));for(const a6 of a5??[]){if(!a6?.['is_owner']&&!a6?.['is_agent'])continue;const a7=a6?.['order']?.['object']??a6?.['order']?.['id'];if(typeof a7==='string'&&a7)z(a7,'buyer');}}const A=[...y['values']()]['map'](a8=>({'order':a8['order'],'role':a8['merchant']&&a8['buyer']?'both':a8['merchant']?'merchant':'buyer'})),B=[],C=new Map();if(s['order_children']&&y['size']>0x0){const a8=[...y['values']()]['map'](a9=>a9['order']);for(let a9=0x0;a9<a8['length'];a9+=0x32){const aa=a8['slice'](a9,a9+0x32),ab=await k('order_objects:'+shortId(aa[0x0]),()=>g['queryObjects']({'objects':aa,'network':a}));for(const ac of ab?.['objects']??[]){const ad=objectFields(ac),ae=ac?.['object']??ad?.['object']??ad?.['id'];if(typeof ae!=='string'||!ae)continue;for(const af of childrenOfOrder(ad)){const ag=normalizeAddr(af['object']);if(C['has'](ag))continue;C['set'](ag,ae),B['push'](af);}}}}const D=(b['scope']['focus_objects']??[])['map'](ah=>({...ah})),E=new Set(D['map'](ah=>normalizeAddr(ah['object']))),F=new Map();for(const ah of p?.['focus']??[]){if(ah?.['reason']==='favor'&&ah['object'])F['set'](normalizeAddr(ah['object']),ah['added_at']);}if(s['favor_objects']&&q['length']>0x0){const ai=Number(b['loop']?.['backfill_days']??LOOP_DEFAULTS['backfill_days']),aj=h-Math['max'](0x0,ai)*0x5265c00,ak=new Set(q['map'](al=>normalizeAddr(al)));try{let al=0x0;for(;;){const am=await g['store']['list'](a,{'module':'arb','eventType':'FeedbackEvent','since':aj,'offset':al,'limit':0xc8});if(am['events']['length']===0x0)break;for(const an of am['events']){const ao=an['event'],ap=normalizeAddr(ao?.['sender']);if(!ap||!ak['has'](ap))continue;const aq=ao?.['object'],ar=normalizeAddr(typeof aq==='string'?aq:'');if(!ar||E['has'](ar))continue;E['add'](ar),D['push']({'object':aq,'added_at':F['get'](ar)??h,'reason':'favor','closure':!![]});}al+=am['events']['length'];if(al>=am['total']||al>=FAVOR_SCAN_MAX)break;}}catch{j['push']('favor_scan');}}const G={},H=(as,at)=>{const au=normalizeAddr(as);if(!au)return;const av=G[au]??=[],aw=av['some'](ax=>ax['rule']===at['rule']&&normalizeAddr(ax['object'])===normalizeAddr(at['object']));if(!aw)av['push'](at);};if(s['managed_objects'])for(const as of u){const at=w['get'](normalizeAddr(as['object']));H(as['object'],{'rule':'managed_objects','object':as['object'],'detail':at?as['type']+'\x20'+shortId(as['object'])+'\x20of\x20permission\x20'+shortId(at):as['type']+'\x20'+shortId(as['object'])+'\x20(managed)'});}for(const au of A){(au['role']==='merchant'||au['role']==='both')&&H(au['order'],{'rule':'merchant_orders','object':au['order'],'detail':'order\x20'+shortId(au['order'])+'\x20(merchant)'}),(au['role']==='buyer'||au['role']==='both')&&H(au['order'],{'rule':'my_orders','object':au['order'],'detail':'order\x20'+shortId(au['order'])+'\x20(buyer)'});}if(s['order_children'])for(const av of B){const aw=C['get'](normalizeAddr(av['object']));H(av['object'],{'rule':'order_children','object':av['object'],'detail':aw?av['type']+'\x20'+shortId(av['object'])+'\x20of\x20order\x20'+shortId(aw):av['type']+'\x20'+shortId(av['object'])+'\x20(order\x20child)'});}for(const ax of D){const ay=lowerTypeOf(g,ax['object']);H(ax['object'],{'rule':'focus','object':ax['object'],'detail':'focused\x20'+(ay??'object')+'\x20'+shortId(ax['object'])});if(!ax['closure'])continue;if(ay==='service'){const az=await k('focus_service_orders:'+shortId(ax['object']),()=>g['queryServiceOrders']({'address':ax['object'],'network':a}));for(const aA of az?.['items']??[]){if(typeof aA?.['who']!=='string'||!aA['who'])continue;H(aA['who'],{'rule':'focus','object':aA['who'],'detail':'order\x20'+shortId(aA['who'])+'\x20of\x20focused\x20service\x20'+shortId(ax['object'])});}}else{if(ay==='order'){const aB=await k('focus_order:'+shortId(ax['object']),()=>g['queryObjects']({'objects':[ax['object']],'network':a})),aC=objectFields(aB?.['objects']?.[0x0]);for(const aD of childrenOfOrder(aC)){H(aD['object'],{'rule':'focus','object':aD['object'],'detail':aD['type']+'\x20'+shortId(aD['object'])+'\x20of\x20focused\x20order\x20'+shortId(ax['object'])});}}}}const I={'accounts':q,'permissions':t,'managed_objects':u,'services':x,'orders':A,'order_children':B,'focus':D},J=semanticHashOf(I),K=!p||semanticHashOf(p)!==J,L=p?K?p['version']+0x1:p['version']:0x1,M={'version':L,'resolved_at':h,...I,'index':G,...j['length']>0x0?{'data_gaps':j}:{}};try{await g['storage']['put'](l,JSON['stringify'](M));if(K){let aE=[];try{const aF=await g['storage']['get'](n),aG=aF?JSON['parse'](aF):undefined;aE=Array['isArray'](aG?.['snapshots'])?aG['snapshots']:[];}catch{aE=[];}aE['unshift'](M),await g['storage']['put'](n,JSON['stringify']({'snapshots':aE['slice'](0x0,SCOPE_HISTORY_KEEP)}));}}catch{j['push']('snapshot_persist');}return{'snapshot':M,'changed':K};}
@@ -0,0 +1,13 @@
1
+ import { SQLiteStorage } from "@wowok/wowok/w/local";
2
+ import { type SubscriptionConfig } from "./types.js";
3
+ export declare function clampLoopParams(loop: SubscriptionConfig["loop"]): SubscriptionConfig["loop"];
4
+ export declare function mergeSubscriptionConfig(base: SubscriptionConfig, partial?: Partial<SubscriptionConfig> | null): SubscriptionConfig;
5
+ export declare class SubscriptionStore {
6
+ private storage;
7
+ constructor(storage?: SQLiteStorage);
8
+ private cfgKey;
9
+ getConfig(network: string): Promise<SubscriptionConfig>;
10
+ saveConfig(network: string, partial: Partial<SubscriptionConfig>): Promise<SubscriptionConfig>;
11
+ resetConfig(network: string): Promise<SubscriptionConfig>;
12
+ }
13
+ export declare const subscriptionStore: SubscriptionStore;
@@ -0,0 +1 @@
1
+ import{SQLiteStorage}from'@wowok/wowok/w/local';import{defaultSubscriptionConfig,LOOP_DEFAULTS,LOOP_MIN}from'./types.js';const CFG_PREFIX='mon_cfg:v4:';function netKey(a){return(a||'default')['replace'](/[^a-zA-Z0-9_-]/g,'_');}export function clampLoopParams(a){const b={...a??{}},c=Number(b['poll_interval_ms']);b['poll_interval_ms']=Number['isFinite'](c)?Math['max'](LOOP_MIN['poll_interval_ms'],Math['floor'](c)):LOOP_DEFAULTS['poll_interval_ms'];const d=Number(b['scope_refresh_ms']);b['scope_refresh_ms']=Number['isFinite'](d)?Math['max'](LOOP_MIN['scope_refresh_ms'],Math['floor'](d)):LOOP_DEFAULTS['scope_refresh_ms'];const e=Number(b['backfill_days']);return b['backfill_days']=Number['isFinite'](e)?Math['max'](LOOP_MIN['backfill_days'],Math['floor'](e)):LOOP_DEFAULTS['backfill_days'],b;}export function mergeSubscriptionConfig(a,b){const c=b??{};return{'version':0x2,'enabled':typeof c['enabled']==='boolean'?c['enabled']:a['enabled'],'scope':{'accounts':c['scope']?.['accounts']??a['scope']['accounts'],'rules':{...a['scope']['rules'],...c['scope']?.['rules']??{}},'focus_objects':(c['scope']?.['focus_objects']??a['scope']['focus_objects'])['map'](d=>({...d}))},'events':{...a['events'],...c['events']??{}},'filters':(c['filters']??a['filters'])['map'](d=>({...d})),'loop':clampLoopParams({...a['loop'],...c['loop']??{}})};}export class SubscriptionStore{['storage'];constructor(a){this['storage']=a??new SQLiteStorage();}['cfgKey'](a){return''+CFG_PREFIX+netKey(a);}async['getConfig'](a){let b;try{const c=await this['storage']['get'](this['cfgKey'](a));b=c?JSON['parse'](c):undefined;}catch{b=undefined;}return mergeSubscriptionConfig(defaultSubscriptionConfig(),b);}async['saveConfig'](a,b){const c=mergeSubscriptionConfig(await this['getConfig'](a),b);return await this['storage']['put'](this['cfgKey'](a),JSON['stringify'](c)),c;}async['resetConfig'](a){const b=defaultSubscriptionConfig();return await this['storage']['put'](this['cfgKey'](a),JSON['stringify'](b)),b;}}export const subscriptionStore=new SubscriptionStore();
@@ -0,0 +1,38 @@
1
+ import type { GoalRecord, GoalStage } from "../goal/types.js";
2
+ import type { SuggestionRecord } from "../task/types.js";
3
+ import type { RelevanceAnnotation, ScopeSnapshot } from "./types.js";
4
+ export interface ProgressionClassification {
5
+ kind: "advance_stage" | "complete_goal";
6
+ stage?: GoalStage;
7
+ goal_type?: string;
8
+ title: string;
9
+ detail: string;
10
+ object: string;
11
+ }
12
+ export declare function classifyProgression(ev: any): ProgressionClassification | null;
13
+ export interface SuggestionBridgeDeps {
14
+ getGoal(network: string, id: string): Promise<GoalRecord | undefined>;
15
+ addSuggestion(dir: string, input: {
16
+ object?: string;
17
+ kind: SuggestionRecord["kind"];
18
+ stage?: string;
19
+ objects?: {
20
+ type: string;
21
+ object: string;
22
+ }[];
23
+ title: string;
24
+ detail?: string;
25
+ origin?: SuggestionRecord["origin"];
26
+ }): SuggestionRecord;
27
+ listSuggestions(dir: string, filter?: {
28
+ status?: SuggestionRecord["status"];
29
+ }): SuggestionRecord[];
30
+ logger(message: string): void;
31
+ }
32
+ export interface SuggestionBridgeInput {
33
+ network: string;
34
+ events: any[];
35
+ annotations: RelevanceAnnotation[];
36
+ scope: ScopeSnapshot;
37
+ }
38
+ export declare function bridgeMonitorSuggestions(input: SuggestionBridgeInput, deps: SuggestionBridgeDeps): Promise<number>;
@@ -0,0 +1 @@
1
+ import{monitorEventId}from'./EventStore.js';const ARB_STATUS_FINISHED=0x5,STAGE_GATE={'advance_stage':'acting','complete_goal':'monitoring'};export function classifyProgression(a){if(!a||typeof a!=='object')return null;if(a['type']==='NewOrderEvent'){const b=typeof a['order']==='string'?a['order']:null,c=typeof a['service']==='string'?a['service']:null,d=b??c;if(!d)return null;return{'kind':'advance_stage','stage':'monitoring','title':'First\x20order\x20received\x20—\x20enter\x20monitoring','detail':'NewOrderEvent\x20on\x20'+d+(c?'\x20for\x20service\x20'+c:'')+'.\x20The\x20goal\x27s\x20live\x20object\x20now\x20transacts\x20on\x20its\x20own;\x20confirm\x20to\x20enter\x20the\x20monitoring\x20station\x20(auto-binds\x20focus\x20for\x20the\x20order\x20lifecycle).','object':d};}if(a['type']==='ArbEvent'){const e=Number(a['status']);if(e!==ARB_STATUS_FINISHED)return null;const f=typeof a['order']==='string'?a['order']:null,g=typeof a['arb']==='string'?a['arb']:null,h=f??g;if(!h)return null;return{'kind':'complete_goal','title':'Arbitration\x20finished\x20—\x20verify\x20completion','detail':'The\x20dispute\x20covering\x20'+h+'\x20finished\x20(ArbEvent\x20Finished)'+(a['arbitration']?'\x20—\x20arbitration\x20'+a['arbitration']:'')+'.\x20Confirm\x20to\x20run\x20the\x20COMPLETE\x20station:\x20chain\x20conditions\x20are\x20re-verified\x20before\x20the\x20goal\x20closes.','object':h};}if(a['type']==='ServiceEvent'){const i=typeof a['object']==='string'?a['object']:null;if(!i)return null;return{'kind':'complete_goal','goal_type':'publish_service','title':'Service\x20live\x20—\x20verify\x20completion','detail':'ServiceEvent\x20on\x20'+i+(a['description']?'\x20('+a['description']+')':'')+'.\x20Confirm\x20to\x20run\x20the\x20COMPLETE\x20station:\x20the\x20service\x20conjunction\x20(healthy,\x20sales,\x20machine,\x20permission)\x20is\x20re-verified\x20on\x20chain.','object':i};}return null;}const EVENT_OBJECT_FIELDS=['order','service','arb','arbitration','object','progress'];export async function bridgeMonitorSuggestions(b,c){const {network:d,events:g,annotations:h,scope:i}=b;try{const j=new Set(h['map'](n=>n['event_id'])),k=new Map();for(const n of h){k['set'](n['event_id'],n['rules']['map'](o=>o['object']));}const l=new Map();for(const o of i['focus']??[]){if(o['goal_id']&&o['object'])l['set'](o['object'],o['goal_id']);}if(l['size']===0x0)return 0x0;const m=[];for(const p of g){const q=monitorEventId(p?.['id']);if(!q||!j['has'](q))continue;const r=classifyProgression(p);if(!r)continue;const s=[...k['get'](q)??[],...EVENT_OBJECT_FIELDS['map'](y=>p[y])['filter'](y=>typeof y==='string'&&y['length']>0x0)];let t;for(const y of s){const z=l['get'](y);if(z){t=z;break;}}if(!t)continue;const u=await c['getGoal'](d,t),v=u?.['process']?.['dir'];if(!u||!v)continue;const w=STAGE_GATE[r['kind']];if(w&&u['stage']!==w)continue;if(r['goal_type']&&u['goal_type']!==r['goal_type'])continue;const x=c['listSuggestions'](v)['some'](A=>A['origin']?.['source']==='monitor'&&A['origin']?.['event_id']===q);if(x)continue;c['addSuggestion'](v,{'object':r['object'],'kind':r['kind'],...r['stage']?{'stage':r['stage']}:{},'title':r['title'],'detail':r['detail'],'origin':{'source':'monitor','network':d,'event_id':q,'event_type':String(p['type']??'unknown')}}),m['push'](q);}return m['length']>0x0&&c['logger']('suggestion\x20bridge:\x20opened\x20'+m['length']+'\x20suggestion(s)\x20on\x20'+d+'\x20from\x20monitor\x20progressions'),m['length'];}catch(A){return c['logger']('suggestion\x20bridge:\x20skipped\x20('+String(A?.['message']??A)+')'),0x0;}}
@@ -0,0 +1,8 @@
1
+ import type { MonitorEventModule } from "./types.js";
2
+ export declare const MONITOR_CAPTURE_TYPES: readonly ["NewOrderEvent", "ArbEvent", "VoteEvent", "FeedbackEvent", "DemandPresentEvent", "DemandFeedbackEvent", "DemandChangedEvent", "ProgressEvent", "AllocationEvent", "TreasuryEvent", "RewardClaimEvent", "RewardFundEvent", "ServiceEvent", "NewEntityEvent"];
3
+ export declare const PAYMENT_EVENT_TYPE = "NewPaymentEvent";
4
+ export declare const MONITOR_KNOWN_TYPES: readonly string[];
5
+ export declare const EVENT_MODULE_OF: Record<string, MonitorEventModule>;
6
+ export declare function monitorEventShortType(typeRaw: unknown): string | null;
7
+ export declare function normalizeMonitorEvent(ev: any): any;
8
+ export declare const EVENT_ADDRESS_FIELDS: readonly string[];
@@ -0,0 +1 @@
1
+ export const MONITOR_CAPTURE_TYPES=['NewOrderEvent','ArbEvent','VoteEvent','FeedbackEvent','DemandPresentEvent','DemandFeedbackEvent','DemandChangedEvent','ProgressEvent','AllocationEvent','TreasuryEvent','RewardClaimEvent','RewardFundEvent','ServiceEvent','NewEntityEvent'];export const PAYMENT_EVENT_TYPE='NewPaymentEvent';export const MONITOR_KNOWN_TYPES=[...MONITOR_CAPTURE_TYPES,PAYMENT_EVENT_TYPE];export const EVENT_MODULE_OF={'NewOrderEvent':'order','ArbEvent':'arb','VoteEvent':'arb','FeedbackEvent':'arb','DemandPresentEvent':'demand','DemandFeedbackEvent':'demand','DemandChangedEvent':'demand','ProgressEvent':'progress','AllocationEvent':'treasury','TreasuryEvent':'treasury','RewardClaimEvent':'reward','RewardFundEvent':'reward','ServiceEvent':'service','NewEntityEvent':'entity','NewPaymentEvent':'payment'};export function monitorEventShortType(a){if(!a||typeof a!=='string')return null;if(a['includes']('::order::NewOrderEvent'))return'NewOrderEvent';if(a['includes']('::demand::PresentEvent'))return'DemandPresentEvent';if(a['includes']('::demand::DemandChangedEvent'))return'DemandChangedEvent';if(a['includes']('::demand::DemandEvent'))return'DemandFeedbackEvent';if(a['includes']('::progress::ProgressEvent'))return'ProgressEvent';if(a['includes']('::arb::VoteEvent'))return'VoteEvent';if(a['includes']('::arb::FeedbackEvent'))return'FeedbackEvent';if(a['includes']('::arb::ArbEvent'))return'ArbEvent';if(a['includes']('::registrar::NewEntityEvent'))return'NewEntityEvent';if(a['includes']('::service::ServiceEvent'))return'ServiceEvent';if(a['includes']('::allocation::AllocationEvent'))return'AllocationEvent';if(a['includes']('::treasury::TreasuryEvent'))return'TreasuryEvent';if(a['includes']('::reward::RewardClaimEvent'))return'RewardClaimEvent';if(a['includes']('::reward::RewardFundEvent'))return'RewardFundEvent';if(a['includes']('::payment::NewPaymentEvent'))return'NewPaymentEvent';return null;}export function normalizeMonitorEvent(a){if(!a||typeof a!=='object')return a;if(MONITOR_KNOWN_TYPES['includes'](a['type'])&&!a['parsedJson_raw'])return a;const b=MONITOR_KNOWN_TYPES['includes'](a['type'])?a['type']:monitorEventShortType(a['type_raw']??a['type']);if(!b)return a;const c=a['parsedJson_raw']??{},d=f=>f&&typeof f==='object'&&!Array['isArray'](f)&&'some'in f?f['some']:f,e={...a,'type':b};switch(b){case'NewOrderEvent':return{...e,'order':d(c['object']),'service':d(c['service'])??null,'progress':d(c['progress'])??null,'discount':d(c['discount'])??null,'allocation':d(c['allocation'])??null,'amount':d(c['amount'])??null};case'DemandPresentEvent':return{...e,'demand':d(c['object']),'service':d(c['service'])??null,'recommend':d(c['recommend'])??null};case'DemandFeedbackEvent':return{...e,'demand':d(c['object']),'service':d(c['service'])??null,'feedback':d(c['feedback'])??null,'acceptance_score':d(c['acceptance_score'])??null};case'ProgressEvent':return{...e,'progress':d(c['object']),'machine':d(c['machine'])??null,'task':d(c['task'])??null,'node':d(c['node'])??null,'forward':d(c['forward'])??null,'hold':d(c['hold'])??null};case'ArbEvent':return{...e,'arb':d(c['object']),'arbitration':d(c['arbitration'])??null,'order':d(c['order'])??null,'status':d(c['status'])??null};case'NewEntityEvent':return{...e,'resource':d(c['resource'])??null,'address':a['sender'],'referrer':d(c['referrer'])??null};case'ServiceEvent':return{...e,'object':d(c['object']),'location':d(c['location'])??null,'description':d(c['description'])??null};case'DemandChangedEvent':return{...e,'object':d(c['object']),'location':d(c['location'])??null,'description':d(c['description'])??null,'rewards':d(c['rewards'])??[]};case'VoteEvent':return{...e,'object':d(c['object']),'voter':d(c['voter'])??null,'agrees':d(c['agrees'])??[],'weight':d(c['weight'])??null};case'FeedbackEvent':return{...e,'object':d(c['object']),'feedback':d(c['feedback'])??null};case'AllocationEvent':return{...e,'object':d(c['object']),'payment':d(c['payment'])??null,'guard':d(c['guard'])??null,'amount':d(c['amount'])??null};case'TreasuryEvent':return{...e,'object':d(c['object']),'op':d(c['op'])??null,'payment':d(c['payment'])??null,'amount':d(c['amount'])??null,'external_guard':d(c['external_guard'])??null,'store_from_id':d(c['store_from_id'])??null};case'RewardClaimEvent':return{...e,'object':d(c['object']),'guard':d(c['guard'])??null,'recipient':d(c['recipient'])??null,'amount':d(c['amount'])??null,'total':d(c['total'])??null,'balance_left':d(c['balance_left'])??null,'store_from_id':d(c['store_from_id'])??null};case'RewardFundEvent':return{...e,'object':d(c['object']),'amount':d(c['amount'])??null,'balance':d(c['balance'])??null,'from_payment':d(c['from_payment'])??null};case'NewPaymentEvent':return{...e,'object':d(c['object']),'info':c['info']?{...c['info'],'for_object':d(c['info']?.['for_object'])??null,'for_guard':d(c['info']?.['for_guard'])??null}:null,'record':Array['isArray'](c['record'])?c['record']:[],'amount':d(c['amount'])??null,'from_object':d(c['from_object'])??null};default:return e;}}export const EVENT_ADDRESS_FIELDS=['object','order','service','demand','progress','arb','arbitration','allocation','discount','machine','task','address','resource','payment','from_payment','from_object'];
@@ -0,0 +1,89 @@
1
+ export declare const MONITOR_EVENT_MODULES: readonly ["order", "arb", "demand", "progress", "treasury", "reward", "service", "entity", "payment"];
2
+ export type MonitorEventModule = (typeof MONITOR_EVENT_MODULES)[number];
3
+ export interface RuleHit {
4
+ rule: "managed_objects" | "merchant_orders" | "my_orders" | "order_children" | "focus";
5
+ object: string;
6
+ detail: string;
7
+ }
8
+ export interface RelevanceAnnotation {
9
+ event_id: string;
10
+ event_type: string;
11
+ rules: RuleHit[];
12
+ focus_hit: boolean;
13
+ matched_filters: string[];
14
+ scope_version: number;
15
+ annotated_at: number;
16
+ }
17
+ export interface EventFilter {
18
+ id: string;
19
+ enabled: boolean;
20
+ event?: string;
21
+ field: string;
22
+ op: "eq" | "neq" | "contains" | "gte" | "lte" | "in";
23
+ value: string | number | string[];
24
+ }
25
+ export interface FocusEntry {
26
+ object: string;
27
+ added_at: number;
28
+ reason: "favor" | "manual" | "radar" | "goal";
29
+ note?: string;
30
+ closure: boolean;
31
+ goal_id?: string;
32
+ }
33
+ export interface SubscriptionConfig {
34
+ version: 2;
35
+ enabled: boolean;
36
+ scope: {
37
+ accounts: "local-all" | string[];
38
+ rules: {
39
+ managed_objects: boolean;
40
+ merchant_orders: boolean;
41
+ my_orders: boolean;
42
+ order_children: boolean;
43
+ favor_objects: boolean;
44
+ };
45
+ focus_objects: FocusEntry[];
46
+ };
47
+ events: Partial<Record<string, boolean>>;
48
+ filters: EventFilter[];
49
+ loop: {
50
+ poll_interval_ms?: number;
51
+ scope_refresh_ms?: number;
52
+ backfill_days?: number;
53
+ };
54
+ }
55
+ export interface ObjectRef {
56
+ type: string;
57
+ object: string;
58
+ }
59
+ export interface OrderRef {
60
+ order: string;
61
+ role: "merchant" | "buyer" | "both";
62
+ }
63
+ export interface ScopeSnapshot {
64
+ version: number;
65
+ resolved_at: number;
66
+ accounts: string[];
67
+ permissions: string[];
68
+ managed_objects: ObjectRef[];
69
+ services: string[];
70
+ orders: OrderRef[];
71
+ order_children: ObjectRef[];
72
+ focus: FocusEntry[];
73
+ index: Record<string, RuleHit[]>;
74
+ data_gaps?: string[];
75
+ }
76
+ export declare const LOOP_DEFAULTS: {
77
+ readonly poll_interval_ms: 15000;
78
+ readonly scope_refresh_ms: 300000;
79
+ readonly backfill_days: 7;
80
+ };
81
+ export declare const LOOP_MIN: {
82
+ readonly poll_interval_ms: 5000;
83
+ readonly scope_refresh_ms: 60000;
84
+ readonly backfill_days: 0;
85
+ };
86
+ export declare const DEFAULT_EVENT_SWITCHES: Record<string, boolean>;
87
+ export declare function defaultSubscriptionConfig(): SubscriptionConfig;
88
+ export declare function normalizeAddr(addr?: string | null): string;
89
+ export declare function shortId(addr?: string | null): string;
@@ -0,0 +1 @@
1
+ export const MONITOR_EVENT_MODULES=['order','arb','demand','progress','treasury','reward','service','entity','payment'];export const LOOP_DEFAULTS={'poll_interval_ms':0x3a98,'scope_refresh_ms':0x493e0,'backfill_days':0x7};export const LOOP_MIN={'poll_interval_ms':0x1388,'scope_refresh_ms':0xea60,'backfill_days':0x0};export const DEFAULT_EVENT_SWITCHES={'NewOrderEvent':!![],'ProgressEvent':!![],'ArbEvent':!![],'VoteEvent':!![],'TreasuryEvent':!![],'RewardFundEvent':!![],'RewardClaimEvent':!![],'AllocationEvent':!![],'FeedbackEvent':![],'NewPaymentEvent':![],'DemandChangedEvent':![],'DemandPresentEvent':![],'DemandFeedbackEvent':![],'ServiceEvent':![],'NewEntityEvent':![]};export function defaultSubscriptionConfig(){return{'version':0x2,'enabled':!![],'scope':{'accounts':'local-all','rules':{'managed_objects':!![],'merchant_orders':!![],'my_orders':!![],'order_children':!![],'favor_objects':!![]},'focus_objects':[]},'events':{...DEFAULT_EVENT_SWITCHES},'filters':[],'loop':{...LOOP_DEFAULTS}};}export function normalizeAddr(a){if(!a)return'';const b=a['startsWith']('0x')?a['slice'](0x2):a;return b['toLowerCase']();}export function shortId(a){const b=normalizeAddr(a);if(!b)return'';if(b['length']<=0x7)return b['toUpperCase']();return b['slice'](0x0,0x4)['toUpperCase']()+'-'+b['slice'](-0x3)['toUpperCase']();}
@@ -0,0 +1,20 @@
1
+ export interface ArbitratorInterestInput {
2
+ account: string;
3
+ arbitration: string;
4
+ vote_weight?: number;
5
+ open_disputes: Array<{
6
+ arb: string;
7
+ order?: string;
8
+ voting_deadline?: number;
9
+ current_time?: number;
10
+ }>;
11
+ resolved_indemnities?: string[];
12
+ }
13
+ export interface ArbitratorInterestAnalysis {
14
+ fund_flow: string[];
15
+ responsibility: string[];
16
+ leverage: string[];
17
+ stakes: string[];
18
+ summary: string;
19
+ }
20
+ export declare function analyzeArbitratorInterest(input: ArbitratorInterestInput): ArbitratorInterestAnalysis;
@@ -0,0 +1 @@
1
+ export function analyzeArbitratorInterest(a){const b=[],c=[],e=[],f=[];b['push']('Arbitration\x20fee\x20is\x20escrowed\x20per\x20dispute\x20(arb.move)\x20—\x20collected\x20when\x20the\x20verdict\x20lands,\x20forfeited\x20if\x20you\x20never\x20vote.');a['vote_weight']!==undefined&&b['push']('Your\x20vote\x20carries\x20weight\x20'+a['vote_weight']+'\x20—\x20weighted\x20voting,\x20not\x20majority\x20count:\x20a\x20high-weight\x20vote\x20can\x20decide\x20a\x20case\x20alone.');if(a['open_disputes']['length']>0x0){c['push'](a['open_disputes']['length']+'\x20open\x20dispute(s)\x20await\x20your\x20proposition/vote\x20—\x20you\x20hold\x20arbitration\x20power\x20over\x20funds\x20that\x20are\x20already\x20escrowed.');for(const h of a['open_disputes']){if(h['voting_deadline']!==undefined&&h['current_time']!==undefined){const i=Math['round']((h['voting_deadline']-h['current_time'])/0x36ee80);c['push']('Arb\x20'+h['arb']+':\x20'+(i>=0x0?i+'h\x20left\x20to\x20the\x20voting\x20deadline':'voting\x20deadline\x20PASSED')+(h['order']?'\x20(order\x20'+h['order']+')':'')+'.');}}}c['push']('Verdicts\x20must\x20be\x20defensible\x20from\x20on-chain\x20evidence\x20(progress\x20records,\x20WIP\x20hashes,\x20Messenger\x20records)\x20—\x20every\x20Voted\x20entry\x20is\x20permanent\x20and\x20queryable.'),e['push']('Pull\x20the\x20order\x27s\x20full\x20record\x20before\x20voting:\x20Progress\x20holders\x20show\x20WHO\x20advanced\x20WHAT\x20and\x20WHEN\x20—\x20the\x20liability\x20question\x20usually\x20answers\x20itself\x20from\x20the\x20timestamps.');a['open_disputes']['length']>0x0&&e['push']('Request\x20missing\x20evidence\x20via\x20Messenger\x20—\x20the\x20conversation\x20record\x20becomes\x20part\x20of\x20the\x20dispute\x20record.');f['push']('Deadline\x20miss:\x20a\x20case\x20you\x20hold\x20weight\x20in\x20resolves\x20without\x20you\x20—\x20fee\x20forfeited\x20and\x20your\x20arbitration\x20reputation\x20degrades\x20(registrar\x20votes\x20are\x20queryable\x20by\x20future\x20disputants).');a['resolved_indemnities']?.['length']&&f['push']('You\x20resolved\x20'+a['resolved_indemnities']['length']+'\x20case(s)\x20recently\x20—\x20a\x20verdict\x20overturned\x20by\x20evidence\x20later\x20discovered\x20is\x20a\x20permanent\x20reputation\x20mark.');f['push']('Separation\x20of\x20powers:\x20you\x20must\x20NOT\x20hold\x20power\x20in\x20the\x20disputing\x20service\x27s\x20own\x20permission\x20(service.move\x20rejects\x20such\x20bindings)\x20—\x20avoid\x20any\x20position\x20that\x20re-creates\x20that\x20conflict.');const g='As\x20an\x20arbitrator\x20of\x20'+a['arbitration']+(a['vote_weight']!==undefined?'\x20(weight\x20'+a['vote_weight']+')':'')+(',\x20'+a['open_disputes']['length']+'\x20open\x20dispute(s)')+(a['open_disputes']['length']>0x0?'\x20await\x20your\x20vote':'\x20are\x20pending')+'.\x20Your\x20income\x20is\x20the\x20fee;\x20your\x20asset\x20is\x20a\x20defensible\x20verdict\x20record;\x20your\x20exposure\x20is\x20the\x20deadline.';return{'fund_flow':b,'responsibility':c,'leverage':e,'stakes':f,'summary':g};}
@@ -0,0 +1,23 @@
1
+ export interface DemanderInterestInput {
2
+ account: string;
3
+ demand: string;
4
+ presenters: Array<{
5
+ address: string;
6
+ service?: string;
7
+ acceptance_score?: number;
8
+ }>;
9
+ rewards: Array<{
10
+ address: string;
11
+ description?: string;
12
+ }>;
13
+ guards: string[];
14
+ open: boolean;
15
+ }
16
+ export interface DemanderInterestAnalysis {
17
+ fund_flow: string[];
18
+ responsibility: string[];
19
+ leverage: string[];
20
+ stakes: string[];
21
+ summary: string;
22
+ }
23
+ export declare function analyzeDemanderInterest(input: DemanderInterestInput): DemanderInterestAnalysis;
@@ -0,0 +1 @@
1
+ export function analyzeDemanderInterest(a){const b=[],c=[],d=[],e=[];a['rewards']['length']>0x0?b['push'](a['rewards']['length']+'\x20reward\x20object(s)\x20escrowed\x20on\x20the\x20demand\x20—\x20claimable\x20ONLY\x20by\x20the\x20presenter\x20you\x20select\x20'+'(the\x20claim\x20guard\x20passes\x20for\x20the\x20winner\x27s\x20claim\x20alone).\x20Nothing\x20is\x20paid\x20for\x20presenting\x20itself.'):b['push']('No\x20reward\x20attached\x20—\x20presenters\x20see\x20a\x20non-paying\x20demand;\x20expect\x20fewer\x20or\x20weaker\x20presentations.');c['push']('Selection\x20is\x20yours\x20alone:\x20the\x20on-chain\x20feedback\x20you\x20write\x20(acceptance_score)\x20becomes\x20the\x20presenter\x27s\x20permanent,\x20queryable\x20reputation.');a['presenters']['length']>0x0&&c['push'](a['presenters']['length']+'\x20presenter(s)\x20are\x20waiting\x20on\x20your\x20selection\x20—\x20each\x20present\x20is\x20visible\x20with\x20its\x20service\x20and\x20history.');a['open']?(d['push']('Keep\x20the\x20demand\x20open\x20and\x20compare\x20presenters\x20via\x20their\x20services\x27\x20trust\x20data\x20(registrar\x20votes,\x20past\x20orders,\x20arbitration\x20bindings)\x20before\x20selecting.'),a['guards']['length']>0x0&&d['push']('Demand\x20guards\x20('+a['guards']['join'](',\x20')+')\x20filter\x20who\x20may\x20present\x20—\x20tighten\x20them\x20if\x20low-quality\x20presentations\x20arrive.')):d['push']('Demand\x20closed\x20—\x20leave\x20on-chain\x20feedback\x20(acceptance_score)\x20to\x20finish\x20the\x20evaluation\x20loop.');d['push']('Negotiate\x20pre-commitment\x20terms\x20via\x20Messenger:\x20the\x20conversation\x20record\x20is\x20evidence\x20if\x20a\x20dispute\x20later\x20arises.');a['presenters']['length']===0x0&&e['push']('No\x20presenters\x20yet\x20—\x20the\x20demand\x20may\x20be\x20over-narrow\x20or\x20under-rewarded;\x20consider\x20adjusting\x20the\x20reward\x20or\x20guards.');a['rewards']['length']>0x0&&a['presenters']['length']===0x0&&e['push']('Escrowed\x20reward\x20sits\x20idle\x20while\x20no\x20one\x20presents\x20—\x20value\x20overhang\x20with\x20no\x20delivery.');e['push']('Selecting\x20without\x20evidence\x20review:\x20acceptance_score\x20and\x20service\x20trust\x20data\x20are\x20your\x20only\x20pre-commitment\x20protection\x20—\x20there\x20is\x20NO\x20platform\x20intermediary\x20to\x20reverse\x20a\x20bad\x20selection.');const f='As\x20the\x20demander\x20of\x20'+a['demand']+',\x20'+(a['presenters']['length']>0x0?a['presenters']['length']+'\x20presenter(s)\x20compete\x20for\x20your\x20selection':'no\x20presenter\x20has\x20come\x20forward\x20yet')+(a['rewards']['length']>0x0?';\x20'+a['rewards']['length']+'\x20escrowed\x20reward(s)\x20back\x20the\x20selection.':';\x20no\x20reward\x20is\x20attached.')+'\x20Your\x20leverage\x20is\x20comparison\x20and\x20evidence;\x20your\x20exposure\x20is\x20selection\x20risk.';return{'fund_flow':b,'responsibility':c,'leverage':d,'stakes':e,'summary':f};}
@@ -1,4 +1,4 @@
1
- export type AddressFormat = "short-4-3" | "short-5" | "full";
1
+ export type AddressFormat = "short-4-3" | "full";
2
2
  export declare const ADDRESS_FORMAT_DEFAULT: AddressFormat;
3
3
  export declare const ADDRESS_FORMATS: readonly AddressFormat[];
4
4
  export declare const ADDRESS_FORMAT_PREF_KEY = "address_format";
@@ -1 +1 @@
1
- export const ADDRESS_FORMAT_DEFAULT='short-4-3';export const ADDRESS_FORMATS=['short-4-3','short-5','full'];export const ADDRESS_FORMAT_PREF_KEY='address_format';export function isAddressFormat(a){return a==='short-4-3'||a==='short-5'||a==='full';}export function formatShortAddress(a,b=ADDRESS_FORMAT_DEFAULT){if(!a)return'--';if(b==='full')return a;const c=a['startsWith']('0x')?a['slice'](0x2):a;if(b==='short-5')return c['slice'](0x0,0x5)['toUpperCase']();if(c['length']<=0x7)return c['toUpperCase']();return c['slice'](0x0,0x4)['toUpperCase']()+'-'+c['slice'](-0x3)['toUpperCase']();}
1
+ export const ADDRESS_FORMAT_DEFAULT='short-4-3';export const ADDRESS_FORMATS=['short-4-3','full'];export const ADDRESS_FORMAT_PREF_KEY='address_format';export function isAddressFormat(a){return a==='short-4-3'||a==='full';}export function formatShortAddress(a,b=ADDRESS_FORMAT_DEFAULT){if(!a)return'--';if(b==='full')return a;const c=a['startsWith']('0x')?a['slice'](0x2):a;if(c['length']<=0x7)return c['toUpperCase']();return c['slice'](0x0,0x4)['toUpperCase']()+'-'+c['slice'](-0x3)['toUpperCase']();}
@@ -0,0 +1,20 @@
1
+ import type { GoalRecord } from "../goal/types.js";
2
+ import type { PersonaLayer } from "./types.js";
3
+ export interface GoalEvidence {
4
+ goal_type: string;
5
+ stage: string;
6
+ outcome_success?: boolean;
7
+ objects_count: number;
8
+ problems_open: number;
9
+ problems_resolved: number;
10
+ feedback_positive: number;
11
+ feedback_negative: number;
12
+ duration_days?: number;
13
+ }
14
+ export declare function gatherGoalEvidence(goal: GoalRecord): GoalEvidence;
15
+ export declare function distillGoalToProposal(goal: GoalRecord, evidence: GoalEvidence): {
16
+ summary: string;
17
+ current_delta: PersonaLayer;
18
+ evidence: GoalEvidence;
19
+ apply_via: string;
20
+ };
@@ -0,0 +1 @@
1
+ import{existsSync}from'fs';import{listFeedback,listProblems}from'../task/ProcessStore.js';export function gatherGoalEvidence(a){const b={'goal_type':a['goal_type'],'stage':a['stage'],...a['outcome']?{'outcome_success':a['outcome']['success']}:{},'objects_count':a['objects']['length'],'problems_open':0x0,'problems_resolved':0x0,'feedback_positive':0x0,'feedback_negative':0x0,...a['outcome']?{'duration_days':Math['max'](0x0,Math['round']((a['outcome']['completed_at']-a['created_at'])/0x5265c00*0xa)/0xa)}:{}};if(a['process']&&existsSync(a['process']['dir']))try{const c=listProblems(a['process']['dir']);b['problems_open']=c['filter'](e=>e['status']==='open')['length'],b['problems_resolved']=c['filter'](e=>e['status']==='resolved')['length'];const d=listFeedback(a['process']['dir']);b['feedback_positive']=d['filter'](e=>e['sentiment']==='positive')['length'],b['feedback_negative']=d['filter'](e=>e['sentiment']==='negative')['length'];}catch{}return b;}const MAX_RULES=0x3;export function distillGoalToProposal(a,b){const c=[];if(a['process']&&existsSync(a['process']['dir']))try{const h=listProblems(a['process']['dir'])['filter'](i=>i['status']==='open');for(const i of h['slice'](0x0,MAX_RULES)){c['push']('avoid:\x20'+i['title']);}}catch{}const d={};if(b['feedback_negative']>b['feedback_positive'])d['last_goal_sentiment']='negative';else b['outcome_success']===!![]&&b['feedback_negative']===0x0&&(d['last_goal_sentiment']='positive');const e={};if(c['length'])e['rules']=c;if(Object['keys'](d)['length'])e['preferences']=d;const f=b['outcome_success']===!![]?'completed':b['outcome_success']===![]?'ended':'is\x20in\x20progress',g='Goal\x20\x22'+a['title']+'\x22\x20('+b['goal_type']+')\x20'+f+('\x20with\x20'+b['objects_count']+'\x20object(s)')+(b['duration_days']!==undefined?'\x20over\x20~'+b['duration_days']+'\x20day(s)':'')+(';\x20problems\x20open/resolved\x20'+b['problems_open']+'/'+b['problems_resolved'])+(',\x20feedback\x20+'+b['feedback_positive']+'/-'+b['feedback_negative']+'.')+(c['length']?'\x20Carried\x20'+c['length']+'\x20avoid-rule(s)\x20into\x20the\x20proposal.':'\x20No\x20avoid-rules\x20derived.');return{'summary':g,'current_delta':e,'evidence':b,'apply_via':'Review\x20the\x20proposal,\x20then\x20persist\x20it\x20with\x20persona_operation\x20{action:\x27set\x27,\x20current:<current_delta>}\x20(merge\x20with\x20the\x20existing\x20current\x20layer\x20as\x20needed).\x20set/apply\x20are\x20user-driven\x20and\x20pass\x20the\x20client\x27s\x20confirmation\x20gate;\x20distill\x20itself\x20never\x20writes.'};}
@@ -8,6 +8,8 @@ export { countPersonaLines, emptyPersona, mergeLayers, mutateLayer, resolveEffec
8
8
  export { personaToContextText, personaToInjection, mergeInjections } from "./bridge.js";
9
9
  export { analyzePersonaContext } from "./analyzer.js";
10
10
  export { profileToCurrentLayer } from "./experience-bridge.js";
11
+ export { distillGoalToProposal, gatherGoalEvidence } from "./distill-goal.js";
12
+ export type { GoalEvidence } from "./distill-goal.js";
11
13
  export { registerIndustryPersonae, getIndustryPersona, listPersonaeIndustries, unregisterIndustryPersonae } from "./pack-personae.js";
12
14
  export type { IndustryPersona } from "./pack-personae.js";
13
15
  export { resolveOverrides, validateLayerOverrides, getOverrideDefault, SYSTEM_OVERRIDE_SETTINGS, } from "./overrides.js";
@@ -1 +1 @@
1
- import{GENERIC_PERSONA,getIndustryDefault}from'./defaults.js';import{getPersonaStore}from'./store.js';import{emptyPersona,mergeLayers,mutateLayer,resolveEffective,validatePersona}from'./model.js';import{getIndustryPersona}from'./pack-personae.js';import{resolveOverrides}from'./overrides.js';import{profileToCurrentLayer}from'./experience-bridge.js';import{getProfile}from'../experience/index.js';import{ADDRESS_FORMAT_DEFAULT,ADDRESS_FORMAT_PREF_KEY,isAddressFormat}from'./address-format.js';export{GENERIC_PERSONA,getIndustryDefault,listIndustryDefaults}from'./defaults.js';export{SqlitePersonaStore,getPersonaStore,setPersonaStore}from'./store.js';export{countPersonaLines,emptyPersona,mergeLayers,mutateLayer,resolveEffective,validatePersona}from'./model.js';export{personaToContextText,personaToInjection,mergeInjections}from'./bridge.js';export{analyzePersonaContext}from'./analyzer.js';export{profileToCurrentLayer}from'./experience-bridge.js';export{registerIndustryPersonae,getIndustryPersona,listPersonaeIndustries,unregisterIndustryPersonae}from'./pack-personae.js';export{resolveOverrides,validateLayerOverrides,getOverrideDefault,SYSTEM_OVERRIDE_SETTINGS}from'./overrides.js';export*from'./strategy-intent.js';export*from'./local-region.js';export*from'./address-format.js';export async function getEffectivePersona(a,b,c){const d=getPersonaStore(),e=await d['get']('system'),f=a?await d['get']('account',a):null,g=b?mergeIndustryExternal(c??'customer',b):{...GENERIC_PERSONA,'role':c??'customer'};return resolveEffective(e,f,g);}export async function resolveAddressFormat(a,b,c){try{const d=await getEffectivePersona(a,b,c),e=d['layer']['preferences']?.[ADDRESS_FORMAT_PREF_KEY];if(isAddressFormat(e))return e;}catch{}return ADDRESS_FORMAT_DEFAULT;}function mergeIndustryExternal(a,b){const c=getIndustryDefault(a,b),d=getIndustryPersona(b,a);if(!d)return c;return{...c,'long_term':mergeLayers([c['long_term'],d['long_term']]),'current':mergeLayers([c['current'],d['current']])};}export async function resolveEffectiveOverrides(a){const b=getPersonaStore(),c=await b['get']('system'),d=a?await b['get']('account',a):null,e=[];if(c)e['push'](c['long_term'],c['current']);if(d)e['push'](d['long_term'],d['current']);return resolveOverrides(e);}export function analysisToLayerDelta(a){const b={};a['preferences']&&Object['keys'](a['preferences'])['length']&&(b['preferences']=a['preferences']);if(a['requirements']['length'])b['requirements']=a['requirements'];if(a['rules']['length'])b['rules']=a['rules'];return b;}export async function applyAnalysisToCurrent(a,b,c,d='merge',e,f){const g=getPersonaStore(),h=a==='account'&&b?await g['get']('account',b):await g['get']('system'),i=e??c['role']??h?.['role']??'customer',j=f??c['industries'],k=h??emptyPersona(a,b,i,j),l=Array['from'](new Set([...k['industries'],...j??[]])),m=analysisToLayerDelta(c),n=mutateLayer(k['current'],m,d),o={...k,'role':i,'industries':l,'current':n,'updated_at':Date['now']()},p=validatePersona(o);if(p['length']>0x0)throw new Error('persona\x20invalid\x20after\x20apply:\x20'+p['join'](';\x20'));return await g['put'](o),o;}export async function syncExperienceToCurrent(a,b){const c=getPersonaStore(),d=a?'account':'system',e=a?await c['get']('account',a):await c['get']('system'),f=e??emptyPersona(d,a,'customer',[]),g=profileToCurrentLayer(b??getProfile()),h=mutateLayer(f['current'],g,'merge'),i={...f,'current':h,'updated_at':Date['now']()},j=validatePersona(i);if(j['length']>0x0)throw new Error('persona\x20invalid\x20after\x20sync:\x20'+j['join'](';\x20'));return await c['put'](i),{'persona':i,'applied':g,'effective':await getEffectivePersona(a)};}
1
+ import{GENERIC_PERSONA,getIndustryDefault}from'./defaults.js';import{getPersonaStore}from'./store.js';import{emptyPersona,mergeLayers,mutateLayer,resolveEffective,validatePersona}from'./model.js';import{getIndustryPersona}from'./pack-personae.js';import{resolveOverrides}from'./overrides.js';import{profileToCurrentLayer}from'./experience-bridge.js';import{getProfile}from'../experience/index.js';import{ADDRESS_FORMAT_DEFAULT,ADDRESS_FORMAT_PREF_KEY,isAddressFormat}from'./address-format.js';export{GENERIC_PERSONA,getIndustryDefault,listIndustryDefaults}from'./defaults.js';export{SqlitePersonaStore,getPersonaStore,setPersonaStore}from'./store.js';export{countPersonaLines,emptyPersona,mergeLayers,mutateLayer,resolveEffective,validatePersona}from'./model.js';export{personaToContextText,personaToInjection,mergeInjections}from'./bridge.js';export{analyzePersonaContext}from'./analyzer.js';export{profileToCurrentLayer}from'./experience-bridge.js';export{distillGoalToProposal,gatherGoalEvidence}from'./distill-goal.js';export{registerIndustryPersonae,getIndustryPersona,listPersonaeIndustries,unregisterIndustryPersonae}from'./pack-personae.js';export{resolveOverrides,validateLayerOverrides,getOverrideDefault,SYSTEM_OVERRIDE_SETTINGS}from'./overrides.js';export*from'./strategy-intent.js';export*from'./local-region.js';export*from'./address-format.js';export async function getEffectivePersona(a,b,c){const d=getPersonaStore(),e=await d['get']('system'),f=a?await d['get']('account',a):null,g=b?mergeIndustryExternal(c??'customer',b):{...GENERIC_PERSONA,'role':c??'customer'};return resolveEffective(e,f,g);}export async function resolveAddressFormat(a,b,c){try{const d=await getEffectivePersona(a,b,c),e=d['layer']['preferences']?.[ADDRESS_FORMAT_PREF_KEY];if(isAddressFormat(e))return e;}catch{}return ADDRESS_FORMAT_DEFAULT;}function mergeIndustryExternal(a,b){const c=getIndustryDefault(a,b),d=getIndustryPersona(b,a);if(!d)return c;return{...c,'long_term':mergeLayers([c['long_term'],d['long_term']]),'current':mergeLayers([c['current'],d['current']])};}export async function resolveEffectiveOverrides(a){const b=getPersonaStore(),c=await b['get']('system'),d=a?await b['get']('account',a):null,e=[];if(c)e['push'](c['long_term'],c['current']);if(d)e['push'](d['long_term'],d['current']);return resolveOverrides(e);}export function analysisToLayerDelta(a){const b={};a['preferences']&&Object['keys'](a['preferences'])['length']&&(b['preferences']=a['preferences']);if(a['requirements']['length'])b['requirements']=a['requirements'];if(a['rules']['length'])b['rules']=a['rules'];return b;}export async function applyAnalysisToCurrent(a,b,c,d='merge',e,f){const g=getPersonaStore(),h=a==='account'&&b?await g['get']('account',b):await g['get']('system'),i=e??c['role']??h?.['role']??'customer',j=f??c['industries'],k=h??emptyPersona(a,b,i,j),l=Array['from'](new Set([...k['industries'],...j??[]])),m=analysisToLayerDelta(c),n=mutateLayer(k['current'],m,d),o={...k,'role':i,'industries':l,'current':n,'updated_at':Date['now']()},p=validatePersona(o);if(p['length']>0x0)throw new Error('persona\x20invalid\x20after\x20apply:\x20'+p['join'](';\x20'));return await g['put'](o),o;}export async function syncExperienceToCurrent(a,b){const c=getPersonaStore(),d=a?'account':'system',e=a?await c['get']('account',a):await c['get']('system'),f=e??emptyPersona(d,a,'customer',[]),g=profileToCurrentLayer(b??getProfile()),h=mutateLayer(f['current'],g,'merge'),i={...f,'current':h,'updated_at':Date['now']()},j=validatePersona(i);if(j['length']>0x0)throw new Error('persona\x20invalid\x20after\x20sync:\x20'+j['join'](';\x20'));return await c['put'](i),{'persona':i,'applied':g,'effective':await getEffectivePersona(a)};}
@@ -1 +1 @@
1
- import{PERSONA_MAX_LINES,PERSONA_ROLES,PERSONA_VERSION}from'./types.js';import{validateLayerOverrides}from'./overrides.js';function dedupe(a){return Array['from'](new Set(a['filter'](b=>typeof b==='string'&&b['length']>0x0)));}export function mergeLayers(a){const b={};for(const c of a){if(!c)continue;c['identity']&&(b['identity']={...b['identity'],...c['identity']},c['identity']['languages']&&(b['identity']['languages']=dedupe([...b['identity']['languages']??[],...c['identity']['languages']]))),c['preferences']&&(b['preferences']={...b['preferences'],...c['preferences']}),c['overrides']&&(b['overrides']={...b['overrides'],...c['overrides']}),c['strategy']&&(b['strategy']=dedupe([...b['strategy']??[],...c['strategy']])),c['rules']&&(b['rules']=dedupe([...b['rules']??[],...c['rules']])),c['requirements']&&(b['requirements']=dedupe([...b['requirements']??[],...c['requirements']])),c['spec']&&(b['spec']=[b['spec'],c['spec']]['filter'](Boolean)['join']('\x0a\x0a'));}return b;}export function mutateLayer(a,b,c){if(c==='replace')return{...b};return mergeLayers([a,b]);}export function resolveEffective(a,b,c){const d=[],e=[];a&&(d['push'](a['long_term']),e['push']({'scope':'system','part':'long_term'}),d['push'](a['current']),e['push']({'scope':'system','part':'current'}));c&&(d['push'](c['long_term']),e['push']({'scope':c['scope'],'part':'long_term'}),d['push'](c['current']),e['push']({'scope':c['scope'],'part':'current'}));b&&(d['push'](b['long_term']),e['push']({'scope':'account','account':b['account'],'part':'long_term'}),d['push'](b['current']),e['push']({'scope':'account','account':b['account'],'part':'current'}));const f=b??c??a;return{'scope':b?'account':'system','account':b?.['account']??a?.['account'],'role':f?.['role']??'customer','industries':f?.['industries']??[],'layer':mergeLayers(d),'sources':e};}export function countPersonaLines(a){return JSON['stringify'](a,null,0x2)['split']('\x0a')['length'];}export function validatePersona(a){const b=[];a['version']!==PERSONA_VERSION&&b['push']('version\x20must\x20be\x20'+PERSONA_VERSION);a['scope']==='account'&&!a['account']&&b['push']('account\x20is\x20required\x20when\x20scope=account');a['scope']!=='account'&&a['account']&&b['push']('account\x20should\x20only\x20be\x20set\x20when\x20scope=account');(!a['role']||!PERSONA_ROLES['includes'](a['role']))&&b['push']('role\x20must\x20be\x20a\x20persona\x20role\x20(merchant|customer|prospect|supplier|collaborator|arbitrator)');!Array['isArray'](a['industries'])&&b['push']('industries\x20must\x20be\x20an\x20array');b['push'](...validateLayerOverrides(a['long_term'])),b['push'](...validateLayerOverrides(a['current']));const c=countPersonaLines(a);return c>PERSONA_MAX_LINES&&b['push']('persona\x20is\x20'+c+'\x20lines\x20(max\x20'+PERSONA_MAX_LINES+')'),b;}export function emptyPersona(a,b,c,d){return{'version':PERSONA_VERSION,'scope':a,'account':b,'role':c,'industries':d,'long_term':{},'current':{},'updated_at':Date['now']()};}
1
+ import{PERSONA_MAX_LINES,PERSONA_ROLES,PERSONA_VERSION}from'./types.js';import{validateLayerOverrides}from'./overrides.js';function dedupe(a){return Array['from'](new Set(a['filter'](b=>typeof b==='string'&&b['length']>0x0)));}export function mergeLayers(a){const b={};for(const c of a){if(!c)continue;c['identity']&&(b['identity']={...b['identity'],...c['identity']},c['identity']['languages']&&(b['identity']['languages']=dedupe([...b['identity']['languages']??[],...c['identity']['languages']]))),c['preferences']&&(b['preferences']={...b['preferences'],...c['preferences']}),c['overrides']&&(b['overrides']={...b['overrides'],...c['overrides']}),c['strategy']&&(b['strategy']=dedupe([...b['strategy']??[],...c['strategy']])),c['rules']&&(b['rules']=dedupe([...b['rules']??[],...c['rules']])),c['requirements']&&(b['requirements']=dedupe([...b['requirements']??[],...c['requirements']])),c['spec']&&(b['spec']=[b['spec'],c['spec']]['filter'](Boolean)['join']('\x0a\x0a'));}return b;}export function mutateLayer(a,b,c){if(c==='replace')return{...b};return mergeLayers([a,b]);}function isEmptyLayer(a){return!a||Object['keys'](a)['length']===0x0;}export function resolveEffective(a,b,c){const d=[],e=[];a&&(d['push'](a['long_term']),e['push']({'scope':'system','part':'long_term'}),d['push'](a['current']),e['push']({'scope':'system','part':'current'}));c&&(d['push'](c['long_term']),e['push']({'scope':c['scope'],'part':'long_term'}),d['push'](c['current']),e['push']({'scope':c['scope'],'part':'current'}));b&&(d['push'](b['long_term']),e['push']({'scope':'account','account':b['account'],'part':'long_term'}),d['push'](b['current']),e['push']({'scope':'account','account':b['account'],'part':'current'}));const f=!!b&&(!isEmptyLayer(b['long_term'])||!isEmptyLayer(b['current'])),g=f?b:c??a;return{'scope':b?'account':'system','account':b?.['account']??a?.['account'],'role':g?.['role']??'customer','industries':g?.['industries']??[],'layer':mergeLayers(d),'sources':e};}export function countPersonaLines(a){return JSON['stringify'](a,null,0x2)['split']('\x0a')['length'];}export function validatePersona(a){const b=[];a['version']!==PERSONA_VERSION&&b['push']('version\x20must\x20be\x20'+PERSONA_VERSION);a['scope']==='account'&&!a['account']&&b['push']('account\x20is\x20required\x20when\x20scope=account');a['scope']!=='account'&&a['account']&&b['push']('account\x20should\x20only\x20be\x20set\x20when\x20scope=account');(!a['role']||!PERSONA_ROLES['includes'](a['role']))&&b['push']('role\x20must\x20be\x20a\x20persona\x20role\x20(merchant|customer|prospect|supplier|collaborator|arbitrator)');!Array['isArray'](a['industries'])&&b['push']('industries\x20must\x20be\x20an\x20array');b['push'](...validateLayerOverrides(a['long_term'])),b['push'](...validateLayerOverrides(a['current']));const c=countPersonaLines(a);return c>PERSONA_MAX_LINES&&b['push']('persona\x20is\x20'+c+'\x20lines\x20(max\x20'+PERSONA_MAX_LINES+')'),b;}export function emptyPersona(a,b,c,d){return{'version':PERSONA_VERSION,'scope':a,'account':b,'role':c,'industries':d,'long_term':{},'current':{},'updated_at':Date['now']()};}
@@ -0,0 +1 @@
1
+ import{initServicePuzzleFromIntent,initMachinePuzzleFromIntent,initAllocationPuzzleFromIntent,initTreasuryPuzzleFromIntent,initArbitrationPuzzleFromIntent,initRewardPuzzleFromIntent,initProgressPuzzleFromIntent,initOrderPuzzleFromIntent,initPuzzleFromIntent as a284a,checkServicePuzzleCompleteness,checkMachinePuzzleCompleteness,checkAllocationPuzzleCompleteness,checkTreasuryPuzzleCompleteness,checkArbitrationPuzzleCompleteness,checkRewardPuzzleCompleteness,checkProgressPuzzleCompleteness,checkOrderPuzzleCompleteness,checkPuzzleCompleteness as a284b}from'../../knowledge/index.js';import{initPuzzleFromIntent as a284c,checkPuzzleCompleteness as a284d}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(a284c,{'primary_goal':c}),'check':c=>b(c,a284d)},'guard':{'init':c=>a(a284a,{'primary_goal':c}),'check':c=>b(c,a284b)}};}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,7 +1,7 @@
1
- import type { z } from "zod";
2
- import type { ProjectOperationInputSchema } from "../schema/project/index.js";
3
- import { type ContextCollectionResult } from "../loop-engineering/context-collect.js";
4
- type ValidatedInput = z.infer<typeof ProjectOperationInputSchema>;
1
+ import type { ObjectBase } from "@wowok/wowok";
2
+ import type { AssembleContextInput } from "../../schema/query/bi.js";
3
+ import { type ContextCollectionResult } from "../../loop-engineering/context-collect.js";
4
+ type ValidatedInput = AssembleContextInput;
5
5
  export interface DependencyEdge {
6
6
  object: string;
7
7
  depth: number;
@@ -22,4 +22,9 @@ export interface AssembleContextResult {
22
22
  flywheel_collected?: ContextCollectionResult;
23
23
  }
24
24
  export declare function assembleContext(validated: ValidatedInput): Promise<AssembleContextResult>;
25
+ export declare function extractAddressFields(obj: ObjectBase): Array<{
26
+ address: string;
27
+ field: string;
28
+ type: string;
29
+ }>;
25
30
  export {};
@@ -0,0 +1 @@
1
+ import{createHash}from'crypto';import{query_objects,query_events}from'@wowok/wowok';import{annotateEventsMonetaryFields}from'../../knowledge/fund-layer.js';import{batchQueryObjectsByIds}from'../../knowledge/workflow-guidance.js';import{buildDataSemantic}from'../../schema/call/semantic.js';import{collectContextExperience}from'../../loop-engineering/context-collect.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 batchQueryObjectsByIds(b,c,![]),k=[],l=[];if(e>0x0){const z=new Set();for(const B of h){const C=B?.['object'];if(typeof C==='string')z['add'](C);}let A=[];for(const D of h){const E=safeExtractAddressFields(D);for(const F of E){if(g&&!g['has'](F['field']))continue;if(z['has'](F['address']))continue;A['push']({'id':F['address'],'parent':D?.['object']??'','viaField':F['field'],'viaType':F['type'],'depth':0x1});}}for(let G=0x1;G<=e&&A['length']>0x0;G++){const H=new Set(),I=[];for(const K of A){if(z['has'](K['id'])||H['has'](K['id']))continue;H['add'](K['id']),z['add'](K['id']),I['push'](K);}if(I['length']===0x0)break;const J=[];for(let L=0x0;L<I['length'];L+=MAX_OBJECTS_PER_QUERY){const M=I['slice'](L,L+MAX_OBJECTS_PER_QUERY);let N;try{N=await query_objects({'objects':M['map'](P=>P['id']),'no_cache':![],'network':c});}catch{continue;}const O=N?.['objects']??[];for(let P=0x0;P<M['length'];P++){const Q=M[P],R=O[P];if(!R)continue;k['push']({'object':Q['id'],'depth':Q['depth'],'via_field':Q['viaField'],'via_type':Q['viaType'],'parent':Q['parent']}),l['push'](R);if(G<e){const S=safeExtractAddressFields(R);for(const T of S){if(g&&!g['has'](T['field']))continue;if(z['has'](T['address']))continue;J['push']({'id':T['address'],'parent':Q['id'],'viaField':T['field'],'viaType':T['type'],'depth':G+0x1});}}}}A=J;}}const m=[...h,...l],n=extractEmbeddedHistory(m),p=Object['keys'](n)['length']>0x0;let q;if(d){q=[];for(const U of STATE_TRANSITION_EVENTS){try{const V=await query_events({'type':U,'limit':0x5,'order':'descending','network':c});V?.['data']&&V['data']['length']>0x0&&q['push'](...V['data']);}catch{}}if(q['length']===0x0)q=undefined;else try{await annotateEventsMonetaryFields(q,c);}catch{}}const s={'operation_type':'assemble_context','data':{'context_objects':h,'embedded_history':n,'events':q}},t=buildDataSemantic({'objects':h,'embedded_history':n,'events':q},s),u=h['map'](W=>(W?.['object']??W?.['data']?.['object']??'?')+':'+(W?.['version']??W?.['data']?.['version']??'?'));l['length']>0x0&&u['push']('deps:'+l['map'](W=>(W?.['object']??'?')+':'+(W?.['version']??'?'))['join'](','));u['push']('ts:'+Date['now']());const v=createHash('sha256')['update'](u['join']('|'))['digest']('hex')['substring'](0x0,0x10),w=k['length']>0x0,x=w?'Context\x20assembled\x20with\x20'+k['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).':p?'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).':q&&q['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 y;try{y=collectContextExperience({'action':'assemble_context','objects':h,'events':q,'embedded_history':p?n:undefined,'semantic_summary':t,'context_digest':v,'next_action':x},c);}catch{}return{'action':'assemble_context','objects':h,'events':q,'embedded_history':p?n:undefined,'dependencies':w?k:undefined,'dependency_objects':w?l:undefined,'semantic_summary':t,'context_digest':v,'next_action':x,'flywheel_collected':y};}export function extractAddressFields(a){const b=[],c=a['type'];let d=c;if(c&&c['includes']('::')){const k=c['split']('::');d=k[k['length']-0x1];}const e=l=>typeof l==='string'&&l['startsWith']('0x')&&l['length']>=0xa,f=(l,m,n)=>{e(l)&&l!=='0x0'&&l!==a['object']&&b['push']({'address':l,'field':m,'type':n});},h=(l,m,n)=>{if(Array['isArray'](l))for(const o of l){f(o,m,n);}},i=(l,m,n)=>{l!==null&&l!==undefined&&f(l,m,n);},j=a;switch(d){case'Service':{i(j['machine'],'machine','bind'),i(j['buy_guard'],'buy_guard','validate'),i(j['um'],'um','bind'),f(j['permission'],'permission','validate'),h(j['repositories'],'repositories','consume'),h(j['arbitrations'],'arbitrations','trigger'),h(j['rewards'],'rewards','trigger');if(j['order_allocators']?.['allocators']){for(const m of j['order_allocators']['allocators']){f(m['guard'],'allocator_guard','validate');}const l=j['order_allocators']['allocators'][0x0]?.['guard'];f(l,'order_allocators','create');}break;}case'Machine':{f(j['permission'],'permission','validate'),h(j['consensus_repositories'],'consensus_repositories','consume');break;}case'Order':{f(j['service'],'service','consume'),i(j['machine'],'machine','consume'),i(j['progress'],'progress','trigger'),h(j['dispute'],'dispute','trigger'),i(j['allocation'],'allocation','bind');break;}case'Progress':{f(j['machine'],'machine','bind'),h(j['context_repositories'],'context_repositories','consume');break;}case'Treasury':{f(j['permission'],'permission','validate');if(Array['isArray'](j['external_deposit_guard'])){for(const n of j['external_deposit_guard'])f(n?.['guard'],'external_deposit_guard','validate');}if(Array['isArray'](j['external_withdraw_guard'])){for(const o of j['external_withdraw_guard'])f(o?.['guard'],'external_withdraw_guard','validate');}break;}case'Allocation':{if(Array['isArray'](j['allocators'])){for(const p of j['allocators'])f(p?.['guard'],'allocator_guard','validate');}i(j['payment_info']?.['for_object'],'for_object','bind'),i(j['payment_info']?.['for_guard'],'for_guard','validate'),h(j['payment'],'payment','trigger');break;}case'Arbitration':{f(j['permission'],'permission','validate');if(Array['isArray'](j['voting_guard'])){for(const q of j['voting_guard'])f(q?.['guard'],'voting_guard','validate');}i(j['usage_guard'],'usage_guard','validate');break;}case'Reward':{f(j['permission'],'permission','validate');if(Array['isArray'](j['guards'])){for(const s of j['guards'])f(s?.['guard'],'guard','validate');}break;}case'Repository':{f(j['permission'],'permission','validate'),h(j['rewards'],'rewards','trigger');if(Array['isArray'](j['policies']))for(const t of j['policies']){if(Array['isArray'](t?.['write_guard'])){for(const u of t['write_guard'])f(u?.['guard'],'write_guard','validate');}i(t?.['quote_guard'],'quote_guard','validate');}break;}case'Demand':{f(j['permission'],'permission','validate');if(Array['isArray'](j['guards'])){for(const v of j['guards'])f(v?.['guard'],'guard','validate');}h(j['rewards'],'rewards','trigger');break;}case'Contact':{f(j['permission'],'permission','validate');break;}case'Permission':{break;}case'Payment':{i(j['info']?.['for_object'],'for_object','bind'),i(j['info']?.['for_guard'],'for_guard','validate');if(Array['isArray'](j['record']))for(const w of j['record']){const x=w?.['recipient'];x&&typeof x==='object'&&typeof x['Entity']==='string'&&f(x['Entity'],'recipient_entity','consume');}break;}case'Guard':{break;}default:break;}return b;}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,6 +1,6 @@
1
1
  import type { SemanticObjectGraph } from "./semantic-graph.js";
2
2
  import type { BusinessIntent } from "./intent-analyzer.js";
3
- import type { BusinessModuleId } from "../extensions/business-modules.js";
3
+ import type { BusinessModuleId } from "../../extensions/business-modules.js";
4
4
  export type GameScenario = "merchant_may_deliver_late" | "merchant_may_abandon" | "customer_may_deny_acceptance" | "customer_may_false_claim" | "supplier_may_not_deliver";
5
5
  export interface GameTheoryConstraint {
6
6
  scenario: GameScenario;
@@ -0,0 +1,14 @@
1
+ export interface StageCacheEntry {
2
+ stage: string;
3
+ updated_at: number;
4
+ puzzles?: Record<string, unknown>;
5
+ risk_status?: string;
6
+ risk_can_proceed?: boolean;
7
+ trace_coherent?: boolean;
8
+ trace_can_proceed?: boolean;
9
+ business_intent?: string;
10
+ industry?: string;
11
+ }
12
+ export declare function getStageCache(prefix: string, version: string): StageCacheEntry | undefined;
13
+ export declare function updateStageCache(prefix: string, version: string, update: Partial<StageCacheEntry>): StageCacheEntry;
14
+ export declare const SERVICE_BUILD_CACHE_VERSION = 1;
@@ -0,0 +1 @@
1
+ import{ensureServiceBuildProcess,openServiceBuildProcessDir,SERVICE_BUILD_STAGES}from'./process.js';import{loadManifest,loadStageState,saveStageState}from'../../task/ProcessStore.js';const STAGE_CACHE=new Map();function stageCacheKey(a,b){return a+':'+b;}export function getStageCache(a,b){const c=stageCacheKey(a,b),d=STAGE_CACHE['get'](c);if(d)return d;const e=openServiceBuildProcessDir(a,b),f=loadStageState(e);if(f){const g={'stage':SERVICE_BUILD_STAGES['includes'](f['current_stage'])?f['current_stage']:SERVICE_BUILD_STAGES[0x0],'updated_at':f['updated_at']};return STAGE_CACHE['set'](c,g),g;}return undefined;}export function updateStageCache(a,b,c){const d=stageCacheKey(a,b),e=STAGE_CACHE['get'](d),f={'stage':c['stage']??e?.['stage']??SERVICE_BUILD_STAGES[0x0],'updated_at':Date['now'](),...e,...c};return STAGE_CACHE['set'](d,f),persistStageState(a,b,f),f;}function persistStageState(a,b,c){try{const d=ensureServiceBuildProcess(a,b,'service-build-v'+SERVICE_BUILD_CACHE_VERSION),e=loadManifest(d);if(e['archived'])return;const f=loadStageState(d);if(!f)return;f['current_stage']=SERVICE_BUILD_STAGES['includes'](c['stage'])?c['stage']:SERVICE_BUILD_STAGES[0x0],f['updated_at']=c['updated_at'],saveStageState(d,f);}catch{}}export const SERVICE_BUILD_CACHE_VERSION=0x1;
@@ -1,4 +1,4 @@
1
- import type { IndustryTraits } from "../knowledge/industry-registry.js";
1
+ import type { IndustryTraits } from "../../knowledge/industry-registry.js";
2
2
  export type BusinessIntentType = "sell_service" | "sell_product" | "sell_subscription" | "rent_asset" | "crowdfund" | "escrow";
3
3
  export interface RoleDefinition {
4
4
  name: string;