@wowok/agent-mcp 2.7.1 → 2.7.2
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/dist/config/index.js +1 -1
- package/dist/config/runtime.js +1 -238
- package/dist/customer/customer-advice.js +1 -130
- package/dist/customer/index.js +1 -11
- package/dist/customer/industry-risks.js +1 -438
- package/dist/customer/info-puzzle.js +1 -681
- package/dist/customer/order-monitor.js +1 -328
- package/dist/customer/order-strategy.js +1 -373
- package/dist/customer/post-purchase.js +1 -351
- package/dist/customer/preorder-compare.js +1 -34
- package/dist/customer/reminder-system.js +1 -316
- package/dist/customer/risk-assessment.js +1 -397
- package/dist/customer/types.js +1 -13
- package/dist/customer/user-preferences.js +1 -460
- package/dist/evaluation/arbitration-game.d.ts +9 -2
- package/dist/evaluation/arbitration-game.js +1 -48
- package/dist/evaluation/builtins/demand-match.js +1 -153
- package/dist/evaluation/builtins/index.js +1 -10
- package/dist/evaluation/builtins/service-risk.js +1 -55
- package/dist/evaluation/capability.js +1 -13
- package/dist/evaluation/composer.js +1 -40
- package/dist/evaluation/engine.js +1 -175
- package/dist/evaluation/extract.js +1 -115
- package/dist/evaluation/game-strategy.d.ts +27 -0
- package/dist/evaluation/game-strategy.js +1 -0
- package/dist/evaluation/gap.js +1 -100
- package/dist/evaluation/index.d.ts +1 -0
- package/dist/evaluation/index.js +1 -11
- package/dist/evaluation/node-game.d.ts +31 -3
- package/dist/evaluation/node-game.js +1 -57
- package/dist/evaluation/region.js +1 -36
- package/dist/evaluation/types.d.ts +1 -0
- package/dist/evaluation/types.js +1 -1
- package/dist/evaluation/user-injection.js +1 -27
- package/dist/experience/experience-reuse.js +1 -103
- package/dist/experience/index.js +1 -5
- package/dist/experience/intent-distill.js +1 -83
- package/dist/experience/realtime-feedback.js +1 -94
- package/dist/experience/types.js +1 -1
- package/dist/experience/user-profile.js +1 -171
- package/dist/extensions/business-modules.js +1 -287
- package/dist/extensions/capability-manifest.js +1 -781
- package/dist/extensions/constraint-registry.js +1 -198
- package/dist/extensions/index.js +1 -6
- package/dist/extensions/metric-registry.js +1 -257
- package/dist/extensions/mode-evaluator.js +1 -170
- package/dist/extensions/modes.js +1 -499
- package/dist/extensions/registry.js +1 -717
- package/dist/extensions/types.js +1 -1
- package/dist/harness/auto-escalation.js +1 -68
- package/dist/harness/checkpoint.js +1 -129
- package/dist/harness/index.js +1 -78
- package/dist/harness/plan.js +1 -315
- package/dist/harness/recover.js +1 -139
- package/dist/harness/types.js +1 -1
- package/dist/harness/verify.js +1 -237
- package/dist/index.js +1 -273
- package/dist/intent/enrich.js +1 -67
- package/dist/intent/index.js +1 -60
- package/dist/intent/matcher.js +1 -81
- package/dist/intent/store.js +1 -55
- package/dist/intent/types.js +1 -10
- package/dist/knowledge/acquisition-flywheel.js +1 -192
- package/dist/knowledge/allocation-confirm.js +1 -534
- package/dist/knowledge/allocation-context.js +1 -249
- package/dist/knowledge/allocation-ledger.js +1 -463
- package/dist/knowledge/allocation-puzzle.js +1 -298
- package/dist/knowledge/allocation-risk.js +1 -568
- package/dist/knowledge/allocation-templates.js +1 -970
- package/dist/knowledge/allocation-translation.js +1 -585
- package/dist/knowledge/arb-risk.js +1 -210
- package/dist/knowledge/arbitration-confirm.js +1 -559
- package/dist/knowledge/arbitration-context.js +1 -505
- package/dist/knowledge/arbitration-ledger.js +1 -521
- package/dist/knowledge/arbitration-puzzle.js +1 -304
- package/dist/knowledge/arbitration-risk.js +1 -423
- package/dist/knowledge/arbitration-templates.js +1 -276
- package/dist/knowledge/arbitration-translation.js +1 -487
- package/dist/knowledge/arbitration-trust.js +1 -117
- package/dist/knowledge/audit-rules.js +1 -141
- package/dist/knowledge/bridge-risk.js +1 -263
- package/dist/knowledge/contact-risk.js +1 -200
- package/dist/knowledge/contact-templates.js +1 -60
- package/dist/knowledge/demand-confirm.js +1 -206
- package/dist/knowledge/demand-matching.js +1 -132
- package/dist/knowledge/demand-risk.js +1 -240
- package/dist/knowledge/demand-translation.js +1 -354
- package/dist/knowledge/deployment-scanner.js +1 -823
- package/dist/knowledge/dynamic-pricing.js +1 -87
- package/dist/knowledge/examples-scanner-cli.js +1 -26
- package/dist/knowledge/examples-scanner.js +1 -843
- package/dist/knowledge/flywheel-loop.js +1 -404
- package/dist/knowledge/fund-layer.js +1 -973
- package/dist/knowledge/glossary.js +1 -211
- package/dist/knowledge/guard-confirm.js +1 -406
- package/dist/knowledge/guard-context.js +1 -287
- package/dist/knowledge/guard-design-patterns.js +1 -360
- package/dist/knowledge/guard-ledger.js +1 -260
- package/dist/knowledge/guard-lint.js +1 -670
- package/dist/knowledge/guard-migration.js +1 -228
- package/dist/knowledge/guard-puzzle.js +1 -805
- package/dist/knowledge/guard-render.js +1 -700
- package/dist/knowledge/guard-risk.js +1 -1879
- package/dist/knowledge/guard-submission-prompt.js +1 -171
- package/dist/knowledge/guard-templates.js +1 -1105
- package/dist/knowledge/guard-translation.js +1 -1119
- package/dist/knowledge/index.js +1 -436
- package/dist/knowledge/industry-evolution.js +1 -323
- package/dist/knowledge/industry-generalizer.js +1 -381
- package/dist/knowledge/industry-registry.js +1 -174
- package/dist/knowledge/intent-metrics.d.ts +4 -3
- package/dist/knowledge/intent-metrics.js +1 -566
- package/dist/knowledge/machine-confirm.js +1 -559
- package/dist/knowledge/machine-context.js +1 -833
- package/dist/knowledge/machine-ledger.js +1 -338
- package/dist/knowledge/machine-puzzle.js +1 -494
- package/dist/knowledge/machine-render.js +1 -565
- package/dist/knowledge/machine-risk.js +1 -669
- package/dist/knowledge/machine-templates.js +1 -1597
- package/dist/knowledge/machine-topology.js +1 -234
- package/dist/knowledge/machine-translation.js +1 -513
- package/dist/knowledge/mcp-schema-audit-cli.js +1 -45
- package/dist/knowledge/mcp-schema-audit.js +1 -777
- package/dist/knowledge/onchain-constants.js +1 -35
- package/dist/knowledge/order-confirm.js +1 -573
- package/dist/knowledge/order-context.js +1 -390
- package/dist/knowledge/order-ledger.js +1 -341
- package/dist/knowledge/order-puzzle.js +1 -255
- package/dist/knowledge/order-risk.js +1 -653
- package/dist/knowledge/order-templates.js +1 -368
- package/dist/knowledge/order-translation.js +1 -550
- package/dist/knowledge/overrides-loader.js +1 -65
- package/dist/knowledge/passport-confirm.js +1 -531
- package/dist/knowledge/passport-context.js +1 -306
- package/dist/knowledge/passport-ledger.js +1 -282
- package/dist/knowledge/passport-puzzle.js +1 -333
- package/dist/knowledge/passport-risk.js +1 -450
- package/dist/knowledge/passport-templates.js +1 -568
- package/dist/knowledge/passport-translation.js +1 -516
- package/dist/knowledge/payment-risk.js +1 -249
- package/dist/knowledge/permission-confirm.js +1 -426
- package/dist/knowledge/permission-context.js +1 -224
- package/dist/knowledge/permission-ledger.js +1 -403
- package/dist/knowledge/permission-puzzle.js +1 -173
- package/dist/knowledge/permission-risk.js +1 -411
- package/dist/knowledge/permission-templates.js +1 -234
- package/dist/knowledge/permission-translation.js +1 -350
- package/dist/knowledge/personal-risk.js +1 -212
- package/dist/knowledge/process-model.js +1 -160
- package/dist/knowledge/progress-confirm.js +1 -456
- package/dist/knowledge/progress-context.js +1 -452
- package/dist/knowledge/progress-ledger.js +1 -330
- package/dist/knowledge/progress-puzzle.js +1 -219
- package/dist/knowledge/progress-risk.js +1 -461
- package/dist/knowledge/progress-templates.js +1 -228
- package/dist/knowledge/progress-translation.js +1 -405
- package/dist/knowledge/proof-confirm.js +1 -187
- package/dist/knowledge/proof-risk.js +1 -207
- package/dist/knowledge/proof-translation.js +1 -283
- package/dist/knowledge/registrar-risk.js +1 -217
- package/dist/knowledge/repository-confirm.js +1 -286
- package/dist/knowledge/repository-risk.js +1 -373
- package/dist/knowledge/repository-translation.js +1 -445
- package/dist/knowledge/reputation-rules.js +1 -99
- package/dist/knowledge/resource-risk.js +1 -157
- package/dist/knowledge/reward-confirm.js +1 -526
- package/dist/knowledge/reward-context.js +1 -504
- package/dist/knowledge/reward-ledger.js +1 -502
- package/dist/knowledge/reward-puzzle.js +1 -300
- package/dist/knowledge/reward-risk.js +1 -627
- package/dist/knowledge/reward-templates.js +1 -197
- package/dist/knowledge/reward-translation.js +1 -501
- package/dist/knowledge/safety-rules.js +1 -404
- package/dist/knowledge/scenario-modes.js +1 -321
- package/dist/knowledge/service-confirm.js +1 -807
- package/dist/knowledge/service-context.js +1 -403
- package/dist/knowledge/service-ledger.js +1 -609
- package/dist/knowledge/service-puzzle.js +1 -236
- package/dist/knowledge/service-risk.js +1 -651
- package/dist/knowledge/service-templates.js +1 -456
- package/dist/knowledge/service-translation.js +1 -622
- package/dist/knowledge/template-registry.js +1 -353
- package/dist/knowledge/tool-constraints.js +1 -195
- package/dist/knowledge/tools-reference.js +1 -178
- package/dist/knowledge/treasury-confirm.js +1 -512
- package/dist/knowledge/treasury-context.js +1 -363
- package/dist/knowledge/treasury-ledger.js +1 -300
- package/dist/knowledge/treasury-puzzle.js +1 -216
- package/dist/knowledge/treasury-risk.js +1 -440
- package/dist/knowledge/treasury-templates.js +1 -358
- package/dist/knowledge/treasury-translation.js +1 -498
- package/dist/knowledge/trust-metrics.js +1 -198
- package/dist/knowledge/util-risk.js +1 -135
- package/dist/loop-engineering/aggregate.js +1 -132
- package/dist/loop-engineering/context-collect.js +1 -83
- package/dist/loop-engineering/diagnose.js +1 -273
- package/dist/loop-engineering/improve.js +1 -405
- package/dist/loop-engineering/index.js +1 -4
- package/dist/loop-engineering/pipeline.js +1 -56
- package/dist/mode-market/index.js +1 -3
- package/dist/mode-market/registry.js +1 -124
- package/dist/mode-market/review.js +1 -214
- package/dist/mode-market/submission.js +1 -85
- package/dist/participation/collaborator-interest.d.ts +23 -0
- package/dist/participation/collaborator-interest.js +1 -0
- package/dist/participation/customer-interest.d.ts +25 -0
- package/dist/participation/customer-interest.js +1 -0
- package/dist/participation/merchant-interest.js +1 -100
- package/dist/participation/radar-core.d.ts +13 -3
- package/dist/participation/radar-core.js +1 -269
- package/dist/participation/supplier-interest.d.ts +25 -0
- package/dist/participation/supplier-interest.js +1 -0
- package/dist/persona/analyzer.js +1 -66
- package/dist/persona/bridge.js +1 -86
- package/dist/persona/defaults.js +1 -195
- package/dist/persona/experience-bridge.js +1 -23
- package/dist/persona/index.js +1 -71
- package/dist/persona/model.js +1 -111
- package/dist/persona/store.js +1 -62
- package/dist/persona/types.d.ts +3 -1
- package/dist/persona/types.js +1 -5
- package/dist/project/business-puzzle.js +1 -383
- package/dist/project/context-assembly.js +1 -254
- package/dist/project/deployment-bridge.js +1 -120
- package/dist/project/deployment-doc.js +1 -1126
- package/dist/project/edit-planner.js +1 -1342
- package/dist/project/evaluation.js +1 -2011
- package/dist/project/game-theory.js +1 -177
- package/dist/project/graph-builder.js +1 -656
- package/dist/project/graph.js +1 -340
- package/dist/project/handlers.js +1 -1784
- package/dist/project/index.d.ts +1 -0
- package/dist/project/index.js +1 -301
- package/dist/project/intent-analyzer.js +1 -149
- package/dist/project/machine-nodes.js +1 -36
- package/dist/project/merchant-guide.js +1 -264
- package/dist/project/migration.js +1 -125
- package/dist/project/mode-actions.js +1 -309
- package/dist/project/namespace.js +1 -206
- package/dist/project/participation-radar.js +1 -428
- package/dist/project/pipeline-actions.js +1 -109
- package/dist/project/project-store.js +1 -422
- package/dist/project/query.js +1 -153
- package/dist/project/reverse-mapping.d.ts +34 -0
- package/dist/project/reverse-mapping.js +1 -0
- package/dist/project/risk-aggregator.js +1 -295
- package/dist/project/rollback-policy.js +1 -290
- package/dist/project/semantic-assembler.js +1 -345
- package/dist/project/semantic-graph.js +1 -292
- package/dist/project/stage-gate.js +1 -369
- package/dist/project/substep-trace.js +1 -332
- package/dist/project/task-tracker.js +1 -78
- package/dist/role/derivation.d.ts +18 -0
- package/dist/role/derivation.js +1 -0
- package/dist/role/index.d.ts +5 -0
- package/dist/role/index.js +1 -0
- package/dist/role/model.d.ts +8 -0
- package/dist/role/model.js +1 -0
- package/dist/role/resolution.d.ts +11 -0
- package/dist/role/resolution.js +1 -0
- package/dist/role/types.d.ts +11 -0
- package/dist/role/types.js +1 -0
- package/dist/rules.js +1 -52
- package/dist/safety/confirm-gate.js +1 -88
- package/dist/safety/index.js +1 -3
- package/dist/safety/preview.js +1 -52
- package/dist/schema/call/allocation.js +1 -34
- package/dist/schema/call/arbitration.js +1 -113
- package/dist/schema/call/base.d.ts +15 -15
- package/dist/schema/call/base.js +1 -370
- package/dist/schema/call/bridge-handler.js +1 -265
- package/dist/schema/call/bridge.d.ts +7 -7
- package/dist/schema/call/bridge.js +1 -458
- package/dist/schema/call/contact.js +1 -37
- package/dist/schema/call/demand.js +1 -47
- package/dist/schema/call/guard.js +1 -161
- package/dist/schema/call/handler.js +1 -322
- package/dist/schema/call/index.js +1 -20
- package/dist/schema/call/machine.js +1 -193
- package/dist/schema/call/order.js +1 -35
- package/dist/schema/call/payment.js +1 -37
- package/dist/schema/call/permission-handler.js +1 -54
- package/dist/schema/call/permission.js +1 -105
- package/dist/schema/call/personal.js +1 -78
- package/dist/schema/call/progress.js +1 -47
- package/dist/schema/call/proof.js +1 -33
- package/dist/schema/call/repository.js +1 -77
- package/dist/schema/call/reward.js +1 -30
- package/dist/schema/call/semantic.js +1 -1679
- package/dist/schema/call/service.js +1 -184
- package/dist/schema/call/treasury.js +1 -71
- package/dist/schema/common/index.js +1 -407
- package/dist/schema/config/index.js +1 -68
- package/dist/schema/evaluation/index.d.ts +213 -16
- package/dist/schema/evaluation/index.js +1 -356
- package/dist/schema/index.js +1 -17
- package/dist/schema/intent-radar/index.d.ts +13 -13
- package/dist/schema/intent-radar/index.js +1 -89
- package/dist/schema/local/index.d.ts +21 -21
- package/dist/schema/local/index.js +1 -927
- package/dist/schema/local/wip.js +1 -187
- package/dist/schema/messenger/index.d.ts +7 -7
- package/dist/schema/messenger/index.js +1 -475
- package/dist/schema/operations.d.ts +7 -7
- package/dist/schema/operations.js +1 -520
- package/dist/schema/persona/index.d.ts +54 -54
- package/dist/schema/persona/index.js +1 -148
- package/dist/schema/project/index.d.ts +94 -48
- package/dist/schema/project/index.js +1 -2057
- package/dist/schema/query/index.d.ts +423 -7
- package/dist/schema/query/index.js +1 -1646
- package/dist/schema/schema-query/index.js +1 -104
- package/dist/schema/schema-version.js +1 -76
- package/dist/schema/sync-layer4.js +1 -286
- package/dist/schema/task-status.js +1 -36
- package/dist/schema/trust/index.js +1 -314
- package/dist/schema/utils/guard-parser.js +1 -419
- package/dist/schema/utils/guard-query-utils.js +1 -46
- package/dist/schema/utils/node-parser.js +1 -369
- package/dist/schema/utils/object-type-utils.js +1 -35
- package/dist/schema/utils/permission-index-utils.js +1 -7
- package/dist/schema/utils/permission-machine-check.js +1 -121
- package/dist/schema/utils/skills-recommendation.js +1 -77
- package/dist/schema-query/index.js +1 -810
- package/dist/schemas/account_operation.output.json +5 -2
- package/dist/schemas/bridge_operation.output.json +5 -2
- package/dist/schemas/evaluation_operation.output.json +112 -7
- package/dist/schemas/evaluation_operation.schema.json +93 -6
- package/dist/schemas/index.json +1 -1
- package/dist/schemas/intent_radar.output.json +4 -1
- package/dist/schemas/intent_radar.schema.json +4 -1
- package/dist/schemas/local_info_operation.output.json +5 -2
- package/dist/schemas/local_mark_operation.output.json +5 -2
- package/dist/schemas/messenger_operation.output.json +5 -2
- package/dist/schemas/onchain_events.output.json +5 -2
- package/dist/schemas/onchain_operations.output.json +5 -2
- package/dist/schemas/onchain_operations.schema.json +4 -4
- package/dist/schemas/onchain_operations_allocation.schema.json +1 -1
- package/dist/schemas/onchain_operations_machine.schema.json +2 -2
- package/dist/schemas/onchain_operations_service.schema.json +1 -1
- package/dist/schemas/onchain_table_data.output.json +6 -3
- package/dist/schemas/persona_operation.output.json +4 -1
- package/dist/schemas/persona_operation.schema.json +4 -1
- package/dist/schemas/project_operation.output.json +28 -8
- package/dist/schemas/query_toolkit.output.json +8 -5
- package/dist/schemas/wowok_buildin_info.output.json +132 -0
- package/dist/schemas/wowok_buildin_info.schema.json +14 -0
- package/dist/telemetry/index.js +1 -112
- package/dist/telemetry/redact.js +1 -23
- package/dist/telemetry/storage.js +1 -80
- package/dist/tools/handlers/bridge.js +1 -1
- package/dist/tools/handlers/config.js +1 -74
- package/dist/tools/handlers/evaluation.js +1 -123
- package/dist/tools/handlers/file-export.js +1 -90
- package/dist/tools/handlers/intent-radar.js +1 -76
- package/dist/tools/handlers/local.js +1 -53
- package/dist/tools/handlers/messenger.js +1 -188
- package/dist/tools/handlers/onchain.js +1 -1180
- package/dist/tools/handlers/persona.js +1 -89
- package/dist/tools/handlers/project.js +1 -211
- package/dist/tools/handlers/query.js +1 -434
- package/dist/tools/handlers/schema-query.js +1 -176
- package/dist/tools/handlers/task-status.js +1 -26
- package/dist/tools/handlers/trust.js +1 -380
- package/dist/tools/handlers/wip.js +1 -90
- package/dist/tools/index.js +1 -1382
- package/dist/tools/retry.js +1 -85
- package/dist/tools/rules-hook.js +1 -23
- package/dist/tools/shared.js +1 -130
- package/dist/tools/types.js +1 -1
- package/dist/tools/upgrade-check.d.ts +19 -0
- package/dist/tools/upgrade-check.js +1 -0
- package/dist/tools/wip-deploy-assist.js +1 -306
- package/dist/tools/wrap.js +1 -500
- package/package.json +4 -2
package/dist/config/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export*from'./runtime.js';
|
package/dist/config/runtime.js
CHANGED
|
@@ -1,238 +1 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { dirname, join } from "path";
|
|
3
|
-
import { getWowMcpDir } from "@wowok/wowok";
|
|
4
|
-
export const SERVICE_REGISTRY = [
|
|
5
|
-
{
|
|
6
|
-
name: "confirm_gate",
|
|
7
|
-
description: "Security confirmation gate — prompts user confirmation before amount, default account, publish, or irreversible operations",
|
|
8
|
-
defaultEnabled: true,
|
|
9
|
-
envVar: "WOWOK_CONFIRM_GATE",
|
|
10
|
-
remindOnToggle: true,
|
|
11
|
-
},
|
|
12
|
-
{
|
|
13
|
-
name: "project_service",
|
|
14
|
-
description: "Project namespace + object dependency graph — auto-injects project:/type: tags, maintains DAG",
|
|
15
|
-
defaultEnabled: true,
|
|
16
|
-
envVar: "WOWOK_PROJECT_SERVICE",
|
|
17
|
-
remindOnToggle: true,
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
name: "harness",
|
|
21
|
-
description: "L4 Harness verify/recover loop — automatically validates expected results before and after operations. GLM5: default ON with tiered enforcement (off/lightweight/full).",
|
|
22
|
-
defaultEnabled: true,
|
|
23
|
-
envVar: "WOWOK_HARNESS_ENABLED",
|
|
24
|
-
remindOnToggle: true,
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
name: "graph_persist",
|
|
28
|
-
description: "Object graph persistence — saves in-memory DAG to local file, retained across sessions",
|
|
29
|
-
defaultEnabled: false,
|
|
30
|
-
envVar: "WOWOK_GRAPH_PERSIST",
|
|
31
|
-
remindOnToggle: true,
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
name: "semantic_rich",
|
|
35
|
-
description: "Semantic layer enrichment — attaches extra reminder info such as service_status in responses",
|
|
36
|
-
defaultEnabled: true,
|
|
37
|
-
envVar: "WOWOK_SEMANTIC_RICH",
|
|
38
|
-
remindOnToggle: false,
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
name: "experience_layer",
|
|
42
|
-
description: "Real-time experience layer — intent distillation + user profiling + experience reuse, gets smarter with usage",
|
|
43
|
-
defaultEnabled: true,
|
|
44
|
-
envVar: "WOWOK_EXPERIENCE_LAYER",
|
|
45
|
-
remindOnToggle: true,
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
name: "customer_intelligence",
|
|
49
|
-
description: "Buyer intelligence (Phase 3 C-3) — attaches risk reminders, preference matching, and blocking alerts in semantic.customer_advice for order/query operations",
|
|
50
|
-
defaultEnabled: true,
|
|
51
|
-
envVar: "WOWOK_CUSTOMER_INTELLIGENCE",
|
|
52
|
-
remindOnToggle: true,
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
name: "order_monitor",
|
|
56
|
-
description: "In-progress order monitoring (Phase 3 C-3.2) — detects Progress stalls / compensation balance changes / Messenger timeouts; disabled by default, must be actively enabled",
|
|
57
|
-
defaultEnabled: false,
|
|
58
|
-
envVar: "WOWOK_ORDER_MONITOR",
|
|
59
|
-
remindOnToggle: true,
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
name: "industry_evolution",
|
|
63
|
-
description: "Industry specialization evolution (Phase 4) — AI-Human-WOW flywheel loop: captures industry signals + updates knowledge + injects evolution context",
|
|
64
|
-
defaultEnabled: true,
|
|
65
|
-
envVar: "WOWOK_INDUSTRY_EVOLUTION",
|
|
66
|
-
remindOnToggle: true,
|
|
67
|
-
},
|
|
68
|
-
];
|
|
69
|
-
const SERVICE_MAP = new Map(SERVICE_REGISTRY.map((s) => [s.name, s]));
|
|
70
|
-
const runtimeOverrides = new Map();
|
|
71
|
-
let harnessTierOverride;
|
|
72
|
-
function configFilePath() {
|
|
73
|
-
return join(getWowMcpDir(), "runtime-config.json");
|
|
74
|
-
}
|
|
75
|
-
function isPersistEnabled() {
|
|
76
|
-
const v = process.env.WOWOK_RUNTIME_CONFIG_PERSIST;
|
|
77
|
-
return v === "1" || v === "true";
|
|
78
|
-
}
|
|
79
|
-
function loadPersisted() {
|
|
80
|
-
if (!isPersistEnabled())
|
|
81
|
-
return null;
|
|
82
|
-
try {
|
|
83
|
-
const path = configFilePath();
|
|
84
|
-
if (!existsSync(path))
|
|
85
|
-
return null;
|
|
86
|
-
const raw = readFileSync(path, "utf-8");
|
|
87
|
-
const parsed = JSON.parse(raw);
|
|
88
|
-
if (parsed && typeof parsed === "object" && parsed.services) {
|
|
89
|
-
return parsed;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
catch { }
|
|
93
|
-
return null;
|
|
94
|
-
}
|
|
95
|
-
function savePersisted() {
|
|
96
|
-
if (!isPersistEnabled())
|
|
97
|
-
return;
|
|
98
|
-
try {
|
|
99
|
-
const path = configFilePath();
|
|
100
|
-
const dir = dirname(path);
|
|
101
|
-
if (!existsSync(dir))
|
|
102
|
-
mkdirSync(dir, { recursive: true });
|
|
103
|
-
const data = {
|
|
104
|
-
version: 2,
|
|
105
|
-
services: Object.fromEntries(runtimeOverrides),
|
|
106
|
-
harness_tier: harnessTierOverride,
|
|
107
|
-
updatedAt: Date.now(),
|
|
108
|
-
};
|
|
109
|
-
writeFileSync(path, JSON.stringify(data, null, 2), "utf-8");
|
|
110
|
-
}
|
|
111
|
-
catch { }
|
|
112
|
-
}
|
|
113
|
-
{
|
|
114
|
-
const persisted = loadPersisted();
|
|
115
|
-
if (persisted) {
|
|
116
|
-
for (const [name, enabled] of Object.entries(persisted.services)) {
|
|
117
|
-
if (SERVICE_MAP.has(name)) {
|
|
118
|
-
runtimeOverrides.set(name, enabled);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
if (persisted.harness_tier) {
|
|
122
|
-
harnessTierOverride = persisted.harness_tier;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
export function getHarnessTier() {
|
|
127
|
-
if (!isEnabled("harness"))
|
|
128
|
-
return "off";
|
|
129
|
-
if (harnessTierOverride)
|
|
130
|
-
return harnessTierOverride;
|
|
131
|
-
const envVal = process.env.WOWOK_HARNESS_TIER;
|
|
132
|
-
if (envVal === "off" || envVal === "lightweight" || envVal === "full") {
|
|
133
|
-
return envVal;
|
|
134
|
-
}
|
|
135
|
-
return "lightweight";
|
|
136
|
-
}
|
|
137
|
-
export function setHarnessTier(tier) {
|
|
138
|
-
harnessTierOverride = tier;
|
|
139
|
-
savePersisted();
|
|
140
|
-
}
|
|
141
|
-
export function resetHarnessTier() {
|
|
142
|
-
harnessTierOverride = undefined;
|
|
143
|
-
savePersisted();
|
|
144
|
-
}
|
|
145
|
-
export function isEnabled(service) {
|
|
146
|
-
if (runtimeOverrides.has(service)) {
|
|
147
|
-
return runtimeOverrides.get(service);
|
|
148
|
-
}
|
|
149
|
-
const meta = SERVICE_MAP.get(service);
|
|
150
|
-
if (meta) {
|
|
151
|
-
const envVal = process.env[meta.envVar];
|
|
152
|
-
if (envVal !== undefined) {
|
|
153
|
-
if (envVal === "0" || envVal === "false")
|
|
154
|
-
return false;
|
|
155
|
-
if (envVal === "1" || envVal === "true")
|
|
156
|
-
return true;
|
|
157
|
-
}
|
|
158
|
-
return meta.defaultEnabled;
|
|
159
|
-
}
|
|
160
|
-
return false;
|
|
161
|
-
}
|
|
162
|
-
export function setEnabled(service, enabled) {
|
|
163
|
-
runtimeOverrides.set(service, enabled);
|
|
164
|
-
savePersisted();
|
|
165
|
-
}
|
|
166
|
-
export function toggle(service) {
|
|
167
|
-
const newState = !isEnabled(service);
|
|
168
|
-
setEnabled(service, newState);
|
|
169
|
-
return newState;
|
|
170
|
-
}
|
|
171
|
-
export function reset(service) {
|
|
172
|
-
runtimeOverrides.delete(service);
|
|
173
|
-
savePersisted();
|
|
174
|
-
}
|
|
175
|
-
export function listServices() {
|
|
176
|
-
return SERVICE_REGISTRY.map((meta) => {
|
|
177
|
-
const overridden = runtimeOverrides.has(meta.name);
|
|
178
|
-
const enabled = isEnabled(meta.name);
|
|
179
|
-
return {
|
|
180
|
-
name: meta.name,
|
|
181
|
-
enabled,
|
|
182
|
-
defaultEnabled: meta.defaultEnabled,
|
|
183
|
-
description: meta.description,
|
|
184
|
-
overridden,
|
|
185
|
-
envVar: meta.envVar,
|
|
186
|
-
reminder: meta.remindOnToggle ? buildReminder(meta.name, enabled) : undefined,
|
|
187
|
-
};
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
export function getServiceInfo(service) {
|
|
191
|
-
const meta = SERVICE_MAP.get(service);
|
|
192
|
-
if (!meta)
|
|
193
|
-
return undefined;
|
|
194
|
-
return {
|
|
195
|
-
name: meta.name,
|
|
196
|
-
enabled: isEnabled(meta.name),
|
|
197
|
-
defaultEnabled: meta.defaultEnabled,
|
|
198
|
-
description: meta.description,
|
|
199
|
-
overridden: runtimeOverrides.has(meta.name),
|
|
200
|
-
envVar: meta.envVar,
|
|
201
|
-
reminder: meta.remindOnToggle ? buildReminder(meta.name, isEnabled(meta.name)) : undefined,
|
|
202
|
-
};
|
|
203
|
-
}
|
|
204
|
-
function buildReminder(service, enabled) {
|
|
205
|
-
switch (service) {
|
|
206
|
-
case "confirm_gate":
|
|
207
|
-
return enabled
|
|
208
|
-
? "ConfirmGate is ON: prompts confirmation before amount, default account, publish, or irreversible operations. To disable, call config_operation toggle confirm_gate."
|
|
209
|
-
: "ConfirmGate is OFF: operations will execute directly without confirmation. Note the risk of irreversible operations. To re-enable, call config_operation toggle confirm_gate.";
|
|
210
|
-
case "project_service":
|
|
211
|
-
return enabled
|
|
212
|
-
? "ProjectService is ON: auto-injects project:/type: tags on object creation and maintains the dependency graph. To disable, call config_operation toggle project_service."
|
|
213
|
-
: "ProjectService is OFF: objects will not be automatically tagged with project membership. To enable, call config_operation toggle project_service.";
|
|
214
|
-
case "harness":
|
|
215
|
-
return enabled
|
|
216
|
-
? `Harness is ON (tier: ${getHarnessTier()}): automatically validates expected results around operations. lightweight=Plan+Verify; full=Plan+Expect+Verify+Recover+Checkpoint. To change tier, set WOWOK_HARNESS_TIER or call harness API. To disable, call config_operation toggle harness.`
|
|
217
|
-
: "Harness is OFF. GLM5 recommends keeping it ON (lightweight tier) for safety. To enable, call config_operation toggle harness.";
|
|
218
|
-
case "graph_persist":
|
|
219
|
-
return enabled
|
|
220
|
-
? "Graph persistence is ON: the object dependency graph will be saved to ~/.wow/mcp/project-graph.json."
|
|
221
|
-
: "Graph persistence is OFF: the dependency graph exists only in memory and will be lost on process restart. To persist, call config_operation toggle graph_persist.";
|
|
222
|
-
case "semantic_rich":
|
|
223
|
-
return undefined;
|
|
224
|
-
case "experience_layer":
|
|
225
|
-
return enabled
|
|
226
|
-
? "Experience layer is ON: provides suggestions in semantic.experience based on historical operation experience. To disable, call config_operation toggle experience_layer."
|
|
227
|
-
: "Experience layer is OFF: no experience suggestions will be attached. To enable, call config_operation toggle experience_layer.";
|
|
228
|
-
case "customer_intelligence":
|
|
229
|
-
return enabled
|
|
230
|
-
? "Customer intelligence is ON: order/query operations will attach risk/preference/blocking alerts in semantic.customer_advice. To disable, call config_operation toggle customer_intelligence."
|
|
231
|
-
: "Customer intelligence is OFF: semantic.customer_advice will not be populated. To enable, call config_operation toggle customer_intelligence.";
|
|
232
|
-
case "order_monitor":
|
|
233
|
-
return enabled
|
|
234
|
-
? "Order monitor is ON: detects Progress stalls, compensation balance changes, and Messenger timeouts. To disable, call config_operation toggle order_monitor."
|
|
235
|
-
: "Order monitor is OFF: will not actively detect order anomalies. To enable (recommended when there are active orders), call config_operation toggle order_monitor.";
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
export const RUNTIME_CONFIG_VERSION = 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':'project_service','description':'Project\x20namespace\x20+\x20object\x20dependency\x20graph\x20—\x20auto-injects\x20project:/type:\x20tags,\x20maintains\x20DAG','defaultEnabled':!![],'envVar':'WOWOK_PROJECT_SERVICE','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':'graph_persist','description':'Object\x20graph\x20persistence\x20—\x20saves\x20in-memory\x20DAG\x20to\x20local\x20file,\x20retained\x20across\x20sessions','defaultEnabled':![],'envVar':'WOWOK_GRAPH_PERSIST','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(){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'project_service':return b?'ProjectService\x20is\x20ON:\x20auto-injects\x20project:/type:\x20tags\x20on\x20object\x20creation\x20and\x20maintains\x20the\x20dependency\x20graph.\x20To\x20disable,\x20call\x20config_operation\x20toggle\x20project_service.':'ProjectService\x20is\x20OFF:\x20objects\x20will\x20not\x20be\x20automatically\x20tagged\x20with\x20project\x20membership.\x20To\x20enable,\x20call\x20config_operation\x20toggle\x20project_service.';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+Checkpoint.\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'graph_persist':return b?'Graph\x20persistence\x20is\x20ON:\x20the\x20object\x20dependency\x20graph\x20will\x20be\x20saved\x20to\x20~/.wow/mcp/project-graph.json.':'Graph\x20persistence\x20is\x20OFF:\x20the\x20dependency\x20graph\x20exists\x20only\x20in\x20memory\x20and\x20will\x20be\x20lost\x20on\x20process\x20restart.\x20To\x20persist,\x20call\x20config_operation\x20toggle\x20graph_persist.';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,130 +1 @@
|
|
|
1
|
-
import { assessRisk,
|
|
2
|
-
import { registryDisplayHint } from "../knowledge/fund-layer.js";
|
|
3
|
-
export function assemblePreorderAdvice(input) {
|
|
4
|
-
const { puzzle } = input;
|
|
5
|
-
const risk = input.risk ?? assessRisk(puzzle);
|
|
6
|
-
const industry = input.industry ?? inferIndustry(puzzle);
|
|
7
|
-
const scenarios = detectScenarios(puzzle);
|
|
8
|
-
const strategies = scenarios
|
|
9
|
-
.slice(0, input.max_strategies ?? 3)
|
|
10
|
-
.map(s => recommendStrategy(s, { puzzle, prefs: input.preferences }));
|
|
11
|
-
let preferenceMatch;
|
|
12
|
-
if (input.preferences) {
|
|
13
|
-
const service = toMatchingService(puzzle, risk, input.matching_overrides);
|
|
14
|
-
preferenceMatch = matchServiceToPreferences(service, input.preferences);
|
|
15
|
-
}
|
|
16
|
-
let industryRisks;
|
|
17
|
-
if (industry) {
|
|
18
|
-
industryRisks = assessIndustryRisks(puzzle, industry);
|
|
19
|
-
}
|
|
20
|
-
const reminderCtx = buildReminderContext(puzzle, risk, input.reminder_overrides);
|
|
21
|
-
const reminders = sortAndCapReminders(generateReminders(reminderCtx))
|
|
22
|
-
.slice(0, input.max_reminders ?? 8);
|
|
23
|
-
const blocking = getBlockingReminders(reminders);
|
|
24
|
-
const confidence = computeConfidence(puzzle, risk, preferenceMatch);
|
|
25
|
-
return {
|
|
26
|
-
service_id: puzzle.service_id,
|
|
27
|
-
risk,
|
|
28
|
-
industry,
|
|
29
|
-
strategies,
|
|
30
|
-
preference_match: preferenceMatch,
|
|
31
|
-
industry_risks: industryRisks,
|
|
32
|
-
reminders,
|
|
33
|
-
blocking_reminders: blocking,
|
|
34
|
-
confidence,
|
|
35
|
-
summary: buildSummary(puzzle, risk, industry, strategies, preferenceMatch, blocking, confidence),
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
function toMatchingService(puzzle, risk, overrides) {
|
|
39
|
-
const basics = puzzle.service_basics;
|
|
40
|
-
const fund = puzzle.fund_safety;
|
|
41
|
-
const trust = puzzle.trust_signals;
|
|
42
|
-
const behavior = puzzle.merchant_behavior;
|
|
43
|
-
return {
|
|
44
|
-
service_id: puzzle.service_id,
|
|
45
|
-
price: basics.price_raw,
|
|
46
|
-
token_type: basics.token_type ?? "",
|
|
47
|
-
avg_market_price: puzzle.market_context?.avg_price,
|
|
48
|
-
merchant_order_history_count: behavior?.total_orders ?? 0,
|
|
49
|
-
merchant_age: behavior
|
|
50
|
-
? behavior.total_orders >= 50 ? "established" : "emerging"
|
|
51
|
-
: "unknown",
|
|
52
|
-
has_arbitration: (trust?.arbitration_count ?? 0) > 0,
|
|
53
|
-
has_compensation_fund: fund ? fund.compensation_ratio > 0 : false,
|
|
54
|
-
has_reward_activity: false,
|
|
55
|
-
has_discount: false,
|
|
56
|
-
risk_score: risk.total,
|
|
57
|
-
trust_score: trust?.trust_score ?? 50,
|
|
58
|
-
requires_messenger: false,
|
|
59
|
-
after_sales_support_level: trust?.has_messenger ? "full" : "minimal",
|
|
60
|
-
...overrides,
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
function buildReminderContext(puzzle, risk, overrides) {
|
|
64
|
-
const trust = puzzle.trust_signals;
|
|
65
|
-
const fund = puzzle.fund_safety;
|
|
66
|
-
const wf = puzzle.workflow_analysis;
|
|
67
|
-
return {
|
|
68
|
-
stage: "preorder",
|
|
69
|
-
service_id: puzzle.service_id,
|
|
70
|
-
review_count: trust?.review_total,
|
|
71
|
-
like_rate: trust?.like_rate,
|
|
72
|
-
avg_market_price: puzzle.market_context?.avg_price,
|
|
73
|
-
service_price: puzzle.service_basics.price_raw,
|
|
74
|
-
token: registryDisplayHint(puzzle.service_basics.token_type),
|
|
75
|
-
has_arbitration: (trust?.arbitration_count ?? 0) > 0,
|
|
76
|
-
has_compensation: fund ? fund.compensation_ratio > 0 : undefined,
|
|
77
|
-
compensation_ratio: fund?.compensation_ratio,
|
|
78
|
-
risk_score: risk.total,
|
|
79
|
-
risk_level: risk.level,
|
|
80
|
-
has_refund_path: wf?.has_refund_path,
|
|
81
|
-
has_messenger: trust?.has_messenger,
|
|
82
|
-
customer_required: puzzle.service_basics.customer_required,
|
|
83
|
-
...overrides,
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
function computeConfidence(puzzle, risk, match) {
|
|
87
|
-
const base = Math.max(0, Math.min(100, 100 - risk.total));
|
|
88
|
-
const userAdj = puzzle.user_metrics?.adjustment ?? 0;
|
|
89
|
-
const prefNudge = match ? Math.round((match.score - 50) / 10) : 0;
|
|
90
|
-
const score = Math.max(0, Math.min(100, base + userAdj + prefNudge));
|
|
91
|
-
const parts = [`base ${base} (= 100 - risk ${risk.total})`];
|
|
92
|
-
if (userAdj !== 0)
|
|
93
|
-
parts.push(`your custom metrics ${userAdj > 0 ? "+" : ""}${userAdj}`);
|
|
94
|
-
if (prefNudge !== 0)
|
|
95
|
-
parts.push(`preference fit ${prefNudge > 0 ? "+" : ""}${prefNudge}`);
|
|
96
|
-
return {
|
|
97
|
-
score,
|
|
98
|
-
base,
|
|
99
|
-
user_adjustment: userAdj,
|
|
100
|
-
preference_nudge: prefNudge,
|
|
101
|
-
explanation: `Confidence ${score}/100 = ${parts.join(" ")}. ` +
|
|
102
|
-
`This is evidence aggregation, not advice — the decision is yours.`,
|
|
103
|
-
};
|
|
104
|
-
}
|
|
105
|
-
function buildSummary(puzzle, risk, industry, strategies, match, blocking, confidence) {
|
|
106
|
-
const parts = [
|
|
107
|
-
`Order confidence ${confidence.score}/100 (risk ${risk.total}/100, level ${risk.level})` +
|
|
108
|
-
(industry ? ` for ${industry} service` : "") +
|
|
109
|
-
`. Information completeness ${Math.round(puzzle.completeness * 100)}%.`,
|
|
110
|
-
];
|
|
111
|
-
if (blocking.length > 0) {
|
|
112
|
-
parts.push(`⚠️ ${blocking.length} blocking concern(s): ${blocking.map(r => r.message).join("; ")}`);
|
|
113
|
-
}
|
|
114
|
-
if (risk.red_flags.length > 0) {
|
|
115
|
-
parts.push(`Red flags: ${risk.red_flags.slice(0, 3).join("; ")}.`);
|
|
116
|
-
}
|
|
117
|
-
if (strategies.length > 0) {
|
|
118
|
-
const top = strategies[0];
|
|
119
|
-
parts.push(`Key protection (${top.scenario}): ${top.strategy.user_strategy}`);
|
|
120
|
-
}
|
|
121
|
-
if (match) {
|
|
122
|
-
parts.push(match.mismatches.length > 0
|
|
123
|
-
? `Preference mismatches: ${match.mismatches.slice(0, 2).join("; ")}.`
|
|
124
|
-
: `Service matches your preferences (score ${match.score}/100).`);
|
|
125
|
-
}
|
|
126
|
-
if (puzzle.gaps.length > 0) {
|
|
127
|
-
parts.push(`Missing information: ${puzzle.gaps.join(", ")} — consider asking the merchant via Messenger before ordering.`);
|
|
128
|
-
}
|
|
129
|
-
return parts.join(" ");
|
|
130
|
-
}
|
|
1
|
+
import{assessRisk,detectScenarios,recommendStrategy,matchServiceToPreferences,assessIndustryRisks,inferIndustry,generateReminders,getBlockingReminders,sortAndCapReminders}from'./index.js';import{registryDisplayHint}from'../knowledge/fund-layer.js';export function assemblePreorderAdvice(a){const {puzzle:b}=a,c=a['risk']??assessRisk(b),d=a['industry']??inferIndustry(b),e=detectScenarios(b),f=e['slice'](0x0,a['max_strategies']??0x3)['map'](m=>recommendStrategy(m,{'puzzle':b,'prefs':a['preferences']}));let g;if(a['preferences']){const m=toMatchingService(b,c,a['matching_overrides']);g=matchServiceToPreferences(m,a['preferences']);}let h;d&&(h=assessIndustryRisks(b,d));const i=buildReminderContext(b,c,a['reminder_overrides']),j=sortAndCapReminders(generateReminders(i))['slice'](0x0,a['max_reminders']??0x8),k=getBlockingReminders(j),l=computeConfidence(b,c,g);return{'service_id':b['service_id'],'risk':c,'industry':d,'strategies':f,'preference_match':g,'industry_risks':h,'reminders':j,'blocking_reminders':k,'confidence':l,'summary':buildSummary(b,c,d,f,g,k,l)};}function toMatchingService(a,b,c){const d=a['service_basics'],e=a['fund_safety'],f=a['trust_signals'],g=a['merchant_behavior'];return{'service_id':a['service_id'],'price':d['price_raw'],'token_type':d['token_type']??'','avg_market_price':a['market_context']?.['avg_price'],'merchant_order_history_count':g?.['total_orders']??0x0,'merchant_age':g?g['total_orders']>=0x32?'established':'emerging':'unknown','has_arbitration':(f?.['arbitration_count']??0x0)>0x0,'has_compensation_fund':e?e['compensation_ratio']>0x0:![],'has_reward_activity':![],'has_discount':![],'risk_score':b['total'],'trust_score':f?.['trust_score']??0x32,'requires_messenger':![],'after_sales_support_level':f?.['has_messenger']?'full':'minimal',...c};}function buildReminderContext(a,b,c){const d=a['trust_signals'],e=a['fund_safety'],f=a['workflow_analysis'];return{'stage':'preorder','service_id':a['service_id'],'review_count':d?.['review_total'],'like_rate':d?.['like_rate'],'avg_market_price':a['market_context']?.['avg_price'],'service_price':a['service_basics']['price_raw'],'token':registryDisplayHint(a['service_basics']['token_type']),'has_arbitration':(d?.['arbitration_count']??0x0)>0x0,'has_compensation':e?e['compensation_ratio']>0x0:undefined,'compensation_ratio':e?.['compensation_ratio'],'risk_score':b['total'],'risk_level':b['level'],'has_refund_path':f?.['has_refund_path'],'has_messenger':d?.['has_messenger'],'customer_required':a['service_basics']['customer_required'],...c};}function computeConfidence(a,b,c){const d=Math['max'](0x0,Math['min'](0x64,0x64-b['total'])),e=a['user_metrics']?.['adjustment']??0x0,f=c?Math['round']((c['score']-0x32)/0xa):0x0,g=Math['max'](0x0,Math['min'](0x64,d+e+f)),h=['base\x20'+d+'\x20(=\x20100\x20-\x20risk\x20'+b['total']+')'];if(e!==0x0)h['push']('your\x20custom\x20metrics\x20'+(e>0x0?'+':'')+e);if(f!==0x0)h['push']('preference\x20fit\x20'+(f>0x0?'+':'')+f);return{'score':g,'base':d,'user_adjustment':e,'preference_nudge':f,'explanation':'Confidence\x20'+g+'/100\x20=\x20'+h['join']('\x20')+'.\x20'+'This\x20is\x20evidence\x20aggregation,\x20not\x20advice\x20—\x20the\x20decision\x20is\x20yours.'};}function buildSummary(a,b,c,d,e,f,g){const h=['Order\x20confidence\x20'+g['score']+'/100\x20(risk\x20'+b['total']+'/100,\x20level\x20'+b['level']+')'+(c?'\x20for\x20'+c+'\x20service':'')+('.\x20Information\x20completeness\x20'+Math['round'](a['completeness']*0x64)+'%.')];f['length']>0x0&&h['push']('⚠️\x20'+f['length']+'\x20blocking\x20concern(s):\x20'+f['map'](i=>i['message'])['join'](';\x20'));b['red_flags']['length']>0x0&&h['push']('Red\x20flags:\x20'+b['red_flags']['slice'](0x0,0x3)['join'](';\x20')+'.');if(d['length']>0x0){const i=d[0x0];h['push']('Key\x20protection\x20('+i['scenario']+'):\x20'+i['strategy']['user_strategy']);}return e&&h['push'](e['mismatches']['length']>0x0?'Preference\x20mismatches:\x20'+e['mismatches']['slice'](0x0,0x2)['join'](';\x20')+'.':'Service\x20matches\x20your\x20preferences\x20(score\x20'+e['score']+'/100).'),a['gaps']['length']>0x0&&h['push']('Missing\x20information:\x20'+a['gaps']['join'](',\x20')+'\x20—\x20consider\x20asking\x20the\x20merchant\x20via\x20Messenger\x20before\x20ordering.'),h['join']('\x20');}
|
package/dist/customer/index.js
CHANGED
|
@@ -1,11 +1 @@
|
|
|
1
|
-
export
|
|
2
|
-
export { assembleServiceBasics, assembleWorkflowAnalysis, assembleFundSafety, assembleTrustSignals, assembleMerchantBehavior, assembleMarketContext, assembleInfoPuzzle, assembleUserMetrics, evaluateServiceNesting, } from "./info-puzzle.js";
|
|
3
|
-
export { riskLevelFromScore, riskLevelLabel, riskLevelEmoji, assessRisk, passesRiskThreshold, } from "./risk-assessment.js";
|
|
4
|
-
export { getIndustryRiskChecks, getIndustryNeeds, checkIndustryNeeds, assessIndustryRisks, inferIndustry, } from "./industry-risks.js";
|
|
5
|
-
export { getDefaultPreferences, getIndustryTemplate, inferPreferences, matchServiceToPreferences, mergePreferences, validatePreferences, SUPPORTED_INDUSTRIES, } from "./user-preferences.js";
|
|
6
|
-
export { monitorOrder, sortAlerts, getCriticalAlerts, getActionableAlerts, summarizeAlerts, isBlockingAlert, alertsToReminders, } from "./order-monitor.js";
|
|
7
|
-
export { recommendStrategy, detectScenarios, flowMigrationStrategy, repeatGameStrategy, rightsProtectionStrategy, } from "./order-strategy.js";
|
|
8
|
-
export { generatePostPurchaseAdvice, trackRefund, handleQualityIssue, handleMerchantUnreachable, arbitrationSupport, generateArbitrationTemplate, } from "./post-purchase.js";
|
|
9
|
-
export { generateReminders, sortAndCapReminders, generateMultiStageReminders, isBlocking, getBlockingReminders, summarizeReminders, topReminders, } from "./reminder-system.js";
|
|
10
|
-
export { assemblePreorderAdvice, } from "./customer-advice.js";
|
|
11
|
-
export { buildPreorderComparison, } from "./preorder-compare.js";
|
|
1
|
+
export{CUSTOMER_INTELLIGENCE_VERSION,RISK_LEVELS,RISK_DIMENSION_MAX}from'./types.js';export{assembleServiceBasics,assembleWorkflowAnalysis,assembleFundSafety,assembleTrustSignals,assembleMerchantBehavior,assembleMarketContext,assembleInfoPuzzle,assembleUserMetrics,evaluateServiceNesting}from'./info-puzzle.js';export{riskLevelFromScore,riskLevelLabel,riskLevelEmoji,assessRisk,passesRiskThreshold}from'./risk-assessment.js';export{getIndustryRiskChecks,getIndustryNeeds,checkIndustryNeeds,assessIndustryRisks,inferIndustry}from'./industry-risks.js';export{getDefaultPreferences,getIndustryTemplate,inferPreferences,matchServiceToPreferences,mergePreferences,validatePreferences,SUPPORTED_INDUSTRIES}from'./user-preferences.js';export{monitorOrder,sortAlerts,getCriticalAlerts,getActionableAlerts,summarizeAlerts,isBlockingAlert,alertsToReminders}from'./order-monitor.js';export{recommendStrategy,detectScenarios,flowMigrationStrategy,repeatGameStrategy,rightsProtectionStrategy}from'./order-strategy.js';export{generatePostPurchaseAdvice,trackRefund,handleQualityIssue,handleMerchantUnreachable,arbitrationSupport,generateArbitrationTemplate}from'./post-purchase.js';export{generateReminders,sortAndCapReminders,generateMultiStageReminders,isBlocking,getBlockingReminders,summarizeReminders,topReminders}from'./reminder-system.js';export{assemblePreorderAdvice}from'./customer-advice.js';export{buildPreorderComparison}from'./preorder-compare.js';
|