@wowok/agent-mcp 2.7.8 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/config/runtime.d.ts +1 -1
- package/dist/config/runtime.js +1 -1
- package/dist/examples/rental-ziroom-machine-create.json +1 -2
- package/dist/examples/rental-ziroom-permission-create.json +1 -2
- package/dist/examples/rental-ziroom-service-create.json +1 -2
- package/dist/experience/experience-reuse.js +1 -1
- package/dist/experience/index.d.ts +2 -1
- package/dist/experience/index.js +1 -1
- package/dist/experience/persistence-config.d.ts +6 -0
- package/dist/experience/persistence-config.js +1 -0
- package/dist/experience/persistence.d.ts +21 -0
- package/dist/experience/persistence.js +1 -0
- package/dist/experience/realtime-feedback.js +1 -1
- package/dist/experience/user-profile.js +1 -1
- package/dist/extensions/business-modules.d.ts +1 -1
- package/dist/extensions/capability-manifest.d.ts +2 -83
- package/dist/extensions/capability-manifest.js +1 -1
- package/dist/extensions/constraint-registry.d.ts +6 -4
- package/dist/extensions/constraint-registry.js +1 -1
- package/dist/extensions/index.d.ts +4 -5
- package/dist/extensions/index.js +1 -1
- package/dist/extensions/industry-pack.js +1 -1
- package/dist/extensions/metric-registry.d.ts +6 -4
- package/dist/extensions/metric-registry.js +1 -1
- package/dist/extensions/mode-evaluator.d.ts +2 -3
- package/dist/extensions/mode-evaluator.js +1 -1
- package/dist/extensions/registry.d.ts +3 -25
- package/dist/extensions/registry.js +1 -1
- package/dist/extensions/types.d.ts +1 -69
- package/dist/goal/GoalClassifier.d.ts +17 -0
- package/dist/goal/GoalClassifier.js +1 -0
- package/dist/goal/GoalEngine.d.ts +155 -0
- package/dist/goal/GoalEngine.js +1 -0
- package/dist/goal/GoalStore.d.ts +27 -0
- package/dist/goal/GoalStore.js +1 -0
- package/dist/goal/plan-approval.d.ts +5 -0
- package/dist/goal/plan-approval.js +1 -0
- package/dist/goal/types.d.ts +80 -0
- package/dist/goal/types.js +1 -0
- package/dist/harness/index.d.ts +2 -7
- package/dist/harness/index.js +1 -1
- package/dist/harness/plan.d.ts +1 -1
- package/dist/harness/types.d.ts +0 -35
- package/dist/index.js +1 -1
- package/dist/knowledge/account-marks.d.ts +36 -0
- package/dist/knowledge/account-marks.js +1 -0
- package/dist/knowledge/audit-rules.d.ts +3 -1
- package/dist/knowledge/audit-rules.js +1 -1
- package/dist/knowledge/examples-scanner-cli.js +1 -1
- package/dist/knowledge/examples-scanner.js +1 -1
- package/dist/knowledge/fund-layer.d.ts +13 -9
- package/dist/knowledge/fund-layer.js +1 -1
- package/dist/knowledge/goal-completion.d.ts +19 -0
- package/dist/knowledge/goal-completion.js +1 -0
- package/dist/knowledge/guard-bindings.d.ts +21 -0
- package/dist/knowledge/guard-bindings.js +1 -0
- package/dist/knowledge/guard-translation.js +1 -1
- package/dist/knowledge/index.d.ts +6 -3
- package/dist/knowledge/index.js +1 -1
- package/dist/knowledge/industry-registry.js +1 -1
- package/dist/knowledge/mcp-schema-audit-cli.js +1 -1
- package/dist/knowledge/mcp-schema-audit.js +1 -1
- package/dist/knowledge/operation-dictionary.js +1 -1
- package/dist/knowledge/passport-confirm.js +1 -1
- package/dist/knowledge/passport-puzzle.js +1 -1
- package/dist/knowledge/passport-translation.js +1 -1
- package/dist/knowledge/proof-risk.js +1 -1
- package/dist/knowledge/reward-risk.d.ts +1 -1
- package/dist/knowledge/reward-risk.js +1 -1
- package/dist/knowledge/safety-rules.d.ts +2 -1
- package/dist/knowledge/safety-rules.js +1 -1
- package/dist/knowledge/scenario-topology.d.ts +43 -0
- package/dist/knowledge/scenario-topology.js +1 -0
- package/dist/knowledge/service-translation.js +1 -1
- package/dist/knowledge/supply-chain.js +1 -1
- package/dist/knowledge/template-registry.js +1 -1
- package/dist/knowledge/tools-reference.js +1 -1
- package/dist/knowledge/workflow-guidance.d.ts +36 -0
- package/dist/knowledge/workflow-guidance.js +1 -1
- package/dist/knowledge/workspace-lists.d.ts +57 -0
- package/dist/knowledge/workspace-lists.js +1 -0
- package/dist/loop-engineering/context-collect.d.ts +1 -1
- package/dist/monitor/EventRouter.d.ts +10 -0
- package/dist/monitor/EventRouter.js +1 -0
- package/dist/monitor/EventStore.d.ts +32 -12
- package/dist/monitor/EventStore.js +1 -1
- package/dist/monitor/MonitorLoop.d.ts +81 -0
- package/dist/monitor/MonitorLoop.js +1 -0
- package/dist/monitor/ProblemBridge.d.ts +32 -0
- package/dist/monitor/ProblemBridge.js +1 -0
- package/dist/monitor/ScopeResolver.d.ts +59 -0
- package/dist/monitor/ScopeResolver.js +1 -0
- package/dist/monitor/SubscriptionStore.d.ts +13 -0
- package/dist/monitor/SubscriptionStore.js +1 -0
- package/dist/monitor/SuggestionBridge.d.ts +38 -0
- package/dist/monitor/SuggestionBridge.js +1 -0
- package/dist/monitor/normalize.d.ts +8 -0
- package/dist/monitor/normalize.js +1 -0
- package/dist/monitor/types.d.ts +89 -0
- package/dist/monitor/types.js +1 -0
- package/dist/participation/arbitrator-interest.d.ts +20 -0
- package/dist/participation/arbitrator-interest.js +1 -0
- package/dist/participation/demander-interest.d.ts +23 -0
- package/dist/participation/demander-interest.js +1 -0
- package/dist/persona/address-format.d.ts +1 -1
- package/dist/persona/address-format.js +1 -1
- package/dist/persona/distill-goal.d.ts +20 -0
- package/dist/persona/distill-goal.js +1 -0
- package/dist/persona/index.d.ts +2 -0
- package/dist/persona/index.js +1 -1
- package/dist/persona/model.js +1 -1
- package/dist/playbooks/service-build/business-puzzle.js +1 -0
- package/dist/{project → playbooks/service-build}/context-assembly.d.ts +9 -4
- package/dist/playbooks/service-build/context-assembly.js +1 -0
- package/dist/{project → playbooks/service-build}/game-theory.d.ts +1 -1
- package/dist/playbooks/service-build/index.d.ts +14 -0
- package/dist/playbooks/service-build/index.js +1 -0
- package/dist/{project → playbooks/service-build}/intent-analyzer.d.ts +1 -1
- package/dist/playbooks/service-build/intent-analyzer.js +1 -0
- package/dist/playbooks/service-build/machine-nodes.js +1 -0
- package/dist/{project → playbooks/service-build}/machine-panorama.d.ts +5 -3
- package/dist/playbooks/service-build/machine-panorama.js +1 -0
- package/dist/{project → playbooks/service-build}/merchant-guide.d.ts +21 -1
- package/dist/playbooks/service-build/merchant-guide.js +1 -0
- package/dist/{project → playbooks/service-build}/mode-actions.d.ts +32 -8
- package/dist/playbooks/service-build/mode-actions.js +1 -0
- package/dist/playbooks/service-build/namespace.d.ts +2 -0
- package/dist/playbooks/service-build/namespace.js +1 -0
- package/dist/{project → playbooks/service-build}/object-panorama.d.ts +2 -3
- package/dist/playbooks/service-build/object-panorama.js +1 -0
- package/dist/{project → playbooks/service-build}/participation-radar.d.ts +4 -5
- package/dist/playbooks/service-build/participation-radar.js +1 -0
- package/dist/{project → playbooks/service-build}/pipeline-actions.d.ts +9 -9
- package/dist/playbooks/service-build/pipeline-actions.js +1 -0
- package/dist/playbooks/service-build/process.d.ts +6 -0
- package/dist/playbooks/service-build/process.js +1 -0
- package/dist/playbooks/service-build/relationship-profile.d.ts +2 -0
- package/dist/playbooks/service-build/relationship-profile.js +1 -0
- package/dist/playbooks/service-build/risk-aggregator.js +1 -0
- package/dist/{project → playbooks/service-build}/semantic-graph.d.ts +7 -3
- package/dist/playbooks/service-build/semantic-graph.js +1 -0
- package/dist/{project → playbooks/service-build}/service-panorama.d.ts +3 -19
- package/dist/playbooks/service-build/service-panorama.js +1 -0
- package/dist/relationship/derivation.d.ts +88 -0
- package/dist/relationship/derivation.js +1 -0
- package/dist/relationship/incentive.d.ts +38 -0
- package/dist/relationship/incentive.js +1 -0
- package/dist/relationship/index.d.ts +4 -0
- package/dist/relationship/index.js +1 -0
- package/dist/relationship/registry.d.ts +13 -0
- package/dist/relationship/registry.js +1 -0
- package/dist/relationship/types.d.ts +45 -0
- package/dist/relationship/types.js +1 -0
- package/dist/review/arb.d.ts +6 -0
- package/dist/review/arb.js +1 -0
- package/dist/review/demand.d.ts +3 -0
- package/dist/review/demand.js +1 -0
- package/dist/review/index.d.ts +3 -0
- package/dist/review/index.js +1 -0
- package/dist/review/machine.d.ts +3 -0
- package/dist/review/machine.js +1 -0
- package/dist/review/order.d.ts +9 -0
- package/dist/review/order.js +1 -0
- package/dist/review/progress.d.ts +3 -0
- package/dist/review/progress.js +1 -0
- package/dist/review/repository.d.ts +3 -0
- package/dist/review/repository.js +1 -0
- package/dist/review/service.d.ts +5 -0
- package/dist/review/service.js +1 -0
- package/dist/review/types.d.ts +156 -0
- package/dist/review/types.js +1 -0
- package/dist/rules.d.ts +2 -2
- package/dist/rules.js +1 -1
- package/dist/safety/confirm-gate.js +1 -1
- package/dist/safety/index.d.ts +1 -1
- package/dist/safety/index.js +1 -1
- package/dist/safety/preview.d.ts +1 -0
- package/dist/safety/preview.js +1 -1
- package/dist/schema/call/allocation.d.ts +1 -1
- package/dist/schema/call/arbitration.d.ts +1 -1
- package/dist/schema/call/base.d.ts +1 -1
- package/dist/schema/call/base.js +1 -1
- package/dist/schema/call/bridge.d.ts +29 -7
- package/dist/schema/call/bridge.js +1 -1
- package/dist/schema/call/contact.d.ts +1 -1
- package/dist/schema/call/contact.js +1 -1
- package/dist/schema/call/demand.d.ts +1 -1
- package/dist/schema/call/demand.js +1 -1
- package/dist/schema/call/guard.d.ts +3 -3
- package/dist/schema/call/handler.d.ts +0 -3
- package/dist/schema/call/handler.js +1 -1
- package/dist/schema/call/machine.d.ts +2 -2
- package/dist/schema/call/order.d.ts +1 -1
- package/dist/schema/call/payment.d.ts +1 -1
- package/dist/schema/call/permission.d.ts +1 -1
- package/dist/schema/call/personal.d.ts +1 -1
- package/dist/schema/call/progress.d.ts +1 -1
- package/dist/schema/call/proof.d.ts +2 -2
- package/dist/schema/call/repository.d.ts +1 -1
- package/dist/schema/call/repository.js +1 -1
- package/dist/schema/call/reward.d.ts +1 -1
- package/dist/schema/call/semantic.js +1 -1
- package/dist/schema/call/service.d.ts +1 -1
- package/dist/schema/call/service.js +1 -1
- package/dist/schema/call/treasury.d.ts +1 -1
- package/dist/schema/common/index.js +1 -1
- package/dist/schema/goal/index.d.ts +343 -0
- package/dist/schema/goal/index.js +1 -0
- package/dist/schema/goal/planning.d.ts +465 -0
- package/dist/schema/goal/planning.js +1 -0
- package/dist/schema/index.d.ts +1 -2
- package/dist/schema/index.js +1 -1
- package/dist/schema/industry-pack/index.d.ts +323 -1
- package/dist/schema/industry-pack/index.js +1 -1
- package/dist/schema/industry-pack/modes.d.ts +326 -0
- package/dist/schema/industry-pack/modes.js +1 -0
- package/dist/schema/intent-radar/index.d.ts +19 -19
- package/dist/schema/local/index.d.ts +11 -0
- package/dist/schema/local/index.js +1 -1
- package/dist/schema/operations.d.ts +258 -19
- package/dist/schema/operations.js +1 -1
- package/dist/schema/permission/index.d.ts +1 -0
- package/dist/schema/permission/index.js +1 -1
- package/dist/schema/persona/index.d.ts +40 -0
- package/dist/schema/persona/index.js +1 -1
- package/dist/schema/query/bi.d.ts +912 -0
- package/dist/schema/query/bi.js +1 -0
- package/dist/schema/query/index.d.ts +663 -2
- package/dist/schema/query/index.js +1 -1
- package/dist/schema/schema-version.js +1 -1
- package/dist/schema/utils/skills-recommendation.d.ts +0 -1
- package/dist/schema/utils/skills-recommendation.js +1 -1
- package/dist/schema-query-impl/index.js +1 -1
- package/dist/schemas/account_operation.output.json +32 -3
- package/dist/schemas/account_operation.schema.json +8 -4
- package/dist/schemas/bridge_operation.output.json +26 -3
- package/dist/schemas/bridge_operation.schema.json +85 -13
- package/dist/schemas/config_operation.output.json +1 -1
- package/dist/schemas/config_operation.schema.json +1 -1
- package/dist/schemas/goal_operation.schema.json +1092 -0
- package/dist/schemas/guard2file.schema.json +3 -3
- package/dist/schemas/index.json +12 -13
- package/dist/schemas/industry_pack_operation.output.json +1073 -0
- package/dist/schemas/industry_pack_operation.schema.json +236 -2
- package/dist/schemas/local_info_operation.output.json +2 -2
- package/dist/schemas/local_mark_operation.output.json +2 -2
- package/dist/schemas/machineNode2file.schema.json +3 -3
- package/dist/schemas/messenger_operation.output.json +2 -2
- package/dist/schemas/monitor_events.output.json +78 -3
- package/dist/schemas/monitor_events.schema.json +24 -1
- package/dist/schemas/monitor_subscription.output.json +1462 -0
- package/dist/schemas/monitor_subscription.schema.json +327 -0
- package/dist/schemas/onchain_events.output.json +5 -5
- package/dist/schemas/onchain_operations.output.json +2 -2
- package/dist/schemas/onchain_operations.schema.json +100 -100
- package/dist/schemas/onchain_operations_allocation.schema.json +7 -7
- package/dist/schemas/onchain_operations_arbitration.schema.json +6 -6
- package/dist/schemas/onchain_operations_contact.schema.json +6 -6
- package/dist/schemas/onchain_operations_demand.schema.json +6 -6
- package/dist/schemas/onchain_operations_gen_passport.schema.json +3 -3
- package/dist/schemas/onchain_operations_gen_proof.schema.json +3 -3
- package/dist/schemas/onchain_operations_guard.schema.json +3 -3
- package/dist/schemas/onchain_operations_machine.schema.json +5 -5
- package/dist/schemas/onchain_operations_order.schema.json +5 -5
- package/dist/schemas/onchain_operations_payment.schema.json +4 -4
- package/dist/schemas/onchain_operations_permission.schema.json +5 -5
- package/dist/schemas/onchain_operations_personal.schema.json +3 -3
- package/dist/schemas/onchain_operations_progress.schema.json +5 -5
- package/dist/schemas/onchain_operations_proof.schema.json +3 -3
- package/dist/schemas/onchain_operations_repository.schema.json +7 -7
- package/dist/schemas/onchain_operations_reward.schema.json +9 -9
- package/dist/schemas/onchain_operations_service.schema.json +11 -11
- package/dist/schemas/onchain_operations_treasury.schema.json +9 -9
- package/dist/schemas/onchain_table_data.output.json +399 -2
- package/dist/schemas/onchain_table_data.schema.json +22 -22
- package/dist/schemas/permission_operation.schema.json +6 -2
- package/dist/schemas/persona_operation.output.json +145 -0
- package/dist/schemas/persona_operation.schema.json +28 -2
- package/dist/schemas/query_toolkit.output.json +1514 -22
- package/dist/schemas/query_toolkit.schema.json +465 -11
- package/dist/schemas/workflow_operation.schema.json +4 -4
- package/dist/task/ProcessStore.d.ts +98 -0
- package/dist/task/ProcessStore.js +1 -0
- package/dist/task/playbook.d.ts +11 -0
- package/dist/task/playbook.js +1 -0
- package/dist/task/stage-gate.d.ts +22 -0
- package/dist/task/stage-gate.js +1 -0
- package/dist/{project → task}/substep-trace.d.ts +6 -45
- package/dist/task/types.d.ts +144 -0
- package/dist/task/types.js +1 -0
- package/dist/tools/handlers/config.js +1 -1
- package/dist/tools/handlers/evaluation.js +1 -1
- package/dist/tools/handlers/goal.d.ts +4 -0
- package/dist/tools/handlers/goal.js +1 -0
- package/dist/tools/handlers/industry-pack.js +1 -1
- package/dist/tools/handlers/local.d.ts +4 -3
- package/dist/tools/handlers/local.js +1 -1
- package/dist/tools/handlers/monitor.d.ts +24 -0
- package/dist/tools/handlers/monitor.js +1 -1
- package/dist/tools/handlers/network.d.ts +1 -0
- package/dist/tools/handlers/network.js +1 -0
- package/dist/tools/handlers/onchain.js +1 -1
- package/dist/tools/handlers/permission.js +1 -1
- package/dist/tools/handlers/persona.js +1 -1
- package/dist/tools/handlers/query.js +1 -1
- package/dist/tools/handlers/watch.js +1 -1
- package/dist/tools/handlers/workflow.js +1 -1
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.js +1 -1
- package/dist/tools/rules-hook.d.ts +1 -0
- package/dist/tools/rules-hook.js +1 -1
- package/dist/tools/shared.js +1 -1
- package/dist/tools/wrap.js +1 -1
- package/package.json +5 -4
- package/dist/harness/checkpoint.d.ts +0 -8
- package/dist/harness/checkpoint.js +0 -1
- package/dist/knowledge/deployment-scanner.d.ts +0 -66
- package/dist/knowledge/deployment-scanner.js +0 -1
- package/dist/mode-market/index.d.ts +0 -3
- package/dist/mode-market/index.js +0 -1
- package/dist/mode-market/registry.d.ts +0 -53
- package/dist/mode-market/registry.js +0 -1
- package/dist/mode-market/review.d.ts +0 -27
- package/dist/mode-market/review.js +0 -1
- package/dist/mode-market/submission.d.ts +0 -25
- package/dist/mode-market/submission.js +0 -1
- package/dist/project/business-puzzle.js +0 -1
- package/dist/project/context-assembly.js +0 -1
- package/dist/project/deployment-bridge.d.ts +0 -5
- package/dist/project/deployment-bridge.js +0 -1
- package/dist/project/deployment-doc.d.ts +0 -190
- package/dist/project/deployment-doc.js +0 -1
- package/dist/project/edit-planner.d.ts +0 -123
- package/dist/project/edit-planner.js +0 -1
- package/dist/project/evaluation-fix.spec.d.ts +0 -1
- package/dist/project/evaluation-fix.spec.js +0 -1
- package/dist/project/evaluation.d.ts +0 -127
- package/dist/project/evaluation.js +0 -1
- package/dist/project/graph-builder.d.ts +0 -51
- package/dist/project/graph-builder.js +0 -1
- package/dist/project/graph.d.ts +0 -70
- package/dist/project/graph.js +0 -1
- package/dist/project/handlers.d.ts +0 -524
- package/dist/project/handlers.js +0 -1
- package/dist/project/index.d.ts +0 -91
- package/dist/project/index.js +0 -1
- package/dist/project/intent-analyzer.js +0 -1
- package/dist/project/machine-nodes.js +0 -1
- package/dist/project/machine-panorama.js +0 -1
- package/dist/project/merchant-guide.js +0 -1
- package/dist/project/mode-actions.js +0 -1
- package/dist/project/namespace.d.ts +0 -72
- package/dist/project/namespace.js +0 -1
- package/dist/project/object-panorama.js +0 -1
- package/dist/project/participation-radar.js +0 -1
- package/dist/project/pipeline-actions.js +0 -1
- package/dist/project/project-store.d.ts +0 -110
- package/dist/project/project-store.js +0 -1
- package/dist/project/query.d.ts +0 -43
- package/dist/project/query.js +0 -1
- package/dist/project/risk-aggregator.js +0 -1
- package/dist/project/semantic-assembler.d.ts +0 -93
- package/dist/project/semantic-assembler.js +0 -1
- package/dist/project/semantic-graph.js +0 -1
- package/dist/project/service-panorama.js +0 -1
- package/dist/project/stage-gate.d.ts +0 -52
- package/dist/project/stage-gate.js +0 -1
- package/dist/project/task-tracker.d.ts +0 -30
- package/dist/project/task-tracker.js +0 -1
- package/dist/schema/project/index.d.ts +0 -2021
- package/dist/schema/project/index.js +0 -1
- package/dist/schema/task-status.d.ts +0 -62
- package/dist/schema/task-status.js +0 -1
- package/dist/schemas/project_operation.output.json +0 -7877
- package/dist/schemas/project_operation.schema.json +0 -1139
- package/dist/schemas/query_task_status.output.json +0 -211
- package/dist/schemas/query_task_status.schema.json +0 -18
- package/dist/tools/handlers/project.d.ts +0 -2
- package/dist/tools/handlers/project.js +0 -1
- package/dist/tools/handlers/task-status.d.ts +0 -2
- package/dist/tools/handlers/task-status.js +0 -1
- /package/dist/{project → playbooks/service-build}/business-puzzle.d.ts +0 -0
- /package/dist/{project → playbooks/service-build}/game-theory.js +0 -0
- /package/dist/{project → playbooks/service-build}/machine-nodes.d.ts +0 -0
- /package/dist/{project → playbooks/service-build}/object-type.d.ts +0 -0
- /package/dist/{project → playbooks/service-build}/object-type.js +0 -0
- /package/dist/{project → playbooks/service-build}/reverse-mapping.d.ts +0 -0
- /package/dist/{project → playbooks/service-build}/reverse-mapping.js +0 -0
- /package/dist/{project → playbooks/service-build}/risk-aggregator.d.ts +0 -0
- /package/dist/{project → playbooks/service-build}/workflow-design-assessment.d.ts +0 -0
- /package/dist/{project → playbooks/service-build}/workflow-design-assessment.js +0 -0
- /package/dist/{project → task}/substep-trace.js +0 -0
package/README.md
CHANGED
|
@@ -63,13 +63,13 @@ wowok-skills init --target all # All 10 supported clients
|
|
|
63
63
|
| `wowok-planner` | 🛠️ Shared | Planning — converts natural language intent into Object Dependency Graph (ODG) |
|
|
64
64
|
| `wowok-auditor` | 🛠️ Shared | Pre-publish audit — Guard completeness, Machine soundness, 32 audit checks |
|
|
65
65
|
|
|
66
|
-
**Deprecated** (sunk to MCP knowledge layer — no longer installed as skills; their content is served by `schema_query` / `
|
|
66
|
+
**Deprecated** (sunk to MCP knowledge layer — no longer installed as skills; their content is served by `schema_query` / `industry_pack_operation`):
|
|
67
67
|
|
|
68
68
|
| Skill | Replaced By |
|
|
69
69
|
|-------|-------------|
|
|
70
70
|
| `wowok-tools` | `schema_query action='get_tool_reference'` |
|
|
71
71
|
| `wowok-safety` | `schema_query action='get_safety_rules'` + runtime confirm-gate |
|
|
72
72
|
| `wowok-guard` | `schema_query action='get_guard_design_patterns'` |
|
|
73
|
-
| `wowok-scenario` | `
|
|
73
|
+
| `wowok-scenario` | `industry_pack_operation` (recommend_industry / list_modes) |
|
|
74
74
|
|
|
75
75
|
> **Tip:** `wowok-output` is always loaded. Add role-specific skills (`wowok-order`, `wowok-provider`, `wowok-arbitrator`) as needed. Guard design, safety rules, tool reference, and industry mode content are now served directly by the MCP server — no skill installation required.
|
package/dist/config/runtime.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type ServiceName = "confirm_gate" | "
|
|
1
|
+
export type ServiceName = "confirm_gate" | "harness" | "semantic_rich" | "experience_layer" | "customer_intelligence" | "order_monitor" | "industry_evolution";
|
|
2
2
|
export type HarnessTier = "off" | "lightweight" | "full";
|
|
3
3
|
interface ServiceMeta {
|
|
4
4
|
name: ServiceName;
|
package/dist/config/runtime.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{readFileSync,writeFileSync,existsSync,mkdirSync}from'fs';import{dirname,join}from'path';import{getWowMcpDir}from'@wowok/wowok';export const SERVICE_REGISTRY=[{'name':'confirm_gate','description':'Security\x20confirmation\x20gate\x20—\x20prompts\x20user\x20confirmation\x20before\x20amount,\x20default\x20account,\x20publish,\x20or\x20irreversible\x20operations','defaultEnabled':!![],'envVar':'WOWOK_CONFIRM_GATE','remindOnToggle':!![]},{'name':'
|
|
1
|
+
import{readFileSync,writeFileSync,existsSync,mkdirSync}from'fs';import{dirname,join}from'path';import{getWowMcpDir}from'@wowok/wowok';export const SERVICE_REGISTRY=[{'name':'confirm_gate','description':'Security\x20confirmation\x20gate\x20—\x20prompts\x20user\x20confirmation\x20before\x20amount,\x20default\x20account,\x20publish,\x20or\x20irreversible\x20operations','defaultEnabled':!![],'envVar':'WOWOK_CONFIRM_GATE','remindOnToggle':!![]},{'name':'harness','description':'L4\x20Harness\x20verify/recover\x20loop\x20—\x20automatically\x20validates\x20expected\x20results\x20before\x20and\x20after\x20operations.\x20GLM5:\x20default\x20ON\x20with\x20tiered\x20enforcement\x20(off/lightweight/full).','defaultEnabled':!![],'envVar':'WOWOK_HARNESS_ENABLED','remindOnToggle':!![]},{'name':'semantic_rich','description':'Semantic\x20layer\x20enrichment\x20—\x20attaches\x20extra\x20reminder\x20info\x20such\x20as\x20service_status\x20in\x20responses','defaultEnabled':!![],'envVar':'WOWOK_SEMANTIC_RICH','remindOnToggle':![]},{'name':'experience_layer','description':'Real-time\x20experience\x20layer\x20—\x20intent\x20distillation\x20+\x20user\x20profiling\x20+\x20experience\x20reuse,\x20gets\x20smarter\x20with\x20usage','defaultEnabled':!![],'envVar':'WOWOK_EXPERIENCE_LAYER','remindOnToggle':!![]},{'name':'customer_intelligence','description':'Buyer\x20intelligence\x20(Phase\x203\x20C-3)\x20—\x20attaches\x20risk\x20reminders,\x20preference\x20matching,\x20and\x20blocking\x20alerts\x20in\x20semantic.customer_advice\x20for\x20order/query\x20operations','defaultEnabled':!![],'envVar':'WOWOK_CUSTOMER_INTELLIGENCE','remindOnToggle':!![]},{'name':'order_monitor','description':'In-progress\x20order\x20monitoring\x20(Phase\x203\x20C-3.2)\x20—\x20detects\x20Progress\x20stalls\x20/\x20compensation\x20balance\x20changes\x20/\x20Messenger\x20timeouts;\x20disabled\x20by\x20default,\x20must\x20be\x20actively\x20enabled','defaultEnabled':![],'envVar':'WOWOK_ORDER_MONITOR','remindOnToggle':!![]},{'name':'industry_evolution','description':'Industry\x20specialization\x20evolution\x20(Phase\x204)\x20—\x20AI-Human-WOW\x20flywheel\x20loop:\x20captures\x20industry\x20signals\x20+\x20updates\x20knowledge\x20+\x20injects\x20evolution\x20context','defaultEnabled':!![],'envVar':'WOWOK_INDUSTRY_EVOLUTION','remindOnToggle':!![]}];const SERVICE_MAP=new Map(SERVICE_REGISTRY['map'](a=>[a['name'],a])),runtimeOverrides=new Map();let harnessTierOverride;function configFilePath(){if(process['env']['WOWOK_CONFIG_DIR'])return join(process['env']['WOWOK_CONFIG_DIR'],'runtime-config.json');return join(getWowMcpDir(),'runtime-config.json');}function isPersistEnabled(){const a=process['env']['WOWOK_RUNTIME_CONFIG_PERSIST'];return a==='1'||a==='true';}function loadPersisted(){if(!isPersistEnabled())return null;try{const a=configFilePath();if(!existsSync(a))return null;const b=readFileSync(a,'utf-8'),c=JSON['parse'](b);if(c&&typeof c==='object'&&c['services'])return c;}catch{}return null;}function savePersisted(){if(!isPersistEnabled())return;try{const a=configFilePath(),b=dirname(a);if(!existsSync(b))mkdirSync(b,{'recursive':!![]});const c={'version':0x2,'services':Object['fromEntries'](runtimeOverrides),'harness_tier':harnessTierOverride,'updatedAt':Date['now']()};writeFileSync(a,JSON['stringify'](c,null,0x2),'utf-8');}catch{}}{const persisted=loadPersisted();if(persisted){for(const [name,enabled]of Object['entries'](persisted['services'])){SERVICE_MAP['has'](name)&&runtimeOverrides['set'](name,enabled);}persisted['harness_tier']&&(harnessTierOverride=persisted['harness_tier']);}}export function getHarnessTier(){if(!isEnabled('harness'))return'off';if(harnessTierOverride)return harnessTierOverride;const a=process['env']['WOWOK_HARNESS_TIER'];if(a==='off'||a==='lightweight'||a==='full')return a;return'lightweight';}export function setHarnessTier(a){harnessTierOverride=a,savePersisted();}export function resetHarnessTier(){harnessTierOverride=undefined,savePersisted();}export function isEnabled(a){if(runtimeOverrides['has'](a))return runtimeOverrides['get'](a);const b=SERVICE_MAP['get'](a);if(b){const c=process['env'][b['envVar']];if(c!==undefined){if(c==='0'||c==='false')return![];if(c==='1'||c==='true')return!![];}return b['defaultEnabled'];}return![];}export function setEnabled(a,b){runtimeOverrides['set'](a,b),savePersisted();}export function toggle(a){const b=!isEnabled(a);return setEnabled(a,b),b;}export function reset(a){runtimeOverrides['delete'](a),savePersisted();}export function listServices(){return SERVICE_REGISTRY['map'](a=>{const b=runtimeOverrides['has'](a['name']),c=isEnabled(a['name']);return{'name':a['name'],'enabled':c,'defaultEnabled':a['defaultEnabled'],'description':a['description'],'overridden':b,'envVar':a['envVar'],'reminder':a['remindOnToggle']?buildReminder(a['name'],c):undefined};});}export function getServiceInfo(a){const b=SERVICE_MAP['get'](a);if(!b)return undefined;return{'name':b['name'],'enabled':isEnabled(b['name']),'defaultEnabled':b['defaultEnabled'],'description':b['description'],'overridden':runtimeOverrides['has'](b['name']),'envVar':b['envVar'],'reminder':b['remindOnToggle']?buildReminder(b['name'],isEnabled(b['name'])):undefined};}function buildReminder(a,b){switch(a){case'confirm_gate':return b?'ConfirmGate\x20is\x20ON:\x20prompts\x20confirmation\x20before\x20amount,\x20default\x20account,\x20publish,\x20or\x20irreversible\x20operations.\x20To\x20disable,\x20call\x20config_operation\x20toggle\x20confirm_gate.':'ConfirmGate\x20is\x20OFF:\x20operations\x20will\x20execute\x20directly\x20without\x20confirmation.\x20Note\x20the\x20risk\x20of\x20irreversible\x20operations.\x20To\x20re-enable,\x20call\x20config_operation\x20toggle\x20confirm_gate.';case'harness':return b?'Harness\x20is\x20ON\x20(tier:\x20'+getHarnessTier()+'):\x20automatically\x20validates\x20expected\x20results\x20around\x20operations.\x20lightweight=Plan+Verify;\x20full=Plan+Expect+Verify+Recover.\x20To\x20change\x20tier,\x20set\x20WOWOK_HARNESS_TIER\x20or\x20call\x20harness\x20API.\x20To\x20disable,\x20call\x20config_operation\x20toggle\x20harness.':'Harness\x20is\x20OFF.\x20GLM5\x20recommends\x20keeping\x20it\x20ON\x20(lightweight\x20tier)\x20for\x20safety.\x20To\x20enable,\x20call\x20config_operation\x20toggle\x20harness.';case'semantic_rich':return undefined;case'experience_layer':return b?'Experience\x20layer\x20is\x20ON:\x20provides\x20suggestions\x20in\x20semantic.experience\x20based\x20on\x20historical\x20operation\x20experience.\x20To\x20disable,\x20call\x20config_operation\x20toggle\x20experience_layer.':'Experience\x20layer\x20is\x20OFF:\x20no\x20experience\x20suggestions\x20will\x20be\x20attached.\x20To\x20enable,\x20call\x20config_operation\x20toggle\x20experience_layer.';case'customer_intelligence':return b?'Customer\x20intelligence\x20is\x20ON:\x20order/query\x20operations\x20will\x20attach\x20risk/preference/blocking\x20alerts\x20in\x20semantic.customer_advice.\x20To\x20disable,\x20call\x20config_operation\x20toggle\x20customer_intelligence.':'Customer\x20intelligence\x20is\x20OFF:\x20semantic.customer_advice\x20will\x20not\x20be\x20populated.\x20To\x20enable,\x20call\x20config_operation\x20toggle\x20customer_intelligence.';case'order_monitor':return b?'Order\x20monitor\x20is\x20ON:\x20detects\x20Progress\x20stalls,\x20compensation\x20balance\x20changes,\x20and\x20Messenger\x20timeouts.\x20To\x20disable,\x20call\x20config_operation\x20toggle\x20order_monitor.':'Order\x20monitor\x20is\x20OFF:\x20will\x20not\x20actively\x20detect\x20order\x20anomalies.\x20To\x20enable\x20(recommended\x20when\x20there\x20are\x20active\x20orders),\x20call\x20config_operation\x20toggle\x20order_monitor.';}}export const RUNTIME_CONFIG_VERSION=0x1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{extractSignals}from'./intent-distill.js';const MAX_HISTORY=0xc8,history=[];export function recordSignature(a){try{history['push'](a),history['length']>MAX_HISTORY
|
|
1
|
+
import{extractSignals}from'./intent-distill.js';import{appendSignature,clearSignatures,loadSignatures,rewriteSignatures}from'./persistence.js';const MAX_HISTORY=0xc8,history=[];let hydrated=![];function ensureHydrated(){if(hydrated)return;hydrated=!![];try{for(const a of loadSignatures(MAX_HISTORY)){if(a&&typeof a['intent']==='string')history['push'](a);}}catch{}}export function recordSignature(a){try{ensureHydrated(),history['push'](a),history['length']>MAX_HISTORY?(history['shift'](),rewriteSignatures(history)):appendSignature(a);}catch{}}export function findMatches(a,b,c,d=0x3){try{ensureHydrated();const e=extractSignals(b,c),f=Date['now'](),g=history['map'](h=>{const i=computeRelevance(h,a,e,f);return{'signature':h,'relevance':i};})['filter'](h=>h['relevance']>0.3)['sort']((h,i)=>i['relevance']-h['relevance'])['slice'](0x0,d);return g['map'](h=>formatMatch(h['signature'],h['relevance']));}catch{return[];}}function computeRelevance(a,b,c,d){let e=0x0;if(a['intent']===b)e+=0.5;else a['intent']['startsWith'](b['split']('_')[0x0])&&(e+=0.2);const f=Object['keys'](a['signals']);if(f['length']>0x0){const i=f['filter'](j=>{const l=JSON['stringify'](a['signals'][j]),m=JSON['stringify'](c[j]);return l===m;})['length'];e+=i/f['length']*0.3;}const g=(d-a['timestamp'])/(0x3e8*0x3c*0x3c*0x18),h=Math['exp'](-g/0x1e);return e*=h,Math['min'](0x1,e);}function formatMatch(a,b){const c=buildAdvice(a),d=buildAvoid(a);return{'signature':a,'relevance':b,'advice':c,'avoid':d};}function buildAdvice(a){if(a['outcome']==='success'){if(a['recovery_path']&&a['recovery_path']['length']>0x0)return'Last\x20'+a['intent']+'\x20succeeded\x20(after\x20'+a['recovery_path']['length']+'\x20recovery\x20steps),\x20you\x20can\x20follow\x20the\x20same\x20path.';return'Last\x20'+a['intent']+'\x20succeeded,\x20parameter\x20configuration\x20is\x20valid.';}if(a['outcome']==='failed'&&a['error_code'])return'Last\x20'+a['intent']+'\x20failed\x20('+a['error_code']+'),\x20please\x20check\x20the\x20relevant\x20parameters.';return'Last\x20'+a['intent']+'\x20partially\x20succeeded,\x20check\x20result\x20completeness.';}function buildAvoid(a){const b=[];return a['outcome']!=='success'&&a['error_code']&&b['push']('Avoid\x20triggering\x20'+a['error_code']+'\x20error'),a['recovery_path']&&a['recovery_path']['length']>0x0&&b['push']('Note:\x20last\x20time\x20required\x20'+a['recovery_path']['length']+'\x20recovery\x20steps\x20to\x20succeed'),b;}export function getHistory(a){ensureHydrated();if(a)return history['filter'](b=>b['intent']===a);return[...history];}export function clearHistory(){ensureHydrated(),history['length']=0x0,clearSignatures();}export function getHistoryStats(){ensureHydrated();const a={},b={};for(const c of history){a[c['outcome']]=(a[c['outcome']]??0x0)+0x1,b[c['intent']]=(b[c['intent']]??0x0)+0x1;}return{'total':history['length'],'by_outcome':a,'by_intent':b};}
|
|
@@ -2,5 +2,6 @@ import { distillIntent, extractSignals } from "./intent-distill.js";
|
|
|
2
2
|
import { getProfile, updateFromOperation, resetProfile, getProfileStats } from "./user-profile.js";
|
|
3
3
|
import { findMatches, recordSignature, getHistory, clearHistory, getHistoryStats } from "./experience-reuse.js";
|
|
4
4
|
import { getExperienceFeedback, recordOperationOutcome, EXPERIENCE_LAYER_VERSION } from "./realtime-feedback.js";
|
|
5
|
+
import { configureExperiencePersistence } from "./persistence.js";
|
|
5
6
|
import type { DistilledIntent, ExperienceMatch, ExperienceFeedback, UserProfile, UserIntentSignature } from "./types.js";
|
|
6
|
-
export { distillIntent, extractSignals, getProfile, updateFromOperation, resetProfile, getProfileStats, findMatches, recordSignature, getHistory, clearHistory, getHistoryStats, getExperienceFeedback, recordOperationOutcome, EXPERIENCE_LAYER_VERSION, type DistilledIntent, type ExperienceMatch, type ExperienceFeedback, type UserProfile, type UserIntentSignature, };
|
|
7
|
+
export { distillIntent, extractSignals, getProfile, updateFromOperation, resetProfile, getProfileStats, findMatches, recordSignature, getHistory, clearHistory, getHistoryStats, getExperienceFeedback, recordOperationOutcome, configureExperiencePersistence, EXPERIENCE_LAYER_VERSION, type DistilledIntent, type ExperienceMatch, type ExperienceFeedback, type UserProfile, type UserIntentSignature, };
|
package/dist/experience/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{distillIntent,extractSignals}from'./intent-distill.js';import{getProfile,updateFromOperation,resetProfile,getProfileStats}from'./user-profile.js';import{findMatches,recordSignature,getHistory,clearHistory,getHistoryStats}from'./experience-reuse.js';import{getExperienceFeedback,recordOperationOutcome,EXPERIENCE_LAYER_VERSION}from'./realtime-feedback.js';export{distillIntent,extractSignals,getProfile,updateFromOperation,resetProfile,getProfileStats,findMatches,recordSignature,getHistory,clearHistory,getHistoryStats,getExperienceFeedback,recordOperationOutcome,EXPERIENCE_LAYER_VERSION};
|
|
1
|
+
import{distillIntent,extractSignals}from'./intent-distill.js';import{getProfile,updateFromOperation,resetProfile,getProfileStats}from'./user-profile.js';import{findMatches,recordSignature,getHistory,clearHistory,getHistoryStats}from'./experience-reuse.js';import{getExperienceFeedback,recordOperationOutcome,EXPERIENCE_LAYER_VERSION}from'./realtime-feedback.js';import{configureExperiencePersistence}from'./persistence.js';export{distillIntent,extractSignals,getProfile,updateFromOperation,resetProfile,getProfileStats,findMatches,recordSignature,getHistory,clearHistory,getHistoryStats,getExperienceFeedback,recordOperationOutcome,configureExperiencePersistence,EXPERIENCE_LAYER_VERSION};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
let overrideDir,enabled=!![];export function configureExperiencePersistence(a={}){if(a['dir']!==undefined)overrideDir=a['dir'];if(a['enabled']!==undefined)enabled=a['enabled'];}export function persistenceOverrideDir(){return overrideDir;}export function persistenceEnabled(){return enabled;}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { BuyerSignals, UserIntentSignature, UserProfile } from "./types.js";
|
|
2
|
+
import { configureExperiencePersistence } from "./persistence-config.js";
|
|
3
|
+
export { configureExperiencePersistence };
|
|
4
|
+
export interface ProfileSnapshot {
|
|
5
|
+
profile: UserProfile;
|
|
6
|
+
buyer_signals: BuyerSignals;
|
|
7
|
+
counters: {
|
|
8
|
+
scenario_counts: [string, number][];
|
|
9
|
+
pitfall_counts: [string, number][];
|
|
10
|
+
object_refs: [string, number][];
|
|
11
|
+
success_count: number;
|
|
12
|
+
total_count: number;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export declare function experienceDir(): string;
|
|
16
|
+
export declare function loadSignatures(limit: number): UserIntentSignature[];
|
|
17
|
+
export declare function appendSignature(sig: UserIntentSignature): void;
|
|
18
|
+
export declare function clearSignatures(): void;
|
|
19
|
+
export declare function rewriteSignatures(sigs: UserIntentSignature[]): void;
|
|
20
|
+
export declare function loadProfileSnapshot(): ProfileSnapshot | undefined;
|
|
21
|
+
export declare function saveProfileSnapshot(snapshot: ProfileSnapshot): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{appendFileSync,existsSync,mkdirSync,readFileSync,renameSync,unlinkSync,writeFileSync}from'fs';import{join}from'path';import{getWowMcpDir}from'@wowok/wowok';import{configureExperiencePersistence,persistenceEnabled,persistenceOverrideDir}from'./persistence-config.js';export{configureExperiencePersistence};export function experienceDir(){return persistenceOverrideDir()??join(getWowMcpDir(),'experience');}function signaturesFile(){return join(experienceDir(),'signatures.jsonl');}function profileFile(){return join(experienceDir(),'profile.json');}function ensureDir(){mkdirSync(experienceDir(),{'recursive':!![]});}export function loadSignatures(a){if(!persistenceEnabled())return[];try{const b=signaturesFile();if(!existsSync(b))return[];const c=[];for(const d of readFileSync(b,'utf8')['split']('\x0a')){const e=d['trim']();if(!e)continue;try{c['push'](JSON['parse'](e));}catch{}}return c['slice'](-a);}catch{return[];}}export function appendSignature(a){if(!persistenceEnabled())return;try{ensureDir(),appendFileSync(signaturesFile(),JSON['stringify'](a)+'\x0a','utf8');}catch{}}export function clearSignatures(){if(!persistenceEnabled())return;try{const a=signaturesFile();if(existsSync(a))unlinkSync(a);}catch{}}export function rewriteSignatures(a){if(!persistenceEnabled())return;try{ensureDir();const b=signaturesFile(),c=b+'.tmp';writeFileSync(c,a['map'](d=>JSON['stringify'](d))['join']('\x0a')+(a['length']?'\x0a':''),'utf8'),renameSync(c,b);}catch{}}export function loadProfileSnapshot(){if(!persistenceEnabled())return undefined;try{const a=profileFile();if(!existsSync(a))return undefined;const b=JSON['parse'](readFileSync(a,'utf8'));if(!b||typeof b!=='object'||!b['profile']||!b['counters'])return undefined;return b;}catch{return undefined;}}export function saveProfileSnapshot(a){if(!persistenceEnabled())return;try{ensureDir();const b=profileFile(),c=b+'.tmp';writeFileSync(c,JSON['stringify'](a),'utf8'),renameSync(c,b);}catch{}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{distillIntent,extractSignals}from'./intent-distill.js';import{getProfile,updateFromOperation}from'./user-profile.js';import{findMatches,recordSignature}from'./experience-reuse.js';import{EXPERIENCE_LAYER_VERSION}from'./types.js';import{isEnabled as
|
|
1
|
+
import{distillIntent,extractSignals}from'./intent-distill.js';import{getProfile,updateFromOperation}from'./user-profile.js';import{findMatches,recordSignature}from'./experience-reuse.js';import{EXPERIENCE_LAYER_VERSION}from'./types.js';import{isEnabled as a39a}from'../config/index.js';import{recordIndustrySignal}from'../knowledge/flywheel-loop.js';export{EXPERIENCE_LAYER_VERSION};export function getExperienceFeedback(a,b,c){try{const d=distillIntent(a,b,c),e=findMatches(d['primary_intent'],a,b,0x3);if(e['length']===0x0)return undefined;const f=e[0x0],g=getProfile();return formatFeedback(f,e,d['scenario'],g);}catch{return undefined;}}export function recordOperationOutcome(a,b,c,d,e,f=[]){try{const g=distillIntent(a,b,c),h=extractSignals(a,b);recordSignature({'intent':g['primary_intent'],'scenario':g['scenario'],'signals':h,'timestamp':Date['now'](),'outcome':d,'error_code':e}),updateFromOperation(g['primary_intent'],g['scenario'],d,e,f);try{if(a39a('industry_evolution')){const i=typeof b?.['industry']==='string'&&b['industry']['trim']()?b['industry']['trim']():undefined;if(i){const j=d==='success'?{'success':!![]}:{'success':![],'error_code':e};recordIndustrySignal(i,{'type':a,'data':b},j);}}}catch{}}catch{}}function formatFeedback(a,b,c,d){const e=buildAdviceText(a,b,d),f=collectAvoidList(b,d),g=a['relevance'],h=c??a['signature']['scenario'],i={};if(e)i['advice']=e;if(f['length']>0x0)i['avoid']=f;if(g>0x0)i['relevance']=Math['round'](g*0x64)/0x64;if(h)i['matched_scenario']=h;return i;}function buildAdviceText(a,b,c){const d=[];if(a['signature']['outcome']==='success')d['push']('Historically,\x20'+a['signature']['intent']+'\x20operation\x20succeeded');else a['signature']['outcome']==='failed'&&d['push']('Historically,\x20'+a['signature']['intent']+'\x20operation\x20failed\x20('+(a['signature']['error_code']??'unknown\x20error')+'),\x20pay\x20special\x20attention\x20to\x20parameters');return c['expertise_tier']==='novice'&&b['length']>0x0&&d['push']('It\x20is\x20recommended\x20to\x20carefully\x20check\x20parameters\x20before\x20executing'),d['join'](';\x20')||a['advice'];}function collectAvoidList(b,c){const d=new Set();for(const e of b){for(const f of e['avoid']){d['add'](f);}}for(const g of c['frequent_pitfalls']){d['add']('You\x20often\x20make\x20mistakes\x20at\x20the\x20'+g+'\x20step,\x20please\x20be\x20especially\x20careful');}return Array['from'](d)['slice'](0x0,0x5);}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
let currentProfile={'expertise_tier':'novice','preferred_industries':[],'risk_appetite':'balanced','frequent_pitfalls':[],'reused_objects':[],'preferred_confirmation':'standard','total_operations':0x0,'success_rate':0x1,'last_updated':0x0},buyerSignals={'purchase_count':0x0,'avg_purchase_price_ratio':0x1,'discount_usage_count':0x0,'referral_usage_count':0x0,'dispute_count':0x0},scenarioCounts=new Map(),pitfallCounts=new Map(),objectRefs=new Map(),successCount=0x0,totalCount=0x0;export function getProfile(){return{...currentProfile,'buyer_signals':{...buyerSignals}};}export function recordPurchaseOutcome(a){try{buyerSignals['purchase_count']++;if(a['used_discount'])buyerSignals['discount_usage_count']++;if(a['used_referral'])buyerSignals['referral_usage_count']++;if(a['has_dispute'])buyerSignals['dispute_count']++;if(a['avg_market_price']&&a['avg_market_price']>0x0n){const b=Number(a['price']*0x64n/a['avg_market_price'])/0x64,c=buyerSignals['avg_purchase_price_ratio'],d=buyerSignals['purchase_count'];buyerSignals['avg_purchase_price_ratio']=(c*(d-0x1)+b)/d;}recomputeBuyerInferences();}catch{}}function recomputeBuyerInferences(){const a=buyerSignals['purchase_count'];if(a>=0x3){const b=buyerSignals['avg_purchase_price_ratio'];if(b<0.9)buyerSignals['inferred_price_sensitivity']='high';else b>1.1?buyerSignals['inferred_price_sensitivity']='low':buyerSignals['inferred_price_sensitivity']='medium';}if(a>=0x2){const c=buyerSignals['discount_usage_count']+buyerSignals['referral_usage_count'],d=c/a;buyerSignals['inferred_bargain_hunting']=Math['min'](0x1,d);}}export function getBuyerSignals(){return{...buyerSignals};}export function updateFromOperation(a,b,c,d,e){try{totalCount++;if(c==='success')successCount++;b&&scenarioCounts['set'](b,(scenarioCounts['get'](b)??0x0)+0x1);c!=='success'&&d&&pitfallCounts['set'](d,(pitfallCounts['get'](d)??0x0)+0x1);for(const f of e){objectRefs['set'](f,(objectRefs['get'](f)??0x0)+0x1);}currentProfile=recomputeProfile();}catch{}}function recomputeProfile(){const a=totalCount,b=a>0x0?successCount/a:0x1;let c='novice';if(a>=0x32&&b>=0.9)c='expert';else{if(a>=0xa&&b>=0.7)c='advanced';}const d=Array['from'](scenarioCounts['entries']())['sort']((i,j)=>j[0x1]-i[0x1])['slice'](0x0,0x3)['map'](([i])=>i);let e='balanced';if(a>0x14&&b<0.6)e='aggressive';else{if(a>0x14&&b>0.95)e='conservative';}const f=Array['from'](pitfallCounts['entries']())['filter'](([,i])=>i>=0x2)['sort']((i,j)=>j[0x1]-i[0x1])['slice'](0x0,0x3)['map'](([i])=>i),g=Array['from'](objectRefs['entries']())['filter'](([,i])=>i>=0x2)['sort']((i,j)=>j[0x1]-i[0x1])['slice'](0x0,0x5)['map'](([i])=>i);let h='standard';if(c==='expert')h='minimal';else{if(c==='novice')h='verbose';}return{'expertise_tier':c,'preferred_industries':d,'risk_appetite':e,'frequent_pitfalls':f,'reused_objects':g,'preferred_confirmation':h,'total_operations':a,'success_rate':b,'last_updated':Date['now']()};}export function resetProfile(){currentProfile={'expertise_tier':'novice','preferred_industries':[],'risk_appetite':'balanced','frequent_pitfalls':[],'reused_objects':[],'preferred_confirmation':'verbose','total_operations':0x0,'success_rate':0x1,'last_updated':0x0},scenarioCounts=new Map(),pitfallCounts=new Map(),objectRefs=new Map(),successCount=0x0,totalCount=0x0,buyerSignals={'purchase_count':0x0,'avg_purchase_price_ratio':0x1,'discount_usage_count':0x0,'referral_usage_count':0x0,'dispute_count':0x0};}export function getProfileStats(){return{'total_operations':totalCount,'success_rate':totalCount>0x0?successCount/totalCount:0x1,'top_scenarios':Array['from'](scenarioCounts['entries']())['sort']((c,d)=>d[0x1]-c[0x1])['slice'](0x0,0x5)['map'](([a,b])=>({'scenario':a,'count':b})),'top_pitfalls':Array['from'](pitfallCounts['entries']())['sort']((c,d)=>d[0x1]-c[0x1])['slice'](0x0,0x5)['map'](([a,b])=>({'error_code':a,'count':b}))};}
|
|
1
|
+
import{loadProfileSnapshot,saveProfileSnapshot}from'./persistence.js';let currentProfile={'expertise_tier':'novice','preferred_industries':[],'risk_appetite':'balanced','frequent_pitfalls':[],'reused_objects':[],'preferred_confirmation':'standard','total_operations':0x0,'success_rate':0x1,'last_updated':0x0},buyerSignals={'purchase_count':0x0,'avg_purchase_price_ratio':0x1,'discount_usage_count':0x0,'referral_usage_count':0x0,'dispute_count':0x0},scenarioCounts=new Map(),pitfallCounts=new Map(),objectRefs=new Map(),successCount=0x0,totalCount=0x0,hydrated=![];function ensureHydrated(){if(hydrated)return;hydrated=!![];try{const a=loadProfileSnapshot();if(!a)return;currentProfile=a['profile'],buyerSignals=a['buyer_signals'],scenarioCounts=new Map(a['counters']['scenario_counts']),pitfallCounts=new Map(a['counters']['pitfall_counts']),objectRefs=new Map(a['counters']['object_refs']),successCount=a['counters']['success_count'],totalCount=a['counters']['total_count'];}catch{}}function persist(){try{const a={'profile':currentProfile,'buyer_signals':buyerSignals,'counters':{'scenario_counts':[...scenarioCounts['entries']()],'pitfall_counts':[...pitfallCounts['entries']()],'object_refs':[...objectRefs['entries']()],'success_count':successCount,'total_count':totalCount}};saveProfileSnapshot(a);}catch{}}export function getProfile(){return ensureHydrated(),{...currentProfile,'buyer_signals':{...buyerSignals}};}export function recordPurchaseOutcome(a){try{ensureHydrated(),buyerSignals['purchase_count']++;if(a['used_discount'])buyerSignals['discount_usage_count']++;if(a['used_referral'])buyerSignals['referral_usage_count']++;if(a['has_dispute'])buyerSignals['dispute_count']++;if(a['avg_market_price']&&a['avg_market_price']>0x0n){const b=Number(a['price']*0x64n/a['avg_market_price'])/0x64,c=buyerSignals['avg_purchase_price_ratio'],d=buyerSignals['purchase_count'];buyerSignals['avg_purchase_price_ratio']=(c*(d-0x1)+b)/d;}recomputeBuyerInferences(),persist();}catch{}}function recomputeBuyerInferences(){const a=buyerSignals['purchase_count'];if(a>=0x3){const b=buyerSignals['avg_purchase_price_ratio'];if(b<0.9)buyerSignals['inferred_price_sensitivity']='high';else b>1.1?buyerSignals['inferred_price_sensitivity']='low':buyerSignals['inferred_price_sensitivity']='medium';}if(a>=0x2){const c=buyerSignals['discount_usage_count']+buyerSignals['referral_usage_count'],d=c/a;buyerSignals['inferred_bargain_hunting']=Math['min'](0x1,d);}}export function getBuyerSignals(){return ensureHydrated(),{...buyerSignals};}export function updateFromOperation(a,b,c,d,e){try{ensureHydrated(),totalCount++;if(c==='success')successCount++;b&&scenarioCounts['set'](b,(scenarioCounts['get'](b)??0x0)+0x1);c!=='success'&&d&&pitfallCounts['set'](d,(pitfallCounts['get'](d)??0x0)+0x1);for(const f of e){objectRefs['set'](f,(objectRefs['get'](f)??0x0)+0x1);}currentProfile=recomputeProfile(),persist();}catch{}}function recomputeProfile(){const a=totalCount,b=a>0x0?successCount/a:0x1;let c='novice';if(a>=0x32&&b>=0.9)c='expert';else{if(a>=0xa&&b>=0.7)c='advanced';}const d=Array['from'](scenarioCounts['entries']())['sort']((i,j)=>j[0x1]-i[0x1])['slice'](0x0,0x3)['map'](([i])=>i);let e='balanced';if(a>0x14&&b<0.6)e='aggressive';else{if(a>0x14&&b>0.95)e='conservative';}const f=Array['from'](pitfallCounts['entries']())['filter'](([,i])=>i>=0x2)['sort']((i,j)=>j[0x1]-i[0x1])['slice'](0x0,0x3)['map'](([i])=>i),g=Array['from'](objectRefs['entries']())['filter'](([,i])=>i>=0x2)['sort']((i,j)=>j[0x1]-i[0x1])['slice'](0x0,0x5)['map'](([i])=>i);let h='standard';if(c==='expert')h='minimal';else{if(c==='novice')h='verbose';}return{'expertise_tier':c,'preferred_industries':d,'risk_appetite':e,'frequent_pitfalls':f,'reused_objects':g,'preferred_confirmation':h,'total_operations':a,'success_rate':b,'last_updated':Date['now']()};}export function resetProfile(){ensureHydrated(),currentProfile={'expertise_tier':'novice','preferred_industries':[],'risk_appetite':'balanced','frequent_pitfalls':[],'reused_objects':[],'preferred_confirmation':'verbose','total_operations':0x0,'success_rate':0x1,'last_updated':0x0},scenarioCounts=new Map(),pitfallCounts=new Map(),objectRefs=new Map(),successCount=0x0,totalCount=0x0,buyerSignals={'purchase_count':0x0,'avg_purchase_price_ratio':0x1,'discount_usage_count':0x0,'referral_usage_count':0x0,'dispute_count':0x0},persist();}export function getProfileStats(){return ensureHydrated(),{'total_operations':totalCount,'success_rate':totalCount>0x0?successCount/totalCount:0x1,'top_scenarios':Array['from'](scenarioCounts['entries']())['sort']((c,d)=>d[0x1]-c[0x1])['slice'](0x0,0x5)['map'](([a,b])=>({'scenario':a,'count':b})),'top_pitfalls':Array['from'](pitfallCounts['entries']())['sort']((c,d)=>d[0x1]-c[0x1])['slice'](0x0,0x5)['map'](([a,b])=>({'error_code':a,'count':b}))};}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ProjectObjectType } from "../
|
|
1
|
+
import type { ProjectObjectType } from "../playbooks/service-build/namespace.js";
|
|
2
2
|
export type BusinessModuleId = "milestone_escrow" | "independent_arbitration" | "wip_provenance" | "multi_tier_allocation" | "subscription_with_proof" | "accept_timeout_protection" | "refund_guarantee" | "reputation_on_chain" | "supplier_collaboration" | "damage_attestation";
|
|
3
3
|
export interface ModuleEvaluationImpact {
|
|
4
4
|
dimension: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ProjectObjectType } from "../
|
|
1
|
+
import type { ProjectObjectType } from "../playbooks/service-build/namespace.js";
|
|
2
2
|
export type CapabilityModule = "puzzle" | "risk" | "translation" | "templates" | "confirm" | "context" | "ledger" | "schema" | "handler";
|
|
3
3
|
export type CapabilityCategory = "data_model" | "validation" | "lifecycle" | "fund_flow" | "trust" | "workflow" | "communication" | "evidence" | "query";
|
|
4
4
|
export type IndustryAgnostic = "high" | "medium" | "low";
|
|
@@ -18,9 +18,6 @@ export interface CapabilityBenefitProfile {
|
|
|
18
18
|
export interface CapabilityConstraints {
|
|
19
19
|
must_pair_with?: string[];
|
|
20
20
|
conflicts_with?: string[];
|
|
21
|
-
max_single_transaction?: number;
|
|
22
|
-
requires_evidence?: boolean;
|
|
23
|
-
other_constraints?: string[];
|
|
24
21
|
}
|
|
25
22
|
export interface CapabilityCard {
|
|
26
23
|
capability_id: string;
|
|
@@ -30,96 +27,18 @@ export interface CapabilityCard {
|
|
|
30
27
|
module: CapabilityModule;
|
|
31
28
|
category: CapabilityCategory;
|
|
32
29
|
industry_agnostic: IndustryAgnostic;
|
|
33
|
-
config_template: Record<string, unknown>;
|
|
34
|
-
industry_overrides?: Record<string, Record<string, unknown>>;
|
|
35
|
-
observed_in_industries: Record<string, number>;
|
|
36
|
-
success_count: number;
|
|
37
|
-
failure_count: number;
|
|
38
|
-
known_failure_modes: string[];
|
|
39
|
-
depends_on_capabilities?: string[];
|
|
40
|
-
referenced_by_skills?: string[];
|
|
41
30
|
risk_profile?: CapabilityRiskProfile;
|
|
42
31
|
benefit_profile?: CapabilityBenefitProfile;
|
|
43
32
|
constraints?: CapabilityConstraints;
|
|
44
|
-
version: string;
|
|
45
|
-
superseded_by?: string;
|
|
46
|
-
}
|
|
47
|
-
export interface CapabilityGraphEdge {
|
|
48
|
-
from: string;
|
|
49
|
-
to: string;
|
|
50
|
-
edge_kind: "requires" | "optional" | "conflicts";
|
|
51
|
-
phase: "create" | "publish" | "runtime";
|
|
52
|
-
description?: string;
|
|
53
|
-
}
|
|
54
|
-
export interface CapabilityGraph {
|
|
55
|
-
nodes: Map<string, CapabilityCard>;
|
|
56
|
-
edges: CapabilityGraphEdge[];
|
|
57
|
-
}
|
|
58
|
-
export interface MigrationEvaluation {
|
|
59
|
-
feasibility_score: number;
|
|
60
|
-
covered_capabilities: string[];
|
|
61
|
-
missing_capabilities: string[];
|
|
62
|
-
conflicting_capabilities: Array<{
|
|
63
|
-
capability_id: string;
|
|
64
|
-
source_config: unknown;
|
|
65
|
-
target_config: unknown;
|
|
66
|
-
diff_summary: string;
|
|
67
|
-
}>;
|
|
68
|
-
recommendations: string[];
|
|
69
|
-
}
|
|
70
|
-
export interface CoverageReport {
|
|
71
|
-
industry: string;
|
|
72
|
-
declared_count: number;
|
|
73
|
-
expected_count: number;
|
|
74
|
-
coverage_percentage: number;
|
|
75
|
-
missing_capabilities: string[];
|
|
76
|
-
}
|
|
77
|
-
export interface ExperienceUpdate {
|
|
78
|
-
capability_id: string;
|
|
79
|
-
update_type: "config_template" | "industry_overrides" | "known_failure_modes" | "new_card";
|
|
80
|
-
payload: unknown;
|
|
81
|
-
source: string;
|
|
82
|
-
}
|
|
83
|
-
export interface VerificationReport {
|
|
84
|
-
project_id: string;
|
|
85
|
-
industry: string;
|
|
86
|
-
result: "success" | "failure" | "partial";
|
|
87
|
-
capabilities_used: string[];
|
|
88
|
-
failure_reasons?: string[];
|
|
89
33
|
}
|
|
90
34
|
export declare class CapabilityRegistry {
|
|
91
35
|
private static instance;
|
|
92
36
|
private cards;
|
|
93
|
-
private edges;
|
|
94
|
-
private initialized;
|
|
95
37
|
static Instance(): CapabilityRegistry;
|
|
96
38
|
private constructor();
|
|
97
39
|
registerCard(card: CapabilityCard): boolean;
|
|
98
40
|
getCard(capabilityId: string): CapabilityCard | undefined;
|
|
99
|
-
listCards(filter?: {
|
|
100
|
-
objectType?: ProjectObjectType;
|
|
101
|
-
module?: CapabilityModule;
|
|
102
|
-
industryAgnostic?: IndustryAgnostic;
|
|
103
|
-
industry?: string;
|
|
104
|
-
}): CapabilityCard[];
|
|
105
|
-
registerEdge(edge: CapabilityGraphEdge): void;
|
|
106
|
-
getGraph(): CapabilityGraph;
|
|
107
|
-
getDependencies(capabilityId: string): CapabilityCard[];
|
|
108
|
-
getDependents(capabilityId: string): CapabilityCard[];
|
|
109
|
-
getCapabilitiesByIndustry(industry: string): CapabilityCard[];
|
|
110
|
-
getCapabilitiesByObject(objectType: ProjectObjectType): CapabilityCard[];
|
|
111
|
-
evaluateMigration(source: string, target: string): MigrationEvaluation;
|
|
112
|
-
findPurityViolations(): CapabilityCard[];
|
|
113
|
-
recordUsage(capabilityId: string, industry: string): void;
|
|
114
|
-
recordSuccess(capabilityId: string): void;
|
|
115
|
-
recordFailure(capabilityId: string, reason: string): void;
|
|
116
|
-
recordVerificationReport(report: VerificationReport): void;
|
|
117
|
-
getCapabilitiesForExtension(capabilitiesUsed: string[]): CapabilityCard[];
|
|
118
|
-
evaluateExtensionCoverage(industry: string, capabilitiesUsed: string[]): CoverageReport;
|
|
119
41
|
private registerBuiltins;
|
|
120
|
-
private registerBuiltinEdges;
|
|
121
|
-
private computeConfigDiff;
|
|
122
42
|
}
|
|
123
43
|
export declare function getCapabilityRegistry(): CapabilityRegistry;
|
|
124
|
-
export declare const CAPABILITY_MANIFEST_VERSION =
|
|
125
|
-
export declare function recordCapabilitiesUsed(industry: string, capabilitiesUsed: string[]): void;
|
|
44
|
+
export declare const CAPABILITY_MANIFEST_VERSION = 2;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export class CapabilityRegistry{static ['instance'];['cards']=new Map();['edges']=[];['initialized']=![];static['Instance'](){return!CapabilityRegistry['instance']&&(CapabilityRegistry['instance']=new CapabilityRegistry()),CapabilityRegistry['instance'];}constructor(){this['registerBuiltins'](),this['registerBuiltinEdges'](),this['initialized']=!![];}['registerCard'](a){if(!a['capability_id']||!a['object_type']||!a['module'])return![];return this['cards']['set'](a['capability_id'],a),!![];}['getCard'](a){return this['cards']['get'](a);}['listCards'](a){let b=Array['from'](this['cards']['values']());if(!a)return b;if(a['objectType'])b=b['filter'](d=>d['object_type']===a['objectType']);if(a['module'])b=b['filter'](d=>d['module']===a['module']);if(a['industryAgnostic'])b=b['filter'](d=>d['industry_agnostic']===a['industryAgnostic']);if(a['industry'])b=b['filter'](d=>d['observed_in_industries'][a['industry']]!==undefined||d['industry_overrides']?.[a['industry']]!==undefined);return b;}['registerEdge'](a){this['edges']['push'](a);}['getGraph'](){return{'nodes':new Map(this['cards']),'edges':[...this['edges']]};}['getDependencies'](a){const b=new Set(),c=[],d=e=>{if(b['has'](e))return;b['add'](e);for(const f of this['edges']){if(f['from']===e&&f['edge_kind']==='requires'){const g=this['cards']['get'](f['to']);g&&!b['has'](g['capability_id'])&&(c['push'](g),d(f['to']));}}};return d(a),c;}['getDependents'](a){const b=[];for(const c of this['edges']){if(c['to']===a&&c['edge_kind']==='requires'){const d=this['cards']['get'](c['from']);if(d)b['push'](d);}}return b;}['getCapabilitiesByIndustry'](a){return this['listCards']({'industry':a});}['getCapabilitiesByObject'](a){return this['listCards']({'objectType':a});}['evaluateMigration'](a,b){const c=this['getCapabilitiesByIndustry'](a),d=this['getCapabilitiesByIndustry'](b),e=new Set(c['map'](l=>l['capability_id'])),f=new Set(d['map'](l=>l['capability_id'])),g=[],h=[],i=[];for(const l of e){if(f['has'](l)){g['push'](l);const m=c['find'](p=>p['capability_id']===l),n=d['find'](p=>p['capability_id']===l),o=this['computeConfigDiff'](m['industry_overrides']?.[a]??m['config_template'],n['industry_overrides']?.[b]??n['config_template']);o['diff_ratio']>0.5&&i['push']({'capability_id':l,'source_config':m['industry_overrides']?.[a]??m['config_template'],'target_config':n['industry_overrides']?.[b]??n['config_template'],'diff_summary':o['summary']});}}for(const p of f){if(!e['has'](p))h['push'](p);}const j=g['length']===0x0&&h['length']===0x0?0x0:Math['round']((g['length']-i['length'])/(g['length']+h['length'])*0x64),k=[];h['length']>0x0&&k['push']('Missing\x20'+h['length']+'\x20capabilities,\x20need\x20to\x20add:\x20'+h['slice'](0x0,0x5)['join'](',\x20')+(h['length']>0x5?'...':''));i['length']>0x0&&k['push']('Detected\x20'+i['length']+'\x20capabilities\x20with\x20large\x20parameter\x20differences,\x20need\x20to\x20rewrite\x20configuration');if(j>=0x50)k['push']('Migration\x20feasibility\x20is\x20high,\x20most\x20capabilities\x20can\x20be\x20reused\x20directly');else j>=0x32?k['push']('Migration\x20feasibility\x20is\x20medium,\x20need\x20to\x20supplement\x20or\x20rewrite\x20some\x20capabilities'):k['push']('Migration\x20feasibility\x20is\x20low,\x20recommend\x20regenerating\x20the\x20plan\x20based\x20on\x20the\x20target\x20industry\x20template');return{'feasibility_score':j,'covered_capabilities':g,'missing_capabilities':h,'conflicting_capabilities':i,'recommendations':k};}['findPurityViolations'](){return Array['from'](this['cards']['values']())['filter'](a=>{if(a['industry_agnostic']!=='high')return![];const b=a['industry_overrides']?Object['keys'](a['industry_overrides'])['length']:0x0;return b>=0x3;});}['recordUsage'](a,b){const c=this['cards']['get'](a);if(!c)return;!c['observed_in_industries'][b]&&(c['observed_in_industries'][b]=0x0),c['observed_in_industries'][b]++;}['recordSuccess'](a){const b=this['cards']['get'](a);if(b)b['success_count']++;}['recordFailure'](a,b){const c=this['cards']['get'](a);if(!c)return;c['failure_count']++,b&&!c['known_failure_modes']['includes'](b)&&c['known_failure_modes']['push'](b);}['recordVerificationReport'](a){for(const b of a['capabilities_used']){this['recordUsage'](b,a['industry']);if(a['result']==='success')this['recordSuccess'](b);else{if(a['result']==='failure'){const c=a['failure_reasons']?.[0x0]??'unknown\x20failure';this['recordFailure'](b,c);}}}}['getCapabilitiesForExtension'](a){return a['map'](b=>this['cards']['get'](b))['filter'](b=>b!==undefined);}['evaluateExtensionCoverage'](a,b){const c=b['length'],d=this['getCapabilitiesByIndustry'](a),e=d['length']||c,f=d['filter'](h=>!b['includes'](h['capability_id']))['map'](h=>h['capability_id']),g=e===0x0?0x64:Math['round'](c/e*0x64);return{'industry':a,'declared_count':c,'expected_count':e,'coverage_percentage':Math['min'](g,0x64),'missing_capabilities':f};}['registerBuiltins'](){this['registerCard']({'capability_id':'permission.index_create','display_name':'Permission\x20Index\x20Create','description':'Create\x20role\x20permission\x20index,\x20supports\x20multi-role\x20permission\x20assignment\x20such\x20as\x20merchant/customer/arbiter','object_type':'permission','module':'handler','category':'trust','industry_agnostic':'high','config_template':{'permission_indexes':[{'name':'merchant','description':'Service\x20owner'},{'name':'customer','description':'Service\x20buyer'}]},'industry_overrides':{'education':{'permission_indexes':[{'name':'teacher','description':'Course\x20provider'},{'name':'student','description':'Course\x20consumer'},{'name':'parent','description':'Guardian\x20(minor)'}]},'travel':{'permission_indexes':[{'name':'guide','description':'Tour\x20guide'},{'name':'tourist','description':'Tour\x20participant'}]}},'observed_in_industries':{},'success_count':0x0,'failure_count':0x0,'known_failure_modes':[],'depends_on_capabilities':[],'version':'v1','risk_profile':{'funds_risk':'low','trust_risk':'low','delivery_risk':'low','compliance_risk':'low','known_risks':['Index\x20proliferation\x20without\x20naming\x20convention\x20makes\x20permission\x20audits\x20harder']},'benefit_profile':{'automation_level':'medium','trust_boost':'high','efficiency_gain':'medium','benefits':['Role-based\x20governance\x20foundation\x20for\x20all\x20other\x20objects']}}),this['registerCard']({'capability_id':'permission.role_assign','display_name':'Permission\x20Role\x20Assign','description':'Assign\x20role\x20permission\x20index\x20to\x20objects\x20(Machine/Service/Allocation)','object_type':'permission','module':'handler','category':'trust','industry_agnostic':'high','config_template':{'target_object':'<obj>','role':'<role_name>'},'observed_in_industries':{},'success_count':0x0,'failure_count':0x0,'known_failure_modes':[],'depends_on_capabilities':['permission.index_create'],'version':'v1','risk_profile':{'funds_risk':'low','trust_risk':'medium','delivery_risk':'low','compliance_risk':'low','known_risks':['Mis-assigned\x20role\x20grants\x20unintended\x20operational\x20authority']},'benefit_profile':{'automation_level':'high','trust_boost':'high','efficiency_gain':'medium','benefits':['Binds\x20governance\x20roles\x20to\x20concrete\x20objects']}}),this['registerCard']({'capability_id':'guard.validate_buy','display_name':'Guard\x20Validate\x20Buy','description':'Order\x20validation:\x20check\x20buyer\x20eligibility,\x20order\x20parameters,\x20inventory\x20and\x20other\x20conditions','object_type':'guard','module':'handler','category':'validation','industry_agnostic':'medium','config_template':{'host':'service','templates':[]},'industry_overrides':{'retail':{'templates':['tpl_check_inventory','tpl_check_buyer_address']},'freelance':{'templates':['tpl_check_buyer_budget','tpl_check_freelancer_available']},'rental':{'templates':['tpl_check_deposit','tpl_check_item_available']}},'observed_in_industries':{},'success_count':0x0,'failure_count':0x0,'known_failure_modes':[],'depends_on_capabilities':['permission.index_create'],'version':'v1','risk_profile':{'funds_risk':'low','trust_risk':'medium','delivery_risk':'medium','compliance_risk':'low','known_risks':['Over-strict\x20buy\x20validation\x20blocks\x20legitimate\x20orders;\x20over-loose\x20validation\x20admits\x20fraud']},'benefit_profile':{'automation_level':'high','trust_boost':'high','efficiency_gain':'high','benefits':['Automated\x20purchase\x20gating\x20without\x20manual\x20review']}}),this['registerCard']({'capability_id':'guard.validate_wip_hash','display_name':'Guard\x20Validate\x20WIP\x20Hash','description':'Validate\x20WIP\x20(Work-In-Progress)\x20hash,\x20used\x20for\x20milestone\x20validation\x20of\x20digital\x20deliverables','object_type':'guard','module':'handler','category':'evidence','industry_agnostic':'low','config_template':{'host':'machine','templates':['tpl_validate_wip_hash']},'industry_overrides':{'freelance':{'templates':['tpl_validate_wip_hash','tpl_validate_deliverable_format']}},'observed_in_industries':{},'success_count':0x0,'failure_count':0x0,'known_failure_modes':['milestone\x20mode\x20requires\x20WIP\x20hash\x20evidence\x20—\x20without\x20WIP,\x20allocation\x20cannot\x20advance'],'depends_on_capabilities':['guard.validate_buy'],'version':'v1','risk_profile':{'funds_risk':'low','trust_risk':'medium','delivery_risk':'high','compliance_risk':'low','known_risks':['Wrong\x20hash\x20algorithm\x20or\x20field\x20mapping\x20stalls\x20milestone\x20release']},'benefit_profile':{'automation_level':'high','trust_boost':'medium','efficiency_gain':'medium','benefits':['Tamper-proof\x20delivery\x20evidence\x20for\x20digital\x20deliverables']}}),this['registerCard']({'capability_id':'machine.node_topology','display_name':'Machine\x20Node\x20Topology','description':'Workflow\x20node\x20topology:\x20define\x20the\x20state\x20machine\x20from\x20order\x20creation\x20to\x20completion','object_type':'machine','module':'templates','category':'workflow','industry_agnostic':'low','config_template':{'nodes':[{'name':'paid','role':'Entry:\x20order\x20created\x20and\x20paid'},{'name':'delivering','role':'Service\x20delivery\x20in\x20progress'},{'name':'delivered','role':'Deliverable\x20available\x20for\x20review'},{'name':'completed','role':'Service\x20completed,\x20funds\x20released'},{'name':'cancelled','role':'Pre-delivery\x20cancellation\x20—\x20triggers\x20refund\x20Allocator'}]},'industry_overrides':{'retail':{'nodes':[{'name':'paid','role':'Order\x20paid'},{'name':'shipped','role':'Goods\x20shipped'},{'name':'delivered','role':'Goods\x20delivered'},{'name':'confirmed','role':'Buyer\x20confirms\x20receipt'},{'name':'completed','role':'Funds\x20released'},{'name':'returned','role':'Buyer\x20ships\x20goods\x20back\x20—\x20triggers\x20refund\x20Allocator\x20(R-M1-11)'},{'name':'cancelled','role':'Pre-ship\x20cancellation'}]},'freelance':{'nodes':[{'name':'paid','role':'Order\x20paid\x20(escrow)'},{'name':'in_progress','role':'Freelancer\x20working'},{'name':'submitted','role':'Work\x20submitted\x20for\x20review'},{'name':'accepted','role':'Buyer\x20accepts\x20deliverable'},{'name':'completed','role':'Funds\x20released'},{'name':'revision','role':'Revision\x20requested'},{'name':'cancelled','role':'Pre-start\x20cancellation\x20—\x20triggers\x20refund\x20Allocator\x20(R-M1-11)'}]}},'observed_in_industries':{},'success_count':0x0,'failure_count':0x0,'known_failure_modes':[],'depends_on_capabilities':['permission.index_create'],'version':'v1','risk_profile':{'funds_risk':'low','trust_risk':'medium','delivery_risk':'high','compliance_risk':'low','known_risks':['Dead-end\x20nodes\x20or\x20missing\x20refund\x20paths\x20trap\x20order\x20funds']},'benefit_profile':{'automation_level':'medium','trust_boost':'medium','efficiency_gain':'high','benefits':['Declarative\x20workflow\x20from\x20order\x20creation\x20to\x20completion']}}),this['registerCard']({'capability_id':'treasury.owner_receive','display_name':'Treasury\x20Owner\x20Receive','description':'Fund\x20escrow:\x20supports\x20owner_receive\x20mode,\x20funds\x20go\x20directly\x20into\x20the\x20object\x20owner\x20wallet','object_type':'treasury','module':'handler','category':'fund_flow','industry_agnostic':'high','config_template':{'owner_receive':!![]},'observed_in_industries':{},'success_count':0x0,'failure_count':0x0,'known_failure_modes':[],'depends_on_capabilities':[],'version':'v1','risk_profile':{'funds_risk':'high','trust_risk':'medium','delivery_risk':'low','compliance_risk':'low','known_risks':['Direct\x20fund\x20custody\x20—\x20misconfigured\x20owner\x20diverts\x20all\x20proceeds']},'benefit_profile':{'automation_level':'high','trust_boost':'medium','efficiency_gain':'medium','benefits':['Automated\x20escrow\x20and\x20owner\x20settlement']}}),this['registerCard']({'capability_id':'allocation.distribute','display_name':'Multi-tier\x20Allocation\x20Distribution','description':'Multi-tier\x20allocation:\x20supports\x20distributing\x20funds\x20to\x20multiple\x20recipients\x20by\x20ratio\x20/\x20by\x20order\x20/\x20by\x20condition','object_type':'allocation','module':'handler','category':'fund_flow','industry_agnostic':'medium','config_template':{'strategy':{'recipient':'entity','count':0x1,'mode':'surplus','description':'Default:\x20all\x20to\x20service\x20owner'}},'industry_overrides':{'retail':{'strategy':{'recipient':'entity','count':0x2,'mode':'rate','description':'Platform\x2010%\x20+\x20Merchant\x2090%'}},'freelance':{'strategy':{'recipient':'entity','count':0x2,'mode':'milestone','description':'50%\x20upfront\x20+\x2050%\x20on\x20delivery'}},'travel':{'strategy':{'recipient':'entity','count':0x3,'mode':'rate','description':'Guide\x2060%\x20+\x20Platform\x2030%\x20+\x20Insurance\x2010%'}}},'observed_in_industries':{},'success_count':0x0,'failure_count':0x0,'known_failure_modes':['milestone\x20mode\x20requires\x20WIP\x20hash\x20evidence\x20—\x20without\x20WIP,\x20allocation\x20cannot\x20advance'],'depends_on_capabilities':['treasury.owner_receive','guard.validate_buy'],'version':'v1','risk_profile':{'funds_risk':'high','trust_risk':'low','delivery_risk':'medium','compliance_risk':'low','known_risks':['Wrong\x20split\x20ratios\x20or\x20recipient\x20addresses\x20misdirect\x20settlement\x20funds']},'benefit_profile':{'automation_level':'high','trust_boost':'medium','efficiency_gain':'high','benefits':['Multi-recipient\x20settlement\x20without\x20manual\x20transfers']}}),this['registerCard']({'capability_id':'allocation.distribute_milestone','display_name':'Milestone-based\x20Allocation','description':'Milestone\x20allocation:\x20release\x20funds\x20by\x20delivery\x20milestones,\x20each\x20milestone\x20requires\x20WIP\x20hash\x20validation','object_type':'allocation','module':'handler','category':'fund_flow','industry_agnostic':'low','config_template':{'strategy':{'recipient':'entity','count':0x2,'mode':'milestone','description':'Milestone-based\x20release'}},'industry_overrides':{'freelance':{'strategy':{'recipient':'entity','count':0x2,'mode':'milestone','description':'50%\x20upfront\x20+\x2050%\x20on\x20delivery'}},'education':{'strategy':{'recipient':'entity','count':0x2,'mode':'milestone','description':'Per\x20session\x20release'}}},'observed_in_industries':{},'success_count':0x0,'failure_count':0x0,'known_failure_modes':[],'depends_on_capabilities':['allocation.distribute','guard.validate_wip_hash'],'version':'v1','risk_profile':{'funds_risk':'high','trust_risk':'medium','delivery_risk':'medium','compliance_risk':'low','known_risks':['Stuck\x20milestone\x20gates\x20lock\x20buyer\x20funds\x20until\x20evidence\x20is\x20supplied']},'benefit_profile':{'automation_level':'medium','trust_boost':'high','efficiency_gain':'medium','benefits':['Evidence-gated\x20release\x20protects\x20both\x20buyer\x20and\x20provider']}}),this['registerCard']({'capability_id':'service.publish','display_name':'Service\x20Publish','description':'Publish\x20Service\x20object\x20on-chain,\x20bind\x20Machine/Guard/Permission/Allocation\x20and\x20other\x20dependencies','object_type':'service','module':'handler','category':'lifecycle','industry_agnostic':'high','config_template':{'machine':'<machine_name>','buy_guard':'<guard_name>','permission':'<permission_name>','order_allocators':['<allocation_name>'],'compensation_fund_balance':0x0,'compensation_fund_add_hint':'Post-publish:\x20call\x20service.compensation_fund_add\x20with\x20Coin<T>.\x20Recommend\x203-10×\x20max\x20single-order\x20amount\x20(industry-specific:\x20subscription\x203×,\x20retail\x205×,\x20rental\x2010×).'},'observed_in_industries':{},'success_count':0x0,'failure_count':0x0,'known_failure_modes':[],'depends_on_capabilities':['machine.node_topology','guard.validate_buy','permission.index_create','allocation.distribute','treasury.owner_receive'],'version':'v1','risk_profile':{'funds_risk':'medium','trust_risk':'medium','delivery_risk':'medium','compliance_risk':'medium','known_risks':['Publish\x20freezes\x20machine\x20binding\x20and\x20order_allocators\x20permanently\x20(E_ALREADY_PUBLISHED)']},'benefit_profile':{'automation_level':'medium','trust_boost':'medium','efficiency_gain':'medium','benefits':['On-chain\x20discoverability\x20and\x20order\x20intake']}}),this['registerCard']({'capability_id':'progress.advance','display_name':'Progress\x20Advance','description':'Order\x20fulfillment\x20progress\x20advance:\x20advance\x20to\x20next\x20state\x20based\x20on\x20Machine\x20node\x20topology','object_type':'progress','module':'handler','category':'workflow','industry_agnostic':'medium','config_template':{'parent':'<machine_name>'},'observed_in_industries':{},'success_count':0x0,'failure_count':0x0,'known_failure_modes':[],'depends_on_capabilities':['machine.node_topology'],'version':'v1','risk_profile':{'funds_risk':'medium','trust_risk':'low','delivery_risk':'high','compliance_risk':'low','known_risks':['Forward\x20without\x20authorized\x20executor\x20permanently\x20stalls\x20the\x20order']},'benefit_profile':{'automation_level':'high','trust_boost':'medium','efficiency_gain':'high','benefits':['Deterministic\x20order\x20state\x20progression']}}),this['registerCard']({'capability_id':'arb.vote_weighted','display_name':'Arbitration\x20Vote\x20Weighted','description':'guard-based\x20weighted\x20voting\x20arbitration:\x20vote\x20by\x20Guard\x20weight\x20to\x20determine\x20arbitration\x20result','object_type':'arb','module':'handler','category':'trust','industry_agnostic':'medium','config_template':{'guard':'<guard_name>','voting_rule':'guard_weighted'},'observed_in_industries':{},'success_count':0x0,'failure_count':0x0,'known_failure_modes':[],'depends_on_capabilities':['guard.validate_buy'],'version':'v1','risk_profile':{'funds_risk':'low','trust_risk':'high','delivery_risk':'medium','compliance_risk':'medium','known_risks':['Shared\x20permission\x20with\x20Service\x20destroys\x20dispute\x20independence\x20(E_ARBITRATION_PERMISSION_CONFLICT)']},'benefit_profile':{'automation_level':'medium','trust_boost':'high','efficiency_gain':'low','benefits':['Neutral\x20third-party\x20dispute\x20resolution']}}),this['registerCard']({'capability_id':'reward.claim_guard','display_name':'Reward\x20Claim\x20Guard','description':'Reward\x20claim:\x20release\x20reward\x20after\x20validating\x20claim\x20conditions\x20(such\x20as\x20positive\x20review,\x20repurchase)\x20via\x20Guard','object_type':'reward','module':'handler','category':'fund_flow','industry_agnostic':'medium','config_template':{'claim_guard':'<guard_name>','max_guard_count':0x1},'observed_in_industries':{},'success_count':0x0,'failure_count':0x0,'known_failure_modes':[],'depends_on_capabilities':['guard.validate_buy'],'version':'v1','risk_profile':{'funds_risk':'medium','trust_risk':'low','delivery_risk':'low','compliance_risk':'low','known_risks':['Loose\x20claim\x20conditions\x20drain\x20the\x20reward\x20pool']},'benefit_profile':{'automation_level':'high','trust_boost':'medium','efficiency_gain':'medium','benefits':['Incentivizes\x20reviews\x20and\x20repurchase']}}),this['registerCard']({'capability_id':'contact.im_create','display_name':'Contact\x20IM\x20Create','description':'Create\x20IM\x20contact\x20object:\x20buyer\x20and\x20seller\x20communicate\x20via\x20Messenger','object_type':'contact','module':'handler','category':'communication','industry_agnostic':'high','config_template':{},'observed_in_industries':{},'success_count':0x0,'failure_count':0x0,'known_failure_modes':[],'depends_on_capabilities':[],'version':'v1','risk_profile':{'funds_risk':'low','trust_risk':'low','delivery_risk':'low','compliance_risk':'low','known_risks':['Unattended\x20IM\x20channel\x20degrades\x20dispute\x20response\x20time']},'benefit_profile':{'automation_level':'medium','trust_boost':'medium','efficiency_gain':'medium','benefits':['Direct\x20buyer-seller\x20encrypted\x20communication']}}),this['registerCard']({'capability_id':'demand.matching','display_name':'Demand\x20Matching','description':'Demand\x20matching:\x20match\x20corresponding\x20Service\x20based\x20on\x20user\x20demand','object_type':'demand','module':'handler','category':'query','industry_agnostic':'high','config_template':{},'observed_in_industries':{},'success_count':0x0,'failure_count':0x0,'known_failure_modes':[],'depends_on_capabilities':['service.publish'],'version':'v1','risk_profile':{'funds_risk':'low','trust_risk':'low','delivery_risk':'low','compliance_risk':'low','known_risks':['Poor\x20matching\x20signals\x20bury\x20quality\x20services']},'benefit_profile':{'automation_level':'medium','trust_boost':'low','efficiency_gain':'medium','benefits':['Demand-side\x20discovery\x20channel']}}),this['registerCard']({'capability_id':'repository.write_validate','display_name':'Repository\x20Write\x20Validate','description':'Knowledge\x20base\x20write\x20validation:\x20validate\x20write\x20permissions\x20and\x20data\x20format\x20via\x20Guard','object_type':'repository','module':'handler','category':'validation','industry_agnostic':'high','config_template':{},'observed_in_industries':{},'success_count':0x0,'failure_count':0x0,'known_failure_modes':[],'depends_on_capabilities':['guard.validate_buy'],'version':'v1','risk_profile':{'funds_risk':'low','trust_risk':'medium','delivery_risk':'low','compliance_risk':'medium','known_risks':['Unvalidated\x20writes\x20pollute\x20the\x20knowledge\x20base\x20with\x20unverifiable\x20claims']},'benefit_profile':{'automation_level':'medium','trust_boost':'high','efficiency_gain':'medium','benefits':['Guard-gated\x20attestation\x20for\x20off-chain\x20data']}}),this['registerCard']({'capability_id':'proof.evidence_anchor','display_name':'Proof\x20Evidence\x20Anchor','description':'Evidence\x20on-chain:\x20anchor\x20delivery\x20evidence\x20(hash)\x20to\x20on-chain\x20Progress\x20node','object_type':'proof','module':'handler','category':'evidence','industry_agnostic':'medium','config_template':{},'observed_in_industries':{},'success_count':0x0,'failure_count':0x0,'known_failure_modes':[],'depends_on_capabilities':['progress.advance'],'version':'v1','risk_profile':{'funds_risk':'low','trust_risk':'medium','delivery_risk':'low','compliance_risk':'low','known_risks':['Anchored\x20evidence\x20is\x20immutable\x20—\x20wrong\x20hash\x20cannot\x20be\x20corrected']},'benefit_profile':{'automation_level':'high','trust_boost':'high','efficiency_gain':'medium','benefits':['Immutable\x20WTS\x20evidence\x20for\x20Messenger\x20confirmations']}}),this['registerCard']({'capability_id':'personal.profile_manage','display_name':'Personal\x20Profile\x20Manage','description':'Personal\x20profile\x20management:\x20user\x20identity/preference/history\x20management','object_type':'personal','module':'handler','category':'data_model','industry_agnostic':'high','config_template':{},'observed_in_industries':{},'success_count':0x0,'failure_count':0x0,'known_failure_modes':[],'depends_on_capabilities':[],'version':'v1','risk_profile':{'funds_risk':'low','trust_risk':'low','delivery_risk':'low','compliance_risk':'medium','known_risks':['Profile\x20data\x20may\x20fall\x20under\x20privacy\x20regulation\x20(PII)']},'benefit_profile':{'automation_level':'medium','trust_boost':'low','efficiency_gain':'low','benefits':['Portable\x20user\x20identity\x20across\x20services']}}),this['registerCard']({'capability_id':'payment.settle','display_name':'Payment\x20Settle','description':'Payment\x20settlement:\x20complete\x20fund\x20settlement\x20in\x20collaboration\x20with\x20Allocation','object_type':'payment','module':'handler','category':'fund_flow','industry_agnostic':'high','config_template':{},'observed_in_industries':{},'success_count':0x0,'failure_count':0x0,'known_failure_modes':[],'depends_on_capabilities':['allocation.distribute','treasury.owner_receive'],'version':'v1','risk_profile':{'funds_risk':'high','trust_risk':'low','delivery_risk':'low','compliance_risk':'medium','known_risks':['Settlement\x20errors\x20are\x20irreversible\x20once\x20funds\x20transfer']},'benefit_profile':{'automation_level':'high','trust_boost':'low','efficiency_gain':'high','benefits':['Atomic\x20settlement\x20in\x20collaboration\x20with\x20Allocation']}}),this['registerCard']({'capability_id':'guard.validate_withdraw','display_name':'Guard\x20Validate\x20Withdraw','description':'Withdrawal\x20validation:\x20gate\x20fund\x20release\x20from\x20Allocation\x20escrow\x20on\x20delivery\x20confirmation','object_type':'guard','module':'handler','category':'validation','industry_agnostic':'medium','config_template':{'host':'service','templates':['tpl_withdraw_on_completed']},'industry_overrides':{'retail_d2c':{'templates':['tpl_withdraw_on_completed']}},'observed_in_industries':{},'success_count':0x0,'failure_count':0x0,'known_failure_modes':['Withdraw\x20gate\x20on\x20wrong\x20node\x20lets\x20merchant\x20pull\x20funds\x20before\x20delivery'],'depends_on_capabilities':['allocation.distribute'],'version':'v1','risk_profile':{'funds_risk':'high','trust_risk':'medium','delivery_risk':'medium','compliance_risk':'low','known_risks':['Mis-gated\x20withdrawal\x20releases\x20escrowed\x20funds\x20prematurely']},'benefit_profile':{'automation_level':'high','trust_boost':'high','efficiency_gain':'high','benefits':['Contract-enforced\x20delivery\x20gate\x20replaces\x20platform\x20custody']}}),this['registerCard']({'capability_id':'guard.validate_refund','display_name':'Guard\x20Validate\x20Refund','description':'Refund\x20validation:\x20gate\x20buyer\x20refund\x20on\x20cancellation\x20or\x20return\x20conditions','object_type':'guard','module':'handler','category':'validation','industry_agnostic':'medium','config_template':{'host':'service','templates':['tpl_refund_on_cancelled']},'industry_overrides':{'retail_d2c':{'templates':['tpl_refund_on_cancelled']}},'observed_in_industries':{},'success_count':0x0,'failure_count':0x0,'known_failure_modes':['Missing\x20refund\x20path\x20on\x20pre-delivery\x20cancellation\x20traps\x20buyer\x20funds'],'depends_on_capabilities':['guard.validate_buy'],'version':'v1','risk_profile':{'funds_risk':'medium','trust_risk':'medium','delivery_risk':'medium','compliance_risk':'low','known_risks':['Over-broad\x20refund\x20conditions\x20enable\x20buyer\x20abuse']},'benefit_profile':{'automation_level':'high','trust_boost':'high','efficiency_gain':'high','benefits':['Trustless\x20buyer\x20refund\x20without\x20merchant\x20approval']}});}['registerBuiltinEdges'](){const a=['machine.node_topology','guard.validate_buy','permission.index_create','allocation.distribute','treasury.owner_receive'];for(const b of a){this['registerEdge']({'from':'service.publish','to':b,'edge_kind':'requires','phase':'publish','description':'Service\x20publish\x20requires\x20this\x20capability'});}this['registerEdge']({'from':'service.publish','to':'arb.vote_weighted','edge_kind':'optional','phase':'publish','description':'Optional:\x20arbitration\x20for\x20dispute\x20resolution'}),this['registerEdge']({'from':'service.publish','to':'reward.claim_guard','edge_kind':'optional','phase':'publish','description':'Optional:\x20reward\x20for\x20positive\x20behavior'}),this['registerEdge']({'from':'service.publish','to':'contact.im_create','edge_kind':'optional','phase':'publish','description':'Optional:\x20IM\x20contact\x20between\x20buyer\x20and\x20seller'}),this['registerEdge']({'from':'permission.role_assign','to':'permission.index_create','edge_kind':'requires','phase':'create','description':'Role\x20assignment\x20requires\x20permission\x20index'}),this['registerEdge']({'from':'machine.node_topology','to':'permission.index_create','edge_kind':'requires','phase':'create','description':'Machine\x20requires\x20permission\x20for\x20role-based\x20node\x20access'}),this['registerEdge']({'from':'allocation.distribute','to':'treasury.owner_receive','edge_kind':'requires','phase':'runtime','description':'Allocation\x20distributes\x20via\x20treasury'}),this['registerEdge']({'from':'allocation.distribute','to':'guard.validate_buy','edge_kind':'requires','phase':'runtime','description':'Allocation\x20requires\x20guard\x20validation'}),this['registerEdge']({'from':'allocation.distribute_milestone','to':'allocation.distribute','edge_kind':'requires','phase':'create','description':'Milestone\x20allocation\x20extends\x20base\x20allocation'}),this['registerEdge']({'from':'allocation.distribute_milestone','to':'guard.validate_wip_hash','edge_kind':'requires','phase':'runtime','description':'Milestone\x20allocation\x20requires\x20WIP\x20hash\x20validation'}),this['registerEdge']({'from':'progress.advance','to':'machine.node_topology','edge_kind':'requires','phase':'runtime','description':'Progress\x20advances\x20based\x20on\x20machine\x20topology'}),this['registerEdge']({'from':'arb.vote_weighted','to':'guard.validate_buy','edge_kind':'requires','phase':'runtime','description':'Arbitration\x20voting\x20requires\x20guard\x20for\x20weight\x20validation'}),this['registerEdge']({'from':'reward.claim_guard','to':'guard.validate_buy','edge_kind':'requires','phase':'runtime','description':'Reward\x20claim\x20requires\x20guard\x20validation'}),this['registerEdge']({'from':'proof.evidence_anchor','to':'progress.advance','edge_kind':'requires','phase':'runtime','description':'Proof\x20anchors\x20to\x20progress\x20node'}),this['registerEdge']({'from':'payment.settle','to':'allocation.distribute','edge_kind':'requires','phase':'runtime','description':'Payment\x20settles\x20via\x20allocation'}),this['registerEdge']({'from':'demand.matching','to':'service.publish','edge_kind':'requires','phase':'runtime','description':'Demand\x20matching\x20requires\x20published\x20services'}),this['registerEdge']({'from':'repository.write_validate','to':'guard.validate_buy','edge_kind':'requires','phase':'runtime','description':'Repository\x20write\x20requires\x20guard\x20validation'});}['computeConfigDiff'](a,b){if(typeof a!=='object'||typeof b!=='object'||a===null||b===null)return a===b?{'diff_ratio':0x0,'summary':'identical'}:{'diff_ratio':0x1,'summary':'type\x20mismatch'};const c=a,d=b,e=new Set(Object['keys'](c)),f=new Set(Object['keys'](d)),g=new Set([...e,...f]);if(g['size']===0x0)return{'diff_ratio':0x0,'summary':'empty\x20configs'};let h=0x0;const i=[];for(const m of g){const n=c[m],o=d[m];JSON['stringify'](n)!==JSON['stringify'](o)&&(h++,i['push'](m));}const j=h/g['size'],l=h+'/'+g['size']+'\x20fields\x20differ:\x20'+i['slice'](0x0,0x3)['join'](',\x20')+(i['length']>0x3?'...':'');return{'diff_ratio':j,'summary':l};}}export function getCapabilityRegistry(){return CapabilityRegistry['Instance']();}export const CAPABILITY_MANIFEST_VERSION=0x1;export function recordCapabilitiesUsed(a,b){const c=CapabilityRegistry['Instance']();for(const d of b){c['recordUsage'](d,a);}}
|
|
1
|
+
export class CapabilityRegistry{static ['instance'];['cards']=new Map();static['Instance'](){return!CapabilityRegistry['instance']&&(CapabilityRegistry['instance']=new CapabilityRegistry()),CapabilityRegistry['instance'];}constructor(){this['registerBuiltins']();}['registerCard'](a){if(!a['capability_id']||!a['object_type']||!a['module'])return![];return this['cards']['set'](a['capability_id'],a),!![];}['getCard'](a){return this['cards']['get'](a);}['registerBuiltins'](){this['registerCard']({'capability_id':'permission.index_create','display_name':'Permission\x20Index\x20Create','description':'Create\x20role\x20permission\x20index,\x20supports\x20multi-role\x20permission\x20assignment\x20such\x20as\x20merchant/customer/arbiter','object_type':'permission','module':'handler','category':'trust','industry_agnostic':'high','risk_profile':{'funds_risk':'low','trust_risk':'low','delivery_risk':'low','compliance_risk':'low','known_risks':['Index\x20proliferation\x20without\x20naming\x20convention\x20makes\x20permission\x20audits\x20harder']},'benefit_profile':{'automation_level':'medium','trust_boost':'high','efficiency_gain':'medium','benefits':['Role-based\x20governance\x20foundation\x20for\x20all\x20other\x20objects']}}),this['registerCard']({'capability_id':'permission.role_assign','display_name':'Permission\x20Role\x20Assign','description':'Assign\x20role\x20permission\x20index\x20to\x20objects\x20(Machine/Service/Allocation)','object_type':'permission','module':'handler','category':'trust','industry_agnostic':'high','risk_profile':{'funds_risk':'low','trust_risk':'medium','delivery_risk':'low','compliance_risk':'low','known_risks':['Mis-assigned\x20role\x20grants\x20unintended\x20operational\x20authority']},'benefit_profile':{'automation_level':'high','trust_boost':'high','efficiency_gain':'medium','benefits':['Binds\x20governance\x20roles\x20to\x20concrete\x20objects']}}),this['registerCard']({'capability_id':'guard.validate_buy','display_name':'Guard\x20Validate\x20Buy','description':'Order\x20validation:\x20check\x20buyer\x20eligibility,\x20order\x20parameters,\x20inventory\x20and\x20other\x20conditions','object_type':'guard','module':'handler','category':'validation','industry_agnostic':'medium','risk_profile':{'funds_risk':'low','trust_risk':'medium','delivery_risk':'medium','compliance_risk':'low','known_risks':['Over-strict\x20buy\x20validation\x20blocks\x20legitimate\x20orders;\x20over-loose\x20validation\x20admits\x20fraud']},'benefit_profile':{'automation_level':'high','trust_boost':'high','efficiency_gain':'high','benefits':['Automated\x20purchase\x20gating\x20without\x20manual\x20review']}}),this['registerCard']({'capability_id':'guard.validate_wip_hash','display_name':'Guard\x20Validate\x20WIP\x20Hash','description':'Validate\x20WIP\x20(Work-In-Progress)\x20hash,\x20used\x20for\x20milestone\x20validation\x20of\x20digital\x20deliverables','object_type':'guard','module':'handler','category':'evidence','industry_agnostic':'low','risk_profile':{'funds_risk':'low','trust_risk':'medium','delivery_risk':'high','compliance_risk':'low','known_risks':['Wrong\x20hash\x20algorithm\x20or\x20field\x20mapping\x20stalls\x20milestone\x20release']},'benefit_profile':{'automation_level':'high','trust_boost':'medium','efficiency_gain':'medium','benefits':['Tamper-proof\x20delivery\x20evidence\x20for\x20digital\x20deliverables']}}),this['registerCard']({'capability_id':'machine.node_topology','display_name':'Machine\x20Node\x20Topology','description':'Workflow\x20node\x20topology:\x20define\x20the\x20state\x20machine\x20from\x20order\x20creation\x20to\x20completion','object_type':'machine','module':'templates','category':'workflow','industry_agnostic':'low','risk_profile':{'funds_risk':'low','trust_risk':'medium','delivery_risk':'high','compliance_risk':'low','known_risks':['Dead-end\x20nodes\x20or\x20missing\x20refund\x20paths\x20trap\x20order\x20funds']},'benefit_profile':{'automation_level':'medium','trust_boost':'medium','efficiency_gain':'high','benefits':['Declarative\x20workflow\x20from\x20order\x20creation\x20to\x20completion']}}),this['registerCard']({'capability_id':'treasury.owner_receive','display_name':'Treasury\x20Owner\x20Receive','description':'Fund\x20escrow:\x20supports\x20owner_receive\x20mode,\x20funds\x20go\x20directly\x20into\x20the\x20object\x20owner\x20wallet','object_type':'treasury','module':'handler','category':'fund_flow','industry_agnostic':'high','risk_profile':{'funds_risk':'high','trust_risk':'medium','delivery_risk':'low','compliance_risk':'low','known_risks':['Direct\x20fund\x20custody\x20—\x20misconfigured\x20owner\x20diverts\x20all\x20proceeds']},'benefit_profile':{'automation_level':'high','trust_boost':'medium','efficiency_gain':'medium','benefits':['Automated\x20escrow\x20and\x20owner\x20settlement']}}),this['registerCard']({'capability_id':'allocation.distribute','display_name':'Multi-tier\x20Allocation\x20Distribution','description':'Multi-tier\x20allocation:\x20supports\x20distributing\x20funds\x20to\x20multiple\x20recipients\x20by\x20ratio\x20/\x20by\x20order\x20/\x20by\x20condition','object_type':'allocation','module':'handler','category':'fund_flow','industry_agnostic':'medium','risk_profile':{'funds_risk':'high','trust_risk':'low','delivery_risk':'medium','compliance_risk':'low','known_risks':['Wrong\x20split\x20ratios\x20or\x20recipient\x20addresses\x20misdirect\x20settlement\x20funds']},'benefit_profile':{'automation_level':'high','trust_boost':'medium','efficiency_gain':'high','benefits':['Multi-recipient\x20settlement\x20without\x20manual\x20transfers']}}),this['registerCard']({'capability_id':'allocation.distribute_milestone','display_name':'Milestone-based\x20Allocation','description':'Milestone\x20allocation:\x20release\x20funds\x20by\x20delivery\x20milestones,\x20each\x20milestone\x20requires\x20WIP\x20hash\x20validation','object_type':'allocation','module':'handler','category':'fund_flow','industry_agnostic':'low','risk_profile':{'funds_risk':'high','trust_risk':'medium','delivery_risk':'medium','compliance_risk':'low','known_risks':['Stuck\x20milestone\x20gates\x20lock\x20buyer\x20funds\x20until\x20evidence\x20is\x20supplied']},'benefit_profile':{'automation_level':'medium','trust_boost':'high','efficiency_gain':'medium','benefits':['Evidence-gated\x20release\x20protects\x20both\x20buyer\x20and\x20provider']}}),this['registerCard']({'capability_id':'service.publish','display_name':'Service\x20Publish','description':'Publish\x20Service\x20object\x20on-chain,\x20bind\x20Machine/Guard/Permission/Allocation\x20and\x20other\x20dependencies','object_type':'service','module':'handler','category':'lifecycle','industry_agnostic':'high','risk_profile':{'funds_risk':'medium','trust_risk':'medium','delivery_risk':'medium','compliance_risk':'medium','known_risks':['Publish\x20freezes\x20machine\x20binding\x20and\x20order_allocators\x20permanently\x20(E_ALREADY_PUBLISHED)']},'benefit_profile':{'automation_level':'medium','trust_boost':'medium','efficiency_gain':'medium','benefits':['On-chain\x20discoverability\x20and\x20order\x20intake']}}),this['registerCard']({'capability_id':'progress.advance','display_name':'Progress\x20Advance','description':'Order\x20fulfillment\x20progress\x20advance:\x20advance\x20to\x20next\x20state\x20based\x20on\x20Machine\x20node\x20topology','object_type':'progress','module':'handler','category':'workflow','industry_agnostic':'medium','risk_profile':{'funds_risk':'medium','trust_risk':'low','delivery_risk':'high','compliance_risk':'low','known_risks':['Forward\x20without\x20authorized\x20executor\x20permanently\x20stalls\x20the\x20order']},'benefit_profile':{'automation_level':'high','trust_boost':'medium','efficiency_gain':'high','benefits':['Deterministic\x20order\x20state\x20progression']}}),this['registerCard']({'capability_id':'arb.vote_weighted','display_name':'Arbitration\x20Vote\x20Weighted','description':'guard-based\x20weighted\x20voting\x20arbitration:\x20vote\x20by\x20Guard\x20weight\x20to\x20determine\x20arbitration\x20result','object_type':'arb','module':'handler','category':'trust','industry_agnostic':'medium','risk_profile':{'funds_risk':'low','trust_risk':'high','delivery_risk':'medium','compliance_risk':'medium','known_risks':['Shared\x20permission\x20with\x20Service\x20destroys\x20dispute\x20independence\x20(E_ARBITRATION_PERMISSION_CONFLICT)']},'benefit_profile':{'automation_level':'medium','trust_boost':'high','efficiency_gain':'low','benefits':['Neutral\x20third-party\x20dispute\x20resolution']}}),this['registerCard']({'capability_id':'reward.claim_guard','display_name':'Reward\x20Claim\x20Guard','description':'Reward\x20claim:\x20release\x20reward\x20after\x20validating\x20claim\x20conditions\x20(such\x20as\x20positive\x20review,\x20repurchase)\x20via\x20Guard','object_type':'reward','module':'handler','category':'fund_flow','industry_agnostic':'medium','risk_profile':{'funds_risk':'medium','trust_risk':'low','delivery_risk':'low','compliance_risk':'low','known_risks':['Loose\x20claim\x20conditions\x20drain\x20the\x20reward\x20pool']},'benefit_profile':{'automation_level':'high','trust_boost':'medium','efficiency_gain':'medium','benefits':['Incentivizes\x20reviews\x20and\x20repurchase']}}),this['registerCard']({'capability_id':'contact.im_create','display_name':'Contact\x20IM\x20Create','description':'Create\x20IM\x20contact\x20object:\x20buyer\x20and\x20seller\x20communicate\x20via\x20Messenger','object_type':'contact','module':'handler','category':'communication','industry_agnostic':'high','risk_profile':{'funds_risk':'low','trust_risk':'low','delivery_risk':'low','compliance_risk':'low','known_risks':['Unattended\x20IM\x20channel\x20degrades\x20dispute\x20response\x20time']},'benefit_profile':{'automation_level':'medium','trust_boost':'medium','efficiency_gain':'medium','benefits':['Direct\x20buyer-seller\x20encrypted\x20communication']}}),this['registerCard']({'capability_id':'demand.matching','display_name':'Demand\x20Matching','description':'Demand\x20matching:\x20match\x20corresponding\x20Service\x20based\x20on\x20user\x20demand','object_type':'demand','module':'handler','category':'query','industry_agnostic':'high','risk_profile':{'funds_risk':'low','trust_risk':'low','delivery_risk':'low','compliance_risk':'low','known_risks':['Poor\x20matching\x20signals\x20bury\x20quality\x20services']},'benefit_profile':{'automation_level':'medium','trust_boost':'low','efficiency_gain':'medium','benefits':['Demand-side\x20discovery\x20channel']}}),this['registerCard']({'capability_id':'repository.write_validate','display_name':'Repository\x20Write\x20Validate','description':'Knowledge\x20base\x20write\x20validation:\x20validate\x20write\x20permissions\x20and\x20data\x20format\x20via\x20Guard','object_type':'repository','module':'handler','category':'validation','industry_agnostic':'high','risk_profile':{'funds_risk':'low','trust_risk':'medium','delivery_risk':'low','compliance_risk':'medium','known_risks':['Unvalidated\x20writes\x20pollute\x20the\x20knowledge\x20base\x20with\x20unverifiable\x20claims']},'benefit_profile':{'automation_level':'medium','trust_boost':'high','efficiency_gain':'medium','benefits':['Guard-gated\x20attestation\x20for\x20off-chain\x20data']}}),this['registerCard']({'capability_id':'proof.evidence_anchor','display_name':'Proof\x20Evidence\x20Anchor','description':'Evidence\x20on-chain:\x20anchor\x20delivery\x20evidence\x20(hash)\x20to\x20on-chain\x20Progress\x20node','object_type':'proof','module':'handler','category':'evidence','industry_agnostic':'medium','risk_profile':{'funds_risk':'low','trust_risk':'medium','delivery_risk':'low','compliance_risk':'low','known_risks':['Anchored\x20evidence\x20is\x20immutable\x20—\x20wrong\x20hash\x20cannot\x20be\x20corrected']},'benefit_profile':{'automation_level':'high','trust_boost':'high','efficiency_gain':'medium','benefits':['Immutable\x20WTS\x20evidence\x20for\x20Messenger\x20confirmations']}}),this['registerCard']({'capability_id':'personal.profile_manage','display_name':'Personal\x20Profile\x20Manage','description':'Personal\x20profile\x20management:\x20user\x20identity/preference/history\x20management','object_type':'personal','module':'handler','category':'data_model','industry_agnostic':'high','risk_profile':{'funds_risk':'low','trust_risk':'low','delivery_risk':'low','compliance_risk':'medium','known_risks':['Profile\x20data\x20may\x20fall\x20under\x20privacy\x20regulation\x20(PII)']},'benefit_profile':{'automation_level':'medium','trust_boost':'low','efficiency_gain':'low','benefits':['Portable\x20user\x20identity\x20across\x20services']}}),this['registerCard']({'capability_id':'payment.settle','display_name':'Payment\x20Settle','description':'Payment\x20settlement:\x20complete\x20fund\x20settlement\x20in\x20collaboration\x20with\x20Allocation','object_type':'payment','module':'handler','category':'fund_flow','industry_agnostic':'high','risk_profile':{'funds_risk':'high','trust_risk':'low','delivery_risk':'low','compliance_risk':'medium','known_risks':['Settlement\x20errors\x20are\x20irreversible\x20once\x20funds\x20transfer']},'benefit_profile':{'automation_level':'high','trust_boost':'low','efficiency_gain':'high','benefits':['Atomic\x20settlement\x20in\x20collaboration\x20with\x20Allocation']}}),this['registerCard']({'capability_id':'guard.validate_withdraw','display_name':'Guard\x20Validate\x20Withdraw','description':'Withdrawal\x20validation:\x20gate\x20fund\x20release\x20from\x20Allocation\x20escrow\x20on\x20delivery\x20confirmation','object_type':'guard','module':'handler','category':'validation','industry_agnostic':'medium','risk_profile':{'funds_risk':'high','trust_risk':'medium','delivery_risk':'medium','compliance_risk':'low','known_risks':['Mis-gated\x20withdrawal\x20releases\x20escrowed\x20funds\x20prematurely']},'benefit_profile':{'automation_level':'high','trust_boost':'high','efficiency_gain':'high','benefits':['Contract-enforced\x20delivery\x20gate\x20replaces\x20platform\x20custody']}}),this['registerCard']({'capability_id':'guard.validate_refund','display_name':'Guard\x20Validate\x20Refund','description':'Refund\x20validation:\x20gate\x20buyer\x20refund\x20on\x20cancellation\x20or\x20return\x20conditions','object_type':'guard','module':'handler','category':'validation','industry_agnostic':'medium','risk_profile':{'funds_risk':'medium','trust_risk':'medium','delivery_risk':'medium','compliance_risk':'low','known_risks':['Over-broad\x20refund\x20conditions\x20enable\x20buyer\x20abuse']},'benefit_profile':{'automation_level':'high','trust_boost':'high','efficiency_gain':'high','benefits':['Trustless\x20buyer\x20refund\x20without\x20merchant\x20approval']}});}}export function getCapabilityRegistry(){return CapabilityRegistry['Instance']();}export const CAPABILITY_MANIFEST_VERSION=0x2;
|
|
@@ -3,18 +3,20 @@ import type { CapabilityRegistry } from "./capability-manifest.js";
|
|
|
3
3
|
export declare class ConstraintRegistry {
|
|
4
4
|
private static instance;
|
|
5
5
|
private constraints;
|
|
6
|
-
private
|
|
6
|
+
private persistence;
|
|
7
|
+
private customConstraintsLoaded;
|
|
7
8
|
static Instance(): ConstraintRegistry;
|
|
8
9
|
private constructor();
|
|
10
|
+
ensureLoaded(): Promise<void>;
|
|
9
11
|
registerConstraint(constraint: ModeConstraint): boolean;
|
|
10
|
-
registerCustomConstraint(constraint_id: string, display_name: string, description: string, rule: ConstraintRule, owner: string, severity?: ConstraintSeverity, on_violation?: ConstraintViolationAction): boolean
|
|
12
|
+
registerCustomConstraint(constraint_id: string, display_name: string, description: string, rule: ConstraintRule, owner: string, severity?: ConstraintSeverity, on_violation?: ConstraintViolationAction): Promise<boolean>;
|
|
11
13
|
getConstraint(constraint_id: string): ModeConstraint | undefined;
|
|
12
14
|
listConstraints(filter?: {
|
|
13
15
|
scope?: "builtin" | "custom";
|
|
14
16
|
owner?: string;
|
|
15
17
|
severity?: ConstraintSeverity;
|
|
16
|
-
}): ModeConstraint[]
|
|
17
|
-
unregisterConstraint(constraint_id: string, owner: string): boolean
|
|
18
|
+
}): Promise<ModeConstraint[]>;
|
|
19
|
+
unregisterConstraint(constraint_id: string, owner: string): Promise<boolean>;
|
|
18
20
|
checkConstraints(mode: IndustryMode, _capabilityRegistry: CapabilityRegistry, extraConstraints?: ModeConstraint[]): ConstraintViolation[];
|
|
19
21
|
private checkConstraint;
|
|
20
22
|
private getNumericField;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const BUILTIN_CONSTRAINTS=[{'constraint_id':'require_arbitration','display_name':'Require\x20Arbitration','description':'Mode\x20must\x20include\x20arbitration\x20capability\x20(arb.*)\x20for\x20dispute\x20resolution','rule':{'type':'capability_required','capability_id':'arb.vote_weighted'},'severity':'hard','on_violation':'block','scope':'builtin'},{'constraint_id':'require_compensation_fund','display_name':'Require\x20Compensation\x20Fund','description':'Mode\x20must\x20include\x20fund\x20escrow\x20capability\x20(treasury.*)\x20for\x20compensation\x20fund','rule':{'type':'capability_required','capability_id':'treasury.owner_receive'},'severity':'hard','on_violation':'block','scope':'builtin'},{'constraint_id':'require_wip_evidence','display_name':'Require\x20WIP\x20Evidence','description':'Mode\x20must\x20include\x20WIP\x20evidence\x20capability\x20(guard.validate_wip_hash)\x20for\x20digital\x20delivery\x20validation','rule':{'type':'capability_required','capability_id':'guard.validate_wip_hash'},'severity':'soft','on_violation':'warn','scope':'builtin'},{'constraint_id':'max_single_transaction_limit','display_name':'Single\x20Transaction\x20Limit','description':'Single\x20transaction\x20amount\x20must\x20not\x20exceed\x2010000\x20WOW\x20(default\x20value,\x20can\x20be\x20overridden\x20by\x20mode)','rule':{'type':'numeric_limit','field':'max_single_transaction','max':0x2710},'severity':'soft','on_violation':'warn','scope':'builtin'}];export class ConstraintRegistry{static ['instance'];['constraints']=new Map();['
|
|
1
|
+
import{OwnedRecordStorage}from'@wowok/wowok';const BUILTIN_CONSTRAINTS=[{'constraint_id':'require_arbitration','display_name':'Require\x20Arbitration','description':'Mode\x20must\x20include\x20arbitration\x20capability\x20(arb.*)\x20for\x20dispute\x20resolution','rule':{'type':'capability_required','capability_id':'arb.vote_weighted'},'severity':'hard','on_violation':'block','scope':'builtin'},{'constraint_id':'require_compensation_fund','display_name':'Require\x20Compensation\x20Fund','description':'Mode\x20must\x20include\x20fund\x20escrow\x20capability\x20(treasury.*)\x20for\x20compensation\x20fund','rule':{'type':'capability_required','capability_id':'treasury.owner_receive'},'severity':'hard','on_violation':'block','scope':'builtin'},{'constraint_id':'require_wip_evidence','display_name':'Require\x20WIP\x20Evidence','description':'Mode\x20must\x20include\x20WIP\x20evidence\x20capability\x20(guard.validate_wip_hash)\x20for\x20digital\x20delivery\x20validation','rule':{'type':'capability_required','capability_id':'guard.validate_wip_hash'},'severity':'soft','on_violation':'warn','scope':'builtin'},{'constraint_id':'max_single_transaction_limit','display_name':'Single\x20Transaction\x20Limit','description':'Single\x20transaction\x20amount\x20must\x20not\x20exceed\x2010000\x20WOW\x20(default\x20value,\x20can\x20be\x20overridden\x20by\x20mode)','rule':{'type':'numeric_limit','field':'max_single_transaction','max':0x2710},'severity':'soft','on_violation':'warn','scope':'builtin'}];export class ConstraintRegistry{static ['instance'];['constraints']=new Map();['persistence']=new OwnedRecordStorage('custom_constraints');['customConstraintsLoaded']=![];static['Instance'](){return!ConstraintRegistry['instance']&&(ConstraintRegistry['instance']=new ConstraintRegistry()),ConstraintRegistry['instance'];}constructor(){this['registerBuiltinConstraints']();}async['ensureLoaded'](){if(this['customConstraintsLoaded'])return;this['customConstraintsLoaded']=!![];try{const a=await this['persistence']['list']();for(const b of a){try{const c=JSON['parse'](b['data']);c?.['constraint_id']&&c['scope']==='custom'&&this['constraints']['set'](c['constraint_id'],c);}catch{console['warn']('[ConstraintRegistry]\x20Skipping\x20corrupt\x20custom_constraints\x20row\x20\x27'+b['owner']+':'+b['name']+'\x27.');}}}catch(d){console['warn']('[ConstraintRegistry]\x20Failed\x20to\x20load\x20persisted\x20custom\x20constraints:',d['message']);}}['registerConstraint'](a){if(!a['constraint_id']||!a['rule'])return![];if(this['constraints']['has'](a['constraint_id']))return![];return this['constraints']['set'](a['constraint_id'],a),!![];}async['registerCustomConstraint'](a,b,c,d,e,f='soft',g='warn'){await this['ensureLoaded']();const h={'constraint_id':a,'display_name':b,'description':c,'rule':d,'severity':f,'on_violation':g,'scope':'custom','owner':e},i=this['registerConstraint'](h);if(i)try{await this['persistence']['save'](e,a,JSON['stringify'](h));}catch(j){console['warn']('[ConstraintRegistry]\x20Failed\x20to\x20persist\x20custom\x20constraint\x20\x27'+a+'\x27:',j['message']);}return i;}['getConstraint'](a){return this['constraints']['get'](a);}async['listConstraints'](a){await this['ensureLoaded']();let b=Array['from'](this['constraints']['values']());if(!a)return b;if(a['scope'])b=b['filter'](d=>d['scope']===a['scope']);if(a['owner'])b=b['filter'](d=>d['owner']===a['owner']);if(a['severity'])b=b['filter'](d=>d['severity']===a['severity']);return b;}async['unregisterConstraint'](a,b){await this['ensureLoaded']();const c=this['constraints']['get'](a);if(!c||c['scope']!=='custom'||c['owner']!==b)return![];const d=this['constraints']['delete'](a);if(d)try{await this['persistence']['delete'](b,a);}catch(e){console['warn']('[ConstraintRegistry]\x20Failed\x20to\x20delete\x20persisted\x20custom\x20constraint\x20\x27'+a+'\x27:',e['message']);}return d;}['checkConstraints'](a,b,d){const e=new Set(a['disabled_builtin_constraints']??[]),f=[...this['constraints']['values']()]['filter'](h=>!(h['scope']==='builtin'&&e['has'](h['constraint_id'])));if(d)for(const h of d){!f['some'](i=>i['constraint_id']===h['constraint_id'])&&f['push'](h);}const g=[];for(const i of f){const j=this['checkConstraint'](a,i);j&&g['push'](j);}return g;}['checkConstraint'](a,b){const c=b['rule'];switch(c['type']){case'capability_required':{if(!a['capabilities_used']['includes'](c['capability_id']))return{'constraint_id':b['constraint_id'],'display_name':b['display_name'],'violation':'Missing\x20required\x20capability:\x20'+c['capability_id'],'severity':b['severity'],'action':b['on_violation'],'recommendation':'Add\x20\x22'+c['capability_id']+'\x22\x20to\x20capabilities_used'};return null;}case'capability_forbidden':{if(a['capabilities_used']['includes'](c['capability_id']))return{'constraint_id':b['constraint_id'],'display_name':b['display_name'],'violation':'Contains\x20forbidden\x20capability:\x20'+c['capability_id'],'severity':b['severity'],'action':b['on_violation'],'recommendation':'Remove\x20\x22'+c['capability_id']+'\x22\x20from\x20capabilities_used'};return null;}case'numeric_limit':{const d=this['getNumericField'](a,c['field']);if(d===undefined)return null;if(c['max']!==undefined&&d>c['max'])return{'constraint_id':b['constraint_id'],'display_name':b['display_name'],'violation':c['field']+'='+d+'\x20exceeds\x20upper\x20limit\x20'+c['max'],'severity':b['severity'],'action':b['on_violation'],'recommendation':'Reduce\x20'+c['field']+'\x20below\x20'+c['max']};if(c['min']!==undefined&&d<c['min'])return{'constraint_id':b['constraint_id'],'display_name':b['display_name'],'violation':c['field']+'='+d+'\x20below\x20lower\x20limit\x20'+c['min'],'severity':b['severity'],'action':b['on_violation'],'recommendation':'Increase\x20'+c['field']+'\x20above\x20'+c['min']};return null;}case'condition_required':{return{'constraint_id':b['constraint_id'],'display_name':b['display_name'],'violation':'Natural\x20language\x20condition\x20pending\x20AI\x20evaluation:\x20\x22'+c['condition']+'\x22','severity':b['severity'],'action':b['on_violation'],'recommendation':'Please\x20have\x20AI\x20evaluate\x20whether\x20this\x20condition\x20is\x20satisfied,\x20and\x20update\x20the\x20mode\x20configuration'};}default:return null;}}['getNumericField'](a,b){if(b==='max_single_transaction')return a['risk_constraints']['max_single_transaction'];return undefined;}['registerBuiltinConstraints'](){for(const a of BUILTIN_CONSTRAINTS){this['registerConstraint'](a);}}}export function getConstraintRegistry(){return ConstraintRegistry['Instance']();}export const BUILTIN_CONSTRAINTS_COUNT=BUILTIN_CONSTRAINTS['length'];
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
export type {
|
|
2
|
-
export type {
|
|
3
|
-
export type { ExpectedBenefit, RiskAppetite, ModeRiskConstraints, ModeApplicableConditions, ConfigOverrideRule, ModeEvaluation, ModeMigrationEvaluation, } from "./types.js";
|
|
1
|
+
export type { IndustryMode, IndustryModeRegistration, UserDefinedMode, } from "./types.js";
|
|
2
|
+
export type { ExpectedBenefit, RiskAppetite, ModeRiskConstraints, ModeApplicableConditions, ConfigOverrideRule, ModeEvaluation, } from "./types.js";
|
|
4
3
|
export type { BaseMetric, MetricType, MetricScale, MetricValue, CapabilityMetricValue, MetricEvaluation, } from "./types.js";
|
|
5
4
|
export type { ModeConstraint, ConstraintRule, ConstraintSeverity, ConstraintViolationAction, ConstraintViolation, } from "./types.js";
|
|
6
|
-
export { CapabilityRegistry, getCapabilityRegistry,
|
|
7
|
-
export type { CapabilityCard,
|
|
5
|
+
export { CapabilityRegistry, getCapabilityRegistry, CAPABILITY_MANIFEST_VERSION, } from "./capability-manifest.js";
|
|
6
|
+
export type { CapabilityCard, CapabilityModule, CapabilityCategory, IndustryAgnostic, CapabilityRiskProfile, CapabilityBenefitProfile, CapabilityConstraints, } from "./capability-manifest.js";
|
|
8
7
|
export { IndustryModeRegistry, getIndustryModeRegistry, INDUSTRY_MODE_REGISTRY_VERSION, } from "./registry.js";
|
|
9
8
|
export { MetricRegistry, getMetricRegistry, BUILTIN_METRICS_COUNT, } from "./metric-registry.js";
|
|
10
9
|
export { ConstraintRegistry, getConstraintRegistry, BUILTIN_CONSTRAINTS_COUNT, } from "./constraint-registry.js";
|