@wowok/agent-mcp 3.3.1 → 3.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chain-semantics/field-capability.js +1 -1
- package/dist/chain-semantics/freeze-map.js +1 -1
- package/dist/chain-semantics/fund-flow.js +1 -1
- package/dist/chain-semantics/guard-verbs.js +1 -1
- package/dist/chain-semantics/object-graph.js +1 -1
- package/dist/composition/audit.d.ts +5 -0
- package/dist/composition/audit.js +1 -1
- package/dist/composition/blueprint-view.d.ts +0 -1
- package/dist/composition/blueprint-view.js +1 -1
- package/dist/composition/compile.d.ts +5 -3
- package/dist/composition/compile.js +1 -1
- package/dist/composition/inflight.d.ts +32 -4
- package/dist/composition/inflight.js +1 -1
- package/dist/config/judgment.d.ts +111 -1
- package/dist/config/judgment.js +1 -1
- package/dist/customer/industry-risks.js +1 -1
- package/dist/customer/user-preferences.js +1 -1
- package/dist/evaluation/arbitration-game.d.ts +4 -0
- package/dist/evaluation/arbitration-game.js +1 -1
- package/dist/evaluation/builtins/graph-service.js +1 -1
- package/dist/evaluation/builtins/graph-service.spec.js +1 -1
- package/dist/evaluation/game-strategy.d.ts +6 -0
- package/dist/evaluation/game-strategy.js +1 -1
- package/dist/evaluation/node-game.d.ts +4 -0
- package/dist/evaluation/node-game.js +1 -1
- package/dist/evaluation/value-risk.d.ts +8 -0
- package/dist/evaluation/value-risk.js +1 -0
- package/dist/experience/realtime-feedback.js +1 -1
- package/dist/extensions/business-modules.d.ts +7 -2
- package/dist/extensions/business-modules.js +1 -1
- package/dist/extensions/industry-audit.spec.js +1 -1
- package/dist/extensions/industry-pack.d.ts +3 -2
- package/dist/extensions/industry-pack.js +1 -1
- package/dist/extensions/modes.js +1 -1
- package/dist/graph/onchain/analyze.js +1 -1
- package/dist/graph/onchain/analyze.spec.js +1 -1
- package/dist/graph/onchain/expand.js +1 -1
- package/dist/graph/onchain/exposure.js +1 -1
- package/dist/graph/onchain/facet-projection.js +1 -1
- package/dist/graph/onchain/facet-projection.spec.js +1 -1
- package/dist/graph/onchain/facts.d.ts +20 -0
- package/dist/graph/onchain/facts.js +1 -1
- package/dist/graph/onchain/facts.spec.js +1 -1
- package/dist/graph/onchain/object-held-receipts.d.ts +20 -0
- package/dist/graph/onchain/object-held-receipts.js +1 -0
- package/dist/graph/onchain/object-held-receipts.spec.d.ts +1 -0
- package/dist/graph/onchain/object-held-receipts.spec.js +1 -0
- package/dist/graph/onchain/project-relationship.js +1 -1
- package/dist/graph/onchain/sdk-batch.d.ts +1 -0
- package/dist/graph/onchain/sdk-batch.js +1 -1
- package/dist/harness/index.d.ts +1 -0
- package/dist/harness/recover.d.ts +2 -1
- package/dist/harness/recover.js +1 -1
- package/dist/knowledge/acquisition-flywheel.js +1 -1
- package/dist/knowledge/allocation-ledger.d.ts +3 -1
- package/dist/knowledge/allocation-ledger.js +1 -1
- package/dist/knowledge/allocation-puzzle.d.ts +1 -0
- package/dist/knowledge/allocation-puzzle.js +1 -1
- package/dist/knowledge/allocation-risk.d.ts +1 -1
- package/dist/knowledge/allocation-risk.js +1 -1
- package/dist/knowledge/arb-fund-facts.d.ts +12 -0
- package/dist/knowledge/arb-fund-facts.js +1 -1
- package/dist/knowledge/audit-rules.d.ts +4 -3
- package/dist/knowledge/audit-rules.js +1 -1
- package/dist/knowledge/baselines/judgment-baselines.json +502 -81
- package/dist/knowledge/baselines/rules/allocation.json +0 -14
- package/dist/knowledge/baselines/rules/graph.json +4 -4
- package/dist/knowledge/baselines/rules/plan.json +81 -5
- package/dist/knowledge/baselines/rules/reward.json +1 -1
- package/dist/knowledge/builtin-templates.d.ts +9 -1
- package/dist/knowledge/builtin-templates.js +1 -1
- package/dist/knowledge/discount-threshold.js +1 -1
- package/dist/knowledge/event-semantics.js +1 -1
- package/dist/knowledge/game-scenarios.d.ts +21 -0
- package/dist/knowledge/game-scenarios.js +1 -0
- package/dist/knowledge/getting-started.js +1 -1
- package/dist/knowledge/guard-bindings.js +1 -1
- package/dist/knowledge/guard-design-patterns.d.ts +1 -1
- package/dist/knowledge/guard-design-patterns.js +1 -1
- package/dist/knowledge/guard-field-cognition.js +1 -1
- package/dist/knowledge/guard-leg-map.d.ts +5 -0
- package/dist/knowledge/guard-leg-map.js +1 -0
- package/dist/knowledge/guard-lint.js +1 -1
- package/dist/knowledge/guard-puzzle.js +1 -1
- package/dist/knowledge/guard-render.js +1 -1
- package/dist/knowledge/guard-risk.js +1 -1
- package/dist/knowledge/guard-submission-brief.d.ts +5 -0
- package/dist/knowledge/guard-submission-brief.js +1 -1
- package/dist/knowledge/guard-submission-prompt.d.ts +2 -1
- package/dist/knowledge/guard-submission-prompt.js +1 -1
- package/dist/knowledge/guard-templates.d.ts +1 -1
- package/dist/knowledge/guard-templates.js +1 -1
- package/dist/knowledge/guard-translation.js +1 -1
- package/dist/knowledge/index.js +1 -1
- package/dist/knowledge/industry-generalizer.js +1 -1
- package/dist/knowledge/industry-registry.js +1 -1
- package/dist/knowledge/industry-strategy.js +1 -1
- package/dist/knowledge/jsonrpc-enum.js +1 -1
- package/dist/knowledge/onchain-constants.d.ts +4 -2
- package/dist/knowledge/onchain-constants.js +1 -1
- package/dist/knowledge/order-ledger.d.ts +1 -1
- package/dist/knowledge/order-ledger.js +1 -1
- package/dist/knowledge/order-puzzle.d.ts +3 -0
- package/dist/knowledge/order-risk.d.ts +1 -1
- package/dist/knowledge/passport-ledger.d.ts +12 -0
- package/dist/knowledge/passport-ledger.js +1 -1
- package/dist/knowledge/payment-tracker.js +1 -1
- package/dist/knowledge/protocol-facts.d.ts +1 -0
- package/dist/knowledge/protocol-facts.js +1 -1
- package/dist/knowledge/repository-write-semantics.d.ts +1 -1
- package/dist/knowledge/repository-write-semantics.js +1 -1
- package/dist/knowledge/reward-ledger.js +1 -1
- package/dist/knowledge/reward-puzzle.d.ts +1 -1
- package/dist/knowledge/reward-risk.d.ts +1 -1
- package/dist/knowledge/scenario-modes.d.ts +2 -2
- package/dist/knowledge/scenario-modes.js +1 -1
- package/dist/knowledge/scenario-topology.js +1 -1
- package/dist/knowledge/service-ledger.d.ts +14 -0
- package/dist/knowledge/service-ledger.js +1 -1
- package/dist/knowledge/strategy-manuals.js +1 -1
- package/dist/knowledge/template-index.d.ts +19 -0
- package/dist/knowledge/template-index.js +1 -0
- package/dist/knowledge/template-loader.d.ts +36 -0
- package/dist/knowledge/template-loader.js +1 -1
- package/dist/knowledge/template-registry.js +1 -1
- package/dist/knowledge/template-scanner.d.ts +11 -0
- package/dist/knowledge/template-scanner.js +1 -1
- package/dist/knowledge/tool-constraints.js +1 -1
- package/dist/knowledge/workflow-guidance.d.ts +2 -0
- package/dist/knowledge/workflow-guidance.js +1 -1
- package/dist/monitor/MonitorLoop.js +1 -1
- package/dist/participation/allocation-advice.d.ts +8 -1
- package/dist/participation/allocation-advice.js +1 -1
- package/dist/participation/game-context.d.ts +25 -0
- package/dist/participation/game-context.js +1 -0
- package/dist/participation/node-action-advisor.d.ts +64 -0
- package/dist/participation/node-action-advisor.js +1 -0
- package/dist/participation/radar-core.d.ts +1 -0
- package/dist/participation/radar-core.js +1 -1
- package/dist/persona/defaults.js +1 -1
- package/dist/persona/topology-focus.js +1 -1
- package/dist/playbooks/service-build/business-puzzle.js +1 -1
- package/dist/playbooks/service-build/game-theory.d.ts +4 -1
- package/dist/playbooks/service-build/game-theory.js +1 -1
- package/dist/playbooks/service-build/machine-panorama.js +1 -1
- package/dist/playbooks/service-build/merchant-guide.d.ts +26 -1
- package/dist/playbooks/service-build/merchant-guide.js +1 -1
- package/dist/playbooks/service-build/migration-planner.d.ts +2 -2
- package/dist/playbooks/service-build/migration-planner.js +1 -1
- package/dist/playbooks/service-build/object-panorama.d.ts +13 -1
- package/dist/playbooks/service-build/object-panorama.js +1 -1
- package/dist/playbooks/service-build/participation-radar.js +1 -1
- package/dist/playbooks/service-build/pipeline-actions.d.ts +4 -1
- package/dist/playbooks/service-build/pipeline-actions.js +1 -1
- package/dist/playbooks/service-build/relationship-profile.js +1 -1
- package/dist/playbooks/service-build/service-panorama.d.ts +12 -0
- package/dist/playbooks/service-build/service-panorama.js +1 -1
- package/dist/playbooks/service-build/service-quote.js +1 -1
- package/dist/playbooks/service-build/service-quote.spec.js +1 -1
- package/dist/relationship/derivation.d.ts +1 -1
- package/dist/review/index.js +1 -1
- package/dist/review/repository.js +1 -1
- package/dist/role/intent.d.ts +23 -0
- package/dist/role/intent.js +1 -0
- package/dist/safety/confirm-gate.js +1 -1
- package/dist/schema/benchmark-migration/index.d.ts +39 -0
- package/dist/schema/benchmark-migration/index.js +1 -1
- package/dist/schema/call/allocation.d.ts +49 -3
- package/dist/schema/call/allocation.js +1 -1
- package/dist/schema/call/arbitration.js +1 -1
- package/dist/schema/call/base.d.ts +52 -0
- package/dist/schema/call/base.js +1 -1
- package/dist/schema/call/bridge.d.ts +3 -0
- package/dist/schema/call/contact.js +1 -1
- package/dist/schema/call/error-codes.d.ts +1 -1
- package/dist/schema/call/error-codes.js +1 -1
- package/dist/schema/call/guard.js +1 -1
- package/dist/schema/call/handler.js +1 -1
- package/dist/schema/call/machine.d.ts +10 -0
- package/dist/schema/call/machine.js +1 -1
- package/dist/schema/call/order.d.ts +2 -0
- package/dist/schema/call/order.js +1 -1
- package/dist/schema/call/progress.d.ts +6 -3
- package/dist/schema/call/progress.js +1 -1
- package/dist/schema/call/repository.d.ts +4 -0
- package/dist/schema/call/repository.js +1 -1
- package/dist/schema/call/reward.d.ts +2 -2
- package/dist/schema/call/reward.js +1 -1
- package/dist/schema/call/semantic.d.ts +6 -0
- package/dist/schema/call/semantic.js +1 -1
- package/dist/schema/call/service.d.ts +42 -4
- package/dist/schema/call/service.js +1 -1
- package/dist/schema/common/index.js +1 -1
- package/dist/schema/goal/index.d.ts +54 -0
- package/dist/schema/goal/planning.d.ts +86 -0
- package/dist/schema/goal/planning.js +1 -1
- package/dist/schema/keeper/index.d.ts +2 -0
- package/dist/schema/local/index.d.ts +72 -0
- package/dist/schema/local/index.js +1 -1
- package/dist/schema/messenger/index.d.ts +2 -0
- package/dist/schema/operations.d.ts +46 -5
- package/dist/schema/operations.js +1 -1
- package/dist/schema/persona/index.d.ts +484 -0
- package/dist/schema/query/bi.d.ts +4 -0
- package/dist/schema/query/bi.js +1 -1
- package/dist/schema/query/index.d.ts +84 -60
- package/dist/schema/query/index.js +1 -1
- package/dist/schema/schema-version.d.ts +1 -1
- package/dist/schema/schema-version.js +1 -1
- package/dist/schema-query-impl/index.js +1 -1
- package/dist/schemas/account_operation.output.json +41 -10
- package/dist/schemas/account_operation.schema.json +1 -1
- package/dist/schemas/benchmark_migration_operation.output.json +8 -5
- package/dist/schemas/benchmark_migration_operation.schema.json +91 -3
- package/dist/schemas/bridge_operation.output.json +13 -7
- package/dist/schemas/goal_operation.schema.json +94 -0
- package/dist/schemas/index.json +1 -1
- package/dist/schemas/keeper_operation.output.json +12 -7
- package/dist/schemas/local_cache_operation.output.json +34 -7
- package/dist/schemas/local_cache_operation.schema.json +16 -1
- package/dist/schemas/local_history_operation.output.json +13 -7
- package/dist/schemas/local_info_operation.output.json +13 -7
- package/dist/schemas/local_info_operation.schema.json +5 -1
- package/dist/schemas/local_mark_operation.output.json +13 -7
- package/dist/schemas/messenger_operation.output.json +12 -7
- package/dist/schemas/monitor_events.output.json +12 -7
- package/dist/schemas/monitor_subscription.output.json +12 -7
- package/dist/schemas/onchain_events.output.json +67 -18
- package/dist/schemas/onchain_events.schema.json +4 -0
- package/dist/schemas/onchain_operations.output.json +81 -24
- package/dist/schemas/onchain_operations.schema.json +531 -126
- package/dist/schemas/onchain_operations_allocation.schema.json +294 -6
- package/dist/schemas/onchain_operations_arbitration.schema.json +3 -3
- package/dist/schemas/onchain_operations_contact.schema.json +2 -2
- package/dist/schemas/onchain_operations_demand.schema.json +3 -3
- package/dist/schemas/onchain_operations_gen_passport.schema.json +1 -1
- package/dist/schemas/onchain_operations_guard.schema.json +99 -63
- package/dist/schemas/onchain_operations_machine.schema.json +10 -1
- package/dist/schemas/onchain_operations_order.schema.json +8 -4
- package/dist/schemas/onchain_operations_progress.schema.json +8 -4
- package/dist/schemas/onchain_operations_proof.schema.json +1 -1
- package/dist/schemas/onchain_operations_repository.schema.json +6 -2
- package/dist/schemas/onchain_operations_reward.schema.json +8 -8
- package/dist/schemas/onchain_operations_service.schema.json +81 -21
- package/dist/schemas/onchain_operations_treasury.schema.json +7 -7
- package/dist/schemas/onchain_table_data.output.json +16 -7
- package/dist/schemas/persona_operation.output.json +1387 -0
- package/dist/schemas/persona_operation.schema.json +219 -0
- package/dist/schemas/query_toolkit.output.json +115 -64
- package/dist/schemas/query_toolkit.schema.json +8 -0
- package/dist/schemas/workflow_operation.schema.json +1 -1
- package/dist/tools/handlers/benchmark-migration.js +1 -1
- package/dist/tools/handlers/bridge.js +1 -1
- package/dist/tools/handlers/config.js +1 -1
- package/dist/tools/handlers/dispatch-expectations.js +1 -1
- package/dist/tools/handlers/file-export.js +1 -1
- package/dist/tools/handlers/industry-pack.d.ts +1 -0
- package/dist/tools/handlers/industry-pack.js +1 -1
- package/dist/tools/handlers/local.js +1 -1
- package/dist/tools/handlers/messenger.js +1 -1
- package/dist/tools/handlers/onchain-name-registration.d.ts +11 -0
- package/dist/tools/handlers/onchain-name-registration.js +1 -1
- package/dist/tools/handlers/onchain.d.ts +28 -0
- package/dist/tools/handlers/onchain.js +1 -1
- package/dist/tools/handlers/query.js +1 -1
- package/dist/tools/handlers/review-chain.d.ts +1 -1
- package/dist/tools/handlers/review-chain.js +1 -1
- package/dist/tools/handlers/schema-query.js +1 -1
- package/dist/tools/handlers/workflow.js +1 -1
- package/dist/tools/move-fn-index.gen.js +1 -1
- package/dist/tools/registry/agent.js +1 -1
- package/dist/tools/registry/local.js +1 -1
- package/dist/tools/registry/onchain.js +1 -1
- package/dist/tools/registry/query.js +1 -1
- package/dist/tools/wip-deploy-assist.js +1 -1
- package/dist/tools/wrap.js +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
import{deriveCommercialRole,CORE_PERMISSION_INDEX}from'../role/derivation.js';import{annotateNodeName}from'../graph/onchain/order-status.js';const ORDER_HOLDER_CALL={'tool':'onchain_operations','path':'data.progress','reason':'namedOperator=\x22\x22\x20=\x20OrderHolder:\x20execute\x20via\x20onchain_operations\x20operation_type=\x22order\x22\x20data.progress\x20—\x20order::progress\x20runs\x20with\x20the\x20Order\x20as\x20holder\x20(OrderHolder\x20short-circuit\x20established\x20at\x20purchase).\x20workflow_operation\x20operate\x20auto-routes\x20to\x20the\x20same\x20order-bound\x20path\x20when\x20the\x20Progress\x20task\x20is\x20an\x20Order;\x20on\x20a\x20standalone\x20Progress\x20empty-namedOperator\x20forwards\x20are\x20un-executable\x20(abort\x208).'},ORDER_RENEW_CALL={'tool':'onchain_operations','path':'data.order_renew','reason':'Renewal\x20forward\x20(order-holder\x20loop\x20into\x20a\x20charging\x20node):\x20execute\x20via\x20onchain_operations\x20operation_type=\x22order\x22\x20data.order_renew\x20—\x20ONE\x20PTB\x20pays\x20the\x20period\x20amount\x20into\x20the\x20Allocation\x20AND\x20advances\x20the\x20renew\x20forward\x20atomically.\x20Plain\x20data.progress\x20would\x20advance\x20the\x20loop\x20WITHOUT\x20funding\x20it\x20(zero-value\x20period).'},RENEWAL_NODE_RE=/(charg|billing|renew)/i,POST_PERIOD_NODE_RE=/(deliver|complet|expir|ship|sent)/i;export function isRenewalLoopEdge(a,b){return RENEWAL_NODE_RE['test'](b)&&POST_PERIOD_NODE_RE['test'](a);}export function recommendedCallForOrderHolder(a){const b=a['currentNode']!==undefined&&a['targetNode']!==undefined&&isRenewalLoopEdge(a['currentNode'],a['targetNode']),c=b?ORDER_RENEW_CALL:ORDER_HOLDER_CALL;return a['hasGuard']?{...c,'reason':c['reason']+GUARD_PASSPORT_SUFFIX}:c;}const PROGRESS_OPERATE_CALL={'tool':'workflow_operation','path':'data.operate','reason':'Forward\x20requires\x20a\x20permission\x20index\x20or\x20a\x20named\x20operator:\x20execute\x20on\x20the\x20Progress\x20object\x20via\x20workflow_operation\x20action=operate.\x20The\x20OrderHolder\x20short-circuit\x20(order.data.progress)\x20does\x20not\x20apply\x20to\x20this\x20forward.'},GUARD_PASSPORT_SUFFIX='\x20The\x20forward\x20binds\x20a\x20Guard:\x20a\x20validated\x20passport\x20is\x20mandatory\x20on\x20either\x20route\x20(progress#9\x20\x22Passport\x20required\x22)\x20and\x20cannot\x20be\x20bypassed.';export function recommendedCallForExecutionPath(a,b){const c=a==='order_holder'?ORDER_HOLDER_CALL:a==='permission'||a==='named_operator'?PROGRESS_OPERATE_CALL:undefined;if(!c)return undefined;return b?{...c,'reason':c['reason']+GUARD_PASSPORT_SUFFIX}:c;}export function recommendedCallForForwardBinding(a){const b=a['permissionIndex']!=null?'permission':a['namedOperator']===''?'order_holder':a['namedOperator']!=null?'named_operator':'not_available';return recommendedCallForExecutionPath(b,a['hasGuard']);}export function analyzeOrderParticipation(a){const b=a['node_annotations'],c=a['current_node']??'',d=!!a['order_holder']&&a['order_holder']===a['account'],e=new Set();if(a['permission']?.['entityPermissions'])for(const [v,w]of a['permission']['entityPermissions']){if(v===a['account']){for(const x of w)e['add'](x);}}if(a['permission']){const y=a['permission']['admin']??[],z=a['permission']['owner'];(y['some'](A=>A['toLowerCase']()===a['account']['toLowerCase']())||z&&z['toLowerCase']()===a['account']['toLowerCase']())&&e['add'](CORE_PERMISSION_INDEX['service']);}const f=[];if(a['named_accounts'])for(const [A,B]of Object['entries'](a['named_accounts'])){if(nameResolvesTo(B,a['account']))f['push'](A);}const g=deriveCommercialRole({'account':a['account'],'order_holder':a['order_holder'],'held_permission_indexes':Array['from'](e),'named_operator_names':f,'demand_presenters':a['demand_presenters'],'has_active_order':!![]}),h=g['role'],i=g['collaborator_kind'],j=[],k=[],l=!a['workflow'];let m;if(a['workflow'])for(const C of a['workflow']['transitions']){if(C['prevNode']!==c)continue;m=C['threshold'];const D={'name':C['forward']??'(unnamed)','permissionIndex':C['permissionIndex']??null,'namedOperator':C['namedOperator']??null,'guard':C['guard']??null,'weight':C['weight']??null},E=resolveForward(D,C['node'],a,d,e,b);if(E['execution_path']==='not_available'){const F=D['permissionIndex']!=null?'permission\x20index\x20'+D['permissionIndex']:D['namedOperator']===''?'OrderHolder\x20(customer)':'named\x20operator\x20\x27'+D['namedOperator']+'\x27',G=k['find'](H=>H['role']===F);if(G)G['forwards']['push'](E['name']);else k['push']({'role':F,'forwards':[E['name']]});}else j['push'](E);}const n=[];d&&n['push']({'label':'OrderHolder\x20(customer)','can_act_now':j['some'](H=>H['execution_path']==='order_holder')});for(const H of[...e]['sort']((I,J)=>I-J)){n['push']({'label':'permission\x20index\x20'+H,'can_act_now':j['some'](I=>I['permission_index']===H)});}if(a['named_accounts'])for(const [I,J]of Object['entries'](a['named_accounts'])){nameResolvesTo(J,a['account'])&&n['push']({'label':'named\x20operator\x20\x27'+I+'\x27','can_act_now':j['some'](K=>K['named_operator']===I)});}let o;j['length']>0x1&&(o={'message':j['length']+'\x20operations\x20are\x20available\x20to\x20you\x20at\x20node\x20\x27'+(c||'(entry)')+'\x27.\x20'+'Each\x20leads\x20to\x20a\x20different\x20outcome\x20—\x20review\x20the\x20consequences\x20and\x20choose;\x20no\x20one\x20else\x20can\x20make\x20this\x20decision\x20for\x20you.','options':j['map'](K=>({'forward':K['name'],'to_node':K['to_node'],'consequence':K['consequence']}))});const p=[];for(const K of a['claimable_rewards']??[]){if(K['already_claimed'])continue;p['push']({'kind':'reward','label':K['description']??'Reward\x20'+K['address'],'how':'onchain_operations\x20reward\x20op=\x27claim\x27\x20(object=\x27'+K['address']+'\x27)'});}a['pending_compensation']&&p['push']({'kind':'compensation','label':a['pending_compensation']['note']??'Arbitration\x20indemnity\x20awarded\x20to\x20you','how':'onchain_operations\x20order\x20op=\x27arb_claim_compensation\x27\x20(arb=\x27'+a['pending_compensation']['arbitration']+'\x27)\x20—\x20paid\x20directly\x20from\x20the\x20Service\x20compensation_fund'});a['discount_available']&&p['push']({'kind':'discount','label':a['discount_available'],'how':'Mention\x20the\x20discount\x20when\x20placing\x20the\x20next\x20order\x20(reward\x20discount\x20config\x20applies\x20at\x20purchase)'});a['rating_pending']&&p['push']({'kind':'rating','label':'Rate\x20this\x20transaction\x20(like/dislike)\x20—\x20builds\x20on-chain\x20reputation\x20for\x20both\x20sides','how':'onchain_operations\x20operation_type=\x27personal\x27,\x20data.mark={op:\x27like\x27|\x27dislike\x27,\x20address:\x27<merchant\x20address>\x27}\x20—\x20counts\x20into\x20the\x20PUBLIC\x20aggregate\x20via\x20the\x20on-chain\x20reputation\x20registry'});const q=d?j['find'](L=>/review/i['test'](L['to_node'])):undefined;if(q){const L=(a['claimable_rewards']??[])['some'](M=>!M['already_claimed'])?'\x20A\x20guard-gated\x20service\x20reward\x20is\x20attached\x20to\x20this\x20order\x20—\x20its\x20claim\x20rides\x20the\x20SAME\x20passport\x20as\x20the\x20review\x20forward.':'';p['push']({'kind':'review','label':'Review\x20this\x20transaction:\x20advancing\x20\x27'+q['name']+'\x27\x20→\x20\x27'+q['to_node']+'\x27\x20carries\x20your\x20review.\x20'+'Your\x20review\x20TEXT\x20rides\x20the\x20forward\x20message\x20(permanent\x20on-chain\x20history,\x20signed\x20by\x20you);\x20the\x20structured\x20'+'like/dislike\x20+\x20tags\x20ride\x20the\x20review\x20repository\x20in\x20the\x20same\x20transaction.\x20Reviewing\x20does\x20NOT\x20affect\x20your\x20'+'refund/settlement\x20rights\x20—\x20settlement\x20is\x20anchored\x20on\x20delivery\x20time,\x20not\x20on\x20whether\x20or\x20how\x20you\x20review.'+L,'how':'onchain_operations\x20operation_type=\x22progress\x22\x20data.progress\x20(forward\x20\x27'+q['name']+'\x27)\x20with\x20'+'data.message\x20=\x20review\x20text;\x20optional\x20data.review\x20=\x20{\x20repository:\x20\x27<review\x20repository>\x27,\x20'+'rating:\x20\x27like\x27|\x27dislike\x27,\x20tags?:\x20[...],\x20reward_claim?:\x20{\x20reward,\x20guard\x20}\x20}\x20—\x20the\x20chained\x20repository\x20'+'write\x20+\x20reward\x20claim\x20reuse\x20the\x20forward\x27s\x20passport'});}const s=buildInterestHints(a,h,j,k,c),u=buildSummary(a,h,n,j,k,p,l,c);return{'account':a['account'],'progress':a['progress_address'],'order':a['order_address'],'current_node':c,'perspective':h,'collaborator_kind':i,'roles':n,'operable':j,'branch_choice':o,'waiting_on':k,'pending_claims':p,'interest_hints':s,'workflow_unknown':l,'threshold':m,'summary':u};}export function aggregateRadar(a,b){const c=a['filter'](g=>g['operable']['length']>0x0||g['pending_claims']['length']>0x0)['sort']((g,h)=>(g['perspective']==='customer'?0x0:0x1)-(h['perspective']==='customer'?0x0:0x1)),d=a['filter'](g=>g['operable']['length']===0x0&&g['pending_claims']['length']===0x0),e=a['flatMap'](g=>g['pending_claims']['map'](h=>({...h,'progress':g['progress']}))),f=a['length']===0x0?'No\x20in-flight\x20orders\x20found\x20for\x20this\x20account.':a['length']+'\x20in-flight\x20order(s):\x20'+c['length']+'\x20need\x20your\x20action\x20or\x20have\x20claims,\x20'+d['length']+'\x20are\x20waiting\x20on\x20other\x20roles.\x20'+(e['length']>0x0?e['length']+'\x20unclaimed\x20benefit(s)\x20detected.\x20':'')+(c['length']>0x0?'Top\x20priority:\x20'+c[0x0]['summary']:'Nothing\x20requires\x20your\x20action\x20right\x20now.');return{'account':a[0x0]?.['account']??'','orders_analyzed':a['length'],'actionable':c,'waiting':d,'all_pending_claims':e,'unread_messages_total':b??0x0,'summary':f};}function nameResolvesTo(a,b){if(!a)return![];return Array['isArray'](a)?a['includes'](b):a===b;}export function isConsequenceNode(a,b,c){const d=(a??'')['toLowerCase'](),e=c?.[b];if(e?.['some'](g=>!!g&&d['includes'](g['toLowerCase']())))return!![];const f=annotateNodeName(a??'');return b==='completed'?f==='completion':f==='refund'||f==='exception';}function resolveForward(a,b,c,d,e,f){let g='not_available';if(a['permissionIndex']!=null){if(e['has'](a['permissionIndex']))g='permission';}else{if(a['namedOperator']===''){if(d)g='order_holder';}else{if(a['namedOperator']!=null){const l=c['named_accounts']?.[a['namedOperator']];if(nameResolvesTo(l,c['account']))g='named_operator';}}}const h=b,i=describeForward(a['name']??'',h,g,a['permissionIndex'],a['namedOperator']),j=consequenceOf(h,f),k=g==='order_holder'?recommendedCallForOrderHolder({'hasGuard':!!a['guard'],'currentNode':c['current_node']??'','targetNode':h}):recommendedCallForExecutionPath(g,!!a['guard']);return{'name':a['name']??'(unnamed)','to_node':h,'execution_path':g,'permission_index':a['permissionIndex']??undefined,'named_operator':a['namedOperator']??undefined,'guard':a['guard']??undefined,'semantics':i,'consequence':j,'weight':a['weight']??undefined,'recommended_call':k};}function describeForward(a,b,c,d,e){const f=d!=null?'requires\x20permission\x20index\x20'+d:e===''?'executable\x20by\x20the\x20order\x20holder\x20(customer)':'executable\x20by\x20named\x20operator\x20\x27'+e+'\x27',g=c==='not_available'?'You\x20CANNOT\x20execute\x20this':'You\x20CAN\x20execute\x20this';return'\x27'+a+'\x27\x20advances\x20the\x20order\x20to\x20node\x20\x27'+b+'\x27\x20('+f+').\x20'+g+'.';}export function consequenceOf(a,b){if(isConsequenceNode(a,'completed',b))return'Completion\x20path\x20—\x20funds\x20are\x20released\x20to\x20the\x20merchant\x20per\x20the\x20Allocation\x20waterfall;\x20refunds\x20become\x20harder\x20after\x20this\x20point.';if(isConsequenceNode(a,'refunded',b))return'Refund/cancellation\x20path\x20—\x20escrowed\x20funds\x20return\x20to\x20the\x20buyer\x20per\x20the\x20Allocation\x20configuration.';return undefined;}function buildInterestHints(a,b,c,d,e){const f=[],g=a['now']??Date['now'](),h=a['last_progress_at']!=null?(g-a['last_progress_at'])/0x36ee80:undefined;if(b==='customer')c['length']>0x0&&f['push']('Your\x20confirmation\x20is\x20the\x20fund-release\x20trigger:\x20escrowed\x20money\x20stays\x20locked\x20until\x20YOU\x20act\x20—\x20only\x20confirm\x20when\x20the\x20deliverable\x20matches\x20the\x20agreement.'),d['some'](i=>i['role']!=='OrderHolder\x20(customer)')&&f['push']('Delivery\x20depends\x20on\x20the\x20merchant-side\x20roles\x20listed\x20in\x20waiting_on;\x20if\x20they\x20stall,\x20Messenger\x20first,\x20then\x20consider\x20dispute\x20via\x20the\x20bound\x20Arbitration.'),h!=null&&h>0x18&&f['push']('Order\x20has\x20not\x20advanced\x20for\x20'+Math['round'](h)+'h.\x20Your\x20leverage:\x20compensation_fund\x20(if\x20any)\x20+\x20arbitration\x20+\x20on-chain\x20reputation\x20(dislike)\x20—\x20in\x20that\x20order.');else{if(b==='supplier')c['length']>0x0&&f['push']('Advancing\x20your\x20sub-order\x20NOW\x20unlocks\x20YOUR\x20settlement\x20—\x20upload\x20delivery\x20evidence\x20first\x20to\x20protect\x20your\x20payment\x20claim\x20against\x20the\x20upstream\x20merchant.'),d['some'](i=>i['role']!=='OrderHolder\x20(customer)')&&f['push']('Your\x20settlement\x20depends\x20on\x20upstream\x20roles\x20in\x20waiting_on;\x20if\x20they\x20stall,\x20a\x20Messenger\x20nudge\x20first,\x20then\x20arbitration\x20via\x20the\x20bound\x20Arbitration.'),h!=null&&h>0x30&&f['push']('Sub-order\x20stalled\x20'+Math['round'](h)+'h:\x20your\x20claim\x20erodes\x20with\x20time\x20—\x20evidence\x20+\x20a\x20Messenger\x20nudge\x20are\x20your\x20cheapest\x20protections.');else{if(b==='collaborator'||b==='merchant'){const i=d['filter'](j=>j['role']['startsWith']('permission\x20index'));c['length']>0x0&&f['push']('Advancing\x20the\x20workflow\x20NOW\x20improves\x20flow\x20efficiency\x20and\x20shortens\x20your\x20fund-settlement\x20cycle;\x20stalled\x20orders\x20degrade\x20your\x20on-chain\x20reputation\x20metrics\x20(dispute\x20rate,\x20stall\x20statistics).');i['length']>0x0&&f['push']('Nodes\x20waiting\x20on\x20YOUR\x20permission\x20indexes\x20are\x20your\x20responsibility\x20surface:\x20prolonged\x20inaction\x20may\x20trigger\x20timeout\x20penalties\x20or\x20disputes\x20recorded\x20permanently\x20on-chain.');e&&c['length']===0x0&&f['push']('Nothing\x20for\x20you\x20to\x20execute\x20at\x20this\x20node\x20—\x20monitor\x20only;\x20avoid\x20unnecessary\x20interference\x20that\x20creates\x20semantic\x20responsibility.');if(b==='merchant'&&a['review_summary']){const {orders_completed:j,reviews_written:k,reward_bound:l}=a['review_summary'];if(j>0x0&&k<j){const m=j-k,n=m/j;n>=0.3&&f['push']('Review\x20coverage\x20is\x20low:\x20'+k+'/'+j+'\x20completed\x20orders\x20carry\x20a\x20structured\x20review\x20('+m+'\x20missing).'+(l?'\x20With\x20a\x20review\x20reward\x20attached,\x20a\x20high\x20missing\x20rate\x20usually\x20means\x20the\x20reward\x20expired,\x20its\x20window\x20is\x20too\x20short,\x20or\x20the\x20reward\x20is\x20hard\x20to\x20discover\x20at\x20quote\x20time\x20—\x20review\x20the\x20reward\x20terms\x20and\x20window.':'\x20Consider\x20whether\x20a\x20review\x20incentive\x20(review_reward\x20mode)\x20or\x20a\x20longer\x20review\x20window\x20fits\x20this\x20service.'));}}}else f['push']('You\x20hold\x20no\x20operative\x20role\x20on\x20this\x20order\x20(neutral).\x20On-chain\x20data\x20remains\x20transparent\x20to\x20you\x20for\x20auditing.');}}return(a['unread_messages']??0x0)>0x0&&f['push'](a['unread_messages']+'\x20unread\x20Messenger\x20message(s)\x20—\x20negotiation\x20evidence\x20(WTS)\x20forms\x20the\x20arbitration\x20record;\x20timely\x20replies\x20protect\x20your\x20position.'),f;}function buildSummary(a,b,c,d,e,f,g,h){const i=c['length']>0x0?c['map'](m=>m['label'])['join'](',\x20'):'no\x20operative\x20role',j=h===''?'(entry,\x20not\x20started)':'\x27'+h+'\x27';if(g)return'Order\x20'+a['progress_address']+'\x20is\x20at\x20'+j+';\x20you\x20are\x20'+b+'\x20('+i+').\x20Machine\x20workflow\x20data\x20unavailable\x20—\x20fetch\x20the\x20bound\x20Machine\x20to\x20see\x20executable\x20operations.';const k=d['length']>0x0?'you\x20can\x20execute:\x20'+d['map'](m=>'\x27'+m['name']+'\x27→\x27'+m['to_node']+'\x27')['join'](',\x20'):e['length']>0x0?'waiting\x20on\x20'+e['map'](m=>m['role'])['join'](',\x20'):'no\x20pending\x20operations\x20at\x20this\x20node',l=f['length']>0x0?'\x20'+f['length']+'\x20unclaimed\x20benefit(s).':'';return'Order\x20at\x20'+j+';\x20you\x20are\x20'+b+'\x20('+i+')\x20—\x20'+k+'.'+l;}
|
|
1
|
+
import{deriveCommercialRole,CORE_PERMISSION_INDEX}from'../role/derivation.js';import{TWO_TX_RENEW_RECIPE}from'../knowledge/protocol-facts.js';import{annotateNodeName}from'../graph/onchain/order-status.js';const ORDER_HOLDER_CALL={'tool':'onchain_operations','path':'data.progress','reason':'namedOperator=\x22\x22\x20=\x20OrderHolder:\x20execute\x20via\x20onchain_operations\x20operation_type=\x22order\x22\x20data.progress\x20—\x20order::progress\x20runs\x20with\x20the\x20Order\x20as\x20holder\x20(OrderHolder\x20short-circuit\x20established\x20at\x20purchase).\x20workflow_operation\x20operate\x20auto-routes\x20to\x20the\x20same\x20order-bound\x20path\x20when\x20the\x20Progress\x20task\x20is\x20an\x20Order;\x20on\x20a\x20standalone\x20Progress\x20empty-namedOperator\x20forwards\x20are\x20un-executable\x20(abort\x208).'},ORDER_RENEW_CALL={'tool':'onchain_operations','path':'data.order_renew','reason':'Renewal\x20forward\x20(order-holder\x20loop\x20into\x20a\x20charging\x20node):\x20execute\x20via\x20onchain_operations\x20operation_type=\x22order\x22\x20data.order_renew\x20—\x20ONE\x20PTB\x20pays\x20the\x20period\x20amount\x20into\x20the\x20Allocation\x20AND\x20advances\x20the\x20renew\x20forward.\x20Plain\x20data.progress\x20would\x20advance\x20the\x20loop\x20WITHOUT\x20funding\x20it\x20(zero-value\x20period).\x20PRE-STATE\x20CONSTRAINT\x20(esound-mn-261021\x20B-1):\x20a\x20guard\x20on\x20this\x20forward\x20reading\x20allocation.balance\x20(query\x201051)\x20sees\x20the\x20COMMITTED\x20pre-transaction\x20balance\x20—\x20the\x20same-PTB\x20payment\x20is\x20INVISIBLE\x20to\x20it,\x20so\x20a\x20balance-gated\x20renew\x20forward\x20ALWAYS\x20aborts;\x20if\x20the\x20forward\x20carries\x20such\x20a\x20gate\x20this\x20call\x20cannot\x20execute\x20it\x20—\x20'+TWO_TX_RENEW_RECIPE},INSTALLMENT_CAPTURE_CALL={'tool':'onchain_operations','path':'data.order_renew','reason':'Installment/deposit\x20capture\x20forward\x20(a\x20due\x20state\x20advancing\x20into\x20a\x20paid\x20state):\x20execute\x20via\x20onchain_operations\x20operation_type=\x22order\x22\x20data.order_renew\x20—\x20ONE\x20PTB\x20pays\x20the\x20captured\x20installment\x20into\x20the\x20Allocation\x20AND\x20advances\x20the\x20forward.\x20The\x20funds\x20land\x20in\x20this\x20PTB\x20but\x20a\x20guard\x20reading\x20allocation.balance\x20sees\x20only\x20the\x20COMMITTED\x20pre-transaction\x20balance\x20(PRE-STATE\x20CONSTRAINT,\x20esound-mn-261021\x20B-1)\x20—\x20a\x20balance-gated\x20capture\x20forward\x20ALWAYS\x20aborts;\x20if\x20the\x20forward\x20carries\x20such\x20a\x20gate\x20this\x20call\x20cannot\x20execute\x20it\x20—\x20'+TWO_TX_RENEW_RECIPE},RENEWAL_NODE_RE=/(charg|billing|renew)/i,POST_PERIOD_NODE_RE=/(deliver|complet|expir|ship|sent)/i,INSTALLMENT_DUE_NODE_RE=/(due|owed|owing|unpaid|awaiting|pending)/i,INSTALLMENT_CAPTURE_NODE_RE=/(paid|captured|funded|settled)/i;export function isRenewalLoopEdge(a,b){return RENEWAL_NODE_RE['test'](b)&&POST_PERIOD_NODE_RE['test'](a);}export function isInstallmentCaptureEdge(a,b){return INSTALLMENT_DUE_NODE_RE['test'](a)&&INSTALLMENT_CAPTURE_NODE_RE['test'](b);}export function recommendedCallForOrderHolder(a){const b=a['currentNode']!==undefined&&a['targetNode']!==undefined,c=b&&isRenewalLoopEdge(a['currentNode'],a['targetNode']),d=!c&&b&&isInstallmentCaptureEdge(a['currentNode'],a['targetNode']),e=c?ORDER_RENEW_CALL:d?INSTALLMENT_CAPTURE_CALL:ORDER_HOLDER_CALL;return a['hasGuard']?{...e,'reason':e['reason']+GUARD_PASSPORT_SUFFIX}:e;}const PROGRESS_OPERATE_CALL={'tool':'workflow_operation','path':'data.operate','reason':'Forward\x20requires\x20a\x20permission\x20index\x20or\x20a\x20named\x20operator:\x20execute\x20on\x20the\x20Progress\x20object\x20via\x20workflow_operation\x20action=operate.\x20The\x20OrderHolder\x20short-circuit\x20(order.data.progress)\x20does\x20not\x20apply\x20to\x20this\x20forward.'},GUARD_PASSPORT_SUFFIX='\x20The\x20forward\x20binds\x20a\x20Guard:\x20a\x20validated\x20passport\x20is\x20mandatory\x20on\x20either\x20route\x20(progress#9\x20\x22Passport\x20required\x22)\x20and\x20cannot\x20be\x20bypassed.';export function recommendedCallForExecutionPath(a,b){const c=a==='order_holder'?ORDER_HOLDER_CALL:a==='permission'||a==='named_operator'?PROGRESS_OPERATE_CALL:undefined;if(!c)return undefined;return b?{...c,'reason':c['reason']+GUARD_PASSPORT_SUFFIX}:c;}export function recommendedCallForForwardBinding(a){const b=a['permissionIndex']!=null?'permission':a['namedOperator']===''?'order_holder':a['namedOperator']!=null?'named_operator':'not_available';return recommendedCallForExecutionPath(b,a['hasGuard']);}export function analyzeOrderParticipation(a){const b=a['node_annotations'],c=a['current_node']??'',d=!!a['order_holder']&&a['order_holder']===a['account'],e=new Set();if(a['permission']?.['entityPermissions'])for(const [v,w]of a['permission']['entityPermissions']){if(v===a['account']){for(const x of w)e['add'](x);}}if(a['permission']){const y=a['permission']['admin']??[],z=a['permission']['owner'];(y['some'](A=>A['toLowerCase']()===a['account']['toLowerCase']())||z&&z['toLowerCase']()===a['account']['toLowerCase']())&&e['add'](CORE_PERMISSION_INDEX['service']);}const f=[];if(a['named_accounts'])for(const [A,B]of Object['entries'](a['named_accounts'])){if(nameResolvesTo(B,a['account']))f['push'](A);}const g=deriveCommercialRole({'account':a['account'],'order_holder':a['order_holder'],'held_permission_indexes':Array['from'](e),'named_operator_names':f,'demand_presenters':a['demand_presenters'],'has_active_order':!![]}),h=g['role'],i=g['collaborator_kind'],j=[],k=[],l=!a['workflow'];let m;if(a['workflow'])for(const C of a['workflow']['transitions']){if(C['prevNode']!==c)continue;m=C['threshold'];const D={'name':C['forward']??'(unnamed)','permissionIndex':C['permissionIndex']??null,'namedOperator':C['namedOperator']??null,'guard':C['guard']??null,'weight':C['weight']??null},E=resolveForward(D,C['node'],a,d,e,b);if(E['execution_path']==='not_available'){const F=D['permissionIndex']!=null?'permission\x20index\x20'+D['permissionIndex']:D['namedOperator']===''?'OrderHolder\x20(customer)':'named\x20operator\x20\x27'+D['namedOperator']+'\x27',G=k['find'](H=>H['role']===F);if(G)G['forwards']['push'](E['name']);else k['push']({'role':F,'forwards':[E['name']]});}else j['push'](E);}const n=[];d&&n['push']({'label':'OrderHolder\x20(customer)','can_act_now':j['some'](H=>H['execution_path']==='order_holder')});for(const H of[...e]['sort']((I,J)=>I-J)){n['push']({'label':'permission\x20index\x20'+H,'can_act_now':j['some'](I=>I['permission_index']===H)});}if(a['named_accounts'])for(const [I,J]of Object['entries'](a['named_accounts'])){nameResolvesTo(J,a['account'])&&n['push']({'label':'named\x20operator\x20\x27'+I+'\x27','can_act_now':j['some'](K=>K['named_operator']===I)});}let o;j['length']>0x1&&(o={'message':j['length']+'\x20operations\x20are\x20available\x20to\x20you\x20at\x20node\x20\x27'+(c||'(entry)')+'\x27.\x20'+'Each\x20leads\x20to\x20a\x20different\x20outcome\x20—\x20review\x20the\x20consequences\x20and\x20choose;\x20no\x20one\x20else\x20can\x20make\x20this\x20decision\x20for\x20you.','options':j['map'](K=>({'forward':K['name'],'to_node':K['to_node'],'consequence':K['consequence']}))});const p=[];for(const K of a['claimable_rewards']??[]){if(K['already_claimed'])continue;p['push']({'kind':'reward','label':K['description']??'Reward\x20'+K['address'],'how':'onchain_operations\x20reward\x20op=\x27claim\x27\x20(object=\x27'+K['address']+'\x27)'});}a['pending_compensation']&&p['push']({'kind':'compensation','label':a['pending_compensation']['note']??'Arbitration\x20indemnity\x20awarded\x20to\x20you','how':'onchain_operations\x20order\x20op=\x27arb_claim_compensation\x27\x20(arb=\x27'+a['pending_compensation']['arbitration']+'\x27)\x20—\x20paid\x20directly\x20from\x20the\x20Service\x20compensation_fund'});a['discount_available']&&p['push']({'kind':'discount','label':a['discount_available'],'how':'Mention\x20the\x20discount\x20when\x20placing\x20the\x20next\x20order\x20(reward\x20discount\x20config\x20applies\x20at\x20purchase)'});a['rating_pending']&&p['push']({'kind':'rating','label':'Rate\x20this\x20transaction\x20(like/dislike)\x20—\x20builds\x20on-chain\x20reputation\x20for\x20both\x20sides','how':'onchain_operations\x20operation_type=\x27personal\x27,\x20data.mark={op:\x27like\x27|\x27dislike\x27,\x20address:\x27<merchant\x20address>\x27}\x20—\x20counts\x20into\x20the\x20PUBLIC\x20aggregate\x20via\x20the\x20on-chain\x20reputation\x20registry'});const q=d?j['find'](L=>/review/i['test'](L['to_node'])):undefined;if(q){const L=(a['claimable_rewards']??[])['some'](M=>!M['already_claimed'])?'\x20A\x20guard-gated\x20service\x20reward\x20is\x20attached\x20to\x20this\x20order\x20—\x20its\x20claim\x20rides\x20the\x20SAME\x20passport\x20as\x20the\x20review\x20forward.':'';p['push']({'kind':'review','label':'Review\x20this\x20transaction:\x20advancing\x20\x27'+q['name']+'\x27\x20→\x20\x27'+q['to_node']+'\x27\x20carries\x20your\x20review.\x20'+'Your\x20review\x20TEXT\x20rides\x20the\x20forward\x20message\x20(permanent\x20on-chain\x20history,\x20signed\x20by\x20you);\x20the\x20structured\x20'+'like/dislike\x20+\x20tags\x20ride\x20the\x20review\x20repository\x20in\x20the\x20same\x20transaction.\x20Reviewing\x20does\x20NOT\x20affect\x20your\x20'+'refund/settlement\x20rights\x20—\x20settlement\x20is\x20anchored\x20on\x20delivery\x20time,\x20not\x20on\x20whether\x20or\x20how\x20you\x20review.'+L,'how':'onchain_operations\x20operation_type=\x22progress\x22\x20data.progress\x20(forward\x20\x27'+q['name']+'\x27)\x20with\x20'+'data.message\x20=\x20review\x20text;\x20optional\x20data.review\x20=\x20{\x20repository:\x20\x27<review\x20repository>\x27,\x20'+'rating:\x20\x27like\x27|\x27dislike\x27,\x20tags?:\x20[...],\x20reward_claim?:\x20{\x20reward,\x20guard\x20}\x20}\x20—\x20the\x20chained\x20repository\x20'+'write\x20+\x20reward\x20claim\x20reuse\x20the\x20forward\x27s\x20passport'});}const s=buildInterestHints(a,h,j,k,c),u=buildSummary(a,h,n,j,k,p,l,c);return{'account':a['account'],'progress':a['progress_address'],'order':a['order_address'],'current_node':c,'perspective':h,'collaborator_kind':i,'roles':n,'operable':j,'branch_choice':o,'waiting_on':k,'pending_claims':p,'interest_hints':s,'workflow_unknown':l,'threshold':m,'summary':u};}export function aggregateRadar(a,b){const c=a['filter'](g=>g['operable']['length']>0x0||g['pending_claims']['length']>0x0)['sort']((g,h)=>(g['perspective']==='customer'?0x0:0x1)-(h['perspective']==='customer'?0x0:0x1)),d=a['filter'](g=>g['operable']['length']===0x0&&g['pending_claims']['length']===0x0),e=a['flatMap'](g=>g['pending_claims']['map'](h=>({...h,'progress':g['progress']}))),f=a['length']===0x0?'No\x20in-flight\x20orders\x20found\x20for\x20this\x20account.':a['length']+'\x20in-flight\x20order(s):\x20'+c['length']+'\x20need\x20your\x20action\x20or\x20have\x20claims,\x20'+d['length']+'\x20are\x20waiting\x20on\x20other\x20roles.\x20'+(e['length']>0x0?e['length']+'\x20unclaimed\x20benefit(s)\x20detected.\x20':'')+(c['length']>0x0?'Top\x20priority:\x20'+c[0x0]['summary']:'Nothing\x20requires\x20your\x20action\x20right\x20now.');return{'account':a[0x0]?.['account']??'','orders_analyzed':a['length'],'actionable':c,'waiting':d,'all_pending_claims':e,'unread_messages_total':b??0x0,'summary':f};}function nameResolvesTo(a,b){if(!a)return![];return Array['isArray'](a)?a['includes'](b):a===b;}export function isConsequenceNode(a,b,c){const d=(a??'')['toLowerCase'](),e=c?.[b];if(e?.['some'](g=>!!g&&d['includes'](g['toLowerCase']())))return!![];const f=annotateNodeName(a??'');return b==='completed'?f==='completion':f==='refund'||f==='exception';}function resolveForward(a,b,c,d,e,f){let g='not_available';if(a['permissionIndex']!=null){if(e['has'](a['permissionIndex']))g='permission';}else{if(a['namedOperator']===''){if(d)g='order_holder';}else{if(a['namedOperator']!=null){const l=c['named_accounts']?.[a['namedOperator']];if(nameResolvesTo(l,c['account']))g='named_operator';}}}const h=b,i=describeForward(a['name']??'',h,g,a['permissionIndex'],a['namedOperator']),j=consequenceOf(h,f),k=g==='order_holder'?recommendedCallForOrderHolder({'hasGuard':!!a['guard'],'currentNode':c['current_node']??'','targetNode':h}):recommendedCallForExecutionPath(g,!!a['guard']);return{'name':a['name']??'(unnamed)','to_node':h,'execution_path':g,'permission_index':a['permissionIndex']??undefined,'named_operator':a['namedOperator']??undefined,'guard':a['guard']??undefined,'semantics':i,'consequence':j,'weight':a['weight']??undefined,'recommended_call':k};}function describeForward(a,b,c,d,e){const f=d!=null?'requires\x20permission\x20index\x20'+d:e===''?'executable\x20by\x20the\x20order\x20holder\x20(customer)':'executable\x20by\x20named\x20operator\x20\x27'+e+'\x27',g=c==='not_available'?'You\x20CANNOT\x20execute\x20this':'You\x20CAN\x20execute\x20this';return'\x27'+a+'\x27\x20advances\x20the\x20order\x20to\x20node\x20\x27'+b+'\x27\x20('+f+').\x20'+g+'.';}export function consequenceOf(a,b){if(isConsequenceNode(a,'completed',b))return'Completion\x20path\x20—\x20funds\x20are\x20released\x20to\x20the\x20merchant\x20per\x20the\x20Allocation\x20waterfall;\x20refunds\x20become\x20harder\x20after\x20this\x20point.';if(isConsequenceNode(a,'refunded',b))return'Refund/cancellation\x20path\x20—\x20escrowed\x20funds\x20return\x20to\x20the\x20buyer\x20per\x20the\x20Allocation\x20configuration.';return undefined;}function buildInterestHints(a,b,c,d,e){const f=[],g=a['now']??Date['now'](),h=a['last_progress_at']!=null?(g-a['last_progress_at'])/0x36ee80:undefined;if(b==='customer')c['length']>0x0&&f['push']('Your\x20confirmation\x20is\x20the\x20fund-release\x20trigger:\x20escrowed\x20money\x20stays\x20locked\x20until\x20YOU\x20act\x20—\x20only\x20confirm\x20when\x20the\x20deliverable\x20matches\x20the\x20agreement.'),d['some'](i=>i['role']!=='OrderHolder\x20(customer)')&&f['push']('Delivery\x20depends\x20on\x20the\x20merchant-side\x20roles\x20listed\x20in\x20waiting_on;\x20if\x20they\x20stall,\x20Messenger\x20first,\x20then\x20consider\x20dispute\x20via\x20the\x20bound\x20Arbitration.'),h!=null&&h>0x18&&f['push']('Order\x20has\x20not\x20advanced\x20for\x20'+Math['round'](h)+'h.\x20Your\x20leverage:\x20compensation_fund\x20(if\x20any)\x20+\x20arbitration\x20+\x20on-chain\x20reputation\x20(dislike)\x20—\x20in\x20that\x20order.');else{if(b==='supplier')c['length']>0x0&&f['push']('Advancing\x20your\x20sub-order\x20NOW\x20unlocks\x20YOUR\x20settlement\x20—\x20upload\x20delivery\x20evidence\x20first\x20to\x20protect\x20your\x20payment\x20claim\x20against\x20the\x20upstream\x20merchant.'),d['some'](i=>i['role']!=='OrderHolder\x20(customer)')&&f['push']('Your\x20settlement\x20depends\x20on\x20upstream\x20roles\x20in\x20waiting_on;\x20if\x20they\x20stall,\x20a\x20Messenger\x20nudge\x20first,\x20then\x20arbitration\x20via\x20the\x20bound\x20Arbitration.'),h!=null&&h>0x30&&f['push']('Sub-order\x20stalled\x20'+Math['round'](h)+'h:\x20your\x20claim\x20erodes\x20with\x20time\x20—\x20evidence\x20+\x20a\x20Messenger\x20nudge\x20are\x20your\x20cheapest\x20protections.');else{if(b==='collaborator'||b==='merchant'){const i=d['filter'](j=>j['role']['startsWith']('permission\x20index'));c['length']>0x0&&f['push']('Advancing\x20the\x20workflow\x20NOW\x20improves\x20flow\x20efficiency\x20and\x20shortens\x20your\x20fund-settlement\x20cycle;\x20stalled\x20orders\x20degrade\x20your\x20on-chain\x20reputation\x20metrics\x20(dispute\x20rate,\x20stall\x20statistics).');i['length']>0x0&&f['push']('Nodes\x20waiting\x20on\x20YOUR\x20permission\x20indexes\x20are\x20your\x20responsibility\x20surface:\x20prolonged\x20inaction\x20may\x20trigger\x20timeout\x20penalties\x20or\x20disputes\x20recorded\x20permanently\x20on-chain.');e&&c['length']===0x0&&f['push']('Nothing\x20for\x20you\x20to\x20execute\x20at\x20this\x20node\x20—\x20monitor\x20only;\x20avoid\x20unnecessary\x20interference\x20that\x20creates\x20semantic\x20responsibility.');if(b==='merchant'&&a['review_summary']){const {orders_completed:j,reviews_written:k,reward_bound:l}=a['review_summary'];if(j>0x0&&k<j){const m=j-k,n=m/j;n>=0.3&&f['push']('Review\x20coverage\x20is\x20low:\x20'+k+'/'+j+'\x20completed\x20orders\x20carry\x20a\x20structured\x20review\x20('+m+'\x20missing).'+(l?'\x20With\x20a\x20review\x20reward\x20attached,\x20a\x20high\x20missing\x20rate\x20usually\x20means\x20the\x20reward\x20expired,\x20its\x20window\x20is\x20too\x20short,\x20or\x20the\x20reward\x20is\x20hard\x20to\x20discover\x20at\x20quote\x20time\x20—\x20review\x20the\x20reward\x20terms\x20and\x20window.':'\x20Consider\x20whether\x20a\x20review\x20incentive\x20(review_reward\x20mode)\x20or\x20a\x20longer\x20review\x20window\x20fits\x20this\x20service.'));}}}else f['push']('You\x20hold\x20no\x20operative\x20role\x20on\x20this\x20order\x20(neutral).\x20On-chain\x20data\x20remains\x20transparent\x20to\x20you\x20for\x20auditing.');}}return(a['unread_messages']??0x0)>0x0&&f['push'](a['unread_messages']+'\x20unread\x20Messenger\x20message(s)\x20—\x20negotiation\x20evidence\x20(WTS)\x20forms\x20the\x20arbitration\x20record;\x20timely\x20replies\x20protect\x20your\x20position.'),f;}function buildSummary(a,b,c,d,e,f,g,h){const i=c['length']>0x0?c['map'](m=>m['label'])['join'](',\x20'):'no\x20operative\x20role',j=h===''?'(entry,\x20not\x20started)':'\x27'+h+'\x27';if(g)return'Order\x20'+a['progress_address']+'\x20is\x20at\x20'+j+';\x20you\x20are\x20'+b+'\x20('+i+').\x20Machine\x20workflow\x20data\x20unavailable\x20—\x20fetch\x20the\x20bound\x20Machine\x20to\x20see\x20executable\x20operations.';const k=d['length']>0x0?'you\x20can\x20execute:\x20'+d['map'](m=>'\x27'+m['name']+'\x27→\x27'+m['to_node']+'\x27')['join'](',\x20'):e['length']>0x0?'waiting\x20on\x20'+e['map'](m=>m['role'])['join'](',\x20'):'no\x20pending\x20operations\x20at\x20this\x20node',l=f['length']>0x0?'\x20'+f['length']+'\x20unclaimed\x20benefit(s).':'';return'Order\x20at\x20'+j+';\x20you\x20are\x20'+b+'\x20('+i+')\x20—\x20'+k+'.'+l;}
|
package/dist/persona/defaults.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getDefaultPreferences}from'../customer/user-preferences.js';import{getIndustryPersona,registerIndustryPersonae}from'./pack-personae.js';import{PERSONA_VERSION}from'./types.js';function safePrefs(a){const {budget_range:b,...c}=a;return c;}function industryPrefs(a){return safePrefs(getDefaultPreferences(a));}const SPECS=[{'role':'merchant','industry':'freelance','strategy':['Deliver\x20in\x20milestones\x20and\x20release\x20per\x20milestone\x20(avoid\x20all-or-nothing\x20non-acceptance).','Record\x20WIP\x20hash\x20at\x20each\x20key\x20node\x20as\x20evidence.','Use\x20an\x20accept_guard\x20time\x20gate\x20so\x20non-accepting\x20clients\x20auto-release\x20after\x20the\x20deadline.'],'requirements':['must\x20have\x20arbitration','must\x20have\x20a\x20compensation\x20fund','forbid\x20full\x20upfront\x20payment\x20before\x20any\x20delivery']},{'role':'customer','industry':'freelance','strategy':['Pay\x20per\x20milestone,\x20verify\x20each\x20before\x20releasing\x20the\x20next.','Verify\x20WIP\x20hash\x20before\x20accepting\x20a\x20delivery.','Open\x20arbitration\x20if\x20the\x20provider\x20is\x20unresponsive.'],'requirements':['must\x20have\x20arbitration','must\x20have\x20a\x20compensation\x20fund','forbid\x20direct\x20payment\x20without\x20escrow']},{'role':'merchant','industry':'rental','strategy':['Record\x20pre/post\x20rental\x20WIP\x20hashes\x20as\x20the\x20damage-claim\x20baseline.','Hold\x20the\x20deposit\x20in\x20a\x20graded\x20allocator\x20(normal\x20return\x20auto-releases).','Keep\x20an\x20evidence\x20chain\x20for\x20any\x20damage\x20claim.'],'requirements':['must\x20have\x20arbitration','damage\x20claims\x20require\x20pre-rental\x20baseline\x20evidence']},{'role':'customer','industry':'rental','strategy':['Record\x20condition\x20evidence\x20(WIP\x20hash)\x20before\x20renting.','Confirm\x20the\x20return\x20only\x20after\x20verifying\x20no\x20damage.','Open\x20arbitration\x20against\x20unfair\x20damage\x20claims.'],'requirements':['must\x20have\x20arbitration','deposit\x20must\x20be\x20refundable\x20(a\x20return\x20path\x20must\x20exist)']},{'role':'merchant','industry':'education','strategy':['Release\x20tuition\x20per\x20lesson\x20(1/N)\x20to\x20structurally\x20prevent\x20run-away\x20disputes.','Keep\x20attendance/completion\x20evidence.','Declare\x20the\x20refund\x20policy\x20up\x20front.'],'requirements':['must\x20have\x20arbitration','tuition\x20must\x20be\x20escrowed\x20(not\x20directly\x20received)']},{'role':'customer','industry':'education','strategy':['Pay\x20per\x20lesson,\x20never\x20full\x20upfront.','Confirm\x20completed\x20lessons\x20before\x20paying.','Request\x20proportional\x20refund\x20if\x20the\x20course\x20is\x20cancelled.'],'requirements':['must\x20have\x20arbitration','forbid\x20one-time\x20full\x20upfront\x20payment']},{'role':'merchant','industry':'travel','strategy':['Model\x20multi-leg\x20trips\x20as\x20a\x20multi-leg\x20machine\x20with\x20a\x20transparent\x20fund\x20waterfall.','Declare\x20the\x20cancellation\x20policy\x20up\x20front.','Separate\x20refundable\x20vs\x20non-refundable\x20legs.'],'requirements':['must\x20have\x20arbitration','funds\x20must\x20be\x20escrowed\x20(conditionally\x20released)']},{'role':'customer','industry':'travel','strategy':['Confirm\x20the\x20cancellation/refund\x20policy\x20before\x20booking.','Watch\x20cross-leg\x20responsibility\x20in\x20multi-leg\x20trips.','Pursue\x20the\x20non-refundable\x20downstream\x20on\x20flight\x20cancellation.'],'requirements':['must\x20have\x20arbitration','cancellation\x20must\x20be\x20refundable\x20(a\x20refund\x20path\x20must\x20exist)']},{'role':'merchant','industry':'subscription','strategy':['Charge\x20each\x20period\x20via\x20charge_guard_signer\x20(explicit\x20user\x20signature).','Keep\x20100%\x20of\x20revenue\x20(no\x20platform\x20cut).','Declare\x20pauses/cancellation\x20explicitly.'],'requirements':['forbid\x20auto-renewal\x20traps\x20(every\x20period\x20must\x20be\x20explicitly\x20signed)']},{'role':'customer','industry':'subscription','strategy':['Confirm\x20authorization\x20before\x20each\x20charge.','Cancel\x20anytime\x20without\x20friction.','Stop\x20charging\x20when\x20the\x20creator\x20pauses.'],'requirements':['forbid\x20auto-renewal\x20(every\x20period\x20must\x20be\x20explicitly\x20signed)','cancellation\x20must\x20be\x20frictionless']},{'role':'merchant','industry':'retail','strategy':['Release\x20funds\x20on\x20confirmed\x20receipt\x20(escrow).','Keep\x20an\x20evidence\x20chain\x20for\x20authenticity\x20disputes.','Declare\x20the\x20return\x20policy\x20up\x20front.'],'requirements':['must\x20have\x20arbitration','funds\x20must\x20be\x20escrowed\x20(released\x20on\x20confirmed\x20receipt)']},{'role':'customer','industry':'retail','strategy':['Verify\x20authenticity\x20before\x20confirming\x20receipt.','Never\x20confirm\x20receipt\x20before\x20the\x20goods\x20arrive.','Open\x20arbitration\x20for\x20counterfeit\x20/\x20not-received.'],'requirements':['must\x20have\x20arbitration','not-received\x20must\x20be\x20refundable']}];function buildDefault(a){const b=a['industry']?[a['industry']]:[],c={'identity':{'self_description':a['role']+'\x20in\x20'+(a['industry']??'any')+'\x20industry'},'preferences':a['industry']?industryPrefs(a['industry']):{}},d={'strategy':a['strategy'],'requirements':a['requirements']};return{'version':PERSONA_VERSION,'scope':'system','role':a['role'],'industries':b,'long_term':c,'current':d,'updated_at':0x0};}const GENERIC_ROLE_SPECS=[{'role':'arbitrator','strategy':['Confirm\x20cases\x20promptly\x20to\x20keep\x20the\x20dispute\x20pipeline\x20moving\x20(efficiency\x20+\x20fee\x20throughput).','Verify\x20all\x20evidence\x20(WTS)\x20before\x20ruling\x20—\x20unverified\x20evidence\x20is\x20not\x20evidence.','Write\x20reasoned,\x20professional\x20feedback\x20—\x20it\x20is\x20permanently\x20public\x20on-chain\x20(reputation).','Reset\x20unclear\x20cases\x20back\x20with\x20clear\x20feedback\x20rather\x20than\x20guessing.'],'requirements':['must\x20verify\x20evidence\x20(WTS)\x20before\x20ruling','forbid\x20ruling\x20without\x20verified\x20evidence']},{'role':'supplier','strategy':['Deliver\x20the\x20sub-order\x20and\x20retain\x20per-tier\x20sub-delivery\x20proof.','Settle\x20independently\x20per\x20verified\x20tier\x20(not\x20bundled\x20with\x20the\x20main\x20order).','Keep\x20an\x20evidence\x20chain\x20for\x20any\x20sub-delivery\x20dispute.'],'requirements':['sub-delivery\x20must\x20be\x20provable\x20(per-tier\x20release\x20guard)','must\x20have\x20independent\x20allocation\x20for\x20sub-order\x20settlement']},{'role':'collaborator','strategy':['Advance\x20only\x20the\x20forwards\x20within\x20your\x20permission\x20scope.','Advance\x20promptly\x20to\x20keep\x20the\x20workflow\x20moving\x20(avoid\x20stall\x20penalties).','Avoid\x20interfering\x20outside\x20your\x20permission\x20scope\x20(creates\x20responsibility\x20without\x20authority).'],'requirements':['only\x20operate\x20authorized\x20forwards\x20(permission\x20index\x20/\x20named\x20operator)','forbid\x20operating\x20outside\x20your\x20permission\x20scope']},{'role':'prospect','strategy':['Verify\x20fund\x20safety\x20(escrow\x20+\x20refund\x20path)\x20before\x20ordering.','Verify\x20delivery\x20trust\x20(WIP\x20hash,\x20machine\x20workflow)\x20before\x20ordering.','Check\x20arbitration\x20availability\x20for\x20recourse\x20before\x20committing.'],'requirements':['must\x20have\x20arbitration','must\x20have\x20a\x20refund\x20path']},{'role':'demander','strategy':['Publish\x20demand\x20with\x20explicit\x20scope,\x20award\x20criteria\x20and\x20guard\x20expectations\x20so\x20presentations\x20are\x20comparable.','Keep\x20at\x20least\x20two\x20credible\x20presenters\x20in\x20the\x20field\x20until\x20the\x20award\x20decision.','Score\x20presenters\x20on\x20published\x20weights\x20(trust,\x20price,\x20evidence)\x20rather\x20than\x20rapport.','Pilot\x20high-risk\x20engagements\x20with\x20milestone\x20allocators\x20before\x20scaling.'],'requirements':['award\x20must\x20happen\x20on-chain\x20through\x20the\x20demand\x20flow\x20(no\x20off-platform\x20handshake)','high-risk\x20categories\x20must\x20have\x20arbitration\x20and\x20compensation\x20coverage']}],DEFAULTS=[...SPECS,...GENERIC_ROLE_SPECS]['map'](buildDefault);export const GENERIC_PERSONA={'version':PERSONA_VERSION,'scope':'system','role':'customer','industries':[],'long_term':{'identity':{'self_description':'generic\x20WoWok\x20user'}},'current':{},'updated_at':0x0};function personaToIndustryPersona(a){if(a['industries']['length']===0x0)return null;return{'role':a['role'],'industry':a['industries'][0x0],'long_term':a['long_term'],'current':a['current']};}function industryPersonaToPersona(a){return{'version':PERSONA_VERSION,'scope':'system','role':a['role'],'industries':[a['industry']],'long_term':a['long_term'],'current':a['current'],'updated_at':0x0};}const builtinPersonaeByIndustry=new Map();for(const p of DEFAULTS){const ip=personaToIndustryPersona(p);if(!ip)continue;const list=builtinPersonaeByIndustry['get'](ip['industry'])??[];list['push'](ip),builtinPersonaeByIndustry['set'](ip['industry'],list);}for(const [industry,personae]of builtinPersonaeByIndustry){registerIndustryPersonae(industry,personae);}export function getIndustryDefault(a,b){const c=getIndustryPersona(b,a);if(c)return industryPersonaToPersona(c);const d=DEFAULTS['find'](e=>e['role']===a&&e['industries']['length']===0x0);if(d)return{...d};return{...GENERIC_PERSONA,'role':a};}export function listIndustryDefaults(){return DEFAULTS['map'](a=>({...a}));}
|
|
1
|
+
import{getDefaultPreferences}from'../customer/user-preferences.js';import{getIndustryPersona,registerIndustryPersonae}from'./pack-personae.js';import{PERSONA_VERSION}from'./types.js';function safePrefs(a){const {budget_range:b,...c}=a;return c;}function industryPrefs(a){return safePrefs(getDefaultPreferences(a));}const SPECS=[{'role':'merchant','industry':'freelance','strategy':['Deliver\x20in\x20milestones\x20and\x20release\x20per\x20milestone\x20(avoid\x20all-or-nothing\x20non-acceptance).','Record\x20WIP\x20hash\x20at\x20each\x20key\x20node\x20as\x20evidence.','Use\x20an\x20accept_guard\x20time\x20gate\x20so\x20non-accepting\x20clients\x20auto-release\x20after\x20the\x20deadline.'],'requirements':['must\x20have\x20arbitration','must\x20have\x20a\x20compensation\x20fund','forbid\x20full\x20upfront\x20payment\x20before\x20any\x20delivery']},{'role':'customer','industry':'freelance','strategy':['Pay\x20per\x20milestone,\x20verify\x20each\x20before\x20releasing\x20the\x20next.','Verify\x20WIP\x20hash\x20before\x20accepting\x20a\x20delivery.','Open\x20arbitration\x20if\x20the\x20provider\x20is\x20unresponsive.'],'requirements':['must\x20have\x20arbitration','must\x20have\x20a\x20compensation\x20fund','forbid\x20direct\x20payment\x20without\x20escrow']},{'role':'merchant','industry':'rental','strategy':['Record\x20pre/post\x20rental\x20WIP\x20hashes\x20as\x20the\x20damage-claim\x20baseline.','Hold\x20the\x20deposit\x20in\x20a\x20graded\x20allocator\x20(normal\x20return\x20auto-releases).','Keep\x20an\x20evidence\x20chain\x20for\x20any\x20damage\x20claim.'],'requirements':['must\x20have\x20arbitration','damage\x20claims\x20require\x20pre-rental\x20baseline\x20evidence']},{'role':'customer','industry':'rental','strategy':['Record\x20condition\x20evidence\x20(WIP\x20hash)\x20before\x20renting.','Confirm\x20the\x20return\x20only\x20after\x20verifying\x20no\x20damage.','Open\x20arbitration\x20against\x20unfair\x20damage\x20claims.'],'requirements':['must\x20have\x20arbitration','deposit\x20must\x20be\x20refundable\x20(a\x20return\x20path\x20must\x20exist)']},{'role':'merchant','industry':'education','strategy':['Release\x20tuition\x20per\x20lesson\x20(1/N)\x20to\x20structurally\x20prevent\x20run-away\x20disputes.','Keep\x20attendance/completion\x20evidence.','Declare\x20the\x20refund\x20policy\x20up\x20front.'],'requirements':['must\x20have\x20arbitration','tuition\x20must\x20be\x20escrowed\x20(not\x20directly\x20received)']},{'role':'customer','industry':'education','strategy':['Pay\x20per\x20lesson,\x20never\x20full\x20upfront.','Confirm\x20completed\x20lessons\x20before\x20paying.','Request\x20proportional\x20refund\x20if\x20the\x20course\x20is\x20cancelled.'],'requirements':['must\x20have\x20arbitration','forbid\x20one-time\x20full\x20upfront\x20payment']},{'role':'merchant','industry':'travel','strategy':['Model\x20multi-leg\x20trips\x20as\x20a\x20multi-leg\x20machine\x20with\x20a\x20transparent\x20fund\x20waterfall.','Declare\x20the\x20cancellation\x20policy\x20up\x20front.','Separate\x20refundable\x20vs\x20non-refundable\x20legs.'],'requirements':['must\x20have\x20arbitration','funds\x20must\x20be\x20escrowed\x20(conditionally\x20released)']},{'role':'customer','industry':'travel','strategy':['Confirm\x20the\x20cancellation/refund\x20policy\x20before\x20booking.','Watch\x20cross-leg\x20responsibility\x20in\x20multi-leg\x20trips.','Pursue\x20the\x20non-refundable\x20downstream\x20on\x20flight\x20cancellation.'],'requirements':['must\x20have\x20arbitration','cancellation\x20must\x20be\x20refundable\x20(a\x20refund\x20path\x20must\x20exist)']},{'role':'merchant','industry':'subscription','strategy':['Charge\x20each\x20period\x20via\x20charge_guard_signer\x20(explicit\x20user\x20signature).','Keep\x20100%\x20of\x20revenue\x20(no\x20platform\x20cut).','Declare\x20pauses/cancellation\x20explicitly.'],'requirements':['forbid\x20auto-renewal\x20traps\x20(every\x20period\x20must\x20be\x20explicitly\x20signed)']},{'role':'customer','industry':'subscription','strategy':['Confirm\x20authorization\x20before\x20each\x20charge.','Cancel\x20anytime\x20without\x20friction.','Stop\x20charging\x20when\x20the\x20creator\x20pauses.'],'requirements':['forbid\x20auto-renewal\x20(every\x20period\x20must\x20be\x20explicitly\x20signed)','cancellation\x20must\x20be\x20frictionless']},{'role':'merchant','industry':'retail','strategy':['Release\x20funds\x20on\x20confirmed\x20receipt\x20(escrow).','Keep\x20an\x20evidence\x20chain\x20for\x20authenticity\x20disputes.','Declare\x20the\x20return\x20policy\x20up\x20front.'],'requirements':['must\x20have\x20arbitration','funds\x20must\x20be\x20escrowed\x20(released\x20on\x20confirmed\x20receipt)']},{'role':'customer','industry':'retail','strategy':['Verify\x20authenticity\x20before\x20confirming\x20receipt.','Never\x20confirm\x20receipt\x20before\x20the\x20goods\x20arrive.','Open\x20arbitration\x20for\x20counterfeit\x20/\x20not-received.'],'requirements':['must\x20have\x20arbitration','not-received\x20must\x20be\x20refundable']},{'role':'merchant','industry':'licensing','strategy':['Anchor\x20the\x20license\x20terms\x20(territory,\x20term,\x20media,\x20caps)\x20as\x20a\x20WIP\x20hash\x20before\x20granting.','Split\x20proceeds\x20via\x20a\x20frozen\x20Allocation\x20Rate\x20plan\x20every\x20rights-holder\x20can\x20audit.','Gate\x20settlement\x20behind\x20an\x20inspection-window\x20time-lock\x20Guard;\x20state\x20plainly\x20that\x20a\x20usage\x20cap\x20is\x20attested,\x20not\x20metered.'],'requirements':['must\x20have\x20arbitration','must\x20have\x20a\x20compensation\x20fund','forbid\x20presenting\x20an\x20off-chain\x20sale\x20as\x20an\x20on-chain\x20auction']},{'role':'customer','industry':'licensing','strategy':['Read\x20the\x20frozen\x20split\x20and\x20the\x20terms\x20hash\x20before\x20committing.','Verify\x20the\x20granted\x20scope\x20during\x20the\x20inspection\x20window\x20before\x20release.','Open\x20arbitration\x20for\x20scope/territory/royalty-reporting\x20disputes.'],'requirements':['must\x20have\x20arbitration','the\x20granted\x20rights\x20must\x20be\x20hash-anchored\x20(provable,\x20not\x20prose)','funds\x20must\x20be\x20escrowed\x20until\x20the\x20inspection\x20window\x20passes']},{'role':'merchant','industry':'crowdfunding','strategy':['Anchor\x20the\x20campaign\x20terms,\x20funding\x20goal\x20and\x20deadline\x20as\x20a\x20WIP\x20hash\x20before\x20launch.','Escrow\x20each\x20contribution\x20in\x20its\x20OWN\x20Allocation\x20bound\x20to\x20the\x20funder\x27s\x20Order\x20—\x20never\x20pool;\x20settle\x20with\x20a\x20two-leg\x20release/refund\x20Guard\x20gated\x20on\x20the\x20aggregate\x20threshold\x20AND\x20the\x20deadline.','Bind\x20every\x20contribution-row\x20write\x20to\x20its\x20funder\x20(order.owner\x20==\x20Signer);\x20state\x20plainly\x20that\x20the\x20threshold\x20is\x20an\x20aggregate\x20read,\x20not\x20a\x20chain-verified\x20total-custody\x20proof,\x20and\x20never\x20promise\x20investment\x20returns.'],'requirements':['must\x20have\x20arbitration','must\x20have\x20a\x20compensation\x20fund','forbid\x20presenting\x20a\x20flexible\x20keep-it-all\x20campaign\x20as\x20all-or-nothing','forbid\x20promising\x20investment\x20returns\x20or\x20token-price\x20appreciation']},{'role':'customer','industry':'crowdfunding','strategy':['Read\x20the\x20live\x20aggregate\x20and\x20the\x20funding\x20goal\x20before\x20contributing.','Confirm\x20the\x20refund\x20posture:\x20all-or-nothing\x20refunds\x20automatically\x20at\x20deadline\x20if\x20the\x20goal\x20is\x20missed;\x20flexible\x20keep-it-all\x20does\x20not\x20refund.','Open\x20arbitration\x20for\x20non-delivery\x20after\x20a\x20successful\x20raise.'],'requirements':['must\x20have\x20arbitration','my\x20contribution\x20must\x20be\x20escrowed\x20unpooled\x20and\x20refundable\x20to\x20me\x20on\x20a\x20missed\x20threshold','the\x20funding\x20goal\x20and\x20deadline\x20must\x20be\x20hash-anchored\x20(provable,\x20not\x20prose)']}];function buildDefault(a){const b=a['industry']?[a['industry']]:[],c={'identity':{'self_description':a['role']+'\x20in\x20'+(a['industry']??'any')+'\x20industry'},'preferences':a['industry']?industryPrefs(a['industry']):{}},d={'strategy':a['strategy'],'requirements':a['requirements']};return{'version':PERSONA_VERSION,'scope':'system','role':a['role'],'industries':b,'long_term':c,'current':d,'updated_at':0x0};}const GENERIC_ROLE_SPECS=[{'role':'arbitrator','strategy':['Confirm\x20cases\x20promptly\x20to\x20keep\x20the\x20dispute\x20pipeline\x20moving\x20(efficiency\x20+\x20fee\x20throughput).','Verify\x20all\x20evidence\x20(WTS)\x20before\x20ruling\x20—\x20unverified\x20evidence\x20is\x20not\x20evidence.','Write\x20reasoned,\x20professional\x20feedback\x20—\x20it\x20is\x20permanently\x20public\x20on-chain\x20(reputation).','Reset\x20unclear\x20cases\x20back\x20with\x20clear\x20feedback\x20rather\x20than\x20guessing.'],'requirements':['must\x20verify\x20evidence\x20(WTS)\x20before\x20ruling','forbid\x20ruling\x20without\x20verified\x20evidence']},{'role':'supplier','strategy':['Deliver\x20the\x20sub-order\x20and\x20retain\x20per-tier\x20sub-delivery\x20proof.','Settle\x20independently\x20per\x20verified\x20tier\x20(not\x20bundled\x20with\x20the\x20main\x20order).','Keep\x20an\x20evidence\x20chain\x20for\x20any\x20sub-delivery\x20dispute.'],'requirements':['sub-delivery\x20must\x20be\x20provable\x20(per-tier\x20release\x20guard)','must\x20have\x20independent\x20allocation\x20for\x20sub-order\x20settlement']},{'role':'collaborator','strategy':['Advance\x20only\x20the\x20forwards\x20within\x20your\x20permission\x20scope.','Advance\x20promptly\x20to\x20keep\x20the\x20workflow\x20moving\x20(avoid\x20stall\x20penalties).','Avoid\x20interfering\x20outside\x20your\x20permission\x20scope\x20(creates\x20responsibility\x20without\x20authority).'],'requirements':['only\x20operate\x20authorized\x20forwards\x20(permission\x20index\x20/\x20named\x20operator)','forbid\x20operating\x20outside\x20your\x20permission\x20scope']},{'role':'prospect','strategy':['Verify\x20fund\x20safety\x20(escrow\x20+\x20refund\x20path)\x20before\x20ordering.','Verify\x20delivery\x20trust\x20(WIP\x20hash,\x20machine\x20workflow)\x20before\x20ordering.','Check\x20arbitration\x20availability\x20for\x20recourse\x20before\x20committing.'],'requirements':['must\x20have\x20arbitration','must\x20have\x20a\x20refund\x20path']},{'role':'demander','strategy':['Publish\x20demand\x20with\x20explicit\x20scope,\x20award\x20criteria\x20and\x20guard\x20expectations\x20so\x20presentations\x20are\x20comparable.','Keep\x20at\x20least\x20two\x20credible\x20presenters\x20in\x20the\x20field\x20until\x20the\x20award\x20decision.','Score\x20presenters\x20on\x20published\x20weights\x20(trust,\x20price,\x20evidence)\x20rather\x20than\x20rapport.','Pilot\x20high-risk\x20engagements\x20with\x20milestone\x20allocators\x20before\x20scaling.'],'requirements':['award\x20must\x20happen\x20on-chain\x20through\x20the\x20demand\x20flow\x20(no\x20off-platform\x20handshake)','high-risk\x20categories\x20must\x20have\x20arbitration\x20and\x20compensation\x20coverage']}],DEFAULTS=[...SPECS,...GENERIC_ROLE_SPECS]['map'](buildDefault);export const GENERIC_PERSONA={'version':PERSONA_VERSION,'scope':'system','role':'customer','industries':[],'long_term':{'identity':{'self_description':'generic\x20WoWok\x20user'}},'current':{},'updated_at':0x0};function personaToIndustryPersona(a){if(a['industries']['length']===0x0)return null;return{'role':a['role'],'industry':a['industries'][0x0],'long_term':a['long_term'],'current':a['current']};}function industryPersonaToPersona(a){return{'version':PERSONA_VERSION,'scope':'system','role':a['role'],'industries':[a['industry']],'long_term':a['long_term'],'current':a['current'],'updated_at':0x0};}const builtinPersonaeByIndustry=new Map();for(const p of DEFAULTS){const ip=personaToIndustryPersona(p);if(!ip)continue;const list=builtinPersonaeByIndustry['get'](ip['industry'])??[];list['push'](ip),builtinPersonaeByIndustry['set'](ip['industry'],list);}for(const [industry,personae]of builtinPersonaeByIndustry){registerIndustryPersonae(industry,personae);}export function getIndustryDefault(a,b){const c=getIndustryPersona(b,a);if(c)return industryPersonaToPersona(c);const d=DEFAULTS['find'](e=>e['role']===a&&e['industries']['length']===0x0);if(d)return{...d};return{...GENERIC_PERSONA,'role':a};}export function listIndustryDefaults(){return DEFAULTS['map'](a=>({...a}));}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{getEffectivePersona}from'./index.js';import{INTENT_PRESETS,isTopologyIntent,normalizeTopologyFocusPref}from'../graph/onchain/strategy.js';export const ROLE_TOPOLOGY_DEFAULTS={'customer':{'intents':['order_health','counterparty'],'rationale':'track\x20own\x20orders\x20to\x20completion\x20and\x20know\x20who\x20is\x20on\x20the\x20other\x20side'},'prospect':{'intents':['counterparty','reputation','fund_flow'],'rationale':'pre-order\x20due\x20diligence:\x20seller\x20credibility,\x20fund\x20safety,\x20social\x20proof'},'merchant':{'intents':['order_health','supply_chain'],'rationale':'track\x20incoming\x20orders\x20and\x20the\x20settlement\x20waterfall\x20of\x20each'},'supplier':{'intents':['supply_chain','workflow'],'rationale':'sub-order\x20settlement\x20structure\x20and\x20the\x20process\x20it\x20hangs\x20on'},'collaborator':{'intents':['workflow','permission'],'rationale':'which\x20forwards\x20exist\x20and\x20what\x20is\x20within\x20own\x20permission\x20scope'},'arbitrator':{'intents':['arbitration','reputation'],'rationale':'cases\x20at\x20hand\x20plus\x20the\x20parties\x27\x20track\x20record'},'demander':{'intents':['demand_match','counterparty'],'rationale':'evaluate\x20presenters\x20against\x20the\x20demand\x20and\x20know\x20who\x20they\x20are'}};export const INDUSTRY_TOPOLOGY_DEFAULTS={'freelance':{'label':'freelance','familyDepths':{'W':0x4,'M':0x3},'tableEdges':['machine.node']},'rental':{'label':'rental','familyDepths':{'M':0x4,'W':0x2}},'education':{'label':'education','familyDepths':{'W':0x4,'M':0x2},'tableEdges':['machine.node']},'travel':{'label':'travel','familyDepths':{'W':0x4,'M':0x3},'tableEdges':['machine.node']},'subscription':{'label':'subscription','familyDepths':{'M':0x3,'W':0x2}},'retail':{'label':'retail','familyDepths':{'M':0x3}}};export function getIndustryTopologyTemplate(a){if(!a)return undefined;return INDUSTRY_TOPOLOGY_DEFAULTS[a];}export async function resolvePersonaTopologyFocus(a,b,c){try{const d=await getEffectivePersona(a,b,c),e=c??d['role'],f=d['layer']['profiles']?.[e]?.['topology'];if(f===undefined)return undefined;return normalizeTopologyFocusPref(f)??undefined;}catch{return undefined;}}export async function resolveTopologyContext(a){const b=a['role']?ROLE_TOPOLOGY_DEFAULTS[a['role']]:undefined,c=getIndustryTopologyTemplate(a['industry']);let d,e,f,g;try{const h=await getEffectivePersona(a['account'],a['industry'],a['role']),i=a['role']??h['role'];f=i,g=h['layer']['evaluation'];const j=h['layer']['profiles']?.[i]?.['topology'];if(j!==undefined)d=normalizeTopologyFocusPref(j)??undefined;const k=h['layer']['preferences']?.['risk_appetite'],l=k==='conservative'||k==='balanced'||k==='aggressive'?k:undefined,m=h['layer']['requirements'];(l!=null||(m?.['length']??0x0)>0x0)&&(e={...l!=null?{'risk_appetite':l}:{},...m?.['length']?{'requirements':m}:{}});}catch{}return{'roleDefault':b,'industryTemplate':c,'personaPref':d,'drive':e,...f?{'personaRole':f}:{},...g?{'evaluation':g}:{}};}export function describeIntents(){return Object['entries'](INTENT_PRESETS)['map'](([a,b])=>{const c=b['families']?'\x20families\x20'+b['families']['join']('/'):'',d=b['familyDepths']?'\x20depths\x20'+Object['entries'](b['familyDepths'])['map'](([e,g])=>e+'≤'+g)['join']('\x20'):'';return a+':\x20'+b['description']+c+d;});}export function assertIntent(a){if(!isTopologyIntent(a))throw new Error('unknown\x20topology\x20intent\x20\x27'+a+'\x27\x20(valid:\x20'+Object['keys'](INTENT_PRESETS)['join'](',\x20')+')');return a;}
|
|
1
|
+
import{getEffectivePersona}from'./index.js';import{INTENT_PRESETS,isTopologyIntent,normalizeTopologyFocusPref}from'../graph/onchain/strategy.js';export const ROLE_TOPOLOGY_DEFAULTS={'customer':{'intents':['order_health','counterparty'],'rationale':'track\x20own\x20orders\x20to\x20completion\x20and\x20know\x20who\x20is\x20on\x20the\x20other\x20side'},'prospect':{'intents':['counterparty','reputation','fund_flow'],'rationale':'pre-order\x20due\x20diligence:\x20seller\x20credibility,\x20fund\x20safety,\x20social\x20proof'},'merchant':{'intents':['order_health','supply_chain'],'rationale':'track\x20incoming\x20orders\x20and\x20the\x20settlement\x20waterfall\x20of\x20each'},'supplier':{'intents':['supply_chain','workflow'],'rationale':'sub-order\x20settlement\x20structure\x20and\x20the\x20process\x20it\x20hangs\x20on'},'collaborator':{'intents':['workflow','permission'],'rationale':'which\x20forwards\x20exist\x20and\x20what\x20is\x20within\x20own\x20permission\x20scope'},'arbitrator':{'intents':['arbitration','reputation'],'rationale':'cases\x20at\x20hand\x20plus\x20the\x20parties\x27\x20track\x20record'},'demander':{'intents':['demand_match','counterparty'],'rationale':'evaluate\x20presenters\x20against\x20the\x20demand\x20and\x20know\x20who\x20they\x20are'}};export const INDUSTRY_TOPOLOGY_DEFAULTS={'freelance':{'label':'freelance','familyDepths':{'W':0x4,'M':0x3},'tableEdges':['machine.node']},'rental':{'label':'rental','familyDepths':{'M':0x4,'W':0x2}},'education':{'label':'education','familyDepths':{'W':0x4,'M':0x2},'tableEdges':['machine.node']},'travel':{'label':'travel','familyDepths':{'W':0x4,'M':0x3},'tableEdges':['machine.node']},'subscription':{'label':'subscription','familyDepths':{'M':0x3,'W':0x2}},'retail':{'label':'retail','familyDepths':{'M':0x3}},'licensing':{'label':'licensing','familyDepths':{'M':0x4,'W':0x2}},'crowdfunding':{'label':'crowdfunding','familyDepths':{'M':0x4,'W':0x2}}};export function getIndustryTopologyTemplate(a){if(!a)return undefined;return INDUSTRY_TOPOLOGY_DEFAULTS[a];}export async function resolvePersonaTopologyFocus(a,b,c){try{const d=await getEffectivePersona(a,b,c),e=c??d['role'],f=d['layer']['profiles']?.[e]?.['topology'];if(f===undefined)return undefined;return normalizeTopologyFocusPref(f)??undefined;}catch{return undefined;}}export async function resolveTopologyContext(a){const b=a['role']?ROLE_TOPOLOGY_DEFAULTS[a['role']]:undefined,c=getIndustryTopologyTemplate(a['industry']);let d,e,f,g;try{const h=await getEffectivePersona(a['account'],a['industry'],a['role']),i=a['role']??h['role'];f=i,g=h['layer']['evaluation'];const j=h['layer']['profiles']?.[i]?.['topology'];if(j!==undefined)d=normalizeTopologyFocusPref(j)??undefined;const k=h['layer']['preferences']?.['risk_appetite'],l=k==='conservative'||k==='balanced'||k==='aggressive'?k:undefined,m=h['layer']['requirements'];(l!=null||(m?.['length']??0x0)>0x0)&&(e={...l!=null?{'risk_appetite':l}:{},...m?.['length']?{'requirements':m}:{}});}catch{}return{'roleDefault':b,'industryTemplate':c,'personaPref':d,'drive':e,...f?{'personaRole':f}:{},...g?{'evaluation':g}:{}};}export function describeIntents(){return Object['entries'](INTENT_PRESETS)['map'](([a,b])=>{const c=b['families']?'\x20families\x20'+b['families']['join']('/'):'',d=b['familyDepths']?'\x20depths\x20'+Object['entries'](b['familyDepths'])['map'](([e,g])=>e+'≤'+g)['join']('\x20'):'';return a+':\x20'+b['description']+c+d;});}export function assertIntent(a){if(!isTopologyIntent(a))throw new Error('unknown\x20topology\x20intent\x20\x27'+a+'\x27\x20(valid:\x20'+Object['keys'](INTENT_PRESETS)['join'](',\x20')+')');return a;}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{initServicePuzzleFromIntent,initMachinePuzzleFromIntent,initAllocationPuzzleFromIntent,initTreasuryPuzzleFromIntent,initArbitrationPuzzleFromIntent,initRewardPuzzleFromIntent,initProgressPuzzleFromIntent,initOrderPuzzleFromIntent,initPuzzleFromIntent as
|
|
1
|
+
import{initServicePuzzleFromIntent,initMachinePuzzleFromIntent,initAllocationPuzzleFromIntent,initTreasuryPuzzleFromIntent,initArbitrationPuzzleFromIntent,initRewardPuzzleFromIntent,initProgressPuzzleFromIntent,initOrderPuzzleFromIntent,initPuzzleFromIntent as a328a,checkServicePuzzleCompleteness,checkMachinePuzzleCompleteness,checkAllocationPuzzleCompleteness,checkTreasuryPuzzleCompleteness,checkArbitrationPuzzleCompleteness,checkRewardPuzzleCompleteness,checkProgressPuzzleCompleteness,checkOrderPuzzleCompleteness,checkPuzzleCompleteness as a328b}from'../../knowledge/index.js';import{initPuzzleFromIntent as a328c,checkPuzzleCompleteness as a328d}from'../../knowledge/permission-puzzle.js';const KEYWORD_TABLE=[{'category':'Product/Service','keywords_zh':['product','selling','sell','sales','store','open\x20shop'],'keywords_en':['sell','product','sale','shop','store'],'objects':['service','order','progress'],'required_level':'R','scene_id':'retail'},{'category':'Subscription','keywords_zh':['subscription','cycle','renewal'],'keywords_en':['subscribe','recurring','subscription'],'objects':['service','machine','reward'],'required_level':'C','scene_id':'subscription'},{'category':'Rental','keywords_zh':['rent','lease','return'],'keywords_en':['rent','lease','return'],'objects':['service','machine','arb'],'required_level':'C','scene_id':'rental_return'},{'category':'Trust','keywords_zh':['deposit','pledge','verify','trust'],'keywords_en':['deposit','trust','verify'],'objects':['guard','permission','treasury'],'required_level':'R','scene_id':'trust_deposit'},{'category':'Funds','keywords_zh':['split','collect','share\x20profit','income','incentive'],'keywords_en':['split','revenue','reward'],'objects':['allocation','treasury','reward'],'required_level':'R','scene_id':'revenue_split'},{'category':'Workflow','keywords_zh':['node','stage','process','workflow'],'keywords_en':['workflow','stage','node'],'objects':['machine','progress'],'required_level':'R','scene_id':'workflow'},{'category':'Dispute','keywords_zh':['arbitration','refund','conflict','rights\x20protection'],'keywords_en':['arbitration','refund','dispute'],'objects':['arb','proof'],'required_level':'C','scene_id':'arbitration_dispute'},{'category':'Contact','keywords_zh':['customer\x20service','contact','communication'],'keywords_en':['contact','support','im'],'objects':['contact'],'required_level':'C','scene_id':'contact_im'},{'category':'Data','keywords_zh':['evidence','record','data'],'keywords_en':['evidence','record','data'],'objects':['repository','proof'],'required_level':'C','scene_id':'evidence_record'},{'category':'User\x20Profile','keywords_zh':['personal\x20info','preference','privacy'],'keywords_en':['personal','profile','privacy'],'objects':['personal','contact'],'required_level':'OPTIONAL','scene_id':'user_profile'},{'category':'Demand\x20Submission','keywords_zh':['demand','publish','inquiry'],'keywords_en':['demand','request','inquiry'],'objects':['demand'],'required_level':'OPTIONAL','scene_id':'demand_inquiry'}],INDUSTRY_KEYWORDS=[{'industry':'freelance','words':['freelance','outsourcing','freelance','gig']},{'industry':'rental','words':['rental','lease','rental','rent']},{'industry':'education','words':['education','course','training','education','course']},{'industry':'travel','words':['travel','tour','itinerary','travel','trip']},{'industry':'subscription','words':['subscription','cycle','subscription','recurring']}];function buildPuzzleDispatch(){const a=(c,d)=>{try{return c(d);}catch{return undefined;}},b=(c,d)=>{if(!c)return{'missing':[],'complete':![],'next_step':'init\x20failed'};try{return d(c);}catch{return{'missing':[],'complete':![],'next_step':'check\x20failed'};}};return{'service':{'init':c=>a(initServicePuzzleFromIntent,{'primary_goal':c}),'check':c=>b(c,checkServicePuzzleCompleteness)},'machine':{'init':c=>a(initMachinePuzzleFromIntent,c),'check':c=>b(c,checkMachinePuzzleCompleteness)},'allocation':{'init':c=>a(initAllocationPuzzleFromIntent,{'primary_goal':c}),'check':c=>b(c,checkAllocationPuzzleCompleteness)},'treasury':{'init':c=>a(initTreasuryPuzzleFromIntent,{'primary_goal':c}),'check':c=>b(c,checkTreasuryPuzzleCompleteness)},'arb':{'init':c=>a(initArbitrationPuzzleFromIntent,{'primary_goal':c}),'check':c=>b(c,checkArbitrationPuzzleCompleteness)},'reward':{'init':c=>a(initRewardPuzzleFromIntent,{'primary_goal':c}),'check':c=>b(c,checkRewardPuzzleCompleteness)},'progress':{'init':c=>a(initProgressPuzzleFromIntent,{'primary_goal':c}),'check':c=>b(c,checkProgressPuzzleCompleteness)},'order':{'init':c=>a(initOrderPuzzleFromIntent,{'primary_goal':c}),'check':c=>b(c,checkOrderPuzzleCompleteness)},'permission':{'init':c=>a(a328c,{'primary_goal':c}),'check':c=>b(c,a328d)},'guard':{'init':c=>a(a328a,{'primary_goal':c}),'check':c=>b(c,a328b)}};}export function extractKeywords(a){if(!a||typeof a!=='string')return[];const b=[];for(const c of KEYWORD_TABLE){const d=[...c['keywords_zh'],...c['keywords_en']];for(const e of d){try{const f=new RegExp(escapeRegex(e),'gi'),g=(a['match'](f)||[])['length'];g>0x0&&b['push']({'keyword':e,'category':c['category'],'matched_objects':[...c['objects']],'required_level':c['required_level'],'match_count':g});}catch{}}}return b['sort']((h,i)=>i['match_count']-h['match_count']),b;}function escapeRegex(a){return a['replace'](/[.*+?^${}()|[\]\\]/g,'\x5c$&');}export function resolveIndustry(a,b){const c=((a??'')+'\x20'+(b??''))['toLowerCase']();for(const d of INDUSTRY_KEYWORDS){for(const e of d['words']){if(c['includes'](e['toLowerCase']()))return d['industry'];}}return'general';}export function identifyObjects(a,b){if(b['length']===0x0)return{'primary':'service','secondary':['permission','machine','progress'],'scenes':[{'object':'service','scene_id':'general'}]};const c=b['find'](i=>i['required_level']==='R'),d=(c??b[0x0])['matched_objects'][0x0],e=new Set([d]),f=[];for(const i of b){for(const j of i['matched_objects']){!e['has'](j)&&(e['add'](j),f['push'](j));}}const g=[],h=new Set();for(const k of KEYWORD_TABLE){const l=b['find'](n=>n['category']===k['category']);if(!l)continue;if(h['has'](k['scene_id']))continue;h['add'](k['scene_id']),g['push']({'object':k['objects'][0x0],'scene_id':k['scene_id']});}return{'primary':d,'secondary':f,'scenes':g};}export function analyzeBusinessIntent(a){const b=[];if(!a||!a['user_intent']||typeof a['user_intent']!=='string')return{'intent_parsed':{'primary_object':'service','secondary_objects':[],'detected_scenes':[],'industry':'general','keyword_matches':[]},'puzzles':{},'overall_completeness':'empty','next_step':'Please\x20provide\x20a\x20non-empty\x20business\x20intent.','recommended_creation_order':[],'warnings':['input.user_intent\x20is\x20empty']};const c=a['user_intent'],e=extractKeywords(c),f=resolveIndustry(c,a['industry']),{primary:g,secondary:h,scenes:i}=identifyObjects(c,e);let j=[g,...h];if(a['target_objects']&&a['target_objects']['length']>0x0){const p=a['target_objects']['filter'](q=>['service','machine','guard','permission','reward','arb','progress','treasury','demand','repository','contact','order','allocation','personal','payment','proof']['includes'](q));if(p['length']>0x0)j=p;}const k=buildPuzzleDispatch(),l={};for(const q of j){const r=k[q];if(!r){b['push']('No\x20puzzle\x20module\x20for\x20\x27'+q+'\x27\x20—\x20skipped\x20(L3\x20object)');continue;}const s=r['init'](c),t=s?r['check'](s):undefined,u=extractMissingDimensions(t);l[q]={'puzzle':s,'completeness':t,'missing_dimensions':u},!s&&b['push']('Puzzle\x20init\x20failed\x20for\x20\x27'+q+'\x27');}const m=aggregatePuzzleCompleteness(l),n=suggestNextPuzzleStep({'intent_parsed':{'primary_object':g,'secondary_objects':h,'detected_scenes':i,'industry':f,'keyword_matches':e},'puzzles':l,'overall_completeness':m,'next_step':'','recommended_creation_order':[],'warnings':b}),o=['permission','progress','machine','guard','allocation','service'];return{'intent_parsed':{'primary_object':g,'secondary_objects':h,'detected_scenes':i,'industry':f,'keyword_matches':e},'puzzles':l,'overall_completeness':m,'next_step':n,'recommended_creation_order':o,'warnings':b};}function extractMissingDimensions(a){if(!a||typeof a!=='object')return[];const b=a,d=b['missing'];if(Array['isArray'](d))return d['map'](f=>String(f));const e=b['missing_details'];if(Array['isArray'](e))return e['map'](f=>String(f?.['dimension']??f));return[];}export function aggregatePuzzleCompleteness(a){const b=Object['values'](a??{});if(b['length']===0x0)return'empty';const c=b['filter'](f=>!f['puzzle'])['length'];if(c===b['length'])return'empty';const d=b['reduce']((f,g)=>f+(g['missing_dimensions']?.['length']??0x0),0x0);if(d===0x0)return'complete';return'partial';}export function suggestNextPuzzleStep(a){if(!a)return'No\x20result\x20to\x20suggest\x20from.';if(a['overall_completeness']==='complete')return'All\x20puzzle\x20dimensions\x20are\x20complete\x20—\x20ready\x20for\x20risk\x20calibration\x20(stage\x203).';if(a['overall_completeness']==='empty')return'No\x20puzzle\x20has\x20been\x20initialized.\x20Provide\x20more\x20concrete\x20business\x20intent\x20so\x20the\x20primary\x20object\x20can\x20be\x20identified.';const b=['permission','treasury','allocation','guard','machine','service','order','progress','arb','reward','proof','repository','demand','contact','personal','payment'],d=a['puzzles']??{},e=b['filter'](f=>d[f]);for(const f of e){const g=d[f];if(!g)continue;const h=g['missing_dimensions']??[];if(h['length']===0x0)continue;const i=g['completeness'],j=i&&typeof i==='object'?i['next_step']:undefined;if(typeof j==='string'&&j['trim']())return'['+f+']\x20'+j;return'['+f+']\x20Complete\x20dimension'+(h['length']>0x1?'s':'')+'\x20'+h['join'](',\x20')+'\x20to\x20advance\x20the\x20puzzle.';}return'Continue\x20dialog\x20to\x20fill\x20remaining\x20pending\x20fields.';}
|
|
@@ -22,6 +22,9 @@ export interface GameTheoryConstraint {
|
|
|
22
22
|
recommendation: string;
|
|
23
23
|
appliesWhen?: (intent: BusinessIntent) => boolean;
|
|
24
24
|
}
|
|
25
|
+
export interface MachineShapeFacts {
|
|
26
|
+
expiredTerminal?: boolean;
|
|
27
|
+
}
|
|
25
28
|
export interface GameTheoryCheckResult {
|
|
26
29
|
scenario: GameScenario;
|
|
27
30
|
conflict: string;
|
|
@@ -41,4 +44,4 @@ export interface GameTheoryReport {
|
|
|
41
44
|
summary: string;
|
|
42
45
|
}
|
|
43
46
|
export declare const GAME_THEORY_CONSTRAINTS: GameTheoryConstraint[];
|
|
44
|
-
export declare function checkGameTheoryConstraints(graph: Blueprint, intent: BusinessIntent): GameTheoryReport;
|
|
47
|
+
export declare function checkGameTheoryConstraints(graph: Blueprint, intent: BusinessIntent, machineFacts?: MachineShapeFacts): GameTheoryReport;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export const GAME_THEORY_CONSTRAINTS=[{'scenario':'merchant_may_deliver_late','conflict':'Merchant\x20incentive:\x20collect\x20payment\x20fast,\x20deliver\x20at\x20own\x20pace\x20(or\x20never).\x20User\x20bears\x20schedule\x20risk\x20with\x20no\x20leverage\x20once\x20funds\x20leave\x20their\x20wallet.','userProtection':{'mechanism':'Milestone\x20escrow\x20—\x20funds\x20locked\x20in\x20Order,\x20released\x20per\x20verified\x20milestone','object':'Order\x20+\x20Allocation','guard':'milestone\x20forward\x20guard\x20verifies\x20deliverable\x20before\x20release'},'merchantConstraint':{'requiredDeposit':!![],'timeoutPenalty':'compensation_fund\x20covers\x20refund\x20for\x20unstarted\x20milestones'},'evaluationMetric':'timeout_protection','mitigationSignals':[['edge:has_order_allocators','node:main_machine'],['module:milestone_escrow']],'mitigatingModules':['milestone_escrow','refund_guarantee'],'recommendation':'Adopt\x20milestone_escrow\x20module:\x20bind\x20order_allocators\x20+\x20Machine\x20so\x20funds\x20release\x20only\x20per\x20verified\x20milestone.\x20Add\x20compensation_fund\x20for\x20late-delivery\x20refunds.'},{'scenario':'merchant_may_abandon','conflict':'Merchant\x20incentive:\x20maximize\x20intake\x20then\x20abandon\x20the\x20service\x20(exit\x20scam).\x20User\x20has\x20no\x20recourse\x20without\x20locked\x20funds\x20or\x20deposit.','userProtection':{'mechanism':'Escrow\x20+\x20compensation\x20fund\x20—\x20user\x20refunds\x20from\x20on-chain\x20fund\x20even\x20if\x20merchant\x20vanishes','object':'Service.compensation_fund\x20+\x20Order','guard':'refund_guard\x20validates\x20claim\x20conditions'},'merchantConstraint':{'requiredDeposit':!![],'requiredArbitration':!![]},'evaluationMetric':'escrow_quality','mitigationSignals':[['edge:has_order_allocators','module:refund_guarantee'],['module:refund_guarantee','node:main_arbitration']],'mitigatingModules':['refund_guarantee','milestone_escrow','reputation_on_chain'],'recommendation':'Adopt\x20refund_guarantee\x20module:\x20compensation_fund_add\x20>\x200\x20with\x20refund_guard.\x20Escrow\x20via\x20order_allocators\x20prevents\x20merchant\x20from\x20touching\x20funds\x20before\x20delivery.'},{'scenario':'customer_may_deny_acceptance','conflict':'Customer\x20incentive:\x20withhold\x20acceptance\x20confirmation\x20to\x20delay\x20payment\x20indefinitely\x20while\x20using\x20the\x20deliverable.\x20Merchant\x27s\x20funds\x20stay\x20locked.','userProtection':{'mechanism':'Accept\x20timeout\x20—\x20after\x20N\x20days\x20without\x20response,\x20order\x20auto-advances\x20(adminUnhold)\x20and\x20merchant\x20gets\x20paid','object':'Machine\x20forward\x20+\x20Progress','guard':'time_guard\x20on\x20accept\x20forward'},'merchantConstraint':{'timeoutPenalty':'user\x20silence\x20past\x20timeout\x20=\x20implicit\x20acceptance'},'evaluationMetric':'timeout_protection','mitigationSignals':[['module:accept_timeout_protection'],['node:guard_accept_timeout_protection']],'mitigatingModules':['accept_timeout_protection'],'recommendation':'Adopt\x20accept_timeout_protection\x20module:\x20time_guard\x20on\x20the\x20accept\x20forward\x20(e.g.\x207\x20days)\x20+\x20PROGRESS_UNHOLD\x20permission\x20so\x20the\x20workflow\x20auto-advances\x20on\x20customer\x20silence.'},{'scenario':'customer_may_false_claim','conflict':'Customer\x20incentive:\x20claim\x20non-delivery\x20or\x20defect\x20to\x20obtain\x20refund\x20while\x20keeping\x20the\x20goods/service.\x20Merchant\x20loses\x20both\x20deliverable\x20and\x20payment.','userProtection':{'mechanism':'WIP\x20provenance\x20—\x20delivery\x20hash\x20committed\x20on-chain\x20before/at\x20delivery;\x20independent\x20arbitration\x20verifies\x20evidence','object':'Repository\x20+\x20Arbitration','guard':'Guard\x20compares\x20proof.signer/proof.time\x20against\x20committed\x20WIP\x20hash'},'merchantConstraint':{'requiredProof':'wip_hash\x20committed\x20to\x20Repository\x20before\x20fund\x20release','requiredArbitration':!![]},'evaluationMetric':'proof_integrity','mitigationSignals':[['node:main_repository','node:main_arbitration'],['module:wip_provenance','node:main_arbitration']],'mitigatingModules':['wip_provenance','independent_arbitration','damage_attestation'],'recommendation':'Adopt\x20wip_provenance\x20+\x20independent_arbitration\x20modules:\x20Repository\x20stores\x20WIP\x20hashes\x20as\x20tamper-proof\x20delivery\x20evidence;\x20Arbitration\x20(independent\x20Permission)\x20resolves\x20false\x20claims\x20against\x20on-chain\x20proof.'},{'scenario':'supplier_may_not_deliver','conflict':'Supplier\x20incentive:\x20accept\x20sub-order\x20payment\x20terms\x20then\x20under-deliver,\x20leaving\x20the\x20merchant\x20liable\x20to\x20the\x20end\x20customer.\x20Multi-party\x20opacity\x20hides\x20the\x20failure\x20point.','userProtection':{'mechanism':'Supplier\x20visibility\x20—\x20Demand\x20+\x20sub-order\x20flow\x20with\x20multi-tier\x20Allocation;\x20each\x20tier\x20paid\x20only\x20on\x20its\x20own\x20verified\x20delivery','object':'Demand\x20+\x20Allocation\x20(multi-tier)','guard':'per-tier\x20release\x20guard'},'merchantConstraint':{'requiredProof':'sub-delivery\x20proof\x20per\x20Allocation\x20tier'},'evaluationMetric':'supplier_visibility','mitigationSignals':[['module:supplier_collaboration'],['module:multi_tier_allocation']],'mitigatingModules':['supplier_collaboration','multi_tier_allocation'],'recommendation':'Adopt\x20supplier_collaboration\x20module:\x20publish\x20Demand\x20referencing\x20the\x20main\x20Service,\x20split\x20Allocation\x20across\x20tiers\x20so\x20each\x20supplier\x20is\x20paid\x20only\x20for\x20verified\x20sub-delivery.','appliesWhen':a=>Array['isArray'](a['roles']?.['suppliers'])&&a['roles']['suppliers']['length']>0x0}];function evalSignal(a,b,c){const [
|
|
1
|
+
export const GAME_THEORY_CONSTRAINTS=[{'scenario':'merchant_may_deliver_late','conflict':'Merchant\x20incentive:\x20collect\x20payment\x20fast,\x20deliver\x20at\x20own\x20pace\x20(or\x20never).\x20User\x20bears\x20schedule\x20risk\x20with\x20no\x20leverage\x20once\x20funds\x20leave\x20their\x20wallet.','userProtection':{'mechanism':'Milestone\x20escrow\x20—\x20funds\x20locked\x20in\x20Order,\x20released\x20per\x20verified\x20milestone','object':'Order\x20+\x20Allocation','guard':'milestone\x20forward\x20guard\x20verifies\x20deliverable\x20before\x20release'},'merchantConstraint':{'requiredDeposit':!![],'timeoutPenalty':'compensation_fund\x20covers\x20refund\x20for\x20unstarted\x20milestones'},'evaluationMetric':'timeout_protection','mitigationSignals':[['edge:has_order_allocators','node:main_machine'],['module:milestone_escrow']],'mitigatingModules':['milestone_escrow','refund_guarantee'],'recommendation':'Adopt\x20milestone_escrow\x20module:\x20bind\x20order_allocators\x20+\x20Machine\x20so\x20funds\x20release\x20only\x20per\x20verified\x20milestone.\x20Add\x20compensation_fund\x20for\x20late-delivery\x20refunds.'},{'scenario':'merchant_may_abandon','conflict':'Merchant\x20incentive:\x20maximize\x20intake\x20then\x20abandon\x20the\x20service\x20(exit\x20scam).\x20User\x20has\x20no\x20recourse\x20without\x20locked\x20funds\x20or\x20deposit.','userProtection':{'mechanism':'Escrow\x20+\x20compensation\x20fund\x20—\x20user\x20refunds\x20from\x20on-chain\x20fund\x20even\x20if\x20merchant\x20vanishes','object':'Service.compensation_fund\x20+\x20Order','guard':'refund_guard\x20validates\x20claim\x20conditions'},'merchantConstraint':{'requiredDeposit':!![],'requiredArbitration':!![]},'evaluationMetric':'escrow_quality','mitigationSignals':[['edge:has_order_allocators','module:refund_guarantee'],['module:refund_guarantee','node:main_arbitration']],'mitigatingModules':['refund_guarantee','milestone_escrow','reputation_on_chain'],'recommendation':'Adopt\x20refund_guarantee\x20module:\x20compensation_fund_add\x20>\x200\x20with\x20refund_guard.\x20Escrow\x20via\x20order_allocators\x20prevents\x20merchant\x20from\x20touching\x20funds\x20before\x20delivery.'},{'scenario':'customer_may_deny_acceptance','conflict':'Customer\x20incentive:\x20withhold\x20acceptance\x20confirmation\x20to\x20delay\x20payment\x20indefinitely\x20while\x20using\x20the\x20deliverable.\x20Merchant\x27s\x20funds\x20stay\x20locked.','userProtection':{'mechanism':'Accept\x20timeout\x20—\x20after\x20N\x20days\x20without\x20response,\x20order\x20auto-advances\x20(adminUnhold)\x20and\x20merchant\x20gets\x20paid','object':'Machine\x20forward\x20+\x20Progress','guard':'time_guard\x20on\x20accept\x20forward'},'merchantConstraint':{'timeoutPenalty':'user\x20silence\x20past\x20timeout\x20=\x20implicit\x20acceptance'},'evaluationMetric':'timeout_protection','mitigationSignals':[['module:accept_timeout_protection'],['node:guard_accept_timeout_protection'],['machine:expired_terminal']],'mitigatingModules':['accept_timeout_protection'],'recommendation':'Adopt\x20accept_timeout_protection\x20module:\x20time_guard\x20on\x20the\x20accept\x20forward\x20(e.g.\x207\x20days)\x20+\x20PROGRESS_UNHOLD\x20permission\x20so\x20the\x20workflow\x20auto-advances\x20on\x20customer\x20silence.'},{'scenario':'customer_may_false_claim','conflict':'Customer\x20incentive:\x20claim\x20non-delivery\x20or\x20defect\x20to\x20obtain\x20refund\x20while\x20keeping\x20the\x20goods/service.\x20Merchant\x20loses\x20both\x20deliverable\x20and\x20payment.','userProtection':{'mechanism':'WIP\x20provenance\x20—\x20delivery\x20hash\x20committed\x20on-chain\x20before/at\x20delivery;\x20independent\x20arbitration\x20verifies\x20evidence','object':'Repository\x20+\x20Arbitration','guard':'Guard\x20compares\x20proof.signer/proof.time\x20against\x20committed\x20WIP\x20hash'},'merchantConstraint':{'requiredProof':'wip_hash\x20committed\x20to\x20Repository\x20before\x20fund\x20release','requiredArbitration':!![]},'evaluationMetric':'proof_integrity','mitigationSignals':[['node:main_repository','node:main_arbitration'],['module:wip_provenance','node:main_arbitration']],'mitigatingModules':['wip_provenance','independent_arbitration','damage_attestation'],'recommendation':'Adopt\x20wip_provenance\x20+\x20independent_arbitration\x20modules:\x20Repository\x20stores\x20WIP\x20hashes\x20as\x20tamper-proof\x20delivery\x20evidence;\x20Arbitration\x20(independent\x20Permission)\x20resolves\x20false\x20claims\x20against\x20on-chain\x20proof.'},{'scenario':'supplier_may_not_deliver','conflict':'Supplier\x20incentive:\x20accept\x20sub-order\x20payment\x20terms\x20then\x20under-deliver,\x20leaving\x20the\x20merchant\x20liable\x20to\x20the\x20end\x20customer.\x20Multi-party\x20opacity\x20hides\x20the\x20failure\x20point.','userProtection':{'mechanism':'Supplier\x20visibility\x20—\x20Demand\x20+\x20sub-order\x20flow\x20with\x20multi-tier\x20Allocation;\x20each\x20tier\x20paid\x20only\x20on\x20its\x20own\x20verified\x20delivery','object':'Demand\x20+\x20Allocation\x20(multi-tier)','guard':'per-tier\x20release\x20guard'},'merchantConstraint':{'requiredProof':'sub-delivery\x20proof\x20per\x20Allocation\x20tier'},'evaluationMetric':'supplier_visibility','mitigationSignals':[['module:supplier_collaboration'],['module:multi_tier_allocation']],'mitigatingModules':['supplier_collaboration','multi_tier_allocation'],'recommendation':'Adopt\x20supplier_collaboration\x20module:\x20publish\x20Demand\x20referencing\x20the\x20main\x20Service,\x20split\x20Allocation\x20across\x20tiers\x20so\x20each\x20supplier\x20is\x20paid\x20only\x20for\x20verified\x20sub-delivery.','appliesWhen':a=>Array['isArray'](a['roles']?.['suppliers'])&&a['roles']['suppliers']['length']>0x0}];function evalSignal(a,b,c,d){const [e,f]=a['split'](':',0x2);switch(e){case'node':return b['nodes']['some'](g=>g['id']===f||g['id']===f['replace'](/^main_/,''));case'edge':return b['edges']['some'](g=>g['relation']===f);case'module':return b['adoptedModules']['includes'](f);case'type':return b['nodes']['some'](g=>g['type']===f);case'trust':{const g=c['trust'];return g[f]===!![]||typeof g[f]==='string'&&g[f]!=='none';}case'machine':{const h=f['replace'](/_([a-z])/g,(i,j)=>j['toUpperCase']());return d?.[h]===!![];}default:return![];}}export function checkGameTheoryConstraints(a,b,d){const e=[];for(const i of GAME_THEORY_CONSTRAINTS){if(i['appliesWhen']&&!i['appliesWhen'](b))continue;let j=null,k=[],l=-0x1;for(const m of i['mitigationSignals']){const n=m['filter'](p=>evalSignal(p,a,b,d));if(n['length']===m['length']){j=m;break;}const o=n['length']/m['length'];n['length']>0x0&&o>l&&(l=o,k=n);}e['push']({'scenario':i['scenario'],'conflict':i['conflict'],'covered':j!==null,'matchedSignals':j??[],'partialSignals':j?[]:k,'userProtection':i['userProtection']['mechanism']+'\x20('+i['userProtection']['object']+(i['userProtection']['guard']?',\x20guard:\x20'+i['userProtection']['guard']:'')+')','evaluationMetric':i['evaluationMetric'],'recommendation':j?undefined:i['recommendation']});}const f=e['filter'](p=>p['covered']),g=e['filter'](p=>!p['covered']),h=[];return a['edges']['some'](p=>p['relation']==='has_order_allocators')&&h['push']('Milestone\x20escrow:\x20funds\x20locked\x20in\x20Order,\x20released\x20per\x20verified\x20milestone\x20—\x20merchant\x20paid\x20for\x20delivery,\x20user\x20pays\x20for\x20value'),a['adoptedModules']['includes']('accept_timeout_protection')&&h['push']('Accept\x20timeout:\x20customer\x20silence\x20past\x20N\x20days\x20=\x20implicit\x20acceptance\x20—\x20merchant\x20protected\x20from\x20payment\x20stalling'),a['nodes']['some'](p=>p['id']==='repository')&&h['push']('WIP\x20provenance:\x20delivery\x20hash\x20on-chain\x20—\x20false\x20claims\x20verifiable\x20against\x20tamper-proof\x20evidence'),a['nodes']['some'](p=>p['id']==='arbitration')&&h['push']('Micro-arbitration:\x20Guard-weighted\x20voting\x20with\x20independent\x20Permission\x20—\x20low-cost\x20dispute\x20resolution\x20without\x20platform\x20fees'),a['adoptedModules']['includes']('reputation_on_chain')&&h['push']('On-chain\x20reputation:\x20both\x20sides\x27\x20behavior\x20permanently\x20recorded\x20—\x20future\x20transactions\x20price\x20the\x20risk'),{'results':e,'coveredCount':f['length'],'totalCount':e['length'],'exposedScenarios':g['map'](p=>p['scenario']),'wowAlignments':h,'summary':g['length']===0x0?'All\x20'+e['length']+'\x20adversarial\x20scenarios\x20have\x20on-chain\x20mitigations.':g['length']+'/'+e['length']+'\x20adversarial\x20scenarios\x20EXPOSED:\x20'+g['map'](p=>p['scenario'])['join'](',\x20')+'.\x20Apply\x20the\x20recommendations\x20to\x20align\x20incentives.'};}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Config,LocalMark,query_objects,objectTypeFromAddress,ObjectType}from'@wowok/wowok';import{resolveAddress as
|
|
1
|
+
import{Config,LocalMark,query_objects,objectTypeFromAddress,ObjectType}from'@wowok/wowok';import{resolveAddress as a336a}from'../../tools/handlers/name-resolution.js';import{fetchMachineNodes,buildMachineGraph}from'./machine-nodes.js';import{batchQueryObjectsByIds,fetchObjectLinkerTx,ringWindowSaturated}from'../../graph/onchain/sdk-batch.js';export async function handleMachinePanorama(a){const b=a['object_address'];if(!b)throw new Error('\x27object_address\x27\x20is\x20required\x20for\x20machine_panorama');let c=a['context_network']??undefined;const d=[];let f=await a336a(b,'machine'),g=null;try{if(!c)c=await Config['Instance']()['network_get']();const x=await query_objects({'objects':[f],'network':c});g=x?.['objects']?.[0x0]??null;if(!g&&a['context_network']){const y=await Config['Instance']()['network_get']();if(y&&y!==c){const z=await query_objects({'objects':[f],'network':y,'no_cache':!![]}),A=z?.['objects']?.[0x0]??null;A&&(g=A,c=y);}}}catch(B){throw new Error('Failed\x20to\x20query\x20Machine\x20'+f+'\x20on\x20'+c+':\x20'+(''+(B instanceof Error?B['message']:String(B))));}if(!g)throw new Error('Machine\x20'+f+'\x20not\x20found\x20on\x20'+c+'.\x20It\x20may\x20not\x20exist\x20on\x20this\x20network.');f=g['object']??f;let h=null,j=[];try{const C=await LocalMark['Instance']()['list']({'address':f});C['length']>0x0&&(h=C[0x0]['name']??null,j=(C[0x0]['tags']??[])['map'](D=>String(D)));}catch{d['push']('head:\x20LocalMark\x20lookup\x20failed');}let k={'nodes':[],'edges':[]};try{const D=await fetchMachineNodes(f,c,!![]);k=buildMachineGraph(D);}catch{d['push']('graph:\x20node\x20fetch\x20failed\x20(non-blocking)');}if(typeof g['permission']==='string'&&g['permission'])try{const E=await query_objects({'objects':[g['permission']],'network':c}),F=E?.['objects']?.[0x0]??null,G=Array['isArray'](F?.['perm_remark'])?F['perm_remark']:Array['isArray'](F?.['remark'])?F['remark']:[],H=G['map'](I=>({'index':typeof I?.['index']==='number'?I['index']:parseInt(I?.['index'],0xa),'remark':typeof I?.['remark']==='string'?I['remark']:''}))['filter'](I=>Number['isFinite'](I['index']));k['permission']={'address':g['permission'],'remarks':H};}catch{d['push']('graph:\x20permission\x20read\x20failed\x20(non-blocking)');}const l=[];let m=0x0,n=null,p=null,q=0x0,s=![],u=[];try{const I=await fetchObjectLinkerTx(f,c,!![]),J=I?.['items']??[];s=ringWindowSaturated(J['length']);const K=new Map();for(const R of J){const S=typeof R?.['who']==='string'?R['who']['toLowerCase']():'';if(!S||S==='0x0')continue;if(!objectTypeFromAddress(S))continue;const T=typeof R?.['time']==='number'?R['time']:null,U=K['get'](S);K['set'](S,U==null?T:T==null?U:Math['max'](U,T));}q=K['size'];const L=new Map();for(const [V,W]of K){const X=String(objectTypeFromAddress(V)),Y=L['get'](X)??[];Y['push']({'address':V,'time':W}),L['set'](X,Y);}for(const Z of L['values']()){Z['sort']((a0,a1)=>(a1['time']??0x0)-(a0['time']??0x0));}const M=['Progress','Allocation','Payment','Guard'];u=[];for(const a0 of M){const a1=L['get'](a0);a1&&a1['length']>0x0&&(u['push']({'label':a0,'items':a1}),L['delete'](a0));}for(const [a2,a3]of L){if(a3['length']>0x0)u['push']({'label':a2,'items':a3});}const N=J['filter'](a4=>objectTypeFromAddress(a4['who'])===ObjectType['Progress']);m=N['length'];for(const a4 of N){if(typeof a4?.['time']==='number'){if(n===null||a4['time']<n)n=a4['time'];if(p===null||a4['time']>p)p=a4['time'];}}const O=N['slice'](-0x3)['reverse'](),P=O['map'](a5=>a5['who']),Q=new Map();if(P['length']>0x0)try{const a5=await batchQueryObjectsByIds(P,c,!![]);for(const a6 of a5){if(a6?.['object'])Q['set'](a6['object'],a6);}}catch{d['push']('progresses:\x20detail\x20fetch\x20failed');}for(const a7 of O){const a8=typeof a7?.['who']==='string'?a7['who']:'';if(!a8)continue;const a9=Q['get'](a8);l['push']({'progress':a8,'name':null,'current':a9?.['current']??null,'task':a9?.['task']??null,'history_count':typeof a9?.['history_count']==='number'?a9['history_count']:null,'current_time':typeof a9?.['current_time']==='number'?a9['current_time']:null,'created_at':typeof a7?.['time']==='number'?a7['time']:null});}}catch{d['push']('progresses:\x20global-table\x20lookup\x20failed\x20(non-blocking)');}const w='Analyze\x20ALL\x20workflow\x20progresses\x20of\x20Machine\x20'+f+'\x20('+c+')\x20one\x20by\x20one,\x20newest\x20first.\x20'+('The\x20progresses\x20live\x20in\x20the\x20machine\x27s\x20FIFO\x20tx-linker\x20window\x20holding\x20at\x20most\x205200\x20newest\x20entries\x20—\x20the\x20retained\x20count\x20is\x20a\x20lower\x20bound\x20when\x20the\x20window\x20is\x20saturated\x20(currently\x20'+m+(s?',\x20saturated':'')+').\x20')+'For\x20each\x20progress\x20call\x20object_panorama\x20with\x20the\x20progress\x27s\x20FULL\x200x\x20address\x20(collect\x20the\x20addresses\x20from\x20the\x20same\x20reverse-index\x20source;\x20work\x20newest-first)\x20and\x20render\x20ONE\x20table\x20row\x20per\x20progress:\x20'+'progress\x20address\x20chip\x20(first\x20column)\x20|\x20current\x20node\x20|\x20task\x20|\x20history\x20events\x20|\x20last\x20activity\x20(local\x20date)\x20|\x20registered\x20(local\x20date).\x20'+'Close\x20with\x20the\x203\x20most\x20valuable\x20patterns\x20across\x20the\x20rows\x20(stuck\x20nodes,\x20age\x20of\x20active\x20progresses,\x20throughput).\x20Progresses\x20only\x20—\x20do\x20not\x20re-analyze\x20the\x20Machine\x20graph\x20itself.';return{'action':'machine_panorama','machineAddress':f,'network':String(c),'head':{'name':h,'tags':j,'description':typeof g['description']==='string'?g['description']:null,'published':typeof g['bPublished']==='boolean'?g['bPublished']:null,'paused':typeof g['bPaused']==='boolean'?g['bPaused']:null},'fields':{'permission':g['permission']??null,'um':g['um']??null,'node_count':k['nodes']['length']>0x0?k['nodes']['length']:typeof g['node_count']==='number'?g['node_count']+0x1:null,'onchain_table_node_count':typeof g['node_count']==='number'?g['node_count']:k['nodes']['length']>0x0?k['nodes']['length']-0x1:null,'consensus_repositories':Array['isArray'](g['consensus_repositories'])?g['consensus_repositories']:[]},'graph':k,'progresses':{'count':m,'window_saturated':s,'preview_truncated':m>l['length'],'stats':{'first_created_ms':n,'last_created_ms':p},...m>l['length']?{'drilldown':{'total_count':m,'analyzed_count':l['length'],'prompt':w}}:{},'items':l},'related':{'count':q,'window_saturated':s,'groups':u},'data_gaps':d};}
|
|
@@ -12,6 +12,12 @@ export interface GuideState {
|
|
|
12
12
|
guard_resolutions?: Record<string, unknown>;
|
|
13
13
|
review_mode?: "review" | "review_reward" | "none";
|
|
14
14
|
reward_funding?: string;
|
|
15
|
+
after_sales_mode?: "return" | "exchange" | "warranty" | "none";
|
|
16
|
+
acceptance_mode?: "milestone" | "contest" | "bounty" | "agent" | "none";
|
|
17
|
+
installment_mode?: "deposit_balance" | "milestone_n" | "none";
|
|
18
|
+
affiliate_mode?: "commission" | "none";
|
|
19
|
+
crowdfunding_mode?: "threshold" | "flexible" | "none";
|
|
20
|
+
sales?: unknown[];
|
|
15
21
|
}
|
|
16
22
|
export interface MerchantGuideInput {
|
|
17
23
|
intent?: string;
|
|
@@ -26,6 +32,12 @@ export interface MerchantGuideInput {
|
|
|
26
32
|
guard_resolutions?: Record<string, unknown>;
|
|
27
33
|
review_mode?: string;
|
|
28
34
|
reward_funding?: string;
|
|
35
|
+
after_sales_mode?: string;
|
|
36
|
+
acceptance_mode?: string;
|
|
37
|
+
installment_mode?: string;
|
|
38
|
+
affiliate_mode?: string;
|
|
39
|
+
crowdfunding_mode?: string;
|
|
40
|
+
sales?: unknown[];
|
|
29
41
|
};
|
|
30
42
|
guide_confirm?: {
|
|
31
43
|
industry?: string;
|
|
@@ -37,6 +49,12 @@ export interface MerchantGuideInput {
|
|
|
37
49
|
guard_resolutions?: Record<string, unknown>;
|
|
38
50
|
review_mode?: string;
|
|
39
51
|
reward_funding?: string;
|
|
52
|
+
after_sales_mode?: string;
|
|
53
|
+
acceptance_mode?: string;
|
|
54
|
+
installment_mode?: string;
|
|
55
|
+
affiliate_mode?: string;
|
|
56
|
+
crowdfunding_mode?: string;
|
|
57
|
+
sales?: unknown[];
|
|
40
58
|
};
|
|
41
59
|
template_override?: IndustryTemplate;
|
|
42
60
|
name_base?: string;
|
|
@@ -86,6 +104,7 @@ export declare function handleMerchantGuide(v: MerchantGuideInput): Promise<{
|
|
|
86
104
|
blocks: import("../../composition/reflux.js").RefluxBlock[];
|
|
87
105
|
iterations: number;
|
|
88
106
|
};
|
|
107
|
+
pending_count_note?: string | undefined;
|
|
89
108
|
pending_guard_designs?: {
|
|
90
109
|
how_to_resolve: string;
|
|
91
110
|
suggested_templates?: {
|
|
@@ -120,7 +139,6 @@ export declare function handleMerchantGuide(v: MerchantGuideInput): Promise<{
|
|
|
120
139
|
};
|
|
121
140
|
evaluation_preview: {
|
|
122
141
|
estimatedRiskScore: number;
|
|
123
|
-
estimatedTrustScore: number;
|
|
124
142
|
estimatedCompletenessScore: number;
|
|
125
143
|
keyRisks: string[];
|
|
126
144
|
strengths: string[];
|
|
@@ -145,6 +163,7 @@ export declare function handleMerchantGuide(v: MerchantGuideInput): Promise<{
|
|
|
145
163
|
missing: string[] | undefined;
|
|
146
164
|
reason: string | undefined;
|
|
147
165
|
estimated_score_boost: number;
|
|
166
|
+
evidence_matched: boolean | undefined;
|
|
148
167
|
}[];
|
|
149
168
|
blocking_issues: ({
|
|
150
169
|
module: BusinessModuleId;
|
|
@@ -213,6 +232,12 @@ export declare function handleMerchantGuide(v: MerchantGuideInput): Promise<{
|
|
|
213
232
|
guard_resolutions?: Record<string, unknown>;
|
|
214
233
|
review_mode?: "review" | "review_reward" | "none";
|
|
215
234
|
reward_funding?: string;
|
|
235
|
+
after_sales_mode?: "return" | "exchange" | "warranty" | "none";
|
|
236
|
+
acceptance_mode?: "milestone" | "contest" | "bounty" | "agent" | "none";
|
|
237
|
+
installment_mode?: "deposit_balance" | "milestone_n" | "none";
|
|
238
|
+
affiliate_mode?: "commission" | "none";
|
|
239
|
+
crowdfunding_mode?: "threshold" | "flexible" | "none";
|
|
240
|
+
sales?: unknown[];
|
|
216
241
|
};
|
|
217
242
|
intent: {
|
|
218
243
|
intent_type: import("./intent-analyzer.js").BusinessIntentType;
|