@5ss/ai-tools 2.11.2 → 2.11.4
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 +4 -0
- package/README.md +3 -10
- package/dist/{bedrock-agentcore-browser-a_qOs-NR.js → bedrock-agentcore-browser-o_oqSPMK.js} +2 -2
- package/dist/{bedrock-agentcore-browser-a_qOs-NR.js.map → bedrock-agentcore-browser-o_oqSPMK.js.map} +1 -1
- package/dist/{bedrock-agentcore-code-interpreter-MWK-8RhA.js → bedrock-agentcore-code-interpreter-D4ERRFj1.js} +2 -2
- package/dist/{bedrock-agentcore-code-interpreter-MWK-8RhA.js.map → bedrock-agentcore-code-interpreter-D4ERRFj1.js.map} +1 -1
- package/dist/{cloudflare-browser-B6Yolpin.js → cloudflare-browser-nLJdH5nG.js} +3 -3
- package/dist/{cloudflare-browser-B6Yolpin.js.map → cloudflare-browser-nLJdH5nG.js.map} +1 -1
- package/dist/{cloudflare-email-Dy0KHeDf.js → cloudflare-email-CSRq8mRd.js} +2 -2
- package/dist/{cloudflare-email-Dy0KHeDf.js.map → cloudflare-email-CSRq8mRd.js.map} +1 -1
- package/dist/{cloudflare-sandbox-Dp_uNaqW.js → cloudflare-sandbox-Be7SeS4-.js} +3 -3
- package/dist/{cloudflare-sandbox-Dp_uNaqW.js.map → cloudflare-sandbox-Be7SeS4-.js.map} +1 -1
- package/dist/content-type-E4_Qdoa0.js +19 -0
- package/dist/{content-type-CORxaxcv.js.map → content-type-E4_Qdoa0.js.map} +1 -1
- package/dist/core/index.js +2 -6
- package/dist/core/index.js.map +1 -1
- package/dist/{define-CvpJ_pNP.js → define-ieoksEQ0.js} +1 -6
- package/dist/define-ieoksEQ0.js.map +1 -0
- package/dist/{eventbridge-scheduler-Bh6GqZY2.js → eventbridge-scheduler-BhQaReAz.js} +2 -2
- package/dist/{eventbridge-scheduler-Bh6GqZY2.js.map → eventbridge-scheduler-BhQaReAz.js.map} +1 -1
- package/dist/http/index.d.ts +1 -1
- package/dist/{http-service-T7E5UjP8.d.ts → http-service-CerzWwQO.d.ts} +3 -2
- package/dist/http-service-CerzWwQO.d.ts.map +1 -0
- package/dist/http-service-DDNCO1s4.js.map +1 -1
- package/dist/{client-CCKGsTeI.js → imessage-CofjmONG.js} +152 -2
- package/dist/imessage-CofjmONG.js.map +1 -0
- package/dist/{index-Cuh6eMWc.d.ts → index-9oSRRNdR.d.ts} +2 -2
- package/dist/{index-Cuh6eMWc.d.ts.map → index-9oSRRNdR.d.ts.map} +1 -1
- package/dist/{index-zK1ZwS4m.d.ts → index-ByHp3nZm.d.ts} +2 -2
- package/dist/{index-zK1ZwS4m.d.ts.map → index-ByHp3nZm.d.ts.map} +1 -1
- package/dist/{index-BU4gmYO8.d.ts → index-C-Cuh9it.d.ts} +2 -2
- package/dist/{index-BU4gmYO8.d.ts.map → index-C-Cuh9it.d.ts.map} +1 -1
- package/dist/index-CZX5OeOF.d.ts.map +1 -1
- package/dist/{index-CdFmEfZO.d.ts → index-CtfpOZWu.d.ts} +2 -2
- package/dist/{index-CdFmEfZO.d.ts.map → index-CtfpOZWu.d.ts.map} +1 -1
- package/dist/{index-n8JTpNf1.d.ts → index-DngnGGiS.d.ts} +2 -2
- package/dist/{index-n8JTpNf1.d.ts.map → index-DngnGGiS.d.ts.map} +1 -1
- package/dist/{index-DuOGj7vc.d.ts → index-DsTt2EbS.d.ts} +2 -2
- package/dist/{index-DuOGj7vc.d.ts.map → index-DsTt2EbS.d.ts.map} +1 -1
- package/dist/{index-pwW1OsOx.d.ts → index-Y8p8bsWU.d.ts} +2 -2
- package/dist/{index-pwW1OsOx.d.ts.map → index-Y8p8bsWU.d.ts.map} +1 -1
- package/dist/{mastra-vector-Dhc6XZ8l.js → mastra-vector-B8HjvdMT.js} +2 -2
- package/dist/{mastra-vector-Dhc6XZ8l.js.map → mastra-vector-B8HjvdMT.js.map} +1 -1
- package/dist/modules/artifacts/index.d.ts +1 -1
- package/dist/modules/artifacts/index.js +3 -3
- package/dist/modules/browser/index.d.ts +2 -2
- package/dist/modules/browser/index.js +3 -3
- package/dist/modules/calendar/index.js +1 -1
- package/dist/modules/code-sandbox/index.js +3 -3
- package/dist/modules/content-type/index.js +2 -2
- package/dist/modules/crypto/index.js +1 -1
- package/dist/modules/document-extract/index.d.ts +1 -1
- package/dist/modules/document-extract/index.js +2 -2
- package/dist/modules/document-render/index.d.ts +21 -30
- package/dist/modules/document-render/index.d.ts.map +1 -1
- package/dist/modules/document-render/index.js +11 -28
- package/dist/modules/document-render/index.js.map +1 -1
- package/dist/modules/email/index.d.ts +21 -3
- package/dist/modules/email/index.d.ts.map +1 -1
- package/dist/modules/email/index.js +3 -3
- package/dist/modules/email-message/index.js +1 -1
- package/dist/modules/files/index.js +2 -2
- package/dist/modules/image/index.d.ts +4 -1
- package/dist/modules/image/index.d.ts.map +1 -1
- package/dist/modules/image/index.js +25 -4
- package/dist/modules/image/index.js.map +1 -1
- package/dist/modules/messaging/index.d.ts +1 -1
- package/dist/modules/messaging/index.js +7 -7
- package/dist/modules/messaging/index.js.map +1 -1
- package/dist/modules/queue/index.d.ts +1 -1
- package/dist/modules/queue/index.js +2 -2
- package/dist/modules/rag/index.d.ts +1 -1
- package/dist/modules/rag/index.js +2 -2
- package/dist/modules/scheduler/index.d.ts +2 -2
- package/dist/modules/scheduler/index.js +2 -2
- package/dist/modules/skills/index.js +1 -1
- package/dist/modules/tasks/index.js +1 -1
- package/dist/modules/vector-store/index.js +1 -1
- package/dist/modules/web-fetch/index.js +1 -1
- package/dist/{pinecone-umY4t6OF.js → pinecone-CNnCFmix.js} +2 -2
- package/dist/{pinecone-umY4t6OF.js.map → pinecone-CNnCFmix.js.map} +1 -1
- package/dist/{qdrant-DMp4NhKR.js → qdrant-R_FIcG9d.js} +2 -2
- package/dist/{qdrant-DMp4NhKR.js.map → qdrant-R_FIcG9d.js.map} +1 -1
- package/dist/{resend-BAC38_dA.js → resend-Bu0NFO3h.js} +2 -2
- package/dist/{resend-BAC38_dA.js.map → resend-Bu0NFO3h.js.map} +1 -1
- package/dist/{s3-CsOaPWMP.js → s3-Dj7Teh-A.js} +2 -2
- package/dist/{s3-CsOaPWMP.js.map → s3-Dj7Teh-A.js.map} +1 -1
- package/dist/{slack-Di5BBNpt.js → slack-AjJDNnXJ.js} +2 -2
- package/dist/{slack-Di5BBNpt.js.map → slack-AjJDNnXJ.js.map} +1 -1
- package/dist/{sqs-DCwS1i2N.js → sqs-CjyXjasF.js} +2 -2
- package/dist/{sqs-DCwS1i2N.js.map → sqs-CjyXjasF.js.map} +1 -1
- package/dist/{supabase-vector-Dpp9mmJR.js → supabase-vector-BNoJZuft.js} +2 -2
- package/dist/{supabase-vector-Dpp9mmJR.js.map → supabase-vector-BNoJZuft.js.map} +1 -1
- package/dist/{teams-DYAHNb39.js → teams-CvxYLAi5.js} +2 -2
- package/dist/{teams-DYAHNb39.js.map → teams-CvxYLAi5.js.map} +1 -1
- package/dist/{telegram-DDXWzkfL.js → telegram-B_-Jljk3.js} +2 -2
- package/dist/{telegram-DDXWzkfL.js.map → telegram-B_-Jljk3.js.map} +1 -1
- package/dist/{textract-CPLiB22H.js → textract-CAfnGvua.js} +3 -3
- package/dist/{textract-CPLiB22H.js.map → textract-CAfnGvua.js.map} +1 -1
- package/dist/{vector-store-C3nEO80e.js → vector-store-DDiu3XPg.js} +6 -6
- package/dist/{vector-store-C3nEO80e.js.map → vector-store-DDiu3XPg.js.map} +1 -1
- package/dist/vendors/amazon-sp-api/index.d.ts +267 -18
- package/dist/vendors/amazon-sp-api/index.d.ts.map +1 -1
- package/dist/vendors/amazon-sp-api/index.js +821 -212
- package/dist/vendors/amazon-sp-api/index.js.map +1 -1
- package/dist/vendors/bedrock-agentcore-browser/index.d.ts +1 -1
- package/dist/vendors/bedrock-agentcore-browser/index.js +1 -1
- package/dist/vendors/bedrock-agentcore-code-interpreter/index.d.ts +1 -1
- package/dist/vendors/bedrock-agentcore-code-interpreter/index.js +1 -1
- package/dist/vendors/cloudflare-browser/index.d.ts +1 -1
- package/dist/vendors/cloudflare-browser/index.js +1 -1
- package/dist/vendors/cloudflare-email/index.d.ts +1 -1
- package/dist/vendors/cloudflare-email/index.js +1 -1
- package/dist/vendors/cloudflare-sandbox/index.d.ts +1 -1
- package/dist/vendors/cloudflare-sandbox/index.js +1 -1
- package/dist/vendors/eventbridge-scheduler/index.d.ts +1 -1
- package/dist/vendors/eventbridge-scheduler/index.js +1 -1
- package/dist/vendors/imessage/index.js +1 -2
- package/dist/vendors/katana/index.d.ts +371 -2
- package/dist/vendors/katana/index.d.ts.map +1 -1
- package/dist/vendors/katana/index.js +541 -199
- package/dist/vendors/katana/index.js.map +1 -1
- package/dist/vendors/mastra-vector/index.js +1 -1
- package/dist/vendors/pinecone/index.d.ts +1 -1
- package/dist/vendors/pinecone/index.js +1 -1
- package/dist/vendors/qdrant/index.d.ts +1 -1
- package/dist/vendors/qdrant/index.js +1 -1
- package/dist/vendors/resend/index.d.ts +1 -1
- package/dist/vendors/resend/index.js +1 -1
- package/dist/vendors/s3/index.d.ts +1 -1
- package/dist/vendors/s3/index.js +1 -1
- package/dist/vendors/slack/index.d.ts +1 -1
- package/dist/vendors/slack/index.js +1 -1
- package/dist/vendors/sqs/index.d.ts +1 -1
- package/dist/vendors/sqs/index.js +1 -1
- package/dist/vendors/supabase-vector/index.d.ts +1 -1
- package/dist/vendors/supabase-vector/index.js +1 -1
- package/dist/vendors/teams/index.d.ts +1 -1
- package/dist/vendors/teams/index.js +1 -1
- package/dist/vendors/telegram/index.d.ts +1 -1
- package/dist/vendors/telegram/index.js +1 -1
- package/dist/vendors/textract/index.d.ts +1 -1
- package/dist/vendors/textract/index.js +1 -1
- package/dist/vendors/woocommerce/index.d.ts +1 -1
- package/dist/vendors/woocommerce/index.js +1 -1
- package/logos/README.md +0 -4
- package/logos/pack-logos.json +0 -5
- package/package.json +4 -38
- package/dist/artifacts-O8g-40Pw.js +0 -404
- package/dist/artifacts-O8g-40Pw.js.map +0 -1
- package/dist/batch-BMM5dXqL.d.ts +0 -22
- package/dist/batch-BMM5dXqL.d.ts.map +0 -1
- package/dist/client-CCKGsTeI.js.map +0 -1
- package/dist/content-type-CORxaxcv.js +0 -49
- package/dist/define-CvpJ_pNP.js.map +0 -1
- package/dist/gotenberg-NuJjxyln.js +0 -291
- package/dist/gotenberg-NuJjxyln.js.map +0 -1
- package/dist/http-service-T7E5UjP8.d.ts.map +0 -1
- package/dist/imessage-BSAFOI8Z.js +0 -154
- package/dist/imessage-BSAFOI8Z.js.map +0 -1
- package/dist/modules/document/index.d.ts +0 -575
- package/dist/modules/document/index.d.ts.map +0 -1
- package/dist/modules/document/index.js +0 -444
- package/dist/modules/document/index.js.map +0 -1
- package/dist/modules/file-convert/index.d.ts +0 -273
- package/dist/modules/file-convert/index.d.ts.map +0 -1
- package/dist/modules/file-convert/index.js +0 -103
- package/dist/modules/file-convert/index.js.map +0 -1
- package/dist/modules/pdf/index.d.ts +0 -287
- package/dist/modules/pdf/index.d.ts.map +0 -1
- package/dist/modules/pdf/index.js +0 -259
- package/dist/modules/pdf/index.js.map +0 -1
- package/dist/modules/presentation/index.d.ts +0 -247
- package/dist/modules/presentation/index.d.ts.map +0 -1
- package/dist/modules/presentation/index.js +0 -12657
- package/dist/modules/presentation/index.js.map +0 -1
- package/dist/object-artifact-store-CMTzCm_G.d.ts +0 -7
- package/dist/object-artifact-store-CMTzCm_G.d.ts.map +0 -1
- package/dist/object-artifact-store-wZ2j9cto.js +0 -28
- package/dist/object-artifact-store-wZ2j9cto.js.map +0 -1
- package/dist/vendors/gotenberg/index.d.ts +0 -306
- package/dist/vendors/gotenberg/index.d.ts.map +0 -1
- package/dist/vendors/gotenberg/index.js +0 -2
- package/logos/document.svg +0 -10
- package/logos/file-convert.svg +0 -9
- package/logos/gotenberg.svg +0 -340
- package/logos/pdf.svg +0 -10
- package/logos/presentation.svg +0 -8
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as ToolError } from "../../errors-DoSpNHvs.js";
|
|
2
|
-
import { n as defineModule, r as defineTool } from "../../define-
|
|
2
|
+
import { n as defineModule, r as defineTool } from "../../define-ieoksEQ0.js";
|
|
3
3
|
import { n as requireAuth } from "../../provider-CgDAlg6K.js";
|
|
4
4
|
import { t as HttpService } from "../../http-service-DDNCO1s4.js";
|
|
5
|
-
import {
|
|
5
|
+
import { isString } from "es-toolkit";
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
//#region src/vendors/katana/contracts.ts
|
|
8
8
|
const katanaAuthSchema = z.object({ api_key: z.string().min(1).describe("Katana MRP Bearer access token") });
|
|
@@ -14,6 +14,171 @@ const listOutputMeta = {
|
|
|
14
14
|
next_cursor: z.string().optional(),
|
|
15
15
|
truncated: z.boolean()
|
|
16
16
|
};
|
|
17
|
+
const katanaPageSchema = z.int().min(1).optional();
|
|
18
|
+
const katanaPageLimitSchema = z.int().min(1).max(250).optional();
|
|
19
|
+
const katanaTimestampFilterSchema = z.iso.datetime({ offset: true }).optional();
|
|
20
|
+
const katanaRawRecordSchema = z.looseObject({
|
|
21
|
+
id: z.number().int(),
|
|
22
|
+
created_at: z.string().optional(),
|
|
23
|
+
updated_at: z.string().optional(),
|
|
24
|
+
deleted_at: z.string().nullable().optional()
|
|
25
|
+
});
|
|
26
|
+
const katanaSalesOrderRawSchema = katanaRawRecordSchema;
|
|
27
|
+
const katanaProductRawSchema = katanaRawRecordSchema;
|
|
28
|
+
const katanaMaterialRawSchema = katanaRawRecordSchema;
|
|
29
|
+
const katanaCustomerRawSchema = katanaRawRecordSchema;
|
|
30
|
+
const katanaSupplierRawSchema = katanaRawRecordSchema;
|
|
31
|
+
const katanaPurchaseOrderRawSchema = katanaRawRecordSchema;
|
|
32
|
+
const katanaManufacturingOrderRawSchema = katanaRawRecordSchema;
|
|
33
|
+
const katanaInventoryRawSchema = z.looseObject({
|
|
34
|
+
variant_id: z.number().int(),
|
|
35
|
+
location_id: z.number().int(),
|
|
36
|
+
created_at: z.string().optional(),
|
|
37
|
+
updated_at: z.string().optional(),
|
|
38
|
+
deleted_at: z.string().nullable().optional()
|
|
39
|
+
});
|
|
40
|
+
const katanaPaginationSchema = z.object({
|
|
41
|
+
total_records: z.number().int().nonnegative(),
|
|
42
|
+
total_pages: z.number().int().nonnegative(),
|
|
43
|
+
offset: z.number().int().nonnegative(),
|
|
44
|
+
page: z.number().int().min(1),
|
|
45
|
+
first_page: z.boolean(),
|
|
46
|
+
last_page: z.boolean()
|
|
47
|
+
});
|
|
48
|
+
const katanaRateLimitSchema = z.object({
|
|
49
|
+
limit: z.number().int().nonnegative(),
|
|
50
|
+
remaining: z.number().int().nonnegative(),
|
|
51
|
+
reset_at_ms: z.number().int().nonnegative()
|
|
52
|
+
});
|
|
53
|
+
const katanaListSalesOrdersPageInputSchema = z.strictObject({
|
|
54
|
+
page: katanaPageSchema,
|
|
55
|
+
limit: katanaPageLimitSchema,
|
|
56
|
+
status: z.string().min(1).optional(),
|
|
57
|
+
customer_id: z.int().positive().optional(),
|
|
58
|
+
order_no: z.string().min(1).optional(),
|
|
59
|
+
location_id: z.int().positive().optional(),
|
|
60
|
+
created_at_min: katanaTimestampFilterSchema,
|
|
61
|
+
created_at_max: katanaTimestampFilterSchema,
|
|
62
|
+
updated_at_min: katanaTimestampFilterSchema,
|
|
63
|
+
updated_at_max: katanaTimestampFilterSchema,
|
|
64
|
+
include_deleted: z.boolean().optional()
|
|
65
|
+
});
|
|
66
|
+
const katanaListProductsPageInputSchema = z.strictObject({
|
|
67
|
+
page: katanaPageSchema,
|
|
68
|
+
limit: katanaPageLimitSchema,
|
|
69
|
+
name: z.string().min(1).optional(),
|
|
70
|
+
is_sellable: z.boolean().optional(),
|
|
71
|
+
is_producible: z.boolean().optional(),
|
|
72
|
+
is_purchasable: z.boolean().optional(),
|
|
73
|
+
created_at_min: katanaTimestampFilterSchema,
|
|
74
|
+
created_at_max: katanaTimestampFilterSchema,
|
|
75
|
+
updated_at_min: katanaTimestampFilterSchema,
|
|
76
|
+
updated_at_max: katanaTimestampFilterSchema,
|
|
77
|
+
include_deleted: z.boolean().optional(),
|
|
78
|
+
include_archived: z.boolean().optional()
|
|
79
|
+
});
|
|
80
|
+
const katanaListMaterialsPageInputSchema = z.strictObject({
|
|
81
|
+
page: katanaPageSchema,
|
|
82
|
+
limit: katanaPageLimitSchema,
|
|
83
|
+
name: z.string().min(1).optional(),
|
|
84
|
+
created_at_min: katanaTimestampFilterSchema,
|
|
85
|
+
created_at_max: katanaTimestampFilterSchema,
|
|
86
|
+
updated_at_min: katanaTimestampFilterSchema,
|
|
87
|
+
updated_at_max: katanaTimestampFilterSchema,
|
|
88
|
+
include_deleted: z.boolean().optional(),
|
|
89
|
+
include_archived: z.boolean().optional()
|
|
90
|
+
});
|
|
91
|
+
const katanaListCustomersPageInputSchema = z.strictObject({
|
|
92
|
+
page: katanaPageSchema,
|
|
93
|
+
limit: katanaPageLimitSchema,
|
|
94
|
+
name: z.string().min(1).optional(),
|
|
95
|
+
email: z.string().min(1).optional(),
|
|
96
|
+
created_at_min: katanaTimestampFilterSchema,
|
|
97
|
+
created_at_max: katanaTimestampFilterSchema,
|
|
98
|
+
updated_at_min: katanaTimestampFilterSchema,
|
|
99
|
+
updated_at_max: katanaTimestampFilterSchema,
|
|
100
|
+
include_deleted: z.boolean().optional()
|
|
101
|
+
});
|
|
102
|
+
const katanaListSuppliersPageInputSchema = z.strictObject({
|
|
103
|
+
page: katanaPageSchema,
|
|
104
|
+
limit: katanaPageLimitSchema,
|
|
105
|
+
name: z.string().min(1).optional(),
|
|
106
|
+
created_at_min: katanaTimestampFilterSchema,
|
|
107
|
+
created_at_max: katanaTimestampFilterSchema,
|
|
108
|
+
updated_at_min: katanaTimestampFilterSchema,
|
|
109
|
+
updated_at_max: katanaTimestampFilterSchema,
|
|
110
|
+
include_deleted: z.boolean().optional()
|
|
111
|
+
});
|
|
112
|
+
const katanaListPurchaseOrdersPageInputSchema = z.strictObject({
|
|
113
|
+
page: katanaPageSchema,
|
|
114
|
+
limit: katanaPageLimitSchema,
|
|
115
|
+
status: z.string().min(1).optional(),
|
|
116
|
+
supplier_id: z.int().positive().optional(),
|
|
117
|
+
order_no: z.string().min(1).optional(),
|
|
118
|
+
location_id: z.int().positive().optional(),
|
|
119
|
+
created_at_min: katanaTimestampFilterSchema,
|
|
120
|
+
created_at_max: katanaTimestampFilterSchema,
|
|
121
|
+
updated_at_min: katanaTimestampFilterSchema,
|
|
122
|
+
updated_at_max: katanaTimestampFilterSchema,
|
|
123
|
+
include_deleted: z.boolean().optional()
|
|
124
|
+
});
|
|
125
|
+
const katanaListManufacturingOrdersPageInputSchema = z.strictObject({
|
|
126
|
+
page: katanaPageSchema,
|
|
127
|
+
limit: katanaPageLimitSchema,
|
|
128
|
+
status: z.string().min(1).optional(),
|
|
129
|
+
variant_id: z.int().positive().optional(),
|
|
130
|
+
location_id: z.int().positive().optional(),
|
|
131
|
+
order_no: z.string().min(1).optional(),
|
|
132
|
+
created_at_min: katanaTimestampFilterSchema,
|
|
133
|
+
created_at_max: katanaTimestampFilterSchema,
|
|
134
|
+
updated_at_min: katanaTimestampFilterSchema,
|
|
135
|
+
updated_at_max: katanaTimestampFilterSchema,
|
|
136
|
+
include_deleted: z.boolean().optional()
|
|
137
|
+
});
|
|
138
|
+
const katanaListInventoryPageInputSchema = z.strictObject({
|
|
139
|
+
page: katanaPageSchema,
|
|
140
|
+
limit: katanaPageLimitSchema,
|
|
141
|
+
location_id: z.int().positive().optional(),
|
|
142
|
+
variant_id: z.array(z.int().positive()).min(1).optional(),
|
|
143
|
+
include_archived: z.boolean().optional(),
|
|
144
|
+
extend: z.array(z.enum(["variant", "location"])).min(1).optional()
|
|
145
|
+
});
|
|
146
|
+
const katanaPageOutputMeta = {
|
|
147
|
+
pagination: katanaPaginationSchema,
|
|
148
|
+
rate_limit: katanaRateLimitSchema.optional()
|
|
149
|
+
};
|
|
150
|
+
const katanaListSalesOrdersPageOutputSchema = z.object({
|
|
151
|
+
items: z.array(katanaSalesOrderRawSchema),
|
|
152
|
+
...katanaPageOutputMeta
|
|
153
|
+
});
|
|
154
|
+
const katanaListProductsPageOutputSchema = z.object({
|
|
155
|
+
items: z.array(katanaProductRawSchema),
|
|
156
|
+
...katanaPageOutputMeta
|
|
157
|
+
});
|
|
158
|
+
const katanaListMaterialsPageOutputSchema = z.object({
|
|
159
|
+
items: z.array(katanaMaterialRawSchema),
|
|
160
|
+
...katanaPageOutputMeta
|
|
161
|
+
});
|
|
162
|
+
const katanaListCustomersPageOutputSchema = z.object({
|
|
163
|
+
items: z.array(katanaCustomerRawSchema),
|
|
164
|
+
...katanaPageOutputMeta
|
|
165
|
+
});
|
|
166
|
+
const katanaListSuppliersPageOutputSchema = z.object({
|
|
167
|
+
items: z.array(katanaSupplierRawSchema),
|
|
168
|
+
...katanaPageOutputMeta
|
|
169
|
+
});
|
|
170
|
+
const katanaListPurchaseOrdersPageOutputSchema = z.object({
|
|
171
|
+
items: z.array(katanaPurchaseOrderRawSchema),
|
|
172
|
+
...katanaPageOutputMeta
|
|
173
|
+
});
|
|
174
|
+
const katanaListManufacturingOrdersPageOutputSchema = z.object({
|
|
175
|
+
items: z.array(katanaManufacturingOrderRawSchema),
|
|
176
|
+
...katanaPageOutputMeta
|
|
177
|
+
});
|
|
178
|
+
const katanaListInventoryPageOutputSchema = z.object({
|
|
179
|
+
items: z.array(katanaInventoryRawSchema),
|
|
180
|
+
...katanaPageOutputMeta
|
|
181
|
+
});
|
|
17
182
|
const katanaSalesOrderRowInputSchema = z.object({
|
|
18
183
|
quantity: z.number().positive().describe("Line quantity"),
|
|
19
184
|
variant_id: z.int().positive().describe("Product variant id"),
|
|
@@ -407,6 +572,57 @@ const katanaListInventoryOutputSchema = z.object({
|
|
|
407
572
|
* Katana MRP payload helpers (no HTTP).
|
|
408
573
|
*/
|
|
409
574
|
const KATANA_API_BASE = "https://api.katanamrp.com/v1";
|
|
575
|
+
const katanaRateLimitHeadersSchema = z.object({
|
|
576
|
+
limit: z.coerce.number().int().nonnegative(),
|
|
577
|
+
remaining: z.coerce.number().int().nonnegative(),
|
|
578
|
+
reset_at_ms: z.coerce.number().int().nonnegative()
|
|
579
|
+
});
|
|
580
|
+
function parseKatanaPaginationHeader(headers) {
|
|
581
|
+
const raw = headers.get("x-pagination");
|
|
582
|
+
if (raw === null) throw new ToolError("Katana response is missing X-Pagination", { code: "upstream" });
|
|
583
|
+
let value;
|
|
584
|
+
try {
|
|
585
|
+
value = JSON.parse(raw);
|
|
586
|
+
} catch (error) {
|
|
587
|
+
throw new ToolError("Katana returned malformed X-Pagination JSON", {
|
|
588
|
+
code: "upstream",
|
|
589
|
+
cause: error
|
|
590
|
+
});
|
|
591
|
+
}
|
|
592
|
+
const parsed = katanaPaginationSchema.safeParse(value);
|
|
593
|
+
if (!parsed.success) throw new ToolError("Katana returned invalid X-Pagination metadata", {
|
|
594
|
+
code: "upstream",
|
|
595
|
+
details: { issues: parsed.error.issues.map((issue) => issue.message) }
|
|
596
|
+
});
|
|
597
|
+
return parsed.data;
|
|
598
|
+
}
|
|
599
|
+
function parseKatanaRateLimitHeaders(headers) {
|
|
600
|
+
const limit = headers.get("x-ratelimit-limit");
|
|
601
|
+
const remaining = headers.get("x-ratelimit-remaining");
|
|
602
|
+
const resetAtMs = headers.get("x-ratelimit-reset");
|
|
603
|
+
if (limit === null && remaining === null && resetAtMs === null) return void 0;
|
|
604
|
+
if (limit === null || remaining === null || resetAtMs === null) throw new ToolError("Katana returned incomplete rate-limit metadata", { code: "upstream" });
|
|
605
|
+
const parsed = katanaRateLimitHeadersSchema.safeParse({
|
|
606
|
+
limit,
|
|
607
|
+
remaining,
|
|
608
|
+
reset_at_ms: resetAtMs
|
|
609
|
+
});
|
|
610
|
+
if (!parsed.success) throw new ToolError("Katana returned invalid rate-limit metadata", { code: "upstream" });
|
|
611
|
+
return katanaRateLimitSchema.parse(parsed.data);
|
|
612
|
+
}
|
|
613
|
+
function parseKatanaPage(data, headers, itemSchema, label) {
|
|
614
|
+
const parsedItems = z.array(itemSchema).safeParse(data);
|
|
615
|
+
if (!parsedItems.success) throw new ToolError(`Katana returned an invalid ${label} array`, {
|
|
616
|
+
code: "upstream",
|
|
617
|
+
details: { issues: parsedItems.error.issues.map((issue) => issue.message) }
|
|
618
|
+
});
|
|
619
|
+
const rateLimit = parseKatanaRateLimitHeaders(headers);
|
|
620
|
+
return {
|
|
621
|
+
items: parsedItems.data,
|
|
622
|
+
pagination: parseKatanaPaginationHeader(headers),
|
|
623
|
+
...rateLimit && { rate_limit: rateLimit }
|
|
624
|
+
};
|
|
625
|
+
}
|
|
410
626
|
function pageFromCursor(cursor) {
|
|
411
627
|
if (!cursor) return 1;
|
|
412
628
|
const n = Number.parseInt(cursor, 10);
|
|
@@ -416,17 +632,6 @@ function pageFromCursor(cursor) {
|
|
|
416
632
|
});
|
|
417
633
|
return n;
|
|
418
634
|
}
|
|
419
|
-
function listPageMeta(page, limit, itemCount, totalPages) {
|
|
420
|
-
if (typeof totalPages === "number" && totalPages > page) return {
|
|
421
|
-
next_cursor: String(page + 1),
|
|
422
|
-
truncated: true
|
|
423
|
-
};
|
|
424
|
-
if (itemCount >= limit && totalPages === void 0) return {
|
|
425
|
-
next_cursor: String(page + 1),
|
|
426
|
-
truncated: true
|
|
427
|
-
};
|
|
428
|
-
return { truncated: false };
|
|
429
|
-
}
|
|
430
635
|
function optionalString(value) {
|
|
431
636
|
return isString(value) ? value : void 0;
|
|
432
637
|
}
|
|
@@ -441,24 +646,14 @@ function optionalBoolean(value) {
|
|
|
441
646
|
return typeof value === "boolean" ? value : void 0;
|
|
442
647
|
}
|
|
443
648
|
function unwrapResource(data) {
|
|
444
|
-
|
|
649
|
+
const parsed = z.looseObject({ data: z.unknown().optional() }).safeParse(data);
|
|
650
|
+
if (parsed.success && "data" in parsed.data) return parsed.data.data;
|
|
445
651
|
return data;
|
|
446
652
|
}
|
|
447
|
-
function
|
|
448
|
-
|
|
449
|
-
if (!
|
|
450
|
-
const
|
|
451
|
-
if (!Array.isArray(rows)) throw new ToolError(`Katana ${label} missing data array`, { code: "upstream" });
|
|
452
|
-
const pagination = data["pagination"];
|
|
453
|
-
let totalPages;
|
|
454
|
-
if (isPlainObject(pagination) && typeof pagination["total_pages"] === "number") totalPages = pagination["total_pages"];
|
|
455
|
-
return {
|
|
456
|
-
items: rows.map(parseItem),
|
|
457
|
-
...totalPages !== void 0 && { totalPages }
|
|
458
|
-
};
|
|
459
|
-
}
|
|
460
|
-
function parseSalesOrder(value) {
|
|
461
|
-
if (!isPlainObject(value) || typeof value["id"] !== "number") throw new ToolError("Katana returned an invalid sales order", { code: "upstream" });
|
|
653
|
+
function parseSalesOrder(input) {
|
|
654
|
+
const parsed = katanaRawRecordSchema.safeParse(input);
|
|
655
|
+
if (!parsed.success) throw new ToolError("Katana returned an invalid sales order", { code: "upstream" });
|
|
656
|
+
const value = parsed.data;
|
|
462
657
|
const total = optionalNumber(value["total"] ?? value["total_price"]);
|
|
463
658
|
const orderNo = optionalString(value["order_no"]);
|
|
464
659
|
const status = optionalString(value["status"]);
|
|
@@ -490,11 +685,6 @@ function parseSalesOrder(value) {
|
|
|
490
685
|
* Spike (Katana docs): `created_at_min` / `created_at_max` only — no `order_created_date` list filter.
|
|
491
686
|
* `order_created_*` scopes are applied client-side after list (see matchOrderCreatedDateScope).
|
|
492
687
|
*/
|
|
493
|
-
function salesOrderListDateQuery(scope) {
|
|
494
|
-
const out = {};
|
|
495
|
-
if (scope.created_from) out["created_at_min"] = scope.created_from;
|
|
496
|
-
return out;
|
|
497
|
-
}
|
|
498
688
|
/** Client-side filter for order_created_date when the list endpoint cannot express it. */
|
|
499
689
|
function matchOrderCreatedDateScope(orderCreatedDate, scope) {
|
|
500
690
|
if (!scope.order_created_from && !scope.order_created_to) return true;
|
|
@@ -523,8 +713,10 @@ function moneyToSafeCents(amount) {
|
|
|
523
713
|
function lineTaxExclusiveTotalCents(quantity, pricePerUnit, totalDiscount) {
|
|
524
714
|
return moneyToSafeCents(quantity * pricePerUnit - totalDiscount);
|
|
525
715
|
}
|
|
526
|
-
function parseSalesOrderRow(
|
|
527
|
-
|
|
716
|
+
function parseSalesOrderRow(input) {
|
|
717
|
+
const parsed = z.looseObject({}).safeParse(input);
|
|
718
|
+
if (!parsed.success) throw new ToolError("Katana returned an invalid sales order row", { code: "upstream" });
|
|
719
|
+
const value = parsed.data;
|
|
528
720
|
const salesOrderId = optionalNumber(value["sales_order_id"]);
|
|
529
721
|
const quantity = optionalNumber(value["quantity"]);
|
|
530
722
|
if (salesOrderId === void 0 || quantity === void 0) throw new ToolError("Katana sales order row missing sales_order_id or quantity", { code: "upstream" });
|
|
@@ -534,9 +726,10 @@ function parseSalesOrderRow(value) {
|
|
|
534
726
|
const variant = value["variant"];
|
|
535
727
|
let sku = optionalString(value["sku"]);
|
|
536
728
|
let unitCost;
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
729
|
+
const parsedVariant = z.looseObject({}).safeParse(variant);
|
|
730
|
+
if (parsedVariant.success) {
|
|
731
|
+
sku = sku ?? optionalString(parsedVariant.data["sku"]);
|
|
732
|
+
unitCost = optionalNumber(parsedVariant.data["purchase_price"]) ?? optionalNumber(parsedVariant.data["average_cost"]) ?? optionalNumber(parsedVariant.data["cost_per_unit"]);
|
|
540
733
|
}
|
|
541
734
|
return {
|
|
542
735
|
sales_order_id: salesOrderId,
|
|
@@ -570,11 +763,13 @@ function normalizeSalesOrderHeader(order, customerName, rows) {
|
|
|
570
763
|
}
|
|
571
764
|
/** Parse optional created_at onto a sales order (used by composite enrichment). */
|
|
572
765
|
function parseSalesOrderCreatedAt(value) {
|
|
573
|
-
|
|
574
|
-
return
|
|
766
|
+
const parsed = z.looseObject({ created_at: z.string().optional() }).safeParse(value);
|
|
767
|
+
return parsed.success ? parsed.data.created_at : void 0;
|
|
575
768
|
}
|
|
576
|
-
function parseProduct(
|
|
577
|
-
|
|
769
|
+
function parseProduct(input) {
|
|
770
|
+
const parsed = katanaRawRecordSchema.safeParse(input);
|
|
771
|
+
if (!parsed.success) throw new ToolError("Katana returned an invalid product", { code: "upstream" });
|
|
772
|
+
const value = parsed.data;
|
|
578
773
|
const name = optionalString(value["name"]);
|
|
579
774
|
const uom = optionalString(value["uom"]);
|
|
580
775
|
const categoryName = optionalString(value["category_name"]);
|
|
@@ -597,8 +792,10 @@ function parseProduct(value) {
|
|
|
597
792
|
...additionalInfo !== void 0 && { additional_info: additionalInfo }
|
|
598
793
|
};
|
|
599
794
|
}
|
|
600
|
-
function parseMaterial(
|
|
601
|
-
|
|
795
|
+
function parseMaterial(input) {
|
|
796
|
+
const parsed = katanaRawRecordSchema.safeParse(input);
|
|
797
|
+
if (!parsed.success) throw new ToolError("Katana returned an invalid material", { code: "upstream" });
|
|
798
|
+
const value = parsed.data;
|
|
602
799
|
const name = optionalString(value["name"]);
|
|
603
800
|
const uom = optionalString(value["uom"]);
|
|
604
801
|
const categoryName = optionalString(value["category_name"]);
|
|
@@ -617,8 +814,10 @@ function parseMaterial(value) {
|
|
|
617
814
|
...additionalInfo !== void 0 && { additional_info: additionalInfo }
|
|
618
815
|
};
|
|
619
816
|
}
|
|
620
|
-
function parseCustomer(
|
|
621
|
-
|
|
817
|
+
function parseCustomer(input) {
|
|
818
|
+
const parsed = katanaRawRecordSchema.safeParse(input);
|
|
819
|
+
if (!parsed.success) throw new ToolError("Katana returned an invalid customer", { code: "upstream" });
|
|
820
|
+
const value = parsed.data;
|
|
622
821
|
const name = optionalString(value["name"]);
|
|
623
822
|
const firstName = optionalString(value["first_name"]);
|
|
624
823
|
const lastName = optionalString(value["last_name"]);
|
|
@@ -643,8 +842,10 @@ function parseCustomer(value) {
|
|
|
643
842
|
...category !== void 0 && { category }
|
|
644
843
|
};
|
|
645
844
|
}
|
|
646
|
-
function parseSupplier(
|
|
647
|
-
|
|
845
|
+
function parseSupplier(input) {
|
|
846
|
+
const parsed = katanaRawRecordSchema.safeParse(input);
|
|
847
|
+
if (!parsed.success) throw new ToolError("Katana returned an invalid supplier", { code: "upstream" });
|
|
848
|
+
const value = parsed.data;
|
|
648
849
|
const name = optionalString(value["name"]);
|
|
649
850
|
const email = optionalString(value["email"]);
|
|
650
851
|
const phone = optionalString(value["phone"]);
|
|
@@ -659,8 +860,10 @@ function parseSupplier(value) {
|
|
|
659
860
|
...comment !== void 0 && { comment }
|
|
660
861
|
};
|
|
661
862
|
}
|
|
662
|
-
function parsePurchaseOrder(
|
|
663
|
-
|
|
863
|
+
function parsePurchaseOrder(input) {
|
|
864
|
+
const parsed = katanaRawRecordSchema.safeParse(input);
|
|
865
|
+
if (!parsed.success) throw new ToolError("Katana returned an invalid purchase order", { code: "upstream" });
|
|
866
|
+
const value = parsed.data;
|
|
664
867
|
const orderNo = optionalString(value["order_no"]);
|
|
665
868
|
const status = optionalString(value["status"]);
|
|
666
869
|
const supplierId = optionalNumber(value["supplier_id"]);
|
|
@@ -685,8 +888,10 @@ function parsePurchaseOrder(value) {
|
|
|
685
888
|
...additionalInfo !== void 0 && { additional_info: additionalInfo }
|
|
686
889
|
};
|
|
687
890
|
}
|
|
688
|
-
function parseManufacturingOrder(
|
|
689
|
-
|
|
891
|
+
function parseManufacturingOrder(input) {
|
|
892
|
+
const parsed = katanaRawRecordSchema.safeParse(input);
|
|
893
|
+
if (!parsed.success) throw new ToolError("Katana returned an invalid manufacturing order", { code: "upstream" });
|
|
894
|
+
const value = parsed.data;
|
|
690
895
|
const orderNo = optionalString(value["order_no"]);
|
|
691
896
|
const status = optionalString(value["status"]);
|
|
692
897
|
const variantId = optionalNumber(value["variant_id"]);
|
|
@@ -713,8 +918,10 @@ function parseManufacturingOrder(value) {
|
|
|
713
918
|
...salesOrderId !== void 0 && { sales_order_id: salesOrderId }
|
|
714
919
|
};
|
|
715
920
|
}
|
|
716
|
-
function parseInventory(
|
|
717
|
-
|
|
921
|
+
function parseInventory(input) {
|
|
922
|
+
const parsed = katanaInventoryRawSchema.safeParse(input);
|
|
923
|
+
if (!parsed.success) throw new ToolError("Katana returned an invalid inventory row", { code: "upstream" });
|
|
924
|
+
const value = parsed.data;
|
|
718
925
|
const quantityInStock = optionalNumber(value["quantity_in_stock"]);
|
|
719
926
|
const quantityCommitted = optionalNumber(value["quantity_committed"]);
|
|
720
927
|
const quantityExpected = optionalNumber(value["quantity_expected"]);
|
|
@@ -928,26 +1135,45 @@ var KatanaClient = class KatanaClient {
|
|
|
928
1135
|
/** GET /sales_orders */
|
|
929
1136
|
async listSalesOrders(input = {}) {
|
|
930
1137
|
const page = pageFromCursor(input.cursor);
|
|
931
|
-
const
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
...input.customer_id !== void 0 && { customer_id: input.customer_id },
|
|
939
|
-
...input.order_no && { order_no: input.order_no },
|
|
940
|
-
...input.location_id !== void 0 && { location_id: input.location_id }
|
|
941
|
-
}
|
|
1138
|
+
const result = await this.listSalesOrdersPage({
|
|
1139
|
+
page,
|
|
1140
|
+
...input.limit !== void 0 && { limit: input.limit },
|
|
1141
|
+
...input.status && { status: input.status },
|
|
1142
|
+
...input.customer_id !== void 0 && { customer_id: input.customer_id },
|
|
1143
|
+
...input.order_no && { order_no: input.order_no },
|
|
1144
|
+
...input.location_id !== void 0 && { location_id: input.location_id }
|
|
942
1145
|
});
|
|
943
|
-
const parsed = parseListEnvelope(data, parseSalesOrder, "sales orders");
|
|
944
|
-
const pageMeta = listPageMeta(page, limit, parsed.items.length, parsed.totalPages);
|
|
945
1146
|
return {
|
|
946
|
-
items:
|
|
947
|
-
truncated:
|
|
948
|
-
|
|
1147
|
+
items: result.items.map(parseSalesOrder),
|
|
1148
|
+
truncated: !result.pagination.last_page,
|
|
1149
|
+
...!result.pagination.last_page && { next_cursor: String(result.pagination.page + 1) }
|
|
949
1150
|
};
|
|
950
1151
|
}
|
|
1152
|
+
/** One GET /sales_orders request with raw records and response metadata. */
|
|
1153
|
+
async listSalesOrdersPage(input = {}) {
|
|
1154
|
+
const parsedInput = katanaListSalesOrdersPageInputSchema.safeParse(input);
|
|
1155
|
+
if (!parsedInput.success) throw new ToolError("Invalid Katana sales orders page input", {
|
|
1156
|
+
code: "bad_input",
|
|
1157
|
+
details: { issues: parsedInput.error.issues.map((issue) => issue.message) }
|
|
1158
|
+
});
|
|
1159
|
+
const result = await this.#http.get("/sales_orders", {
|
|
1160
|
+
label: "Katana listSalesOrdersPage",
|
|
1161
|
+
query: {
|
|
1162
|
+
page: parsedInput.data.page ?? 1,
|
|
1163
|
+
limit: parsedInput.data.limit ?? 50,
|
|
1164
|
+
...parsedInput.data.status && { status: parsedInput.data.status },
|
|
1165
|
+
...parsedInput.data.customer_id !== void 0 && { customer_id: parsedInput.data.customer_id },
|
|
1166
|
+
...parsedInput.data.order_no && { order_no: parsedInput.data.order_no },
|
|
1167
|
+
...parsedInput.data.location_id !== void 0 && { location_id: parsedInput.data.location_id },
|
|
1168
|
+
...parsedInput.data.created_at_min && { created_at_min: parsedInput.data.created_at_min },
|
|
1169
|
+
...parsedInput.data.created_at_max && { created_at_max: parsedInput.data.created_at_max },
|
|
1170
|
+
...parsedInput.data.updated_at_min && { updated_at_min: parsedInput.data.updated_at_min },
|
|
1171
|
+
...parsedInput.data.updated_at_max && { updated_at_max: parsedInput.data.updated_at_max },
|
|
1172
|
+
...parsedInput.data.include_deleted !== void 0 && { include_deleted: parsedInput.data.include_deleted }
|
|
1173
|
+
}
|
|
1174
|
+
});
|
|
1175
|
+
return parseKatanaPage(result.data, result.headers, katanaSalesOrderRawSchema, "sales orders");
|
|
1176
|
+
}
|
|
951
1177
|
/** GET /sales_orders/{id} */
|
|
952
1178
|
async getSalesOrder(input) {
|
|
953
1179
|
const { data } = await this.#http.get(`/sales_orders/${input.sales_order_id}`, { label: "Katana getSalesOrder" });
|
|
@@ -986,35 +1212,30 @@ var KatanaClient = class KatanaClient {
|
|
|
986
1212
|
const byId = /* @__PURE__ */ new Map();
|
|
987
1213
|
for (const scope of input.scopes) {
|
|
988
1214
|
const statuses = scope.statuses && scope.statuses.length > 0 ? scope.statuses : [void 0];
|
|
989
|
-
const dateQuery = salesOrderListDateQuery(scope);
|
|
990
1215
|
for (const status of statuses) {
|
|
991
1216
|
let cursor;
|
|
992
1217
|
for (let page = 0; page < maxPages; page += 1) {
|
|
993
1218
|
const pageNum = pageFromCursor(cursor);
|
|
994
|
-
const
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
...scope.location_id !== void 0 && { location_id: scope.location_id },
|
|
1002
|
-
...dateQuery
|
|
1003
|
-
}
|
|
1219
|
+
const result = await this.listSalesOrdersPage({
|
|
1220
|
+
page: pageNum,
|
|
1221
|
+
limit: pageSize,
|
|
1222
|
+
...status && { status },
|
|
1223
|
+
...scope.customer_id !== void 0 && { customer_id: scope.customer_id },
|
|
1224
|
+
...scope.location_id !== void 0 && { location_id: scope.location_id },
|
|
1225
|
+
...scope.created_from && { created_at_min: scope.created_from }
|
|
1004
1226
|
});
|
|
1005
|
-
|
|
1006
|
-
|
|
1227
|
+
for (const raw of result.items) {
|
|
1228
|
+
const order = parseSalesOrder(raw);
|
|
1007
1229
|
if (byId.has(order.id)) continue;
|
|
1008
1230
|
if (!matchOrderCreatedDateScope(order.order_created_date, scope)) continue;
|
|
1009
|
-
const rawCreated = parseSalesOrderCreatedAt(
|
|
1231
|
+
const rawCreated = parseSalesOrderCreatedAt(raw) ?? order.created_at;
|
|
1010
1232
|
byId.set(order.id, {
|
|
1011
1233
|
...order,
|
|
1012
1234
|
...rawCreated && { created_at: rawCreated }
|
|
1013
1235
|
});
|
|
1014
1236
|
}
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
cursor = pageMeta.next_cursor;
|
|
1237
|
+
if (result.pagination.last_page) break;
|
|
1238
|
+
cursor = String(result.pagination.page + 1);
|
|
1018
1239
|
}
|
|
1019
1240
|
}
|
|
1020
1241
|
}
|
|
@@ -1060,46 +1281,65 @@ var KatanaClient = class KatanaClient {
|
|
|
1060
1281
|
let cursor;
|
|
1061
1282
|
for (let page = 0; page < 100; page += 1) {
|
|
1062
1283
|
const pageNum = pageFromCursor(cursor);
|
|
1063
|
-
const
|
|
1284
|
+
const result = await this.#http.get("/sales_order_rows", {
|
|
1064
1285
|
label: "Katana listSalesOrderRows",
|
|
1065
1286
|
query: {
|
|
1066
1287
|
page: pageNum,
|
|
1067
1288
|
limit: pageSize,
|
|
1068
|
-
sales_order_ids: salesOrderIds
|
|
1069
|
-
extend: "variant"
|
|
1289
|
+
sales_order_ids: salesOrderIds,
|
|
1290
|
+
extend: ["variant"]
|
|
1070
1291
|
}
|
|
1071
1292
|
});
|
|
1072
|
-
const parsed =
|
|
1073
|
-
out.push(...parsed.items);
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
cursor = pageMeta.next_cursor;
|
|
1293
|
+
const parsed = parseKatanaPage(result.data, result.headers, katanaRawRecordSchema, "sales order rows");
|
|
1294
|
+
out.push(...parsed.items.map(parseSalesOrderRow));
|
|
1295
|
+
if (parsed.pagination.last_page) break;
|
|
1296
|
+
cursor = String(parsed.pagination.page + 1);
|
|
1077
1297
|
}
|
|
1078
1298
|
return out;
|
|
1079
1299
|
}
|
|
1080
1300
|
/** GET /products */
|
|
1081
1301
|
async listProducts(input = {}) {
|
|
1082
1302
|
const page = pageFromCursor(input.cursor);
|
|
1083
|
-
const
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
...input.is_sellable !== void 0 && { is_sellable: input.is_sellable },
|
|
1091
|
-
...input.is_producible !== void 0 && { is_producible: input.is_producible },
|
|
1092
|
-
...input.is_purchasable !== void 0 && { is_purchasable: input.is_purchasable }
|
|
1093
|
-
}
|
|
1303
|
+
const result = await this.listProductsPage({
|
|
1304
|
+
page,
|
|
1305
|
+
...input.limit !== void 0 && { limit: input.limit },
|
|
1306
|
+
...input.name && { name: input.name },
|
|
1307
|
+
...input.is_sellable !== void 0 && { is_sellable: input.is_sellable },
|
|
1308
|
+
...input.is_producible !== void 0 && { is_producible: input.is_producible },
|
|
1309
|
+
...input.is_purchasable !== void 0 && { is_purchasable: input.is_purchasable }
|
|
1094
1310
|
});
|
|
1095
|
-
const parsed = parseListEnvelope(data, parseProduct, "products");
|
|
1096
|
-
const pageMeta = listPageMeta(page, limit, parsed.items.length, parsed.totalPages);
|
|
1097
1311
|
return {
|
|
1098
|
-
items:
|
|
1099
|
-
truncated:
|
|
1100
|
-
|
|
1312
|
+
items: result.items.map(parseProduct),
|
|
1313
|
+
truncated: !result.pagination.last_page,
|
|
1314
|
+
...!result.pagination.last_page && { next_cursor: String(result.pagination.page + 1) }
|
|
1101
1315
|
};
|
|
1102
1316
|
}
|
|
1317
|
+
/** One GET /products request with raw records and response metadata. */
|
|
1318
|
+
async listProductsPage(input = {}) {
|
|
1319
|
+
const parsedInput = katanaListProductsPageInputSchema.safeParse(input);
|
|
1320
|
+
if (!parsedInput.success) throw new ToolError("Invalid Katana products page input", {
|
|
1321
|
+
code: "bad_input",
|
|
1322
|
+
details: { issues: parsedInput.error.issues.map((issue) => issue.message) }
|
|
1323
|
+
});
|
|
1324
|
+
const result = await this.#http.get("/products", {
|
|
1325
|
+
label: "Katana listProductsPage",
|
|
1326
|
+
query: {
|
|
1327
|
+
page: parsedInput.data.page ?? 1,
|
|
1328
|
+
limit: parsedInput.data.limit ?? 50,
|
|
1329
|
+
...parsedInput.data.name && { name: parsedInput.data.name },
|
|
1330
|
+
...parsedInput.data.is_sellable !== void 0 && { is_sellable: parsedInput.data.is_sellable },
|
|
1331
|
+
...parsedInput.data.is_producible !== void 0 && { is_producible: parsedInput.data.is_producible },
|
|
1332
|
+
...parsedInput.data.is_purchasable !== void 0 && { is_purchasable: parsedInput.data.is_purchasable },
|
|
1333
|
+
...parsedInput.data.created_at_min && { created_at_min: parsedInput.data.created_at_min },
|
|
1334
|
+
...parsedInput.data.created_at_max && { created_at_max: parsedInput.data.created_at_max },
|
|
1335
|
+
...parsedInput.data.updated_at_min && { updated_at_min: parsedInput.data.updated_at_min },
|
|
1336
|
+
...parsedInput.data.updated_at_max && { updated_at_max: parsedInput.data.updated_at_max },
|
|
1337
|
+
...parsedInput.data.include_deleted !== void 0 && { include_deleted: parsedInput.data.include_deleted },
|
|
1338
|
+
...parsedInput.data.include_archived !== void 0 && { include_archived: parsedInput.data.include_archived }
|
|
1339
|
+
}
|
|
1340
|
+
});
|
|
1341
|
+
return parseKatanaPage(result.data, result.headers, katanaProductRawSchema, "products");
|
|
1342
|
+
}
|
|
1103
1343
|
/** GET /products/{id} */
|
|
1104
1344
|
async getProduct(input) {
|
|
1105
1345
|
const { data } = await this.#http.get(`/products/${input.product_id}`, { label: "Katana getProduct" });
|
|
@@ -1119,23 +1359,40 @@ var KatanaClient = class KatanaClient {
|
|
|
1119
1359
|
/** GET /materials */
|
|
1120
1360
|
async listMaterials(input = {}) {
|
|
1121
1361
|
const page = pageFromCursor(input.cursor);
|
|
1122
|
-
const
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
page,
|
|
1127
|
-
limit,
|
|
1128
|
-
...input.name && { name: input.name }
|
|
1129
|
-
}
|
|
1362
|
+
const result = await this.listMaterialsPage({
|
|
1363
|
+
page,
|
|
1364
|
+
...input.limit !== void 0 && { limit: input.limit },
|
|
1365
|
+
...input.name && { name: input.name }
|
|
1130
1366
|
});
|
|
1131
|
-
const parsed = parseListEnvelope(data, parseMaterial, "materials");
|
|
1132
|
-
const pageMeta = listPageMeta(page, limit, parsed.items.length, parsed.totalPages);
|
|
1133
1367
|
return {
|
|
1134
|
-
items:
|
|
1135
|
-
truncated:
|
|
1136
|
-
|
|
1368
|
+
items: result.items.map(parseMaterial),
|
|
1369
|
+
truncated: !result.pagination.last_page,
|
|
1370
|
+
...!result.pagination.last_page && { next_cursor: String(result.pagination.page + 1) }
|
|
1137
1371
|
};
|
|
1138
1372
|
}
|
|
1373
|
+
/** One GET /materials request with raw records and response metadata. */
|
|
1374
|
+
async listMaterialsPage(input = {}) {
|
|
1375
|
+
const parsedInput = katanaListMaterialsPageInputSchema.safeParse(input);
|
|
1376
|
+
if (!parsedInput.success) throw new ToolError("Invalid Katana materials page input", {
|
|
1377
|
+
code: "bad_input",
|
|
1378
|
+
details: { issues: parsedInput.error.issues.map((issue) => issue.message) }
|
|
1379
|
+
});
|
|
1380
|
+
const result = await this.#http.get("/materials", {
|
|
1381
|
+
label: "Katana listMaterialsPage",
|
|
1382
|
+
query: {
|
|
1383
|
+
page: parsedInput.data.page ?? 1,
|
|
1384
|
+
limit: parsedInput.data.limit ?? 50,
|
|
1385
|
+
...parsedInput.data.name && { name: parsedInput.data.name },
|
|
1386
|
+
...parsedInput.data.created_at_min && { created_at_min: parsedInput.data.created_at_min },
|
|
1387
|
+
...parsedInput.data.created_at_max && { created_at_max: parsedInput.data.created_at_max },
|
|
1388
|
+
...parsedInput.data.updated_at_min && { updated_at_min: parsedInput.data.updated_at_min },
|
|
1389
|
+
...parsedInput.data.updated_at_max && { updated_at_max: parsedInput.data.updated_at_max },
|
|
1390
|
+
...parsedInput.data.include_deleted !== void 0 && { include_deleted: parsedInput.data.include_deleted },
|
|
1391
|
+
...parsedInput.data.include_archived !== void 0 && { include_archived: parsedInput.data.include_archived }
|
|
1392
|
+
}
|
|
1393
|
+
});
|
|
1394
|
+
return parseKatanaPage(result.data, result.headers, katanaMaterialRawSchema, "materials");
|
|
1395
|
+
}
|
|
1139
1396
|
/** GET /materials/{id} */
|
|
1140
1397
|
async getMaterial(input) {
|
|
1141
1398
|
const { data } = await this.#http.get(`/materials/${input.material_id}`, { label: "Katana getMaterial" });
|
|
@@ -1144,24 +1401,41 @@ var KatanaClient = class KatanaClient {
|
|
|
1144
1401
|
/** GET /customers */
|
|
1145
1402
|
async listCustomers(input = {}) {
|
|
1146
1403
|
const page = pageFromCursor(input.cursor);
|
|
1147
|
-
const
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
limit,
|
|
1153
|
-
...input.name && { name: input.name },
|
|
1154
|
-
...input.email && { email: input.email }
|
|
1155
|
-
}
|
|
1404
|
+
const result = await this.listCustomersPage({
|
|
1405
|
+
page,
|
|
1406
|
+
...input.limit !== void 0 && { limit: input.limit },
|
|
1407
|
+
...input.name && { name: input.name },
|
|
1408
|
+
...input.email && { email: input.email }
|
|
1156
1409
|
});
|
|
1157
|
-
const parsed = parseListEnvelope(data, parseCustomer, "customers");
|
|
1158
|
-
const pageMeta = listPageMeta(page, limit, parsed.items.length, parsed.totalPages);
|
|
1159
1410
|
return {
|
|
1160
|
-
items:
|
|
1161
|
-
truncated:
|
|
1162
|
-
|
|
1411
|
+
items: result.items.map(parseCustomer),
|
|
1412
|
+
truncated: !result.pagination.last_page,
|
|
1413
|
+
...!result.pagination.last_page && { next_cursor: String(result.pagination.page + 1) }
|
|
1163
1414
|
};
|
|
1164
1415
|
}
|
|
1416
|
+
/** One GET /customers request with raw records and response metadata. */
|
|
1417
|
+
async listCustomersPage(input = {}) {
|
|
1418
|
+
const parsedInput = katanaListCustomersPageInputSchema.safeParse(input);
|
|
1419
|
+
if (!parsedInput.success) throw new ToolError("Invalid Katana customers page input", {
|
|
1420
|
+
code: "bad_input",
|
|
1421
|
+
details: { issues: parsedInput.error.issues.map((issue) => issue.message) }
|
|
1422
|
+
});
|
|
1423
|
+
const result = await this.#http.get("/customers", {
|
|
1424
|
+
label: "Katana listCustomersPage",
|
|
1425
|
+
query: {
|
|
1426
|
+
page: parsedInput.data.page ?? 1,
|
|
1427
|
+
limit: parsedInput.data.limit ?? 50,
|
|
1428
|
+
...parsedInput.data.name && { name: parsedInput.data.name },
|
|
1429
|
+
...parsedInput.data.email && { email: parsedInput.data.email },
|
|
1430
|
+
...parsedInput.data.created_at_min && { created_at_min: parsedInput.data.created_at_min },
|
|
1431
|
+
...parsedInput.data.created_at_max && { created_at_max: parsedInput.data.created_at_max },
|
|
1432
|
+
...parsedInput.data.updated_at_min && { updated_at_min: parsedInput.data.updated_at_min },
|
|
1433
|
+
...parsedInput.data.updated_at_max && { updated_at_max: parsedInput.data.updated_at_max },
|
|
1434
|
+
...parsedInput.data.include_deleted !== void 0 && { include_deleted: parsedInput.data.include_deleted }
|
|
1435
|
+
}
|
|
1436
|
+
});
|
|
1437
|
+
return parseKatanaPage(result.data, result.headers, katanaCustomerRawSchema, "customers");
|
|
1438
|
+
}
|
|
1165
1439
|
/** GET /customers/{id} */
|
|
1166
1440
|
async getCustomer(input) {
|
|
1167
1441
|
const { data } = await this.#http.get(`/customers/${input.customer_id}`, { label: "Katana getCustomer" });
|
|
@@ -1181,23 +1455,39 @@ var KatanaClient = class KatanaClient {
|
|
|
1181
1455
|
/** GET /suppliers */
|
|
1182
1456
|
async listSuppliers(input = {}) {
|
|
1183
1457
|
const page = pageFromCursor(input.cursor);
|
|
1184
|
-
const
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
page,
|
|
1189
|
-
limit,
|
|
1190
|
-
...input.name && { name: input.name }
|
|
1191
|
-
}
|
|
1458
|
+
const result = await this.listSuppliersPage({
|
|
1459
|
+
page,
|
|
1460
|
+
...input.limit !== void 0 && { limit: input.limit },
|
|
1461
|
+
...input.name && { name: input.name }
|
|
1192
1462
|
});
|
|
1193
|
-
const parsed = parseListEnvelope(data, parseSupplier, "suppliers");
|
|
1194
|
-
const pageMeta = listPageMeta(page, limit, parsed.items.length, parsed.totalPages);
|
|
1195
1463
|
return {
|
|
1196
|
-
items:
|
|
1197
|
-
truncated:
|
|
1198
|
-
|
|
1464
|
+
items: result.items.map(parseSupplier),
|
|
1465
|
+
truncated: !result.pagination.last_page,
|
|
1466
|
+
...!result.pagination.last_page && { next_cursor: String(result.pagination.page + 1) }
|
|
1199
1467
|
};
|
|
1200
1468
|
}
|
|
1469
|
+
/** One GET /suppliers request with raw records and response metadata. */
|
|
1470
|
+
async listSuppliersPage(input = {}) {
|
|
1471
|
+
const parsedInput = katanaListSuppliersPageInputSchema.safeParse(input);
|
|
1472
|
+
if (!parsedInput.success) throw new ToolError("Invalid Katana suppliers page input", {
|
|
1473
|
+
code: "bad_input",
|
|
1474
|
+
details: { issues: parsedInput.error.issues.map((issue) => issue.message) }
|
|
1475
|
+
});
|
|
1476
|
+
const result = await this.#http.get("/suppliers", {
|
|
1477
|
+
label: "Katana listSuppliersPage",
|
|
1478
|
+
query: {
|
|
1479
|
+
page: parsedInput.data.page ?? 1,
|
|
1480
|
+
limit: parsedInput.data.limit ?? 50,
|
|
1481
|
+
...parsedInput.data.name && { name: parsedInput.data.name },
|
|
1482
|
+
...parsedInput.data.created_at_min && { created_at_min: parsedInput.data.created_at_min },
|
|
1483
|
+
...parsedInput.data.created_at_max && { created_at_max: parsedInput.data.created_at_max },
|
|
1484
|
+
...parsedInput.data.updated_at_min && { updated_at_min: parsedInput.data.updated_at_min },
|
|
1485
|
+
...parsedInput.data.updated_at_max && { updated_at_max: parsedInput.data.updated_at_max },
|
|
1486
|
+
...parsedInput.data.include_deleted !== void 0 && { include_deleted: parsedInput.data.include_deleted }
|
|
1487
|
+
}
|
|
1488
|
+
});
|
|
1489
|
+
return parseKatanaPage(result.data, result.headers, katanaSupplierRawSchema, "suppliers");
|
|
1490
|
+
}
|
|
1201
1491
|
/** GET /suppliers/{id} */
|
|
1202
1492
|
async getSupplier(input) {
|
|
1203
1493
|
const { data } = await this.#http.get(`/suppliers/${input.supplier_id}`, { label: "Katana getSupplier" });
|
|
@@ -1211,26 +1501,45 @@ var KatanaClient = class KatanaClient {
|
|
|
1211
1501
|
/** GET /purchase_orders */
|
|
1212
1502
|
async listPurchaseOrders(input = {}) {
|
|
1213
1503
|
const page = pageFromCursor(input.cursor);
|
|
1214
|
-
const
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
...input.supplier_id !== void 0 && { supplier_id: input.supplier_id },
|
|
1222
|
-
...input.order_no && { order_no: input.order_no },
|
|
1223
|
-
...input.location_id !== void 0 && { location_id: input.location_id }
|
|
1224
|
-
}
|
|
1504
|
+
const result = await this.listPurchaseOrdersPage({
|
|
1505
|
+
page,
|
|
1506
|
+
...input.limit !== void 0 && { limit: input.limit },
|
|
1507
|
+
...input.status && { status: input.status },
|
|
1508
|
+
...input.supplier_id !== void 0 && { supplier_id: input.supplier_id },
|
|
1509
|
+
...input.order_no && { order_no: input.order_no },
|
|
1510
|
+
...input.location_id !== void 0 && { location_id: input.location_id }
|
|
1225
1511
|
});
|
|
1226
|
-
const parsed = parseListEnvelope(data, parsePurchaseOrder, "purchase orders");
|
|
1227
|
-
const pageMeta = listPageMeta(page, limit, parsed.items.length, parsed.totalPages);
|
|
1228
1512
|
return {
|
|
1229
|
-
items:
|
|
1230
|
-
truncated:
|
|
1231
|
-
|
|
1513
|
+
items: result.items.map(parsePurchaseOrder),
|
|
1514
|
+
truncated: !result.pagination.last_page,
|
|
1515
|
+
...!result.pagination.last_page && { next_cursor: String(result.pagination.page + 1) }
|
|
1232
1516
|
};
|
|
1233
1517
|
}
|
|
1518
|
+
/** One GET /purchase_orders request with raw records and response metadata. */
|
|
1519
|
+
async listPurchaseOrdersPage(input = {}) {
|
|
1520
|
+
const parsedInput = katanaListPurchaseOrdersPageInputSchema.safeParse(input);
|
|
1521
|
+
if (!parsedInput.success) throw new ToolError("Invalid Katana purchase orders page input", {
|
|
1522
|
+
code: "bad_input",
|
|
1523
|
+
details: { issues: parsedInput.error.issues.map((issue) => issue.message) }
|
|
1524
|
+
});
|
|
1525
|
+
const result = await this.#http.get("/purchase_orders", {
|
|
1526
|
+
label: "Katana listPurchaseOrdersPage",
|
|
1527
|
+
query: {
|
|
1528
|
+
page: parsedInput.data.page ?? 1,
|
|
1529
|
+
limit: parsedInput.data.limit ?? 50,
|
|
1530
|
+
...parsedInput.data.status && { status: parsedInput.data.status },
|
|
1531
|
+
...parsedInput.data.supplier_id !== void 0 && { supplier_id: parsedInput.data.supplier_id },
|
|
1532
|
+
...parsedInput.data.order_no && { order_no: parsedInput.data.order_no },
|
|
1533
|
+
...parsedInput.data.location_id !== void 0 && { location_id: parsedInput.data.location_id },
|
|
1534
|
+
...parsedInput.data.created_at_min && { created_at_min: parsedInput.data.created_at_min },
|
|
1535
|
+
...parsedInput.data.created_at_max && { created_at_max: parsedInput.data.created_at_max },
|
|
1536
|
+
...parsedInput.data.updated_at_min && { updated_at_min: parsedInput.data.updated_at_min },
|
|
1537
|
+
...parsedInput.data.updated_at_max && { updated_at_max: parsedInput.data.updated_at_max },
|
|
1538
|
+
...parsedInput.data.include_deleted !== void 0 && { include_deleted: parsedInput.data.include_deleted }
|
|
1539
|
+
}
|
|
1540
|
+
});
|
|
1541
|
+
return parseKatanaPage(result.data, result.headers, katanaPurchaseOrderRawSchema, "purchase orders");
|
|
1542
|
+
}
|
|
1234
1543
|
/** GET /purchase_orders/{id} */
|
|
1235
1544
|
async getPurchaseOrder(input) {
|
|
1236
1545
|
const { data } = await this.#http.get(`/purchase_orders/${input.purchase_order_id}`, { label: "Katana getPurchaseOrder" });
|
|
@@ -1250,26 +1559,45 @@ var KatanaClient = class KatanaClient {
|
|
|
1250
1559
|
/** GET /manufacturing_orders */
|
|
1251
1560
|
async listManufacturingOrders(input = {}) {
|
|
1252
1561
|
const page = pageFromCursor(input.cursor);
|
|
1253
|
-
const
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
...input.variant_id !== void 0 && { variant_id: input.variant_id },
|
|
1261
|
-
...input.location_id !== void 0 && { location_id: input.location_id },
|
|
1262
|
-
...input.order_no && { order_no: input.order_no }
|
|
1263
|
-
}
|
|
1562
|
+
const result = await this.listManufacturingOrdersPage({
|
|
1563
|
+
page,
|
|
1564
|
+
...input.limit !== void 0 && { limit: input.limit },
|
|
1565
|
+
...input.status && { status: input.status },
|
|
1566
|
+
...input.variant_id !== void 0 && { variant_id: input.variant_id },
|
|
1567
|
+
...input.location_id !== void 0 && { location_id: input.location_id },
|
|
1568
|
+
...input.order_no && { order_no: input.order_no }
|
|
1264
1569
|
});
|
|
1265
|
-
const parsed = parseListEnvelope(data, parseManufacturingOrder, "manufacturing orders");
|
|
1266
|
-
const pageMeta = listPageMeta(page, limit, parsed.items.length, parsed.totalPages);
|
|
1267
1570
|
return {
|
|
1268
|
-
items:
|
|
1269
|
-
truncated:
|
|
1270
|
-
|
|
1571
|
+
items: result.items.map(parseManufacturingOrder),
|
|
1572
|
+
truncated: !result.pagination.last_page,
|
|
1573
|
+
...!result.pagination.last_page && { next_cursor: String(result.pagination.page + 1) }
|
|
1271
1574
|
};
|
|
1272
1575
|
}
|
|
1576
|
+
/** One GET /manufacturing_orders request with raw records and response metadata. */
|
|
1577
|
+
async listManufacturingOrdersPage(input = {}) {
|
|
1578
|
+
const parsedInput = katanaListManufacturingOrdersPageInputSchema.safeParse(input);
|
|
1579
|
+
if (!parsedInput.success) throw new ToolError("Invalid Katana manufacturing orders page input", {
|
|
1580
|
+
code: "bad_input",
|
|
1581
|
+
details: { issues: parsedInput.error.issues.map((issue) => issue.message) }
|
|
1582
|
+
});
|
|
1583
|
+
const result = await this.#http.get("/manufacturing_orders", {
|
|
1584
|
+
label: "Katana listManufacturingOrdersPage",
|
|
1585
|
+
query: {
|
|
1586
|
+
page: parsedInput.data.page ?? 1,
|
|
1587
|
+
limit: parsedInput.data.limit ?? 50,
|
|
1588
|
+
...parsedInput.data.status && { status: parsedInput.data.status },
|
|
1589
|
+
...parsedInput.data.variant_id !== void 0 && { variant_id: parsedInput.data.variant_id },
|
|
1590
|
+
...parsedInput.data.location_id !== void 0 && { location_id: parsedInput.data.location_id },
|
|
1591
|
+
...parsedInput.data.order_no && { order_no: parsedInput.data.order_no },
|
|
1592
|
+
...parsedInput.data.created_at_min && { created_at_min: parsedInput.data.created_at_min },
|
|
1593
|
+
...parsedInput.data.created_at_max && { created_at_max: parsedInput.data.created_at_max },
|
|
1594
|
+
...parsedInput.data.updated_at_min && { updated_at_min: parsedInput.data.updated_at_min },
|
|
1595
|
+
...parsedInput.data.updated_at_max && { updated_at_max: parsedInput.data.updated_at_max },
|
|
1596
|
+
...parsedInput.data.include_deleted !== void 0 && { include_deleted: parsedInput.data.include_deleted }
|
|
1597
|
+
}
|
|
1598
|
+
});
|
|
1599
|
+
return parseKatanaPage(result.data, result.headers, katanaManufacturingOrderRawSchema, "manufacturing orders");
|
|
1600
|
+
}
|
|
1273
1601
|
/** GET /manufacturing_orders/{id} */
|
|
1274
1602
|
async getManufacturingOrder(input) {
|
|
1275
1603
|
const { data } = await this.#http.get(`/manufacturing_orders/${input.manufacturing_order_id}`, { label: "Katana getManufacturingOrder" });
|
|
@@ -1289,24 +1617,38 @@ var KatanaClient = class KatanaClient {
|
|
|
1289
1617
|
/** GET /inventory */
|
|
1290
1618
|
async listInventory(input = {}) {
|
|
1291
1619
|
const page = pageFromCursor(input.cursor);
|
|
1292
|
-
const
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
limit,
|
|
1298
|
-
...input.variant_id !== void 0 && { variant_id: input.variant_id },
|
|
1299
|
-
...input.location_id !== void 0 && { location_id: input.location_id }
|
|
1300
|
-
}
|
|
1620
|
+
const result = await this.listInventoryPage({
|
|
1621
|
+
page,
|
|
1622
|
+
...input.limit !== void 0 && { limit: input.limit },
|
|
1623
|
+
...input.variant_id !== void 0 && { variant_id: [input.variant_id] },
|
|
1624
|
+
...input.location_id !== void 0 && { location_id: input.location_id }
|
|
1301
1625
|
});
|
|
1302
|
-
const parsed = parseListEnvelope(data, parseInventory, "inventory");
|
|
1303
|
-
const pageMeta = listPageMeta(page, limit, parsed.items.length, parsed.totalPages);
|
|
1304
1626
|
return {
|
|
1305
|
-
items:
|
|
1306
|
-
truncated:
|
|
1307
|
-
|
|
1627
|
+
items: result.items.map(parseInventory),
|
|
1628
|
+
truncated: !result.pagination.last_page,
|
|
1629
|
+
...!result.pagination.last_page && { next_cursor: String(result.pagination.page + 1) }
|
|
1308
1630
|
};
|
|
1309
1631
|
}
|
|
1632
|
+
/** One GET /inventory request with raw records and response metadata. */
|
|
1633
|
+
async listInventoryPage(input = {}) {
|
|
1634
|
+
const parsedInput = katanaListInventoryPageInputSchema.safeParse(input);
|
|
1635
|
+
if (!parsedInput.success) throw new ToolError("Invalid Katana inventory page input", {
|
|
1636
|
+
code: "bad_input",
|
|
1637
|
+
details: { issues: parsedInput.error.issues.map((issue) => issue.message) }
|
|
1638
|
+
});
|
|
1639
|
+
const result = await this.#http.get("/inventory", {
|
|
1640
|
+
label: "Katana listInventoryPage",
|
|
1641
|
+
query: {
|
|
1642
|
+
page: parsedInput.data.page ?? 1,
|
|
1643
|
+
limit: parsedInput.data.limit ?? 50,
|
|
1644
|
+
...parsedInput.data.location_id !== void 0 && { location_id: parsedInput.data.location_id },
|
|
1645
|
+
...parsedInput.data.variant_id && { variant_id: parsedInput.data.variant_id },
|
|
1646
|
+
...parsedInput.data.include_archived !== void 0 && { include_archived: parsedInput.data.include_archived },
|
|
1647
|
+
...parsedInput.data.extend && { extend: parsedInput.data.extend }
|
|
1648
|
+
}
|
|
1649
|
+
});
|
|
1650
|
+
return parseKatanaPage(result.data, result.headers, katanaInventoryRawSchema, "inventory");
|
|
1651
|
+
}
|
|
1310
1652
|
};
|
|
1311
1653
|
//#endregion
|
|
1312
1654
|
//#region src/vendors/katana/module.ts
|
|
@@ -1634,6 +1976,6 @@ const katanaModule = defineModule({
|
|
|
1634
1976
|
]
|
|
1635
1977
|
});
|
|
1636
1978
|
//#endregion
|
|
1637
|
-
export { KatanaClient, katanaAuthSchema, katanaCreateCustomerInputSchema, katanaCreateCustomerOutputSchema, katanaCreateCustomerTool, katanaCreateManufacturingOrderInputSchema, katanaCreateManufacturingOrderOutputSchema, katanaCreateManufacturingOrderTool, katanaCreateProductInputSchema, katanaCreateProductOutputSchema, katanaCreateProductTool, katanaCreatePurchaseOrderInputSchema, katanaCreatePurchaseOrderOutputSchema, katanaCreatePurchaseOrderTool, katanaCreateSalesOrderInputSchema, katanaCreateSalesOrderOutputSchema, katanaCreateSalesOrderTool, katanaCreateSupplierInputSchema, katanaCreateSupplierOutputSchema, katanaCreateSupplierTool, katanaCustomerSchema, katanaDeleteSalesOrderInputSchema, katanaDeleteSalesOrderOutputSchema, katanaDeleteSalesOrderTool, katanaGetCustomerInputSchema, katanaGetCustomerOutputSchema, katanaGetCustomerTool, katanaGetManufacturingOrderInputSchema, katanaGetManufacturingOrderOutputSchema, katanaGetManufacturingOrderTool, katanaGetMaterialInputSchema, katanaGetMaterialOutputSchema, katanaGetMaterialTool, katanaGetProductInputSchema, katanaGetProductOutputSchema, katanaGetProductTool, katanaGetPurchaseOrderInputSchema, katanaGetPurchaseOrderOutputSchema, katanaGetPurchaseOrderTool, katanaGetSalesOrderInputSchema, katanaGetSalesOrderOutputSchema, katanaGetSalesOrderTool, katanaGetSupplierInputSchema, katanaGetSupplierOutputSchema, katanaGetSupplierTool, katanaInventorySchema, katanaListCustomersInputSchema, katanaListCustomersOutputSchema, katanaListCustomersTool, katanaListInventoryInputSchema, katanaListInventoryOutputSchema, katanaListInventoryTool, katanaListManufacturingOrdersInputSchema, katanaListManufacturingOrdersOutputSchema, katanaListManufacturingOrdersTool, katanaListMaterialsInputSchema, katanaListMaterialsOutputSchema, katanaListMaterialsTool, katanaListProductsInputSchema, katanaListProductsOutputSchema, katanaListProductsTool, katanaListPurchaseOrdersInputSchema, katanaListPurchaseOrdersOutputSchema, katanaListPurchaseOrdersTool, katanaListSalesOrdersInputSchema, katanaListSalesOrdersOutputSchema, katanaListSalesOrdersTool, katanaListSuppliersInputSchema, katanaListSuppliersOutputSchema, katanaListSuppliersTool, katanaManufacturingOrderSchema, katanaMaterialSchema, katanaModule, katanaNormalizedSalesOrderRowSchema, katanaNormalizedSalesOrderSchema, katanaProductSchema, katanaProductVariantInputSchema, katanaPurchaseOrderRowInputSchema, katanaPurchaseOrderSchema, katanaQuerySalesOrderScopeSchema, katanaQuerySalesOrdersInputSchema, katanaQuerySalesOrdersOutputSchema, katanaQuerySalesOrdersTool, katanaSalesOrderRowInputSchema, katanaSalesOrderSchema, katanaSupplierSchema, katanaUpdateCustomerInputSchema, katanaUpdateCustomerOutputSchema, katanaUpdateCustomerTool, katanaUpdateManufacturingOrderInputSchema, katanaUpdateManufacturingOrderOutputSchema, katanaUpdateManufacturingOrderTool, katanaUpdateProductInputSchema, katanaUpdateProductOutputSchema, katanaUpdateProductTool, katanaUpdatePurchaseOrderInputSchema, katanaUpdatePurchaseOrderOutputSchema, katanaUpdatePurchaseOrderTool, katanaUpdateSalesOrderInputSchema, katanaUpdateSalesOrderOutputSchema, katanaUpdateSalesOrderTool };
|
|
1979
|
+
export { KatanaClient, katanaAuthSchema, katanaCreateCustomerInputSchema, katanaCreateCustomerOutputSchema, katanaCreateCustomerTool, katanaCreateManufacturingOrderInputSchema, katanaCreateManufacturingOrderOutputSchema, katanaCreateManufacturingOrderTool, katanaCreateProductInputSchema, katanaCreateProductOutputSchema, katanaCreateProductTool, katanaCreatePurchaseOrderInputSchema, katanaCreatePurchaseOrderOutputSchema, katanaCreatePurchaseOrderTool, katanaCreateSalesOrderInputSchema, katanaCreateSalesOrderOutputSchema, katanaCreateSalesOrderTool, katanaCreateSupplierInputSchema, katanaCreateSupplierOutputSchema, katanaCreateSupplierTool, katanaCustomerRawSchema, katanaCustomerSchema, katanaDeleteSalesOrderInputSchema, katanaDeleteSalesOrderOutputSchema, katanaDeleteSalesOrderTool, katanaGetCustomerInputSchema, katanaGetCustomerOutputSchema, katanaGetCustomerTool, katanaGetManufacturingOrderInputSchema, katanaGetManufacturingOrderOutputSchema, katanaGetManufacturingOrderTool, katanaGetMaterialInputSchema, katanaGetMaterialOutputSchema, katanaGetMaterialTool, katanaGetProductInputSchema, katanaGetProductOutputSchema, katanaGetProductTool, katanaGetPurchaseOrderInputSchema, katanaGetPurchaseOrderOutputSchema, katanaGetPurchaseOrderTool, katanaGetSalesOrderInputSchema, katanaGetSalesOrderOutputSchema, katanaGetSalesOrderTool, katanaGetSupplierInputSchema, katanaGetSupplierOutputSchema, katanaGetSupplierTool, katanaInventoryRawSchema, katanaInventorySchema, katanaListCustomersInputSchema, katanaListCustomersOutputSchema, katanaListCustomersPageInputSchema, katanaListCustomersPageOutputSchema, katanaListCustomersTool, katanaListInventoryInputSchema, katanaListInventoryOutputSchema, katanaListInventoryPageInputSchema, katanaListInventoryPageOutputSchema, katanaListInventoryTool, katanaListManufacturingOrdersInputSchema, katanaListManufacturingOrdersOutputSchema, katanaListManufacturingOrdersPageInputSchema, katanaListManufacturingOrdersPageOutputSchema, katanaListManufacturingOrdersTool, katanaListMaterialsInputSchema, katanaListMaterialsOutputSchema, katanaListMaterialsPageInputSchema, katanaListMaterialsPageOutputSchema, katanaListMaterialsTool, katanaListProductsInputSchema, katanaListProductsOutputSchema, katanaListProductsPageInputSchema, katanaListProductsPageOutputSchema, katanaListProductsTool, katanaListPurchaseOrdersInputSchema, katanaListPurchaseOrdersOutputSchema, katanaListPurchaseOrdersPageInputSchema, katanaListPurchaseOrdersPageOutputSchema, katanaListPurchaseOrdersTool, katanaListSalesOrdersInputSchema, katanaListSalesOrdersOutputSchema, katanaListSalesOrdersPageInputSchema, katanaListSalesOrdersPageOutputSchema, katanaListSalesOrdersTool, katanaListSuppliersInputSchema, katanaListSuppliersOutputSchema, katanaListSuppliersPageInputSchema, katanaListSuppliersPageOutputSchema, katanaListSuppliersTool, katanaManufacturingOrderRawSchema, katanaManufacturingOrderSchema, katanaMaterialRawSchema, katanaMaterialSchema, katanaModule, katanaNormalizedSalesOrderRowSchema, katanaNormalizedSalesOrderSchema, katanaPaginationSchema, katanaProductRawSchema, katanaProductSchema, katanaProductVariantInputSchema, katanaPurchaseOrderRawSchema, katanaPurchaseOrderRowInputSchema, katanaPurchaseOrderSchema, katanaQuerySalesOrderScopeSchema, katanaQuerySalesOrdersInputSchema, katanaQuerySalesOrdersOutputSchema, katanaQuerySalesOrdersTool, katanaRateLimitSchema, katanaRawRecordSchema, katanaSalesOrderRawSchema, katanaSalesOrderRowInputSchema, katanaSalesOrderSchema, katanaSupplierRawSchema, katanaSupplierSchema, katanaUpdateCustomerInputSchema, katanaUpdateCustomerOutputSchema, katanaUpdateCustomerTool, katanaUpdateManufacturingOrderInputSchema, katanaUpdateManufacturingOrderOutputSchema, katanaUpdateManufacturingOrderTool, katanaUpdateProductInputSchema, katanaUpdateProductOutputSchema, katanaUpdateProductTool, katanaUpdatePurchaseOrderInputSchema, katanaUpdatePurchaseOrderOutputSchema, katanaUpdatePurchaseOrderTool, katanaUpdateSalesOrderInputSchema, katanaUpdateSalesOrderOutputSchema, katanaUpdateSalesOrderTool };
|
|
1638
1980
|
|
|
1639
1981
|
//# sourceMappingURL=index.js.map
|