@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.
Files changed (239) hide show
  1. package/dist/customer/index.d.ts +3 -4
  2. package/dist/customer/index.js +1 -1
  3. package/dist/customer/info-puzzle.js +1 -1
  4. package/dist/customer/order-monitor.d.ts +0 -9
  5. package/dist/customer/order-monitor.js +1 -1
  6. package/dist/customer/order-strategy.d.ts +0 -19
  7. package/dist/customer/order-strategy.js +1 -1
  8. package/dist/customer/reminder-system.d.ts +0 -5
  9. package/dist/customer/reminder-system.js +1 -1
  10. package/dist/evaluation/game-strategy.js +1 -1
  11. package/dist/evaluation/injection.d.ts +6 -0
  12. package/dist/evaluation/injection.js +1 -0
  13. package/dist/evaluation/node-game.js +1 -1
  14. package/dist/examples/machine-multisig-threshold.json +1 -0
  15. package/dist/harness/recover.js +1 -1
  16. package/dist/harness/types.d.ts +1 -1
  17. package/dist/harness/verify.js +1 -1
  18. package/dist/intent/enrich.js +1 -1
  19. package/dist/intent/matcher.js +1 -1
  20. package/dist/intent/types.d.ts +1 -1
  21. package/dist/intent/types.js +1 -1
  22. package/dist/knowledge/arbitration-ledger.js +1 -1
  23. package/dist/knowledge/contract-invariants.d.ts +53 -0
  24. package/dist/knowledge/contract-invariants.js +1 -0
  25. package/dist/knowledge/deployment-scanner.js +1 -1
  26. package/dist/knowledge/dynamic-pricing.d.ts +0 -2
  27. package/dist/knowledge/dynamic-pricing.js +1 -1
  28. package/dist/knowledge/event-semantics.d.ts +20 -0
  29. package/dist/knowledge/event-semantics.js +1 -0
  30. package/dist/knowledge/examples-scanner-cli.js +1 -1
  31. package/dist/knowledge/examples-scanner.js +1 -1
  32. package/dist/knowledge/glossary.js +1 -1
  33. package/dist/knowledge/guard-submission-prompt.js +1 -1
  34. package/dist/knowledge/immutability.d.ts +11 -0
  35. package/dist/knowledge/immutability.js +1 -0
  36. package/dist/knowledge/index.d.ts +12 -6
  37. package/dist/knowledge/index.js +1 -1
  38. package/dist/knowledge/industry-registry.js +1 -1
  39. package/dist/knowledge/intent-metrics.d.ts +1 -1
  40. package/dist/knowledge/jsonrpc-enum.d.ts +37 -0
  41. package/dist/knowledge/jsonrpc-enum.js +1 -0
  42. package/dist/knowledge/machine-confirm.js +1 -1
  43. package/dist/knowledge/machine-risk.js +1 -1
  44. package/dist/knowledge/machine-topology.d.ts +11 -0
  45. package/dist/knowledge/machine-topology.js +1 -1
  46. package/dist/knowledge/machine-translation.js +1 -1
  47. package/dist/knowledge/market-metrics.d.ts +11 -0
  48. package/dist/knowledge/market-metrics.js +1 -1
  49. package/dist/knowledge/mcp-schema-audit-cli.js +1 -1
  50. package/dist/knowledge/mcp-schema-audit.d.ts +1 -0
  51. package/dist/knowledge/mcp-schema-audit.js +1 -1
  52. package/dist/knowledge/messenger-guard-guidance.d.ts +17 -0
  53. package/dist/knowledge/messenger-guard-guidance.js +1 -0
  54. package/dist/knowledge/operation-dictionary.d.ts +18 -0
  55. package/dist/knowledge/operation-dictionary.js +1 -0
  56. package/dist/knowledge/service-ledger.js +1 -1
  57. package/dist/knowledge/service-risk.js +1 -1
  58. package/dist/knowledge/service-translation.js +1 -1
  59. package/dist/knowledge/supply-chain.d.ts +24 -0
  60. package/dist/knowledge/supply-chain.js +1 -0
  61. package/dist/knowledge/template-registry.js +1 -1
  62. package/dist/knowledge/tools-reference.js +1 -1
  63. package/dist/knowledge/trust-metrics.d.ts +27 -2
  64. package/dist/knowledge/trust-metrics.js +1 -1
  65. package/dist/knowledge/workflow-guidance.d.ts +22 -1
  66. package/dist/knowledge/workflow-guidance.js +1 -1
  67. package/dist/monitor/EventStore.d.ts +78 -0
  68. package/dist/monitor/EventStore.js +1 -0
  69. package/dist/participation/radar-core.d.ts +0 -1
  70. package/dist/participation/radar-core.js +1 -1
  71. package/dist/persona/address-format.d.ts +6 -0
  72. package/dist/persona/address-format.js +1 -0
  73. package/dist/persona/analyzer.js +1 -1
  74. package/dist/persona/index.d.ts +3 -0
  75. package/dist/persona/index.js +1 -1
  76. package/dist/persona/types.d.ts +1 -1
  77. package/dist/persona/types.js +1 -1
  78. package/dist/project/business-puzzle.js +1 -1
  79. package/dist/project/edit-planner.js +1 -1
  80. package/dist/project/evaluation.js +1 -1
  81. package/dist/project/graph-builder.js +1 -1
  82. package/dist/project/handlers.d.ts +2 -18
  83. package/dist/project/handlers.js +1 -1
  84. package/dist/project/index.js +1 -1
  85. package/dist/project/machine-nodes.d.ts +23 -0
  86. package/dist/project/machine-nodes.js +1 -1
  87. package/dist/project/machine-panorama.d.ts +41 -0
  88. package/dist/project/machine-panorama.js +1 -0
  89. package/dist/project/object-panorama.d.ts +179 -0
  90. package/dist/project/object-panorama.js +1 -0
  91. package/dist/project/object-type.d.ts +1 -0
  92. package/dist/project/object-type.js +1 -0
  93. package/dist/project/participation-radar.js +1 -1
  94. package/dist/project/semantic-assembler.js +1 -1
  95. package/dist/project/service-panorama.d.ts +180 -0
  96. package/dist/project/service-panorama.js +1 -0
  97. package/dist/project/stage-gate.d.ts +0 -1
  98. package/dist/project/stage-gate.js +1 -1
  99. package/dist/project/task-tracker.d.ts +4 -0
  100. package/dist/project/task-tracker.js +1 -1
  101. package/dist/role/derivation.d.ts +19 -2
  102. package/dist/role/derivation.js +1 -1
  103. package/dist/role/index.d.ts +2 -2
  104. package/dist/role/index.js +1 -1
  105. package/dist/role/model.js +1 -1
  106. package/dist/role/resolution.d.ts +16 -0
  107. package/dist/role/resolution.js +1 -1
  108. package/dist/role/types.d.ts +1 -1
  109. package/dist/role/types.js +1 -1
  110. package/dist/safety/confirm-gate.js +1 -1
  111. package/dist/schema/call/allocation.d.ts +1 -0
  112. package/dist/schema/call/arbitration.d.ts +4 -3
  113. package/dist/schema/call/arbitration.js +1 -1
  114. package/dist/schema/call/base.d.ts +16 -0
  115. package/dist/schema/call/base.js +1 -1
  116. package/dist/schema/call/bridge.d.ts +7 -0
  117. package/dist/schema/call/contact.d.ts +1 -0
  118. package/dist/schema/call/demand.d.ts +1 -0
  119. package/dist/schema/call/guard.d.ts +3 -0
  120. package/dist/schema/call/handler.js +1 -1
  121. package/dist/schema/call/machine.d.ts +2 -0
  122. package/dist/schema/call/machine.js +1 -1
  123. package/dist/schema/call/order.d.ts +1 -0
  124. package/dist/schema/call/payment.d.ts +1 -0
  125. package/dist/schema/call/permission.d.ts +1 -0
  126. package/dist/schema/call/personal.d.ts +38 -0
  127. package/dist/schema/call/personal.js +1 -1
  128. package/dist/schema/call/progress.d.ts +1 -0
  129. package/dist/schema/call/proof.d.ts +2 -0
  130. package/dist/schema/call/repository.d.ts +5 -4
  131. package/dist/schema/call/reward.d.ts +1 -12
  132. package/dist/schema/call/reward.js +1 -1
  133. package/dist/schema/call/semantic.d.ts +3 -2
  134. package/dist/schema/call/semantic.js +1 -1
  135. package/dist/schema/call/service.d.ts +1 -0
  136. package/dist/schema/call/service.js +1 -1
  137. package/dist/schema/call/treasury.d.ts +1 -0
  138. package/dist/schema/common/index.js +1 -1
  139. package/dist/schema/evaluation/index.d.ts +146 -0
  140. package/dist/schema/evaluation/index.js +1 -1
  141. package/dist/schema/index.d.ts +1 -0
  142. package/dist/schema/index.js +1 -1
  143. package/dist/schema/intent-radar/index.d.ts +30 -3
  144. package/dist/schema/intent-radar/index.js +1 -1
  145. package/dist/schema/local/index.d.ts +9 -0
  146. package/dist/schema/local/index.js +1 -1
  147. package/dist/schema/messenger/index.d.ts +54 -0
  148. package/dist/schema/messenger/index.js +1 -1
  149. package/dist/schema/operations.d.ts +864 -8
  150. package/dist/schema/operations.js +1 -1
  151. package/dist/schema/permission/index.d.ts +17 -0
  152. package/dist/schema/permission/index.js +1 -1
  153. package/dist/schema/project/index.d.ts +6 -0
  154. package/dist/schema/project/index.js +1 -1
  155. package/dist/schema/query/index.d.ts +658 -56
  156. package/dist/schema/query/index.js +1 -1
  157. package/dist/schema/schema-version.js +1 -1
  158. package/dist/schema/trust/index.d.ts +17 -0
  159. package/dist/schema/trust/index.js +1 -1
  160. package/dist/schema/watch/index.d.ts +204 -0
  161. package/dist/schema/watch/index.js +1 -0
  162. package/dist/schema/workflow/index.d.ts +301 -0
  163. package/dist/schema/workflow/index.js +1 -1
  164. package/dist/schema-query-impl/index.js +1 -1
  165. package/dist/schemas/account_operation.output.json +5 -2
  166. package/dist/schemas/bridge_operation.output.json +5 -2
  167. package/dist/schemas/bridge_operation.schema.json +25 -9
  168. package/dist/schemas/evaluation_operation.output.json +276 -1
  169. package/dist/schemas/evaluation_operation.schema.json +307 -0
  170. package/dist/schemas/guard2file.schema.json +6 -2
  171. package/dist/schemas/index.json +13 -1
  172. package/dist/schemas/intent_radar.output.json +20 -2
  173. package/dist/schemas/intent_radar.schema.json +10 -1
  174. package/dist/schemas/local_info_operation.output.json +5 -2
  175. package/dist/schemas/local_mark_operation.output.json +5 -2
  176. package/dist/schemas/machineNode2file.schema.json +6 -2
  177. package/dist/schemas/messenger_operation.output.json +105 -2
  178. package/dist/schemas/messenger_operation.schema.json +98 -0
  179. package/dist/schemas/monitor_events.output.json +1360 -0
  180. package/dist/schemas/monitor_events.schema.json +62 -0
  181. package/dist/schemas/onchain_events.output.json +237 -14
  182. package/dist/schemas/onchain_events.schema.json +20 -0
  183. package/dist/schemas/onchain_operations.output.json +10 -5
  184. package/dist/schemas/onchain_operations.schema.json +511 -419
  185. package/dist/schemas/onchain_operations_allocation.schema.json +11 -7
  186. package/dist/schemas/onchain_operations_arbitration.schema.json +14 -9
  187. package/dist/schemas/onchain_operations_contact.schema.json +9 -5
  188. package/dist/schemas/onchain_operations_demand.schema.json +9 -5
  189. package/dist/schemas/onchain_operations_gen_passport.schema.json +6 -2
  190. package/dist/schemas/onchain_operations_gen_proof.schema.json +6 -2
  191. package/dist/schemas/onchain_operations_guard.schema.json +6 -2
  192. package/dist/schemas/onchain_operations_machine.schema.json +14 -10
  193. package/dist/schemas/onchain_operations_order.schema.json +9 -5
  194. package/dist/schemas/onchain_operations_payment.schema.json +7 -3
  195. package/dist/schemas/onchain_operations_permission.schema.json +9 -5
  196. package/dist/schemas/onchain_operations_personal.schema.json +44 -2
  197. package/dist/schemas/onchain_operations_progress.schema.json +9 -5
  198. package/dist/schemas/onchain_operations_proof.schema.json +6 -2
  199. package/dist/schemas/onchain_operations_repository.schema.json +290 -305
  200. package/dist/schemas/onchain_operations_reward.schema.json +14 -10
  201. package/dist/schemas/onchain_operations_service.schema.json +17 -13
  202. package/dist/schemas/onchain_operations_treasury.schema.json +14 -10
  203. package/dist/schemas/onchain_table_data.output.json +3750 -208
  204. package/dist/schemas/onchain_table_data.schema.json +311 -0
  205. package/dist/schemas/permission_operation.output.json +32 -0
  206. package/dist/schemas/project_operation.schema.json +14 -8
  207. package/dist/schemas/query_toolkit.output.json +405 -320
  208. package/dist/schemas/query_toolkit.schema.json +139 -1
  209. package/dist/schemas/trust_score.output.json +38 -0
  210. package/dist/schemas/trust_score.schema.json +32 -0
  211. package/dist/schemas/watch_operation.output.json +827 -0
  212. package/dist/schemas/watch_operation.schema.json +145 -0
  213. package/dist/schemas/workflow_operation.output.json +263 -5
  214. package/dist/schemas/workflow_operation.schema.json +597 -2
  215. package/dist/tools/handlers/config.js +1 -1
  216. package/dist/tools/handlers/evaluation.js +1 -1
  217. package/dist/tools/handlers/intent-radar.js +1 -1
  218. package/dist/tools/handlers/messenger.js +1 -1
  219. package/dist/tools/handlers/monitor.d.ts +2 -0
  220. package/dist/tools/handlers/monitor.js +1 -0
  221. package/dist/tools/handlers/onchain.js +1 -1
  222. package/dist/tools/handlers/permission.js +1 -1
  223. package/dist/tools/handlers/project.js +1 -1
  224. package/dist/tools/handlers/query.js +1 -1
  225. package/dist/tools/handlers/trust.d.ts +14 -0
  226. package/dist/tools/handlers/trust.js +1 -1
  227. package/dist/tools/handlers/watch.d.ts +2 -0
  228. package/dist/tools/handlers/watch.js +1 -0
  229. package/dist/tools/handlers/workflow.js +1 -1
  230. package/dist/tools/index.d.ts +2 -0
  231. package/dist/tools/index.js +1 -1
  232. package/dist/tools/shared.js +1 -1
  233. package/package.json +2 -2
  234. package/dist/customer/post-purchase.d.ts +0 -44
  235. package/dist/customer/post-purchase.js +0 -1
  236. package/dist/project/migration.d.ts +0 -22
  237. package/dist/project/migration.js +0 -1
  238. package/dist/project/rollback-policy.d.ts +0 -45
  239. package/dist/project/rollback-policy.js +0 -1
@@ -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 a375a}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(!a375a('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};
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.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.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']()&&copyFileSync(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.')};}