From cb9be1586a46c4d991d5197c542a9ddad456d424 Mon Sep 17 00:00:00 2001 From: HiranoMasaaki Date: Sun, 7 Dec 2025 22:01:01 +0900 Subject: [PATCH 1/2] Update: Remove character limits from @perstack/base file tools --- .changeset/remove-file-tool-char-limits.md | 11 +++++++++++ packages/base/src/tools/append-text-file.ts | 8 +------- packages/base/src/tools/edit-text-file.ts | 14 ++------------ packages/base/src/tools/write-text-file.ts | 4 +--- 4 files changed, 15 insertions(+), 22 deletions(-) create mode 100644 .changeset/remove-file-tool-char-limits.md diff --git a/.changeset/remove-file-tool-char-limits.md b/.changeset/remove-file-tool-char-limits.md new file mode 100644 index 00000000..e739fbac --- /dev/null +++ b/.changeset/remove-file-tool-char-limits.md @@ -0,0 +1,11 @@ +--- +"@perstack/base": patch +--- + +Remove character limits from file operation tools + +The following tools no longer have character limits: +- writeTextFile: removed 10,000 character limit +- appendTextFile: removed 2,000 character limit +- editTextFile: removed 2,000 character limit for both newText and oldText + diff --git a/packages/base/src/tools/append-text-file.ts b/packages/base/src/tools/append-text-file.ts index a4eccf52..49c28d7f 100644 --- a/packages/base/src/tools/append-text-file.ts +++ b/packages/base/src/tools/append-text-file.ts @@ -43,16 +43,10 @@ export function registerAppendTextFile(server: McpServer) { Rules: - FILE MUST EXIST BEFORE APPENDING - YOU MUST PROVIDE A VALID UTF-8 STRING FOR THE TEXT - - THERE IS A LIMIT ON THE NUMBER OF TOKENS THAT CAN BE GENERATED, SO DO NOT APPEND ALL THE CONTENT AT ONCE - - IF YOU WANT TO APPEND MORE THAN 2000 CHARACTERS, USE THIS TOOL MULTIPLE TIMES `, inputSchema: { path: z.string().describe("Target file path to append to."), - text: z - .string() - .min(1) - .max(2_000) - .describe("Text to append to the file. Max 2000 characters."), + text: z.string().describe("Text to append to the file."), }, }, async ({ path, text }: { path: string; text: string }) => { diff --git a/packages/base/src/tools/edit-text-file.ts b/packages/base/src/tools/edit-text-file.ts index 894d3cc9..3aba91c4 100644 --- a/packages/base/src/tools/edit-text-file.ts +++ b/packages/base/src/tools/edit-text-file.ts @@ -61,22 +61,12 @@ export function registerEditTextFile(server: McpServer) { Rules: - YOU MUST PROVIDE A VALID UTF-8 STRING FOR THE TEXT - - THERE IS A LIMIT ON THE NUMBER OF TOKENS THAT CAN BE GENERATED, SO DO NOT WRITE ALL THE CONTENT AT ONCE (IT WILL CAUSE AN ERROR) - - IF YOU WANT TO EDIT MORE THAN 2000 CHARACTERS, USE THIS TOOL MULTIPLE TIMES - DO NOT USE THIS TOOL FOR APPENDING TEXT TO FILES - USE appendTextFile TOOL INSTEAD `, inputSchema: { path: z.string().describe("Target file path to edit."), - newText: z - .string() - .min(1) - .max(2_000) - .describe("Text to append to the file. Max 2000 characters."), - oldText: z - .string() - .min(1) - .max(2_000) - .describe("Exact text to find and replace. Max 2000 characters."), + newText: z.string().describe("Text to replace with."), + oldText: z.string().describe("Exact text to find and replace."), }, }, async (input: { path: string; newText: string; oldText: string }) => { diff --git a/packages/base/src/tools/write-text-file.ts b/packages/base/src/tools/write-text-file.ts index 9fbd132b..cd4b56aa 100644 --- a/packages/base/src/tools/write-text-file.ts +++ b/packages/base/src/tools/write-text-file.ts @@ -45,12 +45,10 @@ export function registerWriteTextFile(server: McpServer) { Rules: - IF THE FILE ALREADY EXISTS, IT WILL BE OVERWRITTEN - YOU MUST PROVIDE A VALID UTF-8 STRING FOR THE TEXT - - THERE IS A LIMIT ON THE NUMBER OF TOKENS THAT CAN BE GENERATED, SO DO NOT WRITE ALL THE CONTENT AT ONCE (IT WILL CAUSE AN ERROR) - - IF YOU WANT TO WRITE MORE THAN 10,000 CHARACTERS, USE "appendTextFile" TOOL AFTER THIS ONE `, inputSchema: { path: z.string().describe("Target file path (relative or absolute)."), - text: z.string().max(10_000).describe("Text to write to the file. Max 10000 characters."), + text: z.string().describe("Text to write to the file."), }, }, async (input: { path: string; text: string }) => { From 112d452a2f152fd8fd373bca7acb9e76cf2e9ab3 Mon Sep 17 00:00:00 2001 From: HiranoMasaaki Date: Sun, 7 Dec 2025 22:01:06 +0900 Subject: [PATCH 2/2] Chore: Add examples and perstack to knip ignore --- knip.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/knip.json b/knip.json index 0a892c71..a25dca4c 100644 --- a/knip.json +++ b/knip.json @@ -2,8 +2,8 @@ "$schema": "https://unpkg.com/knip@5/schema.json", "ignoreDependencies": ["@tsconfig/node22", "vitest", "ts-dedent"], "ignoreExportsUsedInFile": true, - "ignoreBinaries": [], - "ignore": ["dist/**/*", "**/*.test.ts", "**/*.test.tsx", "docs/content/**/*", "scripts/**/*"], + "ignoreBinaries": ["perstack"], + "ignore": ["dist/**/*", "**/*.test.ts", "**/*.test.tsx", "docs/content/**/*", "scripts/**/*", "examples/**/*"], "workspaces": { "packages/perstack": { "entry": ["bin/cli.ts", "src/**/*.ts"]