@railbeam/stardorm-api-contract 0.0.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.
- package/dist/index.d.mts +5504 -0
- package/dist/index.d.ts +5504 -0
- package/dist/index.js +983 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +888 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +29 -0
- package/src/agent-feedbacks.ts +58 -0
- package/src/agent.ts +58 -0
- package/src/auth.ts +29 -0
- package/src/billing-handlers.ts +92 -0
- package/src/catalog-build.ts +31 -0
- package/src/catalog-marketplace-response.ts +53 -0
- package/src/catalog.ts +11 -0
- package/src/chat-api.ts +139 -0
- package/src/conversation.ts +132 -0
- package/src/credit-card.ts +150 -0
- package/src/handlers.ts +40 -0
- package/src/index.ts +192 -0
- package/src/iso-3166-1-alpha2.ts +30 -0
- package/src/kyc.ts +34 -0
- package/src/on-ramp.ts +103 -0
- package/src/payment-request.ts +87 -0
- package/src/storage.ts +13 -0
- package/src/tax-rate-for-country.ts +50 -0
- package/src/transfer-drafts.ts +91 -0
- package/src/user.ts +70 -0
- package/tsconfig.json +15 -0
- package/tsup.config.ts +10 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/agent.ts","../src/catalog.ts","../src/catalog-marketplace-response.ts","../src/catalog-build.ts","../src/auth.ts","../src/handlers.ts","../src/storage.ts","../src/chat-api.ts","../src/user.ts","../src/conversation.ts","../src/agent-feedbacks.ts","../src/payment-request.ts","../src/on-ramp.ts","../src/kyc.ts","../src/credit-card.ts","../src/billing-handlers.ts","../src/iso-3166-1-alpha2.ts","../src/tax-rate-for-country.ts","../src/transfer-drafts.ts"],"names":["z"],"mappings":"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","file":"index.mjs","sourcesContent":["import { z } from \"zod\";\n\nexport const agentCategorySchema = z.enum([\n \"Payments\",\n \"Taxes\",\n \"Reports\",\n \"DeFi\",\n \"Compliance\",\n \"General\",\n]);\n\nexport const skillHandleSchema = z.object({\n handle: z.string().min(1),\n label: z.string().min(1),\n});\n\n/** Absolute http(s) URL or root-relative asset path (e.g. on-chain `/images/…`). */\nexport const agentAvatarSchema = z.union([\n z.string().url(),\n z.string().regex(/^\\/\\S+/, \"avatar must be a URL or a root-relative path\"),\n]);\n\nexport const agentSchema = z.object({\n id: z.string().min(1),\n name: z.string().min(1),\n handle: z.string().min(1),\n avatar: agentAvatarSchema,\n category: agentCategorySchema,\n tagline: z.string(),\n description: z.string(),\n /** From on-chain feedback / analytics when wired; omit if unknown. */\n rating: z.number().min(0).max(5).optional(),\n reviews: z.number().int().nonnegative().optional(),\n hires: z.number().int().nonnegative().optional(),\n reputation: z.number().min(0).max(100).optional(),\n /** Estimated from indexer `feePerDay` (wei) when available; omit if unknown. */\n pricePerMonth: z.number().nonnegative().optional(),\n /** Raw `feePerDay` (wei, decimal string) from the subgraph. `subscribe` must send exactly `feePerDay * numDays` wei. */\n feePerDayWei: z.string().regex(/^\\d+$/).optional(),\n /** Presence-only when we have a live signal; omit if unknown. */\n online: z.boolean().optional(),\n skills: z.array(z.string()),\n creator: z.string().min(1),\n skillHandles: z.array(skillHandleSchema).optional(),\n chainAgentId: z.number().int().positive().optional(),\n /** From indexer when the token is an ERC-7857 clone of another agent. */\n isCloned: z.boolean().optional(),\n /** Lowercase `0x` registry owner (subgraph); used for “my clone” ownership checks. */\n ownerAddress: z.string().regex(/^0x[a-f0-9]{40}$/).optional(),\n /** Raw on-chain registration string (hex or JSON) for owner-only URI updates. */\n registrationUriRaw: z.string().optional(),\n});\n\nexport const agentsListSchema = z.array(agentSchema).nonempty();\n\nexport type AgentCategory = z.infer<typeof agentCategorySchema>;\nexport type SkillHandle = z.infer<typeof skillHandleSchema>;\nexport type Agent = z.infer<typeof agentSchema>;\n","import { z } from \"zod\";\r\nimport { agentCategorySchema, agentsListSchema } from \"./agent.js\";\r\n\r\nexport const catalogResponseSchema = z.object({\r\n agents: agentsListSchema,\r\n categories: z.array(agentCategorySchema),\r\n defaultHiredIds: z.array(z.string().min(1)),\r\n chatSuggestions: z.array(z.string()),\r\n});\r\n\r\nexport type CatalogResponse = z.infer<typeof catalogResponseSchema>;\r\n","import type { Agent, AgentCategory } from \"./agent.js\";\nimport { catalogResponseSchema, type CatalogResponse } from \"./catalog.js\";\n\nconst CHAT_SUGGESTIONS = [\n \"Summarize last month’s onchain P&L\",\n \"Draft an invoice for Acme Labs\",\n \"What are the best stablecoin yields right now?\",\n \"Estimate my crypto tax exposure for Q3\",\n \"Create an x402 checkout link I can send to a payer\",\n \"Help me buy stablecoins on 0G with a card\",\n \"Start identity verification for my account\",\n \"Create a virtual payment card with my billing address\",\n] as const;\n\n/** Catalog metadata only; the app does not treat these as on-chain hires without a subscription. */\nconst DEFAULT_HIRED_IDS = [\"beam-default\"] as const;\n\nconst ALL_CATEGORIES: readonly AgentCategory[] = [\n \"Payments\",\n \"Taxes\",\n \"Reports\",\n \"DeFi\",\n \"Compliance\",\n \"General\",\n] as const;\n\n/**\n * Offline / API-only catalog: default Beam row (mirrors on-chain token 1 after ignition seed).\n * Full marketplace listings come from the subgraph.\n */\nconst BEAM_DEFAULT_AGENT: Agent = {\n id: \"beam-default\",\n name: \"Beam\",\n handle: \"beam.0g\",\n avatar: \"/images/beam.png\",\n category: \"General\",\n tagline: \"Your default conversational agent\",\n description:\n \"Beam routes your prompts to the best hired agent and handles general financial questions.\",\n skills: [\"Routing\", \"General Q&A\", \"Wallet\"],\n creator: \"Beam\",\n chainAgentId: 1,\n};\n\n/** Public marketplace payload for `GET /agents/catalog` when no subgraph is wired. */\nexport function buildStardormCatalogResponse(): CatalogResponse {\n return catalogResponseSchema.parse({\n agents: [BEAM_DEFAULT_AGENT],\n categories: [...ALL_CATEGORIES],\n defaultHiredIds: [...DEFAULT_HIRED_IDS],\n chatSuggestions: [...CHAT_SUGGESTIONS],\n });\n}\n","/**\n * Resolve catalog / chat `agentKey` values to ERC-8004 registry `agentId`.\n * Supports numeric strings, `beam-default` (token 1), and `chain-{id}`.\n */\nexport function resolveStardormChainAgentId(agentKey: string): number | null {\n const trimmed = agentKey.trim();\n if (/^\\d+$/.test(trimmed)) {\n const n = Number.parseInt(trimmed, 10);\n return Number.isFinite(n) && n > 0 ? n : null;\n }\n if (/^beam-default$/i.test(trimmed)) return 1;\n const m = /^chain-(\\d+)$/i.exec(trimmed);\n if (m) {\n const n = Number.parseInt(m[1], 10);\n return Number.isFinite(n) && n > 0 ? n : null;\n }\n return null;\n}\n\n/** Reverse of `resolveStardormChainAgentId`: registry id → canonical catalog id. */\nexport function resolveStardormAgentKey(\n chainAgentId: number | bigint | string,\n): string | null {\n const n =\n typeof chainAgentId === \"string\"\n ? Number.parseInt(chainAgentId, 10)\n : Number(chainAgentId);\n if (!Number.isFinite(n) || n <= 0) return null;\n if (n === 1) return \"beam-default\";\n return `chain-${n}`;\n}\n","import { z } from \"zod\";\r\n\r\nexport const authChallengeBodySchema = z.object({\r\n walletAddress: z.string().min(1),\r\n});\r\n\r\nexport const authChallengeResponseSchema = z.object({\r\n message: z.string().min(1),\r\n});\r\n\r\nexport const authVerifyBodySchema = z.object({\r\n walletAddress: z.string().min(1),\r\n message: z.string().min(1),\r\n signature: z.string().min(1),\r\n});\r\n\r\nexport const authVerifyResponseSchema = z.object({\r\n accessToken: z.string().min(1),\r\n});\r\n\r\nexport const authMeResponseSchema = z.object({\r\n walletAddress: z.string().min(1),\r\n});\r\n\r\nexport type AuthChallengeBody = z.infer<typeof authChallengeBodySchema>;\r\nexport type AuthChallengeResponse = z.infer<typeof authChallengeResponseSchema>;\r\nexport type AuthVerifyBody = z.infer<typeof authVerifyBodySchema>;\r\nexport type AuthVerifyResponse = z.infer<typeof authVerifyResponseSchema>;\r\nexport type AuthMeResponse = z.infer<typeof authMeResponseSchema>;\r\n","import { z } from \"zod\";\r\n\r\n/**\r\n * Source of truth for backend handler ids implemented in\r\n * `stardorm/backend/src/handlers/handlers.service.ts`. Keep in sync.\r\n */\r\nexport const HANDLER_ACTION_IDS = [\r\n \"generate_tax_report\",\r\n \"create_x402_payment\",\r\n /** Fiat checkout via Stripe; webhook fulfills ERC-20 transfer from treasury key. */\r\n \"on_ramp_tokens\",\r\n /** Stripe Identity hosted verification for the signed-in wallet user. */\r\n \"complete_stripe_kyc\",\r\n /** Issue a virtual payment card record with billing profile and spend balance. */\r\n \"create_credit_card\",\r\n /** PDF + structured snapshot: payment requests, on-ramps, cards, KYC for this wallet. */\r\n \"generate_payment_invoice\",\r\n /** Summary report across payment requests, on-ramps, virtual cards, and KYC status. */\r\n \"generate_financial_activity_report\",\r\n /** Confirms a native (gas token) transfer draft; user signs in their wallet / Beam Send. */\r\n \"draft_native_transfer\",\r\n /** Confirms an ERC-20 transfer draft; user signs in their wallet / Beam Send. */\r\n \"draft_erc20_transfer\",\r\n /** Confirms an NFT (ERC-721 / ERC-1155) transfer draft; user signs in their wallet / Beam Send. */\r\n \"draft_nft_transfer\",\r\n] as const;\r\n\r\nexport type HandlerActionId = (typeof HANDLER_ACTION_IDS)[number];\r\n\r\nexport function isHandlerActionId(id: string): id is HandlerActionId {\r\n return (HANDLER_ACTION_IDS as readonly string[]).includes(id);\r\n}\r\n\r\nexport const handlerActionIdSchema = z.enum(HANDLER_ACTION_IDS);\r\n\r\nexport const handlersListResponseSchema = z.object({\r\n handlers: z.array(handlerActionIdSchema),\r\n});\r\n\r\nexport type HandlersListResponse = z.infer<typeof handlersListResponseSchema>;\r\n","import { z } from \"zod\";\r\n\r\nexport const storageUploadBodySchema = z.object({\r\n content: z.string().min(1),\r\n});\r\n\r\nexport const storageUploadResponseSchema = z.object({\r\n rootHash: z.string().min(1),\r\n txHash: z.string().optional(),\r\n});\r\n\r\nexport type StorageUploadBody = z.infer<typeof storageUploadBodySchema>;\r\nexport type StorageUploadResponse = z.infer<typeof storageUploadResponseSchema>;\r\n","import { z } from \"zod\";\r\nimport { handlerActionIdSchema } from \"./handlers.js\";\r\n\r\nexport const stardormChatRichRowSchema = z.object({\r\n label: z.string(),\r\n value: z.string(),\r\n});\r\n\r\n/** One selectable asset row for the x402 checkout form rich block. */\r\nexport const x402SupportedAssetSchema = z.object({\r\n name: z.string().min(1).max(64),\r\n symbol: z.string().min(1).max(32),\r\n icon: z.string().min(1).max(512),\r\n decimals: z.number().int().min(0).max(36),\r\n address: z.string().min(1).max(66),\r\n usdValue: z.number().finite().nonnegative().optional(),\r\n});\r\n\r\nexport type X402SupportedAsset = z.infer<typeof x402SupportedAssetSchema>;\r\n\r\nconst stardormChatRichRows = z.array(stardormChatRichRowSchema).max(32).optional();\r\n\r\nexport const stardormChatRichBlockSchema = z.discriminatedUnion(\"type\", [\r\n z.object({\r\n type: z.literal(\"report\"),\r\n title: z.string().min(1),\r\n rows: stardormChatRichRows,\r\n }),\r\n z.object({\r\n type: z.literal(\"invoice\"),\r\n title: z.string().min(1),\r\n rows: stardormChatRichRows,\r\n }),\r\n z.object({\r\n type: z.literal(\"tx\"),\r\n title: z.string().min(1),\r\n rows: stardormChatRichRows,\r\n }),\r\n z.object({\r\n type: z.literal(\"x402_checkout_form\"),\r\n title: z.string().min(1).max(200),\r\n intro: z.string().max(2000).optional(),\r\n /** Paywalled HTTP resource URL for x402 clients (optional). */\r\n resourceUrl: z.string().url().max(2048).optional(),\r\n supportedAssets: z.array(x402SupportedAssetSchema).min(1).max(24),\r\n networks: z\r\n .array(\r\n z.object({\r\n id: z.string().min(1).max(64),\r\n label: z.string().min(1).max(120),\r\n }),\r\n )\r\n .max(16)\r\n .optional(),\r\n }),\r\n z.object({\r\n type: z.literal(\"on_ramp_checkout_form\"),\r\n title: z.string().min(1).max(200),\r\n intro: z.string().max(2000).optional(),\r\n supportedAssets: z.array(x402SupportedAssetSchema).min(1).max(24),\r\n networks: z\r\n .array(\r\n z.object({\r\n id: z.string().min(1).max(64),\r\n label: z.string().min(1).max(120),\r\n }),\r\n )\r\n .max(16)\r\n .optional(),\r\n }),\r\n z.object({\r\n type: z.literal(\"credit_card_checkout_form\"),\r\n title: z.string().min(1).max(200),\r\n intro: z.string().max(2000).optional(),\r\n /** Pre-filled ISO 4217 currency in the form (e.g. USD). */\r\n defaultCurrency: z.string().length(3).optional(),\r\n }),\r\n z.object({\r\n type: z.literal(\"credit_card\"),\r\n title: z.string().min(1),\r\n rows: stardormChatRichRows,\r\n }),\r\n]);\r\n\r\nexport type StardormChatRichBlock = z.infer<typeof stardormChatRichBlockSchema>;\r\n\r\nexport const stardormChatJsonBodySchema = z.object({\r\n message: z.string().min(1),\r\n});\r\n\r\nexport type StardormChatJsonBody = z.infer<typeof stardormChatJsonBodySchema>;\r\n\r\nexport const stardormChatStructuredSchema = z.object({\r\n text: z.string(),\r\n handler: handlerActionIdSchema.optional(),\r\n params: z.unknown().optional(),\r\n});\r\n\r\nexport const stardormChatComputeSchema = z.object({\r\n model: z.string(),\r\n verified: z.boolean(),\r\n chatId: z.string().optional(),\r\n provider: z.string(),\r\n computeNetwork: z.string(),\r\n});\r\n\r\nexport const stardormChatAttachmentSchema = z.object({\r\n id: z.string().min(1),\r\n name: z.string(),\r\n mimeType: z.string(),\r\n hash: z.string().min(1),\r\n size: z.string().optional(),\r\n});\r\n\r\nexport type StardormChatAttachment = z.infer<typeof stardormChatAttachmentSchema>;\r\n\r\nexport const stardormChatSuccessSchema = z.object({\r\n agentKey: z.string().min(1),\r\n reply: z.string(),\r\n structured: stardormChatStructuredSchema.optional(),\r\n /** Structured card rows for the client (model or server-generated). */\r\n rich: stardormChatRichBlockSchema.optional(),\r\n /** Files the server uploaded to 0G Storage from the user's chat turn (echoed for immediate render). */\r\n attachments: z.array(stardormChatAttachmentSchema).optional(),\r\n compute: stardormChatComputeSchema,\r\n});\r\n\r\nexport type StardormChatSuccess = z.infer<typeof stardormChatSuccessSchema>;\r\n\r\nexport const stardormChatClientErrorSchema = z.object({\r\n error: z.string().min(1),\r\n});\r\n\r\nexport const stardormChatClientResultSchema = z.union([\r\n stardormChatSuccessSchema,\r\n stardormChatClientErrorSchema,\r\n]);\r\n\r\nexport type StardormChatClientResult = z.infer<typeof stardormChatClientResultSchema>;\r\n","import { z } from \"zod\";\r\nimport { handlerActionIdSchema } from \"./handlers.js\";\r\nimport { stardormChatRichBlockSchema } from \"./chat-api.js\";\r\n\r\nexport const userAvatarPresetSchema = z.enum([\"male\", \"female\"]);\r\n\r\nexport const userPreferencesSchema = z.object({\r\n autoRoutePrompts: z.boolean(),\r\n onchainReceipts: z.boolean(),\r\n emailNotifications: z.boolean(),\r\n avatarPreset: userAvatarPresetSchema.default(\"male\"),\r\n});\r\n\r\nexport const publicUserSchema = z.object({\r\n id: z.string().min(1),\r\n walletAddress: z.string().min(1),\r\n displayName: z.string().optional(),\r\n email: z.string().optional(),\r\n activeAgentId: z.string().min(1),\r\n /** Selected chat thread id when multi-conversation is enabled. */\r\n activeConversationId: z.string().min(1).optional(),\r\n preferences: userPreferencesSchema,\r\n lastLoginAt: z.coerce.date().optional(),\r\n createdAt: z.coerce.date().optional(),\r\n updatedAt: z.coerce.date().optional(),\r\n});\r\n\r\nexport const updateUserBodySchema = z.object({\r\n displayName: z.string().optional(),\r\n email: z.string().nullable().optional(),\r\n activeAgentId: z.string().optional(),\r\n activeConversationId: z.string().nullable().optional(),\r\n preferences: userPreferencesSchema.partial().optional(),\r\n});\r\n\r\nexport const userUploadResultSchema = z.object({\r\n rootHash: z.string().min(1),\r\n txHash: z.string().optional(),\r\n originalName: z.string(),\r\n mimeType: z.string(),\r\n size: z.number().int().nonnegative(),\r\n});\r\n\r\nexport const executeHandlerBodySchema = z.object({\r\n handler: handlerActionIdSchema,\r\n params: z.unknown().optional(),\r\n /** Mongo id of the chat message that displayed the handler CTA (required). */\r\n ctaMessageId: z.string().min(1),\r\n});\r\n\r\nconst handlerAttachmentSchema = z.object({\r\n rootHash: z.string(),\r\n mimeType: z.string(),\r\n name: z.string(),\r\n});\r\n\r\nexport const executeHandlerResponseSchema = z.object({\r\n message: z.string(),\r\n attachments: z.array(handlerAttachmentSchema).optional(),\r\n data: z.record(z.string(), z.unknown()).optional(),\r\n rich: stardormChatRichBlockSchema.optional(),\r\n});\r\n\r\nexport type UserAvatarPreset = z.infer<typeof userAvatarPresetSchema>;\r\n\r\nexport type PublicUser = z.infer<typeof publicUserSchema>;\r\nexport type UpdateUserBody = z.infer<typeof updateUserBodySchema>;\r\nexport type UserUploadResult = z.infer<typeof userUploadResultSchema>;\r\nexport type ExecuteHandlerBody = z.infer<typeof executeHandlerBodySchema>;\r\nexport type ExecuteHandlerResponse = z.infer<typeof executeHandlerResponseSchema>;\r\n","import { z } from \"zod\";\r\nimport { handlerActionIdSchema } from \"./handlers.js\";\r\nimport { stardormChatRichBlockSchema } from \"./chat-api.js\";\r\n\r\nexport const chatHistoryQuerySchema = z.object({\r\n limit: z.coerce.number().int().min(1).max(100).default(40),\r\n /** When omitted, the server uses the user’s active conversation. */\r\n conversationId: z.string().min(1).optional(),\r\n /**\r\n * Opaque cursor from the previous response’s `nextCursorOlder` — loads older messages\r\n * than the oldest message in the last batch (prepends chronologically in the client).\r\n */\r\n cursor: z.string().min(1).optional(),\r\n});\r\n\r\nexport type ChatHistoryQuery = z.infer<typeof chatHistoryQuerySchema>;\r\n\r\nexport const chatHistoryAttachmentSchema = z.object({\r\n id: z.string(),\r\n mimeType: z.string(),\r\n name: z.string(),\r\n hash: z.string(),\r\n size: z.string().optional(),\r\n});\r\n\r\nexport const chatHistoryHandlerCtaSchema = z.object({\r\n handler: handlerActionIdSchema,\r\n params: z.record(z.unknown()),\r\n});\r\n\r\n/** Post-execute affordances derived from handler result (x402 checkout, tax PDF, …). */\r\nexport const chatFollowUpSchema = z.discriminatedUnion(\"kind\", [\r\n z.object({\r\n kind: z.literal(\"x402_checkout\"),\r\n /** App-relative path, e.g. `/pay/<mongoId>`. */\r\n payPath: z.string().min(1),\r\n paymentRequestId: z.string().min(1),\r\n }),\r\n z.object({\r\n kind: z.literal(\"tax_report_pdf\"),\r\n attachmentId: z.string().min(1),\r\n name: z.string().min(1),\r\n }),\r\n z.object({\r\n kind: z.literal(\"stripe_on_ramp\"),\r\n checkoutUrl: z.string().url(),\r\n onRampId: z.string().min(1),\r\n }),\r\n z.object({\r\n kind: z.literal(\"stripe_identity\"),\r\n verificationUrl: z.string().url(),\r\n verificationSessionId: z.string().min(1),\r\n }),\r\n z.object({\r\n kind: z.literal(\"credit_card_ready\"),\r\n creditCardId: z.string().min(1),\r\n /** App path for managing the card balance (e.g. /dashboard). */\r\n dashboardPath: z.string().min(1),\r\n }),\r\n]);\r\n\r\nexport const chatHistoryMessageSchema = z.object({\r\n id: z.string(),\r\n role: z.enum([\"user\", \"agent\"]),\r\n agentKey: z.string().optional(),\r\n content: z.string(),\r\n createdAt: z.number(),\r\n attachments: z.array(chatHistoryAttachmentSchema).optional(),\r\n rich: stardormChatRichBlockSchema.optional(),\r\n handlerCta: chatHistoryHandlerCtaSchema.optional(),\r\n followUp: chatFollowUpSchema.optional(),\r\n model: z.string().optional(),\r\n verified: z.boolean().optional(),\r\n chatId: z.string().optional(),\r\n provider: z.string().optional(),\r\n});\r\n\r\nexport const chatHistoryResponseSchema = z.object({\r\n conversationId: z.string(),\r\n agentKey: z.string(),\r\n messages: z.array(chatHistoryMessageSchema),\r\n /** True when more older messages exist before this batch. */\r\n hasMoreOlder: z.boolean(),\r\n /** Pass as `cursor` on the next request to load older messages. */\r\n nextCursorOlder: z.string().optional(),\r\n});\r\n\r\nexport type ChatHistoryAttachment = z.infer<typeof chatHistoryAttachmentSchema>;\r\nexport type ChatFollowUp = z.infer<typeof chatFollowUpSchema>;\r\nexport type ChatHistoryMessage = z.infer<typeof chatHistoryMessageSchema>;\r\nexport type ChatHistoryResponse = z.infer<typeof chatHistoryResponseSchema>;\r\n\r\nexport const conversationSummarySchema = z.object({\r\n id: z.string().min(1),\r\n agentKey: z.string().min(1),\r\n title: z.string().optional(),\r\n lastMessageAt: z.coerce.date(),\r\n createdAt: z.coerce.date().optional(),\r\n});\r\n\r\nexport const conversationsQuerySchema = z.object({\r\n limit: z.coerce.number().int().min(1).max(50).default(25),\r\n /** Opaque cursor from the previous response’s `nextCursor`. */\r\n cursor: z.string().min(1).optional(),\r\n});\r\n\r\nexport type ConversationsQuery = z.infer<typeof conversationsQuerySchema>;\r\n\r\nexport const conversationsPageResponseSchema = z.object({\r\n conversations: z.array(conversationSummarySchema),\r\n hasMore: z.boolean(),\r\n nextCursor: z.string().optional(),\r\n});\r\n\r\n/** @deprecated Use `conversationsPageResponseSchema` — same shape. */\r\nexport const conversationsListResponseSchema = conversationsPageResponseSchema;\r\n\r\nexport const createConversationBodySchema = z.object({\r\n title: z.string().max(120).optional(),\r\n agentKey: z.string().min(1).optional(),\r\n});\r\n\r\nexport type ConversationSummary = z.infer<typeof conversationSummarySchema>;\r\nexport type ConversationsPageResponse = z.infer<typeof conversationsPageResponseSchema>;\r\nexport type ConversationsListResponse = ConversationsPageResponse;\r\nexport type CreateConversationBody = z.infer<typeof createConversationBodySchema>;\r\n\r\nexport const deleteConversationResponseSchema = z.object({\r\n deleted: z.literal(true),\r\n});\r\n\r\nexport type DeleteConversationResponse = z.infer<typeof deleteConversationResponseSchema>;\r\n","import { z } from \"zod\";\r\n\r\n/** One feedback row from the Stardorm subgraph (ReputationRegistry `NewFeedback`). */\r\nexport const agentOnchainFeedbackItemSchema = z.object({\r\n id: z.string(),\r\n agentId: z.number(),\r\n clientAddress: z.string(),\r\n feedbackIndex: z.string(),\r\n value: z.string(),\r\n valueDecimals: z.number().int().min(0).max(18),\r\n tag1: z.string(),\r\n tag2: z.string(),\r\n endpoint: z.string(),\r\n feedbackURI: z.string(),\r\n feedbackHash: z.string(),\r\n revoked: z.boolean(),\r\n blockNumber: z.number(),\r\n blockTimestamp: z.number(),\r\n transactionHash: z.string(),\r\n});\r\n\r\nexport type AgentOnchainFeedbackItem = z.infer<typeof agentOnchainFeedbackItemSchema>;\r\n\r\n/** Query string for `GET /agents/:agentKey/feedbacks` (subgraph `first` / `skip`). */\r\nexport const agentFeedbacksQuerySchema = z.object({\r\n limit: z\r\n .union([z.string(), z.number()])\r\n .optional()\r\n .transform((v) => {\r\n if (v === undefined) return 20;\r\n const n = typeof v === \"string\" ? Number.parseInt(v, 10) : v;\r\n if (!Number.isFinite(n)) return 20;\r\n return Math.min(50, Math.max(1, Math.trunc(n)));\r\n }),\r\n skip: z\r\n .union([z.string(), z.number()])\r\n .optional()\r\n .transform((v) => {\r\n if (v === undefined) return 0;\r\n const n = typeof v === \"string\" ? Number.parseInt(v, 10) : v;\r\n if (!Number.isFinite(n)) return 0;\r\n return Math.max(0, Math.trunc(n));\r\n }),\r\n});\r\n\r\nexport type AgentFeedbacksQuery = z.infer<typeof agentFeedbacksQuerySchema>;\r\n\r\n/** Paginated page (infinite scroll / cursor-style skip). */\r\nexport const agentFeedbacksPageResponseSchema = z.object({\r\n feedbacks: z.array(agentOnchainFeedbackItemSchema),\r\n page: z.object({\r\n limit: z.number().int().min(1).max(50),\r\n skip: z.number().int().min(0),\r\n hasMore: z.boolean(),\r\n }),\r\n});\r\n\r\nexport type AgentFeedbacksPageResponse = z.infer<typeof agentFeedbacksPageResponseSchema>;\r\n","import { z } from \"zod\";\nimport { stardormChatAttachmentSchema } from \"./chat-api.js\";\n\nconst evmTxHashSchema = z\n .string()\n .regex(/^0x[a-fA-F0-9]{64}$/i, \"Invalid transaction hash\");\n\nconst evmAddressSchema = z\n .string()\n .regex(/^0x[a-fA-F0-9]{40}$/i, \"Invalid address\");\n\n/**\n * Body for POST `/payments/:id/pay`.\n * Either record a broadcast EVM tx (`txHash`), or submit a full x402 `PaymentPayload` for facilitator verify+settle when `X402_FACILITATOR_URL` is configured.\n */\nexport const paymentSettlementBodySchema = z\n .object({\n txHash: evmTxHashSchema.optional(),\n payerAddress: evmAddressSchema.optional(),\n /** Matches @x402/core `PaymentPayload` (x402Version, accepted, payload, …). */\n x402PaymentPayload: z.record(z.string(), z.unknown()).optional(),\n })\n .superRefine((val, ctx) => {\n if (!val.txHash && !val.x402PaymentPayload) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Provide txHash (direct settlement) or x402PaymentPayload (facilitator).\",\n path: [\"txHash\"],\n });\n }\n if (val.txHash && val.x402PaymentPayload) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Provide only one of txHash or x402PaymentPayload.\",\n path: [\"txHash\"],\n });\n }\n });\n\nexport type PaymentSettlementBody = z.infer<typeof paymentSettlementBodySchema>;\n\nexport const paymentRequestTypeSchema = z.enum([\"on-chain\", \"x402\"]);\n\nexport const paymentRequestStatusSchema = z.enum([\n \"pending\",\n \"paid\",\n \"expired\",\n \"cancelled\",\n]);\n\nexport const publicPaymentRequestSchema = z.object({\n id: z.string(),\n type: paymentRequestTypeSchema,\n status: paymentRequestStatusSchema,\n title: z.string(),\n description: z.string().optional(),\n asset: z.string(),\n amount: z.string(),\n payTo: z.string(),\n network: z.string(),\n expiresAt: z.string().optional(),\n resourceId: z.string().optional(),\n resourceUrl: z.string().max(2048).optional(),\n decimals: z.number().int().min(0).max(36).optional(),\n x402Payload: z.record(z.string(), z.unknown()).optional(),\n attachment: stardormChatAttachmentSchema.optional(),\n /** Set when status is `paid` (on-chain settlement recorded). */\n txHash: z.string().optional(),\n paidByWallet: z.string().optional(),\n});\n\nexport type PublicPaymentRequest = z.infer<typeof publicPaymentRequestSchema>;\n\n/** Query for GET `/users/me/payment-requests`. */\nexport const mePaymentRequestsQuerySchema = z.object({\n limit: z.coerce.number().int().min(1).max(50).default(20),\n});\n\nexport type MePaymentRequestsQuery = z.infer<typeof mePaymentRequestsQuerySchema>;\n\nexport const paymentRequestsListResponseSchema = z.object({\n items: z.array(publicPaymentRequestSchema),\n});\n\nexport type PaymentRequestsListResponse = z.infer<\n typeof paymentRequestsListResponseSchema\n>;\n","import { z } from \"zod\";\nimport { x402SupportedAssetSchema } from \"./chat-api.js\";\n\nexport const onRampFormNetworkOptionSchema = z.object({\n id: z.string().min(1).max(64),\n label: z.string().min(1).max(120),\n});\n\n/** Persisted on the chat CTA row until the user submits the on-ramp form. */\nexport const onRampFormCtaParamsSchema = z.object({\n _onRampForm: z.literal(true),\n supportedAssets: z.array(x402SupportedAssetSchema).min(1).max(24),\n networks: z.array(onRampFormNetworkOptionSchema).max(16).optional(),\n intro: z.string().max(2000).optional(),\n});\n\nexport type OnRampFormCtaParams = z.infer<typeof onRampFormCtaParamsSchema>;\n\nexport function isOnRampFormCtaParams(v: unknown): v is OnRampFormCtaParams {\n return onRampFormCtaParamsSchema.safeParse(v).success;\n}\n\nconst weiString = z.union([\n z\n .string()\n .trim()\n .regex(\n /^[1-9]\\d*$/,\n \"tokenAmountWei must be base units (positive integer string, no decimals)\",\n ),\n z.number().int().positive().transform((n) => String(n)),\n]);\n\nconst evmAddr = z\n .string()\n .min(1)\n .refine(\n (s) => /^0x[a-fA-F0-9]{40}$/.test(s.trim()),\n \"must be a 0x-prefixed 20-byte address\",\n )\n .transform((s) => s.trim().toLowerCase());\n\n/** Execution payload for `on_ramp_tokens` (Stripe Checkout + treasury ERC-20 send). */\nexport const onRampTokensInputSchema = z.object({\n recipientWallet: evmAddr,\n network: z.string().min(1).max(64),\n tokenAddress: evmAddr,\n tokenDecimals: z.number().int().min(0).max(36),\n tokenSymbol: z.string().min(1).max(32),\n tokenAmountWei: weiString,\n /** Optional spot reference for analytics / UI (per supported token). */\n usdValue: z.number().finite().nonnegative().optional(),\n /** Total USD charged via Stripe (cents). Minimum $1.00. */\n usdAmountCents: z.number().int().min(100).max(10_000_000),\n});\n\nexport type OnRampTokensInput = z.infer<typeof onRampTokensInputSchema>;\n\nexport const onRampRecordStatusSchema = z.enum([\n \"pending_checkout\",\n \"pending_payment\",\n \"paid_pending_transfer\",\n \"fulfilled\",\n \"failed\",\n \"canceled\",\n]);\n\nexport type OnRampRecordStatus = z.infer<typeof onRampRecordStatusSchema>;\n\nexport const onRampRecordSchema = z.object({\n id: z.string().min(1),\n status: onRampRecordStatusSchema,\n walletAddress: z.string().min(1),\n recipientWallet: z.string().min(1),\n network: z.string().min(1),\n tokenAddress: z.string().min(1),\n tokenDecimals: z.number().int().min(0).max(36),\n tokenSymbol: z.string().min(1),\n tokenAmountWei: z.string().min(1),\n usdAmountCents: z.number().int().nonnegative(),\n usdValue: z.number().finite().nonnegative().optional(),\n stripeCheckoutSessionId: z.string().optional(),\n stripePaymentIntentId: z.string().optional(),\n fulfillmentTxHash: z.string().optional(),\n errorMessage: z.string().optional(),\n createdAt: z.coerce.date().optional(),\n updatedAt: z.coerce.date().optional(),\n});\n\nexport type OnRampRecord = z.infer<typeof onRampRecordSchema>;\n\n/** Query for GET `/users/me/on-ramps`. */\nexport const meOnRampsQuerySchema = z.object({\n limit: z.coerce.number().int().min(1).max(50).default(20),\n});\n\nexport type MeOnRampsQuery = z.infer<typeof meOnRampsQuerySchema>;\n\nexport const onRampsListResponseSchema = z.object({\n items: z.array(onRampRecordSchema),\n});\n\nexport type OnRampsListResponse = z.infer<typeof onRampsListResponseSchema>;\n","import { z } from \"zod\";\n\n/** Stripe Identity–backed lifecycle for a wallet user. */\nexport const userKycStatusSchema = z.enum([\n \"not_started\",\n \"pending\",\n \"processing\",\n \"verified\",\n \"requires_input\",\n \"canceled\",\n]);\n\nexport type UserKycStatus = z.infer<typeof userKycStatusSchema>;\n\nexport const stripeKycInputSchema = z\n .object({\n /** App path + query (e.g. `/` or `/?conversation=<id>`); joined with `APP_PUBLIC_URL` for Stripe `return_url`. */\n returnPath: z.string().min(1).max(512).optional(),\n })\n .strict();\n\nexport type StripeKycInput = z.infer<typeof stripeKycInputSchema>;\n\nexport const userKycStatusDocumentSchema = z.object({\n walletAddress: z.string().min(1),\n status: userKycStatusSchema,\n stripeVerificationSessionId: z.string().optional(),\n lastStripeEventType: z.string().optional(),\n lastError: z.string().optional(),\n createdAt: z.coerce.date().optional(),\n updatedAt: z.coerce.date().optional(),\n});\n\nexport type UserKycStatusDocument = z.infer<typeof userKycStatusDocumentSchema>;\n","import { z } from \"zod\";\r\n\r\nexport const createCreditCardInputSchema = z.object({\r\n firstName: z.string().trim().min(1).max(80),\r\n lastName: z.string().trim().min(1).max(80),\r\n line1: z.string().trim().min(1).max(120),\r\n line2: z.string().trim().max(120).optional(),\r\n city: z.string().trim().min(1).max(80),\r\n region: z.string().trim().min(1).max(80),\r\n postalCode: z.string().trim().min(1).max(20),\r\n countryCode: z\r\n .string()\r\n .trim()\r\n .length(2)\r\n .transform((c) => c.toUpperCase()),\r\n cardLabel: z.string().trim().min(1).max(80).optional(),\r\n currency: z\r\n .string()\r\n .trim()\r\n .length(3)\r\n .transform((c) => c.toUpperCase())\r\n .optional(),\r\n /** Opening balance in minor units (e.g. USD cents). */\r\n initialBalanceCents: z.coerce.number().int().min(0).max(100_000_000).optional(),\r\n});\r\n\r\nexport type CreateCreditCardInput = z.infer<typeof createCreditCardInputSchema>;\r\n\r\n/** Persisted on the chat CTA row until the user submits the virtual-card billing form. */\r\nexport const creditCardFormCtaParamsSchema = z.object({\r\n _creditCardForm: z.literal(true),\r\n intro: z.string().max(2000).optional(),\r\n defaultCurrency: z\r\n .string()\r\n .trim()\r\n .length(3)\r\n .transform((c) => c.toUpperCase())\r\n .optional(),\r\n});\r\n\r\nexport type CreditCardFormCtaParams = z.infer<typeof creditCardFormCtaParamsSchema>;\r\n\r\nexport function isCreditCardFormCtaParams(v: unknown): v is CreditCardFormCtaParams {\r\n return creditCardFormCtaParamsSchema.safeParse(v).success;\r\n}\r\n\r\nexport const creditCardPublicSchema = z.object({\r\n id: z.string().min(1),\r\n firstName: z.string(),\r\n lastName: z.string(),\r\n cardLabel: z.string().optional(),\r\n line1: z.string(),\r\n line2: z.string().optional(),\r\n city: z.string(),\r\n region: z.string(),\r\n postalCode: z.string(),\r\n countryCode: z.string(),\r\n currency: z.string(),\r\n balanceCents: z.number().int().nonnegative(),\r\n last4: z.string(),\r\n networkBrand: z.string(),\r\n status: z.enum([\"active\", \"frozen\"]),\r\n createdAt: z.coerce.date().optional(),\r\n updatedAt: z.coerce.date().optional(),\r\n /** Present on some `POST …/withdraw` responses when native 0G was sent from the treasury. */\r\n lastWithdrawTxHash: z\r\n .string()\r\n .regex(/^0x[a-fA-F0-9]{64}$/)\r\n .optional(),\r\n});\r\n\r\nexport type CreditCardPublic = z.infer<typeof creditCardPublicSchema>;\r\n\r\n/** Wallet-authenticated only; never included in list cards responses. */\r\nexport const creditCardSensitiveDetailsSchema = z.object({\r\n cardId: z.string().min(1),\r\n pan: z.string().regex(/^\\d{16}$/),\r\n expiryMonth: z.coerce.number().int().min(1).max(12),\r\n expiryYear: z.coerce.number().int().min(2000).max(2100),\r\n cvv: z.string().regex(/^\\d{3,4}$/),\r\n});\r\n\r\nexport type CreditCardSensitiveDetails = z.infer<\r\n typeof creditCardSensitiveDetailsSchema\r\n>;\r\n\r\nexport const creditCardsListResponseSchema = z.object({\r\n cards: z.array(creditCardPublicSchema),\r\n});\r\n\r\nexport type CreditCardsListResponse = z.infer<typeof creditCardsListResponseSchema>;\r\n\r\nexport const creditCardFundBodySchema = z\r\n .object({\r\n amountCents: z.coerce.number().int().min(1).max(100_000_000),\r\n fundingTxHash: z\r\n .string()\r\n .regex(/^0x[a-fA-F0-9]{64}$/)\r\n .optional(),\r\n fundingChainId: z.coerce.number().int().positive().optional(),\r\n })\r\n .refine(\r\n (d) =>\r\n (d.fundingTxHash == null && d.fundingChainId == null) ||\r\n (d.fundingTxHash != null && d.fundingChainId != null),\r\n {\r\n message:\r\n \"fundingTxHash and fundingChainId must both be provided or both omitted\",\r\n path: [\"fundingTxHash\"],\r\n },\r\n );\r\n\r\nexport type CreditCardFundBody = z.infer<typeof creditCardFundBodySchema>;\r\n\r\nexport const creditCardFundQuoteQuerySchema = z.object({\r\n amountCents: z.coerce.number().int().min(1).max(100_000_000),\r\n});\r\n\r\nexport type CreditCardFundQuoteQuery = z.infer<\r\n typeof creditCardFundQuoteQuerySchema\r\n>;\r\n\r\nexport const creditCardFundQuoteOffChainSchema = z.object({\r\n onchainFundingRequired: z.literal(false),\r\n});\r\n\r\nexport const creditCardFundQuoteOnChainSchema = z.object({\r\n onchainFundingRequired: z.literal(true),\r\n chainId: z.number().int(),\r\n recipient: z.string().min(1),\r\n minNativeWei: z.string().regex(/^\\d+$/),\r\n usdValue: z.number().finite().positive(),\r\n nativeSymbol: z.string().min(1),\r\n nativeDecimals: z.number().int().min(0).max(18),\r\n});\r\n\r\nexport const creditCardFundQuoteResponseSchema = z.discriminatedUnion(\r\n \"onchainFundingRequired\",\r\n [creditCardFundQuoteOffChainSchema, creditCardFundQuoteOnChainSchema],\r\n);\r\n\r\nexport type CreditCardFundQuoteResponse = z.infer<\r\n typeof creditCardFundQuoteResponseSchema\r\n>;\r\n\r\nexport const creditCardWithdrawBodySchema = z.object({\r\n amountCents: z.coerce.number().int().min(1).max(100_000_000),\r\n});\r\n\r\nexport type CreditCardWithdrawBody = z.infer<typeof creditCardWithdrawBodySchema>;\r\n","import { z } from \"zod\";\n\n/** UTC calendar day (same shape as tax report date parts). */\nexport const billingDatePartSchema = z.object({\n year: z.number().int().min(2020).max(2036),\n month: z.number().int().min(1).max(12),\n day: z.number().int().min(1).max(31),\n});\n\nexport type BillingDatePart = z.infer<typeof billingDatePartSchema>;\n\nexport function billingDatePartToUtc(p: BillingDatePart): Date {\n return new Date(Date.UTC(p.year, p.month - 1, p.day));\n}\n\n/** Inclusive end of the UTC calendar day for `to` filters. */\nexport function billingRangeEndOfDay(p: BillingDatePart): Date {\n const d = billingDatePartToUtc(p);\n d.setUTCHours(23, 59, 59, 999);\n return d;\n}\n\n/** Mongo / service date bounds from optional handler `from` / `to` parts. */\nexport function billingPeriodBounds(input: {\n from?: BillingDatePart;\n to?: BillingDatePart;\n}): { from?: Date; to?: Date } {\n return {\n from: input.from ? billingDatePartToUtc(input.from) : undefined,\n to: input.to ? billingRangeEndOfDay(input.to) : undefined,\n };\n}\n\nexport const generatePaymentInvoiceInputSchema = z\n .object({\n from: billingDatePartSchema.optional(),\n to: billingDatePartSchema.optional(),\n invoiceTitle: z.string().trim().min(1).max(120).optional(),\n })\n .superRefine((val, ctx) => {\n if (!val.from || !val.to) return;\n const a = billingDatePartToUtc(val.from);\n const b = billingDatePartToUtc(val.to);\n if (Number.isNaN(a.getTime()) || Number.isNaN(b.getTime())) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Invalid calendar date\",\n });\n return;\n }\n if (a > b) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"`from` must be on or before `to`\",\n path: [\"from\"],\n });\n }\n });\n\nexport type GeneratePaymentInvoiceInput = z.infer<\n typeof generatePaymentInvoiceInputSchema\n>;\n\nexport const generateFinancialActivityReportInputSchema = z\n .object({\n from: billingDatePartSchema.optional(),\n to: billingDatePartSchema.optional(),\n reportTitle: z.string().trim().min(1).max(120).optional(),\n })\n .superRefine((val, ctx) => {\n if (!val.from || !val.to) return;\n const a = billingDatePartToUtc(val.from);\n const b = billingDatePartToUtc(val.to);\n if (Number.isNaN(a.getTime()) || Number.isNaN(b.getTime())) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Invalid calendar date\",\n });\n return;\n }\n if (a > b) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"`from` must be on or before `to`\",\n path: [\"from\"],\n });\n }\n });\n\nexport type GenerateFinancialActivityReportInput = z.infer<\n typeof generateFinancialActivityReportInputSchema\n>;\n","/**\n * ISO 3166-1 alpha-2 codes (officially assigned), sourced from the slim-2 dataset\n * (lukes/ISO-3166-Countries-with-Regional-Codes). UK is accepted as an alias for GB at validation boundaries.\n */\nconst ISO_3166_1_ALPHA2_CODES_RAW =\n \"AD AE AF AG AI AL AM AO AQ AR AS AT AU AW AX AZ BA BB BD BE BF BG BH BI BJ BL BM BN BO BQ BR BS BT BV BW BY BZ CA CC CD CF CG CH CI CK CL CM CN CO CR CU CV CW CX CY CZ DE DJ DK DM DO DZ EC EE EG EH ER ES ET FI FJ FK FM FO FR GA GB GD GE GF GG GH GI GL GM GN GP GQ GR GS GT GU GW GY HK HM HN HR HT HU ID IE IL IM IN IO IQ IR IS IT JE JM JO JP KE KG KH KI KM KN KP KR KW KY KZ LA LB LC LI LK LR LS LT LU LV LY MA MC MD ME MF MG MH MK ML MM MN MO MP MQ MR MS MT MU MV MW MX MY MZ NA NC NE NF NG NI NL NO NP NR NU NZ OM PA PE PF PG PH PK PL PM PN PR PS PT PW PY QA RE RO RS RU RW SA SB SC SD SE SG SH SI SJ SK SL SM SN SO SR SS ST SV SX SY SZ TC TD TF TG TH TJ TK TL TM TN TO TR TT TV TW TZ UA UG UM US UY UZ VA VC VE VG VI VN VU WF WS YE YT ZA ZM ZW\";\n\nexport const ISO_3166_1_ALPHA2_CODES: readonly string[] = Object.freeze(\n ISO_3166_1_ALPHA2_CODES_RAW.split(/\\s+/),\n);\n\nconst ISO_3166_1_ALPHA2_SET = new Set(ISO_3166_1_ALPHA2_CODES);\n\nexport function isIso3166Alpha2(code: string): boolean {\n const c = code.length === 2 ? code.toUpperCase() : \"\";\n return ISO_3166_1_ALPHA2_SET.has(c);\n}\n\nexport function isoCountryDisplayName(\n code: string,\n locale: string | string[] = \"en\",\n): string {\n const c = code.length === 2 ? code.toUpperCase() : code;\n try {\n const dn = new Intl.DisplayNames(locale, { type: \"region\" });\n return dn.of(c) ?? c;\n } catch {\n return c;\n }\n}\n","/** EU-27 member states (post-Brexit, excluding GB). */\nconst EU27 = new Set([\n \"AT\",\n \"BE\",\n \"BG\",\n \"HR\",\n \"CY\",\n \"CZ\",\n \"DK\",\n \"EE\",\n \"FI\",\n \"FR\",\n \"DE\",\n \"GR\",\n \"HU\",\n \"IE\",\n \"IT\",\n \"LV\",\n \"LT\",\n \"LU\",\n \"MT\",\n \"NL\",\n \"PL\",\n \"PT\",\n \"RO\",\n \"SK\",\n \"SI\",\n \"ES\",\n \"SE\",\n]);\n\nconst EEA_NON_EU = new Set([\"IS\", \"LI\", \"NO\"]);\n\nconst HIGH_TIER_OECD = new Set([\"AU\", \"CA\", \"JP\", \"KR\", \"NZ\"]);\n\n/**\n * Approximate headline rate for PDF math when native activity is priced in USD.\n * Not tax advice; every jurisdiction has nuance. Unknown ISO codes use the same default as the historical stub (0.2).\n */\nexport function taxRateForCountry(country: string): number {\n const c = country.toUpperCase();\n if (c === \"US\") return 0.22;\n if (c === \"GB\" || c === \"UK\") return 0.2;\n if (c === \"DE\" || c === \"FR\") return 0.25;\n if (c === \"SG\") return 0.17;\n if (EU27.has(c)) return 0.24;\n if (EEA_NON_EU.has(c)) return 0.24;\n if (HIGH_TIER_OECD.has(c)) return 0.25;\n return 0.2;\n}\n","import { z } from \"zod\";\r\n\r\nconst caip2Eip155 = z\r\n .string()\r\n .min(8)\r\n .max(64)\r\n .regex(\r\n /^eip155:\\d+$/,\r\n \"network must be CAIP-2 form eip155:<chainId> (e.g. eip155:16602)\",\r\n );\r\n\r\nconst evmAddress20 = z\r\n .string()\r\n .trim()\r\n .refine(\r\n (s) => /^0x[a-fA-F0-9]{40}$/.test(s),\r\n \"must be a 0x-prefixed 20-byte EVM address\",\r\n )\r\n .transform((s) => s.trim().toLowerCase());\r\n\r\n/** Positive integer string in base units (no decimals, no leading zeros except single \"0\" disallowed for valueWei — use /^[1-9]\\\\d*$/ for strictly positive). */\r\nconst positiveWeiString = z\r\n .string()\r\n .trim()\r\n .regex(\r\n /^[1-9]\\d*$/,\r\n \"must be a positive integer decimal string (base units / wei)\",\r\n );\r\n\r\nconst decimalStringNonNeg = z\r\n .string()\r\n .trim()\r\n .regex(/^\\d+$/, \"must be a non-negative integer decimal string\");\r\n\r\nconst nftStandardSchema = z.enum([\"erc721\", \"erc1155\"]);\r\n\r\nexport const draftNativeTransferInputSchema = z.object({\r\n network: caip2Eip155,\r\n to: evmAddress20,\r\n valueWei: positiveWeiString,\r\n note: z.string().max(500).optional(),\r\n});\r\n\r\nexport type DraftNativeTransferInput = z.infer<\r\n typeof draftNativeTransferInputSchema\r\n>;\r\n\r\nexport const draftErc20TransferInputSchema = z.object({\r\n network: caip2Eip155,\r\n token: evmAddress20,\r\n tokenSymbol: z.string().min(1).max(32).optional(),\r\n tokenDecimals: z.number().int().min(0).max(36),\r\n to: evmAddress20,\r\n amountWei: positiveWeiString,\r\n note: z.string().max(500).optional(),\r\n});\r\n\r\nexport type DraftErc20TransferInput = z.infer<\r\n typeof draftErc20TransferInputSchema\r\n>;\r\n\r\nexport const draftNftTransferInputSchema = z\r\n .object({\r\n network: caip2Eip155,\r\n contract: evmAddress20,\r\n standard: nftStandardSchema.default(\"erc721\"),\r\n to: evmAddress20,\r\n tokenId: decimalStringNonNeg,\r\n /** Required for ERC-1155; omit for ERC-721. */\r\n amount: positiveWeiString.optional(),\r\n note: z.string().max(500).optional(),\r\n })\r\n .superRefine((val, ctx) => {\r\n if (val.standard === \"erc1155\") {\r\n if (!val.amount) {\r\n ctx.addIssue({\r\n code: z.ZodIssueCode.custom,\r\n message: \"amount (base units) is required for ERC-1155\",\r\n path: [\"amount\"],\r\n });\r\n }\r\n } else if (val.amount != null) {\r\n ctx.addIssue({\r\n code: z.ZodIssueCode.custom,\r\n message: \"amount must be omitted for ERC-721\",\r\n path: [\"amount\"],\r\n });\r\n }\r\n });\r\n\r\nexport type DraftNftTransferInput = z.infer<typeof draftNftTransferInputSchema>;\r\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@railbeam/stardorm-api-contract",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"publishConfig": {
|
|
5
|
+
"access": "public"
|
|
6
|
+
},
|
|
7
|
+
"main": "./dist/index.js",
|
|
8
|
+
"module": "./dist/index.mjs",
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"import": "./dist/index.mjs",
|
|
14
|
+
"require": "./dist/index.js",
|
|
15
|
+
"default": "./dist/index.mjs"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsup",
|
|
20
|
+
"prepare": "npm run build"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"zod": "^3.24.2"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"tsup": "^8.4.0",
|
|
27
|
+
"typescript": "^5.8.3"
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
/** One feedback row from the Stardorm subgraph (ReputationRegistry `NewFeedback`). */
|
|
4
|
+
export const agentOnchainFeedbackItemSchema = z.object({
|
|
5
|
+
id: z.string(),
|
|
6
|
+
agentId: z.number(),
|
|
7
|
+
clientAddress: z.string(),
|
|
8
|
+
feedbackIndex: z.string(),
|
|
9
|
+
value: z.string(),
|
|
10
|
+
valueDecimals: z.number().int().min(0).max(18),
|
|
11
|
+
tag1: z.string(),
|
|
12
|
+
tag2: z.string(),
|
|
13
|
+
endpoint: z.string(),
|
|
14
|
+
feedbackURI: z.string(),
|
|
15
|
+
feedbackHash: z.string(),
|
|
16
|
+
revoked: z.boolean(),
|
|
17
|
+
blockNumber: z.number(),
|
|
18
|
+
blockTimestamp: z.number(),
|
|
19
|
+
transactionHash: z.string(),
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
export type AgentOnchainFeedbackItem = z.infer<typeof agentOnchainFeedbackItemSchema>;
|
|
23
|
+
|
|
24
|
+
/** Query string for `GET /agents/:agentKey/feedbacks` (subgraph `first` / `skip`). */
|
|
25
|
+
export const agentFeedbacksQuerySchema = z.object({
|
|
26
|
+
limit: z
|
|
27
|
+
.union([z.string(), z.number()])
|
|
28
|
+
.optional()
|
|
29
|
+
.transform((v) => {
|
|
30
|
+
if (v === undefined) return 20;
|
|
31
|
+
const n = typeof v === "string" ? Number.parseInt(v, 10) : v;
|
|
32
|
+
if (!Number.isFinite(n)) return 20;
|
|
33
|
+
return Math.min(50, Math.max(1, Math.trunc(n)));
|
|
34
|
+
}),
|
|
35
|
+
skip: z
|
|
36
|
+
.union([z.string(), z.number()])
|
|
37
|
+
.optional()
|
|
38
|
+
.transform((v) => {
|
|
39
|
+
if (v === undefined) return 0;
|
|
40
|
+
const n = typeof v === "string" ? Number.parseInt(v, 10) : v;
|
|
41
|
+
if (!Number.isFinite(n)) return 0;
|
|
42
|
+
return Math.max(0, Math.trunc(n));
|
|
43
|
+
}),
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
export type AgentFeedbacksQuery = z.infer<typeof agentFeedbacksQuerySchema>;
|
|
47
|
+
|
|
48
|
+
/** Paginated page (infinite scroll / cursor-style skip). */
|
|
49
|
+
export const agentFeedbacksPageResponseSchema = z.object({
|
|
50
|
+
feedbacks: z.array(agentOnchainFeedbackItemSchema),
|
|
51
|
+
page: z.object({
|
|
52
|
+
limit: z.number().int().min(1).max(50),
|
|
53
|
+
skip: z.number().int().min(0),
|
|
54
|
+
hasMore: z.boolean(),
|
|
55
|
+
}),
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
export type AgentFeedbacksPageResponse = z.infer<typeof agentFeedbacksPageResponseSchema>;
|
package/src/agent.ts
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
export const agentCategorySchema = z.enum([
|
|
4
|
+
"Payments",
|
|
5
|
+
"Taxes",
|
|
6
|
+
"Reports",
|
|
7
|
+
"DeFi",
|
|
8
|
+
"Compliance",
|
|
9
|
+
"General",
|
|
10
|
+
]);
|
|
11
|
+
|
|
12
|
+
export const skillHandleSchema = z.object({
|
|
13
|
+
handle: z.string().min(1),
|
|
14
|
+
label: z.string().min(1),
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
/** Absolute http(s) URL or root-relative asset path (e.g. on-chain `/images/…`). */
|
|
18
|
+
export const agentAvatarSchema = z.union([
|
|
19
|
+
z.string().url(),
|
|
20
|
+
z.string().regex(/^\/\S+/, "avatar must be a URL or a root-relative path"),
|
|
21
|
+
]);
|
|
22
|
+
|
|
23
|
+
export const agentSchema = z.object({
|
|
24
|
+
id: z.string().min(1),
|
|
25
|
+
name: z.string().min(1),
|
|
26
|
+
handle: z.string().min(1),
|
|
27
|
+
avatar: agentAvatarSchema,
|
|
28
|
+
category: agentCategorySchema,
|
|
29
|
+
tagline: z.string(),
|
|
30
|
+
description: z.string(),
|
|
31
|
+
/** From on-chain feedback / analytics when wired; omit if unknown. */
|
|
32
|
+
rating: z.number().min(0).max(5).optional(),
|
|
33
|
+
reviews: z.number().int().nonnegative().optional(),
|
|
34
|
+
hires: z.number().int().nonnegative().optional(),
|
|
35
|
+
reputation: z.number().min(0).max(100).optional(),
|
|
36
|
+
/** Estimated from indexer `feePerDay` (wei) when available; omit if unknown. */
|
|
37
|
+
pricePerMonth: z.number().nonnegative().optional(),
|
|
38
|
+
/** Raw `feePerDay` (wei, decimal string) from the subgraph. `subscribe` must send exactly `feePerDay * numDays` wei. */
|
|
39
|
+
feePerDayWei: z.string().regex(/^\d+$/).optional(),
|
|
40
|
+
/** Presence-only when we have a live signal; omit if unknown. */
|
|
41
|
+
online: z.boolean().optional(),
|
|
42
|
+
skills: z.array(z.string()),
|
|
43
|
+
creator: z.string().min(1),
|
|
44
|
+
skillHandles: z.array(skillHandleSchema).optional(),
|
|
45
|
+
chainAgentId: z.number().int().positive().optional(),
|
|
46
|
+
/** From indexer when the token is an ERC-7857 clone of another agent. */
|
|
47
|
+
isCloned: z.boolean().optional(),
|
|
48
|
+
/** Lowercase `0x` registry owner (subgraph); used for “my clone” ownership checks. */
|
|
49
|
+
ownerAddress: z.string().regex(/^0x[a-f0-9]{40}$/).optional(),
|
|
50
|
+
/** Raw on-chain registration string (hex or JSON) for owner-only URI updates. */
|
|
51
|
+
registrationUriRaw: z.string().optional(),
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
export const agentsListSchema = z.array(agentSchema).nonempty();
|
|
55
|
+
|
|
56
|
+
export type AgentCategory = z.infer<typeof agentCategorySchema>;
|
|
57
|
+
export type SkillHandle = z.infer<typeof skillHandleSchema>;
|
|
58
|
+
export type Agent = z.infer<typeof agentSchema>;
|
package/src/auth.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
export const authChallengeBodySchema = z.object({
|
|
4
|
+
walletAddress: z.string().min(1),
|
|
5
|
+
});
|
|
6
|
+
|
|
7
|
+
export const authChallengeResponseSchema = z.object({
|
|
8
|
+
message: z.string().min(1),
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
export const authVerifyBodySchema = z.object({
|
|
12
|
+
walletAddress: z.string().min(1),
|
|
13
|
+
message: z.string().min(1),
|
|
14
|
+
signature: z.string().min(1),
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
export const authVerifyResponseSchema = z.object({
|
|
18
|
+
accessToken: z.string().min(1),
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
export const authMeResponseSchema = z.object({
|
|
22
|
+
walletAddress: z.string().min(1),
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
export type AuthChallengeBody = z.infer<typeof authChallengeBodySchema>;
|
|
26
|
+
export type AuthChallengeResponse = z.infer<typeof authChallengeResponseSchema>;
|
|
27
|
+
export type AuthVerifyBody = z.infer<typeof authVerifyBodySchema>;
|
|
28
|
+
export type AuthVerifyResponse = z.infer<typeof authVerifyResponseSchema>;
|
|
29
|
+
export type AuthMeResponse = z.infer<typeof authMeResponseSchema>;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
/** UTC calendar day (same shape as tax report date parts). */
|
|
4
|
+
export const billingDatePartSchema = z.object({
|
|
5
|
+
year: z.number().int().min(2020).max(2036),
|
|
6
|
+
month: z.number().int().min(1).max(12),
|
|
7
|
+
day: z.number().int().min(1).max(31),
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
export type BillingDatePart = z.infer<typeof billingDatePartSchema>;
|
|
11
|
+
|
|
12
|
+
export function billingDatePartToUtc(p: BillingDatePart): Date {
|
|
13
|
+
return new Date(Date.UTC(p.year, p.month - 1, p.day));
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/** Inclusive end of the UTC calendar day for `to` filters. */
|
|
17
|
+
export function billingRangeEndOfDay(p: BillingDatePart): Date {
|
|
18
|
+
const d = billingDatePartToUtc(p);
|
|
19
|
+
d.setUTCHours(23, 59, 59, 999);
|
|
20
|
+
return d;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/** Mongo / service date bounds from optional handler `from` / `to` parts. */
|
|
24
|
+
export function billingPeriodBounds(input: {
|
|
25
|
+
from?: BillingDatePart;
|
|
26
|
+
to?: BillingDatePart;
|
|
27
|
+
}): { from?: Date; to?: Date } {
|
|
28
|
+
return {
|
|
29
|
+
from: input.from ? billingDatePartToUtc(input.from) : undefined,
|
|
30
|
+
to: input.to ? billingRangeEndOfDay(input.to) : undefined,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export const generatePaymentInvoiceInputSchema = z
|
|
35
|
+
.object({
|
|
36
|
+
from: billingDatePartSchema.optional(),
|
|
37
|
+
to: billingDatePartSchema.optional(),
|
|
38
|
+
invoiceTitle: z.string().trim().min(1).max(120).optional(),
|
|
39
|
+
})
|
|
40
|
+
.superRefine((val, ctx) => {
|
|
41
|
+
if (!val.from || !val.to) return;
|
|
42
|
+
const a = billingDatePartToUtc(val.from);
|
|
43
|
+
const b = billingDatePartToUtc(val.to);
|
|
44
|
+
if (Number.isNaN(a.getTime()) || Number.isNaN(b.getTime())) {
|
|
45
|
+
ctx.addIssue({
|
|
46
|
+
code: z.ZodIssueCode.custom,
|
|
47
|
+
message: "Invalid calendar date",
|
|
48
|
+
});
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (a > b) {
|
|
52
|
+
ctx.addIssue({
|
|
53
|
+
code: z.ZodIssueCode.custom,
|
|
54
|
+
message: "`from` must be on or before `to`",
|
|
55
|
+
path: ["from"],
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
export type GeneratePaymentInvoiceInput = z.infer<
|
|
61
|
+
typeof generatePaymentInvoiceInputSchema
|
|
62
|
+
>;
|
|
63
|
+
|
|
64
|
+
export const generateFinancialActivityReportInputSchema = z
|
|
65
|
+
.object({
|
|
66
|
+
from: billingDatePartSchema.optional(),
|
|
67
|
+
to: billingDatePartSchema.optional(),
|
|
68
|
+
reportTitle: z.string().trim().min(1).max(120).optional(),
|
|
69
|
+
})
|
|
70
|
+
.superRefine((val, ctx) => {
|
|
71
|
+
if (!val.from || !val.to) return;
|
|
72
|
+
const a = billingDatePartToUtc(val.from);
|
|
73
|
+
const b = billingDatePartToUtc(val.to);
|
|
74
|
+
if (Number.isNaN(a.getTime()) || Number.isNaN(b.getTime())) {
|
|
75
|
+
ctx.addIssue({
|
|
76
|
+
code: z.ZodIssueCode.custom,
|
|
77
|
+
message: "Invalid calendar date",
|
|
78
|
+
});
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
if (a > b) {
|
|
82
|
+
ctx.addIssue({
|
|
83
|
+
code: z.ZodIssueCode.custom,
|
|
84
|
+
message: "`from` must be on or before `to`",
|
|
85
|
+
path: ["from"],
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
export type GenerateFinancialActivityReportInput = z.infer<
|
|
91
|
+
typeof generateFinancialActivityReportInputSchema
|
|
92
|
+
>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve catalog / chat `agentKey` values to ERC-8004 registry `agentId`.
|
|
3
|
+
* Supports numeric strings, `beam-default` (token 1), and `chain-{id}`.
|
|
4
|
+
*/
|
|
5
|
+
export function resolveStardormChainAgentId(agentKey: string): number | null {
|
|
6
|
+
const trimmed = agentKey.trim();
|
|
7
|
+
if (/^\d+$/.test(trimmed)) {
|
|
8
|
+
const n = Number.parseInt(trimmed, 10);
|
|
9
|
+
return Number.isFinite(n) && n > 0 ? n : null;
|
|
10
|
+
}
|
|
11
|
+
if (/^beam-default$/i.test(trimmed)) return 1;
|
|
12
|
+
const m = /^chain-(\d+)$/i.exec(trimmed);
|
|
13
|
+
if (m) {
|
|
14
|
+
const n = Number.parseInt(m[1], 10);
|
|
15
|
+
return Number.isFinite(n) && n > 0 ? n : null;
|
|
16
|
+
}
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** Reverse of `resolveStardormChainAgentId`: registry id → canonical catalog id. */
|
|
21
|
+
export function resolveStardormAgentKey(
|
|
22
|
+
chainAgentId: number | bigint | string,
|
|
23
|
+
): string | null {
|
|
24
|
+
const n =
|
|
25
|
+
typeof chainAgentId === "string"
|
|
26
|
+
? Number.parseInt(chainAgentId, 10)
|
|
27
|
+
: Number(chainAgentId);
|
|
28
|
+
if (!Number.isFinite(n) || n <= 0) return null;
|
|
29
|
+
if (n === 1) return "beam-default";
|
|
30
|
+
return `chain-${n}`;
|
|
31
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { Agent, AgentCategory } from "./agent.js";
|
|
2
|
+
import { catalogResponseSchema, type CatalogResponse } from "./catalog.js";
|
|
3
|
+
|
|
4
|
+
const CHAT_SUGGESTIONS = [
|
|
5
|
+
"Summarize last month’s onchain P&L",
|
|
6
|
+
"Draft an invoice for Acme Labs",
|
|
7
|
+
"What are the best stablecoin yields right now?",
|
|
8
|
+
"Estimate my crypto tax exposure for Q3",
|
|
9
|
+
"Create an x402 checkout link I can send to a payer",
|
|
10
|
+
"Help me buy stablecoins on 0G with a card",
|
|
11
|
+
"Start identity verification for my account",
|
|
12
|
+
"Create a virtual payment card with my billing address",
|
|
13
|
+
] as const;
|
|
14
|
+
|
|
15
|
+
/** Catalog metadata only; the app does not treat these as on-chain hires without a subscription. */
|
|
16
|
+
const DEFAULT_HIRED_IDS = ["beam-default"] as const;
|
|
17
|
+
|
|
18
|
+
const ALL_CATEGORIES: readonly AgentCategory[] = [
|
|
19
|
+
"Payments",
|
|
20
|
+
"Taxes",
|
|
21
|
+
"Reports",
|
|
22
|
+
"DeFi",
|
|
23
|
+
"Compliance",
|
|
24
|
+
"General",
|
|
25
|
+
] as const;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Offline / API-only catalog: default Beam row (mirrors on-chain token 1 after ignition seed).
|
|
29
|
+
* Full marketplace listings come from the subgraph.
|
|
30
|
+
*/
|
|
31
|
+
const BEAM_DEFAULT_AGENT: Agent = {
|
|
32
|
+
id: "beam-default",
|
|
33
|
+
name: "Beam",
|
|
34
|
+
handle: "beam.0g",
|
|
35
|
+
avatar: "/images/beam.png",
|
|
36
|
+
category: "General",
|
|
37
|
+
tagline: "Your default conversational agent",
|
|
38
|
+
description:
|
|
39
|
+
"Beam routes your prompts to the best hired agent and handles general financial questions.",
|
|
40
|
+
skills: ["Routing", "General Q&A", "Wallet"],
|
|
41
|
+
creator: "Beam",
|
|
42
|
+
chainAgentId: 1,
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
/** Public marketplace payload for `GET /agents/catalog` when no subgraph is wired. */
|
|
46
|
+
export function buildStardormCatalogResponse(): CatalogResponse {
|
|
47
|
+
return catalogResponseSchema.parse({
|
|
48
|
+
agents: [BEAM_DEFAULT_AGENT],
|
|
49
|
+
categories: [...ALL_CATEGORIES],
|
|
50
|
+
defaultHiredIds: [...DEFAULT_HIRED_IDS],
|
|
51
|
+
chatSuggestions: [...CHAT_SUGGESTIONS],
|
|
52
|
+
});
|
|
53
|
+
}
|
package/src/catalog.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { agentCategorySchema, agentsListSchema } from "./agent.js";
|
|
3
|
+
|
|
4
|
+
export const catalogResponseSchema = z.object({
|
|
5
|
+
agents: agentsListSchema,
|
|
6
|
+
categories: z.array(agentCategorySchema),
|
|
7
|
+
defaultHiredIds: z.array(z.string().min(1)),
|
|
8
|
+
chatSuggestions: z.array(z.string()),
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
export type CatalogResponse = z.infer<typeof catalogResponseSchema>;
|