@lucid-agents/taskmarket 1.24.1 → 1.25.1

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.
@@ -1,5 +1,5 @@
1
1
  {
2
- "taskmarket": "1.24.1",
2
+ "taskmarket": "1.25.1",
3
3
  "manifestVersion": 1,
4
4
  "pi": {
5
5
  "package": "@earendil-works/pi-coding-agent",
@@ -10,9 +10,9 @@ import {
10
10
  selectRail,
11
11
  uncertainPurchases,
12
12
  withdrawalHatch
13
- } from "./chunk-DT7AD52I.js";
14
- import "./chunk-3YYDUJV4.js";
15
- import "./chunk-DZMMROHT.js";
13
+ } from "./chunk-XBTNZTXE.js";
14
+ import "./chunk-6KBTN3WM.js";
15
+ import "./chunk-L3A7JOO5.js";
16
16
  import "./chunk-XJOB4NMV.js";
17
17
  import "./chunk-YM4S6IE4.js";
18
18
  import "./chunk-S7SJMJ2I.js";
@@ -6,14 +6,14 @@ import {
6
6
  loadDeliverableRecord,
7
7
  readComputeView,
8
8
  taskStage
9
- } from "./chunk-E7Y4UDXH.js";
9
+ } from "./chunk-CGUYPUG3.js";
10
10
  import {
11
11
  activeClaim,
12
12
  captureProblem,
13
13
  killedSession,
14
14
  loadSyncState,
15
15
  orphanOf
16
- } from "./chunk-VKQBB6CG.js";
16
+ } from "./chunk-RFRSTYDB.js";
17
17
  import {
18
18
  allocationViews,
19
19
  channelView,
@@ -21,12 +21,12 @@ import {
21
21
  openAgentChannels,
22
22
  uncertainPurchases,
23
23
  withdrawalHatch
24
- } from "./chunk-DT7AD52I.js";
24
+ } from "./chunk-XBTNZTXE.js";
25
25
  import {
26
26
  SandboxListOutputSchema,
27
27
  apiUrl,
28
28
  selectedNetwork
29
- } from "./chunk-DZMMROHT.js";
29
+ } from "./chunk-L3A7JOO5.js";
30
30
  import {
31
31
  AGENT_VIEW_VERSION,
32
32
  blockingPurchases,
@@ -11,7 +11,7 @@ import {
11
11
  loadKeystore,
12
12
  mppAttributionMemo,
13
13
  parseMppChallenge
14
- } from "./chunk-DZMMROHT.js";
14
+ } from "./chunk-L3A7JOO5.js";
15
15
 
16
16
  // ../../packages/x402-payer/dist/api.js
17
17
  var X402_PAYER_API_VERSION = 1;
@@ -16,7 +16,7 @@ import {
16
16
  readMppTempoChallenge,
17
17
  reconcileX402Payment,
18
18
  withX402FileLock
19
- } from "./chunk-3YYDUJV4.js";
19
+ } from "./chunk-6KBTN3WM.js";
20
20
  import {
21
21
  ApiError,
22
22
  ComputeCreditBuyOutputSchema,
@@ -39,7 +39,7 @@ import {
39
39
  selectedNetwork,
40
40
  withChainId,
41
41
  withIdempotentWrite
42
- } from "./chunk-DZMMROHT.js";
42
+ } from "./chunk-L3A7JOO5.js";
43
43
 
44
44
  // src/lib/x402-fee.ts
45
45
  import { randomUUID as randomUUID3 } from "crypto";
@@ -8,7 +8,7 @@ import {
8
8
  unsafeHostPath,
9
9
  withFileLock,
10
10
  writeAtomic
11
- } from "./chunk-VKQBB6CG.js";
11
+ } from "./chunk-RFRSTYDB.js";
12
12
  import {
13
13
  buyComputeCredit,
14
14
  fetchComputePricing,
@@ -16,10 +16,10 @@ import {
16
16
  loadComputeCreditConfig,
17
17
  onComputeBalanceObserved,
18
18
  readComputeCreditStatus
19
- } from "./chunk-I6DSFR3I.js";
19
+ } from "./chunk-73SUBS7U.js";
20
20
  import {
21
21
  getTaskmarketHome
22
- } from "./chunk-DZMMROHT.js";
22
+ } from "./chunk-L3A7JOO5.js";
23
23
  import {
24
24
  burnRate,
25
25
  computeLow
@@ -1205,6 +1205,9 @@ var TaskListInputSchema = z8.object({
1205
1205
  minReward: UsdcBaseUnitsSchema.max(78).optional(),
1206
1206
  maxReward: UsdcBaseUnitsSchema.max(78).optional(),
1207
1207
  deadlineHours: z8.number().int().positive().optional(),
1208
+ // Only tasks carrying a sponsored task reward that is still reserved or already credited.
1209
+ // A query-string flag, so it arrives as 'true'/'false' over REST.
1210
+ sponsored: z8.enum(["true", "false"]).optional().transform((v) => v === void 0 ? void 0 : v === "true"),
1208
1211
  requester: z8.string().optional(),
1209
1212
  worker: z8.string().optional(),
1210
1213
  taskDropId: z8.string().trim().min(1).optional(),
@@ -1303,6 +1306,12 @@ var TaskDetailResponseSchema = TaskResponseSchema.extend({
1303
1306
  * claims stay free whatever `stakeRequired`/`stakeBps` say, and "0" for every non-claim mode.
1304
1307
  */
1305
1308
  enforcedClaimStake: z8.string().optional(),
1309
+ /**
1310
+ * Rev026: the diamond's escrow record for the task as last indexed. `booked` is what the task
1311
+ * owes in USDC base units; `tracked` is false for a pre-rev026 task the upgrade backfill has not
1312
+ * booked. Null below rev026 or before the first escrow event is indexed.
1313
+ */
1314
+ escrow: z8.object({ booked: z8.string(), tracked: z8.boolean() }).nullable().optional(),
1306
1315
  /**
1307
1316
  * An auction's accepted price in USDC base units (the contract's stakeAmount) once a winner is
1308
1317
  * bound, else null. Evaluator awards are budgeted against it, less the evaluator fee.
@@ -1722,8 +1731,10 @@ var HealthResponseSchema = z12.object({
1722
1731
  /**
1723
1732
  * Each served chain's escrow solvency (ADR-0261), from a background pass every five minutes:
1724
1733
  * the diamond's payment token balance against what open tasks are owed according to the
1725
- * indexed state (rewards plus claim and evaluator stakes). `solvent: false` is also logged as
1726
- * the `escrow_balance_below_owed` alert. Absent before the first pass.
1734
+ * indexed state (rewards plus claim and evaluator stakes), and from rev026 against the diamond's
1735
+ * own booked liabilities. `solvent: false` means the balance is below either; each is also
1736
+ * logged, as `escrow_balance_below_owed` or `escrow_balance_below_liabilities`. Absent before
1737
+ * the first pass.
1727
1738
  */
1728
1739
  escrow: z12.array(z12.object({
1729
1740
  chainId: z12.number().int(),
@@ -1735,6 +1746,18 @@ var HealthResponseSchema = z12.object({
1735
1746
  /** owed - balance, when positive. */
1736
1747
  shortfall: z12.string().optional(),
1737
1748
  solvent: z12.boolean(),
1749
+ /** Rev026: the diamond's totalLiabilities(), in base units; absent below rev026. */
1750
+ liabilities: z12.string().optional(),
1751
+ /** Rev026: whether the upgrade backfill is complete. */
1752
+ liabilitiesInitialised: z12.boolean().optional(),
1753
+ /** Rev026: the balance read at the same block as `liabilities`; surplus and shortfall use it. */
1754
+ liabilitiesBalance: z12.string().optional(),
1755
+ /** Rev026: liabilitiesBalance - liabilities, when non-negative. */
1756
+ surplus: z12.string().optional(),
1757
+ /** Rev026: liabilities - liabilitiesBalance, when positive. */
1758
+ liabilitiesShortfall: z12.string().optional(),
1759
+ /** Rev026: liabilities - owed, once the backfill is complete and they differ. */
1760
+ liabilitiesDrift: z12.string().optional(),
1738
1761
  measuredAt: z12.string()
1739
1762
  })).optional(),
1740
1763
  /**
@@ -5005,23 +5028,31 @@ var TEMPO_RATE_TASK_GAS_LIMIT = 4000000n;
5005
5028
  var TEMPO_CANCEL_TASK_BASE_GAS_LIMIT = 3500000n;
5006
5029
  var BASE_RATE_TASK_GAS_LIMIT = 1500000n;
5007
5030
  var BASE_CANCEL_TASK_BASE_GAS_LIMIT = 1000000n;
5008
- var HOOK_CALL_GAS = 1200000n;
5009
- var RELAY_GAS_CEILING = 16000000n;
5031
+ var BASE_HOOK_GAS_STIPEND = 1000000n;
5032
+ var TEMPO_HOOK_GAS_STIPEND = 7000000n;
5033
+ function hookCallGas(stipend) {
5034
+ const needed = (stipend * 64n + 62n) / 63n + 100000n;
5035
+ return (needed + 99999n) / 100000n * 100000n;
5036
+ }
5037
+ var BASE_RELAY_GAS_CEILING = 16000000n;
5038
+ var TEMPO_RELAY_GAS_CEILING = 28000000n;
5010
5039
  var RELAY_GAS_MARGIN_BPS = 12500n;
5011
5040
  var BASE_DEFAULT_RELAY_GAS_FLOOR = 500000n;
5012
5041
  var TEMPO_DEFAULT_RELAY_GAS_FLOOR = 1000000n;
5013
5042
  var BASE_ACCEPT_SUBMISSIONS_GAS_LIMIT = 4500000n;
5014
5043
  var TEMPO_ACCEPT_SUBMISSIONS_GAS_LIMIT = 11250000n;
5015
- function relayGasProfile(defaultFloor, rateTask, cancelBase, acceptSubmissions) {
5044
+ function relayGasProfile(defaultFloor, rateTask, cancelBase, acceptSubmissions, hookGasStipend, ceiling) {
5045
+ const perHook = hookCallGas(hookGasStipend);
5016
5046
  const floors = Object.fromEntries(RELAY_GAS_OPS.map((op) => [op, { base: defaultFloor }]));
5017
5047
  floors.rateTask = { base: rateTask };
5018
5048
  floors.acceptSubmissions = { base: acceptSubmissions };
5019
- floors.cancelTask = { base: cancelBase, perEntry: HOOK_CALL_GAS };
5020
- floors.refundExpired = { base: cancelBase, perEntry: HOOK_CALL_GAS };
5021
- floors.rejectDelivery = { base: cancelBase, perEntry: HOOK_CALL_GAS };
5022
- floors.settleLapsedReview = { base: cancelBase, perEntry: HOOK_CALL_GAS };
5023
- floors.createTask = { base: defaultFloor, perEntry: HOOK_CALL_GAS };
5024
- return { marginBps: RELAY_GAS_MARGIN_BPS, ceiling: RELAY_GAS_CEILING, floors };
5049
+ floors.cancelTask = { base: cancelBase, perEntry: perHook };
5050
+ floors.refundExpired = { base: cancelBase, perEntry: perHook };
5051
+ floors.rejectDelivery = { base: cancelBase, perEntry: perHook };
5052
+ floors.settleLapsedReview = { base: cancelBase, perEntry: perHook };
5053
+ floors.resolveDispute = { base: cancelBase, perEntry: perHook };
5054
+ floors.createTask = { base: defaultFloor, perEntry: perHook };
5055
+ return { hookGasStipend, marginBps: RELAY_GAS_MARGIN_BPS, ceiling, floors };
5025
5056
  }
5026
5057
  var TEMPO_MAX_FEE_PER_GAS_CAP = 6000000000n;
5027
5058
  var tempoFees = {
@@ -5061,7 +5092,7 @@ var TASKMARKET_CHAINS = Object.freeze({
5061
5092
  },
5062
5093
  fees: { kind: "native" },
5063
5094
  blockTimeMs: 2e3,
5064
- relayGas: relayGasProfile(BASE_DEFAULT_RELAY_GAS_FLOOR, BASE_RATE_TASK_GAS_LIMIT, BASE_CANCEL_TASK_BASE_GAS_LIMIT, BASE_ACCEPT_SUBMISSIONS_GAS_LIMIT),
5095
+ relayGas: relayGasProfile(BASE_DEFAULT_RELAY_GAS_FLOOR, BASE_RATE_TASK_GAS_LIMIT, BASE_CANCEL_TASK_BASE_GAS_LIMIT, BASE_ACCEPT_SUBMISSIONS_GAS_LIMIT, BASE_HOOK_GAS_STIPEND, BASE_RELAY_GAS_CEILING),
5065
5096
  defaultPlatformFeeBps: 0,
5066
5097
  indexer: { head: "latest", logRangeBlocks: 1e4 },
5067
5098
  erc8004: { ...ERC8004_MAINNET },
@@ -5090,7 +5121,7 @@ var TASKMARKET_CHAINS = Object.freeze({
5090
5121
  },
5091
5122
  fees: { kind: "native" },
5092
5123
  blockTimeMs: 2e3,
5093
- relayGas: relayGasProfile(BASE_DEFAULT_RELAY_GAS_FLOOR, BASE_RATE_TASK_GAS_LIMIT, BASE_CANCEL_TASK_BASE_GAS_LIMIT, BASE_ACCEPT_SUBMISSIONS_GAS_LIMIT),
5124
+ relayGas: relayGasProfile(BASE_DEFAULT_RELAY_GAS_FLOOR, BASE_RATE_TASK_GAS_LIMIT, BASE_CANCEL_TASK_BASE_GAS_LIMIT, BASE_ACCEPT_SUBMISSIONS_GAS_LIMIT, BASE_HOOK_GAS_STIPEND, BASE_RELAY_GAS_CEILING),
5094
5125
  defaultPlatformFeeBps: 0,
5095
5126
  indexer: { head: "latest", logRangeBlocks: 1e4 },
5096
5127
  erc8004: { ...ERC8004_TESTNET },
@@ -5112,7 +5143,7 @@ var TASKMARKET_CHAINS = Object.freeze({
5112
5143
  payment: { ...tempoPayment, domain: { ...tempoPayment.domain } },
5113
5144
  fees: { ...tempoFees },
5114
5145
  blockTimeMs: 1e3,
5115
- relayGas: relayGasProfile(TEMPO_DEFAULT_RELAY_GAS_FLOOR, TEMPO_RATE_TASK_GAS_LIMIT, TEMPO_CANCEL_TASK_BASE_GAS_LIMIT, TEMPO_ACCEPT_SUBMISSIONS_GAS_LIMIT),
5146
+ relayGas: relayGasProfile(TEMPO_DEFAULT_RELAY_GAS_FLOOR, TEMPO_RATE_TASK_GAS_LIMIT, TEMPO_CANCEL_TASK_BASE_GAS_LIMIT, TEMPO_ACCEPT_SUBMISSIONS_GAS_LIMIT, TEMPO_HOOK_GAS_STIPEND, TEMPO_RELAY_GAS_CEILING),
5116
5147
  defaultPlatformFeeBps: 0,
5117
5148
  maxValidityWindowSeconds: TEMPO_MAX_VALIDITY_WINDOW_SECONDS,
5118
5149
  // Tempo finality is deterministic and fast; until the provider's eth_getLogs limit is
@@ -5135,7 +5166,7 @@ var TASKMARKET_CHAINS = Object.freeze({
5135
5166
  payment: { ...tempoPayment, domain: { ...tempoPayment.domain } },
5136
5167
  fees: { ...tempoFees },
5137
5168
  blockTimeMs: 1e3,
5138
- relayGas: relayGasProfile(TEMPO_DEFAULT_RELAY_GAS_FLOOR, TEMPO_RATE_TASK_GAS_LIMIT, TEMPO_CANCEL_TASK_BASE_GAS_LIMIT, TEMPO_ACCEPT_SUBMISSIONS_GAS_LIMIT),
5169
+ relayGas: relayGasProfile(TEMPO_DEFAULT_RELAY_GAS_FLOOR, TEMPO_RATE_TASK_GAS_LIMIT, TEMPO_CANCEL_TASK_BASE_GAS_LIMIT, TEMPO_ACCEPT_SUBMISSIONS_GAS_LIMIT, TEMPO_HOOK_GAS_STIPEND, TEMPO_RELAY_GAS_CEILING),
5139
5170
  defaultPlatformFeeBps: 0,
5140
5171
  maxValidityWindowSeconds: TEMPO_MAX_VALIDITY_WINDOW_SECONDS,
5141
5172
  indexer: { head: "finalized", logRangeBlocks: 1e4 },
@@ -5162,7 +5193,7 @@ var TASKMARKET_CHAINS = Object.freeze({
5162
5193
  },
5163
5194
  fees: { kind: "native" },
5164
5195
  blockTimeMs: 1e3,
5165
- relayGas: relayGasProfile(BASE_DEFAULT_RELAY_GAS_FLOOR, BASE_RATE_TASK_GAS_LIMIT, BASE_CANCEL_TASK_BASE_GAS_LIMIT, BASE_ACCEPT_SUBMISSIONS_GAS_LIMIT),
5196
+ relayGas: relayGasProfile(BASE_DEFAULT_RELAY_GAS_FLOOR, BASE_RATE_TASK_GAS_LIMIT, BASE_CANCEL_TASK_BASE_GAS_LIMIT, BASE_ACCEPT_SUBMISSIONS_GAS_LIMIT, BASE_HOOK_GAS_STIPEND, BASE_RELAY_GAS_CEILING),
5166
5197
  defaultPlatformFeeBps: 750,
5167
5198
  indexer: { head: "latest", logRangeBlocks: 1e4 },
5168
5199
  erc8004: void 0,
@@ -11080,7 +11111,11 @@ var REPLAY_SAFE_TOOLS = /* @__PURE__ */ new Set([
11080
11111
  "taskmarket_docs",
11081
11112
  "skill_read"
11082
11113
  ]);
11083
- var NEVER_REPLAY_TOOLS = /* @__PURE__ */ new Set(["x402_purchase"]);
11114
+ var NEVER_REPLAY_TOOLS = /* @__PURE__ */ new Set([
11115
+ "x402_purchase",
11116
+ "taskmarket_execute",
11117
+ "web_search"
11118
+ ]);
11084
11119
  function toolReplayPolicy(name) {
11085
11120
  return REPLAY_SAFE_TOOLS.has(name) && !NEVER_REPLAY_TOOLS.has(name) ? "safe" : "unsafe";
11086
11121
  }
@@ -1,11 +1,11 @@
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
  x402FeePost
4
- } from "./chunk-I6DSFR3I.js";
4
+ } from "./chunk-73SUBS7U.js";
5
5
  import {
6
6
  createWalletAccountFromKeystore,
7
7
  signMessage
8
- } from "./chunk-3YYDUJV4.js";
8
+ } from "./chunk-6KBTN3WM.js";
9
9
  import {
10
10
  READ_AUTH_ADDRESS_HEADER,
11
11
  READ_AUTH_SIGNATURE_HEADER,
@@ -19,7 +19,7 @@ import {
19
19
  getTaskmarketHome,
20
20
  isRecordingPendingResponse,
21
21
  loadKeystore
22
- } from "./chunk-DZMMROHT.js";
22
+ } from "./chunk-L3A7JOO5.js";
23
23
 
24
24
  // src/lib/read-auth.ts
25
25
  async function signReadAuth() {
@@ -258,6 +258,7 @@ async function listTasks(ctx, filter = {}) {
258
258
  if (filter.minReward) params.set("minReward", filter.minReward);
259
259
  if (filter.maxReward) params.set("maxReward", filter.maxReward);
260
260
  if (filter.deadlineHours) params.set("deadlineHours", filter.deadlineHours);
261
+ if (filter.sponsored) params.set("sponsored", "true");
261
262
  if (filter.limit) params.set("limit", filter.limit);
262
263
  if (filter.cursor) params.set("cursor", filter.cursor);
263
264
  const result = await ctx.transport.get(
@@ -1,7 +1,7 @@
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
  getTaskmarketHome
4
- } from "./chunk-DZMMROHT.js";
4
+ } from "./chunk-L3A7JOO5.js";
5
5
  import {
6
6
  AgentLaunchError
7
7
  } from "./chunk-YM4S6IE4.js";
@@ -22,7 +22,7 @@ import {
22
22
  unresolvedCount,
23
23
  updateSyncState,
24
24
  uploadWorkspace
25
- } from "./chunk-VKQBB6CG.js";
25
+ } from "./chunk-RFRSTYDB.js";
26
26
  import {
27
27
  AgentLaunchError
28
28
  } from "./chunk-YM4S6IE4.js";
@@ -11,12 +11,12 @@ import {
11
11
  listX402Payments,
12
12
  loadX402Policy,
13
13
  rpcUrlForNetwork
14
- } from "./chunk-3YYDUJV4.js";
14
+ } from "./chunk-6KBTN3WM.js";
15
15
  import {
16
16
  getTaskmarketHome,
17
17
  keystoreExists,
18
18
  loadKeystore
19
- } from "./chunk-DZMMROHT.js";
19
+ } from "./chunk-L3A7JOO5.js";
20
20
  import {
21
21
  failureDetail,
22
22
  failureDetailOf,
@@ -6,26 +6,26 @@ import {
6
6
  } from "./chunk-4ZC6SH7H.js";
7
7
  import {
8
8
  listSandboxes
9
- } from "./chunk-2BYIKWV5.js";
10
- import "./chunk-E7Y4UDXH.js";
11
- import "./chunk-VKQBB6CG.js";
12
- import "./chunk-I6DSFR3I.js";
9
+ } from "./chunk-4E76UNBE.js";
10
+ import "./chunk-CGUYPUG3.js";
11
+ import "./chunk-RFRSTYDB.js";
12
+ import "./chunk-73SUBS7U.js";
13
13
  import {
14
14
  channelView,
15
15
  loadAgentPolicy,
16
16
  openAgentChannels
17
- } from "./chunk-DT7AD52I.js";
17
+ } from "./chunk-XBTNZTXE.js";
18
18
  import {
19
19
  getX402PolicyPath,
20
20
  loadX402Policy,
21
21
  rpcUrlForNetwork
22
- } from "./chunk-3YYDUJV4.js";
22
+ } from "./chunk-6KBTN3WM.js";
23
23
  import {
24
24
  apiUrl,
25
25
  keystoreExists,
26
26
  loadKeystore,
27
27
  withChainId
28
- } from "./chunk-DZMMROHT.js";
28
+ } from "./chunk-L3A7JOO5.js";
29
29
  import {
30
30
  AGENT_VIEW_VERSION
31
31
  } from "./chunk-XJOB4NMV.js";
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ import {
14
14
  signReadAuth,
15
15
  submitTaskFiles,
16
16
  taskAccessGrantHeaders
17
- } from "./chunk-EE7LLCQY.js";
17
+ } from "./chunk-PE72DL5T.js";
18
18
  import {
19
19
  ComputeCreditError,
20
20
  applyComputeCreditSetup,
@@ -36,7 +36,7 @@ import {
36
36
  refusedPaidWrite,
37
37
  releasePendingComputePurchase,
38
38
  resolvePendingComputePurchases
39
- } from "./chunk-I6DSFR3I.js";
39
+ } from "./chunk-73SUBS7U.js";
40
40
  import {
41
41
  MPP_TEMPO_DEFAULT_VALIDITY_SECONDS,
42
42
  X402PayError,
@@ -59,7 +59,7 @@ import {
59
59
  signSponsoredTempoTransfer,
60
60
  signTaskmarketFeePayment,
61
61
  signTypedData
62
- } from "./chunk-3YYDUJV4.js";
62
+ } from "./chunk-6KBTN3WM.js";
63
63
  import {
64
64
  ActivityFeedInputSchema,
65
65
  ActivityHeatmapInputSchema,
@@ -197,7 +197,7 @@ import {
197
197
  withChainId,
198
198
  withErrorContext,
199
199
  withIdempotentWrite
200
- } from "./chunk-DZMMROHT.js";
200
+ } from "./chunk-L3A7JOO5.js";
201
201
  import {
202
202
  channelLines
203
203
  } from "./chunk-XJOB4NMV.js";
@@ -2295,7 +2295,10 @@ var listCmd = new Command9("list").alias("search").description("List available t
2295
2295
  ).option("--mode <mode>", "Filter by mode (bounty, claim, pitch, benchmark, auction)").option(
2296
2296
  "--auction-type <type>",
2297
2297
  "Filter auction tasks by subtype (dutch, english, reverse_dutch, reverse_english)"
2298
- ).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(
2298
+ ).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(
2299
+ "--sponsored",
2300
+ "Only tasks carrying a sponsored task reward (reserved or credited); reward filters stay USDC-only"
2301
+ ).option("--limit <n>", "Maximum results to return", "20").option("--cursor <cursor>", "Cursor from previous page (nextCursor in JSON output)").action(
2299
2302
  async (opts) => {
2300
2303
  const tagsValue = opts.tags ?? opts.skill;
2301
2304
  const result = await listTasks(cliTaskReadContext(), {
@@ -2307,6 +2310,7 @@ var listCmd = new Command9("list").alias("search").description("List available t
2307
2310
  minReward: opts.rewardMin ? String(Math.round(Number(opts.rewardMin) * 1e6)) : void 0,
2308
2311
  maxReward: opts.rewardMax ? String(Math.round(Number(opts.rewardMax) * 1e6)) : void 0,
2309
2312
  deadlineHours: opts.deadlineHours,
2313
+ sponsored: opts.sponsored,
2310
2314
  limit: opts.limit,
2311
2315
  cursor: opts.cursor
2312
2316
  });
@@ -3817,7 +3821,7 @@ async function runAgentCommand(options) {
3817
3821
  try {
3818
3822
  const { assertAgentCompatibility } = await import("./compatibility-636WJOEX.js");
3819
3823
  const pi = assertAgentCompatibility();
3820
- const { runAgent } = await import("./launch-Q67U5TZE.js");
3824
+ const { runAgent } = await import("./launch-O72WIBHY.js");
3821
3825
  result = await runAgent({
3822
3826
  model: options.model,
3823
3827
  pi,
@@ -3876,13 +3880,13 @@ function agentManagementCommands() {
3876
3880
  const status = new Command48("status").description(
3877
3881
  "Show the agent channels (locked, charged, refundable), purchases with an unknown outcome, the sandbox and compute credit. Reads only."
3878
3882
  ).option("--json", "Print the versioned JSON envelope").action(async (options) => {
3879
- const { collectAgentStatus, statusLines } = await import("./status-5PXMF7RK.js");
3883
+ const { collectAgentStatus, statusLines } = await import("./status-CC5L5YUU.js");
3880
3884
  await run(options, () => collectAgentStatus(), statusLines);
3881
3885
  });
3882
3886
  const doctor = new Command48("doctor").description(
3883
3887
  "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."
3884
3888
  ).option("--json", "Print the versioned JSON envelope").action(async (options) => {
3885
- const { runDoctor, doctorLines } = await import("./doctor-FCQZBQFU.js");
3889
+ const { runDoctor, doctorLines } = await import("./doctor-K2JOWQF4.js");
3886
3890
  const report = await run(options, () => runDoctor(), doctorLines);
3887
3891
  if (report && !report.ok) process.exitCode = 1;
3888
3892
  });
@@ -3893,7 +3897,7 @@ function agentManagementCommands() {
3893
3897
  "Reconcile the open purchases of this channel, as status lists it; also reaches retired channels"
3894
3898
  ).option("--json", "Print the versioned JSON envelope").action(
3895
3899
  async (invocationId, options) => {
3896
- const { reconcileChannelPurchases, reconcileInvocation } = await import("./reconcile-NBIZBPVA.js");
3900
+ const { reconcileChannelPurchases, reconcileInvocation } = await import("./reconcile-FZTOX3PZ.js");
3897
3901
  const choice = { rail: options.rail, channel: options.channel };
3898
3902
  if (invocationId !== void 0) {
3899
3903
  await run(
@@ -3951,7 +3955,7 @@ function agentManagementCommands() {
3951
3955
  `Not a USDC amount: ${options.amount} (digits, at most 6 decimals)`
3952
3956
  );
3953
3957
  }
3954
- const { openAgentChannels, requestTopUp, selectRail, withdrawalHatch } = await import("./channels-KCVGG62H.js");
3958
+ const { openAgentChannels, requestTopUp, selectRail, withdrawalHatch } = await import("./channels-LEYAANE5.js");
3955
3959
  const { rails } = await openAgentChannels();
3956
3960
  const result = await requestTopUp(selectRail(rails, options.rail), amount);
3957
3961
  return {
@@ -3975,8 +3979,8 @@ function agentManagementCommands() {
3975
3979
  async () => {
3976
3980
  await requireExperimental();
3977
3981
  const { AGENT_VIEW_VERSION } = await import("./budget-view-J6L7X6EY.js");
3978
- const { closeChannel, openAgentChannels, selectChannel } = await import("./channels-KCVGG62H.js");
3979
- const { reconcileLeasedPurchase } = await import("./reconcile-NBIZBPVA.js");
3982
+ const { closeChannel, openAgentChannels, selectChannel } = await import("./channels-LEYAANE5.js");
3983
+ const { reconcileLeasedPurchase } = await import("./reconcile-FZTOX3PZ.js");
3980
3984
  const opened = await openAgentChannels();
3981
3985
  const { rail, retired } = selectChannel(opened, options);
3982
3986
  const result = await closeChannel(
@@ -4047,7 +4051,7 @@ function agentManagementCommands() {
4047
4051
  options,
4048
4052
  async () => {
4049
4053
  await requireExperimental();
4050
- const { runPull } = await import("./sync-pull-BY4QUY4T.js");
4054
+ const { runPull } = await import("./sync-pull-DZGTSKZU.js");
4051
4055
  const { terminalPrompter } = await import("./prompter-LSICEYSQ.js");
4052
4056
  return runPull(options, {
4053
4057
  interactive: Boolean(process.stdin.isTTY && process.stdout.isTTY) && !options.json,
@@ -10901,10 +10905,12 @@ async function approveSponsoredTaskSpend(input) {
10901
10905
  }
10902
10906
 
10903
10907
  // src/commands/sponsored-task/create.ts
10908
+ var TOKEN_RISK = "If the token can blocklist addresses or pause transfers, its issuer can freeze the vault's funds, and emergency exit cannot move them. Tokens with a transfer fee or a transfer hook that changes the amount cannot fund a vault.";
10904
10909
  function isValidAddress4(addr) {
10905
10910
  return /^0x[a-fA-F0-9]{40}$/.test(addr);
10906
10911
  }
10907
- var sponsoredTaskCreateCommand = new Command96("create").description("Create a new Sponsored Task vault for a project token").requiredOption("--factory <address>", "SponsoredTaskFactory contract address").requiredOption("--chain-id <id>", "Chain id the factory is deployed on").requiredOption("--token <address>", "Project ERC-20 token address to fund the vault with").option("--owner <address>", "Vault owner (defaults to your own wallet)").action(async (opts) => {
10912
+ var sponsoredTaskCreateCommand = new Command96("create").description("Create a new Sponsored Task vault for a project token").requiredOption("--factory <address>", "SponsoredTaskFactory contract address").requiredOption("--chain-id <id>", "Chain id the factory is deployed on").requiredOption("--token <address>", "Project ERC-20 token address to fund the vault with").option("--owner <address>", "Vault owner (defaults to your own wallet)").addHelpText("after", `
10913
+ Token risk: ${TOKEN_RISK}`).action(async (opts) => {
10908
10914
  if (!isValidAddress4(opts.factory) || !isValidAddress4(opts.token)) {
10909
10915
  printError("Invalid Ethereum address for --factory or --token");
10910
10916
  return;
@@ -10937,7 +10943,10 @@ var sponsoredTaskCreateCommand = new Command96("create").description("Create a n
10937
10943
  args: [opts.token, vaultOwner, userSalt]
10938
10944
  });
10939
10945
  const [vault, vaultId] = result;
10940
- printResult({ txHash, vault, vaultId, owner: vaultOwner, token: opts.token });
10946
+ printResult(
10947
+ { txHash, vault, vaultId, owner: vaultOwner, token: opts.token },
10948
+ { warnings: [cliWarning("token_freeze_risk", TOKEN_RISK, { token: opts.token })] }
10949
+ );
10941
10950
  });
10942
10951
 
10943
10952
  // src/commands/sponsored-task/fund.ts
@@ -11377,6 +11386,20 @@ async function postClaimWithRetry(path3, body, options = {}) {
11377
11386
  }
11378
11387
  }
11379
11388
  }
11389
+ var ENTITLEMENT_WAIT_BUDGET_MS = 6e4;
11390
+ async function findEntitlement(vaultId, workerAddress, taskId, options = {}) {
11391
+ const sleep4 = options.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
11392
+ const deadline = Date.now() + (options.budgetMs ?? ENTITLEMENT_WAIT_BUDGET_MS);
11393
+ const query3 = taskId ? `&taskId=${taskId}` : "";
11394
+ for (; ; ) {
11395
+ const entitlements = await apiGet(
11396
+ `/api/sponsored-task-vaults/${vaultId}/entitlements?workerAddress=${workerAddress}${query3}`
11397
+ );
11398
+ const found = taskId ? entitlements.find((e) => e.taskId.toLowerCase() === taskId.toLowerCase()) : entitlements[0];
11399
+ if (found || !taskId || Date.now() + 3e3 > deadline) return found;
11400
+ await sleep4(3e3);
11401
+ }
11402
+ }
11380
11403
  var sponsoredTaskClaimCommand = new Command108("claim").description("Claim your unclaimed Sponsored Task reward for a vault task").argument("<vaultId>", "Vault id").option(
11381
11404
  "--task-id <id>",
11382
11405
  "Claim the entitlement for a specific task (defaults to the first unclaimed one)"
@@ -11414,10 +11437,7 @@ var sponsoredTaskClaimCommand = new Command108("claim").description("Claim your
11414
11437
  renderFailure(err);
11415
11438
  return;
11416
11439
  }
11417
- const entitlements = await apiGet(
11418
- `/api/sponsored-task-vaults/${vaultId}/entitlements?workerAddress=${workerAddress}`
11419
- );
11420
- const entitlement = opts.taskId ? entitlements.find((e) => e.taskId.toLowerCase() === opts.taskId.toLowerCase()) : entitlements[0];
11440
+ const entitlement = await findEntitlement(vaultId, workerAddress, opts.taskId);
11421
11441
  if (!entitlement) {
11422
11442
  printError("No unclaimed entitlement found for this wallet in this vault.");
11423
11443
  return;
@@ -7,7 +7,7 @@ import {
7
7
  recordSessionEnd,
8
8
  recordSessionStart,
9
9
  uploadPlan
10
- } from "./chunk-IPJKSTNW.js";
10
+ } from "./chunk-ULPTFH3G.js";
11
11
  import {
12
12
  TaskOperationError,
13
13
  authorizeUploads,
@@ -28,7 +28,7 @@ import {
28
28
  submitUploadedArtifacts,
29
29
  taskAccessGrantHeaders,
30
30
  taskAwardsOf
31
- } from "./chunk-EE7LLCQY.js";
31
+ } from "./chunk-PE72DL5T.js";
32
32
  import {
33
33
  terminalPrompter
34
34
  } from "./chunk-ZIC2YCLV.js";
@@ -68,7 +68,7 @@ import {
68
68
  sha256Hex,
69
69
  specHash,
70
70
  taskStage
71
- } from "./chunk-E7Y4UDXH.js";
71
+ } from "./chunk-CGUYPUG3.js";
72
72
  import {
73
73
  BrokerConnector,
74
74
  OutputLimitError,
@@ -80,7 +80,7 @@ import {
80
80
  serveSandboxChannel,
81
81
  withFileLock,
82
82
  writeAtomic
83
- } from "./chunk-VKQBB6CG.js";
83
+ } from "./chunk-RFRSTYDB.js";
84
84
  import {
85
85
  applyComputeCreditSetup,
86
86
  atomicToUsd,
@@ -90,7 +90,7 @@ import {
90
90
  planComputeCreditSetup,
91
91
  readComputeCreditBalance,
92
92
  usdToAtomic
93
- } from "./chunk-I6DSFR3I.js";
93
+ } from "./chunk-73SUBS7U.js";
94
94
  import {
95
95
  MAX_RETIRED_RAILS,
96
96
  WORKSPACE_CONSENT_VERSION,
@@ -110,7 +110,7 @@ import {
110
110
  routeOfCatalogRow,
111
111
  saveAgentPolicy,
112
112
  settledRetiredRails
113
- } from "./chunk-DT7AD52I.js";
113
+ } from "./chunk-XBTNZTXE.js";
114
114
  import {
115
115
  BASE_CHANNEL_RAIL_ID,
116
116
  createBaseChannelPayer,
@@ -124,7 +124,7 @@ import {
124
124
  rpcUrlForNetwork,
125
125
  saveX402Policy,
126
126
  x402SpendWindowAvailability
127
- } from "./chunk-3YYDUJV4.js";
127
+ } from "./chunk-6KBTN3WM.js";
128
128
  import {
129
129
  IntentStatusResponseSchema,
130
130
  NetworkChainInfoSchema,
@@ -137,7 +137,7 @@ import {
137
137
  piCodingAgentTools,
138
138
  selectedNetwork,
139
139
  taskmarketChain
140
- } from "./chunk-DZMMROHT.js";
140
+ } from "./chunk-L3A7JOO5.js";
141
141
  import {
142
142
  AGENT_VIEW_VERSION,
143
143
  describeFailureDetail,
@@ -31520,6 +31520,9 @@ var TaskListInputSchema = external_exports.object({
31520
31520
  minReward: UsdcBaseUnitsSchema.max(78).optional(),
31521
31521
  maxReward: UsdcBaseUnitsSchema.max(78).optional(),
31522
31522
  deadlineHours: external_exports.number().int().positive().optional(),
31523
+ // Only tasks carrying a sponsored task reward that is still reserved or already credited.
31524
+ // A query-string flag, so it arrives as 'true'/'false' over REST.
31525
+ sponsored: external_exports.enum(["true", "false"]).optional().transform((v) => v === void 0 ? void 0 : v === "true"),
31523
31526
  requester: external_exports.string().optional(),
31524
31527
  worker: external_exports.string().optional(),
31525
31528
  taskDropId: external_exports.string().trim().min(1).optional(),
@@ -31618,6 +31621,12 @@ var TaskDetailResponseSchema = TaskResponseSchema.extend({
31618
31621
  * claims stay free whatever `stakeRequired`/`stakeBps` say, and "0" for every non-claim mode.
31619
31622
  */
31620
31623
  enforcedClaimStake: external_exports.string().optional(),
31624
+ /**
31625
+ * Rev026: the diamond's escrow record for the task as last indexed. `booked` is what the task
31626
+ * owes in USDC base units; `tracked` is false for a pre-rev026 task the upgrade backfill has not
31627
+ * booked. Null below rev026 or before the first escrow event is indexed.
31628
+ */
31629
+ escrow: external_exports.object({ booked: external_exports.string(), tracked: external_exports.boolean() }).nullable().optional(),
31621
31630
  /**
31622
31631
  * An auction's accepted price in USDC base units (the contract's stakeAmount) once a winner is
31623
31632
  * bound, else null. Evaluator awards are budgeted against it, less the evaluator fee.
@@ -32037,8 +32046,10 @@ var HealthResponseSchema = external_exports.object({
32037
32046
  /**
32038
32047
  * Each served chain's escrow solvency (ADR-0261), from a background pass every five minutes:
32039
32048
  * the diamond's payment token balance against what open tasks are owed according to the
32040
- * indexed state (rewards plus claim and evaluator stakes). `solvent: false` is also logged as
32041
- * the `escrow_balance_below_owed` alert. Absent before the first pass.
32049
+ * indexed state (rewards plus claim and evaluator stakes), and from rev026 against the diamond's
32050
+ * own booked liabilities. `solvent: false` means the balance is below either; each is also
32051
+ * logged, as `escrow_balance_below_owed` or `escrow_balance_below_liabilities`. Absent before
32052
+ * the first pass.
32042
32053
  */
32043
32054
  escrow: external_exports.array(external_exports.object({
32044
32055
  chainId: external_exports.number().int(),
@@ -32050,6 +32061,18 @@ var HealthResponseSchema = external_exports.object({
32050
32061
  /** owed - balance, when positive. */
32051
32062
  shortfall: external_exports.string().optional(),
32052
32063
  solvent: external_exports.boolean(),
32064
+ /** Rev026: the diamond's totalLiabilities(), in base units; absent below rev026. */
32065
+ liabilities: external_exports.string().optional(),
32066
+ /** Rev026: whether the upgrade backfill is complete. */
32067
+ liabilitiesInitialised: external_exports.boolean().optional(),
32068
+ /** Rev026: the balance read at the same block as `liabilities`; surplus and shortfall use it. */
32069
+ liabilitiesBalance: external_exports.string().optional(),
32070
+ /** Rev026: liabilitiesBalance - liabilities, when non-negative. */
32071
+ surplus: external_exports.string().optional(),
32072
+ /** Rev026: liabilities - liabilitiesBalance, when positive. */
32073
+ liabilitiesShortfall: external_exports.string().optional(),
32074
+ /** Rev026: liabilities - owed, once the backfill is complete and they differ. */
32075
+ liabilitiesDrift: external_exports.string().optional(),
32053
32076
  measuredAt: external_exports.string()
32054
32077
  })).optional(),
32055
32078
  /**
@@ -50263,23 +50286,31 @@ var TEMPO_RATE_TASK_GAS_LIMIT = 4000000n;
50263
50286
  var TEMPO_CANCEL_TASK_BASE_GAS_LIMIT = 3500000n;
50264
50287
  var BASE_RATE_TASK_GAS_LIMIT = 1500000n;
50265
50288
  var BASE_CANCEL_TASK_BASE_GAS_LIMIT = 1000000n;
50266
- var HOOK_CALL_GAS = 1200000n;
50267
- var RELAY_GAS_CEILING = 16000000n;
50289
+ var BASE_HOOK_GAS_STIPEND = 1000000n;
50290
+ var TEMPO_HOOK_GAS_STIPEND = 7000000n;
50291
+ function hookCallGas(stipend) {
50292
+ const needed = (stipend * 64n + 62n) / 63n + 100000n;
50293
+ return (needed + 99999n) / 100000n * 100000n;
50294
+ }
50295
+ var BASE_RELAY_GAS_CEILING = 16000000n;
50296
+ var TEMPO_RELAY_GAS_CEILING = 28000000n;
50268
50297
  var RELAY_GAS_MARGIN_BPS = 12500n;
50269
50298
  var BASE_DEFAULT_RELAY_GAS_FLOOR = 500000n;
50270
50299
  var TEMPO_DEFAULT_RELAY_GAS_FLOOR = 1000000n;
50271
50300
  var BASE_ACCEPT_SUBMISSIONS_GAS_LIMIT = 4500000n;
50272
50301
  var TEMPO_ACCEPT_SUBMISSIONS_GAS_LIMIT = 11250000n;
50273
- function relayGasProfile(defaultFloor, rateTask, cancelBase, acceptSubmissions) {
50302
+ function relayGasProfile(defaultFloor, rateTask, cancelBase, acceptSubmissions, hookGasStipend, ceiling) {
50303
+ const perHook = hookCallGas(hookGasStipend);
50274
50304
  const floors = Object.fromEntries(RELAY_GAS_OPS.map((op) => [op, { base: defaultFloor }]));
50275
50305
  floors.rateTask = { base: rateTask };
50276
50306
  floors.acceptSubmissions = { base: acceptSubmissions };
50277
- floors.cancelTask = { base: cancelBase, perEntry: HOOK_CALL_GAS };
50278
- floors.refundExpired = { base: cancelBase, perEntry: HOOK_CALL_GAS };
50279
- floors.rejectDelivery = { base: cancelBase, perEntry: HOOK_CALL_GAS };
50280
- floors.settleLapsedReview = { base: cancelBase, perEntry: HOOK_CALL_GAS };
50281
- floors.createTask = { base: defaultFloor, perEntry: HOOK_CALL_GAS };
50282
- return { marginBps: RELAY_GAS_MARGIN_BPS, ceiling: RELAY_GAS_CEILING, floors };
50307
+ floors.cancelTask = { base: cancelBase, perEntry: perHook };
50308
+ floors.refundExpired = { base: cancelBase, perEntry: perHook };
50309
+ floors.rejectDelivery = { base: cancelBase, perEntry: perHook };
50310
+ floors.settleLapsedReview = { base: cancelBase, perEntry: perHook };
50311
+ floors.resolveDispute = { base: cancelBase, perEntry: perHook };
50312
+ floors.createTask = { base: defaultFloor, perEntry: perHook };
50313
+ return { hookGasStipend, marginBps: RELAY_GAS_MARGIN_BPS, ceiling, floors };
50283
50314
  }
50284
50315
  var TEMPO_MAX_FEE_PER_GAS_CAP = 6000000000n;
50285
50316
  var tempoFees = {
@@ -50319,7 +50350,7 @@ var TASKMARKET_CHAINS = Object.freeze({
50319
50350
  },
50320
50351
  fees: { kind: "native" },
50321
50352
  blockTimeMs: 2e3,
50322
- relayGas: relayGasProfile(BASE_DEFAULT_RELAY_GAS_FLOOR, BASE_RATE_TASK_GAS_LIMIT, BASE_CANCEL_TASK_BASE_GAS_LIMIT, BASE_ACCEPT_SUBMISSIONS_GAS_LIMIT),
50353
+ relayGas: relayGasProfile(BASE_DEFAULT_RELAY_GAS_FLOOR, BASE_RATE_TASK_GAS_LIMIT, BASE_CANCEL_TASK_BASE_GAS_LIMIT, BASE_ACCEPT_SUBMISSIONS_GAS_LIMIT, BASE_HOOK_GAS_STIPEND, BASE_RELAY_GAS_CEILING),
50323
50354
  defaultPlatformFeeBps: 0,
50324
50355
  indexer: { head: "latest", logRangeBlocks: 1e4 },
50325
50356
  erc8004: { ...ERC8004_MAINNET },
@@ -50348,7 +50379,7 @@ var TASKMARKET_CHAINS = Object.freeze({
50348
50379
  },
50349
50380
  fees: { kind: "native" },
50350
50381
  blockTimeMs: 2e3,
50351
- relayGas: relayGasProfile(BASE_DEFAULT_RELAY_GAS_FLOOR, BASE_RATE_TASK_GAS_LIMIT, BASE_CANCEL_TASK_BASE_GAS_LIMIT, BASE_ACCEPT_SUBMISSIONS_GAS_LIMIT),
50382
+ relayGas: relayGasProfile(BASE_DEFAULT_RELAY_GAS_FLOOR, BASE_RATE_TASK_GAS_LIMIT, BASE_CANCEL_TASK_BASE_GAS_LIMIT, BASE_ACCEPT_SUBMISSIONS_GAS_LIMIT, BASE_HOOK_GAS_STIPEND, BASE_RELAY_GAS_CEILING),
50352
50383
  defaultPlatformFeeBps: 0,
50353
50384
  indexer: { head: "latest", logRangeBlocks: 1e4 },
50354
50385
  erc8004: { ...ERC8004_TESTNET },
@@ -50370,7 +50401,7 @@ var TASKMARKET_CHAINS = Object.freeze({
50370
50401
  payment: { ...tempoPayment, domain: { ...tempoPayment.domain } },
50371
50402
  fees: { ...tempoFees },
50372
50403
  blockTimeMs: 1e3,
50373
- relayGas: relayGasProfile(TEMPO_DEFAULT_RELAY_GAS_FLOOR, TEMPO_RATE_TASK_GAS_LIMIT, TEMPO_CANCEL_TASK_BASE_GAS_LIMIT, TEMPO_ACCEPT_SUBMISSIONS_GAS_LIMIT),
50404
+ relayGas: relayGasProfile(TEMPO_DEFAULT_RELAY_GAS_FLOOR, TEMPO_RATE_TASK_GAS_LIMIT, TEMPO_CANCEL_TASK_BASE_GAS_LIMIT, TEMPO_ACCEPT_SUBMISSIONS_GAS_LIMIT, TEMPO_HOOK_GAS_STIPEND, TEMPO_RELAY_GAS_CEILING),
50374
50405
  defaultPlatformFeeBps: 0,
50375
50406
  maxValidityWindowSeconds: TEMPO_MAX_VALIDITY_WINDOW_SECONDS,
50376
50407
  // Tempo finality is deterministic and fast; until the provider's eth_getLogs limit is
@@ -50393,7 +50424,7 @@ var TASKMARKET_CHAINS = Object.freeze({
50393
50424
  payment: { ...tempoPayment, domain: { ...tempoPayment.domain } },
50394
50425
  fees: { ...tempoFees },
50395
50426
  blockTimeMs: 1e3,
50396
- relayGas: relayGasProfile(TEMPO_DEFAULT_RELAY_GAS_FLOOR, TEMPO_RATE_TASK_GAS_LIMIT, TEMPO_CANCEL_TASK_BASE_GAS_LIMIT, TEMPO_ACCEPT_SUBMISSIONS_GAS_LIMIT),
50427
+ relayGas: relayGasProfile(TEMPO_DEFAULT_RELAY_GAS_FLOOR, TEMPO_RATE_TASK_GAS_LIMIT, TEMPO_CANCEL_TASK_BASE_GAS_LIMIT, TEMPO_ACCEPT_SUBMISSIONS_GAS_LIMIT, TEMPO_HOOK_GAS_STIPEND, TEMPO_RELAY_GAS_CEILING),
50397
50428
  defaultPlatformFeeBps: 0,
50398
50429
  maxValidityWindowSeconds: TEMPO_MAX_VALIDITY_WINDOW_SECONDS,
50399
50430
  indexer: { head: "finalized", logRangeBlocks: 1e4 },
@@ -50420,7 +50451,7 @@ var TASKMARKET_CHAINS = Object.freeze({
50420
50451
  },
50421
50452
  fees: { kind: "native" },
50422
50453
  blockTimeMs: 1e3,
50423
- relayGas: relayGasProfile(BASE_DEFAULT_RELAY_GAS_FLOOR, BASE_RATE_TASK_GAS_LIMIT, BASE_CANCEL_TASK_BASE_GAS_LIMIT, BASE_ACCEPT_SUBMISSIONS_GAS_LIMIT),
50454
+ relayGas: relayGasProfile(BASE_DEFAULT_RELAY_GAS_FLOOR, BASE_RATE_TASK_GAS_LIMIT, BASE_CANCEL_TASK_BASE_GAS_LIMIT, BASE_ACCEPT_SUBMISSIONS_GAS_LIMIT, BASE_HOOK_GAS_STIPEND, BASE_RELAY_GAS_CEILING),
50424
50455
  defaultPlatformFeeBps: 750,
50425
50456
  indexer: { head: "latest", logRangeBlocks: 1e4 },
50426
50457
  erc8004: void 0,
@@ -76616,7 +76647,11 @@ var REPLAY_SAFE_TOOLS = /* @__PURE__ */ new Set([
76616
76647
  "taskmarket_docs",
76617
76648
  "skill_read"
76618
76649
  ]);
76619
- var NEVER_REPLAY_TOOLS = /* @__PURE__ */ new Set(["x402_purchase"]);
76650
+ var NEVER_REPLAY_TOOLS = /* @__PURE__ */ new Set([
76651
+ "x402_purchase",
76652
+ "taskmarket_execute",
76653
+ "web_search"
76654
+ ]);
76620
76655
  function toolReplayPolicy(name) {
76621
76656
  return REPLAY_SAFE_TOOLS.has(name) && !NEVER_REPLAY_TOOLS.has(name) ? "safe" : "unsafe";
76622
76657
  }
@@ -3,14 +3,14 @@ import {
3
3
  channelView,
4
4
  openAgentChannels,
5
5
  selectChannel
6
- } from "./chunk-DT7AD52I.js";
6
+ } from "./chunk-XBTNZTXE.js";
7
7
  import {
8
8
  BASE_CHANNEL_RAIL_ID,
9
9
  X402_INVOCATION_ID_PATTERN,
10
10
  getX402JournalPath,
11
11
  listX402Payments
12
- } from "./chunk-3YYDUJV4.js";
13
- import "./chunk-DZMMROHT.js";
12
+ } from "./chunk-6KBTN3WM.js";
13
+ import "./chunk-L3A7JOO5.js";
14
14
  import {
15
15
  AGENT_VIEW_VERSION,
16
16
  LOST_RESPONSE_TEXT,
@@ -7,13 +7,13 @@ import {
7
7
  statusLines,
8
8
  syncLines,
9
9
  taskLines
10
- } from "./chunk-2BYIKWV5.js";
11
- import "./chunk-E7Y4UDXH.js";
12
- import "./chunk-VKQBB6CG.js";
13
- import "./chunk-I6DSFR3I.js";
14
- import "./chunk-DT7AD52I.js";
15
- import "./chunk-3YYDUJV4.js";
16
- import "./chunk-DZMMROHT.js";
10
+ } from "./chunk-4E76UNBE.js";
11
+ import "./chunk-CGUYPUG3.js";
12
+ import "./chunk-RFRSTYDB.js";
13
+ import "./chunk-73SUBS7U.js";
14
+ import "./chunk-XBTNZTXE.js";
15
+ import "./chunk-6KBTN3WM.js";
16
+ import "./chunk-L3A7JOO5.js";
17
17
  import "./chunk-XJOB4NMV.js";
18
18
  import "./chunk-YM4S6IE4.js";
19
19
  import "./chunk-S7SJMJ2I.js";
@@ -11,7 +11,7 @@ import {
11
11
  savedWorkspace,
12
12
  summarize,
13
13
  unsavedPaths
14
- } from "./chunk-IPJKSTNW.js";
14
+ } from "./chunk-ULPTFH3G.js";
15
15
  import {
16
16
  BrokerConnector,
17
17
  SandboxUnavailableError,
@@ -27,11 +27,11 @@ import {
27
27
  releaseClaim,
28
28
  unresolvedCount,
29
29
  updateSyncState
30
- } from "./chunk-VKQBB6CG.js";
30
+ } from "./chunk-RFRSTYDB.js";
31
31
  import {
32
32
  apiUrl,
33
33
  loadKeystore
34
- } from "./chunk-DZMMROHT.js";
34
+ } from "./chunk-L3A7JOO5.js";
35
35
  import {
36
36
  AgentLaunchError
37
37
  } from "./chunk-YM4S6IE4.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lucid-agents/taskmarket",
3
- "version": "1.24.1",
3
+ "version": "1.25.1",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "taskmarket": "./dist/index.js"
@@ -31,10 +31,10 @@
31
31
  "@taskmarket/agent-host": "0.0.1",
32
32
  "@taskmarket/eslint-config": "0.0.0",
33
33
  "@taskmarket/prettier-config": "0.0.0",
34
- "@taskmarket/shared": "2.0.0",
35
- "@taskmarket/x402-payer": "0.1.0",
36
34
  "@taskmarket/contracts": "0.0.0",
37
- "@taskmarket/remote-tools": "0.0.1"
35
+ "@taskmarket/remote-tools": "0.0.1",
36
+ "@taskmarket/x402-payer": "0.1.0",
37
+ "@taskmarket/shared": "2.0.0"
38
38
  },
39
39
  "files": [
40
40
  "dist",