@strimz/shared-types 0.9.0 → 0.10.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 (87) hide show
  1. package/dist/agents.cjs +42 -13
  2. package/dist/agents.cjs.map +1 -1
  3. package/dist/agents.d.cts +37 -37
  4. package/dist/agents.d.ts +37 -37
  5. package/dist/agents.js +42 -13
  6. package/dist/agents.js.map +1 -1
  7. package/dist/analytics.cjs +1 -1
  8. package/dist/analytics.cjs.map +1 -1
  9. package/dist/analytics.d.cts +78 -78
  10. package/dist/analytics.d.ts +78 -78
  11. package/dist/analytics.js +1 -1
  12. package/dist/analytics.js.map +1 -1
  13. package/dist/api-keys.cjs +1 -1
  14. package/dist/api-keys.cjs.map +1 -1
  15. package/dist/api-keys.js +1 -1
  16. package/dist/api-keys.js.map +1 -1
  17. package/dist/common.cjs +1 -1
  18. package/dist/common.cjs.map +1 -1
  19. package/dist/common.d.cts +1 -1
  20. package/dist/common.d.ts +1 -1
  21. package/dist/common.js +1 -1
  22. package/dist/common.js.map +1 -1
  23. package/dist/compliance.cjs +1 -1
  24. package/dist/compliance.cjs.map +1 -1
  25. package/dist/compliance.js +1 -1
  26. package/dist/compliance.js.map +1 -1
  27. package/dist/customers.cjs +1 -1
  28. package/dist/customers.cjs.map +1 -1
  29. package/dist/customers.js +1 -1
  30. package/dist/customers.js.map +1 -1
  31. package/dist/events.cjs +43 -14
  32. package/dist/events.cjs.map +1 -1
  33. package/dist/events.d.cts +90 -90
  34. package/dist/events.d.ts +90 -90
  35. package/dist/events.js +43 -14
  36. package/dist/events.js.map +1 -1
  37. package/dist/index.cjs +42 -13
  38. package/dist/index.cjs.map +1 -1
  39. package/dist/index.js +42 -13
  40. package/dist/index.js.map +1 -1
  41. package/dist/invoices.cjs +1 -1
  42. package/dist/invoices.cjs.map +1 -1
  43. package/dist/invoices.d.cts +5 -5
  44. package/dist/invoices.d.ts +5 -5
  45. package/dist/invoices.js +1 -1
  46. package/dist/invoices.js.map +1 -1
  47. package/dist/merchants.cjs +1 -1
  48. package/dist/merchants.cjs.map +1 -1
  49. package/dist/merchants.js +1 -1
  50. package/dist/merchants.js.map +1 -1
  51. package/dist/payment-sessions.cjs +1 -1
  52. package/dist/payment-sessions.cjs.map +1 -1
  53. package/dist/payment-sessions.d.cts +4 -4
  54. package/dist/payment-sessions.d.ts +4 -4
  55. package/dist/payment-sessions.js +1 -1
  56. package/dist/payment-sessions.js.map +1 -1
  57. package/dist/refunds.cjs +1 -1
  58. package/dist/refunds.cjs.map +1 -1
  59. package/dist/refunds.d.cts +5 -5
  60. package/dist/refunds.d.ts +5 -5
  61. package/dist/refunds.js +1 -1
  62. package/dist/refunds.js.map +1 -1
  63. package/dist/storefronts.cjs +1 -1
  64. package/dist/storefronts.cjs.map +1 -1
  65. package/dist/storefronts.d.cts +2 -2
  66. package/dist/storefronts.d.ts +2 -2
  67. package/dist/storefronts.js +1 -1
  68. package/dist/storefronts.js.map +1 -1
  69. package/dist/subscriptions.cjs +1 -1
  70. package/dist/subscriptions.cjs.map +1 -1
  71. package/dist/subscriptions.d.cts +4 -4
  72. package/dist/subscriptions.d.ts +4 -4
  73. package/dist/subscriptions.js +1 -1
  74. package/dist/subscriptions.js.map +1 -1
  75. package/dist/transactions.cjs +1 -1
  76. package/dist/transactions.cjs.map +1 -1
  77. package/dist/transactions.d.cts +3 -3
  78. package/dist/transactions.d.ts +3 -3
  79. package/dist/transactions.js +1 -1
  80. package/dist/transactions.js.map +1 -1
  81. package/dist/webhooks.cjs +1 -1
  82. package/dist/webhooks.cjs.map +1 -1
  83. package/dist/webhooks.js +1 -1
  84. package/dist/webhooks.js.map +1 -1
  85. package/package.json +1 -1
  86. package/src/agents.ts +49 -14
  87. package/src/common.ts +0 -1
package/dist/agents.cjs CHANGED
@@ -11,7 +11,7 @@ zod.z.string().url().refine((v) => v.startsWith("https://"), {
11
11
  message: "must be an https:// URL"
12
12
  });
13
13
  zod.z.string().url();
14
- var tokenAmountSchema = zod.z.string().regex(/^[0-9]+$/, "must be a non-negative integer string (base-10)").refine((v) => BigInt(v) >= 0n, "must be >= 0");
14
+ var tokenAmountSchema = zod.z.string().regex(/^[0-9]+$/, "must be a non-negative integer string (base-10)");
15
15
  zod.z.number().int().min(0).max(Number.MAX_SAFE_INTEGER);
16
16
  var isoTimestampSchema = zod.z.string().datetime({ offset: true, message: "must be an ISO-8601 timestamp" });
17
17
  zod.z.string().length(2).regex(/^[A-Z]{2}$/, "must be an ISO-3166 alpha-2 country code");
@@ -49,28 +49,57 @@ var agentCapabilitySchema = zod.z.enum([
49
49
  "commerce",
50
50
  "pricing_intelligence"
51
51
  ]);
52
+ var enabledCapabilitiesSchema = zod.z.array(agentCapabilitySchema);
53
+ var recoveryGracePeriodHoursSchema = zod.z.union([zod.z.literal(24), zod.z.literal(48), zod.z.literal(72)]);
54
+ var recoveryStrategySchema = zod.z.enum(["once", "twice", "until_grace_ends"]);
55
+ var recoveryNotificationTemplateSchema = zod.z.string().max(2e3).nullable();
56
+ var cashflowDigestEnabledSchema = zod.z.boolean();
57
+ var cashflowAnomalySensitivitySchema = zod.z.enum(["low", "medium", "high"]);
58
+ var cashflowAutoConvertToYieldSchema = zod.z.boolean();
59
+ var cashflowMinimumLiquidReserveCentsSchema = zod.z.number().int().nonnegative();
60
+ var commerceRequireHumanApprovalAboveUsdCentsSchema = zod.z.number().int().nonnegative();
61
+ var commerceApprovedVendorsSchema = zod.z.array(evmAddressSchema);
62
+ var commerceMonthlySpendCapUsdCentsSchema = zod.z.number().int().nonnegative().nullable();
52
63
  var agentMerchantConfigSchema = zod.z.object({
53
64
  merchantId: idSchema,
54
- enabledCapabilities: zod.z.array(agentCapabilitySchema).default([]),
65
+ enabledCapabilities: enabledCapabilitiesSchema.default([]),
55
66
  recovery: zod.z.object({
56
- gracePeriodHours: zod.z.union([zod.z.literal(24), zod.z.literal(48), zod.z.literal(72)]).default(48),
57
- strategy: zod.z.enum(["once", "twice", "until_grace_ends"]).default("twice"),
58
- notificationTemplate: zod.z.string().max(2e3).nullable()
67
+ gracePeriodHours: recoveryGracePeriodHoursSchema.default(48),
68
+ strategy: recoveryStrategySchema.default("twice"),
69
+ notificationTemplate: recoveryNotificationTemplateSchema
59
70
  }),
60
71
  cashflow: zod.z.object({
61
- digestEnabled: zod.z.boolean().default(false),
62
- anomalySensitivity: zod.z.enum(["low", "medium", "high"]).default("medium"),
63
- autoConvertToYield: zod.z.boolean().default(false),
64
- minimumLiquidReserveCents: zod.z.number().int().nonnegative().default(1e5)
72
+ digestEnabled: cashflowDigestEnabledSchema.default(false),
73
+ anomalySensitivity: cashflowAnomalySensitivitySchema.default("medium"),
74
+ autoConvertToYield: cashflowAutoConvertToYieldSchema.default(false),
75
+ minimumLiquidReserveCents: cashflowMinimumLiquidReserveCentsSchema.default(1e5)
65
76
  }),
66
77
  commerce: zod.z.object({
67
- requireHumanApprovalAboveUsdCents: zod.z.number().int().nonnegative().default(1e5),
68
- approvedVendors: zod.z.array(evmAddressSchema).default([]),
69
- monthlySpendCapUsdCents: zod.z.number().int().nonnegative().nullable()
78
+ requireHumanApprovalAboveUsdCents: commerceRequireHumanApprovalAboveUsdCentsSchema.default(1e5),
79
+ approvedVendors: commerceApprovedVendorsSchema.default([]),
80
+ monthlySpendCapUsdCents: commerceMonthlySpendCapUsdCentsSchema
70
81
  }),
71
82
  updatedAt: isoTimestampSchema
72
83
  });
73
- var updateAgentConfigInputSchema = agentMerchantConfigSchema.omit({ merchantId: true, updatedAt: true }).partial();
84
+ var updateAgentConfigInputSchema = zod.z.object({
85
+ enabledCapabilities: enabledCapabilitiesSchema.optional(),
86
+ recovery: zod.z.object({
87
+ gracePeriodHours: recoveryGracePeriodHoursSchema.optional(),
88
+ strategy: recoveryStrategySchema.optional(),
89
+ notificationTemplate: recoveryNotificationTemplateSchema.optional()
90
+ }).optional(),
91
+ cashflow: zod.z.object({
92
+ digestEnabled: cashflowDigestEnabledSchema.optional(),
93
+ anomalySensitivity: cashflowAnomalySensitivitySchema.optional(),
94
+ autoConvertToYield: cashflowAutoConvertToYieldSchema.optional(),
95
+ minimumLiquidReserveCents: cashflowMinimumLiquidReserveCentsSchema.optional()
96
+ }).optional(),
97
+ commerce: zod.z.object({
98
+ requireHumanApprovalAboveUsdCents: commerceRequireHumanApprovalAboveUsdCentsSchema.optional(),
99
+ approvedVendors: commerceApprovedVendorsSchema.optional(),
100
+ monthlySpendCapUsdCents: commerceMonthlySpendCapUsdCentsSchema.optional()
101
+ }).optional()
102
+ });
74
103
  var agentActionTypeSchema = zod.z.enum([
75
104
  "recovery_notification_sent",
76
105
  "recovery_retry_scheduled",
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common.ts","../src/agents.ts"],"names":["z"],"mappings":"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","file":"agents.cjs","sourcesContent":["/**\n * Primitive schemas shared across every entity.\n * Every higher-level schema builds on these so validation is consistent.\n */\n\nimport { z } from 'zod'\n\n/** CUID2 or UUID-style opaque identifier. */\nexport const idSchema = z\n .string()\n .min(1)\n .max(64)\n .regex(/^[a-zA-Z0-9_-]+$/, 'id must be URL-safe')\n\n/** EVM address. Hex-encoded, 0x-prefixed, 20 bytes. Normalised to lowercase. */\nexport const evmAddressSchema = z\n .string()\n .regex(/^0x[a-fA-F0-9]{40}$/, 'must be a 0x-prefixed 40-character hex EVM address')\n .transform((v) => v.toLowerCase())\n\n/** EVM transaction hash. 32-byte hex. */\nexport const evmTxHashSchema = z\n .string()\n .regex(/^0x[a-fA-F0-9]{64}$/, 'must be a 0x-prefixed 64-character hex EVM transaction hash')\n\n/** Email address, trimmed and lower-cased. */\nexport const emailSchema = z.string().email().trim().toLowerCase().max(320)\n\n/** HTTPS URL. No http:// allowed outside dev. */\nexport const httpsUrlSchema = z\n .string()\n .url()\n .refine((v) => v.startsWith('https://'), {\n message: 'must be an https:// URL',\n })\n\n/** URL permitting http and https (dev + prod). */\nexport const httpUrlSchema = z.string().url()\n\n/**\n * Amount expressed in the token's smallest unit, serialised as a string to\n * preserve precision beyond `Number.MAX_SAFE_INTEGER`. For USDC (6 decimals),\n * 1 USDC is the string \"1000000\".\n */\nexport const tokenAmountSchema = z\n .string()\n .regex(/^[0-9]+$/, 'must be a non-negative integer string (base-10)')\n .refine((v) => BigInt(v) >= 0n, 'must be >= 0')\n\n/** Unsigned integer up to 2^53 - 1; validated and returned as number. */\nexport const uintSchema = z.number().int().min(0).max(Number.MAX_SAFE_INTEGER)\n\n/** ISO-8601 timestamp string (`.toISOString()`-compatible). */\nexport const isoTimestampSchema = z\n .string()\n .datetime({ offset: true, message: 'must be an ISO-8601 timestamp' })\n\n/** Two-letter ISO-3166 country code. */\nexport const countryCodeSchema = z\n .string()\n .length(2)\n .regex(/^[A-Z]{2}$/, 'must be an ISO-3166 alpha-2 country code')\n\n/** Pagination inputs used by every list endpoint. */\nexport const paginationInputSchema = z.object({\n limit: z.number().int().min(1).max(100).default(25),\n cursor: z.string().min(1).max(200).nullish(),\n})\nexport type PaginationInput = z.input<typeof paginationInputSchema>\nexport type PaginationParsed = z.output<typeof paginationInputSchema>\n\n/** Pagination envelope used by every list response. */\nexport const makePaginatedSchema = <T extends z.ZodTypeAny>(item: T) =>\n z.object({\n data: z.array(item),\n nextCursor: z.string().nullable(),\n hasMore: z.boolean(),\n })\n\n/** Free-form metadata bag the API round-trips for merchants. */\nexport const metadataSchema = z\n .record(\n z.string().min(1).max(40),\n z.union([z.string().max(500), z.number(), z.boolean(), z.null()]),\n )\n .refine((m) => Object.keys(m).length <= 50, 'at most 50 metadata keys')\n .default({})\n\n/** Environment mode carried on every mode-scoped resource. */\nexport const modeSchema = z.enum(['test', 'live'])\nexport type Mode = z.infer<typeof modeSchema>\n\n/** Payment token enum. */\nexport const paymentCurrencySchema = z.enum(['USDC', 'EURC'])\nexport type PaymentCurrency = z.infer<typeof paymentCurrencySchema>\n\n/** Every display-level currency (payment + treasury). */\nexport const tokenSymbolSchema = z.enum(['USDC', 'EURC', 'USYC'])\nexport type TokenSymbol = z.infer<typeof tokenSymbolSchema>\n\n/** Merchant tier enum. */\nexport const merchantTierSchema = z.enum(['free', 'growth', 'business', 'enterprise'])\nexport type MerchantTier = z.infer<typeof merchantTierSchema>\n\n/** Arc environment enum. */\nexport const arcEnvironmentSchema = z.enum(['testnet', 'mainnet'])\nexport type ArcEnvironment = z.infer<typeof arcEnvironmentSchema>\n\nexport type Id = z.infer<typeof idSchema>\nexport type EvmAddress = z.infer<typeof evmAddressSchema>\nexport type EvmTxHash = z.infer<typeof evmTxHashSchema>\nexport type TokenAmount = z.infer<typeof tokenAmountSchema>\nexport type IsoTimestamp = z.infer<typeof isoTimestampSchema>\nexport type Metadata = z.infer<typeof metadataSchema>\n","/**\n * AI AutoPay Agent. Identity, configuration, activity log, and ERC-8183 jobs.\n */\n\nimport { z } from 'zod'\nimport {\n evmAddressSchema,\n evmTxHashSchema,\n idSchema,\n isoTimestampSchema,\n metadataSchema,\n tokenAmountSchema,\n} from './common.js'\n\n// ---------- Identity ----------\n\nexport const agentIdentitySchema = z.object({\n id: idSchema,\n /** ERC-8004 on-chain identity address. */\n onchainAddress: evmAddressSchema,\n /** Public key or agent credential digest, as emitted by ERC-8004. */\n credentialDigest: z.string().regex(/^0x[a-fA-F0-9]+$/),\n name: z.string().min(1).max(120),\n version: z.string().min(1).max(40),\n reputationScore: z.number().min(0).max(100).nullable(),\n registeredAt: isoTimestampSchema,\n})\nexport type AgentIdentity = z.infer<typeof agentIdentitySchema>\n\n// ---------- Merchant config ----------\n\nexport const agentCapabilitySchema = z.enum([\n 'identity',\n 'recovery',\n 'routing',\n 'cashflow',\n 'commerce',\n 'pricing_intelligence',\n])\nexport type AgentCapability = z.infer<typeof agentCapabilitySchema>\n\nexport const agentMerchantConfigSchema = z.object({\n merchantId: idSchema,\n enabledCapabilities: z.array(agentCapabilitySchema).default([]),\n recovery: z.object({\n gracePeriodHours: z.union([z.literal(24), z.literal(48), z.literal(72)]).default(48),\n strategy: z.enum(['once', 'twice', 'until_grace_ends']).default('twice'),\n notificationTemplate: z.string().max(2000).nullable(),\n }),\n cashflow: z.object({\n digestEnabled: z.boolean().default(false),\n anomalySensitivity: z.enum(['low', 'medium', 'high']).default('medium'),\n autoConvertToYield: z.boolean().default(false),\n minimumLiquidReserveCents: z.number().int().nonnegative().default(100_000),\n }),\n commerce: z.object({\n requireHumanApprovalAboveUsdCents: z.number().int().nonnegative().default(100_000),\n approvedVendors: z.array(evmAddressSchema).default([]),\n monthlySpendCapUsdCents: z.number().int().nonnegative().nullable(),\n }),\n updatedAt: isoTimestampSchema,\n})\nexport type AgentMerchantConfig = z.infer<typeof agentMerchantConfigSchema>\n\nexport const updateAgentConfigInputSchema = agentMerchantConfigSchema\n .omit({ merchantId: true, updatedAt: true })\n .partial()\nexport type UpdateAgentConfigInput = z.input<typeof updateAgentConfigInputSchema>\nexport type UpdateAgentConfigParsed = z.output<typeof updateAgentConfigInputSchema>\n\n// ---------- Activity log ----------\n\nexport const agentActionTypeSchema = z.enum([\n 'recovery_notification_sent',\n 'recovery_retry_scheduled',\n 'recovery_retry_executed',\n 'recovery_abandoned',\n 'routing_bridge_initiated',\n 'routing_payment_completed',\n 'cashflow_digest_sent',\n 'cashflow_anomaly_flagged',\n 'cashflow_yield_converted',\n 'commerce_job_created',\n 'commerce_job_approved',\n 'commerce_job_completed',\n 'commerce_job_disputed',\n])\nexport type AgentActionType = z.infer<typeof agentActionTypeSchema>\n\nexport const agentActionOutcomeSchema = z.enum(['success', 'failure', 'pending', 'skipped'])\nexport type AgentActionOutcome = z.infer<typeof agentActionOutcomeSchema>\n\nexport const agentActivityLogSchema = z.object({\n id: idSchema,\n merchantId: idSchema,\n capability: agentCapabilitySchema,\n actionType: agentActionTypeSchema,\n outcome: agentActionOutcomeSchema,\n subscriptionId: idSchema.nullable(),\n transactionId: idSchema.nullable(),\n jobId: idSchema.nullable(),\n metadata: metadataSchema,\n createdAt: isoTimestampSchema,\n})\nexport type AgentActivityLog = z.infer<typeof agentActivityLogSchema>\n\n// ---------- ERC-8183 jobs ----------\n\n// Mirrors the DB `AgentJobStatus` enum, not the contract's JobStatus.\n// `accepted` is off-chain only (merchant approved, queued for on-chain\n// creation); `resolved` and `reclaimed` are the escrow's terminal exits\n// from a dispute and from a timeout reclaim respectively.\nexport const agentJobStatusSchema = z.enum([\n 'proposed',\n 'accepted',\n 'funded',\n 'in_progress',\n 'delivered',\n 'approved',\n 'completed',\n 'disputed',\n 'cancelled',\n 'resolved',\n 'reclaimed',\n])\nexport type AgentJobStatus = z.infer<typeof agentJobStatusSchema>\n\nexport const agentJobSchema = z.object({\n id: idSchema,\n merchantId: idSchema,\n /** On-chain job id from StrimzAgentEscrow. */\n onchainJobId: z.number().int().nonnegative().nullable(),\n vendorAddress: evmAddressSchema,\n description: z.string().min(1).max(2000),\n amount: tokenAmountSchema,\n currency: z.enum(['USDC', 'EURC']),\n status: agentJobStatusSchema,\n assessorAddress: evmAddressSchema,\n deliverableHash: z\n .string()\n .regex(/^0x[a-fA-F0-9]+$/)\n .nullable(),\n escrowTxHash: evmTxHashSchema.nullable(),\n releaseTxHash: evmTxHashSchema.nullable(),\n createdAt: isoTimestampSchema,\n completedAt: isoTimestampSchema.nullable(),\n})\nexport type AgentJob = z.infer<typeof agentJobSchema>\n\nexport const createAgentJobInputSchema = z.object({\n vendorAddress: evmAddressSchema,\n description: z.string().min(1).max(2000),\n amount: tokenAmountSchema,\n currency: z.enum(['USDC', 'EURC']),\n assessorAddress: evmAddressSchema.optional(),\n})\nexport type CreateAgentJobInput = z.input<typeof createAgentJobInputSchema>\nexport type CreateAgentJobParsed = z.output<typeof createAgentJobInputSchema>\n"]}
1
+ {"version":3,"sources":["../src/common.ts","../src/agents.ts"],"names":["z"],"mappings":"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","file":"agents.cjs","sourcesContent":["/**\n * Primitive schemas shared across every entity.\n * Every higher-level schema builds on these so validation is consistent.\n */\n\nimport { z } from 'zod'\n\n/** CUID2 or UUID-style opaque identifier. */\nexport const idSchema = z\n .string()\n .min(1)\n .max(64)\n .regex(/^[a-zA-Z0-9_-]+$/, 'id must be URL-safe')\n\n/** EVM address. Hex-encoded, 0x-prefixed, 20 bytes. Normalised to lowercase. */\nexport const evmAddressSchema = z\n .string()\n .regex(/^0x[a-fA-F0-9]{40}$/, 'must be a 0x-prefixed 40-character hex EVM address')\n .transform((v) => v.toLowerCase())\n\n/** EVM transaction hash. 32-byte hex. */\nexport const evmTxHashSchema = z\n .string()\n .regex(/^0x[a-fA-F0-9]{64}$/, 'must be a 0x-prefixed 64-character hex EVM transaction hash')\n\n/** Email address, trimmed and lower-cased. */\nexport const emailSchema = z.string().email().trim().toLowerCase().max(320)\n\n/** HTTPS URL. No http:// allowed outside dev. */\nexport const httpsUrlSchema = z\n .string()\n .url()\n .refine((v) => v.startsWith('https://'), {\n message: 'must be an https:// URL',\n })\n\n/** URL permitting http and https (dev + prod). */\nexport const httpUrlSchema = z.string().url()\n\n/**\n * Amount expressed in the token's smallest unit, serialised as a string to\n * preserve precision beyond `Number.MAX_SAFE_INTEGER`. For USDC (6 decimals),\n * 1 USDC is the string \"1000000\".\n */\nexport const tokenAmountSchema = z\n .string()\n .regex(/^[0-9]+$/, 'must be a non-negative integer string (base-10)')\n\n/** Unsigned integer up to 2^53 - 1; validated and returned as number. */\nexport const uintSchema = z.number().int().min(0).max(Number.MAX_SAFE_INTEGER)\n\n/** ISO-8601 timestamp string (`.toISOString()`-compatible). */\nexport const isoTimestampSchema = z\n .string()\n .datetime({ offset: true, message: 'must be an ISO-8601 timestamp' })\n\n/** Two-letter ISO-3166 country code. */\nexport const countryCodeSchema = z\n .string()\n .length(2)\n .regex(/^[A-Z]{2}$/, 'must be an ISO-3166 alpha-2 country code')\n\n/** Pagination inputs used by every list endpoint. */\nexport const paginationInputSchema = z.object({\n limit: z.number().int().min(1).max(100).default(25),\n cursor: z.string().min(1).max(200).nullish(),\n})\nexport type PaginationInput = z.input<typeof paginationInputSchema>\nexport type PaginationParsed = z.output<typeof paginationInputSchema>\n\n/** Pagination envelope used by every list response. */\nexport const makePaginatedSchema = <T extends z.ZodTypeAny>(item: T) =>\n z.object({\n data: z.array(item),\n nextCursor: z.string().nullable(),\n hasMore: z.boolean(),\n })\n\n/** Free-form metadata bag the API round-trips for merchants. */\nexport const metadataSchema = z\n .record(\n z.string().min(1).max(40),\n z.union([z.string().max(500), z.number(), z.boolean(), z.null()]),\n )\n .refine((m) => Object.keys(m).length <= 50, 'at most 50 metadata keys')\n .default({})\n\n/** Environment mode carried on every mode-scoped resource. */\nexport const modeSchema = z.enum(['test', 'live'])\nexport type Mode = z.infer<typeof modeSchema>\n\n/** Payment token enum. */\nexport const paymentCurrencySchema = z.enum(['USDC', 'EURC'])\nexport type PaymentCurrency = z.infer<typeof paymentCurrencySchema>\n\n/** Every display-level currency (payment + treasury). */\nexport const tokenSymbolSchema = z.enum(['USDC', 'EURC', 'USYC'])\nexport type TokenSymbol = z.infer<typeof tokenSymbolSchema>\n\n/** Merchant tier enum. */\nexport const merchantTierSchema = z.enum(['free', 'growth', 'business', 'enterprise'])\nexport type MerchantTier = z.infer<typeof merchantTierSchema>\n\n/** Arc environment enum. */\nexport const arcEnvironmentSchema = z.enum(['testnet', 'mainnet'])\nexport type ArcEnvironment = z.infer<typeof arcEnvironmentSchema>\n\nexport type Id = z.infer<typeof idSchema>\nexport type EvmAddress = z.infer<typeof evmAddressSchema>\nexport type EvmTxHash = z.infer<typeof evmTxHashSchema>\nexport type TokenAmount = z.infer<typeof tokenAmountSchema>\nexport type IsoTimestamp = z.infer<typeof isoTimestampSchema>\nexport type Metadata = z.infer<typeof metadataSchema>\n","/**\n * AI AutoPay Agent. Identity, configuration, activity log, and ERC-8183 jobs.\n */\n\nimport { z } from 'zod'\nimport {\n evmAddressSchema,\n evmTxHashSchema,\n idSchema,\n isoTimestampSchema,\n metadataSchema,\n tokenAmountSchema,\n} from './common.js'\n\n// ---------- Identity ----------\n\nexport const agentIdentitySchema = z.object({\n id: idSchema,\n /** ERC-8004 on-chain identity address. */\n onchainAddress: evmAddressSchema,\n /** Public key or agent credential digest, as emitted by ERC-8004. */\n credentialDigest: z.string().regex(/^0x[a-fA-F0-9]+$/),\n name: z.string().min(1).max(120),\n version: z.string().min(1).max(40),\n reputationScore: z.number().min(0).max(100).nullable(),\n registeredAt: isoTimestampSchema,\n})\nexport type AgentIdentity = z.infer<typeof agentIdentitySchema>\n\n// ---------- Merchant config ----------\n\nexport const agentCapabilitySchema = z.enum([\n 'identity',\n 'recovery',\n 'routing',\n 'cashflow',\n 'commerce',\n 'pricing_intelligence',\n])\nexport type AgentCapability = z.infer<typeof agentCapabilitySchema>\n\nconst enabledCapabilitiesSchema = z.array(agentCapabilitySchema)\nconst recoveryGracePeriodHoursSchema = z.union([z.literal(24), z.literal(48), z.literal(72)])\nconst recoveryStrategySchema = z.enum(['once', 'twice', 'until_grace_ends'])\nconst recoveryNotificationTemplateSchema = z.string().max(2000).nullable()\nconst cashflowDigestEnabledSchema = z.boolean()\nconst cashflowAnomalySensitivitySchema = z.enum(['low', 'medium', 'high'])\nconst cashflowAutoConvertToYieldSchema = z.boolean()\nconst cashflowMinimumLiquidReserveCentsSchema = z.number().int().nonnegative()\nconst commerceRequireHumanApprovalAboveUsdCentsSchema = z.number().int().nonnegative()\nconst commerceApprovedVendorsSchema = z.array(evmAddressSchema)\nconst commerceMonthlySpendCapUsdCentsSchema = z.number().int().nonnegative().nullable()\n\nexport const agentMerchantConfigSchema = z.object({\n merchantId: idSchema,\n enabledCapabilities: enabledCapabilitiesSchema.default([]),\n recovery: z.object({\n gracePeriodHours: recoveryGracePeriodHoursSchema.default(48),\n strategy: recoveryStrategySchema.default('twice'),\n notificationTemplate: recoveryNotificationTemplateSchema,\n }),\n cashflow: z.object({\n digestEnabled: cashflowDigestEnabledSchema.default(false),\n anomalySensitivity: cashflowAnomalySensitivitySchema.default('medium'),\n autoConvertToYield: cashflowAutoConvertToYieldSchema.default(false),\n minimumLiquidReserveCents: cashflowMinimumLiquidReserveCentsSchema.default(100_000),\n }),\n commerce: z.object({\n requireHumanApprovalAboveUsdCents:\n commerceRequireHumanApprovalAboveUsdCentsSchema.default(100_000),\n approvedVendors: commerceApprovedVendorsSchema.default([]),\n monthlySpendCapUsdCents: commerceMonthlySpendCapUsdCentsSchema,\n }),\n updatedAt: isoTimestampSchema,\n})\nexport type AgentMerchantConfig = z.infer<typeof agentMerchantConfigSchema>\n\nexport const updateAgentConfigInputSchema = z.object({\n enabledCapabilities: enabledCapabilitiesSchema.optional(),\n recovery: z\n .object({\n gracePeriodHours: recoveryGracePeriodHoursSchema.optional(),\n strategy: recoveryStrategySchema.optional(),\n notificationTemplate: recoveryNotificationTemplateSchema.optional(),\n })\n .optional(),\n cashflow: z\n .object({\n digestEnabled: cashflowDigestEnabledSchema.optional(),\n anomalySensitivity: cashflowAnomalySensitivitySchema.optional(),\n autoConvertToYield: cashflowAutoConvertToYieldSchema.optional(),\n minimumLiquidReserveCents: cashflowMinimumLiquidReserveCentsSchema.optional(),\n })\n .optional(),\n commerce: z\n .object({\n requireHumanApprovalAboveUsdCents: commerceRequireHumanApprovalAboveUsdCentsSchema.optional(),\n approvedVendors: commerceApprovedVendorsSchema.optional(),\n monthlySpendCapUsdCents: commerceMonthlySpendCapUsdCentsSchema.optional(),\n })\n .optional(),\n})\nexport type UpdateAgentConfigInput = z.input<typeof updateAgentConfigInputSchema>\nexport type UpdateAgentConfigParsed = z.output<typeof updateAgentConfigInputSchema>\n\n// ---------- Activity log ----------\n\nexport const agentActionTypeSchema = z.enum([\n 'recovery_notification_sent',\n 'recovery_retry_scheduled',\n 'recovery_retry_executed',\n 'recovery_abandoned',\n 'routing_bridge_initiated',\n 'routing_payment_completed',\n 'cashflow_digest_sent',\n 'cashflow_anomaly_flagged',\n 'cashflow_yield_converted',\n 'commerce_job_created',\n 'commerce_job_approved',\n 'commerce_job_completed',\n 'commerce_job_disputed',\n])\nexport type AgentActionType = z.infer<typeof agentActionTypeSchema>\n\nexport const agentActionOutcomeSchema = z.enum(['success', 'failure', 'pending', 'skipped'])\nexport type AgentActionOutcome = z.infer<typeof agentActionOutcomeSchema>\n\nexport const agentActivityLogSchema = z.object({\n id: idSchema,\n merchantId: idSchema,\n capability: agentCapabilitySchema,\n actionType: agentActionTypeSchema,\n outcome: agentActionOutcomeSchema,\n subscriptionId: idSchema.nullable(),\n transactionId: idSchema.nullable(),\n jobId: idSchema.nullable(),\n metadata: metadataSchema,\n createdAt: isoTimestampSchema,\n})\nexport type AgentActivityLog = z.infer<typeof agentActivityLogSchema>\n\n// ---------- ERC-8183 jobs ----------\n\n// Mirrors the DB `AgentJobStatus` enum, not the contract's JobStatus.\n// `accepted` is off-chain only (merchant approved, queued for on-chain\n// creation); `resolved` and `reclaimed` are the escrow's terminal exits\n// from a dispute and from a timeout reclaim respectively.\nexport const agentJobStatusSchema = z.enum([\n 'proposed',\n 'accepted',\n 'funded',\n 'in_progress',\n 'delivered',\n 'approved',\n 'completed',\n 'disputed',\n 'cancelled',\n 'resolved',\n 'reclaimed',\n])\nexport type AgentJobStatus = z.infer<typeof agentJobStatusSchema>\n\nexport const agentJobSchema = z.object({\n id: idSchema,\n merchantId: idSchema,\n /** On-chain job id from StrimzAgentEscrow. */\n onchainJobId: z.number().int().nonnegative().nullable(),\n vendorAddress: evmAddressSchema,\n description: z.string().min(1).max(2000),\n amount: tokenAmountSchema,\n currency: z.enum(['USDC', 'EURC']),\n status: agentJobStatusSchema,\n assessorAddress: evmAddressSchema,\n deliverableHash: z\n .string()\n .regex(/^0x[a-fA-F0-9]+$/)\n .nullable(),\n escrowTxHash: evmTxHashSchema.nullable(),\n releaseTxHash: evmTxHashSchema.nullable(),\n createdAt: isoTimestampSchema,\n completedAt: isoTimestampSchema.nullable(),\n})\nexport type AgentJob = z.infer<typeof agentJobSchema>\n\nexport const createAgentJobInputSchema = z.object({\n vendorAddress: evmAddressSchema,\n description: z.string().min(1).max(2000),\n amount: tokenAmountSchema,\n currency: z.enum(['USDC', 'EURC']),\n assessorAddress: evmAddressSchema.optional(),\n})\nexport type CreateAgentJobInput = z.input<typeof createAgentJobInputSchema>\nexport type CreateAgentJobParsed = z.output<typeof createAgentJobInputSchema>\n"]}
package/dist/agents.d.cts CHANGED
@@ -123,29 +123,30 @@ declare const agentMerchantConfigSchema: z.ZodObject<{
123
123
  }>;
124
124
  type AgentMerchantConfig = z.infer<typeof agentMerchantConfigSchema>;
125
125
  declare const updateAgentConfigInputSchema: z.ZodObject<{
126
+ enabledCapabilities: z.ZodOptional<z.ZodArray<z.ZodEnum<["identity", "recovery", "routing", "cashflow", "commerce", "pricing_intelligence"]>, "many">>;
126
127
  recovery: z.ZodOptional<z.ZodObject<{
127
- gracePeriodHours: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<24>, z.ZodLiteral<48>, z.ZodLiteral<72>]>>;
128
- strategy: z.ZodDefault<z.ZodEnum<["once", "twice", "until_grace_ends"]>>;
129
- notificationTemplate: z.ZodNullable<z.ZodString>;
128
+ gracePeriodHours: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<24>, z.ZodLiteral<48>, z.ZodLiteral<72>]>>;
129
+ strategy: z.ZodOptional<z.ZodEnum<["once", "twice", "until_grace_ends"]>>;
130
+ notificationTemplate: z.ZodOptional<z.ZodNullable<z.ZodString>>;
130
131
  }, "strip", z.ZodTypeAny, {
131
- gracePeriodHours: 24 | 48 | 72;
132
- strategy: "once" | "twice" | "until_grace_ends";
133
- notificationTemplate: string | null;
132
+ gracePeriodHours?: 24 | 48 | 72 | undefined;
133
+ strategy?: "once" | "twice" | "until_grace_ends" | undefined;
134
+ notificationTemplate?: string | null | undefined;
134
135
  }, {
135
- notificationTemplate: string | null;
136
136
  gracePeriodHours?: 24 | 48 | 72 | undefined;
137
137
  strategy?: "once" | "twice" | "until_grace_ends" | undefined;
138
+ notificationTemplate?: string | null | undefined;
138
139
  }>>;
139
140
  cashflow: z.ZodOptional<z.ZodObject<{
140
- digestEnabled: z.ZodDefault<z.ZodBoolean>;
141
- anomalySensitivity: z.ZodDefault<z.ZodEnum<["low", "medium", "high"]>>;
142
- autoConvertToYield: z.ZodDefault<z.ZodBoolean>;
143
- minimumLiquidReserveCents: z.ZodDefault<z.ZodNumber>;
141
+ digestEnabled: z.ZodOptional<z.ZodBoolean>;
142
+ anomalySensitivity: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>;
143
+ autoConvertToYield: z.ZodOptional<z.ZodBoolean>;
144
+ minimumLiquidReserveCents: z.ZodOptional<z.ZodNumber>;
144
145
  }, "strip", z.ZodTypeAny, {
145
- digestEnabled: boolean;
146
- anomalySensitivity: "low" | "medium" | "high";
147
- autoConvertToYield: boolean;
148
- minimumLiquidReserveCents: number;
146
+ digestEnabled?: boolean | undefined;
147
+ anomalySensitivity?: "low" | "medium" | "high" | undefined;
148
+ autoConvertToYield?: boolean | undefined;
149
+ minimumLiquidReserveCents?: number | undefined;
149
150
  }, {
150
151
  digestEnabled?: boolean | undefined;
151
152
  anomalySensitivity?: "low" | "medium" | "high" | undefined;
@@ -153,42 +154,41 @@ declare const updateAgentConfigInputSchema: z.ZodObject<{
153
154
  minimumLiquidReserveCents?: number | undefined;
154
155
  }>>;
155
156
  commerce: z.ZodOptional<z.ZodObject<{
156
- requireHumanApprovalAboveUsdCents: z.ZodDefault<z.ZodNumber>;
157
- approvedVendors: z.ZodDefault<z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">>;
158
- monthlySpendCapUsdCents: z.ZodNullable<z.ZodNumber>;
157
+ requireHumanApprovalAboveUsdCents: z.ZodOptional<z.ZodNumber>;
158
+ approvedVendors: z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">>;
159
+ monthlySpendCapUsdCents: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
159
160
  }, "strip", z.ZodTypeAny, {
160
- requireHumanApprovalAboveUsdCents: number;
161
- approvedVendors: string[];
162
- monthlySpendCapUsdCents: number | null;
161
+ requireHumanApprovalAboveUsdCents?: number | undefined;
162
+ approvedVendors?: string[] | undefined;
163
+ monthlySpendCapUsdCents?: number | null | undefined;
163
164
  }, {
164
- monthlySpendCapUsdCents: number | null;
165
165
  requireHumanApprovalAboveUsdCents?: number | undefined;
166
166
  approvedVendors?: string[] | undefined;
167
+ monthlySpendCapUsdCents?: number | null | undefined;
167
168
  }>>;
168
- enabledCapabilities: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodEnum<["identity", "recovery", "routing", "cashflow", "commerce", "pricing_intelligence"]>, "many">>>;
169
169
  }, "strip", z.ZodTypeAny, {
170
170
  recovery?: {
171
- gracePeriodHours: 24 | 48 | 72;
172
- strategy: "once" | "twice" | "until_grace_ends";
173
- notificationTemplate: string | null;
171
+ gracePeriodHours?: 24 | 48 | 72 | undefined;
172
+ strategy?: "once" | "twice" | "until_grace_ends" | undefined;
173
+ notificationTemplate?: string | null | undefined;
174
174
  } | undefined;
175
175
  cashflow?: {
176
- digestEnabled: boolean;
177
- anomalySensitivity: "low" | "medium" | "high";
178
- autoConvertToYield: boolean;
179
- minimumLiquidReserveCents: number;
176
+ digestEnabled?: boolean | undefined;
177
+ anomalySensitivity?: "low" | "medium" | "high" | undefined;
178
+ autoConvertToYield?: boolean | undefined;
179
+ minimumLiquidReserveCents?: number | undefined;
180
180
  } | undefined;
181
181
  commerce?: {
182
- requireHumanApprovalAboveUsdCents: number;
183
- approvedVendors: string[];
184
- monthlySpendCapUsdCents: number | null;
182
+ requireHumanApprovalAboveUsdCents?: number | undefined;
183
+ approvedVendors?: string[] | undefined;
184
+ monthlySpendCapUsdCents?: number | null | undefined;
185
185
  } | undefined;
186
186
  enabledCapabilities?: ("identity" | "recovery" | "routing" | "cashflow" | "commerce" | "pricing_intelligence")[] | undefined;
187
187
  }, {
188
188
  recovery?: {
189
- notificationTemplate: string | null;
190
189
  gracePeriodHours?: 24 | 48 | 72 | undefined;
191
190
  strategy?: "once" | "twice" | "until_grace_ends" | undefined;
191
+ notificationTemplate?: string | null | undefined;
192
192
  } | undefined;
193
193
  cashflow?: {
194
194
  digestEnabled?: boolean | undefined;
@@ -197,9 +197,9 @@ declare const updateAgentConfigInputSchema: z.ZodObject<{
197
197
  minimumLiquidReserveCents?: number | undefined;
198
198
  } | undefined;
199
199
  commerce?: {
200
- monthlySpendCapUsdCents: number | null;
201
200
  requireHumanApprovalAboveUsdCents?: number | undefined;
202
201
  approvedVendors?: string[] | undefined;
202
+ monthlySpendCapUsdCents?: number | null | undefined;
203
203
  } | undefined;
204
204
  enabledCapabilities?: ("identity" | "recovery" | "routing" | "cashflow" | "commerce" | "pricing_intelligence")[] | undefined;
205
205
  }>;
@@ -253,7 +253,7 @@ declare const agentJobSchema: z.ZodObject<{
253
253
  onchainJobId: z.ZodNullable<z.ZodNumber>;
254
254
  vendorAddress: z.ZodEffects<z.ZodString, string, string>;
255
255
  description: z.ZodString;
256
- amount: z.ZodEffects<z.ZodString, string, string>;
256
+ amount: z.ZodString;
257
257
  currency: z.ZodEnum<["USDC", "EURC"]>;
258
258
  status: z.ZodEnum<["proposed", "accepted", "funded", "in_progress", "delivered", "approved", "completed", "disputed", "cancelled", "resolved", "reclaimed"]>;
259
259
  assessorAddress: z.ZodEffects<z.ZodString, string, string>;
@@ -297,7 +297,7 @@ type AgentJob = z.infer<typeof agentJobSchema>;
297
297
  declare const createAgentJobInputSchema: z.ZodObject<{
298
298
  vendorAddress: z.ZodEffects<z.ZodString, string, string>;
299
299
  description: z.ZodString;
300
- amount: z.ZodEffects<z.ZodString, string, string>;
300
+ amount: z.ZodString;
301
301
  currency: z.ZodEnum<["USDC", "EURC"]>;
302
302
  assessorAddress: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
303
303
  }, "strip", z.ZodTypeAny, {
package/dist/agents.d.ts CHANGED
@@ -123,29 +123,30 @@ declare const agentMerchantConfigSchema: z.ZodObject<{
123
123
  }>;
124
124
  type AgentMerchantConfig = z.infer<typeof agentMerchantConfigSchema>;
125
125
  declare const updateAgentConfigInputSchema: z.ZodObject<{
126
+ enabledCapabilities: z.ZodOptional<z.ZodArray<z.ZodEnum<["identity", "recovery", "routing", "cashflow", "commerce", "pricing_intelligence"]>, "many">>;
126
127
  recovery: z.ZodOptional<z.ZodObject<{
127
- gracePeriodHours: z.ZodDefault<z.ZodUnion<[z.ZodLiteral<24>, z.ZodLiteral<48>, z.ZodLiteral<72>]>>;
128
- strategy: z.ZodDefault<z.ZodEnum<["once", "twice", "until_grace_ends"]>>;
129
- notificationTemplate: z.ZodNullable<z.ZodString>;
128
+ gracePeriodHours: z.ZodOptional<z.ZodUnion<[z.ZodLiteral<24>, z.ZodLiteral<48>, z.ZodLiteral<72>]>>;
129
+ strategy: z.ZodOptional<z.ZodEnum<["once", "twice", "until_grace_ends"]>>;
130
+ notificationTemplate: z.ZodOptional<z.ZodNullable<z.ZodString>>;
130
131
  }, "strip", z.ZodTypeAny, {
131
- gracePeriodHours: 24 | 48 | 72;
132
- strategy: "once" | "twice" | "until_grace_ends";
133
- notificationTemplate: string | null;
132
+ gracePeriodHours?: 24 | 48 | 72 | undefined;
133
+ strategy?: "once" | "twice" | "until_grace_ends" | undefined;
134
+ notificationTemplate?: string | null | undefined;
134
135
  }, {
135
- notificationTemplate: string | null;
136
136
  gracePeriodHours?: 24 | 48 | 72 | undefined;
137
137
  strategy?: "once" | "twice" | "until_grace_ends" | undefined;
138
+ notificationTemplate?: string | null | undefined;
138
139
  }>>;
139
140
  cashflow: z.ZodOptional<z.ZodObject<{
140
- digestEnabled: z.ZodDefault<z.ZodBoolean>;
141
- anomalySensitivity: z.ZodDefault<z.ZodEnum<["low", "medium", "high"]>>;
142
- autoConvertToYield: z.ZodDefault<z.ZodBoolean>;
143
- minimumLiquidReserveCents: z.ZodDefault<z.ZodNumber>;
141
+ digestEnabled: z.ZodOptional<z.ZodBoolean>;
142
+ anomalySensitivity: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>;
143
+ autoConvertToYield: z.ZodOptional<z.ZodBoolean>;
144
+ minimumLiquidReserveCents: z.ZodOptional<z.ZodNumber>;
144
145
  }, "strip", z.ZodTypeAny, {
145
- digestEnabled: boolean;
146
- anomalySensitivity: "low" | "medium" | "high";
147
- autoConvertToYield: boolean;
148
- minimumLiquidReserveCents: number;
146
+ digestEnabled?: boolean | undefined;
147
+ anomalySensitivity?: "low" | "medium" | "high" | undefined;
148
+ autoConvertToYield?: boolean | undefined;
149
+ minimumLiquidReserveCents?: number | undefined;
149
150
  }, {
150
151
  digestEnabled?: boolean | undefined;
151
152
  anomalySensitivity?: "low" | "medium" | "high" | undefined;
@@ -153,42 +154,41 @@ declare const updateAgentConfigInputSchema: z.ZodObject<{
153
154
  minimumLiquidReserveCents?: number | undefined;
154
155
  }>>;
155
156
  commerce: z.ZodOptional<z.ZodObject<{
156
- requireHumanApprovalAboveUsdCents: z.ZodDefault<z.ZodNumber>;
157
- approvedVendors: z.ZodDefault<z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">>;
158
- monthlySpendCapUsdCents: z.ZodNullable<z.ZodNumber>;
157
+ requireHumanApprovalAboveUsdCents: z.ZodOptional<z.ZodNumber>;
158
+ approvedVendors: z.ZodOptional<z.ZodArray<z.ZodEffects<z.ZodString, string, string>, "many">>;
159
+ monthlySpendCapUsdCents: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
159
160
  }, "strip", z.ZodTypeAny, {
160
- requireHumanApprovalAboveUsdCents: number;
161
- approvedVendors: string[];
162
- monthlySpendCapUsdCents: number | null;
161
+ requireHumanApprovalAboveUsdCents?: number | undefined;
162
+ approvedVendors?: string[] | undefined;
163
+ monthlySpendCapUsdCents?: number | null | undefined;
163
164
  }, {
164
- monthlySpendCapUsdCents: number | null;
165
165
  requireHumanApprovalAboveUsdCents?: number | undefined;
166
166
  approvedVendors?: string[] | undefined;
167
+ monthlySpendCapUsdCents?: number | null | undefined;
167
168
  }>>;
168
- enabledCapabilities: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodEnum<["identity", "recovery", "routing", "cashflow", "commerce", "pricing_intelligence"]>, "many">>>;
169
169
  }, "strip", z.ZodTypeAny, {
170
170
  recovery?: {
171
- gracePeriodHours: 24 | 48 | 72;
172
- strategy: "once" | "twice" | "until_grace_ends";
173
- notificationTemplate: string | null;
171
+ gracePeriodHours?: 24 | 48 | 72 | undefined;
172
+ strategy?: "once" | "twice" | "until_grace_ends" | undefined;
173
+ notificationTemplate?: string | null | undefined;
174
174
  } | undefined;
175
175
  cashflow?: {
176
- digestEnabled: boolean;
177
- anomalySensitivity: "low" | "medium" | "high";
178
- autoConvertToYield: boolean;
179
- minimumLiquidReserveCents: number;
176
+ digestEnabled?: boolean | undefined;
177
+ anomalySensitivity?: "low" | "medium" | "high" | undefined;
178
+ autoConvertToYield?: boolean | undefined;
179
+ minimumLiquidReserveCents?: number | undefined;
180
180
  } | undefined;
181
181
  commerce?: {
182
- requireHumanApprovalAboveUsdCents: number;
183
- approvedVendors: string[];
184
- monthlySpendCapUsdCents: number | null;
182
+ requireHumanApprovalAboveUsdCents?: number | undefined;
183
+ approvedVendors?: string[] | undefined;
184
+ monthlySpendCapUsdCents?: number | null | undefined;
185
185
  } | undefined;
186
186
  enabledCapabilities?: ("identity" | "recovery" | "routing" | "cashflow" | "commerce" | "pricing_intelligence")[] | undefined;
187
187
  }, {
188
188
  recovery?: {
189
- notificationTemplate: string | null;
190
189
  gracePeriodHours?: 24 | 48 | 72 | undefined;
191
190
  strategy?: "once" | "twice" | "until_grace_ends" | undefined;
191
+ notificationTemplate?: string | null | undefined;
192
192
  } | undefined;
193
193
  cashflow?: {
194
194
  digestEnabled?: boolean | undefined;
@@ -197,9 +197,9 @@ declare const updateAgentConfigInputSchema: z.ZodObject<{
197
197
  minimumLiquidReserveCents?: number | undefined;
198
198
  } | undefined;
199
199
  commerce?: {
200
- monthlySpendCapUsdCents: number | null;
201
200
  requireHumanApprovalAboveUsdCents?: number | undefined;
202
201
  approvedVendors?: string[] | undefined;
202
+ monthlySpendCapUsdCents?: number | null | undefined;
203
203
  } | undefined;
204
204
  enabledCapabilities?: ("identity" | "recovery" | "routing" | "cashflow" | "commerce" | "pricing_intelligence")[] | undefined;
205
205
  }>;
@@ -253,7 +253,7 @@ declare const agentJobSchema: z.ZodObject<{
253
253
  onchainJobId: z.ZodNullable<z.ZodNumber>;
254
254
  vendorAddress: z.ZodEffects<z.ZodString, string, string>;
255
255
  description: z.ZodString;
256
- amount: z.ZodEffects<z.ZodString, string, string>;
256
+ amount: z.ZodString;
257
257
  currency: z.ZodEnum<["USDC", "EURC"]>;
258
258
  status: z.ZodEnum<["proposed", "accepted", "funded", "in_progress", "delivered", "approved", "completed", "disputed", "cancelled", "resolved", "reclaimed"]>;
259
259
  assessorAddress: z.ZodEffects<z.ZodString, string, string>;
@@ -297,7 +297,7 @@ type AgentJob = z.infer<typeof agentJobSchema>;
297
297
  declare const createAgentJobInputSchema: z.ZodObject<{
298
298
  vendorAddress: z.ZodEffects<z.ZodString, string, string>;
299
299
  description: z.ZodString;
300
- amount: z.ZodEffects<z.ZodString, string, string>;
300
+ amount: z.ZodString;
301
301
  currency: z.ZodEnum<["USDC", "EURC"]>;
302
302
  assessorAddress: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
303
303
  }, "strip", z.ZodTypeAny, {
package/dist/agents.js CHANGED
@@ -9,7 +9,7 @@ z.string().url().refine((v) => v.startsWith("https://"), {
9
9
  message: "must be an https:// URL"
10
10
  });
11
11
  z.string().url();
12
- var tokenAmountSchema = z.string().regex(/^[0-9]+$/, "must be a non-negative integer string (base-10)").refine((v) => BigInt(v) >= 0n, "must be >= 0");
12
+ var tokenAmountSchema = z.string().regex(/^[0-9]+$/, "must be a non-negative integer string (base-10)");
13
13
  z.number().int().min(0).max(Number.MAX_SAFE_INTEGER);
14
14
  var isoTimestampSchema = z.string().datetime({ offset: true, message: "must be an ISO-8601 timestamp" });
15
15
  z.string().length(2).regex(/^[A-Z]{2}$/, "must be an ISO-3166 alpha-2 country code");
@@ -47,28 +47,57 @@ var agentCapabilitySchema = z.enum([
47
47
  "commerce",
48
48
  "pricing_intelligence"
49
49
  ]);
50
+ var enabledCapabilitiesSchema = z.array(agentCapabilitySchema);
51
+ var recoveryGracePeriodHoursSchema = z.union([z.literal(24), z.literal(48), z.literal(72)]);
52
+ var recoveryStrategySchema = z.enum(["once", "twice", "until_grace_ends"]);
53
+ var recoveryNotificationTemplateSchema = z.string().max(2e3).nullable();
54
+ var cashflowDigestEnabledSchema = z.boolean();
55
+ var cashflowAnomalySensitivitySchema = z.enum(["low", "medium", "high"]);
56
+ var cashflowAutoConvertToYieldSchema = z.boolean();
57
+ var cashflowMinimumLiquidReserveCentsSchema = z.number().int().nonnegative();
58
+ var commerceRequireHumanApprovalAboveUsdCentsSchema = z.number().int().nonnegative();
59
+ var commerceApprovedVendorsSchema = z.array(evmAddressSchema);
60
+ var commerceMonthlySpendCapUsdCentsSchema = z.number().int().nonnegative().nullable();
50
61
  var agentMerchantConfigSchema = z.object({
51
62
  merchantId: idSchema,
52
- enabledCapabilities: z.array(agentCapabilitySchema).default([]),
63
+ enabledCapabilities: enabledCapabilitiesSchema.default([]),
53
64
  recovery: z.object({
54
- gracePeriodHours: z.union([z.literal(24), z.literal(48), z.literal(72)]).default(48),
55
- strategy: z.enum(["once", "twice", "until_grace_ends"]).default("twice"),
56
- notificationTemplate: z.string().max(2e3).nullable()
65
+ gracePeriodHours: recoveryGracePeriodHoursSchema.default(48),
66
+ strategy: recoveryStrategySchema.default("twice"),
67
+ notificationTemplate: recoveryNotificationTemplateSchema
57
68
  }),
58
69
  cashflow: z.object({
59
- digestEnabled: z.boolean().default(false),
60
- anomalySensitivity: z.enum(["low", "medium", "high"]).default("medium"),
61
- autoConvertToYield: z.boolean().default(false),
62
- minimumLiquidReserveCents: z.number().int().nonnegative().default(1e5)
70
+ digestEnabled: cashflowDigestEnabledSchema.default(false),
71
+ anomalySensitivity: cashflowAnomalySensitivitySchema.default("medium"),
72
+ autoConvertToYield: cashflowAutoConvertToYieldSchema.default(false),
73
+ minimumLiquidReserveCents: cashflowMinimumLiquidReserveCentsSchema.default(1e5)
63
74
  }),
64
75
  commerce: z.object({
65
- requireHumanApprovalAboveUsdCents: z.number().int().nonnegative().default(1e5),
66
- approvedVendors: z.array(evmAddressSchema).default([]),
67
- monthlySpendCapUsdCents: z.number().int().nonnegative().nullable()
76
+ requireHumanApprovalAboveUsdCents: commerceRequireHumanApprovalAboveUsdCentsSchema.default(1e5),
77
+ approvedVendors: commerceApprovedVendorsSchema.default([]),
78
+ monthlySpendCapUsdCents: commerceMonthlySpendCapUsdCentsSchema
68
79
  }),
69
80
  updatedAt: isoTimestampSchema
70
81
  });
71
- var updateAgentConfigInputSchema = agentMerchantConfigSchema.omit({ merchantId: true, updatedAt: true }).partial();
82
+ var updateAgentConfigInputSchema = z.object({
83
+ enabledCapabilities: enabledCapabilitiesSchema.optional(),
84
+ recovery: z.object({
85
+ gracePeriodHours: recoveryGracePeriodHoursSchema.optional(),
86
+ strategy: recoveryStrategySchema.optional(),
87
+ notificationTemplate: recoveryNotificationTemplateSchema.optional()
88
+ }).optional(),
89
+ cashflow: z.object({
90
+ digestEnabled: cashflowDigestEnabledSchema.optional(),
91
+ anomalySensitivity: cashflowAnomalySensitivitySchema.optional(),
92
+ autoConvertToYield: cashflowAutoConvertToYieldSchema.optional(),
93
+ minimumLiquidReserveCents: cashflowMinimumLiquidReserveCentsSchema.optional()
94
+ }).optional(),
95
+ commerce: z.object({
96
+ requireHumanApprovalAboveUsdCents: commerceRequireHumanApprovalAboveUsdCentsSchema.optional(),
97
+ approvedVendors: commerceApprovedVendorsSchema.optional(),
98
+ monthlySpendCapUsdCents: commerceMonthlySpendCapUsdCentsSchema.optional()
99
+ }).optional()
100
+ });
72
101
  var agentActionTypeSchema = z.enum([
73
102
  "recovery_notification_sent",
74
103
  "recovery_retry_scheduled",
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/common.ts","../src/agents.ts"],"names":["z"],"mappings":"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","file":"agents.js","sourcesContent":["/**\n * Primitive schemas shared across every entity.\n * Every higher-level schema builds on these so validation is consistent.\n */\n\nimport { z } from 'zod'\n\n/** CUID2 or UUID-style opaque identifier. */\nexport const idSchema = z\n .string()\n .min(1)\n .max(64)\n .regex(/^[a-zA-Z0-9_-]+$/, 'id must be URL-safe')\n\n/** EVM address. Hex-encoded, 0x-prefixed, 20 bytes. Normalised to lowercase. */\nexport const evmAddressSchema = z\n .string()\n .regex(/^0x[a-fA-F0-9]{40}$/, 'must be a 0x-prefixed 40-character hex EVM address')\n .transform((v) => v.toLowerCase())\n\n/** EVM transaction hash. 32-byte hex. */\nexport const evmTxHashSchema = z\n .string()\n .regex(/^0x[a-fA-F0-9]{64}$/, 'must be a 0x-prefixed 64-character hex EVM transaction hash')\n\n/** Email address, trimmed and lower-cased. */\nexport const emailSchema = z.string().email().trim().toLowerCase().max(320)\n\n/** HTTPS URL. No http:// allowed outside dev. */\nexport const httpsUrlSchema = z\n .string()\n .url()\n .refine((v) => v.startsWith('https://'), {\n message: 'must be an https:// URL',\n })\n\n/** URL permitting http and https (dev + prod). */\nexport const httpUrlSchema = z.string().url()\n\n/**\n * Amount expressed in the token's smallest unit, serialised as a string to\n * preserve precision beyond `Number.MAX_SAFE_INTEGER`. For USDC (6 decimals),\n * 1 USDC is the string \"1000000\".\n */\nexport const tokenAmountSchema = z\n .string()\n .regex(/^[0-9]+$/, 'must be a non-negative integer string (base-10)')\n .refine((v) => BigInt(v) >= 0n, 'must be >= 0')\n\n/** Unsigned integer up to 2^53 - 1; validated and returned as number. */\nexport const uintSchema = z.number().int().min(0).max(Number.MAX_SAFE_INTEGER)\n\n/** ISO-8601 timestamp string (`.toISOString()`-compatible). */\nexport const isoTimestampSchema = z\n .string()\n .datetime({ offset: true, message: 'must be an ISO-8601 timestamp' })\n\n/** Two-letter ISO-3166 country code. */\nexport const countryCodeSchema = z\n .string()\n .length(2)\n .regex(/^[A-Z]{2}$/, 'must be an ISO-3166 alpha-2 country code')\n\n/** Pagination inputs used by every list endpoint. */\nexport const paginationInputSchema = z.object({\n limit: z.number().int().min(1).max(100).default(25),\n cursor: z.string().min(1).max(200).nullish(),\n})\nexport type PaginationInput = z.input<typeof paginationInputSchema>\nexport type PaginationParsed = z.output<typeof paginationInputSchema>\n\n/** Pagination envelope used by every list response. */\nexport const makePaginatedSchema = <T extends z.ZodTypeAny>(item: T) =>\n z.object({\n data: z.array(item),\n nextCursor: z.string().nullable(),\n hasMore: z.boolean(),\n })\n\n/** Free-form metadata bag the API round-trips for merchants. */\nexport const metadataSchema = z\n .record(\n z.string().min(1).max(40),\n z.union([z.string().max(500), z.number(), z.boolean(), z.null()]),\n )\n .refine((m) => Object.keys(m).length <= 50, 'at most 50 metadata keys')\n .default({})\n\n/** Environment mode carried on every mode-scoped resource. */\nexport const modeSchema = z.enum(['test', 'live'])\nexport type Mode = z.infer<typeof modeSchema>\n\n/** Payment token enum. */\nexport const paymentCurrencySchema = z.enum(['USDC', 'EURC'])\nexport type PaymentCurrency = z.infer<typeof paymentCurrencySchema>\n\n/** Every display-level currency (payment + treasury). */\nexport const tokenSymbolSchema = z.enum(['USDC', 'EURC', 'USYC'])\nexport type TokenSymbol = z.infer<typeof tokenSymbolSchema>\n\n/** Merchant tier enum. */\nexport const merchantTierSchema = z.enum(['free', 'growth', 'business', 'enterprise'])\nexport type MerchantTier = z.infer<typeof merchantTierSchema>\n\n/** Arc environment enum. */\nexport const arcEnvironmentSchema = z.enum(['testnet', 'mainnet'])\nexport type ArcEnvironment = z.infer<typeof arcEnvironmentSchema>\n\nexport type Id = z.infer<typeof idSchema>\nexport type EvmAddress = z.infer<typeof evmAddressSchema>\nexport type EvmTxHash = z.infer<typeof evmTxHashSchema>\nexport type TokenAmount = z.infer<typeof tokenAmountSchema>\nexport type IsoTimestamp = z.infer<typeof isoTimestampSchema>\nexport type Metadata = z.infer<typeof metadataSchema>\n","/**\n * AI AutoPay Agent. Identity, configuration, activity log, and ERC-8183 jobs.\n */\n\nimport { z } from 'zod'\nimport {\n evmAddressSchema,\n evmTxHashSchema,\n idSchema,\n isoTimestampSchema,\n metadataSchema,\n tokenAmountSchema,\n} from './common.js'\n\n// ---------- Identity ----------\n\nexport const agentIdentitySchema = z.object({\n id: idSchema,\n /** ERC-8004 on-chain identity address. */\n onchainAddress: evmAddressSchema,\n /** Public key or agent credential digest, as emitted by ERC-8004. */\n credentialDigest: z.string().regex(/^0x[a-fA-F0-9]+$/),\n name: z.string().min(1).max(120),\n version: z.string().min(1).max(40),\n reputationScore: z.number().min(0).max(100).nullable(),\n registeredAt: isoTimestampSchema,\n})\nexport type AgentIdentity = z.infer<typeof agentIdentitySchema>\n\n// ---------- Merchant config ----------\n\nexport const agentCapabilitySchema = z.enum([\n 'identity',\n 'recovery',\n 'routing',\n 'cashflow',\n 'commerce',\n 'pricing_intelligence',\n])\nexport type AgentCapability = z.infer<typeof agentCapabilitySchema>\n\nexport const agentMerchantConfigSchema = z.object({\n merchantId: idSchema,\n enabledCapabilities: z.array(agentCapabilitySchema).default([]),\n recovery: z.object({\n gracePeriodHours: z.union([z.literal(24), z.literal(48), z.literal(72)]).default(48),\n strategy: z.enum(['once', 'twice', 'until_grace_ends']).default('twice'),\n notificationTemplate: z.string().max(2000).nullable(),\n }),\n cashflow: z.object({\n digestEnabled: z.boolean().default(false),\n anomalySensitivity: z.enum(['low', 'medium', 'high']).default('medium'),\n autoConvertToYield: z.boolean().default(false),\n minimumLiquidReserveCents: z.number().int().nonnegative().default(100_000),\n }),\n commerce: z.object({\n requireHumanApprovalAboveUsdCents: z.number().int().nonnegative().default(100_000),\n approvedVendors: z.array(evmAddressSchema).default([]),\n monthlySpendCapUsdCents: z.number().int().nonnegative().nullable(),\n }),\n updatedAt: isoTimestampSchema,\n})\nexport type AgentMerchantConfig = z.infer<typeof agentMerchantConfigSchema>\n\nexport const updateAgentConfigInputSchema = agentMerchantConfigSchema\n .omit({ merchantId: true, updatedAt: true })\n .partial()\nexport type UpdateAgentConfigInput = z.input<typeof updateAgentConfigInputSchema>\nexport type UpdateAgentConfigParsed = z.output<typeof updateAgentConfigInputSchema>\n\n// ---------- Activity log ----------\n\nexport const agentActionTypeSchema = z.enum([\n 'recovery_notification_sent',\n 'recovery_retry_scheduled',\n 'recovery_retry_executed',\n 'recovery_abandoned',\n 'routing_bridge_initiated',\n 'routing_payment_completed',\n 'cashflow_digest_sent',\n 'cashflow_anomaly_flagged',\n 'cashflow_yield_converted',\n 'commerce_job_created',\n 'commerce_job_approved',\n 'commerce_job_completed',\n 'commerce_job_disputed',\n])\nexport type AgentActionType = z.infer<typeof agentActionTypeSchema>\n\nexport const agentActionOutcomeSchema = z.enum(['success', 'failure', 'pending', 'skipped'])\nexport type AgentActionOutcome = z.infer<typeof agentActionOutcomeSchema>\n\nexport const agentActivityLogSchema = z.object({\n id: idSchema,\n merchantId: idSchema,\n capability: agentCapabilitySchema,\n actionType: agentActionTypeSchema,\n outcome: agentActionOutcomeSchema,\n subscriptionId: idSchema.nullable(),\n transactionId: idSchema.nullable(),\n jobId: idSchema.nullable(),\n metadata: metadataSchema,\n createdAt: isoTimestampSchema,\n})\nexport type AgentActivityLog = z.infer<typeof agentActivityLogSchema>\n\n// ---------- ERC-8183 jobs ----------\n\n// Mirrors the DB `AgentJobStatus` enum, not the contract's JobStatus.\n// `accepted` is off-chain only (merchant approved, queued for on-chain\n// creation); `resolved` and `reclaimed` are the escrow's terminal exits\n// from a dispute and from a timeout reclaim respectively.\nexport const agentJobStatusSchema = z.enum([\n 'proposed',\n 'accepted',\n 'funded',\n 'in_progress',\n 'delivered',\n 'approved',\n 'completed',\n 'disputed',\n 'cancelled',\n 'resolved',\n 'reclaimed',\n])\nexport type AgentJobStatus = z.infer<typeof agentJobStatusSchema>\n\nexport const agentJobSchema = z.object({\n id: idSchema,\n merchantId: idSchema,\n /** On-chain job id from StrimzAgentEscrow. */\n onchainJobId: z.number().int().nonnegative().nullable(),\n vendorAddress: evmAddressSchema,\n description: z.string().min(1).max(2000),\n amount: tokenAmountSchema,\n currency: z.enum(['USDC', 'EURC']),\n status: agentJobStatusSchema,\n assessorAddress: evmAddressSchema,\n deliverableHash: z\n .string()\n .regex(/^0x[a-fA-F0-9]+$/)\n .nullable(),\n escrowTxHash: evmTxHashSchema.nullable(),\n releaseTxHash: evmTxHashSchema.nullable(),\n createdAt: isoTimestampSchema,\n completedAt: isoTimestampSchema.nullable(),\n})\nexport type AgentJob = z.infer<typeof agentJobSchema>\n\nexport const createAgentJobInputSchema = z.object({\n vendorAddress: evmAddressSchema,\n description: z.string().min(1).max(2000),\n amount: tokenAmountSchema,\n currency: z.enum(['USDC', 'EURC']),\n assessorAddress: evmAddressSchema.optional(),\n})\nexport type CreateAgentJobInput = z.input<typeof createAgentJobInputSchema>\nexport type CreateAgentJobParsed = z.output<typeof createAgentJobInputSchema>\n"]}
1
+ {"version":3,"sources":["../src/common.ts","../src/agents.ts"],"names":["z"],"mappings":"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","file":"agents.js","sourcesContent":["/**\n * Primitive schemas shared across every entity.\n * Every higher-level schema builds on these so validation is consistent.\n */\n\nimport { z } from 'zod'\n\n/** CUID2 or UUID-style opaque identifier. */\nexport const idSchema = z\n .string()\n .min(1)\n .max(64)\n .regex(/^[a-zA-Z0-9_-]+$/, 'id must be URL-safe')\n\n/** EVM address. Hex-encoded, 0x-prefixed, 20 bytes. Normalised to lowercase. */\nexport const evmAddressSchema = z\n .string()\n .regex(/^0x[a-fA-F0-9]{40}$/, 'must be a 0x-prefixed 40-character hex EVM address')\n .transform((v) => v.toLowerCase())\n\n/** EVM transaction hash. 32-byte hex. */\nexport const evmTxHashSchema = z\n .string()\n .regex(/^0x[a-fA-F0-9]{64}$/, 'must be a 0x-prefixed 64-character hex EVM transaction hash')\n\n/** Email address, trimmed and lower-cased. */\nexport const emailSchema = z.string().email().trim().toLowerCase().max(320)\n\n/** HTTPS URL. No http:// allowed outside dev. */\nexport const httpsUrlSchema = z\n .string()\n .url()\n .refine((v) => v.startsWith('https://'), {\n message: 'must be an https:// URL',\n })\n\n/** URL permitting http and https (dev + prod). */\nexport const httpUrlSchema = z.string().url()\n\n/**\n * Amount expressed in the token's smallest unit, serialised as a string to\n * preserve precision beyond `Number.MAX_SAFE_INTEGER`. For USDC (6 decimals),\n * 1 USDC is the string \"1000000\".\n */\nexport const tokenAmountSchema = z\n .string()\n .regex(/^[0-9]+$/, 'must be a non-negative integer string (base-10)')\n\n/** Unsigned integer up to 2^53 - 1; validated and returned as number. */\nexport const uintSchema = z.number().int().min(0).max(Number.MAX_SAFE_INTEGER)\n\n/** ISO-8601 timestamp string (`.toISOString()`-compatible). */\nexport const isoTimestampSchema = z\n .string()\n .datetime({ offset: true, message: 'must be an ISO-8601 timestamp' })\n\n/** Two-letter ISO-3166 country code. */\nexport const countryCodeSchema = z\n .string()\n .length(2)\n .regex(/^[A-Z]{2}$/, 'must be an ISO-3166 alpha-2 country code')\n\n/** Pagination inputs used by every list endpoint. */\nexport const paginationInputSchema = z.object({\n limit: z.number().int().min(1).max(100).default(25),\n cursor: z.string().min(1).max(200).nullish(),\n})\nexport type PaginationInput = z.input<typeof paginationInputSchema>\nexport type PaginationParsed = z.output<typeof paginationInputSchema>\n\n/** Pagination envelope used by every list response. */\nexport const makePaginatedSchema = <T extends z.ZodTypeAny>(item: T) =>\n z.object({\n data: z.array(item),\n nextCursor: z.string().nullable(),\n hasMore: z.boolean(),\n })\n\n/** Free-form metadata bag the API round-trips for merchants. */\nexport const metadataSchema = z\n .record(\n z.string().min(1).max(40),\n z.union([z.string().max(500), z.number(), z.boolean(), z.null()]),\n )\n .refine((m) => Object.keys(m).length <= 50, 'at most 50 metadata keys')\n .default({})\n\n/** Environment mode carried on every mode-scoped resource. */\nexport const modeSchema = z.enum(['test', 'live'])\nexport type Mode = z.infer<typeof modeSchema>\n\n/** Payment token enum. */\nexport const paymentCurrencySchema = z.enum(['USDC', 'EURC'])\nexport type PaymentCurrency = z.infer<typeof paymentCurrencySchema>\n\n/** Every display-level currency (payment + treasury). */\nexport const tokenSymbolSchema = z.enum(['USDC', 'EURC', 'USYC'])\nexport type TokenSymbol = z.infer<typeof tokenSymbolSchema>\n\n/** Merchant tier enum. */\nexport const merchantTierSchema = z.enum(['free', 'growth', 'business', 'enterprise'])\nexport type MerchantTier = z.infer<typeof merchantTierSchema>\n\n/** Arc environment enum. */\nexport const arcEnvironmentSchema = z.enum(['testnet', 'mainnet'])\nexport type ArcEnvironment = z.infer<typeof arcEnvironmentSchema>\n\nexport type Id = z.infer<typeof idSchema>\nexport type EvmAddress = z.infer<typeof evmAddressSchema>\nexport type EvmTxHash = z.infer<typeof evmTxHashSchema>\nexport type TokenAmount = z.infer<typeof tokenAmountSchema>\nexport type IsoTimestamp = z.infer<typeof isoTimestampSchema>\nexport type Metadata = z.infer<typeof metadataSchema>\n","/**\n * AI AutoPay Agent. Identity, configuration, activity log, and ERC-8183 jobs.\n */\n\nimport { z } from 'zod'\nimport {\n evmAddressSchema,\n evmTxHashSchema,\n idSchema,\n isoTimestampSchema,\n metadataSchema,\n tokenAmountSchema,\n} from './common.js'\n\n// ---------- Identity ----------\n\nexport const agentIdentitySchema = z.object({\n id: idSchema,\n /** ERC-8004 on-chain identity address. */\n onchainAddress: evmAddressSchema,\n /** Public key or agent credential digest, as emitted by ERC-8004. */\n credentialDigest: z.string().regex(/^0x[a-fA-F0-9]+$/),\n name: z.string().min(1).max(120),\n version: z.string().min(1).max(40),\n reputationScore: z.number().min(0).max(100).nullable(),\n registeredAt: isoTimestampSchema,\n})\nexport type AgentIdentity = z.infer<typeof agentIdentitySchema>\n\n// ---------- Merchant config ----------\n\nexport const agentCapabilitySchema = z.enum([\n 'identity',\n 'recovery',\n 'routing',\n 'cashflow',\n 'commerce',\n 'pricing_intelligence',\n])\nexport type AgentCapability = z.infer<typeof agentCapabilitySchema>\n\nconst enabledCapabilitiesSchema = z.array(agentCapabilitySchema)\nconst recoveryGracePeriodHoursSchema = z.union([z.literal(24), z.literal(48), z.literal(72)])\nconst recoveryStrategySchema = z.enum(['once', 'twice', 'until_grace_ends'])\nconst recoveryNotificationTemplateSchema = z.string().max(2000).nullable()\nconst cashflowDigestEnabledSchema = z.boolean()\nconst cashflowAnomalySensitivitySchema = z.enum(['low', 'medium', 'high'])\nconst cashflowAutoConvertToYieldSchema = z.boolean()\nconst cashflowMinimumLiquidReserveCentsSchema = z.number().int().nonnegative()\nconst commerceRequireHumanApprovalAboveUsdCentsSchema = z.number().int().nonnegative()\nconst commerceApprovedVendorsSchema = z.array(evmAddressSchema)\nconst commerceMonthlySpendCapUsdCentsSchema = z.number().int().nonnegative().nullable()\n\nexport const agentMerchantConfigSchema = z.object({\n merchantId: idSchema,\n enabledCapabilities: enabledCapabilitiesSchema.default([]),\n recovery: z.object({\n gracePeriodHours: recoveryGracePeriodHoursSchema.default(48),\n strategy: recoveryStrategySchema.default('twice'),\n notificationTemplate: recoveryNotificationTemplateSchema,\n }),\n cashflow: z.object({\n digestEnabled: cashflowDigestEnabledSchema.default(false),\n anomalySensitivity: cashflowAnomalySensitivitySchema.default('medium'),\n autoConvertToYield: cashflowAutoConvertToYieldSchema.default(false),\n minimumLiquidReserveCents: cashflowMinimumLiquidReserveCentsSchema.default(100_000),\n }),\n commerce: z.object({\n requireHumanApprovalAboveUsdCents:\n commerceRequireHumanApprovalAboveUsdCentsSchema.default(100_000),\n approvedVendors: commerceApprovedVendorsSchema.default([]),\n monthlySpendCapUsdCents: commerceMonthlySpendCapUsdCentsSchema,\n }),\n updatedAt: isoTimestampSchema,\n})\nexport type AgentMerchantConfig = z.infer<typeof agentMerchantConfigSchema>\n\nexport const updateAgentConfigInputSchema = z.object({\n enabledCapabilities: enabledCapabilitiesSchema.optional(),\n recovery: z\n .object({\n gracePeriodHours: recoveryGracePeriodHoursSchema.optional(),\n strategy: recoveryStrategySchema.optional(),\n notificationTemplate: recoveryNotificationTemplateSchema.optional(),\n })\n .optional(),\n cashflow: z\n .object({\n digestEnabled: cashflowDigestEnabledSchema.optional(),\n anomalySensitivity: cashflowAnomalySensitivitySchema.optional(),\n autoConvertToYield: cashflowAutoConvertToYieldSchema.optional(),\n minimumLiquidReserveCents: cashflowMinimumLiquidReserveCentsSchema.optional(),\n })\n .optional(),\n commerce: z\n .object({\n requireHumanApprovalAboveUsdCents: commerceRequireHumanApprovalAboveUsdCentsSchema.optional(),\n approvedVendors: commerceApprovedVendorsSchema.optional(),\n monthlySpendCapUsdCents: commerceMonthlySpendCapUsdCentsSchema.optional(),\n })\n .optional(),\n})\nexport type UpdateAgentConfigInput = z.input<typeof updateAgentConfigInputSchema>\nexport type UpdateAgentConfigParsed = z.output<typeof updateAgentConfigInputSchema>\n\n// ---------- Activity log ----------\n\nexport const agentActionTypeSchema = z.enum([\n 'recovery_notification_sent',\n 'recovery_retry_scheduled',\n 'recovery_retry_executed',\n 'recovery_abandoned',\n 'routing_bridge_initiated',\n 'routing_payment_completed',\n 'cashflow_digest_sent',\n 'cashflow_anomaly_flagged',\n 'cashflow_yield_converted',\n 'commerce_job_created',\n 'commerce_job_approved',\n 'commerce_job_completed',\n 'commerce_job_disputed',\n])\nexport type AgentActionType = z.infer<typeof agentActionTypeSchema>\n\nexport const agentActionOutcomeSchema = z.enum(['success', 'failure', 'pending', 'skipped'])\nexport type AgentActionOutcome = z.infer<typeof agentActionOutcomeSchema>\n\nexport const agentActivityLogSchema = z.object({\n id: idSchema,\n merchantId: idSchema,\n capability: agentCapabilitySchema,\n actionType: agentActionTypeSchema,\n outcome: agentActionOutcomeSchema,\n subscriptionId: idSchema.nullable(),\n transactionId: idSchema.nullable(),\n jobId: idSchema.nullable(),\n metadata: metadataSchema,\n createdAt: isoTimestampSchema,\n})\nexport type AgentActivityLog = z.infer<typeof agentActivityLogSchema>\n\n// ---------- ERC-8183 jobs ----------\n\n// Mirrors the DB `AgentJobStatus` enum, not the contract's JobStatus.\n// `accepted` is off-chain only (merchant approved, queued for on-chain\n// creation); `resolved` and `reclaimed` are the escrow's terminal exits\n// from a dispute and from a timeout reclaim respectively.\nexport const agentJobStatusSchema = z.enum([\n 'proposed',\n 'accepted',\n 'funded',\n 'in_progress',\n 'delivered',\n 'approved',\n 'completed',\n 'disputed',\n 'cancelled',\n 'resolved',\n 'reclaimed',\n])\nexport type AgentJobStatus = z.infer<typeof agentJobStatusSchema>\n\nexport const agentJobSchema = z.object({\n id: idSchema,\n merchantId: idSchema,\n /** On-chain job id from StrimzAgentEscrow. */\n onchainJobId: z.number().int().nonnegative().nullable(),\n vendorAddress: evmAddressSchema,\n description: z.string().min(1).max(2000),\n amount: tokenAmountSchema,\n currency: z.enum(['USDC', 'EURC']),\n status: agentJobStatusSchema,\n assessorAddress: evmAddressSchema,\n deliverableHash: z\n .string()\n .regex(/^0x[a-fA-F0-9]+$/)\n .nullable(),\n escrowTxHash: evmTxHashSchema.nullable(),\n releaseTxHash: evmTxHashSchema.nullable(),\n createdAt: isoTimestampSchema,\n completedAt: isoTimestampSchema.nullable(),\n})\nexport type AgentJob = z.infer<typeof agentJobSchema>\n\nexport const createAgentJobInputSchema = z.object({\n vendorAddress: evmAddressSchema,\n description: z.string().min(1).max(2000),\n amount: tokenAmountSchema,\n currency: z.enum(['USDC', 'EURC']),\n assessorAddress: evmAddressSchema.optional(),\n})\nexport type CreateAgentJobInput = z.input<typeof createAgentJobInputSchema>\nexport type CreateAgentJobParsed = z.output<typeof createAgentJobInputSchema>\n"]}
@@ -11,7 +11,7 @@ zod.z.string().url().refine((v) => v.startsWith("https://"), {
11
11
  message: "must be an https:// URL"
12
12
  });
13
13
  zod.z.string().url();
14
- var tokenAmountSchema = zod.z.string().regex(/^[0-9]+$/, "must be a non-negative integer string (base-10)").refine((v) => BigInt(v) >= 0n, "must be >= 0");
14
+ var tokenAmountSchema = zod.z.string().regex(/^[0-9]+$/, "must be a non-negative integer string (base-10)");
15
15
  var uintSchema = zod.z.number().int().min(0).max(Number.MAX_SAFE_INTEGER);
16
16
  var isoTimestampSchema = zod.z.string().datetime({ offset: true, message: "must be an ISO-8601 timestamp" });
17
17
  zod.z.string().length(2).regex(/^[A-Z]{2}$/, "must be an ISO-3166 alpha-2 country code");