fix: keep attachment contract in client bundle
CI / Client installer (macos-latest) (push) Canceled after 0s
CI / Client installer (ubuntu-latest) (push) Canceled after 0s
CI / Client installer (windows-latest) (push) Canceled after 0s
CI / test (22) (push) Canceled after 0s
CI / test (24) (push) Canceled after 0s
CI / release-smoke (push) Canceled after 0s

This commit is contained in:
2026-09-01 13:06:10 +00:00
parent b7313ab74d
commit 10523f34ec
6 changed files with 22 additions and 16 deletions
+3
View File
@@ -1 +1,4 @@
export const APPROVAL_BATCH_LIMIT = 20;
export const XFT_ATTACHMENT_MAX_FILE_BYTES = 50 * 1024 * 1024;
export const XFT_ATTACHMENT_MAX_FILES_PER_SUBMISSION = 10;
export const XFT_ATTACHMENT_MAX_TOTAL_BYTES = 50 * 1024 * 1024;
+4 -4
View File
@@ -12,14 +12,14 @@ import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
import { APPROVAL_BATCH_LIMIT } from "./approval-contract.js";
import { isDirectEntrypoint } from "./entrypoint.js";
import { APPLICATION_VERSION } from "./version.js";
import {
APPROVAL_BATCH_LIMIT,
XFT_ATTACHMENT_MAX_FILE_BYTES,
XFT_ATTACHMENT_MAX_FILES_PER_SUBMISSION,
XFT_ATTACHMENT_MAX_TOTAL_BYTES,
} from "./xft.js";
} from "./approval-contract.js";
import { isDirectEntrypoint } from "./entrypoint.js";
import { APPLICATION_VERSION } from "./version.js";
interface BridgeState {
client?: { client_id: string; client_secret?: string };
+5 -2
View File
@@ -9,7 +9,11 @@ import { requireBearerAuth } from "@modelcontextprotocol/sdk/server/auth/middlew
import type { AuthInfo } from "@modelcontextprotocol/sdk/server/auth/types.js";
import { isInitializeRequest } from "@modelcontextprotocol/sdk/types.js";
import { z } from "zod";
import { APPROVAL_BATCH_LIMIT } from "./approval-contract.js";
import {
APPROVAL_BATCH_LIMIT,
XFT_ATTACHMENT_MAX_FILE_BYTES,
XFT_ATTACHMENT_MAX_FILES_PER_SUBMISSION,
} from "./approval-contract.js";
import { ApprovalService } from "./approval-service.js";
import { ApprovalSafetyError, XftApiError, errorMessage } from "./errors.js";
import type { AppConfig } from "./config.js";
@@ -23,7 +27,6 @@ import type { AuthenticatedDingTalkUser } from "./xft.js";
import { InvoiceDeduplicationService, InvoiceDedupStore, invoiceDedupDatabasePath } from "./invoice-dedup.js";
import { APPLICATION_VERSION } from "./version.js";
import { SignedReferenceCodec } from "./signed-reference.js";
import { XFT_ATTACHMENT_MAX_FILE_BYTES, XFT_ATTACHMENT_MAX_FILES_PER_SUBMISSION } from "./xft.js";
type TransportEntry =
| { kind: "streamable"; transport: StreamableHTTPServerTransport; userId: string; createdAt: number; lastSeenAt: number }
+6 -4
View File
@@ -1,12 +1,14 @@
import { createCipheriv, createDecipheriv, createHash, createHmac, randomBytes } from "node:crypto";
import { APPROVAL_BATCH_LIMIT } from "./approval-contract.js";
import {
APPROVAL_BATCH_LIMIT,
XFT_ATTACHMENT_MAX_FILE_BYTES,
XFT_ATTACHMENT_MAX_FILES_PER_SUBMISSION,
XFT_ATTACHMENT_MAX_TOTAL_BYTES,
} from "./approval-contract.js";
import type { AppConfig } from "./config.js";
import { ApprovalSafetyError, XftSessionExpiredError, errorMessage } from "./errors.js";
import { ApprovalService, type ApprovalHistoryItem, type ProcessApprovalItem, type TodoItem } from "./approval-service.js";
import {
XFT_ATTACHMENT_MAX_FILE_BYTES,
XFT_ATTACHMENT_MAX_FILES_PER_SUBMISSION,
XFT_ATTACHMENT_MAX_TOTAL_BYTES,
type ApprovalHistoryRange,
type ApprovalHistoryScope,
type AuthenticatedDingTalkUser,
+4 -2
View File
@@ -1,5 +1,9 @@
import { createHash, randomBytes } from "node:crypto";
import smCrypto from "sm-crypto";
import {
XFT_ATTACHMENT_MAX_FILE_BYTES,
XFT_ATTACHMENT_MAX_FILES_PER_SUBMISSION,
} from "./approval-contract.js";
import type { AppConfig } from "./config.js";
import { ApprovalSafetyError, XftApiError, errorMessage } from "./errors.js";
import { isRecord as isObject, filterQuery } from "./json.js";
@@ -14,8 +18,6 @@ import {
type XftApprovalProvider,
type XftHistoryItem,
type XftSubmissionField,
XFT_ATTACHMENT_MAX_FILE_BYTES,
XFT_ATTACHMENT_MAX_FILES_PER_SUBMISSION,
type XftResolvedSubmissionAttachment,
type XftSubmissionAttachmentUpload,
type XftSubmissionKind,
-4
View File
@@ -65,10 +65,6 @@ export type XftSubmissionKind =
| "common_reimburse"
| "travel_reimburse";
export const XFT_ATTACHMENT_MAX_FILE_BYTES = 50 * 1024 * 1024;
export const XFT_ATTACHMENT_MAX_FILES_PER_SUBMISSION = 10;
export const XFT_ATTACHMENT_MAX_TOTAL_BYTES = 50 * 1024 * 1024;
export interface XftSubmissionTemplate {
eventSeqId: string;
eventNumber: string;