@vapi-network/core 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/README.md +14 -1
  2. package/dist/agent-link.d.ts.map +1 -1
  3. package/dist/agent-link.js +6 -1
  4. package/dist/agent-link.js.map +1 -1
  5. package/dist/agent-profile.d.ts +4 -0
  6. package/dist/agent-profile.d.ts.map +1 -1
  7. package/dist/api-key.js +47 -0
  8. package/dist/api-key.js.map +1 -1
  9. package/dist/backup.d.ts +2 -0
  10. package/dist/backup.d.ts.map +1 -1
  11. package/dist/backup.js +65 -0
  12. package/dist/backup.js.map +1 -1
  13. package/dist/cloud-backup.js +71 -1
  14. package/dist/cloud-backup.js.map +1 -1
  15. package/dist/config.d.ts +9 -0
  16. package/dist/config.d.ts.map +1 -1
  17. package/dist/docs.d.ts +40 -0
  18. package/dist/docs.d.ts.map +1 -0
  19. package/dist/funding-policy.d.ts +29 -0
  20. package/dist/funding-policy.d.ts.map +1 -0
  21. package/dist/index.d.ts +4 -0
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +718 -35
  24. package/dist/index.js.map +3 -3
  25. package/dist/router-client.js +230 -33
  26. package/dist/router-client.js.map +2 -2
  27. package/dist/secrets.js +29 -1
  28. package/dist/secrets.js.map +1 -1
  29. package/dist/spend-policy.d.ts +41 -7
  30. package/dist/spend-policy.d.ts.map +1 -1
  31. package/dist/support-report.d.ts +1 -1
  32. package/dist/tasks/actions.d.ts +152 -0
  33. package/dist/tasks/actions.d.ts.map +1 -0
  34. package/dist/tasks/canonical-json.d.ts +6 -0
  35. package/dist/tasks/canonical-json.d.ts.map +1 -0
  36. package/dist/tasks/chain-error.d.ts +6 -0
  37. package/dist/tasks/chain-error.d.ts.map +1 -0
  38. package/dist/tasks/chain-port.d.ts +88 -0
  39. package/dist/tasks/chain-port.d.ts.map +1 -0
  40. package/dist/tasks/chain-verification.d.ts +36 -0
  41. package/dist/tasks/chain-verification.d.ts.map +1 -0
  42. package/dist/tasks/chain.d.ts +22 -0
  43. package/dist/tasks/chain.d.ts.map +1 -0
  44. package/dist/tasks/client.d.ts +76 -0
  45. package/dist/tasks/client.d.ts.map +1 -0
  46. package/dist/tasks/delivery-manifest.d.ts +24 -0
  47. package/dist/tasks/delivery-manifest.d.ts.map +1 -0
  48. package/dist/tasks/dispute-fee.d.ts +4 -0
  49. package/dist/tasks/dispute-fee.d.ts.map +1 -0
  50. package/dist/tasks/index.d.ts +22 -0
  51. package/dist/tasks/index.d.ts.map +1 -0
  52. package/dist/tasks/money.d.ts +17 -0
  53. package/dist/tasks/money.d.ts.map +1 -0
  54. package/dist/tasks/operation-support.d.ts +127 -0
  55. package/dist/tasks/operation-support.d.ts.map +1 -0
  56. package/dist/tasks/operations.d.ts +722 -0
  57. package/dist/tasks/operations.d.ts.map +1 -0
  58. package/dist/tasks/pending-transactions.d.ts +52 -0
  59. package/dist/tasks/pending-transactions.d.ts.map +1 -0
  60. package/dist/tasks/plan-guard.d.ts +326 -0
  61. package/dist/tasks/plan-guard.d.ts.map +1 -0
  62. package/dist/tasks/rpc.d.ts +8 -0
  63. package/dist/tasks/rpc.d.ts.map +1 -0
  64. package/dist/tasks/scope-bindings.d.ts +20 -0
  65. package/dist/tasks/scope-bindings.d.ts.map +1 -0
  66. package/dist/tasks/scope-terms.d.ts +75 -0
  67. package/dist/tasks/scope-terms.d.ts.map +1 -0
  68. package/dist/tasks/trusted-deployments.d.ts +14 -0
  69. package/dist/tasks/trusted-deployments.d.ts.map +1 -0
  70. package/dist/tasks/types.d.ts +4439 -0
  71. package/dist/tasks/types.d.ts.map +1 -0
  72. package/dist/tasks/verbs.d.ts +4 -0
  73. package/dist/tasks/verbs.d.ts.map +1 -0
  74. package/dist/tasks.js +43906 -0
  75. package/dist/tasks.js.map +6 -0
  76. package/dist/transfer.d.ts.map +1 -1
  77. package/package.json +5 -1
@@ -46109,6 +46109,8 @@ var DEFAULT_SPEND_CAPS = {
46109
46109
  perCallAtomic: "100000",
46110
46110
  perDayAtomic: "1000000"
46111
46111
  };
46112
+ var DEFAULT_MAX_PER_TASK_USD = 100;
46113
+ var DEFAULT_AUTO_RELEASE_BELOW_USD = 25;
46112
46114
  var DEFAULT_CEILING_ATOMIC = 5000000n;
46113
46115
  var atomicString = external_exports.string().regex(/^\d+$/, "Expected non-negative atomic units.");
46114
46116
  var spendCapsSchema = external_exports.object({
@@ -46125,6 +46127,14 @@ var configSchema = external_exports.object({
46125
46127
  })
46126
46128
  ).optional(),
46127
46129
  allowPrivateNetwork: external_exports.boolean().default(false).optional(),
46130
+ tasksEscrowDurationOverrides: external_exports.record(
46131
+ external_exports.string().regex(/^\d+$/),
46132
+ external_exports.object({
46133
+ workDurationSeconds: external_exports.number().int().positive().max(Number.MAX_SAFE_INTEGER).optional(),
46134
+ reviewWindowSeconds: external_exports.number().int().positive().max(Number.MAX_SAFE_INTEGER).optional()
46135
+ }).strict()
46136
+ ).optional(),
46137
+ tasksEscrowFactoryOverrides: external_exports.record(external_exports.string().regex(/^\d+$/), external_exports.string()).optional(),
46128
46138
  networks: external_exports.record(
46129
46139
  external_exports.string().refine((network) => isSupportedPaymentNetwork(network), {
46130
46140
  message: "Expected a supported eip155:<chainId> or Solana network identifier."
@@ -46143,6 +46153,17 @@ var configSchema = external_exports.object({
46143
46153
  spendCaps: spendCapsSchema,
46144
46154
  device: external_exports.string().regex(/^[a-z0-9][a-z0-9-]{0,31}$/).optional()
46145
46155
  }).superRefine((config2, context) => {
46156
+ for (const [chainId, factory] of Object.entries(config2.tasksEscrowFactoryOverrides ?? {})) {
46157
+ try {
46158
+ getAddress(factory);
46159
+ } catch {
46160
+ context.addIssue({
46161
+ code: "custom",
46162
+ path: ["tasksEscrowFactoryOverrides", chainId],
46163
+ message: "Expected a valid EVM escrow factory address."
46164
+ });
46165
+ }
46166
+ }
46146
46167
  for (const [network, configured] of Object.entries(config2.networks)) {
46147
46168
  if (isSolanaNetwork(network)) {
46148
46169
  if (configured.usdc !== NETWORKS[SOLANA_MAINNET_CAIP2].usdc) {
@@ -46288,6 +46309,7 @@ function getDefaultConfig(source = process.env, options = {}) {
46288
46309
  const registry2 = registryEndpoints(source.VAPI_REGISTRY_URL?.trim() || DEFAULT_REGISTRY_URL);
46289
46310
  const requested = new Set(options.networks ?? ["base"]);
46290
46311
  const networks = {};
46312
+ const tasksEscrowFactoryOverrides = tasksFactoryOverridesFromEnv(source);
46291
46313
  if (requested.has("base") || requested.has(BASE_MAINNET_CAIP2)) {
46292
46314
  networks[BASE_MAINNET_CAIP2] = {
46293
46315
  rpcUrl: source.BASE_RPC_URL?.trim() || NETWORKS[BASE_MAINNET_CAIP2].publicRpcUrl,
@@ -46325,6 +46347,8 @@ function getDefaultConfig(source = process.env, options = {}) {
46325
46347
  marketplaceDiscoveryUrl: source.VAPI_MARKETPLACE_DISCOVERY_URL?.trim() || registry2.marketplaceDiscoveryUrl,
46326
46348
  registryFallbacks: DEFAULT_REGISTRY_FALLBACKS.map((fallback) => ({ ...fallback })),
46327
46349
  allowPrivateNetwork: false,
46350
+ tasksEscrowFactoryOverrides,
46351
+ tasksEscrowDurationOverrides: tasksDurationOverridesFromEnv(source),
46328
46352
  networks,
46329
46353
  spendCaps: { ...DEFAULT_SPEND_CAPS }
46330
46354
  };
@@ -46342,8 +46366,10 @@ async function loadConfig(path = getVapiPaths().config, source = process.env, op
46342
46366
  }
46343
46367
  const parsed = configSchema.parse(JSON.parse(raw));
46344
46368
  parsed.registryFallbacks ??= DEFAULT_REGISTRY_FALLBACKS.map((fallback) => ({ ...fallback }));
46369
+ parsed.tasksEscrowFactoryOverrides ??= {};
46345
46370
  const migrated = rewriteLegacyRegistryUrls(parsed);
46346
46371
  const config2 = migrated.config;
46372
+ config2.tasksEscrowFactoryOverrides ??= {};
46347
46373
  if (migrated.changes.length > 0 && options.notice) {
46348
46374
  options.notice(
46349
46375
  `${formatLegacyRegistryRewrites(migrated.changes)}
@@ -46357,6 +46383,14 @@ Run vapi init to write the new URLs to ${path}.`
46357
46383
  const discoveryUrl = source.VAPI_DISCOVERY_URL?.trim();
46358
46384
  const marketplaceDiscoveryUrl = source.VAPI_MARKETPLACE_DISCOVERY_URL?.trim();
46359
46385
  const registryUrl = source.VAPI_REGISTRY_URL?.trim();
46386
+ Object.assign(config2.tasksEscrowFactoryOverrides, tasksFactoryOverridesFromEnv(source));
46387
+ config2.tasksEscrowDurationOverrides ??= {};
46388
+ for (const [chainId, overrides] of Object.entries(tasksDurationOverridesFromEnv(source))) {
46389
+ config2.tasksEscrowDurationOverrides[chainId] = {
46390
+ ...config2.tasksEscrowDurationOverrides[chainId],
46391
+ ...overrides
46392
+ };
46393
+ }
46360
46394
  if (config2.networks[BASE_MAINNET_CAIP2] && baseRpcUrl) {
46361
46395
  config2.networks[BASE_MAINNET_CAIP2].rpcUrl = baseRpcUrl;
46362
46396
  }
@@ -46397,6 +46431,31 @@ Run vapi init to write the new URLs to ${path}.`
46397
46431
  }
46398
46432
  return config2;
46399
46433
  }
46434
+ function tasksDurationOverridesFromEnv(source) {
46435
+ const result = {};
46436
+ for (const [name, raw] of Object.entries(source)) {
46437
+ const match = /^VAPI_TASKS_(WORK_DURATION|REVIEW_WINDOW)_SECONDS_(\d+)$/.exec(name);
46438
+ const value = raw?.trim();
46439
+ if (!match || !value) continue;
46440
+ const seconds = Number(value);
46441
+ if (!/^\d+$/.test(value) || !Number.isSafeInteger(seconds) || seconds <= 0)
46442
+ throw new Error(`Invalid trusted Tasks duration ${name}.`);
46443
+ const entry = result[match[2]] ??= {};
46444
+ if (match[1] === "WORK_DURATION") entry.workDurationSeconds = seconds;
46445
+ else entry.reviewWindowSeconds = seconds;
46446
+ }
46447
+ return result;
46448
+ }
46449
+ function tasksFactoryOverridesFromEnv(source) {
46450
+ const overrides = {};
46451
+ for (const [name, raw] of Object.entries(source)) {
46452
+ const match = /^VAPI_TASKS_ESCROW_FACTORY_(\d+)$/.exec(name);
46453
+ const value = raw?.trim();
46454
+ if (!match || !value) continue;
46455
+ overrides[match[1]] = getAddress(value);
46456
+ }
46457
+ return overrides;
46458
+ }
46400
46459
  function registryEndpoints(baseUrl) {
46401
46460
  const base = new URL(baseUrl);
46402
46461
  base.search = "";
@@ -46443,6 +46502,8 @@ var agentProfileShape = {
46443
46502
  instructions: external_exports.string().max(2e4),
46444
46503
  verifiedOnly: external_exports.boolean().default(true),
46445
46504
  approveAboveUsd: external_exports.number().min(0).default(0.5),
46505
+ maxPerTaskUsd: external_exports.number().min(0).default(DEFAULT_MAX_PER_TASK_USD),
46506
+ autoReleaseBelowUsd: external_exports.number().min(0).default(DEFAULT_AUTO_RELEASE_BELOW_USD),
46446
46507
  maxSteps: external_exports.number().int().min(1).max(50).default(12),
46447
46508
  paused: external_exports.boolean().default(false),
46448
46509
  grants: external_exports.array(external_exports.enum(AGENT_GRANTS)).default([]),
@@ -46917,7 +46978,12 @@ var AgentLinkError = class extends Error {
46917
46978
  code;
46918
46979
  };
46919
46980
  var DEFAULT_AGENT_SCOPES = ["mcp:call", "router.use"];
46920
- var ALLOWED_AGENT_SCOPES = /* @__PURE__ */ new Set([...DEFAULT_AGENT_SCOPES, "call.publish"]);
46981
+ var ALLOWED_AGENT_SCOPES = /* @__PURE__ */ new Set([
46982
+ ...DEFAULT_AGENT_SCOPES,
46983
+ "call.publish",
46984
+ "tasks:read",
46985
+ "tasks:write"
46986
+ ]);
46921
46987
  var publicFetch = createPublicFetch({ allowPrivateNetwork: false });
46922
46988
  var agentSecretAccounts = (wallet) => ({
46923
46989
  tokens: `vapi.agent.${wallet}.tokens`,
@@ -48569,6 +48635,8 @@ var backupAgentProfileSchema = external_exports.strictObject({
48569
48635
  instructions: external_exports.string().max(2e4),
48570
48636
  verifiedOnly: external_exports.boolean(),
48571
48637
  approveAboveUsd: external_exports.number().min(0),
48638
+ maxPerTaskUsd: external_exports.number().min(0).optional(),
48639
+ autoReleaseBelowUsd: external_exports.number().min(0).optional(),
48572
48640
  maxSteps: external_exports.number().int().min(1).max(50),
48573
48641
  paused: external_exports.boolean(),
48574
48642
  createdAt: external_exports.string(),
@@ -49995,6 +50063,8 @@ function copyAgentProfile(profile) {
49995
50063
  instructions: profile.instructions,
49996
50064
  verifiedOnly: profile.verifiedOnly,
49997
50065
  approveAboveUsd: profile.approveAboveUsd,
50066
+ ...profile.maxPerTaskUsd === void 0 ? {} : { maxPerTaskUsd: profile.maxPerTaskUsd },
50067
+ ...profile.autoReleaseBelowUsd === void 0 ? {} : { autoReleaseBelowUsd: profile.autoReleaseBelowUsd },
49998
50068
  maxSteps: profile.maxSteps,
49999
50069
  paused: profile.paused,
50000
50070
  createdAt: profile.createdAt,