@wowok/agent-mcp 2.7.2 → 2.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. package/dist/config/runtime.js +1 -1
  2. package/dist/customer/account-events.d.ts +32 -0
  3. package/dist/customer/account-events.js +1 -0
  4. package/dist/customer/customer-advice.d.ts +1 -0
  5. package/dist/customer/customer-advice.js +1 -1
  6. package/dist/customer/info-puzzle.js +1 -1
  7. package/dist/customer/order-strategy.d.ts +1 -1
  8. package/dist/customer/reminder-system.d.ts +2 -0
  9. package/dist/customer/reminder-system.js +1 -1
  10. package/dist/customer/risk-assessment.d.ts +1 -0
  11. package/dist/customer/risk-assessment.js +1 -1
  12. package/dist/customer/types.d.ts +2 -0
  13. package/dist/evaluation/builtins/arbitration-score.d.ts +41 -0
  14. package/dist/evaluation/builtins/arbitration-score.js +1 -0
  15. package/dist/evaluation/builtins/index.d.ts +1 -0
  16. package/dist/evaluation/builtins/index.js +1 -1
  17. package/dist/evaluation/category-match-rules.d.ts +30 -0
  18. package/dist/evaluation/category-match-rules.js +1 -0
  19. package/dist/evaluation/engine.js +1 -1
  20. package/dist/evaluation/extract.js +1 -1
  21. package/dist/evaluation/index.d.ts +1 -0
  22. package/dist/evaluation/index.js +1 -1
  23. package/dist/evaluation/location-match.d.ts +42 -0
  24. package/dist/evaluation/location-match.js +1 -0
  25. package/dist/evaluation/path-reasoning.d.ts +35 -0
  26. package/dist/evaluation/path-reasoning.js +1 -0
  27. package/dist/evaluation/region.d.ts +6 -0
  28. package/dist/evaluation/region.js +1 -1
  29. package/dist/evaluation/types.d.ts +17 -0
  30. package/dist/experience/realtime-feedback.js +1 -1
  31. package/dist/experience/user-profile.d.ts +1 -1
  32. package/dist/extensions/index.d.ts +6 -0
  33. package/dist/extensions/index.js +1 -1
  34. package/dist/extensions/industry-layers.d.ts +75 -0
  35. package/dist/extensions/industry-layers.js +1 -0
  36. package/dist/extensions/industry-pack.d.ts +105 -0
  37. package/dist/extensions/industry-pack.js +1 -0
  38. package/dist/extensions/metric-registry.js +1 -1
  39. package/dist/extensions/mode-evaluator.d.ts +1 -1
  40. package/dist/extensions/registry.d.ts +1 -0
  41. package/dist/extensions/registry.js +1 -1
  42. package/dist/graph/base.d.ts +8 -0
  43. package/dist/graph/base.js +1 -0
  44. package/dist/harness/index.d.ts +1 -0
  45. package/dist/harness/index.js +1 -1
  46. package/dist/harness/plan.d.ts +2 -0
  47. package/dist/harness/plan.js +1 -1
  48. package/dist/harness/recover.d.ts +1 -1
  49. package/dist/harness/types.d.ts +2 -3
  50. package/dist/index.js +1 -1
  51. package/dist/knowledge/allocation-confirm.js +1 -1
  52. package/dist/knowledge/anti-cheat.d.ts +37 -0
  53. package/dist/knowledge/anti-cheat.js +1 -0
  54. package/dist/knowledge/arb-confirm.d.ts +28 -0
  55. package/dist/knowledge/arb-confirm.js +1 -0
  56. package/dist/knowledge/arb-translation.d.ts +48 -0
  57. package/dist/knowledge/arb-translation.js +1 -0
  58. package/dist/knowledge/arbitration-context.js +1 -1
  59. package/dist/knowledge/arbitration-ledger.js +1 -1
  60. package/dist/knowledge/bridge-confirm.d.ts +26 -0
  61. package/dist/knowledge/bridge-confirm.js +1 -0
  62. package/dist/knowledge/bridge-translation.d.ts +37 -0
  63. package/dist/knowledge/bridge-translation.js +1 -0
  64. package/dist/knowledge/contact-confirm.d.ts +27 -0
  65. package/dist/knowledge/contact-confirm.js +1 -0
  66. package/dist/knowledge/contact-translation.d.ts +39 -0
  67. package/dist/knowledge/contact-translation.js +1 -0
  68. package/dist/knowledge/demand-confirm.js +1 -1
  69. package/dist/knowledge/demand-context.d.ts +17 -0
  70. package/dist/knowledge/demand-context.js +1 -0
  71. package/dist/knowledge/demand-ledger.d.ts +26 -0
  72. package/dist/knowledge/demand-ledger.js +1 -0
  73. package/dist/knowledge/demand-puzzle.d.ts +29 -0
  74. package/dist/knowledge/demand-puzzle.js +1 -0
  75. package/dist/knowledge/demand-risk.js +1 -1
  76. package/dist/knowledge/demand-templates.d.ts +12 -0
  77. package/dist/knowledge/demand-templates.js +1 -0
  78. package/dist/knowledge/demand-translation.js +1 -1
  79. package/dist/knowledge/deployment-scanner.js +1 -1
  80. package/dist/knowledge/evidence-review.d.ts +12 -0
  81. package/dist/knowledge/evidence-review.js +1 -0
  82. package/dist/knowledge/examples-scanner-cli.js +1 -1
  83. package/dist/knowledge/examples-scanner.js +1 -1
  84. package/dist/knowledge/flywheel-loop.d.ts +0 -1
  85. package/dist/knowledge/flywheel-loop.js +1 -1
  86. package/dist/knowledge/guard-design-patterns.js +1 -1
  87. package/dist/knowledge/guard-migration.d.ts +1 -1
  88. package/dist/knowledge/index.d.ts +71 -3
  89. package/dist/knowledge/index.js +1 -1
  90. package/dist/knowledge/industry-registry.js +1 -1
  91. package/dist/knowledge/machine-render.js +1 -1
  92. package/dist/knowledge/market-metrics.d.ts +12 -0
  93. package/dist/knowledge/market-metrics.js +1 -0
  94. package/dist/knowledge/market-operations.d.ts +46 -0
  95. package/dist/knowledge/market-operations.js +1 -0
  96. package/dist/knowledge/mcp-schema-audit-cli.js +1 -1
  97. package/dist/knowledge/mcp-schema-audit.d.ts +22 -22
  98. package/dist/knowledge/mcp-schema-audit.js +1 -1
  99. package/dist/knowledge/onchain-constants.d.ts +2 -2
  100. package/dist/knowledge/onchain-constants.js +1 -1
  101. package/dist/knowledge/payment-confirm.d.ts +26 -0
  102. package/dist/knowledge/payment-confirm.js +1 -0
  103. package/dist/knowledge/payment-risk.js +1 -1
  104. package/dist/knowledge/payment-translation.d.ts +37 -0
  105. package/dist/knowledge/payment-translation.js +1 -0
  106. package/dist/knowledge/permission-context.d.ts +11 -0
  107. package/dist/knowledge/permission-context.js +1 -1
  108. package/dist/knowledge/permission-ledger.d.ts +11 -0
  109. package/dist/knowledge/permission-ledger.js +1 -1
  110. package/dist/knowledge/personal-confirm.d.ts +29 -0
  111. package/dist/knowledge/personal-confirm.js +1 -0
  112. package/dist/knowledge/personal-risk.js +1 -1
  113. package/dist/knowledge/personal-translation.d.ts +37 -0
  114. package/dist/knowledge/personal-translation.js +1 -0
  115. package/dist/knowledge/process-model.d.ts +1 -11
  116. package/dist/knowledge/process-model.js +1 -1
  117. package/dist/knowledge/progress-ledger.js +1 -1
  118. package/dist/knowledge/progress-risk.js +1 -1
  119. package/dist/knowledge/progress-templates.js +1 -1
  120. package/dist/knowledge/progress-translation.js +1 -1
  121. package/dist/knowledge/proof-context.d.ts +17 -0
  122. package/dist/knowledge/proof-context.js +1 -0
  123. package/dist/knowledge/proof-ledger.d.ts +34 -0
  124. package/dist/knowledge/proof-ledger.js +1 -0
  125. package/dist/knowledge/proof-puzzle.d.ts +35 -0
  126. package/dist/knowledge/proof-puzzle.js +1 -0
  127. package/dist/knowledge/proof-templates.d.ts +22 -0
  128. package/dist/knowledge/proof-templates.js +1 -0
  129. package/dist/knowledge/registrar-confirm.d.ts +26 -0
  130. package/dist/knowledge/registrar-confirm.js +1 -0
  131. package/dist/knowledge/registrar-risk.js +1 -1
  132. package/dist/knowledge/registrar-translation.d.ts +37 -0
  133. package/dist/knowledge/registrar-translation.js +1 -0
  134. package/dist/knowledge/repository-context.d.ts +12 -0
  135. package/dist/knowledge/repository-context.js +1 -0
  136. package/dist/knowledge/repository-ledger.d.ts +25 -0
  137. package/dist/knowledge/repository-ledger.js +1 -0
  138. package/dist/knowledge/repository-puzzle.d.ts +30 -0
  139. package/dist/knowledge/repository-puzzle.js +1 -0
  140. package/dist/knowledge/repository-templates.d.ts +14 -0
  141. package/dist/knowledge/repository-templates.js +1 -0
  142. package/dist/knowledge/resource-confirm.d.ts +25 -0
  143. package/dist/knowledge/resource-confirm.js +1 -0
  144. package/dist/knowledge/resource-translation.d.ts +37 -0
  145. package/dist/knowledge/resource-translation.js +1 -0
  146. package/dist/knowledge/reward-context.d.ts +2 -2
  147. package/dist/knowledge/reward-ledger.js +1 -1
  148. package/dist/knowledge/reward-translation.js +1 -1
  149. package/dist/knowledge/safety-rules.d.ts +1 -0
  150. package/dist/knowledge/safety-rules.js +1 -1
  151. package/dist/knowledge/service-risk.d.ts +1 -1
  152. package/dist/knowledge/service-risk.js +1 -1
  153. package/dist/knowledge/template-registry.js +1 -1
  154. package/dist/knowledge/tools-reference.js +1 -1
  155. package/dist/knowledge/treasury-context.d.ts +1 -1
  156. package/dist/knowledge/treasury-context.js +1 -1
  157. package/dist/knowledge/treasury-ledger.js +1 -1
  158. package/dist/knowledge/treasury-risk.js +1 -1
  159. package/dist/knowledge/universal-template.d.ts +22 -0
  160. package/dist/knowledge/universal-template.js +1 -0
  161. package/dist/knowledge/util-confirm.d.ts +24 -0
  162. package/dist/knowledge/util-confirm.js +1 -0
  163. package/dist/knowledge/util-risk.js +1 -1
  164. package/dist/knowledge/util-translation.d.ts +39 -0
  165. package/dist/knowledge/util-translation.js +1 -0
  166. package/dist/knowledge/workflow-guidance.d.ts +180 -0
  167. package/dist/knowledge/workflow-guidance.js +1 -0
  168. package/dist/participation/employee-kpi.d.ts +25 -0
  169. package/dist/participation/employee-kpi.js +1 -0
  170. package/dist/participation/employee-store.d.ts +16 -0
  171. package/dist/participation/employee-store.js +1 -0
  172. package/dist/participation/index.d.ts +2 -0
  173. package/dist/participation/index.js +1 -0
  174. package/dist/persona/defaults.js +1 -1
  175. package/dist/persona/index.d.ts +9 -2
  176. package/dist/persona/index.js +1 -1
  177. package/dist/persona/local-region.d.ts +20 -0
  178. package/dist/persona/local-region.js +1 -0
  179. package/dist/persona/model.js +1 -1
  180. package/dist/persona/overrides.d.ts +10 -0
  181. package/dist/persona/overrides.js +1 -0
  182. package/dist/persona/pack-personae.d.ts +11 -0
  183. package/dist/persona/pack-personae.js +1 -0
  184. package/dist/persona/strategy-intent.d.ts +20 -0
  185. package/dist/persona/strategy-intent.js +1 -0
  186. package/dist/persona/types.d.ts +3 -1
  187. package/dist/project/business-puzzle.d.ts +1 -1
  188. package/dist/project/business-puzzle.js +1 -1
  189. package/dist/project/deployment-doc.js +1 -1
  190. package/dist/project/edit-planner.js +1 -1
  191. package/dist/project/evaluation.d.ts +37 -1
  192. package/dist/project/evaluation.js +1 -1
  193. package/dist/project/graph-builder.d.ts +2 -2
  194. package/dist/project/graph-builder.js +1 -1
  195. package/dist/project/graph.d.ts +3 -6
  196. package/dist/project/handlers.d.ts +33 -2
  197. package/dist/project/handlers.js +1 -1
  198. package/dist/project/index.d.ts +1 -0
  199. package/dist/project/index.js +1 -1
  200. package/dist/project/merchant-guide.d.ts +19 -0
  201. package/dist/project/merchant-guide.js +1 -1
  202. package/dist/project/mode-actions.js +1 -1
  203. package/dist/project/rollback-policy.js +1 -1
  204. package/dist/project/semantic-assembler.d.ts +2 -2
  205. package/dist/project/semantic-assembler.js +1 -1
  206. package/dist/project/semantic-graph.d.ts +3 -5
  207. package/dist/project/workflow-design-assessment.d.ts +24 -0
  208. package/dist/project/workflow-design-assessment.js +1 -0
  209. package/dist/safety/confirm-gate.d.ts +1 -1
  210. package/dist/safety/confirm-gate.js +1 -1
  211. package/dist/schema/call/allocation.d.ts +186 -1385
  212. package/dist/schema/call/arbitration.d.ts +272 -1871
  213. package/dist/schema/call/base.d.ts +1831 -9076
  214. package/dist/schema/call/base.js +1 -1
  215. package/dist/schema/call/bridge.d.ts +911 -3171
  216. package/dist/schema/call/contact.d.ts +135 -931
  217. package/dist/schema/call/demand.d.ts +164 -1194
  218. package/dist/schema/call/guard.d.ts +298 -1140
  219. package/dist/schema/call/guard.js +1 -1
  220. package/dist/schema/call/machine.d.ts +459 -5403
  221. package/dist/schema/call/machine.js +1 -1
  222. package/dist/schema/call/order.d.ts +137 -844
  223. package/dist/schema/call/payment.d.ts +74 -561
  224. package/dist/schema/call/permission.d.ts +335 -2791
  225. package/dist/schema/call/personal.d.ts +227 -1814
  226. package/dist/schema/call/progress.d.ts +140 -843
  227. package/dist/schema/call/proof.d.ts +42 -258
  228. package/dist/schema/call/repository.d.ts +324 -2222
  229. package/dist/schema/call/reward.d.ts +153 -1183
  230. package/dist/schema/call/semantic.js +1 -1
  231. package/dist/schema/call/service.d.ts +376 -3431
  232. package/dist/schema/call/treasury.d.ts +252 -2158
  233. package/dist/schema/common/index.d.ts +222 -697
  234. package/dist/schema/common/index.js +1 -1
  235. package/dist/schema/config/index.d.ts +18 -161
  236. package/dist/schema/employee/index.d.ts +99 -0
  237. package/dist/schema/employee/index.js +1 -0
  238. package/dist/schema/evaluation/index.d.ts +1035 -3918
  239. package/dist/schema/evaluation/index.js +1 -1
  240. package/dist/schema/index.d.ts +5 -0
  241. package/dist/schema/index.js +1 -1
  242. package/dist/schema/industry-pack/index.d.ts +132 -0
  243. package/dist/schema/industry-pack/index.js +1 -0
  244. package/dist/schema/intent-radar/index.d.ts +92 -245
  245. package/dist/schema/intent-radar/index.js +1 -1
  246. package/dist/schema/local/index.d.ts +2045 -18080
  247. package/dist/schema/local/index.js +1 -1
  248. package/dist/schema/local/wip.d.ts +61 -651
  249. package/dist/schema/local/wip.js +1 -1
  250. package/dist/schema/messenger/index.d.ts +949 -5557
  251. package/dist/schema/messenger/index.js +1 -1
  252. package/dist/schema/operations.d.ts +3168 -26468
  253. package/dist/schema/operations.js +1 -1
  254. package/dist/schema/permission/index.d.ts +121 -0
  255. package/dist/schema/permission/index.js +1 -0
  256. package/dist/schema/persona/index.d.ts +469 -1820
  257. package/dist/schema/persona/index.js +1 -1
  258. package/dist/schema/project/index.d.ts +1023 -8450
  259. package/dist/schema/project/index.js +1 -1
  260. package/dist/schema/query/index.d.ts +12121 -75556
  261. package/dist/schema/query/index.js +1 -1
  262. package/dist/schema/schema-query/index.d.ts +35 -98
  263. package/dist/schema/schema-query/index.js +1 -1
  264. package/dist/schema/schema-version.js +1 -1
  265. package/dist/schema/task-status.d.ts +26 -132
  266. package/dist/schema/trust/index.d.ts +194 -1290
  267. package/dist/schema/utils/guard-parser.js +1 -1
  268. package/dist/schema/utils/node-parser.js +1 -1
  269. package/dist/schema/utils/skills-recommendation.d.ts +1 -0
  270. package/dist/schema/utils/skills-recommendation.js +1 -1
  271. package/dist/schema/workflow/index.d.ts +161 -0
  272. package/dist/schema/workflow/index.js +1 -0
  273. package/dist/schema/workspace/index.d.ts +69 -0
  274. package/dist/schema/workspace/index.js +1 -0
  275. package/dist/{schema-query → schema-query-impl}/index.js +1 -1
  276. package/dist/schemas/account_operation.output.json +3147 -1655
  277. package/dist/schemas/account_operation.schema.json +225 -218
  278. package/dist/schemas/bridge_operation.output.json +1168 -653
  279. package/dist/schemas/bridge_operation.schema.json +736 -504
  280. package/dist/schemas/config_operation.output.json +185 -179
  281. package/dist/schemas/config_operation.schema.json +21 -26
  282. package/dist/schemas/employee_operation.output.json +207 -0
  283. package/dist/schemas/employee_operation.schema.json +176 -0
  284. package/dist/schemas/evaluation_operation.output.json +2268 -601
  285. package/dist/schemas/evaluation_operation.schema.json +2919 -787
  286. package/dist/schemas/guard2file.output.json +58 -64
  287. package/dist/schemas/guard2file.schema.json +79 -81
  288. package/dist/schemas/index.json +41 -11
  289. package/dist/schemas/industry_pack_operation.output.json +594 -0
  290. package/dist/schemas/industry_pack_operation.schema.json +55 -0
  291. package/dist/schemas/intent_radar.output.json +275 -203
  292. package/dist/schemas/intent_radar.schema.json +124 -126
  293. package/dist/schemas/local_info_operation.output.json +1174 -660
  294. package/dist/schemas/local_info_operation.schema.json +119 -125
  295. package/dist/schemas/local_mark_operation.output.json +1239 -692
  296. package/dist/schemas/local_mark_operation.schema.json +91 -96
  297. package/dist/schemas/machineNode2file.output.json +63 -69
  298. package/dist/schemas/machineNode2file.schema.json +79 -81
  299. package/dist/schemas/messenger_operation.output.json +2722 -1531
  300. package/dist/schemas/messenger_operation.schema.json +1482 -1264
  301. package/dist/schemas/onchain_events.output.json +2590 -978
  302. package/dist/schemas/onchain_events.schema.json +117 -99
  303. package/dist/schemas/onchain_operations.output.json +3957 -2312
  304. package/dist/schemas/onchain_operations.schema.json +20799 -9285
  305. package/dist/schemas/onchain_operations_allocation.schema.json +171 -107
  306. package/dist/schemas/onchain_operations_arbitration.schema.json +233 -146
  307. package/dist/schemas/onchain_operations_contact.schema.json +129 -90
  308. package/dist/schemas/onchain_operations_demand.schema.json +170 -112
  309. package/dist/schemas/onchain_operations_gen_passport.schema.json +61 -646
  310. package/dist/schemas/onchain_operations_gen_proof.schema.json +40 -172
  311. package/dist/schemas/onchain_operations_guard.schema.json +3765 -294
  312. package/dist/schemas/onchain_operations_machine.schema.json +536 -163
  313. package/dist/schemas/onchain_operations_order.schema.json +126 -96
  314. package/dist/schemas/onchain_operations_payment.schema.json +82 -67
  315. package/dist/schemas/onchain_operations_permission.schema.json +331 -93
  316. package/dist/schemas/onchain_operations_personal.schema.json +636 -96
  317. package/dist/schemas/onchain_operations_progress.schema.json +125 -92
  318. package/dist/schemas/onchain_operations_proof.schema.json +76 -69
  319. package/dist/schemas/onchain_operations_repository.schema.json +636 -249
  320. package/dist/schemas/onchain_operations_reward.schema.json +218 -108
  321. package/dist/schemas/onchain_operations_service.schema.json +678 -220
  322. package/dist/schemas/onchain_operations_treasury.schema.json +401 -135
  323. package/dist/schemas/onchain_table_data.output.json +6833 -2432
  324. package/dist/schemas/onchain_table_data.schema.json +684 -417
  325. package/dist/schemas/permission_operation.output.json +173 -0
  326. package/dist/schemas/permission_operation.schema.json +39 -0
  327. package/dist/schemas/persona_operation.output.json +1568 -268
  328. package/dist/schemas/persona_operation.schema.json +346 -205
  329. package/dist/schemas/project_operation.output.json +6922 -5132
  330. package/dist/schemas/project_operation.schema.json +1050 -1020
  331. package/dist/schemas/query_task_status.output.json +195 -99
  332. package/dist/schemas/query_task_status.schema.json +12 -18
  333. package/dist/schemas/query_toolkit.output.json +18862 -14561
  334. package/dist/schemas/query_toolkit.schema.json +614 -522
  335. package/dist/schemas/schema_query.output.json +127 -129
  336. package/dist/schemas/schema_query.schema.json +64 -69
  337. package/dist/schemas/trust_score.output.json +678 -587
  338. package/dist/schemas/trust_score.schema.json +289 -277
  339. package/dist/schemas/wip_file.output.json +116 -124
  340. package/dist/schemas/wip_file.schema.json +142 -143
  341. package/dist/schemas/workflow_operation.output.json +164 -0
  342. package/dist/schemas/workflow_operation.schema.json +116 -0
  343. package/dist/schemas/workspace_operation.output.json +277 -0
  344. package/dist/schemas/workspace_operation.schema.json +45 -0
  345. package/dist/schemas/wowok_buildin_info.output.json +1682 -844
  346. package/dist/schemas/wowok_buildin_info.schema.json +576 -526
  347. package/dist/tools/handlers/bridge.d.ts +8 -1
  348. package/dist/tools/handlers/bridge.js +1 -1
  349. package/dist/tools/handlers/config.js +1 -1
  350. package/dist/tools/handlers/employee.d.ts +2 -0
  351. package/dist/tools/handlers/employee.js +1 -0
  352. package/dist/tools/handlers/evaluation.js +1 -1
  353. package/dist/tools/handlers/file-export.js +1 -1
  354. package/dist/tools/handlers/industry-pack.d.ts +2 -0
  355. package/dist/tools/handlers/industry-pack.js +1 -0
  356. package/dist/tools/handlers/onchain.js +1 -1
  357. package/dist/tools/handlers/permission.d.ts +2 -0
  358. package/dist/tools/handlers/permission.js +1 -0
  359. package/dist/tools/handlers/persona.js +1 -1
  360. package/dist/tools/handlers/project.js +1 -1
  361. package/dist/tools/handlers/query.js +1 -1
  362. package/dist/tools/handlers/schema-query.js +1 -1
  363. package/dist/tools/handlers/trust.js +1 -1
  364. package/dist/tools/handlers/wip.js +1 -1
  365. package/dist/tools/handlers/workflow.d.ts +2 -0
  366. package/dist/tools/handlers/workflow.js +1 -0
  367. package/dist/tools/handlers/workspace.d.ts +4 -0
  368. package/dist/tools/handlers/workspace.js +1 -0
  369. package/dist/tools/index.d.ts +2 -1
  370. package/dist/tools/index.js +1 -1
  371. package/dist/tools/rules-hook.d.ts +1 -1
  372. package/dist/tools/rules-hook.js +1 -1
  373. package/dist/tools/shared.d.ts +1 -1
  374. package/dist/tools/shared.js +1 -1
  375. package/dist/tools/types.d.ts +2 -1
  376. package/package.json +4 -5
  377. package/dist/knowledge/arbitration-trust.d.ts +0 -24
  378. package/dist/knowledge/arbitration-trust.js +0 -1
  379. package/dist/schema/call/bridge-handler.d.ts +0 -8
  380. package/dist/schema/call/bridge-handler.js +0 -1
  381. package/dist/schema/sync-layer4.d.ts +0 -21
  382. package/dist/schema/sync-layer4.js +0 -1
  383. /package/dist/{schema-query → schema-query-impl}/index.d.ts +0 -0
@@ -1 +1 @@
1
- import{getIndustryModeRegistry,getMetricRegistry,getConstraintRegistry}from'../extensions/index.js';import{inferTraitsFromDescription,findSimilarIndustries}from'../knowledge/industry-generalizer.js';import{searchExamples}from'../schema-query/index.js';const LOCAL_MODE_OWNER='local',RM1_11_NODE_REGEX=/(^|_)(disputed?|refund(?:ed)?|arbitration|arb)(_|$)/i;function validateMachineShape(a,b){const c=[];if(!Array['isArray'](a))return c;const d=new Set();for(const e of a){const f=e?.['name'];if(typeof f!=='string'||!f){c['push'](b+':\x20every\x20node\x20must\x20have\x20a\x20non-empty\x20string\x20\x27name\x27');continue;}d['has'](f)&&c['push'](b+':\x20duplicate\x20node\x20name\x20\x27'+f+'\x27\x20(R-M1-10)'),d['add'](f),RM1_11_NODE_REGEX['test'](f)&&c['push'](b+':\x20node\x20\x27'+f+'\x27\x20violates\x20R-M1-11\x20—\x20dispute/refund\x20flows\x20must\x20NOT\x20be\x20'+'modeled\x20as\x20Machine\x20nodes.\x20Disputes\x20flow\x20through\x20Service.arbitrations\x20→\x20Arbitration.dispute()\x20'+'independently\x20of\x20the\x20Machine.\x20Use\x20business-state\x20nodes\x20(e.g.\x20\x27cancelled\x27,\x20\x27return_approved\x27)\x20'+'and\x20route\x20fund\x20refunds\x20via\x20Allocator\x20triggered\x20by\x20those\x20states.');}return c;}export function handleRecommendIndustry(a){const b=(a['intent']??a['project_description']??a['project_name']??'')['trim']();if(!b)throw new Error('recommend_industry\x20requires\x20\x27intent\x27\x20(business\x20description\x20text).\x20'+'Example:\x20intent=\x27I\x20rent\x20cameras\x20to\x20photographers\x20with\x20deposit\x20and\x20damage\x20inspection\x27.');const c=inferTraitsFromDescription(b),d=findSimilarIndustries(c['traits'],0x3),e=d['map'](g=>{const h=searchExamples(g['industry'])['slice'](0x0,0x3)['map'](i=>({'file':i['file'],'title':i['title'],'operation_type':i['operation_type'],'verified':i['verified']}));return{'industry':g['industry'],'similarity':g['similarity'],'matched_traits':g['matched_traits'],'reference_examples':h};}),f=e[0x0];return{'action':'recommend_industry','intent':b,'inferred_traits':c['traits'],'inference_confidence':c['confidence'],'matched_keywords':c['matched_keywords'],'recommendations':e,'hint':f?'Top\x20match:\x20\x27'+f['industry']+'\x27\x20(similarity\x20'+(f['similarity']*0x64)['toFixed'](0x0)+'%).\x20'+('Create\x20the\x20project\x20with\x20project_operation\x20action=\x27create_project\x27\x20project_industry=\x27'+f['industry']+'\x27\x20')+'to\x20get\x20a\x20ready-made\x20blueprint\x20(~10\x20draft\x20objects\x20+\x20graph\x20edges),\x20or\x20choose\x20another\x20industry\x20from\x20'+'\x27recommendations\x27,\x20or\x20use\x20project_industry=\x27custom\x27\x20with\x20skip_templates=true\x20to\x20build\x20from\x20scratch.\x20'+'Review\x20reference\x20examples\x20via\x20schema_query\x20action=\x27search_examples\x27\x20query=\x27<industry>\x27.':'No\x20similar\x20industry\x20found.\x20Use\x20project_industry=\x27custom\x27\x20with\x20skip_templates=true\x20to\x20build\x20from\x20scratch.'};}export async function handleListModes(){const a=getIndustryModeRegistry(),b=a['listModes']()['filter'](d=>d['source']==='builtin')['map'](d=>({'name':d['name'],'display_name':d['display_name'],'version':d['version'],'key_risk':d['key_risk'],'machine_nodes':d['machine_shape']['map'](e=>e['name']),'similar_industries':d['similar_industries']??[]})),c=(await a['listUserModes'](LOCAL_MODE_OWNER))['map'](d=>({'name':d['name'],'display_name':d['display_name'],'version':d['version'],'derived_from':d['derived_from']??null,'key_risk':d['key_risk'],'machine_nodes':d['machine_shape']['map'](e=>e['name']),'evolution_history':(d['evolution_history']??[])['map'](e=>({'version':e['version'],'changed_at':e['changed_at'],'changes':e['changes']}))}));return{'action':'list_modes','builtin_modes':b,'user_modes':c,'owner':LOCAL_MODE_OWNER,'hint':'Use\x20a\x20builtin\x20mode\x20name\x20as\x20project_industry\x20in\x20create_project.\x20'+'Use\x20derive_user_mode\x20to\x20customize\x20a\x20builtin\x20mode,\x20or\x20register_user_mode\x20for\x20a\x20fully\x20custom\x20mode.\x20'+'User\x20modes\x20are\x20referenced\x20as\x20\x27<name>\x27\x20in\x20derive/evolve/unregister\x20actions.'};}export async function handleDeriveUserMode(a){const b=requireField(a['mode_source'],'mode_source'),c=requireField(a['mode_name'],'mode_name'),d=a['mode_changes']??{},e=validateMachineShape(d['machine_shape'],'mode_changes.machine_shape');if(e['length']>0x0)throw new Error('derive_user_mode\x20blocked:\x0a'+e['join']('\x0a'));const f=getIndustryModeRegistry(),g=await f['deriveMode'](b,d,LOCAL_MODE_OWNER,c,a['mode_display_name']);if(!g)throw new Error('derive_user_mode\x20failed:\x20source\x20mode\x20\x27'+b+'\x27\x20not\x20found,\x20or\x20name\x20\x27'+c+'\x27\x20conflicts\x20'+'with\x20a\x20builtin/existing\x20user\x20mode.\x20Call\x20list_modes\x20to\x20see\x20available\x20names.');return{'action':'derive_user_mode','mode':summarizeUserMode(g),'hint':'Mode\x20\x27'+c+'\x27\x20derived\x20from\x20\x27'+b+'\x27.\x20Use\x20it\x20as\x20project_industry\x20in\x20create_project\x20'+('(applyTemplate\x20resolves\x20user\x20modes\x20via\x20\x27local:'+c+'\x27).\x20Iterate\x20with\x20evolve_user_mode.')};}export async function handleEvolveUserMode(a){const b=requireField(a['mode_name'],'mode_name'),c=requireField(a['mode_change_description'],'mode_change_description'),d=a['mode_changes']??{},e=validateMachineShape(d['machine_shape'],'mode_changes.machine_shape');if(e['length']>0x0)throw new Error('evolve_user_mode\x20blocked:\x0a'+e['join']('\x0a'));const f=getIndustryModeRegistry(),g=await f['evolveMode'](b,d,LOCAL_MODE_OWNER,c,a['mode_bump_version']??!![]);if(!g)throw new Error('evolve_user_mode\x20failed:\x20user\x20mode\x20\x27'+b+'\x27\x20not\x20found\x20for\x20owner\x20\x27'+LOCAL_MODE_OWNER+'\x27.\x20'+'Call\x20list_modes\x20to\x20see\x20your\x20modes.');return{'action':'evolve_user_mode','mode':summarizeUserMode(g),'hint':'Mode\x20\x27'+b+'\x27\x20evolved\x20to\x20'+g['version']+'.\x20Evolution\x20history\x20recorded.'};}export async function handleRegisterUserMode(a){const b=requireField(a['mode_name'],'mode_name'),c=a['mode_changes']??{},d=[];(!Array['isArray'](c['machine_shape'])||c['machine_shape']['length']===0x0)&&d['push']('machine_shape\x20(non-empty\x20array\x20of\x20{name,\x20role})');(typeof c['key_risk']!=='string'||!c['key_risk'])&&d['push']('key_risk\x20(string\x20describing\x20the\x20industry\x27s\x20key\x20risk)');if(d['length']>0x0)throw new Error('register_user_mode\x20requires\x20these\x20fields\x20in\x20mode_changes:\x20'+d['join'](',\x20')+'.\x20'+'Tip:\x20derive_user_mode\x20from\x20a\x20builtin\x20mode\x20is\x20usually\x20easier\x20than\x20registering\x20from\x20scratch.');const e=validateMachineShape(c['machine_shape'],'mode_changes.machine_shape');if(e['length']>0x0)throw new Error('register_user_mode\x20blocked:\x0a'+e['join']('\x0a'));const f=getIndustryModeRegistry(),g=f['getMode']('general');if(!g)throw new Error('Builtin\x20mode\x20\x27general\x27\x20not\x20registered\x20—\x20cannot\x20build\x20custom\x20mode\x20defaults');const h={...g,...c,'name':b,'display_name':a['mode_display_name']??b,'version':'v1','source':'custom','owner':LOCAL_MODE_OWNER,'derived_from':undefined,'evolution_history':[]},i=await f['registerUserMode'](h,LOCAL_MODE_OWNER);if(!i)throw new Error('register_user_mode\x20failed:\x20name\x20\x27'+b+'\x27\x20conflicts\x20with\x20a\x20builtin/existing\x20user\x20mode,\x20'+'or\x20payload\x20is\x20invalid.\x20Call\x20list_modes\x20to\x20see\x20available\x20names.');return{'action':'register_user_mode','mode':summarizeUserMode(h),'hint':'Custom\x20mode\x20\x27'+b+'\x27\x20registered.\x20Use\x20it\x20as\x20project_industry\x20in\x20create_project.'};}export async function handleUnregisterUserMode(a){const b=requireField(a['mode_name'],'mode_name'),c=getIndustryModeRegistry(),d=await c['unregisterUserMode'](b,LOCAL_MODE_OWNER);if(!d)throw new Error('unregister_user_mode\x20failed:\x20user\x20mode\x20\x27'+b+'\x27\x20not\x20found\x20for\x20owner\x20\x27'+LOCAL_MODE_OWNER+'\x27.');return{'action':'unregister_user_mode','removed':!![],'mode_name':b};}export function handleRegisterCustomMetric(a){const b=requireField(a['metric_id'],'metric_id'),c=requireField(a['metric_display_name'],'metric_display_name'),d=requireField(a['metric_description'],'metric_description'),e=requireField(a['metric_type'],'metric_type'),f=requireField(a['metric_scale'],'metric_scale'),g=getMetricRegistry()['registerCustomMetric'](b,c,d,e,f,LOCAL_MODE_OWNER,a['metric_weight']);if(!g)throw new Error('register_custom_metric\x20failed:\x20metric_id\x20\x27'+b+'\x27\x20already\x20exists\x20or\x20fields\x20are\x20invalid.');return{'action':'register_custom_metric','metric':{'metric_id':b,'display_name':c,'description':d,'type':e,'scale':f,'weight':a['metric_weight']??0x1,'scope':'custom','owner':LOCAL_MODE_OWNER},'hint':'Custom\x20metric\x20\x27'+b+'\x27\x20registered\x20globally\x20—\x20all\x20modes\x20can\x20reference\x20it\x20via\x20custom_metrics.'};}export function handleRegisterCustomConstraint(a){const b=requireField(a['constraint_id'],'constraint_id'),c=requireField(a['constraint_display_name'],'constraint_display_name'),d=requireField(a['constraint_description'],'constraint_description'),e=a['constraint_rule'];if(!e||typeof e!=='object'||!('type'in e))throw new Error('constraint_rule\x20is\x20required\x20and\x20must\x20be\x20one\x20of:\x20'+'{type:\x27capability_required\x27,\x20capability_id}\x20|\x20{type:\x27capability_forbidden\x27,\x20capability_id}\x20|\x20'+'{type:\x27numeric_limit\x27,\x20field,\x20max?,\x20min?}\x20|\x20{type:\x27condition_required\x27,\x20condition,\x20ai_evaluated:true}');const f=getConstraintRegistry()['registerCustomConstraint'](b,c,d,e,LOCAL_MODE_OWNER,a['constraint_severity']??'soft',a['constraint_on_violation']??'warn');if(!f)throw new Error('register_custom_constraint\x20failed:\x20constraint_id\x20\x27'+b+'\x27\x20already\x20exists\x20or\x20rule\x20is\x20invalid.');return{'action':'register_custom_constraint','constraint':{'constraint_id':b,'display_name':c,'description':d,'rule':e,'severity':a['constraint_severity']??'soft','on_violation':a['constraint_on_violation']??'warn','scope':'custom','owner':LOCAL_MODE_OWNER},'hint':'Custom\x20constraint\x20\x27'+b+'\x27\x20registered.\x20\x27hard\x27\x20constraints\x20block\x20applyTemplate\x20on\x20violation;\x20\x27soft\x27\x20only\x20warn.'};}export function handleListMetricsConstraints(a){const b=getMetricRegistry()['listMetrics']({'type':a['metric_type_filter'],'scope':a['scope_filter']})['map'](d=>({'metric_id':d['metric_id'],'display_name':d['display_name'],'description':d['description'],'type':d['type'],'scale':d['scale'],'weight':d['weight'],'scope':d['scope']})),c=getConstraintRegistry()['listConstraints']({'scope':a['scope_filter']})['map'](d=>({'constraint_id':d['constraint_id'],'display_name':d['display_name'],'description':d['description'],'rule':d['rule'],'severity':d['severity'],'on_violation':d['on_violation'],'scope':d['scope']}));return{'action':'list_metrics_constraints','metrics':b,'constraints':c,'hint':'Register\x20custom\x20entries\x20via\x20register_custom_metric\x20/\x20register_custom_constraint.\x20'+'Filter\x20with\x20metric_type_filter\x20(\x27risk\x27|\x27benefit\x27)\x20or\x20scope_filter\x20(\x27builtin\x27|\x27custom\x27).'};}function requireField(a,b){if(a===undefined||a===null||typeof a==='string'&&!a['trim']())throw new Error('\x27'+b+'\x27\x20is\x20required\x20for\x20this\x20action');return a;}function summarizeUserMode(a){return{'name':a['name'],'display_name':a['display_name'],'version':a['version'],'derived_from':a['derived_from']??null,'owner':a['owner'],'key_risk':a['key_risk'],'machine_nodes':a['machine_shape']['map'](b=>b['name']),'evolution_history':(a['evolution_history']??[])['map'](b=>({'version':b['version'],'changed_at':b['changed_at'],'changes':b['changes']}))};}
1
+ import{getIndustryModeRegistry,getMetricRegistry,getConstraintRegistry}from'../extensions/index.js';import{inferTraitsFromDescription,findSimilarIndustries}from'../knowledge/industry-generalizer.js';import{searchExamples}from'../schema-query-impl/index.js';const LOCAL_MODE_OWNER='local',RM1_11_NODE_REGEX=/(^|_)(disputed?|refund(?:ed)?|arbitration|arb)(_|$)/i;function validateMachineShape(a,b){const c=[];if(!Array['isArray'](a))return c;const d=new Set();for(const e of a){const f=e?.['name'];if(typeof f!=='string'||!f){c['push'](b+':\x20every\x20node\x20must\x20have\x20a\x20non-empty\x20string\x20\x27name\x27');continue;}d['has'](f)&&c['push'](b+':\x20duplicate\x20node\x20name\x20\x27'+f+'\x27\x20(R-M1-10)'),d['add'](f),RM1_11_NODE_REGEX['test'](f)&&c['push'](b+':\x20node\x20\x27'+f+'\x27\x20violates\x20R-M1-11\x20—\x20dispute/refund\x20flows\x20must\x20NOT\x20be\x20'+'modeled\x20as\x20Machine\x20nodes.\x20Disputes\x20flow\x20through\x20Service.arbitrations\x20→\x20Arbitration.dispute()\x20'+'independently\x20of\x20the\x20Machine.\x20Use\x20business-state\x20nodes\x20(e.g.\x20\x27cancelled\x27,\x20\x27return_approved\x27)\x20'+'and\x20route\x20fund\x20refunds\x20via\x20Allocator\x20triggered\x20by\x20those\x20states.');}return c;}export function handleRecommendIndustry(a){const b=(a['intent']??a['project_description']??a['project_name']??'')['trim']();if(!b)throw new Error('recommend_industry\x20requires\x20\x27intent\x27\x20(business\x20description\x20text).\x20'+'Example:\x20intent=\x27I\x20rent\x20cameras\x20to\x20photographers\x20with\x20deposit\x20and\x20damage\x20inspection\x27.');const c=inferTraitsFromDescription(b),d=findSimilarIndustries(c['traits'],0x3),e=d['map'](g=>{const h=searchExamples(g['industry'])['slice'](0x0,0x3)['map'](i=>({'file':i['file'],'title':i['title'],'operation_type':i['operation_type'],'verified':i['verified']}));return{'industry':g['industry'],'similarity':g['similarity'],'matched_traits':g['matched_traits'],'reference_examples':h};}),f=e[0x0];return{'action':'recommend_industry','intent':b,'inferred_traits':c['traits'],'inference_confidence':c['confidence'],'matched_keywords':c['matched_keywords'],'recommendations':e,'hint':f?'Top\x20match:\x20\x27'+f['industry']+'\x27\x20(similarity\x20'+(f['similarity']*0x64)['toFixed'](0x0)+'%).\x20'+('Create\x20the\x20project\x20with\x20project_operation\x20action=\x27create_project\x27\x20project_industry=\x27'+f['industry']+'\x27\x20')+'to\x20get\x20a\x20ready-made\x20blueprint\x20(~10\x20draft\x20objects\x20+\x20graph\x20edges),\x20or\x20choose\x20another\x20industry\x20from\x20'+'\x27recommendations\x27,\x20or\x20use\x20project_industry=\x27custom\x27\x20with\x20skip_templates=true\x20to\x20build\x20from\x20scratch.\x20'+'Review\x20reference\x20examples\x20via\x20schema_query\x20action=\x27search_examples\x27\x20query=\x27<industry>\x27.':'No\x20similar\x20industry\x20found.\x20Use\x20project_industry=\x27custom\x27\x20with\x20skip_templates=true\x20to\x20build\x20from\x20scratch.'};}export async function handleListModes(){const a=getIndustryModeRegistry(),b=a['listModes']()['filter'](d=>d['source']==='builtin')['map'](d=>({'name':d['name'],'display_name':d['display_name'],'version':d['version'],'key_risk':d['key_risk'],'machine_nodes':d['machine_shape']['map'](e=>e['name']),'similar_industries':d['similar_industries']??[]})),c=(await a['listUserModes'](LOCAL_MODE_OWNER))['map'](d=>({'name':d['name'],'display_name':d['display_name'],'version':d['version'],'derived_from':d['derived_from']??null,'key_risk':d['key_risk'],'machine_nodes':d['machine_shape']['map'](e=>e['name']),'evolution_history':(d['evolution_history']??[])['map'](e=>({'version':e['version'],'changed_at':e['changed_at'],'changes':e['changes']}))}));return{'action':'list_modes','builtin_modes':b,'user_modes':c,'owner':LOCAL_MODE_OWNER,'hint':'Use\x20a\x20builtin\x20mode\x20name\x20as\x20project_industry\x20in\x20create_project.\x20'+'Use\x20derive_user_mode\x20to\x20customize\x20a\x20builtin\x20mode,\x20or\x20register_user_mode\x20for\x20a\x20fully\x20custom\x20mode.\x20'+'User\x20modes\x20are\x20referenced\x20as\x20\x27<name>\x27\x20in\x20derive/evolve/unregister\x20actions.'};}export async function handleDeriveUserMode(a){const b=requireField(a['mode_source'],'mode_source'),c=requireField(a['mode_name'],'mode_name'),d=a['mode_changes']??{},e=validateMachineShape(d['machine_shape'],'mode_changes.machine_shape');if(e['length']>0x0)throw new Error('derive_user_mode\x20blocked:\x0a'+e['join']('\x0a'));const f=getIndustryModeRegistry(),g=await f['deriveMode'](b,d,LOCAL_MODE_OWNER,c,a['mode_display_name']);if(!g)throw new Error('derive_user_mode\x20failed:\x20source\x20mode\x20\x27'+b+'\x27\x20not\x20found,\x20or\x20name\x20\x27'+c+'\x27\x20conflicts\x20'+'with\x20a\x20builtin/existing\x20user\x20mode.\x20Call\x20list_modes\x20to\x20see\x20available\x20names.');return{'action':'derive_user_mode','mode':summarizeUserMode(g),'hint':'Mode\x20\x27'+c+'\x27\x20derived\x20from\x20\x27'+b+'\x27.\x20Use\x20it\x20as\x20project_industry\x20in\x20create_project\x20'+('(applyTemplate\x20resolves\x20user\x20modes\x20via\x20\x27local:'+c+'\x27).\x20Iterate\x20with\x20evolve_user_mode.')};}export async function handleEvolveUserMode(a){const b=requireField(a['mode_name'],'mode_name'),c=requireField(a['mode_change_description'],'mode_change_description'),d=a['mode_changes']??{},e=validateMachineShape(d['machine_shape'],'mode_changes.machine_shape');if(e['length']>0x0)throw new Error('evolve_user_mode\x20blocked:\x0a'+e['join']('\x0a'));const f=getIndustryModeRegistry(),g=await f['evolveMode'](b,d,LOCAL_MODE_OWNER,c,a['mode_bump_version']??!![]);if(!g)throw new Error('evolve_user_mode\x20failed:\x20user\x20mode\x20\x27'+b+'\x27\x20not\x20found\x20for\x20owner\x20\x27'+LOCAL_MODE_OWNER+'\x27.\x20'+'Call\x20list_modes\x20to\x20see\x20your\x20modes.');return{'action':'evolve_user_mode','mode':summarizeUserMode(g),'hint':'Mode\x20\x27'+b+'\x27\x20evolved\x20to\x20'+g['version']+'.\x20Evolution\x20history\x20recorded.'};}export async function handleRegisterUserMode(a){const b=requireField(a['mode_name'],'mode_name'),c=a['mode_changes']??{},d=[];(!Array['isArray'](c['machine_shape'])||c['machine_shape']['length']===0x0)&&d['push']('machine_shape\x20(non-empty\x20array\x20of\x20{name,\x20role})');(typeof c['key_risk']!=='string'||!c['key_risk'])&&d['push']('key_risk\x20(string\x20describing\x20the\x20industry\x27s\x20key\x20risk)');if(d['length']>0x0)throw new Error('register_user_mode\x20requires\x20these\x20fields\x20in\x20mode_changes:\x20'+d['join'](',\x20')+'.\x20'+'Tip:\x20derive_user_mode\x20from\x20a\x20builtin\x20mode\x20is\x20usually\x20easier\x20than\x20registering\x20from\x20scratch.');const e=validateMachineShape(c['machine_shape'],'mode_changes.machine_shape');if(e['length']>0x0)throw new Error('register_user_mode\x20blocked:\x0a'+e['join']('\x0a'));const f=getIndustryModeRegistry(),g=f['getMode']('general');if(!g)throw new Error('Builtin\x20mode\x20\x27general\x27\x20not\x20registered\x20—\x20cannot\x20build\x20custom\x20mode\x20defaults');const h={...g,...c,'name':b,'display_name':a['mode_display_name']??b,'version':'v1','source':'custom','owner':LOCAL_MODE_OWNER,'derived_from':undefined,'evolution_history':[]},i=await f['registerUserMode'](h,LOCAL_MODE_OWNER);if(!i)throw new Error('register_user_mode\x20failed:\x20name\x20\x27'+b+'\x27\x20conflicts\x20with\x20a\x20builtin/existing\x20user\x20mode,\x20'+'or\x20payload\x20is\x20invalid.\x20Call\x20list_modes\x20to\x20see\x20available\x20names.');return{'action':'register_user_mode','mode':summarizeUserMode(h),'hint':'Custom\x20mode\x20\x27'+b+'\x27\x20registered.\x20Use\x20it\x20as\x20project_industry\x20in\x20create_project.'};}export async function handleUnregisterUserMode(a){const b=requireField(a['mode_name'],'mode_name'),c=getIndustryModeRegistry(),d=await c['unregisterUserMode'](b,LOCAL_MODE_OWNER);if(!d)throw new Error('unregister_user_mode\x20failed:\x20user\x20mode\x20\x27'+b+'\x27\x20not\x20found\x20for\x20owner\x20\x27'+LOCAL_MODE_OWNER+'\x27.');return{'action':'unregister_user_mode','removed':!![],'mode_name':b};}export function handleRegisterCustomMetric(a){const b=requireField(a['metric_id'],'metric_id'),c=requireField(a['metric_display_name'],'metric_display_name'),d=requireField(a['metric_description'],'metric_description'),e=requireField(a['metric_type'],'metric_type'),f=requireField(a['metric_scale'],'metric_scale'),g=getMetricRegistry()['registerCustomMetric'](b,c,d,e,f,LOCAL_MODE_OWNER,a['metric_weight']);if(!g)throw new Error('register_custom_metric\x20failed:\x20metric_id\x20\x27'+b+'\x27\x20already\x20exists\x20or\x20fields\x20are\x20invalid.');return{'action':'register_custom_metric','metric':{'metric_id':b,'display_name':c,'description':d,'type':e,'scale':f,'weight':a['metric_weight']??0x1,'scope':'custom','owner':LOCAL_MODE_OWNER},'hint':'Custom\x20metric\x20\x27'+b+'\x27\x20registered\x20globally\x20—\x20all\x20modes\x20can\x20reference\x20it\x20via\x20custom_metrics.'};}export function handleRegisterCustomConstraint(a){const b=requireField(a['constraint_id'],'constraint_id'),c=requireField(a['constraint_display_name'],'constraint_display_name'),d=requireField(a['constraint_description'],'constraint_description'),e=a['constraint_rule'];if(!e||typeof e!=='object'||!('type'in e))throw new Error('constraint_rule\x20is\x20required\x20and\x20must\x20be\x20one\x20of:\x20'+'{type:\x27capability_required\x27,\x20capability_id}\x20|\x20{type:\x27capability_forbidden\x27,\x20capability_id}\x20|\x20'+'{type:\x27numeric_limit\x27,\x20field,\x20max?,\x20min?}\x20|\x20{type:\x27condition_required\x27,\x20condition,\x20ai_evaluated:true}');const f=getConstraintRegistry()['registerCustomConstraint'](b,c,d,e,LOCAL_MODE_OWNER,a['constraint_severity']??'soft',a['constraint_on_violation']??'warn');if(!f)throw new Error('register_custom_constraint\x20failed:\x20constraint_id\x20\x27'+b+'\x27\x20already\x20exists\x20or\x20rule\x20is\x20invalid.');return{'action':'register_custom_constraint','constraint':{'constraint_id':b,'display_name':c,'description':d,'rule':e,'severity':a['constraint_severity']??'soft','on_violation':a['constraint_on_violation']??'warn','scope':'custom','owner':LOCAL_MODE_OWNER},'hint':'Custom\x20constraint\x20\x27'+b+'\x27\x20registered.\x20\x27hard\x27\x20constraints\x20block\x20applyTemplate\x20on\x20violation;\x20\x27soft\x27\x20only\x20warn.'};}export function handleListMetricsConstraints(a){const b=getMetricRegistry()['listMetrics']({'type':a['metric_type_filter'],'scope':a['scope_filter']})['map'](d=>({'metric_id':d['metric_id'],'display_name':d['display_name'],'description':d['description'],'type':d['type'],'scale':d['scale'],'weight':d['weight'],'scope':d['scope']})),c=getConstraintRegistry()['listConstraints']({'scope':a['scope_filter']})['map'](d=>({'constraint_id':d['constraint_id'],'display_name':d['display_name'],'description':d['description'],'rule':d['rule'],'severity':d['severity'],'on_violation':d['on_violation'],'scope':d['scope']}));return{'action':'list_metrics_constraints','metrics':b,'constraints':c,'hint':'Register\x20custom\x20entries\x20via\x20register_custom_metric\x20/\x20register_custom_constraint.\x20'+'Filter\x20with\x20metric_type_filter\x20(\x27risk\x27|\x27benefit\x27)\x20or\x20scope_filter\x20(\x27builtin\x27|\x27custom\x27).'};}function requireField(a,b){if(a===undefined||a===null||typeof a==='string'&&!a['trim']())throw new Error('\x27'+b+'\x27\x20is\x20required\x20for\x20this\x20action');return a;}function summarizeUserMode(a){return{'name':a['name'],'display_name':a['display_name'],'version':a['version'],'derived_from':a['derived_from']??null,'owner':a['owner'],'key_risk':a['key_risk'],'machine_nodes':a['machine_shape']['map'](b=>b['name']),'evolution_history':(a['evolution_history']??[])['map'](b=>({'version':b['version'],'changed_at':b['changed_at'],'changes':b['changes']}))};}
@@ -1 +1 @@
1
- import{existsSync,rmSync}from'fs';import{join}from'path';import{loadStageState,projectDir,rollbackStage as a233a}from'./project-store.js';export const REVERSIBILITY_MATRIX=[{'object_type':'permission','lifecycle_state':'created','struct_reversible':'reversible','behavior_reversible':!![],'gas_impact':'low','explanation':'Permission\x20(unpublished):\x20can\x20add\x20tables/admins\x20freely'},{'object_type':'permission','lifecycle_state':'referenced','struct_reversible':'limited','behavior_reversible':!![],'gas_impact':'medium','explanation':'Permission\x20(referenced\x20by\x20published\x20service):\x20modifications\x20limited\x20—\x20affects\x20dependents'},{'object_type':'machine','lifecycle_state':'created','struct_reversible':'reversible','behavior_reversible':!![],'gas_impact':'low','explanation':'Machine\x20(unpublished):\x20can\x20modify\x20nodes/edges/forwards\x20freely'},{'object_type':'machine','lifecycle_state':'published','struct_reversible':'immutable','behavior_reversible':!![],'gas_impact':'none','explanation':'Machine\x20(published):\x20structure\x20is\x20immutable\x20—\x20can\x20only\x20advance\x20progress'},{'object_type':'service','lifecycle_state':'created','struct_reversible':'reversible','behavior_reversible':!![],'gas_impact':'low','explanation':'Service\x20(unpublished):\x20can\x20modify\x20fields\x20freely'},{'object_type':'service','lifecycle_state':'published','struct_reversible':'immutable','behavior_reversible':!![],'gas_impact':'none','explanation':'Service\x20(published):\x20machine/order_allocators\x20frozen\x20—\x20can\x20still\x20transact\x20normally'},{'object_type':'guard','lifecycle_state':'created','struct_reversible':'immutable','behavior_reversible':![],'gas_impact':'none','explanation':'Guard:\x20create-only\x20semantics\x20—\x20immutable\x20from\x20creation'},{'object_type':'allocation','lifecycle_state':'created','struct_reversible':'reversible','behavior_reversible':!![],'gas_impact':'low','explanation':'Allocator\x20(unbound):\x20can\x20modify\x20strategy\x20freely'},{'object_type':'allocation','lifecycle_state':'bound','struct_reversible':'limited','behavior_reversible':!![],'gas_impact':'medium','explanation':'Allocator\x20(bound\x20to\x20published\x20service):\x20strategy\x20modifications\x20limited'},{'object_type':'treasury','lifecycle_state':'created','struct_reversible':'reversible','behavior_reversible':!![],'gas_impact':'low','explanation':'Treasury:\x20can\x20modify\x20rules\x20freely'},{'object_type':'arb','lifecycle_state':'created','struct_reversible':'reversible','behavior_reversible':!![],'gas_impact':'low','explanation':'Arbitration:\x20can\x20modify\x20rules\x20freely'},{'object_type':'reward','lifecycle_state':'created','struct_reversible':'reversible','behavior_reversible':!![],'gas_impact':'low','explanation':'Reward:\x20can\x20modify\x20rules\x20freely'},{'object_type':'progress','lifecycle_state':'bound','struct_reversible':'immutable','behavior_reversible':!![],'gas_impact':'none','explanation':'Progress\x20(bound\x20to\x20machine):\x20cannot\x20swap\x20machine\x20—\x20can\x20only\x20forward'},{'object_type':'order','lifecycle_state':'created','struct_reversible':'immutable','behavior_reversible':!![],'gas_impact':'none','explanation':'Order:\x20structure\x20immutable\x20after\x20creation\x20—\x20can\x20only\x20advance\x20state'}];export function queryReversibility(a,b){return REVERSIBILITY_MATRIX['find'](c=>c['object_type']===a&&c['lifecycle_state']===b);}export function getReversibilityForType(a){return REVERSIBILITY_MATRIX['filter'](b=>b['object_type']===a);}export function recommendIterationStrategy(a,b,c){const d=loadStageState(a,b);if(!d)return{'strategy':'in_place','reason':'Project\x20not\x20initialized\x20—\x20no\x20stage\x20state\x20found.\x20Use\x20in-place\x20for\x20new\x20projects.'};if(d['has_published_object']){const f=b['match'](/^v(\d+)$/),g=f?parseInt(f[0x1])+0x1:0x2,h='v'+g;return{'strategy':'fork','reason':'Project\x20has\x20published\x20on-chain\x20objects\x20—\x20in-place\x20modification\x20would\x20break\x20running\x20business.\x20'+('Fork\x20to\x20'+h+'\x20to\x20preserve\x20the\x20original\x20version\x20as\x20a\x20read-only\x20historical\x20snapshot.'),'fork_to_version':h,'published_objects':d['stage_meta'][0x5]?.['committed']?['see\x20deployment/05-substeps/\x20for\x20published\x20object\x20list']:[]};}const e=c??d['stage'];return{'strategy':'in_place','reason':'Project\x20has\x20no\x20published\x20objects\x20(current\x20stage:\x20'+e+').\x20'+'Safe\x20to\x20modify\x20the\x20current\x20version\x20directly\x20—\x20all\x20changes\x20are\x20local\x20and\x20reversible.'};}const STAGE_DIR_SUFFIXES={0x1:'01-namespace',0x2:'02-puzzle',0x3:'03-risk',0x4:'04-steps',0x5:'05-substeps'};export function evaluateRollbackPolicy(a,b,c){const d=loadStageState(a,b);if(!d)return{'allowed':![],'target_stage':c,'current_stage':0x1,'block_reason':'Project\x20not\x20initialized:\x20'+a+'_'+b,'files_to_clean':[],'warnings':[],'iteration_strategy':{'strategy':'in_place','reason':'Project\x20not\x20initialized.'}};const e=d['stage'],f=recommendIterationStrategy(a,b,e);if(d['has_published_object'])return{'allowed':![],'target_stage':c,'current_stage':e,'block_reason':'Project\x20has\x20published\x20on-chain\x20objects\x20—\x20rollback\x20is\x20forbidden\x20(§3.3).\x20'+'Use\x20fork_project\x20to\x20create\x20a\x20new\x20version\x20for\x20modifications.','files_to_clean':[],'warnings':[],'iteration_strategy':f};if(c>=e)return{'allowed':![],'target_stage':c,'current_stage':e,'block_reason':'Target\x20stage\x20'+c+'\x20must\x20be\x20less\x20than\x20current\x20stage\x20'+e+'.','files_to_clean':[],'warnings':[],'iteration_strategy':f};if(c<0x1)return{'allowed':![],'target_stage':c,'current_stage':e,'block_reason':'Cannot\x20rollback\x20below\x20stage\x201.','files_to_clean':[],'warnings':[],'iteration_strategy':f};const g=[],h=[],i=join(projectDir(a,b),'deployment');for(let j=c+0x1;j<=0x5;j++){const k=join(i,STAGE_DIR_SUFFIXES[j]);existsSync(k)&&g['push']('deployment/'+STAGE_DIR_SUFFIXES[j]+'/');}return c<=0x2&&existsSync(i)&&(g['length']=0x0,g['push']('deployment/')),g['length']>0x0&&h['push']('Rollback\x20will\x20delete\x20'+g['length']+'\x20file(s)/directory(ies):\x20'+g['join'](',\x20')+'.\x20'+'This\x20data\x20will\x20be\x20lost\x20—\x20regenerate\x20by\x20re-running\x20the\x20stage\x20action.'),{'allowed':!![],'target_stage':c,'current_stage':e,'files_to_clean':g,'warnings':h,'iteration_strategy':f};}export function rollbackStageWithPolicy(a,b,c,d){const e=evaluateRollbackPolicy(a,b,c);if(!e['allowed'])return{'success':![],'target_stage':c,'previous_stage':e['current_stage'],'files_to_clean':[],'files_cleaned':[],'stage_state':loadStageState(a,b),'warnings':[],'iteration_strategy':e['iteration_strategy'],'message':'Rollback\x20blocked:\x20'+e['block_reason']};const f=[],g=join(projectDir(a,b),'deployment');if(e['files_to_clean']['includes']('deployment/'))existsSync(g)&&(rmSync(g,{'recursive':!![],'force':!![]}),f['push']('deployment/'));else for(const i of e['files_to_clean']){const j=join(projectDir(a,b),i);existsSync(j)&&(rmSync(j,{'recursive':!![],'force':!![]}),f['push'](i));}const h=a233a(a,b,c,{'reason':d??'rollback\x20to\x20stage\x20'+c+'\x20(policy-evaluated)','affectedFiles':f['length']>0x0?f:['stage.json']});return{'success':!![],'target_stage':c,'previous_stage':e['current_stage'],'files_to_clean':e['files_to_clean'],'files_cleaned':f,'stage_state':h,'warnings':e['warnings'],'iteration_strategy':e['iteration_strategy'],'message':'Rolled\x20back\x20from\x20stage\x20'+e['current_stage']+'\x20to\x20'+c+'.\x20'+(f['length']+'\x20file(s)/directory(ies)\x20cleaned.\x20')+'Stage\x20state\x20updated.\x20'+(e['iteration_strategy']['strategy']==='fork'?'Note:\x20this\x20project\x20has\x20published\x20objects\x20—\x20future\x20modifications\x20require\x20fork.':'Project\x20has\x20no\x20published\x20objects\x20—\x20in-place\x20modification\x20is\x20safe.')};}
1
+ import{existsSync,rmSync}from'fs';import{join}from'path';import{loadStageState,projectDir,rollbackStage as a281a}from'./project-store.js';export const REVERSIBILITY_MATRIX=[{'object_type':'permission','lifecycle_state':'created','struct_reversible':'reversible','behavior_reversible':!![],'gas_impact':'low','explanation':'Permission\x20(unpublished):\x20can\x20add\x20tables/admins\x20freely'},{'object_type':'permission','lifecycle_state':'referenced','struct_reversible':'limited','behavior_reversible':!![],'gas_impact':'medium','explanation':'Permission\x20(referenced\x20by\x20published\x20service):\x20modifications\x20limited\x20—\x20affects\x20dependents'},{'object_type':'machine','lifecycle_state':'created','struct_reversible':'reversible','behavior_reversible':!![],'gas_impact':'low','explanation':'Machine\x20(unpublished):\x20can\x20modify\x20nodes/edges/forwards\x20freely'},{'object_type':'machine','lifecycle_state':'published','struct_reversible':'immutable','behavior_reversible':!![],'gas_impact':'none','explanation':'Machine\x20(published):\x20structure\x20is\x20immutable\x20—\x20can\x20only\x20advance\x20progress'},{'object_type':'service','lifecycle_state':'created','struct_reversible':'reversible','behavior_reversible':!![],'gas_impact':'low','explanation':'Service\x20(unpublished):\x20can\x20modify\x20fields\x20freely'},{'object_type':'service','lifecycle_state':'published','struct_reversible':'immutable','behavior_reversible':!![],'gas_impact':'none','explanation':'Service\x20(published):\x20machine/order_allocators\x20frozen\x20—\x20can\x20still\x20transact\x20normally'},{'object_type':'guard','lifecycle_state':'created','struct_reversible':'immutable','behavior_reversible':![],'gas_impact':'none','explanation':'Guard:\x20create-only\x20semantics\x20—\x20immutable\x20from\x20creation'},{'object_type':'allocation','lifecycle_state':'created','struct_reversible':'reversible','behavior_reversible':!![],'gas_impact':'low','explanation':'Allocator\x20(unbound):\x20can\x20modify\x20strategy\x20freely'},{'object_type':'allocation','lifecycle_state':'bound','struct_reversible':'limited','behavior_reversible':!![],'gas_impact':'medium','explanation':'Allocator\x20(bound\x20to\x20published\x20service):\x20strategy\x20modifications\x20limited'},{'object_type':'treasury','lifecycle_state':'created','struct_reversible':'reversible','behavior_reversible':!![],'gas_impact':'low','explanation':'Treasury:\x20can\x20modify\x20rules\x20freely'},{'object_type':'arb','lifecycle_state':'created','struct_reversible':'reversible','behavior_reversible':!![],'gas_impact':'low','explanation':'Arbitration:\x20can\x20modify\x20rules\x20freely'},{'object_type':'reward','lifecycle_state':'created','struct_reversible':'reversible','behavior_reversible':!![],'gas_impact':'low','explanation':'Reward:\x20can\x20modify\x20rules\x20freely'},{'object_type':'progress','lifecycle_state':'bound','struct_reversible':'immutable','behavior_reversible':!![],'gas_impact':'none','explanation':'Progress\x20(bound\x20to\x20machine):\x20cannot\x20swap\x20machine\x20—\x20can\x20only\x20forward'},{'object_type':'order','lifecycle_state':'created','struct_reversible':'immutable','behavior_reversible':!![],'gas_impact':'none','explanation':'Order:\x20structure\x20immutable\x20after\x20creation\x20—\x20can\x20only\x20advance\x20state'}];export function queryReversibility(a,b){return REVERSIBILITY_MATRIX['find'](c=>c['object_type']===a&&c['lifecycle_state']===b);}export function getReversibilityForType(a){return REVERSIBILITY_MATRIX['filter'](b=>b['object_type']===a);}export function recommendIterationStrategy(a,b,c){const d=loadStageState(a,b);if(!d)return{'strategy':'in_place','reason':'Project\x20not\x20initialized\x20—\x20no\x20stage\x20state\x20found.\x20Use\x20in-place\x20for\x20new\x20projects.'};if(d['has_published_object']){const f=b['match'](/^v(\d+)$/),g=f?parseInt(f[0x1])+0x1:0x2,h='v'+g;return{'strategy':'fork','reason':'Project\x20has\x20published\x20on-chain\x20objects\x20—\x20in-place\x20modification\x20would\x20break\x20running\x20business.\x20'+('Fork\x20to\x20'+h+'\x20to\x20preserve\x20the\x20original\x20version\x20as\x20a\x20read-only\x20historical\x20snapshot.'),'fork_to_version':h,'published_objects':d['stage_meta'][0x5]?.['committed']?['see\x20deployment/05-substeps/\x20for\x20published\x20object\x20list']:[]};}const e=c??d['stage'];return{'strategy':'in_place','reason':'Project\x20has\x20no\x20published\x20objects\x20(current\x20stage:\x20'+e+').\x20'+'Safe\x20to\x20modify\x20the\x20current\x20version\x20directly\x20—\x20all\x20changes\x20are\x20local\x20and\x20reversible.'};}const STAGE_DIR_SUFFIXES={0x1:'01-namespace',0x2:'02-puzzle',0x3:'03-risk',0x4:'04-steps',0x5:'05-substeps'};export function evaluateRollbackPolicy(a,b,c){const d=loadStageState(a,b);if(!d)return{'allowed':![],'target_stage':c,'current_stage':0x1,'block_reason':'Project\x20not\x20initialized:\x20'+a+'_'+b,'files_to_clean':[],'warnings':[],'iteration_strategy':{'strategy':'in_place','reason':'Project\x20not\x20initialized.'}};const e=d['stage'],f=recommendIterationStrategy(a,b,e);if(d['has_published_object'])return{'allowed':![],'target_stage':c,'current_stage':e,'block_reason':'Project\x20has\x20published\x20on-chain\x20objects\x20—\x20rollback\x20is\x20forbidden\x20(§3.3).\x20'+'Use\x20fork_project\x20to\x20create\x20a\x20new\x20version\x20for\x20modifications.','files_to_clean':[],'warnings':[],'iteration_strategy':f};if(c>=e)return{'allowed':![],'target_stage':c,'current_stage':e,'block_reason':'Target\x20stage\x20'+c+'\x20must\x20be\x20less\x20than\x20current\x20stage\x20'+e+'.','files_to_clean':[],'warnings':[],'iteration_strategy':f};if(c<0x1)return{'allowed':![],'target_stage':c,'current_stage':e,'block_reason':'Cannot\x20rollback\x20below\x20stage\x201.','files_to_clean':[],'warnings':[],'iteration_strategy':f};const g=[],h=[],i=join(projectDir(a,b),'deployment');for(let j=c+0x1;j<=0x5;j++){const k=join(i,STAGE_DIR_SUFFIXES[j]);existsSync(k)&&g['push']('deployment/'+STAGE_DIR_SUFFIXES[j]+'/');}return c<=0x2&&existsSync(i)&&(g['length']=0x0,g['push']('deployment/')),g['length']>0x0&&h['push']('Rollback\x20will\x20delete\x20'+g['length']+'\x20file(s)/directory(ies):\x20'+g['join'](',\x20')+'.\x20'+'This\x20data\x20will\x20be\x20lost\x20—\x20regenerate\x20by\x20re-running\x20the\x20stage\x20action.'),{'allowed':!![],'target_stage':c,'current_stage':e,'files_to_clean':g,'warnings':h,'iteration_strategy':f};}export function rollbackStageWithPolicy(a,b,c,d){const e=evaluateRollbackPolicy(a,b,c);if(!e['allowed'])return{'success':![],'target_stage':c,'previous_stage':e['current_stage'],'files_to_clean':[],'files_cleaned':[],'stage_state':loadStageState(a,b),'warnings':[],'iteration_strategy':e['iteration_strategy'],'message':'Rollback\x20blocked:\x20'+e['block_reason']};const f=[],g=join(projectDir(a,b),'deployment');if(e['files_to_clean']['includes']('deployment/'))existsSync(g)&&(rmSync(g,{'recursive':!![],'force':!![]}),f['push']('deployment/'));else for(const i of e['files_to_clean']){const j=join(projectDir(a,b),i);existsSync(j)&&(rmSync(j,{'recursive':!![],'force':!![]}),f['push'](i));}const h=a281a(a,b,c,{'reason':d??'rollback\x20to\x20stage\x20'+c+'\x20(policy-evaluated)','affectedFiles':f['length']>0x0?f:['stage.json']});return{'success':!![],'target_stage':c,'previous_stage':e['current_stage'],'files_to_clean':e['files_to_clean'],'files_cleaned':f,'stage_state':h,'warnings':e['warnings'],'iteration_strategy':e['iteration_strategy'],'message':'Rolled\x20back\x20from\x20stage\x20'+e['current_stage']+'\x20to\x20'+c+'.\x20'+(f['length']+'\x20file(s)/directory(ies)\x20cleaned.\x20')+'Stage\x20state\x20updated.\x20'+(e['iteration_strategy']['strategy']==='fork'?'Note:\x20this\x20project\x20has\x20published\x20objects\x20—\x20future\x20modifications\x20require\x20fork.':'Project\x20has\x20no\x20published\x20objects\x20—\x20in-place\x20modification\x20is\x20safe.')};}
@@ -31,13 +31,13 @@ export interface SemanticReputationContext {
31
31
  address: string;
32
32
  likes: number;
33
33
  dislikes: number;
34
- affiliations: number;
34
+ favorites: number;
35
35
  sentimentScore: number;
36
36
  notableVoters: Array<{
37
37
  who: string;
38
38
  like: boolean;
39
39
  dislike: boolean;
40
- affiliation: boolean;
40
+ favor: boolean;
41
41
  }>;
42
42
  }
43
43
  export interface SemanticProjectContext {
@@ -1 +1 @@
1
- import{LocalProject}from'@wowok/wowok';const FRESH_THRESHOLD_MS=0x1*0x3c*0x3c*0x3e8,STALE_THRESHOLD_MS=0x18*0x3c*0x3c*0x3e8;export class SemanticAssembler{['localProject'];constructor(){this['localProject']=LocalProject['Instance']();}async['assemble'](a,b,c,d){const e=await this['assembleObjects'](b),f=this['assembleGraph'](c),g=this['assembleReputation'](b,d),h=this['computeFreshnessSummary'](e);return{'project':{'prefix':a['prefix'],'name':a['name'],'description':a['description'],'industry':a['industry'],'perspective':a['perspective'],'status':a['status'],'network':a['network'],'serviceAddress':a['serviceAddress'],'currentVersion':a['currentVersion']},'objects':e,'graph':f,'reputation':g,'freshnessSummary':h};}async['assembleObjects'](a){const b=[];for(const c of a){const d=await this['localProject']['getCachedObject'](c['objectAddress']),e=d?this['describeObject'](c,d):'Object\x20'+c['objectAddress']+'\x20(no\x20cached\x20on-chain\x20data)',f=d?this['extractKeyFields'](c['objectType'],d):{},g=d?this['classifyFreshness'](d['fetchedAt']):'unknown';b['push']({'address':c['objectAddress'],'name':c['objectName'],'objectType':c['objectType'],'role':c['role'],'description':e,'keyFields':f,'cacheFreshness':g});}return b;}['describeObject'](a,b){const c=a['objectType']??'unknown',d=a['objectName']??abbreviateAddress(a['objectAddress']);let e=c+'\x20\x22'+d+'\x22\x20at\x20'+abbreviateAddress(a['objectAddress']);try{const f=JSON['parse'](b['data']);switch(c){case'Service':{const g=f['bPublished'],h=f['bPaused'],i=f['sales'];e+=g?h?'\x20(published\x20but\x20PAUSED)':'\x20(published,\x20active)':'\x20(not\x20yet\x20published)';i&&Array['isArray'](i)&&i['length']>0x0&&(e+='\x20with\x20'+i['length']+'\x20sale\x20option(s)');break;}case'Machine':{const j=f['node_count']??f['nodeCount'],k=f['bPublished'];e+=k?'\x20(published,\x20'+j+'\x20nodes)':'\x20(draft,\x20'+j+'\x20nodes)';break;}case'Treasury':{e+='\x20(compensation\x20fund)';break;}case'Guard':{e+='\x20(validation\x20rules)';break;}default:break;}}catch{}return e;}['extractKeyFields'](a,b){const c={};try{const d=JSON['parse'](b['data']);switch(a){case'Service':c['bPublished']=d['bPublished'],c['bPaused']=d['bPaused'],c['sales']=d['sales'],c['machine']=d['machine'],c['buy_guard']=d['buy_guard'],c['permission']=d['permission'],c['compensation_fund']=d['compensation_fund'],c['order_allocators']=d['order_allocators'],c['arbitrations']=d['arbitrations'],c['rewards']=d['rewards'],c['repositories']=d['repositories'];break;case'Machine':c['bPublished']=d['bPublished'],c['bPaused']=d['bPaused'],c['node_count']=d['node_count']??d['nodeCount'],c['permission']=d['permission'];break;case'Treasury':c['permission']=d['permission'],c['guard']=d['guard'];break;case'Allocation':case'Arbitration':case'Reward':case'Repository':case'Demand':c['permission']=d['permission'],c['guard']=d['guard'];break;default:break;}}catch{}return c;}['assembleGraph'](a){const b={},c={},d=[],e=[];for(const f of a){b[f['relationshipType']]=(b[f['relationshipType']]??0x0)+0x1,c[f['edgeSource']]=(c[f['edgeSource']]??0x0)+0x1;f['edgeSource']==='internal'&&f['depth']===0x0&&d['push']({'target':f['targetObject'],'targetType':null,'fieldName':f['fieldName'],'relationshipType':f['relationshipType']});if(f['edgeSource']==='potential'){const g=f['metadata']?.['reason'];e['push']({'target':f['targetObject'],'targetType':f['metadata']?.['expected_target_type'],'fieldName':f['fieldName']??'unknown','reason':typeof g==='string'?g:'expected_relationship_missing'});}}return{'nodeCount':new Set([...a['map'](h=>h['sourceObject']),...a['map'](h=>h['targetObject'])])['size'],'edgeCount':a['length'],'edgesByType':b,'edgesBySource':c,'directDependencies':d,'potentialGaps':e};}['assembleReputation'](a,b){if(!b||b['size']===0x0)return[];const c=[];for(const d of a){const e=b['get'](d['objectAddress']);if(!e)continue;const f=e['likes']+e['dislikes'],g=f>0x0?e['likes']/f:0.5;c['push']({'address':d['objectAddress'],'likes':e['likes'],'dislikes':e['dislikes'],'affiliations':e['affiliations'],'sentimentScore':g,'notableVoters':e['voters']['slice'](0x0,0x5)['map'](h=>({'who':abbreviateAddress(h['who']),'like':h['like'],'dislike':h['dislike'],'affiliation':h['affiliation']}))});}return c;}['classifyFreshness'](a){const b=Date['now']()-a;if(b<FRESH_THRESHOLD_MS)return'fresh';if(b<STALE_THRESHOLD_MS)return'stale';return'stale';}['computeFreshnessSummary'](a){let b=0x0,c=0x0,d=0x0,e=null,f=null;for(const g of a){switch(g['cacheFreshness']){case'fresh':b++;break;case'stale':c++;break;case'unknown':d++;break;}}return{'freshCount':b,'staleCount':c,'unknownCount':d,'oldestFetch':e,'newestFetch':f};}['buildEvaluationPrompt'](a,b){const c=this['getScoringCriteria'](a),d=this['formatPrompt'](a,b,c);return{'evaluationType':a,'context':b,'prompt':d,'scoringCriteria':c};}['getScoringCriteria'](a){switch(a){case'risk':return[{'name':'structural_risk','description':'Risk\x20from\x20missing\x20bindings,\x20broken\x20workflows,\x20incomplete\x20setup','weight':0.3,'minScore':0x0,'maxScore':0x64},{'name':'fund_safety','description':'Risk\x20from\x20Treasury/Allocation\x20misconfiguration,\x20missing\x20compensation\x20fund','weight':0.25,'minScore':0x0,'maxScore':0x64},{'name':'operational_risk','description':'Risk\x20from\x20Machine/Guard\x20complexity,\x20pause\x20state,\x20missing\x20arbitration','weight':0.25,'minScore':0x0,'maxScore':0x64},{'name':'governance_risk','description':'Risk\x20from\x20Permission\x20setup,\x20missing\x20UM,\x20overly\x20permissive\x20rules','weight':0.2,'minScore':0x0,'maxScore':0x64}];case'trust':return[{'name':'reputation','description':'Registrar\x20like/dislike\x20ratio\x20and\x20affiliation\x20count','weight':0.3,'minScore':0x0,'maxScore':0x64},{'name':'arbitration_coverage','description':'Presence\x20and\x20quality\x20of\x20arbitration\x20arrangements','weight':0.25,'minScore':0x0,'maxScore':0x64},{'name':'guard_quality','description':'Guard\x20rule\x20complexity\x20and\x20coverage\x20of\x20business\x20scenarios','weight':0.25,'minScore':0x0,'maxScore':0x64},{'name':'transparency','description':'Object\x20descriptions,\x20repository\x20data,\x20contact\x20information\x20availability','weight':0.2,'minScore':0x0,'maxScore':0x64}];case'worth_buying':return[{'name':'price_reasonableness','description':'Service\x20pricing\x20vs.\x20comparable\x20services\x20and\x20market\x20norms','weight':0.3,'minScore':0x0,'maxScore':0x64},{'name':'refund_protection','description':'Compensation\x20fund\x20balance,\x20lock\x20duration,\x20refund\x20workflow\x20availability','weight':0.25,'minScore':0x0,'maxScore':0x64},{'name':'risk_adjusted_value','description':'Value\x20proposition\x20adjusted\x20for\x20project\x20risk\x20score','weight':0.25,'minScore':0x0,'maxScore':0x64},{'name':'trust_adjusted_value','description':'Value\x20proposition\x20adjusted\x20for\x20merchant\x20trust\x20score','weight':0.2,'minScore':0x0,'maxScore':0x64}];case'completeness':return[{'name':'object_coverage','description':'Expected\x20objects\x20present\x20vs.\x20missing\x20(based\x20on\x20EXPECTED_RELATIONSHIPS)','weight':0.3,'minScore':0x0,'maxScore':0x64},{'name':'binding_completeness','description':'Required\x20bindings\x20established\x20(Service→Machine,\x20Guard,\x20Permission,\x20etc.)','weight':0.3,'minScore':0x0,'maxScore':0x64},{'name':'workflow_rationality','description':'Machine\x20node\x20topology\x20is\x20sound,\x20no\x20dangling\x20nodes\x20or\x20cycles','weight':0.2,'minScore':0x0,'maxScore':0x64},{'name':'deployment_readiness','description':'Service\x20publishable,\x20all\x20prerequisites\x20met','weight':0.2,'minScore':0x0,'maxScore':0x64}];case'value':return[{'name':'market_positioning','description':'Service\x20differentiation\x20and\x20competitive\x20positioning','weight':0.3,'minScore':0x0,'maxScore':0x64},{'name':'revenue_potential','description':'Pricing\x20strategy\x20and\x20revenue\x20model\x20viability','weight':0.3,'minScore':0x0,'maxScore':0x64},{'name':'scalability','description':'Ability\x20to\x20handle\x20growth\x20(Machine\x20capacity,\x20Allocation\x20flexibility)','weight':0.2,'minScore':0x0,'maxScore':0x64},{'name':'ecosystem_fit','description':'Integration\x20with\x20WoWok\x20ecosystem\x20(rewards,\x20demands,\x20repositories)','weight':0.2,'minScore':0x0,'maxScore':0x64}];}}['formatPrompt'](a,b,d){const e=[];e['push']('#\x20Project\x20Evaluation:\x20'+a['toUpperCase']()),e['push'](''),e['push']('##\x20Project:\x20'+b['project']['name']+'\x20('+b['project']['prefix']+')'),e['push']('-\x20Perspective:\x20'+b['project']['perspective']),e['push']('-\x20Status:\x20'+b['project']['status']),e['push']('-\x20Network:\x20'+b['project']['network']),e['push']('-\x20Industry:\x20'+(b['project']['industry']??'unspecified')),e['push']('-\x20Service:\x20'+(b['project']['serviceAddress']??'not\x20set')),e['push'](''),e['push']('##\x20Objects');for(const f of b['objects']){e['push']('-\x20'+f['description']);}e['push'](''),e['push']('##\x20Relationship\x20Graph'),e['push']('-\x20Total\x20nodes:\x20'+b['graph']['nodeCount']),e['push']('-\x20Total\x20edges:\x20'+b['graph']['edgeCount']),e['push']('-\x20Edge\x20sources:\x20'+JSON['stringify'](b['graph']['edgesBySource'])),e['push']('-\x20Edge\x20types:\x20'+JSON['stringify'](b['graph']['edgesByType'])),e['push']('-\x20Direct\x20dependencies:\x20'+b['graph']['directDependencies']['length']);if(b['graph']['potentialGaps']['length']>0x0){e['push']('-\x20**Missing\x20relationships\x20(potential\x20gaps):\x20'+b['graph']['potentialGaps']['length']+'**');for(const g of b['graph']['potentialGaps']['slice'](0x0,0xa)){e['push']('\x20\x20-\x20'+g['fieldName']+'\x20→\x20'+(g['targetType']??'unknown')+'\x20('+g['reason']+')');}}e['push']('');if(b['reputation']['length']>0x0){e['push']('##\x20Reputation\x20Data\x20(from\x20Registrar)');for(const h of b['reputation']){e['push']('-\x20'+abbreviateAddress(h['address'])+':\x20'+h['likes']+'\x20likes,\x20'+h['dislikes']+'\x20dislikes,\x20'+h['affiliations']+'\x20affiliations\x20(sentiment:\x20'+(h['sentimentScore']*0x64)['toFixed'](0x0)+'%)');}e['push']('');}e['push']('##\x20Cache\x20Freshness'),e['push']('-\x20Fresh:\x20'+b['freshnessSummary']['freshCount']),e['push']('-\x20Stale:\x20'+b['freshnessSummary']['staleCount']),e['push']('-\x20Unknown:\x20'+b['freshnessSummary']['unknownCount']),e['push'](''),e['push']('##\x20Scoring\x20Criteria'),e['push']('Please\x20score\x20each\x20criterion\x20(0-100,\x20higher\x20=\x20better)\x20and\x20provide\x20a\x20brief\x20justification:');for(const i of d){e['push']('-\x20**'+i['name']+'**\x20(weight:\x20'+i['weight']+'):\x20'+i['description']);}return e['push'](''),e['push']('##\x20Instructions'),e['push']('1.\x20Analyze\x20the\x20project\x20from\x20the\x20\x22'+a+'\x22\x20perspective.'),e['push']('2.\x20Score\x20each\x20criterion\x20above\x20(0-100).'),e['push']('3.\x20Compute\x20a\x20weighted\x20overall\x20score.'),e['push']('4.\x20Provide\x20a\x201-2\x20sentence\x20summary\x20of\x20your\x20assessment.'),e['push']('5.\x20Return\x20the\x20result\x20as\x20JSON:\x20{\x20score:\x20number,\x20summary:\x20string,\x20details:\x20{\x20criterion_scores:\x20{...},\x20justification:\x20string\x20}\x20}'),e['join']('\x0a');}}function abbreviateAddress(a){if(!a||a['length']<0xc)return a;return a['slice'](0x0,0x6)+'...'+a['slice'](-0x4);}
1
+ import{LocalProject}from'@wowok/wowok';const FRESH_THRESHOLD_MS=0x1*0x3c*0x3c*0x3e8,STALE_THRESHOLD_MS=0x18*0x3c*0x3c*0x3e8;export class SemanticAssembler{['localProject'];constructor(){this['localProject']=LocalProject['Instance']();}async['assemble'](a,b,c,d){const e=await this['assembleObjects'](b),f=this['assembleGraph'](c),g=this['assembleReputation'](b,d),h=this['computeFreshnessSummary'](e);return{'project':{'prefix':a['prefix'],'name':a['name'],'description':a['description'],'industry':a['industry'],'perspective':a['perspective'],'status':a['status'],'network':a['network'],'serviceAddress':a['serviceAddress'],'currentVersion':a['currentVersion']},'objects':e,'graph':f,'reputation':g,'freshnessSummary':h};}async['assembleObjects'](a){const b=[];for(const c of a){const d=await this['localProject']['getCachedObject'](c['objectAddress']),e=d?this['describeObject'](c,d):'Object\x20'+c['objectAddress']+'\x20(no\x20cached\x20on-chain\x20data)',f=d?this['extractKeyFields'](c['objectType'],d):{},g=d?this['classifyFreshness'](d['fetchedAt']):'unknown';b['push']({'address':c['objectAddress'],'name':c['objectName'],'objectType':c['objectType'],'role':c['role'],'description':e,'keyFields':f,'cacheFreshness':g});}return b;}['describeObject'](a,b){const c=a['objectType']??'unknown',d=a['objectName']??abbreviateAddress(a['objectAddress']);let e=c+'\x20\x22'+d+'\x22\x20at\x20'+abbreviateAddress(a['objectAddress']);try{const f=JSON['parse'](b['data']);switch(c){case'Service':{const g=f['bPublished'],h=f['bPaused'],i=f['sales'];e+=g?h?'\x20(published\x20but\x20PAUSED)':'\x20(published,\x20active)':'\x20(not\x20yet\x20published)';i&&Array['isArray'](i)&&i['length']>0x0&&(e+='\x20with\x20'+i['length']+'\x20sale\x20option(s)');break;}case'Machine':{const j=f['node_count']??f['nodeCount'],k=f['bPublished'];e+=k?'\x20(published,\x20'+j+'\x20nodes)':'\x20(draft,\x20'+j+'\x20nodes)';break;}case'Treasury':{e+='\x20(compensation\x20fund)';break;}case'Guard':{e+='\x20(validation\x20rules)';break;}default:break;}}catch{}return e;}['extractKeyFields'](a,b){const c={};try{const d=JSON['parse'](b['data']);switch(a){case'Service':c['bPublished']=d['bPublished'],c['bPaused']=d['bPaused'],c['sales']=d['sales'],c['machine']=d['machine'],c['buy_guard']=d['buy_guard'],c['permission']=d['permission'],c['compensation_fund']=d['compensation_fund'],c['order_allocators']=d['order_allocators'],c['arbitrations']=d['arbitrations'],c['rewards']=d['rewards'],c['repositories']=d['repositories'];break;case'Machine':c['bPublished']=d['bPublished'],c['bPaused']=d['bPaused'],c['node_count']=d['node_count']??d['nodeCount'],c['permission']=d['permission'];break;case'Treasury':c['permission']=d['permission'],c['guard']=d['guard'];break;case'Allocation':case'Arbitration':case'Reward':case'Repository':case'Demand':c['permission']=d['permission'],c['guard']=d['guard'];break;default:break;}}catch{}return c;}['assembleGraph'](a){const b={},c={},d=[],e=[];for(const f of a){b[f['relationshipType']]=(b[f['relationshipType']]??0x0)+0x1,c[f['edgeSource']]=(c[f['edgeSource']]??0x0)+0x1;f['edgeSource']==='internal'&&f['depth']===0x0&&d['push']({'target':f['targetObject'],'targetType':null,'fieldName':f['fieldName'],'relationshipType':f['relationshipType']});if(f['edgeSource']==='potential'){const g=f['metadata']?.['reason'];e['push']({'target':f['targetObject'],'targetType':f['metadata']?.['expected_target_type'],'fieldName':f['fieldName']??'unknown','reason':typeof g==='string'?g:'expected_relationship_missing'});}}return{'nodeCount':new Set([...a['map'](h=>h['sourceObject']),...a['map'](h=>h['targetObject'])])['size'],'edgeCount':a['length'],'edgesByType':b,'edgesBySource':c,'directDependencies':d,'potentialGaps':e};}['assembleReputation'](a,b){if(!b||b['size']===0x0)return[];const c=[];for(const d of a){const e=b['get'](d['objectAddress']);if(!e)continue;const f=e['likes']+e['dislikes'],g=f>0x0?e['likes']/f:0.5;c['push']({'address':d['objectAddress'],'likes':e['likes'],'dislikes':e['dislikes'],'favorites':e['favorites'],'sentimentScore':g,'notableVoters':e['voters']['slice'](0x0,0x5)['map'](h=>({'who':abbreviateAddress(h['who']),'like':h['like'],'dislike':h['dislike'],'favor':h['favor']}))});}return c;}['classifyFreshness'](a){const b=Date['now']()-a;if(b<FRESH_THRESHOLD_MS)return'fresh';if(b<STALE_THRESHOLD_MS)return'stale';return'stale';}['computeFreshnessSummary'](a){let b=0x0,c=0x0,d=0x0,e=null,f=null;for(const g of a){switch(g['cacheFreshness']){case'fresh':b++;break;case'stale':c++;break;case'unknown':d++;break;}}return{'freshCount':b,'staleCount':c,'unknownCount':d,'oldestFetch':e,'newestFetch':f};}['buildEvaluationPrompt'](a,b){const c=this['getScoringCriteria'](a),d=this['formatPrompt'](a,b,c);return{'evaluationType':a,'context':b,'prompt':d,'scoringCriteria':c};}['getScoringCriteria'](a){switch(a){case'risk':return[{'name':'structural_risk','description':'Risk\x20from\x20missing\x20bindings,\x20broken\x20workflows,\x20incomplete\x20setup','weight':0.3,'minScore':0x0,'maxScore':0x64},{'name':'fund_safety','description':'Risk\x20from\x20Treasury/Allocation\x20misconfiguration,\x20missing\x20compensation\x20fund','weight':0.25,'minScore':0x0,'maxScore':0x64},{'name':'operational_risk','description':'Risk\x20from\x20Machine/Guard\x20complexity,\x20pause\x20state,\x20missing\x20arbitration','weight':0.25,'minScore':0x0,'maxScore':0x64},{'name':'governance_risk','description':'Risk\x20from\x20Permission\x20setup,\x20missing\x20UM,\x20overly\x20permissive\x20rules','weight':0.2,'minScore':0x0,'maxScore':0x64}];case'trust':return[{'name':'reputation','description':'Registrar\x20like/dislike\x20ratio\x20and\x20favor\x20count','weight':0.3,'minScore':0x0,'maxScore':0x64},{'name':'arbitration_coverage','description':'Presence\x20and\x20quality\x20of\x20arbitration\x20arrangements','weight':0.25,'minScore':0x0,'maxScore':0x64},{'name':'guard_quality','description':'Guard\x20rule\x20complexity\x20and\x20coverage\x20of\x20business\x20scenarios','weight':0.25,'minScore':0x0,'maxScore':0x64},{'name':'transparency','description':'Object\x20descriptions,\x20repository\x20data,\x20contact\x20information\x20availability','weight':0.2,'minScore':0x0,'maxScore':0x64}];case'worth_buying':return[{'name':'price_reasonableness','description':'Service\x20pricing\x20vs.\x20comparable\x20services\x20and\x20market\x20norms','weight':0.3,'minScore':0x0,'maxScore':0x64},{'name':'refund_protection','description':'Compensation\x20fund\x20balance,\x20lock\x20duration,\x20refund\x20workflow\x20availability','weight':0.25,'minScore':0x0,'maxScore':0x64},{'name':'risk_adjusted_value','description':'Value\x20proposition\x20adjusted\x20for\x20project\x20risk\x20score','weight':0.25,'minScore':0x0,'maxScore':0x64},{'name':'trust_adjusted_value','description':'Value\x20proposition\x20adjusted\x20for\x20merchant\x20trust\x20score','weight':0.2,'minScore':0x0,'maxScore':0x64}];case'completeness':return[{'name':'object_coverage','description':'Expected\x20objects\x20present\x20vs.\x20missing\x20(based\x20on\x20EXPECTED_RELATIONSHIPS)','weight':0.3,'minScore':0x0,'maxScore':0x64},{'name':'binding_completeness','description':'Required\x20bindings\x20established\x20(Service→Machine,\x20Guard,\x20Permission,\x20etc.)','weight':0.3,'minScore':0x0,'maxScore':0x64},{'name':'workflow_rationality','description':'Machine\x20node\x20topology\x20is\x20sound,\x20no\x20dangling\x20nodes\x20or\x20cycles','weight':0.2,'minScore':0x0,'maxScore':0x64},{'name':'deployment_readiness','description':'Service\x20publishable,\x20all\x20prerequisites\x20met','weight':0.2,'minScore':0x0,'maxScore':0x64}];case'value':return[{'name':'market_positioning','description':'Service\x20differentiation\x20and\x20competitive\x20positioning','weight':0.3,'minScore':0x0,'maxScore':0x64},{'name':'revenue_potential','description':'Pricing\x20strategy\x20and\x20revenue\x20model\x20viability','weight':0.3,'minScore':0x0,'maxScore':0x64},{'name':'scalability','description':'Ability\x20to\x20handle\x20growth\x20(Machine\x20capacity,\x20Allocation\x20flexibility)','weight':0.2,'minScore':0x0,'maxScore':0x64},{'name':'ecosystem_fit','description':'Integration\x20with\x20WoWok\x20ecosystem\x20(rewards,\x20demands,\x20repositories)','weight':0.2,'minScore':0x0,'maxScore':0x64}];}}['formatPrompt'](a,b,d){const e=[];e['push']('#\x20Project\x20Evaluation:\x20'+a['toUpperCase']()),e['push'](''),e['push']('##\x20Project:\x20'+b['project']['name']+'\x20('+b['project']['prefix']+')'),e['push']('-\x20Perspective:\x20'+b['project']['perspective']),e['push']('-\x20Status:\x20'+b['project']['status']),e['push']('-\x20Network:\x20'+b['project']['network']),e['push']('-\x20Industry:\x20'+(b['project']['industry']??'unspecified')),e['push']('-\x20Service:\x20'+(b['project']['serviceAddress']??'not\x20set')),e['push'](''),e['push']('##\x20Objects');for(const f of b['objects']){e['push']('-\x20'+f['description']);}e['push'](''),e['push']('##\x20Relationship\x20Graph'),e['push']('-\x20Total\x20nodes:\x20'+b['graph']['nodeCount']),e['push']('-\x20Total\x20edges:\x20'+b['graph']['edgeCount']),e['push']('-\x20Edge\x20sources:\x20'+JSON['stringify'](b['graph']['edgesBySource'])),e['push']('-\x20Edge\x20types:\x20'+JSON['stringify'](b['graph']['edgesByType'])),e['push']('-\x20Direct\x20dependencies:\x20'+b['graph']['directDependencies']['length']);if(b['graph']['potentialGaps']['length']>0x0){e['push']('-\x20**Missing\x20relationships\x20(potential\x20gaps):\x20'+b['graph']['potentialGaps']['length']+'**');for(const g of b['graph']['potentialGaps']['slice'](0x0,0xa)){e['push']('\x20\x20-\x20'+g['fieldName']+'\x20→\x20'+(g['targetType']??'unknown')+'\x20('+g['reason']+')');}}e['push']('');if(b['reputation']['length']>0x0){e['push']('##\x20Reputation\x20Data\x20(from\x20Registrar)');for(const h of b['reputation']){e['push']('-\x20'+abbreviateAddress(h['address'])+':\x20'+h['likes']+'\x20likes,\x20'+h['dislikes']+'\x20dislikes,\x20'+h['favorites']+'\x20favorites\x20(sentiment:\x20'+(h['sentimentScore']*0x64)['toFixed'](0x0)+'%)');}e['push']('');}e['push']('##\x20Cache\x20Freshness'),e['push']('-\x20Fresh:\x20'+b['freshnessSummary']['freshCount']),e['push']('-\x20Stale:\x20'+b['freshnessSummary']['staleCount']),e['push']('-\x20Unknown:\x20'+b['freshnessSummary']['unknownCount']),e['push'](''),e['push']('##\x20Scoring\x20Criteria'),e['push']('Please\x20score\x20each\x20criterion\x20(0-100,\x20higher\x20=\x20better)\x20and\x20provide\x20a\x20brief\x20justification:');for(const i of d){e['push']('-\x20**'+i['name']+'**\x20(weight:\x20'+i['weight']+'):\x20'+i['description']);}return e['push'](''),e['push']('##\x20Instructions'),e['push']('1.\x20Analyze\x20the\x20project\x20from\x20the\x20\x22'+a+'\x22\x20perspective.'),e['push']('2.\x20Score\x20each\x20criterion\x20above\x20(0-100).'),e['push']('3.\x20Compute\x20a\x20weighted\x20overall\x20score.'),e['push']('4.\x20Provide\x20a\x201-2\x20sentence\x20summary\x20of\x20your\x20assessment.'),e['push']('5.\x20Return\x20the\x20result\x20as\x20JSON:\x20{\x20score:\x20number,\x20summary:\x20string,\x20details:\x20{\x20criterion_scores:\x20{...},\x20justification:\x20string\x20}\x20}'),e['join']('\x0a');}}function abbreviateAddress(a){if(!a||a['length']<0xc)return a;return a['slice'](0x0,0x6)+'...'+a['slice'](-0x4);}
@@ -1,6 +1,7 @@
1
1
  import type { ProjectObjectType } from "./namespace.js";
2
2
  import type { BusinessIntent } from "./intent-analyzer.js";
3
3
  import type { BusinessModule, BusinessModuleId } from "../extensions/business-modules.js";
4
+ import type { GraphEdgeBase, GraphNodeBase } from "../graph/base.js";
4
5
  export type ConfigValueType = "string" | "number" | "boolean" | "address_ref" | "guard_logic" | "enum";
5
6
  export interface ConfigValueBase {
6
7
  type: ConfigValueType;
@@ -38,8 +39,7 @@ export interface ExpectedState {
38
39
  paused: boolean;
39
40
  additional?: Record<string, unknown>;
40
41
  }
41
- export interface SemanticNode {
42
- id: string;
42
+ export interface SemanticNode extends GraphNodeBase {
43
43
  type: ProjectObjectType;
44
44
  purpose: string;
45
45
  derivedFrom: {
@@ -49,9 +49,7 @@ export interface SemanticNode {
49
49
  config: Record<string, ConfigValue>;
50
50
  expectedState: ExpectedState;
51
51
  }
52
- export interface SemanticEdge {
53
- from: string;
54
- to: string;
52
+ export interface SemanticEdge extends GraphEdgeBase {
55
53
  relation: string;
56
54
  required: boolean;
57
55
  derivedFrom: {
@@ -0,0 +1,24 @@
1
+ import type { SemanticObjectGraph } from "./semantic-graph.js";
2
+ import { type GameTheoryReport } from "./game-theory.js";
3
+ export interface DesignCheck {
4
+ id: string;
5
+ dimension: "intent" | "game" | "value";
6
+ passed: boolean;
7
+ severity: "critical" | "warning" | "info";
8
+ message: string;
9
+ fix?: string;
10
+ }
11
+ export interface DesignFinding {
12
+ kind: "business_loophole" | "semantic_loophole";
13
+ severity: "critical" | "warning" | "info";
14
+ message: string;
15
+ fix: string;
16
+ }
17
+ export interface WorkflowDesignAssessment {
18
+ checks: DesignCheck[];
19
+ findings: DesignFinding[];
20
+ game_coverage: GameTheoryReport;
21
+ score: number;
22
+ summary: string;
23
+ }
24
+ export declare function assessWorkflowDesign(graph: SemanticObjectGraph): WorkflowDesignAssessment;
@@ -0,0 +1 @@
1
+ import{checkGameTheoryConstraints}from'./game-theory.js';const VALUE_DIMENSION_CARRIERS=[{'dimension':'escrow_quality','type':'allocation','desc':'funds\x20locked\x20in\x20contract,\x20released\x20by\x20guard'},{'dimension':'proof_integrity','type':'repository','desc':'tamper-proof\x20delivery\x20evidence'},{'dimension':'arbitration_fairness','type':'arb','desc':'independent\x20dispute\x20resolution'},{'dimension':'permission_safety','type':'permission','desc':'governance\x20+\x20forward\x20authorization'},{'dimension':'content_commitment','type':'guard','desc':'delivery\x20verification\x20rules'}];function detectRefundBypass(a){const b=[],c=a['some'](e=>/refund|cancel|disput/i['test'](e['id'])),d=a['some'](e=>/arbitr/i['test'](e['id'])||e['type']==='arb');return c&&!d&&b['push']({'kind':'business_loophole','severity':'critical','message':'A\x20refund/cancel\x20path\x20exists\x20but\x20no\x20Arbitration\x20node\x20is\x20present\x20—\x20refunds\x20would\x20bypass\x20independent\x20dispute\x20review.','fix':'Add\x20an\x20Arbitration\x20node\x20(independent\x20Permission)\x20so\x20the\x20refund\x20path\x20routes\x20through\x20dispute\x20resolution.'}),b;}function detectMissingAcceptTimeout(a,b){const c=[],d=a['some'](f=>/complet|accept|finaliz|done/i['test'](f['id'])),e=b['some'](f=>/timeout|time_guard|accept_timeout/i['test'](f['relation']))||a['some'](f=>/timeout|time_guard/i['test'](f['id']));return d&&!e&&c['push']({'kind':'semantic_loophole','severity':'warning','message':'A\x20completion/accept\x20path\x20exists\x20without\x20an\x20accept-timeout\x20mechanism\x20—\x20customer\x20silence\x20could\x20stall\x20settlement\x20indefinitely.','fix':'Adopt\x20accept_timeout_protection:\x20add\x20a\x20time_guard\x20on\x20the\x20accept\x20forward\x20so\x20silence\x20advances\x20the\x20order.'}),c;}function checkIntentConsistency(a){const b=[],{businessIntent:c}=a,d=new Set(a['nodes']['map'](h=>h['type'])),e=new Set(a['nodes']['map'](h=>h['id']['toLowerCase']()));b['push']({'id':'intent_core_service','dimension':'intent','passed':d['has']('service'),'severity':'critical','message':d['has']('service')?'Core\x20Service\x20node\x20present\x20—\x20merchant\x20intent\x20has\x20a\x20structural\x20home.':'No\x20Service\x20node\x20in\x20the\x20blueprint\x20—\x20merchant\x20intent\x20has\x20no\x20structural\x20home.','fix':d['has']('service')?undefined:'Add\x20a\x20Service\x20node\x20to\x20the\x20blueprint.'});c['roles']['arbitrators']&&b['push']({'id':'intent_arbitrator','dimension':'intent','passed':d['has']('arb')||e['has']('main_arbitration'),'severity':'warning','message':'Declared\x20arbitrator\x20role\x20has\x20no\x20Arbitration\x20carrier\x20object\x20in\x20the\x20blueprint.','fix':'Add\x20an\x20Arbitration\x20object\x20to\x20the\x20blueprint.'});const f=c['deliverables']??[];f['length']>0x0&&!d['has']('repository')&&!d['has']('proof')&&b['push']({'id':'intent_deliverable','dimension':'intent','passed':![],'severity':'info','message':f['length']+'\x20deliverable(s)\x20declared\x20but\x20no\x20Repository/Proof\x20carrier\x20—\x20delivery\x20evidence\x20has\x20no\x20on-chain\x20home.','fix':'Bind\x20a\x20Repository\x20(and\x20optionally\x20Proof)\x20to\x20store\x20delivery\x20hashes.'});const g=c['payment']?.['kind']??'';return/milestone|escrow/i['test'](g)&&!d['has']('allocation')&&b['push']({'id':'intent_payment','dimension':'intent','passed':![],'severity':'critical','message':'Milestone/escrow\x20payment\x20declared\x20but\x20no\x20Allocation\x20carrier\x20—\x20funds\x20have\x20no\x20release\x20gate.','fix':'Bind\x20order_allocators\x20(Allocation)\x20so\x20funds\x20release\x20per\x20verified\x20milestone.'}),b;}function checkValueCoverage(a){const b=new Set(a['nodes']['map'](c=>c['type']));return VALUE_DIMENSION_CARRIERS['map'](d=>({'id':'value_'+d['dimension'],'dimension':'value','passed':b['has'](d['type']),'severity':d['type']==='allocation'||d['type']==='arb'?'critical':'info','message':b['has'](d['type'])?d['dimension']+':\x20'+d['type']+'\x20present\x20('+d['desc']+').':d['dimension']+':\x20missing\x20'+d['type']+'\x20carrier\x20('+d['desc']+').','fix':b['has'](d['type'])?undefined:'Add\x20a\x20'+d['type']+'\x20object\x20to\x20cover\x20'+d['dimension']+'.'}));}export function assessWorkflowDesign(a){const b=checkGameTheoryConstraints(a,a['businessIntent']),c=checkIntentConsistency(a),d=checkValueCoverage(a),e=b['results']['map'](l=>({'id':'game_'+l['scenario'],'dimension':'game','passed':l['covered'],'severity':l['scenario']==='merchant_may_abandon'?'critical':'warning','message':l['covered']?'Covered:\x20'+l['conflict']:'EXPOSED:\x20'+l['conflict'],'fix':l['covered']?undefined:l['recommendation']})),f=[...detectRefundBypass(a['nodes']),...detectMissingAcceptTimeout(a['nodes'],a['edges'])],g=[...c,...e,...d],h=g['filter'](l=>!l['passed']&&l['severity']==='critical')['length'],i=g['filter'](l=>!l['passed'])['length'],j=Math['max'](0x0,Math['min'](0x64,0x64-h*0x14-i*0x5)),k=h>0x0?'Design\x20NOT\x20ready:\x20'+h+'\x20critical\x20+\x20'+i+'\x20total\x20open\x20loop(s).':i>0x0?'Design\x20mostly\x20sound:\x20'+i+'\x20open\x20loop(s),\x20no\x20critical.':'Design\x20sound:\x20intent/game/value\x20all\x20covered.';return{'checks':g,'findings':f,'game_coverage':b,'score':j,'summary':k};}
@@ -11,7 +11,7 @@ export type ConfirmResult = {
11
11
  rule_id: string;
12
12
  };
13
13
  export declare function getFailMode(level: ConfirmLevel): FailMode;
14
- export declare function confirmGate(operation_type: string, data: any, env: any, userIntentPhrases?: string[]): ConfirmResult;
14
+ export declare function confirmGate(operation_type: string, data: any, env: any, userIntentPhrases?: string[], overrides?: Record<string, string>): ConfirmResult;
15
15
  export declare function isExplicitlyConfirmed(env: CallEnv & {
16
16
  confirmed?: boolean;
17
17
  }): boolean;
@@ -1 +1 @@
1
- import{CONFIRMATION_RULES}from'../knowledge/safety-rules.js';import{isEnabled as a245a}from'../config/index.js';export function isConfirmGateEnabled(){return a245a('confirm_gate');}const internalErrorCounts={};function logInternalError(a,b){const c=a;internalErrorCounts[c]=(internalErrorCounts[c]??0x0)+0x1;const d=internalErrorCounts[c];console['warn']('[ConfirmGate]\x20internal_error\x20context=\x22'+a+'\x22\x20count='+d+'\x20error='+(b instanceof Error?b['message']:String(b)));}export function getFailMode(a){switch(a){case'irreversible':case'publish':case'amount':return'closed';case'standard':case'none':default:return'open';}}function buildInternalErrorResult(){return{'pass':![],'level':'irreversible','preview':{'level':'irreversible','operation':'unknown','irreversible':!![]},'rule_id':'internal_error'};}export function confirmGate(a,b,c,d){if(!isConfirmGateEnabled())return{'pass':!![]};if(c?.['confirmed']===!![])return{'pass':!![]};let f,g=null;try{f=CONFIRMATION_RULES['find'](i=>{try{return i['when'](a,b,c);}catch(j){logInternalError('rule_when:'+i['id'],j);if(getFailMode(i['level'])==='closed')throw j;return![];}});}catch(i){g=i;}if(g)return logInternalError('rule_search',g),buildInternalErrorResult();if(!f)return{'pass':!![]};if(f['bypass_on_explicit_intent']&&d&&d['length']>0x0){const j=d['map'](l=>l['toLowerCase']()),k=f['bypass_on_explicit_intent']['some'](l=>j['some'](m=>m['includes'](l['toLowerCase']())));if(k)return{'pass':!![]};}let h;try{h=f['preview'](a,b,c);}catch(l){logInternalError('rule_preview:'+f['id'],l);if(getFailMode(f['level'])==='closed')return buildInternalErrorResult();return{'pass':!![]};}return{'pass':![],'level':f['level'],'preview':h,'rule_id':f['id']};}export function isExplicitlyConfirmed(a){return a?.['confirmed']===!![];}
1
+ import{CONFIRMATION_RULES,resolveOverrideId}from'../knowledge/safety-rules.js';import{isEnabled as a294a}from'../config/index.js';export function isConfirmGateEnabled(){return a294a('confirm_gate');}const internalErrorCounts={};function logInternalError(a,b){const c=a;internalErrorCounts[c]=(internalErrorCounts[c]??0x0)+0x1;const d=internalErrorCounts[c];console['warn']('[ConfirmGate]\x20internal_error\x20context=\x22'+a+'\x22\x20count='+d+'\x20error='+(b instanceof Error?b['message']:String(b)));}export function getFailMode(a){switch(a){case'irreversible':case'publish':case'amount':return'closed';case'standard':case'none':default:return'open';}}function buildInternalErrorResult(){return{'pass':![],'level':'irreversible','preview':{'level':'irreversible','operation':'unknown','irreversible':!![]},'rule_id':'internal_error'};}export function confirmGate(a,b,c,d,f){if(!isConfirmGateEnabled())return{'pass':!![]};if(c?.['confirmed']===!![])return{'pass':!![]};let g,h=null;try{g=CONFIRMATION_RULES['find'](l=>{try{return l['when'](a,b,c);}catch(m){logInternalError('rule_when:'+l['id'],m);if(getFailMode(l['level'])==='closed')throw m;return![];}});}catch(l){h=l;}if(h)return logInternalError('rule_search',h),buildInternalErrorResult();if(!g)return{'pass':!![]};const i=resolveOverrideId(g['id'],a),j=i?f?.[i]:undefined;if(j==='auto')return{'pass':!![]};if(j!=='block'&&g['bypass_on_explicit_intent']&&d&&d['length']>0x0){const m=d['map'](o=>o['toLowerCase']()),n=g['bypass_on_explicit_intent']['some'](o=>m['some'](q=>q['includes'](o['toLowerCase']())));if(n)return{'pass':!![]};}let k;try{k=g['preview'](a,b,c);}catch(o){logInternalError('rule_preview:'+g['id'],o);if(getFailMode(g['level'])==='closed')return buildInternalErrorResult();return{'pass':!![]};}return{'pass':![],'level':g['level'],'preview':k,'rule_id':g['id']};}export function isExplicitlyConfirmed(a){return a?.['confirmed']===!![];}