@agirails/sdk 3.2.0 → 3.3.0

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 (209) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +12 -14
  3. package/dist/ACTPClient.d.ts +8 -11
  4. package/dist/ACTPClient.d.ts.map +1 -1
  5. package/dist/ACTPClient.js +79 -20
  6. package/dist/ACTPClient.js.map +1 -1
  7. package/dist/__tests__/helpers/mockX402Server.d.ts +67 -0
  8. package/dist/__tests__/helpers/mockX402Server.d.ts.map +1 -0
  9. package/dist/__tests__/helpers/mockX402Server.js +121 -0
  10. package/dist/__tests__/helpers/mockX402Server.js.map +1 -0
  11. package/dist/adapters/BaseAdapter.d.ts +7 -1
  12. package/dist/adapters/BaseAdapter.d.ts.map +1 -1
  13. package/dist/adapters/BaseAdapter.js +11 -6
  14. package/dist/adapters/BaseAdapter.js.map +1 -1
  15. package/dist/adapters/BasicAdapter.d.ts.map +1 -1
  16. package/dist/adapters/BasicAdapter.js +12 -2
  17. package/dist/adapters/BasicAdapter.js.map +1 -1
  18. package/dist/adapters/StandardAdapter.d.ts.map +1 -1
  19. package/dist/adapters/StandardAdapter.js +12 -2
  20. package/dist/adapters/StandardAdapter.js.map +1 -1
  21. package/dist/adapters/X402Adapter.d.ts +161 -199
  22. package/dist/adapters/X402Adapter.d.ts.map +1 -1
  23. package/dist/adapters/X402Adapter.js +603 -414
  24. package/dist/adapters/X402Adapter.js.map +1 -1
  25. package/dist/adapters/index.d.ts +1 -1
  26. package/dist/adapters/index.d.ts.map +1 -1
  27. package/dist/adapters/index.js.map +1 -1
  28. package/dist/builders/DeliveryProofBuilder.d.ts.map +1 -1
  29. package/dist/builders/DeliveryProofBuilder.js +3 -2
  30. package/dist/builders/DeliveryProofBuilder.js.map +1 -1
  31. package/dist/cli/agirails.js +12 -4
  32. package/dist/cli/agirails.js.map +1 -1
  33. package/dist/cli/commands/autopublish.js +9 -1
  34. package/dist/cli/commands/autopublish.js.map +1 -1
  35. package/dist/cli/commands/config.js +1 -12
  36. package/dist/cli/commands/config.js.map +1 -1
  37. package/dist/cli/commands/deploy-env.js +1 -1
  38. package/dist/cli/commands/deploy-env.js.map +1 -1
  39. package/dist/cli/commands/diff.js +38 -4
  40. package/dist/cli/commands/diff.js.map +1 -1
  41. package/dist/cli/commands/health.js +3 -1
  42. package/dist/cli/commands/health.js.map +1 -1
  43. package/dist/cli/commands/init.d.ts +2 -0
  44. package/dist/cli/commands/init.d.ts.map +1 -1
  45. package/dist/cli/commands/init.js +75 -2
  46. package/dist/cli/commands/init.js.map +1 -1
  47. package/dist/cli/commands/pay.d.ts.map +1 -1
  48. package/dist/cli/commands/pay.js +23 -0
  49. package/dist/cli/commands/pay.js.map +1 -1
  50. package/dist/cli/commands/publish.js +15 -8
  51. package/dist/cli/commands/publish.js.map +1 -1
  52. package/dist/cli/commands/pull.js +3 -1
  53. package/dist/cli/commands/pull.js.map +1 -1
  54. package/dist/cli/commands/receipt.d.ts +17 -3
  55. package/dist/cli/commands/receipt.d.ts.map +1 -1
  56. package/dist/cli/commands/receipt.js +95 -33
  57. package/dist/cli/commands/receipt.js.map +1 -1
  58. package/dist/cli/commands/test.d.ts.map +1 -1
  59. package/dist/cli/commands/test.js +222 -60
  60. package/dist/cli/commands/test.js.map +1 -1
  61. package/dist/cli/commands/tx.js +13 -0
  62. package/dist/cli/commands/tx.js.map +1 -1
  63. package/dist/cli/index.js +3 -1
  64. package/dist/cli/index.js.map +1 -1
  65. package/dist/cli/receiptUpload.d.ts +52 -0
  66. package/dist/cli/receiptUpload.d.ts.map +1 -0
  67. package/dist/cli/receiptUpload.js +134 -0
  68. package/dist/cli/receiptUpload.js.map +1 -0
  69. package/dist/cli/utils/banner.d.ts +31 -0
  70. package/dist/cli/utils/banner.d.ts.map +1 -0
  71. package/dist/cli/utils/banner.js +92 -0
  72. package/dist/cli/utils/banner.js.map +1 -0
  73. package/dist/cli/utils/config.d.ts +0 -2
  74. package/dist/cli/utils/config.d.ts.map +1 -1
  75. package/dist/cli/utils/config.js +40 -25
  76. package/dist/cli/utils/config.js.map +1 -1
  77. package/dist/cli/utils/output.d.ts +2 -0
  78. package/dist/cli/utils/output.d.ts.map +1 -1
  79. package/dist/cli/utils/output.js +7 -1
  80. package/dist/cli/utils/output.js.map +1 -1
  81. package/dist/cli/utils/share.d.ts +51 -0
  82. package/dist/cli/utils/share.d.ts.map +1 -0
  83. package/dist/cli/utils/share.js +133 -0
  84. package/dist/cli/utils/share.js.map +1 -0
  85. package/dist/config/agirailsmd.d.ts.map +1 -1
  86. package/dist/config/agirailsmd.js +2 -1
  87. package/dist/config/agirailsmd.js.map +1 -1
  88. package/dist/config/defaults.d.ts +2 -2
  89. package/dist/config/defaults.d.ts.map +1 -1
  90. package/dist/config/defaults.js +9 -3
  91. package/dist/config/defaults.js.map +1 -1
  92. package/dist/config/networks.d.ts +7 -0
  93. package/dist/config/networks.d.ts.map +1 -1
  94. package/dist/config/networks.js +20 -11
  95. package/dist/config/networks.js.map +1 -1
  96. package/dist/config/pendingPublish.d.ts.map +1 -1
  97. package/dist/config/pendingPublish.js +10 -3
  98. package/dist/config/pendingPublish.js.map +1 -1
  99. package/dist/config/syncOperations.d.ts.map +1 -1
  100. package/dist/config/syncOperations.js +4 -2
  101. package/dist/config/syncOperations.js.map +1 -1
  102. package/dist/erc8004/ERC8004Bridge.d.ts.map +1 -1
  103. package/dist/erc8004/ERC8004Bridge.js +0 -1
  104. package/dist/erc8004/ERC8004Bridge.js.map +1 -1
  105. package/dist/errors/ACTPError.d.ts +24 -0
  106. package/dist/errors/ACTPError.d.ts.map +1 -0
  107. package/dist/errors/ACTPError.js +35 -0
  108. package/dist/errors/ACTPError.js.map +1 -0
  109. package/dist/errors/X402Errors.d.ts +106 -0
  110. package/dist/errors/X402Errors.d.ts.map +1 -0
  111. package/dist/errors/X402Errors.js +160 -0
  112. package/dist/errors/X402Errors.js.map +1 -0
  113. package/dist/errors/index.d.ts +3 -9
  114. package/dist/errors/index.d.ts.map +1 -1
  115. package/dist/errors/index.js +38 -33
  116. package/dist/errors/index.js.map +1 -1
  117. package/dist/index.d.ts +2 -1
  118. package/dist/index.d.ts.map +1 -1
  119. package/dist/index.js +15 -3
  120. package/dist/index.js.map +1 -1
  121. package/dist/level0/Provider.d.ts +5 -0
  122. package/dist/level0/Provider.d.ts.map +1 -1
  123. package/dist/level0/ServiceDirectory.d.ts.map +1 -1
  124. package/dist/level0/ServiceDirectory.js +3 -2
  125. package/dist/level0/ServiceDirectory.js.map +1 -1
  126. package/dist/level0/provide.d.ts.map +1 -1
  127. package/dist/level0/provide.js +11 -8
  128. package/dist/level0/provide.js.map +1 -1
  129. package/dist/level0/request.d.ts.map +1 -1
  130. package/dist/level0/request.js +14 -6
  131. package/dist/level0/request.js.map +1 -1
  132. package/dist/level1/Agent.d.ts +1 -1
  133. package/dist/level1/Agent.d.ts.map +1 -1
  134. package/dist/level1/Agent.js +12 -6
  135. package/dist/level1/Agent.js.map +1 -1
  136. package/dist/level1/pricing/PriceCalculator.d.ts.map +1 -1
  137. package/dist/level1/pricing/PriceCalculator.js +4 -12
  138. package/dist/level1/pricing/PriceCalculator.js.map +1 -1
  139. package/dist/protocol/ACTPKernel.d.ts +4 -1
  140. package/dist/protocol/ACTPKernel.d.ts.map +1 -1
  141. package/dist/protocol/ACTPKernel.js +2 -1
  142. package/dist/protocol/ACTPKernel.js.map +1 -1
  143. package/dist/protocol/EventMonitor.d.ts +27 -1
  144. package/dist/protocol/EventMonitor.d.ts.map +1 -1
  145. package/dist/protocol/EventMonitor.js +11 -9
  146. package/dist/protocol/EventMonitor.js.map +1 -1
  147. package/dist/protocol/ProofGenerator.d.ts.map +1 -1
  148. package/dist/protocol/ProofGenerator.js +3 -2
  149. package/dist/protocol/ProofGenerator.js.map +1 -1
  150. package/dist/runtime/BlockchainRuntime.d.ts +2 -0
  151. package/dist/runtime/BlockchainRuntime.d.ts.map +1 -1
  152. package/dist/runtime/BlockchainRuntime.js +19 -6
  153. package/dist/runtime/BlockchainRuntime.js.map +1 -1
  154. package/dist/runtime/MockRuntime.d.ts +3 -2
  155. package/dist/runtime/MockRuntime.d.ts.map +1 -1
  156. package/dist/runtime/MockRuntime.js +16 -22
  157. package/dist/runtime/MockRuntime.js.map +1 -1
  158. package/dist/runtime/types/MockState.d.ts +4 -0
  159. package/dist/runtime/types/MockState.d.ts.map +1 -1
  160. package/dist/runtime/types/MockState.js.map +1 -1
  161. package/dist/server/buildX402Server.d.ts +131 -0
  162. package/dist/server/buildX402Server.d.ts.map +1 -0
  163. package/dist/server/buildX402Server.js +151 -0
  164. package/dist/server/buildX402Server.js.map +1 -0
  165. package/dist/server/index.d.ts +33 -0
  166. package/dist/server/index.d.ts.map +1 -0
  167. package/dist/server/index.js +36 -0
  168. package/dist/server/index.js.map +1 -0
  169. package/dist/types/adapter.d.ts +42 -12
  170. package/dist/types/adapter.d.ts.map +1 -1
  171. package/dist/types/adapter.js +6 -1
  172. package/dist/types/adapter.js.map +1 -1
  173. package/dist/types/eip712.d.ts +20 -0
  174. package/dist/types/eip712.d.ts.map +1 -1
  175. package/dist/types/x402.d.ts +8 -8
  176. package/dist/utils/security.d.ts.map +1 -1
  177. package/dist/utils/security.js +4 -6
  178. package/dist/utils/security.js.map +1 -1
  179. package/dist/wallet/AutoWalletProvider.d.ts +45 -1
  180. package/dist/wallet/AutoWalletProvider.d.ts.map +1 -1
  181. package/dist/wallet/AutoWalletProvider.js +154 -1
  182. package/dist/wallet/AutoWalletProvider.js.map +1 -1
  183. package/dist/wallet/EOAWalletProvider.d.ts +13 -1
  184. package/dist/wallet/EOAWalletProvider.d.ts.map +1 -1
  185. package/dist/wallet/EOAWalletProvider.js +24 -0
  186. package/dist/wallet/EOAWalletProvider.js.map +1 -1
  187. package/dist/wallet/IWalletProvider.d.ts +34 -0
  188. package/dist/wallet/IWalletProvider.d.ts.map +1 -1
  189. package/dist/wallet/SmartWalletRouter.d.ts.map +1 -1
  190. package/dist/wallet/SmartWalletRouter.js +3 -1
  191. package/dist/wallet/SmartWalletRouter.js.map +1 -1
  192. package/dist/wallet/aa/BundlerClient.js +8 -4
  193. package/dist/wallet/aa/BundlerClient.js.map +1 -1
  194. package/dist/wallet/aa/DualNonceManager.d.ts +4 -1
  195. package/dist/wallet/aa/DualNonceManager.d.ts.map +1 -1
  196. package/dist/wallet/aa/DualNonceManager.js +3 -0
  197. package/dist/wallet/aa/DualNonceManager.js.map +1 -1
  198. package/dist/wallet/keystore.d.ts.map +1 -1
  199. package/dist/wallet/keystore.js +6 -4
  200. package/dist/wallet/keystore.js.map +1 -1
  201. package/package.json +16 -3
  202. package/dist/adapters/BeginnerAdapter.d.ts +0 -152
  203. package/dist/adapters/BeginnerAdapter.d.ts.map +0 -1
  204. package/dist/adapters/BeginnerAdapter.js +0 -168
  205. package/dist/adapters/BeginnerAdapter.js.map +0 -1
  206. package/dist/adapters/IntermediateAdapter.d.ts +0 -211
  207. package/dist/adapters/IntermediateAdapter.d.ts.map +0 -1
  208. package/dist/adapters/IntermediateAdapter.js +0 -260
  209. package/dist/adapters/IntermediateAdapter.js.map +0 -1
@@ -4,10 +4,15 @@
4
4
  *
5
5
  * Renders the test earning receipt in human, json, and quiet modes.
6
6
  *
7
+ * Two renderers:
8
+ * - renderReceiptV2() — new design: double-line box, "FIRST TRANSACTION RECEIPT",
9
+ * fee breakdown (Amount / Fee / Net), network variants (mock/testnet/mainnet).
10
+ * - renderReceipt() — backward-compatible wrapper around V2. Marked @deprecated.
11
+ *
7
12
  * @module cli/commands/receipt
8
13
  */
9
14
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.renderReceipt = void 0;
15
+ exports.renderReceipt = exports.renderReceiptV2 = void 0;
11
16
  const output_1 = require("../utils/output");
12
17
  const defaults_1 = require("../../config/defaults");
13
18
  // ============================================================================
@@ -22,22 +27,35 @@ function formatTxId(txId) {
22
27
  return txId;
23
28
  return `${txId.slice(0, 8)}...${txId.slice(-4)}`;
24
29
  }
30
+ function formatEthHash(hash) {
31
+ if (hash.length <= 14)
32
+ return hash;
33
+ return `${hash.slice(0, 8)}...${hash.slice(-4)}`;
34
+ }
35
+ /** Strip ANSI escape codes for length calculation */
36
+ function stripAnsi(s) {
37
+ // eslint-disable-next-line no-control-regex
38
+ return s.replace(/\x1b\[[0-9;]*m/g, '');
39
+ }
25
40
  // ============================================================================
26
- // Renderer
41
+ // V2 Renderer — new design
27
42
  // ============================================================================
28
43
  /**
29
- * Render an earnings receipt.
44
+ * Render an earnings receipt (V2 design).
30
45
  *
31
- * Human mode: box-drawing receipt matching PRD spec.
32
- * JSON mode: structured object.
46
+ * Human mode: double-line outer box, inner card with fee breakdown, network-aware variants.
47
+ * JSON mode: structured object including fee breakdown.
33
48
  * Quiet mode: net earnings amount only.
34
49
  */
35
- function renderReceipt(data, output) {
50
+ function renderReceiptV2(data, output) {
36
51
  const fee = (0, defaults_1.computeDisplayFee)(data.amountWei);
37
52
  const net = data.amountWei - fee;
38
53
  const feePercent = data.amountWei > 0n
39
54
  ? ((Number(fee) / Number(data.amountWei)) * 100).toFixed(0)
40
55
  : '0';
56
+ const network = (data.network || 'mock').toLowerCase();
57
+ const isTestnet = network.includes('testnet') || network.includes('sepolia');
58
+ const isMainnet = network === 'mainnet' || network === 'base-mainnet';
41
59
  // JSON mode
42
60
  if (output.mode === 'json') {
43
61
  output.result({
@@ -49,6 +67,7 @@ function renderReceipt(data, output) {
49
67
  net: formatUsdc(net),
50
68
  network: data.network,
51
69
  txId: data.txId,
70
+ ...(data.ethTxHash ? { ethTxHash: data.ethTxHash } : {}),
52
71
  ...(data.timing ? { timing: data.timing } : {}),
53
72
  });
54
73
  return;
@@ -58,35 +77,78 @@ function renderReceipt(data, output) {
58
77
  output.print(formatUsdc(net));
59
78
  return;
60
79
  }
61
- // Human mode: box-drawing receipt
62
- const w = 47; // inner width
63
- const pad = (s) => s + ' '.repeat(Math.max(0, w - stripAnsi(s).length));
64
- const line = (s) => output.print(`${output_1.fmt.dim('│')} ${pad(s)}${output_1.fmt.dim('│')}`);
65
- const empty = () => line('');
66
- output.print(output_1.fmt.dim(`┌${'─'.repeat(w + 2)}┐`));
67
- line(output_1.fmt.green(output_1.fmt.bold('✓ EARNINGS RECEIPT')));
68
- empty();
69
- line(`Agent: ${output_1.fmt.bold(data.agent)}`);
70
- line(`Service: ${data.service}`);
71
- line(`Earned: ${output_1.fmt.bold(formatUsdc(data.amountWei))}`);
72
- line(`Fee: ${formatUsdc(fee)} (${feePercent}%)`);
73
- line(`Net: ${output_1.fmt.green(output_1.fmt.bold(formatUsdc(net)))}`);
74
- line(`Network: ${data.network}`);
75
- line(`Tx: ${formatTxId(data.txId)}`);
80
+ // Human mode: double-line outer box with inner card
81
+ // Alignment: outer frame total width = outerWidth + 4
82
+ // Inner content line total width = innerWidth + 15 ( +3sp +│ +2sp +content +│ +6sp +║)
83
+ // For alignment: innerWidth = outerWidth - 11
84
+ const outerWidth = 54;
85
+ const innerWidth = outerWidth - 11; // = 43
86
+ const outerPad = (s) => s + ' '.repeat(Math.max(0, outerWidth - stripAnsi(s).length));
87
+ const innerPad = (s) => s + ' '.repeat(Math.max(0, innerWidth - stripAnsi(s).length));
88
+ const outerLine = (s) => output.print(`${output_1.fmt.cyan('║')} ${outerPad(s)}${output_1.fmt.cyan('║')}`);
89
+ const outerEmpty = () => outerLine('');
90
+ const innerLine = (s) => output.print(`${output_1.fmt.cyan('║')} ${output_1.fmt.dim('│')} ${innerPad(s)}${output_1.fmt.dim('│')} ${output_1.fmt.cyan('║')}`);
91
+ const horiz = output_1.fmt.cyan('═'.repeat(outerWidth + 2));
92
+ // Header — varies by network
93
+ const headerText = isMainnet
94
+ ? 'FIRST MAINNET SETTLEMENT'
95
+ : 'FIRST TRANSACTION RECEIPT';
96
+ // Tagline — varies by network
97
+ const taglineLine1 = isMainnet
98
+ ? 'This is real money. On a real blockchain.'
99
+ : 'Your agent just earned its first payment.';
100
+ const taglineLine2 = isMainnet
101
+ ? 'Your agent is in the economy.'
102
+ : 'Autonomously. Trustlessly. In under 60 seconds.';
103
+ // Top frame
104
+ output.print(`${output_1.fmt.cyan('╔')}${horiz}${output_1.fmt.cyan('╗')}`);
105
+ outerEmpty();
106
+ outerLine(`${output_1.fmt.cyan('◬')} ${output_1.fmt.bold(headerText)}`);
107
+ outerEmpty();
108
+ outerLine(`${output_1.fmt.bold(data.agent)} earned ${output_1.fmt.green(output_1.fmt.bold(formatUsdc(net)))}`);
109
+ outerEmpty();
110
+ // Inner card top — ─ count = innerWidth + 2 to span full inside width
111
+ output.print(`${output_1.fmt.cyan('║')} ${output_1.fmt.dim('┌' + '─'.repeat(innerWidth + 2) + '┐')} ${output_1.fmt.cyan('║')}`);
112
+ // Inner card content
113
+ const requesterLabel = data.requester
114
+ ? formatEthHash(data.requester)
115
+ : 'requester-agent';
116
+ innerLine(`${output_1.fmt.label('From')} ${requesterLabel}`);
117
+ innerLine(`${output_1.fmt.label('To')} ${data.agent}`);
118
+ innerLine(`${output_1.fmt.label('Amount')} ${formatUsdc(data.amountWei)}`);
119
+ innerLine(`${output_1.fmt.label('Fee')} ${formatUsdc(fee)} (${feePercent}%)`);
120
+ innerLine(`${output_1.fmt.label('Net')} ${output_1.fmt.green(formatUsdc(net))}`);
121
+ innerLine(`${output_1.fmt.label('Service')} ${data.service}`);
122
+ innerLine(`${output_1.fmt.label('Status')} ${output_1.fmt.green('SETTLED ✓')}`);
76
123
  if (data.timing) {
77
- line(`Time: ${data.timing.totalMs}ms (escrow ${data.timing.escrowLockMs}ms, settle ${data.timing.settlementMs}ms)`);
124
+ innerLine(`${output_1.fmt.label('Duration')} ${data.timing.totalMs}ms`);
78
125
  }
79
- empty();
80
- line(output_1.fmt.bold("WHAT'S NEXT"));
81
- line('• Edit agent.ts with your logic');
82
- line(' Say "switch to testnet" when ready');
83
- line('• Say "publish" to go live');
84
- output.print(output_1.fmt.dim(`└${''.repeat(w + 2)}┘`));
126
+ innerLine(`${output_1.fmt.label('Network')} ${data.network}`);
127
+ // Testnet/mainnet: add on-chain proof lines
128
+ if ((isTestnet || isMainnet) && data.ethTxHash) {
129
+ innerLine(`${output_1.fmt.label('Eth Tx')} ${formatEthHash(data.ethTxHash)}`);
130
+ const scanBase = isMainnet ? 'basescan.org' : 'sepolia.basescan.org';
131
+ innerLine(`${output_1.fmt.label('Verify')} ${scanBase}/tx/${data.ethTxHash.slice(0, 8)}...`);
132
+ }
133
+ innerLine(`${output_1.fmt.label('Time')} ${new Date().toISOString().replace('T', ' ').slice(0, 19)} UTC`);
134
+ // Inner card bottom
135
+ output.print(`${output_1.fmt.cyan('║')} ${output_1.fmt.dim('└' + '─'.repeat(innerWidth + 2) + '┘')} ${output_1.fmt.cyan('║')}`);
136
+ outerEmpty();
137
+ outerLine(taglineLine1);
138
+ outerLine(taglineLine2);
139
+ outerEmpty();
140
+ output.print(`${output_1.fmt.cyan('╚')}${horiz}${output_1.fmt.cyan('╝')}`);
85
141
  }
86
- exports.renderReceipt = renderReceipt;
87
- /** Strip ANSI escape codes for length calculation */
88
- function stripAnsi(s) {
89
- // eslint-disable-next-line no-control-regex
90
- return s.replace(/\x1b\[[0-9;]*m/g, '');
142
+ exports.renderReceiptV2 = renderReceiptV2;
143
+ // ============================================================================
144
+ // V1 Renderer — backward-compatible wrapper
145
+ // ============================================================================
146
+ /**
147
+ * @deprecated Use renderReceiptV2 instead. Kept for backward compatibility.
148
+ * Will be removed in the next major SDK version.
149
+ */
150
+ function renderReceipt(data, output) {
151
+ renderReceiptV2(data, output);
91
152
  }
153
+ exports.renderReceipt = renderReceipt;
92
154
  //# sourceMappingURL=receipt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"receipt.js","sourceRoot":"","sources":["../../../src/cli/commands/receipt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"receipt.js","sourceRoot":"","sources":["../../../src/cli/commands/receipt.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAY,MAAM,iBAAiB,CAAC;AAYnD,wBAAgB,iBAAiB,IAAI,OAAO,CAwB3C;AAMD,iBAAe,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoGpD;AAyBD,OAAO,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAiB,MAAM,iBAAiB,CAAC;AAexD,wBAAgB,iBAAiB,IAAI,OAAO,CAwB3C;AA6ED,iBAAe,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0JpD;AAkGD,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -43,6 +43,9 @@ const agirailsmdV4_1 = require("../../config/agirailsmdV4");
43
43
  const testjobs_1 = require("../testjobs");
44
44
  const receipt_1 = require("./receipt");
45
45
  const MockRuntime_1 = require("../../runtime/MockRuntime");
46
+ const banner_1 = require("../utils/banner");
47
+ const receiptUpload_1 = require("../receiptUpload");
48
+ const defaults_1 = require("../../config/defaults");
46
49
  // ============================================================================
47
50
  // Command Definition
48
51
  // ============================================================================
@@ -72,45 +75,104 @@ exports.createTestCommand = createTestCommand;
72
75
  // ============================================================================
73
76
  // Implementation
74
77
  // ============================================================================
78
+ /** Sleep helper */
79
+ function sleep(ms) {
80
+ return new Promise((resolve) => setTimeout(resolve, ms));
81
+ }
82
+ /** Spinner frames (rotating Unicode circle) */
83
+ const SPINNER_FRAMES = ['◐', '◓', '◑', '◒'];
84
+ /**
85
+ * Run a state transition with rotating spinner animation.
86
+ *
87
+ * On TTY (human mode): prints a spinning line, awaits the work, enforces a
88
+ * minimum visible duration, then rewrites the line with the final icon + timing.
89
+ *
90
+ * On non-TTY / CI: executes the work without animation, emits a single line
91
+ * with actual elapsed time.
92
+ */
93
+ async function animateState(output, label, message, work, settled = false, minDurationMs = 450) {
94
+ const labelPad = label.padEnd(14);
95
+ const msgPad = message.padEnd(40);
96
+ if (output.mode !== 'human') {
97
+ // Non-human (json/quiet): execute silently, no output
98
+ await work();
99
+ return 0;
100
+ }
101
+ if (!process.stdout.isTTY) {
102
+ // Non-TTY: no animation, single line after work completes
103
+ const start = performance.now();
104
+ await work();
105
+ const elapsed = Math.round(performance.now() - start);
106
+ const icon = settled ? output_1.fmt.green('✓') : output_1.fmt.cyan('·');
107
+ const lbl = settled ? output_1.fmt.green(output_1.fmt.bold(labelPad)) : output_1.fmt.bold(labelPad);
108
+ console.log(` ${icon} ${lbl} ${msgPad} ${output_1.fmt.dim(`[${elapsed}ms]`)}`);
109
+ return elapsed;
110
+ }
111
+ // TTY: rotating spinner with min duration for visibility
112
+ let frameIdx = 0;
113
+ process.stdout.write(` ${output_1.fmt.cyan(SPINNER_FRAMES[0])} ${output_1.fmt.bold(labelPad)} ${msgPad}`);
114
+ const interval = setInterval(() => {
115
+ frameIdx = (frameIdx + 1) % SPINNER_FRAMES.length;
116
+ process.stdout.write(`\r ${output_1.fmt.cyan(SPINNER_FRAMES[frameIdx])} ${output_1.fmt.bold(labelPad)} ${msgPad}`);
117
+ }, 90);
118
+ const start = performance.now();
119
+ await Promise.all([
120
+ work(),
121
+ sleep(minDurationMs),
122
+ ]);
123
+ const elapsed = Math.round(performance.now() - start);
124
+ clearInterval(interval);
125
+ const icon = settled ? output_1.fmt.green('✓') : output_1.fmt.cyan('·');
126
+ const lbl = settled ? output_1.fmt.green(output_1.fmt.bold(labelPad)) : output_1.fmt.bold(labelPad);
127
+ process.stdout.write(`\r ${icon} ${lbl} ${msgPad} ${output_1.fmt.dim(`[${elapsed}ms]`)}\n`);
128
+ return elapsed;
129
+ }
130
+ /** Demo amount for first-TX experience: $10 USDC (fee $0.10, net $9.90) */
131
+ const TEST_TX_AMOUNT_WEI = 10000000n;
75
132
  async function runTest(output) {
76
133
  // Step 1: Resolve identity file
77
134
  const identityPath = (0, config_1.resolveIdentityPath)();
78
135
  if (!identityPath) {
79
- throw new Error('No agent identity file found.\n' +
80
- 'Create a {slug}.md file and run "actp init" first.\n' +
81
- 'Or use an AI assistant with AGIRAILS.md to generate one.');
136
+ throw new Error('No agent identity file ({slug}.md) found in this directory.\n' +
137
+ 'Create one with a valid AGIRAILS.md v4 frontmatter (name, services, pricing).\n' +
138
+ 'Or let an AI assistant generate one: curl -sLO https://www.agirails.app/protocol/AGIRAILS.md');
82
139
  }
83
- const spinner = output.spinner('Running test earning loop...');
140
+ // Parse identity
141
+ const content = fs.readFileSync(identityPath, 'utf-8');
142
+ const config = (0, agirailsmdV4_1.parseAgirailsMdV4)(content);
143
+ const testJob = (0, testjobs_1.selectTestJob)(config.services);
144
+ // Render banner + section header (human mode only)
145
+ if (output.mode === 'human') {
146
+ output.print('');
147
+ output.print((0, banner_1.inlineBanner)('ACTP Transaction Lifecycle'));
148
+ output.print('');
149
+ }
150
+ const isTTY = process.stdout.isTTY && output.mode === 'human';
151
+ const totalStart = performance.now();
152
+ const runtime = new MockRuntime_1.MockRuntime();
153
+ // Create synthetic addresses
154
+ const requesterWallet = ethers_1.ethers.Wallet.createRandom();
155
+ let providerAddress;
84
156
  try {
85
- // Step 2: Parse identity
86
- const content = fs.readFileSync(identityPath, 'utf-8');
87
- const config = (0, agirailsmdV4_1.parseAgirailsMdV4)(content);
88
- // Step 3: Select test job
89
- const testJob = (0, testjobs_1.selectTestJob)(config.services);
90
- output.print(`Testing ${config.name} (${testJob.title})`);
91
- // Step 4: Run mock earning loop
92
- const totalStart = performance.now();
93
- const runtime = new MockRuntime_1.MockRuntime();
94
- // Create synthetic addresses
95
- const requesterWallet = ethers_1.ethers.Wallet.createRandom();
96
- let providerAddress;
97
- try {
98
- providerAddress = (0, config_1.loadConfig)().address || ethers_1.ethers.Wallet.createRandom().address;
99
- }
100
- catch {
101
- // No config found — use random address (likely first run before actp init)
102
- providerAddress = ethers_1.ethers.Wallet.createRandom().address;
103
- }
104
- // Amount in USDC wei (6 decimals)
105
- const amountWei = BigInt(Math.round(config.pricing.base * 1000000));
106
- const amountStr = amountWei.toString();
107
- // Mint balance for requester
108
- await runtime.mintTokens(requesterWallet.address, amountStr);
109
- // Step 4a: createTransaction (INITIATED)
110
- const deadline = runtime.time.now() + 86400; // +24h
111
- const disputeWindow = parseDuration(config.sla.dispute_window);
112
- const escrowStart = performance.now();
113
- const txId = await runtime.createTransaction({
157
+ providerAddress = (0, config_1.loadConfig)().address || ethers_1.ethers.Wallet.createRandom().address;
158
+ }
159
+ catch {
160
+ providerAddress = ethers_1.ethers.Wallet.createRandom().address;
161
+ }
162
+ // Hardcoded $10 demo amount — demonstrates fee math (fee $0.10, net $9.90)
163
+ const amountWei = TEST_TX_AMOUNT_WEI;
164
+ const amountStr = amountWei.toString();
165
+ await runtime.mintTokens(requesterWallet.address, amountStr);
166
+ const deadline = runtime.time.now() + 86400;
167
+ const disputeWindow = parseDuration(config.sla.dispute_window);
168
+ // Shared txId/escrowId across state closures
169
+ let txId = '';
170
+ let escrowId = '';
171
+ let escrowLockMs = 0;
172
+ let settlementMs = 0;
173
+ // === INITIATED ===
174
+ await animateState(output, 'INITIATED', 'Requester created transaction', async () => {
175
+ txId = await runtime.createTransaction({
114
176
  provider: providerAddress,
115
177
  requester: requesterWallet.address,
116
178
  amount: amountStr,
@@ -118,42 +180,142 @@ async function runTest(output) {
118
180
  disputeWindow,
119
181
  serviceDescription: testJob.title,
120
182
  });
121
- // Step 4b: linkEscrow (INITIATED → COMMITTED)
122
- const escrowId = await runtime.linkEscrow(txId, amountStr);
123
- const escrowLockMs = performance.now() - escrowStart;
124
- // Step 4c: transitionState (COMMITTED → IN_PROGRESS)
183
+ });
184
+ // === QUOTED === (educational: demonstrates full state machine)
185
+ await animateState(output, 'QUOTED', `${config.name} quoted $10.00 USDC`, async () => {
186
+ await runtime.transitionState(txId, 'QUOTED');
187
+ });
188
+ // === COMMITTED ===
189
+ await animateState(output, 'COMMITTED', 'Escrow funded — $10.00 locked', async () => {
190
+ const commitStart = performance.now();
191
+ escrowId = await runtime.linkEscrow(txId, amountStr);
192
+ escrowLockMs = performance.now() - commitStart;
193
+ });
194
+ // === IN_PROGRESS ===
195
+ await animateState(output, 'IN_PROGRESS', `${config.name} working...`, async () => {
125
196
  await runtime.transitionState(txId, 'IN_PROGRESS');
126
- // Step 4d: transitionState (IN_PROGRESS DELIVERED)
197
+ }, false, 700); // longer delay simulates "doing work"
198
+ // === DELIVERED ===
199
+ await animateState(output, 'DELIVERED', 'Delivery proof submitted', async () => {
127
200
  await runtime.transitionState(txId, 'DELIVERED');
128
- // Step 4e: advanceTime past dispute window
129
- await runtime.time.advanceTime(disputeWindow + 1);
130
- // Step 4f: releaseEscrow (DELIVERED SETTLED)
201
+ });
202
+ // Advance time past dispute window (silent not a real state transition)
203
+ await runtime.time.advanceTime(disputeWindow + 1);
204
+ // === SETTLED ===
205
+ await animateState(output, 'SETTLED', `Escrow released → ${config.name}`, async () => {
131
206
  const settlementStart = performance.now();
132
207
  await runtime.releaseEscrow(escrowId);
133
- const settlementMs = performance.now() - settlementStart;
134
- const totalMs = performance.now() - totalStart;
135
- spinner.stop(true);
136
- // Step 5: Display receipt
137
- (0, receipt_1.renderReceipt)({
138
- agent: config.slug,
139
- service: config.services[0],
140
- amountWei,
141
- network: 'mock',
142
- txId,
143
- timing: {
144
- totalMs: Math.round(totalMs),
145
- escrowLockMs: Math.round(escrowLockMs),
146
- settlementMs: Math.round(settlementMs),
147
- },
148
- }, output);
208
+ settlementMs = performance.now() - settlementStart;
209
+ }, true);
210
+ const totalMs = performance.now() - totalStart;
211
+ // Summary line
212
+ if (output.mode === 'human') {
213
+ output.print('');
214
+ output.print(output_1.fmt.dim(` ─── ${Math.round(totalMs)}ms total ${'─'.repeat(Math.max(0, 40 - String(Math.round(totalMs)).length))}`));
215
+ output.print('');
216
+ }
217
+ // Receipt
218
+ (0, receipt_1.renderReceipt)({
219
+ agent: config.name,
220
+ service: config.services[0],
221
+ amountWei,
222
+ network: 'mock',
223
+ txId,
224
+ timing: {
225
+ totalMs: Math.round(totalMs),
226
+ escrowLockMs: Math.round(escrowLockMs),
227
+ settlementMs: Math.round(settlementMs),
228
+ },
229
+ }, output);
230
+ // Best-effort publish to agirails.app/r/<id> — mock auth requires API key.
231
+ // On failure, fall through silently; the CLI already printed a local receipt.
232
+ // Fee math from canonical SDK helper (config/defaults.ts) — kept in sync
233
+ // with the web copy at lib/receipts/fees.ts via the parity test on web.
234
+ const feeWei = (0, defaults_1.computeDisplayFee)(amountWei);
235
+ const netWei = amountWei - feeWei;
236
+ const upload = await (0, receiptUpload_1.uploadReceipt)({
237
+ agentAddress: providerAddress,
238
+ service: testJob.title,
239
+ amountWei: amountStr,
240
+ feeWei: feeWei.toString(),
241
+ netWei: netWei.toString(),
242
+ txId,
243
+ network: 'mock',
244
+ requesterAddress: requesterWallet.address,
245
+ durationMs: Math.round(totalMs),
246
+ });
247
+ if (output.mode === 'human' && upload.ok) {
248
+ output.print('');
249
+ output.print(` ${output_1.fmt.green('→')} Shareable receipt: ${output_1.fmt.bold(upload.url)}`);
250
+ if (upload.milestone) {
251
+ output.print(` ${output_1.fmt.yellow('★')} Milestone: ${output_1.fmt.bold(upload.milestone)}`);
252
+ }
253
+ output.print('');
149
254
  }
150
- catch (error) {
151
- spinner.stop(false);
152
- throw error;
255
+ // Share prompt (TTY + human mode only — never in CI/piped/json/quiet)
256
+ if (isTTY) {
257
+ await promptShare(amountWei, 'mock', undefined, upload.ok ? upload.url : undefined);
153
258
  }
154
259
  }
155
260
  exports.runTest = runTest;
156
261
  // ============================================================================
262
+ // Share prompt
263
+ // ============================================================================
264
+ async function promptShare(amountWei, network, ethTxHash, receiptUrl) {
265
+ const readline = await Promise.resolve().then(() => __importStar(require('readline')));
266
+ const { copyToClipboardOSC52, buildTwitterIntentUrl, openUrl, buildMockTweet, buildTestnetTweet, } = await Promise.resolve().then(() => __importStar(require('../utils/share')));
267
+ // Compute net for tweet text
268
+ const { computeDisplayFee } = await Promise.resolve().then(() => __importStar(require('../../config/defaults')));
269
+ const fee = computeDisplayFee(amountWei);
270
+ const net = amountWei - fee;
271
+ const netUsd = `$${(Number(net) / 1000000).toFixed(2)}`;
272
+ const baseTweet = network === 'testnet' && ethTxHash
273
+ ? buildTestnetTweet(netUsd, ethTxHash)
274
+ : buildMockTweet(netUsd);
275
+ const tweetText = receiptUrl ? `${baseTweet}\n\n${receiptUrl}` : baseTweet;
276
+ console.log('');
277
+ console.log(output_1.fmt.bold('Share your first transaction?'));
278
+ console.log('');
279
+ console.log(` ${output_1.fmt.cyan('1)')} Copy tweet text to clipboard`);
280
+ console.log(` ${output_1.fmt.cyan('2)')} Open Twitter with pre-filled tweet`);
281
+ console.log(` ${output_1.fmt.cyan('3)')} Skip`);
282
+ console.log('');
283
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
284
+ const answer = await new Promise((resolve) => {
285
+ rl.question('Choose [1-3, default 3]: ', resolve);
286
+ });
287
+ rl.close();
288
+ const choice = answer.trim() || '3';
289
+ if (choice === '1') {
290
+ const copied = copyToClipboardOSC52(tweetText);
291
+ console.log('');
292
+ if (copied) {
293
+ console.log(output_1.fmt.green('✓ Tweet copied to clipboard.'));
294
+ }
295
+ else {
296
+ console.log(output_1.fmt.yellow('Clipboard not available — copy manually:'));
297
+ console.log('');
298
+ console.log(output_1.fmt.dim(tweetText));
299
+ }
300
+ console.log('');
301
+ }
302
+ else if (choice === '2') {
303
+ const url = buildTwitterIntentUrl(tweetText);
304
+ const opened = openUrl(url);
305
+ console.log('');
306
+ if (opened) {
307
+ console.log(output_1.fmt.green('✓ Opening Twitter...'));
308
+ }
309
+ else {
310
+ console.log(output_1.fmt.yellow('Could not open browser. Copy this URL:'));
311
+ console.log('');
312
+ console.log(output_1.fmt.dim(url));
313
+ }
314
+ console.log('');
315
+ }
316
+ // choice === '3' or anything else: silent skip
317
+ }
318
+ // ============================================================================
157
319
  // Helpers
158
320
  // ============================================================================
159
321
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/cli/commands/test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/cli/commands/test.ts"],"names":[],"mappings":"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"}
@@ -122,6 +122,17 @@ function createTxStatusCommand() {
122
122
  output.raw(tx.state);
123
123
  return;
124
124
  }
125
+ // Compute fee breakdown for settled transactions
126
+ let feeBreakdown;
127
+ if (tx.state === 'SETTLED') {
128
+ const amountWei = BigInt(tx.amount);
129
+ const bps = BigInt(tx.platformFeeBpsLocked ?? 100); // default 1%
130
+ const minFee = 50000n; // $0.05 in USDC wei
131
+ const bpsFee = (amountWei * bps) / 10000n;
132
+ const fee = bpsFee > minFee ? bpsFee : minFee;
133
+ const providerNet = amountWei - fee;
134
+ feeBreakdown = `${formatUsdc(providerNet.toString())} USDC to provider (${formatUsdc(tx.amount)} committed, ${formatUsdc(fee.toString())} protocol fee)`;
135
+ }
125
136
  const display = {
126
137
  txId: tx.id,
127
138
  state: tx.state,
@@ -131,6 +142,8 @@ function createTxStatusCommand() {
131
142
  deadline: new Date(tx.deadline * 1000).toISOString(),
132
143
  escrowId: tx.escrowId,
133
144
  createdAt: new Date(tx.createdAt * 1000).toISOString(),
145
+ ethTxHash: tx.ethTxHash,
146
+ feeBreakdown,
134
147
  };
135
148
  if (options.json) {
136
149
  output.result({