@taxdao/fintax-mcp 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +220 -0
- package/dist/app/create-server.d.ts +18 -0
- package/dist/app/create-server.js +80 -0
- package/dist/app/create-server.js.map +1 -0
- package/dist/app/register-tools.d.ts +4 -0
- package/dist/app/register-tools.js +18 -0
- package/dist/app/register-tools.js.map +1 -0
- package/dist/audit/audit-context.d.ts +38 -0
- package/dist/audit/audit-context.js +167 -0
- package/dist/audit/audit-context.js.map +1 -0
- package/dist/audit/audit-sink.d.ts +20 -0
- package/dist/audit/audit-sink.js +6 -0
- package/dist/audit/audit-sink.js.map +1 -0
- package/dist/audit/file-audit-sink.d.ts +6 -0
- package/dist/audit/file-audit-sink.js +18 -0
- package/dist/audit/file-audit-sink.js.map +1 -0
- package/dist/auth/auth-session.d.ts +63 -0
- package/dist/auth/auth-session.js +226 -0
- package/dist/auth/auth-session.js.map +1 -0
- package/dist/auth/credentials.d.ts +6 -0
- package/dist/auth/credentials.js +12 -0
- package/dist/auth/credentials.js.map +1 -0
- package/dist/auth/org-token-provider.d.ts +15 -0
- package/dist/auth/org-token-provider.js +62 -0
- package/dist/auth/org-token-provider.js.map +1 -0
- package/dist/capabilities/capability.d.ts +100 -0
- package/dist/capabilities/capability.js +26 -0
- package/dist/capabilities/capability.js.map +1 -0
- package/dist/capabilities/create-capabilities.d.ts +2 -0
- package/dist/capabilities/create-capabilities.js +37 -0
- package/dist/capabilities/create-capabilities.js.map +1 -0
- package/dist/capabilities/define-capability.d.ts +39 -0
- package/dist/capabilities/define-capability.js +64 -0
- package/dist/capabilities/define-capability.js.map +1 -0
- package/dist/capabilities/definitions/accounting-balances.d.ts +4 -0
- package/dist/capabilities/definitions/accounting-balances.js +98 -0
- package/dist/capabilities/definitions/accounting-balances.js.map +1 -0
- package/dist/capabilities/definitions/accounting-context.d.ts +2 -0
- package/dist/capabilities/definitions/accounting-context.js +17 -0
- package/dist/capabilities/definitions/accounting-context.js.map +1 -0
- package/dist/capabilities/definitions/assets.d.ts +2 -0
- package/dist/capabilities/definitions/assets.js +367 -0
- package/dist/capabilities/definitions/assets.js.map +1 -0
- package/dist/capabilities/definitions/business-documents.d.ts +9 -0
- package/dist/capabilities/definitions/business-documents.js +386 -0
- package/dist/capabilities/definitions/business-documents.js.map +1 -0
- package/dist/capabilities/definitions/dashboard.d.ts +2 -0
- package/dist/capabilities/definitions/dashboard.js +153 -0
- package/dist/capabilities/definitions/dashboard.js.map +1 -0
- package/dist/capabilities/definitions/extended-operation-contracts.d.ts +597 -0
- package/dist/capabilities/definitions/extended-operation-contracts.js +1180 -0
- package/dist/capabilities/definitions/extended-operation-contracts.js.map +1 -0
- package/dist/capabilities/definitions/extended-operations.d.ts +2 -0
- package/dist/capabilities/definitions/extended-operations.js +699 -0
- package/dist/capabilities/definitions/extended-operations.js.map +1 -0
- package/dist/capabilities/definitions/financial-reports.d.ts +2 -0
- package/dist/capabilities/definitions/financial-reports.js +100 -0
- package/dist/capabilities/definitions/financial-reports.js.map +1 -0
- package/dist/capabilities/definitions/fnd-import.d.ts +34 -0
- package/dist/capabilities/definitions/fnd-import.js +282 -0
- package/dist/capabilities/definitions/fnd-import.js.map +1 -0
- package/dist/capabilities/definitions/fund-accounts.d.ts +2 -0
- package/dist/capabilities/definitions/fund-accounts.js +188 -0
- package/dist/capabilities/definitions/fund-accounts.js.map +1 -0
- package/dist/capabilities/definitions/fund-balances.d.ts +2 -0
- package/dist/capabilities/definitions/fund-balances.js +84 -0
- package/dist/capabilities/definitions/fund-balances.js.map +1 -0
- package/dist/capabilities/definitions/journals.d.ts +10 -0
- package/dist/capabilities/definitions/journals.js +224 -0
- package/dist/capabilities/definitions/journals.js.map +1 -0
- package/dist/capabilities/definitions/master-data.d.ts +2 -0
- package/dist/capabilities/definitions/master-data.js +451 -0
- package/dist/capabilities/definitions/master-data.js.map +1 -0
- package/dist/capabilities/definitions/pnl.d.ts +2 -0
- package/dist/capabilities/definitions/pnl.js +139 -0
- package/dist/capabilities/definitions/pnl.js.map +1 -0
- package/dist/capabilities/definitions/reference-data.d.ts +2 -0
- package/dist/capabilities/definitions/reference-data.js +169 -0
- package/dist/capabilities/definitions/reference-data.js.map +1 -0
- package/dist/capabilities/definitions/transaction-drafts.d.ts +2 -0
- package/dist/capabilities/definitions/transaction-drafts.js +157 -0
- package/dist/capabilities/definitions/transaction-drafts.js.map +1 -0
- package/dist/capabilities/definitions/transactions.d.ts +168 -0
- package/dist/capabilities/definitions/transactions.js +79 -0
- package/dist/capabilities/definitions/transactions.js.map +1 -0
- package/dist/capabilities/executor.d.ts +19 -0
- package/dist/capabilities/executor.js +134 -0
- package/dist/capabilities/executor.js.map +1 -0
- package/dist/capabilities/registry.d.ts +7 -0
- package/dist/capabilities/registry.js +51 -0
- package/dist/capabilities/registry.js.map +1 -0
- package/dist/clients/base-client.d.ts +5 -0
- package/dist/clients/base-client.js +13 -0
- package/dist/clients/base-client.js.map +1 -0
- package/dist/clients/http-client.d.ts +29 -0
- package/dist/clients/http-client.js +167 -0
- package/dist/clients/http-client.js.map +1 -0
- package/dist/clients/suite-client.d.ts +5 -0
- package/dist/clients/suite-client.js +5 -0
- package/dist/clients/suite-client.js.map +1 -0
- package/dist/concurrency/lock-manager.d.ts +4 -0
- package/dist/concurrency/lock-manager.js +23 -0
- package/dist/concurrency/lock-manager.js.map +1 -0
- package/dist/config/load-config.d.ts +2 -0
- package/dist/config/load-config.js +18 -0
- package/dist/config/load-config.js.map +1 -0
- package/dist/config/schema.d.ts +24 -0
- package/dist/config/schema.js +85 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/errors/fintax-error.d.ts +24 -0
- package/dist/errors/fintax-error.js +21 -0
- package/dist/errors/fintax-error.js.map +1 -0
- package/dist/errors/normalize-error.d.ts +3 -0
- package/dist/errors/normalize-error.js +67 -0
- package/dist/errors/normalize-error.js.map +1 -0
- package/dist/files/artifact-store.d.ts +17 -0
- package/dist/files/artifact-store.js +74 -0
- package/dist/files/artifact-store.js.map +1 -0
- package/dist/files/input-policy.d.ts +28 -0
- package/dist/files/input-policy.js +109 -0
- package/dist/files/input-policy.js.map +1 -0
- package/dist/files/roots-provider.d.ts +14 -0
- package/dist/files/roots-provider.js +47 -0
- package/dist/files/roots-provider.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +49 -0
- package/dist/index.js.map +1 -0
- package/dist/logging/logger.d.ts +3 -0
- package/dist/logging/logger.js +13 -0
- package/dist/logging/logger.js.map +1 -0
- package/dist/policies/idempotency.d.ts +32 -0
- package/dist/policies/idempotency.js +155 -0
- package/dist/policies/idempotency.js.map +1 -0
- package/dist/policies/job-reference.d.ts +16 -0
- package/dist/policies/job-reference.js +62 -0
- package/dist/policies/job-reference.js.map +1 -0
- package/dist/policies/operation-plan.d.ts +27 -0
- package/dist/policies/operation-plan.js +99 -0
- package/dist/policies/operation-plan.js.map +1 -0
- package/dist/policies/redaction.d.ts +2 -0
- package/dist/policies/redaction.js +29 -0
- package/dist/policies/redaction.js.map +1 -0
- package/dist/policies/retry.d.ts +8 -0
- package/dist/policies/retry.js +19 -0
- package/dist/policies/retry.js.map +1 -0
- package/dist/responses/tool-response.d.ts +4 -0
- package/dist/responses/tool-response.js +24 -0
- package/dist/responses/tool-response.js.map +1 -0
- package/dist/schemas/common.d.ts +226 -0
- package/dist/schemas/common.js +133 -0
- package/dist/schemas/common.js.map +1 -0
- package/dist/schemas/domains/accounting-balances.d.ts +497 -0
- package/dist/schemas/domains/accounting-balances.js +226 -0
- package/dist/schemas/domains/accounting-balances.js.map +1 -0
- package/dist/schemas/domains/accounting-context.d.ts +118 -0
- package/dist/schemas/domains/accounting-context.js +54 -0
- package/dist/schemas/domains/accounting-context.js.map +1 -0
- package/dist/schemas/domains/assets.d.ts +2508 -0
- package/dist/schemas/domains/assets.js +960 -0
- package/dist/schemas/domains/assets.js.map +1 -0
- package/dist/schemas/domains/business-documents.d.ts +4406 -0
- package/dist/schemas/domains/business-documents.js +1153 -0
- package/dist/schemas/domains/business-documents.js.map +1 -0
- package/dist/schemas/domains/configuration.d.ts +518 -0
- package/dist/schemas/domains/configuration.js +504 -0
- package/dist/schemas/domains/configuration.js.map +1 -0
- package/dist/schemas/domains/dashboard.d.ts +339 -0
- package/dist/schemas/domains/dashboard.js +211 -0
- package/dist/schemas/domains/dashboard.js.map +1 -0
- package/dist/schemas/domains/extended-operation-results.d.ts +1588 -0
- package/dist/schemas/domains/extended-operation-results.js +275 -0
- package/dist/schemas/domains/extended-operation-results.js.map +1 -0
- package/dist/schemas/domains/extended-operations.d.ts +1061 -0
- package/dist/schemas/domains/extended-operations.js +567 -0
- package/dist/schemas/domains/extended-operations.js.map +1 -0
- package/dist/schemas/domains/extended-query-results.d.ts +1688 -0
- package/dist/schemas/domains/extended-query-results.js +337 -0
- package/dist/schemas/domains/extended-query-results.js.map +1 -0
- package/dist/schemas/domains/financial-reports.d.ts +540 -0
- package/dist/schemas/domains/financial-reports.js +206 -0
- package/dist/schemas/domains/financial-reports.js.map +1 -0
- package/dist/schemas/domains/fnd-import.d.ts +912 -0
- package/dist/schemas/domains/fnd-import.js +396 -0
- package/dist/schemas/domains/fnd-import.js.map +1 -0
- package/dist/schemas/domains/fund-accounts.d.ts +1092 -0
- package/dist/schemas/domains/fund-accounts.js +410 -0
- package/dist/schemas/domains/fund-accounts.js.map +1 -0
- package/dist/schemas/domains/fund-balances.d.ts +476 -0
- package/dist/schemas/domains/fund-balances.js +233 -0
- package/dist/schemas/domains/fund-balances.js.map +1 -0
- package/dist/schemas/domains/journals.d.ts +1619 -0
- package/dist/schemas/domains/journals.js +615 -0
- package/dist/schemas/domains/journals.js.map +1 -0
- package/dist/schemas/domains/master-data.d.ts +2010 -0
- package/dist/schemas/domains/master-data.js +799 -0
- package/dist/schemas/domains/master-data.js.map +1 -0
- package/dist/schemas/domains/pnl.d.ts +837 -0
- package/dist/schemas/domains/pnl.js +469 -0
- package/dist/schemas/domains/pnl.js.map +1 -0
- package/dist/schemas/domains/reference-data.d.ts +227 -0
- package/dist/schemas/domains/reference-data.js +144 -0
- package/dist/schemas/domains/reference-data.js.map +1 -0
- package/dist/schemas/domains/transaction-drafts.d.ts +903 -0
- package/dist/schemas/domains/transaction-drafts.js +242 -0
- package/dist/schemas/domains/transaction-drafts.js.map +1 -0
- package/dist/schemas/domains/transactions.d.ts +910 -0
- package/dist/schemas/domains/transactions.js +266 -0
- package/dist/schemas/domains/transactions.js.map +1 -0
- package/dist/schemas/primitives.d.ts +6 -0
- package/dist/schemas/primitives.js +11 -0
- package/dist/schemas/primitives.js.map +1 -0
- package/dist/schemas/public-input.d.ts +3 -0
- package/dist/schemas/public-input.js +524 -0
- package/dist/schemas/public-input.js.map +1 -0
- package/dist/tools/core-edit/idempotent-write.d.ts +23 -0
- package/dist/tools/core-edit/idempotent-write.js +58 -0
- package/dist/tools/core-edit/idempotent-write.js.map +1 -0
- package/dist/tools/core-edit/save-asset.d.ts +5 -0
- package/dist/tools/core-edit/save-asset.js +334 -0
- package/dist/tools/core-edit/save-asset.js.map +1 -0
- package/dist/tools/core-edit/save-business-document-draft.d.ts +2 -0
- package/dist/tools/core-edit/save-business-document-draft.js +128 -0
- package/dist/tools/core-edit/save-business-document-draft.js.map +1 -0
- package/dist/tools/core-edit/save-fund-account.d.ts +2 -0
- package/dist/tools/core-edit/save-fund-account.js +138 -0
- package/dist/tools/core-edit/save-fund-account.js.map +1 -0
- package/dist/tools/core-edit/save-journal-draft.d.ts +2 -0
- package/dist/tools/core-edit/save-journal-draft.js +122 -0
- package/dist/tools/core-edit/save-journal-draft.js.map +1 -0
- package/dist/tools/core-edit/save-master-data.d.ts +2 -0
- package/dist/tools/core-edit/save-master-data.js +153 -0
- package/dist/tools/core-edit/save-master-data.js.map +1 -0
- package/dist/tools/core-edit/save-transaction-draft.d.ts +2 -0
- package/dist/tools/core-edit/save-transaction-draft.js +128 -0
- package/dist/tools/core-edit/save-transaction-draft.js.map +1 -0
- package/dist/tools/core-read/export-business-documents.d.ts +2 -0
- package/dist/tools/core-read/export-business-documents.js +67 -0
- package/dist/tools/core-read/export-business-documents.js.map +1 -0
- package/dist/tools/core-read/export-journals.d.ts +2 -0
- package/dist/tools/core-read/export-journals.js +56 -0
- package/dist/tools/core-read/export-journals.js.map +1 -0
- package/dist/tools/core-read/export-transactions.d.ts +2 -0
- package/dist/tools/core-read/export-transactions.js +67 -0
- package/dist/tools/core-read/export-transactions.js.map +1 -0
- package/dist/tools/core-read/query-accounting-balances.d.ts +2 -0
- package/dist/tools/core-read/query-accounting-balances.js +135 -0
- package/dist/tools/core-read/query-accounting-balances.js.map +1 -0
- package/dist/tools/core-read/query-accounting-context.d.ts +2 -0
- package/dist/tools/core-read/query-accounting-context.js +76 -0
- package/dist/tools/core-read/query-accounting-context.js.map +1 -0
- package/dist/tools/core-read/query-assets.d.ts +2 -0
- package/dist/tools/core-read/query-assets.js +425 -0
- package/dist/tools/core-read/query-assets.js.map +1 -0
- package/dist/tools/core-read/query-business-documents.d.ts +9 -0
- package/dist/tools/core-read/query-business-documents.js +620 -0
- package/dist/tools/core-read/query-business-documents.js.map +1 -0
- package/dist/tools/core-read/query-dashboard.d.ts +2 -0
- package/dist/tools/core-read/query-dashboard.js +144 -0
- package/dist/tools/core-read/query-dashboard.js.map +1 -0
- package/dist/tools/core-read/query-financial-reports.d.ts +2 -0
- package/dist/tools/core-read/query-financial-reports.js +171 -0
- package/dist/tools/core-read/query-financial-reports.js.map +1 -0
- package/dist/tools/core-read/query-fund-accounts.d.ts +2 -0
- package/dist/tools/core-read/query-fund-accounts.js +140 -0
- package/dist/tools/core-read/query-fund-accounts.js.map +1 -0
- package/dist/tools/core-read/query-fund-balances.d.ts +2 -0
- package/dist/tools/core-read/query-fund-balances.js +150 -0
- package/dist/tools/core-read/query-fund-balances.js.map +1 -0
- package/dist/tools/core-read/query-journals.d.ts +2 -0
- package/dist/tools/core-read/query-journals.js +277 -0
- package/dist/tools/core-read/query-journals.js.map +1 -0
- package/dist/tools/core-read/query-master-data.d.ts +2 -0
- package/dist/tools/core-read/query-master-data.js +363 -0
- package/dist/tools/core-read/query-master-data.js.map +1 -0
- package/dist/tools/core-read/query-pnl.d.ts +2 -0
- package/dist/tools/core-read/query-pnl.js +244 -0
- package/dist/tools/core-read/query-pnl.js.map +1 -0
- package/dist/tools/core-read/query-reference-data.d.ts +2 -0
- package/dist/tools/core-read/query-reference-data.js +293 -0
- package/dist/tools/core-read/query-reference-data.js.map +1 -0
- package/dist/tools/core-read/query-transactions.d.ts +2 -0
- package/dist/tools/core-read/query-transactions.js +58 -0
- package/dist/tools/core-read/query-transactions.js.map +1 -0
- package/dist/tools/create-tools.d.ts +3 -0
- package/dist/tools/create-tools.js +88 -0
- package/dist/tools/create-tools.js.map +1 -0
- package/dist/tools/extended/asset-operation-tools.d.ts +9 -0
- package/dist/tools/extended/asset-operation-tools.js +419 -0
- package/dist/tools/extended/asset-operation-tools.js.map +1 -0
- package/dist/tools/extended/automation-tools.d.ts +7 -0
- package/dist/tools/extended/automation-tools.js +333 -0
- package/dist/tools/extended/automation-tools.js.map +1 -0
- package/dist/tools/extended/configuration-tools.d.ts +14 -0
- package/dist/tools/extended/configuration-tools.js +871 -0
- package/dist/tools/extended/configuration-tools.js.map +1 -0
- package/dist/tools/extended/period-end-tools.d.ts +11 -0
- package/dist/tools/extended/period-end-tools.js +480 -0
- package/dist/tools/extended/period-end-tools.js.map +1 -0
- package/dist/tools/extended/query-output.d.ts +2589 -0
- package/dist/tools/extended/query-output.js +610 -0
- package/dist/tools/extended/query-output.js.map +1 -0
- package/dist/tools/extended/tool-support.d.ts +56 -0
- package/dist/tools/extended/tool-support.js +198 -0
- package/dist/tools/extended/tool-support.js.map +1 -0
- package/dist/tools/extended/workflow-tools.d.ts +10 -0
- package/dist/tools/extended/workflow-tools.js +678 -0
- package/dist/tools/extended/workflow-tools.js.map +1 -0
- package/dist/tools/fnd-import/execute-import.d.ts +2 -0
- package/dist/tools/fnd-import/execute-import.js +201 -0
- package/dist/tools/fnd-import/execute-import.js.map +1 -0
- package/dist/tools/fnd-import/get-import-template.d.ts +2 -0
- package/dist/tools/fnd-import/get-import-template.js +66 -0
- package/dist/tools/fnd-import/get-import-template.js.map +1 -0
- package/dist/tools/fnd-import/get-job-status.d.ts +8 -0
- package/dist/tools/fnd-import/get-job-status.js +201 -0
- package/dist/tools/fnd-import/get-job-status.js.map +1 -0
- package/dist/tools/fnd-import/prepare-import.d.ts +31 -0
- package/dist/tools/fnd-import/prepare-import.js +214 -0
- package/dist/tools/fnd-import/prepare-import.js.map +1 -0
- package/dist/tools/fnd-import/public-import-result.d.ts +18 -0
- package/dist/tools/fnd-import/public-import-result.js +35 -0
- package/dist/tools/fnd-import/public-import-result.js.map +1 -0
- package/dist/tools/tool-definition.d.ts +45 -0
- package/dist/tools/tool-definition.js +11 -0
- package/dist/tools/tool-definition.js.map +1 -0
- package/dist/tools/tool-handler.d.ts +27 -0
- package/dist/tools/tool-handler.js +196 -0
- package/dist/tools/tool-handler.js.map +1 -0
- package/dist/tools/transaction-item.d.ts +225 -0
- package/dist/tools/transaction-item.js +109 -0
- package/dist/tools/transaction-item.js.map +1 -0
- package/dist/transport/draining-transport.d.ts +14 -0
- package/dist/transport/draining-transport.js +36 -0
- package/dist/transport/draining-transport.js.map +1 -0
- package/dist/transport/stdio.d.ts +2 -0
- package/dist/transport/stdio.js +5 -0
- package/dist/transport/stdio.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.js +3 -0
- package/dist/version.js.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1,524 @@
|
|
|
1
|
+
import { z } from 'zod/v4';
|
|
2
|
+
function withoutDefault(schema) {
|
|
3
|
+
let current = schema;
|
|
4
|
+
while (current.type === 'default' && current.unwrap !== undefined) {
|
|
5
|
+
current = current.unwrap();
|
|
6
|
+
}
|
|
7
|
+
return current;
|
|
8
|
+
}
|
|
9
|
+
function withoutSchemaDialect(schema) {
|
|
10
|
+
const value = { ...schema };
|
|
11
|
+
Reflect.deleteProperty(value, '$schema');
|
|
12
|
+
return value;
|
|
13
|
+
}
|
|
14
|
+
function asJsonSchema(value) {
|
|
15
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value)
|
|
16
|
+
? value
|
|
17
|
+
: undefined;
|
|
18
|
+
}
|
|
19
|
+
function schemaType(value) {
|
|
20
|
+
return typeof value.type === 'string' &&
|
|
21
|
+
[
|
|
22
|
+
'array',
|
|
23
|
+
'boolean',
|
|
24
|
+
'integer',
|
|
25
|
+
'null',
|
|
26
|
+
'number',
|
|
27
|
+
'object',
|
|
28
|
+
'string',
|
|
29
|
+
].includes(value.type)
|
|
30
|
+
? value.type
|
|
31
|
+
: undefined;
|
|
32
|
+
}
|
|
33
|
+
function schemaBranches(value) {
|
|
34
|
+
const raw = Array.isArray(value.oneOf)
|
|
35
|
+
? value.oneOf
|
|
36
|
+
: Array.isArray(value.anyOf)
|
|
37
|
+
? value.anyOf
|
|
38
|
+
: [];
|
|
39
|
+
return raw
|
|
40
|
+
.map(asJsonSchema)
|
|
41
|
+
.filter((branch) => branch !== undefined);
|
|
42
|
+
}
|
|
43
|
+
function mergeSchemaProperties(values) {
|
|
44
|
+
const properties = new Map();
|
|
45
|
+
for (const value of values) {
|
|
46
|
+
const objectProperties = asJsonSchema(value.properties);
|
|
47
|
+
if (objectProperties === undefined)
|
|
48
|
+
continue;
|
|
49
|
+
for (const [name, property] of Object.entries(objectProperties)) {
|
|
50
|
+
const parsed = asJsonSchema(property);
|
|
51
|
+
if (parsed === undefined)
|
|
52
|
+
continue;
|
|
53
|
+
const current = properties.get(name) ?? [];
|
|
54
|
+
current.push(parsed);
|
|
55
|
+
properties.set(name, current);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return properties;
|
|
59
|
+
}
|
|
60
|
+
function constValue(value) {
|
|
61
|
+
if (typeof value.const === 'string' ||
|
|
62
|
+
typeof value.const === 'number' ||
|
|
63
|
+
typeof value.const === 'boolean') {
|
|
64
|
+
return value.const;
|
|
65
|
+
}
|
|
66
|
+
if (Array.isArray(value.enum) && value.enum.length === 1) {
|
|
67
|
+
const only = value.enum[0];
|
|
68
|
+
if (typeof only === 'string' ||
|
|
69
|
+
typeof only === 'number' ||
|
|
70
|
+
typeof only === 'boolean') {
|
|
71
|
+
return only;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
function discriminatorNames(value) {
|
|
77
|
+
const names = new Set();
|
|
78
|
+
const properties = asJsonSchema(value.properties);
|
|
79
|
+
const required = new Set(Array.isArray(value.required)
|
|
80
|
+
? value.required.filter((name) => typeof name === 'string')
|
|
81
|
+
: []);
|
|
82
|
+
for (const [name, property] of Object.entries(properties ?? {})) {
|
|
83
|
+
const schema = asJsonSchema(property) ?? {};
|
|
84
|
+
if (constValue(schema) !== undefined ||
|
|
85
|
+
(required.has(name) && Array.isArray(schema.enum))) {
|
|
86
|
+
names.add(name);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
for (const branch of schemaBranches(value)) {
|
|
90
|
+
for (const name of discriminatorNames(branch))
|
|
91
|
+
names.add(name);
|
|
92
|
+
}
|
|
93
|
+
if (Array.isArray(value.allOf)) {
|
|
94
|
+
for (const branch of value.allOf) {
|
|
95
|
+
const object = asJsonSchema(branch);
|
|
96
|
+
const condition = asJsonSchema(object?.if);
|
|
97
|
+
const conditionProperties = asJsonSchema(condition?.properties);
|
|
98
|
+
for (const [name, property] of Object.entries(conditionProperties ?? {})) {
|
|
99
|
+
if (constValue(asJsonSchema(property) ?? {}) !== undefined) {
|
|
100
|
+
names.add(name);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return names;
|
|
106
|
+
}
|
|
107
|
+
function sdkSchemaFromJson(value) {
|
|
108
|
+
const branches = schemaBranches(value);
|
|
109
|
+
if (branches.length > 0) {
|
|
110
|
+
const uniqueBranches = uniqueSchemas(branches);
|
|
111
|
+
const openRecordBranches = uniqueBranches.filter((branch) => {
|
|
112
|
+
const properties = asJsonSchema(branch.properties);
|
|
113
|
+
return (schemaType(branch) === 'object' &&
|
|
114
|
+
properties === undefined &&
|
|
115
|
+
branch.additionalProperties !== undefined &&
|
|
116
|
+
branch.additionalProperties !== false);
|
|
117
|
+
});
|
|
118
|
+
if (openRecordBranches.length === uniqueBranches.length) {
|
|
119
|
+
return openRecordBranches.length === 1
|
|
120
|
+
? sdkSchemaFromJson(openRecordBranches[0])
|
|
121
|
+
: z.union(openRecordBranches.map((branch) => sdkSchemaFromJson(branch)));
|
|
122
|
+
}
|
|
123
|
+
const objectBranches = branches.filter((branch) => schemaType(branch) === 'object' || branch.properties !== undefined);
|
|
124
|
+
if (objectBranches.length === branches.length) {
|
|
125
|
+
return sdkObjectSchema(value, objectBranches);
|
|
126
|
+
}
|
|
127
|
+
const firstType = schemaType(branches[0]);
|
|
128
|
+
if (firstType !== undefined &&
|
|
129
|
+
branches.every((branch) => schemaType(branch) === firstType)) {
|
|
130
|
+
if (firstType === 'array') {
|
|
131
|
+
const itemSchemas = uniqueBranches
|
|
132
|
+
.map((branch) => asJsonSchema(branch.items))
|
|
133
|
+
.filter((items) => items !== undefined);
|
|
134
|
+
if (itemSchemas.length === 0)
|
|
135
|
+
return z.array(z.unknown());
|
|
136
|
+
const itemSchema = itemSchemas.length === 1
|
|
137
|
+
? itemSchemas[0]
|
|
138
|
+
: { anyOf: itemSchemas };
|
|
139
|
+
return z.array(sdkSchemaFromJson(itemSchema));
|
|
140
|
+
}
|
|
141
|
+
return sdkSchemaFromJson({ type: firstType });
|
|
142
|
+
}
|
|
143
|
+
const relaxedBranches = uniqueBranches.map((branch) => sdkSchemaFromJson(branch));
|
|
144
|
+
return relaxedBranches.length === 1
|
|
145
|
+
? relaxedBranches[0]
|
|
146
|
+
: z.union([
|
|
147
|
+
relaxedBranches[0],
|
|
148
|
+
relaxedBranches[1],
|
|
149
|
+
...relaxedBranches.slice(2),
|
|
150
|
+
]);
|
|
151
|
+
}
|
|
152
|
+
const type = schemaType(value);
|
|
153
|
+
if (type === 'object' || value.properties !== undefined) {
|
|
154
|
+
const properties = asJsonSchema(value.properties);
|
|
155
|
+
if (properties === undefined && value.additionalProperties !== undefined) {
|
|
156
|
+
if (value.additionalProperties === false)
|
|
157
|
+
return z.object({}).strict();
|
|
158
|
+
const valueSchema = asJsonSchema(value.additionalProperties);
|
|
159
|
+
return z.record(z.string(), valueSchema === undefined
|
|
160
|
+
? z.unknown()
|
|
161
|
+
: sdkSchemaFromJson(valueSchema));
|
|
162
|
+
}
|
|
163
|
+
return sdkObjectSchema(value, [value]);
|
|
164
|
+
}
|
|
165
|
+
if (type === 'array') {
|
|
166
|
+
const items = asJsonSchema(value.items);
|
|
167
|
+
return z.array(items === undefined ? z.unknown() : sdkSchemaFromJson(items));
|
|
168
|
+
}
|
|
169
|
+
if (type === 'boolean')
|
|
170
|
+
return z.boolean();
|
|
171
|
+
if (type === 'integer' || type === 'number')
|
|
172
|
+
return z.number();
|
|
173
|
+
if (type === 'null')
|
|
174
|
+
return z.null();
|
|
175
|
+
if (type === 'string')
|
|
176
|
+
return z.string();
|
|
177
|
+
return z.unknown();
|
|
178
|
+
}
|
|
179
|
+
function sdkObjectSchema(value, values) {
|
|
180
|
+
const propertyValues = mergeSchemaProperties([value, ...values]);
|
|
181
|
+
const requiredNames = discriminatorNames(value);
|
|
182
|
+
const shape = {};
|
|
183
|
+
for (const [name, properties] of propertyValues) {
|
|
184
|
+
const combined = properties.length === 1
|
|
185
|
+
? properties[0]
|
|
186
|
+
: {
|
|
187
|
+
anyOf: properties,
|
|
188
|
+
};
|
|
189
|
+
const child = sdkSchemaFromJson(combined);
|
|
190
|
+
shape[name] = requiredNames.has(name) ? child : child.optional();
|
|
191
|
+
}
|
|
192
|
+
return z.object(shape).strict();
|
|
193
|
+
}
|
|
194
|
+
function uniqueSchemas(values) {
|
|
195
|
+
const seen = new Set();
|
|
196
|
+
return values.filter((value) => {
|
|
197
|
+
const key = JSON.stringify(value);
|
|
198
|
+
if (seen.has(key))
|
|
199
|
+
return false;
|
|
200
|
+
seen.add(key);
|
|
201
|
+
return true;
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
function constProperties(branch) {
|
|
205
|
+
const properties = asJsonSchema(branch.properties);
|
|
206
|
+
if (properties === undefined)
|
|
207
|
+
return [];
|
|
208
|
+
return Object.entries(properties).flatMap(([name, value]) => {
|
|
209
|
+
const schema = asJsonSchema(value);
|
|
210
|
+
const constant = schema?.const;
|
|
211
|
+
return typeof constant === 'string' ||
|
|
212
|
+
typeof constant === 'number' ||
|
|
213
|
+
typeof constant === 'boolean'
|
|
214
|
+
? [[name, constant]]
|
|
215
|
+
: [];
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
function uniqueBranchConstants(branch, branches) {
|
|
219
|
+
const constants = constProperties(branch);
|
|
220
|
+
if (constants.length === 0)
|
|
221
|
+
return undefined;
|
|
222
|
+
const matchingBranches = branches.filter((candidate) => {
|
|
223
|
+
const candidateConstants = new Map(constProperties(candidate));
|
|
224
|
+
return constants.every(([name, value]) => candidateConstants.get(name) === value);
|
|
225
|
+
});
|
|
226
|
+
if (matchingBranches.length !== 1)
|
|
227
|
+
return undefined;
|
|
228
|
+
return constants;
|
|
229
|
+
}
|
|
230
|
+
function formatNames(names, conjunction = 'and') {
|
|
231
|
+
if (names.length < 2)
|
|
232
|
+
return names[0] ?? '';
|
|
233
|
+
if (names.length === 2)
|
|
234
|
+
return `${names[0]} ${conjunction} ${names[1]}`;
|
|
235
|
+
return `${names.slice(0, -1).join(', ')}, ${conjunction} ${names.at(-1)}`;
|
|
236
|
+
}
|
|
237
|
+
function branchConditionText(constants) {
|
|
238
|
+
return constants
|
|
239
|
+
.map(([name, value]) => `${name}=${String(value)}`)
|
|
240
|
+
.join(' and ');
|
|
241
|
+
}
|
|
242
|
+
function appendDescription(schema, addition) {
|
|
243
|
+
const current = typeof schema.description === 'string' ? schema.description.trim() : '';
|
|
244
|
+
return {
|
|
245
|
+
...schema,
|
|
246
|
+
description: current.length === 0 ? addition : `${current} ${addition}`,
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
function branchDescriptionAdditions(branches, allPropertyNames, commonRequiredNames) {
|
|
250
|
+
const additions = new Map();
|
|
251
|
+
for (const branch of branches) {
|
|
252
|
+
const constants = uniqueBranchConstants(branch, branches);
|
|
253
|
+
if (constants === undefined)
|
|
254
|
+
continue;
|
|
255
|
+
const constantNames = new Set(constants.map(([name]) => name));
|
|
256
|
+
const properties = asJsonSchema(branch.properties);
|
|
257
|
+
const branchPropertyNames = new Set(Object.keys(properties ?? {}));
|
|
258
|
+
const required = Array.isArray(branch.required)
|
|
259
|
+
? branch.required.filter((name) => typeof name === 'string' &&
|
|
260
|
+
!constantNames.has(name) &&
|
|
261
|
+
!commonRequiredNames.has(name))
|
|
262
|
+
: [];
|
|
263
|
+
const prohibited = [...allPropertyNames].filter((name) => !branchPropertyNames.has(name));
|
|
264
|
+
if (required.length === 0 && prohibited.length === 0)
|
|
265
|
+
continue;
|
|
266
|
+
const instructions = [
|
|
267
|
+
...(required.length === 0 ? [] : [`provide ${formatNames(required)}`]),
|
|
268
|
+
...(prohibited.length === 0
|
|
269
|
+
? []
|
|
270
|
+
: [`do not provide ${formatNames(prohibited, 'or')}`]),
|
|
271
|
+
];
|
|
272
|
+
const description = `For ${branchConditionText(constants)}, ${instructions.join('; ')}.`;
|
|
273
|
+
for (const [name] of constants) {
|
|
274
|
+
const fieldAdditions = additions.get(name) ?? [];
|
|
275
|
+
fieldAdditions.push(description);
|
|
276
|
+
additions.set(name, fieldAdditions);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
return new Map([...additions].map(([name, values]) => [name, values.join(' ')]));
|
|
280
|
+
}
|
|
281
|
+
function mergeObjectBranches(branches) {
|
|
282
|
+
const propertyNames = new Set();
|
|
283
|
+
const requiredSets = branches.map((branch) => new Set(Array.isArray(branch.required)
|
|
284
|
+
? branch.required.filter((value) => typeof value === 'string')
|
|
285
|
+
: []));
|
|
286
|
+
for (const branch of branches) {
|
|
287
|
+
const properties = asJsonSchema(branch.properties);
|
|
288
|
+
if (properties === undefined)
|
|
289
|
+
continue;
|
|
290
|
+
for (const name of Object.keys(properties))
|
|
291
|
+
propertyNames.add(name);
|
|
292
|
+
}
|
|
293
|
+
const properties = {};
|
|
294
|
+
const required = [...propertyNames].filter((name) => requiredSets.every((set) => set.has(name)));
|
|
295
|
+
const descriptionAdditions = branchDescriptionAdditions(branches, propertyNames, new Set(required));
|
|
296
|
+
for (const name of propertyNames) {
|
|
297
|
+
const variants = uniqueSchemas(branches.flatMap((branch) => {
|
|
298
|
+
const branchProperties = asJsonSchema(branch.properties);
|
|
299
|
+
const property = asJsonSchema(branchProperties?.[name]);
|
|
300
|
+
return property === undefined ? [] : [property];
|
|
301
|
+
}));
|
|
302
|
+
const property = variants.length === 1
|
|
303
|
+
? variants[0]
|
|
304
|
+
: hostCompatibleJsonSchema({ anyOf: variants });
|
|
305
|
+
const descriptionAddition = descriptionAdditions.get(name);
|
|
306
|
+
properties[name] =
|
|
307
|
+
property === undefined || descriptionAddition === undefined
|
|
308
|
+
? property
|
|
309
|
+
: appendDescription(property, descriptionAddition);
|
|
310
|
+
}
|
|
311
|
+
return {
|
|
312
|
+
type: 'object',
|
|
313
|
+
properties,
|
|
314
|
+
additionalProperties: false,
|
|
315
|
+
...(required.length === 0 ? {} : { required }),
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
function mergeObjectComposition(values) {
|
|
319
|
+
const [base = {}] = values;
|
|
320
|
+
const propertyValues = mergeSchemaProperties(values);
|
|
321
|
+
const properties = Object.fromEntries([...propertyValues].map(([name, variants]) => {
|
|
322
|
+
const uniqueVariants = uniqueSchemas(variants);
|
|
323
|
+
return [
|
|
324
|
+
name,
|
|
325
|
+
uniqueVariants.length === 1
|
|
326
|
+
? uniqueVariants[0]
|
|
327
|
+
: hostCompatibleJsonSchema({ anyOf: uniqueVariants }),
|
|
328
|
+
];
|
|
329
|
+
}));
|
|
330
|
+
const required = [
|
|
331
|
+
...new Set(values.flatMap((value) => Array.isArray(value.required)
|
|
332
|
+
? value.required.filter((name) => typeof name === 'string')
|
|
333
|
+
: [])),
|
|
334
|
+
];
|
|
335
|
+
const result = {
|
|
336
|
+
...base,
|
|
337
|
+
type: 'object',
|
|
338
|
+
properties,
|
|
339
|
+
additionalProperties: false,
|
|
340
|
+
...(required.length === 0 ? {} : { required }),
|
|
341
|
+
};
|
|
342
|
+
Reflect.deleteProperty(result, 'allOf');
|
|
343
|
+
Reflect.deleteProperty(result, 'if');
|
|
344
|
+
Reflect.deleteProperty(result, 'then');
|
|
345
|
+
Reflect.deleteProperty(result, 'not');
|
|
346
|
+
return result;
|
|
347
|
+
}
|
|
348
|
+
function stringEnum(branches) {
|
|
349
|
+
const values = [];
|
|
350
|
+
for (const branch of branches) {
|
|
351
|
+
if (typeof branch.const === 'string') {
|
|
352
|
+
values.push(branch.const);
|
|
353
|
+
continue;
|
|
354
|
+
}
|
|
355
|
+
if (branch.type !== 'string' ||
|
|
356
|
+
!Array.isArray(branch.enum) ||
|
|
357
|
+
!branch.enum.every((value) => typeof value === 'string')) {
|
|
358
|
+
return undefined;
|
|
359
|
+
}
|
|
360
|
+
values.push(...branch.enum);
|
|
361
|
+
}
|
|
362
|
+
return values.length === 0
|
|
363
|
+
? undefined
|
|
364
|
+
: { type: 'string', enum: [...new Set(values)] };
|
|
365
|
+
}
|
|
366
|
+
function commonArrayConstraints(branches) {
|
|
367
|
+
const keys = ['minItems', 'maxItems', 'uniqueItems'];
|
|
368
|
+
return Object.fromEntries(keys.flatMap((key) => {
|
|
369
|
+
const values = branches.map((branch) => branch[key]);
|
|
370
|
+
return values.every((value) => value === values[0]) &&
|
|
371
|
+
values[0] !== undefined
|
|
372
|
+
? [[key, values[0]]]
|
|
373
|
+
: [];
|
|
374
|
+
}));
|
|
375
|
+
}
|
|
376
|
+
function hostCompatibleJsonSchema(schema) {
|
|
377
|
+
if (Array.isArray(schema.allOf)) {
|
|
378
|
+
const base = { ...schema };
|
|
379
|
+
Reflect.deleteProperty(base, 'allOf');
|
|
380
|
+
const normalizedBase = hostCompatibleJsonSchema(base);
|
|
381
|
+
const compositionBranches = schema.allOf
|
|
382
|
+
.map(asJsonSchema)
|
|
383
|
+
.filter((branch) => branch !== undefined)
|
|
384
|
+
.filter((branch) => branch.if === undefined &&
|
|
385
|
+
branch.then === undefined &&
|
|
386
|
+
branch.not === undefined)
|
|
387
|
+
.map(hostCompatibleJsonSchema);
|
|
388
|
+
if (compositionBranches.every((branch) => schemaType(branch) === 'object' || branch.properties !== undefined) &&
|
|
389
|
+
(schemaType(normalizedBase) === 'object' ||
|
|
390
|
+
normalizedBase.properties !== undefined ||
|
|
391
|
+
compositionBranches.length > 0)) {
|
|
392
|
+
return mergeObjectComposition([normalizedBase, ...compositionBranches]);
|
|
393
|
+
}
|
|
394
|
+
return normalizedBase;
|
|
395
|
+
}
|
|
396
|
+
const rawBranches = Array.isArray(schema.oneOf)
|
|
397
|
+
? schema.oneOf
|
|
398
|
+
: Array.isArray(schema.anyOf)
|
|
399
|
+
? schema.anyOf
|
|
400
|
+
: undefined;
|
|
401
|
+
if (rawBranches !== undefined) {
|
|
402
|
+
const branches = rawBranches
|
|
403
|
+
.map(asJsonSchema)
|
|
404
|
+
.filter((branch) => branch !== undefined)
|
|
405
|
+
.map(hostCompatibleJsonSchema);
|
|
406
|
+
if (branches.length === rawBranches.length &&
|
|
407
|
+
branches.every((branch) => branch.type === 'object' || branch.properties !== undefined)) {
|
|
408
|
+
return mergeObjectBranches(branches);
|
|
409
|
+
}
|
|
410
|
+
const enumSchema = stringEnum(branches);
|
|
411
|
+
if (enumSchema !== undefined)
|
|
412
|
+
return enumSchema;
|
|
413
|
+
if (branches.every((branch) => schemaType(branch) === 'array')) {
|
|
414
|
+
const itemSchemas = branches
|
|
415
|
+
.map((branch) => asJsonSchema(branch.items))
|
|
416
|
+
.filter((items) => items !== undefined);
|
|
417
|
+
if (itemSchemas.length === branches.length) {
|
|
418
|
+
const items = itemSchemas.length === 1
|
|
419
|
+
? hostCompatibleJsonSchema(itemSchemas[0])
|
|
420
|
+
: hostCompatibleJsonSchema({ anyOf: itemSchemas });
|
|
421
|
+
return {
|
|
422
|
+
type: 'array',
|
|
423
|
+
...commonArrayConstraints(branches),
|
|
424
|
+
items,
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
const result = { ...schema };
|
|
430
|
+
const objectSchema = schemaType(schema) === 'object' || schema.properties !== undefined;
|
|
431
|
+
if (objectSchema) {
|
|
432
|
+
Reflect.deleteProperty(result, 'allOf');
|
|
433
|
+
Reflect.deleteProperty(result, 'if');
|
|
434
|
+
Reflect.deleteProperty(result, 'then');
|
|
435
|
+
Reflect.deleteProperty(result, 'not');
|
|
436
|
+
}
|
|
437
|
+
if (Array.isArray(schema.oneOf)) {
|
|
438
|
+
result.oneOf = schema.oneOf.map((branch) => {
|
|
439
|
+
const parsed = asJsonSchema(branch);
|
|
440
|
+
return parsed === undefined ? branch : hostCompatibleJsonSchema(parsed);
|
|
441
|
+
});
|
|
442
|
+
}
|
|
443
|
+
if (Array.isArray(schema.anyOf)) {
|
|
444
|
+
result.anyOf = schema.anyOf.map((branch) => {
|
|
445
|
+
const parsed = asJsonSchema(branch);
|
|
446
|
+
return parsed === undefined ? branch : hostCompatibleJsonSchema(parsed);
|
|
447
|
+
});
|
|
448
|
+
}
|
|
449
|
+
const properties = asJsonSchema(schema.properties);
|
|
450
|
+
if (properties !== undefined) {
|
|
451
|
+
result.properties = Object.fromEntries(Object.entries(properties).map(([name, value]) => {
|
|
452
|
+
const child = asJsonSchema(value);
|
|
453
|
+
return [
|
|
454
|
+
name,
|
|
455
|
+
child === undefined ? value : hostCompatibleJsonSchema(child),
|
|
456
|
+
];
|
|
457
|
+
}));
|
|
458
|
+
}
|
|
459
|
+
if (schema.items !== undefined) {
|
|
460
|
+
const items = asJsonSchema(schema.items);
|
|
461
|
+
if (items !== undefined)
|
|
462
|
+
result.items = hostCompatibleJsonSchema(items);
|
|
463
|
+
}
|
|
464
|
+
return result;
|
|
465
|
+
}
|
|
466
|
+
export function createPublicInputSchema(unionSchema) {
|
|
467
|
+
const options = unionSchema.options;
|
|
468
|
+
if (options === undefined) {
|
|
469
|
+
const shape = unionSchema.shape;
|
|
470
|
+
if (shape === undefined) {
|
|
471
|
+
throw new Error('Public input schema requires an object schema');
|
|
472
|
+
}
|
|
473
|
+
return unionSchema;
|
|
474
|
+
}
|
|
475
|
+
if (options.length < 2) {
|
|
476
|
+
throw new Error('Public input schema requires an object union');
|
|
477
|
+
}
|
|
478
|
+
const shapes = options.map((option) => {
|
|
479
|
+
const shape = option.shape;
|
|
480
|
+
if (shape === undefined) {
|
|
481
|
+
throw new Error('Public input schema union contains a non-object branch');
|
|
482
|
+
}
|
|
483
|
+
return shape;
|
|
484
|
+
});
|
|
485
|
+
const fieldNames = new Set(shapes.flatMap((shape) => Object.keys(shape)));
|
|
486
|
+
const publicShape = {};
|
|
487
|
+
for (const fieldName of fieldNames) {
|
|
488
|
+
const originalFields = shapes
|
|
489
|
+
.map((shape) => shape[fieldName])
|
|
490
|
+
.filter((field) => field !== undefined);
|
|
491
|
+
const fields = originalFields.map(withoutDefault);
|
|
492
|
+
const uniqueFields = fields.filter((field, index) => fields.indexOf(field) === index);
|
|
493
|
+
const combined = uniqueFields.length === 1
|
|
494
|
+
? uniqueFields[0]
|
|
495
|
+
: z.union([
|
|
496
|
+
uniqueFields[0],
|
|
497
|
+
uniqueFields[1],
|
|
498
|
+
...uniqueFields.slice(2),
|
|
499
|
+
]);
|
|
500
|
+
const requiredInEveryBranch = shapes.every((shape) => {
|
|
501
|
+
const field = shape[fieldName];
|
|
502
|
+
return field !== undefined && !field.safeParse(undefined).success;
|
|
503
|
+
});
|
|
504
|
+
publicShape[fieldName] = requiredInEveryBranch
|
|
505
|
+
? combined
|
|
506
|
+
: combined.optional();
|
|
507
|
+
}
|
|
508
|
+
const publicSchema = z.object(publicShape).strict();
|
|
509
|
+
const unionJsonSchema = withoutSchemaDialect(unionSchema.toJSONSchema({ target: 'draft-7', io: 'input' }));
|
|
510
|
+
// Some MCP Hosts collapse object unions to `unknown`. Publish a stable object
|
|
511
|
+
// projection while the handler still validates the original strict union.
|
|
512
|
+
const serializableSchema = publicSchema;
|
|
513
|
+
serializableSchema._zod.toJSONSchema = () => hostCompatibleJsonSchema(unionJsonSchema);
|
|
514
|
+
return publicSchema;
|
|
515
|
+
}
|
|
516
|
+
export function createSdkInputSchema(runtimeSchema, publishedSchema) {
|
|
517
|
+
const source = publishedSchema ?? runtimeSchema;
|
|
518
|
+
const publishedJsonSchema = hostCompatibleJsonSchema(withoutSchemaDialect(source.toJSONSchema({ target: 'draft-7', io: 'input' })));
|
|
519
|
+
const sdkSchema = sdkObjectSchema(publishedJsonSchema, [publishedJsonSchema]);
|
|
520
|
+
const serializableSchema = sdkSchema;
|
|
521
|
+
serializableSchema._zod.toJSONSchema = () => structuredClone(publishedJsonSchema);
|
|
522
|
+
return sdkSchema;
|
|
523
|
+
}
|
|
524
|
+
//# sourceMappingURL=public-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public-input.js","sourceRoot":"","sources":["../../src/schemas/public-input.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { z } from 'zod/v4';
|
|
2
|
+
import type { ToolContext } from '../tool-definition.js';
|
|
3
|
+
interface IdempotentWriteOptions<TOutput> {
|
|
4
|
+
readonly toolName: string;
|
|
5
|
+
readonly idempotencyKey: string;
|
|
6
|
+
readonly orgId: string;
|
|
7
|
+
readonly fingerprintValue: unknown;
|
|
8
|
+
readonly capabilityId: string;
|
|
9
|
+
readonly capabilityInput: unknown;
|
|
10
|
+
readonly context: ToolContext;
|
|
11
|
+
readonly outputSchema: z.ZodType<TOutput>;
|
|
12
|
+
readonly recovery?: {
|
|
13
|
+
readonly tool: string;
|
|
14
|
+
readonly input: Readonly<Record<string, unknown>>;
|
|
15
|
+
};
|
|
16
|
+
readonly target?: {
|
|
17
|
+
readonly field: string;
|
|
18
|
+
readonly id: string;
|
|
19
|
+
};
|
|
20
|
+
buildOutput(result: unknown): TOutput;
|
|
21
|
+
}
|
|
22
|
+
export declare function executeIdempotentWrite<TOutput>(options: IdempotentWriteOptions<TOutput>): Promise<TOutput>;
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { FinTaxError } from '../../errors/fintax-error.js';
|
|
2
|
+
import { normalizeError } from '../../errors/normalize-error.js';
|
|
3
|
+
import { hashOperationValue } from '../../policies/operation-plan.js';
|
|
4
|
+
export async function executeIdempotentWrite(options) {
|
|
5
|
+
const identity = await options.context.getIdentity(options.orgId);
|
|
6
|
+
const binding = {
|
|
7
|
+
tool: options.toolName,
|
|
8
|
+
key: options.idempotencyKey,
|
|
9
|
+
fingerprint: hashOperationValue(options.fingerprintValue),
|
|
10
|
+
userId: identity.userId,
|
|
11
|
+
tenantId: identity.tenantId,
|
|
12
|
+
orgId: options.orgId,
|
|
13
|
+
...(options.recovery === undefined ? {} : { recovery: options.recovery }),
|
|
14
|
+
};
|
|
15
|
+
const claim = await options.context.idempotency.begin(binding);
|
|
16
|
+
if (claim.kind === 'replayed') {
|
|
17
|
+
options.context.audit.captureIdempotencyOutcome('replayed');
|
|
18
|
+
const previous = options.outputSchema.parse(claim.result);
|
|
19
|
+
if (previous !== null &&
|
|
20
|
+
typeof previous === 'object' &&
|
|
21
|
+
'trace_id' in previous) {
|
|
22
|
+
return { ...previous, trace_id: options.context.traceId };
|
|
23
|
+
}
|
|
24
|
+
return previous;
|
|
25
|
+
}
|
|
26
|
+
options.context.audit.captureIdempotencyOutcome('started');
|
|
27
|
+
if (options.target !== undefined) {
|
|
28
|
+
options.context.audit.captureTargetObjectId(options.target.field, options.target.id);
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
const result = await options.context.callCapability(options.capabilityId, options.capabilityInput, options.orgId);
|
|
32
|
+
const output = options.outputSchema.parse(options.buildOutput(result));
|
|
33
|
+
await options.context.idempotency.complete(binding, output);
|
|
34
|
+
return output;
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
const normalized = normalizeError(error);
|
|
38
|
+
const failure = normalized.code === 'TIMEOUT' ||
|
|
39
|
+
normalized.code === 'UPSTREAM_UNAVAILABLE'
|
|
40
|
+
? new FinTaxError(normalized.code, options.recovery === undefined
|
|
41
|
+
? 'The write result is unknown; verify the business state manually and do not retry blindly'
|
|
42
|
+
: 'The write result is unknown; follow the recovery guidance to query the state before retrying', {
|
|
43
|
+
retryable: false,
|
|
44
|
+
...(normalized.status === undefined
|
|
45
|
+
? {}
|
|
46
|
+
: { status: normalized.status }),
|
|
47
|
+
...(options.recovery === undefined
|
|
48
|
+
? {}
|
|
49
|
+
: { recovery: options.recovery }),
|
|
50
|
+
cause: normalized,
|
|
51
|
+
})
|
|
52
|
+
: normalized;
|
|
53
|
+
await options.context.idempotency.fail(binding, failure);
|
|
54
|
+
options.context.audit.captureIdempotencyOutcome('failed');
|
|
55
|
+
throw failure;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=idempotent-write.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idempotent-write.js","sourceRoot":"","sources":["../../../src/tools/core-edit/idempotent-write.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ToolDefinition } from '../tool-definition.js';
|
|
2
|
+
export declare const saveAssetCardTool: ToolDefinition;
|
|
3
|
+
export declare const saveAssetFinanceTool: ToolDefinition;
|
|
4
|
+
export declare const saveAssetSourceLinesTool: ToolDefinition;
|
|
5
|
+
export declare const replaceAssetAllocationLinesTool: ToolDefinition;
|