@agirails/sdk 2.7.0 → 3.0.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 (260) hide show
  1. package/README.md +1 -1
  2. package/bin/agirails +10 -0
  3. package/dist/ACTPClient.d.ts +9 -4
  4. package/dist/ACTPClient.d.ts.map +1 -1
  5. package/dist/ACTPClient.js +12 -8
  6. package/dist/ACTPClient.js.map +1 -1
  7. package/dist/abi/ACTPKernel.json +87 -6
  8. package/dist/adapters/BaseAdapter.d.ts +3 -3
  9. package/dist/adapters/BaseAdapter.js +3 -3
  10. package/dist/adapters/BasicAdapter.d.ts +1 -1
  11. package/dist/adapters/BasicAdapter.js +2 -2
  12. package/dist/adapters/BasicAdapter.js.map +1 -1
  13. package/dist/adapters/StandardAdapter.d.ts +30 -8
  14. package/dist/adapters/StandardAdapter.d.ts.map +1 -1
  15. package/dist/adapters/StandardAdapter.js +34 -9
  16. package/dist/adapters/StandardAdapter.js.map +1 -1
  17. package/dist/api/agirailsApp.d.ts +197 -0
  18. package/dist/api/agirailsApp.d.ts.map +1 -0
  19. package/dist/api/agirailsApp.js +175 -0
  20. package/dist/api/agirailsApp.js.map +1 -0
  21. package/dist/cli/agirails.d.ts +10 -0
  22. package/dist/cli/agirails.d.ts.map +1 -0
  23. package/dist/cli/agirails.js +187 -0
  24. package/dist/cli/agirails.js.map +1 -0
  25. package/dist/cli/commands/autopublish.d.ts +13 -0
  26. package/dist/cli/commands/autopublish.d.ts.map +1 -0
  27. package/dist/cli/commands/autopublish.js +156 -0
  28. package/dist/cli/commands/autopublish.js.map +1 -0
  29. package/dist/cli/commands/batch.js +1 -1
  30. package/dist/cli/commands/claim-code.d.ts +11 -0
  31. package/dist/cli/commands/claim-code.d.ts.map +1 -0
  32. package/dist/cli/commands/claim-code.js +160 -0
  33. package/dist/cli/commands/claim-code.js.map +1 -0
  34. package/dist/cli/commands/claim.d.ts +17 -0
  35. package/dist/cli/commands/claim.d.ts.map +1 -0
  36. package/dist/cli/commands/claim.js +104 -0
  37. package/dist/cli/commands/claim.js.map +1 -0
  38. package/dist/cli/commands/config.js +1 -1
  39. package/dist/cli/commands/config.js.map +1 -1
  40. package/dist/cli/commands/find.d.ts +23 -0
  41. package/dist/cli/commands/find.d.ts.map +1 -0
  42. package/dist/cli/commands/find.js +230 -0
  43. package/dist/cli/commands/find.js.map +1 -0
  44. package/dist/cli/commands/health.d.ts +16 -0
  45. package/dist/cli/commands/health.d.ts.map +1 -0
  46. package/dist/cli/commands/health.js +287 -0
  47. package/dist/cli/commands/health.js.map +1 -0
  48. package/dist/cli/commands/init.d.ts.map +1 -1
  49. package/dist/cli/commands/init.js +42 -13
  50. package/dist/cli/commands/init.js.map +1 -1
  51. package/dist/cli/commands/negotiate.d.ts +11 -0
  52. package/dist/cli/commands/negotiate.d.ts.map +1 -0
  53. package/dist/cli/commands/negotiate.js +192 -0
  54. package/dist/cli/commands/negotiate.js.map +1 -0
  55. package/dist/cli/commands/publish.d.ts.map +1 -1
  56. package/dist/cli/commands/publish.js +310 -17
  57. package/dist/cli/commands/publish.js.map +1 -1
  58. package/dist/cli/commands/pull.d.ts +7 -3
  59. package/dist/cli/commands/pull.d.ts.map +1 -1
  60. package/dist/cli/commands/pull.js +105 -13
  61. package/dist/cli/commands/pull.js.map +1 -1
  62. package/dist/cli/commands/receipt.d.ts +31 -0
  63. package/dist/cli/commands/receipt.d.ts.map +1 -0
  64. package/dist/cli/commands/receipt.js +92 -0
  65. package/dist/cli/commands/receipt.js.map +1 -0
  66. package/dist/cli/commands/test.d.ts +15 -0
  67. package/dist/cli/commands/test.d.ts.map +1 -0
  68. package/dist/cli/commands/test.js +176 -0
  69. package/dist/cli/commands/test.js.map +1 -0
  70. package/dist/cli/index.js +19 -0
  71. package/dist/cli/index.js.map +1 -1
  72. package/dist/cli/testjobs/index.d.ts +18 -0
  73. package/dist/cli/testjobs/index.d.ts.map +1 -0
  74. package/dist/cli/testjobs/index.js +45 -0
  75. package/dist/cli/testjobs/index.js.map +1 -0
  76. package/dist/cli/testjobs/templates/automation.d.ts +3 -0
  77. package/dist/cli/testjobs/templates/automation.d.ts.map +1 -0
  78. package/dist/cli/testjobs/templates/automation.js +32 -0
  79. package/dist/cli/testjobs/templates/automation.js.map +1 -0
  80. package/dist/cli/testjobs/templates/code-review.d.ts +3 -0
  81. package/dist/cli/testjobs/templates/code-review.d.ts.map +1 -0
  82. package/dist/cli/testjobs/templates/code-review.js +27 -0
  83. package/dist/cli/testjobs/templates/code-review.js.map +1 -0
  84. package/dist/cli/testjobs/templates/content-writing.d.ts +3 -0
  85. package/dist/cli/testjobs/templates/content-writing.d.ts.map +1 -0
  86. package/dist/cli/testjobs/templates/content-writing.js +20 -0
  87. package/dist/cli/testjobs/templates/content-writing.js.map +1 -0
  88. package/dist/cli/testjobs/templates/data-analysis.d.ts +3 -0
  89. package/dist/cli/testjobs/templates/data-analysis.d.ts.map +1 -0
  90. package/dist/cli/testjobs/templates/data-analysis.js +34 -0
  91. package/dist/cli/testjobs/templates/data-analysis.js.map +1 -0
  92. package/dist/cli/testjobs/templates/generic.d.ts +3 -0
  93. package/dist/cli/testjobs/templates/generic.d.ts.map +1 -0
  94. package/dist/cli/testjobs/templates/generic.js +17 -0
  95. package/dist/cli/testjobs/templates/generic.js.map +1 -0
  96. package/dist/cli/testjobs/templates/security-audit.d.ts +3 -0
  97. package/dist/cli/testjobs/templates/security-audit.d.ts.map +1 -0
  98. package/dist/cli/testjobs/templates/security-audit.js +30 -0
  99. package/dist/cli/testjobs/templates/security-audit.js.map +1 -0
  100. package/dist/cli/testjobs/templates/testing.d.ts +3 -0
  101. package/dist/cli/testjobs/templates/testing.d.ts.map +1 -0
  102. package/dist/cli/testjobs/templates/testing.js +29 -0
  103. package/dist/cli/testjobs/templates/testing.js.map +1 -0
  104. package/dist/cli/testjobs/templates/translation.d.ts +3 -0
  105. package/dist/cli/testjobs/templates/translation.d.ts.map +1 -0
  106. package/dist/cli/testjobs/templates/translation.js +16 -0
  107. package/dist/cli/testjobs/templates/translation.js.map +1 -0
  108. package/dist/cli/testjobs/types.d.ts +16 -0
  109. package/dist/cli/testjobs/types.d.ts.map +1 -0
  110. package/dist/cli/testjobs/types.js +8 -0
  111. package/dist/cli/testjobs/types.js.map +1 -0
  112. package/dist/cli/utils/client.js +1 -1
  113. package/dist/cli/utils/client.js.map +1 -1
  114. package/dist/cli/utils/config.d.ts +12 -0
  115. package/dist/cli/utils/config.d.ts.map +1 -1
  116. package/dist/cli/utils/config.js +29 -2
  117. package/dist/cli/utils/config.js.map +1 -1
  118. package/dist/config/agirailsmd.d.ts +1 -1
  119. package/dist/config/agirailsmd.d.ts.map +1 -1
  120. package/dist/config/agirailsmd.js +3 -0
  121. package/dist/config/agirailsmd.js.map +1 -1
  122. package/dist/config/agirailsmdV4.d.ts +82 -0
  123. package/dist/config/agirailsmdV4.d.ts.map +1 -0
  124. package/dist/config/agirailsmdV4.js +254 -0
  125. package/dist/config/agirailsmdV4.js.map +1 -0
  126. package/dist/config/defaults.d.ts +50 -0
  127. package/dist/config/defaults.d.ts.map +1 -0
  128. package/dist/config/defaults.js +77 -0
  129. package/dist/config/defaults.js.map +1 -0
  130. package/dist/config/networks.d.ts +1 -0
  131. package/dist/config/networks.d.ts.map +1 -1
  132. package/dist/config/networks.js +16 -13
  133. package/dist/config/networks.js.map +1 -1
  134. package/dist/config/publishPipeline.d.ts.map +1 -1
  135. package/dist/config/publishPipeline.js +4 -0
  136. package/dist/config/publishPipeline.js.map +1 -1
  137. package/dist/config/slugUtils.d.ts +28 -0
  138. package/dist/config/slugUtils.d.ts.map +1 -0
  139. package/dist/config/slugUtils.js +51 -0
  140. package/dist/config/slugUtils.js.map +1 -0
  141. package/dist/level0/ServiceDirectory.d.ts +6 -6
  142. package/dist/level0/ServiceDirectory.js +11 -11
  143. package/dist/level0/ServiceDirectory.js.map +1 -1
  144. package/dist/level1/Agent.d.ts +10 -10
  145. package/dist/level1/Agent.d.ts.map +1 -1
  146. package/dist/level1/Agent.js +45 -29
  147. package/dist/level1/Agent.js.map +1 -1
  148. package/dist/level1/pricing/PriceCalculator.js +2 -2
  149. package/dist/level1/pricing/PriceCalculator.js.map +1 -1
  150. package/dist/negotiation/BuyerOrchestrator.d.ts +108 -0
  151. package/dist/negotiation/BuyerOrchestrator.d.ts.map +1 -0
  152. package/dist/negotiation/BuyerOrchestrator.js +377 -0
  153. package/dist/negotiation/BuyerOrchestrator.js.map +1 -0
  154. package/dist/negotiation/DecisionEngine.d.ts +44 -0
  155. package/dist/negotiation/DecisionEngine.d.ts.map +1 -0
  156. package/dist/negotiation/DecisionEngine.js +116 -0
  157. package/dist/negotiation/DecisionEngine.js.map +1 -0
  158. package/dist/negotiation/PolicyEngine.d.ts +126 -0
  159. package/dist/negotiation/PolicyEngine.d.ts.map +1 -0
  160. package/dist/negotiation/PolicyEngine.js +265 -0
  161. package/dist/negotiation/PolicyEngine.js.map +1 -0
  162. package/dist/negotiation/SessionStore.d.ts +57 -0
  163. package/dist/negotiation/SessionStore.d.ts.map +1 -0
  164. package/dist/negotiation/SessionStore.js +179 -0
  165. package/dist/negotiation/SessionStore.js.map +1 -0
  166. package/dist/negotiation/index.d.ts +9 -0
  167. package/dist/negotiation/index.d.ts.map +1 -0
  168. package/dist/negotiation/index.js +12 -0
  169. package/dist/negotiation/index.js.map +1 -0
  170. package/dist/protocol/ACTPKernel.d.ts +32 -4
  171. package/dist/protocol/ACTPKernel.d.ts.map +1 -1
  172. package/dist/protocol/ACTPKernel.js +70 -16
  173. package/dist/protocol/ACTPKernel.js.map +1 -1
  174. package/dist/protocol/AgentRegistry.js +2 -2
  175. package/dist/protocol/AgentRegistry.js.map +1 -1
  176. package/dist/protocol/DIDResolver.js +2 -2
  177. package/dist/protocol/DIDResolver.js.map +1 -1
  178. package/dist/protocol/EASHelper.d.ts +2 -2
  179. package/dist/protocol/EASHelper.js +5 -5
  180. package/dist/protocol/EASHelper.js.map +1 -1
  181. package/dist/protocol/EscrowVault.d.ts +2 -2
  182. package/dist/protocol/EscrowVault.js +4 -4
  183. package/dist/protocol/EscrowVault.js.map +1 -1
  184. package/dist/protocol/EventMonitor.d.ts +4 -4
  185. package/dist/protocol/EventMonitor.js +5 -5
  186. package/dist/protocol/EventMonitor.js.map +1 -1
  187. package/dist/protocol/MessageSigner.d.ts +5 -5
  188. package/dist/protocol/MessageSigner.js +8 -8
  189. package/dist/protocol/MessageSigner.js.map +1 -1
  190. package/dist/protocol/ProofGenerator.d.ts +4 -4
  191. package/dist/protocol/ProofGenerator.js +6 -6
  192. package/dist/protocol/ProofGenerator.js.map +1 -1
  193. package/dist/runtime/BlockchainRuntime.d.ts +24 -14
  194. package/dist/runtime/BlockchainRuntime.d.ts.map +1 -1
  195. package/dist/runtime/BlockchainRuntime.js +60 -45
  196. package/dist/runtime/BlockchainRuntime.js.map +1 -1
  197. package/dist/runtime/IACTPRuntime.d.ts +12 -1
  198. package/dist/runtime/IACTPRuntime.d.ts.map +1 -1
  199. package/dist/runtime/MockRuntime.d.ts +22 -9
  200. package/dist/runtime/MockRuntime.d.ts.map +1 -1
  201. package/dist/runtime/MockRuntime.js +76 -24
  202. package/dist/runtime/MockRuntime.js.map +1 -1
  203. package/dist/runtime/MockStateManager.js +2 -2
  204. package/dist/runtime/MockStateManager.js.map +1 -1
  205. package/dist/runtime/types/MockState.d.ts +1 -1
  206. package/dist/types/erc8004.d.ts +2 -2
  207. package/dist/types/erc8004.d.ts.map +1 -1
  208. package/dist/types/erc8004.js +4 -1
  209. package/dist/types/erc8004.js.map +1 -1
  210. package/dist/types/state.d.ts +1 -1
  211. package/dist/types/state.js +1 -1
  212. package/dist/types/transaction.d.ts +4 -0
  213. package/dist/types/transaction.d.ts.map +1 -1
  214. package/dist/utils/ErrorRecoveryGuide.d.ts +1 -1
  215. package/dist/utils/ErrorRecoveryGuide.js +1 -1
  216. package/dist/utils/Helpers.d.ts +6 -6
  217. package/dist/utils/Helpers.js +7 -7
  218. package/dist/utils/Helpers.js.map +1 -1
  219. package/dist/utils/IPFSClient.d.ts +7 -7
  220. package/dist/utils/IPFSClient.js +9 -9
  221. package/dist/utils/IPFSClient.js.map +1 -1
  222. package/dist/utils/Logger.d.ts +4 -4
  223. package/dist/utils/Logger.js +8 -8
  224. package/dist/utils/Logger.js.map +1 -1
  225. package/dist/utils/NonceManager.d.ts +9 -9
  226. package/dist/utils/NonceManager.js +19 -19
  227. package/dist/utils/NonceManager.js.map +1 -1
  228. package/dist/utils/RateLimiter.d.ts +10 -10
  229. package/dist/utils/RateLimiter.d.ts.map +1 -1
  230. package/dist/utils/RateLimiter.js +22 -22
  231. package/dist/utils/RateLimiter.js.map +1 -1
  232. package/dist/utils/ReceivedNonceTracker.d.ts +10 -10
  233. package/dist/utils/ReceivedNonceTracker.js +20 -20
  234. package/dist/utils/ReceivedNonceTracker.js.map +1 -1
  235. package/dist/utils/SDKLifecycle.d.ts +3 -3
  236. package/dist/utils/SDKLifecycle.js +7 -7
  237. package/dist/utils/SDKLifecycle.js.map +1 -1
  238. package/dist/utils/SecureNonce.d.ts +1 -1
  239. package/dist/utils/SecureNonce.js +1 -1
  240. package/dist/utils/Semaphore.d.ts +2 -2
  241. package/dist/utils/Semaphore.js +2 -2
  242. package/dist/utils/UsedAttestationTracker.d.ts +13 -13
  243. package/dist/utils/UsedAttestationTracker.js +20 -20
  244. package/dist/utils/UsedAttestationTracker.js.map +1 -1
  245. package/dist/utils/security.d.ts +3 -3
  246. package/dist/utils/security.js +4 -4
  247. package/dist/utils/security.js.map +1 -1
  248. package/dist/utils/validation.d.ts +4 -4
  249. package/dist/utils/validation.js +9 -9
  250. package/dist/utils/validation.js.map +1 -1
  251. package/dist/wallet/AutoWalletProvider.d.ts.map +1 -1
  252. package/dist/wallet/AutoWalletProvider.js +2 -1
  253. package/dist/wallet/AutoWalletProvider.js.map +1 -1
  254. package/dist/wallet/IWalletProvider.d.ts +2 -0
  255. package/dist/wallet/IWalletProvider.d.ts.map +1 -1
  256. package/dist/wallet/aa/TransactionBatcher.d.ts +22 -2
  257. package/dist/wallet/aa/TransactionBatcher.d.ts.map +1 -1
  258. package/dist/wallet/aa/TransactionBatcher.js +51 -9
  259. package/dist/wallet/aa/TransactionBatcher.js.map +1 -1
  260. package/package.json +6 -12
@@ -0,0 +1,187 @@
1
+ "use strict";
2
+ /**
3
+ * npx agirails — One Command Entry Point
4
+ *
5
+ * 60-second quickstart: ask 3 questions → generate {slug}.md → mock earning loop → receipt.
6
+ * Re-entrant: if identity already exists, skips onboarding and runs test.
7
+ *
8
+ * @module cli/agirails
9
+ */
10
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ var desc = Object.getOwnPropertyDescriptor(m, k);
13
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
14
+ desc = { enumerable: true, get: function() { return m[k]; } };
15
+ }
16
+ Object.defineProperty(o, k2, desc);
17
+ }) : (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ o[k2] = m[k];
20
+ }));
21
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
22
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
23
+ }) : function(o, v) {
24
+ o["default"] = v;
25
+ });
26
+ var __importStar = (this && this.__importStar) || function (mod) {
27
+ if (mod && mod.__esModule) return mod;
28
+ var result = {};
29
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
30
+ __setModuleDefault(result, mod);
31
+ return result;
32
+ };
33
+ Object.defineProperty(exports, "__esModule", { value: true });
34
+ const fs = __importStar(require("fs"));
35
+ const readline = __importStar(require("readline"));
36
+ const ethers_1 = require("ethers");
37
+ const output_1 = require("./utils/output");
38
+ const config_1 = require("./utils/config");
39
+ const config_2 = require("./utils/config");
40
+ const slugUtils_1 = require("../config/slugUtils");
41
+ const test_1 = require("./commands/test");
42
+ const slugUtils_2 = require("../config/slugUtils");
43
+ const agirailsmd_1 = require("../config/agirailsmd");
44
+ const defaults_1 = require("../config/defaults");
45
+ const commander_1 = require("commander");
46
+ const find_1 = require("./commands/find");
47
+ // ============================================================================
48
+ // readline helper
49
+ // ============================================================================
50
+ function ask(rl, question) {
51
+ return new Promise((resolve) => rl.question(question, resolve));
52
+ }
53
+ // ============================================================================
54
+ // Service type menu
55
+ // ============================================================================
56
+ const SERVICE_MENU = defaults_1.V4_CONSTRAINTS.KNOWN_SERVICES.map((s, i) => ` ${i + 1}. ${s}`).join('\n');
57
+ // ============================================================================
58
+ // Main
59
+ // ============================================================================
60
+ async function main() {
61
+ const args = process.argv.slice(2);
62
+ const jsonMode = args.includes('--json');
63
+ const quietMode = args.includes('-q') || args.includes('--quiet');
64
+ const output = new output_1.Output(jsonMode ? 'json' : quietMode ? 'quiet' : 'human');
65
+ try {
66
+ // Re-entrant: if identity exists, skip onboarding
67
+ const existingIdentity = (0, config_1.resolveIdentityPath)();
68
+ if (existingIdentity) {
69
+ output.print(output_1.fmt.dim('Identity found: ' + existingIdentity));
70
+ output.print('');
71
+ await (0, test_1.runTest)(output);
72
+ return;
73
+ }
74
+ // Banner
75
+ output.print('');
76
+ output.print(output_1.fmt.bold('AGIRAILS') + output_1.fmt.dim(' — your agent earns in 60 seconds'));
77
+ output.print('');
78
+ // Interactive questions
79
+ const rl = readline.createInterface({
80
+ input: process.stdin,
81
+ output: process.stdout,
82
+ });
83
+ try {
84
+ // Q1: Agent name
85
+ const name = await ask(rl, output_1.fmt.cyan('? ') + 'What does your agent do? (name) ' + output_1.fmt.dim('> '));
86
+ if (!name.trim()) {
87
+ output.error('Agent name is required.');
88
+ process.exit(output_1.ExitCode.INVALID_INPUT);
89
+ }
90
+ // Q2: Service type
91
+ output.print('');
92
+ output.print(output_1.fmt.dim('Service types:'));
93
+ output.print(SERVICE_MENU);
94
+ const serviceInput = await ask(rl, output_1.fmt.cyan('? ') + 'Pick a service type ' + output_1.fmt.dim('[1-7, or custom] > '));
95
+ const serviceIdx = parseInt(serviceInput, 10);
96
+ const service = (serviceIdx >= 1 && serviceIdx <= defaults_1.V4_CONSTRAINTS.KNOWN_SERVICES.length)
97
+ ? defaults_1.V4_CONSTRAINTS.KNOWN_SERVICES[serviceIdx - 1]
98
+ : serviceInput.trim().toLowerCase().replace(/[^a-z0-9-]+/g, '-') || 'automation';
99
+ // Q3: Base price
100
+ const priceInput = await ask(rl, output_1.fmt.cyan('? ') + 'Base price in USDC? ' + output_1.fmt.dim('[default: 1.00] > '));
101
+ const price = parseFloat(priceInput) || 1.00;
102
+ rl.close();
103
+ // Generate and validate slug
104
+ const slug = (0, slugUtils_2.generateSlug)(name.trim());
105
+ const slugError = (0, slugUtils_1.validateSlug)(slug);
106
+ if (slugError) {
107
+ output.error(`Invalid agent name: ${slugError}`);
108
+ process.exit(output_1.ExitCode.INVALID_INPUT);
109
+ }
110
+ // Build frontmatter
111
+ const frontmatter = {
112
+ name: name.trim(),
113
+ slug,
114
+ version: '1.0.0',
115
+ network: defaults_1.V4_DEFAULTS.network,
116
+ services: [service],
117
+ pricing: {
118
+ base: price,
119
+ currency: defaults_1.V4_DEFAULTS.pricing.currency,
120
+ unit: defaults_1.V4_DEFAULTS.pricing.unit,
121
+ },
122
+ sla: { ...defaults_1.V4_DEFAULTS.sla },
123
+ payment: { modes: [...defaults_1.V4_DEFAULTS.payment.modes] },
124
+ };
125
+ // Build body
126
+ const body = `\n# ${name.trim()}\n\nDescribe what your agent does here.\n\n## How to Request This Service\n\nExplain how clients should structure their requests.\n`;
127
+ // Write {slug}.md (guard against overwriting existing files)
128
+ const filename = `${slug}.md`;
129
+ if (fs.existsSync(filename)) {
130
+ output.error(`File already exists: ${filename}. Remove it or choose a different name.`);
131
+ process.exit(output_1.ExitCode.INVALID_INPUT);
132
+ }
133
+ const content = (0, agirailsmd_1.serializeAgirailsMd)(frontmatter, body);
134
+ fs.writeFileSync(filename, content, 'utf-8');
135
+ output.print('');
136
+ output.success(`Created ${output_1.fmt.bold(filename)}`);
137
+ // Bootstrap .actp/ or backfill identity pointer
138
+ if (!(0, config_1.isInitialized)()) {
139
+ const randomAddress = ethers_1.ethers.Wallet.createRandom().address;
140
+ (0, config_1.saveConfig)({
141
+ ...config_1.CONFIG_DEFAULTS,
142
+ mode: 'mock',
143
+ address: randomAddress,
144
+ identity: filename,
145
+ });
146
+ (0, config_2.addToGitignore)();
147
+ output.success('Initialized .actp/ (mock mode)');
148
+ }
149
+ else if (!(0, config_1.resolveIdentityPath)()) {
150
+ // Existing config without identity pointer — backfill it
151
+ (0, config_1.updateConfig)({ identity: filename });
152
+ output.success('Updated .actp/config.json with identity pointer');
153
+ }
154
+ // Run mock earning loop
155
+ output.print('');
156
+ await (0, test_1.runTest)(output);
157
+ // Next steps
158
+ output.print('');
159
+ output.section('Next Steps');
160
+ output.print(` 1. Edit your agent: ${output_1.fmt.bold(filename)}`);
161
+ output.print(` 2. Go live on testnet: ${output_1.fmt.bold('actp publish')}`);
162
+ output.print(` 3. Your agent page: ${output_1.fmt.cyan(`agirails.app/a/${slug}`)} ${output_1.fmt.dim('(after publish)')}`);
163
+ output.print('');
164
+ }
165
+ finally {
166
+ rl.close();
167
+ }
168
+ }
169
+ catch (error) {
170
+ const message = error instanceof Error ? error.message : String(error);
171
+ output.error(message);
172
+ process.exit(output_1.ExitCode.ERROR);
173
+ }
174
+ }
175
+ // ============================================================================
176
+ // Subcommand routing: agirails find [query] [options]
177
+ // ============================================================================
178
+ const subCmd = process.argv[2];
179
+ if (subCmd === 'find') {
180
+ const sub = new commander_1.Command('agirails');
181
+ sub.addCommand((0, find_1.createFindCommand)());
182
+ sub.parse(process.argv);
183
+ }
184
+ else {
185
+ main();
186
+ }
187
+ //# sourceMappingURL=agirails.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agirails.js","sourceRoot":"","sources":["../../src/cli/agirails.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,mDAAqC;AACrC,mCAAgC;AAChC,2CAAuD;AACvD,2CAA+G;AAC/G,2CAAgD;AAChD,mDAAmD;AACnD,0CAA0C;AAC1C,mDAAmD;AACnD,qDAA2D;AAC3D,iDAAiE;AACjE,yCAAoC;AACpC,0CAAoD;AAEpD,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,SAAS,GAAG,CAAC,EAAsB,EAAE,QAAgB;IACnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,MAAM,YAAY,GAAG,yBAAc,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEhG,+EAA+E;AAC/E,OAAO;AACP,+EAA+E;AAE/E,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAElE,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAE7E,IAAI,CAAC;QACH,kDAAkD;QAClD,MAAM,gBAAgB,GAAG,IAAA,4BAAmB,GAAE,CAAC;QAC/C,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,CAAC,KAAK,CAAC,YAAG,CAAC,GAAG,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,CAAC,CAAC;YAC7D,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjB,MAAM,IAAA,cAAO,EAAC,MAAM,CAAC,CAAC;YACtB,OAAO;QACT,CAAC;QAED,SAAS;QACT,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjB,MAAM,CAAC,KAAK,CAAC,YAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,YAAG,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAC;QAClF,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAEjB,wBAAwB;QACxB,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,iBAAiB;YACjB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,YAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,kCAAkC,GAAG,YAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YAChG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBACjB,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;gBACxC,OAAO,CAAC,IAAI,CAAC,iBAAQ,CAAC,aAAa,CAAC,CAAC;YACvC,CAAC;YAED,mBAAmB;YACnB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjB,MAAM,CAAC,KAAK,CAAC,YAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC3B,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,YAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,sBAAsB,GAAG,YAAG,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,CAAC;YAC7G,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YAC9C,MAAM,OAAO,GAAG,CAAC,UAAU,IAAI,CAAC,IAAI,UAAU,IAAI,yBAAc,CAAC,cAAc,CAAC,MAAM,CAAC;gBACrF,CAAC,CAAC,yBAAc,CAAC,cAAc,CAAC,UAAU,GAAG,CAAC,CAAC;gBAC/C,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,IAAI,YAAY,CAAC;YAEnF,iBAAiB;YACjB,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,YAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,sBAAsB,GAAG,YAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;YAC1G,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;YAE7C,EAAE,CAAC,KAAK,EAAE,CAAC;YAEX,6BAA6B;YAC7B,MAAM,IAAI,GAAG,IAAA,wBAAY,EAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACvC,MAAM,SAAS,GAAG,IAAA,wBAAY,EAAC,IAAI,CAAC,CAAC;YACrC,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,CAAC,KAAK,CAAC,uBAAuB,SAAS,EAAE,CAAC,CAAC;gBACjD,OAAO,CAAC,IAAI,CAAC,iBAAQ,CAAC,aAAa,CAAC,CAAC;YACvC,CAAC;YAED,oBAAoB;YACpB,MAAM,WAAW,GAAG;gBAClB,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;gBACjB,IAAI;gBACJ,OAAO,EAAE,OAAO;gBAChB,OAAO,EAAE,sBAAW,CAAC,OAAO;gBAC5B,QAAQ,EAAE,CAAC,OAAO,CAAC;gBACnB,OAAO,EAAE;oBACP,IAAI,EAAE,KAAK;oBACX,QAAQ,EAAE,sBAAW,CAAC,OAAO,CAAC,QAAQ;oBACtC,IAAI,EAAE,sBAAW,CAAC,OAAO,CAAC,IAAI;iBAC/B;gBACD,GAAG,EAAE,EAAE,GAAG,sBAAW,CAAC,GAAG,EAAE;gBAC3B,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,sBAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;aACnD,CAAC;YAEF,aAAa;YACb,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,EAAE,qIAAqI,CAAC;YAErK,6DAA6D;YAC7D,MAAM,QAAQ,GAAG,GAAG,IAAI,KAAK,CAAC;YAC9B,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,MAAM,CAAC,KAAK,CAAC,wBAAwB,QAAQ,yCAAyC,CAAC,CAAC;gBACxF,OAAO,CAAC,IAAI,CAAC,iBAAQ,CAAC,aAAa,CAAC,CAAC;YACvC,CAAC;YACD,MAAM,OAAO,GAAG,IAAA,gCAAmB,EAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YACvD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAE7C,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjB,MAAM,CAAC,OAAO,CAAC,WAAW,YAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAEhD,gDAAgD;YAChD,IAAI,CAAC,IAAA,sBAAa,GAAE,EAAE,CAAC;gBACrB,MAAM,aAAa,GAAG,eAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC;gBAC3D,IAAA,mBAAU,EAAC;oBACT,GAAG,wBAAe;oBAClB,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,aAAa;oBACtB,QAAQ,EAAE,QAAQ;iBACnB,CAAC,CAAC;gBACH,IAAA,uBAAc,GAAE,CAAC;gBACjB,MAAM,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;YACnD,CAAC;iBAAM,IAAI,CAAC,IAAA,4BAAmB,GAAE,EAAE,CAAC;gBAClC,yDAAyD;gBACzD,IAAA,qBAAY,EAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACrC,MAAM,CAAC,OAAO,CAAC,iDAAiD,CAAC,CAAC;YACpE,CAAC;YAED,wBAAwB;YACxB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjB,MAAM,IAAA,cAAO,EAAC,MAAM,CAAC,CAAC;YAEtB,aAAa;YACb,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACjB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAC7B,MAAM,CAAC,KAAK,CAAC,yBAAyB,YAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC5D,MAAM,CAAC,KAAK,CAAC,4BAA4B,YAAG,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YACrE,MAAM,CAAC,KAAK,CAAC,yBAAyB,YAAG,CAAC,IAAI,CAAC,kBAAkB,IAAI,EAAE,CAAC,IAAI,YAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YAC1G,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,iBAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,sDAAsD;AACtD,+EAA+E;AAE/E,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/B,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;IACtB,MAAM,GAAG,GAAG,IAAI,mBAAO,CAAC,UAAU,CAAC,CAAC;IACpC,GAAG,CAAC,UAAU,CAAC,IAAA,wBAAiB,GAAE,CAAC,CAAC;IACpC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;KAAM,CAAC;IACN,IAAI,EAAE,CAAC;AACT,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Autopublish Command — Watch AGIRAILS.md and auto-publish on changes.
3
+ *
4
+ * Watches the specified file (or auto-detected AGIRAILS.md) for changes,
5
+ * debounces (2s), validates the config hash, and re-publishes if changed.
6
+ *
7
+ * NOTE: This is NOT `actp watch` (which watches transaction state).
8
+ *
9
+ * @module cli/commands/autopublish
10
+ */
11
+ import { Command } from 'commander';
12
+ export declare function createAutopublishCommand(): Command;
13
+ //# sourceMappingURL=autopublish.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autopublish.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/autopublish.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,wBAAgB,wBAAwB,IAAI,OAAO,CA2BlD"}
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ /**
3
+ * Autopublish Command — Watch AGIRAILS.md and auto-publish on changes.
4
+ *
5
+ * Watches the specified file (or auto-detected AGIRAILS.md) for changes,
6
+ * debounces (2s), validates the config hash, and re-publishes if changed.
7
+ *
8
+ * NOTE: This is NOT `actp watch` (which watches transaction state).
9
+ *
10
+ * @module cli/commands/autopublish
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.createAutopublishCommand = void 0;
14
+ const commander_1 = require("commander");
15
+ const output_1 = require("../utils/output");
16
+ const client_1 = require("../utils/client");
17
+ const path_1 = require("path");
18
+ const fs_1 = require("fs");
19
+ const agirailsmd_1 = require("../../config/agirailsmd");
20
+ const child_process_1 = require("child_process");
21
+ // ============================================================================
22
+ // Command Definition
23
+ // ============================================================================
24
+ function createAutopublishCommand() {
25
+ const cmd = new commander_1.Command('autopublish')
26
+ .description('Watch AGIRAILS.md and auto-publish on changes')
27
+ .argument('[path]', 'Path to AGIRAILS.md or {slug}.md')
28
+ .option('--no-publish', 'Validate only, do not publish')
29
+ .option('--debounce <ms>', 'Debounce interval in ms', '2000')
30
+ .option('--json', 'Output as JSON')
31
+ .option('-q, --quiet', 'Minimal output')
32
+ .action(async (path, options) => {
33
+ const output = new output_1.Output(options.json ? 'json' : options.quiet ? 'quiet' : 'human');
34
+ try {
35
+ await runAutopublish(path, options, output);
36
+ }
37
+ catch (error) {
38
+ const structuredError = (0, client_1.mapError)(error);
39
+ output.errorResult({
40
+ code: structuredError.code,
41
+ message: structuredError.message,
42
+ details: structuredError.details,
43
+ });
44
+ process.exit(output_1.ExitCode.ERROR);
45
+ }
46
+ });
47
+ return cmd;
48
+ }
49
+ exports.createAutopublishCommand = createAutopublishCommand;
50
+ async function runAutopublish(filePath, options, output) {
51
+ // Resolve file path
52
+ const resolvedPath = resolveFilePath(filePath);
53
+ if (!resolvedPath) {
54
+ output.errorResult({
55
+ code: 'FILE_NOT_FOUND',
56
+ message: filePath
57
+ ? `File not found: ${filePath}`
58
+ : 'No AGIRAILS.md found in current directory',
59
+ });
60
+ process.exit(output_1.ExitCode.ERROR);
61
+ }
62
+ const debounceMs = Math.max(500, parseInt(options.debounce ?? '2000', 10) || 2000);
63
+ // Compute initial hash
64
+ let lastHash = computeHash(resolvedPath);
65
+ const fileName = (0, path_1.basename)(resolvedPath);
66
+ output.print(`Watching ${output_1.fmt.cyan(fileName)} for changes (debounce: ${debounceMs}ms)...`);
67
+ if (!options.publish) {
68
+ output.print(output_1.fmt.dim(' --no-publish: validate only, will not publish'));
69
+ }
70
+ output.print(output_1.fmt.dim(` Initial hash: ${lastHash}`));
71
+ output.print(output_1.fmt.dim(' Press Ctrl+C to stop'));
72
+ output.blank();
73
+ // Use fs.watchFile (polling) for cross-platform reliability.
74
+ // fs.watch has issues with atomic writes on macOS (editors write to tmp + rename).
75
+ let debounceTimer = null;
76
+ (0, fs_1.watchFile)(resolvedPath, { interval: 500 }, () => {
77
+ if (debounceTimer)
78
+ clearTimeout(debounceTimer);
79
+ debounceTimer = setTimeout(async () => {
80
+ try {
81
+ const newHash = computeHash(resolvedPath);
82
+ if (newHash === lastHash) {
83
+ // File touched but content hash unchanged (e.g. only metadata/mtime changed)
84
+ return;
85
+ }
86
+ const timestamp = new Date().toISOString().slice(11, 19);
87
+ output.print(`${output_1.fmt.dim(timestamp)} Change detected — hash: ${output_1.fmt.cyan(newHash.slice(0, 16))}...`);
88
+ lastHash = newHash;
89
+ if (!options.publish) {
90
+ output.success(' Validated (--no-publish)');
91
+ return;
92
+ }
93
+ // Invoke actp publish as subprocess
94
+ output.print(' Publishing...');
95
+ const exitCode = await runPublishSubprocess(resolvedPath);
96
+ if (exitCode === 0) {
97
+ output.success(' Published successfully');
98
+ }
99
+ else {
100
+ output.print(` ${output_1.fmt.yellow('Publish failed')} (exit code ${exitCode})`);
101
+ }
102
+ }
103
+ catch (err) {
104
+ output.print(` ${output_1.fmt.yellow('Error:')} ${err instanceof Error ? err.message : String(err)}`);
105
+ }
106
+ }, debounceMs);
107
+ });
108
+ // Keep process alive until Ctrl+C
109
+ process.on('SIGINT', () => {
110
+ (0, fs_1.unwatchFile)(resolvedPath);
111
+ if (debounceTimer)
112
+ clearTimeout(debounceTimer);
113
+ output.blank();
114
+ output.print('Stopped watching.');
115
+ process.exit(0);
116
+ });
117
+ // Block forever (watchFile is non-blocking)
118
+ await new Promise(() => { });
119
+ }
120
+ // ============================================================================
121
+ // Helpers
122
+ // ============================================================================
123
+ function resolveFilePath(filePath) {
124
+ if (filePath) {
125
+ const resolved = (0, path_1.resolve)(filePath);
126
+ return (0, fs_1.existsSync)(resolved) ? resolved : null;
127
+ }
128
+ // Auto-detect: AGIRAILS.md in cwd
129
+ const agirailsMd = (0, path_1.resolve)(process.cwd(), 'AGIRAILS.md');
130
+ if ((0, fs_1.existsSync)(agirailsMd))
131
+ return agirailsMd;
132
+ return null;
133
+ }
134
+ function computeHash(filePath) {
135
+ const content = (0, fs_1.readFileSync)(filePath, 'utf-8');
136
+ const result = (0, agirailsmd_1.computeConfigHash)(content);
137
+ return result.configHash;
138
+ }
139
+ function runPublishSubprocess(filePath) {
140
+ return new Promise((res) => {
141
+ const actpBin = process.argv[1];
142
+ const args = ['publish', filePath, '--quiet'];
143
+ (0, child_process_1.execFile)(process.argv[0], [actpBin, ...args], { timeout: 60000 }, (error) => {
144
+ if (error && 'code' in error && typeof error.code === 'number') {
145
+ res(error.code);
146
+ }
147
+ else if (error) {
148
+ res(1);
149
+ }
150
+ else {
151
+ res(0);
152
+ }
153
+ });
154
+ });
155
+ }
156
+ //# sourceMappingURL=autopublish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autopublish.js","sourceRoot":"","sources":["../../../src/cli/commands/autopublish.ts"],"names":[],"mappings":"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"}
@@ -330,7 +330,7 @@ function parseCommand(command) {
330
330
  /**
331
331
  * Execute a command (by spawning a child process)
332
332
  *
333
- * SECURITY FIX: No longer uses shell interpolation.
333
+ * Security: No longer uses shell interpolation.
334
334
  * Arguments are passed as an array directly to the actp binary.
335
335
  * This prevents command injection attacks.
336
336
  */
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Claim-Code Command — Regenerate a claim code for dashboard linking.
3
+ *
4
+ * Signs a message with the agent's keystore wallet, sends to server,
5
+ * gets a fresh claim code. Use when the original code expired or was lost.
6
+ *
7
+ * @module cli/commands/claim-code
8
+ */
9
+ import { Command } from 'commander';
10
+ export declare function createClaimCodeCommand(): Command;
11
+ //# sourceMappingURL=claim-code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim-code.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/claim-code.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,wBAAgB,sBAAsB,IAAI,OAAO,CAyBhD"}
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ /**
3
+ * Claim-Code Command — Regenerate a claim code for dashboard linking.
4
+ *
5
+ * Signs a message with the agent's keystore wallet, sends to server,
6
+ * gets a fresh claim code. Use when the original code expired or was lost.
7
+ *
8
+ * @module cli/commands/claim-code
9
+ */
10
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ var desc = Object.getOwnPropertyDescriptor(m, k);
13
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
14
+ desc = { enumerable: true, get: function() { return m[k]; } };
15
+ }
16
+ Object.defineProperty(o, k2, desc);
17
+ }) : (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ o[k2] = m[k];
20
+ }));
21
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
22
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
23
+ }) : function(o, v) {
24
+ o["default"] = v;
25
+ });
26
+ var __importStar = (this && this.__importStar) || function (mod) {
27
+ if (mod && mod.__esModule) return mod;
28
+ var result = {};
29
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
30
+ __setModuleDefault(result, mod);
31
+ return result;
32
+ };
33
+ Object.defineProperty(exports, "__esModule", { value: true });
34
+ exports.createClaimCodeCommand = void 0;
35
+ const commander_1 = require("commander");
36
+ const ethers_1 = require("ethers");
37
+ const output_1 = require("../utils/output");
38
+ const client_1 = require("../utils/client");
39
+ const keystore_1 = require("../../wallet/keystore");
40
+ const agirailsApp_1 = require("../../api/agirailsApp");
41
+ const agirailsmd_1 = require("../../config/agirailsmd");
42
+ const path_1 = require("path");
43
+ const fs_1 = require("fs");
44
+ // ============================================================================
45
+ // Command Definition
46
+ // ============================================================================
47
+ function createClaimCodeCommand() {
48
+ const cmd = new commander_1.Command('claim-code')
49
+ .description('Get a claim code to link your agent to your dashboard account')
50
+ .argument('[path]', 'Path to AGIRAILS.md or {slug}.md')
51
+ .option('--json', 'Output as JSON')
52
+ .option('-q, --quiet', 'Output only the claim code')
53
+ .action(async (path, options) => {
54
+ const output = new output_1.Output(options.json ? 'json' : options.quiet ? 'quiet' : 'human');
55
+ try {
56
+ await runClaimCode(path, output);
57
+ }
58
+ catch (error) {
59
+ const structuredError = (0, client_1.mapError)(error);
60
+ output.errorResult({
61
+ code: structuredError.code,
62
+ message: structuredError.message,
63
+ details: structuredError.details,
64
+ });
65
+ process.exit(output_1.ExitCode.ERROR);
66
+ }
67
+ });
68
+ return cmd;
69
+ }
70
+ exports.createClaimCodeCommand = createClaimCodeCommand;
71
+ // ============================================================================
72
+ // Implementation
73
+ // ============================================================================
74
+ async function runClaimCode(filePath, output) {
75
+ // Resolve AGIRAILS.md path
76
+ let effectivePath = filePath;
77
+ if (!effectivePath) {
78
+ const { resolveIdentityPath } = await Promise.resolve().then(() => __importStar(require('../utils/config')));
79
+ const identityPath = resolveIdentityPath();
80
+ if (identityPath) {
81
+ effectivePath = identityPath;
82
+ }
83
+ else if ((0, fs_1.existsSync)((0, path_1.resolve)('./AGIRAILS.md'))) {
84
+ effectivePath = './AGIRAILS.md';
85
+ }
86
+ else {
87
+ output.error('No AGIRAILS.md found. Provide a path or run from your agent directory.\n' +
88
+ 'Usage: actp claim-code [path]');
89
+ process.exit(output_1.ExitCode.INVALID_INPUT);
90
+ }
91
+ }
92
+ const resolvedPath = (0, path_1.resolve)(effectivePath);
93
+ if (!(0, fs_1.existsSync)(resolvedPath)) {
94
+ output.error(`File not found: ${effectivePath}`);
95
+ process.exit(output_1.ExitCode.INVALID_INPUT);
96
+ }
97
+ const content = (0, fs_1.readFileSync)(resolvedPath, 'utf-8');
98
+ const { frontmatter } = (0, agirailsmd_1.parseAgirailsMd)(content);
99
+ const fm = frontmatter;
100
+ const agentId = fm.agent_id;
101
+ if (!agentId) {
102
+ output.error('No agent_id found in AGIRAILS.md frontmatter.\n' +
103
+ 'Run `actp publish` first to register your agent on-chain.');
104
+ process.exit(output_1.ExitCode.INVALID_INPUT);
105
+ }
106
+ const spinner = output.spinner('Generating claim code...');
107
+ try {
108
+ const projectRoot = (0, path_1.resolve)(resolvedPath, '..');
109
+ const { loadConfig: loadCfg } = await Promise.resolve().then(() => __importStar(require('../utils/config')));
110
+ let networkMode = 'testnet';
111
+ try {
112
+ const cfg = loadCfg(projectRoot);
113
+ if (cfg.mode === 'mainnet')
114
+ networkMode = 'mainnet';
115
+ }
116
+ catch {
117
+ // Default to testnet if no config
118
+ }
119
+ const chainName = networkMode === 'mainnet' ? 'base-mainnet' : 'base-sepolia';
120
+ const privateKey = await (0, keystore_1.resolvePrivateKey)(projectRoot, { network: networkMode });
121
+ if (!privateKey) {
122
+ throw new Error('No wallet credentials found.\n' +
123
+ 'Set ACTP_KEY_PASSWORD or ACTP_PRIVATE_KEY environment variable.');
124
+ }
125
+ const wallet = new ethers_1.ethers.Wallet(privateKey);
126
+ const walletAddress = wallet.address;
127
+ // Read Smart Wallet address from AGIRAILS.md frontmatter if available
128
+ const fmWallet = fm.wallet;
129
+ const effectiveWallet = fmWallet || walletAddress;
130
+ // Sign message
131
+ const timestamp = Math.floor(Date.now() / 1000);
132
+ const message = `agirails-claim-code:${agentId}:${chainName}:${timestamp}`;
133
+ const signature = await wallet.signMessage(message);
134
+ const result = await (0, agirailsApp_1.requestClaimCode)({
135
+ agentId,
136
+ wallet: effectiveWallet,
137
+ signer: effectiveWallet.toLowerCase() !== walletAddress.toLowerCase() ? walletAddress : undefined,
138
+ signature,
139
+ message,
140
+ network: chainName,
141
+ });
142
+ spinner.stop(true);
143
+ output.result({
144
+ claimCode: result.claimCode,
145
+ claimUrl: `https://agirails.app/claim?code=${result.claimCode}`,
146
+ agentId,
147
+ }, { quietKey: 'claimCode' });
148
+ output.blank();
149
+ output.success(`Claim code: ${result.claimCode}`);
150
+ output.print(` Claim link: https://agirails.app/claim?code=${result.claimCode}`);
151
+ output.print(' (enter this code in your dashboard to link the agent)');
152
+ output.print('');
153
+ output.print(' Code expires in 24 hours. Run `actp claim-code` to get a new one.');
154
+ }
155
+ catch (error) {
156
+ spinner.stop(false);
157
+ throw error;
158
+ }
159
+ }
160
+ //# sourceMappingURL=claim-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim-code.js","sourceRoot":"","sources":["../../../src/cli/commands/claim-code.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Claim Command - Link agents to dashboard via wallet signature
3
+ *
4
+ * Proves wallet ownership by signing a challenge message.
5
+ * The dashboard verifies ownerOf(agentId) on-chain.
6
+ *
7
+ * @module cli/commands/claim
8
+ */
9
+ import { Command } from 'commander';
10
+ import { Output } from '../utils/output';
11
+ export declare function createClaimCommand(): Command;
12
+ interface ClaimOptions {
13
+ all?: boolean;
14
+ }
15
+ declare function runClaim(agentIdArg: string | undefined, options: ClaimOptions, output: Output): Promise<void>;
16
+ export { runClaim };
17
+ //# sourceMappingURL=claim.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/claim.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAY,MAAM,iBAAiB,CAAC;AAUnD,wBAAgB,kBAAkB,IAAI,OAAO,CA0B5C;AAMD,UAAU,YAAY;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,iBAAe,QAAQ,CACrB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CA0Ef;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}