@5ss/ai-tools 2.11.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/CHANGELOG.md +112 -0
- package/LICENSE +21 -0
- package/README.md +221 -0
- package/dist/ai-sdk/index.d.ts +15 -0
- package/dist/ai-sdk/index.d.ts.map +1 -0
- package/dist/ai-sdk/index.js +24 -0
- package/dist/ai-sdk/index.js.map +1 -0
- package/dist/artifact-D064mHfK.js +44 -0
- package/dist/artifact-D064mHfK.js.map +1 -0
- package/dist/artifacts-O8g-40Pw.js +404 -0
- package/dist/artifacts-O8g-40Pw.js.map +1 -0
- package/dist/aws-json-CecFqzqX.js +23 -0
- package/dist/aws-json-CecFqzqX.js.map +1 -0
- package/dist/aws-service-msttbPrz.js +58 -0
- package/dist/aws-service-msttbPrz.js.map +1 -0
- package/dist/batch-BMM5dXqL.d.ts +22 -0
- package/dist/batch-BMM5dXqL.d.ts.map +1 -0
- package/dist/batch-Co1ujeAW.js +67 -0
- package/dist/batch-Co1ujeAW.js.map +1 -0
- package/dist/bedrock-agentcore-browser-a_qOs-NR.js +182 -0
- package/dist/bedrock-agentcore-browser-a_qOs-NR.js.map +1 -0
- package/dist/bedrock-agentcore-code-interpreter-MWK-8RhA.js +357 -0
- package/dist/bedrock-agentcore-code-interpreter-MWK-8RhA.js.map +1 -0
- package/dist/bytes-BxpimpQx.js +45 -0
- package/dist/bytes-BxpimpQx.js.map +1 -0
- package/dist/client-CCKGsTeI.js +743 -0
- package/dist/client-CCKGsTeI.js.map +1 -0
- package/dist/cloudflare/index.d.ts +37 -0
- package/dist/cloudflare/index.d.ts.map +1 -0
- package/dist/cloudflare/index.js +41 -0
- package/dist/cloudflare/index.js.map +1 -0
- package/dist/cloudflare-browser-B6Yolpin.js +428 -0
- package/dist/cloudflare-browser-B6Yolpin.js.map +1 -0
- package/dist/cloudflare-email-Dy0KHeDf.js +197 -0
- package/dist/cloudflare-email-Dy0KHeDf.js.map +1 -0
- package/dist/cloudflare-sandbox-Dp_uNaqW.js +982 -0
- package/dist/cloudflare-sandbox-Dp_uNaqW.js.map +1 -0
- package/dist/content-type-CORxaxcv.js +49 -0
- package/dist/content-type-CORxaxcv.js.map +1 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.js +204 -0
- package/dist/core/index.js.map +1 -0
- package/dist/define-CvpJ_pNP.js +115 -0
- package/dist/define-CvpJ_pNP.js.map +1 -0
- package/dist/errors-DoSpNHvs.js +20 -0
- package/dist/errors-DoSpNHvs.js.map +1 -0
- package/dist/errors-aKhko9T1.d.ts +18 -0
- package/dist/errors-aKhko9T1.d.ts.map +1 -0
- package/dist/eventbridge-scheduler-Bh6GqZY2.js +349 -0
- package/dist/eventbridge-scheduler-Bh6GqZY2.js.map +1 -0
- package/dist/framework-context-DVIIY8ZO.js +24 -0
- package/dist/framework-context-DVIIY8ZO.js.map +1 -0
- package/dist/gotenberg-NuJjxyln.js +291 -0
- package/dist/gotenberg-NuJjxyln.js.map +1 -0
- package/dist/http/index.d.ts +47 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +3 -0
- package/dist/http-service-DDNCO1s4.js +254 -0
- package/dist/http-service-DDNCO1s4.js.map +1 -0
- package/dist/http-service-T7E5UjP8.d.ts +80 -0
- package/dist/http-service-T7E5UjP8.d.ts.map +1 -0
- package/dist/imessage-BSAFOI8Z.js +154 -0
- package/dist/imessage-BSAFOI8Z.js.map +1 -0
- package/dist/index-BU4gmYO8.d.ts +254 -0
- package/dist/index-BU4gmYO8.d.ts.map +1 -0
- package/dist/index-CCivzmxO.d.ts +188 -0
- package/dist/index-CCivzmxO.d.ts.map +1 -0
- package/dist/index-CLmTrcu5.d.ts +22 -0
- package/dist/index-CLmTrcu5.d.ts.map +1 -0
- package/dist/index-CZX5OeOF.d.ts +235 -0
- package/dist/index-CZX5OeOF.d.ts.map +1 -0
- package/dist/index-CdFmEfZO.d.ts +359 -0
- package/dist/index-CdFmEfZO.d.ts.map +1 -0
- package/dist/index-Cuh6eMWc.d.ts +285 -0
- package/dist/index-Cuh6eMWc.d.ts.map +1 -0
- package/dist/index-DuOGj7vc.d.ts +107 -0
- package/dist/index-DuOGj7vc.d.ts.map +1 -0
- package/dist/index-ccZ1XOHw.d.ts +69 -0
- package/dist/index-ccZ1XOHw.d.ts.map +1 -0
- package/dist/index-n8JTpNf1.d.ts +247 -0
- package/dist/index-n8JTpNf1.d.ts.map +1 -0
- package/dist/index-pwW1OsOx.d.ts +134 -0
- package/dist/index-pwW1OsOx.d.ts.map +1 -0
- package/dist/index-zK1ZwS4m.d.ts +347 -0
- package/dist/index-zK1ZwS4m.d.ts.map +1 -0
- package/dist/limits-hjrO8zUG.js +80 -0
- package/dist/limits-hjrO8zUG.js.map +1 -0
- package/dist/mastra/index.d.ts +14 -0
- package/dist/mastra/index.d.ts.map +1 -0
- package/dist/mastra/index.js +26 -0
- package/dist/mastra/index.js.map +1 -0
- package/dist/mastra-vector-Dhc6XZ8l.js +234 -0
- package/dist/mastra-vector-Dhc6XZ8l.js.map +1 -0
- package/dist/mcp/index.d.ts +80 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +97 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/modules/artifacts/index.d.ts +337 -0
- package/dist/modules/artifacts/index.d.ts.map +1 -0
- package/dist/modules/artifacts/index.js +348 -0
- package/dist/modules/artifacts/index.js.map +1 -0
- package/dist/modules/browser/index.d.ts +516 -0
- package/dist/modules/browser/index.d.ts.map +1 -0
- package/dist/modules/browser/index.js +475 -0
- package/dist/modules/browser/index.js.map +1 -0
- package/dist/modules/calendar/index.d.ts +93 -0
- package/dist/modules/calendar/index.d.ts.map +1 -0
- package/dist/modules/calendar/index.js +131 -0
- package/dist/modules/calendar/index.js.map +1 -0
- package/dist/modules/code-sandbox/index.d.ts +317 -0
- package/dist/modules/code-sandbox/index.d.ts.map +1 -0
- package/dist/modules/code-sandbox/index.js +537 -0
- package/dist/modules/code-sandbox/index.js.map +1 -0
- package/dist/modules/content-type/index.d.ts +22 -0
- package/dist/modules/content-type/index.d.ts.map +1 -0
- package/dist/modules/content-type/index.js +66 -0
- package/dist/modules/content-type/index.js.map +1 -0
- package/dist/modules/crypto/index.d.ts +115 -0
- package/dist/modules/crypto/index.d.ts.map +1 -0
- package/dist/modules/crypto/index.js +139 -0
- package/dist/modules/crypto/index.js.map +1 -0
- package/dist/modules/document/index.d.ts +575 -0
- package/dist/modules/document/index.d.ts.map +1 -0
- package/dist/modules/document/index.js +444 -0
- package/dist/modules/document/index.js.map +1 -0
- package/dist/modules/document-extract/index.d.ts +438 -0
- package/dist/modules/document-extract/index.d.ts.map +1 -0
- package/dist/modules/document-extract/index.js +127 -0
- package/dist/modules/document-extract/index.js.map +1 -0
- package/dist/modules/document-render/index.d.ts +336 -0
- package/dist/modules/document-render/index.d.ts.map +1 -0
- package/dist/modules/document-render/index.js +155 -0
- package/dist/modules/document-render/index.js.map +1 -0
- package/dist/modules/email/index.d.ts +311 -0
- package/dist/modules/email/index.d.ts.map +1 -0
- package/dist/modules/email/index.js +167 -0
- package/dist/modules/email/index.js.map +1 -0
- package/dist/modules/email-message/index.d.ts +95 -0
- package/dist/modules/email-message/index.d.ts.map +1 -0
- package/dist/modules/email-message/index.js +264 -0
- package/dist/modules/email-message/index.js.map +1 -0
- package/dist/modules/file-convert/index.d.ts +273 -0
- package/dist/modules/file-convert/index.d.ts.map +1 -0
- package/dist/modules/file-convert/index.js +103 -0
- package/dist/modules/file-convert/index.js.map +1 -0
- package/dist/modules/files/index.d.ts +452 -0
- package/dist/modules/files/index.d.ts.map +1 -0
- package/dist/modules/files/index.js +733 -0
- package/dist/modules/files/index.js.map +1 -0
- package/dist/modules/image/index.d.ts +342 -0
- package/dist/modules/image/index.d.ts.map +1 -0
- package/dist/modules/image/index.js +281 -0
- package/dist/modules/image/index.js.map +1 -0
- package/dist/modules/messaging/index.d.ts +608 -0
- package/dist/modules/messaging/index.d.ts.map +1 -0
- package/dist/modules/messaging/index.js +1067 -0
- package/dist/modules/messaging/index.js.map +1 -0
- package/dist/modules/pdf/index.d.ts +287 -0
- package/dist/modules/pdf/index.d.ts.map +1 -0
- package/dist/modules/pdf/index.js +259 -0
- package/dist/modules/pdf/index.js.map +1 -0
- package/dist/modules/presentation/index.d.ts +247 -0
- package/dist/modules/presentation/index.d.ts.map +1 -0
- package/dist/modules/presentation/index.js +12657 -0
- package/dist/modules/presentation/index.js.map +1 -0
- package/dist/modules/queue/index.d.ts +129 -0
- package/dist/modules/queue/index.d.ts.map +1 -0
- package/dist/modules/queue/index.js +131 -0
- package/dist/modules/queue/index.js.map +1 -0
- package/dist/modules/rag/index.d.ts +250 -0
- package/dist/modules/rag/index.d.ts.map +1 -0
- package/dist/modules/rag/index.js +366 -0
- package/dist/modules/rag/index.js.map +1 -0
- package/dist/modules/scheduler/index.d.ts +216 -0
- package/dist/modules/scheduler/index.d.ts.map +1 -0
- package/dist/modules/scheduler/index.js +153 -0
- package/dist/modules/scheduler/index.js.map +1 -0
- package/dist/modules/skills/index.d.ts +205 -0
- package/dist/modules/skills/index.d.ts.map +1 -0
- package/dist/modules/skills/index.js +203 -0
- package/dist/modules/skills/index.js.map +1 -0
- package/dist/modules/tasks/index.d.ts +287 -0
- package/dist/modules/tasks/index.d.ts.map +1 -0
- package/dist/modules/tasks/index.js +207 -0
- package/dist/modules/tasks/index.js.map +1 -0
- package/dist/modules/vector-store/index.d.ts +3 -0
- package/dist/modules/vector-store/index.js +3 -0
- package/dist/modules/web-fetch/index.d.ts +99 -0
- package/dist/modules/web-fetch/index.d.ts.map +1 -0
- package/dist/modules/web-fetch/index.js +242 -0
- package/dist/modules/web-fetch/index.js.map +1 -0
- package/dist/object-artifact-store-CMTzCm_G.d.ts +7 -0
- package/dist/object-artifact-store-CMTzCm_G.d.ts.map +1 -0
- package/dist/object-artifact-store-wZ2j9cto.js +28 -0
- package/dist/object-artifact-store-wZ2j9cto.js.map +1 -0
- package/dist/pinecone-umY4t6OF.js +190 -0
- package/dist/pinecone-umY4t6OF.js.map +1 -0
- package/dist/provider-CgDAlg6K.js +34 -0
- package/dist/provider-CgDAlg6K.js.map +1 -0
- package/dist/qdrant-DMp4NhKR.js +253 -0
- package/dist/qdrant-DMp4NhKR.js.map +1 -0
- package/dist/resend-BAC38_dA.js +155 -0
- package/dist/resend-BAC38_dA.js.map +1 -0
- package/dist/s3-CsOaPWMP.js +955 -0
- package/dist/s3-CsOaPWMP.js.map +1 -0
- package/dist/schemas-ChOAhdo9.js +192 -0
- package/dist/schemas-ChOAhdo9.js.map +1 -0
- package/dist/slack-Di5BBNpt.js +1455 -0
- package/dist/slack-Di5BBNpt.js.map +1 -0
- package/dist/sqs-DCwS1i2N.js +225 -0
- package/dist/sqs-DCwS1i2N.js.map +1 -0
- package/dist/supabase-vector-Dpp9mmJR.js +218 -0
- package/dist/supabase-vector-Dpp9mmJR.js.map +1 -0
- package/dist/tanstack/index.d.ts +15 -0
- package/dist/tanstack/index.d.ts.map +1 -0
- package/dist/tanstack/index.js +28 -0
- package/dist/tanstack/index.js.map +1 -0
- package/dist/teams-DYAHNb39.js +835 -0
- package/dist/teams-DYAHNb39.js.map +1 -0
- package/dist/telegram-DDXWzkfL.js +734 -0
- package/dist/telegram-DDXWzkfL.js.map +1 -0
- package/dist/textract-CPLiB22H.js +554 -0
- package/dist/textract-CPLiB22H.js.map +1 -0
- package/dist/transport-B4vn-XiQ.js +157 -0
- package/dist/transport-B4vn-XiQ.js.map +1 -0
- package/dist/transport-i96ACAI_.d.ts +46 -0
- package/dist/transport-i96ACAI_.d.ts.map +1 -0
- package/dist/types-Ccb0DXY9.d.ts +150 -0
- package/dist/types-Ccb0DXY9.d.ts.map +1 -0
- package/dist/unique-EwBH1JPB.js +19 -0
- package/dist/unique-EwBH1JPB.js.map +1 -0
- package/dist/vector-store-C3nEO80e.js +193 -0
- package/dist/vector-store-C3nEO80e.js.map +1 -0
- package/dist/vendors/amazon-sp-api/index.d.ts +526 -0
- package/dist/vendors/amazon-sp-api/index.d.ts.map +1 -0
- package/dist/vendors/amazon-sp-api/index.js +975 -0
- package/dist/vendors/amazon-sp-api/index.js.map +1 -0
- package/dist/vendors/bedrock-agentcore-browser/index.d.ts +2 -0
- package/dist/vendors/bedrock-agentcore-browser/index.js +2 -0
- package/dist/vendors/bedrock-agentcore-code-interpreter/index.d.ts +228 -0
- package/dist/vendors/bedrock-agentcore-code-interpreter/index.d.ts.map +1 -0
- package/dist/vendors/bedrock-agentcore-code-interpreter/index.js +2 -0
- package/dist/vendors/cloudflare-browser/index.d.ts +2 -0
- package/dist/vendors/cloudflare-browser/index.js +2 -0
- package/dist/vendors/cloudflare-email/index.d.ts +260 -0
- package/dist/vendors/cloudflare-email/index.d.ts.map +1 -0
- package/dist/vendors/cloudflare-email/index.js +3 -0
- package/dist/vendors/cloudflare-sandbox/index.d.ts +565 -0
- package/dist/vendors/cloudflare-sandbox/index.d.ts.map +1 -0
- package/dist/vendors/cloudflare-sandbox/index.js +2 -0
- package/dist/vendors/eventbridge-scheduler/index.d.ts +2 -0
- package/dist/vendors/eventbridge-scheduler/index.js +2 -0
- package/dist/vendors/gotenberg/index.d.ts +306 -0
- package/dist/vendors/gotenberg/index.d.ts.map +1 -0
- package/dist/vendors/gotenberg/index.js +2 -0
- package/dist/vendors/imessage/index.d.ts +420 -0
- package/dist/vendors/imessage/index.d.ts.map +1 -0
- package/dist/vendors/imessage/index.js +4 -0
- package/dist/vendors/katana/index.d.ts +1570 -0
- package/dist/vendors/katana/index.d.ts.map +1 -0
- package/dist/vendors/katana/index.js +1639 -0
- package/dist/vendors/katana/index.js.map +1 -0
- package/dist/vendors/mastra-vector/index.d.ts +120 -0
- package/dist/vendors/mastra-vector/index.d.ts.map +1 -0
- package/dist/vendors/mastra-vector/index.js +3 -0
- package/dist/vendors/pinecone/index.d.ts +75 -0
- package/dist/vendors/pinecone/index.d.ts.map +1 -0
- package/dist/vendors/pinecone/index.js +3 -0
- package/dist/vendors/qdrant/index.d.ts +75 -0
- package/dist/vendors/qdrant/index.d.ts.map +1 -0
- package/dist/vendors/qdrant/index.js +3 -0
- package/dist/vendors/resend/index.d.ts +3 -0
- package/dist/vendors/resend/index.js +3 -0
- package/dist/vendors/s3/index.d.ts +2 -0
- package/dist/vendors/s3/index.js +2 -0
- package/dist/vendors/slack/index.d.ts +576 -0
- package/dist/vendors/slack/index.d.ts.map +1 -0
- package/dist/vendors/slack/index.js +3 -0
- package/dist/vendors/sqs/index.d.ts +2 -0
- package/dist/vendors/sqs/index.js +2 -0
- package/dist/vendors/supabase-vector/index.d.ts +89 -0
- package/dist/vendors/supabase-vector/index.d.ts.map +1 -0
- package/dist/vendors/supabase-vector/index.js +3 -0
- package/dist/vendors/teams/index.d.ts +303 -0
- package/dist/vendors/teams/index.d.ts.map +1 -0
- package/dist/vendors/teams/index.js +3 -0
- package/dist/vendors/telegram/index.d.ts +319 -0
- package/dist/vendors/telegram/index.d.ts.map +1 -0
- package/dist/vendors/telegram/index.js +3 -0
- package/dist/vendors/textract/index.d.ts +2 -0
- package/dist/vendors/textract/index.js +2 -0
- package/dist/vendors/woocommerce/index.d.ts +1700 -0
- package/dist/vendors/woocommerce/index.d.ts.map +1 -0
- package/dist/vendors/woocommerce/index.js +1427 -0
- package/dist/vendors/woocommerce/index.js.map +1 -0
- package/dist/with-auth-CpKqTrGK.js +240 -0
- package/dist/with-auth-CpKqTrGK.js.map +1 -0
- package/logos/LUCIDE-ATTRIBUTION.txt +4 -0
- package/logos/README.md +89 -0
- package/logos/amazon.svg +6 -0
- package/logos/artifacts.svg +9 -0
- package/logos/browser.svg +9 -0
- package/logos/calendar.svg +15 -0
- package/logos/cloudflare-browser.svg +5 -0
- package/logos/cloudflare-email.svg +5 -0
- package/logos/cloudflare.svg +4 -0
- package/logos/code-sandbox.svg +8 -0
- package/logos/content-type.svg +10 -0
- package/logos/crypto.svg +7 -0
- package/logos/document-extract.svg +12 -0
- package/logos/document-render.svg +8 -0
- package/logos/document.svg +10 -0
- package/logos/email-message.svg +8 -0
- package/logos/email.svg +7 -0
- package/logos/file-convert.svg +9 -0
- package/logos/files.svg +6 -0
- package/logos/gotenberg.svg +340 -0
- package/logos/image.svg +8 -0
- package/logos/imessage.svg +7 -0
- package/logos/katana.svg +13 -0
- package/logos/mastra.svg +7 -0
- package/logos/messaging.svg +7 -0
- package/logos/pack-logos.json +48 -0
- package/logos/pdf.svg +10 -0
- package/logos/pinecone.svg +25 -0
- package/logos/presentation.svg +8 -0
- package/logos/qdrant.svg +4 -0
- package/logos/queue.svg +11 -0
- package/logos/rag.svg +18 -0
- package/logos/resend.svg +5 -0
- package/logos/scheduler.svg +7 -0
- package/logos/skills.svg +10 -0
- package/logos/slack.svg +14 -0
- package/logos/supabase.svg +4 -0
- package/logos/tasks.svg +10 -0
- package/logos/teams.svg +6 -0
- package/logos/telegram.svg +10 -0
- package/logos/textract.svg +5 -0
- package/logos/vector-store.svg +8 -0
- package/logos/web-fetch.svg +8 -0
- package/logos/woocommerce.svg +4 -0
- package/package.json +373 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["#http","#listSalesOrderRowsForOrders"],"sources":["../../../src/vendors/katana/contracts.ts","../../../src/vendors/katana/domain.ts","../../../src/vendors/katana/client.ts","../../../src/vendors/katana/module.ts"],"sourcesContent":["import { z } from 'zod'\n\nexport const katanaAuthSchema = z.object({\n\tapi_key: z.string().min(1).describe('Katana MRP Bearer access token')\n})\n\nexport type KatanaAuth = z.infer<typeof katanaAuthSchema>\n\n// ── Shared ──────────────────────────────────────────────────────────────────\n\nconst listCursorFields = {\n\tcursor: z.string().min(1).optional().describe('Page number from a prior next_cursor'),\n\tlimit: z.int().min(1).max(250).optional().describe('Page size (1-250, default 50)')\n}\n\nconst listOutputMeta = {\n\tnext_cursor: z.string().optional(),\n\ttruncated: z.boolean()\n}\n\n// ── Sales orders ────────────────────────────────────────────────────────────\n\nexport const katanaSalesOrderRowInputSchema = z.object({\n\tquantity: z.number().positive().describe('Line quantity'),\n\tvariant_id: z.int().positive().describe('Product variant id'),\n\ttax_rate_id: z.int().positive().optional().describe('Tax rate id'),\n\tlocation_id: z.int().positive().optional().describe('Ship-from location id for this row'),\n\tprice_per_unit: z.number().min(0).optional().describe('Unit price excluding tax'),\n\ttotal_discount: z.number().min(0).optional().describe('Line discount total')\n})\n\nexport const katanaSalesOrderSchema = z.object({\n\tid: z.number(),\n\torder_no: z.string().optional(),\n\tstatus: z.string().optional(),\n\tcustomer_id: z.number().optional(),\n\torder_created_date: z.string().optional(),\n\tdelivery_date: z.string().optional(),\n\tlocation_id: z.number().optional(),\n\tcurrency: z.string().optional(),\n\ttotal: z.number().optional(),\n\tadditional_info: z.string().optional(),\n\tcustomer_ref: z.string().optional(),\n\tcreated_at: z.string().optional().describe('Resource created_at timestamp when returned by Katana')\n})\n\nexport const katanaListSalesOrdersInputSchema = z.object({\n\tstatus: z.string().min(1).optional().describe('Sales order status filter'),\n\tcustomer_id: z.int().positive().optional().describe('Filter by customer id'),\n\torder_no: z.string().min(1).optional().describe('Filter by order number'),\n\tlocation_id: z.int().positive().optional().describe('Filter by location id'),\n\t...listCursorFields\n})\n\nexport const katanaListSalesOrdersOutputSchema = z.object({\n\titems: z.array(katanaSalesOrderSchema),\n\t...listOutputMeta\n})\n\nexport const katanaGetSalesOrderInputSchema = z.object({\n\tsales_order_id: z.int().positive().describe('Sales order id')\n})\n\nexport const katanaGetSalesOrderOutputSchema = z.object({\n\tsales_order: katanaSalesOrderSchema\n})\n\nexport const katanaCreateSalesOrderInputSchema = z.object({\n\tcustomer_id: z.int().positive().describe('Customer id'),\n\tsales_order_rows: z\n\t\t.array(katanaSalesOrderRowInputSchema)\n\t\t.min(1)\n\t\t.describe('Order line items (variant_id + quantity required)'),\n\torder_no: z.string().min(1).optional().describe('Order number'),\n\torder_created_date: z.string().min(1).optional().describe('Order created date (ISO 8601)'),\n\tdelivery_date: z.string().min(1).optional().describe('Delivery date (ISO 8601)'),\n\tcurrency: z.string().min(1).optional().describe('ISO 4217 currency code'),\n\tlocation_id: z.int().positive().optional().describe('Default ship-from location id'),\n\tstatus: z.string().min(1).optional().describe('NOT_SHIPPED (default) or PENDING for quotes'),\n\tadditional_info: z.string().optional().describe('Internal notes'),\n\tcustomer_ref: z.string().optional().describe('Customer reference')\n})\n\nexport const katanaCreateSalesOrderOutputSchema = katanaGetSalesOrderOutputSchema\n\nexport const katanaUpdateSalesOrderInputSchema = z.object({\n\tsales_order_id: z.int().positive().describe('Sales order id'),\n\torder_no: z.string().min(1).optional().describe('Order number'),\n\tcustomer_id: z.int().positive().optional().describe('Customer id'),\n\torder_created_date: z.string().min(1).optional().describe('Order created date (ISO 8601)'),\n\tdelivery_date: z.string().min(1).optional().describe('Delivery date (ISO 8601)'),\n\tlocation_id: z.int().positive().optional().describe('Default ship-from location id'),\n\tstatus: z.string().min(1).optional().describe('Order status (e.g. NOT_SHIPPED, PENDING, PACKED, DELIVERED)'),\n\tcurrency: z.string().min(1).optional().describe('ISO 4217 currency code'),\n\tadditional_info: z.string().optional().describe('Internal notes'),\n\tcustomer_ref: z.string().optional().describe('Customer reference')\n})\n\nexport const katanaUpdateSalesOrderOutputSchema = katanaGetSalesOrderOutputSchema\n\nexport const katanaDeleteSalesOrderInputSchema = z.object({\n\tsales_order_id: z.int().positive().describe('Sales order id')\n})\n\nexport const katanaDeleteSalesOrderOutputSchema = z.object({\n\tdeleted: z.boolean(),\n\tid: z.number()\n})\n\n// ── Sales order composite query ─────────────────────────────────────────────\n\nexport const katanaQuerySalesOrderScopeSchema = z.object({\n\tcreated_from: z\n\t\t.string()\n\t\t.min(1)\n\t\t.optional()\n\t\t.describe('ISO 8601 lower bound on resource created_at (maps to created_at_min)'),\n\torder_created_from: z\n\t\t.string()\n\t\t.min(1)\n\t\t.optional()\n\t\t.describe('ISO 8601 lower bound on order_created_date (client-side; list API has no order_created filter)'),\n\torder_created_to: z\n\t\t.string()\n\t\t.min(1)\n\t\t.optional()\n\t\t.describe('ISO 8601 upper bound on order_created_date (client-side; list API has no order_created filter)'),\n\tstatuses: z\n\t\t.array(z.string().min(1))\n\t\t.min(1)\n\t\t.max(20)\n\t\t.optional()\n\t\t.describe('Sales order statuses to include for this scope (one API list pass each; single status per call)'),\n\tcustomer_id: z.int().positive().optional().describe('Filter by customer id'),\n\tlocation_id: z.int().positive().optional().describe('Filter by location id')\n})\n\nexport const katanaQuerySalesOrdersInputSchema = z.object({\n\tscopes: z\n\t\t.array(katanaQuerySalesOrderScopeSchema)\n\t\t.min(1)\n\t\t.max(20)\n\t\t.describe('Independent filter scopes; results are unioned and deduplicated by order id'),\n\tmax_pages_per_list: z\n\t\t.int()\n\t\t.min(1)\n\t\t.max(100)\n\t\t.optional()\n\t\t.describe('Max sequential pages per scope×status list call (default 20)'),\n\tpage_size: z.int().min(1).max(250).optional().describe('Page size for list calls (default 50)')\n})\n\nexport const katanaNormalizedSalesOrderRowSchema = z.object({\n\tsku: z.string().optional().describe('Variant SKU when known'),\n\tquantity: z.number().describe('Line quantity'),\n\ttax_exclusive_total_cents: z\n\t\t.number()\n\t\t.int()\n\t\t.describe('Line revenue in safe integer cents: (quantity * price_per_unit - total_discount)'),\n\tcogs_value_cents: z\n\t\t.number()\n\t\t.int()\n\t\t.describe('Line COGS in safe integer cents when variant cost is available; otherwise 0')\n})\n\nexport const katanaNormalizedSalesOrderSchema = z.object({\n\tid: z.number(),\n\tcreated_at: z.string().optional().describe('Resource created_at when returned by Katana'),\n\torder_created_date: z.string().optional(),\n\torder_no: z.string().optional(),\n\tstatus: z.string().optional(),\n\tcustomer_id: z.number().optional(),\n\tcustomer_name: z.string().optional().describe('Enriched from customers API when available'),\n\trows: z.array(katanaNormalizedSalesOrderRowSchema)\n})\n\nexport const katanaQuerySalesOrdersOutputSchema = z.object({\n\torders: z.array(katanaNormalizedSalesOrderSchema),\n\torder_count: z.number().int().describe('Number of unique orders after deduplication')\n})\n\n// ── Products ────────────────────────────────────────────────────────────────\n\nexport const katanaProductVariantInputSchema = z.object({\n\tsku: z.string().min(1).optional().describe('Variant SKU'),\n\tsales_price: z.number().min(0).optional().describe('Sales price'),\n\tpurchase_price: z.number().min(0).optional().describe('Purchase price')\n})\n\nexport const katanaProductSchema = z.object({\n\tid: z.number(),\n\tname: z.string().optional(),\n\tuom: z.string().optional(),\n\tcategory_name: z.string().optional(),\n\tis_sellable: z.boolean().optional(),\n\tis_producible: z.boolean().optional(),\n\tis_purchasable: z.boolean().optional(),\n\ttype: z.string().optional(),\n\tdefault_supplier_id: z.number().optional(),\n\tadditional_info: z.string().optional()\n})\n\nexport const katanaListProductsInputSchema = z.object({\n\tname: z.string().min(1).optional().describe('Filter by product name'),\n\tis_sellable: z.boolean().optional().describe('Filter sellable products'),\n\tis_producible: z.boolean().optional().describe('Filter producible products'),\n\tis_purchasable: z.boolean().optional().describe('Filter purchasable products'),\n\t...listCursorFields\n})\n\nexport const katanaListProductsOutputSchema = z.object({\n\titems: z.array(katanaProductSchema),\n\t...listOutputMeta\n})\n\nexport const katanaGetProductInputSchema = z.object({\n\tproduct_id: z.int().positive().describe('Product id')\n})\n\nexport const katanaGetProductOutputSchema = z.object({\n\tproduct: katanaProductSchema\n})\n\nexport const katanaCreateProductInputSchema = z.object({\n\tname: z.string().min(1).describe('Product name'),\n\tvariants: z.array(katanaProductVariantInputSchema).min(1).describe('At least one variant (sku/prices optional)'),\n\tuom: z.string().min(1).optional().describe('Unit of measure (e.g. pcs)'),\n\tcategory_name: z.string().min(1).optional().describe('Category name'),\n\tis_sellable: z.boolean().optional().describe('Can be sold on sales orders'),\n\tis_producible: z.boolean().optional().describe('Can be manufactured'),\n\tis_purchasable: z.boolean().optional().describe('Can be purchased'),\n\tis_auto_assembly: z.boolean().optional().describe('Bundle/kit auto-assembly'),\n\tdefault_supplier_id: z.int().positive().optional().describe('Default supplier id'),\n\tadditional_info: z.string().optional().describe('Internal notes'),\n\tbatch_tracked: z.boolean().optional().describe('Enable batch tracking'),\n\tserial_tracked: z.boolean().optional().describe('Enable serial tracking')\n})\n\nexport const katanaCreateProductOutputSchema = katanaGetProductOutputSchema\n\nexport const katanaUpdateProductInputSchema = z.object({\n\tproduct_id: z.int().positive().describe('Product id'),\n\tname: z.string().min(1).optional().describe('Product name'),\n\tuom: z.string().min(1).optional().describe('Unit of measure'),\n\tcategory_name: z.string().optional().describe('Category name'),\n\tis_sellable: z.boolean().optional().describe('Can be sold on sales orders'),\n\tis_producible: z.boolean().optional().describe('Can be manufactured'),\n\tis_purchasable: z.boolean().optional().describe('Can be purchased'),\n\tis_auto_assembly: z.boolean().optional().describe('Bundle/kit auto-assembly'),\n\tdefault_supplier_id: z.int().positive().optional().describe('Default supplier id'),\n\tadditional_info: z.string().optional().describe('Internal notes'),\n\tbatch_tracked: z.boolean().optional().describe('Enable batch tracking'),\n\tserial_tracked: z.boolean().optional().describe('Enable serial tracking')\n})\n\nexport const katanaUpdateProductOutputSchema = katanaGetProductOutputSchema\n\n// ── Materials ───────────────────────────────────────────────────────────────\n\nexport const katanaMaterialSchema = z.object({\n\tid: z.number(),\n\tname: z.string().optional(),\n\tuom: z.string().optional(),\n\tcategory_name: z.string().optional(),\n\tis_sellable: z.boolean().optional(),\n\ttype: z.string().optional(),\n\tdefault_supplier_id: z.number().optional(),\n\tadditional_info: z.string().optional()\n})\n\nexport const katanaListMaterialsInputSchema = z.object({\n\tname: z.string().min(1).optional().describe('Filter by material name'),\n\t...listCursorFields\n})\n\nexport const katanaListMaterialsOutputSchema = z.object({\n\titems: z.array(katanaMaterialSchema),\n\t...listOutputMeta\n})\n\nexport const katanaGetMaterialInputSchema = z.object({\n\tmaterial_id: z.int().positive().describe('Material id')\n})\n\nexport const katanaGetMaterialOutputSchema = z.object({\n\tmaterial: katanaMaterialSchema\n})\n\n// ── Customers ───────────────────────────────────────────────────────────────\n\nexport const katanaCustomerSchema = z.object({\n\tid: z.number(),\n\tname: z.string().optional(),\n\tfirst_name: z.string().optional(),\n\tlast_name: z.string().optional(),\n\tcompany: z.string().optional(),\n\temail: z.string().optional(),\n\tphone: z.string().optional(),\n\tcurrency: z.string().optional(),\n\tcomment: z.string().optional(),\n\treference_id: z.string().optional(),\n\tcategory: z.string().optional()\n})\n\nexport const katanaListCustomersInputSchema = z.object({\n\tname: z.string().min(1).optional().describe('Filter by customer name'),\n\temail: z.string().min(1).optional().describe('Filter by email'),\n\t...listCursorFields\n})\n\nexport const katanaListCustomersOutputSchema = z.object({\n\titems: z.array(katanaCustomerSchema),\n\t...listOutputMeta\n})\n\nexport const katanaGetCustomerInputSchema = z.object({\n\tcustomer_id: z.int().positive().describe('Customer id')\n})\n\nexport const katanaGetCustomerOutputSchema = z.object({\n\tcustomer: katanaCustomerSchema\n})\n\nexport const katanaCreateCustomerInputSchema = z.object({\n\tname: z.string().min(1).describe('Customer display name'),\n\tfirst_name: z.string().optional().describe('First name'),\n\tlast_name: z.string().optional().describe('Last name'),\n\tcompany: z.string().optional().describe('Company name'),\n\temail: z.string().optional().describe('Email'),\n\tphone: z.string().optional().describe('Phone'),\n\tcurrency: z.string().min(1).optional().describe('ISO 4217 currency code'),\n\treference_id: z.string().optional().describe('External reference id'),\n\tcategory: z.string().optional().describe('Customer category'),\n\tcomment: z.string().optional().describe('Internal comment'),\n\tdiscount_rate: z.number().optional().describe('Default discount rate')\n})\n\nexport const katanaCreateCustomerOutputSchema = katanaGetCustomerOutputSchema\n\nexport const katanaUpdateCustomerInputSchema = z.object({\n\tcustomer_id: z.int().positive().describe('Customer id'),\n\tname: z.string().min(1).optional().describe('Customer display name'),\n\tfirst_name: z.string().optional().describe('First name'),\n\tlast_name: z.string().optional().describe('Last name'),\n\tcompany: z.string().optional().describe('Company name'),\n\temail: z.string().optional().describe('Email'),\n\tphone: z.string().optional().describe('Phone'),\n\tcurrency: z.string().min(1).optional().describe('ISO 4217 currency code'),\n\treference_id: z.string().optional().describe('External reference id'),\n\tcategory: z.string().optional().describe('Customer category'),\n\tcomment: z.string().optional().describe('Internal comment'),\n\tdiscount_rate: z.number().optional().describe('Default discount rate')\n})\n\nexport const katanaUpdateCustomerOutputSchema = katanaGetCustomerOutputSchema\n\n// ── Suppliers ───────────────────────────────────────────────────────────────\n\nexport const katanaSupplierSchema = z.object({\n\tid: z.number(),\n\tname: z.string().optional(),\n\temail: z.string().optional(),\n\tphone: z.string().optional(),\n\tcurrency: z.string().optional(),\n\tcomment: z.string().optional()\n})\n\nexport const katanaListSuppliersInputSchema = z.object({\n\tname: z.string().min(1).optional().describe('Filter by supplier name'),\n\t...listCursorFields\n})\n\nexport const katanaListSuppliersOutputSchema = z.object({\n\titems: z.array(katanaSupplierSchema),\n\t...listOutputMeta\n})\n\nexport const katanaGetSupplierInputSchema = z.object({\n\tsupplier_id: z.int().positive().describe('Supplier id')\n})\n\nexport const katanaGetSupplierOutputSchema = z.object({\n\tsupplier: katanaSupplierSchema\n})\n\nexport const katanaCreateSupplierInputSchema = z.object({\n\tname: z.string().min(1).describe('Supplier name'),\n\tcurrency: z.string().min(1).optional().describe('ISO 4217 currency code'),\n\temail: z.string().optional().describe('Email'),\n\tphone: z.string().optional().describe('Phone'),\n\tcomment: z.string().optional().describe('Internal comment')\n})\n\nexport const katanaCreateSupplierOutputSchema = katanaGetSupplierOutputSchema\n\n// ── Purchase orders ─────────────────────────────────────────────────────────\n\nexport const katanaPurchaseOrderRowInputSchema = z.object({\n\tquantity: z.number().positive().describe('Line quantity'),\n\tvariant_id: z.int().positive().describe('Product or material variant id'),\n\tprice_per_unit: z.number().min(0).describe('Unit price excluding tax'),\n\ttax_rate_id: z.int().positive().optional().describe('Tax rate id'),\n\tpurchase_uom: z.string().min(1).optional().describe('Purchase unit of measure'),\n\tpurchase_uom_conversion_rate: z.number().min(0).optional().describe('Conversion rate to stock UoM'),\n\tarrival_date: z.string().min(1).optional().describe('Expected arrival date (ISO 8601)')\n})\n\nexport const katanaPurchaseOrderSchema = z.object({\n\tid: z.number(),\n\torder_no: z.string().optional(),\n\tstatus: z.string().optional(),\n\tsupplier_id: z.number().optional(),\n\tlocation_id: z.number().optional(),\n\tcurrency: z.string().optional(),\n\tentity_type: z.string().optional(),\n\torder_created_date: z.string().optional(),\n\texpected_arrival_date: z.string().optional(),\n\ttotal: z.number().optional(),\n\tadditional_info: z.string().optional()\n})\n\nexport const katanaListPurchaseOrdersInputSchema = z.object({\n\tstatus: z.string().min(1).optional().describe('Purchase order status filter'),\n\tsupplier_id: z.int().positive().optional().describe('Filter by supplier id'),\n\torder_no: z.string().min(1).optional().describe('Filter by order number'),\n\tlocation_id: z.int().positive().optional().describe('Filter by location id'),\n\t...listCursorFields\n})\n\nexport const katanaListPurchaseOrdersOutputSchema = z.object({\n\titems: z.array(katanaPurchaseOrderSchema),\n\t...listOutputMeta\n})\n\nexport const katanaGetPurchaseOrderInputSchema = z.object({\n\tpurchase_order_id: z.int().positive().describe('Purchase order id')\n})\n\nexport const katanaGetPurchaseOrderOutputSchema = z.object({\n\tpurchase_order: katanaPurchaseOrderSchema\n})\n\nexport const katanaCreatePurchaseOrderInputSchema = z.object({\n\tsupplier_id: z.int().positive().describe('Supplier id'),\n\tlocation_id: z.int().positive().describe('Receive-to location id'),\n\tpurchase_order_rows: z\n\t\t.array(katanaPurchaseOrderRowInputSchema)\n\t\t.min(1)\n\t\t.describe('Order line items (variant_id, quantity, price_per_unit required)'),\n\torder_no: z.string().min(1).optional().describe('Order number'),\n\tentity_type: z.string().min(1).optional().describe('regular or outsourced'),\n\tcurrency: z.string().min(1).optional().describe('ISO 4217 currency code'),\n\tstatus: z.string().min(1).optional().describe('DRAFT or NOT_RECEIVED'),\n\texpected_arrival_date: z.string().min(1).optional().describe('Expected arrival date (ISO 8601)'),\n\torder_created_date: z.string().min(1).optional().describe('Order created date (ISO 8601)'),\n\tadditional_info: z.string().optional().describe('Internal notes')\n})\n\nexport const katanaCreatePurchaseOrderOutputSchema = katanaGetPurchaseOrderOutputSchema\n\nexport const katanaUpdatePurchaseOrderInputSchema = z.object({\n\tpurchase_order_id: z.int().positive().describe('Purchase order id'),\n\torder_no: z.string().min(1).optional().describe('Order number'),\n\tsupplier_id: z.int().positive().optional().describe('Supplier id'),\n\tlocation_id: z.int().positive().optional().describe('Receive-to location id'),\n\tcurrency: z.string().min(1).optional().describe('ISO 4217 currency code'),\n\tstatus: z.string().min(1).optional().describe('Purchase order status'),\n\texpected_arrival_date: z.string().min(1).optional().describe('Expected arrival date (ISO 8601)'),\n\torder_created_date: z.string().min(1).optional().describe('Order created date (ISO 8601)'),\n\tadditional_info: z.string().optional().describe('Internal notes')\n})\n\nexport const katanaUpdatePurchaseOrderOutputSchema = katanaGetPurchaseOrderOutputSchema\n\n// ── Manufacturing orders ────────────────────────────────────────────────────\n\nexport const katanaManufacturingOrderSchema = z.object({\n\tid: z.number(),\n\torder_no: z.string().optional(),\n\tstatus: z.string().optional(),\n\tvariant_id: z.number().optional(),\n\tlocation_id: z.number().optional(),\n\tplanned_quantity: z.number().optional(),\n\tactual_quantity: z.number().optional(),\n\torder_created_date: z.string().optional(),\n\tproduction_deadline_date: z.string().optional(),\n\tingredient_availability: z.string().optional(),\n\tadditional_info: z.string().optional(),\n\tsales_order_id: z.number().optional()\n})\n\nexport const katanaListManufacturingOrdersInputSchema = z.object({\n\tstatus: z.string().min(1).optional().describe('Manufacturing order status filter'),\n\tvariant_id: z.int().positive().optional().describe('Filter by product variant id'),\n\tlocation_id: z.int().positive().optional().describe('Filter by location id'),\n\torder_no: z.string().min(1).optional().describe('Filter by order number'),\n\t...listCursorFields\n})\n\nexport const katanaListManufacturingOrdersOutputSchema = z.object({\n\titems: z.array(katanaManufacturingOrderSchema),\n\t...listOutputMeta\n})\n\nexport const katanaGetManufacturingOrderInputSchema = z.object({\n\tmanufacturing_order_id: z.int().positive().describe('Manufacturing order id')\n})\n\nexport const katanaGetManufacturingOrderOutputSchema = z.object({\n\tmanufacturing_order: katanaManufacturingOrderSchema\n})\n\nexport const katanaCreateManufacturingOrderInputSchema = z.object({\n\tvariant_id: z.int().positive().describe('Product variant id to manufacture'),\n\tlocation_id: z.int().positive().describe('Production location id'),\n\tplanned_quantity: z.number().positive().describe('Planned production quantity'),\n\torder_no: z.string().min(1).optional().describe('Order number'),\n\torder_created_date: z.string().min(1).optional().describe('Order created date (ISO 8601)'),\n\tproduction_deadline_date: z.string().min(1).optional().describe('Production deadline (ISO 8601)'),\n\tadditional_info: z.string().optional().describe('Internal notes'),\n\tstatus: z.string().min(1).optional().describe('Initial status (NOT_STARTED)')\n})\n\nexport const katanaCreateManufacturingOrderOutputSchema = katanaGetManufacturingOrderOutputSchema\n\nexport const katanaUpdateManufacturingOrderInputSchema = z.object({\n\tmanufacturing_order_id: z.int().positive().describe('Manufacturing order id'),\n\torder_no: z.string().min(1).optional().describe('Order number'),\n\tplanned_quantity: z.number().positive().optional().describe('Planned production quantity'),\n\tactual_quantity: z.number().min(0).optional().describe('Actual produced quantity'),\n\torder_created_date: z.string().min(1).optional().describe('Order created date (ISO 8601)'),\n\tproduction_deadline_date: z.string().min(1).optional().describe('Production deadline (ISO 8601)'),\n\tadditional_info: z.string().optional().describe('Internal notes'),\n\tstatus: z.string().min(1).optional().describe('Manufacturing order status')\n})\n\nexport const katanaUpdateManufacturingOrderOutputSchema = katanaGetManufacturingOrderOutputSchema\n\n// ── Inventory ───────────────────────────────────────────────────────────────\n\nexport const katanaInventorySchema = z.object({\n\tvariant_id: z.number(),\n\tlocation_id: z.number(),\n\tquantity_in_stock: z.number().optional(),\n\tquantity_committed: z.number().optional(),\n\tquantity_expected: z.number().optional(),\n\tquantity_missing_or_excess: z.number().optional(),\n\tsafety_stock_level: z.number().optional(),\n\taverage_cost: z.number().optional(),\n\tvalue_in_stock: z.number().optional()\n})\n\nexport const katanaListInventoryInputSchema = z.object({\n\tvariant_id: z.int().positive().optional().describe('Filter by variant id'),\n\tlocation_id: z.int().positive().optional().describe('Filter by location id'),\n\t...listCursorFields\n})\n\nexport const katanaListInventoryOutputSchema = z.object({\n\titems: z.array(katanaInventorySchema),\n\t...listOutputMeta\n})\n\n// ── Types ───────────────────────────────────────────────────────────────────\n\nexport type KatanaSalesOrderRowInput = z.infer<typeof katanaSalesOrderRowInputSchema>\nexport type KatanaSalesOrder = z.infer<typeof katanaSalesOrderSchema>\nexport type KatanaListSalesOrdersInput = z.infer<typeof katanaListSalesOrdersInputSchema>\nexport type KatanaListSalesOrdersOutput = z.infer<typeof katanaListSalesOrdersOutputSchema>\nexport type KatanaGetSalesOrderInput = z.infer<typeof katanaGetSalesOrderInputSchema>\nexport type KatanaGetSalesOrderOutput = z.infer<typeof katanaGetSalesOrderOutputSchema>\nexport type KatanaCreateSalesOrderInput = z.infer<typeof katanaCreateSalesOrderInputSchema>\nexport type KatanaCreateSalesOrderOutput = z.infer<typeof katanaCreateSalesOrderOutputSchema>\nexport type KatanaUpdateSalesOrderInput = z.infer<typeof katanaUpdateSalesOrderInputSchema>\nexport type KatanaUpdateSalesOrderOutput = z.infer<typeof katanaUpdateSalesOrderOutputSchema>\nexport type KatanaDeleteSalesOrderInput = z.infer<typeof katanaDeleteSalesOrderInputSchema>\nexport type KatanaDeleteSalesOrderOutput = z.infer<typeof katanaDeleteSalesOrderOutputSchema>\nexport type KatanaQuerySalesOrderScope = z.infer<typeof katanaQuerySalesOrderScopeSchema>\nexport type KatanaQuerySalesOrdersInput = z.infer<typeof katanaQuerySalesOrdersInputSchema>\nexport type KatanaQuerySalesOrdersOutput = z.infer<typeof katanaQuerySalesOrdersOutputSchema>\nexport type KatanaNormalizedSalesOrder = z.infer<typeof katanaNormalizedSalesOrderSchema>\nexport type KatanaNormalizedSalesOrderRow = z.infer<typeof katanaNormalizedSalesOrderRowSchema>\n\nexport type KatanaProductVariantInput = z.infer<typeof katanaProductVariantInputSchema>\nexport type KatanaProduct = z.infer<typeof katanaProductSchema>\nexport type KatanaListProductsInput = z.infer<typeof katanaListProductsInputSchema>\nexport type KatanaListProductsOutput = z.infer<typeof katanaListProductsOutputSchema>\nexport type KatanaGetProductInput = z.infer<typeof katanaGetProductInputSchema>\nexport type KatanaGetProductOutput = z.infer<typeof katanaGetProductOutputSchema>\nexport type KatanaCreateProductInput = z.infer<typeof katanaCreateProductInputSchema>\nexport type KatanaCreateProductOutput = z.infer<typeof katanaCreateProductOutputSchema>\nexport type KatanaUpdateProductInput = z.infer<typeof katanaUpdateProductInputSchema>\nexport type KatanaUpdateProductOutput = z.infer<typeof katanaUpdateProductOutputSchema>\n\nexport type KatanaMaterial = z.infer<typeof katanaMaterialSchema>\nexport type KatanaListMaterialsInput = z.infer<typeof katanaListMaterialsInputSchema>\nexport type KatanaListMaterialsOutput = z.infer<typeof katanaListMaterialsOutputSchema>\nexport type KatanaGetMaterialInput = z.infer<typeof katanaGetMaterialInputSchema>\nexport type KatanaGetMaterialOutput = z.infer<typeof katanaGetMaterialOutputSchema>\n\nexport type KatanaCustomer = z.infer<typeof katanaCustomerSchema>\nexport type KatanaListCustomersInput = z.infer<typeof katanaListCustomersInputSchema>\nexport type KatanaListCustomersOutput = z.infer<typeof katanaListCustomersOutputSchema>\nexport type KatanaGetCustomerInput = z.infer<typeof katanaGetCustomerInputSchema>\nexport type KatanaGetCustomerOutput = z.infer<typeof katanaGetCustomerOutputSchema>\nexport type KatanaCreateCustomerInput = z.infer<typeof katanaCreateCustomerInputSchema>\nexport type KatanaCreateCustomerOutput = z.infer<typeof katanaCreateCustomerOutputSchema>\nexport type KatanaUpdateCustomerInput = z.infer<typeof katanaUpdateCustomerInputSchema>\nexport type KatanaUpdateCustomerOutput = z.infer<typeof katanaUpdateCustomerOutputSchema>\n\nexport type KatanaSupplier = z.infer<typeof katanaSupplierSchema>\nexport type KatanaListSuppliersInput = z.infer<typeof katanaListSuppliersInputSchema>\nexport type KatanaListSuppliersOutput = z.infer<typeof katanaListSuppliersOutputSchema>\nexport type KatanaGetSupplierInput = z.infer<typeof katanaGetSupplierInputSchema>\nexport type KatanaGetSupplierOutput = z.infer<typeof katanaGetSupplierOutputSchema>\nexport type KatanaCreateSupplierInput = z.infer<typeof katanaCreateSupplierInputSchema>\nexport type KatanaCreateSupplierOutput = z.infer<typeof katanaCreateSupplierOutputSchema>\n\nexport type KatanaPurchaseOrderRowInput = z.infer<typeof katanaPurchaseOrderRowInputSchema>\nexport type KatanaPurchaseOrder = z.infer<typeof katanaPurchaseOrderSchema>\nexport type KatanaListPurchaseOrdersInput = z.infer<typeof katanaListPurchaseOrdersInputSchema>\nexport type KatanaListPurchaseOrdersOutput = z.infer<typeof katanaListPurchaseOrdersOutputSchema>\nexport type KatanaGetPurchaseOrderInput = z.infer<typeof katanaGetPurchaseOrderInputSchema>\nexport type KatanaGetPurchaseOrderOutput = z.infer<typeof katanaGetPurchaseOrderOutputSchema>\nexport type KatanaCreatePurchaseOrderInput = z.infer<typeof katanaCreatePurchaseOrderInputSchema>\nexport type KatanaCreatePurchaseOrderOutput = z.infer<typeof katanaCreatePurchaseOrderOutputSchema>\nexport type KatanaUpdatePurchaseOrderInput = z.infer<typeof katanaUpdatePurchaseOrderInputSchema>\nexport type KatanaUpdatePurchaseOrderOutput = z.infer<typeof katanaUpdatePurchaseOrderOutputSchema>\n\nexport type KatanaManufacturingOrder = z.infer<typeof katanaManufacturingOrderSchema>\nexport type KatanaListManufacturingOrdersInput = z.infer<typeof katanaListManufacturingOrdersInputSchema>\nexport type KatanaListManufacturingOrdersOutput = z.infer<typeof katanaListManufacturingOrdersOutputSchema>\nexport type KatanaGetManufacturingOrderInput = z.infer<typeof katanaGetManufacturingOrderInputSchema>\nexport type KatanaGetManufacturingOrderOutput = z.infer<typeof katanaGetManufacturingOrderOutputSchema>\nexport type KatanaCreateManufacturingOrderInput = z.infer<typeof katanaCreateManufacturingOrderInputSchema>\nexport type KatanaCreateManufacturingOrderOutput = z.infer<typeof katanaCreateManufacturingOrderOutputSchema>\nexport type KatanaUpdateManufacturingOrderInput = z.infer<typeof katanaUpdateManufacturingOrderInputSchema>\nexport type KatanaUpdateManufacturingOrderOutput = z.infer<typeof katanaUpdateManufacturingOrderOutputSchema>\n\nexport type KatanaInventory = z.infer<typeof katanaInventorySchema>\nexport type KatanaListInventoryInput = z.infer<typeof katanaListInventoryInputSchema>\nexport type KatanaListInventoryOutput = z.infer<typeof katanaListInventoryOutputSchema>\n","/**\n * Katana MRP payload helpers (no HTTP).\n */\n\nimport { isPlainObject, isString } from 'es-toolkit'\n\nimport { ToolError } from '../../core/errors'\nimport type {\n\tKatanaCreateCustomerInput,\n\tKatanaCreateManufacturingOrderInput,\n\tKatanaCreateProductInput,\n\tKatanaCreatePurchaseOrderInput,\n\tKatanaCreateSalesOrderInput,\n\tKatanaCreateSupplierInput,\n\tKatanaCustomer,\n\tKatanaInventory,\n\tKatanaManufacturingOrder,\n\tKatanaMaterial,\n\tKatanaProduct,\n\tKatanaProductVariantInput,\n\tKatanaPurchaseOrder,\n\tKatanaPurchaseOrderRowInput,\n\tKatanaNormalizedSalesOrder,\n\tKatanaNormalizedSalesOrderRow,\n\tKatanaQuerySalesOrderScope,\n\tKatanaSalesOrder,\n\tKatanaSalesOrderRowInput,\n\tKatanaSupplier,\n\tKatanaUpdateCustomerInput,\n\tKatanaUpdateManufacturingOrderInput,\n\tKatanaUpdateProductInput,\n\tKatanaUpdatePurchaseOrderInput,\n\tKatanaUpdateSalesOrderInput\n} from './contracts'\n\nexport const KATANA_API_BASE = 'https://api.katanamrp.com/v1'\n\nexport function pageFromCursor(cursor: string | undefined): number {\n\tif (!cursor) return 1\n\tconst n = Number.parseInt(cursor, 10)\n\tif (!Number.isFinite(n) || n < 1) {\n\t\tthrow new ToolError('Invalid list cursor', { code: 'bad_input', details: { cursor } })\n\t}\n\treturn n\n}\n\nexport function listPageMeta(\n\tpage: number,\n\tlimit: number,\n\titemCount: number,\n\ttotalPages: number | undefined\n): { next_cursor?: string; truncated: boolean } {\n\tif (typeof totalPages === 'number' && totalPages > page) {\n\t\treturn { next_cursor: String(page + 1), truncated: true }\n\t}\n\tif (itemCount >= limit && totalPages === undefined) {\n\t\treturn { next_cursor: String(page + 1), truncated: true }\n\t}\n\treturn { truncated: false }\n}\n\nfunction optionalString(value: unknown): string | undefined {\n\treturn isString(value) ? value : undefined\n}\n\nfunction optionalNumber(value: unknown): number | undefined {\n\tif (typeof value === 'number' && Number.isFinite(value)) return value\n\t// Katana often returns decimal quantities/money as strings (e.g. \"1.00000\").\n\tif (isString(value) && value.trim().length > 0) {\n\t\tconst n = Number(value)\n\t\tif (Number.isFinite(n)) return n\n\t}\n\treturn undefined\n}\n\nfunction optionalBoolean(value: unknown): boolean | undefined {\n\treturn typeof value === 'boolean' ? value : undefined\n}\n\nexport function unwrapResource(data: unknown): unknown {\n\tif (isPlainObject(data) && 'data' in data) {\n\t\treturn data['data']\n\t}\n\treturn data\n}\n\nexport function parseListEnvelope<T>(\n\tdata: unknown,\n\tparseItem: (value: unknown) => T,\n\tlabel: string\n): { items: T[]; totalPages?: number } {\n\tif (Array.isArray(data)) {\n\t\treturn { items: data.map(parseItem) }\n\t}\n\tif (!isPlainObject(data)) {\n\t\tthrow new ToolError(`Katana returned an unexpected ${label} payload`, { code: 'upstream' })\n\t}\n\tconst rows = data['data']\n\tif (!Array.isArray(rows)) {\n\t\tthrow new ToolError(`Katana ${label} missing data array`, { code: 'upstream' })\n\t}\n\tconst pagination = data['pagination']\n\tlet totalPages: number | undefined\n\tif (isPlainObject(pagination) && typeof pagination['total_pages'] === 'number') {\n\t\ttotalPages = pagination['total_pages']\n\t}\n\treturn { items: rows.map(parseItem), ...(totalPages !== undefined && { totalPages }) }\n}\n\n// ── Resource parsers ────────────────────────────────────────────────────────\n\nexport function parseSalesOrder(value: unknown): KatanaSalesOrder {\n\tif (!isPlainObject(value) || typeof value['id'] !== 'number') {\n\t\tthrow new ToolError('Katana returned an invalid sales order', { code: 'upstream' })\n\t}\n\tconst totalRaw = value['total'] ?? value['total_price']\n\tconst total = optionalNumber(totalRaw)\n\tconst orderNo = optionalString(value['order_no'])\n\tconst status = optionalString(value['status'])\n\tconst customerId = optionalNumber(value['customer_id'])\n\tconst orderCreatedDate = optionalString(value['order_created_date'])\n\tconst deliveryDate = optionalString(value['delivery_date'])\n\tconst locationId = optionalNumber(value['location_id'])\n\tconst currency = optionalString(value['currency'])\n\tconst additionalInfo = optionalString(value['additional_info'])\n\tconst customerRef = optionalString(value['customer_ref'])\n\tconst createdAt = optionalString(value['created_at'])\n\treturn {\n\t\tid: value['id'],\n\t\t...(orderNo && { order_no: orderNo }),\n\t\t...(status && { status }),\n\t\t...(customerId !== undefined && { customer_id: customerId }),\n\t\t...(orderCreatedDate && { order_created_date: orderCreatedDate }),\n\t\t...(deliveryDate && { delivery_date: deliveryDate }),\n\t\t...(locationId !== undefined && { location_id: locationId }),\n\t\t...(currency && { currency }),\n\t\t...(total !== undefined && { total }),\n\t\t...(additionalInfo !== undefined && { additional_info: additionalInfo }),\n\t\t...(customerRef !== undefined && { customer_ref: customerRef }),\n\t\t...(createdAt && { created_at: createdAt })\n\t}\n}\n\n/**\n * Wire query params for GET /sales_orders date windows.\n * Spike (Katana docs): `created_at_min` / `created_at_max` only — no `order_created_date` list filter.\n * `order_created_*` scopes are applied client-side after list (see matchOrderCreatedDateScope).\n */\nexport function salesOrderListDateQuery(scope: KatanaQuerySalesOrderScope): Record<string, string> {\n\tconst out: Record<string, string> = {}\n\tif (scope.created_from) out['created_at_min'] = scope.created_from\n\treturn out\n}\n\n/** Client-side filter for order_created_date when the list endpoint cannot express it. */\nexport function matchOrderCreatedDateScope(\n\torderCreatedDate: string | undefined,\n\tscope: KatanaQuerySalesOrderScope\n): boolean {\n\tif (!scope.order_created_from && !scope.order_created_to) return true\n\tif (!orderCreatedDate) return false\n\tif (scope.order_created_from && orderCreatedDate < scope.order_created_from) return false\n\tif (scope.order_created_to && orderCreatedDate > scope.order_created_to) return false\n\treturn true\n}\n\n/**\n * Convert a major-unit money amount to safe integer cents.\n * Rounds half away from zero via Math.round after * 100.\n */\nexport function moneyToSafeCents(amount: number): number {\n\tif (!Number.isFinite(amount)) {\n\t\tthrow new ToolError('Invalid money amount for cents conversion', {\n\t\t\tcode: 'upstream',\n\t\t\tdetails: { amount }\n\t\t})\n\t}\n\tconst cents = Math.round(amount * 100)\n\tif (!Number.isSafeInteger(cents)) {\n\t\tthrow new ToolError('Money amount exceeds safe integer cents range', {\n\t\t\tcode: 'upstream',\n\t\t\tdetails: { amount }\n\t\t})\n\t}\n\treturn cents\n}\n\n/** Line revenue cents: quantity * price_per_unit - total_discount (tax exclusive). */\nexport function lineTaxExclusiveTotalCents(quantity: number, pricePerUnit: number, totalDiscount: number): number {\n\treturn moneyToSafeCents(quantity * pricePerUnit - totalDiscount)\n}\n\nexport type ParsedSalesOrderRow = {\n\tsales_order_id: number\n\tquantity: number\n\tvariant_id?: number\n\tprice_per_unit: number\n\ttotal_discount: number\n\tsku?: string\n\t/** Unit cost from extended variant when present. */\n\tunit_cost?: number\n}\n\nexport function parseSalesOrderRow(value: unknown): ParsedSalesOrderRow {\n\tif (!isPlainObject(value)) {\n\t\tthrow new ToolError('Katana returned an invalid sales order row', { code: 'upstream' })\n\t}\n\tconst salesOrderId = optionalNumber(value['sales_order_id'])\n\tconst quantity = optionalNumber(value['quantity'])\n\tif (salesOrderId === undefined || quantity === undefined) {\n\t\tthrow new ToolError('Katana sales order row missing sales_order_id or quantity', { code: 'upstream' })\n\t}\n\tconst pricePerUnit = optionalNumber(value['price_per_unit']) ?? 0\n\tconst totalDiscount = optionalNumber(value['total_discount']) ?? 0\n\tconst variantId = optionalNumber(value['variant_id'])\n\tconst variant = value['variant']\n\tlet sku = optionalString(value['sku'])\n\tlet unitCost: number | undefined\n\tif (isPlainObject(variant)) {\n\t\tsku = sku ?? optionalString(variant['sku'])\n\t\tunitCost =\n\t\t\toptionalNumber(variant['purchase_price']) ??\n\t\t\toptionalNumber(variant['average_cost']) ??\n\t\t\toptionalNumber(variant['cost_per_unit'])\n\t}\n\treturn {\n\t\tsales_order_id: salesOrderId,\n\t\tquantity,\n\t\tprice_per_unit: pricePerUnit,\n\t\ttotal_discount: totalDiscount,\n\t\t...(variantId !== undefined && { variant_id: variantId }),\n\t\t...(sku && { sku }),\n\t\t...(unitCost !== undefined && { unit_cost: unitCost })\n\t}\n}\n\nexport function normalizeSalesOrderRow(rows: readonly ParsedSalesOrderRow[]): KatanaNormalizedSalesOrderRow[] {\n\treturn rows.map((row) => ({\n\t\tquantity: row.quantity,\n\t\ttax_exclusive_total_cents: lineTaxExclusiveTotalCents(row.quantity, row.price_per_unit, row.total_discount),\n\t\tcogs_value_cents: moneyToSafeCents((row.unit_cost ?? 0) * row.quantity),\n\t\t...(row.sku && { sku: row.sku })\n\t}))\n}\n\nexport function normalizeSalesOrderHeader(\n\torder: KatanaSalesOrder,\n\tcustomerName: string | undefined,\n\trows: KatanaNormalizedSalesOrderRow[]\n): KatanaNormalizedSalesOrder {\n\treturn {\n\t\tid: order.id,\n\t\t...(order.created_at && { created_at: order.created_at }),\n\t\t...(order.order_created_date && { order_created_date: order.order_created_date }),\n\t\t...(order.order_no && { order_no: order.order_no }),\n\t\t...(order.status && { status: order.status }),\n\t\t...(order.customer_id !== undefined && { customer_id: order.customer_id }),\n\t\t...(customerName && { customer_name: customerName }),\n\t\trows\n\t}\n}\n\n/** Parse optional created_at onto a sales order (used by composite enrichment). */\nexport function parseSalesOrderCreatedAt(value: unknown): string | undefined {\n\tif (!isPlainObject(value)) return undefined\n\treturn optionalString(value['created_at'])\n}\n\nexport function parseProduct(value: unknown): KatanaProduct {\n\tif (!isPlainObject(value) || typeof value['id'] !== 'number') {\n\t\tthrow new ToolError('Katana returned an invalid product', { code: 'upstream' })\n\t}\n\tconst name = optionalString(value['name'])\n\tconst uom = optionalString(value['uom'])\n\tconst categoryName = optionalString(value['category_name'])\n\tconst isSellable = optionalBoolean(value['is_sellable'])\n\tconst isProducible = optionalBoolean(value['is_producible'])\n\tconst isPurchasable = optionalBoolean(value['is_purchasable'])\n\tconst type = optionalString(value['type'])\n\tconst defaultSupplierId = optionalNumber(value['default_supplier_id'])\n\tconst additionalInfo = optionalString(value['additional_info'])\n\treturn {\n\t\tid: value['id'],\n\t\t...(name && { name }),\n\t\t...(uom && { uom }),\n\t\t...(categoryName && { category_name: categoryName }),\n\t\t...(isSellable !== undefined && { is_sellable: isSellable }),\n\t\t...(isProducible !== undefined && { is_producible: isProducible }),\n\t\t...(isPurchasable !== undefined && { is_purchasable: isPurchasable }),\n\t\t...(type && { type }),\n\t\t...(defaultSupplierId !== undefined && { default_supplier_id: defaultSupplierId }),\n\t\t...(additionalInfo !== undefined && { additional_info: additionalInfo })\n\t}\n}\n\nexport function parseMaterial(value: unknown): KatanaMaterial {\n\tif (!isPlainObject(value) || typeof value['id'] !== 'number') {\n\t\tthrow new ToolError('Katana returned an invalid material', { code: 'upstream' })\n\t}\n\tconst name = optionalString(value['name'])\n\tconst uom = optionalString(value['uom'])\n\tconst categoryName = optionalString(value['category_name'])\n\tconst isSellable = optionalBoolean(value['is_sellable'])\n\tconst type = optionalString(value['type'])\n\tconst defaultSupplierId = optionalNumber(value['default_supplier_id'])\n\tconst additionalInfo = optionalString(value['additional_info'])\n\treturn {\n\t\tid: value['id'],\n\t\t...(name && { name }),\n\t\t...(uom && { uom }),\n\t\t...(categoryName && { category_name: categoryName }),\n\t\t...(isSellable !== undefined && { is_sellable: isSellable }),\n\t\t...(type && { type }),\n\t\t...(defaultSupplierId !== undefined && { default_supplier_id: defaultSupplierId }),\n\t\t...(additionalInfo !== undefined && { additional_info: additionalInfo })\n\t}\n}\n\nexport function parseCustomer(value: unknown): KatanaCustomer {\n\tif (!isPlainObject(value) || typeof value['id'] !== 'number') {\n\t\tthrow new ToolError('Katana returned an invalid customer', { code: 'upstream' })\n\t}\n\tconst name = optionalString(value['name'])\n\tconst firstName = optionalString(value['first_name'])\n\tconst lastName = optionalString(value['last_name'])\n\tconst company = optionalString(value['company'])\n\tconst email = optionalString(value['email'])\n\tconst phone = optionalString(value['phone'])\n\tconst currency = optionalString(value['currency'])\n\tconst comment = optionalString(value['comment'])\n\tconst referenceId = optionalString(value['reference_id'])\n\tconst category = optionalString(value['category'])\n\treturn {\n\t\tid: value['id'],\n\t\t...(name && { name }),\n\t\t...(firstName !== undefined && { first_name: firstName }),\n\t\t...(lastName !== undefined && { last_name: lastName }),\n\t\t...(company !== undefined && { company }),\n\t\t...(email !== undefined && { email }),\n\t\t...(phone !== undefined && { phone }),\n\t\t...(currency && { currency }),\n\t\t...(comment !== undefined && { comment }),\n\t\t...(referenceId !== undefined && { reference_id: referenceId }),\n\t\t...(category !== undefined && { category })\n\t}\n}\n\nexport function parseSupplier(value: unknown): KatanaSupplier {\n\tif (!isPlainObject(value) || typeof value['id'] !== 'number') {\n\t\tthrow new ToolError('Katana returned an invalid supplier', { code: 'upstream' })\n\t}\n\tconst name = optionalString(value['name'])\n\tconst email = optionalString(value['email'])\n\tconst phone = optionalString(value['phone'])\n\tconst currency = optionalString(value['currency'])\n\tconst comment = optionalString(value['comment'])\n\treturn {\n\t\tid: value['id'],\n\t\t...(name && { name }),\n\t\t...(email !== undefined && { email }),\n\t\t...(phone !== undefined && { phone }),\n\t\t...(currency && { currency }),\n\t\t...(comment !== undefined && { comment })\n\t}\n}\n\nexport function parsePurchaseOrder(value: unknown): KatanaPurchaseOrder {\n\tif (!isPlainObject(value) || typeof value['id'] !== 'number') {\n\t\tthrow new ToolError('Katana returned an invalid purchase order', { code: 'upstream' })\n\t}\n\tconst orderNo = optionalString(value['order_no'])\n\tconst status = optionalString(value['status'])\n\tconst supplierId = optionalNumber(value['supplier_id'])\n\tconst locationId = optionalNumber(value['location_id'])\n\tconst currency = optionalString(value['currency'])\n\tconst entityType = optionalString(value['entity_type'])\n\tconst orderCreatedDate = optionalString(value['order_created_date'])\n\tconst expectedArrivalDate = optionalString(value['expected_arrival_date'])\n\tconst total = optionalNumber(value['total'])\n\tconst additionalInfo = optionalString(value['additional_info'])\n\treturn {\n\t\tid: value['id'],\n\t\t...(orderNo && { order_no: orderNo }),\n\t\t...(status && { status }),\n\t\t...(supplierId !== undefined && { supplier_id: supplierId }),\n\t\t...(locationId !== undefined && { location_id: locationId }),\n\t\t...(currency && { currency }),\n\t\t...(entityType && { entity_type: entityType }),\n\t\t...(orderCreatedDate && { order_created_date: orderCreatedDate }),\n\t\t...(expectedArrivalDate && { expected_arrival_date: expectedArrivalDate }),\n\t\t...(total !== undefined && { total }),\n\t\t...(additionalInfo !== undefined && { additional_info: additionalInfo })\n\t}\n}\n\nexport function parseManufacturingOrder(value: unknown): KatanaManufacturingOrder {\n\tif (!isPlainObject(value) || typeof value['id'] !== 'number') {\n\t\tthrow new ToolError('Katana returned an invalid manufacturing order', { code: 'upstream' })\n\t}\n\tconst orderNo = optionalString(value['order_no'])\n\tconst status = optionalString(value['status'])\n\tconst variantId = optionalNumber(value['variant_id'])\n\tconst locationId = optionalNumber(value['location_id'])\n\tconst plannedQuantity = optionalNumber(value['planned_quantity'])\n\tconst actualQuantity = optionalNumber(value['actual_quantity'])\n\tconst orderCreatedDate = optionalString(value['order_created_date'])\n\tconst productionDeadlineDate = optionalString(value['production_deadline_date'])\n\tconst ingredientAvailability = optionalString(value['ingredient_availability'])\n\tconst additionalInfo = optionalString(value['additional_info'])\n\tconst salesOrderId = optionalNumber(value['sales_order_id'])\n\treturn {\n\t\tid: value['id'],\n\t\t...(orderNo && { order_no: orderNo }),\n\t\t...(status && { status }),\n\t\t...(variantId !== undefined && { variant_id: variantId }),\n\t\t...(locationId !== undefined && { location_id: locationId }),\n\t\t...(plannedQuantity !== undefined && { planned_quantity: plannedQuantity }),\n\t\t...(actualQuantity !== undefined && { actual_quantity: actualQuantity }),\n\t\t...(orderCreatedDate && { order_created_date: orderCreatedDate }),\n\t\t...(productionDeadlineDate && { production_deadline_date: productionDeadlineDate }),\n\t\t...(ingredientAvailability && { ingredient_availability: ingredientAvailability }),\n\t\t...(additionalInfo !== undefined && { additional_info: additionalInfo }),\n\t\t...(salesOrderId !== undefined && { sales_order_id: salesOrderId })\n\t}\n}\n\nexport function parseInventory(value: unknown): KatanaInventory {\n\tif (!isPlainObject(value) || typeof value['variant_id'] !== 'number' || typeof value['location_id'] !== 'number') {\n\t\tthrow new ToolError('Katana returned an invalid inventory row', { code: 'upstream' })\n\t}\n\tconst quantityInStock = optionalNumber(value['quantity_in_stock'])\n\tconst quantityCommitted = optionalNumber(value['quantity_committed'])\n\tconst quantityExpected = optionalNumber(value['quantity_expected'])\n\tconst quantityMissingOrExcess = optionalNumber(value['quantity_missing_or_excess'])\n\tconst safetyStockLevel = optionalNumber(value['safety_stock_level'])\n\tconst averageCost = optionalNumber(value['average_cost'])\n\tconst valueInStock = optionalNumber(value['value_in_stock'])\n\treturn {\n\t\tvariant_id: value['variant_id'],\n\t\tlocation_id: value['location_id'],\n\t\t...(quantityInStock !== undefined && { quantity_in_stock: quantityInStock }),\n\t\t...(quantityCommitted !== undefined && { quantity_committed: quantityCommitted }),\n\t\t...(quantityExpected !== undefined && { quantity_expected: quantityExpected }),\n\t\t...(quantityMissingOrExcess !== undefined && {\n\t\t\tquantity_missing_or_excess: quantityMissingOrExcess\n\t\t}),\n\t\t...(safetyStockLevel !== undefined && { safety_stock_level: safetyStockLevel }),\n\t\t...(averageCost !== undefined && { average_cost: averageCost }),\n\t\t...(valueInStock !== undefined && { value_in_stock: valueInStock })\n\t}\n}\n\n// ── Write bodies ────────────────────────────────────────────────────────────\n\nfunction salesOrderRowBody(row: KatanaSalesOrderRowInput): Record<string, number> {\n\treturn {\n\t\tquantity: row.quantity,\n\t\tvariant_id: row.variant_id,\n\t\t...(row.tax_rate_id !== undefined && { tax_rate_id: row.tax_rate_id }),\n\t\t...(row.location_id !== undefined && { location_id: row.location_id }),\n\t\t...(row.price_per_unit !== undefined && { price_per_unit: row.price_per_unit }),\n\t\t...(row.total_discount !== undefined && { total_discount: row.total_discount })\n\t}\n}\n\nexport function salesOrderCreateBody(input: KatanaCreateSalesOrderInput): Record<string, unknown> {\n\treturn {\n\t\tcustomer_id: input.customer_id,\n\t\tsales_order_rows: input.sales_order_rows.map(salesOrderRowBody),\n\t\t...(input.order_no && { order_no: input.order_no }),\n\t\t...(input.order_created_date && { order_created_date: input.order_created_date }),\n\t\t...(input.delivery_date && { delivery_date: input.delivery_date }),\n\t\t...(input.currency && { currency: input.currency }),\n\t\t...(input.location_id !== undefined && { location_id: input.location_id }),\n\t\t...(input.status && { status: input.status }),\n\t\t...(input.additional_info !== undefined && { additional_info: input.additional_info }),\n\t\t...(input.customer_ref !== undefined && { customer_ref: input.customer_ref })\n\t}\n}\n\nexport function salesOrderUpdateBody(\n\tinput: Omit<KatanaUpdateSalesOrderInput, 'sales_order_id'>\n): Record<string, unknown> {\n\treturn {\n\t\t...(input.order_no && { order_no: input.order_no }),\n\t\t...(input.customer_id !== undefined && { customer_id: input.customer_id }),\n\t\t...(input.order_created_date && { order_created_date: input.order_created_date }),\n\t\t...(input.delivery_date && { delivery_date: input.delivery_date }),\n\t\t...(input.location_id !== undefined && { location_id: input.location_id }),\n\t\t...(input.status && { status: input.status }),\n\t\t...(input.currency && { currency: input.currency }),\n\t\t...(input.additional_info !== undefined && { additional_info: input.additional_info }),\n\t\t...(input.customer_ref !== undefined && { customer_ref: input.customer_ref })\n\t}\n}\n\nfunction productVariantBody(variant: KatanaProductVariantInput): Record<string, string | number> {\n\treturn {\n\t\t...(variant.sku && { sku: variant.sku }),\n\t\t...(variant.sales_price !== undefined && { sales_price: variant.sales_price }),\n\t\t...(variant.purchase_price !== undefined && { purchase_price: variant.purchase_price })\n\t}\n}\n\nexport function productCreateBody(input: KatanaCreateProductInput): Record<string, unknown> {\n\treturn {\n\t\tname: input.name,\n\t\tvariants: input.variants.map(productVariantBody),\n\t\t...(input.uom && { uom: input.uom }),\n\t\t...(input.category_name && { category_name: input.category_name }),\n\t\t...(input.is_sellable !== undefined && { is_sellable: input.is_sellable }),\n\t\t...(input.is_producible !== undefined && { is_producible: input.is_producible }),\n\t\t...(input.is_purchasable !== undefined && { is_purchasable: input.is_purchasable }),\n\t\t...(input.is_auto_assembly !== undefined && { is_auto_assembly: input.is_auto_assembly }),\n\t\t...(input.default_supplier_id !== undefined && {\n\t\t\tdefault_supplier_id: input.default_supplier_id\n\t\t}),\n\t\t...(input.additional_info !== undefined && { additional_info: input.additional_info }),\n\t\t...(input.batch_tracked !== undefined && { batch_tracked: input.batch_tracked }),\n\t\t...(input.serial_tracked !== undefined && { serial_tracked: input.serial_tracked })\n\t}\n}\n\nexport function productUpdateBody(input: Omit<KatanaUpdateProductInput, 'product_id'>): Record<string, unknown> {\n\treturn {\n\t\t...(input.name && { name: input.name }),\n\t\t...(input.uom && { uom: input.uom }),\n\t\t...(input.category_name !== undefined && { category_name: input.category_name }),\n\t\t...(input.is_sellable !== undefined && { is_sellable: input.is_sellable }),\n\t\t...(input.is_producible !== undefined && { is_producible: input.is_producible }),\n\t\t...(input.is_purchasable !== undefined && { is_purchasable: input.is_purchasable }),\n\t\t...(input.is_auto_assembly !== undefined && { is_auto_assembly: input.is_auto_assembly }),\n\t\t...(input.default_supplier_id !== undefined && {\n\t\t\tdefault_supplier_id: input.default_supplier_id\n\t\t}),\n\t\t...(input.additional_info !== undefined && { additional_info: input.additional_info }),\n\t\t...(input.batch_tracked !== undefined && { batch_tracked: input.batch_tracked }),\n\t\t...(input.serial_tracked !== undefined && { serial_tracked: input.serial_tracked })\n\t}\n}\n\nexport function customerWriteBody(\n\tinput: KatanaCreateCustomerInput | Omit<KatanaUpdateCustomerInput, 'customer_id'>\n): Record<string, unknown> {\n\tconst name = 'name' in input ? input.name : undefined\n\treturn {\n\t\t...(name && { name }),\n\t\t...(input.first_name !== undefined && { first_name: input.first_name }),\n\t\t...(input.last_name !== undefined && { last_name: input.last_name }),\n\t\t...(input.company !== undefined && { company: input.company }),\n\t\t...(input.email !== undefined && { email: input.email }),\n\t\t...(input.phone !== undefined && { phone: input.phone }),\n\t\t...(input.currency && { currency: input.currency }),\n\t\t...(input.reference_id !== undefined && { reference_id: input.reference_id }),\n\t\t...(input.category !== undefined && { category: input.category }),\n\t\t...(input.comment !== undefined && { comment: input.comment }),\n\t\t...(input.discount_rate !== undefined && { discount_rate: input.discount_rate })\n\t}\n}\n\nexport function supplierCreateBody(input: KatanaCreateSupplierInput): Record<string, unknown> {\n\treturn {\n\t\tname: input.name,\n\t\t...(input.currency && { currency: input.currency }),\n\t\t...(input.email !== undefined && { email: input.email }),\n\t\t...(input.phone !== undefined && { phone: input.phone }),\n\t\t...(input.comment !== undefined && { comment: input.comment })\n\t}\n}\n\nfunction purchaseOrderRowBody(row: KatanaPurchaseOrderRowInput): Record<string, string | number> {\n\treturn {\n\t\tquantity: row.quantity,\n\t\tvariant_id: row.variant_id,\n\t\tprice_per_unit: row.price_per_unit,\n\t\t...(row.tax_rate_id !== undefined && { tax_rate_id: row.tax_rate_id }),\n\t\t...(row.purchase_uom && { purchase_uom: row.purchase_uom }),\n\t\t...(row.purchase_uom_conversion_rate !== undefined && {\n\t\t\tpurchase_uom_conversion_rate: row.purchase_uom_conversion_rate\n\t\t}),\n\t\t...(row.arrival_date && { arrival_date: row.arrival_date })\n\t}\n}\n\nexport function purchaseOrderCreateBody(input: KatanaCreatePurchaseOrderInput): Record<string, unknown> {\n\treturn {\n\t\tsupplier_id: input.supplier_id,\n\t\tlocation_id: input.location_id,\n\t\tpurchase_order_rows: input.purchase_order_rows.map(purchaseOrderRowBody),\n\t\t...(input.order_no && { order_no: input.order_no }),\n\t\t...(input.entity_type && { entity_type: input.entity_type }),\n\t\t...(input.currency && { currency: input.currency }),\n\t\t...(input.status && { status: input.status }),\n\t\t...(input.expected_arrival_date && { expected_arrival_date: input.expected_arrival_date }),\n\t\t...(input.order_created_date && { order_created_date: input.order_created_date }),\n\t\t...(input.additional_info !== undefined && { additional_info: input.additional_info })\n\t}\n}\n\nexport function purchaseOrderUpdateBody(\n\tinput: Omit<KatanaUpdatePurchaseOrderInput, 'purchase_order_id'>\n): Record<string, unknown> {\n\treturn {\n\t\t...(input.order_no && { order_no: input.order_no }),\n\t\t...(input.supplier_id !== undefined && { supplier_id: input.supplier_id }),\n\t\t...(input.location_id !== undefined && { location_id: input.location_id }),\n\t\t...(input.currency && { currency: input.currency }),\n\t\t...(input.status && { status: input.status }),\n\t\t...(input.expected_arrival_date && { expected_arrival_date: input.expected_arrival_date }),\n\t\t...(input.order_created_date && { order_created_date: input.order_created_date }),\n\t\t...(input.additional_info !== undefined && { additional_info: input.additional_info })\n\t}\n}\n\nexport function manufacturingOrderCreateBody(input: KatanaCreateManufacturingOrderInput): Record<string, unknown> {\n\treturn {\n\t\tvariant_id: input.variant_id,\n\t\tlocation_id: input.location_id,\n\t\tplanned_quantity: input.planned_quantity,\n\t\t...(input.order_no && { order_no: input.order_no }),\n\t\t...(input.order_created_date && { order_created_date: input.order_created_date }),\n\t\t...(input.production_deadline_date && {\n\t\t\tproduction_deadline_date: input.production_deadline_date\n\t\t}),\n\t\t...(input.additional_info !== undefined && { additional_info: input.additional_info }),\n\t\t...(input.status && { status: input.status })\n\t}\n}\n\nexport function manufacturingOrderUpdateBody(\n\tinput: Omit<KatanaUpdateManufacturingOrderInput, 'manufacturing_order_id'>\n): Record<string, unknown> {\n\treturn {\n\t\t...(input.order_no && { order_no: input.order_no }),\n\t\t...(input.planned_quantity !== undefined && { planned_quantity: input.planned_quantity }),\n\t\t...(input.actual_quantity !== undefined && { actual_quantity: input.actual_quantity }),\n\t\t...(input.order_created_date && { order_created_date: input.order_created_date }),\n\t\t...(input.production_deadline_date && {\n\t\t\tproduction_deadline_date: input.production_deadline_date\n\t\t}),\n\t\t...(input.additional_info !== undefined && { additional_info: input.additional_info }),\n\t\t...(input.status && { status: input.status })\n\t}\n}\n","/**\n * Katana MRP vendor client.\n * Host: `new KatanaClient(auth)`. Agent tools: `fromContext(ctx)`.\n */\n\nimport { isPlainObject } from 'es-toolkit'\n\nimport { ToolError } from '../../core/errors'\nimport { requireAuth } from '../../core/provider'\nimport type { ToolContext } from '../../core/types'\nimport { HttpService } from '../../transport/http-service'\nimport type { HttpServiceOptions } from '../../transport/http-service'\nimport type {\n\tKatanaAuth,\n\tKatanaCreateCustomerInput,\n\tKatanaCreateCustomerOutput,\n\tKatanaCreateManufacturingOrderInput,\n\tKatanaCreateManufacturingOrderOutput,\n\tKatanaCreateProductInput,\n\tKatanaCreateProductOutput,\n\tKatanaCreatePurchaseOrderInput,\n\tKatanaCreatePurchaseOrderOutput,\n\tKatanaCreateSalesOrderInput,\n\tKatanaCreateSalesOrderOutput,\n\tKatanaCreateSupplierInput,\n\tKatanaCreateSupplierOutput,\n\tKatanaDeleteSalesOrderInput,\n\tKatanaDeleteSalesOrderOutput,\n\tKatanaGetCustomerInput,\n\tKatanaGetCustomerOutput,\n\tKatanaGetManufacturingOrderInput,\n\tKatanaGetManufacturingOrderOutput,\n\tKatanaGetMaterialInput,\n\tKatanaGetMaterialOutput,\n\tKatanaGetProductInput,\n\tKatanaGetProductOutput,\n\tKatanaGetPurchaseOrderInput,\n\tKatanaGetPurchaseOrderOutput,\n\tKatanaGetSalesOrderInput,\n\tKatanaGetSalesOrderOutput,\n\tKatanaGetSupplierInput,\n\tKatanaGetSupplierOutput,\n\tKatanaListCustomersInput,\n\tKatanaListCustomersOutput,\n\tKatanaListInventoryInput,\n\tKatanaListInventoryOutput,\n\tKatanaListManufacturingOrdersInput,\n\tKatanaListManufacturingOrdersOutput,\n\tKatanaListMaterialsInput,\n\tKatanaListMaterialsOutput,\n\tKatanaListProductsInput,\n\tKatanaListProductsOutput,\n\tKatanaListPurchaseOrdersInput,\n\tKatanaListPurchaseOrdersOutput,\n\tKatanaListSalesOrdersInput,\n\tKatanaListSalesOrdersOutput,\n\tKatanaListSuppliersInput,\n\tKatanaListSuppliersOutput,\n\tKatanaQuerySalesOrdersInput,\n\tKatanaQuerySalesOrdersOutput,\n\tKatanaUpdateCustomerInput,\n\tKatanaUpdateCustomerOutput,\n\tKatanaUpdateManufacturingOrderInput,\n\tKatanaUpdateManufacturingOrderOutput,\n\tKatanaUpdateProductInput,\n\tKatanaUpdateProductOutput,\n\tKatanaUpdatePurchaseOrderInput,\n\tKatanaUpdatePurchaseOrderOutput,\n\tKatanaUpdateSalesOrderInput,\n\tKatanaUpdateSalesOrderOutput\n} from './contracts'\nimport { katanaAuthSchema } from './contracts'\nimport {\n\tKATANA_API_BASE,\n\tcustomerWriteBody,\n\tlistPageMeta,\n\tmanufacturingOrderCreateBody,\n\tmanufacturingOrderUpdateBody,\n\tmatchOrderCreatedDateScope,\n\tnormalizeSalesOrderHeader,\n\tnormalizeSalesOrderRow,\n\tpageFromCursor,\n\tparseCustomer,\n\tparseInventory,\n\tparseListEnvelope,\n\tparseManufacturingOrder,\n\tparseMaterial,\n\tparseProduct,\n\tparsePurchaseOrder,\n\tparseSalesOrder,\n\tparseSalesOrderCreatedAt,\n\tparseSalesOrderRow,\n\tparseSupplier,\n\tproductCreateBody,\n\tproductUpdateBody,\n\tpurchaseOrderCreateBody,\n\tpurchaseOrderUpdateBody,\n\tsalesOrderCreateBody,\n\tsalesOrderListDateQuery,\n\tsalesOrderUpdateBody,\n\tsupplierCreateBody,\n\tunwrapResource\n} from './domain'\nimport type { ParsedSalesOrderRow } from './domain'\n\nexport type KatanaClientOptions = Pick<HttpServiceOptions, 'fetch' | 'signal'>\n\nexport class KatanaClient {\n\treadonly #http: HttpService\n\n\tconstructor(auth: KatanaAuth, options: KatanaClientOptions = {}) {\n\t\tconst parsed = katanaAuthSchema.safeParse(auth)\n\t\tif (!parsed.success) {\n\t\t\tthrow new ToolError('Invalid Katana auth credentials', {\n\t\t\t\tcode: 'bad_auth',\n\t\t\t\tdetails: { issues: parsed.error.issues.map((issue) => issue.message) }\n\t\t\t})\n\t\t}\n\t\tthis.#http = new HttpService({\n\t\t\t...options,\n\t\t\tbaseURL: KATANA_API_BASE,\n\t\t\theaders: {\n\t\t\t\tAuthorization: `Bearer ${parsed.data.api_key}`,\n\t\t\t\t'Content-Type': 'application/json'\n\t\t\t},\n\t\t\tlabel: 'Katana'\n\t\t})\n\t}\n\n\tstatic fromContext(ctx: ToolContext): KatanaClient {\n\t\tconst auth = requireAuth(ctx, katanaAuthSchema)\n\t\treturn new KatanaClient(auth, {\n\t\t\t...(ctx.fetch && { fetch: ctx.fetch }),\n\t\t\t...(ctx.signal && { signal: ctx.signal })\n\t\t})\n\t}\n\n\t// ── Sales orders ────────────────────────────────────────────────────────\n\n\t/** GET /sales_orders */\n\tasync listSalesOrders(input: KatanaListSalesOrdersInput = {}): Promise<KatanaListSalesOrdersOutput> {\n\t\tconst page = pageFromCursor(input.cursor)\n\t\tconst limit = input.limit ?? 50\n\t\tconst { data } = await this.#http.get('/sales_orders', {\n\t\t\tlabel: 'Katana listSalesOrders',\n\t\t\tquery: {\n\t\t\t\tpage,\n\t\t\t\tlimit,\n\t\t\t\t...(input.status && { status: input.status }),\n\t\t\t\t...(input.customer_id !== undefined && { customer_id: input.customer_id }),\n\t\t\t\t...(input.order_no && { order_no: input.order_no }),\n\t\t\t\t...(input.location_id !== undefined && { location_id: input.location_id })\n\t\t\t}\n\t\t})\n\t\tconst parsed = parseListEnvelope(data, parseSalesOrder, 'sales orders')\n\t\tconst pageMeta = listPageMeta(page, limit, parsed.items.length, parsed.totalPages)\n\t\treturn {\n\t\t\titems: parsed.items,\n\t\t\ttruncated: pageMeta.truncated,\n\t\t\t...(pageMeta.next_cursor && { next_cursor: pageMeta.next_cursor })\n\t\t}\n\t}\n\n\t/** GET /sales_orders/{id} */\n\tasync getSalesOrder(input: KatanaGetSalesOrderInput): Promise<KatanaGetSalesOrderOutput> {\n\t\tconst { data } = await this.#http.get(`/sales_orders/${input.sales_order_id}`, {\n\t\t\tlabel: 'Katana getSalesOrder'\n\t\t})\n\t\treturn { sales_order: parseSalesOrder(unwrapResource(data)) }\n\t}\n\n\t/** POST /sales_orders */\n\tasync createSalesOrder(input: KatanaCreateSalesOrderInput): Promise<KatanaCreateSalesOrderOutput> {\n\t\tconst { data } = await this.#http.post('/sales_orders', salesOrderCreateBody(input), {\n\t\t\tlabel: 'Katana createSalesOrder'\n\t\t})\n\t\treturn { sales_order: parseSalesOrder(unwrapResource(data)) }\n\t}\n\n\t/** PATCH /sales_orders/{id} */\n\tasync updateSalesOrder(input: KatanaUpdateSalesOrderInput): Promise<KatanaUpdateSalesOrderOutput> {\n\t\tconst { sales_order_id, ...fields } = input\n\t\tconst { data } = await this.#http.patch(`/sales_orders/${sales_order_id}`, salesOrderUpdateBody(fields), {\n\t\t\tlabel: 'Katana updateSalesOrder'\n\t\t})\n\t\treturn { sales_order: parseSalesOrder(unwrapResource(data)) }\n\t}\n\n\t/** DELETE /sales_orders/{id} */\n\tasync deleteSalesOrder(input: KatanaDeleteSalesOrderInput): Promise<KatanaDeleteSalesOrderOutput> {\n\t\tawait this.#http.delete(`/sales_orders/${input.sales_order_id}`, {\n\t\t\tlabel: 'Katana deleteSalesOrder'\n\t\t})\n\t\treturn { deleted: true, id: input.sales_order_id }\n\t}\n\n\t/**\n\t * Composite sales-order query for reporting/reconciliation.\n\t * Multi-scope × multi-status sequential pagination, dedupe by id, customer + row enrichment.\n\t *\n\t * API spike (GET /sales_orders): created_at_min/max, single status, customer_id, location_id.\n\t * order_created_date ranges are client-side (no list filter). Rows via GET /sales_order_rows\n\t * with sales_order_ids + extend=variant.\n\t */\n\tasync querySalesOrders(input: KatanaQuerySalesOrdersInput): Promise<KatanaQuerySalesOrdersOutput> {\n\t\tconst maxPages = input.max_pages_per_list ?? 20\n\t\tconst pageSize = input.page_size ?? 50\n\t\tconst byId = new Map<number, ReturnType<typeof parseSalesOrder>>()\n\n\t\tfor (const scope of input.scopes) {\n\t\t\tconst statuses: Array<string | undefined> =\n\t\t\t\tscope.statuses && scope.statuses.length > 0 ? scope.statuses : [undefined]\n\t\t\tconst dateQuery = salesOrderListDateQuery(scope)\n\t\t\tfor (const status of statuses) {\n\t\t\t\tlet cursor: string | undefined\n\t\t\t\tfor (let page = 0; page < maxPages; page += 1) {\n\t\t\t\t\tconst pageNum = pageFromCursor(cursor)\n\t\t\t\t\tconst { data } = await this.#http.get('/sales_orders', {\n\t\t\t\t\t\tlabel: 'Katana querySalesOrders list',\n\t\t\t\t\t\tquery: {\n\t\t\t\t\t\t\tpage: pageNum,\n\t\t\t\t\t\t\tlimit: pageSize,\n\t\t\t\t\t\t\t...(status && { status }),\n\t\t\t\t\t\t\t...(scope.customer_id !== undefined && { customer_id: scope.customer_id }),\n\t\t\t\t\t\t\t...(scope.location_id !== undefined && { location_id: scope.location_id }),\n\t\t\t\t\t\t\t...dateQuery\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\tconst parsed = parseListEnvelope(data, parseSalesOrder, 'sales orders')\n\t\t\t\t\tfor (const order of parsed.items) {\n\t\t\t\t\t\tif (byId.has(order.id)) continue\n\t\t\t\t\t\tif (!matchOrderCreatedDateScope(order.order_created_date, scope)) continue\n\t\t\t\t\t\tconst rawRows =\n\t\t\t\t\t\t\tisPlainObject(data) && Array.isArray(data['data']) ? data['data'] : Array.isArray(data) ? data : []\n\t\t\t\t\t\tconst raw = rawRows.find((r) => isPlainObject(r) && r['id'] === order.id)\n\t\t\t\t\t\tconst rawCreated = parseSalesOrderCreatedAt(raw) ?? order.created_at\n\t\t\t\t\t\tbyId.set(order.id, { ...order, ...(rawCreated && { created_at: rawCreated }) })\n\t\t\t\t\t}\n\t\t\t\t\tconst pageMeta = listPageMeta(pageNum, pageSize, parsed.items.length, parsed.totalPages)\n\t\t\t\t\tif (!pageMeta.next_cursor) break\n\t\t\t\t\tcursor = pageMeta.next_cursor\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst orderIds = [...byId.keys()]\n\t\tconst customerCache = new Map<number, string | undefined>()\n\t\tconst rowsByOrder = new Map<number, ParsedSalesOrderRow[]>()\n\n\t\tconst chunkSize = 50\n\t\tfor (let i = 0; i < orderIds.length; i += chunkSize) {\n\t\t\tconst chunk = orderIds.slice(i, i + chunkSize)\n\t\t\tconst rows = await this.#listSalesOrderRowsForOrders(chunk)\n\t\t\tfor (const row of rows) {\n\t\t\t\tconst list = rowsByOrder.get(row.sales_order_id) ?? []\n\t\t\t\tlist.push(row)\n\t\t\t\trowsByOrder.set(row.sales_order_id, list)\n\t\t\t}\n\t\t}\n\n\t\tfor (const order of byId.values()) {\n\t\t\tif (order.customer_id === undefined || customerCache.has(order.customer_id)) continue\n\t\t\ttry {\n\t\t\t\tconst { customer } = await this.getCustomer({ customer_id: order.customer_id })\n\t\t\t\tconst combined = [customer.first_name, customer.last_name].filter(Boolean).join(' ')\n\t\t\t\tconst name = customer.name ?? (combined.length > 0 ? combined : undefined) ?? customer.company\n\t\t\t\tcustomerCache.set(order.customer_id, name && name.length > 0 ? name : undefined)\n\t\t\t} catch {\n\t\t\t\tcustomerCache.set(order.customer_id, undefined)\n\t\t\t}\n\t\t}\n\n\t\tconst orders = orderIds.map((id) => {\n\t\t\tconst order = byId.get(id)\n\t\t\tif (!order) {\n\t\t\t\tthrow new ToolError('Internal order map missing id', { code: 'internal' })\n\t\t\t}\n\t\t\tconst rows = normalizeSalesOrderRow(rowsByOrder.get(id) ?? [])\n\t\t\tconst customerName = order.customer_id !== undefined ? customerCache.get(order.customer_id) : undefined\n\t\t\treturn normalizeSalesOrderHeader(order, customerName, rows)\n\t\t})\n\n\t\treturn { orders, order_count: orders.length }\n\t}\n\n\tasync #listSalesOrderRowsForOrders(salesOrderIds: number[]): Promise<ParsedSalesOrderRow[]> {\n\t\tif (salesOrderIds.length === 0) return []\n\t\tconst pageSize = 250\n\t\tconst out: ParsedSalesOrderRow[] = []\n\t\tlet cursor: string | undefined\n\t\tfor (let page = 0; page < 100; page += 1) {\n\t\t\tconst pageNum = pageFromCursor(cursor)\n\t\t\tconst { data } = await this.#http.get('/sales_order_rows', {\n\t\t\t\tlabel: 'Katana listSalesOrderRows',\n\t\t\t\tquery: {\n\t\t\t\t\tpage: pageNum,\n\t\t\t\t\tlimit: pageSize,\n\t\t\t\t\t// Docs: array of integers; HttpService query values are scalar — comma join.\n\t\t\t\t\tsales_order_ids: salesOrderIds.join(','),\n\t\t\t\t\textend: 'variant'\n\t\t\t\t}\n\t\t\t})\n\t\t\tconst parsed = parseListEnvelope(data, parseSalesOrderRow, 'sales order rows')\n\t\t\tout.push(...parsed.items)\n\t\t\tconst pageMeta = listPageMeta(pageNum, pageSize, parsed.items.length, parsed.totalPages)\n\t\t\tif (!pageMeta.next_cursor) break\n\t\t\tcursor = pageMeta.next_cursor\n\t\t}\n\t\treturn out\n\t}\n\n\t// ── Products ────────────────────────────────────────────────────────────\n\n\t/** GET /products */\n\tasync listProducts(input: KatanaListProductsInput = {}): Promise<KatanaListProductsOutput> {\n\t\tconst page = pageFromCursor(input.cursor)\n\t\tconst limit = input.limit ?? 50\n\t\tconst { data } = await this.#http.get('/products', {\n\t\t\tlabel: 'Katana listProducts',\n\t\t\tquery: {\n\t\t\t\tpage,\n\t\t\t\tlimit,\n\t\t\t\t...(input.name && { name: input.name }),\n\t\t\t\t...(input.is_sellable !== undefined && { is_sellable: input.is_sellable }),\n\t\t\t\t...(input.is_producible !== undefined && { is_producible: input.is_producible }),\n\t\t\t\t...(input.is_purchasable !== undefined && { is_purchasable: input.is_purchasable })\n\t\t\t}\n\t\t})\n\t\tconst parsed = parseListEnvelope(data, parseProduct, 'products')\n\t\tconst pageMeta = listPageMeta(page, limit, parsed.items.length, parsed.totalPages)\n\t\treturn {\n\t\t\titems: parsed.items,\n\t\t\ttruncated: pageMeta.truncated,\n\t\t\t...(pageMeta.next_cursor && { next_cursor: pageMeta.next_cursor })\n\t\t}\n\t}\n\n\t/** GET /products/{id} */\n\tasync getProduct(input: KatanaGetProductInput): Promise<KatanaGetProductOutput> {\n\t\tconst { data } = await this.#http.get(`/products/${input.product_id}`, {\n\t\t\tlabel: 'Katana getProduct'\n\t\t})\n\t\treturn { product: parseProduct(unwrapResource(data)) }\n\t}\n\n\t/** POST /products */\n\tasync createProduct(input: KatanaCreateProductInput): Promise<KatanaCreateProductOutput> {\n\t\tconst { data } = await this.#http.post('/products', productCreateBody(input), {\n\t\t\tlabel: 'Katana createProduct'\n\t\t})\n\t\treturn { product: parseProduct(unwrapResource(data)) }\n\t}\n\n\t/** PATCH /products/{id} */\n\tasync updateProduct(input: KatanaUpdateProductInput): Promise<KatanaUpdateProductOutput> {\n\t\tconst { product_id, ...fields } = input\n\t\tconst { data } = await this.#http.patch(`/products/${product_id}`, productUpdateBody(fields), {\n\t\t\tlabel: 'Katana updateProduct'\n\t\t})\n\t\treturn { product: parseProduct(unwrapResource(data)) }\n\t}\n\n\t// ── Materials ───────────────────────────────────────────────────────────\n\n\t/** GET /materials */\n\tasync listMaterials(input: KatanaListMaterialsInput = {}): Promise<KatanaListMaterialsOutput> {\n\t\tconst page = pageFromCursor(input.cursor)\n\t\tconst limit = input.limit ?? 50\n\t\tconst { data } = await this.#http.get('/materials', {\n\t\t\tlabel: 'Katana listMaterials',\n\t\t\tquery: {\n\t\t\t\tpage,\n\t\t\t\tlimit,\n\t\t\t\t...(input.name && { name: input.name })\n\t\t\t}\n\t\t})\n\t\tconst parsed = parseListEnvelope(data, parseMaterial, 'materials')\n\t\tconst pageMeta = listPageMeta(page, limit, parsed.items.length, parsed.totalPages)\n\t\treturn {\n\t\t\titems: parsed.items,\n\t\t\ttruncated: pageMeta.truncated,\n\t\t\t...(pageMeta.next_cursor && { next_cursor: pageMeta.next_cursor })\n\t\t}\n\t}\n\n\t/** GET /materials/{id} */\n\tasync getMaterial(input: KatanaGetMaterialInput): Promise<KatanaGetMaterialOutput> {\n\t\tconst { data } = await this.#http.get(`/materials/${input.material_id}`, {\n\t\t\tlabel: 'Katana getMaterial'\n\t\t})\n\t\treturn { material: parseMaterial(unwrapResource(data)) }\n\t}\n\n\t// ── Customers ───────────────────────────────────────────────────────────\n\n\t/** GET /customers */\n\tasync listCustomers(input: KatanaListCustomersInput = {}): Promise<KatanaListCustomersOutput> {\n\t\tconst page = pageFromCursor(input.cursor)\n\t\tconst limit = input.limit ?? 50\n\t\tconst { data } = await this.#http.get('/customers', {\n\t\t\tlabel: 'Katana listCustomers',\n\t\t\tquery: {\n\t\t\t\tpage,\n\t\t\t\tlimit,\n\t\t\t\t...(input.name && { name: input.name }),\n\t\t\t\t...(input.email && { email: input.email })\n\t\t\t}\n\t\t})\n\t\tconst parsed = parseListEnvelope(data, parseCustomer, 'customers')\n\t\tconst pageMeta = listPageMeta(page, limit, parsed.items.length, parsed.totalPages)\n\t\treturn {\n\t\t\titems: parsed.items,\n\t\t\ttruncated: pageMeta.truncated,\n\t\t\t...(pageMeta.next_cursor && { next_cursor: pageMeta.next_cursor })\n\t\t}\n\t}\n\n\t/** GET /customers/{id} */\n\tasync getCustomer(input: KatanaGetCustomerInput): Promise<KatanaGetCustomerOutput> {\n\t\tconst { data } = await this.#http.get(`/customers/${input.customer_id}`, {\n\t\t\tlabel: 'Katana getCustomer'\n\t\t})\n\t\treturn { customer: parseCustomer(unwrapResource(data)) }\n\t}\n\n\t/** POST /customers */\n\tasync createCustomer(input: KatanaCreateCustomerInput): Promise<KatanaCreateCustomerOutput> {\n\t\tconst { data } = await this.#http.post('/customers', customerWriteBody(input), {\n\t\t\tlabel: 'Katana createCustomer'\n\t\t})\n\t\treturn { customer: parseCustomer(unwrapResource(data)) }\n\t}\n\n\t/** PATCH /customers/{id} */\n\tasync updateCustomer(input: KatanaUpdateCustomerInput): Promise<KatanaUpdateCustomerOutput> {\n\t\tconst { customer_id, ...fields } = input\n\t\tconst { data } = await this.#http.patch(`/customers/${customer_id}`, customerWriteBody(fields), {\n\t\t\tlabel: 'Katana updateCustomer'\n\t\t})\n\t\treturn { customer: parseCustomer(unwrapResource(data)) }\n\t}\n\n\t// ── Suppliers ───────────────────────────────────────────────────────────\n\n\t/** GET /suppliers */\n\tasync listSuppliers(input: KatanaListSuppliersInput = {}): Promise<KatanaListSuppliersOutput> {\n\t\tconst page = pageFromCursor(input.cursor)\n\t\tconst limit = input.limit ?? 50\n\t\tconst { data } = await this.#http.get('/suppliers', {\n\t\t\tlabel: 'Katana listSuppliers',\n\t\t\tquery: {\n\t\t\t\tpage,\n\t\t\t\tlimit,\n\t\t\t\t...(input.name && { name: input.name })\n\t\t\t}\n\t\t})\n\t\tconst parsed = parseListEnvelope(data, parseSupplier, 'suppliers')\n\t\tconst pageMeta = listPageMeta(page, limit, parsed.items.length, parsed.totalPages)\n\t\treturn {\n\t\t\titems: parsed.items,\n\t\t\ttruncated: pageMeta.truncated,\n\t\t\t...(pageMeta.next_cursor && { next_cursor: pageMeta.next_cursor })\n\t\t}\n\t}\n\n\t/** GET /suppliers/{id} */\n\tasync getSupplier(input: KatanaGetSupplierInput): Promise<KatanaGetSupplierOutput> {\n\t\tconst { data } = await this.#http.get(`/suppliers/${input.supplier_id}`, {\n\t\t\tlabel: 'Katana getSupplier'\n\t\t})\n\t\treturn { supplier: parseSupplier(unwrapResource(data)) }\n\t}\n\n\t/** POST /suppliers */\n\tasync createSupplier(input: KatanaCreateSupplierInput): Promise<KatanaCreateSupplierOutput> {\n\t\tconst { data } = await this.#http.post('/suppliers', supplierCreateBody(input), {\n\t\t\tlabel: 'Katana createSupplier'\n\t\t})\n\t\treturn { supplier: parseSupplier(unwrapResource(data)) }\n\t}\n\n\t// ── Purchase orders ─────────────────────────────────────────────────────\n\n\t/** GET /purchase_orders */\n\tasync listPurchaseOrders(input: KatanaListPurchaseOrdersInput = {}): Promise<KatanaListPurchaseOrdersOutput> {\n\t\tconst page = pageFromCursor(input.cursor)\n\t\tconst limit = input.limit ?? 50\n\t\tconst { data } = await this.#http.get('/purchase_orders', {\n\t\t\tlabel: 'Katana listPurchaseOrders',\n\t\t\tquery: {\n\t\t\t\tpage,\n\t\t\t\tlimit,\n\t\t\t\t...(input.status && { status: input.status }),\n\t\t\t\t...(input.supplier_id !== undefined && { supplier_id: input.supplier_id }),\n\t\t\t\t...(input.order_no && { order_no: input.order_no }),\n\t\t\t\t...(input.location_id !== undefined && { location_id: input.location_id })\n\t\t\t}\n\t\t})\n\t\tconst parsed = parseListEnvelope(data, parsePurchaseOrder, 'purchase orders')\n\t\tconst pageMeta = listPageMeta(page, limit, parsed.items.length, parsed.totalPages)\n\t\treturn {\n\t\t\titems: parsed.items,\n\t\t\ttruncated: pageMeta.truncated,\n\t\t\t...(pageMeta.next_cursor && { next_cursor: pageMeta.next_cursor })\n\t\t}\n\t}\n\n\t/** GET /purchase_orders/{id} */\n\tasync getPurchaseOrder(input: KatanaGetPurchaseOrderInput): Promise<KatanaGetPurchaseOrderOutput> {\n\t\tconst { data } = await this.#http.get(`/purchase_orders/${input.purchase_order_id}`, {\n\t\t\tlabel: 'Katana getPurchaseOrder'\n\t\t})\n\t\treturn { purchase_order: parsePurchaseOrder(unwrapResource(data)) }\n\t}\n\n\t/** POST /purchase_orders */\n\tasync createPurchaseOrder(input: KatanaCreatePurchaseOrderInput): Promise<KatanaCreatePurchaseOrderOutput> {\n\t\tconst { data } = await this.#http.post('/purchase_orders', purchaseOrderCreateBody(input), {\n\t\t\tlabel: 'Katana createPurchaseOrder'\n\t\t})\n\t\treturn { purchase_order: parsePurchaseOrder(unwrapResource(data)) }\n\t}\n\n\t/** PATCH /purchase_orders/{id} */\n\tasync updatePurchaseOrder(input: KatanaUpdatePurchaseOrderInput): Promise<KatanaUpdatePurchaseOrderOutput> {\n\t\tconst { purchase_order_id, ...fields } = input\n\t\tconst { data } = await this.#http.patch(`/purchase_orders/${purchase_order_id}`, purchaseOrderUpdateBody(fields), {\n\t\t\tlabel: 'Katana updatePurchaseOrder'\n\t\t})\n\t\treturn { purchase_order: parsePurchaseOrder(unwrapResource(data)) }\n\t}\n\n\t// ── Manufacturing orders ────────────────────────────────────────────────\n\n\t/** GET /manufacturing_orders */\n\tasync listManufacturingOrders(\n\t\tinput: KatanaListManufacturingOrdersInput = {}\n\t): Promise<KatanaListManufacturingOrdersOutput> {\n\t\tconst page = pageFromCursor(input.cursor)\n\t\tconst limit = input.limit ?? 50\n\t\tconst { data } = await this.#http.get('/manufacturing_orders', {\n\t\t\tlabel: 'Katana listManufacturingOrders',\n\t\t\tquery: {\n\t\t\t\tpage,\n\t\t\t\tlimit,\n\t\t\t\t...(input.status && { status: input.status }),\n\t\t\t\t...(input.variant_id !== undefined && { variant_id: input.variant_id }),\n\t\t\t\t...(input.location_id !== undefined && { location_id: input.location_id }),\n\t\t\t\t...(input.order_no && { order_no: input.order_no })\n\t\t\t}\n\t\t})\n\t\tconst parsed = parseListEnvelope(data, parseManufacturingOrder, 'manufacturing orders')\n\t\tconst pageMeta = listPageMeta(page, limit, parsed.items.length, parsed.totalPages)\n\t\treturn {\n\t\t\titems: parsed.items,\n\t\t\ttruncated: pageMeta.truncated,\n\t\t\t...(pageMeta.next_cursor && { next_cursor: pageMeta.next_cursor })\n\t\t}\n\t}\n\n\t/** GET /manufacturing_orders/{id} */\n\tasync getManufacturingOrder(input: KatanaGetManufacturingOrderInput): Promise<KatanaGetManufacturingOrderOutput> {\n\t\tconst { data } = await this.#http.get(`/manufacturing_orders/${input.manufacturing_order_id}`, {\n\t\t\tlabel: 'Katana getManufacturingOrder'\n\t\t})\n\t\treturn { manufacturing_order: parseManufacturingOrder(unwrapResource(data)) }\n\t}\n\n\t/** POST /manufacturing_orders */\n\tasync createManufacturingOrder(\n\t\tinput: KatanaCreateManufacturingOrderInput\n\t): Promise<KatanaCreateManufacturingOrderOutput> {\n\t\tconst { data } = await this.#http.post('/manufacturing_orders', manufacturingOrderCreateBody(input), {\n\t\t\tlabel: 'Katana createManufacturingOrder'\n\t\t})\n\t\treturn { manufacturing_order: parseManufacturingOrder(unwrapResource(data)) }\n\t}\n\n\t/** PATCH /manufacturing_orders/{id} */\n\tasync updateManufacturingOrder(\n\t\tinput: KatanaUpdateManufacturingOrderInput\n\t): Promise<KatanaUpdateManufacturingOrderOutput> {\n\t\tconst { manufacturing_order_id, ...fields } = input\n\t\tconst { data } = await this.#http.patch(\n\t\t\t`/manufacturing_orders/${manufacturing_order_id}`,\n\t\t\tmanufacturingOrderUpdateBody(fields),\n\t\t\t{ label: 'Katana updateManufacturingOrder' }\n\t\t)\n\t\treturn { manufacturing_order: parseManufacturingOrder(unwrapResource(data)) }\n\t}\n\n\t// ── Inventory ───────────────────────────────────────────────────────────\n\n\t/** GET /inventory */\n\tasync listInventory(input: KatanaListInventoryInput = {}): Promise<KatanaListInventoryOutput> {\n\t\tconst page = pageFromCursor(input.cursor)\n\t\tconst limit = input.limit ?? 50\n\t\tconst { data } = await this.#http.get('/inventory', {\n\t\t\tlabel: 'Katana listInventory',\n\t\t\tquery: {\n\t\t\t\tpage,\n\t\t\t\tlimit,\n\t\t\t\t...(input.variant_id !== undefined && { variant_id: input.variant_id }),\n\t\t\t\t...(input.location_id !== undefined && { location_id: input.location_id })\n\t\t\t}\n\t\t})\n\t\tconst parsed = parseListEnvelope(data, parseInventory, 'inventory')\n\t\tconst pageMeta = listPageMeta(page, limit, parsed.items.length, parsed.totalPages)\n\t\treturn {\n\t\t\titems: parsed.items,\n\t\t\ttruncated: pageMeta.truncated,\n\t\t\t...(pageMeta.next_cursor && { next_cursor: pageMeta.next_cursor })\n\t\t}\n\t}\n}\n","import { defineModule, defineTool } from '../../core/define'\nimport { KatanaClient } from './client'\nimport {\n\tkatanaAuthSchema,\n\tkatanaCreateCustomerInputSchema,\n\tkatanaCreateCustomerOutputSchema,\n\tkatanaCreateManufacturingOrderInputSchema,\n\tkatanaCreateManufacturingOrderOutputSchema,\n\tkatanaCreateProductInputSchema,\n\tkatanaCreateProductOutputSchema,\n\tkatanaCreatePurchaseOrderInputSchema,\n\tkatanaCreatePurchaseOrderOutputSchema,\n\tkatanaCreateSalesOrderInputSchema,\n\tkatanaCreateSalesOrderOutputSchema,\n\tkatanaCreateSupplierInputSchema,\n\tkatanaCreateSupplierOutputSchema,\n\tkatanaDeleteSalesOrderInputSchema,\n\tkatanaDeleteSalesOrderOutputSchema,\n\tkatanaQuerySalesOrdersInputSchema,\n\tkatanaQuerySalesOrdersOutputSchema,\n\tkatanaGetCustomerInputSchema,\n\tkatanaGetCustomerOutputSchema,\n\tkatanaGetManufacturingOrderInputSchema,\n\tkatanaGetManufacturingOrderOutputSchema,\n\tkatanaGetMaterialInputSchema,\n\tkatanaGetMaterialOutputSchema,\n\tkatanaGetProductInputSchema,\n\tkatanaGetProductOutputSchema,\n\tkatanaGetPurchaseOrderInputSchema,\n\tkatanaGetPurchaseOrderOutputSchema,\n\tkatanaGetSalesOrderInputSchema,\n\tkatanaGetSalesOrderOutputSchema,\n\tkatanaGetSupplierInputSchema,\n\tkatanaGetSupplierOutputSchema,\n\tkatanaListCustomersInputSchema,\n\tkatanaListCustomersOutputSchema,\n\tkatanaListInventoryInputSchema,\n\tkatanaListInventoryOutputSchema,\n\tkatanaListManufacturingOrdersInputSchema,\n\tkatanaListManufacturingOrdersOutputSchema,\n\tkatanaListMaterialsInputSchema,\n\tkatanaListMaterialsOutputSchema,\n\tkatanaListProductsInputSchema,\n\tkatanaListProductsOutputSchema,\n\tkatanaListPurchaseOrdersInputSchema,\n\tkatanaListPurchaseOrdersOutputSchema,\n\tkatanaListSalesOrdersInputSchema,\n\tkatanaListSalesOrdersOutputSchema,\n\tkatanaListSuppliersInputSchema,\n\tkatanaListSuppliersOutputSchema,\n\tkatanaUpdateCustomerInputSchema,\n\tkatanaUpdateCustomerOutputSchema,\n\tkatanaUpdateManufacturingOrderInputSchema,\n\tkatanaUpdateManufacturingOrderOutputSchema,\n\tkatanaUpdateProductInputSchema,\n\tkatanaUpdateProductOutputSchema,\n\tkatanaUpdatePurchaseOrderInputSchema,\n\tkatanaUpdatePurchaseOrderOutputSchema,\n\tkatanaUpdateSalesOrderInputSchema,\n\tkatanaUpdateSalesOrderOutputSchema\n} from './contracts'\n\n// ── Sales orders ────────────────────────────────────────────────────────────\n\nexport const katanaListSalesOrdersTool = defineTool({\n\tid: 'katana-list-sales-orders',\n\tname: 'katanaListSalesOrders',\n\tdescription:\n\t\t'List Katana MRP sales orders with optional status, customer, order number, and location filters. Paginate with cursor (page number).',\n\tinputSchema: katanaListSalesOrdersInputSchema,\n\toutputSchema: katanaListSalesOrdersOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => KatanaClient.fromContext(ctx).listSalesOrders(input)\n})\n\nexport const katanaGetSalesOrderTool = defineTool({\n\tid: 'katana-get-sales-order',\n\tname: 'katanaGetSalesOrder',\n\tdescription: 'Get one Katana MRP sales order by numeric id.',\n\tinputSchema: katanaGetSalesOrderInputSchema,\n\toutputSchema: katanaGetSalesOrderOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => KatanaClient.fromContext(ctx).getSalesOrder(input)\n})\n\nexport const katanaCreateSalesOrderTool = defineTool({\n\tid: 'katana-create-sales-order',\n\tname: 'katanaCreateSalesOrder',\n\tdescription:\n\t\t'Create a Katana MRP sales order (customer_id and sales_order_rows required). Optional order number, dates, currency, location, and status.',\n\tinputSchema: katanaCreateSalesOrderInputSchema,\n\toutputSchema: katanaCreateSalesOrderOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => KatanaClient.fromContext(ctx).createSalesOrder(input)\n})\n\nexport const katanaUpdateSalesOrderTool = defineTool({\n\tid: 'katana-update-sales-order',\n\tname: 'katanaUpdateSalesOrder',\n\tdescription: 'Update a Katana MRP sales order by id (status, customer, dates, location, currency, notes, reference).',\n\tinputSchema: katanaUpdateSalesOrderInputSchema,\n\toutputSchema: katanaUpdateSalesOrderOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => KatanaClient.fromContext(ctx).updateSalesOrder(input)\n})\n\nexport const katanaDeleteSalesOrderTool = defineTool({\n\tid: 'katana-delete-sales-order',\n\tname: 'katanaDeleteSalesOrder',\n\tdescription: 'Delete a Katana MRP sales order by numeric id.',\n\tinputSchema: katanaDeleteSalesOrderInputSchema,\n\toutputSchema: katanaDeleteSalesOrderOutputSchema,\n\tsideEffect: 'delete',\n\truntime: 'both',\n\texecute: async (input, ctx) => KatanaClient.fromContext(ctx).deleteSalesOrder(input)\n})\n\nexport const katanaQuerySalesOrdersTool = defineTool({\n\tid: 'katana-query-sales-orders',\n\tname: 'katanaQuerySalesOrders',\n\tdescription:\n\t\t'Composite Katana MRP sales-order query for reporting: multi-scope union (status × date windows), sequential page drain, dedupe by order id, customer name enrichment, and line rows with tax-exclusive revenue and COGS in integer cents. Use when list/get alone are not enough for reconciliation.',\n\tinputSchema: katanaQuerySalesOrdersInputSchema,\n\toutputSchema: katanaQuerySalesOrdersOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => KatanaClient.fromContext(ctx).querySalesOrders(input)\n})\n\n// ── Products ────────────────────────────────────────────────────────────────\n\nexport const katanaListProductsTool = defineTool({\n\tid: 'katana-list-products',\n\tname: 'katanaListProducts',\n\tdescription:\n\t\t'List Katana MRP products with optional name and sellable/producible/purchasable filters. Paginate with cursor.',\n\tinputSchema: katanaListProductsInputSchema,\n\toutputSchema: katanaListProductsOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => KatanaClient.fromContext(ctx).listProducts(input)\n})\n\nexport const katanaGetProductTool = defineTool({\n\tid: 'katana-get-product',\n\tname: 'katanaGetProduct',\n\tdescription: 'Get one Katana MRP product by numeric id.',\n\tinputSchema: katanaGetProductInputSchema,\n\toutputSchema: katanaGetProductOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => KatanaClient.fromContext(ctx).getProduct(input)\n})\n\nexport const katanaCreateProductTool = defineTool({\n\tid: 'katana-create-product',\n\tname: 'katanaCreateProduct',\n\tdescription:\n\t\t'Create a Katana MRP product (name and variants required). Optional UoM, category, sellable/producible/purchasable flags.',\n\tinputSchema: katanaCreateProductInputSchema,\n\toutputSchema: katanaCreateProductOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => KatanaClient.fromContext(ctx).createProduct(input)\n})\n\nexport const katanaUpdateProductTool = defineTool({\n\tid: 'katana-update-product',\n\tname: 'katanaUpdateProduct',\n\tdescription: 'Update a Katana MRP product by id (name, UoM, category, flags, supplier, notes).',\n\tinputSchema: katanaUpdateProductInputSchema,\n\toutputSchema: katanaUpdateProductOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => KatanaClient.fromContext(ctx).updateProduct(input)\n})\n\n// ── Materials ───────────────────────────────────────────────────────────────\n\nexport const katanaListMaterialsTool = defineTool({\n\tid: 'katana-list-materials',\n\tname: 'katanaListMaterials',\n\tdescription: 'List Katana MRP materials with optional name filter. Paginate with cursor.',\n\tinputSchema: katanaListMaterialsInputSchema,\n\toutputSchema: katanaListMaterialsOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => KatanaClient.fromContext(ctx).listMaterials(input)\n})\n\nexport const katanaGetMaterialTool = defineTool({\n\tid: 'katana-get-material',\n\tname: 'katanaGetMaterial',\n\tdescription: 'Get one Katana MRP material by numeric id.',\n\tinputSchema: katanaGetMaterialInputSchema,\n\toutputSchema: katanaGetMaterialOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => KatanaClient.fromContext(ctx).getMaterial(input)\n})\n\n// ── Customers ───────────────────────────────────────────────────────────────\n\nexport const katanaListCustomersTool = defineTool({\n\tid: 'katana-list-customers',\n\tname: 'katanaListCustomers',\n\tdescription: 'List Katana MRP customers with optional name and email filters. Paginate with cursor.',\n\tinputSchema: katanaListCustomersInputSchema,\n\toutputSchema: katanaListCustomersOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => KatanaClient.fromContext(ctx).listCustomers(input)\n})\n\nexport const katanaGetCustomerTool = defineTool({\n\tid: 'katana-get-customer',\n\tname: 'katanaGetCustomer',\n\tdescription: 'Get one Katana MRP customer by numeric id.',\n\tinputSchema: katanaGetCustomerInputSchema,\n\toutputSchema: katanaGetCustomerOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => KatanaClient.fromContext(ctx).getCustomer(input)\n})\n\nexport const katanaCreateCustomerTool = defineTool({\n\tid: 'katana-create-customer',\n\tname: 'katanaCreateCustomer',\n\tdescription:\n\t\t'Create a Katana MRP customer (name required). Optional contact fields, currency, category, and discount.',\n\tinputSchema: katanaCreateCustomerInputSchema,\n\toutputSchema: katanaCreateCustomerOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => KatanaClient.fromContext(ctx).createCustomer(input)\n})\n\nexport const katanaUpdateCustomerTool = defineTool({\n\tid: 'katana-update-customer',\n\tname: 'katanaUpdateCustomer',\n\tdescription: 'Update a Katana MRP customer by id (name, contact fields, currency, category, discount).',\n\tinputSchema: katanaUpdateCustomerInputSchema,\n\toutputSchema: katanaUpdateCustomerOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => KatanaClient.fromContext(ctx).updateCustomer(input)\n})\n\n// ── Suppliers ───────────────────────────────────────────────────────────────\n\nexport const katanaListSuppliersTool = defineTool({\n\tid: 'katana-list-suppliers',\n\tname: 'katanaListSuppliers',\n\tdescription: 'List Katana MRP suppliers with optional name filter. Paginate with cursor.',\n\tinputSchema: katanaListSuppliersInputSchema,\n\toutputSchema: katanaListSuppliersOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => KatanaClient.fromContext(ctx).listSuppliers(input)\n})\n\nexport const katanaGetSupplierTool = defineTool({\n\tid: 'katana-get-supplier',\n\tname: 'katanaGetSupplier',\n\tdescription: 'Get one Katana MRP supplier by numeric id.',\n\tinputSchema: katanaGetSupplierInputSchema,\n\toutputSchema: katanaGetSupplierOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => KatanaClient.fromContext(ctx).getSupplier(input)\n})\n\nexport const katanaCreateSupplierTool = defineTool({\n\tid: 'katana-create-supplier',\n\tname: 'katanaCreateSupplier',\n\tdescription: 'Create a Katana MRP supplier (name required). Optional currency, email, phone, and comment.',\n\tinputSchema: katanaCreateSupplierInputSchema,\n\toutputSchema: katanaCreateSupplierOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => KatanaClient.fromContext(ctx).createSupplier(input)\n})\n\n// ── Purchase orders ─────────────────────────────────────────────────────────\n\nexport const katanaListPurchaseOrdersTool = defineTool({\n\tid: 'katana-list-purchase-orders',\n\tname: 'katanaListPurchaseOrders',\n\tdescription:\n\t\t'List Katana MRP purchase orders with optional status, supplier, order number, and location filters. Paginate with cursor.',\n\tinputSchema: katanaListPurchaseOrdersInputSchema,\n\toutputSchema: katanaListPurchaseOrdersOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => KatanaClient.fromContext(ctx).listPurchaseOrders(input)\n})\n\nexport const katanaGetPurchaseOrderTool = defineTool({\n\tid: 'katana-get-purchase-order',\n\tname: 'katanaGetPurchaseOrder',\n\tdescription: 'Get one Katana MRP purchase order by numeric id.',\n\tinputSchema: katanaGetPurchaseOrderInputSchema,\n\toutputSchema: katanaGetPurchaseOrderOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => KatanaClient.fromContext(ctx).getPurchaseOrder(input)\n})\n\nexport const katanaCreatePurchaseOrderTool = defineTool({\n\tid: 'katana-create-purchase-order',\n\tname: 'katanaCreatePurchaseOrder',\n\tdescription: 'Create a Katana MRP purchase order (supplier_id, location_id, and purchase_order_rows required).',\n\tinputSchema: katanaCreatePurchaseOrderInputSchema,\n\toutputSchema: katanaCreatePurchaseOrderOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => KatanaClient.fromContext(ctx).createPurchaseOrder(input)\n})\n\nexport const katanaUpdatePurchaseOrderTool = defineTool({\n\tid: 'katana-update-purchase-order',\n\tname: 'katanaUpdatePurchaseOrder',\n\tdescription: 'Update a Katana MRP purchase order by id (status, supplier, location, dates, currency, notes).',\n\tinputSchema: katanaUpdatePurchaseOrderInputSchema,\n\toutputSchema: katanaUpdatePurchaseOrderOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => KatanaClient.fromContext(ctx).updatePurchaseOrder(input)\n})\n\n// ── Manufacturing orders ────────────────────────────────────────────────────\n\nexport const katanaListManufacturingOrdersTool = defineTool({\n\tid: 'katana-list-manufacturing-orders',\n\tname: 'katanaListManufacturingOrders',\n\tdescription:\n\t\t'List Katana MRP manufacturing orders with optional status, variant, location, and order number filters. Paginate with cursor.',\n\tinputSchema: katanaListManufacturingOrdersInputSchema,\n\toutputSchema: katanaListManufacturingOrdersOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => KatanaClient.fromContext(ctx).listManufacturingOrders(input)\n})\n\nexport const katanaGetManufacturingOrderTool = defineTool({\n\tid: 'katana-get-manufacturing-order',\n\tname: 'katanaGetManufacturingOrder',\n\tdescription: 'Get one Katana MRP manufacturing order by numeric id.',\n\tinputSchema: katanaGetManufacturingOrderInputSchema,\n\toutputSchema: katanaGetManufacturingOrderOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => KatanaClient.fromContext(ctx).getManufacturingOrder(input)\n})\n\nexport const katanaCreateManufacturingOrderTool = defineTool({\n\tid: 'katana-create-manufacturing-order',\n\tname: 'katanaCreateManufacturingOrder',\n\tdescription:\n\t\t'Create a Katana MRP manufacturing order (variant_id, location_id, and planned_quantity required). Recipe and operations are generated from the product.',\n\tinputSchema: katanaCreateManufacturingOrderInputSchema,\n\toutputSchema: katanaCreateManufacturingOrderOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => KatanaClient.fromContext(ctx).createManufacturingOrder(input)\n})\n\nexport const katanaUpdateManufacturingOrderTool = defineTool({\n\tid: 'katana-update-manufacturing-order',\n\tname: 'katanaUpdateManufacturingOrder',\n\tdescription: 'Update a Katana MRP manufacturing order by id (status, quantities, dates, notes, order number).',\n\tinputSchema: katanaUpdateManufacturingOrderInputSchema,\n\toutputSchema: katanaUpdateManufacturingOrderOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => KatanaClient.fromContext(ctx).updateManufacturingOrder(input)\n})\n\n// ── Inventory ───────────────────────────────────────────────────────────────\n\nexport const katanaListInventoryTool = defineTool({\n\tid: 'katana-list-inventory',\n\tname: 'katanaListInventory',\n\tdescription:\n\t\t'List current Katana MRP inventory levels by variant and location. Optional variant_id and location_id filters. Paginate with cursor.',\n\tinputSchema: katanaListInventoryInputSchema,\n\toutputSchema: katanaListInventoryOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => KatanaClient.fromContext(ctx).listInventory(input)\n})\n\nexport const katanaModule = defineModule({\n\tid: 'katana',\n\ttitle: 'Katana',\n\tdescription:\n\t\t'Katana MRP vendor pack: sales orders (including composite query for reporting), products, materials, customers, suppliers, purchase orders, manufacturing orders, and inventory.',\n\truntime: 'both',\n\tauth: { type: 'custom', schema: katanaAuthSchema },\n\tcategories: ['commerce', 'inventory'],\n\tclassification: 'pii',\n\ttags: ['sales-orders'],\n\ttools: [\n\t\tkatanaListSalesOrdersTool,\n\t\tkatanaGetSalesOrderTool,\n\t\tkatanaCreateSalesOrderTool,\n\t\tkatanaUpdateSalesOrderTool,\n\t\tkatanaDeleteSalesOrderTool,\n\t\tkatanaQuerySalesOrdersTool,\n\t\tkatanaListProductsTool,\n\t\tkatanaGetProductTool,\n\t\tkatanaCreateProductTool,\n\t\tkatanaUpdateProductTool,\n\t\tkatanaListMaterialsTool,\n\t\tkatanaGetMaterialTool,\n\t\tkatanaListCustomersTool,\n\t\tkatanaGetCustomerTool,\n\t\tkatanaCreateCustomerTool,\n\t\tkatanaUpdateCustomerTool,\n\t\tkatanaListSuppliersTool,\n\t\tkatanaGetSupplierTool,\n\t\tkatanaCreateSupplierTool,\n\t\tkatanaListPurchaseOrdersTool,\n\t\tkatanaGetPurchaseOrderTool,\n\t\tkatanaCreatePurchaseOrderTool,\n\t\tkatanaUpdatePurchaseOrderTool,\n\t\tkatanaListManufacturingOrdersTool,\n\t\tkatanaGetManufacturingOrderTool,\n\t\tkatanaCreateManufacturingOrderTool,\n\t\tkatanaUpdateManufacturingOrderTool,\n\t\tkatanaListInventoryTool\n\t]\n})\n"],"mappings":"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"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { a as ModuleDefinition, o as ToolContext, s as ToolDefinition } from "../../types-Ccb0DXY9.js";
|
|
2
|
+
import "../../index-CZX5OeOF.js";
|
|
3
|
+
import { _ as upsertVectorsInputSchema, a as MAX_VECTOR_DIMENSIONS, b as vectorMetadataSchema, c as UpsertVectorsInput, d as VectorMetadata, f as VectorPoint, g as queryVectorsOutputSchema, h as queryVectorsInputSchema, i as MAX_VECTOR_BATCH, l as UpsertVectorsOutput, m as deleteVectorsOutputSchema, n as DeleteVectorsOutput, o as QueryVectorsInput, p as deleteVectorsInputSchema, r as MAX_TOP_K, s as QueryVectorsOutput, t as DeleteVectorsInput, u as VectorMatch, v as upsertVectorsOutputSchema, x as vectorPointSchema, y as vectorMatchSchema } from "../../index-ccZ1XOHw.js";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
//#region src/vendors/mastra-vector/contracts.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* Mastra PgVector auth (`@mastra/pg`).
|
|
8
|
+
* Host owns Postgres connection + schema; package does not invent org policy.
|
|
9
|
+
*/
|
|
10
|
+
declare const mastraVectorAuthSchema: z.ZodObject<{
|
|
11
|
+
connection_string: z.ZodString;
|
|
12
|
+
id: z.ZodString;
|
|
13
|
+
schema_name: z.ZodOptional<z.ZodString>;
|
|
14
|
+
default_index: z.ZodOptional<z.ZodString>;
|
|
15
|
+
dimension: z.ZodOptional<z.ZodNumber>;
|
|
16
|
+
auto_create_index: z.ZodOptional<z.ZodBoolean>;
|
|
17
|
+
disable_init: z.ZodOptional<z.ZodBoolean>;
|
|
18
|
+
default_filter: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
19
|
+
}, z.core.$strip>;
|
|
20
|
+
type MastraVectorAuth = z.infer<typeof mastraVectorAuthSchema>;
|
|
21
|
+
//#endregion
|
|
22
|
+
//#region src/vendors/mastra-vector/client.d.ts
|
|
23
|
+
/** Injected / real store surface (filter is opaque Record for seam compatibility). */
|
|
24
|
+
type MastraStore = {
|
|
25
|
+
upsert: (input: {
|
|
26
|
+
indexName: string;
|
|
27
|
+
ids: string[];
|
|
28
|
+
vectors: number[][];
|
|
29
|
+
metadata: Array<Record<string, unknown>>;
|
|
30
|
+
}) => Promise<unknown>;
|
|
31
|
+
query: (input: {
|
|
32
|
+
indexName: string;
|
|
33
|
+
queryVector: number[];
|
|
34
|
+
topK?: number;
|
|
35
|
+
includeVector?: boolean;
|
|
36
|
+
filter?: Record<string, unknown>;
|
|
37
|
+
}) => Promise<Array<{
|
|
38
|
+
id?: string;
|
|
39
|
+
score?: number;
|
|
40
|
+
metadata?: unknown;
|
|
41
|
+
vector?: number[];
|
|
42
|
+
}>>;
|
|
43
|
+
deleteVectors: (input: {
|
|
44
|
+
indexName: string;
|
|
45
|
+
ids: string[];
|
|
46
|
+
}) => Promise<unknown>;
|
|
47
|
+
createIndex: (input: {
|
|
48
|
+
indexName: string;
|
|
49
|
+
dimension: number;
|
|
50
|
+
}) => Promise<unknown>;
|
|
51
|
+
disconnect?: () => Promise<void>;
|
|
52
|
+
};
|
|
53
|
+
type MastraVectorClientOptions = {
|
|
54
|
+
/**
|
|
55
|
+
* Test injection — production uses PgVector.
|
|
56
|
+
* Must implement the same method names as PgVector for upsert/query/deleteVectors/createIndex.
|
|
57
|
+
*/
|
|
58
|
+
store?: MastraStore;
|
|
59
|
+
};
|
|
60
|
+
declare class MastraVectorClient {
|
|
61
|
+
#private;
|
|
62
|
+
constructor(auth: MastraVectorAuth, options?: MastraVectorClientOptions);
|
|
63
|
+
static fromContext(ctx: ToolContext): MastraVectorClient;
|
|
64
|
+
upsert(input: UpsertVectorsInput): Promise<UpsertVectorsOutput>;
|
|
65
|
+
query(input: QueryVectorsInput): Promise<QueryVectorsOutput>;
|
|
66
|
+
delete(input: DeleteVectorsInput): Promise<DeleteVectorsOutput>;
|
|
67
|
+
disconnect(): Promise<void>;
|
|
68
|
+
}
|
|
69
|
+
//#endregion
|
|
70
|
+
//#region src/vendors/mastra-vector/module.d.ts
|
|
71
|
+
declare const mastraVectorUpsertTool: ToolDefinition<{
|
|
72
|
+
collection?: string | undefined;
|
|
73
|
+
namespace?: string | undefined;
|
|
74
|
+
vectors: {
|
|
75
|
+
id: string;
|
|
76
|
+
values: number[];
|
|
77
|
+
metadata?: Record<string, string | number | boolean | null> | undefined;
|
|
78
|
+
}[];
|
|
79
|
+
}, {
|
|
80
|
+
upserted: number;
|
|
81
|
+
collection?: string | undefined;
|
|
82
|
+
}>;
|
|
83
|
+
declare const mastraVectorQueryTool: ToolDefinition<{
|
|
84
|
+
collection?: string | undefined;
|
|
85
|
+
namespace?: string | undefined;
|
|
86
|
+
vector: number[];
|
|
87
|
+
top_k?: number | undefined;
|
|
88
|
+
include_values?: boolean | undefined;
|
|
89
|
+
include_metadata?: boolean | undefined;
|
|
90
|
+
filter?: Record<string, unknown> | undefined;
|
|
91
|
+
}, {
|
|
92
|
+
matches: {
|
|
93
|
+
id: string;
|
|
94
|
+
score: number;
|
|
95
|
+
values?: number[] | undefined;
|
|
96
|
+
metadata?: Record<string, string | number | boolean | null> | undefined;
|
|
97
|
+
}[];
|
|
98
|
+
collection?: string | undefined;
|
|
99
|
+
}>;
|
|
100
|
+
declare const mastraVectorDeleteTool: ToolDefinition<{
|
|
101
|
+
collection?: string | undefined;
|
|
102
|
+
namespace?: string | undefined;
|
|
103
|
+
ids: string[];
|
|
104
|
+
}, {
|
|
105
|
+
deleted: number;
|
|
106
|
+
collection?: string | undefined;
|
|
107
|
+
}>;
|
|
108
|
+
declare const mastraVectorModule: ModuleDefinition<{
|
|
109
|
+
connection_string: string;
|
|
110
|
+
id: string;
|
|
111
|
+
schema_name?: string | undefined;
|
|
112
|
+
default_index?: string | undefined;
|
|
113
|
+
dimension?: number | undefined;
|
|
114
|
+
auto_create_index?: boolean | undefined;
|
|
115
|
+
disable_init?: boolean | undefined;
|
|
116
|
+
default_filter?: Record<string, unknown> | undefined;
|
|
117
|
+
}>;
|
|
118
|
+
//#endregion
|
|
119
|
+
export { type DeleteVectorsInput, type DeleteVectorsOutput, MAX_TOP_K, MAX_VECTOR_BATCH, MAX_VECTOR_DIMENSIONS, type MastraVectorAuth, MastraVectorClient, type MastraVectorClientOptions, type QueryVectorsInput, type QueryVectorsOutput, type UpsertVectorsInput, type UpsertVectorsOutput, type VectorMatch, type VectorMetadata, type VectorPoint, deleteVectorsInputSchema, deleteVectorsOutputSchema, mastraVectorAuthSchema, mastraVectorDeleteTool, mastraVectorModule, mastraVectorQueryTool, mastraVectorUpsertTool, queryVectorsInputSchema, queryVectorsOutputSchema, upsertVectorsInputSchema, upsertVectorsOutputSchema, vectorMatchSchema, vectorMetadataSchema, vectorPointSchema };
|
|
120
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/vendors/mastra-vector/contracts.ts","../../../src/vendors/mastra-vector/client.ts","../../../src/vendors/mastra-vector/module.ts"],"mappings":";;;;;;;;;cAkCa,wBAAsB,EAAA;;;;;;;;;GA4BjC,EAAA,KAAA;KAEU,mBAAmB,EAAE,aAAa;;;;KCrCzC;EACJ,SAAS;IACR;IACA;IACA;IACA,UAAU,MAAM;QACX;EACN,QAAQ;IACP;IACA;IACA;IACA;IACA,SAAS;QACJ,QAAQ;IAAQ;IAAa;IAAgB;IAAoB;;EACvE,gBAAgB;IAAS;IAAmB;QAAoB;EAChE,cAAc;IAAS;IAAmB;QAAwB;EAClE,mBAAmB;;KAeR;;;;;EAKX,QAAQ;;cAGI;;EAQZ,YAAY,MAAM,kBAAkB,UAAS;SA8DtC,YAAY,KAAK,cAAc;EAKhC,OAAO,OAAO,qBAAqB,QAAQ;EAa3C,MAAM,OAAO,oBAAoB,QAAQ;EAiCzC,OAAO,OAAO,qBAAqB,QAAQ;EAM3C,cAAc;;;;cCrLR,wBAAA;;;;;;eAAA;;;;;;cAWA;;;;;;;;;;;;;;;;;cAWA,wBAAA;;;;;;;;cAWA,oBAAA;;;;;;;;mBAAA"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { a as deleteVectorsOutputSchema, c as upsertVectorsInputSchema, d as vectorMatchSchema, f as vectorMetadataSchema, i as deleteVectorsInputSchema, l as upsertVectorsOutputSchema, n as MAX_VECTOR_BATCH, o as queryVectorsInputSchema, p as vectorPointSchema, r as MAX_VECTOR_DIMENSIONS, s as queryVectorsOutputSchema, t as MAX_TOP_K } from "../../schemas-ChOAhdo9.js";
|
|
2
|
+
import { a as MastraVectorClient, i as mastraVectorUpsertTool, n as mastraVectorModule, o as mastraVectorAuthSchema, r as mastraVectorQueryTool, t as mastraVectorDeleteTool } from "../../mastra-vector-Dhc6XZ8l.js";
|
|
3
|
+
export { MAX_TOP_K, MAX_VECTOR_BATCH, MAX_VECTOR_DIMENSIONS, MastraVectorClient, deleteVectorsInputSchema, deleteVectorsOutputSchema, mastraVectorAuthSchema, mastraVectorDeleteTool, mastraVectorModule, mastraVectorQueryTool, mastraVectorUpsertTool, queryVectorsInputSchema, queryVectorsOutputSchema, upsertVectorsInputSchema, upsertVectorsOutputSchema, vectorMatchSchema, vectorMetadataSchema, vectorPointSchema };
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { a as ModuleDefinition, o as ToolContext, s as ToolDefinition } from "../../types-Ccb0DXY9.js";
|
|
2
|
+
import "../../index-CZX5OeOF.js";
|
|
3
|
+
import { s as HttpServiceOptions } from "../../http-service-T7E5UjP8.js";
|
|
4
|
+
import { _ as upsertVectorsInputSchema, a as MAX_VECTOR_DIMENSIONS, b as vectorMetadataSchema, c as UpsertVectorsInput, d as VectorMetadata, f as VectorPoint, g as queryVectorsOutputSchema, h as queryVectorsInputSchema, i as MAX_VECTOR_BATCH, l as UpsertVectorsOutput, m as deleteVectorsOutputSchema, n as DeleteVectorsOutput, o as QueryVectorsInput, p as deleteVectorsInputSchema, r as MAX_TOP_K, s as QueryVectorsOutput, t as DeleteVectorsInput, u as VectorMatch, v as upsertVectorsOutputSchema, x as vectorPointSchema, y as vectorMatchSchema } from "../../index-ccZ1XOHw.js";
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
//#region src/vendors/pinecone/contracts.d.ts
|
|
7
|
+
declare const pineconeAuthSchema: z.ZodObject<{
|
|
8
|
+
api_key: z.ZodString;
|
|
9
|
+
base_url: z.ZodString;
|
|
10
|
+
default_namespace: z.ZodOptional<z.ZodString>;
|
|
11
|
+
default_filter: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
12
|
+
}, z.core.$strip>;
|
|
13
|
+
type PineconeAuth = z.infer<typeof pineconeAuthSchema>;
|
|
14
|
+
//#endregion
|
|
15
|
+
//#region src/vendors/pinecone/client.d.ts
|
|
16
|
+
type PineconeClientOptions = {
|
|
17
|
+
fetch?: HttpServiceOptions['fetch'] | undefined;
|
|
18
|
+
signal?: HttpServiceOptions['signal'] | undefined;
|
|
19
|
+
};
|
|
20
|
+
declare class PineconeClient {
|
|
21
|
+
#private;
|
|
22
|
+
constructor(auth: PineconeAuth, options?: PineconeClientOptions);
|
|
23
|
+
static fromContext(ctx: ToolContext): PineconeClient;
|
|
24
|
+
upsert(input: UpsertVectorsInput): Promise<UpsertVectorsOutput>;
|
|
25
|
+
query(input: QueryVectorsInput): Promise<QueryVectorsOutput>;
|
|
26
|
+
delete(input: DeleteVectorsInput): Promise<DeleteVectorsOutput>;
|
|
27
|
+
}
|
|
28
|
+
//#endregion
|
|
29
|
+
//#region src/vendors/pinecone/module.d.ts
|
|
30
|
+
declare const pineconeUpsertTool: ToolDefinition<{
|
|
31
|
+
collection?: string | undefined;
|
|
32
|
+
namespace?: string | undefined;
|
|
33
|
+
vectors: {
|
|
34
|
+
id: string;
|
|
35
|
+
values: number[];
|
|
36
|
+
metadata?: Record<string, string | number | boolean | null> | undefined;
|
|
37
|
+
}[];
|
|
38
|
+
}, {
|
|
39
|
+
upserted: number;
|
|
40
|
+
collection?: string | undefined;
|
|
41
|
+
}>;
|
|
42
|
+
declare const pineconeQueryTool: ToolDefinition<{
|
|
43
|
+
collection?: string | undefined;
|
|
44
|
+
namespace?: string | undefined;
|
|
45
|
+
vector: number[];
|
|
46
|
+
top_k?: number | undefined;
|
|
47
|
+
include_values?: boolean | undefined;
|
|
48
|
+
include_metadata?: boolean | undefined;
|
|
49
|
+
filter?: Record<string, unknown> | undefined;
|
|
50
|
+
}, {
|
|
51
|
+
matches: {
|
|
52
|
+
id: string;
|
|
53
|
+
score: number;
|
|
54
|
+
values?: number[] | undefined;
|
|
55
|
+
metadata?: Record<string, string | number | boolean | null> | undefined;
|
|
56
|
+
}[];
|
|
57
|
+
collection?: string | undefined;
|
|
58
|
+
}>;
|
|
59
|
+
declare const pineconeDeleteTool: ToolDefinition<{
|
|
60
|
+
collection?: string | undefined;
|
|
61
|
+
namespace?: string | undefined;
|
|
62
|
+
ids: string[];
|
|
63
|
+
}, {
|
|
64
|
+
deleted: number;
|
|
65
|
+
collection?: string | undefined;
|
|
66
|
+
}>;
|
|
67
|
+
declare const pineconeModule: ModuleDefinition<{
|
|
68
|
+
api_key: string;
|
|
69
|
+
base_url: string;
|
|
70
|
+
default_namespace?: string | undefined;
|
|
71
|
+
default_filter?: Record<string, unknown> | undefined;
|
|
72
|
+
}>;
|
|
73
|
+
//#endregion
|
|
74
|
+
export { type DeleteVectorsInput, type DeleteVectorsOutput, MAX_TOP_K, MAX_VECTOR_BATCH, MAX_VECTOR_DIMENSIONS, type PineconeAuth, PineconeClient, type PineconeClientOptions, type QueryVectorsInput, type QueryVectorsOutput, type UpsertVectorsInput, type UpsertVectorsOutput, type VectorMatch, type VectorMetadata, type VectorPoint, deleteVectorsInputSchema, deleteVectorsOutputSchema, pineconeAuthSchema, pineconeDeleteTool, pineconeModule, pineconeQueryTool, pineconeUpsertTool, queryVectorsInputSchema, queryVectorsOutputSchema, upsertVectorsInputSchema, upsertVectorsOutputSchema, vectorMatchSchema, vectorMetadataSchema, vectorPointSchema };
|
|
75
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/vendors/pinecone/contracts.ts","../../../src/vendors/pinecone/client.ts","../../../src/vendors/pinecone/module.ts"],"mappings":";;;;;;cA8Ba,oBAAkB,EAAA;;;;;GAW7B,EAAA,KAAA;KAEU,eAAe,EAAE,aAAa;;;KCP9B;EACX,QAAQ;EACR,SAAS;;cAGG;;EAKZ,YAAY,MAAM,cAAc,UAAS;SAuBlC,YAAY,KAAK,cAAc;EAYhC,OAAO,OAAO,qBAAqB,QAAQ;EA2B3C,MAAM,OAAO,oBAAoB,QAAQ;EA4CzC,OAAO,OAAO,qBAAqB,QAAQ;;;;cC5IrC,oBAAA;;;;;;eAAA;;;;;;cAYA;;;;;;;;;;;;;;;;;cAWA,oBAAA;;;;;;;;cAWA,gBAAA;;;;mBAAA"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { a as deleteVectorsOutputSchema, c as upsertVectorsInputSchema, d as vectorMatchSchema, f as vectorMetadataSchema, i as deleteVectorsInputSchema, l as upsertVectorsOutputSchema, n as MAX_VECTOR_BATCH, o as queryVectorsInputSchema, p as vectorPointSchema, r as MAX_VECTOR_DIMENSIONS, s as queryVectorsOutputSchema, t as MAX_TOP_K } from "../../schemas-ChOAhdo9.js";
|
|
2
|
+
import { a as PineconeClient, i as pineconeUpsertTool, n as pineconeModule, o as pineconeAuthSchema, r as pineconeQueryTool, t as pineconeDeleteTool } from "../../pinecone-umY4t6OF.js";
|
|
3
|
+
export { MAX_TOP_K, MAX_VECTOR_BATCH, MAX_VECTOR_DIMENSIONS, PineconeClient, deleteVectorsInputSchema, deleteVectorsOutputSchema, pineconeAuthSchema, pineconeDeleteTool, pineconeModule, pineconeQueryTool, pineconeUpsertTool, queryVectorsInputSchema, queryVectorsOutputSchema, upsertVectorsInputSchema, upsertVectorsOutputSchema, vectorMatchSchema, vectorMetadataSchema, vectorPointSchema };
|