@wowok/agent-mcp 3.4.1 → 3.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. package/dist/.build-stamp.json +5 -0
  2. package/dist/chain-semantics/composition-truth.js +1 -1
  3. package/dist/chain-semantics/eval-order.js +1 -1
  4. package/dist/chain-semantics/field-capability.js +1 -1
  5. package/dist/chain-semantics/freeze-map.js +1 -1
  6. package/dist/chain-semantics/fund-flow.js +1 -1
  7. package/dist/chain-semantics/guard-verbs.js +1 -1
  8. package/dist/chain-semantics/object-graph.js +1 -1
  9. package/dist/composition/audit.js +1 -1
  10. package/dist/composition/compile.d.ts +10 -3
  11. package/dist/composition/compile.js +1 -1
  12. package/dist/composition/emit-phases.d.ts +30 -2
  13. package/dist/composition/emit-phases.js +1 -1
  14. package/dist/composition/guard-fill.d.ts +8 -0
  15. package/dist/composition/guard-fill.js +1 -1
  16. package/dist/composition/inflight.js +1 -1
  17. package/dist/composition/input-normalize.js +1 -1
  18. package/dist/composition/materialize.d.ts +2 -0
  19. package/dist/composition/materialize.js +1 -1
  20. package/dist/composition/mode-gates.js +1 -1
  21. package/dist/composition/param-disclosure.js +1 -1
  22. package/dist/composition/plan-retry-ledger.d.ts +16 -0
  23. package/dist/composition/plan-retry-ledger.js +1 -1
  24. package/dist/composition/plan.d.ts +15 -1
  25. package/dist/composition/plan.js +1 -1
  26. package/dist/config/config-audit.spec.js +1 -1
  27. package/dist/config/judgment.d.ts +5 -0
  28. package/dist/config/judgment.js +1 -1
  29. package/dist/evaluation/builtins/arbitration-score.d.ts +1 -0
  30. package/dist/evaluation/builtins/arbitration-score.js +1 -1
  31. package/dist/evaluation/builtins/demand-match.js +1 -1
  32. package/dist/evaluation/builtins/graph-service.d.ts +8 -0
  33. package/dist/evaluation/builtins/graph-service.js +1 -1
  34. package/dist/evaluation/capability.d.ts +9 -0
  35. package/dist/evaluation/engine.js +1 -1
  36. package/dist/evaluation/extract.d.ts +9 -1
  37. package/dist/evaluation/extract.js +1 -1
  38. package/dist/evaluation/match-operation.js +1 -1
  39. package/dist/evaluation/match-policy.d.ts +5 -3
  40. package/dist/evaluation/match-policy.js +1 -1
  41. package/dist/evaluation/standards.d.ts +1 -0
  42. package/dist/evaluation/standards.js +1 -1
  43. package/dist/evaluation/structured-lines.js +1 -1
  44. package/dist/evaluation/types.d.ts +1 -0
  45. package/dist/extensions/capability.js +1 -1
  46. package/dist/extensions/industry-pack.js +1 -1
  47. package/dist/extensions/modes.js +1 -1
  48. package/dist/harness/recover.js +1 -1
  49. package/dist/index.js +1 -1
  50. package/dist/intent/types.d.ts +1 -1
  51. package/dist/intent/types.js +1 -1
  52. package/dist/knowledge/allocation-ledger.js +1 -1
  53. package/dist/knowledge/allocator-rail-verifier.d.ts +17 -1
  54. package/dist/knowledge/allocator-rail-verifier.js +1 -1
  55. package/dist/knowledge/arb-fund-facts.d.ts +7 -0
  56. package/dist/knowledge/arb-fund-facts.js +1 -1
  57. package/dist/knowledge/arbitration-rail-verifier.d.ts +35 -0
  58. package/dist/knowledge/arbitration-rail-verifier.js +1 -0
  59. package/dist/knowledge/arbitration-templates.js +1 -1
  60. package/dist/knowledge/audit-rules.d.ts +13 -1
  61. package/dist/knowledge/audit-rules.js +1 -1
  62. package/dist/knowledge/baselines/judgment-baselines.json +1 -0
  63. package/dist/knowledge/baselines/rules/guard.json +7 -6
  64. package/dist/knowledge/baselines/rules/progress.json +4 -4
  65. package/dist/knowledge/baselines/rules/reward.json +118 -3
  66. package/dist/knowledge/builtin-templates.d.ts +19 -2
  67. package/dist/knowledge/builtin-templates.js +1 -1
  68. package/dist/knowledge/chain-query-registry.d.ts +14 -0
  69. package/dist/knowledge/chain-query-registry.js +1 -0
  70. package/dist/knowledge/event-semantics.js +1 -1
  71. package/dist/knowledge/fee-param-bindings.d.ts +2 -0
  72. package/dist/knowledge/fee-param-bindings.js +1 -1
  73. package/dist/knowledge/getting-started.js +1 -1
  74. package/dist/knowledge/guard-binding-table.js +1 -1
  75. package/dist/knowledge/guard-binding-verifier.d.ts +7 -0
  76. package/dist/knowledge/guard-binding-verifier.js +1 -1
  77. package/dist/knowledge/guard-bindings.js +1 -1
  78. package/dist/knowledge/guard-design-patterns.d.ts +1 -1
  79. package/dist/knowledge/guard-design-patterns.js +1 -1
  80. package/dist/knowledge/guard-field-cognition.js +1 -1
  81. package/dist/knowledge/guard-host-context.js +1 -1
  82. package/dist/knowledge/guard-lint.js +1 -1
  83. package/dist/knowledge/guard-node-gates.d.ts +3 -1
  84. package/dist/knowledge/guard-node-gates.js +1 -1
  85. package/dist/knowledge/guard-puzzle.js +1 -1
  86. package/dist/knowledge/guard-render.js +1 -1
  87. package/dist/knowledge/guard-risk.js +1 -1
  88. package/dist/knowledge/guard-templates.d.ts +2 -1
  89. package/dist/knowledge/guard-templates.js +1 -1
  90. package/dist/knowledge/guard-translation.js +1 -1
  91. package/dist/knowledge/index.d.ts +2 -0
  92. package/dist/knowledge/index.js +1 -1
  93. package/dist/knowledge/industry-registry.js +1 -1
  94. package/dist/knowledge/jsonrpc-enum.js +1 -1
  95. package/dist/knowledge/knob-docs.js +1 -1
  96. package/dist/knowledge/param-schema.d.ts +1 -1
  97. package/dist/knowledge/param-schema.js +1 -1
  98. package/dist/knowledge/param-tiers.d.ts +2 -0
  99. package/dist/knowledge/param-tiers.js +1 -1
  100. package/dist/knowledge/path-oracle/products/food-delivery.js +1 -1
  101. package/dist/knowledge/pattern-resolutions.d.ts +2 -0
  102. package/dist/knowledge/pattern-resolutions.js +1 -1
  103. package/dist/knowledge/product-detail-source.d.ts +37 -0
  104. package/dist/knowledge/product-detail-source.js +1 -0
  105. package/dist/knowledge/product-doc-b5.d.ts +16 -0
  106. package/dist/knowledge/product-doc-b5.js +1 -0
  107. package/dist/knowledge/progress-ledger.js +1 -1
  108. package/dist/knowledge/projection.spec.js +1 -1
  109. package/dist/knowledge/publish-gate.d.ts +20 -0
  110. package/dist/knowledge/publish-gate.js +1 -0
  111. package/dist/knowledge/publish-readiness.d.ts +25 -0
  112. package/dist/knowledge/publish-readiness.js +1 -0
  113. package/dist/knowledge/publish-surface-contract.d.ts +16 -0
  114. package/dist/knowledge/publish-surface-contract.js +1 -0
  115. package/dist/knowledge/rail-exit-satisfiability.d.ts +25 -0
  116. package/dist/knowledge/rail-exit-satisfiability.js +1 -0
  117. package/dist/knowledge/reward-ledger.d.ts +1 -1
  118. package/dist/knowledge/reward-ledger.js +1 -1
  119. package/dist/knowledge/reward-risk.d.ts +1 -1
  120. package/dist/knowledge/reward-risk.js +1 -1
  121. package/dist/knowledge/scenario-modes.js +1 -1
  122. package/dist/knowledge/service-ledger.d.ts +3 -1
  123. package/dist/knowledge/service-ledger.js +1 -1
  124. package/dist/knowledge/template-loader.d.ts +41 -2
  125. package/dist/knowledge/template-loader.js +1 -1
  126. package/dist/knowledge/template-registry.js +1 -1
  127. package/dist/knowledge/template-scanner.d.ts +17 -0
  128. package/dist/knowledge/template-scanner.js +1 -1
  129. package/dist/knowledge/template-test-profiles.js +1 -1
  130. package/dist/knowledge/workflow-guidance.d.ts +4 -0
  131. package/dist/knowledge/workflow-guidance.js +1 -1
  132. package/dist/monitor/MonitorLoop.js +1 -1
  133. package/dist/monitor/normalize.d.ts +1 -1
  134. package/dist/monitor/normalize.js +1 -1
  135. package/dist/monitor/types.js +1 -1
  136. package/dist/participation/customer-interest.d.ts +4 -0
  137. package/dist/participation/customer-interest.js +1 -1
  138. package/dist/participation/game-context.js +1 -1
  139. package/dist/participation/node-action-advisor.d.ts +4 -0
  140. package/dist/participation/node-action-advisor.js +1 -1
  141. package/dist/participation/radar-core.js +1 -1
  142. package/dist/participation/time-window.d.ts +11 -0
  143. package/dist/participation/time-window.js +1 -1
  144. package/dist/playbooks/service-build/business-puzzle.js +1 -1
  145. package/dist/playbooks/service-build/machine-panorama.js +1 -1
  146. package/dist/playbooks/service-build/merchant-guide.d.ts +28 -3
  147. package/dist/playbooks/service-build/merchant-guide.js +1 -1
  148. package/dist/playbooks/service-build/object-panorama.d.ts +4 -0
  149. package/dist/playbooks/service-build/object-panorama.js +1 -1
  150. package/dist/playbooks/service-build/participation-radar.js +1 -1
  151. package/dist/playbooks/service-build/relationship-profile.js +1 -1
  152. package/dist/playbooks/service-build/service-panorama.js +1 -1
  153. package/dist/playbooks/service-build/service-quote.js +1 -1
  154. package/dist/review/index.js +1 -1
  155. package/dist/review/order.js +1 -1
  156. package/dist/safety/confirm-gate.js +1 -1
  157. package/dist/schema/benchmark-migration/index.d.ts +24 -0
  158. package/dist/schema/benchmark-migration/index.js +1 -1
  159. package/dist/schema/call/allocation.d.ts +11 -7
  160. package/dist/schema/call/allocation.js +1 -1
  161. package/dist/schema/call/arbitration.d.ts +4 -0
  162. package/dist/schema/call/arbitration.js +1 -1
  163. package/dist/schema/call/base.d.ts +28 -0
  164. package/dist/schema/call/base.js +1 -1
  165. package/dist/schema/call/bridge.d.ts +21 -0
  166. package/dist/schema/call/contact.d.ts +4 -0
  167. package/dist/schema/call/demand.d.ts +4 -0
  168. package/dist/schema/call/guard.d.ts +12 -0
  169. package/dist/schema/call/handler.d.ts +1 -0
  170. package/dist/schema/call/handler.js +1 -1
  171. package/dist/schema/call/machine.d.ts +16 -8
  172. package/dist/schema/call/normalize-error.d.ts +1 -0
  173. package/dist/schema/call/normalize-error.js +1 -0
  174. package/dist/schema/call/order.d.ts +7 -3
  175. package/dist/schema/call/order.js +1 -1
  176. package/dist/schema/call/payment.d.ts +7 -3
  177. package/dist/schema/call/permission.d.ts +4 -0
  178. package/dist/schema/call/personal.d.ts +4 -0
  179. package/dist/schema/call/progress.d.ts +4 -0
  180. package/dist/schema/call/progress.js +1 -1
  181. package/dist/schema/call/proof.d.ts +8 -0
  182. package/dist/schema/call/proof.js +1 -1
  183. package/dist/schema/call/receipt.js +1 -1
  184. package/dist/schema/call/repository.d.ts +4 -0
  185. package/dist/schema/call/reward.d.ts +6 -2
  186. package/dist/schema/call/reward.js +1 -1
  187. package/dist/schema/call/semantic.d.ts +2 -2
  188. package/dist/schema/call/semantic.js +1 -1
  189. package/dist/schema/call/service.d.ts +21 -7
  190. package/dist/schema/call/service.js +1 -1
  191. package/dist/schema/call/treasury.d.ts +10 -6
  192. package/dist/schema/common/index.js +1 -1
  193. package/dist/schema/envelope-unify.d.ts +1 -0
  194. package/dist/schema/envelope-unify.js +1 -1
  195. package/dist/schema/evaluation/index.d.ts +43 -0
  196. package/dist/schema/evaluation/index.js +1 -1
  197. package/dist/schema/goal/index.d.ts +14 -2
  198. package/dist/schema/goal/planning.d.ts +18 -0
  199. package/dist/schema/goal/planning.js +1 -1
  200. package/dist/schema/intent-radar/index.d.ts +12 -0
  201. package/dist/schema/intent-radar/index.js +1 -1
  202. package/dist/schema/keeper/index.d.ts +1 -0
  203. package/dist/schema/local/index.d.ts +10 -0
  204. package/dist/schema/local/index.js +1 -1
  205. package/dist/schema/local/wip.js +1 -1
  206. package/dist/schema/messenger/index.d.ts +1 -0
  207. package/dist/schema/messenger/index.js +1 -1
  208. package/dist/schema/operations.d.ts +98 -13
  209. package/dist/schema/operations.js +1 -1
  210. package/dist/schema/persona/index.d.ts +22 -0
  211. package/dist/schema/query/bi.d.ts +28 -2
  212. package/dist/schema/query/bi.js +1 -1
  213. package/dist/schema/query/index.d.ts +67 -61
  214. package/dist/schema/query/index.js +1 -1
  215. package/dist/schema/schema-version.js +1 -1
  216. package/dist/schema/workflow/index.js +1 -1
  217. package/dist/schema-query-impl/index.d.ts +1 -0
  218. package/dist/schema-query-impl/index.js +1 -1
  219. package/dist/schemas/account_operation.output.json +2 -1
  220. package/dist/schemas/benchmark_migration_operation.output.json +74 -0
  221. package/dist/schemas/benchmark_migration_operation.schema.json +33 -1
  222. package/dist/schemas/bridge_operation.output.json +2 -1
  223. package/dist/schemas/bridge_operation.schema.json +40 -0
  224. package/dist/schemas/evaluation_operation.output.json +96 -0
  225. package/dist/schemas/evaluation_operation.schema.json +39 -0
  226. package/dist/schemas/goal_operation.schema.json +32 -0
  227. package/dist/schemas/guard2file.schema.json +8 -0
  228. package/dist/schemas/index.json +1 -1
  229. package/dist/schemas/intent_radar.output.json +10 -2
  230. package/dist/schemas/intent_radar.schema.json +5 -1
  231. package/dist/schemas/keeper_operation.output.json +2 -1
  232. package/dist/schemas/local_cache_operation.output.json +2 -1
  233. package/dist/schemas/local_history_operation.output.json +2 -1
  234. package/dist/schemas/local_info_operation.output.json +2 -1
  235. package/dist/schemas/local_mark_operation.output.json +2 -1
  236. package/dist/schemas/local_mark_operation.schema.json +10 -1
  237. package/dist/schemas/machineNode2file.schema.json +8 -0
  238. package/dist/schemas/messenger_operation.output.json +2 -1
  239. package/dist/schemas/messenger_operation.schema.json +2 -1
  240. package/dist/schemas/monitor_events.output.json +2 -1
  241. package/dist/schemas/monitor_subscription.output.json +2 -1
  242. package/dist/schemas/onchain_events.output.json +206 -13
  243. package/dist/schemas/onchain_events.schema.json +16 -0
  244. package/dist/schemas/onchain_operations.output.json +22 -3
  245. package/dist/schemas/onchain_operations.schema.json +982 -327
  246. package/dist/schemas/onchain_operations_allocation.schema.json +20 -13
  247. package/dist/schemas/onchain_operations_arbitration.schema.json +9 -1
  248. package/dist/schemas/onchain_operations_contact.schema.json +8 -0
  249. package/dist/schemas/onchain_operations_demand.schema.json +8 -0
  250. package/dist/schemas/onchain_operations_gen_passport.schema.json +8 -0
  251. package/dist/schemas/onchain_operations_gen_proof.schema.json +8 -0
  252. package/dist/schemas/onchain_operations_guard.schema.json +655 -115
  253. package/dist/schemas/onchain_operations_machine.schema.json +11 -3
  254. package/dist/schemas/onchain_operations_order.schema.json +14 -11
  255. package/dist/schemas/onchain_operations_payment.schema.json +12 -9
  256. package/dist/schemas/onchain_operations_permission.schema.json +8 -0
  257. package/dist/schemas/onchain_operations_personal.schema.json +8 -0
  258. package/dist/schemas/onchain_operations_progress.schema.json +9 -1
  259. package/dist/schemas/onchain_operations_proof.schema.json +9 -1
  260. package/dist/schemas/onchain_operations_repository.schema.json +8 -0
  261. package/dist/schemas/onchain_operations_reward.schema.json +14 -11
  262. package/dist/schemas/onchain_operations_service.schema.json +25 -12
  263. package/dist/schemas/onchain_operations_treasury.schema.json +17 -19
  264. package/dist/schemas/onchain_table_data.output.json +52 -10
  265. package/dist/schemas/persona_operation.output.json +57 -0
  266. package/dist/schemas/persona_operation.schema.json +9 -0
  267. package/dist/schemas/query_toolkit.output.json +326 -23
  268. package/dist/schemas/query_toolkit.schema.json +18 -5
  269. package/dist/schemas/wip_file.output.json +2 -2
  270. package/dist/schemas/wip_file.schema.json +2 -2
  271. package/dist/schemas/workflow_operation.schema.json +1 -1
  272. package/dist/tools/error-catalog.d.ts +17 -0
  273. package/dist/tools/error-catalog.js +1 -0
  274. package/dist/tools/handlers/benchmark-migration.d.ts +29 -8
  275. package/dist/tools/handlers/benchmark-migration.js +1 -1
  276. package/dist/tools/handlers/config.js +1 -1
  277. package/dist/tools/handlers/entry-edge-recipe.d.ts +101 -0
  278. package/dist/tools/handlers/entry-edge-recipe.js +1 -0
  279. package/dist/tools/handlers/escrow-deficit.d.ts +10 -0
  280. package/dist/tools/handlers/escrow-deficit.js +1 -0
  281. package/dist/tools/handlers/evaluation.js +1 -1
  282. package/dist/tools/handlers/fund-rail-recipe.d.ts +10 -0
  283. package/dist/tools/handlers/fund-rail-recipe.js +1 -0
  284. package/dist/tools/handlers/intent-radar.js +1 -1
  285. package/dist/tools/handlers/local.js +1 -1
  286. package/dist/tools/handlers/mark-namespace.d.ts +30 -0
  287. package/dist/tools/handlers/mark-namespace.js +1 -0
  288. package/dist/tools/handlers/messenger.js +1 -1
  289. package/dist/tools/handlers/onchain-name-registration.d.ts +1 -0
  290. package/dist/tools/handlers/onchain-name-registration.js +1 -1
  291. package/dist/tools/handlers/onchain-name-registration.spec.js +1 -1
  292. package/dist/tools/handlers/onchain.d.ts +40 -1
  293. package/dist/tools/handlers/onchain.js +1 -1
  294. package/dist/tools/handlers/publish-binding-echo.d.ts +22 -0
  295. package/dist/tools/handlers/publish-binding-echo.js +1 -0
  296. package/dist/tools/handlers/query.d.ts +1 -1
  297. package/dist/tools/handlers/query.js +1 -1
  298. package/dist/tools/handlers/review-chain.d.ts +1 -0
  299. package/dist/tools/handlers/review-chain.js +1 -1
  300. package/dist/tools/handlers/schema-query.js +1 -1
  301. package/dist/tools/handlers/stale-build-check.d.ts +9 -0
  302. package/dist/tools/handlers/stale-build-check.js +1 -0
  303. package/dist/tools/handlers/submission-assembly.d.ts +55 -0
  304. package/dist/tools/handlers/submission-assembly.js +1 -0
  305. package/dist/tools/handlers/wip.js +1 -1
  306. package/dist/tools/index.d.ts +1 -0
  307. package/dist/tools/index.js +1 -1
  308. package/dist/tools/move-fn-index.gen.js +1 -1
  309. package/dist/tools/publish-gate-state.d.ts +5 -0
  310. package/dist/tools/publish-gate-state.js +1 -0
  311. package/dist/tools/registry/business.js +1 -1
  312. package/dist/tools/registry/onchain.js +1 -1
  313. package/dist/tools/registry/query.js +1 -1
  314. package/dist/tools/retry.js +1 -1
  315. package/dist/tools/runtime-health.js +1 -1
  316. package/dist/tools/shared.js +1 -1
  317. package/dist/tools/upgrade-check.d.ts +1 -0
  318. package/dist/tools/upgrade-check.js +1 -1
  319. package/dist/tools/wip-verify-ledger.d.ts +2 -0
  320. package/dist/tools/wip-verify-ledger.js +1 -1
  321. package/dist/tools/wrap.d.ts +15 -1
  322. package/dist/tools/wrap.js +1 -1
  323. package/package.json +5 -3
@@ -44,7 +44,7 @@ export interface MatchPolicy {
44
44
  }
45
45
  export type MatchPolicyInput = string | MatchPolicy;
46
46
  export type MatchPolicySource = "factory_defaults" | "system_persona" | "general_file" | "account_persona" | "request";
47
- export declare const POLICY_WEIGHT_RULE_IDS: readonly ["region", "industry", "price", "trust", "capabilities", "tags", "acceptance"];
47
+ export declare const POLICY_WEIGHT_RULE_IDS: readonly ["region", "industry", "price", "trust", "capabilities", "reward_commitment", "tags", "acceptance"];
48
48
  export declare const PRESET_MATCH_POLICIES: Record<string, MatchPolicy>;
49
49
  export declare function resolveMatchPolicy(input: MatchPolicyInput | undefined, direction: "demand_to_supply" | "supply_to_demand"): MatchPolicy | undefined;
50
50
  export type GateStatus = "satisfied" | "violated" | "unknown";
@@ -75,7 +75,7 @@ export interface DemandGateCandidate {
75
75
  object: string;
76
76
  description: string;
77
77
  location: string;
78
- rewards?: string[];
78
+ rewards?: unknown[];
79
79
  um?: string | null;
80
80
  owner?: string;
81
81
  guards?: unknown[];
@@ -138,7 +138,9 @@ export interface PolicyEffect {
138
138
  ignored: string[];
139
139
  privacy: string;
140
140
  }
141
- export declare function buildPolicyEffect(policy: MatchPolicy, gateOutcome: PolicyGateOutcome, weights: {
141
+ export declare function buildPolicyEffect(policy: MatchPolicy, gateOutcome: PolicyGateOutcome<{
142
+ object: string;
143
+ }>, weights: {
142
144
  applied: Record<string, number>;
143
145
  ignored: string[];
144
146
  }, rerank: PolicyRerankSummary, extraIgnored?: string[], policySource?: MatchPolicySource): PolicyEffect;
@@ -1 +1 @@
1
- import{createHash}from'node:crypto';export const POLICY_WEIGHT_RULE_IDS=['region','industry','price','trust','capabilities','tags','acceptance'];export const PRESET_MATCH_POLICIES={'default':{'policy_id':'default','version':0x1,'unknown_policy':'neutral_score'},'retail':{'policy_id':'retail','version':0x1,'unknown_policy':'neutral_score','gates':[{'dim':'live','op':'eq','value':!![]}],'weights':{'region':0xa,'industry':0xf,'price':0x19,'trust':0xf,'capabilities':0x1e,'tags':0x5}},'life_service':{'policy_id':'life_service','version':0x1,'unknown_policy':'neutral_score','gates':[{'dim':'live','op':'eq','value':!![]}],'weights':{'region':0x14,'industry':0xf,'price':0xa,'trust':0x19,'capabilities':0x19,'tags':0x5}},'trust_first':{'policy_id':'trust_first','version':0x1,'unknown_policy':'drop','gates':[{'dim':'live','op':'eq','value':!![]},{'dim':'arb','op':'gte','value':0x1}],'weights':{'trust':0x1e,'capabilities':0x19,'region':0xa,'industry':0xa,'price':0xa,'tags':0x5}},'cross_border':{'policy_id':'cross_border','version':0x1,'unknown_policy':'neutral_score','gates':[{'dim':'live','op':'eq','value':!![]},{'dim':'wip_verify','op':'eq','value':!![]}],'weights':{'capabilities':0x19,'trust':0x14,'industry':0x14,'tags':0xf,'price':0xf,'region':0x5}},'cheap_and_fast':{'policy_id':'cheap_and_fast','version':0x1,'unknown_policy':'drop','gates':[{'dim':'price','op':'lte','params':{'from_budget':!![],'hard':!![]}}],'weights':{'price':0x23,'trust':0xf,'capabilities':0xf,'region':0xa,'industry':0xa,'tags':0x5}},'enterprise':{'policy_id':'enterprise','version':0x1,'unknown_policy':'drop','gates':[{'dim':'live','op':'eq','value':!![]},{'dim':'machine','op':'eq','value':!![]},{'dim':'buy_guard','op':'eq','value':!![]}],'weights':{'capabilities':0x1e,'trust':0x19,'industry':0xf,'acceptance':0xa,'price':0xa,'region':0x5,'tags':0x5}},'supplier_hunting':{'policy_id':'supplier_hunting','version':0x1,'direction':'supply_to_demand','unknown_policy':'neutral_score'}};function normalizePresetId(a){return a['trim']()['toLowerCase']()['replace'](/-/g,'_');}export function resolveMatchPolicy(a,b){if(a===undefined)return undefined;let c;if(typeof a==='string'){const e=PRESET_MATCH_POLICIES[normalizePresetId(a)];if(!e)throw new Error('unknown\x20match_policy\x20preset\x20\x27'+a+'\x27\x20—\x20available:\x20'+Object['keys'](PRESET_MATCH_POLICIES)['join'](',\x20')+'\x20(or\x20pass\x20an\x20inline\x20policy\x20object)');c=e;}else{if(typeof a!=='object'||a===null||typeof a['policy_id']!=='string'||a['policy_id']['length']===0x0)throw new Error('inline\x20match_policy\x20must\x20be\x20an\x20object\x20with\x20a\x20non-empty\x20string\x20policy_id');c=a;}const d=c['direction']??'demand_to_supply';if(d!==b)throw new Error('match_policy\x20\x27'+c['policy_id']+'\x27\x20has\x20direction\x20\x27'+d+'\x27\x20and\x20cannot\x20drive\x20a\x20\x27'+b+'\x27\x20query');return c;}function bigIntValue(a){if(typeof a==='bigint')return a;if(typeof a==='number'&&Number['isInteger'](a))return BigInt(a);if(typeof a==='string'&&/^-?\d+$/['test'](a['trim']()))return BigInt(a['trim']());return undefined;}function asStringArray(a){if(Array['isArray'](a))return a['map'](String);if(typeof a==='string')return[a];return undefined;}function minSalePrice(a){if(!a['sales']||a['sales']['length']===0x0)return undefined;let b;for(const c of a['sales']){const d=bigIntValue(c['price']);if(d===undefined)continue;if(b===undefined||d<b)b=d;}return b;}function evalGate(a,b,c){const d=a['op']??'eq';switch(a['dim']){case'live':{const e=a['value']===undefined?!![]:Boolean(a['value']);if(b['bPublished']===undefined&&b['bPaused']===undefined)return{'dim':a['dim'],'status':'unknown','reason':'published/paused\x20flags\x20absent\x20from\x20candidate\x20payload'};const f=(b['bPublished']??![])&&!(b['bPaused']??![]);return f===e?{'dim':a['dim'],'status':'satisfied','reason':'live='+f}:{'dim':a['dim'],'status':'violated','reason':'live='+f+',\x20gate\x20requires\x20'+e};}case'price':{if(d!=='lte'&&d!=='gte')return null;let g=bigIntValue(a['value']);if(g===undefined&&a['params']?.['from_budget']===!![])g=c['budgetWei'];if(g===undefined)return{'dim':a['dim'],'status':'unknown','reason':'no\x20gate\x20value\x20and\x20no\x20request\x20budget\x20to\x20bind\x20from_budget'};const h=minSalePrice(b);if(h===undefined)return{'dim':a['dim'],'status':'unknown','reason':'candidate\x20exposes\x20no\x20sale\x20price'};const i=d==='lte'?h<=g:h>=g;return i?{'dim':a['dim'],'status':'satisfied','reason':'price_min\x20'+h+'\x20'+d+'\x20'+g}:{'dim':a['dim'],'status':'violated','reason':'price_min\x20'+h+'\x20fails\x20'+d+'\x20'+g};}case'arb':{if(d!=='gte')return null;const j=bigIntValue(a['value']);if(j===undefined)return null;if(!b['arbitrations'])return{'dim':a['dim'],'status':'unknown','reason':'arbitration\x20list\x20absent\x20from\x20candidate\x20payload'};const k=BigInt(b['arbitrations']['length'])>=j;return k?{'dim':a['dim'],'status':'satisfied','reason':'arb_count\x20'+b['arbitrations']['length']+'\x20>=\x20'+j}:{'dim':a['dim'],'status':'violated','reason':'arb_count\x20'+b['arbitrations']['length']+'\x20<\x20'+j};}case'compensation':{if(d!=='gte')return null;const l=bigIntValue(a['value']);if(l===undefined)return null;const m=bigIntValue(b['compensation_fund']);if(m===undefined)return{'dim':a['dim'],'status':'unknown','reason':'compensation_fund\x20absent\x20from\x20candidate\x20payload'};return m>=l?{'dim':a['dim'],'status':'satisfied','reason':'compensation_fund\x20'+m+'\x20>=\x20'+l}:{'dim':a['dim'],'status':'violated','reason':'compensation_fund\x20'+m+'\x20<\x20'+l};}case'machine':case'messenger':case'buy_guard':{const n=a['value']===undefined?!![]:Boolean(a['value']),o=a['dim']==='machine'?b['machine']:a['dim']==='messenger'?b['um']:b['buy_guard'];if(o===undefined)return{'dim':a['dim'],'status':'unknown','reason':a['dim']+'\x20binding\x20absent\x20from\x20candidate\x20payload'};const p=o!==null;return p===n?{'dim':a['dim'],'status':'satisfied','reason':a['dim']+'\x20bound='+p}:{'dim':a['dim'],'status':'violated','reason':a['dim']+'\x20bound='+p+',\x20gate\x20requires\x20'+n};}case'wip_verify':{const q=a['value']===undefined?!![]:Boolean(a['value']);if(!b['sales'])return{'dim':a['dim'],'status':'unknown','reason':'sales\x20absent\x20from\x20candidate\x20payload'};const r=b['sales']['some'](t=>typeof t['wip_hash']==='string'&&t['wip_hash']['length']>0x0);return r===q?{'dim':a['dim'],'status':'satisfied','reason':'has_wip_verification='+r}:{'dim':a['dim'],'status':'violated','reason':'has_wip_verification='+r+',\x20gate\x20requires\x20'+q};}case'text':{if(d!=='must_contain'&&d!=='must_not_contain')return null;const t=asStringArray(a['value']);if(!t||t['length']===0x0)return null;const u=[b['description']??'',...(b['sales']??[])['map'](w=>w['name']??'')]['join']('\x20')['toLowerCase']();if(u['trim']()['length']===0x0)return{'dim':a['dim'],'status':'unknown','reason':'candidate\x20carries\x20no\x20text\x20to\x20match'};if(d==='must_contain'){const w=t['filter'](x=>!u['includes'](x['toLowerCase']()));return w['length']===0x0?{'dim':a['dim'],'status':'satisfied','reason':'all\x20'+t['length']+'\x20term(s)\x20present'}:{'dim':a['dim'],'status':'violated','reason':'missing\x20term(s):\x20'+w['join'](',\x20')};}const v=t['filter'](x=>u['includes'](x['toLowerCase']()));return v['length']===0x0?{'dim':a['dim'],'status':'satisfied','reason':'no\x20forbidden\x20term\x20present'}:{'dim':a['dim'],'status':'violated','reason':'forbidden\x20term(s)\x20present:\x20'+v['join'](',\x20')};}case'owner':{if(d!=='in'&&d!=='not_in')return null;const x=asStringArray(a['value']);if(!x)return null;if(b['owner']===undefined)return{'dim':a['dim'],'status':'unknown','reason':'owner\x20absent\x20from\x20candidate\x20payload'};const y=x['includes'](b['owner']),z=d==='in'?y:!y;return z?{'dim':a['dim'],'status':'satisfied','reason':'owner\x20'+d+'\x20list'}:{'dim':a['dim'],'status':'violated','reason':'owner\x20fails\x20'+d+'\x20list'};}default:return null;}}function applyGates(a,b,d,e){const f=a['unknown_policy']??'neutral_score',g=new Set(),h=[],i=[],j=[];for(const m of a['gates']??[]){d(m,e)===null&&g['add']('gate\x20dim\x20\x27'+m['dim']+'\x27\x20(op\x20\x27'+(m['op']??'eq')+'\x27)\x20not\x20enforceable\x20client-side');}const k=new Set(),l=new Set();for(const n of a['excludes']??[]){if(n['dim']==='blacklist'){for(const p of n['objects']??[])k['add'](p);for(const q of n['owners']??[])l['add'](q);}else g['add']('exclude\x20dim\x20\x27'+n['dim']+'\x27\x20not\x20enforceable\x20client-side\x20(no\x20local\x20facet)');}for(const r of b){if(k['has'](r['object'])){i['push']({'object':r['object'],'reason':'excluded:\x20blacklisted\x20object'});continue;}const s=r['owner'];if(s!==undefined&&l['has'](s)){i['push']({'object':r['object'],'reason':'excluded:\x20blacklisted\x20owner'});continue;}let t=!![];for(const u of a['gates']??[]){const v=d(u,r);if(v===null){g['add']('gate\x20dim\x20\x27'+u['dim']+'\x27\x20(op\x20\x27'+(u['op']??'eq')+'\x27)\x20not\x20enforceable\x20client-side');continue;}if(v['status']==='violated'){i['push']({'object':r['object'],'reason':'gate\x20'+v['dim']+':\x20'+v['reason']}),t=![];break;}if(v['status']==='unknown'){if(f==='drop'){i['push']({'object':r['object'],'reason':'gate\x20'+v['dim']+'\x20unknown\x20('+v['reason']+')\x20and\x20unknown_policy=drop'}),t=![];break;}j['push']({'object':r['object'],'dim':v['dim'],'reason':v['reason']});}}if(t)h['push'](r);}return{'passed':h,'dropped':i,'unknown_notes':j,'ignored':[...g]['sort']()};}export function applyPolicyGates(a,b,c={}){return applyGates(a,b,(d,e)=>evalGate(d,e,c),{'object':'','description':'','location':''});}function evalDemandGate(a,b){const c=a['op']??'eq';switch(a['dim']){case'text':{if(c!=='must_contain'&&c!=='must_not_contain')return null;const e=asStringArray(a['value']);if(!e||e['length']===0x0)return null;const f=(b['description']??'')['toLowerCase']();if(f['trim']()['length']===0x0)return{'dim':a['dim'],'status':'unknown','reason':'demand\x20carries\x20no\x20description\x20text'};if(c==='must_contain'){const h=e['filter'](i=>!f['includes'](i['toLowerCase']()));return h['length']===0x0?{'dim':a['dim'],'status':'satisfied','reason':'all\x20'+e['length']+'\x20term(s)\x20present'}:{'dim':a['dim'],'status':'violated','reason':'missing\x20term(s):\x20'+h['join'](',\x20')};}const g=e['filter'](i=>f['includes'](i['toLowerCase']()));return g['length']===0x0?{'dim':a['dim'],'status':'satisfied','reason':'no\x20forbidden\x20term\x20present'}:{'dim':a['dim'],'status':'violated','reason':'forbidden\x20term(s)\x20present:\x20'+g['join'](',\x20')};}case'location':{if(c!=='must_contain'&&c!=='must_not_contain')return null;const i=asStringArray(a['value']);if(!i||i['length']===0x0)return null;const j=(b['location']??'')['toLowerCase']();if(j['trim']()['length']===0x0)return{'dim':a['dim'],'status':'unknown','reason':'demand\x20carries\x20no\x20location'};if(c==='must_contain'){const l=i['filter'](m=>!j['includes'](m['toLowerCase']()));return l['length']===0x0?{'dim':a['dim'],'status':'satisfied','reason':'all\x20'+i['length']+'\x20term(s)\x20present\x20in\x20location'}:{'dim':a['dim'],'status':'violated','reason':'location\x20missing\x20term(s):\x20'+l['join'](',\x20')};}const k=i['filter'](m=>j['includes'](m['toLowerCase']()));return k['length']===0x0?{'dim':a['dim'],'status':'satisfied','reason':'no\x20forbidden\x20term\x20in\x20location'}:{'dim':a['dim'],'status':'violated','reason':'forbidden\x20term(s)\x20in\x20location:\x20'+k['join'](',\x20')};}case'reward':{if(c!=='gte'&&c!=='lte')return null;const m=bigIntValue(a['value']);if(m===undefined)return null;if(b['rewards']===undefined)return{'dim':a['dim'],'status':'unknown','reason':'reward\x20list\x20absent\x20from\x20demand\x20payload'};const n=BigInt(b['rewards']['length']),o=c==='gte'?n>=m:n<=m;return o?{'dim':a['dim'],'status':'satisfied','reason':'reward_count\x20'+n+'\x20'+c+'\x20'+m}:{'dim':a['dim'],'status':'violated','reason':'reward_count\x20'+n+'\x20fails\x20'+c+'\x20'+m};}case'messenger':{const p=a['value']===undefined?!![]:Boolean(a['value']);if(b['um']===undefined)return{'dim':a['dim'],'status':'unknown','reason':'messenger\x20binding\x20absent\x20from\x20demand\x20payload'};const q=b['um']!==null;return q===p?{'dim':a['dim'],'status':'satisfied','reason':'messenger\x20bound='+q}:{'dim':a['dim'],'status':'violated','reason':'messenger\x20bound='+q+',\x20gate\x20requires\x20'+p};}case'guard':{const r=a['value']===undefined?!![]:Boolean(a['value']);if(b['guards']===undefined)return{'dim':a['dim'],'status':'unknown','reason':'guard\x20list\x20absent\x20from\x20demand\x20payload'};const s=b['guards']['length']>0x0;return s===r?{'dim':a['dim'],'status':'satisfied','reason':'guarded='+s}:{'dim':a['dim'],'status':'violated','reason':'guarded='+s+',\x20gate\x20requires\x20'+r};}case'presenters':{if(c!=='gte'&&c!=='lte')return null;const t=bigIntValue(a['value']);if(t===undefined)return null;if(b['presenters_count']===undefined)return{'dim':a['dim'],'status':'unknown','reason':'presenters_count\x20absent\x20from\x20demand\x20payload'};const u=BigInt(b['presenters_count']),v=c==='gte'?u>=t:u<=t;return v?{'dim':a['dim'],'status':'satisfied','reason':'presenters_count\x20'+u+'\x20'+c+'\x20'+t}:{'dim':a['dim'],'status':'violated','reason':'presenters_count\x20'+u+'\x20fails\x20'+c+'\x20'+t};}case'owner':{if(c!=='in'&&c!=='not_in')return null;const w=asStringArray(a['value']);if(!w)return null;if(b['owner']===undefined)return{'dim':a['dim'],'status':'unknown','reason':'owner\x20absent\x20from\x20demand\x20payload'};const x=w['includes'](b['owner']),y=c==='in'?x:!x;return y?{'dim':a['dim'],'status':'satisfied','reason':'owner\x20'+c+'\x20list'}:{'dim':a['dim'],'status':'violated','reason':'owner\x20fails\x20'+c+'\x20list'};}default:return null;}}export function applyDemandPolicyGates(a,b){return applyGates(a,b,evalDemandGate,{'object':'','description':'','location':''});}export function policyToInjection(a){const b={},c=[],d=new Set(POLICY_WEIGHT_RULE_IDS);for(const [e,f]of Object['entries'](a['weights']??{})){if(d['has'](e))b[e]=f;else c['push']('weight\x20on\x20unregistered\x20rule\x20\x27'+e+'\x27\x20ignored\x20(client\x20engine\x20has:\x20'+POLICY_WEIGHT_RULE_IDS['join'](',\x20')+')');}return{'injection':{'overrides':{'rules':Object['fromEntries'](Object['entries'](b)['map'](([g,h])=>[g,{'weight':h}]))}},'applied':b,'ignored':c['sort']()};}export function applyPolicyRerank(a,b){const c=[],d=[...a]['sort']((k,l)=>l['result']['total']-k['result']['total']||k['service']['object']['localeCompare'](l['service']['object']));let e=d,f=![],g=0x0;const h=b['rerank']?.['diversity'];if(h){if(h['by']==='permission')c['push']('rerank.diversity\x20by\x20\x27permission\x27\x20not\x20enforceable\x20client-side\x20(no\x20permission\x20facet\x20on\x20candidates);\x20use\x20\x27owner\x27');else{const k=new Map(),l=[],n=[];for(const o of e){const p=o['service']['owner'];if(p===undefined){l['push'](o);continue;}const q=k['get'](p)??0x0;q<h['max_per_group']?(k['set'](p,q+0x1),l['push'](o)):n['push'](o);}e=[...l,...n],f=!![],g=n['length'];}}if(b['rerank']?.['explore']!==undefined)c['push']('rerank.explore\x20not\x20enforceable\x20in\x20this\x20build\x20(no\x20local\x20bandit\x20state)');if(b['rerank']?.['llm']!==undefined)c['push']('rerank.llm\x20not\x20enforceable\x20in\x20this\x20build\x20(deterministic\x20kernel\x20only)');if(b['rerank']?.['fairness']!==undefined)c['push']('rerank.fairness\x20not\x20enforceable\x20in\x20this\x20build\x20(no\x20exposure\x20accounting)');const i=b['output']?.['top_n'],j=i!==undefined?e['slice'](0x0,i):e;return{'matches':j,'order':'total\x20DESC,\x20object_id\x20ASC'+(f?',\x20diversity(owner)<='+h['max_per_group']:''),'diversity_applied':f,'deferred':g,'ignored':c['sort']()};}export function rerankDemandMatches(a,b){const c=applyPolicyRerank(a['map'](e=>({'service':{'object':e['demand']['object'],...e['demand']['owner']!==undefined?{'owner':e['demand']['owner']}:{}},'result':e['result']})),b),d=new Map(a['map'](e=>[e['demand']['object'],e]));return{...c,'matches':c['matches']['map'](e=>d['get'](e['service']['object']))};}function canonicalize(a){if(Array['isArray'](a))return a['map'](canonicalize);if(a&&typeof a==='object'){const b={};for(const c of Object['keys'](a)['sort']()){b[c]=canonicalize(a[c]);}return b;}return a;}export function policyHash(a){return createHash('sha256')['update'](JSON['stringify'](canonicalize(a)))['digest']('hex');}export function buildPolicyEffect(a,b,c,d,e=[],f='request'){const g=[...new Set([...b['ignored'],...c['ignored'],...d['ignored'],...e])]['sort']();if(a['recall']!==undefined)g['push']('section\x20\x27recall\x27\x20is\x20a\x20server-side\x20directive\x20—\x20not\x20sent\x20upstream\x20from\x20a\x20private\x20policy;\x20recall\x20stays\x20on\x20the\x20route\x20in\x20effect');if(a['verify']!==undefined)g['push']('section\x20\x27verify\x27\x20not\x20enforceable\x20client-side\x20in\x20this\x20build');return{'policy_id':a['policy_id'],'version':a['version'],'direction':a['direction']??'demand_to_supply','policy_hash':policyHash(a),'policy_source':f,'unknown_policy':a['unknown_policy']??'neutral_score','dropped':b['dropped'],'unknown_kept':b['unknown_notes'],'weights_applied':c['applied'],'rerank':d['order'],'deferred_by_diversity':d['deferred'],'ignored':g['sort'](),'privacy':'client_side_only\x20—\x20the\x20policy\x20and\x20its\x20hash\x20never\x20leave\x20this\x20device'};}
1
+ import{createHash}from'node:crypto';export const POLICY_WEIGHT_RULE_IDS=['region','industry','price','trust','capabilities','reward_commitment','tags','acceptance'];export const PRESET_MATCH_POLICIES={'default':{'policy_id':'default','version':0x1,'unknown_policy':'neutral_score'},'retail':{'policy_id':'retail','version':0x1,'unknown_policy':'neutral_score','gates':[{'dim':'live','op':'eq','value':!![]}],'weights':{'region':0xa,'industry':0xf,'price':0x19,'trust':0xf,'capabilities':0x1e,'tags':0x5}},'life_service':{'policy_id':'life_service','version':0x1,'unknown_policy':'neutral_score','gates':[{'dim':'live','op':'eq','value':!![]}],'weights':{'region':0x14,'industry':0xf,'price':0xa,'trust':0x19,'capabilities':0x19,'tags':0x5}},'trust_first':{'policy_id':'trust_first','version':0x1,'unknown_policy':'drop','gates':[{'dim':'live','op':'eq','value':!![]},{'dim':'arb','op':'gte','value':0x1}],'weights':{'trust':0x1e,'capabilities':0x19,'region':0xa,'industry':0xa,'price':0xa,'tags':0x5}},'cross_border':{'policy_id':'cross_border','version':0x1,'unknown_policy':'neutral_score','gates':[{'dim':'live','op':'eq','value':!![]},{'dim':'wip_verify','op':'eq','value':!![]}],'weights':{'capabilities':0x19,'trust':0x14,'industry':0x14,'tags':0xf,'price':0xf,'region':0x5}},'cheap_and_fast':{'policy_id':'cheap_and_fast','version':0x1,'unknown_policy':'drop','gates':[{'dim':'price','op':'lte','params':{'from_budget':!![],'hard':!![]}}],'weights':{'price':0x23,'trust':0xf,'capabilities':0xf,'region':0xa,'industry':0xa,'tags':0x5}},'enterprise':{'policy_id':'enterprise','version':0x1,'unknown_policy':'drop','gates':[{'dim':'live','op':'eq','value':!![]},{'dim':'machine','op':'eq','value':!![]},{'dim':'buy_guard','op':'eq','value':!![]}],'weights':{'capabilities':0x1e,'trust':0x19,'industry':0xf,'acceptance':0xa,'price':0xa,'region':0x5,'tags':0x5}},'supplier_hunting':{'policy_id':'supplier_hunting','version':0x1,'direction':'supply_to_demand','unknown_policy':'neutral_score'}};function normalizePresetId(a){return a['trim']()['toLowerCase']()['replace'](/-/g,'_');}export function resolveMatchPolicy(a,b){if(a===undefined)return undefined;let c;if(typeof a==='string'){const e=PRESET_MATCH_POLICIES[normalizePresetId(a)];if(!e)throw new Error('unknown\x20match_policy\x20preset\x20\x27'+a+'\x27\x20—\x20available:\x20'+Object['keys'](PRESET_MATCH_POLICIES)['join'](',\x20')+'\x20(or\x20pass\x20an\x20inline\x20policy\x20object)');c=e;}else{if(typeof a!=='object'||a===null||typeof a['policy_id']!=='string'||a['policy_id']['length']===0x0)throw new Error('inline\x20match_policy\x20must\x20be\x20an\x20object\x20with\x20a\x20non-empty\x20string\x20policy_id');c=a;}const d=c['direction']??'demand_to_supply';if(d!==b)throw new Error('match_policy\x20\x27'+c['policy_id']+'\x27\x20has\x20direction\x20\x27'+d+'\x27\x20and\x20cannot\x20drive\x20a\x20\x27'+b+'\x27\x20query');return c;}function bigIntValue(a){if(typeof a==='bigint')return a;if(typeof a==='number'&&Number['isInteger'](a))return BigInt(a);if(typeof a==='string'&&/^-?\d+$/['test'](a['trim']()))return BigInt(a['trim']());return undefined;}function asStringArray(a){if(Array['isArray'](a))return a['map'](String);if(typeof a==='string')return[a];return undefined;}function minSalePrice(a){if(!a['sales']||a['sales']['length']===0x0)return undefined;let b;for(const c of a['sales']){const d=bigIntValue(c['price']);if(d===undefined)continue;if(b===undefined||d<b)b=d;}return b;}function evalGate(a,b,c){const d=a['op']??'eq';switch(a['dim']){case'live':{const e=a['value']===undefined?!![]:Boolean(a['value']);if(b['bPublished']===undefined&&b['bPaused']===undefined)return{'dim':a['dim'],'status':'unknown','reason':'published/paused\x20flags\x20absent\x20from\x20candidate\x20payload'};const f=(b['bPublished']??![])&&!(b['bPaused']??![]);return f===e?{'dim':a['dim'],'status':'satisfied','reason':'live='+f}:{'dim':a['dim'],'status':'violated','reason':'live='+f+',\x20gate\x20requires\x20'+e};}case'price':{if(d!=='lte'&&d!=='gte')return null;let g=bigIntValue(a['value']);if(g===undefined&&a['params']?.['from_budget']===!![])g=c['budgetWei'];if(g===undefined)return{'dim':a['dim'],'status':'unknown','reason':'no\x20gate\x20value\x20and\x20no\x20request\x20budget\x20to\x20bind\x20from_budget'};const h=minSalePrice(b);if(h===undefined)return{'dim':a['dim'],'status':'unknown','reason':'candidate\x20exposes\x20no\x20sale\x20price'};const i=d==='lte'?h<=g:h>=g;return i?{'dim':a['dim'],'status':'satisfied','reason':'price_min\x20'+h+'\x20'+d+'\x20'+g}:{'dim':a['dim'],'status':'violated','reason':'price_min\x20'+h+'\x20fails\x20'+d+'\x20'+g};}case'arb':{if(d!=='gte')return null;const j=bigIntValue(a['value']);if(j===undefined)return null;if(!b['arbitrations'])return{'dim':a['dim'],'status':'unknown','reason':'arbitration\x20list\x20absent\x20from\x20candidate\x20payload'};const k=BigInt(b['arbitrations']['length'])>=j;return k?{'dim':a['dim'],'status':'satisfied','reason':'arb_count\x20'+b['arbitrations']['length']+'\x20>=\x20'+j}:{'dim':a['dim'],'status':'violated','reason':'arb_count\x20'+b['arbitrations']['length']+'\x20<\x20'+j};}case'compensation':{if(d!=='gte')return null;const l=bigIntValue(a['value']);if(l===undefined)return null;const m=bigIntValue(b['compensation_fund']);if(m===undefined)return{'dim':a['dim'],'status':'unknown','reason':'compensation_fund\x20absent\x20from\x20candidate\x20payload'};return m>=l?{'dim':a['dim'],'status':'satisfied','reason':'compensation_fund\x20'+m+'\x20>=\x20'+l}:{'dim':a['dim'],'status':'violated','reason':'compensation_fund\x20'+m+'\x20<\x20'+l};}case'machine':case'messenger':case'buy_guard':{const n=a['value']===undefined?!![]:Boolean(a['value']),o=a['dim']==='machine'?b['machine']:a['dim']==='messenger'?b['um']:b['buy_guard'];if(o===undefined)return{'dim':a['dim'],'status':'unknown','reason':a['dim']+'\x20binding\x20absent\x20from\x20candidate\x20payload'};const p=o!==null;return p===n?{'dim':a['dim'],'status':'satisfied','reason':a['dim']+'\x20bound='+p}:{'dim':a['dim'],'status':'violated','reason':a['dim']+'\x20bound='+p+',\x20gate\x20requires\x20'+n};}case'wip_verify':{const q=a['value']===undefined?!![]:Boolean(a['value']);if(!b['sales'])return{'dim':a['dim'],'status':'unknown','reason':'sales\x20absent\x20from\x20candidate\x20payload'};const r=b['sales']['some'](t=>typeof t['wip_hash']==='string'&&t['wip_hash']['length']>0x0);return r===q?{'dim':a['dim'],'status':'satisfied','reason':'has_wip_verification='+r}:{'dim':a['dim'],'status':'violated','reason':'has_wip_verification='+r+',\x20gate\x20requires\x20'+q};}case'text':{if(d!=='must_contain'&&d!=='must_not_contain')return null;const t=asStringArray(a['value']);if(!t||t['length']===0x0)return null;const u=[b['description']??'',...(b['sales']??[])['map'](w=>w['name']??'')]['join']('\x20')['toLowerCase']();if(u['trim']()['length']===0x0)return{'dim':a['dim'],'status':'unknown','reason':'candidate\x20carries\x20no\x20text\x20to\x20match'};if(d==='must_contain'){const w=t['filter'](x=>!u['includes'](x['toLowerCase']()));return w['length']===0x0?{'dim':a['dim'],'status':'satisfied','reason':'all\x20'+t['length']+'\x20term(s)\x20present'}:{'dim':a['dim'],'status':'violated','reason':'missing\x20term(s):\x20'+w['join'](',\x20')};}const v=t['filter'](x=>u['includes'](x['toLowerCase']()));return v['length']===0x0?{'dim':a['dim'],'status':'satisfied','reason':'no\x20forbidden\x20term\x20present'}:{'dim':a['dim'],'status':'violated','reason':'forbidden\x20term(s)\x20present:\x20'+v['join'](',\x20')};}case'owner':{if(d!=='in'&&d!=='not_in')return null;const x=asStringArray(a['value']);if(!x)return null;if(b['owner']===undefined)return{'dim':a['dim'],'status':'unknown','reason':'owner\x20absent\x20from\x20candidate\x20payload'};const y=x['includes'](b['owner']),z=d==='in'?y:!y;return z?{'dim':a['dim'],'status':'satisfied','reason':'owner\x20'+d+'\x20list'}:{'dim':a['dim'],'status':'violated','reason':'owner\x20fails\x20'+d+'\x20list'};}default:return null;}}function applyGates(a,b,d,e){const f=a['unknown_policy']??'neutral_score',g=new Set(),h=[],i=[],j=[];for(const m of a['gates']??[]){d(m,e)===null&&g['add']('gate\x20dim\x20\x27'+m['dim']+'\x27\x20(op\x20\x27'+(m['op']??'eq')+'\x27)\x20not\x20enforceable\x20client-side');}const k=new Set(),l=new Set();for(const n of a['excludes']??[]){if(n['dim']==='blacklist'){for(const p of n['objects']??[])k['add'](p);for(const q of n['owners']??[])l['add'](q);}else g['add']('exclude\x20dim\x20\x27'+n['dim']+'\x27\x20not\x20enforceable\x20client-side\x20(no\x20local\x20facet)');}for(const r of b){if(k['has'](r['object'])){i['push']({'object':r['object'],'reason':'excluded:\x20blacklisted\x20object'});continue;}const s=r['owner'];if(s!==undefined&&l['has'](s)){i['push']({'object':r['object'],'reason':'excluded:\x20blacklisted\x20owner'});continue;}let t=!![];for(const u of a['gates']??[]){const v=d(u,r);if(v===null){g['add']('gate\x20dim\x20\x27'+u['dim']+'\x27\x20(op\x20\x27'+(u['op']??'eq')+'\x27)\x20not\x20enforceable\x20client-side');continue;}if(v['status']==='violated'){i['push']({'object':r['object'],'reason':'gate\x20'+v['dim']+':\x20'+v['reason']}),t=![];break;}if(v['status']==='unknown'){if(f==='drop'){i['push']({'object':r['object'],'reason':'gate\x20'+v['dim']+'\x20unknown\x20('+v['reason']+')\x20and\x20unknown_policy=drop'}),t=![];break;}j['push']({'object':r['object'],'dim':v['dim'],'reason':v['reason']});}}if(t)h['push'](r);}return{'passed':h,'dropped':i,'unknown_notes':j,'ignored':[...g]['sort']()};}export function applyPolicyGates(a,b,c={}){return applyGates(a,b,(d,e)=>evalGate(d,e,c),{'object':'','description':'','location':''});}function evalDemandGate(a,b){const c=a['op']??'eq';switch(a['dim']){case'text':{if(c!=='must_contain'&&c!=='must_not_contain')return null;const e=asStringArray(a['value']);if(!e||e['length']===0x0)return null;const f=(b['description']??'')['toLowerCase']();if(f['trim']()['length']===0x0)return{'dim':a['dim'],'status':'unknown','reason':'demand\x20carries\x20no\x20description\x20text'};if(c==='must_contain'){const h=e['filter'](i=>!f['includes'](i['toLowerCase']()));return h['length']===0x0?{'dim':a['dim'],'status':'satisfied','reason':'all\x20'+e['length']+'\x20term(s)\x20present'}:{'dim':a['dim'],'status':'violated','reason':'missing\x20term(s):\x20'+h['join'](',\x20')};}const g=e['filter'](i=>f['includes'](i['toLowerCase']()));return g['length']===0x0?{'dim':a['dim'],'status':'satisfied','reason':'no\x20forbidden\x20term\x20present'}:{'dim':a['dim'],'status':'violated','reason':'forbidden\x20term(s)\x20present:\x20'+g['join'](',\x20')};}case'location':{if(c!=='must_contain'&&c!=='must_not_contain')return null;const i=asStringArray(a['value']);if(!i||i['length']===0x0)return null;const j=(b['location']??'')['toLowerCase']();if(j['trim']()['length']===0x0)return{'dim':a['dim'],'status':'unknown','reason':'demand\x20carries\x20no\x20location'};if(c==='must_contain'){const l=i['filter'](m=>!j['includes'](m['toLowerCase']()));return l['length']===0x0?{'dim':a['dim'],'status':'satisfied','reason':'all\x20'+i['length']+'\x20term(s)\x20present\x20in\x20location'}:{'dim':a['dim'],'status':'violated','reason':'location\x20missing\x20term(s):\x20'+l['join'](',\x20')};}const k=i['filter'](m=>j['includes'](m['toLowerCase']()));return k['length']===0x0?{'dim':a['dim'],'status':'satisfied','reason':'no\x20forbidden\x20term\x20in\x20location'}:{'dim':a['dim'],'status':'violated','reason':'forbidden\x20term(s)\x20in\x20location:\x20'+k['join'](',\x20')};}case'reward':{if(c!=='gte'&&c!=='lte')return null;const m=bigIntValue(a['value']);if(m===undefined)return null;if(b['rewards']===undefined)return{'dim':a['dim'],'status':'unknown','reason':'reward\x20list\x20absent\x20from\x20demand\x20payload'};const n=BigInt(b['rewards']['length']),o=c==='gte'?n>=m:n<=m;return o?{'dim':a['dim'],'status':'satisfied','reason':'reward_count\x20'+n+'\x20'+c+'\x20'+m}:{'dim':a['dim'],'status':'violated','reason':'reward_count\x20'+n+'\x20fails\x20'+c+'\x20'+m};}case'messenger':{const p=a['value']===undefined?!![]:Boolean(a['value']);if(b['um']===undefined)return{'dim':a['dim'],'status':'unknown','reason':'messenger\x20binding\x20absent\x20from\x20demand\x20payload'};const q=b['um']!==null;return q===p?{'dim':a['dim'],'status':'satisfied','reason':'messenger\x20bound='+q}:{'dim':a['dim'],'status':'violated','reason':'messenger\x20bound='+q+',\x20gate\x20requires\x20'+p};}case'guard':{const r=a['value']===undefined?!![]:Boolean(a['value']);if(b['guards']===undefined)return{'dim':a['dim'],'status':'unknown','reason':'guard\x20list\x20absent\x20from\x20demand\x20payload'};const s=b['guards']['length']>0x0;return s===r?{'dim':a['dim'],'status':'satisfied','reason':'guarded='+s}:{'dim':a['dim'],'status':'violated','reason':'guarded='+s+',\x20gate\x20requires\x20'+r};}case'presenters':{if(c!=='gte'&&c!=='lte')return null;const t=bigIntValue(a['value']);if(t===undefined)return null;if(b['presenters_count']===undefined)return{'dim':a['dim'],'status':'unknown','reason':'presenters_count\x20absent\x20from\x20demand\x20payload'};const u=BigInt(b['presenters_count']),v=c==='gte'?u>=t:u<=t;return v?{'dim':a['dim'],'status':'satisfied','reason':'presenters_count\x20'+u+'\x20'+c+'\x20'+t}:{'dim':a['dim'],'status':'violated','reason':'presenters_count\x20'+u+'\x20fails\x20'+c+'\x20'+t};}case'owner':{if(c!=='in'&&c!=='not_in')return null;const w=asStringArray(a['value']);if(!w)return null;if(b['owner']===undefined)return{'dim':a['dim'],'status':'unknown','reason':'owner\x20absent\x20from\x20demand\x20payload'};const x=w['includes'](b['owner']),y=c==='in'?x:!x;return y?{'dim':a['dim'],'status':'satisfied','reason':'owner\x20'+c+'\x20list'}:{'dim':a['dim'],'status':'violated','reason':'owner\x20fails\x20'+c+'\x20list'};}default:return null;}}export function applyDemandPolicyGates(a,b){return applyGates(a,b,evalDemandGate,{'object':'','description':'','location':''});}export function policyToInjection(a){const b={},c=[],d=new Set(POLICY_WEIGHT_RULE_IDS);for(const [e,f]of Object['entries'](a['weights']??{})){if(d['has'](e))b[e]=f;else c['push']('weight\x20on\x20unregistered\x20rule\x20\x27'+e+'\x27\x20ignored\x20(client\x20engine\x20has:\x20'+POLICY_WEIGHT_RULE_IDS['join'](',\x20')+')');}return{'injection':{'overrides':{'rules':Object['fromEntries'](Object['entries'](b)['map'](([g,h])=>[g,{'weight':h}]))}},'applied':b,'ignored':c['sort']()};}export function applyPolicyRerank(a,b){const c=[],d=[...a]['sort']((k,l)=>l['result']['total']-k['result']['total']||k['service']['object']['localeCompare'](l['service']['object']));let e=d,f=![],g=0x0;const h=b['rerank']?.['diversity'];if(h){if(h['by']==='permission')c['push']('rerank.diversity\x20by\x20\x27permission\x27\x20not\x20enforceable\x20client-side\x20(no\x20permission\x20facet\x20on\x20candidates);\x20use\x20\x27owner\x27');else{const k=new Map(),l=[],n=[];for(const o of e){const p=o['service']['owner'];if(p===undefined){l['push'](o);continue;}const q=k['get'](p)??0x0;q<h['max_per_group']?(k['set'](p,q+0x1),l['push'](o)):n['push'](o);}e=[...l,...n],f=!![],g=n['length'];}}if(b['rerank']?.['explore']!==undefined)c['push']('rerank.explore\x20not\x20enforceable\x20in\x20this\x20build\x20(no\x20local\x20bandit\x20state)');if(b['rerank']?.['llm']!==undefined)c['push']('rerank.llm\x20not\x20enforceable\x20in\x20this\x20build\x20(deterministic\x20kernel\x20only)');if(b['rerank']?.['fairness']!==undefined)c['push']('rerank.fairness\x20not\x20enforceable\x20in\x20this\x20build\x20(no\x20exposure\x20accounting)');const i=b['output']?.['top_n'],j=i!==undefined?e['slice'](0x0,i):e;return{'matches':j,'order':'total\x20DESC,\x20object_id\x20ASC'+(f?',\x20diversity(owner)<='+h['max_per_group']:''),'diversity_applied':f,'deferred':g,'ignored':c['sort']()};}export function rerankDemandMatches(a,b){const c=applyPolicyRerank(a['map'](e=>({'service':{'object':e['demand']['object'],...e['demand']['owner']!==undefined?{'owner':e['demand']['owner']}:{}},'result':e['result']})),b),d=new Map(a['map'](e=>[e['demand']['object'],e]));return{...c,'matches':c['matches']['map'](e=>d['get'](e['service']['object']))};}function canonicalize(a){if(Array['isArray'](a))return a['map'](canonicalize);if(a&&typeof a==='object'){const b={};for(const c of Object['keys'](a)['sort']()){b[c]=canonicalize(a[c]);}return b;}return a;}export function policyHash(a){return createHash('sha256')['update'](JSON['stringify'](canonicalize(a)))['digest']('hex');}export function buildPolicyEffect(a,b,c,d,e=[],f='request'){const g=[...new Set([...b['ignored'],...c['ignored'],...d['ignored'],...e])]['sort']();if(a['recall']!==undefined)g['push']('section\x20\x27recall\x27\x20is\x20a\x20server-side\x20directive\x20—\x20not\x20sent\x20upstream\x20from\x20a\x20private\x20policy;\x20recall\x20stays\x20on\x20the\x20route\x20in\x20effect');if(a['verify']!==undefined)g['push']('section\x20\x27verify\x27\x20not\x20enforceable\x20client-side\x20in\x20this\x20build');return{'policy_id':a['policy_id'],'version':a['version'],'direction':a['direction']??'demand_to_supply','policy_hash':policyHash(a),'policy_source':f,'unknown_policy':a['unknown_policy']??'neutral_score','dropped':b['dropped'],'unknown_kept':b['unknown_notes'],'weights_applied':c['applied'],'rerank':d['order'],'deferred_by_diversity':d['deferred'],'ignored':g['sort'](),'privacy':'client_side_only\x20—\x20the\x20policy\x20and\x20its\x20hash\x20never\x20leave\x20this\x20device'};}
@@ -6,5 +6,6 @@ export declare function defaultWeights(): Record<string, number>;
6
6
  export declare function dimensionLabel(ruleId: string): string;
7
7
  export declare function severityDeduction(severity: string): number;
8
8
  export declare function levelFromScore(score: number): string;
9
+ export declare function concernLabel(score: number): string;
9
10
  export declare function gradeWord(side: "trust" | "risk" | "match", score: number): string;
10
11
  export declare function matchGradeFromScore(score: number): string;
@@ -1 +1 @@
1
- import{evaluationSection}from'../config/judgment.js';import{normalizeSeverity}from'../config/severity.js';export function defaultWeight(a){return evaluationSection()['weights'][a]??0x0;}export function defaultWeights(){return{...evaluationSection()['weights']};}export function dimensionLabel(a){return evaluationSection()['dimensions'][a]?.['label']??a;}export function severityDeduction(a){return evaluationSection()['severity_deduction'][normalizeSeverity(a)]??0x0;}export function levelFromScore(a){const b=evaluationSection()['level_bands'];for(const c of b){if(a>=c['min'])return c['level'];}return b[b['length']-0x1]?.['level']??'high';}export function gradeWord(a,b){const c=evaluationSection()['grade_words'][a];if(!Array['isArray'](c))return'unknown';for(const d of c){if(b>=d['min'])return d['word'];}return c[c['length']-0x1]?.['word']??'unknown';}export function matchGradeFromScore(a){return gradeWord('match',a);}
1
+ import{evaluationSection}from'../config/judgment.js';import{normalizeSeverity}from'../config/severity.js';export function defaultWeight(a){return evaluationSection()['weights'][a]??0x0;}export function defaultWeights(){return{...evaluationSection()['weights']};}export function dimensionLabel(a){return evaluationSection()['dimensions'][a]?.['label']??a;}export function severityDeduction(a){return evaluationSection()['severity_deduction'][normalizeSeverity(a)]??0x0;}export function levelFromScore(a){const b=evaluationSection()['level_bands'];for(const c of b){if(a>=c['min'])return c['level'];}return b[b['length']-0x1]?.['level']??'high';}export function concernLabel(a){if(a>=0x64)return'clean\x20(no\x20known\x20risk)';return levelFromScore(a);}export function gradeWord(a,b){const c=evaluationSection()['grade_words'][a];if(!Array['isArray'](c))return'unknown';for(const d of c){if(b>=d['min'])return d['word'];}return c[c['length']-0x1]?.['word']??'unknown';}export function matchGradeFromScore(a){return gradeWord('match',a);}
@@ -1 +1 @@
1
- export const STRUCTURED_LINE_KEYS=['quote','price','terms','timing','contact'];const MAX_LINES_SCANNED=0x20,MAX_VALUE_LEN=0xc8,LINE_RE=/^([^::=]{1,32})[::=](.+)$/;export function parseStructuredLines(a){if(!a||typeof a!=='string')return[];const b=[],c=new Set();for(const d of a['split'](/\r?\n/)['slice'](0x0,MAX_LINES_SCANNED)){const e=d['trim']();if(e===''||e['includes']('://'))continue;const f=LINE_RE['exec'](e);if(!f)continue;const g=f[0x1]['trim'](),h=f[0x2]['trim']()['slice'](0x0,MAX_VALUE_LEN);if(g===''||h===''||/^\d+[.)]$/['test'](g))continue;const i=g['toLowerCase']();if(c['has'](i))continue;c['add'](i),b['push']({'key':i,'raw_key':g,'value':h});if(b['length']>=MAX_LINES_SCANNED)break;}return b;}export function firstStructuredValue(a,b){const c=new Set(b['map'](d=>d['toLowerCase']()));for(const d of a){if(c['has'](d['key']))return d['value'];}return null;}
1
+ export const STRUCTURED_LINE_KEYS=['quote','price','terms','timing','contact'];const MAX_LINES_SCANNED=0x20,MAX_VALUE_LEN=0xc8,LINE_RE=/^([^:\uff1a=]{1,32})[:\uff1a=](.+)$/;export function parseStructuredLines(a){if(!a||typeof a!=='string')return[];const b=[],c=new Set();for(const d of a['split'](/\r?\n/)['slice'](0x0,MAX_LINES_SCANNED)){const e=d['trim']();if(e===''||e['includes']('://'))continue;const f=LINE_RE['exec'](e);if(!f)continue;const g=f[0x1]['trim'](),h=f[0x2]['trim']()['slice'](0x0,MAX_VALUE_LEN);if(g===''||h===''||/^\d+[.)]$/['test'](g))continue;const i=g['toLowerCase']();if(c['has'](i))continue;c['add'](i),b['push']({'key':i,'raw_key':g,'value':h});if(b['length']>=MAX_LINES_SCANNED)break;}return b;}export function firstStructuredValue(a,b){const c=new Set(b['map'](d=>d['toLowerCase']()));for(const d of a){if(c['has'](d['key']))return d['value'];}return null;}
@@ -95,6 +95,7 @@ export interface EvaluationResult {
95
95
  evaluation_id: string;
96
96
  total: number;
97
97
  level: EvaluationLevel;
98
+ level_label?: string;
98
99
  breakdown: EvaluationBreakdown[];
99
100
  red_flags: string[];
100
101
  red_flag_basis?: RedFlagBasis[];