@wowok/agent-mcp 3.4.1 → 3.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.build-stamp.json +5 -0
- package/dist/chain-semantics/composition-truth.js +1 -1
- package/dist/chain-semantics/eval-order.js +1 -1
- 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.js +1 -1
- package/dist/composition/compile.d.ts +10 -3
- package/dist/composition/compile.js +1 -1
- package/dist/composition/emit-phases.d.ts +30 -2
- package/dist/composition/emit-phases.js +1 -1
- package/dist/composition/guard-fill.d.ts +8 -0
- package/dist/composition/guard-fill.js +1 -1
- package/dist/composition/inflight.js +1 -1
- package/dist/composition/input-normalize.js +1 -1
- package/dist/composition/materialize.d.ts +2 -0
- package/dist/composition/materialize.js +1 -1
- package/dist/composition/mode-gates.js +1 -1
- package/dist/composition/param-disclosure.js +1 -1
- package/dist/composition/plan-retry-ledger.d.ts +16 -0
- package/dist/composition/plan-retry-ledger.js +1 -1
- package/dist/composition/plan.d.ts +15 -1
- package/dist/composition/plan.js +1 -1
- package/dist/config/config-audit.spec.js +1 -1
- package/dist/config/judgment.d.ts +5 -0
- package/dist/config/judgment.js +1 -1
- package/dist/evaluation/builtins/arbitration-score.d.ts +1 -0
- package/dist/evaluation/builtins/arbitration-score.js +1 -1
- package/dist/evaluation/builtins/demand-match.js +1 -1
- package/dist/evaluation/builtins/graph-service.d.ts +8 -0
- package/dist/evaluation/builtins/graph-service.js +1 -1
- package/dist/evaluation/capability.d.ts +9 -0
- package/dist/evaluation/engine.js +1 -1
- package/dist/evaluation/extract.d.ts +9 -1
- package/dist/evaluation/extract.js +1 -1
- package/dist/evaluation/match-operation.js +1 -1
- package/dist/evaluation/match-policy.d.ts +5 -3
- package/dist/evaluation/match-policy.js +1 -1
- package/dist/evaluation/standards.d.ts +1 -0
- package/dist/evaluation/standards.js +1 -1
- package/dist/evaluation/structured-lines.js +1 -1
- package/dist/evaluation/types.d.ts +1 -0
- package/dist/extensions/capability.js +1 -1
- package/dist/extensions/industry-pack.js +1 -1
- package/dist/extensions/modes.js +1 -1
- package/dist/harness/recover.js +1 -1
- package/dist/index.js +1 -1
- package/dist/intent/types.d.ts +1 -1
- package/dist/intent/types.js +1 -1
- package/dist/knowledge/allocation-ledger.js +1 -1
- package/dist/knowledge/allocator-rail-verifier.d.ts +17 -1
- package/dist/knowledge/allocator-rail-verifier.js +1 -1
- package/dist/knowledge/arb-fund-facts.d.ts +7 -0
- package/dist/knowledge/arb-fund-facts.js +1 -1
- package/dist/knowledge/arbitration-rail-verifier.d.ts +35 -0
- package/dist/knowledge/arbitration-rail-verifier.js +1 -0
- package/dist/knowledge/arbitration-templates.js +1 -1
- package/dist/knowledge/audit-rules.d.ts +13 -1
- package/dist/knowledge/audit-rules.js +1 -1
- package/dist/knowledge/baselines/judgment-baselines.json +1 -0
- package/dist/knowledge/baselines/rules/guard.json +7 -6
- package/dist/knowledge/baselines/rules/progress.json +4 -4
- package/dist/knowledge/baselines/rules/reward.json +118 -3
- package/dist/knowledge/builtin-templates.d.ts +19 -2
- package/dist/knowledge/builtin-templates.js +1 -1
- package/dist/knowledge/chain-query-registry.d.ts +14 -0
- package/dist/knowledge/chain-query-registry.js +1 -0
- package/dist/knowledge/event-semantics.js +1 -1
- package/dist/knowledge/fee-param-bindings.d.ts +2 -0
- package/dist/knowledge/fee-param-bindings.js +1 -1
- package/dist/knowledge/getting-started.js +1 -1
- package/dist/knowledge/guard-binding-table.js +1 -1
- package/dist/knowledge/guard-binding-verifier.d.ts +7 -0
- package/dist/knowledge/guard-binding-verifier.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-host-context.js +1 -1
- package/dist/knowledge/guard-lint.js +1 -1
- package/dist/knowledge/guard-node-gates.d.ts +3 -1
- package/dist/knowledge/guard-node-gates.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-templates.d.ts +2 -1
- package/dist/knowledge/guard-templates.js +1 -1
- package/dist/knowledge/guard-translation.js +1 -1
- package/dist/knowledge/index.d.ts +2 -0
- package/dist/knowledge/index.js +1 -1
- package/dist/knowledge/industry-registry.js +1 -1
- package/dist/knowledge/jsonrpc-enum.js +1 -1
- package/dist/knowledge/knob-docs.js +1 -1
- package/dist/knowledge/param-schema.d.ts +1 -1
- package/dist/knowledge/param-schema.js +1 -1
- package/dist/knowledge/param-tiers.d.ts +2 -0
- package/dist/knowledge/param-tiers.js +1 -1
- package/dist/knowledge/path-oracle/products/food-delivery.js +1 -1
- package/dist/knowledge/pattern-resolutions.d.ts +2 -0
- package/dist/knowledge/pattern-resolutions.js +1 -1
- package/dist/knowledge/product-detail-source.d.ts +37 -0
- package/dist/knowledge/product-detail-source.js +1 -0
- package/dist/knowledge/product-doc-b5.d.ts +16 -0
- package/dist/knowledge/product-doc-b5.js +1 -0
- package/dist/knowledge/progress-ledger.js +1 -1
- package/dist/knowledge/projection.spec.js +1 -1
- package/dist/knowledge/publish-gate.d.ts +20 -0
- package/dist/knowledge/publish-gate.js +1 -0
- package/dist/knowledge/publish-readiness.d.ts +25 -0
- package/dist/knowledge/publish-readiness.js +1 -0
- package/dist/knowledge/publish-surface-contract.d.ts +16 -0
- package/dist/knowledge/publish-surface-contract.js +1 -0
- package/dist/knowledge/rail-exit-satisfiability.d.ts +25 -0
- package/dist/knowledge/rail-exit-satisfiability.js +1 -0
- package/dist/knowledge/reward-ledger.d.ts +1 -1
- package/dist/knowledge/reward-ledger.js +1 -1
- package/dist/knowledge/reward-risk.d.ts +1 -1
- package/dist/knowledge/reward-risk.js +1 -1
- package/dist/knowledge/scenario-modes.js +1 -1
- package/dist/knowledge/service-ledger.d.ts +3 -1
- package/dist/knowledge/service-ledger.js +1 -1
- package/dist/knowledge/template-loader.d.ts +41 -2
- package/dist/knowledge/template-loader.js +1 -1
- package/dist/knowledge/template-registry.js +1 -1
- package/dist/knowledge/template-scanner.d.ts +17 -0
- package/dist/knowledge/template-scanner.js +1 -1
- package/dist/knowledge/template-test-profiles.js +1 -1
- package/dist/knowledge/workflow-guidance.d.ts +4 -0
- package/dist/knowledge/workflow-guidance.js +1 -1
- package/dist/monitor/MonitorLoop.js +1 -1
- package/dist/monitor/normalize.d.ts +1 -1
- package/dist/monitor/normalize.js +1 -1
- package/dist/monitor/types.js +1 -1
- package/dist/participation/customer-interest.d.ts +4 -0
- package/dist/participation/customer-interest.js +1 -1
- package/dist/participation/game-context.js +1 -1
- package/dist/participation/node-action-advisor.d.ts +4 -0
- package/dist/participation/node-action-advisor.js +1 -1
- package/dist/participation/radar-core.js +1 -1
- package/dist/participation/time-window.d.ts +11 -0
- package/dist/participation/time-window.js +1 -1
- package/dist/playbooks/service-build/business-puzzle.js +1 -1
- package/dist/playbooks/service-build/machine-panorama.js +1 -1
- package/dist/playbooks/service-build/merchant-guide.d.ts +28 -3
- package/dist/playbooks/service-build/merchant-guide.js +1 -1
- package/dist/playbooks/service-build/object-panorama.d.ts +4 -0
- 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/relationship-profile.js +1 -1
- package/dist/playbooks/service-build/service-panorama.js +1 -1
- package/dist/playbooks/service-build/service-quote.js +1 -1
- package/dist/review/index.js +1 -1
- package/dist/review/order.js +1 -1
- package/dist/safety/confirm-gate.js +1 -1
- package/dist/schema/benchmark-migration/index.d.ts +24 -0
- package/dist/schema/benchmark-migration/index.js +1 -1
- package/dist/schema/call/allocation.d.ts +11 -7
- package/dist/schema/call/allocation.js +1 -1
- package/dist/schema/call/arbitration.d.ts +4 -0
- package/dist/schema/call/arbitration.js +1 -1
- package/dist/schema/call/base.d.ts +28 -0
- package/dist/schema/call/base.js +1 -1
- package/dist/schema/call/bridge.d.ts +21 -0
- package/dist/schema/call/contact.d.ts +4 -0
- package/dist/schema/call/demand.d.ts +4 -0
- package/dist/schema/call/guard.d.ts +12 -0
- package/dist/schema/call/handler.d.ts +1 -0
- package/dist/schema/call/handler.js +1 -1
- package/dist/schema/call/machine.d.ts +16 -8
- package/dist/schema/call/normalize-error.d.ts +1 -0
- package/dist/schema/call/normalize-error.js +1 -0
- package/dist/schema/call/order.d.ts +7 -3
- package/dist/schema/call/order.js +1 -1
- package/dist/schema/call/payment.d.ts +7 -3
- package/dist/schema/call/permission.d.ts +4 -0
- package/dist/schema/call/personal.d.ts +4 -0
- package/dist/schema/call/progress.d.ts +4 -0
- package/dist/schema/call/progress.js +1 -1
- package/dist/schema/call/proof.d.ts +8 -0
- package/dist/schema/call/proof.js +1 -1
- package/dist/schema/call/receipt.js +1 -1
- package/dist/schema/call/repository.d.ts +4 -0
- package/dist/schema/call/reward.d.ts +6 -2
- package/dist/schema/call/reward.js +1 -1
- package/dist/schema/call/semantic.d.ts +2 -2
- package/dist/schema/call/semantic.js +1 -1
- package/dist/schema/call/service.d.ts +21 -7
- package/dist/schema/call/service.js +1 -1
- package/dist/schema/call/treasury.d.ts +10 -6
- package/dist/schema/common/index.js +1 -1
- package/dist/schema/envelope-unify.d.ts +1 -0
- package/dist/schema/envelope-unify.js +1 -1
- package/dist/schema/evaluation/index.d.ts +43 -0
- package/dist/schema/evaluation/index.js +1 -1
- package/dist/schema/goal/index.d.ts +14 -2
- package/dist/schema/goal/planning.d.ts +18 -0
- package/dist/schema/goal/planning.js +1 -1
- package/dist/schema/intent-radar/index.d.ts +12 -0
- package/dist/schema/intent-radar/index.js +1 -1
- package/dist/schema/keeper/index.d.ts +1 -0
- package/dist/schema/local/index.d.ts +10 -0
- package/dist/schema/local/index.js +1 -1
- package/dist/schema/local/wip.js +1 -1
- package/dist/schema/messenger/index.d.ts +1 -0
- package/dist/schema/messenger/index.js +1 -1
- package/dist/schema/operations.d.ts +98 -13
- package/dist/schema/operations.js +1 -1
- package/dist/schema/persona/index.d.ts +22 -0
- package/dist/schema/query/bi.d.ts +28 -2
- package/dist/schema/query/bi.js +1 -1
- package/dist/schema/query/index.d.ts +67 -61
- package/dist/schema/query/index.js +1 -1
- package/dist/schema/schema-version.js +1 -1
- package/dist/schema/workflow/index.js +1 -1
- package/dist/schema-query-impl/index.d.ts +1 -0
- package/dist/schema-query-impl/index.js +1 -1
- package/dist/schemas/account_operation.output.json +2 -1
- package/dist/schemas/benchmark_migration_operation.output.json +74 -0
- package/dist/schemas/benchmark_migration_operation.schema.json +33 -1
- package/dist/schemas/bridge_operation.output.json +2 -1
- package/dist/schemas/bridge_operation.schema.json +40 -0
- package/dist/schemas/evaluation_operation.output.json +96 -0
- package/dist/schemas/evaluation_operation.schema.json +39 -0
- package/dist/schemas/goal_operation.schema.json +32 -0
- package/dist/schemas/guard2file.schema.json +8 -0
- package/dist/schemas/index.json +1 -1
- package/dist/schemas/intent_radar.output.json +10 -2
- package/dist/schemas/intent_radar.schema.json +5 -1
- package/dist/schemas/keeper_operation.output.json +2 -1
- package/dist/schemas/local_cache_operation.output.json +2 -1
- package/dist/schemas/local_history_operation.output.json +2 -1
- package/dist/schemas/local_info_operation.output.json +2 -1
- package/dist/schemas/local_mark_operation.output.json +2 -1
- package/dist/schemas/local_mark_operation.schema.json +10 -1
- package/dist/schemas/machineNode2file.schema.json +8 -0
- package/dist/schemas/messenger_operation.output.json +2 -1
- package/dist/schemas/messenger_operation.schema.json +2 -1
- package/dist/schemas/monitor_events.output.json +2 -1
- package/dist/schemas/monitor_subscription.output.json +2 -1
- package/dist/schemas/onchain_events.output.json +206 -13
- package/dist/schemas/onchain_events.schema.json +16 -0
- package/dist/schemas/onchain_operations.output.json +22 -3
- package/dist/schemas/onchain_operations.schema.json +982 -327
- package/dist/schemas/onchain_operations_allocation.schema.json +20 -13
- package/dist/schemas/onchain_operations_arbitration.schema.json +9 -1
- package/dist/schemas/onchain_operations_contact.schema.json +8 -0
- package/dist/schemas/onchain_operations_demand.schema.json +8 -0
- package/dist/schemas/onchain_operations_gen_passport.schema.json +8 -0
- package/dist/schemas/onchain_operations_gen_proof.schema.json +8 -0
- package/dist/schemas/onchain_operations_guard.schema.json +655 -115
- package/dist/schemas/onchain_operations_machine.schema.json +11 -3
- package/dist/schemas/onchain_operations_order.schema.json +14 -11
- package/dist/schemas/onchain_operations_payment.schema.json +12 -9
- package/dist/schemas/onchain_operations_permission.schema.json +8 -0
- package/dist/schemas/onchain_operations_personal.schema.json +8 -0
- package/dist/schemas/onchain_operations_progress.schema.json +9 -1
- package/dist/schemas/onchain_operations_proof.schema.json +9 -1
- package/dist/schemas/onchain_operations_repository.schema.json +8 -0
- package/dist/schemas/onchain_operations_reward.schema.json +14 -11
- package/dist/schemas/onchain_operations_service.schema.json +25 -12
- package/dist/schemas/onchain_operations_treasury.schema.json +17 -19
- package/dist/schemas/onchain_table_data.output.json +52 -10
- package/dist/schemas/persona_operation.output.json +57 -0
- package/dist/schemas/persona_operation.schema.json +9 -0
- package/dist/schemas/query_toolkit.output.json +326 -23
- package/dist/schemas/query_toolkit.schema.json +18 -5
- package/dist/schemas/wip_file.output.json +2 -2
- package/dist/schemas/wip_file.schema.json +2 -2
- package/dist/schemas/workflow_operation.schema.json +1 -1
- package/dist/tools/error-catalog.d.ts +17 -0
- package/dist/tools/error-catalog.js +1 -0
- package/dist/tools/handlers/benchmark-migration.d.ts +29 -8
- package/dist/tools/handlers/benchmark-migration.js +1 -1
- package/dist/tools/handlers/config.js +1 -1
- package/dist/tools/handlers/entry-edge-recipe.d.ts +101 -0
- package/dist/tools/handlers/entry-edge-recipe.js +1 -0
- package/dist/tools/handlers/escrow-deficit.d.ts +10 -0
- package/dist/tools/handlers/escrow-deficit.js +1 -0
- package/dist/tools/handlers/evaluation.js +1 -1
- package/dist/tools/handlers/fund-rail-recipe.d.ts +10 -0
- package/dist/tools/handlers/fund-rail-recipe.js +1 -0
- package/dist/tools/handlers/intent-radar.js +1 -1
- package/dist/tools/handlers/local.js +1 -1
- package/dist/tools/handlers/mark-namespace.d.ts +30 -0
- package/dist/tools/handlers/mark-namespace.js +1 -0
- package/dist/tools/handlers/messenger.js +1 -1
- package/dist/tools/handlers/onchain-name-registration.d.ts +1 -0
- package/dist/tools/handlers/onchain-name-registration.js +1 -1
- package/dist/tools/handlers/onchain-name-registration.spec.js +1 -1
- package/dist/tools/handlers/onchain.d.ts +40 -1
- package/dist/tools/handlers/onchain.js +1 -1
- package/dist/tools/handlers/publish-binding-echo.d.ts +22 -0
- package/dist/tools/handlers/publish-binding-echo.js +1 -0
- package/dist/tools/handlers/query.d.ts +1 -1
- package/dist/tools/handlers/query.js +1 -1
- package/dist/tools/handlers/review-chain.d.ts +1 -0
- package/dist/tools/handlers/review-chain.js +1 -1
- package/dist/tools/handlers/schema-query.js +1 -1
- package/dist/tools/handlers/stale-build-check.d.ts +9 -0
- package/dist/tools/handlers/stale-build-check.js +1 -0
- package/dist/tools/handlers/submission-assembly.d.ts +55 -0
- package/dist/tools/handlers/submission-assembly.js +1 -0
- package/dist/tools/handlers/wip.js +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.js +1 -1
- package/dist/tools/move-fn-index.gen.js +1 -1
- package/dist/tools/publish-gate-state.d.ts +5 -0
- package/dist/tools/publish-gate-state.js +1 -0
- package/dist/tools/registry/business.js +1 -1
- package/dist/tools/registry/onchain.js +1 -1
- package/dist/tools/registry/query.js +1 -1
- package/dist/tools/retry.js +1 -1
- package/dist/tools/runtime-health.js +1 -1
- package/dist/tools/shared.js +1 -1
- package/dist/tools/upgrade-check.d.ts +1 -0
- package/dist/tools/upgrade-check.js +1 -1
- package/dist/tools/wip-verify-ledger.d.ts +2 -0
- package/dist/tools/wip-verify-ledger.js +1 -1
- package/dist/tools/wrap.d.ts +15 -1
- package/dist/tools/wrap.js +1 -1
- package/package.json +5 -3
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { MarkResolution } from "./mark-namespace.js";
|
|
2
|
+
export type ExpectedBindingType = "machine" | "guard" | "arbitration" | "reward" | "permission" | "recipient_entity";
|
|
3
|
+
export interface NamedBindingRef {
|
|
4
|
+
slot: string;
|
|
5
|
+
name: string;
|
|
6
|
+
expected: ExpectedBindingType;
|
|
7
|
+
frozenAfterPublish: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function collectServicePublishNamedBindings(data: Record<string, unknown>): NamedBindingRef[];
|
|
10
|
+
export declare function bindingMatchesExpectedType(expected: ExpectedBindingType, resolvedType: string | null): boolean;
|
|
11
|
+
export interface ServicePublishEchoInput {
|
|
12
|
+
data: Record<string, unknown>;
|
|
13
|
+
dryRun: boolean;
|
|
14
|
+
resolve: (name: string) => Promise<MarkResolution>;
|
|
15
|
+
typeOf: (address: string) => string | null;
|
|
16
|
+
}
|
|
17
|
+
export interface ServicePublishEchoResult {
|
|
18
|
+
echo: string[];
|
|
19
|
+
critical: string[];
|
|
20
|
+
warnings: string[];
|
|
21
|
+
}
|
|
22
|
+
export declare function echoServicePublishBindings(input: ServicePublishEchoInput): Promise<ServicePublishEchoResult>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const ADDR_RE=/^0x[a-fA-F0-9]+$/;function asLocalName(a){if(typeof a!=='string')return undefined;const b=a['trim']();if(b===''||ADDR_RE['test'](b))return undefined;return b;}function asRecord(a){return typeof a==='object'&&a!==null&&!Array['isArray'](a)?a:undefined;}function entityRecipientName(a){const b=asRecord(a);if(!b||!('Entity'in b))return undefined;const c=b['Entity'];if(typeof c==='string')return asLocalName(c);const d=asRecord(c);return d?asLocalName(d['name_or_address']):undefined;}function collectAllocatorRows(a,b,c){const d=asRecord(a),e=Array['isArray'](d?.['allocators'])?d['allocators']:[];e['forEach']((f,g)=>{const h=asRecord(f);if(!h)return;const j=asLocalName(h['guard']);j!==undefined&&c['push']({'slot':b+'.allocators['+g+'].guard','name':j,'expected':'guard','frozenAfterPublish':!![]});const k=Array['isArray'](h['sharing'])?h['sharing']:[];k['forEach']((l,m)=>{const n=entityRecipientName(asRecord(l)?.['who']);n!==undefined&&c['push']({'slot':b+'.allocators['+g+'].sharing['+m+'].who','name':n,'expected':'recipient_entity','frozenAfterPublish':!![]});});});}function collectObjectsNames(a,b,c,d){const e=asRecord(a),f=Array['isArray'](e?.['objects'])?e['objects']:[];f['forEach']((g,h)=>{const j=asLocalName(asRecord(g)?.['name']);j!==undefined&&d['push']({'slot':b+'.objects['+h+']','name':j,'expected':c,'frozenAfterPublish':![]});});}export function collectServicePublishNamedBindings(a){const b=[],c=a['machine']===null?undefined:asLocalName(typeof a['machine']==='string'?a['machine']:asRecord(a['machine'])?.['object']);c!==undefined&&b['push']({'slot':'machine','name':c,'expected':'machine','frozenAfterPublish':!![]});collectAllocatorRows(a['order_allocators'],'order_allocators',b),collectAllocatorRows(a['order_allocators_append'],'order_allocators_append',b),collectObjectsNames(a['arbitrations'],'arbitrations','arbitration',b),collectObjectsNames(a['rewards'],'rewards','reward',b);const d=asLocalName(asRecord(a['object'])?.['permission']);return d!==undefined&&b['push']({'slot':'object.permission','name':d,'expected':'permission','frozenAfterPublish':!![]}),b;}export function bindingMatchesExpectedType(a,b){switch(a){case'machine':return b==='Machine';case'guard':return b==='Guard';case'arbitration':return b==='Arbitration';case'reward':return b==='Reward';case'permission':return b==='Permission';case'recipient_entity':return b===null||b==='Treasury';}}const EXPECTED_LABEL={'machine':'Machine','guard':'Guard','arbitration':'Arbitration','reward':'Reward','permission':'Permission','recipient_entity':'user\x20address\x20or\x20Treasury'};export async function echoServicePublishBindings(a){const b=collectServicePublishNamedBindings(a['data']),c=[],d=[],e=[];c['push']('BINDING\x20ECHO\x20(SV-ECHO-01)\x20—\x20'+b['length']+'\x20named\x20binding(s)\x20this\x20publish\x20will\x20freeze'+(b['some'](f=>f['frozenAfterPublish'])?'\x20(★\x20=\x20L1-locked\x20after\x20publish,\x20append-only)':'')+((a['dryRun']?'\x20—\x20DRY\x20RUN\x20(echo\x20only)':'')+':'));for(const f of b){const g=await a['resolve'](f['name']),h=f['frozenAfterPublish']?'★\x20':'\x20\x20',i=g['address']!==undefined?a['typeOf'](g['address']):null,j=g['source']==='none'||g['address']===undefined?'→\x20✗\x20UNRESOLVED\x20in\x20this\x20session'+(g['ns']?'\x20(ns='+g['ns']+',\x20bare-name\x20fallback\x20also\x20empty)':''):'→\x20'+g['address']+(g['source']==='bare'&&g['ns']?'\x20(bare-name\x20fallback)':'')+'\x20('+(i??'user\x20address')+')';c['push'](''+h+f['slot']+':\x20\x22'+f['name']+'\x22\x20['+EXPECTED_LABEL[f['expected']]+']\x20'+j);g['collisionWarning']&&e['push']('SV-ECHO-01:\x20'+g['collisionWarning']);if(g['source']==='none'){const k='SV-ECHO-01:\x20slot\x20'+f['slot']+'\x20references\x20local\x20name\x20\x22'+f['name']+'\x22\x20—\x20UNRESOLVED\x20in\x20this\x20session\x20'+('(the\x20publish\x20would\x20freeze\x20an\x20EMPTY/dangling\x20binding'+(f['frozenAfterPublish']?'\x20on\x20an\x20L1-locked\x20slot\x20(append-only\x20after\x20publish\x20—\x20permanently\x20unrecoverable)':'')+').\x20')+'Register\x20the\x20name\x20(local_mark\x20register\x20/\x20re-run\x20the\x20creating\x20build)\x20or\x20pass\x20the\x20raw\x200x\x20address.';if(a['dryRun'])e['push'](k);else d['push'](k);continue;}if(!bindingMatchesExpectedType(f['expected'],i)){const l='SV-ECHO-01:\x20slot\x20'+f['slot']+'\x20binds\x20\x22'+f['name']+'\x22\x20→\x20'+g['address']+'\x20whose\x20on-chain\x20type\x20is\x20'+((i??'user\x20address')+'\x20but\x20this\x20slot\x20requires\x20'+EXPECTED_LABEL[f['expected']]+'\x20')+'(ISS-015:\x20mis-bound\x20payee\x20on\x20order_allocators\x20is\x20permanent\x20—\x20append-only\x20after\x20publish).\x20'+'Fix\x20the\x20name\x20binding\x20or\x20pass\x20the\x20correct\x200x\x20address.';if(a['dryRun'])e['push'](l);else d['push'](l);}}return b['length']===0x0&&c['push']('\x20\x20(no\x20named\x20bindings\x20in\x20this\x20payload\x20—\x20nothing\x20frozen\x20by\x20name)'),{'echo':c,'critical':d,'warnings':e};}
|
|
@@ -13,7 +13,7 @@ export declare function balanceFreshnessFace(network: string): {
|
|
|
13
13
|
fetched_at: string;
|
|
14
14
|
note: string;
|
|
15
15
|
};
|
|
16
|
-
export
|
|
16
|
+
export { QUERY_NETWORK_FIELD as NETWORK_FIELD_BY_QUERY } from "../../schema/operations.js";
|
|
17
17
|
export declare function handleWatchQueryOperations(args: unknown): Promise<ToolDispatchResult>;
|
|
18
18
|
export declare function queryPayloadAliases(result: any): Record<string, unknown>;
|
|
19
19
|
export declare function fundExitAuditNote(result: any): string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{strictParse,WatchQueryOperationsSchema,OnchainTableDataSchema,OnchainEventsInputSchema,ProtocolInfoQuerySchema}from'../../schema/index.js';import{checkUpgrade,readChainStamp}from'../upgrade-check.js';import{currentBuildFingerprint,compareReportFingerprint,setComparisonChainEpoch}from'../build-fingerprint.js';import{getUniversalTemplate}from'../../knowledge/universal-template.js';import{getGettingStarted}from'../../knowledge/getting-started.js';import{query_local_mark_list,query_account_list,query_local_info_list,query_local_token_list,query_account,GetLocalNamesByAddresses,query_personal,query_table,query_tableItem,queryTableItem_RepositoryData,queryTableItem_PermissionPerm,queryTableItem_RewardRecord,queryTableItem_DemandPresenter,queryTableItem_TreasuryHistory,queryTableItem_MachineNode,queryTableItem_ProgressHistory,queryTableItem_AddressMark,queryTableItem_EntityRegistrar,queryTableItem_EntityLinker,queryTableItem_EntityContact,queryTableItem_ObjectLinkerCore,queryTableItem_ObjectLinkerTx,queryTableItem_EntityOrder,queryOrdersByUser,query_affiliations,query_address_profile,query_address_profiles,objectTypeFromAddress,ObjectType,query_received,queryProtocolInfo,query_events,query_transaction,query_object_history,query_address_activity,query_checkpoint,generateNodeComments,query_object_last_updated,Config,LocalMark,GetAccountOrMark_Address,ENTRYPOINT}from'@wowok/wowok';import{listInFlightMarkers,recentReturnedDigests,recentLandedTombstones}from'../../composition/inflight.js';import{resolveSupplyChainGraph}from'../../knowledge/supply-chain.js';import{attachWinnerDerivation}from'./winner-derivation.js';import{aggregateOrdersViaIndex}from'../../knowledge/jsonrpc-enum.js';import{resolveNetwork}from'./network.js';import{SCENARIO_CHAINS,SCENARIO_BRIDGE_REGISTRY,SCENARIO_TOPOLOGY_VERSION}from'../../knowledge/scenario-topology.js';import{assembleContext}from'../../playbooks/service-build/context-assembly.js';import{buildMachineGraph,fetchMachineNodes}from'../../playbooks/service-build/machine-nodes.js';import{generateBusinessReport}from'../../playbooks/service-build/reverse-mapping.js';import{handleServicePanorama}from'../../playbooks/service-build/service-panorama.js';import{handleServiceQuote}from'../../playbooks/service-build/service-quote.js';import{handleMachinePanorama}from'../../playbooks/service-build/machine-panorama.js';import{handleObjectPanorama}from'../../playbooks/service-build/object-panorama.js';import{handleParticipationRadar}from'../../playbooks/service-build/participation-radar.js';import{handleRelationshipProfile}from'../../playbooks/service-build/relationship-profile.js';import{handleOnchainTopology}from'../../playbooks/service-build/topology-query.js';import{buildUserInjection}from'../../evaluation/injection.js';import{handleReviewPack}from'../../review/index.js';import{buildWorkspaceLists}from'../../knowledge/workspace-lists.js';import{buildAccountMarks}from'../../knowledge/account-marks.js';import{migrationPreflight}from'../../knowledge/migration-preflight.js';import{buildDataSemantic}from'../../schema/call/semantic.js';import{enrichWorkflowGuidance}from'../../knowledge/workflow-guidance.js';import{buildOrderFundFacts}from'../../knowledge/arb-fund-facts.js';import{batchQueryObjectsByIds,fetchServiceOrders,lastUnresolvedInputs,LINKER_RING_LIMIT}from'../../graph/onchain/sdk-batch.js';import{recoverObjectHeldReceipts}from'../../graph/onchain/object-held-receipts.js';import{formatChainValue,annotateObjectMonetaryFields,annotateTableItemMonetaryFields,annotateEventsMonetaryFields,annotateBalanceChanges,resolveParentObjectTokenType,convertTokenValue}from'../../knowledge/fund-layer.js';import{normalizeAccountOrMark}from'./messenger.js';import{resolveAddress}from'./name-resolution.js';function ownerAddrOf(a){if(typeof a==='string')return a;const b=a;if(b&&typeof b==='object'){if(typeof b['AddressOwner']==='string')return b['AddressOwner'];if(typeof b['ObjectOwner']==='string')return b['ObjectOwner'];const c=Object['values'](b)['find'](d=>typeof d==='string'&&d['length']>0x14);if(typeof c==='string')return c;}return null;}const serviceCoinTypeCache=new Map();async function coinTypesOfServices(a,b){const c=new Map();if(!a||a['length']===0x0)return c;const d=[];for(const e of a){const f=(b??'')+'|'+e['toLowerCase'](),h=serviceCoinTypeCache['get'](f);if(h!==undefined)c['set'](e,h);else d['push'](e);}if(d['length']===0x0)return c;try{const i=await batchQueryObjectsByIds(d,b);for(const j of i){if(!j?.['object'])continue;const k=j?.['type_raw']??j?.['type']??'',l=k['match'](/<(.+)>$/);if(!l)continue;serviceCoinTypeCache['set']((b??'')+'|'+String(j['object'])['toLowerCase'](),l[0x1]),c['set'](j['object'],l[0x1]);}}catch{}return c;}async function mergeServiceAnalysis(a,b){const c=a?.['object'],d=a?.['kind']==='Service'||c&&(c['type']==='Service'||(c['type_raw']??'')['includes']('::service::'));if(!d||!a)return;let e=null;try{const s=await query_object_last_updated({'object':a['address'],'network':b['network']});s?.['timestamp_ms']&&(e={'timestamp_ms':s['timestamp_ms'],'digest':s['digest'],'sender':s['sender']});}catch{}const f=a?.['reverse_core'],g=a?.['reverse_tx'],h=Array['isArray'](f?.['items'])?f['items']['length']:0x0,i=Array['isArray'](g?.['items'])?g['items']['length']:0x0,j=(i>0x0?g['items']:[])['filter'](t=>objectTypeFromAddress(t?.['who'])===ObjectType['Order']),k=j['length'],l=k>=LINKER_RING_LIMIT,m=Array['isArray'](a?.['reputation']?.['votes'])?a['reputation']['votes']:[],n=c?.['type_raw']??c?.['type']??'',o=n['match'](/<(.+)>$/),p=o?o[0x1]:null,q=p?(p['split']('::')['pop']()??p)['toUpperCase']():null,r=Array['isArray'](c?.['sales'])?c['sales']:[];a['service_analysis']={'description':c?.['description']??null,'sales_count':r['length'],'live_sales_count':r['filter'](t=>t&&!t['suspension'])['length'],'paused_sales_count':r['filter'](t=>t&&t['suspension'])['length'],'orders_count':k,'orders_count_truncated':l,'like_count':m['filter'](t=>t&&t['like'])['length'],'dislike_count':m['filter'](t=>t&&t['dislike'])['length'],'favor_count':m['filter'](t=>t&&t['favor'])['length'],'votes':m['map'](t=>({'who':t?.['who']??null,'like':!!t?.['like'],'dislike':!!t?.['dislike'],'favor':!!t?.['favor'],'time':t?.['time']??null})),'coin_type':p,'token_symbol':q,'location':c?.['location']??null,'bPublished':c?.['bPublished']??null,'bPaused':c?.['bPaused']??null,'related_core_count':h,'related_tx_count':i,'related_object_count':h+i,'onchain_last_updated':e};}export function buildProfileFollowUps(a){if(!a||typeof a!=='object')return[];const b=typeof a['address']==='string'?a['address']:undefined;if(!b)return[];const c=a['kind']==='user'||!a['is_system_singleton']&&!a['object'],d=[];if(c){const e=Array['isArray'](a['permission_membership']?.['items'])?a['permission_membership']['items']:[],f=Array['isArray'](a['order_membership']?.['items'])?a['order_membership']['items']:[];e['length']>0x0&&d['push']({'label':'Permission\x20organizations\x20('+e['length']+')','detail':'Expand\x20each\x20Permission\x20the\x20address\x20belongs\x20to\x20—\x20owner/admin/entity\x20standing\x20and\x20what\x20the\x20org\x20governs.','call':{'query_type':'onchain_objects','objects':e['map'](g=>g['who'])['filter'](Boolean)}}),f['length']>0x0&&d['push']({'label':'Order\x20footprint\x20('+f['length']+')','detail':'The\x20orders\x20this\x20address\x20participates\x20in\x20(buyer\x20vs\x20operator\x20roles).','call':{'query_type':'onchain_table_item_entity_order','address':b}}),d['push']({'label':'Public\x20personal\x20profile','detail':'Social/IM\x20links,\x20public\x20info\x20records,\x20voting\x20history,\x20referrer.','call':{'query_type':'onchain_personal_profile','address':b}}),d['push']({'label':'Reverse\x20map','detail':'Related\x20objects\x20and\x20the\x20deterministic\x20business\x20report\x20for\x20this\x20address.','call':{'query_type':'reverse_map','context_objects':[b]}});}else a['object']&&d['push']({'label':'Full\x20object\x20body','detail':'The\x20complete\x20on-chain\x20object\x20fields\x20(one\x20targeted\x20read).','call':{'query_type':'onchain_objects','objects':[b]}}),d['push']({'label':'Reverse\x20map','detail':'Related\x20objects\x20and\x20the\x20deterministic\x20business\x20report.','call':{'query_type':'reverse_map','context_objects':[b]}});return d['push']({'label':'Recent\x20on-chain\x20activity','detail':'Newest\x20transactions\x20touching\x20this\x20address.','call':{'query_type':'onchain_address_activity','address':b}}),d['slice'](0x0,0x3);}async function annotateAccountBalance(a,b){if(!a||typeof a!=='object')return;const e={},f=(k,l)=>{if(k===null||k===undefined)return undefined;if(typeof k!=='string'&&typeof k!=='number'&&typeof k!=='bigint')return undefined;if(typeof l!=='string'||!l)return undefined;return formatChainValue(k,l,b);},g=a['balance'];if(g&&typeof g==='object'){const k=g['coinType'],l=await f(g['totalBalance'],k);if(l)e['balance.totalBalance']=l;if(g['lockedBalance']!==undefined){const m=await f(g['lockedBalance'],k);if(m)e['balance.lockedBalance']=m;}}const h=a['object'];if(h&&typeof h==='object'&&(typeof h['balance']==='string'||typeof h['balance']==='number')&&String(h['balance'])!==''){const n=typeof h['type']==='string'?h['type']:undefined,o=n?.['match'](/<([^>]+)>/)?.[0x1]??n,p=await f(h['balance'],o);if(p)e['object.balance']=p;a['_balance_shape']='object_address:\x20the\x20queried\x20name/address\x20resolved\x20to\x20an\x20ON-CHAIN\x20OBJECT\x20—\x20its\x20funds\x20surface\x20as\x20'+'`object.balance`\x20(the\x20object\x27s\x20own\x20coin\x20balance),\x20NOT\x20as\x20`balance.totalBalance`\x20(the\x20account-aggregate\x20'+'shape).\x20Same\x20units,\x20different\x20key:\x20read\x20BOTH\x20keys,\x20or\x20branch\x20on\x20this\x20note,\x20when\x20polling\x20balances\x20'+'(ks7\x20F-14:\x20a\x20funded\x20escrow\x20was\x20reported\x20as\x200\x20because\x20only\x20the\x20aggregate\x20key\x20was\x20read).';}const j=a['coin']?.['data'];if(Array['isArray'](j))for(let q=0x0;q<j['length'];q++){const r=j[q],s=await f(r?.['balance'],r?.['coinType']);if(s)e['coin.data['+q+'].balance']=s;}if(Object['keys'](e)['length']>0x0){if(b)for(const t of Object['keys'](e)){const u=e[t];e[t]={...u,'text':u['text']+'\x20—\x20network:\x20'+b};}a['_money_display']=e;}}export function balanceScopeNote(a){return a?'The\x20balance\x20figure\x20reflects\x20the\x20aggregated\x20total\x20only;\x20the\x20coin\x20list\x20below\x20is\x20just\x20the\x20FIRST\x20PAGE\x20(top\x205)\x20'+'of\x20independently\x20owned\x20Coin\x20objects\x20—\x20a\x20refund\x20can\x20land\x20as\x20its\x20own\x20Coin\x20object\x20beyond\x20this\x20page.\x20'+'Verify\x20fund\x20arrival\x20via\x20the\x20transaction\x20digest\x20(onchain_transaction)\x20or\x20the\x20full\x20coin-object\x20listing\x20'+'(coin={cursor,limit})\x20before\x20drawing\x20conclusions.':'The\x20balance\x20figure\x20reflects\x20the\x20aggregated\x20total\x20only;\x20independently\x20owned\x20Coin\x20objects\x20are\x20not\x20'+'enumerated\x20here\x20—\x20verify\x20fund\x20arrival\x20via\x20the\x20transaction\x20digest\x20or\x20a\x20coin-objects\x20query\x20before\x20'+'drawing\x20conclusions.';}export function balanceFreshnessFace(a){return{'source':'live','cached':![],'network':a,'fetched_at':new Date()['toISOString'](),'note':'Live\x20read\x20—\x20no\x20MCP/SDK\x20session\x20cache;\x20every\x20account_balance\x20call\x20is\x20an\x20independent\x20query\x20against\x20the\x20'+'network\x27s\x20indexer.\x20Figures\x20CAN\x20differ\x20between\x20calls\x20taken\x20moments\x20apart\x20(live\x20F-RQ-12:\x20the\x20same\x20wallet\x20'+'returned\x209.93\x20/\x2021.88\x20/\x2056.28\x20WOW\x20on\x20three\x20consecutive\x20reads)\x20because\x20the\x20aggregate\x20is\x20assembled\x20from\x20'+'independently\x20owned\x20Coin\x20objects\x20and\x20each\x20query\x20may\x20catch\x20a\x20different\x20settle/merge\x20state.\x20To\x20resolve\x20a\x20'+'discrepancy:\x20re-read\x20and\x20compare\x20fetched_at,\x20enumerate\x20the\x20per-object\x20breakdown\x20(coin={cursor,limit}),\x20'+'and\x20prove\x20fund\x20arrival\x20via\x20the\x20transaction\x20digest\x20(onchain_transaction)\x20—\x20never\x20off\x20a\x20single\x20balance\x20read.'};}export const NETWORK_FIELD_BY_QUERY={'account_balance':'network','onchain_personal_profile':'network','onchain_objects':'network','onchain_received':'network','onchain_transaction':'network','onchain_block':'network','onchain_object_history':'network','onchain_last_updated':'network','onchain_address_activity':'network','recover_created_objects':'network','token_value_convert':'network','address_profile':'network','address_profiles':'network','service_supply_chain':'network','assemble_context':'context_network','reverse_map':'context_network','service_panorama':'context_network','service_quote':'context_network','machine_panorama':'context_network','object_panorama':'context_network','review_pack':'context_network','participation_radar':'context_network','order_aggregate':'context_network','relationship_profile':'context_network','onchain_topology':'context_network','workspace_lists':'context_network','marks_of_account':'context_network'};function requestedNetworkForQuery(a,b){const c=NETWORK_FIELD_BY_QUERY[b];if(!c)return undefined;const d=a[c];return typeof d==='string'&&d['length']>0x0?d:undefined;}const LOCAL_FAMILY_QUERIES=new Set(['local_mark_list','account_list','local_info_list','token_list','local_names']);function normalizeNetworkFieldAlias(a){const b=a['query_type'];if(typeof b!=='string')return;if(LOCAL_FAMILY_QUERIES['has'](b)){delete a['network'],delete a['context_network'];return;}const c=NETWORK_FIELD_BY_QUERY[b];if(!c)return;const d=c==='network'?'context_network':'network';a[c]===undefined&&a[d]!==undefined&&(a[c]=a[d],delete a[d]);}export async function handleWatchQueryOperations(a){let c=a;if(a!==null&&typeof a==='object'&&!Array['isArray'](a)){const l={...a};normalizeNetworkFieldAlias(l),c=l;}const d=strictParse(WatchQueryOperationsSchema,c,'watch_and_query\x20input');let f,g,h;switch(d['query_type']){case'local_mark_list':{const m=await query_local_mark_list(d['filter']||{});f={'query_type':'local_mark_list','result':m};break;}case'account_list':{const n=await query_account_list(d['filter']);f={'query_type':'account_list','result':n};break;}case'local_info_list':{const o=await query_local_info_list(d['filter'],d['account']);f={'query_type':'local_info_list','result':o};break;}case'token_list':{const p=await query_local_token_list(d['filter']||{});f={'query_type':'token_list','result':p};break;}case'account_balance':{const q=await query_account({'name_or_address':d['name_or_address'],'token_type':d['token_type'],'balance':d['balance'],'coin':d['coin'],'network':d['network']}),r=d['network']??await Config['Instance']()['network_get']();await annotateAccountBalance(q,r);let s=![];if(q['balance']&&!d['coin']&&!q['object']&&!q['hint'])try{const t=await query_account({'name_or_address':d['name_or_address'],'coin':{'cursor':null,'limit':0x5},'token_type':d['token_type'],'network':d['network']});t['coin']&&(q['coin']=t['coin'],s=!![]);}catch{}q['_balance_scope_note']=balanceScopeNote(s),q['_balance_read_freshness']=balanceFreshnessFace(r),f={'query_type':'account_balance','result':q};break;}case'local_names':{const u=await GetLocalNamesByAddresses(d['addresses']);f={'query_type':'local_names','result':u};break;}case'onchain_personal_profile':{const v=await query_personal({'account':d['account'],'no_cache':d['no_cache'],'network':d['network']});f={'query_type':'onchain_personal_profile','result':v};break;}case'onchain_objects':{const w=d['no_cache']??!![],x=await batchQueryObjectsByIds(d['objects'],d['network'],w),y=lastUnresolvedInputs(),z={'objects':x,'_read_freshness':{'source':w?'live':'session_cache','no_cache':w,'fetched_at':new Date()['toISOString'](),'note':w?'Forced-fresh\x20read.\x20This\x20is\x20the\x20DEFAULT\x20because\x20a\x20stale\x20value\x20here\x20can\x20invert\x20a\x20fund-movement\x20conclusion.':'Session\x20cache\x20was\x20used\x20(no_cache:false).\x20Pass\x20no_cache:true\x20before\x20concluding\x20that\x20money\x20did\x20or\x20did\x20not\x20move.'},...x['length']===0x0&&y['length']>0x0?{'_empty_reason':{'kind':'unresolved_inputs','unresolved':y,'note':'These\x20inputs\x20resolved\x20to\x20neither\x20a\x20registered\x20LocalMark\x20nor\x20a\x20valid\x20address\x20on\x20network\x20\x27'+(d['network']??'current')+'\x27.\x20LocalMark\x20names\x20are\x20NETWORK-SCOPED\x20—\x20an\x20object\x20created\x20on\x20testnet\x20is\x20invisible\x20on\x20localnet/mainnet.\x20Either\x20register\x20the\x20mark\x20here\x20(local_mark_operation)\x20or\x20pass\x20the\x20full\x200x\x20address.\x20This\x20is\x20NOT\x20evidence\x20that\x20the\x20objects\x20are\x20absent\x20on\x20chain.'}}:{},...x['length']<d['objects']['length']?{'_unreturned':{'requested':d['objects']['length'],'returned':x['length'],'missing':d['objects']['map'](A=>typeof A==='string'?A:A?.['name_or_address']??A?.['object']??A?.['address'])['filter'](A=>typeof A==='string'&&A!=='')['filter'](A=>!x['some'](B=>typeof B?.['object']==='string'&&B['object']['toLowerCase']()===A['toLowerCase']())),'note':'These\x20requested\x20ids\x20were\x20NOT\x20returned\x20—\x20either\x20absent\x20on\x20chain,\x20filtered\x20by\x20the\x20reader\x27s\x20type\x20support,\x20or\x20unparseable.\x20This\x20is\x20NOT\x20proof\x20of\x20nonexistence:\x20verify\x20via\x20an\x20alternative\x20read\x20(object_panorama\x20/\x20a\x20direct\x20address\x20query)\x20before\x20concluding\x20an\x20object\x20is\x20gone.'}}:{}};if(z&&z['objects']&&Array['isArray'](z['objects'])){z['objects']=z['objects']['map'](A=>{if(A&&A['data']&&A['data']['type']==='Guard'&&A['data']['root'])try{const B=generateNodeComments(A['data']['root']);return{...A,'_guard_node_comments':B};}catch(C){return A;}return A;}),z['objects']=z['objects']['map'](A=>{if(A&&A['data']&&A['data']['type']==='Progress'&&A['data']['current']===''){const B=A['data']['machine'],C=A['data']['task'];return{...A,'_diagnostic':{'issue':'Progress.current\x20is\x20empty\x20—\x20order\x20workflow\x20is\x20stuck\x20at\x20the\x20initial\x20state','cause':'The\x20Machine\x27s\x20entry\x20node\x20(prev_node=\x27\x27)\x20likely\x20has\x20no\x20forwards\x20defined.\x20'+'When\x20Progress\x20starts,\x20it\x20looks\x20up\x20the\x20entry\x20node\x27s\x20forwards\x20to\x20determine\x20'+'the\x20next\x20node.\x20Without\x20forwards,\x20Progress\x20cannot\x20advance\x20and\x20the\x20order\x20'+'is\x20permanently\x20stuck.','machine_object_id':B??null,'bound_order_id':C??null,'fix':['1.\x20Query\x20the\x20Machine\x20object\x20(use\x20query_toolkit\x20with\x20query_type=\x27onchain_objects\x27\x20and\x20objects=['+JSON['stringify'](B)+']).','2.\x20Inspect\x20node.pairs\x20for\x20the\x20entry\x20node\x20(prev_node=\x27\x27).','3.\x20If\x20forwards\x20is\x20empty:\x20this\x20is\x20the\x20root\x20cause.\x20The\x20Machine\x20must\x20be\x20republished\x20with\x20at\x20least\x20one\x20forward\x20on\x20the\x20entry\x20node.','4.\x20To\x20republish:\x20clone\x20the\x20Machine\x20nodes,\x20add\x20a\x20forward\x20to\x20the\x20entry\x20node\x27s\x20pairs,\x20then\x20create\x20a\x20new\x20Machine\x20(Machine\x20nodes\x20are\x20immutable\x20after\x20publish\x20—\x20see\x20P0-2\x20schema\x20validation\x20that\x20now\x20blocks\x20this).','5.\x20Rebind\x20the\x20new\x20Machine\x20to\x20the\x20Service\x20(service.machine\x20field)\x20and\x20create\x20a\x20new\x20Order\x20to\x20test.'],'reference':'P0-2\x20schema\x20refinement\x20in\x20MachineNodePairSchema\x20ensures\x20new\x20Machines\x20cannot\x20be\x20published\x20with\x20empty\x20entry-node\x20forwards.\x20This\x20diagnostic\x20catches\x20legacy\x20Machines\x20that\x20predate\x20the\x20fix.'}};}return A;});for(const A of z['objects']){const B=A?.['data']??A;if((A?.['type']??B?.['type'])!=='Progress')continue;const C=A?.['object']??B?.['object'];if(!C)continue;try{const D=await enrichWorkflowGuidance({'progressRef':C,'network':d['network'],'noCache':d['no_cache']});if(D?.['guidance']){A['_workflow_guidance']=D['guidance'];if(D['text'])A['_workflow_guidance_text']=D['text'];}}catch{}try{const E=d['winner_node'],F=await attachWinnerDerivation(C,B,d['network'],typeof E==='string'?E:undefined);A['_winner_derivation']=F['winner_derivation'],F['winner_derivation_note']!==undefined&&(A['_winner_derivation_note']=F['winner_derivation_note']);}catch{}}for(const G of z['objects']){const H=G?.['data']??G;if((G?.['type']??H?.['type'])!=='Arb')continue;const I=G?.['object']??H?.['object'];if(!I)continue;try{const J=await buildOrderFundFacts({'arbRef':I,'network':d['network'],'noCache':w});J&&(G['_order_fund_facts']=J['structured'],G['_order_fund_facts_text']=J['text']);}catch{}}for(const K of z['objects']){try{await annotateObjectMonetaryFields(K,d['network']);}catch{}}}f={'query_type':'onchain_objects','result':z};break;}case'onchain_received':{const L=d['name_or_address'],M=typeof L==='string'?L:L?.['name_or_address'],N=await query_received({'name_or_address':normalizeAccountOrMark(d['name_or_address']),'type':d['type'],'cursor':d['cursor'],'limit':d['limit'],'no_cache':d['no_cache'],'network':d['network']}),O=N;if(d['type']==='CoinWrapper'&&O&&!Array['isArray'](O)&&Array['isArray'](O['received'])&&O['received']['length']===0x0&&typeof M==='string'&&M!==''&&!M['toLowerCase']()['startsWith']('0x00')){const P=await recoverObjectHeldReceipts(M,{'network':d['network'],'no_cache':d['no_cache']});P&&P['receipts']['length']>0x0&&(O['received']=P['receipts']['map'](Q=>({'id':Q['id'],'balance':Q['amount'],'payment':Q['payment'],'type':Q['type'],'version':Q['version'],'digest':Q['digest']})),O['token_type']=P['token_type'],O['balance']=P['receipts']['reduce']((Q,R)=>Q+BigInt(R['amount']||'0'),0x0n),h='allocation-transaction-effects');}if(O&&typeof O==='object'&&typeof O['balance']==='bigint'){const Q=O['token_type'];O['balance']=O['balance']['toString']();if(Array['isArray'](O['received']))for(const R of O['received']){R&&typeof R['balance']==='bigint'&&(R['balance']=R['balance']['toString']());}if(Q)try{const S={'balance':await formatChainValue(O['balance'],Q,d['network'])};if(Array['isArray'](O['received']))for(let T=0x0;T<O['received']['length'];T++){const U=O['received'][T]?.['balance'];U!==undefined&&U!==null&&(S['received['+T+'].balance']=await formatChainValue(U,Q,d['network']));}O['_money_display']=S;}catch{}}f={'query_type':'onchain_received','result':O};break;}case'onchain_transaction':{const V=a0=>query_transaction({'digest':d['digest'],'no_cache':d['no_cache'],'network':a0}),W=a0=>/could not find the referenced transaction|not found/i['test'](a0 instanceof Error?a0['message']:String(a0));let X;if(d['network'])X=await V(d['network']);else{const a0=await Config['Instance']()['network_get']();try{X=await V(undefined);}catch(a1){if(!W(a1))throw a1;}if(!X){const a2=[];for(const a3 of Object['values'](ENTRYPOINT)){if(a3===a0)continue;a2['push'](a3);try{const a4=await V(a3);if(a4){X=a4,g=a3;break;}}catch{}}if(!X)throw new Error('Transaction\x20digest\x20not\x20found\x20on\x20the\x20session\x20default\x20network\x20('+a0+')\x20'+('or\x20any\x20other\x20probed\x20network\x20('+[a0,...a2]['join'](',\x20')+').\x20')+'This\x20is\x20an\x20all-network\x20miss\x20—\x20record\x20it\x20as\x20\x22did\x20not\x20commit\x22\x20(never\x20as\x20\x22unverified\x22).\x20'+'If\x20you\x20know\x20the\x20digest\x27s\x20network,\x20pass\x20network\x20explicitly.');}}const Y=d['network']??g;try{await annotateBalanceChanges(X?.['balance_changes'],Y);}catch{}g&&(X['_network_probe']='NOT\x20found\x20on\x20the\x20session\x20default\x20network;\x20FOUND\x20on\x20\x27'+g+'\x27\x20—\x20every\x20field\x20'+('below\x20(status,\x20gas,\x20balance\x20changes)\x20was\x20READ\x20FROM\x20'+g+'.\x20Never\x20cite\x20this\x20')+'result\x20as\x20session-default-network\x20data.');const Z=fundExitAuditNote(X);Z&&(X['_fund_exit_audit']=Z);f={'query_type':'onchain_transaction','result':X};break;}case'onchain_block':{const a5=await query_checkpoint({'block':d['block'],'network':d['network']});f={'query_type':'onchain_block','result':a5};break;}case'onchain_object_history':{const a6=await query_object_history({'object':d['object'],'cursor':d['cursor'],'limit':d['limit'],'order':d['order'],'no_cache':d['no_cache'],'network':d['network']});f={'query_type':'onchain_object_history','result':a6};break;}case'onchain_last_updated':{const a7=d['objects']??[],a8=await Promise['allSettled'](a7['map'](aa=>query_object_last_updated({'object':aa,'network':d['network']}))),a9=a7['map']((aa,ab)=>{const ac=a8[ab],ad=ac['status']==='fulfilled'?ac['value']:null;return{'object':aa,'timestamp_ms':ad?.['timestamp_ms']?String(ad['timestamp_ms']):null,'digest':ad?.['digest']??null,'sender':ad?.['sender']??null};});f={'query_type':'onchain_last_updated','result':{'items':a9}};break;}case'onchain_address_activity':{const aa=typeof d['name_or_address']==='string'?d['name_or_address']:d['name_or_address']['name_or_address'],ab=await query_address_activity({'name_or_address':aa,'direction':d['direction'],'cursor':d['cursor'],'limit':d['limit'],'order':d['order'],'no_cache':d['no_cache'],'network':d['network']});f={'query_type':'onchain_address_activity','result':ab};break;}case'recover_created_objects':{const ac=d['label'],ad=typeof ac==='string'?ac:ac['name_or_address']??'',ae=ad['trim']();let af;if(/^0x[0-9a-fA-F]{1,64}$/['test'](ae))af=ae['toLowerCase']();else try{af=await GetAccountOrMark_Address(ae)??undefined;}catch{af=undefined;}const ag=d['op'],ah=af?.['toLowerCase'](),ai=listInFlightMarkers()['filter'](am=>ag?am['op']===ag:!![])['filter'](am=>ah?!am['buyer']||am['buyer']['toLowerCase']()===ah:!![]),aj=d['limit']??0x14;let ak=null,al;try{ak=await query_address_activity({'name_or_address':ad,'direction':'sent','limit':aj,'no_cache':d['no_cache'],'network':d['network']});}catch(am){al=am instanceof Error?am['message']:String(am);}f={'query_type':'recover_created_objects','result':{'label':ad,...af?{'resolved_address':af}:{},'inflight_markers':ai,'returned_digests':recentReturnedDigests(aj),'landed_tombstones':recentLandedTombstones(),...ak!==null?{'onchain_activity':ak}:{},...al?{'onchain_activity_error':al}:{},'recovery_guidance':'Decision\x20rule,\x20in\x20order:\x20(1)\x20a\x20marker\x20whose\x20digests\x20include\x20a\x20digest\x20that\x20resolves\x20to\x20an\x20'+'EXECUTED\x20transaction\x20(query_toolkit\x20onchain_transaction)\x20—\x20the\x20operation\x20landed:\x20ADOPT\x20its\x20'+'created\x20objects\x20and\x20stop;\x20(2)\x20onchain_activity\x20shows\x20the\x20operation\x27s\x20effects\x20inside\x20the\x20'+'failure\x20window\x20—\x20adopt,\x20stop;\x20(3)\x20markers\x20are\x20open\x20but\x20nothing\x20on-chain\x20—\x20the\x20commit\x20state\x20'+'stayed\x20open:\x20a\x20CORRECTED\x20resubmit\x20is\x20allowed\x20(an\x20identical\x20payload\x20within\x20the\x20intercept\x20'+'window\x20is\x20still\x20held\x20by\x20the\x20verify-first\x20gate);\x20(4)\x20no\x20markers\x20and\x20no\x20activity\x20—\x20nothing\x20'+'landed\x20from\x20THIS\x20process;\x20other\x20sessions/devices\x20may\x20hold\x20state,\x20the\x20chain\x20remains\x20the\x20only\x20truth.'}};break;}case'token_value_convert':{const an=d['raw']!==undefined,ao=d['unit']!==undefined;if(an===ao)throw new Error('token_value_convert:\x20provide\x20EXACTLY\x20ONE\x20of\x20\x27raw\x27\x20(u64\x20smallest\x20units\x20→\x20unit\x20value)\x20'+('or\x20\x27unit\x27\x20(unit\x20value\x20→\x20u64\x20raw).\x20Received\x20raw='+JSON['stringify'](d['raw'])+',\x20')+('unit='+JSON['stringify'](d['unit'])+'.'));const ap=await convertTokenValue(d['token_type'],an?{'raw':d['raw']}:{'unit':d['unit']},d['network']);f={'query_type':'token_value_convert','result':ap};break;}case'address_profile':{const aq=await query_address_profile({'address':d['address'],'no_cache':d['no_cache'],'network':d['network']});await mergeServiceAnalysis(aq,{'no_cache':d['no_cache'],'network':d['network']});aq&&typeof aq==='object'&&(aq['follow_ups']=buildProfileFollowUps(aq));f={'query_type':'address_profile','result':aq};break;}case'address_profiles':{const ar=await query_address_profiles({'addresses':d['addresses'],'no_cache':d['no_cache'],'network':d['network']});await Promise['all'](ar['map'](as=>mergeServiceAnalysis(as,{'no_cache':d['no_cache'],'network':d['network']})));for(const as of ar??[]){as&&typeof as==='object'&&(as['follow_ups']=buildProfileFollowUps(as));}f={'query_type':'address_profiles','result':ar};break;}case'service_supply_chain':{const at=await resolveSupplyChainGraph(typeof d['address']==='string'?d['address']:d['address']?.['name_or_address']??String(d['address']),d['network']);f={'query_type':'service_supply_chain','result':at};break;}case'assemble_context':{f={'query_type':'assemble_context','result':await assembleContext(d)};break;}case'reverse_map':{if(!d['context_objects']||d['context_objects']['length']===0x0)throw new Error('reverse_map\x20requires\x20\x27context_objects\x27\x20—\x20an\x20array\x20of\x20object\x20IDs\x20or\x20LocalMark\x20names\x20(include\x20the\x20Service;\x20add\x20Machine/Allocation\x20for\x20refund-path\x20detection).');const au=d['context_network']??await Config['Instance']()['network_get'](),av=await batchQueryObjectsByIds(d['context_objects'],au,!![]);let aw,ax,ay=null;{const aA=av['find'](aC=>{const aD=aC?.['machine']??aC?.['data']?.['machine'];return typeof aD==='string'&&/^0x[0-9a-fA-F]/['test'](aD);});if(aA)try{ay=String(aA['object']??aA['id']??'');const aC=await LocalMark['Instance']()['list']({'address':ay});if(aC[0x0]?.['name'])aA['name']=aC[0x0]['name'];}catch{}const aB=aA?String(aA['machine']??aA['data']?.['machine']):null;if(aB)try{const aD=av['some'](aF=>String(aF?.['object']??aF?.['id']??'')['toLowerCase']()===aB['toLowerCase']());!aD&&av['push'](...await batchQueryObjectsByIds([aB],au,!![]));const aE=await fetchMachineNodes(aB,au);aw=aE['map'](aF=>({'name':String(aF?.['name']??'')}))['filter'](aF=>aF['name']['length']>0x0),ax=buildMachineGraph(aE)['edges']['map'](aF=>({'from':aF['from'],'to':aF['to']}));}catch{}}let az;if(ay)try{const aF=await fetchServiceOrders(ay,au),aG=(aF?.['items']??[])['slice'](0x0,0xa)['map'](aH=>typeof aH?.['who']==='string'?aH['who']:'')['filter'](aH=>aH!=='');if(aG['length']>0x0){const aH=await batchQueryObjectsByIds(aG,au,!![]);az=aH['filter'](aI=>aI?.['type']===ObjectType['Order'])['map'](aI=>({'id':aI['object'],'created_at_ms':Number(aI?.['time'])||undefined,'claimed_by':aI?.['claimed_by']??null}));}}catch{}f={'query_type':'reverse_map','result':{'action':'reverse_map','objects_queried':av['length'],'report':generateBusinessReport({'objects':av,'machine_nodes':aw,'machine_edges':ax,'orders':az,'now_ms':Date['now'](),'order_amount':d['reverse_order_amount']})}};break;}case'service_panorama':f={'query_type':'service_panorama','result':await handleServicePanorama(d)};break;case'service_quote':f={'query_type':'service_quote','result':await handleServiceQuote(d)};break;case'machine_panorama':f={'query_type':'machine_panorama','result':await handleMachinePanorama(d)};break;case'object_panorama':f={'query_type':'object_panorama','result':await handleObjectPanorama(d)};break;case'review_pack':f={'query_type':'review_pack','result':await handleReviewPack(d)};break;case'participation_radar':f={'query_type':'participation_radar','result':await handleParticipationRadar(d)};break;case'order_aggregate':{const aI=await resolveNetwork(d['context_network']),aJ=await aggregateOrdersViaIndex(aI,{'group':d['group'],'groupId':d['group_id'],'metric':d['metric'],'excludeClaimed':d['exclude_claimed'],'limit':d['limit']});f={'query_type':'order_aggregate','result':{'action':'order_aggregate',...aJ}};break;}case'relationship_profile':f={'query_type':'relationship_profile','result':await handleRelationshipProfile(d)};break;case'onchain_topology':f={'query_type':'onchain_topology','result':await handleOnchainTopology(d,undefined,await buildUserInjection(d['context_account']?.['toLowerCase']()))};break;case'workspace_lists':f={'query_type':'workspace_lists','result':await buildWorkspaceLists({'network':d['context_network'],'no_cache':d['no_cache'],'account':d['account'],'light':d['light']})};break;case'marks_of_account':f={'query_type':'marks_of_account','result':await buildAccountMarks({'network':d['context_network'],'no_cache':d['no_cache'],'account':d['account'],'light':d['light']})};break;case'migration_preflight':f={'query_type':'migration_preflight','result':await migrationPreflight({'account':d['account'],'source_network':d['source_network'],'target_network':d['target_network'],'no_cache':d['no_cache']})};break;case'scenario_topology':{const aK=d['chain_id'];f={'query_type':'scenario_topology','result':{'version':SCENARIO_TOPOLOGY_VERSION,'chains':aK?SCENARIO_CHAINS['filter'](aL=>aL['id']===aK):SCENARIO_CHAINS,'bridges':SCENARIO_BRIDGE_REGISTRY}};break;}default:throw new Error('Unknown\x20query\x20type.\x20Valid\x20query_types\x20are:\x20\x22local_mark_list\x22,\x20\x22account_list\x22,\x20\x22local_info_list\x22,\x20\x22token_list\x22,\x20\x22account_balance\x22,\x20\x22local_names\x22,\x20\x22onchain_personal_profile\x22,\x20\x22onchain_objects\x22,\x20\x22onchain_received\x22,\x20\x22onchain_transaction\x22,\x20\x22onchain_object_history\x22,\x20\x22onchain_last_updated\x22,\x20\x22onchain_address_activity\x22,\x20\x22recover_created_objects\x22,\x20\x22token_value_convert\x22,\x20\x22address_profile\x22,\x20\x22address_profiles\x22,\x20\x22service_supply_chain\x22,\x20\x22relationship_profile\x22,\x20\x22onchain_topology\x22,\x20\x22workspace_lists\x22,\x20\x22marks_of_account\x22,\x20\x22migration_preflight\x22.\x20For\x20table\x20queries,\x20use\x20the\x20\x22onchain_table_data\x22\x20tool.');}const j=requestedNetworkForQuery(d,f['query_type']);let k;if(NETWORK_FIELD_BY_QUERY[f['query_type']]){const aL=j??g??await Config['Instance']()['network_get']();k={'network':aL,'network_source':j?'explicit':g?'probed':'default'};}return{'content':[{'type':'text','text':JSON['stringify']({...k,...h?{'read_path':h}:{},'result':f})}],'structuredContent':{'result':f,...queryPayloadAliases(f),...k??{},...h?{'read_path':h}:{},'semantic':buildDataSemantic(f,{'operation_type':'query_toolkit','data':d})}};}export function queryPayloadAliases(a){const b=a?.['result'];if(!b||typeof b!=='object')return{};const c={};if(Array['isArray'](b['objects']))c['objects']=b['objects'];if(Array['isArray'](b['received']))c['received']=b['received'];if(b['balance']&&typeof b['balance']==='object')c['balance']=b['balance'];if(Object['keys'](c)['length']===0x0)return{};const d=Object['keys'](c)['filter'](e=>!e['startsWith']('_'));return c['_read_hint']='The\x20\x27result\x27\x20key\x20appears\x20twice\x20by\x20design:\x20structuredContent.result\x20is\x20the\x20per-query_type\x20envelope,\x20'+'so\x20the\x20authoritative\x20path\x20for\x20each\x20field\x20is\x20'+(d['map'](e=>'structuredContent.result.result.'+e)['join']('\x20and\x20')+'.\x20')+('The\x20top-level\x20'+d['join'](',\x20')+'\x20above\x20are\x20additive\x20copies\x20of\x20the\x20same\x20data.'),c;}export function fundExitAuditNote(a){const b=Array['isArray'](a?.['object_changes'])?a['object_changes']:[],c=b['filter'](f=>f?.['type']==='deleted'||f?.['type']==='wrapped'||f?.['type']==='unwrapped');if(c['length']===0x0)return undefined;const d=c['filter'](f=>f?.['synthesized']===!![]),e=['FUND-EXIT\x20AUDIT:\x20this\x20transaction\x20consumed\x20'+c['length']+'\x20object(s)\x20'+('('+c['map'](f=>f['type']+'\x20'+f['id'])['join'](',\x20')+').\x20A\x20consumed\x20object\x20is\x20a\x20money/object\x20')+'exit\x20door\x20—\x20trace\x20where\x20its\x20contents\x20went\x20via\x20balance_changes\x20(per-owner\x20deltas)\x20before\x20concluding.'];return d['length']>0x0&&e['push'](d['length']+'\x20removal(s)\x20reconstructed\x20from\x20the\x20tx\x20effects\x20(synthesized=true,\x20no\x20'+'object_type):\x20the\x20node\x27s\x20objectChanges\x20omitted\x20the\x20consumed\x20object\x27s\x20live\x20state.\x20Resolve\x20its\x20'+'type\x20via\x20onchain_object_history\x20on\x20the\x20id\x20if\x20needed.'),e['push']('Fallback\x20when\x20an\x20exit\x20still\x20lacks\x20object-level\x20evidence:\x20diff\x20two\x20query_toolkit\x20onchain_received\x20'+'snapshots\x20taken\x20before\x20and\x20after\x20this\x20digest\x20(full-set\x20difference)\x20—\x20object-level\x20records\x20are\x20'+'eventually\x20the\x20ground\x20truth\x20even\x20when\x20events\x20are\x20empty.'),e['join']('\x20');}export async function handleOnchainTableData(a){const b=strictParse(OnchainTableDataSchema,a,'onchain_table_data\x20input');let c;switch(b['query_type']){case'onchain_table':{const d=await query_table({'parent':b['parent'],'cursor':b['cursor'],'limit':b['limit'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table','result':d};break;}case'onchain_table_item_repository_data':{const f=await queryTableItem_RepositoryData({'parent':b['parent'],'name':b['name'],'entity':b['entity'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_repository_data','result':f};break;}case'onchain_table_item_permission_perm':{const g=await queryTableItem_PermissionPerm({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_permission_perm','result':g};break;}case'onchain_table_item_reward_record':{const h=await queryTableItem_RewardRecord({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});if(h)try{const j=await resolveParentObjectTokenType(b['parent'],b['network']);await annotateTableItemMonetaryFields(h,j,b['network']);}catch{}c={'query_type':'onchain_table_item_reward_record','result':h};break;}case'onchain_table_item_demand_presenter':{const k=await queryTableItem_DemandPresenter({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_demand_presenter','result':k};break;}case'onchain_table_item_treasury_history':{const l=await queryTableItem_TreasuryHistory({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});if(l)try{const m=await resolveParentObjectTokenType(b['parent'],b['network']);await annotateTableItemMonetaryFields(l,m,b['network']);}catch{}c={'query_type':'onchain_table_item_treasury_history','result':l};break;}case'onchain_table_item_machine_node':{const n=await queryTableItem_MachineNode({'parent':b['parent'],'key':b['key'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_machine_node','result':n};break;}case'onchain_table_item_progress_history':{const p=await queryTableItem_ProgressHistory({'parent':b['parent'],'u64':b['u64'],'no_cache':![],'network':b['network']});c={'query_type':'onchain_table_item_progress_history','result':p};break;}case'onchain_table_item_address_mark':{const q=await queryTableItem_AddressMark({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_address_mark','result':q};break;}case'onchain_table_item_entity_registrar':{const s=await queryTableItem_EntityRegistrar({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_registrar','result':s};break;}case'onchain_table_item_entity_linker':{const t=await queryTableItem_EntityLinker({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_linker','result':t};break;}case'onchain_table_item_entity_contact':{const u=await queryTableItem_EntityContact({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_contact','result':u};break;}case'onchain_table_item_entity_order':{const v=await queryTableItem_EntityOrder({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_order','result':v};break;}case'onchain_orders_of_user':{const w=typeof b['address']==='string'?b['address']:b['address']?.['name_or_address']??String(b['address']),x=await resolveAddress(w,'address');let y;try{y=await queryOrdersByUser({'address':x,'no_cache':b['no_cache'],'network':b['network']});}catch(z){const A=z instanceof Error?z['message']:String(z);if(/dynamicFieldNotFound/i['test'](A))y=[];else throw z;}c={'query_type':'onchain_orders_of_user','result':y};break;}case'onchain_orders_of_users':{const B=b['addresses']??[],C=[],D=await Promise['allSettled'](B['map'](async O=>{const P=String(O?.['name_or_address']??''),Q=await resolveAddress(P,'address');try{const R=await queryOrdersByUser({'address':Q,'no_cache':b['no_cache'],'network':b['network']});return{'account':P,'views':Array['isArray'](R)?R:[]};}catch(S){const T=S instanceof Error?S['message']:String(S);if(/dynamicFieldNotFound/i['test'](T))return{'account':P,'views':[]};throw S;}})),E=[];for(let O=0x0;O<B['length'];O++){const P=D[O];if(P['status']==='fulfilled')E['push'](P['value']);else{const Q=P['reason']instanceof Error?P['reason']['message']:String(P['reason']);C['push'](String(B[O]?.['name_or_address']??'?')+':\x20'+Q);}}const F=Array['from'](new Set(E['flatMap'](R=>R['views']['map'](S=>typeof S?.['order']?.['object']==='string'?S['order']['object']:typeof S?.['order']==='string'?S['order']:'')['filter'](Boolean)))),G=new Map();try{if(F['length']>0x0){const R=await batchQueryObjectsByIds(F,b['network']);for(const S of R){if(S&&S['type']===ObjectType['Order'])G['set'](S['object'],S);}}}catch{C['push']('order\x20details\x20unavailable\x20(non-blocking)');}const H=new Map(),I=new Map(),J=new Map();try{const T=new Set();for(const U of G['values']()){if(U?.['progress'])T['add'](U['progress']);if(U?.['allocation'])T['add'](U['allocation']);}if(T['size']>0x0){const V=await batchQueryObjectsByIds(Array['from'](T),b['network']);for(const W of V){if(!W?.['object'])continue;if(W['type']===ObjectType['Progress']){const X=W?.['current'];H['set'](W['object'],typeof X==='string'&&X!==''?X:null),I['set'](W['object'],Number(W?.['current_time'])||null);}else{if(W['type']===ObjectType['Allocation']){const Y=Number(W?.['balance']??0x0);J['set'](W['object'],Number['isFinite'](Y)&&Y===0x0?'allocated':'pending');}}}}}catch{C['push']('progress/allocation\x20details\x20unavailable\x20(non-blocking)');}const K=new Map();try{const Z=await Promise['allSettled'](F['map'](a0=>query_object_last_updated({'object':a0,'network':b['network'],'previous_transaction':G['get'](a0)?.['previousTransaction']??null})));for(let a0=0x0;a0<F['length'];a0++){const a1=Z[a0];K['set'](F[a0],a1['status']==='fulfilled'&&a1['value']?.['timestamp_ms']?Number(a1['value']['timestamp_ms'])||null:null);}}catch{C['push']('order\x20updated\x20times\x20unavailable\x20(non-blocking)');}const L=await coinTypesOfServices(Array['from'](new Set(Array['from'](G['values']())['map'](a2=>typeof a2?.['service']==='string'?a2['service']:'')['filter'](Boolean))),b['network']),M=async(a2,a3)=>{if(a3===null||a3===undefined||a3==='')return{'display':'','tip':''};if(!a2)return{'display':a3,'tip':''};try{const a4=await formatChainValue(a3,a2,b['network']);if(a4['precision_known'])return{'display':a4['symbol']?a4['display']+'\x20'+a4['symbol']:a4['display'],'tip':a4['text']};return{'display':a3,'tip':''};}catch{return{'display':a3,'tip':''};}},N=[];for(const a2 of F){const a3=G['get'](a2),a4=E['filter'](a8=>a8['views']['some'](a9=>(typeof a9?.['order']?.['object']==='string'?a9['order']['object']:a9?.['order'])===a2))['map'](a8=>{const a9=a8['views']['find'](aa=>(typeof aa?.['order']?.['object']==='string'?aa['order']['object']:aa?.['order'])===a2);return{'account':a8['account'],'is_owner':!!a9?.['is_owner'],'is_agent':!!a9?.['is_agent'],'time':a9?.['time']};}),a5=L['get'](String(a3?.['service']??''))??null,a6=a3?.['amount']!==null&&a3?.['amount']!==undefined?String(a3['amount']):'',a7=await M(a5,a6);N['push']({'order':a2,'roles':a4,'time':a3?Number(a3['time'])||0x0:0x0,'updated_ms':K['get'](a2)??null,'amount':a6,'amount_display':a7['display'],'amount_tip':a7['tip'],'service':a3?.['service']??null,'machine':a3?.['machine']??null,'progress':a3?.['progress']??null,'allocation':a3?.['allocation']??null,'owner':ownerAddrOf(a3?.['builder']??a3?.['owner']),'claimed_by':a3?.['claimed_by']??null,'required_info':a3?.['required_info']??null,'progress_next':a3?.['progress']?H['get'](a3['progress'])??null:null,'progress_since':a3?.['progress']?I['get'](a3['progress'])??null:null,'allocation_state':a3?.['allocation']?J['get'](a3['allocation'])??'pending':'none','disputes':Array['isArray'](a3?.['dispute'])?a3['dispute']:[],'agents':Array['isArray'](a3?.['agent'])?a3['agent']:[],'items':await Promise['all']((Array['isArray'](a3?.['items'])?a3['items']:[])['map'](async a8=>{const a9=a8?.['price']!==null&&a8?.['price']!==undefined?String(a8['price']):'0';return{'name':String(a8?.['name']??''),'price':a9,'price_display':(await M(a5,a9))['display'],'quantity':String(a8?.['quantity']??'0'),'wip_hash':String(a8?.['wip_hash']??'')};}))});}c={'query_type':'onchain_orders_of_users','result':N,...C['length']>0x0?{'account_errors':C}:{}};break;}case'onchain_table_item_object_linker_core':{const a8=await queryTableItem_ObjectLinkerCore({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_object_linker_core','result':a8};break;}case'onchain_table_item_object_linker_tx':{const a9=await queryTableItem_ObjectLinkerTx({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_object_linker_tx','result':a9};break;}case'onchain_affiliations_of_object':{const aa=await query_affiliations({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']}),ab=aa?.['entries'];Array['isArray'](ab)&&(aa['entries']=ab['filter'](ac=>{const ad=typeof ac?.['who']==='string'?ac['who']:'';return!!ad&&!!objectTypeFromAddress(ad);}));c={'query_type':'onchain_affiliations_of_object','result':aa};break;}case'address_profile':{const ac=await query_address_profile({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});await mergeServiceAnalysis(ac,{'no_cache':b['no_cache'],'network':b['network']});ac&&typeof ac==='object'&&(ac['follow_ups']=buildProfileFollowUps(ac));c={'query_type':'address_profile','result':ac};break;}case'service_supply_chain':{const ad=await resolveSupplyChainGraph(typeof b['address']==='string'?b['address']:b['address']?.['name_or_address']??String(b['address']),b['network']);c={'query_type':'service_supply_chain','result':ad};break;}case'onchain_table_item_generic':{const ae=await query_tableItem({'parent':b['parent'],'key':{'type':b['key_type'],'value':b['key_value']},'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_generic','result':ae};break;}default:{const af=['onchain_table','onchain_table_item_repository_data','onchain_table_item_permission_perm','onchain_table_item_reward_record','onchain_table_item_demand_presenter','onchain_table_item_treasury_history','onchain_table_item_machine_node','onchain_table_item_progress_history','onchain_table_item_address_mark','onchain_table_item_entity_registrar','onchain_table_item_entity_linker','onchain_table_item_entity_contact','onchain_table_item_entity_order','onchain_orders_of_user','onchain_orders_of_users','onchain_table_item_object_linker_core','onchain_table_item_object_linker_tx','onchain_table_item_generic','onchain_affiliations_of_object','address_profile','service_supply_chain'];throw new Error('Unknown\x20table\x20query_type\x20\x22'+b['query_type']+'\x22.\x20Valid\x20query_types\x20are:\x20'+af['map'](ag=>'\x22'+ag+'\x22')['join'](',\x20')+'.');}}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c,'semantic':buildDataSemantic(c,{'operation_type':'onchain_table_data','data':b})}};}export async function handleOnchainEvents(a){const b=strictParse(OnchainEventsInputSchema,a,'onchain_events\x20input'),c=await query_events({'type':b['type'],'cursor':b['cursor']?{'eventSeq':String(b['cursor']['eventSeq']),'txDigest':b['cursor']['txDigest']}:null,'limit':b['limit']??null,'order':b['order']??null,'no_cache':b['no_cache'],'network':b['network']});try{await annotateEventsMonetaryFields(c?.['data'],b['network']);}catch{}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c,'semantic':buildDataSemantic(c,{'operation_type':'onchain_events','data':b})}};}function mcpLayerInfoResponse(a){return{'content':[{'type':'text','text':JSON['stringify']({'result':a})}],'structuredContent':{'result':a}};}export async function handleWowokInfo(a){const b=strictParse(ProtocolInfoQuerySchema,a,'wowok_buildin_info\x20input'),c=b['info'];if(c==='upgrade_check')return mcpLayerInfoResponse({'info':'upgrade_check','result':await checkUpgrade()});if(c==='universal_template')return mcpLayerInfoResponse({'info':'universal_template','result':getUniversalTemplate()});if(c==='getting\x20started')return mcpLayerInfoResponse({'info':'getting\x20started','result':getGettingStarted()});if(c==='build_fingerprint'){const e=b['compare'];if(e!=null){const h=await readChainStamp();return setComparisonChainEpoch(h['fetched']?h['epoch']:null),mcpLayerInfoResponse({'info':'build_fingerprint','result':{'comparison':compareReportFingerprint(e)}});}const f=currentBuildFingerprint(),g=await readChainStamp();return setComparisonChainEpoch(g['fetched']?g['epoch']:null),mcpLayerInfoResponse({'info':'build_fingerprint','result':{'fingerprint':f,'chain_stamp':g}});}const d=await queryProtocolInfo(b);return{'content':[{'type':'text','text':JSON['stringify']({'result':d})}],'structuredContent':{'result':d}};}
|
|
1
|
+
import{strictParse,WatchQueryOperationsSchema,OnchainTableDataSchema,OnchainEventsInputSchema,ProtocolInfoQuerySchema}from'../../schema/index.js';import{checkUpgrade,readChainStamp}from'../upgrade-check.js';import{currentBuildFingerprint,compareReportFingerprint,setComparisonChainEpoch}from'../build-fingerprint.js';import{getUniversalTemplate}from'../../knowledge/universal-template.js';import{getGettingStarted}from'../../knowledge/getting-started.js';import{query_local_mark_list,query_account_list,query_local_info_list,query_local_token_list,query_account,GetLocalNamesByAddresses,query_personal,query_table,query_tableItem,queryTableItem_RepositoryData,queryTableItem_PermissionPerm,queryTableItem_RewardRecord,queryTableItem_DemandPresenter,queryTableItem_TreasuryHistory,queryTableItem_MachineNode,queryTableItem_ProgressHistory,queryTableItem_AddressMark,queryTableItem_EntityRegistrar,queryTableItem_EntityLinker,queryTableItem_EntityContact,queryTableItem_ObjectLinkerCore,queryTableItem_ObjectLinkerTx,queryTableItem_EntityOrder,queryOrdersByUser,query_affiliations,query_address_profile,query_address_profiles,objectTypeFromAddress,ObjectType,query_received,queryProtocolInfo,query_events,query_transaction,query_object_history,query_address_activity,query_checkpoint,generateNodeComments,query_object_last_updated,Config,LocalMark,GetAccountOrMark_Address,ENTRYPOINT}from'@wowok/wowok';import{listInFlightMarkers,recentReturnedDigests,recentLandedTombstones}from'../../composition/inflight.js';import{resolveSupplyChainGraph}from'../../knowledge/supply-chain.js';import{attachWinnerDerivation}from'./winner-derivation.js';import{attachEscrowDeficit}from'./escrow-deficit.js';import{aggregateOrdersViaIndex}from'../../knowledge/jsonrpc-enum.js';import{resolveNetwork}from'./network.js';import{SCENARIO_CHAINS,SCENARIO_BRIDGE_REGISTRY,SCENARIO_TOPOLOGY_VERSION}from'../../knowledge/scenario-topology.js';import{assembleContext}from'../../playbooks/service-build/context-assembly.js';import{buildMachineGraph,fetchMachineNodes}from'../../playbooks/service-build/machine-nodes.js';import{generateBusinessReport}from'../../playbooks/service-build/reverse-mapping.js';import{handleServicePanorama}from'../../playbooks/service-build/service-panorama.js';import{handleServiceQuote}from'../../playbooks/service-build/service-quote.js';import{handleMachinePanorama}from'../../playbooks/service-build/machine-panorama.js';import{handleObjectPanorama}from'../../playbooks/service-build/object-panorama.js';import{handleParticipationRadar}from'../../playbooks/service-build/participation-radar.js';import{handleRelationshipProfile}from'../../playbooks/service-build/relationship-profile.js';import{handleOnchainTopology}from'../../playbooks/service-build/topology-query.js';import{buildUserInjection}from'../../evaluation/injection.js';import{handleReviewPack}from'../../review/index.js';import{buildWorkspaceLists}from'../../knowledge/workspace-lists.js';import{buildAccountMarks}from'../../knowledge/account-marks.js';import{migrationPreflight}from'../../knowledge/migration-preflight.js';import{buildDataSemantic}from'../../schema/call/semantic.js';import{enrichWorkflowGuidance}from'../../knowledge/workflow-guidance.js';import{buildOrderFundFacts}from'../../knowledge/arb-fund-facts.js';import{batchQueryObjectsByIds,fetchServiceOrders,lastUnresolvedInputs,LINKER_RING_LIMIT}from'../../graph/onchain/sdk-batch.js';import{recoverObjectHeldReceipts}from'../../graph/onchain/object-held-receipts.js';import{formatChainValue,annotateObjectMonetaryFields,annotateTableItemMonetaryFields,annotateEventsMonetaryFields,annotateBalanceChanges,resolveParentObjectTokenType,convertTokenValue}from'../../knowledge/fund-layer.js';import{normalizeAccountOrMark}from'./messenger.js';import{resolveAddress}from'./name-resolution.js';function ownerAddrOf(a){if(typeof a==='string')return a;const b=a;if(b&&typeof b==='object'){if(typeof b['AddressOwner']==='string')return b['AddressOwner'];if(typeof b['ObjectOwner']==='string')return b['ObjectOwner'];const c=Object['values'](b)['find'](d=>typeof d==='string'&&d['length']>0x14);if(typeof c==='string')return c;}return null;}const serviceCoinTypeCache=new Map();async function coinTypesOfServices(a,b){const c=new Map();if(!a||a['length']===0x0)return c;const d=[];for(const e of a){const f=(b??'')+'|'+e['toLowerCase'](),h=serviceCoinTypeCache['get'](f);if(h!==undefined)c['set'](e,h);else d['push'](e);}if(d['length']===0x0)return c;try{const i=await batchQueryObjectsByIds(d,b);for(const j of i){if(!j?.['object'])continue;const k=j?.['type_raw']??j?.['type']??'',l=k['match'](/<(.+)>$/);if(!l)continue;serviceCoinTypeCache['set']((b??'')+'|'+String(j['object'])['toLowerCase'](),l[0x1]),c['set'](j['object'],l[0x1]);}}catch{}return c;}async function mergeServiceAnalysis(a,b){const c=a?.['object'],d=a?.['kind']==='Service'||c&&(c['type']==='Service'||(c['type_raw']??'')['includes']('::service::'));if(!d||!a)return;let e=null;try{const s=await query_object_last_updated({'object':a['address'],'network':b['network']});s?.['timestamp_ms']&&(e={'timestamp_ms':s['timestamp_ms'],'digest':s['digest'],'sender':s['sender']});}catch{}const f=a?.['reverse_core'],g=a?.['reverse_tx'],h=Array['isArray'](f?.['items'])?f['items']['length']:0x0,i=Array['isArray'](g?.['items'])?g['items']['length']:0x0,j=(i>0x0?g['items']:[])['filter'](t=>objectTypeFromAddress(t?.['who'])===ObjectType['Order']),k=j['length'],l=k>=LINKER_RING_LIMIT,m=Array['isArray'](a?.['reputation']?.['votes'])?a['reputation']['votes']:[],n=c?.['type_raw']??c?.['type']??'',o=n['match'](/<(.+)>$/),p=o?o[0x1]:null,q=p?(p['split']('::')['pop']()??p)['toUpperCase']():null,r=Array['isArray'](c?.['sales'])?c['sales']:[];a['service_analysis']={'description':c?.['description']??null,'sales_count':r['length'],'live_sales_count':r['filter'](t=>t&&!t['suspension'])['length'],'paused_sales_count':r['filter'](t=>t&&t['suspension'])['length'],'orders_count':k,'orders_count_truncated':l,'like_count':m['filter'](t=>t&&t['like'])['length'],'dislike_count':m['filter'](t=>t&&t['dislike'])['length'],'favor_count':m['filter'](t=>t&&t['favor'])['length'],'votes':m['map'](t=>({'who':t?.['who']??null,'like':!!t?.['like'],'dislike':!!t?.['dislike'],'favor':!!t?.['favor'],'time':t?.['time']??null})),'coin_type':p,'token_symbol':q,'location':c?.['location']??null,'bPublished':c?.['bPublished']??null,'bPaused':c?.['bPaused']??null,'related_core_count':h,'related_tx_count':i,'related_object_count':h+i,'onchain_last_updated':e};}export function buildProfileFollowUps(a){if(!a||typeof a!=='object')return[];const b=typeof a['address']==='string'?a['address']:undefined;if(!b)return[];const c=a['kind']==='user'||!a['is_system_singleton']&&!a['object'],d=[];if(c){const e=Array['isArray'](a['permission_membership']?.['items'])?a['permission_membership']['items']:[],f=Array['isArray'](a['order_membership']?.['items'])?a['order_membership']['items']:[];e['length']>0x0&&d['push']({'label':'Permission\x20organizations\x20('+e['length']+')','detail':'Expand\x20each\x20Permission\x20the\x20address\x20belongs\x20to\x20—\x20owner/admin/entity\x20standing\x20and\x20what\x20the\x20org\x20governs.','call':{'query_type':'onchain_objects','objects':e['map'](g=>g['who'])['filter'](Boolean)}}),f['length']>0x0&&d['push']({'label':'Order\x20footprint\x20('+f['length']+')','detail':'The\x20orders\x20this\x20address\x20participates\x20in\x20(buyer\x20vs\x20operator\x20roles).','call':{'query_type':'onchain_table_item_entity_order','address':b}}),d['push']({'label':'Public\x20personal\x20profile','detail':'Social/IM\x20links,\x20public\x20info\x20records,\x20voting\x20history,\x20referrer.','call':{'query_type':'onchain_personal_profile','address':b}}),d['push']({'label':'Reverse\x20map','detail':'Related\x20objects\x20and\x20the\x20deterministic\x20business\x20report\x20for\x20this\x20address.','call':{'query_type':'reverse_map','context_objects':[b]}});}else a['object']&&d['push']({'label':'Full\x20object\x20body','detail':'The\x20complete\x20on-chain\x20object\x20fields\x20(one\x20targeted\x20read).','call':{'query_type':'onchain_objects','objects':[b]}}),d['push']({'label':'Reverse\x20map','detail':'Related\x20objects\x20and\x20the\x20deterministic\x20business\x20report.','call':{'query_type':'reverse_map','context_objects':[b]}});return d['push']({'label':'Recent\x20on-chain\x20activity','detail':'Newest\x20transactions\x20touching\x20this\x20address.','call':{'query_type':'onchain_address_activity','address':b}}),d['slice'](0x0,0x3);}async function annotateAccountBalance(a,b){if(!a||typeof a!=='object')return;const e={},f=(k,l)=>{if(k===null||k===undefined)return undefined;if(typeof k!=='string'&&typeof k!=='number'&&typeof k!=='bigint')return undefined;if(typeof l!=='string'||!l)return undefined;return formatChainValue(k,l,b);},g=a['balance'];if(g&&typeof g==='object'){const k=g['coinType'],l=await f(g['totalBalance'],k);if(l)e['balance.totalBalance']=l;if(g['lockedBalance']!==undefined){const m=await f(g['lockedBalance'],k);if(m)e['balance.lockedBalance']=m;}}const h=a['object'];if(h&&typeof h==='object'&&(typeof h['balance']==='string'||typeof h['balance']==='number')&&String(h['balance'])!==''){const n=typeof h['type']==='string'?h['type']:undefined,o=n?.['match'](/<([^>]+)>/)?.[0x1]??n,p=await f(h['balance'],o);if(p)e['object.balance']=p;a['_balance_shape']='object_address:\x20the\x20queried\x20name/address\x20resolved\x20to\x20an\x20ON-CHAIN\x20OBJECT\x20—\x20its\x20funds\x20surface\x20as\x20'+'`object.balance`\x20(the\x20object\x27s\x20own\x20coin\x20balance),\x20NOT\x20as\x20`balance.totalBalance`\x20(the\x20account-aggregate\x20'+'shape).\x20Same\x20units,\x20different\x20key:\x20read\x20BOTH\x20keys,\x20or\x20branch\x20on\x20this\x20note,\x20when\x20polling\x20balances\x20'+'(ks7\x20F-14:\x20a\x20funded\x20escrow\x20was\x20reported\x20as\x200\x20because\x20only\x20the\x20aggregate\x20key\x20was\x20read).';}const j=a['coin']?.['data'];if(Array['isArray'](j))for(let q=0x0;q<j['length'];q++){const r=j[q],s=await f(r?.['balance'],r?.['coinType']);if(s)e['coin.data['+q+'].balance']=s;}if(Object['keys'](e)['length']>0x0){if(b)for(const t of Object['keys'](e)){const u=e[t];e[t]={...u,'text':u['text']+'\x20—\x20network:\x20'+b};}a['_money_display']=e;}}export function balanceScopeNote(a){return a?'The\x20balance\x20figure\x20reflects\x20the\x20aggregated\x20total\x20only;\x20the\x20coin\x20list\x20below\x20is\x20just\x20the\x20FIRST\x20PAGE\x20(top\x205)\x20'+'of\x20independently\x20owned\x20Coin\x20objects\x20—\x20a\x20refund\x20can\x20land\x20as\x20its\x20own\x20Coin\x20object\x20beyond\x20this\x20page.\x20'+'Verify\x20fund\x20arrival\x20via\x20the\x20transaction\x20digest\x20(onchain_transaction)\x20or\x20the\x20full\x20coin-object\x20listing\x20'+'(coin={cursor,limit})\x20before\x20drawing\x20conclusions.':'The\x20balance\x20figure\x20reflects\x20the\x20aggregated\x20total\x20only;\x20independently\x20owned\x20Coin\x20objects\x20are\x20not\x20'+'enumerated\x20here\x20—\x20verify\x20fund\x20arrival\x20via\x20the\x20transaction\x20digest\x20or\x20a\x20coin-objects\x20query\x20before\x20'+'drawing\x20conclusions.';}export function balanceFreshnessFace(a){return{'source':'live','cached':![],'network':a,'fetched_at':new Date()['toISOString'](),'note':'Live\x20read\x20—\x20no\x20MCP/SDK\x20session\x20cache;\x20every\x20account_balance\x20call\x20is\x20an\x20independent\x20query\x20against\x20the\x20'+'network\x27s\x20indexer.\x20Figures\x20CAN\x20differ\x20between\x20calls\x20taken\x20moments\x20apart\x20(live\x20F-RQ-12:\x20the\x20same\x20wallet\x20'+'returned\x209.93\x20/\x2021.88\x20/\x2056.28\x20WOW\x20on\x20three\x20consecutive\x20reads)\x20because\x20the\x20aggregate\x20is\x20assembled\x20from\x20'+'independently\x20owned\x20Coin\x20objects\x20and\x20each\x20query\x20may\x20catch\x20a\x20different\x20settle/merge\x20state.\x20To\x20resolve\x20a\x20'+'discrepancy:\x20re-read\x20and\x20compare\x20fetched_at,\x20enumerate\x20the\x20per-object\x20breakdown\x20(coin={cursor,limit}),\x20'+'and\x20prove\x20fund\x20arrival\x20via\x20the\x20transaction\x20digest\x20(onchain_transaction)\x20—\x20never\x20off\x20a\x20single\x20balance\x20read.'};}import{QUERY_NETWORK_FIELD as a580a}from'../../schema/operations.js';export{QUERY_NETWORK_FIELD as NETWORK_FIELD_BY_QUERY}from'../../schema/operations.js';function requestedNetworkForQuery(a,b){const c=a580a[b];if(!c)return undefined;const d=a[c];return typeof d==='string'&&d['length']>0x0?d:undefined;}const LOCAL_FAMILY_QUERIES=new Set(['local_mark_list','account_list','local_info_list','token_list','local_names']);function normalizeNetworkFieldAlias(a){const b=a['query_type'];if(typeof b!=='string')return;if(LOCAL_FAMILY_QUERIES['has'](b)){delete a['network'],delete a['context_network'];return;}const c=a580a[b];if(!c)return;const d=c==='network'?'context_network':'network';a[c]===undefined&&a[d]!==undefined&&(a[c]=a[d],delete a[d]);}export async function handleWatchQueryOperations(a){let c=a;if(a!==null&&typeof a==='object'&&!Array['isArray'](a)){const m={...a};normalizeNetworkFieldAlias(m),c=m;}const d=strictParse(WatchQueryOperationsSchema,c,'watch_and_query\x20input');let f,g,h;switch(d['query_type']){case'local_mark_list':{const n=await query_local_mark_list(d['filter']||{});f={'query_type':'local_mark_list','result':n};break;}case'account_list':{const o=await query_account_list(d['filter']);f={'query_type':'account_list','result':o};break;}case'local_info_list':{const p=await query_local_info_list(d['filter'],d['account']);f={'query_type':'local_info_list','result':p};break;}case'token_list':{const q=await query_local_token_list(d['filter']||{});f={'query_type':'token_list','result':q};break;}case'account_balance':{const r=await query_account({'name_or_address':d['name_or_address'],'token_type':d['token_type'],'balance':d['balance'],'coin':d['coin'],'network':d['network']}),s=d['network']??await Config['Instance']()['network_get']();await annotateAccountBalance(r,s);let t=![];if(r['balance']&&!d['coin']&&!r['object']&&!r['hint'])try{const u=await query_account({'name_or_address':d['name_or_address'],'coin':{'cursor':null,'limit':0x5},'token_type':d['token_type'],'network':d['network']});u['coin']&&(r['coin']=u['coin'],t=!![]);}catch{}r['_balance_scope_note']=balanceScopeNote(t),r['_balance_read_freshness']=balanceFreshnessFace(s),f={'query_type':'account_balance','result':r};break;}case'local_names':{const v=await GetLocalNamesByAddresses(d['addresses']);f={'query_type':'local_names','result':v};break;}case'onchain_personal_profile':{const w=await query_personal({'account':d['account'],'no_cache':d['no_cache'],'network':d['network']});f={'query_type':'onchain_personal_profile','result':w};break;}case'onchain_objects':{const x=d['no_cache']??!![],y=await batchQueryObjectsByIds(d['objects'],d['network'],x),z=lastUnresolvedInputs(),A={'objects':y,'_read_freshness':{'source':x?'live':'session_cache','no_cache':x,'fetched_at':new Date()['toISOString'](),'note':x?'Forced-fresh\x20read.\x20This\x20is\x20the\x20DEFAULT\x20because\x20a\x20stale\x20value\x20here\x20can\x20invert\x20a\x20fund-movement\x20conclusion.':'Session\x20cache\x20was\x20used\x20(no_cache:false).\x20Pass\x20no_cache:true\x20before\x20concluding\x20that\x20money\x20did\x20or\x20did\x20not\x20move.'},...y['length']===0x0&&z['length']>0x0?{'_empty_reason':{'kind':'unresolved_inputs','unresolved':z,'note':'These\x20inputs\x20resolved\x20to\x20neither\x20a\x20registered\x20LocalMark\x20nor\x20a\x20valid\x20address\x20on\x20network\x20\x27'+(d['network']??'current\x20(session\x20default)')+'\x27.\x20LocalMark\x20names\x20are\x20NETWORK-SCOPED\x20—\x20an\x20object\x20created\x20on\x20testnet\x20is\x20invisible\x20on\x20localnet/mainnet.\x20Either\x20register\x20the\x20mark\x20here\x20(local_mark_operation)\x20or\x20pass\x20the\x20full\x200x\x20address.\x20If\x20your\x20session\x20targets\x20a\x20DIFFERENT\x20network,\x20this\x20is\x20NOT\x20evidence\x20that\x20the\x20objects\x20are\x20absent\x20there\x20—\x20re-query\x20on\x20the\x20intended\x20network\x20before\x20concluding\x20absence.'}}:{},...y['length']<d['objects']['length']?{'_unreturned':{'requested':d['objects']['length'],'returned':y['length'],'missing':d['objects']['map'](B=>typeof B==='string'?B:B?.['name_or_address']??B?.['object']??B?.['address'])['filter'](B=>typeof B==='string'&&B!=='')['filter'](B=>!y['some'](C=>typeof C?.['object']==='string'&&C['object']['toLowerCase']()===B['toLowerCase']())),'note':'These\x20requested\x20ids\x20were\x20NOT\x20returned\x20—\x20they\x20MAY\x20be\x20absent\x20on\x20the\x20queried\x20network,\x20or\x20filtered\x20by\x20the\x20reader\x27s\x20type\x20support,\x20or\x20unparseable\x20(network\x20defaults\x20to\x20the\x20session\x20network\x20when\x20not\x20passed\x20explicitly\x20—\x20a\x20cross-network\x20read\x20is\x20a\x20false\x20negative,\x20not\x20absence).\x20This\x20is\x20NOT\x20proof\x20of\x20nonexistence:\x20verify\x20via\x20an\x20alternative\x20read\x20(object_panorama\x20/\x20a\x20direct\x20address\x20query\x20on\x20the\x20intended\x20network)\x20before\x20concluding\x20an\x20object\x20is\x20gone.'}}:{}};if(A&&A['objects']&&Array['isArray'](A['objects'])){A['objects']=A['objects']['map'](B=>{if(B&&B['data']&&B['data']['type']==='Guard'&&B['data']['root'])try{const C=generateNodeComments(B['data']['root']);return{...B,'_guard_node_comments':C};}catch(D){return B;}return B;}),A['objects']=A['objects']['map'](B=>{if(B&&B['data']&&B['data']['type']==='Progress'&&B['data']['current']===''){const C=B['data']['machine'],D=B['data']['task'];return{...B,'_diagnostic':{'issue':'Progress.current\x20is\x20empty\x20—\x20order\x20workflow\x20is\x20stuck\x20at\x20the\x20initial\x20state','cause':'The\x20Machine\x27s\x20entry\x20node\x20(prev_node=\x27\x27)\x20likely\x20has\x20no\x20forwards\x20defined.\x20'+'When\x20Progress\x20starts,\x20it\x20looks\x20up\x20the\x20entry\x20node\x27s\x20forwards\x20to\x20determine\x20'+'the\x20next\x20node.\x20Without\x20forwards,\x20Progress\x20cannot\x20advance\x20and\x20the\x20order\x20'+'is\x20permanently\x20stuck.','machine_object_id':C??null,'bound_order_id':D??null,'fix':['1.\x20Query\x20the\x20Machine\x20object\x20(use\x20query_toolkit\x20with\x20query_type=\x27onchain_objects\x27\x20and\x20objects=['+JSON['stringify'](C)+']).','2.\x20Inspect\x20node.pairs\x20for\x20the\x20entry\x20node\x20(prev_node=\x27\x27).','3.\x20If\x20forwards\x20is\x20empty:\x20this\x20is\x20the\x20root\x20cause.\x20The\x20Machine\x20must\x20be\x20republished\x20with\x20at\x20least\x20one\x20forward\x20on\x20the\x20entry\x20node.','4.\x20To\x20republish:\x20clone\x20the\x20Machine\x20nodes,\x20add\x20a\x20forward\x20to\x20the\x20entry\x20node\x27s\x20pairs,\x20then\x20create\x20a\x20new\x20Machine\x20(Machine\x20nodes\x20are\x20immutable\x20after\x20publish\x20—\x20see\x20P0-2\x20schema\x20validation\x20that\x20now\x20blocks\x20this).','5.\x20Rebind\x20the\x20new\x20Machine\x20to\x20the\x20Service\x20(service.machine\x20field)\x20and\x20create\x20a\x20new\x20Order\x20to\x20test.'],'reference':'P0-2\x20schema\x20refinement\x20in\x20MachineNodePairSchema\x20ensures\x20new\x20Machines\x20cannot\x20be\x20published\x20with\x20empty\x20entry-node\x20forwards.\x20This\x20diagnostic\x20catches\x20legacy\x20Machines\x20that\x20predate\x20the\x20fix.'}};}return B;});for(const B of A['objects']){const C=B?.['data']??B;if((B?.['type']??C?.['type'])!=='Progress')continue;const D=B?.['object']??C?.['object'];if(!D)continue;try{const E=await enrichWorkflowGuidance({'progressRef':D,'network':d['network'],'noCache':d['no_cache']});if(E?.['guidance']){B['_workflow_guidance']=E['guidance'];if(E['text'])B['_workflow_guidance_text']=E['text'];}}catch{}try{const F=d['winner_node'],G=await attachWinnerDerivation(D,C,d['network'],typeof F==='string'?F:undefined);B['_winner_derivation']=G['winner_derivation'],G['winner_derivation_note']!==undefined&&(B['_winner_derivation_note']=G['winner_derivation_note']);}catch{}}for(const H of A['objects']){const I=H?.['data']??H;if((H?.['type']??I?.['type'])!=='Arb')continue;const J=H?.['object']??I?.['object'];if(!J)continue;try{const K=await buildOrderFundFacts({'arbRef':J,'network':d['network'],'noCache':x});K&&(H['_order_fund_facts']=K['structured'],H['_order_fund_facts_text']=K['text'],K['arb_key_diagnostic']&&(H['_arb_key_diagnostic']=K['arb_key_diagnostic']));}catch{}}for(const L of A['objects']){const M=L?.['data']??L;if((L?.['type']??M?.['type'])!=='Order')continue;try{const N=await attachEscrowDeficit(M,d['network'],x);if(N)L['_escrow_deficit']=N;}catch{}}for(const O of A['objects']){try{await annotateObjectMonetaryFields(O,d['network']);}catch{}}}f={'query_type':'onchain_objects','result':A};break;}case'onchain_received':{const P=d['name_or_address'],Q=typeof P==='string'?P:P?.['name_or_address'],R=await query_received({'name_or_address':normalizeAccountOrMark(d['name_or_address']),'type':d['type'],'cursor':d['cursor'],'limit':d['limit'],'no_cache':d['no_cache'],'network':d['network']}),S=R;if(d['type']==='CoinWrapper'&&S&&!Array['isArray'](S)&&Array['isArray'](S['received'])&&S['received']['length']===0x0&&typeof Q==='string'&&Q!==''&&!Q['toLowerCase']()['startsWith']('0x00')){const T=await recoverObjectHeldReceipts(Q,{'network':d['network'],'no_cache':d['no_cache']});T&&T['receipts']['length']>0x0&&(S['received']=T['receipts']['map'](U=>({'id':U['id'],'balance':U['amount'],'payment':U['payment'],'type':U['type'],'version':U['version'],'digest':U['digest']})),S['token_type']=T['token_type'],S['balance']=T['receipts']['reduce']((U,V)=>U+BigInt(V['amount']||'0'),0x0n),h='allocation-transaction-effects');}if(S&&typeof S==='object'&&typeof S['balance']==='bigint'){const U=S['token_type'];S['balance']=S['balance']['toString']();if(Array['isArray'](S['received']))for(const V of S['received']){V&&typeof V['balance']==='bigint'&&(V['balance']=V['balance']['toString']());}if(U)try{const W={'balance':await formatChainValue(S['balance'],U,d['network'])};if(Array['isArray'](S['received']))for(let X=0x0;X<S['received']['length'];X++){const Y=S['received'][X]?.['balance'];Y!==undefined&&Y!==null&&(W['received['+X+'].balance']=await formatChainValue(Y,U,d['network']));}S['_money_display']=W;}catch{}}f={'query_type':'onchain_received','result':S};break;}case'onchain_transaction':{const Z=a4=>query_transaction({'digest':d['digest'],'no_cache':d['no_cache'],'network':a4}),a0=a4=>/could not find the referenced transaction|not found/i['test'](a4 instanceof Error?a4['message']:String(a4));let a1;if(d['network'])a1=await Z(d['network']);else{const a4=await Config['Instance']()['network_get']();try{a1=await Z(undefined);}catch(a5){if(!a0(a5))throw a5;}if(!a1){const a6=[];for(const a7 of Object['values'](ENTRYPOINT)){if(a7===a4)continue;a6['push'](a7);try{const a8=await Z(a7);if(a8){a1=a8,g=a7;break;}}catch{}}if(!a1)throw new Error('Transaction\x20digest\x20not\x20found\x20on\x20the\x20session\x20default\x20network\x20('+a4+')\x20'+('or\x20any\x20other\x20probed\x20network\x20('+[a4,...a6]['join'](',\x20')+').\x20')+'This\x20is\x20an\x20all-network\x20miss\x20—\x20record\x20it\x20as\x20\x22did\x20not\x20commit\x22\x20(never\x20as\x20\x22unverified\x22).\x20'+'If\x20you\x20know\x20the\x20digest\x27s\x20network,\x20pass\x20network\x20explicitly.');}}const a2=d['network']??g;try{await annotateBalanceChanges(a1?.['balance_changes'],a2);}catch{}g&&(a1['_network_probe']='NOT\x20found\x20on\x20the\x20session\x20default\x20network;\x20FOUND\x20on\x20\x27'+g+'\x27\x20—\x20every\x20field\x20'+('below\x20(status,\x20gas,\x20balance\x20changes)\x20was\x20READ\x20FROM\x20'+g+'.\x20Never\x20cite\x20this\x20')+'result\x20as\x20session-default-network\x20data.');const a3=fundExitAuditNote(a1);a3&&(a1['_fund_exit_audit']=a3);f={'query_type':'onchain_transaction','result':a1};break;}case'onchain_block':{const a9=await query_checkpoint({'block':d['block'],'network':d['network']});f={'query_type':'onchain_block','result':a9};break;}case'onchain_object_history':{const aa=await query_object_history({'object':d['object'],'cursor':d['cursor'],'limit':d['limit'],'order':d['order'],'no_cache':d['no_cache'],'network':d['network']});f={'query_type':'onchain_object_history','result':aa};break;}case'onchain_last_updated':{const ab=d['objects']??[],ac=await Promise['allSettled'](ab['map'](ae=>query_object_last_updated({'object':ae,'network':d['network']}))),ad=ab['map']((ae,af)=>{const ag=ac[af],ah=ag['status']==='fulfilled'?ag['value']:null;return{'object':ae,'timestamp_ms':ah?.['timestamp_ms']?String(ah['timestamp_ms']):null,'digest':ah?.['digest']??null,'sender':ah?.['sender']??null};});f={'query_type':'onchain_last_updated','result':{'items':ad}};break;}case'onchain_address_activity':{const ae=typeof d['name_or_address']==='string'?d['name_or_address']:d['name_or_address']['name_or_address'],af=await query_address_activity({'name_or_address':ae,'direction':d['direction'],'cursor':d['cursor'],'limit':d['limit'],'order':d['order'],'no_cache':d['no_cache'],'network':d['network']});f={'query_type':'onchain_address_activity','result':af};break;}case'recover_created_objects':{const ag=d['label'],ah=typeof ag==='string'?ag:ag['name_or_address']??'',ai=ah['trim']();let aj;if(/^0x[0-9a-fA-F]{1,64}$/['test'](ai))aj=ai['toLowerCase']();else try{aj=await GetAccountOrMark_Address(ai)??undefined;}catch{aj=undefined;}const ak=d['op'],al=aj?.['toLowerCase'](),am=listInFlightMarkers()['filter'](aq=>ak?aq['op']===ak:!![])['filter'](aq=>al?!aq['buyer']||aq['buyer']['toLowerCase']()===al:!![]),an=d['limit']??0x14;let ao=null,ap;try{ao=await query_address_activity({'name_or_address':ah,'direction':'sent','limit':an,'no_cache':d['no_cache'],'network':d['network']});}catch(aq){ap=aq instanceof Error?aq['message']:String(aq);}f={'query_type':'recover_created_objects','result':{'label':ah,...aj?{'resolved_address':aj}:{},'inflight_markers':am,'returned_digests':recentReturnedDigests(an),'landed_tombstones':recentLandedTombstones(),...ao!==null?{'onchain_activity':ao}:{},...ap?{'onchain_activity_error':ap}:{},'recovery_guidance':'Decision\x20rule,\x20in\x20order:\x20(1)\x20a\x20marker\x20whose\x20digests\x20include\x20a\x20digest\x20that\x20resolves\x20to\x20an\x20'+'EXECUTED\x20transaction\x20(query_toolkit\x20onchain_transaction)\x20—\x20the\x20operation\x20landed:\x20ADOPT\x20its\x20'+'created\x20objects\x20and\x20stop;\x20(2)\x20onchain_activity\x20shows\x20the\x20operation\x27s\x20effects\x20inside\x20the\x20'+'failure\x20window\x20—\x20adopt,\x20stop;\x20(3)\x20markers\x20are\x20open\x20but\x20nothing\x20on-chain\x20—\x20the\x20commit\x20state\x20'+'stayed\x20open:\x20a\x20CORRECTED\x20resubmit\x20is\x20allowed\x20(an\x20identical\x20payload\x20within\x20the\x20intercept\x20'+'window\x20is\x20still\x20held\x20by\x20the\x20verify-first\x20gate);\x20(4)\x20no\x20markers\x20and\x20no\x20activity\x20—\x20nothing\x20'+'landed\x20from\x20THIS\x20process;\x20other\x20sessions/devices\x20may\x20hold\x20state,\x20the\x20chain\x20remains\x20the\x20only\x20truth.'}};break;}case'token_value_convert':{const ar=d['raw']!==undefined,as=d['unit']!==undefined;if(ar===as)throw new Error('token_value_convert:\x20provide\x20EXACTLY\x20ONE\x20of\x20\x27raw\x27\x20(u64\x20smallest\x20units\x20→\x20unit\x20value)\x20'+('or\x20\x27unit\x27\x20(unit\x20value\x20→\x20u64\x20raw).\x20Received\x20raw='+JSON['stringify'](d['raw'])+',\x20')+('unit='+JSON['stringify'](d['unit'])+'.'));const at=await convertTokenValue(d['token_type'],ar?{'raw':d['raw']}:{'unit':d['unit']},d['network']);f={'query_type':'token_value_convert','result':at};break;}case'address_profile':{const au=await query_address_profile({'address':d['address'],'no_cache':d['no_cache'],'network':d['network']});await mergeServiceAnalysis(au,{'no_cache':d['no_cache'],'network':d['network']});au&&typeof au==='object'&&(au['follow_ups']=buildProfileFollowUps(au));f={'query_type':'address_profile','result':au};break;}case'address_profiles':{const av=await query_address_profiles({'addresses':d['addresses'],'no_cache':d['no_cache'],'network':d['network']});await Promise['all'](av['map'](aw=>mergeServiceAnalysis(aw,{'no_cache':d['no_cache'],'network':d['network']})));for(const aw of av??[]){aw&&typeof aw==='object'&&(aw['follow_ups']=buildProfileFollowUps(aw));}f={'query_type':'address_profiles','result':av};break;}case'service_supply_chain':{const ax=await resolveSupplyChainGraph(typeof d['address']==='string'?d['address']:d['address']?.['name_or_address']??String(d['address']),d['network']);f={'query_type':'service_supply_chain','result':ax};break;}case'assemble_context':{f={'query_type':'assemble_context','result':await assembleContext(d)};break;}case'reverse_map':{if(!d['context_objects']||d['context_objects']['length']===0x0)throw new Error('reverse_map\x20requires\x20\x27context_objects\x27\x20—\x20an\x20array\x20of\x20object\x20IDs\x20or\x20LocalMark\x20names\x20(include\x20the\x20Service;\x20add\x20Machine/Allocation\x20for\x20refund-path\x20detection).');const ay=d['context_network']??await Config['Instance']()['network_get'](),az=await batchQueryObjectsByIds(d['context_objects'],ay,!![]);let aA,aB,aC=null;{const aE=az['find'](aG=>{const aH=aG?.['machine']??aG?.['data']?.['machine'];return typeof aH==='string'&&/^0x[0-9a-fA-F]/['test'](aH);});if(aE)try{aC=String(aE['object']??aE['id']??'');const aG=await LocalMark['Instance']()['list']({'address':aC});if(aG[0x0]?.['name'])aE['name']=aG[0x0]['name'];}catch{}const aF=aE?String(aE['machine']??aE['data']?.['machine']):null;if(aF)try{const aH=az['some'](aJ=>String(aJ?.['object']??aJ?.['id']??'')['toLowerCase']()===aF['toLowerCase']());!aH&&az['push'](...await batchQueryObjectsByIds([aF],ay,!![]));const aI=await fetchMachineNodes(aF,ay);aA=aI['map'](aJ=>({'name':String(aJ?.['name']??'')}))['filter'](aJ=>aJ['name']['length']>0x0),aB=buildMachineGraph(aI)['edges']['map'](aJ=>({'from':aJ['from'],'to':aJ['to']}));}catch{}}let aD;if(aC)try{const aJ=await fetchServiceOrders(aC,ay),aK=(aJ?.['items']??[])['slice'](0x0,0xa)['map'](aL=>typeof aL?.['who']==='string'?aL['who']:'')['filter'](aL=>aL!=='');if(aK['length']>0x0){const aL=await batchQueryObjectsByIds(aK,ay,!![]);aD=aL['filter'](aM=>aM?.['type']===ObjectType['Order'])['map'](aM=>({'id':aM['object'],'created_at_ms':Number(aM?.['time'])||undefined,'claimed_by':aM?.['claimed_by']??null}));}}catch{}f={'query_type':'reverse_map','result':{'action':'reverse_map','objects_queried':az['length'],'report':generateBusinessReport({'objects':az,'machine_nodes':aA,'machine_edges':aB,'orders':aD,'now_ms':Date['now'](),'order_amount':d['reverse_order_amount']})}};break;}case'service_panorama':f={'query_type':'service_panorama','result':await handleServicePanorama(d)};break;case'service_quote':f={'query_type':'service_quote','result':await handleServiceQuote(d)};break;case'machine_panorama':f={'query_type':'machine_panorama','result':await handleMachinePanorama(d)};break;case'object_panorama':f={'query_type':'object_panorama','result':await handleObjectPanorama(d)};break;case'review_pack':f={'query_type':'review_pack','result':await handleReviewPack(d)};break;case'participation_radar':f={'query_type':'participation_radar','result':await handleParticipationRadar(d)};break;case'order_aggregate':{const aM=await resolveNetwork(d['context_network']),aN=await aggregateOrdersViaIndex(aM,{'group':d['group'],'groupId':d['group_id'],'metric':d['metric'],'excludeClaimed':d['exclude_claimed'],'limit':d['limit']});f={'query_type':'order_aggregate','result':{'action':'order_aggregate',...aN}};break;}case'relationship_profile':f={'query_type':'relationship_profile','result':await handleRelationshipProfile(d)};break;case'onchain_topology':f={'query_type':'onchain_topology','result':await handleOnchainTopology(d,undefined,await buildUserInjection(d['context_account']?.['toLowerCase']()))};break;case'workspace_lists':f={'query_type':'workspace_lists','result':await buildWorkspaceLists({'network':d['context_network'],'no_cache':d['no_cache'],'account':d['account'],'light':d['light']})};break;case'marks_of_account':f={'query_type':'marks_of_account','result':await buildAccountMarks({'network':d['context_network'],'no_cache':d['no_cache'],'account':d['account'],'light':d['light']})};break;case'migration_preflight':f={'query_type':'migration_preflight','result':await migrationPreflight({'account':d['account'],'source_network':d['source_network'],'target_network':d['target_network'],'no_cache':d['no_cache']})};break;case'scenario_topology':{const aO=d['chain_id'];f={'query_type':'scenario_topology','result':{'version':SCENARIO_TOPOLOGY_VERSION,'chains':aO?SCENARIO_CHAINS['filter'](aP=>aP['id']===aO):SCENARIO_CHAINS,'bridges':SCENARIO_BRIDGE_REGISTRY}};break;}default:throw new Error('Unknown\x20query\x20type.\x20Valid\x20query_types\x20are:\x20\x22local_mark_list\x22,\x20\x22account_list\x22,\x20\x22local_info_list\x22,\x20\x22token_list\x22,\x20\x22account_balance\x22,\x20\x22local_names\x22,\x20\x22onchain_personal_profile\x22,\x20\x22onchain_objects\x22,\x20\x22onchain_received\x22,\x20\x22onchain_transaction\x22,\x20\x22onchain_object_history\x22,\x20\x22onchain_last_updated\x22,\x20\x22onchain_address_activity\x22,\x20\x22recover_created_objects\x22,\x20\x22token_value_convert\x22,\x20\x22address_profile\x22,\x20\x22address_profiles\x22,\x20\x22service_supply_chain\x22,\x20\x22relationship_profile\x22,\x20\x22onchain_topology\x22,\x20\x22workspace_lists\x22,\x20\x22marks_of_account\x22,\x20\x22migration_preflight\x22.\x20For\x20table\x20queries,\x20use\x20the\x20\x22onchain_table_data\x22\x20tool.');}const j=requestedNetworkForQuery(d,f['query_type']);let k;if(a580a[f['query_type']]){const aP=j??g??await Config['Instance']()['network_get']();k={'network':aP,'network_source':j?'explicit':g?'probed':'default'};}const l=[];return k?.['network_source']==='default'&&l['push']('network_source=default:'+k['network']+'\x20—\x20result\x20may\x20be\x20a\x20false\x20negative\x20if\x20your\x20session\x20targets\x20another\x20network.\x20'+'Confirm\x20the\x20session\x20network\x20(or\x20pass\x20network\x20explicitly)\x20BEFORE\x20treating\x20any\x20absent/not-found\x20answer\x20here\x20as\x20final.'),{'content':[{'type':'text','text':JSON['stringify']({...k,...h?{'read_path':h}:{},'result':f})}],'structuredContent':{'result':f,...queryPayloadAliases(f),...k??{},...h?{'read_path':h}:{},...l['length']>0x0?{'warnings':l}:{},'semantic':buildDataSemantic(f,{'operation_type':'query_toolkit','data':d})}};}export function queryPayloadAliases(a){const b=a?.['result'];if(!b||typeof b!=='object')return{};const c={};if(Array['isArray'](b['objects']))c['objects']=b['objects'];if(Array['isArray'](b['received']))c['received']=b['received'];if(b['balance']&&typeof b['balance']==='object')c['balance']=b['balance'];if(Object['keys'](c)['length']===0x0)return{};const d=Object['keys'](c)['filter'](e=>!e['startsWith']('_'));return c['_read_hint']='The\x20\x27result\x27\x20key\x20appears\x20twice\x20by\x20design:\x20structuredContent.result\x20is\x20the\x20per-query_type\x20envelope,\x20'+'so\x20the\x20authoritative\x20path\x20for\x20each\x20field\x20is\x20'+(d['map'](e=>'structuredContent.result.result.'+e)['join']('\x20and\x20')+'.\x20')+('The\x20top-level\x20'+d['join'](',\x20')+'\x20above\x20are\x20additive\x20copies\x20of\x20the\x20same\x20data.'),c;}export function fundExitAuditNote(a){const b=Array['isArray'](a?.['object_changes'])?a['object_changes']:[],c=b['filter'](f=>f?.['type']==='deleted'||f?.['type']==='wrapped'||f?.['type']==='unwrapped');if(c['length']===0x0)return undefined;const d=c['filter'](f=>f?.['synthesized']===!![]),e=['FUND-EXIT\x20AUDIT:\x20this\x20transaction\x20consumed\x20'+c['length']+'\x20object(s)\x20'+('('+c['map'](f=>f['type']+'\x20'+f['id'])['join'](',\x20')+').\x20A\x20consumed\x20object\x20is\x20a\x20money/object\x20')+'exit\x20door\x20—\x20trace\x20where\x20its\x20contents\x20went\x20via\x20balance_changes\x20(per-owner\x20deltas)\x20before\x20concluding.'];return d['length']>0x0&&e['push'](d['length']+'\x20removal(s)\x20reconstructed\x20from\x20the\x20tx\x20effects\x20(synthesized=true,\x20no\x20'+'object_type):\x20the\x20node\x27s\x20objectChanges\x20omitted\x20the\x20consumed\x20object\x27s\x20live\x20state.\x20Resolve\x20its\x20'+'type\x20via\x20onchain_object_history\x20on\x20the\x20id\x20if\x20needed.'),e['push']('Fallback\x20when\x20an\x20exit\x20still\x20lacks\x20object-level\x20evidence:\x20diff\x20two\x20query_toolkit\x20onchain_received\x20'+'snapshots\x20taken\x20before\x20and\x20after\x20this\x20digest\x20(full-set\x20difference)\x20—\x20object-level\x20records\x20are\x20'+'eventually\x20the\x20ground\x20truth\x20even\x20when\x20events\x20are\x20empty.'),e['join']('\x20');}export async function handleOnchainTableData(a){const b=strictParse(OnchainTableDataSchema,a,'onchain_table_data\x20input');let c;switch(b['query_type']){case'onchain_table':{const d=await query_table({'parent':b['parent'],'cursor':b['cursor'],'limit':b['limit'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table','result':d};break;}case'onchain_table_item_repository_data':{const f=await queryTableItem_RepositoryData({'parent':b['parent'],'name':b['name'],'entity':b['entity'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_repository_data','result':f};break;}case'onchain_table_item_permission_perm':{const g=await queryTableItem_PermissionPerm({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_permission_perm','result':g};break;}case'onchain_table_item_reward_record':{const h=await queryTableItem_RewardRecord({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});if(h)try{const j=await resolveParentObjectTokenType(b['parent'],b['network']);await annotateTableItemMonetaryFields(h,j,b['network']);}catch{}c={'query_type':'onchain_table_item_reward_record','result':h};break;}case'onchain_table_item_demand_presenter':{const k=await queryTableItem_DemandPresenter({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_demand_presenter','result':k};break;}case'onchain_table_item_treasury_history':{const l=await queryTableItem_TreasuryHistory({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});if(l)try{const m=await resolveParentObjectTokenType(b['parent'],b['network']);await annotateTableItemMonetaryFields(l,m,b['network']);}catch{}c={'query_type':'onchain_table_item_treasury_history','result':l};break;}case'onchain_table_item_machine_node':{const n=await queryTableItem_MachineNode({'parent':b['parent'],'key':b['key'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_machine_node','result':n};break;}case'onchain_table_item_progress_history':{const p=await queryTableItem_ProgressHistory({'parent':b['parent'],'u64':b['u64'],'no_cache':![],'network':b['network']});c={'query_type':'onchain_table_item_progress_history','result':p};break;}case'onchain_table_item_address_mark':{const q=await queryTableItem_AddressMark({'parent':b['parent'],'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_address_mark','result':q};break;}case'onchain_table_item_entity_registrar':{const s=await queryTableItem_EntityRegistrar({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_registrar','result':s};break;}case'onchain_table_item_entity_linker':{const t=await queryTableItem_EntityLinker({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_linker','result':t};break;}case'onchain_table_item_entity_contact':{const u=await queryTableItem_EntityContact({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_contact','result':u};break;}case'onchain_table_item_entity_order':{const v=await queryTableItem_EntityOrder({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_entity_order','result':v};break;}case'onchain_orders_of_user':{const w=typeof b['address']==='string'?b['address']:b['address']?.['name_or_address']??String(b['address']),x=await resolveAddress(w,'address');let y;try{y=await queryOrdersByUser({'address':x,'no_cache':b['no_cache'],'network':b['network']});}catch(z){const A=z instanceof Error?z['message']:String(z);if(/dynamicFieldNotFound/i['test'](A))y=[];else throw z;}c={'query_type':'onchain_orders_of_user','result':y};break;}case'onchain_orders_of_users':{const B=b['addresses']??[],C=[],D=await Promise['allSettled'](B['map'](async O=>{const P=String(O?.['name_or_address']??''),Q=await resolveAddress(P,'address');try{const R=await queryOrdersByUser({'address':Q,'no_cache':b['no_cache'],'network':b['network']});return{'account':P,'views':Array['isArray'](R)?R:[]};}catch(S){const T=S instanceof Error?S['message']:String(S);if(/dynamicFieldNotFound/i['test'](T))return{'account':P,'views':[]};throw S;}})),E=[];for(let O=0x0;O<B['length'];O++){const P=D[O];if(P['status']==='fulfilled')E['push'](P['value']);else{const Q=P['reason']instanceof Error?P['reason']['message']:String(P['reason']);C['push'](String(B[O]?.['name_or_address']??'?')+':\x20'+Q);}}const F=Array['from'](new Set(E['flatMap'](R=>R['views']['map'](S=>typeof S?.['order']?.['object']==='string'?S['order']['object']:typeof S?.['order']==='string'?S['order']:'')['filter'](Boolean)))),G=new Map();try{if(F['length']>0x0){const R=await batchQueryObjectsByIds(F,b['network']);for(const S of R){if(S&&S['type']===ObjectType['Order'])G['set'](S['object'],S);}}}catch{C['push']('order\x20details\x20unavailable\x20(non-blocking)');}const H=new Map(),I=new Map(),J=new Map();try{const T=new Set();for(const U of G['values']()){if(U?.['progress'])T['add'](U['progress']);if(U?.['allocation'])T['add'](U['allocation']);}if(T['size']>0x0){const V=await batchQueryObjectsByIds(Array['from'](T),b['network']);for(const W of V){if(!W?.['object'])continue;if(W['type']===ObjectType['Progress']){const X=W?.['current'];H['set'](W['object'],typeof X==='string'&&X!==''?X:null),I['set'](W['object'],Number(W?.['current_time'])||null);}else{if(W['type']===ObjectType['Allocation']){const Y=Number(W?.['balance']??0x0);J['set'](W['object'],Number['isFinite'](Y)&&Y===0x0?'allocated':'pending');}}}}}catch{C['push']('progress/allocation\x20details\x20unavailable\x20(non-blocking)');}const K=new Map();try{const Z=await Promise['allSettled'](F['map'](a0=>query_object_last_updated({'object':a0,'network':b['network'],'previous_transaction':G['get'](a0)?.['previousTransaction']??null})));for(let a0=0x0;a0<F['length'];a0++){const a1=Z[a0];K['set'](F[a0],a1['status']==='fulfilled'&&a1['value']?.['timestamp_ms']?Number(a1['value']['timestamp_ms'])||null:null);}}catch{C['push']('order\x20updated\x20times\x20unavailable\x20(non-blocking)');}const L=await coinTypesOfServices(Array['from'](new Set(Array['from'](G['values']())['map'](a2=>typeof a2?.['service']==='string'?a2['service']:'')['filter'](Boolean))),b['network']),M=async(a2,a3)=>{if(a3===null||a3===undefined||a3==='')return{'display':'','tip':''};if(!a2)return{'display':a3,'tip':''};try{const a4=await formatChainValue(a3,a2,b['network']);if(a4['precision_known'])return{'display':a4['symbol']?a4['display']+'\x20'+a4['symbol']:a4['display'],'tip':a4['text']};return{'display':a3,'tip':''};}catch{return{'display':a3,'tip':''};}},N=[];for(const a2 of F){const a3=G['get'](a2),a4=E['filter'](a8=>a8['views']['some'](a9=>(typeof a9?.['order']?.['object']==='string'?a9['order']['object']:a9?.['order'])===a2))['map'](a8=>{const a9=a8['views']['find'](aa=>(typeof aa?.['order']?.['object']==='string'?aa['order']['object']:aa?.['order'])===a2);return{'account':a8['account'],'is_owner':!!a9?.['is_owner'],'is_agent':!!a9?.['is_agent'],'time':a9?.['time']};}),a5=L['get'](String(a3?.['service']??''))??null,a6=a3?.['amount']!==null&&a3?.['amount']!==undefined?String(a3['amount']):'',a7=await M(a5,a6);N['push']({'order':a2,'roles':a4,'time':a3?Number(a3['time'])||0x0:0x0,'updated_ms':K['get'](a2)??null,'amount':a6,'amount_display':a7['display'],'amount_tip':a7['tip'],'service':a3?.['service']??null,'machine':a3?.['machine']??null,'progress':a3?.['progress']??null,'allocation':a3?.['allocation']??null,'owner':ownerAddrOf(a3?.['builder']??a3?.['owner']),'claimed_by':a3?.['claimed_by']??null,'required_info':a3?.['required_info']??null,'progress_next':a3?.['progress']?H['get'](a3['progress'])??null:null,'progress_since':a3?.['progress']?I['get'](a3['progress'])??null:null,'allocation_state':a3?.['allocation']?J['get'](a3['allocation'])??'pending':'none','disputes':Array['isArray'](a3?.['dispute'])?a3['dispute']:[],'agents':Array['isArray'](a3?.['agent'])?a3['agent']:[],'items':await Promise['all']((Array['isArray'](a3?.['items'])?a3['items']:[])['map'](async a8=>{const a9=a8?.['price']!==null&&a8?.['price']!==undefined?String(a8['price']):'0';return{'name':String(a8?.['name']??''),'price':a9,'price_display':(await M(a5,a9))['display'],'quantity':String(a8?.['quantity']??'0'),'wip_hash':String(a8?.['wip_hash']??'')};}))});}c={'query_type':'onchain_orders_of_users','result':N,...C['length']>0x0?{'account_errors':C}:{}};break;}case'onchain_table_item_object_linker_core':{const a8=await queryTableItem_ObjectLinkerCore({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_object_linker_core','result':a8};break;}case'onchain_table_item_object_linker_tx':{const a9=await queryTableItem_ObjectLinkerTx({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_object_linker_tx','result':a9};break;}case'onchain_affiliations_of_object':{const aa=await query_affiliations({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']}),ab=aa?.['entries'];Array['isArray'](ab)&&(aa['entries']=ab['filter'](ac=>{const ad=typeof ac?.['who']==='string'?ac['who']:'';return!!ad&&!!objectTypeFromAddress(ad);}));c={'query_type':'onchain_affiliations_of_object','result':aa};break;}case'address_profile':{const ac=await query_address_profile({'address':b['address'],'no_cache':b['no_cache'],'network':b['network']});await mergeServiceAnalysis(ac,{'no_cache':b['no_cache'],'network':b['network']});ac&&typeof ac==='object'&&(ac['follow_ups']=buildProfileFollowUps(ac));c={'query_type':'address_profile','result':ac};break;}case'service_supply_chain':{const ad=await resolveSupplyChainGraph(typeof b['address']==='string'?b['address']:b['address']?.['name_or_address']??String(b['address']),b['network']);c={'query_type':'service_supply_chain','result':ad};break;}case'onchain_table_item_generic':{const ae=await query_tableItem({'parent':b['parent'],'key':{'type':b['key_type'],'value':b['key_value']},'no_cache':b['no_cache'],'network':b['network']});c={'query_type':'onchain_table_item_generic','result':ae};break;}default:{const af=['onchain_table','onchain_table_item_repository_data','onchain_table_item_permission_perm','onchain_table_item_reward_record','onchain_table_item_demand_presenter','onchain_table_item_treasury_history','onchain_table_item_machine_node','onchain_table_item_progress_history','onchain_table_item_address_mark','onchain_table_item_entity_registrar','onchain_table_item_entity_linker','onchain_table_item_entity_contact','onchain_table_item_entity_order','onchain_orders_of_user','onchain_orders_of_users','onchain_table_item_object_linker_core','onchain_table_item_object_linker_tx','onchain_table_item_generic','onchain_affiliations_of_object','address_profile','service_supply_chain'];throw new Error('Unknown\x20table\x20query_type\x20\x22'+b['query_type']+'\x22.\x20Valid\x20query_types\x20are:\x20'+af['map'](ag=>'\x22'+ag+'\x22')['join'](',\x20')+'.');}}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c,'semantic':buildDataSemantic(c,{'operation_type':'onchain_table_data','data':b})}};}export async function handleOnchainEvents(a){const b=strictParse(OnchainEventsInputSchema,a,'onchain_events\x20input'),c=await query_events({'type':b['type'],'cursor':b['cursor']?{'eventSeq':String(b['cursor']['eventSeq']),'txDigest':b['cursor']['txDigest']}:null,'limit':b['limit']??null,'order':b['order']??null,'no_cache':b['no_cache'],'network':b['network']});try{await annotateEventsMonetaryFields(c?.['data'],b['network']);}catch{}return{'content':[{'type':'text','text':JSON['stringify']({'result':c})}],'structuredContent':{'result':c,'semantic':buildDataSemantic(c,{'operation_type':'onchain_events','data':b})}};}function mcpLayerInfoResponse(a){return{'content':[{'type':'text','text':JSON['stringify']({'result':a})}],'structuredContent':{'result':a}};}export async function handleWowokInfo(a){const b=strictParse(ProtocolInfoQuerySchema,a,'wowok_buildin_info\x20input'),c=b['info'];if(c==='upgrade_check')return mcpLayerInfoResponse({'info':'upgrade_check','result':await checkUpgrade()});if(c==='universal_template')return mcpLayerInfoResponse({'info':'universal_template','result':getUniversalTemplate()});if(c==='getting\x20started')return mcpLayerInfoResponse({'info':'getting\x20started','result':getGettingStarted()});if(c==='build_fingerprint'){const e=b['compare'];if(e!=null){const h=await readChainStamp();return setComparisonChainEpoch(h['fetched']?h['epoch']:null),mcpLayerInfoResponse({'info':'build_fingerprint','result':{'comparison':compareReportFingerprint(e)}});}const f=currentBuildFingerprint(),g=await readChainStamp();return setComparisonChainEpoch(g['fetched']?g['epoch']:null),mcpLayerInfoResponse({'info':'build_fingerprint','result':{'fingerprint':f,'chain_stamp':g}});}const d=await queryProtocolInfo(b);return{'content':[{'type':'text','text':JSON['stringify']({'result':d})}],'structuredContent':{'result':d}};}
|
|
@@ -7,6 +7,7 @@ export interface ReviewChainParams {
|
|
|
7
7
|
review?: z.infer<typeof ProgressReviewSchema>;
|
|
8
8
|
orderRef?: string;
|
|
9
9
|
}
|
|
10
|
+
export declare function reviewChainBlocked(steps: ReviewChainStep[]): boolean;
|
|
10
11
|
export declare function runReviewRepositoryWrite(params: ReviewChainParams): Promise<ReviewChainStep[]>;
|
|
11
12
|
export declare function runReviewRewardClaim(params: ReviewChainParams): Promise<ReviewChainStep[]>;
|
|
12
13
|
export declare function runReviewChain(params: ReviewChainParams): Promise<ReviewChainStep[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{CallRepository,CallReward,LocalMark,query_transaction}from'@wowok/wowok';import{transformSubmission,classifyError}from'../../schema/index.js';import{handleObjectPanorama}from'../../playbooks/service-build/object-panorama.js';function digestOf(a){const b=a?.['digest']??a?.['effects']?.['digest'];return typeof b==='string'?b:undefined;}function stepOutcome(a,b,c,d){const e=digestOf(c);if(e)return{'step':a,'status':'success','detail':d,'digest':e};return{'step':a,'status':'unknown','detail':b+'\x20—\x20the\x20call\x20returned\x20without\x20a\x20transaction\x20digest;\x20the\x20write\x20is\x20NOT\x20proven\x20to\x20have\x20landed','error':'OUTCOME\x20UNKNOWN:\x20no\x20digest\x20in\x20the\x20call\x20result\x20—\x20do\x20NOT\x20treat\x20this\x20as\x20success.\x20Verify\x20before\x20any\x20retry\x20'+'(a\x20blind\x20retry\x20of\x20a\x20write-once\x20policy\x20aborts\x20with\x20code\x2024).','next_action':'probe\x20first:\x20query\x20the\x20target\x20state\x20(repository.data\x20row\x20/\x20reward\x20record\x20/\x20recent\x20events)\x20for\x20'+b+'\x20—\x20'+('if\x20it\x20landed,\x20adopt\x20it\x20and\x20stop;\x20if\x20confirmed\x20absent,\x20'+STEP_RETRY_MOVE[a])};}const STEP_RETRY_MOVE={'repository_write':'re-drive\x20the\x20write\x20with\x20the\x20dedicated\x20repository\x20tool\x20(same\x20policy\x20and\x20payload\x20values)\x20—\x20if\x20the\x20row\x20already\x20exists,\x20adopt\x20it\x20and\x20stop','reward_claim':'re-drive\x20the\x20claim\x20with\x20the\x20dedicated\x20reward\x20tool\x20—\x20if\x20the\x20claim\x20already\x20landed,\x20adopt\x20it\x20and\x20stop'};async function settleStepFailure(a,b,c){const d=String(c?.['message']??c);let e='';try{e=classifyError(d,c)?.['error_code']??'';}catch{}if(e!=='submission_unknown'){if(a==='reward_claim'&&/E_VERIFY_FAILED/i['test'](d))return{'step':a,'status':'failed','detail':b+'\x20failed','error':d,'next_action':'TWO-PHASE\x20RECOVERY\x20(the\x20sanctioned\x20paradigm,\x20not\x20a\x20workaround):\x20this\x20chained\x20claim\x20reused\x20the\x20'+'forward\x27s\x20passport\x20submission,\x20and\x20the\x20passport\x20verifies\x20every\x20submission\x20guard\x20BEFORE\x20the\x20'+'forward\x20runs\x20—\x20a\x20reward\x20guard\x20that\x20reads\x20the\x20review\x20row\x20written\x20by\x20this\x20chain\x27s\x20step\x201\x20could\x20'+'not\x20see\x20it\x20at\x20verification\x20time.\x20Step\x201\x27s\x20review\x20row\x20HAS\x20landed.\x20Claim\x20the\x20reward\x20in\x20a\x20'+'SEPARATE\x20reward-claim\x20call\x20with\x20a\x20fresh\x20submission\x20whose\x20reward\x20guard\x20now\x20verifies\x20against\x20'+'the\x20existing\x20row\x20—\x20design\x20review-gated\x20rewards\x20as\x20this\x20two-step\x20flow,\x20never\x20as\x20one\x20atomic\x20'+'chain.'};return{'step':a,'status':'failed','detail':b+'\x20failed','error':d};}const f=typeof c?.['digest']==='string'&&c['digest']?c['digest']:undefined;if(f)try{const g=await query_transaction({'digest':f,'no_cache':!![]}),h=String(g?.['status']??'')['toLowerCase']();if(h==='success')return{'step':a,'status':'success','detail':b+'\x20—\x20outcome\x20recovered\x20by\x20digest\x20probe:\x20the\x20submission\x20reported\x20an\x20unknown\x20'+('state\x20but\x20transaction\x20'+f+'\x20IS\x20on\x20chain\x20and\x20executed;\x20the\x20step\x20LANDED\x20—\x20')+'adopt\x20it,\x20never\x20resubmit','digest':f};return{'step':a,'status':'failed','detail':b,'digest':f,'error':'transaction\x20'+f+'\x20committed\x20but\x20its\x20execution\x20failed\x20(final;\x20gas\x20charged;\x20'+('effects\x20reverted\x20—\x20nothing\x20was\x20written)'+(g?.['error']?':\x20'+g['error']:'')),'next_action':'fix\x20the\x20reported\x20cause\x20and\x20re-drive\x20ONLY\x20from\x20live\x20state;\x20do\x20not\x20treat\x20this\x20as\x20transport\x20uncertainty'};}catch(i){if(/could not find the referenced transaction|not found/i['test'](String(i?.['message']??i)))return{'step':a,'status':'failed','detail':b,'digest':f,'error':'digest\x20'+f+'\x20does\x20not\x20resolve\x20on-chain\x20—\x20CONFIRMED\x20nothing\x20landed\x20for\x20this\x20submission','next_action':STEP_RETRY_MOVE[a]};}return{'step':a,'status':'unknown','detail':b+'\x20—\x20outcome\x20could\x20not\x20be\x20observed',...f?{'digest':f}:{},'error':'OUTCOME\x20UNKNOWN:\x20the\x20submission\x20may\x20have\x20committed\x20but\x20the\x20response\x20was\x20lost'+((f?'\x20(transport-reported\x20digest\x20'+f+')':'')+'\x20—\x20this\x20is\x20NOT\x20a\x20confirmed\x20failure'),'next_action':f?'verify\x20digest\x20'+f+'\x20first\x20(onchain_transaction):\x20executed\x20→\x20the\x20step\x20LANDED,\x20adopt\x20and\x20stop;\x20'+('failure\x20status\x20→\x20final,\x20fix\x20the\x20cause;\x20unresolvable\x20→\x20nothing\x20landed,\x20then\x20'+STEP_RETRY_MOVE[a]):'probe\x20before\x20any\x20retry:\x20query\x20the\x20target\x20state\x20and\x20the\x20sender\x27s\x20recent\x20events\x20(onchain_events)\x20—\x20'+('if\x20the\x20step\x20landed,\x20adopt\x20it;\x20if\x20confirmed\x20absent,\x20'+STEP_RETRY_MOVE[a])};}async function policyIsCallerKeyed(a,b){try{const c=await handleObjectPanorama({'object_address':a,'no_cache':!![]});if(c?.['object_type']!=='Repository')return undefined;const d=c['policies']['find'](f=>f['name']===b);if(!d)return undefined;const e=String(d['id_from']??'')['trim']()['toLowerCase']();if(e==='none'||e==='0')return!![];if(e==='signer'||e==='2'||e==='clock'||e==='1')return![];return undefined;}catch{return undefined;}}async function resolveOrderAddress(a){if(!a||a['length']===0x0)return undefined;if(a['startsWith']('0x'))return a;try{return await LocalMark['Instance']()['get_address'](a)??undefined;}catch{return undefined;}}export async function runReviewRepositoryWrite(a){const b=[],c=a['review'];if(!c)return b;if(!c['repository'])return b['push']({'step':'repository_write','status':'failed','detail':'repository\x20data_add\x20was\x20requested\x20via\x20data.review\x20but\x20no\x20repository\x20was\x20named','error':'data.review.repository\x20is\x20missing/empty\x20—\x20nothing\x20was\x20written.\x20Re-run\x20with\x20repository=<address>\x20(the\x20structured\x20reputation\x20record\x20is\x20NOT\x20recoverable\x20from\x20this\x20forward).'}),b;const d='repository\x20data_add\x20on\x20'+c['repository']+'\x20(policy\x20\x27'+(c['policy']??'review')+'\x27)';try{const e=a['submission']?await transformSubmission(a['submission']):undefined,f=c['write_guard']??e?.['guard']?.[0x0]?.['object'],g={'rating':c['rating']};if(c['tags']!==undefined&&c['tags']['length']>0x0)g['tags']=c['tags'];if(a['orderRef'])g['orderRef']=a['orderRef'];const h={'name':c['policy']??'review','data':JSON['stringify'](g)};if(f)h['write_guard']=f;const i=await resolveOrderAddress(a['orderRef']),j=i!==undefined?await policyIsCallerKeyed(c['repository'],c['policy']??'review'):undefined,k=i!==undefined&&j!==![];if(k)h['id']=i;const l=new CallRepository({'object':c['repository'],'data_add':h}),m=e?await l['call_with_submission'](a['env'],e):await l['call'](a['env']);b['push'](stepOutcome('repository_write',d,m,'wrote\x20'+JSON['stringify'](g)+'\x20under\x20policy\x20\x27'+(c['policy']??'review')+'\x27\x20of\x20repository\x20'+c['repository']+(k?'\x20(row\x20id\x20=\x20order\x20'+i+')':'')));}catch(n){b['push'](await settleStepFailure('repository_write',d,n));}return b;}export async function runReviewRewardClaim(a){const b=[],c=a['review'];if(!c?.['reward_claim'])return b;const {reward:d,guard:e}=c['reward_claim'],f='reward\x20claim\x20on\x20'+d+'\x20via\x20guard\x20'+e;try{const g=a['submission']?await transformSubmission(a['submission']):undefined,h=new CallReward({'object':d,'claim':e}),i=g?await h['call_with_submission'](a['env'],g):await h['call'](a['env']);b['push'](stepOutcome('reward_claim',f,i,'claimed\x20reward\x20'+d+'\x20via\x20guard\x20'+e));}catch(j){b['push'](await settleStepFailure('reward_claim',f,j));}return b;}export async function runReviewChain(a){return[...await runReviewRepositoryWrite(a),...await runReviewRewardClaim(a)];}export function mergeReviewStepsIntoOutput(a,b,c){try{const d=a?.['structuredContent'];if(d&&typeof d==='object'){if(!d['semantic']||typeof d['semantic']!=='object')d['semantic']={};d['semantic']['review_steps']=b;}const e=b['filter'](i=>i['status']==='failed'),f=b['filter'](i=>i['status']==='unknown'),g=[...e,...f]['map'](i=>i['step']+':\x20'+(i['error']??i['detail'])+(i['next_action']?'\x20[next:\x20'+i['next_action']+']':''))['join']('\x20|\x20'),h=e['length']===0x0&&f['length']===0x0?'Review\x20chain:\x20'+b['length']+'\x20chained\x20step(s)\x20completed.'+(c?.['forwardOutcome']?'\x20Note:\x20the\x20forward\x20'+c['forwardOutcome']+'.':''):'Review\x20chain:\x20'+e['length']+'/'+b['length']+'\x20chained\x20step(s)\x20failed'+(f['length']>0x0?',\x20'+f['length']+'\x20outcome-UNKNOWN\x20(may\x20have\x20landed\x20—\x20follow\x20next_action\x20before\x20any\x20retry)':'')+('\x20—\x20the\x20forward\x20'+(c?.['forwardOutcome']??'itself\x20succeeded\x20(no\x20rollback)')+'.\x20Reason(s)/next:\x20'+g);Array['isArray'](a?.['content'])&&a['content'][0x0]?.['text']!==undefined&&(a['content'][0x0]['text']=h+'\x0a'+a['content'][0x0]['text']);}catch{}return a;}
|
|
1
|
+
import{CallRepository,CallReward,LocalMark,query_transaction}from'@wowok/wowok';import{transformSubmission,classifyError}from'../../schema/index.js';import{handleObjectPanorama}from'../../playbooks/service-build/object-panorama.js';import{batchQueryObjectsByIds}from'../../graph/onchain/sdk-batch.js';function digestOf(a){const b=a?.['digest']??a?.['effects']?.['digest'];return typeof b==='string'?b:undefined;}function stepOutcome(a,b,c,d){const e=digestOf(c),f=String(c?.['effects']?.['status']?.['status']??'')['toLowerCase']();if(e&&f==='failure'){const g=c?.['effects']?.['status']?.['error']?String(c['effects']['status']['error']):'unknown\x20on-chain\x20abort\x20reason\x20(no\x20error\x20text\x20in\x20effects.status)';return{'step':a,'status':'failed','detail':b+'\x20—\x20the\x20transaction\x20committed\x20(digest\x20'+e+')\x20but\x20its\x20EXECUTION\x20failed\x20on\x20chain','digest':e,'error':'ON-CHAIN\x20EXECUTION\x20FAILED:\x20the\x20transaction\x20has\x20a\x20digest\x20but\x20did\x20NOT\x20take\x20effect\x20—\x20the\x20digest\x20is\x20NOT\x20'+('landing\x20evidence\x20and\x20must\x20not\x20be\x20treated\x20as\x20success.\x20Chain\x20error:\x20'+g),'next_action':'read\x20the\x20chain\x20error\x20above\x20first,\x20fix\x20the\x20cause\x20(guard/permission/argument),\x20then\x20decide\x20whether\x20to\x20'+('re-drive\x20'+STEP_RETRY_MOVE[a]+'\x20—\x20do\x20NOT\x20assume\x20anything\x20landed\x20from\x20this\x20digest')};}if(e)return{'step':a,'status':'success','detail':d,'digest':e};return{'step':a,'status':'unknown','detail':b+'\x20—\x20the\x20call\x20returned\x20without\x20a\x20transaction\x20digest;\x20the\x20write\x20is\x20NOT\x20proven\x20to\x20have\x20landed','error':'OUTCOME\x20UNKNOWN:\x20no\x20digest\x20in\x20the\x20call\x20result\x20—\x20do\x20NOT\x20treat\x20this\x20as\x20success.\x20Verify\x20before\x20any\x20retry\x20'+'(a\x20blind\x20retry\x20of\x20a\x20write-once\x20policy\x20aborts\x20with\x20code\x2024).','next_action':'probe\x20first:\x20query\x20the\x20target\x20state\x20(repository.data\x20row\x20/\x20reward\x20record\x20/\x20recent\x20events)\x20for\x20'+b+'\x20—\x20'+('if\x20it\x20landed,\x20adopt\x20it\x20and\x20stop;\x20if\x20confirmed\x20absent,\x20'+STEP_RETRY_MOVE[a])};}const STEP_RETRY_MOVE={'repository_write':'re-drive\x20the\x20write\x20with\x20the\x20dedicated\x20repository\x20tool\x20(same\x20policy\x20and\x20payload\x20values)\x20—\x20if\x20the\x20row\x20already\x20exists,\x20adopt\x20it\x20and\x20stop','rating_write':'re-drive\x20the\x20U64\x20star\x20write\x20with\x20the\x20dedicated\x20repository\x20tool\x20(same\x20policy\x20and\x20value)\x20—\x20if\x20the\x20row\x20already\x20exists,\x20adopt\x20it\x20and\x20stop','reward_claim':'re-drive\x20the\x20claim\x20with\x20the\x20dedicated\x20reward\x20tool\x20—\x20if\x20the\x20claim\x20already\x20landed,\x20adopt\x20it\x20and\x20stop'};async function settleStepFailure(a,b,c){const d=String(c?.['message']??c);let e='';try{e=classifyError(d,c)?.['error_code']??'';}catch{}if(e!=='submission_unknown'){if(a==='reward_claim'&&/E_VERIFY_FAILED/i['test'](d))return{'step':a,'status':'failed','detail':b+'\x20failed','error':d,'next_action':'TWO-PHASE\x20RECOVERY\x20(the\x20sanctioned\x20paradigm,\x20not\x20a\x20workaround):\x20this\x20chained\x20claim\x20reused\x20the\x20'+'forward\x27s\x20passport\x20submission,\x20and\x20the\x20passport\x20verifies\x20every\x20submission\x20guard\x20BEFORE\x20the\x20'+'forward\x20runs\x20—\x20a\x20reward\x20guard\x20that\x20reads\x20the\x20review\x20row\x20written\x20by\x20this\x20chain\x27s\x20step\x201\x20could\x20'+'not\x20see\x20it\x20at\x20verification\x20time.\x20Step\x201\x27s\x20review\x20row\x20HAS\x20landed.\x20Claim\x20the\x20reward\x20in\x20a\x20'+'SEPARATE\x20reward-claim\x20call\x20with\x20a\x20fresh\x20submission\x20whose\x20reward\x20guard\x20now\x20verifies\x20against\x20'+'the\x20existing\x20row\x20—\x20design\x20review-gated\x20rewards\x20as\x20this\x20two-step\x20flow,\x20never\x20as\x20one\x20atomic\x20'+'chain.'};return{'step':a,'status':'failed','detail':b+'\x20failed','error':d};}const f=typeof c?.['digest']==='string'&&c['digest']?c['digest']:undefined;if(f)try{const g=await query_transaction({'digest':f,'no_cache':!![]}),h=String(g?.['status']??'')['toLowerCase']();if(h==='success')return{'step':a,'status':'success','detail':b+'\x20—\x20outcome\x20recovered\x20by\x20digest\x20probe:\x20the\x20submission\x20reported\x20an\x20unknown\x20'+('state\x20but\x20transaction\x20'+f+'\x20IS\x20on\x20chain\x20and\x20executed;\x20the\x20step\x20LANDED\x20—\x20')+'adopt\x20it,\x20never\x20resubmit','digest':f};return{'step':a,'status':'failed','detail':b,'digest':f,'error':'transaction\x20'+f+'\x20committed\x20but\x20its\x20execution\x20failed\x20(final;\x20gas\x20charged;\x20'+('effects\x20reverted\x20—\x20nothing\x20was\x20written)'+(g?.['error']?':\x20'+g['error']:'')),'next_action':'fix\x20the\x20reported\x20cause\x20and\x20re-drive\x20ONLY\x20from\x20live\x20state;\x20do\x20not\x20treat\x20this\x20as\x20transport\x20uncertainty'};}catch(i){if(/could not find the referenced transaction|not found/i['test'](String(i?.['message']??i)))return{'step':a,'status':'failed','detail':b,'digest':f,'error':'digest\x20'+f+'\x20does\x20not\x20resolve\x20on-chain\x20—\x20CONFIRMED\x20nothing\x20landed\x20for\x20this\x20submission','next_action':STEP_RETRY_MOVE[a]};}return{'step':a,'status':'unknown','detail':b+'\x20—\x20outcome\x20could\x20not\x20be\x20observed',...f?{'digest':f}:{},'error':'OUTCOME\x20UNKNOWN:\x20the\x20submission\x20may\x20have\x20committed\x20but\x20the\x20response\x20was\x20lost'+((f?'\x20(transport-reported\x20digest\x20'+f+')':'')+'\x20—\x20this\x20is\x20NOT\x20a\x20confirmed\x20failure'),'next_action':f?'verify\x20digest\x20'+f+'\x20first\x20(onchain_transaction):\x20executed\x20→\x20the\x20step\x20LANDED,\x20adopt\x20and\x20stop;\x20'+('failure\x20status\x20→\x20final,\x20fix\x20the\x20cause;\x20unresolvable\x20→\x20nothing\x20landed,\x20then\x20'+STEP_RETRY_MOVE[a]):'probe\x20before\x20any\x20retry:\x20query\x20the\x20target\x20state\x20and\x20the\x20sender\x27s\x20recent\x20events\x20(onchain_events)\x20—\x20'+('if\x20the\x20step\x20landed,\x20adopt\x20it;\x20if\x20confirmed\x20absent,\x20'+STEP_RETRY_MOVE[a])};}async function policyIsCallerKeyed(a,b,c){try{const d=await repositoryPanoPolicies(a,c);if(d===undefined)return undefined;const e=d['find'](g=>g['name']===b);if(!e)return undefined;const f=String(e['id_from']??'')['trim']()['toLowerCase']();if(f==='none'||f==='0')return!![];if(f==='signer'||f==='2'||f==='clock'||f==='1')return![];return undefined;}catch{return undefined;}}async function findU64RatingPolicy(a,b){try{const c=await repositoryPanoPolicies(a,b);if(c===undefined)return undefined;const d=c['filter'](e=>String(e['value_type']??'')['trim']()['toLowerCase']()==='u64');if(d['length']===0x0)return undefined;return(d['find'](e=>e['name']==='rating')??d[0x0])['name'];}catch{return undefined;}}async function resolveOrderAddress(a){if(!a||a['length']===0x0)return undefined;if(a['startsWith']('0x'))return a;try{return await LocalMark['Instance']()['get_address'](a)??undefined;}catch{return undefined;}}async function repositoryPanoPolicies(a,b){const c=()=>handleObjectPanorama({'object_address':a,'no_cache':!![]})['then'](e=>e?.['object_type']==='Repository'&&Array['isArray'](e['policies'])?e['policies']:undefined)['catch'](()=>undefined),d=b?b['get'](a)??(b['set'](a,c()),b['get'](a)):await c();return d;}async function policyWriteGuardVector(a,b,c){const d=await repositoryPanoPolicies(a,c);if(d!==undefined){const e=String(b)['toLowerCase'](),f=d['find'](i=>String(i?.['name']??'')['toLowerCase']()===e),h=f?.['write_guard_addresses'];if(Array['isArray'](h))return h['map'](i=>String(i)['toLowerCase']());}try{const i=await batchQueryObjectsByIds([a],undefined,!![]),j=i['find'](r=>r?.['type']==='Repository'),k=j?.['data']??j,l=Array['isArray'](k?.['policies'])?k['policies']:[],m=String(b)['toLowerCase'](),n=l['find'](r=>String(r?.['name']??'')['toLowerCase']()===m);if(!n)return undefined;const o=Array['isArray'](n['write_guard'])?n['write_guard']:[],q=[];for(const r of o){const s=typeof r==='string'?r:r?.['guard']??r?.['fields']?.['guard'];if(typeof s==='string'&&s['trim']()!=='')q['push'](s['toLowerCase']());}return q;}catch{return undefined;}}export function reviewChainBlocked(a){return a['some'](b=>b['status']==='failed'||b['status']==='unknown');}async function resolveWriteGuard(a,b,c,d,e){if(c['review']?.['write_guard'])return{'guard':c['review']['write_guard']};const [f,g]=await Promise['all']([policyWriteGuardVector(a,b,e),Promise['resolve'](new Set((d?.['guard']??[])['map'](i=>String(i?.['object']??'')['toLowerCase']())['filter'](i=>i['startsWith']('0x'))))]);if(f===undefined)return{'guard':c['review']?.['write_guard']??d?.['guard']?.[0x0]?.['object']};if(f['length']===0x0)return{};const h=f['filter'](i=>g['has'](i));if(h['length']===0x0)return{'failure':{'step':'repository_write','status':'failed','detail':'repository\x20data_add\x20on\x20'+a+'\x20(policy\x20\x27'+b+'\x27)\x20—\x20write-guard\x20pre-flight\x20failed','error':'GUARD\x20MISMATCH:\x20policy\x20\x27'+b+'\x27\x20on\x20repository\x20'+a+'\x20is\x20gated\x20by\x20write\x20guard(s)\x20'+('['+f['join'](',\x20')+'],\x20but\x20the\x20passport\x20submitted\x20guard(s)\x20')+('['+([...g]['join'](',\x20')||'none')+']\x20—\x20the\x20intersection\x20is\x20EMPTY,\x20so\x20no\x20submitted\x20')+'credential\x20can\x20verify\x20this\x20write\x20(the\x20O-F04\x20silent-failure\x20shape).\x20Nothing\x20was\x20written;\x20the\x20'+'forward\x20was\x20NOT\x20attempted.','next_action':'submit\x20the\x20policy\x27s\x20own\x20guard(s)\x20['+f['join'](',\x20')+']\x20in\x20the\x20passport\x20submission\x20'+'(with\x20the\x20values\x20that\x20guard\x20requires),\x20then\x20re-run\x20the\x20review\x20chain'}};return{'guard':h[0x0]};}export async function runReviewRepositoryWrite(a){const b=[],c=a['review'];if(!c)return b;if(!c['repository'])return b['push']({'step':'repository_write','status':'failed','detail':'repository\x20data_add\x20was\x20requested\x20via\x20data.review\x20but\x20no\x20repository\x20was\x20named','error':'data.review.repository\x20is\x20missing/empty\x20—\x20nothing\x20was\x20written.\x20Re-run\x20with\x20repository=<address>\x20(the\x20structured\x20reputation\x20record\x20is\x20NOT\x20recoverable\x20from\x20this\x20forward).'}),b;const d='repository\x20data_add\x20on\x20'+c['repository']+'\x20(policy\x20\x27'+(c['policy']??'review')+'\x27)',e=new Map();try{const g=a['submission']?await transformSubmission(a['submission']):undefined,h=await resolveWriteGuard(c['repository'],c['policy']??'review',a,g,e);if(h['failure'])return b['push'](h['failure']),b;const i=h['guard'],j={'rating':c['rating']};if(c['tags']!==undefined&&c['tags']['length']>0x0)j['tags']=c['tags'];if(a['orderRef'])j['orderRef']=a['orderRef'];const k={'name':c['policy']??'review','data':JSON['stringify'](j)};if(i)k['write_guard']=i;const l=await resolveOrderAddress(a['orderRef']),m=l!==undefined?await policyIsCallerKeyed(c['repository'],c['policy']??'review',e):undefined,n=l!==undefined&&m!==![];n&&(k['items']=[{...i?{'write_guard':i}:{},'data':[{'id':l,'data':k['data']}]}],delete k['data'],delete k['write_guard']);const o=new CallRepository({'object':c['repository'],'data_add':k}),p=g?await o['call_with_submission'](a['env'],g):await o['call'](a['env']);b['push'](stepOutcome('repository_write',d,p,'wrote\x20'+JSON['stringify'](j)+'\x20under\x20policy\x20\x27'+(c['policy']??'review')+'\x27\x20of\x20repository\x20'+c['repository']+(n?'\x20(row\x20id\x20=\x20order\x20'+l+')':'')));}catch(q){b['push'](await settleStepFailure('repository_write',d,q));}const f=await findU64RatingPolicy(c['repository'],e);if(f&&f!==(c['policy']??'review')){const r=c['rating']==='like'?0x5:0x1,s='repository\x20data_add\x20on\x20'+c['repository']+'\x20(policy\x20\x27'+f+'\x27)\x20—\x20derived\x20U64\x20star\x20'+r;try{const t=a['submission']?await transformSubmission(a['submission']):undefined,u=await resolveWriteGuard(c['repository'],f,a,t,e);if(u['failure'])return b['push']({...u['failure'],'step':'rating_write','detail':'derived\x20U64\x20star\x20write\x20on\x20'+c['repository']+'\x20(policy\x20\x27'+f+'\x27)\x20—\x20write-guard\x20pre-flight\x20failed'}),b;const v=u['guard'],w={'name':f,'data':r};if(v)w['write_guard']=v;const x=await resolveOrderAddress(a['orderRef']),y=x!==undefined?await policyIsCallerKeyed(c['repository'],f):undefined;x!==undefined&&y!==![]&&(w['items']=[{...v?{'write_guard':v}:{},'data':[{'id':x,'data':r}]}],delete w['data'],delete w['write_guard']);const z=new CallRepository({'object':c['repository'],'data_add':w}),A=t?await z['call_with_submission'](a['env'],t):await z['call'](a['env']);b['push'](stepOutcome('rating_write',s,A,'wrote\x20U64\x20star\x20'+r+'\x20under\x20policy\x20\x27'+f+'\x27\x20of\x20repository\x20'+c['repository']+'\x20(the\x20reward\x20guard\x20reads\x20this\x20numeric\x20row)'));}catch(B){b['push'](await settleStepFailure('rating_write',s,B));}}return b;}export async function runReviewRewardClaim(a){const b=[],c=a['review'];if(!c?.['reward_claim'])return b;const {reward:d,guard:e}=c['reward_claim'],f='reward\x20claim\x20on\x20'+d+'\x20via\x20guard\x20'+e;try{const g=a['submission']?await transformSubmission(a['submission']):undefined,h=new CallReward({'object':d,'claim':e}),i=g?await h['call_with_submission'](a['env'],g):await h['call'](a['env']);b['push'](stepOutcome('reward_claim',f,i,'claimed\x20reward\x20'+d+'\x20via\x20guard\x20'+e));}catch(j){b['push'](await settleStepFailure('reward_claim',f,j));}return b;}export async function runReviewChain(a){const b=await runReviewRepositoryWrite(a);if(reviewChainBlocked(b)){const c=a['review'];if(!c?.['reward_claim'])return b;const {reward:d,guard:e}=c['reward_claim'];return[...b,{'step':'reward_claim','status':'failed','detail':'reward\x20claim\x20on\x20'+d+'\x20via\x20guard\x20'+e+'\x20—\x20NOT\x20attempted','error':'BLOCKED:\x20the\x20repository/rating\x20write\x20did\x20not\x20confirm\x20success\x20(failed\x20or\x20outcome-unknown\x20above)\x20—\x20'+'claiming\x20now\x20would\x20read\x20a\x20row\x20that\x20may\x20not\x20exist.\x20Fix\x20the\x20write\x20first\x20(probe,\x20then\x20safe-retry\x20per\x20'+'its\x20next_action);\x20the\x20claim\x20follows\x20in\x20a\x20separate\x20call\x20once\x20the\x20row\x20is\x20verified\x20on\x20chain.','next_action':'verify\x20the\x20repository\x20row\x20(and\x20U64\x20star\x20row)\x20landed,\x20then\x20claim\x20the\x20reward\x20separately'}];}return[...b,...await runReviewRewardClaim(a)];}export function mergeReviewStepsIntoOutput(a,b,c){try{const d=a?.['structuredContent'];if(d&&typeof d==='object'){if(!d['semantic']||typeof d['semantic']!=='object')d['semantic']={};d['semantic']['review_steps']=b;}const e=b['filter'](i=>i['status']==='failed'),f=b['filter'](i=>i['status']==='unknown');d&&typeof d==='object'&&d['semantic']&&(e['length']>0x0||f['length']>0x0)&&(d['semantic']['status']=e['length']>0x0?'partial_failed':'partial_unknown',d['semantic']['review_chain_degraded']=!![]);const g=[...e,...f]['map'](i=>i['step']+':\x20'+(i['error']??i['detail'])+(i['next_action']?'\x20[next:\x20'+i['next_action']+']':''))['join']('\x20|\x20'),h=e['length']===0x0&&f['length']===0x0?'Review\x20chain:\x20'+b['length']+'\x20chained\x20step(s)\x20completed.'+(c?.['forwardOutcome']?'\x20Note:\x20the\x20forward\x20'+c['forwardOutcome']+'.':''):'Review\x20chain:\x20'+e['length']+'/'+b['length']+'\x20chained\x20step(s)\x20failed'+(f['length']>0x0?',\x20'+f['length']+'\x20outcome-UNKNOWN\x20(may\x20have\x20landed\x20—\x20follow\x20next_action\x20before\x20any\x20retry)':'')+('\x20—\x20the\x20forward\x20'+(c?.['forwardOutcome']??'itself\x20succeeded\x20(no\x20rollback)')+'.\x20Reason(s)/next:\x20'+g);Array['isArray'](a?.['content'])&&a['content'][0x0]?.['text']!==undefined&&(a['content'][0x0]['text']=h+'\x0a'+a['content'][0x0]['text']);}catch{}return a;}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{processSchemaQuery,analyzeGuardSemantics,formatLintResult}from'../../schema-query-impl/index.js';import{strictParse}from'../../schema/index.js';import{SchemaQueryInputSchema}from'../../schema/schema-query/index.js';import{GUARD_BINDING_SEMANTICS,loadGuardJsonFromChain,diffGuardSpecVsChain,requiredSubmissionSlots}from'../../knowledge/guard-submission-brief.js';export async function handleSchemaQuery(a){const b=strictParse(SchemaQueryInputSchema,a,'schema_query\x20input');if(b['action']==='analyze_guard_semantics')return handleAnalyzeGuardSemantics(b['guard'],b['binding'],b['network'],b['compare_with']);const c={'action':b['action'],'name':b['name'],'query':b['query'],'field_path':b['field_path'],'template':b['template'],'object_type':b['object_type'],'params':b['params'],'output_file':b['output_file']},d=processSchemaQuery(c);let e=d['message'];d['output_file_path']&&(e+='\x0a\x0a📄\x20Full\x20data\x20written\x20to:\x20'+d['output_file_path'],e+='\x0a\x20\x20\x20Use\x20the\x20Read\x20tool\x20to\x20access\x20the\x20file\x20content.',d['inline_summary']&&(e+='\x0a\x0a##\x20Inline\x20summary\x20(no\x20file\x20access\x20needed)\x0a\x0a'+d['inline_summary']));const f=d['data'];if(d['success']&&f)switch(c['action']){case'list':if(Array['isArray'](f)&&f['length']>0x0){e+='\x0a\x0aAll\x20available\x20schemas:\x0a';for(const g of f){e+='\x0a\x20\x20•\x20'+(g['name']??''),g['title']&&(e+='\x20-\x20'+g['title']),g['description']&&(e+='\x0a\x20\x20\x20\x20'+g['description']['slice'](0x0,0x64)+'...'),e+='\x0a';}}break;case'list_operations':if(Array['isArray'](f)&&f['length']>0x0){e+='\x0a\x0aOn-chain\x20operation\x20schemas:\x0a';for(const h of f){e+='\x0a\x20\x20•\x20'+(h['name']??''),h['title']&&(e+='\x20-\x20'+h['title']),h['description']&&(e+='\x0a\x20\x20\x20\x20'+h['description']['slice'](0x0,0x64)+'...'),e+='\x0a';}}break;case'get':e+='\x0a\x0a##\x20JSON\x20Schema\x0a\x0a',e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;case'get_output':e+='\x0a\x0a##\x20Output\x20JSON\x20Schema\x0a\x0a',e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;case'get_guard_templates':e+='\x0a\x0a##\x20Guard\x20Templates\x0a\x0a',e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;case'get_field':e+='\x0a\x0a##\x20Field\x20Schema\x0a\x0a',e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;case'search':if(Array['isArray'](f)&&f['length']>0x0){e+='\x0a\x0aFound\x20'+f['length']+'\x20schemas\x20matching\x20\x27'+(c['query']??'')+'\x27:\x0a';for(const i of f){e+='\x0a\x20\x20•\x20'+(i['name']??''),i['title']&&(e+='\x20-\x20'+i['title']),i['description']&&(e+='\x0a\x20\x20\x20\x20'+i['description']['slice'](0x0,0x64)+'...'),e+='\x0a';}}else e+='\x0a\x0aNo\x20schemas\x20found.\x20Try\x20\x27list\x27\x20to\x20browse\x20all\x20available\x20schemas,\x20or\x20use\x20a\x20broader\x20search\x20term.';break;case'get_tool_reference':{e+='\x0a\x0a##\x20MCP\x20Tool\x20Reference\x0a\x0a',e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;}case'get_guard_design_patterns':{e+='\x0a\x0a##\x20Guard\x20Design\x20Patterns\x0a\x0a',e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;}case'get_safety_rules':{e+='\x0a\x0a##\x20Safety\x20Rules\x20(sunk\x20from\x20wowok-safety\x20skill)\x0a\x0a',e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;}case'get_guard_queries':{if(Array['isArray'](f)&&f['length']>0x0){const j=new Map();for(const k of f){const l=k['objectType']??'?';j['set'](l,(j['get'](l)??0x0)+0x1);}e+='\x0a\x0aGUARDQUERY\x20catalog:\x20'+f['length']+'\x20entries\x20across\x20'+j['size']+'\x20object\x20types.\x0a';for(const [m,n]of[...j['entries']()]['sort']((o,p)=>p[0x1]-o[0x1])){e+='\x0a\x20\x20•\x20'+m+':\x20'+n+'\x20entries';}e+='\x0a\x0aFull\x20rows\x20(id,\x20name'+(f[0x0]['description']!==undefined?',\x20description':'')+',\x20returnType)\x20are\x20in\x20the\x20structured\x20content.\x20',f[0x0]['description']===undefined&&(e+='Add\x20query=\x27<keyword>\x27\x20for\x20descriptions,\x20or\x20output_file\x20to\x20dump\x20all\x20details.\x20'),e+='Prefer\x20NAME\x20references\x20in\x20Guard\x20trees\x20—\x20a\x20numeric\x20id\x20is\x20resolved\x20verbatim,\x20and\x20a\x20wrong-but-existing\x20id\x20silently\x20checks\x20a\x20different\x20field\x20(rndb58d8d\x20A2).';}break;}case'get_templates':{e+='\x0a\x0a##\x20Unified\x20Template\x20Registry\x20(92-review\x20D.2)\x0a\x0a';const o=f;if(Array['isArray'](o['templates'])&&!c['template']){e+='\x0a'+(o['total']??o['templates']['length'])+'\x20template(s).\x20',e+='Call\x20with\x20\x27template\x27=<id>\x20for\x20detail;\x20add\x20\x27params\x27\x20(JSON\x20string)\x20to\x20instantiate.\x0a';for(const p of o['templates']){e+='\x0a\x20\x20•\x20'+p['id']+'\x20['+p['object_type']+(p['instantiable']?'':',\x20guidance-only')+']\x20—\x20'+p['name']+'\x20('+(p['parameters']?.['length']??0x0)+'\x20params)';}e+='\x0a';}else e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;}default:throw new Error('Unknown\x20schema_query\x20action:\x20'+String(c['action']));}if(d['suggestions']&&d['suggestions']['length']>0x0){e+='\x0a\x0a💡\x20Suggestions:\x0a';for(const q of d['suggestions']){e+='\x20\x20•\x20'+q+'\x0a';}}return{'content':[{'type':'text','text':e}],'structuredContent':d};}function guardFetchGuidance(a,b){return'Fetch\x20the\x20live\x20Guard\x20definition\x20FIRST,\x20then\x20analyze\x20it\x20as\x20local\x20JSON:\x20call\x20query_toolkit\x20with\x20'+('query_type=\x27onchain_objects\x27,\x20objects=[\x22'+a+'\x22]\x20(add\x20no_cache:true\x20for\x20a\x20forced-fresh\x20read')+((b?',\x20network:\x27'+b+'\x27':'')+'),\x20then\x20pass\x20objects[0].table\x20+\x20objects[0].root\x20')+'as\x20the\x20\x27guard\x27\x20parameter\x20of\x20this\x20action.';}async function handleAnalyzeGuardSemantics(a,b,c,f){if(a===undefined||a===null)throw new Error('schema_query\x20action=\x27analyze_guard_semantics\x27\x20requires\x20the\x20\x27guard\x27\x20parameter\x20'+'(Guard\x20JSON\x20object,\x20JSON-encoded\x20string,\x20or\x20an\x20on-chain\x20Guard\x20address/LocalMark\x20name).');let g,h;if(typeof a==='string'){const v=a['trim'](),x=v['startsWith']('{')||v['startsWith']('[');if(x)try{g=JSON['parse'](v);}catch(y){throw new Error('analyze_guard_semantics:\x20\x27guard\x27\x20string\x20looks\x20like\x20JSON\x20but\x20failed\x20to\x20parse:\x20'+y['message']);}else h=v;}else g=a;let i,j;if(!g){if(!h)throw new Error('analyze_guard_semantics:\x20Guard\x20JSON\x20must\x20contain\x20at\x20least\x20\x27table\x27\x20(array)\x20and\x20\x27root\x27\x20(logic\x20tree\x20object).');const z=await loadGuardJsonFromChain(h,c);if(!z)throw new Error('analyze_guard_semantics:\x20could\x20not\x20load\x20a\x20Guard\x20definition\x20for\x20\x22'+h+'\x22\x20'+('(not\x20found,\x20not\x20a\x20Guard\x20object,\x20or\x20LocalMark\x20name\x20unresolvable\x20on\x20network\x20\x27'+(c??'current')+'\x27\x20—\x20')+'this\x20tool\x20could\x20not\x20resolve\x20it,\x20which\x20is\x20not\x20necessarily\x20a\x20wrong\x20address).\x20'+guardFetchGuidance(h,c));g=z['json'],i=z['guard'],j=z['name'];}if(!Array['isArray'](g['table'])||!g['root']||typeof g['root']!=='object')throw new Error(h?'analyze_guard_semantics:\x20the\x20object\x20at\x20\x22'+h+'\x22\x20does\x20not\x20expose\x20a\x20Guard\x20definition\x20shape\x20'+'(needs\x20\x27table\x27\x20(array)\x20+\x20\x27root\x27\x20(logic\x20tree\x20object)).\x20'+guardFetchGuidance(h,c):'analyze_guard_semantics:\x20Guard\x20JSON\x20must\x20contain\x20at\x20least\x20\x27table\x27\x20(array)\x20and\x20\x27root\x27\x20(logic\x20tree\x20object).');const k=b;k==='allocate'&&g&&!g['binding_hint']&&(g={...g,'binding_hint':{'host_object':'Service','binding_field':'order_allocators'}});let l;try{l=await analyzeGuardSemantics(g);}catch(A){throw new Error('analyze_guard_semantics:\x20failed\x20to\x20interpret\x20the\x20guard\x20payload\x20('+A['message']+').\x20'+(h?guardFetchGuidance(h,c):'If\x20this\x20payload\x20came\x20from\x20an\x20on-chain\x20object\x20rather\x20than\x20a\x20guard2file\x20export,\x20'+'call\x20query_toolkit\x20with\x20query_type=\x27onchain_objects\x27\x20on\x20the\x20object\x20ID,\x20then\x20pass\x20'+'objects[0].table\x20+\x20objects[0].root\x20as\x20the\x20\x27guard\x27\x20parameter.'));}const {lint:m,party_evaluation:n}=l;let o;if(f&&h===undefined){const B=await loadGuardJsonFromChain(f,c);if(!B)throw new Error('analyze_guard_semantics:\x20could\x20not\x20load\x20the\x20compare_with\x20Guard\x20\x22'+f+'\x22\x20'+('(not\x20found,\x20not\x20a\x20Guard\x20object,\x20or\x20LocalMark\x20name\x20unresolvable\x20on\x20network\x20\x27'+(c??'current')+'\x27).\x20')+guardFetchGuidance(f,c));o=diffGuardSpecVsChain(g,B['json']),!o['match']&&(m['diagnostics']['push']({'code':'RT-01','message':'ROUND-TRIP\x20MISMATCH\x20vs\x20'+f+':\x20the\x20on-chain\x20Guard\x20DIFFERS\x20from\x20this\x20spec\x20—\x20'+o['diffs']['join'](';\x20')+'.\x20The\x20lint\x20verdict\x20above\x20describes\x20a\x20Guard\x20that\x20does\x20NOT\x20exist\x20on-chain.\x20'+'Guards\x20are\x20create-frozen:\x20export\x20(guard2file),\x20inspect,\x20create\x20a\x20NEW\x20Guard\x20and\x20rebind.','severity':'error','source':'lint','location':{'path':'/'},'fix':{'description':'Align\x20the\x20local\x20spec\x20with\x20the\x20chain\x20copy\x20(guard2file\x20export),\x20or\x20create\x20a\x20corrected\x20Guard\x20and\x20rebind\x20its\x20hosts.','auto_fixable':![]}}),m['summary']['errors']+=0x1,m['summary']['ready']=![],m['summary']['next_step']='Resolve\x20the\x20ROUND-TRIP\x20MISMATCH\x20first\x20—\x20the\x20analyzed\x20spec\x20is\x20NOT\x20what\x20the\x20chain\x20stores.');}const p=k?GUARD_BINDING_SEMANTICS[k]:undefined,q=[];for(const C of n['data_sources']){C['is_mutable_onchain']&&q['push']('Table\x20['+C['identifier']+']'+(C['name']?'\x20\x22'+C['name']+'\x22':'')+'\x20reads\x20a\x20Repository\x20—\x20MUTABLE\x20on-chain;\x20verify\x20the\x20current\x20entry\x20before\x20relying\x20on\x20the\x20check');}n['has_time_conditions']&&q['push']('The\x20tree\x20contains\x20Clock\x20(time)\x20conditions\x20—\x20results\x20may\x20change\x20over\x20time');n['has_rely_composition']&&q['push']('This\x20Guard\x20composes\x20other\x20Guards\x20via\x20rely\x20—\x20each\x20relied\x20Guard\x27s\x20semantics\x20apply\x20too');let r='Guard\x20semantics\x20analysis\x20(evaluate\x20BEFORE\x20relying\x20on\x20this\x20Guard):\x0a';i&&(r+='\x0a**On-chain\x20Guard**:\x20'+(j??'')+'\x20'+i+'\x0a');p&&(r+='\x0a##\x20Business\x20slot\x0a\x0a'+p['role']+'\x20('+p['host']+'.'+p['binding_field']+')\x0a',r+='\x0a-\x20Your\x20submission\x20means:\x20'+p['submission_meaning']+'\x0a',r+='-\x20If\x20it\x20PASSES:\x20'+p['on_pass']+'\x0a',r+='-\x20If\x20it\x20FAILS:\x20'+p['on_fail']+'\x0a',r+='-\x20Stakes:\x20'+p['stakes']+'\x0a');r+='\x0a##\x20Logic\x20tree\x0a\x0a```\x0a'+l['render']['tree_indented']+'\x0a```\x0a',r+='\x0a##\x20Lint\x20+\x20risk\x20assessment\x0a\x0a```\x0a'+formatLintResult(m)+'\x0a```\x0a';o&&(r+='\x0a##\x20Round-trip\x20verification\x20(vs\x20'+f+')\x0a\x0a'+o['summary']+'\x0a');const t=n;r+='\x0a##\x20Party\x20evaluation\x20(facts)\x0a',r+='\x0a\x20\x20•\x20Submission\x20requirements\x20(evidence\x20the\x20caller\x20must\x20submit):\x20'+t['submission_requirements']['length'];for(const D of t['submission_requirements']){r+='\x0a\x20\x20\x20\x20-\x20['+D['identifier']+']\x20'+(D['name']??'')+'\x20('+(D['object_type']??D['value_type']??'unknown')+')';}r+='\x0a\x20\x20•\x20On-chain\x20data\x20sources\x20read:\x20'+t['data_sources']['length'];for(const E of t['data_sources']){const F=E['is_mutable_onchain']?'\x20[MUTABLE\x20on-chain\x20—\x20who\x20controls\x20writes?]':'';r+='\x0a\x20\x20\x20\x20-\x20['+E['identifier']+']\x20'+(E['name']??'')+'\x20('+(E['object_type']??E['value_type']??E['kind'])+')'+F;}r+='\x0a\x20\x20•\x20Query\x20dependencies:\x20'+(t['query_dependencies']['length']>0x0?t['query_dependencies']['join'](',\x20'):'none');t['unresolved_queries']['length']>0x0&&(r+='\x0a\x20\x20•\x20UNRESOLVED\x20query\x20references\x20(not\x20in\x20the\x20GUARDQUERY\x20catalog):\x20'+t['unresolved_queries']['join'](',\x20'));r+='\x0a\x20\x20•\x20Time\x20conditions\x20(Clock):\x20'+(t['has_time_conditions']?'present':'none'),r+='\x0a\x20\x20•\x20Caller\x20identity\x20constraints\x20(Signer):\x20'+(t['has_signer_constraints']?'present':'none'),r+='\x0a\x20\x20•\x20Rely\x20composition\x20(other\x20Guards):\x20'+(t['has_rely_composition']?'present':'none'),r+='\x0a\x20\x20•\x20Lint:\x20'+m['summary']['errors']+'\x20error(s),\x20'+m['summary']['warnings']+'\x20warning(s),\x20ready='+m['summary']['ready'];if(q['length']>0x0){r+='\x0a\x0a##\x20Data-source\x20warnings\x0a';for(const G of q)r+='\x0a\x20\x20⚠\x20'+G+'\x0a';}const u={'action':'analyze_guard_semantics',...i?{'guard':i}:{},...j?{'guard_name':j}:{},...requiredSubmissionSlots(g['table'])?{'required_submission_slots':requiredSubmissionSlots(g['table'])}:{},...p?{'binding_semantics':{'action':k,'host':p['host'],'binding_field':p['binding_field'],'role':p['role'],'submission_meaning':p['submission_meaning'],'on_pass':p['on_pass'],'on_fail':p['on_fail'],'stakes':p['stakes']}}:{},'render':l['render'],'lint':m,...o?{'round_trip_diff':{'compare_with':f,'match':o['match'],'diffs':o['diffs'],'summary':o['summary']}}:{},'party_evaluation':n,...q['length']>0x0?{'data_source_warnings':q}:{}};return{'content':[{'type':'text','text':r}],'structuredContent':{'success':!![],'action':'analyze_guard_semantics','data':u,'message':'Guard\x20semantics\x20analysis\x20complete.'}};}
|
|
1
|
+
import{processSchemaQuery,analyzeGuardSemantics,formatLintResult}from'../../schema-query-impl/index.js';import{strictParse}from'../../schema/index.js';import{SchemaQueryInputSchema}from'../../schema/schema-query/index.js';import{GUARD_BINDING_SEMANTICS,loadGuardJsonFromChain,diffGuardSpecVsChain,requiredSubmissionSlots}from'../../knowledge/guard-submission-brief.js';export async function handleSchemaQuery(a){const b=strictParse(SchemaQueryInputSchema,a,'schema_query\x20input');if(b['action']==='analyze_guard_semantics')return handleAnalyzeGuardSemantics(b['guard'],b['binding'],b['network'],b['compare_with']);const c={'action':b['action'],'name':b['name'],'query':b['query'],'field_path':b['field_path'],'template':b['template'],'object_type':b['object_type'],'params':b['params'],'output_file':b['output_file']},d=processSchemaQuery(c);let e=d['message'];d['output_file_path']&&(e+='\x0a\x0a📄\x20Full\x20data\x20written\x20to:\x20'+d['output_file_path'],e+='\x0a\x20\x20\x20Use\x20the\x20Read\x20tool\x20to\x20access\x20the\x20file\x20content.',d['inline_summary']&&(e+='\x0a\x0a##\x20Inline\x20summary\x20(no\x20file\x20access\x20needed)\x0a\x0a'+d['inline_summary']));const f=d['data'];if(d['success']&&f)switch(c['action']){case'list':if(Array['isArray'](f)&&f['length']>0x0){e+='\x0a\x0aAll\x20available\x20schemas:\x0a';for(const g of f){e+='\x0a\x20\x20•\x20'+(g['name']??''),g['title']&&(e+='\x20-\x20'+g['title']),g['description']&&(e+='\x0a\x20\x20\x20\x20'+g['description']['slice'](0x0,0x64)+'...'),e+='\x0a';}}break;case'list_operations':if(Array['isArray'](f)&&f['length']>0x0){e+='\x0a\x0aOn-chain\x20operation\x20schemas:\x0a';for(const h of f){e+='\x0a\x20\x20•\x20'+(h['name']??''),h['title']&&(e+='\x20-\x20'+h['title']),h['description']&&(e+='\x0a\x20\x20\x20\x20'+h['description']['slice'](0x0,0x64)+'...'),e+='\x0a';}}break;case'get':e+='\x0a\x0a##\x20JSON\x20Schema\x0a\x0a',e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;case'get_output':e+='\x0a\x0a##\x20Output\x20JSON\x20Schema\x0a\x0a',e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;case'get_guard_templates':e+='\x0a\x0a##\x20Guard\x20Templates\x0a\x0a',e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;case'get_field':e+='\x0a\x0a##\x20Field\x20Schema\x0a\x0a',e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;case'search':if(Array['isArray'](f)&&f['length']>0x0){e+='\x0a\x0aFound\x20'+f['length']+'\x20schemas\x20matching\x20\x27'+(c['query']??'')+'\x27:\x0a';for(const i of f){e+='\x0a\x20\x20•\x20'+(i['name']??''),i['title']&&(e+='\x20-\x20'+i['title']),i['description']&&(e+='\x0a\x20\x20\x20\x20'+i['description']['slice'](0x0,0x64)+'...'),e+='\x0a';}}else e+='\x0a\x0aNo\x20schemas\x20found.\x20Try\x20\x27list\x27\x20to\x20browse\x20all\x20available\x20schemas,\x20or\x20use\x20a\x20broader\x20search\x20term.';break;case'get_tool_reference':{e+='\x0a\x0a##\x20MCP\x20Tool\x20Reference\x0a\x0a',e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;}case'get_guard_design_patterns':{e+='\x0a\x0a##\x20Guard\x20Design\x20Patterns\x0a\x0a',e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;}case'get_safety_rules':{e+='\x0a\x0a##\x20Safety\x20Rules\x20(sunk\x20from\x20wowok-safety\x20skill)\x0a\x0a',e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;}case'get_guard_queries':{if(Array['isArray'](f)&&f['length']>0x0){const j=new Map();for(const k of f){const l=k['objectType']??'?';j['set'](l,(j['get'](l)??0x0)+0x1);}e+='\x0a\x0aGUARDQUERY\x20catalog:\x20'+f['length']+'\x20entries\x20across\x20'+j['size']+'\x20object\x20types.\x0a';for(const [m,n]of[...j['entries']()]['sort']((o,p)=>p[0x1]-o[0x1])){e+='\x0a\x20\x20•\x20'+m+':\x20'+n+'\x20entries';}e+='\x0a\x0aFull\x20rows\x20(id,\x20name'+(f[0x0]['description']!==undefined?',\x20description':'')+',\x20returnType)\x20are\x20in\x20the\x20structured\x20content.\x20',f[0x0]['description']===undefined&&(e+='Add\x20query=\x27<keyword>\x27\x20for\x20descriptions,\x20or\x20output_file\x20to\x20dump\x20all\x20details.\x20'),e+='Prefer\x20NAME\x20references\x20in\x20Guard\x20trees\x20—\x20a\x20numeric\x20id\x20is\x20resolved\x20verbatim,\x20and\x20a\x20wrong-but-existing\x20id\x20silently\x20checks\x20a\x20different\x20field\x20(rndb58d8d\x20A2).';}break;}case'get_templates':{e+='\x0a\x0a##\x20Unified\x20Template\x20Registry\x20(92-review\x20D.2)\x0a\x0a';const o=f;if(Array['isArray'](o['templates'])&&!c['template']){e+='\x0a'+(o['total']??o['templates']['length'])+'\x20template(s).\x20',e+='Call\x20with\x20\x27template\x27=<id>\x20for\x20detail;\x20add\x20\x27params\x27\x20(JSON\x20string)\x20to\x20instantiate.\x0a';for(const p of o['templates']){e+='\x0a\x20\x20•\x20'+p['id']+'\x20['+p['object_type']+(p['instantiable']?'':',\x20guidance-only')+']\x20—\x20'+p['name']+'\x20('+(p['parameters']?.['length']??0x0)+'\x20params)';}e+='\x0a';}else e+='```json\x0a',e+=JSON['stringify'](f,null,0x2),e+='\x0a```\x0a';break;}default:throw new Error('Unknown\x20schema_query\x20action:\x20'+String(c['action']));}if(d['suggestions']&&d['suggestions']['length']>0x0){e+='\x0a\x0a💡\x20Suggestions:\x0a';for(const q of d['suggestions']){e+='\x20\x20•\x20'+q+'\x0a';}}return{'content':[{'type':'text','text':e}],'structuredContent':d};}function guardFetchGuidance(a,b){return'Fetch\x20the\x20live\x20Guard\x20definition\x20FIRST,\x20then\x20analyze\x20it\x20as\x20local\x20JSON:\x20call\x20query_toolkit\x20with\x20'+('query_type=\x27onchain_objects\x27,\x20objects=[\x22'+a+'\x22]\x20(add\x20no_cache:true\x20for\x20a\x20forced-fresh\x20read')+((b?',\x20network:\x27'+b+'\x27':'')+'),\x20then\x20pass\x20objects[0].table\x20+\x20objects[0].root\x20')+'as\x20the\x20\x27guard\x27\x20parameter\x20of\x20this\x20action.';}async function handleAnalyzeGuardSemantics(a,b,c,f){if(a===undefined||a===null)throw new Error('schema_query\x20action=\x27analyze_guard_semantics\x27\x20requires\x20the\x20\x27guard\x27\x20parameter\x20'+'(Guard\x20JSON\x20object,\x20JSON-encoded\x20string,\x20or\x20an\x20on-chain\x20Guard\x20address/LocalMark\x20name).');let g,h;if(typeof a==='string'){const v=a['trim'](),x=v['startsWith']('{')||v['startsWith']('[');if(x)try{g=JSON['parse'](v);}catch(y){throw new Error('analyze_guard_semantics:\x20\x27guard\x27\x20string\x20looks\x20like\x20JSON\x20but\x20failed\x20to\x20parse:\x20'+y['message']);}else h=v;}else g=a;let i,j;if(!g){if(!h)throw new Error('analyze_guard_semantics:\x20Guard\x20JSON\x20must\x20contain\x20at\x20least\x20\x27table\x27\x20(array)\x20and\x20\x27root\x27\x20(logic\x20tree\x20object).');const z=await loadGuardJsonFromChain(h,c);if(!z)throw new Error('analyze_guard_semantics:\x20could\x20not\x20load\x20a\x20Guard\x20definition\x20for\x20\x22'+h+'\x22\x20'+('(not\x20found,\x20not\x20a\x20Guard\x20object,\x20or\x20LocalMark\x20name\x20unresolvable\x20on\x20network\x20\x27'+(c??'current')+'\x27\x20—\x20')+'this\x20tool\x20could\x20not\x20resolve\x20it,\x20which\x20is\x20not\x20necessarily\x20a\x20wrong\x20address).\x20'+guardFetchGuidance(h,c));g=z['json'],i=z['guard'],j=z['name'];}if(!Array['isArray'](g['table'])||!g['root']||typeof g['root']!=='object')throw new Error(h?'analyze_guard_semantics:\x20the\x20object\x20at\x20\x22'+h+'\x22\x20does\x20not\x20expose\x20a\x20Guard\x20definition\x20shape\x20'+'(needs\x20\x27table\x27\x20(array)\x20+\x20\x27root\x27\x20(logic\x20tree\x20object)).\x20'+guardFetchGuidance(h,c):'analyze_guard_semantics:\x20Guard\x20JSON\x20must\x20contain\x20at\x20least\x20\x27table\x27\x20(array)\x20and\x20\x27root\x27\x20(logic\x20tree\x20object).');const k=b;k==='allocate'&&g&&!g['binding_hint']&&(g={...g,'binding_hint':{'host_object':'Service','binding_field':'order_allocators'}});let l;try{l=await analyzeGuardSemantics(g);}catch(A){throw new Error('analyze_guard_semantics:\x20failed\x20to\x20interpret\x20the\x20guard\x20payload\x20('+A['message']+').\x20'+(h?guardFetchGuidance(h,c):'If\x20this\x20payload\x20came\x20from\x20an\x20on-chain\x20object\x20rather\x20than\x20a\x20guard2file\x20export,\x20'+'call\x20query_toolkit\x20with\x20query_type=\x27onchain_objects\x27\x20on\x20the\x20object\x20ID,\x20then\x20pass\x20'+'objects[0].table\x20+\x20objects[0].root\x20as\x20the\x20\x27guard\x27\x20parameter.'));}const {lint:m,party_evaluation:n}=l;let o;if(f&&h===undefined){const B=await loadGuardJsonFromChain(f,c);if(!B)throw new Error('analyze_guard_semantics:\x20could\x20not\x20load\x20the\x20compare_with\x20Guard\x20\x22'+f+'\x22\x20'+('(not\x20found,\x20not\x20a\x20Guard\x20object,\x20or\x20LocalMark\x20name\x20unresolvable\x20on\x20network\x20\x27'+(c??'current')+'\x27).\x20')+guardFetchGuidance(f,c));o=diffGuardSpecVsChain(g,B['json']),!o['match']&&(m['diagnostics']['push']({'code':'RT-01','message':'ROUND-TRIP\x20MISMATCH\x20vs\x20'+f+':\x20the\x20on-chain\x20Guard\x20DIFFERS\x20from\x20this\x20spec\x20—\x20'+o['diffs']['join'](';\x20')+'.\x20The\x20lint\x20verdict\x20above\x20describes\x20a\x20Guard\x20that\x20does\x20NOT\x20exist\x20on-chain.\x20'+'Guards\x20are\x20create-frozen:\x20export\x20(guard2file),\x20inspect,\x20create\x20a\x20NEW\x20Guard\x20and\x20rebind.','severity':'error','source':'lint','location':{'path':'/'},'fix':{'description':'Align\x20the\x20local\x20spec\x20with\x20the\x20chain\x20copy\x20(guard2file\x20export),\x20or\x20create\x20a\x20corrected\x20Guard\x20and\x20rebind\x20its\x20hosts.','auto_fixable':![]}}),m['summary']['errors']+=0x1,m['summary']['ready']=![],m['summary']['next_step']='Resolve\x20the\x20ROUND-TRIP\x20MISMATCH\x20first\x20—\x20the\x20analyzed\x20spec\x20is\x20NOT\x20what\x20the\x20chain\x20stores.');}const p=k?GUARD_BINDING_SEMANTICS[k]:undefined,q=[];for(const C of n['data_sources']){C['is_mutable_onchain']&&q['push']('Table\x20['+C['identifier']+']'+(C['name']?'\x20\x22'+C['name']+'\x22':'')+'\x20reads\x20a\x20Repository\x20—\x20MUTABLE\x20on-chain;\x20verify\x20the\x20current\x20entry\x20before\x20relying\x20on\x20the\x20check');}n['has_time_conditions']&&q['push']('The\x20tree\x20contains\x20Clock\x20(time)\x20conditions\x20—\x20results\x20may\x20change\x20over\x20time');n['has_rely_composition']&&q['push']('This\x20Guard\x20composes\x20other\x20Guards\x20via\x20rely\x20—\x20each\x20relied\x20Guard\x27s\x20semantics\x20apply\x20too');let r='Guard\x20semantics\x20analysis\x20(evaluate\x20BEFORE\x20relying\x20on\x20this\x20Guard):\x0a';i&&(r+='\x0a**On-chain\x20Guard**:\x20'+(j??'')+'\x20'+i+'\x0a');p&&(r+='\x0a##\x20Business\x20slot\x0a\x0a'+p['role']+'\x20('+p['host']+'.'+p['binding_field']+')\x0a',r+='\x0a-\x20Your\x20submission\x20means:\x20'+p['submission_meaning']+'\x0a',r+='-\x20If\x20it\x20PASSES:\x20'+p['on_pass']+'\x0a',r+='-\x20If\x20it\x20FAILS:\x20'+p['on_fail']+'\x0a',r+='-\x20Stakes:\x20'+p['stakes']+'\x0a');r+='\x0a##\x20Logic\x20tree\x0a\x0a```\x0a'+l['render']['tree_indented']+'\x0a```\x0a',r+='\x0a##\x20Lint\x20+\x20risk\x20assessment\x0a\x0a```\x0a'+formatLintResult(m)+'\x0a```\x0a';o&&(r+='\x0a##\x20Round-trip\x20verification\x20(vs\x20'+f+')\x0a\x0a'+o['summary']+'\x0a');const t=n;r+='\x0a##\x20Party\x20evaluation\x20(facts)\x0a',r+='\x0a\x20\x20•\x20Submission\x20requirements\x20(evidence\x20the\x20caller\x20must\x20submit):\x20'+t['submission_requirements']['length'];for(const D of t['submission_requirements']){r+='\x0a\x20\x20\x20\x20-\x20['+D['identifier']+']\x20'+(D['name']??'')+'\x20('+(D['object_type']??D['value_type']??'unknown')+')';}r+='\x0a\x20\x20•\x20On-chain\x20data\x20sources\x20read:\x20'+t['data_sources']['length'];for(const E of t['data_sources']){const F=E['is_mutable_onchain']?'\x20[MUTABLE\x20on-chain\x20—\x20who\x20controls\x20writes?]':'';r+='\x0a\x20\x20\x20\x20-\x20['+E['identifier']+']\x20'+(E['name']??'')+'\x20('+(E['object_type']??E['value_type']??E['kind'])+')'+F;}r+='\x0a\x20\x20•\x20Query\x20dependencies:\x20'+(t['query_dependencies']['length']>0x0?t['query_dependencies']['join'](',\x20'):'none');t['unresolved_queries']['length']>0x0&&(r+='\x0a\x20\x20•\x20UNRESOLVED\x20query\x20references\x20(not\x20in\x20the\x20GUARDQUERY\x20catalog):\x20'+t['unresolved_queries']['join'](',\x20'));(t['unresolved_identifiers']?.['length']??0x0)>0x0&&(r+='\x0a\x20\x20•\x20DANGLING\x20table\x20references\x20—\x20ids\x20used\x20by\x20the\x20tree\x20but\x20NOT\x20defined\x20in\x20the\x20table:\x20'+t['unresolved_identifiers']['join'](',\x20')+'\x20(the\x20compiled\x20leg\x20will\x20be\x20unbound/always-false;\x20fix\x20tree↔table\x20pairing\x20BEFORE\x20binding\x20this\x20guard\x20to\x20a\x20machine\x20node)');r+='\x0a\x20\x20•\x20Time\x20conditions\x20(Clock):\x20'+(t['has_time_conditions']?'present':'none'),r+='\x0a\x20\x20•\x20Caller\x20identity\x20constraints\x20(Signer):\x20'+(t['has_signer_constraints']?'present':'none'),r+='\x0a\x20\x20•\x20Rely\x20composition\x20(other\x20Guards):\x20'+(t['has_rely_composition']?'present':'none'),r+='\x0a\x20\x20•\x20Lint:\x20'+m['summary']['errors']+'\x20error(s),\x20'+m['summary']['warnings']+'\x20warning(s),\x20ready='+m['summary']['ready'];if(q['length']>0x0){r+='\x0a\x0a##\x20Data-source\x20warnings\x0a';for(const G of q)r+='\x0a\x20\x20⚠\x20'+G+'\x0a';}const u={'action':'analyze_guard_semantics',...i?{'guard':i}:{},...j?{'guard_name':j}:{},...requiredSubmissionSlots(g['table'])?{'required_submission_slots':requiredSubmissionSlots(g['table'])}:{},...p?{'binding_semantics':{'action':k,'host':p['host'],'binding_field':p['binding_field'],'role':p['role'],'submission_meaning':p['submission_meaning'],'on_pass':p['on_pass'],'on_fail':p['on_fail'],'stakes':p['stakes']}}:{},'render':l['render'],'lint':m,...o?{'round_trip_diff':{'compare_with':f,'match':o['match'],'diffs':o['diffs'],'summary':o['summary']}}:{},'party_evaluation':n,...q['length']>0x0?{'data_source_warnings':q}:{}};return{'content':[{'type':'text','text':r}],'structuredContent':{'success':!![],'action':'analyze_guard_semantics','data':u,'message':'Guard\x20semantics\x20analysis\x20complete.'}};}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface StaleBuildDisclosure {
|
|
2
|
+
stale: boolean;
|
|
3
|
+
known: boolean;
|
|
4
|
+
actionable: boolean;
|
|
5
|
+
lag_minutes: number | null;
|
|
6
|
+
detail: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function staleBuildFace(srcDir?: string, distDir?: string): StaleBuildDisclosure;
|
|
9
|
+
export declare function staleBuildReportLine(srcDir?: string, distDir?: string): string | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{join,dirname}from'node:path';import{fileURLToPath}from'node:url';import{computeSrcDistStaleness}from'../upgrade-check.js';const __dirname=dirname(fileURLToPath(import.meta.url));export function staleBuildFace(a=join(__dirname,'..','..','..','src'),b=join(__dirname,'..','..','..','dist')){let c=null;try{c=computeSrcDistStaleness(a,b,{'srcExt':'.ts','distExt':'.js'});}catch{c=null;}if(!c)return{'stale':![],'known':![],'actionable':![],'lag_minutes':null,'detail':'Stale-build\x20state\x20UNKNOWN\x20—\x20the\x20source\x20and\x20build-output\x20trees\x20were\x20not\x20both\x20resolvable\x20(installed\x20dist-only\x20'+'package\x20or\x20a\x20build\x20in\x20progress),\x20so\x20template\x20freshness\x20could\x20not\x20be\x20verified.\x20NOT\x20actionable:\x20treat\x20the\x20'+'scan/plan\x20verdicts\x20as\x20unconfirmed\x20—\x20do\x20not\x20act\x20on\x20them\x20until\x20a\x20rebuild\x20resolves\x20freshness.'};if(!c['stale']){const e=c['basis']==='content-hash'?'dist\x20is\x20current\x20with\x20src\x20(content\x20stamp:\x20sha1\x20of\x20the\x20src\x20tree\x20matches\x20the\x20dist\x20build\x20stamp,\x20mtime-independent)':'dist\x20is\x20current\x20with\x20src\x20(newest\x20compiled\x20.js\x20vs\x20newest\x20source\x20.ts\x20mtime\x20lag\x20'+c['lag_minutes']+'\x20minute(s))';return{'stale':![],'known':!![],'actionable':!![],'lag_minutes':c['lag_minutes'],'detail':e+'\x20—\x20the\x20scan/plan\x20verdicts\x20reflect\x20this\x20workspace\x20checkout.'};}const d=c['basis']==='content-hash'?'NOT\x20ACTIONABLE\x20—\x20do\x20not\x20act\x20on\x20the\x20verdicts\x20in\x20this\x20response.\x20dist\x20was\x20built\x20from\x20DIFFERENT\x20src\x20content\x20than\x20the\x20current\x20tree\x20(content\x20stamp\x20mismatch\x20—\x20exact\x20hash\x20comparison,\x20mtime-independent),\x20so\x20every\x20scan/plan\x20conclusion\x20above\x20may\x20':'NOT\x20ACTIONABLE\x20—\x20do\x20not\x20act\x20on\x20the\x20verdicts\x20in\x20this\x20response.\x20dist\x20is\x20'+c['lag_minutes']+'\x20minute(s)\x20OLDER\x20'+'than\x20src\x20(newest\x20compiled\x20.js\x20vs\x20newest\x20source\x20.ts\x20mtime),\x20so\x20every\x20scan/plan\x20conclusion\x20above\x20may\x20';return{'stale':!![],'known':!![],'actionable':![],'lag_minutes':c['lag_minutes'],'detail':''+d+'describe\x20superseded\x20template\x20knowledge\x20(live\x20rq-tn-261030-8693be:\x20a\x20508-minute-stale\x20dist\x20produced\x20two\x20'+'false\x20defect\x20reports,\x20F-RQ-09/14).\x20Rebuild\x20(pnpm\x20build),\x20restart\x20the\x20MCP\x20process,\x20and\x20re-run\x20before\x20'+'acting\x20on\x20ANY\x20conclusion\x20here.'};}export function staleBuildReportLine(a,b){const c=staleBuildFace(a,b);if(!c['stale'])return undefined;return'REPORT\x20MAY\x20REFLECT\x20STALE\x20DIST\x20—\x20rebuild\x20before\x20concluding\x20'+('(dist\x20lags\x20the\x20workspace\x20src'+(c['lag_minutes']!=null?'\x20by\x20'+c['lag_minutes']+'\x20min':'')+';\x20')+'pnpm\x20build,\x20restart\x20the\x20MCP\x20process,\x20then\x20re-derive\x20any\x20verdict/report\x20read\x20from\x20this\x20response).';}
|