@ebowwa/large-output 1.2.0 → 1.3.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 +18 -54
- package/package.json +16 -22
- package/rust/Cargo.toml +1 -1
- package/dist/index.d.ts +0 -141
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -192
- package/rust/Cargo.lock +0 -690
package/README.md
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
#
|
|
1
|
+
# large-output
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Utility for handling large outputs with automatic file fallback and **actionable LLM prompts**.
|
|
4
4
|
|
|
5
|
-
**
|
|
5
|
+
**Primary distribution: Rust crate** (TypeScript source preserved in `typescript/` for reference).
|
|
6
6
|
|
|
7
7
|
## Problem Solved
|
|
8
8
|
|
|
9
|
-
When
|
|
9
|
+
When tools return large outputs, they typically hit context limits. Common solutions like pagination fragment the context and require multiple round-trips.
|
|
10
10
|
|
|
11
11
|
**This library solves it by:**
|
|
12
12
|
- Returning content inline if under the threshold
|
|
@@ -15,65 +15,19 @@ When MCP tools return large outputs, they typically hit Claude's ~20,000 charact
|
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
18
|
-
##
|
|
18
|
+
## Rust (Primary)
|
|
19
19
|
|
|
20
20
|
### Installation
|
|
21
21
|
|
|
22
22
|
```bash
|
|
23
|
-
|
|
23
|
+
cargo add large-output
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
```typescript
|
|
29
|
-
import { handleMCPOutput } from "@ebowwa/large-output";
|
|
30
|
-
|
|
31
|
-
// In your MCP tool handler:
|
|
32
|
-
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
33
|
-
const results = await fetchData();
|
|
34
|
-
const content = JSON.stringify(results, null, 2);
|
|
35
|
-
|
|
36
|
-
// Return with automatic file fallback (actionable format by default)
|
|
37
|
-
return {
|
|
38
|
-
content: [{ type: "text", text: handleMCPOutput(content) }],
|
|
39
|
-
};
|
|
40
|
-
});
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
### API
|
|
44
|
-
|
|
45
|
-
| Function | Description |
|
|
46
|
-
|----------|-------------|
|
|
47
|
-
| `handleOutput(content, options?)` | Handle output, returns `OutputResponse` |
|
|
48
|
-
| `handleMCPOutput(content, options?)` | Convenience: handle + return MCP string |
|
|
49
|
-
| `toMCPResponse(response, format)` | Convert `OutputResponse` to string |
|
|
50
|
-
| `handleBatch(contents, options?)` | Batch handler for multiple outputs |
|
|
51
|
-
|
|
52
|
-
### Options
|
|
53
|
-
|
|
54
|
-
| Option | Type | Default | Description |
|
|
55
|
-
|--------|------|---------|-------------|
|
|
56
|
-
| `threshold` | `number` | `15000` | Character threshold for file fallback |
|
|
57
|
-
| `previewLength` | `number` | `500` | Preview chars when written to file |
|
|
58
|
-
| `tempDir` | `string` | `os.tmpdir()` | Custom temp directory |
|
|
59
|
-
| `filenamePrefix` | `string` | `"mcp_output"` | Filename prefix |
|
|
60
|
-
| `includeSize` | `boolean` | `true` | Include size in file response |
|
|
61
|
-
| `includePreview` | `boolean` | `true` | Include preview in file response |
|
|
62
|
-
| `responseFormat` | `"actionable"` \| `"json"` | `"actionable"` | Response format |
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
## Rust
|
|
67
|
-
|
|
68
|
-
Located in `./rust/` directory.
|
|
69
|
-
|
|
70
|
-
### Installation
|
|
71
|
-
|
|
72
|
-
Add to your `Cargo.toml`:
|
|
26
|
+
Or add to `Cargo.toml`:
|
|
73
27
|
|
|
74
28
|
```toml
|
|
75
29
|
[dependencies]
|
|
76
|
-
large-output = "1.
|
|
30
|
+
large-output = "1.3"
|
|
77
31
|
```
|
|
78
32
|
|
|
79
33
|
### Quick Start
|
|
@@ -162,6 +116,16 @@ File contains the complete data. Read it to proceed.
|
|
|
162
116
|
|
|
163
117
|
---
|
|
164
118
|
|
|
119
|
+
## TypeScript (Legacy/Reference)
|
|
120
|
+
|
|
121
|
+
TypeScript implementation preserved in `typescript/` directory for reference. Not distributed via npm.
|
|
122
|
+
|
|
123
|
+
If you need TypeScript support, consider:
|
|
124
|
+
1. Using the Rust crate via FFI (like napi-rs)
|
|
125
|
+
2. Copying the TypeScript source from `typescript/` into your project
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
165
129
|
## License
|
|
166
130
|
|
|
167
131
|
MIT
|
package/package.json
CHANGED
|
@@ -1,25 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ebowwa/large-output",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "1.3.0",
|
|
4
|
+
"description": "Utility for handling large outputs with automatic file fallback and actionable LLM prompts. Rust implementation (crate: large-output). TypeScript source preserved in typescript/ for reference.",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"main": "./
|
|
7
|
-
"types": "./dist/index.d.ts",
|
|
8
|
-
"exports": {
|
|
9
|
-
".": {
|
|
10
|
-
"types": "./dist/index.d.ts",
|
|
11
|
-
"import": "./dist/index.js"
|
|
12
|
-
}
|
|
13
|
-
},
|
|
6
|
+
"main": "./rust/src/lib.rs",
|
|
14
7
|
"files": [
|
|
15
|
-
"
|
|
16
|
-
"rust"
|
|
8
|
+
"rust/src",
|
|
9
|
+
"rust/Cargo.toml",
|
|
10
|
+
"rust/README.md"
|
|
17
11
|
],
|
|
18
12
|
"scripts": {
|
|
19
|
-
"build": "
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"
|
|
13
|
+
"build": "cd rust && cargo build --release",
|
|
14
|
+
"test": "cd rust && cargo test",
|
|
15
|
+
"publish:crate": "cd rust && cargo publish",
|
|
16
|
+
"build:ts": "cd typescript && tsc",
|
|
17
|
+
"test:ts": "cd typescript && tsc --noEmit"
|
|
23
18
|
},
|
|
24
19
|
"keywords": [
|
|
25
20
|
"mcp",
|
|
@@ -27,15 +22,10 @@
|
|
|
27
22
|
"pagination",
|
|
28
23
|
"file-fallback",
|
|
29
24
|
"llm-actionable",
|
|
30
|
-
"rust"
|
|
31
|
-
"typescript"
|
|
25
|
+
"rust"
|
|
32
26
|
],
|
|
33
27
|
"author": "ebowwa",
|
|
34
28
|
"license": "MIT",
|
|
35
|
-
"devDependencies": {
|
|
36
|
-
"@types/node": "^22.10.2",
|
|
37
|
-
"typescript": "^5.7.2"
|
|
38
|
-
},
|
|
39
29
|
"repository": {
|
|
40
30
|
"type": "git",
|
|
41
31
|
"url": "https://github.com/ebowwa/codespaces",
|
|
@@ -47,5 +37,9 @@
|
|
|
47
37
|
"output-handling",
|
|
48
38
|
"large-response-management"
|
|
49
39
|
]
|
|
40
|
+
},
|
|
41
|
+
"publishConfig": {
|
|
42
|
+
"access": "public",
|
|
43
|
+
"registry": "https://registry.npmjs.org"
|
|
50
44
|
}
|
|
51
45
|
}
|
package/rust/Cargo.toml
CHANGED
package/dist/index.d.ts
DELETED
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @ebowwa/large-output
|
|
3
|
-
*
|
|
4
|
-
* Shared utility for handling large MCP outputs with automatic file fallback.
|
|
5
|
-
*
|
|
6
|
-
* When output size exceeds the threshold, automatically writes to a temp file
|
|
7
|
-
* and returns a structured response with file path and preview.
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* Configuration options for the output handler
|
|
11
|
-
*/
|
|
12
|
-
export interface LargeOutputOptions {
|
|
13
|
-
/**
|
|
14
|
-
* Character threshold for file fallback
|
|
15
|
-
* @default 15000 (safety margin under Claude's ~20K limit)
|
|
16
|
-
*/
|
|
17
|
-
threshold?: number;
|
|
18
|
-
/**
|
|
19
|
-
* Number of characters to include in preview when writing to file
|
|
20
|
-
* @default 500
|
|
21
|
-
*/
|
|
22
|
-
previewLength?: number;
|
|
23
|
-
/**
|
|
24
|
-
* Custom temp directory for output files
|
|
25
|
-
* @default OS temp directory
|
|
26
|
-
*/
|
|
27
|
-
tempDir?: string;
|
|
28
|
-
/**
|
|
29
|
-
* Custom filename prefix
|
|
30
|
-
* @default "mcp_output"
|
|
31
|
-
*/
|
|
32
|
-
filenamePrefix?: string;
|
|
33
|
-
/**
|
|
34
|
-
* Whether to include a size indicator in the response
|
|
35
|
-
* @default true
|
|
36
|
-
*/
|
|
37
|
-
includeSize?: boolean;
|
|
38
|
-
/**
|
|
39
|
-
* Whether to include a preview in the file response
|
|
40
|
-
* @default true
|
|
41
|
-
*/
|
|
42
|
-
includePreview?: boolean;
|
|
43
|
-
/**
|
|
44
|
-
* Response format for file outputs
|
|
45
|
-
* - "actionable" (default): Returns actionable text prompting LLM to read the file
|
|
46
|
-
* - "json": Returns structured JSON object
|
|
47
|
-
* @default "actionable"
|
|
48
|
-
*/
|
|
49
|
-
responseFormat?: "actionable" | "json";
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Response when output is returned inline (under threshold)
|
|
53
|
-
*/
|
|
54
|
-
export interface InlineOutputResponse {
|
|
55
|
-
type: "inline";
|
|
56
|
-
content: string;
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Response when output is written to file (over threshold)
|
|
60
|
-
*/
|
|
61
|
-
export interface FileOutputResponse {
|
|
62
|
-
type: "file";
|
|
63
|
-
path: string;
|
|
64
|
-
size: number;
|
|
65
|
-
preview?: string;
|
|
66
|
-
sizeFormatted?: string;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Union type for all possible responses
|
|
70
|
-
*/
|
|
71
|
-
export type OutputResponse = InlineOutputResponse | FileOutputResponse;
|
|
72
|
-
/**
|
|
73
|
-
* Handle output with automatic file fallback
|
|
74
|
-
*
|
|
75
|
-
* @param content - The content to return
|
|
76
|
-
* @param options - Configuration options
|
|
77
|
-
* @returns Structured response with inline content or file reference
|
|
78
|
-
*
|
|
79
|
-
* @example
|
|
80
|
-
* ```ts
|
|
81
|
-
* import { handleOutput } from "@ebowwa/large-output";
|
|
82
|
-
*
|
|
83
|
-
* const results = await fetchLargeData();
|
|
84
|
-
* const response = handleOutput(JSON.stringify(results));
|
|
85
|
-
*
|
|
86
|
-
* if (response.type === "file") {
|
|
87
|
-
* console.log(`Written to: ${response.path}`);
|
|
88
|
-
* } else {
|
|
89
|
-
* console.log(response.content);
|
|
90
|
-
* }
|
|
91
|
-
* ```
|
|
92
|
-
*/
|
|
93
|
-
export declare function handleOutput(content: string, options?: LargeOutputOptions): OutputResponse;
|
|
94
|
-
/**
|
|
95
|
-
* Convert an OutputResponse to a string for MCP tool return
|
|
96
|
-
*
|
|
97
|
-
* @param response - The response from handleOutput()
|
|
98
|
-
* @param format - Response format: "actionable" (default) or "json"
|
|
99
|
-
* @returns Text or JSON string suitable for MCP tool return value
|
|
100
|
-
*
|
|
101
|
-
* @example
|
|
102
|
-
* ```ts
|
|
103
|
-
* const response = handleOutput(largeContent);
|
|
104
|
-
* return toMCPResponse(response);
|
|
105
|
-
* ```
|
|
106
|
-
*/
|
|
107
|
-
export declare function toMCPResponse(response: OutputResponse, format?: "actionable" | "json"): string;
|
|
108
|
-
/**
|
|
109
|
-
* Convenience function: handle output and return MCP-formatted string
|
|
110
|
-
*
|
|
111
|
-
* @param content - The content to return
|
|
112
|
-
* @param options - Configuration options (including responseFormat)
|
|
113
|
-
* @returns Text string with actionable instructions (default) or JSON
|
|
114
|
-
*
|
|
115
|
-
* @example
|
|
116
|
-
* ```ts
|
|
117
|
-
* import { handleMCPOutput } from "@ebowwa/large-output";
|
|
118
|
-
*
|
|
119
|
-
* // In your MCP tool handler (default: actionable format):
|
|
120
|
-
* return handleMCPOutput(JSON.stringify(results));
|
|
121
|
-
*
|
|
122
|
-
* // For JSON format:
|
|
123
|
-
* return handleMCPOutput(JSON.stringify(results), { responseFormat: "json" });
|
|
124
|
-
* ```
|
|
125
|
-
*/
|
|
126
|
-
export declare function handleMCPOutput(content: string, options?: LargeOutputOptions): string;
|
|
127
|
-
/**
|
|
128
|
-
* Batch handler for multiple outputs
|
|
129
|
-
*
|
|
130
|
-
* @param contents - Array of content strings
|
|
131
|
-
* @param options - Configuration options (applied to all)
|
|
132
|
-
* @returns Array of OutputResponse
|
|
133
|
-
*
|
|
134
|
-
* @example
|
|
135
|
-
* ```ts
|
|
136
|
-
* const outputs = handleBatch([data1, data2, data3]);
|
|
137
|
-
* // Each output handled independently
|
|
138
|
-
* ```
|
|
139
|
-
*/
|
|
140
|
-
export declare function handleBatch(contents: string[], options?: LargeOutputOptions): OutputResponse[];
|
|
141
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,YAAY,GAAG,MAAM,CAAC;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;AAwCvE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,kBAAuB,GAC/B,cAAc,CAwChB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,cAAc,EACxB,MAAM,GAAE,YAAY,GAAG,MAAqB,GAC3C,MAAM,CAgDR;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CAGR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,GAAE,kBAAuB,GAC/B,cAAc,EAAE,CAElB"}
|
package/dist/index.js
DELETED
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @ebowwa/large-output
|
|
3
|
-
*
|
|
4
|
-
* Shared utility for handling large MCP outputs with automatic file fallback.
|
|
5
|
-
*
|
|
6
|
-
* When output size exceeds the threshold, automatically writes to a temp file
|
|
7
|
-
* and returns a structured response with file path and preview.
|
|
8
|
-
*/
|
|
9
|
-
import * as fs from "fs";
|
|
10
|
-
import * as path from "path";
|
|
11
|
-
import * as os from "os";
|
|
12
|
-
/**
|
|
13
|
-
* Default options
|
|
14
|
-
*/
|
|
15
|
-
const DEFAULT_OPTIONS = {
|
|
16
|
-
threshold: 15000,
|
|
17
|
-
previewLength: 500,
|
|
18
|
-
includeSize: true,
|
|
19
|
-
includePreview: true,
|
|
20
|
-
responseFormat: "actionable",
|
|
21
|
-
};
|
|
22
|
-
/**
|
|
23
|
-
* Format bytes to human-readable string
|
|
24
|
-
*/
|
|
25
|
-
function formatSize(bytes) {
|
|
26
|
-
if (bytes < 1024)
|
|
27
|
-
return `${bytes} B`;
|
|
28
|
-
if (bytes < 1024 * 1024)
|
|
29
|
-
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
30
|
-
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Generate a unique filename with timestamp
|
|
34
|
-
*/
|
|
35
|
-
function generateFilename(prefix) {
|
|
36
|
-
const timestamp = new Date().toISOString().replace(/[:.]/g, "-").slice(0, -5);
|
|
37
|
-
const random = Math.random().toString(36).slice(2, 8);
|
|
38
|
-
return `${prefix}_${timestamp}_${random}.txt`;
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Ensure directory exists, create if not
|
|
42
|
-
*/
|
|
43
|
-
function ensureDir(dir) {
|
|
44
|
-
if (!fs.existsSync(dir)) {
|
|
45
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Handle output with automatic file fallback
|
|
50
|
-
*
|
|
51
|
-
* @param content - The content to return
|
|
52
|
-
* @param options - Configuration options
|
|
53
|
-
* @returns Structured response with inline content or file reference
|
|
54
|
-
*
|
|
55
|
-
* @example
|
|
56
|
-
* ```ts
|
|
57
|
-
* import { handleOutput } from "@ebowwa/large-output";
|
|
58
|
-
*
|
|
59
|
-
* const results = await fetchLargeData();
|
|
60
|
-
* const response = handleOutput(JSON.stringify(results));
|
|
61
|
-
*
|
|
62
|
-
* if (response.type === "file") {
|
|
63
|
-
* console.log(`Written to: ${response.path}`);
|
|
64
|
-
* } else {
|
|
65
|
-
* console.log(response.content);
|
|
66
|
-
* }
|
|
67
|
-
* ```
|
|
68
|
-
*/
|
|
69
|
-
export function handleOutput(content, options = {}) {
|
|
70
|
-
const opts = { ...DEFAULT_OPTIONS, ...options };
|
|
71
|
-
const contentLength = content.length;
|
|
72
|
-
// Return inline if under threshold
|
|
73
|
-
if (contentLength <= opts.threshold) {
|
|
74
|
-
return {
|
|
75
|
-
type: "inline",
|
|
76
|
-
content,
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
// Write to file if over threshold
|
|
80
|
-
const tempDir = options.tempDir || os.tmpdir();
|
|
81
|
-
const filenamePrefix = options.filenamePrefix || "mcp_output";
|
|
82
|
-
ensureDir(tempDir);
|
|
83
|
-
const filename = generateFilename(filenamePrefix);
|
|
84
|
-
const filepath = path.join(tempDir, filename);
|
|
85
|
-
fs.writeFileSync(filepath, content, "utf-8");
|
|
86
|
-
const response = {
|
|
87
|
-
type: "file",
|
|
88
|
-
path: filepath,
|
|
89
|
-
size: contentLength,
|
|
90
|
-
};
|
|
91
|
-
if (opts.includeSize) {
|
|
92
|
-
response.sizeFormatted = formatSize(contentLength);
|
|
93
|
-
}
|
|
94
|
-
if (opts.includePreview) {
|
|
95
|
-
response.preview = content.slice(0, opts.previewLength);
|
|
96
|
-
if (contentLength > opts.previewLength) {
|
|
97
|
-
response.preview += "...";
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
return response;
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Convert an OutputResponse to a string for MCP tool return
|
|
104
|
-
*
|
|
105
|
-
* @param response - The response from handleOutput()
|
|
106
|
-
* @param format - Response format: "actionable" (default) or "json"
|
|
107
|
-
* @returns Text or JSON string suitable for MCP tool return value
|
|
108
|
-
*
|
|
109
|
-
* @example
|
|
110
|
-
* ```ts
|
|
111
|
-
* const response = handleOutput(largeContent);
|
|
112
|
-
* return toMCPResponse(response);
|
|
113
|
-
* ```
|
|
114
|
-
*/
|
|
115
|
-
export function toMCPResponse(response, format = "actionable") {
|
|
116
|
-
if (response.type === "inline") {
|
|
117
|
-
return response.content;
|
|
118
|
-
}
|
|
119
|
-
// JSON format for programmatic consumers
|
|
120
|
-
if (format === "json") {
|
|
121
|
-
const result = {
|
|
122
|
-
type: "file",
|
|
123
|
-
path: response.path,
|
|
124
|
-
};
|
|
125
|
-
if (response.size !== undefined) {
|
|
126
|
-
result.size = response.size;
|
|
127
|
-
}
|
|
128
|
-
if (response.sizeFormatted !== undefined) {
|
|
129
|
-
result.sizeFormatted = response.sizeFormatted;
|
|
130
|
-
}
|
|
131
|
-
if (response.preview !== undefined) {
|
|
132
|
-
result.preview = response.preview;
|
|
133
|
-
}
|
|
134
|
-
return JSON.stringify(result, null, 2);
|
|
135
|
-
}
|
|
136
|
-
// Actionable format - prompts LLM to read the file (DEFAULT)
|
|
137
|
-
// This is critical - JSON alone gets ignored by LLMs
|
|
138
|
-
const lines = [
|
|
139
|
-
`⚠️ Large output (${response.sizeFormatted || response.size} characters) saved to file.`,
|
|
140
|
-
``,
|
|
141
|
-
`📖 **ACTION REQUIRED**: Use the Read tool to read this file:`,
|
|
142
|
-
``,
|
|
143
|
-
` ${response.path}`,
|
|
144
|
-
``,
|
|
145
|
-
];
|
|
146
|
-
if (response.preview !== undefined) {
|
|
147
|
-
lines.push(`--- PREVIEW (first 500 chars) ---`);
|
|
148
|
-
lines.push(response.preview);
|
|
149
|
-
lines.push(`--- END PREVIEW ---`);
|
|
150
|
-
lines.push(``);
|
|
151
|
-
}
|
|
152
|
-
lines.push(`✅ File contains the complete data. Read it to proceed.`);
|
|
153
|
-
return lines.join("\n");
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Convenience function: handle output and return MCP-formatted string
|
|
157
|
-
*
|
|
158
|
-
* @param content - The content to return
|
|
159
|
-
* @param options - Configuration options (including responseFormat)
|
|
160
|
-
* @returns Text string with actionable instructions (default) or JSON
|
|
161
|
-
*
|
|
162
|
-
* @example
|
|
163
|
-
* ```ts
|
|
164
|
-
* import { handleMCPOutput } from "@ebowwa/large-output";
|
|
165
|
-
*
|
|
166
|
-
* // In your MCP tool handler (default: actionable format):
|
|
167
|
-
* return handleMCPOutput(JSON.stringify(results));
|
|
168
|
-
*
|
|
169
|
-
* // For JSON format:
|
|
170
|
-
* return handleMCPOutput(JSON.stringify(results), { responseFormat: "json" });
|
|
171
|
-
* ```
|
|
172
|
-
*/
|
|
173
|
-
export function handleMCPOutput(content, options = {}) {
|
|
174
|
-
const response = handleOutput(content, options);
|
|
175
|
-
return toMCPResponse(response, options.responseFormat);
|
|
176
|
-
}
|
|
177
|
-
/**
|
|
178
|
-
* Batch handler for multiple outputs
|
|
179
|
-
*
|
|
180
|
-
* @param contents - Array of content strings
|
|
181
|
-
* @param options - Configuration options (applied to all)
|
|
182
|
-
* @returns Array of OutputResponse
|
|
183
|
-
*
|
|
184
|
-
* @example
|
|
185
|
-
* ```ts
|
|
186
|
-
* const outputs = handleBatch([data1, data2, data3]);
|
|
187
|
-
* // Each output handled independently
|
|
188
|
-
* ```
|
|
189
|
-
*/
|
|
190
|
-
export function handleBatch(contents, options = {}) {
|
|
191
|
-
return contents.map((content) => handleOutput(content, options));
|
|
192
|
-
}
|
package/rust/Cargo.lock
DELETED
|
@@ -1,690 +0,0 @@
|
|
|
1
|
-
# This file is automatically @generated by Cargo.
|
|
2
|
-
# It is not intended for manual editing.
|
|
3
|
-
version = 4
|
|
4
|
-
|
|
5
|
-
[[package]]
|
|
6
|
-
name = "android_system_properties"
|
|
7
|
-
version = "0.1.5"
|
|
8
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
9
|
-
checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
|
|
10
|
-
dependencies = [
|
|
11
|
-
"libc",
|
|
12
|
-
]
|
|
13
|
-
|
|
14
|
-
[[package]]
|
|
15
|
-
name = "anyhow"
|
|
16
|
-
version = "1.0.102"
|
|
17
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
18
|
-
checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
|
|
19
|
-
|
|
20
|
-
[[package]]
|
|
21
|
-
name = "autocfg"
|
|
22
|
-
version = "1.5.0"
|
|
23
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
24
|
-
checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
|
|
25
|
-
|
|
26
|
-
[[package]]
|
|
27
|
-
name = "bitflags"
|
|
28
|
-
version = "2.11.0"
|
|
29
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
30
|
-
checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af"
|
|
31
|
-
|
|
32
|
-
[[package]]
|
|
33
|
-
name = "bumpalo"
|
|
34
|
-
version = "3.20.2"
|
|
35
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
36
|
-
checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb"
|
|
37
|
-
|
|
38
|
-
[[package]]
|
|
39
|
-
name = "bytes"
|
|
40
|
-
version = "1.11.1"
|
|
41
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
42
|
-
checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
|
|
43
|
-
|
|
44
|
-
[[package]]
|
|
45
|
-
name = "cc"
|
|
46
|
-
version = "1.2.56"
|
|
47
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
48
|
-
checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2"
|
|
49
|
-
dependencies = [
|
|
50
|
-
"find-msvc-tools",
|
|
51
|
-
"shlex",
|
|
52
|
-
]
|
|
53
|
-
|
|
54
|
-
[[package]]
|
|
55
|
-
name = "cfg-if"
|
|
56
|
-
version = "1.0.4"
|
|
57
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
58
|
-
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
|
|
59
|
-
|
|
60
|
-
[[package]]
|
|
61
|
-
name = "chrono"
|
|
62
|
-
version = "0.4.44"
|
|
63
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
64
|
-
checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0"
|
|
65
|
-
dependencies = [
|
|
66
|
-
"iana-time-zone",
|
|
67
|
-
"js-sys",
|
|
68
|
-
"num-traits",
|
|
69
|
-
"wasm-bindgen",
|
|
70
|
-
"windows-link",
|
|
71
|
-
]
|
|
72
|
-
|
|
73
|
-
[[package]]
|
|
74
|
-
name = "core-foundation-sys"
|
|
75
|
-
version = "0.8.7"
|
|
76
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
77
|
-
checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
|
|
78
|
-
|
|
79
|
-
[[package]]
|
|
80
|
-
name = "equivalent"
|
|
81
|
-
version = "1.0.2"
|
|
82
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
83
|
-
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
|
|
84
|
-
|
|
85
|
-
[[package]]
|
|
86
|
-
name = "errno"
|
|
87
|
-
version = "0.3.14"
|
|
88
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
89
|
-
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
|
|
90
|
-
dependencies = [
|
|
91
|
-
"libc",
|
|
92
|
-
"windows-sys",
|
|
93
|
-
]
|
|
94
|
-
|
|
95
|
-
[[package]]
|
|
96
|
-
name = "fastrand"
|
|
97
|
-
version = "2.3.0"
|
|
98
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
99
|
-
checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
|
|
100
|
-
|
|
101
|
-
[[package]]
|
|
102
|
-
name = "find-msvc-tools"
|
|
103
|
-
version = "0.1.9"
|
|
104
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
105
|
-
checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
|
|
106
|
-
|
|
107
|
-
[[package]]
|
|
108
|
-
name = "foldhash"
|
|
109
|
-
version = "0.1.5"
|
|
110
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
111
|
-
checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
|
|
112
|
-
|
|
113
|
-
[[package]]
|
|
114
|
-
name = "getrandom"
|
|
115
|
-
version = "0.4.1"
|
|
116
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
117
|
-
checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec"
|
|
118
|
-
dependencies = [
|
|
119
|
-
"cfg-if",
|
|
120
|
-
"libc",
|
|
121
|
-
"r-efi",
|
|
122
|
-
"wasip2",
|
|
123
|
-
"wasip3",
|
|
124
|
-
]
|
|
125
|
-
|
|
126
|
-
[[package]]
|
|
127
|
-
name = "hashbrown"
|
|
128
|
-
version = "0.15.5"
|
|
129
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
130
|
-
checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
|
|
131
|
-
dependencies = [
|
|
132
|
-
"foldhash",
|
|
133
|
-
]
|
|
134
|
-
|
|
135
|
-
[[package]]
|
|
136
|
-
name = "hashbrown"
|
|
137
|
-
version = "0.16.1"
|
|
138
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
139
|
-
checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
|
|
140
|
-
|
|
141
|
-
[[package]]
|
|
142
|
-
name = "heck"
|
|
143
|
-
version = "0.5.0"
|
|
144
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
145
|
-
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
|
|
146
|
-
|
|
147
|
-
[[package]]
|
|
148
|
-
name = "iana-time-zone"
|
|
149
|
-
version = "0.1.65"
|
|
150
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
151
|
-
checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470"
|
|
152
|
-
dependencies = [
|
|
153
|
-
"android_system_properties",
|
|
154
|
-
"core-foundation-sys",
|
|
155
|
-
"iana-time-zone-haiku",
|
|
156
|
-
"js-sys",
|
|
157
|
-
"log",
|
|
158
|
-
"wasm-bindgen",
|
|
159
|
-
"windows-core",
|
|
160
|
-
]
|
|
161
|
-
|
|
162
|
-
[[package]]
|
|
163
|
-
name = "iana-time-zone-haiku"
|
|
164
|
-
version = "0.1.2"
|
|
165
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
166
|
-
checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
|
|
167
|
-
dependencies = [
|
|
168
|
-
"cc",
|
|
169
|
-
]
|
|
170
|
-
|
|
171
|
-
[[package]]
|
|
172
|
-
name = "id-arena"
|
|
173
|
-
version = "2.3.0"
|
|
174
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
175
|
-
checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954"
|
|
176
|
-
|
|
177
|
-
[[package]]
|
|
178
|
-
name = "indexmap"
|
|
179
|
-
version = "2.13.0"
|
|
180
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
181
|
-
checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017"
|
|
182
|
-
dependencies = [
|
|
183
|
-
"equivalent",
|
|
184
|
-
"hashbrown 0.16.1",
|
|
185
|
-
"serde",
|
|
186
|
-
"serde_core",
|
|
187
|
-
]
|
|
188
|
-
|
|
189
|
-
[[package]]
|
|
190
|
-
name = "itoa"
|
|
191
|
-
version = "1.0.17"
|
|
192
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
193
|
-
checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
|
|
194
|
-
|
|
195
|
-
[[package]]
|
|
196
|
-
name = "js-sys"
|
|
197
|
-
version = "0.3.90"
|
|
198
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
199
|
-
checksum = "14dc6f6450b3f6d4ed5b16327f38fed626d375a886159ca555bd7822c0c3a5a6"
|
|
200
|
-
dependencies = [
|
|
201
|
-
"once_cell",
|
|
202
|
-
"wasm-bindgen",
|
|
203
|
-
]
|
|
204
|
-
|
|
205
|
-
[[package]]
|
|
206
|
-
name = "large-output"
|
|
207
|
-
version = "1.2.0"
|
|
208
|
-
dependencies = [
|
|
209
|
-
"chrono",
|
|
210
|
-
"serde",
|
|
211
|
-
"serde_json",
|
|
212
|
-
"tempfile",
|
|
213
|
-
"tokio",
|
|
214
|
-
"uuid",
|
|
215
|
-
]
|
|
216
|
-
|
|
217
|
-
[[package]]
|
|
218
|
-
name = "leb128fmt"
|
|
219
|
-
version = "0.1.0"
|
|
220
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
221
|
-
checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
|
|
222
|
-
|
|
223
|
-
[[package]]
|
|
224
|
-
name = "libc"
|
|
225
|
-
version = "0.2.182"
|
|
226
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
227
|
-
checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112"
|
|
228
|
-
|
|
229
|
-
[[package]]
|
|
230
|
-
name = "linux-raw-sys"
|
|
231
|
-
version = "0.12.1"
|
|
232
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
233
|
-
checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
|
|
234
|
-
|
|
235
|
-
[[package]]
|
|
236
|
-
name = "log"
|
|
237
|
-
version = "0.4.29"
|
|
238
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
239
|
-
checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
|
|
240
|
-
|
|
241
|
-
[[package]]
|
|
242
|
-
name = "memchr"
|
|
243
|
-
version = "2.8.0"
|
|
244
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
245
|
-
checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
|
|
246
|
-
|
|
247
|
-
[[package]]
|
|
248
|
-
name = "num-traits"
|
|
249
|
-
version = "0.2.19"
|
|
250
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
251
|
-
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
|
|
252
|
-
dependencies = [
|
|
253
|
-
"autocfg",
|
|
254
|
-
]
|
|
255
|
-
|
|
256
|
-
[[package]]
|
|
257
|
-
name = "once_cell"
|
|
258
|
-
version = "1.21.3"
|
|
259
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
260
|
-
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
|
|
261
|
-
|
|
262
|
-
[[package]]
|
|
263
|
-
name = "pin-project-lite"
|
|
264
|
-
version = "0.2.16"
|
|
265
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
266
|
-
checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
|
|
267
|
-
|
|
268
|
-
[[package]]
|
|
269
|
-
name = "prettyplease"
|
|
270
|
-
version = "0.2.37"
|
|
271
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
272
|
-
checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b"
|
|
273
|
-
dependencies = [
|
|
274
|
-
"proc-macro2",
|
|
275
|
-
"syn",
|
|
276
|
-
]
|
|
277
|
-
|
|
278
|
-
[[package]]
|
|
279
|
-
name = "proc-macro2"
|
|
280
|
-
version = "1.0.106"
|
|
281
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
282
|
-
checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
|
|
283
|
-
dependencies = [
|
|
284
|
-
"unicode-ident",
|
|
285
|
-
]
|
|
286
|
-
|
|
287
|
-
[[package]]
|
|
288
|
-
name = "quote"
|
|
289
|
-
version = "1.0.44"
|
|
290
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
291
|
-
checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4"
|
|
292
|
-
dependencies = [
|
|
293
|
-
"proc-macro2",
|
|
294
|
-
]
|
|
295
|
-
|
|
296
|
-
[[package]]
|
|
297
|
-
name = "r-efi"
|
|
298
|
-
version = "5.3.0"
|
|
299
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
300
|
-
checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
|
|
301
|
-
|
|
302
|
-
[[package]]
|
|
303
|
-
name = "rustix"
|
|
304
|
-
version = "1.1.4"
|
|
305
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
306
|
-
checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"
|
|
307
|
-
dependencies = [
|
|
308
|
-
"bitflags",
|
|
309
|
-
"errno",
|
|
310
|
-
"libc",
|
|
311
|
-
"linux-raw-sys",
|
|
312
|
-
"windows-sys",
|
|
313
|
-
]
|
|
314
|
-
|
|
315
|
-
[[package]]
|
|
316
|
-
name = "rustversion"
|
|
317
|
-
version = "1.0.22"
|
|
318
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
319
|
-
checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
|
|
320
|
-
|
|
321
|
-
[[package]]
|
|
322
|
-
name = "semver"
|
|
323
|
-
version = "1.0.27"
|
|
324
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
325
|
-
checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2"
|
|
326
|
-
|
|
327
|
-
[[package]]
|
|
328
|
-
name = "serde"
|
|
329
|
-
version = "1.0.228"
|
|
330
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
331
|
-
checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
|
|
332
|
-
dependencies = [
|
|
333
|
-
"serde_core",
|
|
334
|
-
"serde_derive",
|
|
335
|
-
]
|
|
336
|
-
|
|
337
|
-
[[package]]
|
|
338
|
-
name = "serde_core"
|
|
339
|
-
version = "1.0.228"
|
|
340
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
341
|
-
checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
|
|
342
|
-
dependencies = [
|
|
343
|
-
"serde_derive",
|
|
344
|
-
]
|
|
345
|
-
|
|
346
|
-
[[package]]
|
|
347
|
-
name = "serde_derive"
|
|
348
|
-
version = "1.0.228"
|
|
349
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
350
|
-
checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
|
|
351
|
-
dependencies = [
|
|
352
|
-
"proc-macro2",
|
|
353
|
-
"quote",
|
|
354
|
-
"syn",
|
|
355
|
-
]
|
|
356
|
-
|
|
357
|
-
[[package]]
|
|
358
|
-
name = "serde_json"
|
|
359
|
-
version = "1.0.149"
|
|
360
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
361
|
-
checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
|
|
362
|
-
dependencies = [
|
|
363
|
-
"itoa",
|
|
364
|
-
"memchr",
|
|
365
|
-
"serde",
|
|
366
|
-
"serde_core",
|
|
367
|
-
"zmij",
|
|
368
|
-
]
|
|
369
|
-
|
|
370
|
-
[[package]]
|
|
371
|
-
name = "shlex"
|
|
372
|
-
version = "1.3.0"
|
|
373
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
374
|
-
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
|
|
375
|
-
|
|
376
|
-
[[package]]
|
|
377
|
-
name = "syn"
|
|
378
|
-
version = "2.0.117"
|
|
379
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
380
|
-
checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
|
|
381
|
-
dependencies = [
|
|
382
|
-
"proc-macro2",
|
|
383
|
-
"quote",
|
|
384
|
-
"unicode-ident",
|
|
385
|
-
]
|
|
386
|
-
|
|
387
|
-
[[package]]
|
|
388
|
-
name = "tempfile"
|
|
389
|
-
version = "3.26.0"
|
|
390
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
391
|
-
checksum = "82a72c767771b47409d2345987fda8628641887d5466101319899796367354a0"
|
|
392
|
-
dependencies = [
|
|
393
|
-
"fastrand",
|
|
394
|
-
"getrandom",
|
|
395
|
-
"once_cell",
|
|
396
|
-
"rustix",
|
|
397
|
-
"windows-sys",
|
|
398
|
-
]
|
|
399
|
-
|
|
400
|
-
[[package]]
|
|
401
|
-
name = "tokio"
|
|
402
|
-
version = "1.49.0"
|
|
403
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
404
|
-
checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86"
|
|
405
|
-
dependencies = [
|
|
406
|
-
"bytes",
|
|
407
|
-
"pin-project-lite",
|
|
408
|
-
]
|
|
409
|
-
|
|
410
|
-
[[package]]
|
|
411
|
-
name = "unicode-ident"
|
|
412
|
-
version = "1.0.24"
|
|
413
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
414
|
-
checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
|
|
415
|
-
|
|
416
|
-
[[package]]
|
|
417
|
-
name = "unicode-xid"
|
|
418
|
-
version = "0.2.6"
|
|
419
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
420
|
-
checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
|
|
421
|
-
|
|
422
|
-
[[package]]
|
|
423
|
-
name = "uuid"
|
|
424
|
-
version = "1.21.0"
|
|
425
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
426
|
-
checksum = "b672338555252d43fd2240c714dc444b8c6fb0a5c5335e65a07bba7742735ddb"
|
|
427
|
-
dependencies = [
|
|
428
|
-
"getrandom",
|
|
429
|
-
"js-sys",
|
|
430
|
-
"wasm-bindgen",
|
|
431
|
-
]
|
|
432
|
-
|
|
433
|
-
[[package]]
|
|
434
|
-
name = "wasip2"
|
|
435
|
-
version = "1.0.2+wasi-0.2.9"
|
|
436
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
437
|
-
checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5"
|
|
438
|
-
dependencies = [
|
|
439
|
-
"wit-bindgen",
|
|
440
|
-
]
|
|
441
|
-
|
|
442
|
-
[[package]]
|
|
443
|
-
name = "wasip3"
|
|
444
|
-
version = "0.4.0+wasi-0.3.0-rc-2026-01-06"
|
|
445
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
446
|
-
checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5"
|
|
447
|
-
dependencies = [
|
|
448
|
-
"wit-bindgen",
|
|
449
|
-
]
|
|
450
|
-
|
|
451
|
-
[[package]]
|
|
452
|
-
name = "wasm-bindgen"
|
|
453
|
-
version = "0.2.113"
|
|
454
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
455
|
-
checksum = "60722a937f594b7fde9adb894d7c092fc1bb6612897c46368d18e7a20208eff2"
|
|
456
|
-
dependencies = [
|
|
457
|
-
"cfg-if",
|
|
458
|
-
"once_cell",
|
|
459
|
-
"rustversion",
|
|
460
|
-
"wasm-bindgen-macro",
|
|
461
|
-
"wasm-bindgen-shared",
|
|
462
|
-
]
|
|
463
|
-
|
|
464
|
-
[[package]]
|
|
465
|
-
name = "wasm-bindgen-macro"
|
|
466
|
-
version = "0.2.113"
|
|
467
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
468
|
-
checksum = "0fac8c6395094b6b91c4af293f4c79371c163f9a6f56184d2c9a85f5a95f3950"
|
|
469
|
-
dependencies = [
|
|
470
|
-
"quote",
|
|
471
|
-
"wasm-bindgen-macro-support",
|
|
472
|
-
]
|
|
473
|
-
|
|
474
|
-
[[package]]
|
|
475
|
-
name = "wasm-bindgen-macro-support"
|
|
476
|
-
version = "0.2.113"
|
|
477
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
478
|
-
checksum = "ab3fabce6159dc20728033842636887e4877688ae94382766e00b180abac9d60"
|
|
479
|
-
dependencies = [
|
|
480
|
-
"bumpalo",
|
|
481
|
-
"proc-macro2",
|
|
482
|
-
"quote",
|
|
483
|
-
"syn",
|
|
484
|
-
"wasm-bindgen-shared",
|
|
485
|
-
]
|
|
486
|
-
|
|
487
|
-
[[package]]
|
|
488
|
-
name = "wasm-bindgen-shared"
|
|
489
|
-
version = "0.2.113"
|
|
490
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
491
|
-
checksum = "de0e091bdb824da87dc01d967388880d017a0a9bc4f3bdc0d86ee9f9336e3bb5"
|
|
492
|
-
dependencies = [
|
|
493
|
-
"unicode-ident",
|
|
494
|
-
]
|
|
495
|
-
|
|
496
|
-
[[package]]
|
|
497
|
-
name = "wasm-encoder"
|
|
498
|
-
version = "0.244.0"
|
|
499
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
500
|
-
checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319"
|
|
501
|
-
dependencies = [
|
|
502
|
-
"leb128fmt",
|
|
503
|
-
"wasmparser",
|
|
504
|
-
]
|
|
505
|
-
|
|
506
|
-
[[package]]
|
|
507
|
-
name = "wasm-metadata"
|
|
508
|
-
version = "0.244.0"
|
|
509
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
510
|
-
checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909"
|
|
511
|
-
dependencies = [
|
|
512
|
-
"anyhow",
|
|
513
|
-
"indexmap",
|
|
514
|
-
"wasm-encoder",
|
|
515
|
-
"wasmparser",
|
|
516
|
-
]
|
|
517
|
-
|
|
518
|
-
[[package]]
|
|
519
|
-
name = "wasmparser"
|
|
520
|
-
version = "0.244.0"
|
|
521
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
522
|
-
checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe"
|
|
523
|
-
dependencies = [
|
|
524
|
-
"bitflags",
|
|
525
|
-
"hashbrown 0.15.5",
|
|
526
|
-
"indexmap",
|
|
527
|
-
"semver",
|
|
528
|
-
]
|
|
529
|
-
|
|
530
|
-
[[package]]
|
|
531
|
-
name = "windows-core"
|
|
532
|
-
version = "0.62.2"
|
|
533
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
534
|
-
checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb"
|
|
535
|
-
dependencies = [
|
|
536
|
-
"windows-implement",
|
|
537
|
-
"windows-interface",
|
|
538
|
-
"windows-link",
|
|
539
|
-
"windows-result",
|
|
540
|
-
"windows-strings",
|
|
541
|
-
]
|
|
542
|
-
|
|
543
|
-
[[package]]
|
|
544
|
-
name = "windows-implement"
|
|
545
|
-
version = "0.60.2"
|
|
546
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
547
|
-
checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
|
|
548
|
-
dependencies = [
|
|
549
|
-
"proc-macro2",
|
|
550
|
-
"quote",
|
|
551
|
-
"syn",
|
|
552
|
-
]
|
|
553
|
-
|
|
554
|
-
[[package]]
|
|
555
|
-
name = "windows-interface"
|
|
556
|
-
version = "0.59.3"
|
|
557
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
558
|
-
checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
|
|
559
|
-
dependencies = [
|
|
560
|
-
"proc-macro2",
|
|
561
|
-
"quote",
|
|
562
|
-
"syn",
|
|
563
|
-
]
|
|
564
|
-
|
|
565
|
-
[[package]]
|
|
566
|
-
name = "windows-link"
|
|
567
|
-
version = "0.2.1"
|
|
568
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
569
|
-
checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
|
|
570
|
-
|
|
571
|
-
[[package]]
|
|
572
|
-
name = "windows-result"
|
|
573
|
-
version = "0.4.1"
|
|
574
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
575
|
-
checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"
|
|
576
|
-
dependencies = [
|
|
577
|
-
"windows-link",
|
|
578
|
-
]
|
|
579
|
-
|
|
580
|
-
[[package]]
|
|
581
|
-
name = "windows-strings"
|
|
582
|
-
version = "0.5.1"
|
|
583
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
584
|
-
checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
|
|
585
|
-
dependencies = [
|
|
586
|
-
"windows-link",
|
|
587
|
-
]
|
|
588
|
-
|
|
589
|
-
[[package]]
|
|
590
|
-
name = "windows-sys"
|
|
591
|
-
version = "0.61.2"
|
|
592
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
593
|
-
checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
|
|
594
|
-
dependencies = [
|
|
595
|
-
"windows-link",
|
|
596
|
-
]
|
|
597
|
-
|
|
598
|
-
[[package]]
|
|
599
|
-
name = "wit-bindgen"
|
|
600
|
-
version = "0.51.0"
|
|
601
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
602
|
-
checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
|
|
603
|
-
dependencies = [
|
|
604
|
-
"wit-bindgen-rust-macro",
|
|
605
|
-
]
|
|
606
|
-
|
|
607
|
-
[[package]]
|
|
608
|
-
name = "wit-bindgen-core"
|
|
609
|
-
version = "0.51.0"
|
|
610
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
611
|
-
checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc"
|
|
612
|
-
dependencies = [
|
|
613
|
-
"anyhow",
|
|
614
|
-
"heck",
|
|
615
|
-
"wit-parser",
|
|
616
|
-
]
|
|
617
|
-
|
|
618
|
-
[[package]]
|
|
619
|
-
name = "wit-bindgen-rust"
|
|
620
|
-
version = "0.51.0"
|
|
621
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
622
|
-
checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21"
|
|
623
|
-
dependencies = [
|
|
624
|
-
"anyhow",
|
|
625
|
-
"heck",
|
|
626
|
-
"indexmap",
|
|
627
|
-
"prettyplease",
|
|
628
|
-
"syn",
|
|
629
|
-
"wasm-metadata",
|
|
630
|
-
"wit-bindgen-core",
|
|
631
|
-
"wit-component",
|
|
632
|
-
]
|
|
633
|
-
|
|
634
|
-
[[package]]
|
|
635
|
-
name = "wit-bindgen-rust-macro"
|
|
636
|
-
version = "0.51.0"
|
|
637
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
638
|
-
checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a"
|
|
639
|
-
dependencies = [
|
|
640
|
-
"anyhow",
|
|
641
|
-
"prettyplease",
|
|
642
|
-
"proc-macro2",
|
|
643
|
-
"quote",
|
|
644
|
-
"syn",
|
|
645
|
-
"wit-bindgen-core",
|
|
646
|
-
"wit-bindgen-rust",
|
|
647
|
-
]
|
|
648
|
-
|
|
649
|
-
[[package]]
|
|
650
|
-
name = "wit-component"
|
|
651
|
-
version = "0.244.0"
|
|
652
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
653
|
-
checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2"
|
|
654
|
-
dependencies = [
|
|
655
|
-
"anyhow",
|
|
656
|
-
"bitflags",
|
|
657
|
-
"indexmap",
|
|
658
|
-
"log",
|
|
659
|
-
"serde",
|
|
660
|
-
"serde_derive",
|
|
661
|
-
"serde_json",
|
|
662
|
-
"wasm-encoder",
|
|
663
|
-
"wasm-metadata",
|
|
664
|
-
"wasmparser",
|
|
665
|
-
"wit-parser",
|
|
666
|
-
]
|
|
667
|
-
|
|
668
|
-
[[package]]
|
|
669
|
-
name = "wit-parser"
|
|
670
|
-
version = "0.244.0"
|
|
671
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
672
|
-
checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736"
|
|
673
|
-
dependencies = [
|
|
674
|
-
"anyhow",
|
|
675
|
-
"id-arena",
|
|
676
|
-
"indexmap",
|
|
677
|
-
"log",
|
|
678
|
-
"semver",
|
|
679
|
-
"serde",
|
|
680
|
-
"serde_derive",
|
|
681
|
-
"serde_json",
|
|
682
|
-
"unicode-xid",
|
|
683
|
-
"wasmparser",
|
|
684
|
-
]
|
|
685
|
-
|
|
686
|
-
[[package]]
|
|
687
|
-
name = "zmij"
|
|
688
|
-
version = "1.0.21"
|
|
689
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
690
|
-
checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
|