@wowok/agent-mcp 2.7.7 → 2.7.8
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/customer/index.d.ts +3 -4
- package/dist/customer/index.js +1 -1
- package/dist/customer/info-puzzle.js +1 -1
- package/dist/customer/order-monitor.d.ts +0 -9
- package/dist/customer/order-monitor.js +1 -1
- package/dist/customer/order-strategy.d.ts +0 -19
- package/dist/customer/order-strategy.js +1 -1
- package/dist/customer/reminder-system.d.ts +0 -5
- package/dist/customer/reminder-system.js +1 -1
- package/dist/evaluation/game-strategy.js +1 -1
- package/dist/evaluation/injection.d.ts +6 -0
- package/dist/evaluation/injection.js +1 -0
- package/dist/evaluation/node-game.js +1 -1
- package/dist/examples/machine-multisig-threshold.json +1 -0
- package/dist/harness/recover.js +1 -1
- package/dist/harness/types.d.ts +1 -1
- package/dist/harness/verify.js +1 -1
- package/dist/intent/enrich.js +1 -1
- package/dist/intent/matcher.js +1 -1
- package/dist/intent/types.d.ts +1 -1
- package/dist/intent/types.js +1 -1
- package/dist/knowledge/arbitration-ledger.js +1 -1
- package/dist/knowledge/contract-invariants.d.ts +53 -0
- package/dist/knowledge/contract-invariants.js +1 -0
- package/dist/knowledge/deployment-scanner.js +1 -1
- package/dist/knowledge/dynamic-pricing.d.ts +0 -2
- package/dist/knowledge/dynamic-pricing.js +1 -1
- package/dist/knowledge/event-semantics.d.ts +20 -0
- package/dist/knowledge/event-semantics.js +1 -0
- package/dist/knowledge/examples-scanner-cli.js +1 -1
- package/dist/knowledge/examples-scanner.js +1 -1
- package/dist/knowledge/glossary.js +1 -1
- package/dist/knowledge/guard-submission-prompt.js +1 -1
- package/dist/knowledge/immutability.d.ts +11 -0
- package/dist/knowledge/immutability.js +1 -0
- package/dist/knowledge/index.d.ts +12 -6
- package/dist/knowledge/index.js +1 -1
- package/dist/knowledge/industry-registry.js +1 -1
- package/dist/knowledge/intent-metrics.d.ts +1 -1
- package/dist/knowledge/jsonrpc-enum.d.ts +37 -0
- package/dist/knowledge/jsonrpc-enum.js +1 -0
- package/dist/knowledge/machine-confirm.js +1 -1
- package/dist/knowledge/machine-risk.js +1 -1
- package/dist/knowledge/machine-topology.d.ts +11 -0
- package/dist/knowledge/machine-topology.js +1 -1
- package/dist/knowledge/machine-translation.js +1 -1
- package/dist/knowledge/market-metrics.d.ts +11 -0
- package/dist/knowledge/market-metrics.js +1 -1
- package/dist/knowledge/mcp-schema-audit-cli.js +1 -1
- package/dist/knowledge/mcp-schema-audit.d.ts +1 -0
- package/dist/knowledge/mcp-schema-audit.js +1 -1
- package/dist/knowledge/messenger-guard-guidance.d.ts +17 -0
- package/dist/knowledge/messenger-guard-guidance.js +1 -0
- package/dist/knowledge/operation-dictionary.d.ts +18 -0
- package/dist/knowledge/operation-dictionary.js +1 -0
- package/dist/knowledge/service-ledger.js +1 -1
- package/dist/knowledge/service-risk.js +1 -1
- package/dist/knowledge/service-translation.js +1 -1
- package/dist/knowledge/supply-chain.d.ts +24 -0
- package/dist/knowledge/supply-chain.js +1 -0
- package/dist/knowledge/template-registry.js +1 -1
- package/dist/knowledge/tools-reference.js +1 -1
- package/dist/knowledge/trust-metrics.d.ts +27 -2
- package/dist/knowledge/trust-metrics.js +1 -1
- package/dist/knowledge/workflow-guidance.d.ts +22 -1
- package/dist/knowledge/workflow-guidance.js +1 -1
- package/dist/monitor/EventStore.d.ts +78 -0
- package/dist/monitor/EventStore.js +1 -0
- package/dist/participation/radar-core.d.ts +0 -1
- package/dist/participation/radar-core.js +1 -1
- package/dist/persona/address-format.d.ts +6 -0
- package/dist/persona/address-format.js +1 -0
- package/dist/persona/analyzer.js +1 -1
- package/dist/persona/index.d.ts +3 -0
- package/dist/persona/index.js +1 -1
- package/dist/persona/types.d.ts +1 -1
- package/dist/persona/types.js +1 -1
- package/dist/project/business-puzzle.js +1 -1
- package/dist/project/edit-planner.js +1 -1
- package/dist/project/evaluation.js +1 -1
- package/dist/project/graph-builder.js +1 -1
- package/dist/project/handlers.d.ts +2 -18
- package/dist/project/handlers.js +1 -1
- package/dist/project/index.js +1 -1
- package/dist/project/machine-nodes.d.ts +23 -0
- package/dist/project/machine-nodes.js +1 -1
- package/dist/project/machine-panorama.d.ts +41 -0
- package/dist/project/machine-panorama.js +1 -0
- package/dist/project/object-panorama.d.ts +179 -0
- package/dist/project/object-panorama.js +1 -0
- package/dist/project/object-type.d.ts +1 -0
- package/dist/project/object-type.js +1 -0
- package/dist/project/participation-radar.js +1 -1
- package/dist/project/semantic-assembler.js +1 -1
- package/dist/project/service-panorama.d.ts +180 -0
- package/dist/project/service-panorama.js +1 -0
- package/dist/project/stage-gate.d.ts +0 -1
- package/dist/project/stage-gate.js +1 -1
- package/dist/project/task-tracker.d.ts +4 -0
- package/dist/project/task-tracker.js +1 -1
- package/dist/role/derivation.d.ts +19 -2
- package/dist/role/derivation.js +1 -1
- package/dist/role/index.d.ts +2 -2
- package/dist/role/index.js +1 -1
- package/dist/role/model.js +1 -1
- package/dist/role/resolution.d.ts +16 -0
- package/dist/role/resolution.js +1 -1
- package/dist/role/types.d.ts +1 -1
- package/dist/role/types.js +1 -1
- package/dist/safety/confirm-gate.js +1 -1
- package/dist/schema/call/allocation.d.ts +1 -0
- package/dist/schema/call/arbitration.d.ts +4 -3
- package/dist/schema/call/arbitration.js +1 -1
- package/dist/schema/call/base.d.ts +16 -0
- package/dist/schema/call/base.js +1 -1
- package/dist/schema/call/bridge.d.ts +7 -0
- package/dist/schema/call/contact.d.ts +1 -0
- package/dist/schema/call/demand.d.ts +1 -0
- package/dist/schema/call/guard.d.ts +3 -0
- package/dist/schema/call/handler.js +1 -1
- package/dist/schema/call/machine.d.ts +2 -0
- package/dist/schema/call/machine.js +1 -1
- package/dist/schema/call/order.d.ts +1 -0
- package/dist/schema/call/payment.d.ts +1 -0
- package/dist/schema/call/permission.d.ts +1 -0
- package/dist/schema/call/personal.d.ts +38 -0
- package/dist/schema/call/personal.js +1 -1
- package/dist/schema/call/progress.d.ts +1 -0
- package/dist/schema/call/proof.d.ts +2 -0
- package/dist/schema/call/repository.d.ts +5 -4
- package/dist/schema/call/reward.d.ts +1 -12
- package/dist/schema/call/reward.js +1 -1
- package/dist/schema/call/semantic.d.ts +3 -2
- package/dist/schema/call/semantic.js +1 -1
- package/dist/schema/call/service.d.ts +1 -0
- package/dist/schema/call/service.js +1 -1
- package/dist/schema/call/treasury.d.ts +1 -0
- package/dist/schema/common/index.js +1 -1
- package/dist/schema/evaluation/index.d.ts +146 -0
- package/dist/schema/evaluation/index.js +1 -1
- package/dist/schema/index.d.ts +1 -0
- package/dist/schema/index.js +1 -1
- package/dist/schema/intent-radar/index.d.ts +30 -3
- package/dist/schema/intent-radar/index.js +1 -1
- package/dist/schema/local/index.d.ts +9 -0
- package/dist/schema/local/index.js +1 -1
- package/dist/schema/messenger/index.d.ts +54 -0
- package/dist/schema/messenger/index.js +1 -1
- package/dist/schema/operations.d.ts +864 -8
- package/dist/schema/operations.js +1 -1
- package/dist/schema/permission/index.d.ts +17 -0
- package/dist/schema/permission/index.js +1 -1
- package/dist/schema/project/index.d.ts +6 -0
- package/dist/schema/project/index.js +1 -1
- package/dist/schema/query/index.d.ts +658 -56
- package/dist/schema/query/index.js +1 -1
- package/dist/schema/schema-version.js +1 -1
- package/dist/schema/trust/index.d.ts +17 -0
- package/dist/schema/trust/index.js +1 -1
- package/dist/schema/watch/index.d.ts +204 -0
- package/dist/schema/watch/index.js +1 -0
- package/dist/schema/workflow/index.d.ts +301 -0
- package/dist/schema/workflow/index.js +1 -1
- package/dist/schema-query-impl/index.js +1 -1
- package/dist/schemas/account_operation.output.json +5 -2
- package/dist/schemas/bridge_operation.output.json +5 -2
- package/dist/schemas/bridge_operation.schema.json +25 -9
- package/dist/schemas/evaluation_operation.output.json +276 -1
- package/dist/schemas/evaluation_operation.schema.json +307 -0
- package/dist/schemas/guard2file.schema.json +6 -2
- package/dist/schemas/index.json +13 -1
- package/dist/schemas/intent_radar.output.json +20 -2
- package/dist/schemas/intent_radar.schema.json +10 -1
- package/dist/schemas/local_info_operation.output.json +5 -2
- package/dist/schemas/local_mark_operation.output.json +5 -2
- package/dist/schemas/machineNode2file.schema.json +6 -2
- package/dist/schemas/messenger_operation.output.json +105 -2
- package/dist/schemas/messenger_operation.schema.json +98 -0
- package/dist/schemas/monitor_events.output.json +1360 -0
- package/dist/schemas/monitor_events.schema.json +62 -0
- package/dist/schemas/onchain_events.output.json +237 -14
- package/dist/schemas/onchain_events.schema.json +20 -0
- package/dist/schemas/onchain_operations.output.json +10 -5
- package/dist/schemas/onchain_operations.schema.json +511 -419
- package/dist/schemas/onchain_operations_allocation.schema.json +11 -7
- package/dist/schemas/onchain_operations_arbitration.schema.json +14 -9
- package/dist/schemas/onchain_operations_contact.schema.json +9 -5
- package/dist/schemas/onchain_operations_demand.schema.json +9 -5
- package/dist/schemas/onchain_operations_gen_passport.schema.json +6 -2
- package/dist/schemas/onchain_operations_gen_proof.schema.json +6 -2
- package/dist/schemas/onchain_operations_guard.schema.json +6 -2
- package/dist/schemas/onchain_operations_machine.schema.json +14 -10
- package/dist/schemas/onchain_operations_order.schema.json +9 -5
- package/dist/schemas/onchain_operations_payment.schema.json +7 -3
- package/dist/schemas/onchain_operations_permission.schema.json +9 -5
- package/dist/schemas/onchain_operations_personal.schema.json +44 -2
- package/dist/schemas/onchain_operations_progress.schema.json +9 -5
- package/dist/schemas/onchain_operations_proof.schema.json +6 -2
- package/dist/schemas/onchain_operations_repository.schema.json +290 -305
- package/dist/schemas/onchain_operations_reward.schema.json +14 -10
- package/dist/schemas/onchain_operations_service.schema.json +17 -13
- package/dist/schemas/onchain_operations_treasury.schema.json +14 -10
- package/dist/schemas/onchain_table_data.output.json +3750 -208
- package/dist/schemas/onchain_table_data.schema.json +311 -0
- package/dist/schemas/permission_operation.output.json +32 -0
- package/dist/schemas/project_operation.schema.json +14 -8
- package/dist/schemas/query_toolkit.output.json +405 -320
- package/dist/schemas/query_toolkit.schema.json +139 -1
- package/dist/schemas/trust_score.output.json +38 -0
- package/dist/schemas/trust_score.schema.json +32 -0
- package/dist/schemas/watch_operation.output.json +827 -0
- package/dist/schemas/watch_operation.schema.json +145 -0
- package/dist/schemas/workflow_operation.output.json +263 -5
- package/dist/schemas/workflow_operation.schema.json +597 -2
- package/dist/tools/handlers/config.js +1 -1
- package/dist/tools/handlers/evaluation.js +1 -1
- package/dist/tools/handlers/intent-radar.js +1 -1
- package/dist/tools/handlers/messenger.js +1 -1
- package/dist/tools/handlers/monitor.d.ts +2 -0
- package/dist/tools/handlers/monitor.js +1 -0
- package/dist/tools/handlers/onchain.js +1 -1
- package/dist/tools/handlers/permission.js +1 -1
- package/dist/tools/handlers/project.js +1 -1
- package/dist/tools/handlers/query.js +1 -1
- package/dist/tools/handlers/trust.d.ts +14 -0
- package/dist/tools/handlers/trust.js +1 -1
- package/dist/tools/handlers/watch.d.ts +2 -0
- package/dist/tools/handlers/watch.js +1 -0
- package/dist/tools/handlers/workflow.js +1 -1
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.js +1 -1
- package/dist/tools/shared.js +1 -1
- package/package.json +2 -2
- package/dist/customer/post-purchase.d.ts +0 -44
- package/dist/customer/post-purchase.js +0 -1
- package/dist/project/migration.d.ts +0 -22
- package/dist/project/migration.js +0 -1
- package/dist/project/rollback-policy.d.ts +0 -45
- package/dist/project/rollback-policy.js +0 -1
package/dist/tools/shared.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{confirmGate}from'../safety/confirm-gate.js';import{renderPreview}from'../safety/preview.js';import{validateOperation,hasBlockingViolations,getWarningViolations}from'../knowledge/index.js';import{getHarness}from'../harness/index.js';import{isEnabled as
|
|
1
|
+
import{confirmGate}from'../safety/confirm-gate.js';import{renderPreview}from'../safety/preview.js';import{validateOperation,hasBlockingViolations,getWarningViolations}from'../knowledge/index.js';import{getHarness}from'../harness/index.js';import{isEnabled as a389a}from'../config/index.js';import{classifyError,buildDataSemantic}from'../schema/call/semantic.js';import{strictParse}from'../schema/index.js';export function withHarness(a,b,c){if(!a389a('harness'))return a;try{const d=getHarness(),e=d['expect'](b,c,a['operation_type'],a['data']);return{...a,'harness':d,'expected':e,'operation_id':a['operation_type']+'_'+Date['now']()};}catch{return a;}}export function wrapLocalHandler(a){const {schema:b,operationFn:c,parseLabel:d,buildContext:e}=a;return async f=>{let g;try{g=strictParse(b,f,d);const h=await c(g),i=e(g);return{'content':[{'type':'text','text':JSON['stringify'](h)}],'structuredContent':{'result':{'status':'success','data':h},'semantic':buildDataSemantic(h,i)}};}catch(j){const k=j instanceof Error?j['message']:String(j),l=g?e(g):undefined,m=classifyError(k),n={'status':'error','error':k};if(m['error_code']!==undefined)n['error_code']=m['error_code'];if(m['retryable']!==undefined)n['retryable']=m['retryable'];if(m['recovery_hint']!==undefined)n['recovery_hint']=m['recovery_hint'];return{'content':[{'type':'text','text':'Error:\x20'+k}],'structuredContent':{'result':n,'semantic':buildDataSemantic(undefined,l,!![],k)}};}};}export function buildPendingConfirmation(a,b,c,d){const e=confirmGate(a,b,c,c?.['user_intent_phrases'],d);if(e['pass'])return{'content':[],'structuredContent':null};const f=e['preview'],g=renderPreview(f),h={'message':g,'result':{'type':'pending_confirmation','preview':f,'rule_id':e['rule_id']},'semantic':{'intent':a+'_awaiting_confirmation','status':'pending_input','summary':'Operation\x20blocked\x20by\x20ConfirmGate\x20('+e['level']+').\x20Review\x20the\x20preview\x20and\x20re-call\x20with\x20env.confirmed=true\x20to\x20proceed.','next_actions':[{'action':'confirm:\x20re-call\x20the\x20SAME\x20operation\x20with\x20env.confirmed=true','reason':'ConfirmGate\x20rule\x20\x27'+e['rule_id']+'\x27\x20matched.\x20The\x20operation\x20was\x20NOT\x20executed.','tool':'onchain_operations','priority':'required'}],'warnings':f['warnings']??[]}};return{'content':[{'type':'text','text':g}],'structuredContent':h};}export function buildConstraintError(a,b){const c=b['filter'](g=>g['severity']==='error'),d=c['map'](g=>'\x20\x20•\x20['+g['field']+']\x20'+g['message'])['join']('\x0a'),e='Pre-call\x20constraint\x20violations\x20for\x20\x27'+a+'\x27:\x0a'+d+'\x0a\x0aFix\x20the\x20listed\x20field(s)\x20and\x20retry.',f={'message':e,'result':{'type':'error','error':e,'error_code':'invalid_parameter','retryable':![],'recovery_hint':'Review\x20the\x20constraint\x20violations\x20above\x20and\x20correct\x20the\x20corresponding\x20fields.'}};return{'content':[{'type':'text','text':e}],'structuredContent':f};}export function buildClassifiedErrorResult(a,b,c){const d={...a,'error':b};if(c['error_code']!==undefined)d['error_code']=c['error_code'];if(c['retryable']!==undefined)d['retryable']=c['retryable'];if(c['recovery_hint']!==undefined)d['recovery_hint']=c['recovery_hint'];return d;}export{validateOperation,hasBlockingViolations,getWarningViolations};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wowok/agent-mcp",
|
|
3
|
-
"version": "2.7.
|
|
3
|
+
"version": "2.7.8",
|
|
4
4
|
"description": "Making It Easy for AI Agents to Communicate, Collaborate, Trade, and Trust.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"license": "Apache-2.0",
|
|
51
51
|
"dependencies": {
|
|
52
52
|
"@modelcontextprotocol/server": "^2.0.0",
|
|
53
|
-
"@wowok/wowok": "2.7.
|
|
53
|
+
"@wowok/wowok": "2.7.8",
|
|
54
54
|
"lodash": "^4.18.1",
|
|
55
55
|
"zod": "^4.2.0"
|
|
56
56
|
},
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import type { InfoPuzzle } from "./types.js";
|
|
2
|
-
import { CUSTOMER_INTELLIGENCE_VERSION } from "./types.js";
|
|
3
|
-
import { type TokenDisplayHint } from "../knowledge/fund-layer.js";
|
|
4
|
-
export type PostPurchasePhase = "refund_tracking" | "quality_issue" | "merchant_unreachable" | "arbitration_support";
|
|
5
|
-
export interface PostPurchaseContext {
|
|
6
|
-
phase: PostPurchasePhase;
|
|
7
|
-
order_id: string;
|
|
8
|
-
service_id: string;
|
|
9
|
-
puzzle?: InfoPuzzle;
|
|
10
|
-
order_amount?: bigint;
|
|
11
|
-
refunded_amount?: bigint;
|
|
12
|
-
token?: TokenDisplayHint;
|
|
13
|
-
wip_hash?: string;
|
|
14
|
-
original_wip_hash?: string;
|
|
15
|
-
last_merchant_reply_at?: number;
|
|
16
|
-
now: number;
|
|
17
|
-
arbitration_initiated?: boolean;
|
|
18
|
-
arb_window_days?: number;
|
|
19
|
-
evidence?: string[];
|
|
20
|
-
has_arbitration?: boolean;
|
|
21
|
-
refund_requested?: boolean;
|
|
22
|
-
}
|
|
23
|
-
export interface PostPurchaseAction {
|
|
24
|
-
id: string;
|
|
25
|
-
phase: PostPurchasePhase;
|
|
26
|
-
priority: "required" | "recommended" | "info";
|
|
27
|
-
title: string;
|
|
28
|
-
message: string;
|
|
29
|
-
next_step?: string;
|
|
30
|
-
tool?: string;
|
|
31
|
-
deadline?: number;
|
|
32
|
-
}
|
|
33
|
-
export declare function generatePostPurchaseAdvice(ctx: PostPurchaseContext): PostPurchaseAction[];
|
|
34
|
-
export declare function trackRefund(ctx: PostPurchaseContext): PostPurchaseAction[];
|
|
35
|
-
export declare function handleQualityIssue(ctx: PostPurchaseContext): PostPurchaseAction[];
|
|
36
|
-
export declare function handleMerchantUnreachable(ctx: PostPurchaseContext): PostPurchaseAction[];
|
|
37
|
-
export declare function arbitrationSupport(ctx: PostPurchaseContext): PostPurchaseAction[];
|
|
38
|
-
export declare function generateArbitrationTemplate(ctx: PostPurchaseContext): {
|
|
39
|
-
title: string;
|
|
40
|
-
description: string;
|
|
41
|
-
evidence_required: string[];
|
|
42
|
-
claim: string;
|
|
43
|
-
};
|
|
44
|
-
export { CUSTOMER_INTELLIGENCE_VERSION };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{CUSTOMER_INTELLIGENCE_VERSION}from'./types.js';import{formatAmountText}from'../knowledge/fund-layer.js';export function generatePostPurchaseAdvice(a){switch(a['phase']){case'refund_tracking':return trackRefund(a);case'quality_issue':return handleQualityIssue(a);case'merchant_unreachable':return handleMerchantUnreachable(a);case'arbitration_support':return arbitrationSupport(a);}}export function trackRefund(a){const b=[],c=a['order_amount']??0x0n,d=a['refunded_amount']??0x0n;if(c>0x0n&&d>=c)return b['push']({'id':'refund_complete','phase':'refund_tracking','priority':'info','title':'Refund\x20complete','message':'✅\x20Order\x20'+a['order_id']+'\x20refund\x20fully\x20received\x20('+formatAmountText(d,a['token']?.['decimals'],a['token']?.['symbol'])+')','next_step':'You\x20can\x20close\x20post-purchase\x20tracking;\x20recommend\x20submitting\x20an\x20order\x20review'}),b;if(d>0x0n&&d<c){const f=c-d;return b['push']({'id':'refund_partial','phase':'refund_tracking','priority':'required','title':'Refund\x20incomplete','message':'⚠️\x20Order\x20'+a['order_id']+'\x20only\x20refunded\x20'+formatAmountText(d,a['token']?.['decimals'],a['token']?.['symbol'])+'\x20of\x20'+formatAmountText(c,a['token']?.['decimals'],a['token']?.['symbol'])+';\x20the\x20difference\x20of\x20'+formatAmountText(f,a['token']?.['decimals'],a['token']?.['symbol'])+'\x20has\x20not\x20been\x20received','next_step':'Urge\x20the\x20merchant\x20via\x20Messenger\x20to\x20make\x20up\x20the\x20difference,\x20or\x20initiate\x20arbitration\x20to\x20recover\x20it','tool':'messenger_send'}),b;}if(d===0x0n&&a['refund_requested']===!![])return b['push']({'id':'refund_waiting','phase':'refund_tracking','priority':'recommended','title':'Waiting\x20for\x20merchant\x20refund','message':'⏳\x20Order\x20'+a['order_id']+'\x20refund\x20has\x20been\x20requested;\x20waiting\x20for\x20the\x20merchant\x20to\x20trigger\x20the\x20refund\x20Allocator','next_step':'If\x20not\x20received\x20within\x2048\x20hours,\x20recommend\x20urging\x20via\x20Messenger\x20or\x20initiating\x20arbitration','tool':'query_toolkit'}),b;const e=a['puzzle']?.['workflow_analysis']?.['has_refund_path']??![];if(d===0x0n&&a['refund_requested']!==!![]&&e)return b['push']({'id':'refund_trigger_available','phase':'refund_tracking','priority':'recommended','title':'Can\x20trigger\x20refund\x20via\x20Allocator','message':'ℹ️\x20Order\x20'+a['order_id']+'\x20has\x20a\x20refund\x20path;\x20you\x20can\x20trigger\x20the\x20refund\x20Allocator\x20to\x20refund','next_step':'Query\x20the\x20refund\x20Allocator\x20trigger\x20conditions\x20via\x20query_toolkit\x20and\x20apply\x20for\x20a\x20refund','tool':'query_toolkit'}),b;return b['push']({'id':'refund_no_path','phase':'refund_tracking','priority':'required','title':'No\x20refund\x20path;\x20arbitration\x20required','message':'🔴\x20Order\x20'+a['order_id']+'\x20has\x20no\x20refund\x20Allocator\x20path;\x20funds\x20must\x20be\x20recovered\x20via\x20arbitration','next_step':'Switch\x20to\x20the\x20arbitration_support\x20phase\x20and\x20submit\x20an\x20arbitration\x20application','tool':'mark_arbitration'}),b;}export function handleQualityIssue(a){const b=[];a['original_wip_hash']&&a['wip_hash']&&a['original_wip_hash']!==a['wip_hash']&&b['push']({'id':'quality_wip_mismatch','phase':'quality_issue','priority':'required','title':'WIP\x20hash\x20mismatch\x20detected','message':'🔴\x20Order\x20'+a['order_id']+'\x20WIP\x20hash\x20differs\x20from\x20the\x20one\x20at\x20order\x20time;\x20the\x20deliverable\x20may\x20have\x20been\x20changed.\x0a'+('\x20\x20Original:\x20'+a['original_wip_hash']+'\x0a')+('\x20\x20Current:\x20'+a['wip_hash']),'next_step':'Re-verify\x20the\x20WIP\x20via\x20query_toolkit\x20and\x20initiate\x20arbitration\x20immediately','tool':'query_toolkit'});!a['wip_hash']&&b['push']({'id':'quality_wip_missing','phase':'quality_issue','priority':'recommended','title':'Require\x20merchant\x20to\x20provide\x20WIP\x20hash\x20verification','message':'⚠️\x20Order\x20'+a['order_id']+'\x20is\x20missing\x20the\x20current\x20WIP\x20hash;\x20deliverable\x20integrity\x20cannot\x20be\x20verified','next_step':'Request\x20the\x20latest\x20WIP\x20hash\x20via\x20Messenger\x20and\x20compare\x20it\x20with\x20the\x20original\x20hash','tool':'messenger_send'});const c=a['evidence']?.['length']??0x0;if(c===0x0)b['push']({'id':'quality_collect_evidence','phase':'quality_issue','priority':'recommended','title':'Collect\x20evidence:\x20screenshots,\x20chat\x20logs,\x20deliverable\x20samples','message':'📋\x20Order\x20'+a['order_id']+'\x20has\x20no\x20evidence\x20collected\x20yet.\x20Recommend\x20collecting\x20immediately:\x0a'+'\x20\x20•\x20Deliverable\x20screenshots\x20/\x20screen\x20recordings\x0a'+'\x20\x20•\x20Messenger\x20chat\x20logs\x20(export\x20WTS\x20evidence)\x0a'+'\x20\x20•\x20Deliverable\x20samples\x20or\x20test\x20results','next_step':'Generate\x20a\x20WTS\x20evidence\x20file\x20via\x20messenger_mark_evidence','tool':'messenger_mark_evidence'});else c<0x3&&b['push']({'id':'quality_supplement_evidence','phase':'quality_issue','priority':'recommended','title':'Supplement\x20more\x20evidence\x20(currently\x20'+c+'\x20item(s);\x20recommend\x20≥3)','message':'⚠️\x20Order\x20'+a['order_id']+'\x20has\x20collected\x20'+c+'\x20item(s)\x20of\x20evidence;\x20recommend\x20supplementing\x20to\x20at\x20least\x203\x20to\x20strengthen\x20the\x20arbitration\x20case.\x0a'+('\x20\x20Current\x20evidence:\x20'+(a['evidence']?.['join']('\x20/\x20')??'none')),'next_step':'Add\x20screenshots,\x20chat\x20logs,\x20or\x20third-party\x20appraisal\x20reports','tool':'messenger_mark_evidence'});return b['length']===0x0&&b['push']({'id':'quality_ok','phase':'quality_issue','priority':'info','title':'Quality\x20verification\x20passed','message':'✅\x20Order\x20'+a['order_id']+'\x20WIP\x20hash\x20matches\x20the\x20original,\x20and\x20evidence\x20is\x20complete\x20('+c+'\x20item(s))','next_step':'You\x20can\x20proceed\x20with\x20the\x20acceptance\x20workflow'}),b;}export function handleMerchantUnreachable(a){const b=[],c=a['last_merchant_reply_at'],d=c!==undefined?Math['floor']((a['now']-c)/(0x18*0x3c*0x3c*0x3e8)):Infinity,e=a['has_arbitration']??a['puzzle']?.['workflow_analysis']?.['has_arbitration_path']??![];if(d>0x7)return e?b['push']({'id':'unreachable_arb_recommend','phase':'merchant_unreachable','priority':'required','title':'Recommend\x20initiating\x20arbitration','message':'🔴\x20Order\x20'+a['order_id']+'\x20merchant\x20has\x20been\x20unreachable\x20for\x20'+d+'\x20days;\x20funds\x20may\x20be\x20frozen.\x20Recommend\x20initiating\x20arbitration\x20immediately.','next_step':'Switch\x20to\x20the\x20arbitration_support\x20phase\x20and\x20submit\x20an\x20arbitration\x20application','tool':'mark_arbitration'}):b['push']({'id':'unreachable_no_arb','phase':'merchant_unreachable','priority':'required','title':'No\x20arbitration\x20channel;\x20funds\x20may\x20be\x20frozen;\x20recommend\x20contacting\x20WoWok\x20officials','message':'🔴\x20Order\x20'+a['order_id']+'\x20merchant\x20has\x20been\x20unreachable\x20for\x20'+d+'\x20days,\x20and\x20no\x20arbitration\x20channel\x20is\x20configured;\x20funds\x20may\x20be\x20frozen\x20long-term.\x20Recommend\x20contacting\x20WoWok\x20officials\x20for\x20assistance.','next_step':'Contact\x20WoWok\x20official\x20support\x20and\x20provide\x20the\x20order\x20and\x20communication\x20records'}),b;if(d>0x3)return b['push']({'id':'unreachable_urge','phase':'merchant_unreachable','priority':'recommended','title':'Persistent\x20no\x20response;\x20send\x20a\x20follow-up\x20message','message':'⚠️\x20Order\x20'+a['order_id']+'\x20merchant\x20has\x20not\x20replied\x20for\x20'+d+'\x20days;\x20recommend\x20sending\x20a\x20follow-up\x20message\x20via\x20Messenger\x20and\x20keeping\x20a\x20record','next_step':'If\x20there\x20is\x20still\x20no\x20reply\x20within\x203\x20days,\x20initiate\x20arbitration','tool':'messenger_send'}),b;return b['push']({'id':'unreachable_wait','phase':'merchant_unreachable','priority':'info','title':'Merchant\x20may\x20be\x20busy;\x20await\x20reply','message':'ℹ️\x20Order\x20'+a['order_id']+'\x20merchant\x20'+(d===Infinity?'has\x20not\x20replied\x20yet':'has\x20not\x20replied\x20for\x20'+d+'\x20day(s)')+';\x20may\x20be\x20busy.\x20Recommend\x20waiting\x20another\x201-2\x20days','next_step':'If\x20there\x20is\x20still\x20no\x20reply\x20after\x203\x20days,\x20send\x20a\x20follow-up\x20message'}),b;}export function arbitrationSupport(a){const b=[],c=a['arbitration_initiated']===!![],d=a['evidence']?.['length']??0x0,e=a['arb_window_days']??0x0;if(!c)return b['push']({'id':'arb_not_initiated','phase':'arbitration_support','priority':'required','title':'Recommend\x20initiating\x20an\x20arbitration\x20application','message':'🔔\x20Order\x20'+a['order_id']+'\x20has\x20not\x20initiated\x20arbitration.\x20Recommend\x20generating\x20an\x20arbitration\x20application\x20template\x20and\x20submitting\x20it\x20immediately.','next_step':'Call\x20generateArbitrationTemplate\x20to\x20generate\x20the\x20application\x20template','tool':'mark_arbitration'}),e>0x0&&e<=0x7&&b['push']({'id':'arb_window_closing_soon','phase':'arbitration_support','priority':'required','title':'Arbitration\x20window\x20will\x20close\x20in\x20'+e+'\x20day(s)','message':'⏰\x20Order\x20'+a['order_id']+'\x20arbitration\x20application\x20window\x20has\x20only\x20'+e+'\x20day(s)\x20left;\x20please\x20submit\x20the\x20arbitration\x20application\x20as\x20soon\x20as\x20possible','next_step':'Submit\x20the\x20arbitration\x20application\x20immediately','deadline':a['now']+e*0x18*0x3c*0x3c*0x3e8}),b;e>0x0&&e<=0x3&&b['push']({'id':'arb_window_urgent','phase':'arbitration_support','priority':'required','title':'Arbitration\x20window\x20about\x20to\x20close','message':'⏰\x20Order\x20'+a['order_id']+'\x20arbitration\x20window\x20has\x20only\x20'+e+'\x20day(s)\x20left;\x20please\x20supplement\x20evidence\x20and\x20follow\x20up\x20on\x20voting\x20progress\x20as\x20soon\x20as\x20possible','next_step':'Immediately\x20supplement\x20evidence\x20and\x20query\x20arbitration\x20progress','tool':'query_toolkit','deadline':a['now']+e*0x18*0x3c*0x3c*0x3e8});if(d===0x0)b['push']({'id':'arb_no_evidence','phase':'arbitration_support','priority':'required','title':'Supplement\x20evidence','message':'📋\x20Order\x20'+a['order_id']+'\x20arbitration\x20has\x20been\x20initiated\x20but\x20no\x20evidence\x20is\x20recorded.\x20Recommend\x20collecting\x20immediately:\x0a'+'\x20\x20•\x20Messenger\x20chat\x20logs\x0a'+'\x20\x20•\x20WIP\x20hash\x20comparison\x20records\x0a'+'\x20\x20•\x20Progress\x20stall\x20screenshots','next_step':'Generate\x20an\x20evidence\x20file\x20via\x20messenger_mark_evidence\x20and\x20submit\x20it','tool':'messenger_mark_evidence'});else d<0x3&&b['push']({'id':'arb_supplement_evidence','phase':'arbitration_support','priority':'recommended','title':'Supplement\x20more\x20evidence\x20to\x20strengthen\x20the\x20arbitration\x20case\x20(currently\x20'+d+'\x20item(s))','message':'⚠️\x20Order\x20'+a['order_id']+'\x20has\x20submitted\x20'+d+'\x20item(s)\x20of\x20evidence;\x20recommend\x20supplementing\x20to\x20at\x20least\x203.\x0a'+('\x20\x20Current\x20evidence:\x20'+(a['evidence']?.['join']('\x20/\x20')??'none')),'next_step':'Add\x20third-party\x20appraisals,\x20chat\x20logs,\x20or\x20deliverable\x20screenshots','tool':'messenger_mark_evidence'});return d>=0x3&&(e===0x0||e>0x3)&&b['push']({'id':'arb_monitor_progress','phase':'arbitration_support','priority':'info','title':'Arbitration\x20in\x20progress;\x20continuously\x20monitor\x20voting\x20progress','message':'📊\x20Order\x20'+a['order_id']+'\x20arbitration\x20has\x20been\x20initiated,\x20with\x20'+d+'\x20item(s)\x20of\x20evidence\x20complete.\x20Recommend\x20periodically\x20querying\x20voting\x20progress\x20and\x20preparing\x20supplemental\x20evidence.','next_step':'Query\x20arbitration\x20voting\x20status\x20via\x20query_toolkit','tool':'query_toolkit'}),b;}export function generateArbitrationTemplate(a){const b=phaseToLabel(a['phase']),c=a['evidence']?.['length']??0x0,d='Order\x20'+a['order_id']+'\x20Arbitration\x20Application\x20—\x20'+b,e=[];e['push']('Order\x20ID:\x20'+a['order_id']),e['push']('Service\x20ID:\x20'+a['service_id']),e['push']('Dispute\x20type:\x20'+b);switch(a['phase']){case'refund_tracking':e['push']('Dispute\x20summary:\x20The\x20merchant\x20did\x20not\x20refund\x20as\x20required.\x20Order\x20amount\x20'+(a['order_amount']!==undefined?formatAmountText(a['order_amount'],a['token']?.['decimals'],a['token']?.['symbol']):'unknown')+',\x20refunded\x20'+formatAmountText(a['refunded_amount']??0x0n,a['token']?.['decimals'],a['token']?.['symbol'])+'.');break;case'quality_issue':e['push']('Dispute\x20summary:\x20The\x20deliverable\x20has\x20quality\x20issues.\x20Original\x20WIP\x20hash:\x20'+(a['original_wip_hash']??'unknown')+',\x20current:\x20'+(a['wip_hash']??'unknown')+'.');break;case'merchant_unreachable':e['push']('Dispute\x20summary:\x20The\x20merchant\x20has\x20been\x20unreachable\x20for\x20a\x20long\x20time.\x20Last\x20reply\x20time:\x20'+(a['last_merchant_reply_at']?new Date(a['last_merchant_reply_at'])['toISOString']():'unknown')+'.');break;case'arbitration_support':e['push']('Dispute\x20summary:\x20See\x20the\x20phase\x20records\x20above.');break;}e['push']('Evidence\x20collected:\x20'+c+'\x20item(s)');const f=e['join']('\x0a'),g=['Messenger\x20communication\x20logs\x20(export\x20WTS\x20evidence\x20file)','Order\x20creation\x20and\x20payment\x20proof','Progress\x20node\x20advancement\x20records'];switch(a['phase']){case'quality_issue':g['push']('WIP\x20hash\x20comparison\x20record\x20(original\x20vs\x20current)'),g['push']('Deliverable\x20screenshots\x20or\x20samples');break;case'merchant_unreachable':g['push']('Unreachable\x20duration\x20record\x20(based\x20on\x20last_merchant_reply_at)'),g['push']('Follow-up\x20message\x20sending\x20records');break;case'refund_tracking':g['push']('Refund\x20application\x20record'),g['push']('Refund\x20difference\x20calculation\x20proof');break;}const h=buildClaim(a);return{'title':d,'description':f,'evidence_required':g,'claim':h};}function phaseToLabel(a){switch(a){case'refund_tracking':return'Refund\x20dispute';case'quality_issue':return'Quality\x20issue';case'merchant_unreachable':return'Merchant\x20unreachable';case'arbitration_support':return'Arbitration\x20support';}}function buildClaim(a){switch(a['phase']){case'refund_tracking':{const b=a['order_amount']??0x0n,c=a['refunded_amount']??0x0n,d=b-c;if(c===0x0n)return'Request\x20the\x20arbitrator\x20to\x20order\x20a\x20full\x20refund\x20('+formatAmountText(b,a['token']?.['decimals'],a['token']?.['symbol'])+').';return'Request\x20the\x20arbitrator\x20to\x20order\x20the\x20merchant\x20to\x20make\x20up\x20the\x20refund\x20difference\x20('+formatAmountText(d,a['token']?.['decimals'],a['token']?.['symbol'])+').';}case'quality_issue':return'Request\x20the\x20arbitrator\x20to\x20order\x20the\x20merchant\x20to\x20redeliver\x20a\x20deliverable\x20that\x20meets\x20the\x20agreement,\x20or\x20to\x20fully\x20refund.';case'merchant_unreachable':return'Request\x20the\x20arbitrator\x20to\x20order\x20the\x20merchant\x20to\x20fulfill\x20the\x20order\x20obligations\x20or\x20refund\x20all\x20payments,\x20and\x20to\x20compensate\x20for\x20losses\x20caused\x20by\x20being\x20unreachable.';case'arbitration_support':return'Request\x20the\x20arbitrator\x20to\x20support\x20this\x20party\x27s\x20claim,\x20and\x20based\x20on\x20the\x20attached\x20evidence,\x20rule\x20that\x20the\x20merchant\x20breached\x20the\x20contract\x20and\x20order\x20compensation.';}}export{CUSTOMER_INTELLIGENCE_VERSION};
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
export interface MigrationStep {
|
|
2
|
-
from: string;
|
|
3
|
-
to: string;
|
|
4
|
-
description: string;
|
|
5
|
-
migrate: (projectDirPath: string) => void;
|
|
6
|
-
}
|
|
7
|
-
export interface MigrationResult {
|
|
8
|
-
migrated: boolean;
|
|
9
|
-
from_version: string;
|
|
10
|
-
to_version: string;
|
|
11
|
-
steps_executed: string[];
|
|
12
|
-
backup_path?: string;
|
|
13
|
-
needs_recalibration: boolean;
|
|
14
|
-
message: string;
|
|
15
|
-
}
|
|
16
|
-
export declare function migrateProject(prefix: string, version: string): MigrationResult;
|
|
17
|
-
export declare function needsMigration(prefix: string, version: string): boolean;
|
|
18
|
-
export declare function listAvailableMigrations(): Array<{
|
|
19
|
-
from: string;
|
|
20
|
-
to: string;
|
|
21
|
-
description: string;
|
|
22
|
-
}>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{copyFileSync,mkdirSync,readdirSync}from'fs';import{join}from'path';import{CURRENT_SCHEMA_VERSION,projectDir,loadManifest,saveManifest}from'./project-store.js';const MIGRATIONS=[];function backupProject(a,b){const c=projectDir(a,b),d=new Date()['toISOString']()['replace'](/[:.]/g,'-'),e=join(c,'.backup',d);mkdirSync(e,{'recursive':!![]});function f(g){const h=join(c,g),i=readdirSync(h,{'withFileTypes':!![]});for(const j of i){if(g===''&&j['name']==='.backup')continue;const k=g?join(g,j['name']):j['name'],l=join(c,k);if(j['isDirectory']())mkdirSync(join(e,k),{'recursive':!![]}),f(k);else j['isFile']()&©FileSync(l,join(e,k));}}return f(''),e;}export function migrateProject(a,b){const c=loadManifest(a,b),d=c['schema_version'];if(d===CURRENT_SCHEMA_VERSION)return{'migrated':![],'from_version':d,'to_version':CURRENT_SCHEMA_VERSION,'steps_executed':[],'needs_recalibration':c['needs_recalibration']??![],'message':'Project\x20schema\x20is\x20up-to-date\x20('+d+').\x20No\x20migration\x20needed.'};const f=backupProject(a,b),g=projectDir(a,b),h=[];let i=d,j=0x0;const k=0x32;while(i!==CURRENT_SCHEMA_VERSION&&j<k){const m=MIGRATIONS['find'](n=>n['from']===i);if(!m){const n={...c,'needs_recalibration':!![],'updated_at':new Date()['toISOString']()};return saveManifest(a,b,n),{'migrated':![],'from_version':d,'to_version':i,'steps_executed':h,'backup_path':f,'needs_recalibration':!![],'message':'No\x20migration\x20path\x20from\x20schema\x20'+i+'\x20to\x20'+CURRENT_SCHEMA_VERSION+'.\x20'+('Project\x20backed\x20up\x20to\x20'+f+'.\x20Manual\x20recalibration\x20required.')};}try{m['migrate'](g),h['push'](m['from']+'→'+m['to']+':\x20'+m['description']),i=m['to'];}catch(o){const p={...c,'needs_recalibration':!![],'updated_at':new Date()['toISOString']()};return saveManifest(a,b,p),{'migrated':![],'from_version':d,'to_version':i,'steps_executed':h,'backup_path':f,'needs_recalibration':!![],'message':'Migration\x20'+m['from']+'→'+m['to']+'\x20failed:\x20'+(o instanceof Error?o['message']:String(o))+'.\x20'+('Project\x20backed\x20up\x20to\x20'+f+'.\x20Manual\x20intervention\x20required.')};}j++;}const l={...c,'schema_version':CURRENT_SCHEMA_VERSION,'needs_recalibration':!![],'updated_at':new Date()['toISOString']()};return saveManifest(a,b,l),{'migrated':!![],'from_version':d,'to_version':CURRENT_SCHEMA_VERSION,'steps_executed':h,'backup_path':f,'needs_recalibration':!![],'message':'Project\x20migrated\x20from\x20schema\x20'+d+'\x20to\x20'+CURRENT_SCHEMA_VERSION+'.\x20'+(h['length']+'\x20migration\x20step(s)\x20executed.\x20')+'Recalibration\x20recommended:\x20re-run\x20aggregate_risks\x20and\x20generate_deployment_doc.\x20'+('Backup\x20saved\x20to\x20'+f+'.')};}export function needsMigration(a,b){try{const c=loadManifest(a,b);return c['schema_version']!==CURRENT_SCHEMA_VERSION;}catch{return![];}}export function listAvailableMigrations(){return MIGRATIONS['map'](a=>({'from':a['from'],'to':a['to'],'description':a['description']}));}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { type ProjectStage, type StageState } from "./project-store.js";
|
|
2
|
-
export type ObjectLifecycleState = "created" | "referenced" | "published" | "bound";
|
|
3
|
-
export type StructReversibility = "reversible" | "limited" | "immutable";
|
|
4
|
-
export type GasImpact = "low" | "medium" | "high" | "none";
|
|
5
|
-
export interface ReversibilityEntry {
|
|
6
|
-
object_type: string;
|
|
7
|
-
lifecycle_state: ObjectLifecycleState;
|
|
8
|
-
struct_reversible: StructReversibility;
|
|
9
|
-
behavior_reversible: boolean;
|
|
10
|
-
gas_impact: GasImpact;
|
|
11
|
-
explanation: string;
|
|
12
|
-
}
|
|
13
|
-
export declare const REVERSIBILITY_MATRIX: ReversibilityEntry[];
|
|
14
|
-
export declare function queryReversibility(objectType: string, lifecycleState: ObjectLifecycleState): ReversibilityEntry | undefined;
|
|
15
|
-
export declare function getReversibilityForType(objectType: string): ReversibilityEntry[];
|
|
16
|
-
export type IterationStrategy = "in_place" | "fork";
|
|
17
|
-
export interface IterationRecommendation {
|
|
18
|
-
strategy: IterationStrategy;
|
|
19
|
-
reason: string;
|
|
20
|
-
fork_to_version?: string;
|
|
21
|
-
published_objects?: string[];
|
|
22
|
-
}
|
|
23
|
-
export declare function recommendIterationStrategy(prefix: string, version: string, currentStage?: ProjectStage): IterationRecommendation;
|
|
24
|
-
export interface RollbackPolicyResult {
|
|
25
|
-
allowed: boolean;
|
|
26
|
-
target_stage: ProjectStage;
|
|
27
|
-
current_stage: ProjectStage;
|
|
28
|
-
block_reason?: string;
|
|
29
|
-
files_to_clean: string[];
|
|
30
|
-
warnings: string[];
|
|
31
|
-
iteration_strategy: IterationRecommendation;
|
|
32
|
-
}
|
|
33
|
-
export declare function evaluateRollbackPolicy(prefix: string, version: string, targetStage: ProjectStage): RollbackPolicyResult;
|
|
34
|
-
export interface RollbackResult {
|
|
35
|
-
success: boolean;
|
|
36
|
-
target_stage: ProjectStage;
|
|
37
|
-
previous_stage: ProjectStage;
|
|
38
|
-
files_to_clean: string[];
|
|
39
|
-
files_cleaned: string[];
|
|
40
|
-
stage_state: StageState;
|
|
41
|
-
warnings: string[];
|
|
42
|
-
iteration_strategy: IterationRecommendation;
|
|
43
|
-
message: string;
|
|
44
|
-
}
|
|
45
|
-
export declare function rollbackStageWithPolicy(prefix: string, version: string, targetStage: ProjectStage, reason?: string): RollbackResult;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{existsSync,rmSync}from'fs';import{join}from'path';import{loadStageState,projectDir,rollbackStage as a282a}from'./project-store.js';export const REVERSIBILITY_MATRIX=[{'object_type':'permission','lifecycle_state':'created','struct_reversible':'reversible','behavior_reversible':!![],'gas_impact':'low','explanation':'Permission\x20(unpublished):\x20can\x20add\x20tables/admins\x20freely'},{'object_type':'permission','lifecycle_state':'referenced','struct_reversible':'limited','behavior_reversible':!![],'gas_impact':'medium','explanation':'Permission\x20(referenced\x20by\x20published\x20service):\x20modifications\x20limited\x20—\x20affects\x20dependents'},{'object_type':'machine','lifecycle_state':'created','struct_reversible':'reversible','behavior_reversible':!![],'gas_impact':'low','explanation':'Machine\x20(unpublished):\x20can\x20modify\x20nodes/edges/forwards\x20freely'},{'object_type':'machine','lifecycle_state':'published','struct_reversible':'immutable','behavior_reversible':!![],'gas_impact':'none','explanation':'Machine\x20(published):\x20structure\x20is\x20immutable\x20—\x20can\x20only\x20advance\x20progress'},{'object_type':'service','lifecycle_state':'created','struct_reversible':'reversible','behavior_reversible':!![],'gas_impact':'low','explanation':'Service\x20(unpublished):\x20can\x20modify\x20fields\x20freely'},{'object_type':'service','lifecycle_state':'published','struct_reversible':'immutable','behavior_reversible':!![],'gas_impact':'none','explanation':'Service\x20(published):\x20machine/order_allocators\x20frozen\x20—\x20can\x20still\x20transact\x20normally'},{'object_type':'guard','lifecycle_state':'created','struct_reversible':'immutable','behavior_reversible':![],'gas_impact':'none','explanation':'Guard:\x20create-only\x20semantics\x20—\x20immutable\x20from\x20creation'},{'object_type':'allocation','lifecycle_state':'created','struct_reversible':'reversible','behavior_reversible':!![],'gas_impact':'low','explanation':'Allocator\x20(unbound):\x20can\x20modify\x20strategy\x20freely'},{'object_type':'allocation','lifecycle_state':'bound','struct_reversible':'limited','behavior_reversible':!![],'gas_impact':'medium','explanation':'Allocator\x20(bound\x20to\x20published\x20service):\x20strategy\x20modifications\x20limited'},{'object_type':'treasury','lifecycle_state':'created','struct_reversible':'reversible','behavior_reversible':!![],'gas_impact':'low','explanation':'Treasury:\x20can\x20modify\x20rules\x20freely'},{'object_type':'arb','lifecycle_state':'created','struct_reversible':'reversible','behavior_reversible':!![],'gas_impact':'low','explanation':'Arbitration:\x20can\x20modify\x20rules\x20freely'},{'object_type':'reward','lifecycle_state':'created','struct_reversible':'reversible','behavior_reversible':!![],'gas_impact':'low','explanation':'Reward:\x20can\x20modify\x20rules\x20freely'},{'object_type':'progress','lifecycle_state':'bound','struct_reversible':'immutable','behavior_reversible':!![],'gas_impact':'none','explanation':'Progress\x20(bound\x20to\x20machine):\x20cannot\x20swap\x20machine\x20—\x20can\x20only\x20forward'},{'object_type':'order','lifecycle_state':'created','struct_reversible':'immutable','behavior_reversible':!![],'gas_impact':'none','explanation':'Order:\x20structure\x20immutable\x20after\x20creation\x20—\x20can\x20only\x20advance\x20state'}];export function queryReversibility(a,b){return REVERSIBILITY_MATRIX['find'](c=>c['object_type']===a&&c['lifecycle_state']===b);}export function getReversibilityForType(a){return REVERSIBILITY_MATRIX['filter'](b=>b['object_type']===a);}export function recommendIterationStrategy(a,b,c){const d=loadStageState(a,b);if(!d)return{'strategy':'in_place','reason':'Project\x20not\x20initialized\x20—\x20no\x20stage\x20state\x20found.\x20Use\x20in-place\x20for\x20new\x20projects.'};if(d['has_published_object']){const f=b['match'](/^v(\d+)$/),g=f?parseInt(f[0x1])+0x1:0x2,h='v'+g;return{'strategy':'fork','reason':'Project\x20has\x20published\x20on-chain\x20objects\x20—\x20in-place\x20modification\x20would\x20break\x20running\x20business.\x20'+('Fork\x20to\x20'+h+'\x20to\x20preserve\x20the\x20original\x20version\x20as\x20a\x20read-only\x20historical\x20snapshot.'),'fork_to_version':h,'published_objects':d['stage_meta'][0x5]?.['committed']?['see\x20deployment/05-substeps/\x20for\x20published\x20object\x20list']:[]};}const e=c??d['stage'];return{'strategy':'in_place','reason':'Project\x20has\x20no\x20published\x20objects\x20(current\x20stage:\x20'+e+').\x20'+'Safe\x20to\x20modify\x20the\x20current\x20version\x20directly\x20—\x20all\x20changes\x20are\x20local\x20and\x20reversible.'};}const STAGE_DIR_SUFFIXES={0x1:'01-namespace',0x2:'02-puzzle',0x3:'03-risk',0x4:'04-steps',0x5:'05-substeps'};export function evaluateRollbackPolicy(a,b,c){const d=loadStageState(a,b);if(!d)return{'allowed':![],'target_stage':c,'current_stage':0x1,'block_reason':'Project\x20not\x20initialized:\x20'+a+'_'+b,'files_to_clean':[],'warnings':[],'iteration_strategy':{'strategy':'in_place','reason':'Project\x20not\x20initialized.'}};const e=d['stage'],f=recommendIterationStrategy(a,b,e);if(d['has_published_object'])return{'allowed':![],'target_stage':c,'current_stage':e,'block_reason':'Project\x20has\x20published\x20on-chain\x20objects\x20—\x20rollback\x20is\x20forbidden\x20(§3.3).\x20'+'Use\x20fork_project\x20to\x20create\x20a\x20new\x20version\x20for\x20modifications.','files_to_clean':[],'warnings':[],'iteration_strategy':f};if(c>=e)return{'allowed':![],'target_stage':c,'current_stage':e,'block_reason':'Target\x20stage\x20'+c+'\x20must\x20be\x20less\x20than\x20current\x20stage\x20'+e+'.','files_to_clean':[],'warnings':[],'iteration_strategy':f};if(c<0x1)return{'allowed':![],'target_stage':c,'current_stage':e,'block_reason':'Cannot\x20rollback\x20below\x20stage\x201.','files_to_clean':[],'warnings':[],'iteration_strategy':f};const g=[],h=[],i=join(projectDir(a,b),'deployment');for(let j=c+0x1;j<=0x5;j++){const k=join(i,STAGE_DIR_SUFFIXES[j]);existsSync(k)&&g['push']('deployment/'+STAGE_DIR_SUFFIXES[j]+'/');}return c<=0x2&&existsSync(i)&&(g['length']=0x0,g['push']('deployment/')),g['length']>0x0&&h['push']('Rollback\x20will\x20delete\x20'+g['length']+'\x20file(s)/directory(ies):\x20'+g['join'](',\x20')+'.\x20'+'This\x20data\x20will\x20be\x20lost\x20—\x20regenerate\x20by\x20re-running\x20the\x20stage\x20action.'),{'allowed':!![],'target_stage':c,'current_stage':e,'files_to_clean':g,'warnings':h,'iteration_strategy':f};}export function rollbackStageWithPolicy(a,b,c,d){const e=evaluateRollbackPolicy(a,b,c);if(!e['allowed'])return{'success':![],'target_stage':c,'previous_stage':e['current_stage'],'files_to_clean':[],'files_cleaned':[],'stage_state':loadStageState(a,b),'warnings':[],'iteration_strategy':e['iteration_strategy'],'message':'Rollback\x20blocked:\x20'+e['block_reason']};const f=[],g=join(projectDir(a,b),'deployment');if(e['files_to_clean']['includes']('deployment/'))existsSync(g)&&(rmSync(g,{'recursive':!![],'force':!![]}),f['push']('deployment/'));else for(const i of e['files_to_clean']){const j=join(projectDir(a,b),i);existsSync(j)&&(rmSync(j,{'recursive':!![],'force':!![]}),f['push'](i));}const h=a282a(a,b,c,{'reason':d??'rollback\x20to\x20stage\x20'+c+'\x20(policy-evaluated)','affectedFiles':f['length']>0x0?f:['stage.json']});return{'success':!![],'target_stage':c,'previous_stage':e['current_stage'],'files_to_clean':e['files_to_clean'],'files_cleaned':f,'stage_state':h,'warnings':e['warnings'],'iteration_strategy':e['iteration_strategy'],'message':'Rolled\x20back\x20from\x20stage\x20'+e['current_stage']+'\x20to\x20'+c+'.\x20'+(f['length']+'\x20file(s)/directory(ies)\x20cleaned.\x20')+'Stage\x20state\x20updated.\x20'+(e['iteration_strategy']['strategy']==='fork'?'Note:\x20this\x20project\x20has\x20published\x20objects\x20—\x20future\x20modifications\x20require\x20fork.':'Project\x20has\x20no\x20published\x20objects\x20—\x20in-place\x20modification\x20is\x20safe.')};}
|