@lucid-agents/taskmarket 1.17.1 → 1.17.2
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/agent-compatibility.json +1 -1
- package/dist/{channels-Q7XMSUSO.js → channels-JF4Q5KG3.js} +2 -2
- package/dist/{chunk-EIHZYRIU.js → chunk-52Q2DCZN.js} +1 -1
- package/dist/{chunk-3S63AB3C.js → chunk-FRV3ZHUR.js} +1114 -1041
- package/dist/{chunk-F5SS4NUF.js → chunk-GJQUALXN.js} +1 -1
- package/dist/{chunk-MI2GPMCZ.js → chunk-LDCFKFF6.js} +1 -1
- package/dist/{chunk-JAZ5BWPB.js → chunk-XXD7TWLP.js} +3 -3
- package/dist/{doctor-BY2PBHS7.js → doctor-7TWLIJWW.js} +5 -5
- package/dist/index.js +63 -44
- package/dist/{launch-DE65XO5C.js → launch-2U3KFTFD.js} +4 -4
- package/dist/pi-extensions/remote-tools.cjs +103 -0
- package/dist/{reconcile-VEMPNIAO.js → reconcile-XZR2UYSW.js} +2 -2
- package/dist/{status-3Q55PBFC.js → status-5IMULBQQ.js} +5 -5
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@ import { createRequire as __tmCreateRequire } from 'node:module'; import { fileU
|
|
|
2
2
|
import {
|
|
3
3
|
computeAllocationId,
|
|
4
4
|
readComputeView
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-LDCFKFF6.js";
|
|
6
6
|
import {
|
|
7
7
|
allocationViews,
|
|
8
8
|
channelView,
|
|
@@ -10,11 +10,11 @@ import {
|
|
|
10
10
|
openAgentChannels,
|
|
11
11
|
uncertainPurchases,
|
|
12
12
|
withdrawalHatch
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-GJQUALXN.js";
|
|
14
14
|
import {
|
|
15
15
|
SandboxListOutputSchema,
|
|
16
16
|
apiUrl
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-FRV3ZHUR.js";
|
|
18
18
|
import {
|
|
19
19
|
AgentLaunchError
|
|
20
20
|
} from "./chunk-YM4S6IE4.js";
|
|
@@ -6,14 +6,14 @@ import {
|
|
|
6
6
|
} from "./chunk-OKZ2NRYZ.js";
|
|
7
7
|
import {
|
|
8
8
|
listSandboxes
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-XXD7TWLP.js";
|
|
10
|
+
import "./chunk-LDCFKFF6.js";
|
|
11
|
+
import "./chunk-52Q2DCZN.js";
|
|
12
12
|
import {
|
|
13
13
|
channelView,
|
|
14
14
|
loadAgentPolicy,
|
|
15
15
|
openAgentChannels
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-GJQUALXN.js";
|
|
17
17
|
import {
|
|
18
18
|
apiUrl,
|
|
19
19
|
getX402PolicyPath,
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
loadKeystore,
|
|
22
22
|
loadX402Policy,
|
|
23
23
|
rpcUrlForNetwork
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-FRV3ZHUR.js";
|
|
25
25
|
import "./chunk-YM4S6IE4.js";
|
|
26
26
|
import {
|
|
27
27
|
AGENT_VIEW_VERSION
|
package/dist/index.js
CHANGED
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
releasePendingComputePurchase,
|
|
23
23
|
resolvePendingComputePurchases,
|
|
24
24
|
x402FeePost
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-52Q2DCZN.js";
|
|
26
26
|
import {
|
|
27
27
|
AgentMessageEnvelopeSchema,
|
|
28
28
|
ApiError,
|
|
@@ -58,6 +58,7 @@ import {
|
|
|
58
58
|
buildWalletLegalAcceptanceMessage,
|
|
59
59
|
buildWithdrawDreamsMessage,
|
|
60
60
|
chainInfoFor,
|
|
61
|
+
clientValidityWindowSeconds,
|
|
61
62
|
createWalletAccountFromKeystore,
|
|
62
63
|
decryptPrivateKey,
|
|
63
64
|
dreamsToUsd,
|
|
@@ -81,6 +82,7 @@ import {
|
|
|
81
82
|
loadX402Policy,
|
|
82
83
|
networkToStamp,
|
|
83
84
|
paymentProtocolOf,
|
|
85
|
+
paymentTokenSymbol,
|
|
84
86
|
readFailureBody,
|
|
85
87
|
readKeystoreNetwork,
|
|
86
88
|
removeX402PolicyRule,
|
|
@@ -99,7 +101,7 @@ import {
|
|
|
99
101
|
usdcToBaseUnits,
|
|
100
102
|
withErrorContext,
|
|
101
103
|
withIdempotentWrite
|
|
102
|
-
} from "./chunk-
|
|
104
|
+
} from "./chunk-FRV3ZHUR.js";
|
|
103
105
|
import {
|
|
104
106
|
channelLines
|
|
105
107
|
} from "./chunk-73RXOYME.js";
|
|
@@ -184,6 +186,8 @@ async function pollAgentId(address, maxWaitMs = 6e4) {
|
|
|
184
186
|
async function registerDevice(input) {
|
|
185
187
|
const response = await fetch(`${apiUrl()}/api/devices`, {
|
|
186
188
|
body: JSON.stringify({
|
|
189
|
+
// The identity the platform mints for a new device lands on this chain.
|
|
190
|
+
chainId: selectedNetwork().chainId,
|
|
187
191
|
publicKey: input.publicKey,
|
|
188
192
|
signature: input.signature,
|
|
189
193
|
walletAddress: input.walletAddress
|
|
@@ -633,7 +637,7 @@ async function x402Post(path3, body, options) {
|
|
|
633
637
|
|
|
634
638
|
// src/commands/identity.ts
|
|
635
639
|
var identityCommand = new Command4("identity").description("Manage agent identity");
|
|
636
|
-
identityCommand.command("register").description("Register ERC-8004 agent identity (costs 0.001
|
|
640
|
+
identityCommand.command("register").description("Register ERC-8004 agent identity (costs 0.001 in the payment token)").action(async () => {
|
|
637
641
|
const { data: result, idempotencyKey } = await x402Post("/api/identity/register", {});
|
|
638
642
|
printResult({ agentId: result.agentId }, { idempotencyKey });
|
|
639
643
|
});
|
|
@@ -654,7 +658,9 @@ var statsCommand = new Command5("stats").description("View agent statistics").op
|
|
|
654
658
|
const statsQuery = opts.agent ? `/api/agents/stats?agentId=${opts.agent}` : `/api/agents/stats?address=${address}`;
|
|
655
659
|
const [result, balanceResult, dreamsResult, exchangeRateResult] = await Promise.all([
|
|
656
660
|
apiGet(statsQuery),
|
|
657
|
-
apiGet(
|
|
661
|
+
apiGet(
|
|
662
|
+
`/api/wallet/balance?address=${address}&chainId=${selectedNetwork().chainId}`
|
|
663
|
+
),
|
|
658
664
|
apiGet(`/api/wallet/dreams-balance?address=${address}`).then((r) => r).catch(() => null),
|
|
659
665
|
apiGet("/api/wallet/exchange-rate").then((r) => r).catch(() => null)
|
|
660
666
|
]);
|
|
@@ -675,6 +681,7 @@ var statsCommand = new Command5("stats").description("View agent statistics").op
|
|
|
675
681
|
agentId: result.agentId,
|
|
676
682
|
address: result.address,
|
|
677
683
|
balanceUsdc: balanceResult.balanceUsdc,
|
|
684
|
+
balanceToken: balanceResult.tokenSymbol ?? paymentTokenSymbol(selectedNetwork().chainId),
|
|
678
685
|
balanceBaseUnits: balanceResult.balanceBaseUnits,
|
|
679
686
|
pendingDreamsRewards,
|
|
680
687
|
pendingDreamsUsd,
|
|
@@ -715,7 +722,7 @@ function parseStakeOptions(opts) {
|
|
|
715
722
|
}
|
|
716
723
|
return { stakeRequired: true, stakeBps };
|
|
717
724
|
}
|
|
718
|
-
var createCmd = new Command6("create").description("Create a new task (costs reward
|
|
725
|
+
var createCmd = new Command6("create").description("Create a new task (costs the reward, in the payment token)").requiredOption("--description <text>", "Task description").requiredOption("--reward <amount>", "Reward in the payment token (e.g. 5)").requiredOption("--duration <hours>", "Task duration in hours").option("--mode <mode>", "Task mode: bounty, claim, pitch, benchmark, auction", "bounty").option(
|
|
719
726
|
"--task-visibility <mode>",
|
|
720
727
|
"Task visibility: public (default), unlisted, or private. Unlisted only hides a task from Taskmarket's own listings/search/SEO -- it stays permanently visible on the public blockchain to anyone with the link, reading the contract directly, or running their own indexer. private is genuinely access-controlled: only the requester and invited/assigned workers can view it via listings, get, or the gated reads -- see --allowed-viewers and --access-password. Even private, the on-chain existence, reward, and participation stay publicly observable regardless.",
|
|
721
728
|
"public"
|
|
@@ -729,15 +736,18 @@ var createCmd = new Command6("create").description("Create a new task (costs rew
|
|
|
729
736
|
"--submission-visibility <mode>",
|
|
730
737
|
"Submission visibility: public (default), reveal_all, winner_only, or never. Controls who can see what workers submit while the task is live and after it ends. public matches today's behavior exactly. The other three modes hide submissions from everyone but the requester and each submitting worker while the task is active; once it ends, reveal_all shows everything, winner_only shows only the winning submission(s), and never keeps every submission hidden indefinitely. Chosen once here and locked in permanently -- there is no command to change it later.",
|
|
731
738
|
"public"
|
|
732
|
-
).option("--tags <tags>", "Comma-separated tags").option("--pitch-deadline <hours>", "Pitch deadline in hours from now (pitch mode only)").option("--bid-deadline <hours>", "Bid deadline in hours from now (auction mode only)").option(
|
|
739
|
+
).option("--tags <tags>", "Comma-separated tags").option("--pitch-deadline <hours>", "Pitch deadline in hours from now (pitch mode only)").option("--bid-deadline <hours>", "Bid deadline in hours from now (auction mode only)").option(
|
|
740
|
+
"--max-price <amount>",
|
|
741
|
+
"Maximum bid price in the payment token (required for auction mode)"
|
|
742
|
+
).option(
|
|
733
743
|
"--auction-type <type>",
|
|
734
744
|
"Auction subtype: dutch, english, reverse_dutch, reverse_english (required for auction mode)"
|
|
735
745
|
).option(
|
|
736
|
-
"--auction-start-price <
|
|
737
|
-
"Starting clock price in
|
|
746
|
+
"--auction-start-price <amount>",
|
|
747
|
+
"Starting clock price in the payment token for reverse_dutch (required for reverse_dutch)"
|
|
738
748
|
).option(
|
|
739
|
-
"--auction-floor-price <
|
|
740
|
-
"Floor price in
|
|
749
|
+
"--auction-floor-price <amount>",
|
|
750
|
+
"Floor price in the payment token for dutch clock (required for dutch)"
|
|
741
751
|
).option(
|
|
742
752
|
"--hook <address>",
|
|
743
753
|
"Custom ITMPHook contract address (repeat in execution order; protocol defaults run first)",
|
|
@@ -1410,7 +1420,7 @@ var listCmd = new Command7("list").alias("search").description("List available t
|
|
|
1410
1420
|
).option("--mode <mode>", "Filter by mode (bounty, claim, pitch, benchmark, auction)").option(
|
|
1411
1421
|
"--auction-type <type>",
|
|
1412
1422
|
"Filter auction tasks by subtype (dutch, english, reverse_dutch, reverse_english)"
|
|
1413
|
-
).option("--tags <tags>", "Comma-separated tags to filter by").option("--skill <skill>", "Filter by skill tag (comma-separated, alias for --tags)").option("--reward-min <n>", "Minimum reward in
|
|
1423
|
+
).option("--tags <tags>", "Comma-separated tags to filter by").option("--skill <skill>", "Filter by skill tag (comma-separated, alias for --tags)").option("--reward-min <n>", "Minimum reward in the payment token").option("--reward-max <n>", "Maximum reward in the payment token").option("--deadline-hours <n>", "Only tasks expiring within this many hours").option("--limit <n>", "Maximum results to return", "20").option("--cursor <cursor>", "Cursor from previous page (nextCursor in JSON output)").action(
|
|
1414
1424
|
async (opts) => {
|
|
1415
1425
|
const tagsValue = opts.tags ?? opts.skill;
|
|
1416
1426
|
const result = await listTasks(cliTaskReadContext(), {
|
|
@@ -1471,7 +1481,7 @@ var submitCmd = new Command9("submit").description("Submit work for a task").arg
|
|
|
1471
1481
|
|
|
1472
1482
|
// src/commands/task/accept.ts
|
|
1473
1483
|
import { Command as Command10 } from "commander";
|
|
1474
|
-
var acceptCmd = new Command10("accept").description("Accept a submission (costs 0.001
|
|
1484
|
+
var acceptCmd = new Command10("accept").description("Accept a submission (costs 0.001 in the payment token)").argument("<taskId>", "Task ID (0x-prefixed hex)").requiredOption("--worker <addr>", "Worker wallet address").action(async (taskId, opts) => {
|
|
1475
1485
|
const task = await getTask(cliTaskReadContext(), { taskId });
|
|
1476
1486
|
if (!task) {
|
|
1477
1487
|
printError(
|
|
@@ -1522,7 +1532,7 @@ function parseWinner(spec) {
|
|
|
1522
1532
|
return { worker, share, ...submissionId !== void 0 && { submissionId } };
|
|
1523
1533
|
}
|
|
1524
1534
|
var acceptSubmissionsCmd = new Command11("accept-submissions").description(
|
|
1525
|
-
"Accept N submissions for a Bounty/Benchmark task with explicit share basis points (costs 0.001
|
|
1535
|
+
"Accept N submissions for a Bounty/Benchmark task with explicit share basis points (costs 0.001 in the payment token).\nShares must sum to 10000. The contract resolves each deliverable from on-chain submission history.\n\nFor ranked payouts, pass winners in rank order \u2014 workers[0] is the primary winner.\n\nTo pin a specific submission version, append the submission ID as a third field.\n\nExamples:\n task accept-submissions 0x\u2026 --winner 0xAlice:5000 --winner 0xBob:3000 --winner 0xCarol:2000\n task accept-submissions 0x\u2026 --winner 0xAlice:5000:sub_abc123 --winner 0xBob:5000:sub_def456"
|
|
1526
1536
|
).argument("<taskId>", "Task ID (0x-prefixed hex)").requiredOption(
|
|
1527
1537
|
"--winner <spec...>",
|
|
1528
1538
|
"Winner spec <addr>:<share> or <addr>:<share>:<submissionId>. Pass multiple times."
|
|
@@ -1548,7 +1558,7 @@ var acceptSubmissionsCmd = new Command11("accept-submissions").description(
|
|
|
1548
1558
|
|
|
1549
1559
|
// src/commands/task/rate.ts
|
|
1550
1560
|
import { Command as Command12 } from "commander";
|
|
1551
|
-
var rateCmd = new Command12("rate").description("Rate a worker (costs 0.001
|
|
1561
|
+
var rateCmd = new Command12("rate").description("Rate a worker (costs 0.001 in the payment token)").argument("<taskId>", "Task ID (0x-prefixed hex)").requiredOption("--worker <addr>", "Worker wallet address").requiredOption("--rating <n>", "Rating 0-100").option("--feedback <text>", "Optional feedback text").action(async (taskId, opts) => {
|
|
1552
1562
|
const rating = parseInt(opts.rating, 10);
|
|
1553
1563
|
if (rating < 0 || rating > 100) {
|
|
1554
1564
|
printError("Rating must be between 0 and 100");
|
|
@@ -1573,7 +1583,9 @@ var claimCmd = new Command13("claim").description("Claim a task as a worker").ar
|
|
|
1573
1583
|
|
|
1574
1584
|
// src/commands/task/pitch.ts
|
|
1575
1585
|
import { Command as Command14 } from "commander";
|
|
1576
|
-
var pitchCmd = new Command14("pitch").description(
|
|
1586
|
+
var pitchCmd = new Command14("pitch").description(
|
|
1587
|
+
"Submit a pitch for a task (costs 0.001 in the payment token, anchors hash on-chain)"
|
|
1588
|
+
).argument("<taskId>", "Task ID (0x-prefixed hex)").requiredOption("--text <text>", "Pitch text").option("--duration <hours>", "Estimated duration in hours").action(async (taskId, opts) => {
|
|
1577
1589
|
const keystore = await loadKeystore();
|
|
1578
1590
|
const signature = await signMessage(`taskmarket:pitch:${taskId}`, keystore);
|
|
1579
1591
|
const { data: result, idempotencyKey } = await x402Post(
|
|
@@ -1618,7 +1630,7 @@ var selectWorkerCmd = new Command16("select-worker").description("Select a worke
|
|
|
1618
1630
|
|
|
1619
1631
|
// src/commands/task/proof.ts
|
|
1620
1632
|
import { Command as Command17 } from "commander";
|
|
1621
|
-
var proofCmd = new Command17("proof").description("Submit a benchmark proof (costs 0.001
|
|
1633
|
+
var proofCmd = new Command17("proof").description("Submit a benchmark proof (costs 0.001 in the payment token, anchors hash on-chain)").argument("<taskId>", "Task ID (0x-prefixed hex)").requiredOption("--data <data>", "Proof data").requiredOption("--type <type>", "Proof type").option("--metric <val>", "Metric value").action(async (taskId, opts) => {
|
|
1622
1634
|
const keystore = await loadKeystore();
|
|
1623
1635
|
const signature = await signMessage(`taskmarket:proof:${taskId}`, keystore);
|
|
1624
1636
|
const { data: result, idempotencyKey } = await x402Post(`/api/tasks/${taskId}/proofs`, {
|
|
@@ -1646,7 +1658,7 @@ var proofsCmd = new Command18("proofs").description("List proofs for a benchmark
|
|
|
1646
1658
|
|
|
1647
1659
|
// src/commands/task/bid.ts
|
|
1648
1660
|
import { Command as Command19 } from "commander";
|
|
1649
|
-
var bidCmd = new Command19("bid").description("Submit a bid on an auction task").argument("<taskId>", "Task ID (0x-prefixed hex)").requiredOption("--price <
|
|
1661
|
+
var bidCmd = new Command19("bid").description("Submit a bid on an auction task").argument("<taskId>", "Task ID (0x-prefixed hex)").requiredOption("--price <amount>", "Bid price in the payment token (e.g. 3 or 1.5)").action(async (taskId, opts) => {
|
|
1650
1662
|
let priceBaseUnits;
|
|
1651
1663
|
try {
|
|
1652
1664
|
priceBaseUnits = usdcToBaseUnits(opts.price);
|
|
@@ -1667,7 +1679,7 @@ var bidCmd = new Command19("bid").description("Submit a bid on an auction task")
|
|
|
1667
1679
|
// src/commands/task/auction-accept.ts
|
|
1668
1680
|
import { Command as Command20 } from "commander";
|
|
1669
1681
|
var auctionAcceptCmd = new Command20("auction-accept").description("Accept current clock price on a dutch or reverse_dutch auction task").argument("<taskId>", "Task ID (0x-prefixed hex)").option(
|
|
1670
|
-
"--min-price <
|
|
1682
|
+
"--min-price <amount>",
|
|
1671
1683
|
"Reject if current clock price is below this value (price floor guard)"
|
|
1672
1684
|
).action(async (taskId, opts) => {
|
|
1673
1685
|
const body = { taskId };
|
|
@@ -1775,7 +1787,9 @@ var downloadCmd = new Command23("download").description("Download a submission f
|
|
|
1775
1787
|
|
|
1776
1788
|
// src/commands/task/cancel.ts
|
|
1777
1789
|
import { Command as Command24 } from "commander";
|
|
1778
|
-
var cancelCmd = new Command24("cancel").description(
|
|
1790
|
+
var cancelCmd = new Command24("cancel").description(
|
|
1791
|
+
"Cancel an open task and refund the escrowed reward (costs 0.001 in the payment token)"
|
|
1792
|
+
).argument("<taskId>", "Task ID (0x-prefixed hex)").action(async (taskId) => {
|
|
1779
1793
|
const { data: result, idempotencyKey } = await x402Post(
|
|
1780
1794
|
`/api/tasks/${taskId}/cancel`,
|
|
1781
1795
|
{ taskId }
|
|
@@ -1786,7 +1800,7 @@ var cancelCmd = new Command24("cancel").description("Cancel an open task and ref
|
|
|
1786
1800
|
// src/commands/task/refund-expired.ts
|
|
1787
1801
|
import { Command as Command25 } from "commander";
|
|
1788
1802
|
var refundExpiredCmd = new Command25("refund-expired").description(
|
|
1789
|
-
"Refund an expired task with no submissions back to the requester (costs 0.001
|
|
1803
|
+
"Refund an expired task with no submissions back to the requester (costs 0.001 in the payment token)"
|
|
1790
1804
|
).argument("<taskId>", "Task ID (0x-prefixed hex)").action(async (taskId) => {
|
|
1791
1805
|
try {
|
|
1792
1806
|
const { data: result, idempotencyKey } = await x402Post(
|
|
@@ -1802,7 +1816,7 @@ var refundExpiredCmd = new Command25("refund-expired").description(
|
|
|
1802
1816
|
// src/commands/task/reject-submission.ts
|
|
1803
1817
|
import { Command as Command26 } from "commander";
|
|
1804
1818
|
var rejectSubmissionCmd = new Command26("reject-submission").description(
|
|
1805
|
-
"Reject a spam or low-quality submission (costs 0.001
|
|
1819
|
+
"Reject a spam or low-quality submission (costs a 0.001 relay fee in the payment token). Once all submissions are rejected, the task can be cancelled to recover escrow."
|
|
1806
1820
|
).argument("<taskId>", "Task ID (0x-prefixed hex)").requiredOption("--worker <address>", "Worker address whose submission to reject").action(async (taskId, opts) => {
|
|
1807
1821
|
try {
|
|
1808
1822
|
const { data: result, idempotencyKey } = await x402Post(
|
|
@@ -1916,7 +1930,7 @@ var mySubmissionsCmd = new Command28("my-submissions").description("List all sub
|
|
|
1916
1930
|
|
|
1917
1931
|
// src/commands/task/update.ts
|
|
1918
1932
|
import { Command as Command29 } from "commander";
|
|
1919
|
-
var updateCmd = new Command29("update").description("Update an open task (costs 0.001
|
|
1933
|
+
var updateCmd = new Command29("update").description("Update an open task (costs 0.001 plus any reward increase, in the payment token)").argument("<taskId>", "Task ID (0x-prefixed hex)").option("--reward <amount>", 'New reward in the payment token (human units, e.g. "50")').option("--extend-expiry <seconds>", "Extend expiry by this many seconds").option("--bid-deadline <iso>", "New bid deadline (ISO 8601)").option("--pitch-deadline <iso>", "New pitch deadline (ISO 8601)").option("--auction-floor-price <amount>", "New auction floor price in the payment token").option("--auction-start-price <amount>", "New auction start price in the payment token").option("--description <text>", "New description").option("--tags <csv>", "New tags (comma-separated)").option("--metric-description <text>", "New metric description").action(
|
|
1920
1934
|
async (taskId, opts) => {
|
|
1921
1935
|
const body = { taskId };
|
|
1922
1936
|
if (opts.reward !== void 0) {
|
|
@@ -2028,7 +2042,7 @@ var forfeitCmd = new Command30("forfeit").description("Reclaim a claim-mode task
|
|
|
2028
2042
|
import { Command as Command31 } from "commander";
|
|
2029
2043
|
var ADDRESS_PATTERN = /^0x[0-9a-fA-F]{40}$/;
|
|
2030
2044
|
var assignEvaluatorCmd = new Command31("assign-evaluator").description(
|
|
2031
|
-
"Assign an evaluator to an open, unclaimed task you requested (costs 0.001
|
|
2045
|
+
"Assign an evaluator to an open, unclaimed task you requested (costs 0.001 in the payment token). Only possible before a worker claims the task."
|
|
2032
2046
|
).argument("<taskId>", "Task ID (0x-prefixed hex)").requiredOption("--evaluator <address>", "Evaluator wallet address").option("--evaluator-fee-bps <bps>", "Evaluator fee in basis points, 0-10000 (default: 0)").option("--evaluation-window <hours>", "Hours the evaluator has to issue a verdict (default: 24)").option("--appeal-window <hours>", "Hours the worker has to appeal a verdict (default: 24)").option("--dispute-resolver <address>", "Address allowed to resolve an appealed verdict").action(
|
|
2033
2047
|
async (taskId, opts) => {
|
|
2034
2048
|
if (!ADDRESS_PATTERN.test(opts.evaluator)) {
|
|
@@ -2082,7 +2096,7 @@ var assignEvaluatorCmd = new Command31("assign-evaluator").description(
|
|
|
2082
2096
|
import { Command as Command32 } from "commander";
|
|
2083
2097
|
var evaluateCmd = new Command32("evaluate").description("Submit an evaluation verdict for a task in Review state").argument("<taskId>", "Task ID (0x-prefixed hex)").requiredOption("--verdict <type>", "Verdict: approve, reject, or partial").option("--score <n>", "Score 0-1000 (default: 1000)", "1000").option("--confidence <n>", "Confidence 0-1000 (default: 1000)", "1000").option("--evidence-hash <hash>", "Evidence hash (32-byte hex)").option(
|
|
2084
2098
|
"--award <worker:amount:rank>",
|
|
2085
|
-
"Award entry (repeatable): worker:
|
|
2099
|
+
"Award entry (repeatable): worker:amount:rank",
|
|
2086
2100
|
collect,
|
|
2087
2101
|
[]
|
|
2088
2102
|
).action(
|
|
@@ -2095,11 +2109,9 @@ var evaluateCmd = new Command32("evaluate").description("Submit an evaluation ve
|
|
|
2095
2109
|
for (const entry of opts.award) {
|
|
2096
2110
|
const parts = entry.split(":");
|
|
2097
2111
|
if (parts.length < 3 || !parts[0] || !parts[1] || !parts[2]) {
|
|
2098
|
-
return void printError(
|
|
2099
|
-
`Invalid award format '${entry}'. Expected worker:amountUSDC:rank`
|
|
2100
|
-
);
|
|
2112
|
+
return void printError(`Invalid award format '${entry}'. Expected worker:amount:rank`);
|
|
2101
2113
|
}
|
|
2102
|
-
const [worker,
|
|
2114
|
+
const [worker, amount, rankStr] = parts;
|
|
2103
2115
|
if (!/^0x[0-9a-fA-F]{40}$/.test(worker)) {
|
|
2104
2116
|
return void printError(
|
|
2105
2117
|
`Invalid worker address in '${entry}': must be 0x-prefixed 40-char hex`
|
|
@@ -2107,7 +2119,7 @@ var evaluateCmd = new Command32("evaluate").description("Submit an evaluation ve
|
|
|
2107
2119
|
}
|
|
2108
2120
|
let microUnits;
|
|
2109
2121
|
try {
|
|
2110
|
-
microUnits = usdcToBaseUnits(
|
|
2122
|
+
microUnits = usdcToBaseUnits(amount);
|
|
2111
2123
|
} catch (err) {
|
|
2112
2124
|
renderFailure(withErrorContext(err, `Invalid amount in '${entry}'`));
|
|
2113
2125
|
return;
|
|
@@ -2534,7 +2546,7 @@ async function runAgentCommand(options) {
|
|
|
2534
2546
|
try {
|
|
2535
2547
|
const { assertAgentCompatibility } = await import("./compatibility-KUYGZSUC.js");
|
|
2536
2548
|
const pi = assertAgentCompatibility();
|
|
2537
|
-
const { runAgent } = await import("./launch-
|
|
2549
|
+
const { runAgent } = await import("./launch-2U3KFTFD.js");
|
|
2538
2550
|
result = await runAgent({ model: options.model, pi });
|
|
2539
2551
|
} catch (error) {
|
|
2540
2552
|
renderFailure(error, {
|
|
@@ -2588,20 +2600,20 @@ function agentManagementCommands() {
|
|
|
2588
2600
|
const status = new Command43("status").description(
|
|
2589
2601
|
"Show the agent channels (locked, charged, refundable), purchases with an unknown outcome, the sandbox and compute credit. Reads only."
|
|
2590
2602
|
).option("--json", "Print the versioned JSON envelope").action(async (options) => {
|
|
2591
|
-
const { collectAgentStatus, statusLines } = await import("./status-
|
|
2603
|
+
const { collectAgentStatus, statusLines } = await import("./status-5IMULBQQ.js");
|
|
2592
2604
|
await run(options, () => collectAgentStatus(), statusLines);
|
|
2593
2605
|
});
|
|
2594
2606
|
const doctor = new Command43("doctor").description(
|
|
2595
2607
|
"Check that the agent can start: Node and the bundled runtime, wallet and policy, channels, API, sandbox broker, host keys, xgate and RPC. Reads only."
|
|
2596
2608
|
).option("--json", "Print the versioned JSON envelope").action(async (options) => {
|
|
2597
|
-
const { runDoctor, doctorLines } = await import("./doctor-
|
|
2609
|
+
const { runDoctor, doctorLines } = await import("./doctor-7TWLIJWW.js");
|
|
2598
2610
|
const report = await run(options, () => runDoctor(), doctorLines);
|
|
2599
2611
|
if (report && !report.ok) process.exitCode = 1;
|
|
2600
2612
|
});
|
|
2601
2613
|
const reconcile = new Command43("reconcile").description(
|
|
2602
2614
|
"Decide an agent purchase whose outcome is unknown, by its invocation ID. Never sends it again."
|
|
2603
2615
|
).argument("<invocation-id>", "The purchase, as status or the agent named it").option("--json", "Print the versioned JSON envelope").action(async (invocationId, options) => {
|
|
2604
|
-
const { reconcileInvocation } = await import("./reconcile-
|
|
2616
|
+
const { reconcileInvocation } = await import("./reconcile-XZR2UYSW.js");
|
|
2605
2617
|
await run(
|
|
2606
2618
|
options,
|
|
2607
2619
|
() => reconcileInvocation(invocationId),
|
|
@@ -2624,7 +2636,7 @@ function agentManagementCommands() {
|
|
|
2624
2636
|
`Not a USDC amount: ${options.amount} (digits, at most 6 decimals)`
|
|
2625
2637
|
);
|
|
2626
2638
|
}
|
|
2627
|
-
const { openAgentChannels, requestTopUp, selectRail, withdrawalHatch } = await import("./channels-
|
|
2639
|
+
const { openAgentChannels, requestTopUp, selectRail, withdrawalHatch } = await import("./channels-JF4Q5KG3.js");
|
|
2628
2640
|
const { rails } = await openAgentChannels();
|
|
2629
2641
|
const result = await requestTopUp(selectRail(rails, options.rail), amount);
|
|
2630
2642
|
return {
|
|
@@ -2648,7 +2660,7 @@ function agentManagementCommands() {
|
|
|
2648
2660
|
async () => {
|
|
2649
2661
|
await requireExperimental();
|
|
2650
2662
|
const { AGENT_VIEW_VERSION } = await import("./budget-view-XKZC3GY5.js");
|
|
2651
|
-
const { closeChannel, openAgentChannels, selectChannel } = await import("./channels-
|
|
2663
|
+
const { closeChannel, openAgentChannels, selectChannel } = await import("./channels-JF4Q5KG3.js");
|
|
2652
2664
|
const { rail, retired } = selectChannel(await openAgentChannels(), options);
|
|
2653
2665
|
const result = await closeChannel(
|
|
2654
2666
|
rail,
|
|
@@ -2774,12 +2786,17 @@ var depositCommand = new Command48("deposit").description("Show wallet address a
|
|
|
2774
2786
|
renderFailure(err, { fallback: "Failed to fetch network info from backend." });
|
|
2775
2787
|
return;
|
|
2776
2788
|
}
|
|
2789
|
+
const chain = chainInfoFor(networkInfo, selectedNetwork().chainId);
|
|
2790
|
+
const chainId = chain?.chainId ?? networkInfo.chainId;
|
|
2791
|
+
const tokenAddress = chain?.tokenAddress ?? networkInfo.usdcAddress;
|
|
2777
2792
|
const data = {
|
|
2778
2793
|
address,
|
|
2779
|
-
network: networkInfo.networkName,
|
|
2780
|
-
chainId
|
|
2781
|
-
currency:
|
|
2782
|
-
|
|
2794
|
+
network: chain?.networkName ?? networkInfo.networkName,
|
|
2795
|
+
chainId,
|
|
2796
|
+
currency: paymentTokenSymbol(chainId),
|
|
2797
|
+
tokenAddress,
|
|
2798
|
+
/** Kept for scripts that read it; the same address as `tokenAddress`. */
|
|
2799
|
+
usdcContract: tokenAddress
|
|
2783
2800
|
};
|
|
2784
2801
|
printResult(data);
|
|
2785
2802
|
});
|
|
@@ -2789,13 +2806,15 @@ import { Command as Command57 } from "commander";
|
|
|
2789
2806
|
|
|
2790
2807
|
// src/commands/wallet/balance.ts
|
|
2791
2808
|
import { Command as Command49 } from "commander";
|
|
2792
|
-
var walletBalanceCommand = new Command49("balance").description("Show
|
|
2809
|
+
var walletBalanceCommand = new Command49("balance").description("Show the wallet's payment-token balance on the selected network").option("--address <addr>", "Address to check (defaults to own wallet)").action(async (opts) => {
|
|
2793
2810
|
let address = opts.address;
|
|
2794
2811
|
if (!address) {
|
|
2795
2812
|
const keystore = await loadKeystore();
|
|
2796
2813
|
address = keystore.walletAddress;
|
|
2797
2814
|
}
|
|
2798
|
-
const result = await apiGet(
|
|
2815
|
+
const result = await apiGet(
|
|
2816
|
+
`/api/wallet/balance?address=${address}&chainId=${selectedNetwork().chainId}`
|
|
2817
|
+
);
|
|
2799
2818
|
printResult(result);
|
|
2800
2819
|
});
|
|
2801
2820
|
|
|
@@ -2919,7 +2938,7 @@ import { Command as Command51 } from "commander";
|
|
|
2919
2938
|
function isValidAddress(addr) {
|
|
2920
2939
|
return /^0x[a-fA-F0-9]{40}$/.test(addr);
|
|
2921
2940
|
}
|
|
2922
|
-
var setWithdrawalAddressCommand = new Command51("set-withdrawal-address").description("Set a withdrawal address for
|
|
2941
|
+
var setWithdrawalAddressCommand = new Command51("set-withdrawal-address").description("Set a withdrawal address for payment-token withdrawals (one-time, free)").argument("<address>", "Ethereum address to receive withdrawals").action(async (address) => {
|
|
2923
2942
|
if (!isValidAddress(address)) {
|
|
2924
2943
|
printError("Invalid Ethereum address: must be 0x followed by 40 hex characters");
|
|
2925
2944
|
return;
|
|
@@ -3133,7 +3152,7 @@ async function withdrawOnTempo(input) {
|
|
|
3133
3152
|
token,
|
|
3134
3153
|
to: withdrawalAddress,
|
|
3135
3154
|
amount: BigInt(amountBaseUnits),
|
|
3136
|
-
validBefore: Math.floor(Date.now() / 1e3) + MPP_TEMPO_DEFAULT_VALIDITY_SECONDS,
|
|
3155
|
+
validBefore: Math.floor(Date.now() / 1e3) + clientValidityWindowSeconds(chainId, MPP_TEMPO_DEFAULT_VALIDITY_SECONDS),
|
|
3137
3156
|
format: "sender"
|
|
3138
3157
|
});
|
|
3139
3158
|
try {
|
|
@@ -3171,7 +3190,7 @@ var withdrawCommand = new Command58("withdraw").description(
|
|
|
3171
3190
|
).argument("<amount>", "Amount in whole tokens (e.g. 5 for 5 USDC or 5 OUSD)").action(async (amount) => {
|
|
3172
3191
|
const parsed = parseFloat(amount);
|
|
3173
3192
|
if (isNaN(parsed) || parsed <= 0) {
|
|
3174
|
-
printError("Invalid amount: must be a positive number (e.g. 5
|
|
3193
|
+
printError("Invalid amount: must be a positive number (e.g. 5)");
|
|
3175
3194
|
return;
|
|
3176
3195
|
}
|
|
3177
3196
|
const amountBaseUnits = String(Math.round(parsed * 1e6));
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
computeCreditOffer,
|
|
9
9
|
openSandbox,
|
|
10
10
|
readComputeView
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-LDCFKFF6.js";
|
|
12
12
|
import {
|
|
13
13
|
applyComputeCreditSetup,
|
|
14
14
|
atomicToUsd,
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
planComputeCreditSetup,
|
|
19
19
|
readComputeCreditBalance,
|
|
20
20
|
usdToAtomic
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-52Q2DCZN.js";
|
|
22
22
|
import {
|
|
23
23
|
MAX_RETIRED_RAILS,
|
|
24
24
|
WORKSPACE_CONSENT_VERSION,
|
|
@@ -37,7 +37,7 @@ import {
|
|
|
37
37
|
saveAgentPolicy,
|
|
38
38
|
selectModels,
|
|
39
39
|
settledRetiredRails
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-GJQUALXN.js";
|
|
41
41
|
import {
|
|
42
42
|
BASE_CHANNEL_RAIL_ID,
|
|
43
43
|
apiUrl,
|
|
@@ -54,7 +54,7 @@ import {
|
|
|
54
54
|
parseX402Policy,
|
|
55
55
|
saveX402Policy,
|
|
56
56
|
x402SpendWindowAvailability
|
|
57
|
-
} from "./chunk-
|
|
57
|
+
} from "./chunk-FRV3ZHUR.js";
|
|
58
58
|
import {
|
|
59
59
|
AgentLaunchError
|
|
60
60
|
} from "./chunk-YM4S6IE4.js";
|
|
@@ -20503,6 +20503,14 @@ var OutputLimitError = class extends Error {
|
|
|
20503
20503
|
this.name = "OutputLimitError";
|
|
20504
20504
|
}
|
|
20505
20505
|
};
|
|
20506
|
+
var ManifestLimitError = class extends Error {
|
|
20507
|
+
limit;
|
|
20508
|
+
constructor(limit) {
|
|
20509
|
+
super(`manifest_limit:${limit}`);
|
|
20510
|
+
this.limit = limit;
|
|
20511
|
+
this.name = "ManifestLimitError";
|
|
20512
|
+
}
|
|
20513
|
+
};
|
|
20506
20514
|
|
|
20507
20515
|
// ../../packages/remote-tools/dist/channel.js
|
|
20508
20516
|
var MAX_MESSAGE_BYTES = 64 * 1024;
|
|
@@ -20731,6 +20739,7 @@ var MAX_CONTEXT_FILE_BYTES = 64 * 1024;
|
|
|
20731
20739
|
var MAX_RESULT_LIMIT = 1e4;
|
|
20732
20740
|
var MAX_GREP_CONTEXT = 50;
|
|
20733
20741
|
var HEARTBEAT_INTERVAL_MS = 6e4;
|
|
20742
|
+
var SYNC_MAX_TOTAL_BYTES = 256 * 1024 * 1024;
|
|
20734
20743
|
|
|
20735
20744
|
// ../../packages/remote-tools/dist/prompt.js
|
|
20736
20745
|
var REMOTE_CONTEXT_FILE_NAMES = ["AGENTS.md", "CLAUDE.md"];
|
|
@@ -21337,6 +21346,7 @@ function shellQuote(value) {
|
|
|
21337
21346
|
}
|
|
21338
21347
|
var EXIT_NOT_FOUND = 64;
|
|
21339
21348
|
var EXIT_NOT_DIR = 65;
|
|
21349
|
+
var EXIT_IS_DIR = 66;
|
|
21340
21350
|
var KILL_GRACE_SECONDS = 2;
|
|
21341
21351
|
function unitName(sessionTag, n) {
|
|
21342
21352
|
if (!/^[a-z0-9]{1,16}$/.test(sessionTag))
|
|
@@ -21401,6 +21411,49 @@ function globCommand(dir, pattern, ignore, limit) {
|
|
|
21401
21411
|
args.push("--glob", shellQuote(`!${glob}`));
|
|
21402
21412
|
return `cd -- ${shellQuote(dir)} 2>/dev/null || { [ -e ${shellQuote(dir)} ] && exit ${EXIT_NOT_DIR}; exit ${EXIT_NOT_FOUND}; }; ${args.join(" ")} | head -z -n ${Math.max(1, Math.floor(limit))}; rc=\${PIPESTATUS[0]}; [ "$rc" -eq 141 ] && exit 0; exit "$rc"`;
|
|
21403
21413
|
}
|
|
21414
|
+
function manifestCommand(dir, prune) {
|
|
21415
|
+
const pruned = prune.length ? `\\( ${prune.map((name) => `-name ${shellQuote(name)}`).join(" -o ")} \\) -prune -o ` : "";
|
|
21416
|
+
const find = `find . -mindepth 1 ${pruned}`;
|
|
21417
|
+
return [
|
|
21418
|
+
`cd -- ${shellQuote(dir)} 2>/dev/null || { [ -e ${shellQuote(dir)} ] && exit ${EXIT_NOT_DIR}; exit ${EXIT_NOT_FOUND}; }`,
|
|
21419
|
+
`${find}\\( -type f -o -type l \\) -printf '%y\\0%s\\0%l\\0%P\\0' || exit 1`,
|
|
21420
|
+
`printf '=\\0'`,
|
|
21421
|
+
`${find}-type f -printf '%P\\0' | xargs -0 -r sha256sum -z -- 2>/dev/null`,
|
|
21422
|
+
"exit 0"
|
|
21423
|
+
].join("\n");
|
|
21424
|
+
}
|
|
21425
|
+
function parseManifestOutput(stdout) {
|
|
21426
|
+
const fields = stdout.toString("utf8").split("\0");
|
|
21427
|
+
let separator = 0;
|
|
21428
|
+
while (separator < fields.length && fields[separator] !== "=")
|
|
21429
|
+
separator += 4;
|
|
21430
|
+
if (separator >= fields.length)
|
|
21431
|
+
throw new Error("Malformed manifest output");
|
|
21432
|
+
const hashes = /* @__PURE__ */ new Map();
|
|
21433
|
+
for (const line of fields.slice(separator + 1)) {
|
|
21434
|
+
const match = /^([0-9a-f]{64}) [ *](.*)$/s.exec(line);
|
|
21435
|
+
if (match)
|
|
21436
|
+
hashes.set(match[2], match[1]);
|
|
21437
|
+
}
|
|
21438
|
+
const entries = [];
|
|
21439
|
+
for (let i = 0; i < separator; i += 4) {
|
|
21440
|
+
const [type, size, target, rel] = fields.slice(i, i + 4);
|
|
21441
|
+
if (type === "l")
|
|
21442
|
+
entries.push({ path: rel, type: "symlink", target });
|
|
21443
|
+
else if (type === "f") {
|
|
21444
|
+
entries.push({ path: rel, type: "file", size: Number(size), sha256: hashes.get(rel) ?? "" });
|
|
21445
|
+
}
|
|
21446
|
+
}
|
|
21447
|
+
return entries.sort((a, b) => a.path < b.path ? -1 : a.path > b.path ? 1 : 0);
|
|
21448
|
+
}
|
|
21449
|
+
function symlinkCommand(linkPath, target) {
|
|
21450
|
+
const p = shellQuote(linkPath);
|
|
21451
|
+
return `if [ -d ${p} ] && [ ! -L ${p} ]; then exit ${EXIT_IS_DIR}; fi; mkdir -p -- "$(dirname -- ${p})" && ln -sfn -- ${shellQuote(target)} ${p}`;
|
|
21452
|
+
}
|
|
21453
|
+
function removeCommand(filePath) {
|
|
21454
|
+
const p = shellQuote(filePath);
|
|
21455
|
+
return `if [ -d ${p} ] && [ ! -L ${p} ]; then exit ${EXIT_IS_DIR}; fi; rm -f -- ${p}`;
|
|
21456
|
+
}
|
|
21404
21457
|
function parseGlobOutput(stdout) {
|
|
21405
21458
|
return stdout.toString("utf8").split("\0").filter((entry) => entry.length > 0);
|
|
21406
21459
|
}
|
|
@@ -22291,6 +22344,56 @@ var SshSandboxBackend = class {
|
|
|
22291
22344
|
}
|
|
22292
22345
|
return { isDirectory: kind === "D" };
|
|
22293
22346
|
}
|
|
22347
|
+
async manifest(dir, options) {
|
|
22348
|
+
const stop = new AbortController();
|
|
22349
|
+
const onAbort = () => stop.abort();
|
|
22350
|
+
options.signal?.addEventListener("abort", onAbort, { once: true });
|
|
22351
|
+
const out = [];
|
|
22352
|
+
let entries = 0;
|
|
22353
|
+
let overLimit = false;
|
|
22354
|
+
try {
|
|
22355
|
+
const { exitCode, stderr } = await this.collect(manifestCommand(dir, options.prune), stop.signal, (chunk) => {
|
|
22356
|
+
out.push(chunk);
|
|
22357
|
+
for (const byte of chunk)
|
|
22358
|
+
if (byte === 0)
|
|
22359
|
+
entries += 1;
|
|
22360
|
+
if (entries > (options.limit + 1) * 5 && !overLimit) {
|
|
22361
|
+
overLimit = true;
|
|
22362
|
+
stop.abort();
|
|
22363
|
+
}
|
|
22364
|
+
});
|
|
22365
|
+
if (exitCode === EXIT_NOT_FOUND)
|
|
22366
|
+
throw new SandboxFileError("ENOENT", "scandir", dir);
|
|
22367
|
+
if (exitCode === EXIT_NOT_DIR)
|
|
22368
|
+
throw new SandboxFileError("ENOTDIR", "scandir", dir);
|
|
22369
|
+
if (exitCode !== 0)
|
|
22370
|
+
throw new Error(`find failed in the sandbox (exit ${exitCode}): ${stderr}`);
|
|
22371
|
+
} catch (error) {
|
|
22372
|
+
if (overLimit)
|
|
22373
|
+
throw new ManifestLimitError(options.limit);
|
|
22374
|
+
throw error;
|
|
22375
|
+
} finally {
|
|
22376
|
+
options.signal?.removeEventListener("abort", onAbort);
|
|
22377
|
+
}
|
|
22378
|
+
const parsed = parseManifestOutput(Buffer.concat(out));
|
|
22379
|
+
if (parsed.length > options.limit)
|
|
22380
|
+
throw new ManifestLimitError(options.limit);
|
|
22381
|
+
return parsed;
|
|
22382
|
+
}
|
|
22383
|
+
async symlink(path6, target, options = {}) {
|
|
22384
|
+
await this.fileCommand(symlinkCommand(path6, target), "symlink", path6, options.signal);
|
|
22385
|
+
}
|
|
22386
|
+
async remove(path6, options = {}) {
|
|
22387
|
+
await this.fileCommand(removeCommand(path6), "unlink", path6, options.signal);
|
|
22388
|
+
}
|
|
22389
|
+
async fileCommand(command, syscall, path6, signal) {
|
|
22390
|
+
const { exitCode, stderr } = await this.collect(command, signal, () => void 0);
|
|
22391
|
+
if (exitCode === EXIT_IS_DIR)
|
|
22392
|
+
throw new SandboxFileError("EISDIR", syscall, path6);
|
|
22393
|
+
if (exitCode !== 0) {
|
|
22394
|
+
throw new SandboxFileError("EIO", syscall, path6, stderr || `exit ${exitCode}`);
|
|
22395
|
+
}
|
|
22396
|
+
}
|
|
22294
22397
|
async exec(command, cwd, options) {
|
|
22295
22398
|
const { conn } = await this.ensure(options.signal);
|
|
22296
22399
|
const unit = this.nextUnit();
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { createRequire as __tmCreateRequire } from 'node:module'; import { fileURLToPath as __tmFileURLToPath } from 'node:url'; import { dirname as __tmDirname } from 'node:path'; const require = __tmCreateRequire(import.meta.url); const __tmFilename = __tmFileURLToPath(import.meta.url); const __tmDirnameValue = __tmDirname(__tmFilename);
|
|
2
2
|
import {
|
|
3
3
|
openAgentChannels
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-GJQUALXN.js";
|
|
5
5
|
import {
|
|
6
6
|
X402_INVOCATION_ID_PATTERN
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-FRV3ZHUR.js";
|
|
8
8
|
import {
|
|
9
9
|
AgentLaunchError
|
|
10
10
|
} from "./chunk-YM4S6IE4.js";
|