@agirails/sdk 3.5.3 → 4.0.0-beta.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.
- package/dist/cli/agirails.d.ts +4 -1
- package/dist/cli/agirails.d.ts.map +1 -1
- package/dist/cli/agirails.js +34 -2
- package/dist/cli/agirails.js.map +1 -1
- package/dist/cli/commands/agent.d.ts.map +1 -1
- package/dist/cli/commands/agent.js +62 -21
- package/dist/cli/commands/agent.js.map +1 -1
- package/dist/cli/commands/pay.d.ts +7 -0
- package/dist/cli/commands/pay.d.ts.map +1 -1
- package/dist/cli/commands/pay.js +34 -1
- package/dist/cli/commands/pay.js.map +1 -1
- package/dist/cli/commands/request.d.ts +19 -0
- package/dist/cli/commands/request.d.ts.map +1 -0
- package/dist/cli/commands/request.js +167 -0
- package/dist/cli/commands/request.js.map +1 -0
- package/dist/cli/commands/serve.d.ts +12 -7
- package/dist/cli/commands/serve.d.ts.map +1 -1
- package/dist/cli/commands/serve.js +12 -7
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/commands/test.d.ts +22 -4
- package/dist/cli/commands/test.d.ts.map +1 -1
- package/dist/cli/commands/test.js +139 -292
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/commands/tx.js +13 -0
- package/dist/cli/commands/tx.js.map +1 -1
- package/dist/cli/index.js +7 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/lib/resolveAgent.d.ts +67 -0
- package/dist/cli/lib/resolveAgent.d.ts.map +1 -0
- package/dist/cli/lib/resolveAgent.js +121 -0
- package/dist/cli/lib/resolveAgent.js.map +1 -0
- package/dist/cli/lib/runRequest.d.ts +114 -0
- package/dist/cli/lib/runRequest.d.ts.map +1 -0
- package/dist/cli/lib/runRequest.js +324 -0
- package/dist/cli/lib/runRequest.js.map +1 -0
- package/dist/cli/lib/serviceNameForHash.d.ts +48 -0
- package/dist/cli/lib/serviceNameForHash.d.ts.map +1 -0
- package/dist/cli/lib/serviceNameForHash.js +62 -0
- package/dist/cli/lib/serviceNameForHash.js.map +1 -0
- package/dist/level0/request.d.ts.map +1 -1
- package/dist/level0/request.js +18 -6
- package/dist/level0/request.js.map +1 -1
- package/dist/level1/Agent.d.ts +72 -8
- package/dist/level1/Agent.d.ts.map +1 -1
- package/dist/level1/Agent.js +242 -110
- package/dist/level1/Agent.js.map +1 -1
- package/dist/negotiation/BuyerOrchestrator.d.ts +1 -1
- package/dist/negotiation/BuyerOrchestrator.d.ts.map +1 -1
- package/dist/negotiation/BuyerOrchestrator.js +10 -1
- package/dist/negotiation/BuyerOrchestrator.js.map +1 -1
- package/dist/protocol/EventMonitor.d.ts +26 -1
- package/dist/protocol/EventMonitor.d.ts.map +1 -1
- package/dist/protocol/EventMonitor.js +18 -4
- package/dist/protocol/EventMonitor.js.map +1 -1
- package/dist/runtime/BlockchainRuntime.d.ts +73 -0
- package/dist/runtime/BlockchainRuntime.d.ts.map +1 -1
- package/dist/runtime/BlockchainRuntime.js +121 -1
- package/dist/runtime/BlockchainRuntime.js.map +1 -1
- package/dist/runtime/IACTPRuntime.d.ts +29 -0
- package/dist/runtime/IACTPRuntime.d.ts.map +1 -1
- package/dist/runtime/MockRuntime.d.ts.map +1 -1
- package/dist/runtime/MockRuntime.js +21 -4
- package/dist/runtime/MockRuntime.js.map +1 -1
- package/dist/runtime/MockStateManager.d.ts.map +1 -1
- package/dist/runtime/MockStateManager.js +18 -0
- package/dist/runtime/MockStateManager.js.map +1 -1
- package/dist/runtime/types/MockState.d.ts +12 -0
- package/dist/runtime/types/MockState.d.ts.map +1 -1
- package/dist/runtime/types/MockState.js.map +1 -1
- package/dist/types/agent.d.ts +6 -1
- package/dist/types/agent.d.ts.map +1 -1
- package/package.json +2 -1
package/dist/cli/agirails.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* npx agirails — One Command Entry Point
|
|
3
3
|
*
|
|
4
|
-
* 60-second quickstart: ask 3 questions → generate {slug}.md →
|
|
4
|
+
* 60-second quickstart: ask 3 questions → generate {slug}.md → real Sentinel
|
|
5
|
+
* onboarding request on Base Sepolia → reflection. PRD-event-driven-provider-
|
|
6
|
+
* listening §5.7 replaced the prior MockRuntime earning-loop simulation with
|
|
7
|
+
* a live Level 1 request against the deployed Sentinel agent.
|
|
5
8
|
* Re-entrant: if identity already exists, skips onboarding and runs test.
|
|
6
9
|
*
|
|
7
10
|
* @module cli/agirails
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agirails.d.ts","sourceRoot":"","sources":["../../src/cli/agirails.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"agirails.d.ts","sourceRoot":"","sources":["../../src/cli/agirails.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
|
package/dist/cli/agirails.js
CHANGED
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* npx agirails — One Command Entry Point
|
|
4
4
|
*
|
|
5
|
-
* 60-second quickstart: ask 3 questions → generate {slug}.md →
|
|
5
|
+
* 60-second quickstart: ask 3 questions → generate {slug}.md → real Sentinel
|
|
6
|
+
* onboarding request on Base Sepolia → reflection. PRD-event-driven-provider-
|
|
7
|
+
* listening §5.7 replaced the prior MockRuntime earning-loop simulation with
|
|
8
|
+
* a live Level 1 request against the deployed Sentinel agent.
|
|
6
9
|
* Re-entrant: if identity already exists, skips onboarding and runs test.
|
|
7
10
|
*
|
|
8
11
|
* @module cli/agirails
|
|
@@ -176,7 +179,11 @@ async function main() {
|
|
|
176
179
|
(0, config_1.updateConfig)({ identity: filename });
|
|
177
180
|
output.success('Updated .actp/config.json with identity pointer');
|
|
178
181
|
}
|
|
179
|
-
// Run
|
|
182
|
+
// Run a real Sentinel onboarding request on Base Sepolia. Requires a
|
|
183
|
+
// wallet at ~/.actp/wallets/base-sepolia (or ACTP_KEYSTORE_BASE64) and
|
|
184
|
+
// small testnet ETH + USDC. The PRD §5.7 rewrite intentionally
|
|
185
|
+
// dropped the pre-4.0.0 MockRuntime simulation — "mock success" was a
|
|
186
|
+
// lie and onboarding deserves the real loop.
|
|
180
187
|
output.print('');
|
|
181
188
|
await (0, test_1.runTest)(output);
|
|
182
189
|
// Next steps
|
|
@@ -194,9 +201,34 @@ async function main() {
|
|
|
194
201
|
catch (error) {
|
|
195
202
|
const message = error instanceof Error ? error.message : String(error);
|
|
196
203
|
output.error(message);
|
|
204
|
+
// Surface the 4.0.0 setup expectation that runTest() now imposes. The
|
|
205
|
+
// common first-run failure modes — no keystore, no testnet ETH, no
|
|
206
|
+
// sentinel address — all flow through here, and a bare error message
|
|
207
|
+
// gives a new developer nothing to act on. The hint is conditional on
|
|
208
|
+
// the error shape so non-runtime errors (e.g. file-write failures
|
|
209
|
+
// earlier in onboarding) don't get the wrong remediation glued on.
|
|
210
|
+
if (looksLikeRunTestSetupError(message)) {
|
|
211
|
+
output.print('');
|
|
212
|
+
output.print('agirails now runs a real onboarding request against Sentinel on Base Sepolia.\n' +
|
|
213
|
+
'First-run setup:\n' +
|
|
214
|
+
" 1. `actp init` to generate a wallet (or set ACTP_KEYSTORE_BASE64).\n" +
|
|
215
|
+
" 2. Fund the wallet with a small amount of Base Sepolia ETH (gas) + test USDC.\n" +
|
|
216
|
+
" 3. Rerun `npx agirails`.\n" +
|
|
217
|
+
'Override Sentinel\'s address with ACTP_SENTINEL_ADDRESS=0x... if needed.');
|
|
218
|
+
}
|
|
197
219
|
process.exit(output_1.ExitCode.ERROR);
|
|
198
220
|
}
|
|
199
221
|
}
|
|
222
|
+
/** Heuristic — match the four most common runRequest / resolveAgent first-run
|
|
223
|
+
* failure-message shapes so the setup hint only fires when actionable. */
|
|
224
|
+
function looksLikeRunTestSetupError(message) {
|
|
225
|
+
return (/no wallet found/i.test(message) ||
|
|
226
|
+
/resolvePrivateKey/i.test(message) ||
|
|
227
|
+
/Agent ['"]?sentinel['"]?/i.test(message) ||
|
|
228
|
+
/ACTP_SENTINEL_ADDRESS/i.test(message) ||
|
|
229
|
+
/insufficient funds/i.test(message) ||
|
|
230
|
+
/BASE_SEPOLIA_RPC/i.test(message));
|
|
231
|
+
}
|
|
200
232
|
// ============================================================================
|
|
201
233
|
// Subcommand routing: agirails find [query] [options]
|
|
202
234
|
// ============================================================================
|
package/dist/cli/agirails.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agirails.js","sourceRoot":"","sources":["../../src/cli/agirails.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"agirails.js","sourceRoot":"","sources":["../../src/cli/agirails.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,wBAAgB,kBAAkB,IAAI,OAAO,CAwB5C"}
|
|
@@ -54,6 +54,8 @@ const MockRuntime_1 = require("../../runtime/MockRuntime");
|
|
|
54
54
|
const MockStateManager_1 = require("../../runtime/MockStateManager");
|
|
55
55
|
const ProviderOrchestrator_1 = require("../../negotiation/ProviderOrchestrator");
|
|
56
56
|
const RelayChannel_1 = require("../../negotiation/RelayChannel");
|
|
57
|
+
const serviceNameForHash_1 = require("../lib/serviceNameForHash");
|
|
58
|
+
const ethers_2 = require("ethers");
|
|
57
59
|
function createAgentCommand() {
|
|
58
60
|
return new commander_1.Command('agent')
|
|
59
61
|
.description('Run a long-running provider daemon (channel-driven, no HTTP)')
|
|
@@ -158,36 +160,75 @@ async function runAgent(options, output) {
|
|
|
158
160
|
output.print('Counter-offers from buyers auto-handled per counter_strategy.');
|
|
159
161
|
output.print('');
|
|
160
162
|
// Watch on-chain for new INITIATED txs addressed to us, auto-quote.
|
|
163
|
+
//
|
|
164
|
+
// PRD §5.8: pre-4.0.0 this loop called `getAllTransactions()`, which is a
|
|
165
|
+
// no-op on BlockchainRuntime — `actp agent` saw zero on-chain TXs on every
|
|
166
|
+
// real chain since BlockchainRuntime was introduced. The migration:
|
|
167
|
+
// - Use `getTransactionsByProvider(addr, 'INITIATED', 100)` (the
|
|
168
|
+
// bounded EventMonitor-backed sweep from PRD §5.2). It filters
|
|
169
|
+
// server-side, so the per-tx `provider` check the old loop did
|
|
170
|
+
// after the fact is no longer load-bearing.
|
|
171
|
+
// - Add an `inflight` set so a long-running `orchestrator.quote()`
|
|
172
|
+
// can't be re-entered by the next sweep tick for the same txId.
|
|
173
|
+
// - Only mark a TX `seen` *after* `orchestrator.quote()` resolves
|
|
174
|
+
// successfully. The old loop did `seen.add()` before the await,
|
|
175
|
+
// which meant a transient quote failure (relay 5xx, signer
|
|
176
|
+
// disconnect) permanently dropped the TX with no retry.
|
|
177
|
+
// - Replace the `policy.services[0] ?? 'default'` fallback with a
|
|
178
|
+
// hash-based `serviceNameForHash` lookup. The old fallback could
|
|
179
|
+
// quote the wrong service when the policy has more than one entry.
|
|
161
180
|
const seen = new Set();
|
|
181
|
+
const inflight = new Set();
|
|
162
182
|
const watchTimer = setInterval(async () => {
|
|
163
183
|
try {
|
|
164
|
-
const
|
|
165
|
-
for (const t of
|
|
166
|
-
if (seen.has(t.id))
|
|
184
|
+
const pending = await runtime.getTransactionsByProvider(signerAddress, 'INITIATED', 100);
|
|
185
|
+
for (const t of pending) {
|
|
186
|
+
if (seen.has(t.id) || inflight.has(t.id))
|
|
167
187
|
continue;
|
|
168
|
-
|
|
169
|
-
seen.add(t.id);
|
|
170
|
-
continue;
|
|
171
|
-
}
|
|
172
|
-
if (t.provider.toLowerCase() !== signerAddress.toLowerCase())
|
|
173
|
-
continue;
|
|
174
|
-
seen.add(t.id);
|
|
175
|
-
const req = {
|
|
176
|
-
txId: t.id,
|
|
177
|
-
consumer: `did:ethr:${chainId}:${t.requester.toLowerCase()}`,
|
|
178
|
-
offeredAmount: String(t.amount),
|
|
179
|
-
maxPrice: String(t.amount), // best estimate without separate field
|
|
180
|
-
deadline: Number(t.deadline) || Math.floor(Date.now() / 1000) + 3600,
|
|
181
|
-
serviceType: policy.services[0] ?? 'default',
|
|
182
|
-
currency: policy.pricing.min_acceptable.currency,
|
|
183
|
-
unit: policy.pricing.min_acceptable.unit,
|
|
184
|
-
};
|
|
188
|
+
inflight.add(t.id);
|
|
185
189
|
try {
|
|
190
|
+
// Split the two no-handler paths so logs are diagnostic:
|
|
191
|
+
// - ZeroHash → Level 0 `actp pay` tx, never routed to a
|
|
192
|
+
// provider handler. Not a misconfiguration; documented per
|
|
193
|
+
// PRD §5.4. Still mark seen so we stop evaluating it.
|
|
194
|
+
// - Anything else with no policy match → either a typo in
|
|
195
|
+
// policy.services or an INITIATED tx for a service this
|
|
196
|
+
// provider doesn't offer. Operators should investigate.
|
|
197
|
+
const isLevel0Pay = typeof t.serviceHash === 'string' &&
|
|
198
|
+
t.serviceHash.toLowerCase() === ethers_2.ZeroHash.toLowerCase();
|
|
199
|
+
if (isLevel0Pay) {
|
|
200
|
+
output.info(`[init] tx=${t.id.slice(0, 12)}… Level 0 pay (ZeroHash) — not routed to any handler, skipping`);
|
|
201
|
+
seen.add(t.id);
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
204
|
+
const serviceType = (0, serviceNameForHash_1.serviceNameForHash)(t.serviceHash, policy.services);
|
|
205
|
+
if (!serviceType) {
|
|
206
|
+
// Unknown hash is a deterministic skip (not a transient
|
|
207
|
+
// failure) — mark seen so we don't re-evaluate it forever.
|
|
208
|
+
output.warning(`[init] tx=${t.id.slice(0, 12)}… unknown service hash ${t.serviceHash?.slice(0, 10) ?? '(missing)'}…, skipping (check policy.services)`);
|
|
209
|
+
seen.add(t.id);
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
const req = {
|
|
213
|
+
txId: t.id,
|
|
214
|
+
consumer: `did:ethr:${chainId}:${t.requester.toLowerCase()}`,
|
|
215
|
+
offeredAmount: String(t.amount),
|
|
216
|
+
maxPrice: String(t.amount), // best estimate without separate field
|
|
217
|
+
deadline: Number(t.deadline) || Math.floor(Date.now() / 1000) + 3600,
|
|
218
|
+
serviceType,
|
|
219
|
+
currency: policy.pricing.min_acceptable.currency,
|
|
220
|
+
unit: policy.pricing.min_acceptable.unit,
|
|
221
|
+
};
|
|
186
222
|
const result = await orchestrator.quote(req, providerDID);
|
|
187
223
|
output.info(`[init] tx=${t.id.slice(0, 12)}… ${result.decision.action}: ${result.decision.reason}`);
|
|
224
|
+
// Only mark seen after success; transient failures retry next sweep.
|
|
225
|
+
seen.add(t.id);
|
|
188
226
|
}
|
|
189
227
|
catch (err) {
|
|
190
|
-
output.warning(`[init] tx=${t.id.slice(0, 12)}… quote failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
228
|
+
output.warning(`[init] tx=${t.id.slice(0, 12)}… quote failed (will retry next sweep): ${err instanceof Error ? err.message : String(err)}`);
|
|
229
|
+
}
|
|
230
|
+
finally {
|
|
231
|
+
inflight.delete(t.id);
|
|
191
232
|
}
|
|
192
233
|
}
|
|
193
234
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/cli/commands/agent.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,yCAAoC;AACpC,2BAA8C;AAC9C,mCAA8D;AAC9D,4CAAmD;AACnD,4CAA2C;AAC3C,oDAAmD;AACnD,uEAAoE;AACpE,2DAAwD;AACxD,qEAAkE;AAClE,iFAA8E;AAE9E,iEAA8D;
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/cli/commands/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,14 @@ export declare function createPayCommand(): Command;
|
|
|
12
12
|
interface PayOptions {
|
|
13
13
|
deadline: string;
|
|
14
14
|
disputeWindow: string;
|
|
15
|
+
service?: string;
|
|
15
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* Canonical directive emitted when a caller passes `--service` to `actp pay`.
|
|
19
|
+
* Exported so tests + future doc tooling can assert/inspect the exact wording.
|
|
20
|
+
* PRD §5.9.
|
|
21
|
+
*/
|
|
22
|
+
export declare const PAY_SERVICE_REJECTION_MESSAGE: string;
|
|
16
23
|
declare function runPay(to: string, amount: string, options: PayOptions, output: Output): Promise<void>;
|
|
17
24
|
export { runPay };
|
|
18
25
|
//# sourceMappingURL=pay.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pay.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/pay.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAY,MAAM,iBAAiB,CAAC;AAQnD,wBAAgB,gBAAgB,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"pay.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/pay.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAY,MAAM,iBAAiB,CAAC;AAQnD,wBAAgB,gBAAgB,IAAI,OAAO,CAiC1C;AAMD,UAAU,UAAU;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,QAIa,CAAC;AASxD,iBAAe,MAAM,CACnB,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAqFf;AAED,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
package/dist/cli/commands/pay.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* @module cli/commands/pay
|
|
9
9
|
*/
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
exports.runPay = exports.createPayCommand = void 0;
|
|
11
|
+
exports.runPay = exports.PAY_SERVICE_REJECTION_MESSAGE = exports.createPayCommand = void 0;
|
|
12
12
|
const commander_1 = require("commander");
|
|
13
13
|
const output_1 = require("../utils/output");
|
|
14
14
|
const client_1 = require("../utils/client");
|
|
@@ -23,6 +23,11 @@ function createPayCommand() {
|
|
|
23
23
|
.argument('<amount>', 'Amount to pay (e.g., "100", "100.50", "100 USDC")')
|
|
24
24
|
.option('-d, --deadline <deadline>', 'Deadline (+24h, +7d, or Unix timestamp)', '+24h')
|
|
25
25
|
.option('-w, --dispute-window <seconds>', 'Dispute window in seconds', '172800')
|
|
26
|
+
// PRD §5.9: --service is parsed *only* to reject it with a canonical
|
|
27
|
+
// directive. `actp pay` is a Level 0 primitive — no handler routing,
|
|
28
|
+
// no quote/accept negotiation. Callers who want hashed service routing
|
|
29
|
+
// belong on `actp request --service <name>`.
|
|
30
|
+
.option('--service <name>', '(rejected — see actp request for Level 1 flow)')
|
|
26
31
|
.option('--json', 'Output as JSON')
|
|
27
32
|
.option('-q, --quiet', 'Output only the transaction ID')
|
|
28
33
|
.action(async (to, amount, options) => {
|
|
@@ -43,7 +48,35 @@ function createPayCommand() {
|
|
|
43
48
|
return cmd;
|
|
44
49
|
}
|
|
45
50
|
exports.createPayCommand = createPayCommand;
|
|
51
|
+
/**
|
|
52
|
+
* Canonical directive emitted when a caller passes `--service` to `actp pay`.
|
|
53
|
+
* Exported so tests + future doc tooling can assert/inspect the exact wording.
|
|
54
|
+
* PRD §5.9.
|
|
55
|
+
*/
|
|
56
|
+
exports.PAY_SERVICE_REJECTION_MESSAGE = `Error: 'actp pay' is a Level 0 primitive and does not accept --service.\n` +
|
|
57
|
+
`For negotiated Level 1 job flow (where a provider's handler runs after quote/accept),\n` +
|
|
58
|
+
`use 'actp request <provider> <amount> --service <name>' instead.\n` +
|
|
59
|
+
`See https://agirails.io/docs/sdk/level-0-vs-level-1`;
|
|
60
|
+
/**
|
|
61
|
+
* Exit code for `actp pay --service` rejection. 64 = `EX_USAGE` from
|
|
62
|
+
* sysexits.h — the standard signal for "command-line usage error" so
|
|
63
|
+
* scripts can distinguish a misuse from a generic ACTP failure.
|
|
64
|
+
*/
|
|
65
|
+
const EX_USAGE = 64;
|
|
46
66
|
async function runPay(to, amount, options, output) {
|
|
67
|
+
// PRD §5.9: --service belongs on `actp request`, not `actp pay`. The
|
|
68
|
+
// flag is parsed only so we can intercept and route the user.
|
|
69
|
+
// `errorResult` is used (not `output.error`) so the directive is visible
|
|
70
|
+
// in --json and --quiet modes too; a silent exit-64 would leave scripts
|
|
71
|
+
// guessing at the cause.
|
|
72
|
+
if (options.service !== undefined) {
|
|
73
|
+
output.errorResult({
|
|
74
|
+
code: 'PAY_SERVICE_REJECTED',
|
|
75
|
+
message: exports.PAY_SERVICE_REJECTION_MESSAGE,
|
|
76
|
+
details: { use: 'actp request <provider> <amount> --service <name>' },
|
|
77
|
+
});
|
|
78
|
+
process.exit(EX_USAGE);
|
|
79
|
+
}
|
|
47
80
|
// Resolve slug URLs (e.g. agirails.app/a/arha) to wallet addresses
|
|
48
81
|
const slugMatch = to.match(/^(?:https?:\/\/)?(?:www\.)?agirails\.app\/a\/([a-z0-9_-]+)$/i);
|
|
49
82
|
if (slugMatch) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pay.js","sourceRoot":"","sources":["../../../src/cli/commands/pay.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,yCAAoC;AACpC,4CAAmD;AACnD,4CAAyD;AACzD,uDAAuD;AAEvD,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,SAAgB,gBAAgB;IAC9B,MAAM,GAAG,GAAG,IAAI,mBAAO,CAAC,KAAK,CAAC;SAC3B,WAAW,CAAC,6CAA6C,CAAC;SAC1D,QAAQ,CAAC,MAAM,EAAE,8BAA8B,CAAC;SAChD,QAAQ,CAAC,UAAU,EAAE,mDAAmD,CAAC;SACzE,MAAM,CAAC,2BAA2B,EAAE,yCAAyC,EAAE,MAAM,CAAC;SACtF,MAAM,CAAC,gCAAgC,EAAE,2BAA2B,EAAE,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"pay.js","sourceRoot":"","sources":["../../../src/cli/commands/pay.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Request Command — Level 1 negotiated job request (PRD §5.6).
|
|
3
|
+
*
|
|
4
|
+
* Creates an on-chain INITIATED transaction whose routing key is
|
|
5
|
+
* `keccak256(toUtf8Bytes(serviceName))`. A registered provider listening for
|
|
6
|
+
* that hash (via `Agent.provide(name, handler)`) will quote, accept, run the
|
|
7
|
+
* handler, and deliver. The CLI waits for delivery and prints each state
|
|
8
|
+
* transition.
|
|
9
|
+
*
|
|
10
|
+
* Distinct from `actp pay`: pay is a Level 0 primitive that commits funds
|
|
11
|
+
* directly without a handler; request is a Level 1 negotiated flow that
|
|
12
|
+
* routes to a provider's handler. See PRD §A.2 for the decision log.
|
|
13
|
+
*
|
|
14
|
+
* @module cli/commands/request
|
|
15
|
+
*/
|
|
16
|
+
import { Command } from 'commander';
|
|
17
|
+
export declare function createRequestCommand(): Command;
|
|
18
|
+
export declare function parsePositiveInt(raw: string | undefined, fallback: number, flag: string): number;
|
|
19
|
+
//# sourceMappingURL=request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/request.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,wBAAgB,oBAAoB,IAAI,OAAO,CAmD9C;AAqGD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAiBhG"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Request Command — Level 1 negotiated job request (PRD §5.6).
|
|
4
|
+
*
|
|
5
|
+
* Creates an on-chain INITIATED transaction whose routing key is
|
|
6
|
+
* `keccak256(toUtf8Bytes(serviceName))`. A registered provider listening for
|
|
7
|
+
* that hash (via `Agent.provide(name, handler)`) will quote, accept, run the
|
|
8
|
+
* handler, and deliver. The CLI waits for delivery and prints each state
|
|
9
|
+
* transition.
|
|
10
|
+
*
|
|
11
|
+
* Distinct from `actp pay`: pay is a Level 0 primitive that commits funds
|
|
12
|
+
* directly without a handler; request is a Level 1 negotiated flow that
|
|
13
|
+
* routes to a provider's handler. See PRD §A.2 for the decision log.
|
|
14
|
+
*
|
|
15
|
+
* @module cli/commands/request
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.parsePositiveInt = exports.createRequestCommand = void 0;
|
|
19
|
+
const commander_1 = require("commander");
|
|
20
|
+
const output_1 = require("../utils/output");
|
|
21
|
+
const client_1 = require("../utils/client");
|
|
22
|
+
const agirailsApp_1 = require("../../api/agirailsApp");
|
|
23
|
+
const runRequest_1 = require("../lib/runRequest");
|
|
24
|
+
// ============================================================================
|
|
25
|
+
// Command Definition
|
|
26
|
+
// ============================================================================
|
|
27
|
+
function createRequestCommand() {
|
|
28
|
+
return new commander_1.Command('request')
|
|
29
|
+
.description('Request a Level 1 negotiated service (quote → accept → deliver)')
|
|
30
|
+
.argument('<provider>', 'Provider address or agirails.app slug URL')
|
|
31
|
+
.argument('<amount>', 'Amount to escrow (e.g., "0.05" USDC)')
|
|
32
|
+
.requiredOption('--service <name>', 'Service name; on-chain key is keccak256(toUtf8Bytes(name))')
|
|
33
|
+
.option('--deadline <iso-or-unix>', 'Job deadline as ISO 8601 or unix seconds', '')
|
|
34
|
+
.option('--network <network>', 'Target network: mock | testnet | mainnet', 'testnet')
|
|
35
|
+
.option('--quote-timeout <ms>', 'Max wait for INITIATED → QUOTED (or beyond), in ms', '30000')
|
|
36
|
+
.option('--delivery-timeout <ms>', 'Max wait for DELIVERED, in ms', '300000')
|
|
37
|
+
// Commander idiom: declaring `--no-auto-accept` makes options.autoAccept
|
|
38
|
+
// default to true while still giving callers a working off-switch. The
|
|
39
|
+
// previous form `--auto-accept ... true` shipped no toggle at all.
|
|
40
|
+
.option('--no-auto-accept', 'Prompt before accepting the first quote (default: auto-accept)')
|
|
41
|
+
.option('--json', 'Output as JSON')
|
|
42
|
+
.option('-q, --quiet', 'Output only the transaction ID')
|
|
43
|
+
.action(async (provider, amount, options) => {
|
|
44
|
+
const output = new output_1.Output(options.json ? 'json' : options.quiet ? 'quiet' : 'human');
|
|
45
|
+
try {
|
|
46
|
+
await runRequestCommand(provider, amount, options, output);
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
if (error instanceof runRequest_1.QuoteTimeoutError) {
|
|
50
|
+
output.errorResult({
|
|
51
|
+
code: 'QUOTE_TIMEOUT',
|
|
52
|
+
message: error.message,
|
|
53
|
+
details: { txId: error.txId, timeoutMs: error.timeoutMs },
|
|
54
|
+
});
|
|
55
|
+
// PRD §5.6: exit code 2 is the canonical no-quote signal so scripts
|
|
56
|
+
// can distinguish "provider offline" from other failure modes.
|
|
57
|
+
process.exit(2);
|
|
58
|
+
}
|
|
59
|
+
if (error instanceof runRequest_1.DeliveryTimeoutError) {
|
|
60
|
+
output.errorResult({
|
|
61
|
+
code: 'DELIVERY_TIMEOUT',
|
|
62
|
+
message: error.message,
|
|
63
|
+
details: { txId: error.txId, timeoutMs: error.timeoutMs, lastState: error.lastState },
|
|
64
|
+
});
|
|
65
|
+
process.exit(output_1.ExitCode.ERROR);
|
|
66
|
+
}
|
|
67
|
+
const structured = (0, client_1.mapError)(error);
|
|
68
|
+
output.errorResult({
|
|
69
|
+
code: structured.code,
|
|
70
|
+
message: structured.message,
|
|
71
|
+
details: structured.details,
|
|
72
|
+
});
|
|
73
|
+
process.exit(output_1.ExitCode.ERROR);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
exports.createRequestCommand = createRequestCommand;
|
|
78
|
+
async function runRequestCommand(providerArg, amount, options, output) {
|
|
79
|
+
// Resolve agirails.app slug to an address, mirroring `actp pay` UX.
|
|
80
|
+
const provider = await resolveProvider(providerArg, output);
|
|
81
|
+
const network = parseNetwork(options.network);
|
|
82
|
+
const quoteTimeoutMs = parsePositiveInt(options.quoteTimeout, 30000, '--quote-timeout');
|
|
83
|
+
const deliveryTimeoutMs = parsePositiveInt(options.deliveryTimeout, 300000, '--delivery-timeout');
|
|
84
|
+
output.print(`→ Requesting ${options.service} from ${provider}`);
|
|
85
|
+
output.print(` amount: ${amount}, network: ${network}, quote-timeout: ${quoteTimeoutMs}ms`);
|
|
86
|
+
output.blank();
|
|
87
|
+
const result = await (0, runRequest_1.runRequest)({
|
|
88
|
+
provider,
|
|
89
|
+
amount,
|
|
90
|
+
service: options.service,
|
|
91
|
+
deadline: options.deadline || undefined,
|
|
92
|
+
network,
|
|
93
|
+
quoteTimeoutMs,
|
|
94
|
+
deliveryTimeoutMs,
|
|
95
|
+
autoAccept: options.autoAccept ?? true,
|
|
96
|
+
onTransition: (state, txId, ts) => {
|
|
97
|
+
// Human mode shows the live log line; quiet/json modes suppress it
|
|
98
|
+
// (they only emit the final structured result).
|
|
99
|
+
output.print(` [${ts.toISOString()}] ${state.padEnd(12)} ${txId}`);
|
|
100
|
+
},
|
|
101
|
+
});
|
|
102
|
+
output.blank();
|
|
103
|
+
output.result({
|
|
104
|
+
txId: result.txId,
|
|
105
|
+
finalState: result.finalState,
|
|
106
|
+
elapsedMs: result.elapsedMs,
|
|
107
|
+
settled: result.settled,
|
|
108
|
+
payload: result.payload,
|
|
109
|
+
}, { quietKey: 'txId' });
|
|
110
|
+
if (result.payload && typeof result.payload === 'object' && 'reflection' in result.payload) {
|
|
111
|
+
output.blank();
|
|
112
|
+
output.success(`Reflection: ${result.payload.reflection}`);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
output.blank();
|
|
116
|
+
output.success(`Settled in ${result.elapsedMs} ms`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
async function resolveProvider(input, output) {
|
|
120
|
+
const slugMatch = input.match(/^(?:https?:\/\/)?(?:www\.)?agirails\.app\/a\/([a-z0-9_-]+)$/i);
|
|
121
|
+
if (!slugMatch)
|
|
122
|
+
return input;
|
|
123
|
+
const slug = slugMatch[1].toLowerCase();
|
|
124
|
+
const spinner = output.spinner(`Resolving ${slug}...`);
|
|
125
|
+
try {
|
|
126
|
+
const result = await (0, agirailsApp_1.discoverAgents)({ search: slug, limit: 10 });
|
|
127
|
+
const agent = result.agents.find((a) => a.slug.toLowerCase() === slug);
|
|
128
|
+
if (!agent?.wallet_address) {
|
|
129
|
+
spinner.stop(false);
|
|
130
|
+
throw new Error(`Agent "${slug}" not found or has no wallet address.`);
|
|
131
|
+
}
|
|
132
|
+
spinner.stop(true);
|
|
133
|
+
output.print(`Resolved ${slug} → ${agent.wallet_address}`);
|
|
134
|
+
return agent.wallet_address;
|
|
135
|
+
}
|
|
136
|
+
catch (err) {
|
|
137
|
+
spinner.stop(false);
|
|
138
|
+
throw err;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
function parseNetwork(raw) {
|
|
142
|
+
const value = (raw ?? 'testnet').toLowerCase();
|
|
143
|
+
if (value === 'mock' || value === 'testnet' || value === 'mainnet')
|
|
144
|
+
return value;
|
|
145
|
+
throw new Error(`Invalid --network: "${raw}". Expected mock, testnet, or mainnet.`);
|
|
146
|
+
}
|
|
147
|
+
// Exported for unit testing — the CLI surface is a thin commander wrapper,
|
|
148
|
+
// so we cover the parser behavior directly rather than via process spawning.
|
|
149
|
+
function parsePositiveInt(raw, fallback, flag) {
|
|
150
|
+
if (raw === undefined || raw === '')
|
|
151
|
+
return fallback;
|
|
152
|
+
// Strict integer parse: parseInt silently truncates "30.5" to 30 and
|
|
153
|
+
// accepts numeric separators ("30_000", "30,000") in surprising ways.
|
|
154
|
+
// Demand a clean digits-only string so callers get an error instead of
|
|
155
|
+
// an off-by-orders-of-magnitude timeout.
|
|
156
|
+
if (!/^\d+$/.test(raw)) {
|
|
157
|
+
throw new Error(`Invalid ${flag}: "${raw}". Expected a positive integer in milliseconds — ` +
|
|
158
|
+
`decimals, separators, and scientific notation are not accepted.`);
|
|
159
|
+
}
|
|
160
|
+
const n = Number.parseInt(raw, 10);
|
|
161
|
+
if (!Number.isFinite(n) || n <= 0) {
|
|
162
|
+
throw new Error(`Invalid ${flag}: "${raw}". Expected a positive integer (milliseconds).`);
|
|
163
|
+
}
|
|
164
|
+
return n;
|
|
165
|
+
}
|
|
166
|
+
exports.parsePositiveInt = parsePositiveInt;
|
|
167
|
+
//# sourceMappingURL=request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/cli/commands/request.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `actp serve` — long-running provider daemon.
|
|
2
|
+
* `actp serve` — long-running provider daemon focused on the AIP-2.1 quote channel.
|
|
3
3
|
*
|
|
4
4
|
* Loads a ProviderPolicy JSON, constructs a ProviderOrchestrator, opens
|
|
5
5
|
* an HTTP server on the configured port that exposes the AIP-2.1 quote
|
|
@@ -7,16 +7,21 @@
|
|
|
7
7
|
* and routes incoming buyer counter-offers through
|
|
8
8
|
* orchestrator.evaluateCounter().
|
|
9
9
|
*
|
|
10
|
-
* Scope
|
|
10
|
+
* Scope:
|
|
11
11
|
* - accept + verify incoming counter-offers via QuoteChannelHandler
|
|
12
12
|
* - log the policy verdict (accept / reject) per round
|
|
13
13
|
* - emit a one-line health response on `GET /`
|
|
14
14
|
*
|
|
15
|
-
*
|
|
16
|
-
* -
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
15
|
+
* Not in scope here:
|
|
16
|
+
* - On-chain INITIATED-tx detection is handled by `actp agent` or
|
|
17
|
+
* `new Agent()`. Both use the hybrid subscription + bounded catch-up
|
|
18
|
+
* sweep on `BlockchainRuntime` since 4.0.0
|
|
19
|
+
* (PRD-event-driven-provider-listening §5.2, §5.3, §5.8). `actp serve`
|
|
20
|
+
* intentionally has no on-chain watcher — running it alongside
|
|
21
|
+
* `actp agent` is the canonical split: `serve` handles the AIP-2.1
|
|
22
|
+
* quote channel, `agent` handles on-chain INITIATED pickups.
|
|
23
|
+
* - Sending CounterAcceptMessage back to buyer (no reverse-endpoint
|
|
24
|
+
* discovery yet — print the verdict, operator handles delivery).
|
|
20
25
|
*
|
|
21
26
|
* @module cli/commands/serve
|
|
22
27
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/serve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAgB,eAAe,EAAkB,MAAM,MAAM,CAAC;AAoBrE,wBAAgB,kBAAkB,IAAI,OAAO,CAuB5C;AA6ND;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAmC9D"}
|