@perstack/base 0.0.21 → 0.0.23
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 +61 -0
- package/dist/bin/server.d.ts +1 -0
- package/dist/bin/server.js +53 -0
- package/dist/bin/server.js.map +1 -0
- package/dist/chunk-H76GGP62.js +1124 -0
- package/dist/chunk-H76GGP62.js.map +1 -0
- package/dist/src/index.d.ts +73 -276
- package/dist/src/index.js +1 -1003
- package/dist/src/index.js.map +1 -1
- package/package.json +4 -4
package/README.md
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# @perstack/base
|
|
2
|
+
|
|
3
|
+
Base skills (MCP tools) for Perstack agents.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @perstack/base
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
### As MCP Server
|
|
14
|
+
|
|
15
|
+
Run directly via npx:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npx @perstack/base
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### As Library
|
|
22
|
+
|
|
23
|
+
Import and register tools with your MCP server:
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"
|
|
27
|
+
import { registerReadTextFile, registerWriteTextFile } from "@perstack/base"
|
|
28
|
+
|
|
29
|
+
const server = new McpServer({ name: "my-server", version: "1.0.0" })
|
|
30
|
+
|
|
31
|
+
registerReadTextFile(server)
|
|
32
|
+
registerWriteTextFile(server)
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Available Tools
|
|
36
|
+
|
|
37
|
+
### File Operations
|
|
38
|
+
- `readTextFile` - Read text files with optional line range
|
|
39
|
+
- `writeTextFile` - Create or overwrite text files
|
|
40
|
+
- `appendTextFile` - Append content to existing files
|
|
41
|
+
- `editTextFile` - Replace text in existing files
|
|
42
|
+
- `deleteFile` - Remove files
|
|
43
|
+
- `moveFile` - Move or rename files
|
|
44
|
+
- `getFileInfo` - Get file metadata
|
|
45
|
+
- `readImageFile` - Read image files (PNG, JPEG, GIF, WebP)
|
|
46
|
+
- `readPdfFile` - Read PDF files
|
|
47
|
+
|
|
48
|
+
### Directory Operations
|
|
49
|
+
- `listDirectory` - List directory contents
|
|
50
|
+
- `createDirectory` - Create directories
|
|
51
|
+
- `deleteDirectory` - Remove directories
|
|
52
|
+
|
|
53
|
+
### Utilities
|
|
54
|
+
- `exec` - Execute system commands
|
|
55
|
+
- `think` - Sequential thinking for problem analysis
|
|
56
|
+
- `todo` - Task list management
|
|
57
|
+
- `attemptCompletion` - Signal task completion
|
|
58
|
+
|
|
59
|
+
## License
|
|
60
|
+
|
|
61
|
+
Apache-2.0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { registerAttemptCompletion, registerThink, registerTodo, registerClearTodo, registerExec, registerGetFileInfo, registerReadTextFile, registerReadImageFile, registerReadPdfFile, registerWriteTextFile, registerAppendTextFile, registerEditTextFile, registerMoveFile, registerDeleteFile, registerListDirectory, registerCreateDirectory, registerDeleteDirectory } from '../chunk-H76GGP62.js';
|
|
3
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
4
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
5
|
+
import { Command } from 'commander';
|
|
6
|
+
|
|
7
|
+
// package.json
|
|
8
|
+
var package_default = {
|
|
9
|
+
name: "@perstack/base",
|
|
10
|
+
version: "0.0.23",
|
|
11
|
+
description: "Perstack base skills for agents."};
|
|
12
|
+
|
|
13
|
+
// bin/server.ts
|
|
14
|
+
async function main() {
|
|
15
|
+
const program = new Command();
|
|
16
|
+
program.name(package_default.name).description(package_default.description).version(package_default.version, "-v, --version", "display the version number").option("--verbose", "verbose output").action(async () => {
|
|
17
|
+
const server = new McpServer(
|
|
18
|
+
{
|
|
19
|
+
name: package_default.name,
|
|
20
|
+
version: package_default.version
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
capabilities: {
|
|
24
|
+
tools: {}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
);
|
|
28
|
+
registerAttemptCompletion(server);
|
|
29
|
+
registerThink(server);
|
|
30
|
+
registerTodo(server);
|
|
31
|
+
registerClearTodo(server);
|
|
32
|
+
registerExec(server);
|
|
33
|
+
registerGetFileInfo(server);
|
|
34
|
+
registerReadTextFile(server);
|
|
35
|
+
registerReadImageFile(server);
|
|
36
|
+
registerReadPdfFile(server);
|
|
37
|
+
registerWriteTextFile(server);
|
|
38
|
+
registerAppendTextFile(server);
|
|
39
|
+
registerEditTextFile(server);
|
|
40
|
+
registerMoveFile(server);
|
|
41
|
+
registerDeleteFile(server);
|
|
42
|
+
registerListDirectory(server);
|
|
43
|
+
registerCreateDirectory(server);
|
|
44
|
+
registerDeleteDirectory(server);
|
|
45
|
+
const transport = new StdioServerTransport();
|
|
46
|
+
console.error("Running @perstack/base version", package_default.version);
|
|
47
|
+
await server.connect(transport);
|
|
48
|
+
});
|
|
49
|
+
program.parse();
|
|
50
|
+
}
|
|
51
|
+
main();
|
|
52
|
+
//# sourceMappingURL=server.js.map
|
|
53
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../package.json","../../bin/server.ts"],"names":[],"mappings":";;;;;;;AAAA,IAAA,eAAA,GAAA;AAAA,EACE,IAAA,EAAQ,gBAAA;AAAA,EACR,OAAA,EAAW,QAAA;AAAA,EACX,WAAA,EAAe,kCA6CjB,CAAA;;;ACzBA,eAAe,IAAA,GAAO;AACpB,EAAA,MAAM,OAAA,GAAU,IAAI,OAAA,EAAQ;AAC5B,EAAA,OAAA,CACG,KAAK,eAAA,CAAY,IAAI,EACrB,WAAA,CAAY,eAAA,CAAY,WAAW,CAAA,CACnC,OAAA,CAAQ,gBAAY,OAAA,EAAS,eAAA,EAAiB,4BAA4B,CAAA,CAC1E,MAAA,CAAO,aAAa,gBAAgB,CAAA,CACpC,OAAO,YAAY;AAClB,IAAA,MAAM,SAAS,IAAI,SAAA;AAAA,MACjB;AAAA,QACE,MAAM,eAAA,CAAY,IAAA;AAAA,QAClB,SAAS,eAAA,CAAY;AAAA,OACvB;AAAA,MACA;AAAA,QACE,YAAA,EAAc;AAAA,UACZ,OAAO;AAAC;AACV;AACF,KACF;AACA,IAAA,yBAAA,CAA0B,MAAM,CAAA;AAChC,IAAA,aAAA,CAAc,MAAM,CAAA;AACpB,IAAA,YAAA,CAAa,MAAM,CAAA;AACnB,IAAA,iBAAA,CAAkB,MAAM,CAAA;AACxB,IAAA,YAAA,CAAa,MAAM,CAAA;AACnB,IAAA,mBAAA,CAAoB,MAAM,CAAA;AAC1B,IAAA,oBAAA,CAAqB,MAAM,CAAA;AAC3B,IAAA,qBAAA,CAAsB,MAAM,CAAA;AAC5B,IAAA,mBAAA,CAAoB,MAAM,CAAA;AAC1B,IAAA,qBAAA,CAAsB,MAAM,CAAA;AAC5B,IAAA,sBAAA,CAAuB,MAAM,CAAA;AAC7B,IAAA,oBAAA,CAAqB,MAAM,CAAA;AAC3B,IAAA,gBAAA,CAAiB,MAAM,CAAA;AACvB,IAAA,kBAAA,CAAmB,MAAM,CAAA;AACzB,IAAA,qBAAA,CAAsB,MAAM,CAAA;AAC5B,IAAA,uBAAA,CAAwB,MAAM,CAAA;AAC9B,IAAA,uBAAA,CAAwB,MAAM,CAAA;AAC9B,IAAA,MAAM,SAAA,GAAY,IAAI,oBAAA,EAAqB;AAC3C,IAAA,OAAA,CAAQ,KAAA,CAAM,gCAAA,EAAkC,eAAA,CAAY,OAAO,CAAA;AACnE,IAAA,MAAM,MAAA,CAAO,QAAQ,SAAS,CAAA;AAAA,EAChC,CAAC,CAAA;AACH,EAAA,OAAA,CAAQ,KAAA,EAAM;AAChB;AACA,IAAA,EAAK","file":"server.js","sourcesContent":["{\n \"name\": \"@perstack/base\",\n \"version\": \"0.0.23\",\n \"description\": \"Perstack base skills for agents.\",\n \"author\": \"Wintermute Technologies, Inc.\",\n \"license\": \"Apache-2.0\",\n \"type\": \"module\",\n \"exports\": {\n \".\": \"./src/index.ts\"\n },\n \"publishConfig\": {\n \"access\": \"public\",\n \"bin\": {\n \"@perstack/base\": \"dist/bin/server.js\"\n },\n \"exports\": {\n \".\": \"./dist/src/index.js\"\n },\n \"types\": {\n \".\": \"./dist/src/index.d.ts\"\n }\n },\n \"files\": [\n \"dist\"\n ],\n \"scripts\": {\n \"clean\": \"rm -rf dist\",\n \"build\": \"pnpm run clean && tsup\",\n \"typecheck\": \"tsc --noEmit\"\n },\n \"dependencies\": {\n \"@modelcontextprotocol/sdk\": \"^1.23.0\",\n \"commander\": \"^14.0.2\",\n \"mime-types\": \"^3.0.2\",\n \"ts-dedent\": \"^2.2.0\",\n \"zod\": \"^4.1.13\"\n },\n \"devDependencies\": {\n \"@tsconfig/node22\": \"^22.0.5\",\n \"@types/mime-types\": \"^3.0.1\",\n \"@types/node\": \"^24.10.1\",\n \"tsup\": \"^8.5.1\",\n \"typescript\": \"^5.9.3\",\n \"vitest\": \"^4.0.14\"\n },\n \"engines\": {\n \"node\": \">=22.0.0\"\n }\n}\n","#!/usr/bin/env node\n\nimport { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\"\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\"\nimport { Command } from \"commander\"\nimport packageJson from \"../package.json\" with { type: \"json\" }\nimport { registerAppendTextFile } from \"../src/tools/append-text-file.js\"\nimport { registerAttemptCompletion } from \"../src/tools/attempt-completion.js\"\nimport { registerCreateDirectory } from \"../src/tools/create-directory.js\"\nimport { registerDeleteDirectory } from \"../src/tools/delete-directory.js\"\nimport { registerDeleteFile } from \"../src/tools/delete-file.js\"\nimport { registerEditTextFile } from \"../src/tools/edit-text-file.js\"\nimport { registerExec } from \"../src/tools/exec.js\"\nimport { registerGetFileInfo } from \"../src/tools/get-file-info.js\"\nimport { registerListDirectory } from \"../src/tools/list-directory.js\"\nimport { registerMoveFile } from \"../src/tools/move-file.js\"\nimport { registerReadImageFile } from \"../src/tools/read-image-file.js\"\nimport { registerReadPdfFile } from \"../src/tools/read-pdf-file.js\"\nimport { registerReadTextFile } from \"../src/tools/read-text-file.js\"\nimport { registerThink } from \"../src/tools/think.js\"\nimport { registerClearTodo, registerTodo } from \"../src/tools/todo.js\"\nimport { registerWriteTextFile } from \"../src/tools/write-text-file.js\"\n\nasync function main() {\n const program = new Command()\n program\n .name(packageJson.name)\n .description(packageJson.description)\n .version(packageJson.version, \"-v, --version\", \"display the version number\")\n .option(\"--verbose\", \"verbose output\")\n .action(async () => {\n const server = new McpServer(\n {\n name: packageJson.name,\n version: packageJson.version,\n },\n {\n capabilities: {\n tools: {},\n },\n },\n )\n registerAttemptCompletion(server)\n registerThink(server)\n registerTodo(server)\n registerClearTodo(server)\n registerExec(server)\n registerGetFileInfo(server)\n registerReadTextFile(server)\n registerReadImageFile(server)\n registerReadPdfFile(server)\n registerWriteTextFile(server)\n registerAppendTextFile(server)\n registerEditTextFile(server)\n registerMoveFile(server)\n registerDeleteFile(server)\n registerListDirectory(server)\n registerCreateDirectory(server)\n registerDeleteDirectory(server)\n const transport = new StdioServerTransport()\n console.error(\"Running @perstack/base version\", packageJson.version)\n await server.connect(transport)\n })\n program.parse()\n}\nmain()\n"]}
|