@n24q02m/mnemo-plugin 1.0.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/LICENSE +21 -0
- package/README.md +99 -0
- package/bin/cli.mjs +73 -0
- package/build/src/bridge.d.ts +29 -0
- package/build/src/bridge.d.ts.map +1 -0
- package/build/src/bridge.js +102 -0
- package/build/src/bridge.js.map +1 -0
- package/build/src/hooks/auto-capture.d.ts +22 -0
- package/build/src/hooks/auto-capture.d.ts.map +1 -0
- package/build/src/hooks/auto-capture.js +89 -0
- package/build/src/hooks/auto-capture.js.map +1 -0
- package/build/src/hooks/compaction.d.ts +14 -0
- package/build/src/hooks/compaction.d.ts.map +1 -0
- package/build/src/hooks/compaction.js +35 -0
- package/build/src/hooks/compaction.js.map +1 -0
- package/build/src/hooks/system-prompt.d.ts +15 -0
- package/build/src/hooks/system-prompt.d.ts.map +1 -0
- package/build/src/hooks/system-prompt.js +78 -0
- package/build/src/hooks/system-prompt.js.map +1 -0
- package/build/src/index.d.ts +11 -0
- package/build/src/index.d.ts.map +1 -0
- package/build/src/index.js +48 -0
- package/build/src/index.js.map +1 -0
- package/build/src/tools/memory.d.ts +13 -0
- package/build/src/tools/memory.d.ts.map +1 -0
- package/build/src/tools/memory.js +109 -0
- package/build/src/tools/memory.js.map +1 -0
- package/build/tests/bridge.test.d.ts +6 -0
- package/build/tests/bridge.test.d.ts.map +1 -0
- package/build/tests/bridge.test.js +78 -0
- package/build/tests/bridge.test.js.map +1 -0
- package/build/tsconfig.tsbuildinfo +1 -0
- package/package.json +72 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 n24q02m
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Mnemo Plugin
|
|
2
|
+
|
|
3
|
+
[](https://github.com/n24q02m/mnemo-plugin/actions/workflows/ci.yml)
|
|
4
|
+
[](https://www.npmjs.com/package/@n24q02m/mnemo-plugin)
|
|
5
|
+
[](https://opensource.org/licenses/MIT)
|
|
6
|
+
|
|
7
|
+
Universal Memory Plugin for [OpenCode](https://opencode.ai) & [Claude Code](https://docs.anthropic.com/en/docs/claude-code) -- Powered by [mnemo-mcp](https://github.com/n24q02m/mnemo-mcp).
|
|
8
|
+
|
|
9
|
+
Gives your AI coding assistant **persistent memory** across sessions. Facts, preferences, architectural decisions, and project rules are stored permanently and automatically loaded into context.
|
|
10
|
+
|
|
11
|
+
## Features
|
|
12
|
+
|
|
13
|
+
- **Persistent Memory** -- Facts survive across sessions, restarts, and context compaction
|
|
14
|
+
- **Automatic Capture** -- Detects user preferences and constraints from chat (always/never/must/prefer patterns)
|
|
15
|
+
- **Adaptive Context Injection** -- Smart budget system scales memory injection to model context window
|
|
16
|
+
- **Project-Scoped** -- Memories auto-tagged with project name for relevant recall
|
|
17
|
+
- **Dual Platform** -- Works with both OpenCode (plugin) and Claude Code (MCP server)
|
|
18
|
+
|
|
19
|
+
## Architecture
|
|
20
|
+
|
|
21
|
+
This plugin is a thin TypeScript bridge that delegates all heavy lifting to [mnemo-mcp](https://github.com/n24q02m/mnemo-mcp) (Python MCP server):
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
OpenCode / Claude Code
|
|
25
|
+
|
|
|
26
|
+
+-- mnemo-plugin (TypeScript, this package)
|
|
27
|
+
|
|
|
28
|
+
+-- mnemo-mcp (Python, via uvx)
|
|
29
|
+
|-- SQLite FTS5 (keyword search)
|
|
30
|
+
|-- Qwen3 embeddings (semantic search)
|
|
31
|
+
|-- rclone sync (backup)
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Prerequisites
|
|
35
|
+
|
|
36
|
+
- [Node.js](https://nodejs.org/) >= 24
|
|
37
|
+
- [uv](https://docs.astral.sh/uv/) (for running mnemo-mcp via `uvx`)
|
|
38
|
+
|
|
39
|
+
## Installation
|
|
40
|
+
|
|
41
|
+
### OpenCode
|
|
42
|
+
|
|
43
|
+
Add to your `opencode.json`:
|
|
44
|
+
|
|
45
|
+
```json
|
|
46
|
+
{
|
|
47
|
+
"plugin": ["@n24q02m/mnemo-plugin"]
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Claude Code
|
|
52
|
+
|
|
53
|
+
Install the plugin globally:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
npm install -g @n24q02m/mnemo-plugin
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Then add to your project's `.claude/plugins.json` or install via Claude Code UI.
|
|
60
|
+
|
|
61
|
+
## Tools
|
|
62
|
+
|
|
63
|
+
| Tool | Description |
|
|
64
|
+
|------|-------------|
|
|
65
|
+
| `mnemo_search` | Search stored memories by query, with optional category filter |
|
|
66
|
+
| `mnemo_remember` | Store a new persistent memory (fact, preference, decision) |
|
|
67
|
+
| `mnemo_forget` | Delete an outdated or incorrect memory by ID |
|
|
68
|
+
|
|
69
|
+
## Hooks (OpenCode only)
|
|
70
|
+
|
|
71
|
+
| Hook | Description |
|
|
72
|
+
|------|-------------|
|
|
73
|
+
| `system-prompt` | Injects relevant memories into system prompt with adaptive budget |
|
|
74
|
+
| `auto-capture` | Buffers chat messages and extracts constraints on session idle |
|
|
75
|
+
| `compaction` | Preserves memory context during session compaction |
|
|
76
|
+
|
|
77
|
+
## Development
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# Setup
|
|
81
|
+
mise run setup
|
|
82
|
+
|
|
83
|
+
# Development
|
|
84
|
+
pnpm dev
|
|
85
|
+
|
|
86
|
+
# Quality checks
|
|
87
|
+
pnpm check # biome + tsc
|
|
88
|
+
pnpm test # vitest
|
|
89
|
+
pnpm build # tsc + cli bundle
|
|
90
|
+
|
|
91
|
+
# Shortcuts
|
|
92
|
+
mise run lint
|
|
93
|
+
mise run test
|
|
94
|
+
mise run fix
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## License
|
|
98
|
+
|
|
99
|
+
MIT
|
package/bin/cli.mjs
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* mnemo-plugin CLI
|
|
4
|
+
*
|
|
5
|
+
* Modes:
|
|
6
|
+
* - No args: MCP stdio proxy (spawns uvx mnemo-mcp)
|
|
7
|
+
* - hook <action>: Execute Claude Code lifecycle hooks
|
|
8
|
+
*/
|
|
9
|
+
import { spawn, execSync } from 'node:child_process';
|
|
10
|
+
|
|
11
|
+
const args = process.argv.slice(2);
|
|
12
|
+
const isWindows = process.platform === 'win32';
|
|
13
|
+
|
|
14
|
+
// Hook subcommand
|
|
15
|
+
if (args[0] === 'hook') {
|
|
16
|
+
const action = args[1];
|
|
17
|
+
let input = '';
|
|
18
|
+
|
|
19
|
+
// Read hook payload from stdin (non-blocking)
|
|
20
|
+
if (!process.stdin.isTTY) {
|
|
21
|
+
try {
|
|
22
|
+
input = require('node:fs').readFileSync(0, 'utf8');
|
|
23
|
+
} catch {
|
|
24
|
+
// No stdin input
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const payload = input ? JSON.parse(input) : {};
|
|
29
|
+
|
|
30
|
+
switch (action) {
|
|
31
|
+
case 'session-start':
|
|
32
|
+
// Health check: verify mnemo-mcp is accessible
|
|
33
|
+
try {
|
|
34
|
+
execSync('uvx mnemo-mcp --version', { stdio: 'pipe', timeout: 5000, shell: isWindows });
|
|
35
|
+
process.exit(0);
|
|
36
|
+
} catch {
|
|
37
|
+
console.error('[mnemo] Warning: mnemo-mcp not available. Install with: uv tool install mnemo-mcp');
|
|
38
|
+
process.exit(1); // Non-blocking warning
|
|
39
|
+
}
|
|
40
|
+
break;
|
|
41
|
+
|
|
42
|
+
case 'stop':
|
|
43
|
+
// No-op for now: Claude handles memory via MCP tools during session
|
|
44
|
+
process.exit(0);
|
|
45
|
+
break;
|
|
46
|
+
|
|
47
|
+
case 'pre-compact':
|
|
48
|
+
// No-op for now: memories are already persisted in mnemo-mcp
|
|
49
|
+
process.exit(0);
|
|
50
|
+
break;
|
|
51
|
+
|
|
52
|
+
default:
|
|
53
|
+
console.error('[mnemo] Unknown hook action:', action);
|
|
54
|
+
console.error('Available: session-start, stop, pre-compact');
|
|
55
|
+
process.exit(2);
|
|
56
|
+
}
|
|
57
|
+
} else {
|
|
58
|
+
// Default mode: MCP stdio proxy
|
|
59
|
+
const child = spawn('uvx', ['mnemo-mcp', ...args], {
|
|
60
|
+
stdio: 'inherit',
|
|
61
|
+
shell: isWindows,
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
child.on('error', (err) => {
|
|
65
|
+
console.error('Failed to start mnemo-mcp:', err.message);
|
|
66
|
+
console.error('Make sure uv is installed: https://docs.astral.sh/uv/');
|
|
67
|
+
process.exit(1);
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
child.on('exit', (code) => {
|
|
71
|
+
process.exit(code || 0);
|
|
72
|
+
});
|
|
73
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Client Bridge to mnemo-mcp
|
|
3
|
+
*
|
|
4
|
+
* Singleton class that manages a persistent MCP connection to the mnemo-mcp
|
|
5
|
+
* Python server via stdio transport. Spawns `uvx mnemo-mcp` as a subprocess
|
|
6
|
+
* and communicates via JSON-RPC 2.0.
|
|
7
|
+
*/
|
|
8
|
+
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
9
|
+
export declare class MnemoBridge {
|
|
10
|
+
private static instance;
|
|
11
|
+
private client;
|
|
12
|
+
private transport;
|
|
13
|
+
private connecting;
|
|
14
|
+
private availableTools;
|
|
15
|
+
private constructor();
|
|
16
|
+
static getInstance(): MnemoBridge;
|
|
17
|
+
/** Connect to mnemo-mcp server, reusing existing connection if available */
|
|
18
|
+
connect(): Promise<Client>;
|
|
19
|
+
private doConnect;
|
|
20
|
+
/**
|
|
21
|
+
* Call a tool on the mnemo-mcp server.
|
|
22
|
+
* Automatically connects if not already connected.
|
|
23
|
+
* Returns the parsed JSON response from the tool.
|
|
24
|
+
*/
|
|
25
|
+
callTool(name: string, args: Record<string, unknown>): Promise<any>;
|
|
26
|
+
/** Gracefully shut down the MCP connection and subprocess */
|
|
27
|
+
shutdown(): Promise<void>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/bridge.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAA;AAUlE,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAa;IACpC,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,SAAS,CAAoC;IACrD,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,cAAc,CAA2B;IAEjD,OAAO;WAEO,WAAW,IAAI,WAAW;IAOxC,4EAA4E;IAC/D,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;YAezB,SAAS;IA6BvB;;;;OAIG;IACU,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAmChF,6DAA6D;IAChD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAQvC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Client Bridge to mnemo-mcp
|
|
3
|
+
*
|
|
4
|
+
* Singleton class that manages a persistent MCP connection to the mnemo-mcp
|
|
5
|
+
* Python server via stdio transport. Spawns `uvx mnemo-mcp` as a subprocess
|
|
6
|
+
* and communicates via JSON-RPC 2.0.
|
|
7
|
+
*/
|
|
8
|
+
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
9
|
+
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
|
|
10
|
+
import { CallToolResultSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
11
|
+
export class MnemoBridge {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.client = null;
|
|
14
|
+
this.transport = null;
|
|
15
|
+
this.connecting = null;
|
|
16
|
+
this.availableTools = null;
|
|
17
|
+
}
|
|
18
|
+
static getInstance() {
|
|
19
|
+
if (!MnemoBridge.instance) {
|
|
20
|
+
MnemoBridge.instance = new MnemoBridge();
|
|
21
|
+
}
|
|
22
|
+
return MnemoBridge.instance;
|
|
23
|
+
}
|
|
24
|
+
/** Connect to mnemo-mcp server, reusing existing connection if available */
|
|
25
|
+
async connect() {
|
|
26
|
+
if (this.client)
|
|
27
|
+
return this.client;
|
|
28
|
+
// If already connecting, wait for that promise to resolve
|
|
29
|
+
if (this.connecting)
|
|
30
|
+
return this.connecting;
|
|
31
|
+
this.connecting = this.doConnect();
|
|
32
|
+
try {
|
|
33
|
+
const client = await this.connecting;
|
|
34
|
+
return client;
|
|
35
|
+
}
|
|
36
|
+
finally {
|
|
37
|
+
this.connecting = null;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async doConnect() {
|
|
41
|
+
// Use standard MCP stdio transport to run uvx mnemo-mcp
|
|
42
|
+
// The @modelcontextprotocol/sdk uses cross-spawn internally which handles
|
|
43
|
+
// Windows execution automatically, so we just use 'uvx' (not 'uvx.cmd')
|
|
44
|
+
this.transport = new StdioClientTransport({
|
|
45
|
+
command: 'uvx',
|
|
46
|
+
args: ['mnemo-mcp'],
|
|
47
|
+
stderr: 'inherit'
|
|
48
|
+
});
|
|
49
|
+
this.client = new Client({
|
|
50
|
+
name: 'mnemo-plugin',
|
|
51
|
+
version: '0.0.0'
|
|
52
|
+
}, {
|
|
53
|
+
capabilities: {}
|
|
54
|
+
});
|
|
55
|
+
await this.client.connect(this.transport);
|
|
56
|
+
// Cache available tool names on first connect
|
|
57
|
+
const toolsResult = await this.client.listTools();
|
|
58
|
+
this.availableTools = new Set(toolsResult.tools.map((t) => t.name));
|
|
59
|
+
return this.client;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Call a tool on the mnemo-mcp server.
|
|
63
|
+
* Automatically connects if not already connected.
|
|
64
|
+
* Returns the parsed JSON response from the tool.
|
|
65
|
+
*/
|
|
66
|
+
async callTool(name, args) {
|
|
67
|
+
const client = await this.connect();
|
|
68
|
+
// Validate tool exists using cached list
|
|
69
|
+
if (this.availableTools && !this.availableTools.has(name)) {
|
|
70
|
+
throw new Error(`Tool "${name}" not found in mnemo-mcp server. Available: ${[...this.availableTools].join(', ')}`);
|
|
71
|
+
}
|
|
72
|
+
const result = await client.callTool({
|
|
73
|
+
name,
|
|
74
|
+
arguments: args
|
|
75
|
+
}, CallToolResultSchema);
|
|
76
|
+
if (result.isError) {
|
|
77
|
+
const errorText = result.content.find((c) => c.type === 'text')?.text || 'Unknown mnemo-mcp error';
|
|
78
|
+
throw new Error(`mnemo-mcp error: ${errorText}`);
|
|
79
|
+
}
|
|
80
|
+
const textContent = result.content.find((c) => c.type === 'text')?.text;
|
|
81
|
+
if (!textContent) {
|
|
82
|
+
throw new Error('mnemo-mcp returned empty content');
|
|
83
|
+
}
|
|
84
|
+
try {
|
|
85
|
+
return JSON.parse(textContent);
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
// If not valid JSON, return the raw text
|
|
89
|
+
return textContent;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/** Gracefully shut down the MCP connection and subprocess */
|
|
93
|
+
async shutdown() {
|
|
94
|
+
if (this.transport) {
|
|
95
|
+
await this.transport.close();
|
|
96
|
+
this.transport = null;
|
|
97
|
+
this.client = null;
|
|
98
|
+
this.availableTools = null;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-Capture Hook
|
|
3
|
+
*
|
|
4
|
+
* Buffers user messages from chat and extracts constraint-like patterns
|
|
5
|
+
* (always/never/must/prefer/don't) when the session goes idle. Captured
|
|
6
|
+
* constraints are stored as auto-captured rules in mnemo-mcp.
|
|
7
|
+
*
|
|
8
|
+
* Uses a content hash to prevent duplicate captures within the same session.
|
|
9
|
+
*/
|
|
10
|
+
import type { Event } from '@opencode-ai/sdk';
|
|
11
|
+
/** Chat message hook: buffer user text parts */
|
|
12
|
+
export declare const messageHook: (_input: unknown, output: {
|
|
13
|
+
parts: {
|
|
14
|
+
type: string;
|
|
15
|
+
text?: string;
|
|
16
|
+
}[];
|
|
17
|
+
}) => Promise<void>;
|
|
18
|
+
/** Event hook: process buffer on session idle */
|
|
19
|
+
export declare const autoCaptureHook: (input: {
|
|
20
|
+
event: Event;
|
|
21
|
+
}, directory: string) => Promise<void>;
|
|
22
|
+
//# sourceMappingURL=auto-capture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-capture.d.ts","sourceRoot":"","sources":["../../../src/hooks/auto-capture.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAsC7C,gDAAgD;AAChD,eAAO,MAAM,WAAW,GAAU,QAAQ,OAAO,EAAE,QAAQ;IAAE,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,kBAUtG,CAAA;AAED,iDAAiD;AACjD,eAAO,MAAM,eAAe,GAAU,OAAO;IAAE,KAAK,EAAE,KAAK,CAAA;CAAE,EAAE,WAAW,MAAM,kBAS/E,CAAA"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-Capture Hook
|
|
3
|
+
*
|
|
4
|
+
* Buffers user messages from chat and extracts constraint-like patterns
|
|
5
|
+
* (always/never/must/prefer/don't) when the session goes idle. Captured
|
|
6
|
+
* constraints are stored as auto-captured rules in mnemo-mcp.
|
|
7
|
+
*
|
|
8
|
+
* Uses a content hash to prevent duplicate captures within the same session.
|
|
9
|
+
*/
|
|
10
|
+
import { MnemoBridge } from '../bridge.js';
|
|
11
|
+
/** Buffer of user message texts accumulated during the session */
|
|
12
|
+
const sessionBuffer = [];
|
|
13
|
+
/** Set of content hashes already captured this session (dedup) */
|
|
14
|
+
const capturedHashes = new Set();
|
|
15
|
+
/** Timestamp of last capture to enforce cooldown */
|
|
16
|
+
let lastCaptureTime = 0;
|
|
17
|
+
/** Minimum idle time before processing buffer (60 seconds) */
|
|
18
|
+
const IDLE_THRESHOLD = 60_000;
|
|
19
|
+
/** Maximum content length to store per auto-capture */
|
|
20
|
+
const MAX_CAPTURE_LENGTH = 500;
|
|
21
|
+
/** Regex to detect constraint-like user statements */
|
|
22
|
+
const CONSTRAINT_REGEX = /\b(always|never|must|prefer|don't|do not|should not|make sure|ensure|require)\b/i;
|
|
23
|
+
/** Simple string hash for deduplication */
|
|
24
|
+
function hashContent(content) {
|
|
25
|
+
let hash = 0;
|
|
26
|
+
for (let i = 0; i < content.length; i++) {
|
|
27
|
+
const char = content.charCodeAt(i);
|
|
28
|
+
hash = ((hash << 5) - hash + char) | 0;
|
|
29
|
+
}
|
|
30
|
+
return hash.toString(36);
|
|
31
|
+
}
|
|
32
|
+
/** Extract project name from directory path */
|
|
33
|
+
function getProjectName(directory) {
|
|
34
|
+
const cleanDir = directory.replace(/\\/g, '/');
|
|
35
|
+
const parts = cleanDir.split('/');
|
|
36
|
+
return parts[parts.length - 1] || 'unknown';
|
|
37
|
+
}
|
|
38
|
+
/** Chat message hook: buffer user text parts */
|
|
39
|
+
export const messageHook = async (_input, output) => {
|
|
40
|
+
const userText = output.parts
|
|
41
|
+
.filter((p) => p.type === 'text' && p.text)
|
|
42
|
+
.map((p) => p.text)
|
|
43
|
+
.join('\n')
|
|
44
|
+
.trim();
|
|
45
|
+
if (userText) {
|
|
46
|
+
sessionBuffer.push(userText);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
/** Event hook: process buffer on session idle */
|
|
50
|
+
export const autoCaptureHook = async (input, directory) => {
|
|
51
|
+
if (input.event.type !== 'session.idle')
|
|
52
|
+
return;
|
|
53
|
+
const now = Date.now();
|
|
54
|
+
if (now - lastCaptureTime <= IDLE_THRESHOLD)
|
|
55
|
+
return;
|
|
56
|
+
if (sessionBuffer.length === 0)
|
|
57
|
+
return;
|
|
58
|
+
await processCapture(directory);
|
|
59
|
+
lastCaptureTime = now;
|
|
60
|
+
};
|
|
61
|
+
/** Extract constraints from buffered messages and store in mnemo-mcp */
|
|
62
|
+
async function processCapture(directory) {
|
|
63
|
+
try {
|
|
64
|
+
const bridge = MnemoBridge.getInstance();
|
|
65
|
+
const projectName = getProjectName(directory);
|
|
66
|
+
const content = sessionBuffer.join('\n');
|
|
67
|
+
sessionBuffer.length = 0;
|
|
68
|
+
// Only capture if content looks like a constraint/preference
|
|
69
|
+
if (!CONSTRAINT_REGEX.test(content))
|
|
70
|
+
return;
|
|
71
|
+
// Dedup check
|
|
72
|
+
const hash = hashContent(content);
|
|
73
|
+
if (capturedHashes.has(hash))
|
|
74
|
+
return;
|
|
75
|
+
capturedHashes.add(hash);
|
|
76
|
+
const trimmedContent = content.length > MAX_CAPTURE_LENGTH ? `${content.slice(0, MAX_CAPTURE_LENGTH)}...` : content;
|
|
77
|
+
await bridge.callTool('memory', {
|
|
78
|
+
action: 'add',
|
|
79
|
+
content: `[Auto-captured for ${projectName}]: ${trimmedContent}`,
|
|
80
|
+
category: 'auto-capture',
|
|
81
|
+
tags: [projectName, 'preference']
|
|
82
|
+
});
|
|
83
|
+
console.log(`[Mnemo] Auto-captured a new rule for ${projectName}`);
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
console.error(`[Mnemo] Error in auto-capture: ${error}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=auto-capture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-capture.js","sourceRoot":"","sources":["../../../src/hooks/auto-capture.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compaction Hook
|
|
3
|
+
*
|
|
4
|
+
* When OpenCode compacts the session context window, this hook injects
|
|
5
|
+
* relevant memories into the compaction context so they survive the
|
|
6
|
+
* summarization process. This prevents memory loss across long sessions.
|
|
7
|
+
*/
|
|
8
|
+
export declare const compactionHook: (_input: {
|
|
9
|
+
sessionID: string;
|
|
10
|
+
}, output: {
|
|
11
|
+
context: string[];
|
|
12
|
+
prompt?: string;
|
|
13
|
+
}) => Promise<void>;
|
|
14
|
+
//# sourceMappingURL=compaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compaction.d.ts","sourceRoot":"","sources":["../../../src/hooks/compaction.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,eAAO,MAAM,cAAc,GAAU,QAAQ;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,EAAE,QAAQ;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,kBAkCjH,CAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compaction Hook
|
|
3
|
+
*
|
|
4
|
+
* When OpenCode compacts the session context window, this hook injects
|
|
5
|
+
* relevant memories into the compaction context so they survive the
|
|
6
|
+
* summarization process. This prevents memory loss across long sessions.
|
|
7
|
+
*/
|
|
8
|
+
import { MnemoBridge } from '../bridge.js';
|
|
9
|
+
export const compactionHook = async (_input, output) => {
|
|
10
|
+
try {
|
|
11
|
+
const bridge = MnemoBridge.getInstance();
|
|
12
|
+
// Fetch recent/important memories to preserve during compaction
|
|
13
|
+
const statsRes = await bridge.callTool('memory', {
|
|
14
|
+
action: 'stats'
|
|
15
|
+
});
|
|
16
|
+
const totalMemories = statsRes?.total_memories ?? 0;
|
|
17
|
+
if (totalMemories > 0) {
|
|
18
|
+
// Load top memories to include in compaction context
|
|
19
|
+
const listRes = await bridge.callTool('memory', {
|
|
20
|
+
action: 'list',
|
|
21
|
+
limit: 10
|
|
22
|
+
});
|
|
23
|
+
if (listRes?.results?.length > 0) {
|
|
24
|
+
const memories = listRes.results.map((m) => `- [${m.category}] ${m.content}`).join('\n');
|
|
25
|
+
output.context.push(`[Mnemo Persistent Memory - Preserve These]\nThe following facts and preferences are stored in persistent memory and must be preserved:\n${memories}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// Always add instruction to preserve preferences during summarization
|
|
29
|
+
output.context.push('When summarizing this session, explicitly preserve any user preferences, technical constraints, architectural decisions, or project rules that were discussed. These should be saved to persistent memory if not already stored.');
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
console.error(`[Mnemo] Error in compaction hook: ${error}`);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=compaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../../src/hooks/compaction.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAQ1C,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,MAA6B,EAAE,MAA8C,EAAE,EAAE;IACpH,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,EAAE,CAAA;QAExC,gEAAgE;QAChE,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE;YAC/C,MAAM,EAAE,OAAO;SAChB,CAAC,CAAA;QAEF,MAAM,aAAa,GAAG,QAAQ,EAAE,cAAc,IAAI,CAAC,CAAA;QAEnD,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACtB,qDAAqD;YACrD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE;gBAC9C,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,EAAE;aACV,CAAC,CAAA;YAEF,IAAI,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjC,MAAM,QAAQ,GAAI,OAAO,CAAC,OAA0B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAE5G,MAAM,CAAC,OAAO,CAAC,IAAI,CACjB,2IAA2I,QAAQ,EAAE,CACtJ,CAAA;YACH,CAAC;QACH,CAAC;QAED,sEAAsE;QACtE,MAAM,CAAC,OAAO,CAAC,IAAI,CACjB,kOAAkO,CACnO,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,qCAAqC,KAAK,EAAE,CAAC,CAAA;IAC7D,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System Prompt Hook
|
|
3
|
+
*
|
|
4
|
+
* Injects relevant memories into the system prompt using adaptive budget
|
|
5
|
+
* based on the model's context window. Inspired by minzique-plugin's
|
|
6
|
+
* tiered priority injection system.
|
|
7
|
+
*/
|
|
8
|
+
import type { Model } from '@opencode-ai/sdk';
|
|
9
|
+
export declare const systemPromptHook: (input: {
|
|
10
|
+
sessionID?: string;
|
|
11
|
+
model: Model;
|
|
12
|
+
}, output: {
|
|
13
|
+
system: string[];
|
|
14
|
+
}, directory: string) => Promise<void>;
|
|
15
|
+
//# sourceMappingURL=system-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../../src/hooks/system-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AA+C7C,eAAO,MAAM,gBAAgB,GAC3B,OAAO;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,EAC3C,QAAQ;IAAE,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,EAC5B,WAAW,MAAM,kBA2ClB,CAAA"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System Prompt Hook
|
|
3
|
+
*
|
|
4
|
+
* Injects relevant memories into the system prompt using adaptive budget
|
|
5
|
+
* based on the model's context window. Inspired by minzique-plugin's
|
|
6
|
+
* tiered priority injection system.
|
|
7
|
+
*/
|
|
8
|
+
import { MnemoBridge } from '../bridge.js';
|
|
9
|
+
/** Maximum percentage of context window to use for memory injection */
|
|
10
|
+
const BUDGET_PERCENT = 0.025;
|
|
11
|
+
/** Budget bounds in characters */
|
|
12
|
+
const MIN_BUDGET = 600;
|
|
13
|
+
const MAX_BUDGET = 8000;
|
|
14
|
+
/** Self-awareness block always injected (tells agent about available memory tools) */
|
|
15
|
+
const SELF_AWARENESS = `You have persistent memory via the Mnemo system. You can use:
|
|
16
|
+
- mnemo_search: Search stored memories, facts, preferences, decisions
|
|
17
|
+
- mnemo_remember: Permanently store new facts, rules, preferences
|
|
18
|
+
- mnemo_forget: Delete outdated or incorrect memories
|
|
19
|
+
Proactively search memory when entering a new codebase or when the user asks about past decisions.`;
|
|
20
|
+
/** Extract project name from directory path */
|
|
21
|
+
function getProjectName(directory) {
|
|
22
|
+
const cleanDir = directory.replace(/\\/g, '/');
|
|
23
|
+
const parts = cleanDir.split('/');
|
|
24
|
+
return parts[parts.length - 1] || 'unknown';
|
|
25
|
+
}
|
|
26
|
+
/** Compute injection budget based on model context limit */
|
|
27
|
+
function computeBudget(model) {
|
|
28
|
+
const contextLimit = model?.limit?.context;
|
|
29
|
+
if (!contextLimit || contextLimit <= 0)
|
|
30
|
+
return MIN_BUDGET;
|
|
31
|
+
const budget = Math.floor(contextLimit * BUDGET_PERCENT * 4); // ~4 chars per token
|
|
32
|
+
return Math.max(MIN_BUDGET, Math.min(MAX_BUDGET, budget));
|
|
33
|
+
}
|
|
34
|
+
/** Truncate text to fit within character budget */
|
|
35
|
+
function truncateToFit(text, budget) {
|
|
36
|
+
if (text.length <= budget)
|
|
37
|
+
return text;
|
|
38
|
+
return `${text.slice(0, budget - 3)}...`;
|
|
39
|
+
}
|
|
40
|
+
export const systemPromptHook = async (input, output, directory) => {
|
|
41
|
+
try {
|
|
42
|
+
const bridge = MnemoBridge.getInstance();
|
|
43
|
+
const projectName = getProjectName(directory);
|
|
44
|
+
const budget = computeBudget(input.model);
|
|
45
|
+
// Always inject self-awareness block (outside budget)
|
|
46
|
+
output.system.push(SELF_AWARENESS);
|
|
47
|
+
// Search memories relevant to current project
|
|
48
|
+
const searchRes = await bridge.callTool('memory', {
|
|
49
|
+
action: 'search',
|
|
50
|
+
query: projectName,
|
|
51
|
+
limit: 10
|
|
52
|
+
});
|
|
53
|
+
if (!searchRes || !searchRes.count || searchRes.count === 0)
|
|
54
|
+
return;
|
|
55
|
+
const results = searchRes.results;
|
|
56
|
+
// Build memory injection with budget constraint
|
|
57
|
+
let injection = `[Mnemo Context for "${projectName}"]\n`;
|
|
58
|
+
let usedBudget = injection.length;
|
|
59
|
+
for (const mem of results) {
|
|
60
|
+
const line = `- [${mem.category}] ${mem.content}\n`;
|
|
61
|
+
if (usedBudget + line.length > budget) {
|
|
62
|
+
// Try to fit a truncated version
|
|
63
|
+
const remaining = budget - usedBudget;
|
|
64
|
+
if (remaining > 20) {
|
|
65
|
+
injection += truncateToFit(line, remaining);
|
|
66
|
+
}
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
injection += line;
|
|
70
|
+
usedBudget += line.length;
|
|
71
|
+
}
|
|
72
|
+
output.system.push(injection);
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
console.error(`[Mnemo] Error injecting system prompt: ${error}`);
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=system-prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../../src/hooks/system-prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mnemo-plugin - Universal Memory Plugin for OpenCode & Claude Code
|
|
3
|
+
*
|
|
4
|
+
* Plugin entrypoint that registers tools and hooks with the OpenCode runtime.
|
|
5
|
+
* Connects to mnemo-mcp (Python MCP server) via stdio transport to provide
|
|
6
|
+
* persistent memory capabilities across coding sessions.
|
|
7
|
+
*/
|
|
8
|
+
import type { Plugin } from '@opencode-ai/plugin';
|
|
9
|
+
declare const plugin: Plugin;
|
|
10
|
+
export default plugin;
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAOjD,QAAA,MAAM,MAAM,EAAE,MAsCb,CAAA;AAED,eAAe,MAAM,CAAA"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mnemo-plugin - Universal Memory Plugin for OpenCode & Claude Code
|
|
3
|
+
*
|
|
4
|
+
* Plugin entrypoint that registers tools and hooks with the OpenCode runtime.
|
|
5
|
+
* Connects to mnemo-mcp (Python MCP server) via stdio transport to provide
|
|
6
|
+
* persistent memory capabilities across coding sessions.
|
|
7
|
+
*/
|
|
8
|
+
import { MnemoBridge } from './bridge.js';
|
|
9
|
+
import { autoCaptureHook, messageHook } from './hooks/auto-capture.js';
|
|
10
|
+
import { compactionHook } from './hooks/compaction.js';
|
|
11
|
+
import { systemPromptHook } from './hooks/system-prompt.js';
|
|
12
|
+
import { mnemoForget, mnemoRemember, mnemoSearch } from './tools/memory.js';
|
|
13
|
+
const plugin = async (input) => {
|
|
14
|
+
const bridge = MnemoBridge.getInstance();
|
|
15
|
+
// Start bridge connection in background (non-blocking)
|
|
16
|
+
setTimeout(async () => {
|
|
17
|
+
try {
|
|
18
|
+
await bridge.connect();
|
|
19
|
+
console.log(`[Mnemo] Connected to persistent memory for ${input.directory}`);
|
|
20
|
+
}
|
|
21
|
+
catch (e) {
|
|
22
|
+
console.error(`[Mnemo] Background connect failed: ${e}`);
|
|
23
|
+
}
|
|
24
|
+
}, 100);
|
|
25
|
+
return {
|
|
26
|
+
// Tools
|
|
27
|
+
tool: {
|
|
28
|
+
mnemo_search: mnemoSearch,
|
|
29
|
+
mnemo_remember: mnemoRemember,
|
|
30
|
+
mnemo_forget: mnemoForget
|
|
31
|
+
},
|
|
32
|
+
// Hooks
|
|
33
|
+
'experimental.chat.system.transform': async (inParams, outParams) => {
|
|
34
|
+
await systemPromptHook(inParams, outParams, input.directory);
|
|
35
|
+
},
|
|
36
|
+
'chat.message': async (inParams, outParams) => {
|
|
37
|
+
await messageHook(inParams, outParams);
|
|
38
|
+
},
|
|
39
|
+
event: async (inParams) => {
|
|
40
|
+
await autoCaptureHook(inParams, input.directory);
|
|
41
|
+
},
|
|
42
|
+
'experimental.session.compacting': async (inParams, outParams) => {
|
|
43
|
+
await compactionHook(inParams, outParams);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
export default plugin;
|
|
48
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE3E,MAAM,MAAM,GAAW,KAAK,EAAE,KAAK,EAAE,EAAE;IACrC,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,EAAE,CAAA;IAExC,uDAAuD;IACvD,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;YACtB,OAAO,CAAC,GAAG,CAAC,8CAA8C,KAAK,CAAC,SAAS,EAAE,CAAC,CAAA;QAC9E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,EAAE,CAAC,CAAA;QAC1D,CAAC;IACH,CAAC,EAAE,GAAG,CAAC,CAAA;IAEP,OAAO;QACL,QAAQ;QACR,IAAI,EAAE;YACJ,YAAY,EAAE,WAAW;YACzB,cAAc,EAAE,aAAa;YAC7B,YAAY,EAAE,WAAW;SAC1B;QAED,QAAQ;QACR,oCAAoC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;YAClE,MAAM,gBAAgB,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;QAC9D,CAAC;QAED,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;YAC5C,MAAM,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;QACxC,CAAC;QAED,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;YACxB,MAAM,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;QAClD,CAAC;QAED,iCAAiC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;YAC/D,MAAM,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;QAC3C,CAAC;KACF,CAAA;AACH,CAAC,CAAA;AAED,eAAe,MAAM,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Tool Definitions
|
|
3
|
+
*
|
|
4
|
+
* Three user-facing OpenCode tools that wrap the mnemo-mcp `memory` composite tool:
|
|
5
|
+
* - mnemo_search: Search stored memories by query
|
|
6
|
+
* - mnemo_remember: Store a new persistent memory
|
|
7
|
+
* - mnemo_forget: Delete an outdated memory by ID
|
|
8
|
+
*/
|
|
9
|
+
import { type ToolDefinition } from '@opencode-ai/plugin/tool';
|
|
10
|
+
export declare const mnemoSearch: ToolDefinition;
|
|
11
|
+
export declare const mnemoRemember: ToolDefinition;
|
|
12
|
+
export declare const mnemoForget: ToolDefinition;
|
|
13
|
+
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/tools/memory.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,cAAc,EAAQ,MAAM,0BAA0B,CAAA;AAkBpE,eAAO,MAAM,WAAW,EAAE,cAwCxB,CAAA;AAEF,eAAO,MAAM,aAAa,EAAE,cAsC1B,CAAA;AAEF,eAAO,MAAM,WAAW,EAAE,cAuBxB,CAAA"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Tool Definitions
|
|
3
|
+
*
|
|
4
|
+
* Three user-facing OpenCode tools that wrap the mnemo-mcp `memory` composite tool:
|
|
5
|
+
* - mnemo_search: Search stored memories by query
|
|
6
|
+
* - mnemo_remember: Store a new persistent memory
|
|
7
|
+
* - mnemo_forget: Delete an outdated memory by ID
|
|
8
|
+
*/
|
|
9
|
+
import { tool } from '@opencode-ai/plugin/tool';
|
|
10
|
+
import { MnemoBridge } from '../bridge.js';
|
|
11
|
+
/** Extract project name from directory path */
|
|
12
|
+
function getProjectName(directory) {
|
|
13
|
+
const cleanDir = directory.replace(/\\/g, '/');
|
|
14
|
+
const parts = cleanDir.split('/');
|
|
15
|
+
return parts[parts.length - 1] || 'unknown';
|
|
16
|
+
}
|
|
17
|
+
export const mnemoSearch = tool({
|
|
18
|
+
description: 'Search the persistent memory system (mnemo) for project rules, facts, preferences, or context. Use this proactively when entering a new codebase or when the user asks about past decisions.',
|
|
19
|
+
args: {
|
|
20
|
+
query: tool.schema.string().describe('The search query (e.g. "What database do we use?", "coding standards")'),
|
|
21
|
+
category: tool.schema
|
|
22
|
+
.string()
|
|
23
|
+
.optional()
|
|
24
|
+
.describe('Filter by category (e.g. "general", "preference", "fact", "architecture")'),
|
|
25
|
+
limit: tool.schema.number().min(1).max(20).default(5).describe('Max results to return')
|
|
26
|
+
},
|
|
27
|
+
async execute(args, context) {
|
|
28
|
+
const bridge = MnemoBridge.getInstance();
|
|
29
|
+
try {
|
|
30
|
+
context.metadata({ title: `Searching mnemo for: ${args.query}` });
|
|
31
|
+
const response = await bridge.callTool('memory', {
|
|
32
|
+
action: 'search',
|
|
33
|
+
query: args.query,
|
|
34
|
+
category: args.category,
|
|
35
|
+
limit: args.limit
|
|
36
|
+
});
|
|
37
|
+
if (!response.count || response.count === 0) {
|
|
38
|
+
return `No memories found matching "${args.query}".`;
|
|
39
|
+
}
|
|
40
|
+
let result = `Found ${response.count} memories:\n\n`;
|
|
41
|
+
for (const [i, mem] of response.results.entries()) {
|
|
42
|
+
const tags = mem.tags?.length ? ` [Tags: ${mem.tags.join(', ')}]` : '';
|
|
43
|
+
result += `${i + 1}. [ID: ${mem.id}] [${mem.category}]${tags} ${mem.content}\n`;
|
|
44
|
+
}
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
catch (e) {
|
|
48
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
49
|
+
return `Failed to search memory: ${msg}`;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
export const mnemoRemember = tool({
|
|
54
|
+
description: 'Store a new persistent memory in the mnemo system. Use this to permanently save user preferences, project constraints, architectural decisions, or key facts so they are never forgotten across sessions.',
|
|
55
|
+
args: {
|
|
56
|
+
content: tool.schema.string().describe('The fact, rule, or preference to remember'),
|
|
57
|
+
category: tool.schema
|
|
58
|
+
.string()
|
|
59
|
+
.default('general')
|
|
60
|
+
.describe('Categorize this memory (e.g., "preference", "fact", "architecture", "decision", "bugfix")'),
|
|
61
|
+
tags: tool.schema.array(tool.schema.string()).optional().describe('Keywords to help retrieve this memory later')
|
|
62
|
+
},
|
|
63
|
+
async execute(args, context) {
|
|
64
|
+
const bridge = MnemoBridge.getInstance();
|
|
65
|
+
try {
|
|
66
|
+
const preview = args.content.length > 40 ? `${args.content.slice(0, 40)}...` : args.content;
|
|
67
|
+
context.metadata({ title: `Remembering: ${preview}` });
|
|
68
|
+
// Auto-tag with project name
|
|
69
|
+
const projectName = getProjectName(context.directory);
|
|
70
|
+
const finalTags = args.tags ? [...args.tags] : [];
|
|
71
|
+
if (projectName && !finalTags.includes(projectName)) {
|
|
72
|
+
finalTags.push(projectName);
|
|
73
|
+
}
|
|
74
|
+
const response = await bridge.callTool('memory', {
|
|
75
|
+
action: 'add',
|
|
76
|
+
content: args.content,
|
|
77
|
+
category: args.category,
|
|
78
|
+
tags: finalTags
|
|
79
|
+
});
|
|
80
|
+
return `Successfully stored memory with ID: ${response.id}. This fact is now permanently saved and will be available in future sessions.`;
|
|
81
|
+
}
|
|
82
|
+
catch (e) {
|
|
83
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
84
|
+
return `Failed to store memory: ${msg}`;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
export const mnemoForget = tool({
|
|
89
|
+
description: 'Delete a specific memory from the mnemo system by its ID. Use this when a preference, fact, or decision is no longer accurate or relevant.',
|
|
90
|
+
args: {
|
|
91
|
+
memory_id: tool.schema.string().describe('The ID of the memory to delete (obtained from mnemo_search results)')
|
|
92
|
+
},
|
|
93
|
+
async execute(args, context) {
|
|
94
|
+
const bridge = MnemoBridge.getInstance();
|
|
95
|
+
try {
|
|
96
|
+
context.metadata({ title: `Deleting memory: ${args.memory_id}` });
|
|
97
|
+
const response = await bridge.callTool('memory', {
|
|
98
|
+
action: 'delete',
|
|
99
|
+
memory_id: args.memory_id
|
|
100
|
+
});
|
|
101
|
+
return `Successfully deleted memory ${response.id}. The fact has been permanently removed.`;
|
|
102
|
+
}
|
|
103
|
+
catch (e) {
|
|
104
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
105
|
+
return `Failed to delete memory: ${msg}`;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/tools/memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge.test.d.ts","sourceRoot":"","sources":["../../tests/bridge.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration tests for MnemoBridge MCP client.
|
|
3
|
+
* Requires uvx and mnemo-mcp to be available in PATH.
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from 'node:fs';
|
|
6
|
+
import * as os from 'node:os';
|
|
7
|
+
import * as path from 'node:path';
|
|
8
|
+
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
|
|
9
|
+
import { MnemoBridge } from '../src/bridge.js';
|
|
10
|
+
describe('MnemoBridge MCP Client', () => {
|
|
11
|
+
let bridge;
|
|
12
|
+
const tempDbPath = path.join(os.tmpdir(), `mnemo-test-${Date.now()}.db`);
|
|
13
|
+
beforeAll(async () => {
|
|
14
|
+
process.env.DB_PATH = tempDbPath;
|
|
15
|
+
bridge = MnemoBridge.getInstance();
|
|
16
|
+
await bridge.connect();
|
|
17
|
+
});
|
|
18
|
+
afterAll(async () => {
|
|
19
|
+
await bridge.shutdown();
|
|
20
|
+
if (fs.existsSync(tempDbPath)) {
|
|
21
|
+
fs.unlinkSync(tempDbPath);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
it('should connect and list tools via MCP', async () => {
|
|
25
|
+
const client = await bridge.connect();
|
|
26
|
+
const tools = await client.listTools();
|
|
27
|
+
expect(tools.tools.length).toBeGreaterThan(0);
|
|
28
|
+
const hasMemoryTool = tools.tools.some((t) => t.name === 'memory');
|
|
29
|
+
expect(hasMemoryTool).toBe(true);
|
|
30
|
+
});
|
|
31
|
+
it('should add and search memory using callTool', async () => {
|
|
32
|
+
const testContent = `MCP integration test secret ${Date.now()}`;
|
|
33
|
+
const addRes = await bridge.callTool('memory', {
|
|
34
|
+
action: 'add',
|
|
35
|
+
content: testContent,
|
|
36
|
+
category: 'test',
|
|
37
|
+
tags: ['integration-test', 'mcp']
|
|
38
|
+
});
|
|
39
|
+
expect(addRes.status).toBe('saved');
|
|
40
|
+
expect(addRes.id).toBeDefined();
|
|
41
|
+
const memId = addRes.id;
|
|
42
|
+
// Brief delay to ensure db is updated before search
|
|
43
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
44
|
+
const searchRes = await bridge.callTool('memory', {
|
|
45
|
+
action: 'search',
|
|
46
|
+
query: testContent,
|
|
47
|
+
limit: 10
|
|
48
|
+
});
|
|
49
|
+
expect(searchRes.count).toBeGreaterThan(0);
|
|
50
|
+
expect(searchRes.results.length).toBeGreaterThan(0);
|
|
51
|
+
// Find the specific memory by ID (don't assume ordering)
|
|
52
|
+
const foundMem = searchRes.results.find((m) => m.id === memId);
|
|
53
|
+
expect(foundMem).toBeDefined();
|
|
54
|
+
expect(foundMem.content).toContain(testContent);
|
|
55
|
+
});
|
|
56
|
+
it('should delete memory by ID', async () => {
|
|
57
|
+
const addRes = await bridge.callTool('memory', {
|
|
58
|
+
action: 'add',
|
|
59
|
+
content: `Temporary test memory ${Date.now()}`,
|
|
60
|
+
category: 'test',
|
|
61
|
+
tags: ['delete-test']
|
|
62
|
+
});
|
|
63
|
+
expect(addRes.id).toBeDefined();
|
|
64
|
+
const deleteRes = await bridge.callTool('memory', {
|
|
65
|
+
action: 'delete',
|
|
66
|
+
memory_id: addRes.id
|
|
67
|
+
});
|
|
68
|
+
expect(deleteRes.id).toBe(addRes.id);
|
|
69
|
+
});
|
|
70
|
+
it('should get memory stats', async () => {
|
|
71
|
+
const statsRes = await bridge.callTool('memory', {
|
|
72
|
+
action: 'stats'
|
|
73
|
+
});
|
|
74
|
+
expect(statsRes).toBeDefined();
|
|
75
|
+
expect(typeof statsRes.total_memories).toBe('number');
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
//# sourceMappingURL=bridge.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge.test.js","sourceRoot":"","sources":["../../tests/bridge.test.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,IAAI,MAAmB,CAAA;IACvB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,cAAc,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAExE,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,UAAU,CAAA;QAChC,MAAM,GAAG,WAAW,CAAC,WAAW,EAAE,CAAA;QAClC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;IACxB,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,KAAK,IAAI,EAAE;QAClB,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAA;QACvB,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;QACrC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAA;QAEtC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAC7C,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;QAClE,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,WAAW,GAAG,+BAA+B,IAAI,CAAC,GAAG,EAAE,EAAE,CAAA;QAE/D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE;YAC7C,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,WAAW;YACpB,QAAQ,EAAE,MAAM;YAChB,IAAI,EAAE,CAAC,kBAAkB,EAAE,KAAK,CAAC;SAClC,CAAC,CAAA;QAEF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACnC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;QAE/B,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAA;QAEvB,oDAAoD;QACpD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;QAExD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE;YAChD,MAAM,EAAE,QAAQ;YAChB,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE,EAAE;SACV,CAAC,CAAA;QAEF,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAC1C,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAEnD,yDAAyD;QACzD,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAA;QACnE,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAA;QAC9B,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE;YAC7C,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,yBAAyB,IAAI,CAAC,GAAG,EAAE,EAAE;YAC9C,QAAQ,EAAE,MAAM;YAChB,IAAI,EAAE,CAAC,aAAa,CAAC;SACtB,CAAC,CAAA;QAEF,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;QAE/B,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE;YAChD,MAAM,EAAE,QAAQ;YAChB,SAAS,EAAE,MAAM,CAAC,EAAE;SACrB,CAAC,CAAA;QAEF,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE;YAC/C,MAAM,EAAE,OAAO;SAChB,CAAC,CAAA;QAEF,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAA;QAC9B,MAAM,CAAC,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"fileNames":["../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.disposable.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.esnext.float16.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/.pnpm/@vitest+pretty-format@4.0.18/node_modules/@vitest/pretty-format/dist/index.d.ts","../node_modules/.pnpm/@vitest+utils@4.0.18/node_modules/@vitest/utils/dist/display.d.ts","../node_modules/.pnpm/@vitest+utils@4.0.18/node_modules/@vitest/utils/dist/types.d.ts","../node_modules/.pnpm/@vitest+utils@4.0.18/node_modules/@vitest/utils/dist/helpers.d.ts","../node_modules/.pnpm/@vitest+utils@4.0.18/node_modules/@vitest/utils/dist/timers.d.ts","../node_modules/.pnpm/@vitest+utils@4.0.18/node_modules/@vitest/utils/dist/index.d.ts","../node_modules/.pnpm/@vitest+runner@4.0.18/node_modules/@vitest/runner/dist/tasks.d-C7UxawJ9.d.ts","../node_modules/.pnpm/@vitest+utils@4.0.18/node_modules/@vitest/utils/dist/types.d-BCElaP-c.d.ts","../node_modules/.pnpm/@vitest+utils@4.0.18/node_modules/@vitest/utils/dist/diff.d.ts","../node_modules/.pnpm/@vitest+runner@4.0.18/node_modules/@vitest/runner/dist/types.d.ts","../node_modules/.pnpm/@vitest+runner@4.0.18/node_modules/@vitest/runner/dist/index.d.ts","../node_modules/.pnpm/vitest@4.0.18_@types+node@24.10.13_tsx@4.21.0/node_modules/vitest/dist/chunks/traces.d.402V_yFI.d.ts","../node_modules/.pnpm/vite@7.3.1_@types+node@24.10.13_tsx@4.21.0/node_modules/vite/types/hmrPayload.d.ts","../node_modules/.pnpm/vite@7.3.1_@types+node@24.10.13_tsx@4.21.0/node_modules/vite/dist/node/chunks/moduleRunnerTransport.d.ts","../node_modules/.pnpm/vite@7.3.1_@types+node@24.10.13_tsx@4.21.0/node_modules/vite/types/customEvent.d.ts","../node_modules/.pnpm/vite@7.3.1_@types+node@24.10.13_tsx@4.21.0/node_modules/vite/types/hot.d.ts","../node_modules/.pnpm/vite@7.3.1_@types+node@24.10.13_tsx@4.21.0/node_modules/vite/dist/node/module-runner.d.ts","../node_modules/.pnpm/@vitest+snapshot@4.0.18/node_modules/@vitest/snapshot/dist/environment.d-DHdQ1Csl.d.ts","../node_modules/.pnpm/@vitest+snapshot@4.0.18/node_modules/@vitest/snapshot/dist/rawSnapshot.d-lFsMJFUd.d.ts","../node_modules/.pnpm/@vitest+snapshot@4.0.18/node_modules/@vitest/snapshot/dist/index.d.ts","../node_modules/.pnpm/vitest@4.0.18_@types+node@24.10.13_tsx@4.21.0/node_modules/vitest/dist/chunks/config.d.Cy95HiCx.d.ts","../node_modules/.pnpm/vitest@4.0.18_@types+node@24.10.13_tsx@4.21.0/node_modules/vitest/dist/chunks/environment.d.CrsxCzP1.d.ts","../node_modules/.pnpm/vitest@4.0.18_@types+node@24.10.13_tsx@4.21.0/node_modules/vitest/dist/chunks/rpc.d.RH3apGEf.d.ts","../node_modules/.pnpm/vitest@4.0.18_@types+node@24.10.13_tsx@4.21.0/node_modules/vitest/dist/chunks/worker.d.Dyxm8DEL.d.ts","../node_modules/.pnpm/vitest@4.0.18_@types+node@24.10.13_tsx@4.21.0/node_modules/vitest/dist/chunks/browser.d.ChKACdzH.d.ts","../node_modules/.pnpm/@vitest+spy@4.0.18/node_modules/@vitest/spy/dist/index.d.ts","../node_modules/.pnpm/tinyrainbow@3.0.3/node_modules/tinyrainbow/dist/index.d.ts","../node_modules/.pnpm/@standard-schema+spec@1.1.0/node_modules/@standard-schema/spec/dist/index.d.ts","../node_modules/.pnpm/@types+deep-eql@4.0.2/node_modules/@types/deep-eql/index.d.ts","../node_modules/.pnpm/assertion-error@2.0.1/node_modules/assertion-error/index.d.ts","../node_modules/.pnpm/@types+chai@5.2.3/node_modules/@types/chai/index.d.ts","../node_modules/.pnpm/@vitest+expect@4.0.18/node_modules/@vitest/expect/dist/index.d.ts","../node_modules/.pnpm/@vitest+runner@4.0.18/node_modules/@vitest/runner/dist/utils.d.ts","../node_modules/.pnpm/tinybench@2.9.0/node_modules/tinybench/dist/index.d.ts","../node_modules/.pnpm/vitest@4.0.18_@types+node@24.10.13_tsx@4.21.0/node_modules/vitest/dist/chunks/benchmark.d.DAaHLpsq.d.ts","../node_modules/.pnpm/vitest@4.0.18_@types+node@24.10.13_tsx@4.21.0/node_modules/vitest/dist/chunks/global.d.B15mdLcR.d.ts","../node_modules/.pnpm/vitest@4.0.18_@types+node@24.10.13_tsx@4.21.0/node_modules/vitest/dist/chunks/suite.d.BJWk38HB.d.ts","../node_modules/.pnpm/vitest@4.0.18_@types+node@24.10.13_tsx@4.21.0/node_modules/vitest/dist/chunks/evaluatedModules.d.BxJ5omdx.d.ts","../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/utils.d.ts","../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/overloads.d.ts","../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/branding.d.ts","../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/messages.d.ts","../node_modules/.pnpm/expect-type@1.3.0/node_modules/expect-type/dist/index.d.ts","../node_modules/.pnpm/vitest@4.0.18_@types+node@24.10.13_tsx@4.21.0/node_modules/vitest/dist/index.d.ts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v3/helpers/typeAliases.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v3/helpers/util.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v3/ZodError.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v3/locales/en.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v3/errors.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v3/helpers/parseUtil.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v3/helpers/enumUtil.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v3/helpers/errorUtil.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v3/helpers/partialUtil.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v3/standard-schema.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v3/types.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v3/external.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v3/index.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/core/standard-schema.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/core/util.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/core/versions.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/core/schemas.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/core/checks.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/core/errors.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/core/core.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/core/parse.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/core/regexes.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/ar.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/az.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/be.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/ca.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/cs.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/da.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/de.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/en.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/eo.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/es.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/fa.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/fi.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/fr.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/fr-CA.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/he.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/hu.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/id.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/is.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/it.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/ja.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/ka.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/kh.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/km.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/ko.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/lt.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/mk.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/ms.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/nl.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/no.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/ota.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/ps.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/pl.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/pt.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/ru.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/sl.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/sv.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/ta.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/th.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/tr.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/ua.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/uk.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/ur.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/vi.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/zh-CN.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/zh-TW.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/yo.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/locales/index.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/core/registries.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/core/doc.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/core/api.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/core/json-schema.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/core/to-json-schema.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/core/index.d.cts","../node_modules/.pnpm/@modelcontextprotocol+sdk@1.26.0_zod@4.1.8/node_modules/@modelcontextprotocol/sdk/dist/esm/server/zod-compat.d.ts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/classic/errors.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/classic/parse.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/classic/schemas.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/classic/checks.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/classic/compat.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/classic/iso.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/classic/coerce.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/classic/external.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/classic/index.d.cts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/v4/index.d.cts","../node_modules/.pnpm/@modelcontextprotocol+sdk@1.26.0_zod@4.1.8/node_modules/@modelcontextprotocol/sdk/dist/esm/server/auth/types.d.ts","../node_modules/.pnpm/@modelcontextprotocol+sdk@1.26.0_zod@4.1.8/node_modules/@modelcontextprotocol/sdk/dist/esm/types.d.ts","../node_modules/.pnpm/@modelcontextprotocol+sdk@1.26.0_zod@4.1.8/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/transport.d.ts","../node_modules/.pnpm/@modelcontextprotocol+sdk@1.26.0_zod@4.1.8/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/types.d.ts","../node_modules/.pnpm/@modelcontextprotocol+sdk@1.26.0_zod@4.1.8/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/interfaces.d.ts","../node_modules/.pnpm/@modelcontextprotocol+sdk@1.26.0_zod@4.1.8/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/responseMessage.d.ts","../node_modules/.pnpm/@modelcontextprotocol+sdk@1.26.0_zod@4.1.8/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.d.ts","../node_modules/.pnpm/json-schema-typed@8.0.2/node_modules/json-schema-typed/draft_2020_12.d.ts","../node_modules/.pnpm/@modelcontextprotocol+sdk@1.26.0_zod@4.1.8/node_modules/@modelcontextprotocol/sdk/dist/esm/validation/types.d.ts","../node_modules/.pnpm/@modelcontextprotocol+sdk@1.26.0_zod@4.1.8/node_modules/@modelcontextprotocol/sdk/dist/esm/experimental/tasks/client.d.ts","../node_modules/.pnpm/@modelcontextprotocol+sdk@1.26.0_zod@4.1.8/node_modules/@modelcontextprotocol/sdk/dist/esm/client/index.d.ts","../node_modules/.pnpm/@modelcontextprotocol+sdk@1.26.0_zod@4.1.8/node_modules/@modelcontextprotocol/sdk/dist/esm/client/stdio.d.ts","../src/bridge.ts","../tests/bridge.test.ts","../node_modules/.pnpm/@opencode-ai+sdk@1.2.10/node_modules/@opencode-ai/sdk/dist/gen/types.gen.d.ts","../node_modules/.pnpm/@opencode-ai+sdk@1.2.10/node_modules/@opencode-ai/sdk/dist/gen/core/auth.gen.d.ts","../node_modules/.pnpm/@opencode-ai+sdk@1.2.10/node_modules/@opencode-ai/sdk/dist/gen/core/pathSerializer.gen.d.ts","../node_modules/.pnpm/@opencode-ai+sdk@1.2.10/node_modules/@opencode-ai/sdk/dist/gen/core/bodySerializer.gen.d.ts","../node_modules/.pnpm/@opencode-ai+sdk@1.2.10/node_modules/@opencode-ai/sdk/dist/gen/core/types.gen.d.ts","../node_modules/.pnpm/@opencode-ai+sdk@1.2.10/node_modules/@opencode-ai/sdk/dist/gen/core/serverSentEvents.gen.d.ts","../node_modules/.pnpm/@opencode-ai+sdk@1.2.10/node_modules/@opencode-ai/sdk/dist/gen/client/utils.gen.d.ts","../node_modules/.pnpm/@opencode-ai+sdk@1.2.10/node_modules/@opencode-ai/sdk/dist/gen/client/types.gen.d.ts","../node_modules/.pnpm/@opencode-ai+sdk@1.2.10/node_modules/@opencode-ai/sdk/dist/gen/core/params.gen.d.ts","../node_modules/.pnpm/@opencode-ai+sdk@1.2.10/node_modules/@opencode-ai/sdk/dist/gen/client/client.gen.d.ts","../node_modules/.pnpm/@opencode-ai+sdk@1.2.10/node_modules/@opencode-ai/sdk/dist/gen/client/index.d.ts","../node_modules/.pnpm/@opencode-ai+sdk@1.2.10/node_modules/@opencode-ai/sdk/dist/gen/sdk.gen.d.ts","../node_modules/.pnpm/@opencode-ai+sdk@1.2.10/node_modules/@opencode-ai/sdk/dist/client.d.ts","../node_modules/.pnpm/@opencode-ai+sdk@1.2.10/node_modules/@opencode-ai/sdk/dist/server.d.ts","../node_modules/.pnpm/@opencode-ai+sdk@1.2.10/node_modules/@opencode-ai/sdk/dist/index.d.ts","../node_modules/.pnpm/@opencode-ai+plugin@1.2.10/node_modules/@opencode-ai/plugin/dist/shell.d.ts","../node_modules/.pnpm/zod@4.1.8/node_modules/zod/index.d.cts","../node_modules/.pnpm/@opencode-ai+plugin@1.2.10/node_modules/@opencode-ai/plugin/dist/tool.d.ts","../node_modules/.pnpm/@opencode-ai+plugin@1.2.10/node_modules/@opencode-ai/plugin/dist/index.d.ts","../src/hooks/auto-capture.ts","../src/hooks/compaction.ts","../src/hooks/system-prompt.ts","../src/tools/memory.ts","../src/index.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/compatibility/iterators.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/globals.typedarray.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/buffer.buffer.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/globals.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/web-globals/abortcontroller.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/web-globals/crypto.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/web-globals/domexception.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/web-globals/events.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/utility.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/header.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/readable.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/fetch.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/formdata.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/connector.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/client-stats.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/client.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/errors.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/dispatcher.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/global-dispatcher.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/global-origin.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/pool-stats.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/pool.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/handlers.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/balanced-pool.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/h2c-client.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/agent.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-interceptor.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-call-history.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-agent.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-client.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-pool.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/snapshot-agent.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/mock-errors.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/proxy-agent.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/retry-handler.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/retry-agent.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/api.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/cache-interceptor.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/interceptors.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/util.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/cookies.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/patch.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/websocket.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/eventsource.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/content-type.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/cache.d.ts","../node_modules/.pnpm/undici-types@7.16.0/node_modules/undici-types/index.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/web-globals/fetch.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/web-globals/navigator.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/web-globals/storage.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/web-globals/streams.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/assert.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/assert/strict.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/async_hooks.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/buffer.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/child_process.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/cluster.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/console.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/constants.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/crypto.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/dgram.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/dns.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/dns/promises.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/domain.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/events.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/fs.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/fs/promises.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/http.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/http2.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/https.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/inspector.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/inspector.generated.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/module.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/net.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/os.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/path.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/perf_hooks.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/process.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/punycode.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/querystring.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/readline.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/readline/promises.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/repl.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/sea.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/sqlite.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/stream.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/stream/promises.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/stream/consumers.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/stream/web.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/string_decoder.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/test.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/timers.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/timers/promises.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/tls.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/trace_events.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/tty.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/url.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/util.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/v8.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/vm.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/wasi.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/worker_threads.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/zlib.d.ts","../node_modules/.pnpm/@types+node@24.10.13/node_modules/@types/node/index.d.ts"],"fileIdsList":[[179,191,192,196,198,199,230,284,301,302],[191,192,230,284,285,301,302,316],[179,191,193,195,196,200,230,284,301,302],[179,191,193,196,230,284,301,302],[191,230,284,301,302],[230,284,301,302],[116,178,230,284,301,302],[179,190,191,192,194,195,230,284,301,302],[189,190,230,284,301,302],[197,230,284,301,302],[218,219,221,230,284,301,302],[220,230,284,301,302],[204,211,215,230,284,301,302],[211,230,284,301,302],[205,207,210,211,212,213,230,284,301,302],[205,208,209,210,230,284,301,302],[207,211,230,284,301,302],[206,230,284,301,302],[208,230,284,301,302],[205,207,230,284,301,302],[204,209,211,214,230,284,301,302],[216,217,230,284,301,302],[204,230,284,301,302],[88,89,230,284,301,302],[230,281,282,284,301,302],[230,283,284,301,302],[284,301,302],[230,284,289,301,302,319],[230,284,285,290,295,301,302,304,316,327],[230,284,285,286,295,301,302,304],[230,284,287,301,302,328],[230,284,288,289,296,301,302,305],[230,284,289,301,302,316,324],[230,284,290,292,295,301,302,304],[230,283,284,291,301,302],[230,284,292,293,301,302],[230,284,294,295,301,302],[230,283,284,295,301,302],[230,284,295,296,297,301,302,316,327],[230,284,295,296,297,301,302,311,316,319],[230,276,284,292,295,298,301,302,304,316,327],[230,284,295,296,298,299,301,302,304,316,324,327],[230,284,298,300,301,302,316,324,327],[228,229,230,231,232,233,234,235,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333],[230,284,295,301,302],[230,284,301,302,303,327],[230,284,292,295,301,302,304,316],[230,284,301,302,305],[230,284,301,302,306],[230,283,284,301,302,307],[230,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333],[230,284,301,302,309],[230,284,301,302,310],[230,284,295,301,302,311,312],[230,284,301,302,311,313,328,330],[230,284,296,301,302],[230,284,295,301,302,316,317,319],[230,284,301,302,318,319],[230,284,301,302,316,317],[230,284,301,302,319],[230,284,301,302,320],[230,281,284,301,302,316,321,327],[230,284,295,301,302,322,323],[230,284,301,302,322,323],[230,284,289,301,302,304,316,324],[230,284,301,302,325],[230,284,301,302,304,326],[230,284,298,301,302,310,327],[230,284,289,301,302,328],[230,284,301,302,316,329],[230,284,301,302,303,330],[230,284,301,302,331],[230,284,289,301,302],[230,276,284,301,302],[230,284,301,302,332],[230,276,284,295,297,301,302,307,316,319,327,329,330,332],[230,284,301,302,316,333],[61,65,68,70,85,86,87,90,95,230,284,301,302],[65,66,68,69,230,284,301,302],[65,230,284,301,302],[65,66,68,230,284,301,302],[65,66,230,284,301,302],[60,77,78,230,284,301,302],[60,77,230,284,301,302],[60,67,230,284,301,302],[60,230,284,301,302],[62,230,284,301,302],[60,61,62,63,64,230,284,301,302],[98,99,230,284,301,302],[98,99,100,101,230,284,301,302],[98,100,230,284,301,302],[98,230,284,301,302],[230,242,245,248,249,284,301,302,327],[230,245,284,301,302,316,327],[230,245,249,284,301,302,327],[230,284,301,302,316],[230,239,284,301,302],[230,243,284,301,302],[230,241,242,245,284,301,302,327],[230,284,301,302,304,324],[230,284,301,302,334],[230,239,284,301,302,334],[230,241,245,284,301,302,304,327],[230,236,237,238,240,244,284,295,301,302,316,327],[230,245,253,261,284,301,302],[230,237,243,284,301,302],[230,245,270,271,284,301,302],[230,237,240,245,284,301,302,319,327,334],[230,245,284,301,302],[230,241,245,284,301,302,327],[230,236,284,301,302],[230,239,240,241,243,244,245,246,247,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,271,272,273,274,275,284,301,302],[230,245,263,266,284,292,301,302],[230,245,253,254,255,284,301,302],[230,243,245,254,256,284,301,302],[230,244,284,301,302],[230,237,239,245,284,301,302],[230,245,249,254,256,284,301,302],[230,249,284,301,302],[230,243,245,248,284,301,302,327],[230,237,241,245,253,284,301,302],[230,245,263,284,301,302],[230,256,284,301,302],[230,239,245,270,284,301,302,319,332,334],[72,230,284,301,302],[72,73,74,75,230,284,301,302],[74,230,284,301,302],[70,92,93,95,230,284,301,302],[70,71,83,95,230,284,301,302],[60,68,70,79,95,230,284,301,302],[76,230,284,301,302],[60,70,79,82,91,94,95,230,284,301,302],[70,71,76,79,95,230,284,301,302],[70,92,93,94,95,230,284,301,302],[70,76,80,81,82,95,230,284,301,302],[60,65,68,70,71,76,79,80,81,82,83,84,85,91,92,93,94,95,96,97,102,230,284,301,302],[187,230,284,301,302],[104,105,116,230,284,301,302],[106,107,230,284,301,302],[104,105,106,108,109,114,230,284,301,302],[105,106,230,284,301,302],[114,230,284,301,302],[115,230,284,301,302],[106,230,284,301,302],[104,105,106,109,110,111,112,113,230,284,301,302],[178,230,284,301,302],[178,182,230,284,301,302],[172,178,180,181,182,183,184,185,186,230,284,301,302],[178,180,230,284,301,302],[178,181,230,284,301,302],[118,120,121,122,123,230,284,301,302],[118,120,122,123,230,284,301,302],[118,120,122,230,284,301,302],[117,118,120,121,123,230,284,301,302],[118,119,120,121,122,123,124,125,172,173,174,175,176,177,230,284,301,302],[120,123,230,284,301,302],[117,118,119,121,122,123,230,284,301,302],[120,173,176,230,284,301,302],[120,121,122,123,230,284,301,302],[188,230,284,301,302],[122,230,284,301,302],[126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,230,284,301,302],[191,200,201,230,284,301,302],[202,218,230,284,301,302],[202,230,284,301,302],[202,222,223,224,225,226,230,284,301,302],[202,221,230,284,301,302],[103,202,230,284,296,301,302,305,306]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"196cb558a13d4533a5163286f30b0509ce0210e4b316c56c38d4c0fd2fb38405","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"acfb723d81eda39156251aed414c553294870bf53062429ebfcfba8a68cb4753","impliedFormat":99},{"version":"fa69a90381c2f85889722a911a732a5ee3596dc3acecda8a9aa2fa89b9615d8d","impliedFormat":99},{"version":"b5ce343886d23392be9c8280e9f24a87f1d7d3667f6672c2fe4aa61fa4ece7d4","impliedFormat":99},{"version":"57e9e1b0911874c62d743af24b5d56032759846533641d550b12a45ff404bf07","impliedFormat":99},{"version":"b0857bb28fd5236ace84280f79a25093f919fd0eff13e47cc26ea03de60a7294","impliedFormat":99},{"version":"5e43e0824f10cd8c48e7a8c5c673638488925a12c31f0f9e0957965c290eb14c","impliedFormat":99},{"version":"854cd3a3375ffc4e7a92b2168dd065d7ff2614b43341038a65cca865a44c00c5","impliedFormat":99},{"version":"ef13c73d6157a32933c612d476c1524dd674cf5b9a88571d7d6a0d147544d529","impliedFormat":99},{"version":"3b0a56d056d81a011e484b9c05d5e430711aaecd561a788bad1d0498aad782c7","impliedFormat":99},{"version":"2f863ee9b873a65d9c3338ea7aaddbdb41a9673f062f06983d712bd01c25dc6b","impliedFormat":99},{"version":"67aa128c2bc170b93794f191feffc65a4b33e878db211cfcb7658c4b72f7a1f5","impliedFormat":99},{"version":"ac3d263474022e9a14c43f588f485d549641d839b159ecc971978b90f34bdf6b","impliedFormat":99},{"version":"a7ca8df4f2931bef2aa4118078584d84a0b16539598eaadf7dce9104dfaa381c","impliedFormat":1},{"version":"10073cdcf56982064c5337787cc59b79586131e1b28c106ede5bff362f912b70","impliedFormat":99},{"version":"72950913f4900b680f44d8cab6dd1ea0311698fc1eefb014eb9cdfc37ac4a734","impliedFormat":1},{"version":"36977c14a7f7bfc8c0426ae4343875689949fb699f3f84ecbe5b300ebf9a2c55","impliedFormat":1},{"version":"ff0a83c9a0489a627e264ffcb63f2264b935b20a502afa3a018848139e3d8575","impliedFormat":99},{"version":"324ac98294dab54fbd580c7d0e707d94506d7b2c3d5efe981a8495f02cf9ad96","impliedFormat":99},{"version":"9ec72eb493ff209b470467e24264116b6a8616484bca438091433a545dfba17e","impliedFormat":99},{"version":"c35b8117804c639c53c87f2c23e0c786df61d552e513bd5179f5b88e29964838","impliedFormat":99},{"version":"c609331c6ed4ad4af54e101088c6a4dcb48f8db7b0b97e44a6efeb130f4331bd","impliedFormat":99},{"version":"bcbd3becd08b4515225880abea0dbfbbf0d1181ce3af8f18f72f61edbe4febfb","impliedFormat":99},{"version":"67acaedb46832d66c15f1b09fb7b6a0b7f41bdbf8eaa586ec70459b3e8896eb9","impliedFormat":99},{"version":"4535ab977ee871e956eb7bebe2db5de79f5d5ec7dfbbf1d35e08f4a2d6630dac","impliedFormat":99},{"version":"b79b5ed99f26ffb2f8ae4bdcc4b34a9542197dc3fa96cfb425c2a81e618cff28","impliedFormat":99},{"version":"31fd7c12f6e27154efb52a916b872509a771880f3b20f2dfd045785c13aa813f","impliedFormat":99},{"version":"b481de4ab5379bd481ca12fc0b255cdc47341629a22c240a89cdb4e209522be2","impliedFormat":99},{"version":"bdd14f07b4eca0b4b5203b85b8dbc4d084c749fa590bee5ea613e1641dcd3b29","impliedFormat":99},{"version":"427fe2004642504828c1476d0af4270e6ad4db6de78c0b5da3e4c5ca95052a99","impliedFormat":1},{"version":"2eeffcee5c1661ddca53353929558037b8cf305ffb86a803512982f99bcab50d","impliedFormat":99},{"version":"9afb4cb864d297e4092a79ee2871b5d3143ea14153f62ef0bb04ede25f432030","affectsGlobalScope":true,"impliedFormat":99},{"version":"4e258d11c899cb9ff36b4b5c53df59cf4a5ccae9a9931529686e77431e0a3518","affectsGlobalScope":true,"impliedFormat":99},{"version":"a5ae67a67f786ffe92d34b55467a40fb50fb0093e92388cadce6168fa42690fd","impliedFormat":99},{"version":"69bf2422313487956e4dacf049f30cb91b34968912058d244cb19e4baa24da97","impliedFormat":99},{"version":"6987dfb4b0c4e02112cc4e548e7a77b3d9ddfeffa8c8a2db13ceac361a4567d9","impliedFormat":99},{"version":"a534e61c2f06a147d97aebad720db97dffd8066b7142212e46bcbcdcb640b81a","impliedFormat":99},{"version":"ddf569d04470a4d629090d43a16735185001f3fcf0ae036ead99f2ceab62be48","impliedFormat":99},{"version":"b413fbc6658fe2774f8bf9a15cf4c53e586fc38a2d5256b3b9647da242c14389","impliedFormat":99},{"version":"c30a41267fc04c6518b17e55dcb2b810f267af4314b0b6d7df1c33a76ce1b330","impliedFormat":1},{"version":"72422d0bac4076912385d0c10911b82e4694fc106e2d70added091f88f0824ba","impliedFormat":1},{"version":"da251b82c25bee1d93f9fd80c5a61d945da4f708ca21285541d7aff83ecb8200","impliedFormat":1},{"version":"64db14db2bf37ac089766fdb3c7e1160fabc10e9929bc2deeede7237e4419fc8","impliedFormat":1},{"version":"98b94085c9f78eba36d3d2314affe973e8994f99864b8708122750788825c771","impliedFormat":1},{"version":"53c448183c7177c83d3eb0b40824cf8952721a6584cf22052adc24f778986732","impliedFormat":99},{"version":"d3cfde44f8089768ebb08098c96d01ca260b88bccf238d55eee93f1c620ff5a5","impliedFormat":1},{"version":"293eadad9dead44c6fd1db6de552663c33f215c55a1bfa2802a1bceed88ff0ec","impliedFormat":1},{"version":"206e73f49f16633113787cc651dc03dc900379395dfa02ab1ef4c9cbbcd5adc2","impliedFormat":1},{"version":"fec412ded391a7239ef58f455278154b62939370309c1fed322293d98c8796a6","impliedFormat":1},{"version":"e3498cf5e428e6c6b9e97bd88736f26d6cf147dedbfa5a8ad3ed8e05e059af8a","impliedFormat":1},{"version":"dba3f34531fd9b1b6e072928b6f885aa4d28dd6789cbd0e93563d43f4b62da53","impliedFormat":1},{"version":"f672c876c1a04a223cf2023b3d91e8a52bb1544c576b81bf64a8fec82be9969c","impliedFormat":1},{"version":"e4b03ddcf8563b1c0aee782a185286ed85a255ce8a30df8453aade2188bbc904","impliedFormat":1},{"version":"2329d90062487e1eaca87b5e06abcbbeeecf80a82f65f949fd332cfcf824b87b","impliedFormat":1},{"version":"25b3f581e12ede11e5739f57a86e8668fbc0124f6649506def306cad2c59d262","impliedFormat":1},{"version":"93c3e73824ad57f98fd23b39335dbdae2db0bd98199b0dc0b9ccc60bf3c5134a","impliedFormat":1},{"version":"a9ebb67d6bbead6044b43714b50dcb77b8f7541ffe803046fdec1714c1eba206","impliedFormat":1},{"version":"833e92c058d033cde3f29a6c7603f517001d1ddd8020bc94d2067a3bc69b2a8e","impliedFormat":1},{"version":"309ebd217636d68cf8784cbc3272c16fb94fb8e969e18b6fe88c35200340aef1","impliedFormat":1},{"version":"f987c74a4b4baf361afbf22a16d230ee490d662f9aa2066853bb7ebbb8611355","impliedFormat":1},{"version":"1ff91526fcdd634148c655ef86e912a273ce6a0239e2505701561f086678262b","impliedFormat":1},{"version":"d9faf4a343833207c6c5cd2322fb6771b56dc1c8ece975072e85227c2d326bc2","impliedFormat":1},{"version":"8d67b13da77316a8a2fabc21d340866ddf8a4b99e76a6c951cc45189142df652","impliedFormat":1},{"version":"7952419455ca298776db0005b9b5b75571d484d526a29bfbdf041652213bce6f","impliedFormat":1},{"version":"21360500b20e0ec570f26f1cbb388c155ede043698970f316969840da4f16465","impliedFormat":1},{"version":"3a819c2928ee06bbcc84e2797fd3558ae2ebb7e0ed8d87f71732fb2e2acc87b4","impliedFormat":1},{"version":"1765e61249cb44bf5064d42bfa06956455bbc74dc05f074d5727e8962592c920","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"26384fb401f582cae1234213c3dc75fdc80e3d728a0a1c55b405be8a0c6dddbe","impliedFormat":1},{"version":"26384fb401f582cae1234213c3dc75fdc80e3d728a0a1c55b405be8a0c6dddbe","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"26384fb401f582cae1234213c3dc75fdc80e3d728a0a1c55b405be8a0c6dddbe","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"26384fb401f582cae1234213c3dc75fdc80e3d728a0a1c55b405be8a0c6dddbe","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"26384fb401f582cae1234213c3dc75fdc80e3d728a0a1c55b405be8a0c6dddbe","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"26384fb401f582cae1234213c3dc75fdc80e3d728a0a1c55b405be8a0c6dddbe","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"e0bfe601a9fdf6defe94ed62dc60ac71597566001a1f86e705c95e431a9c816d","impliedFormat":1},{"version":"7b9e6b3c726d47935bdc9ebc78fe5398e28e751ba7d70e9e011f01fbd5b618be","impliedFormat":1},{"version":"6e5857f38aa297a859cab4ec891408659218a5a2610cd317b6dcbef9979459cc","impliedFormat":1},{"version":"add0ce7b77ba5b308492fa68f77f24d1ed1d9148534bdf05ac17c30763fc1a79","impliedFormat":1},{"version":"56ccc6238510b913f5e6c21afdc447632873f76748d0b30a87cb313b42f1c196","impliedFormat":1},{"version":"c1a2e05eb6d7ca8d7e4a7f4c93ccf0c2857e842a64c98eaee4d85841ee9855e6","impliedFormat":1},{"version":"85021a58f728318a9c83977a8a3a09196dcfc61345e0b8bbbb39422c1594f36b","impliedFormat":1},{"version":"d91805544905a40fbd639ba1b85f65dc13d6996a07034848d634aa9edb63479e","impliedFormat":1},{"version":"0648a8c200b5544e30677f7f7059b1e384d6cab716c82659716457e3f317ebae","impliedFormat":99},{"version":"6042774c61ece4ba77b3bf375f15942eb054675b7957882a00c22c0e4fe5865c","impliedFormat":1},{"version":"5a3bd57ed7a9d9afef74c75f77fce79ba3c786401af9810cdf45907c4e93f30e","impliedFormat":1},{"version":"8610f5dc475d74c4b095aafa0c191548bfd43f65802e6da54b5e526202b8cfe0","impliedFormat":1},{"version":"7b9496d2e1664155c3c293e1fbbe2aba288614163c88cb81ed6061905924b8f9","impliedFormat":1},{"version":"e27451b24234dfed45f6cf22112a04955183a99c42a2691fb4936d63cfe42761","impliedFormat":1},{"version":"58d65a2803c3b6629b0e18c8bf1bc883a686fcf0333230dd0151ab6e85b74307","impliedFormat":1},{"version":"e818471014c77c103330aee11f00a7a00b37b35500b53ea6f337aefacd6174c9","impliedFormat":1},{"version":"2fbc91ba70096f93f57e22d1f0af22b707dbb3f9f5692cc4f1200861d3b75d88","impliedFormat":1},{"version":"d8bc0c5487582c6d887c32c92d8b4ffb23310146fcb1d82adf4b15c77f57c4ac","impliedFormat":1},{"version":"8cb31102790372bebfd78dd56d6752913b0f3e2cefbeb08375acd9f5ba737155","impliedFormat":1},{"version":"f17ed72d1b1882ab6dc66d45e699f757d15bba0807af2fc9c3ec98fe367611c1","impliedFormat":99},{"version":"1261246aed09870ea204dd3ab6958463d4a1bb91da9d34ed17615fbe34699440","impliedFormat":99},{"version":"7bb43a0f0180ad87b0a944ef95be8615d4c1d621a93ae503a8fcdee2027243ef","impliedFormat":99},{"version":"ba678532514244768286bdfdc82b33f072d5de4e9d281a75bcccdba9970788d7","impliedFormat":99},{"version":"0b79f95a79497386c50f38bafbbf59154619e51d7bbe5acf61cd376d3c9d77b9","impliedFormat":99},{"version":"5993793a23b298afd20c2e1cd2bf8468cc7e9415d314d0771e93dd8b2e389d28","impliedFormat":99},{"version":"2ac574152c07fe5bfea9ce46e9452a28f849ec11c7bbbdc399b7bd1aeab9455f","impliedFormat":99},{"version":"104fae9b53b5eaa040d9ce626e1bf0b3e6e27d269a899a98a4a28358cdcbc155","impliedFormat":99},{"version":"50a6aa665f3a2e769a4d683f9f74cd15164d0947fb957d8016331b170ab8b643","impliedFormat":99},{"version":"af1c82452583c91ff01be5c5c9809e7bb10859ff7027fadc4f0f85f79f807b57","impliedFormat":99},{"version":"8ffbfc204443cc4b508e043c3e18bea2ea4efc7973ae274c08f01ba943717978","impliedFormat":99},{"version":"df7f33d8c7e22b398526b39d114ca9db159760640c9f0401b88f030ca61a755e","impliedFormat":99},{"version":"96ed79be1591ba60814291d8379c3f74e95205265046268dc097087e0704c96c","signature":"1c6eb46b13a65a5ed084726686ff892b988c87abdfe58ec7e5f4227f617f1281"},{"version":"ec2e05414022239f249e46cb474bc3ff4a5cf49613e0e2c57aa3ab950247c995","signature":"9effc5c3eaa1e1079ef2cf480ee0b9d605c47d4a7db22efc3fa3ed3d8f60a02f"},{"version":"abd950a6eb114f55ae2210538340b4167a5d6e2f270864433417a9417c9c59b2","impliedFormat":99},{"version":"96135fbf1dab9f857c9df88a191fdc435517f7a5b021d09cad0c290a1dcec436","impliedFormat":99},{"version":"c36ce4ffa39eae9d8d5f3262bbff170f55b375156bc4eeadadfeede2820aa4c2","impliedFormat":99},{"version":"44fd7a3b2fac384971e638548c227835a2f8c3c2232edff7e0f951a0e136e562","impliedFormat":99},{"version":"80498d31235c22ee711a9fb6f0ca2bcb8fbf5c9a787f3d3a76962b440df70013","impliedFormat":99},{"version":"c41ccf7ec4fecea9d6e5b72ae7f20c91bbe85a8a82caada5ae8a3bc5a56c8926","impliedFormat":99},{"version":"77fed0312d2ec2b08afb890b7760b5f2328f6e09065ea05b5fc35d5294fbb434","impliedFormat":99},{"version":"11f6e61b31e0c89eae79ce790895bf85b918572c32c2de45998f7cbacbb3b963","impliedFormat":99},{"version":"d23fac93be3afb1c83269864f13b5e5fc246b05cb21b7e019e38403e4ef1aba5","impliedFormat":99},{"version":"358599da1d31542e1d3ebf35a4a98665395ea8eaf0063826b8838974f7e826e5","impliedFormat":99},{"version":"06240cf9eca32a7ea5436ee67c8420bc1ddacfaf0d28cd17d09dd56a65c8fb9a","impliedFormat":99},{"version":"5f71dae22207eb5119b2e005e046c0404a29454292e07c68668e39c9931414cd","impliedFormat":99},{"version":"84edb938f2b673df750cf83e9516218404e9df7e32e66f2f063c813d7f4d0e62","impliedFormat":99},{"version":"579f61b51c0e5dc0119ab49fc536130749280c7a23e489e753fcce08c229ce2c","impliedFormat":99},{"version":"2a7a35e3f1ead49569fe0423ae65055184f9384b97999cd90bb99878f727e585","impliedFormat":99},{"version":"340d8057526217987a3a797d93a03b6e6c9a9e1cd8e7c46a676ea008a710afe1","impliedFormat":99},{"version":"29f823cbe0166e10e7176a94afe609a24b9e5af3858628c541ff8ce1727023cd","impliedFormat":1},{"version":"10c4747fb7470f341a977f88fa3c66bf05593cd835a25185f996244c5b638073","impliedFormat":99},{"version":"1fb9043da99109d58eb133fcbad20a32ff68a88a097cf08356801146555d6193","impliedFormat":99},{"version":"09c133a5c5b70bd9c7bfe96294e618df204bd60b9a7ded958754d4a5848cd19a","signature":"1344edd722ce9c0e6d174dc3b1aa5670c5d2a99297d2c9530b978a8a0a732cce"},{"version":"6b63b99a2671cd72fb8e433106994200b8ecc89abf3951811e8c57ef80c8e594","signature":"444ed9f40788db7954b7ff54fb6eb1851377d2dbe82588a3a207899bd837eee3"},{"version":"6527d59d3cd862eb10eea1e10d483b4a82a41b8ee2300f46c8ed89e1b8457ff2","signature":"3c7524d25243d1c93861c562bd2402da0a8dcb74b98cacb059902257b00c9e62"},{"version":"2dd78fde31a3a0b4edb2b35afc0df41a222242fb172d5874ca4b601ee080ff31","signature":"4559302b7139c6c7c051b3a62504ea89d6b99d670fc022a293f8ca807b1803f1"},{"version":"7ce0ebb259b3477300d222b1f1f36fee1065988852ccae84b1cee193df0c1d9a","signature":"8c8d193a38f4d354fad28f6c2cdc531a89f02fbf7eb13cb3deb219e70cf823a4"},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"378281aa35786c27d5811af7e6bcaa492eebd0c7013d48137c35bbc69a2b9751","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"1b2dd1cbeb0cc6ae20795958ba5950395ebb2849b7c8326853dd15530c77ab0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"387a023d363f755eb63450a66c28b14cdd7bc30a104565e2dbf0a8988bb4a56c","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"487b694c3de27ddf4ad107d4007ad304d29effccf9800c8ae23c2093638d906a","impliedFormat":1},{"version":"3a80bc85f38526ca3b08007ee80712e7bb0601df178b23fbf0bf87036fce40ce","impliedFormat":1},{"version":"ccf4552357ce3c159ef75f0f0114e80401702228f1898bdc9402214c9499e8c0","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"2931540c47ee0ff8a62860e61782eb17b155615db61e36986e54645ec67f67c2","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"f6faf5f74e4c4cc309a6c6a6c4da02dbb840be5d3e92905a23dcd7b2b0bd1986","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"33e981bf6376e939f99bd7f89abec757c64897d33c005036b9a10d9587d80187","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"b41767d372275c154c7ea6c9d5449d9a741b8ce080f640155cc88ba1763e35b3","impliedFormat":1},{"version":"3bacf516d686d08682751a3bd2519ea3b8041a164bfb4f1d35728993e70a2426","impliedFormat":1},{"version":"7fb266686238369442bd1719bc0d7edd0199da4fb8540354e1ff7f16669b4323","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"54c3e2371e3d016469ad959697fd257e5621e16296fa67082c2575d0bf8eced0","impliedFormat":1},{"version":"beb8233b2c220cfa0feea31fbe9218d89fa02faa81ef744be8dce5acb89bb1fd","impliedFormat":1},{"version":"c183b931b68ad184bc8e8372bf663f3d33304772fb482f29fb91b3c391031f3e","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"48cc3ec153b50985fb95153258a710782b25975b10dd4ac8a4f3920632d10790","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"e1528ca65ac90f6fa0e4a247eb656b4263c470bb22d9033e466463e13395e599","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"866078923a56d026e39243b4392e282c1c63159723996fa89243140e1388a98d","impliedFormat":1},{"version":"f724236417941ea77ec8d38c6b7021f5fb7f8521c7f8c1538e87661f2c6a0774","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ea15fd99b2e34cb25fe8346c955000bb70c8b423ae4377a972ef46bfb37f595","impliedFormat":1},{"version":"7cf69dd5502c41644c9e5106210b5da7144800670cbe861f66726fa209e231c4","impliedFormat":1},{"version":"72c1f5e0a28e473026074817561d1bc9647909cf253c8d56c41d1df8d95b85f7","impliedFormat":1},{"version":"f9b4137a0d285bd77dba2e6e895530112264310ae47e07bf311feae428fb8b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b21e13ed07d0df176ae31d6b7f01f7b17d66dbeb489c0d31d00de2ca14883da","impliedFormat":1},{"version":"51aecd2df90a3cffea1eb4696b33b2d78594ea2aa2138e6b9471ec4841c6c2ee","impliedFormat":1},{"version":"9d8f9e63e29a3396285620908e7f14d874d066caea747dc4b2c378f0599166b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"f929f0b6b3421a2d34344b0f421f45aeb2c84ad365ebf29d04312023b3accc58","impliedFormat":1},{"version":"db9ada976f9e52e13f7ae8b9a320f4b67b87685938c5879187d8864b2fbe97f3","impliedFormat":1},{"version":"9f39e70a354d0fba29ac3cdf6eca00b7f9e96f64b2b2780c432e8ea27f133743","impliedFormat":1},{"version":"0dace96cc0f7bc6d0ee2044921bdf19fe42d16284dbcc8ae200800d1c9579335","impliedFormat":1},{"version":"a2e2bbde231b65c53c764c12313897ffdfb6c49183dd31823ee2405f2f7b5378","impliedFormat":1},{"version":"ad1cc0ed328f3f708771272021be61ab146b32ecf2b78f3224959ff1e2cd2a5c","impliedFormat":1},{"version":"c64e1888baaa3253ca4405b455e4bf44f76357868a1bd0a52998ade9a092ad78","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc8c6f5322961b56d9906601b20798725df60baeab45ec014fba9f795d5596fd","impliedFormat":1},{"version":"0904660ae854e6d41f6ff25356db1d654436c6305b0f0aa89d1532df0253486e","impliedFormat":1},{"version":"9cdfd0a77dd7eeed57e91d3f449274ea2470abdb7e167a2f146b1ea8de6224e0","impliedFormat":1},{"version":"230bdc111d7578276e4a3bb9d075d85c78c6b68f428c3a9935e2eaa10f4ae1f5","impliedFormat":1},{"version":"e8aabbee5e7b9101b03bb4222607d57f38859b8115a8050a4eb91b4ee43a3a73","impliedFormat":1},{"version":"bbf42f98a5819f4f06e18c8b669a994afe9a17fe520ae3454a195e6eabf7700d","impliedFormat":1},{"version":"c0bb1b65757c72bbf8ddf7eaa532223bacf58041ff16c883e76f45506596e925","impliedFormat":1},{"version":"c8b85f7aed29f8f52b813f800611406b0bfe5cf3224d20a4bdda7c7f73ce368e","affectsGlobalScope":true,"impliedFormat":1},{"version":"145dcf25fd4967c610c53d93d7bc4dce8fbb1b6dd7935362472d4ae49363c7ba","impliedFormat":1},{"version":"ff65b8a8bd380c6d129becc35de02f7c29ad7ce03300331ca91311fb4044d1a9","impliedFormat":1},{"version":"04bf1aa481d1adfb16d93d76e44ce71c51c8ef68039d849926551199489637f6","impliedFormat":1},{"version":"9043daec15206650fa119bad6b8d70136021ea7d52673a71f79a87a42ee38d44","affectsGlobalScope":true,"impliedFormat":1},{"version":"d00e86e2e74089bf416b4c5cc433d88eb2e09dcef5e3c5b79ca04a36d8d8d6f5","affectsGlobalScope":true,"impliedFormat":1},{"version":"a58a15da4c5ba3df60c910a043281256fa52d36a0fcdef9b9100c646282e88dd","impliedFormat":1},{"version":"b36beffbf8acdc3ebc58c8bb4b75574b31a2169869c70fc03f82895b93950a12","impliedFormat":1},{"version":"de263f0089aefbfd73c89562fb7254a7468b1f33b61839aafc3f035d60766cb4","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"8c81fd4a110490c43d7c578e8c6f69b3af01717189196899a6a44f93daa57a3a","impliedFormat":1},{"version":"5fb39858b2459864b139950a09adae4f38dad87c25bf572ce414f10e4bd7baab","impliedFormat":1},{"version":"65faec1b4bd63564aeec33eab9cacfaefd84ce2400f03903a71a1841fbce195f","impliedFormat":1},{"version":"b33b74b97952d9bf4fbd2951dcfbb5136656ddb310ce1c84518aaa77dbca9992","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"8d117798e5228c7fdff887f44851d07320739c5cc0d511afae8f250c51809a36","affectsGlobalScope":true,"impliedFormat":1},{"version":"c119835edf36415081dfd9ed15fc0cd37aaa28d232be029ad073f15f3d88c323","impliedFormat":1},{"version":"8e7c3bed5f19ade8f911677ddc83052e2283e25b0a8654cd89db9079d4b323c7","impliedFormat":1},{"version":"9705cd157ffbb91c5cab48bdd2de5a437a372e63f870f8a8472e72ff634d47c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ae86f30d5d10e4f75ce8dcb6e1bd3a12ecec3d071a21e8f462c5c85c678efb41","impliedFormat":1},{"version":"a1a3cbade20430dcb7f00fa23c2f020e827d5620c0d44213db1665c53231f1fc","impliedFormat":1},{"version":"e03460fe72b259f6d25ad029f085e4bedc3f90477da4401d8fbc1efa9793230e","impliedFormat":1},{"version":"4286a3a6619514fca656089aee160bb6f2e77f4dd53dc5a96b26a0b4fc778055","impliedFormat":1},{"version":"69e0a41d620fb678a899c65e073413b452f4db321b858fe422ad93fd686cd49a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3585d6891e9ea18e07d0755a6d90d71331558ba5dc5561933553209f886db106","affectsGlobalScope":true,"impliedFormat":1},{"version":"86be71cbb0593468644932a6eb96d527cfa600cecfc0b698af5f52e51804451d","impliedFormat":1},{"version":"84dd6b0fd2505135692935599d6606f50a421389e8d4535194bcded307ee5cf2","impliedFormat":1},{"version":"0d5b085f36e6dc55bc6332ecb9c733be3a534958c238fb8d8d18d4a2b6f2a15a","impliedFormat":1},{"version":"db19ea066fdc5f97df3f769e582ae3000380ab7942e266654bdb1a4650d19eaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"2a034894bf28c220a331c7a0229d33564803abe2ac1b9a5feee91b6b9b6e88ea","impliedFormat":1},{"version":"d7e9ab1b0996639047c61c1e62f85c620e4382206b3abb430d9a21fb7bc23c77","impliedFormat":1}],"root":[202,203,[223,227]],"options":{"allowJs":true,"allowSyntheticDefaultImports":true,"checkJs":false,"composite":true,"declaration":true,"declarationMap":true,"module":7,"outDir":"./","skipLibCheck":true,"sourceMap":true,"strict":true,"target":8},"referencedMap":[[200,1],[201,2],[199,3],[194,4],[193,5],[190,6],[179,7],[196,8],[195,5],[192,5],[191,9],[198,10],[222,11],[219,6],[221,12],[216,13],[213,14],[214,15],[211,16],[210,17],[205,6],[207,18],[212,6],[206,6],[209,19],[208,20],[215,21],[204,6],[218,22],[217,23],[87,6],[90,24],[88,6],[281,25],[282,25],[283,26],[230,27],[284,28],[285,29],[286,30],[228,6],[287,31],[288,32],[289,33],[290,34],[291,35],[292,36],[293,36],[294,37],[295,38],[296,39],[297,40],[231,6],[229,6],[298,41],[299,42],[300,43],[334,44],[301,45],[302,6],[303,46],[304,47],[305,48],[306,49],[307,50],[308,51],[309,52],[310,53],[311,54],[312,54],[313,55],[314,6],[315,56],[316,57],[318,58],[317,59],[319,60],[320,61],[321,62],[322,63],[323,64],[324,65],[325,66],[326,67],[327,68],[328,69],[329,70],[330,71],[331,72],[232,6],[233,73],[234,6],[235,6],[277,74],[278,75],[279,6],[280,60],[332,76],[333,77],[91,78],[60,6],[70,79],[66,80],[69,81],[92,82],[77,6],[79,83],[78,84],[85,6],[68,85],[61,86],[63,87],[65,88],[64,6],[67,86],[62,6],[89,6],[100,89],[102,90],[101,91],[99,92],[98,6],[197,6],[93,6],[86,6],[58,6],[59,6],[11,6],[10,6],[2,6],[12,6],[13,6],[14,6],[15,6],[16,6],[17,6],[18,6],[19,6],[3,6],[20,6],[21,6],[4,6],[22,6],[26,6],[23,6],[24,6],[25,6],[27,6],[28,6],[29,6],[5,6],[30,6],[31,6],[32,6],[33,6],[6,6],[37,6],[34,6],[35,6],[36,6],[38,6],[7,6],[39,6],[44,6],[45,6],[40,6],[41,6],[42,6],[43,6],[8,6],[49,6],[46,6],[47,6],[48,6],[50,6],[9,6],[51,6],[52,6],[53,6],[55,6],[54,6],[1,6],[56,6],[57,6],[253,93],[265,94],[251,95],[266,96],[275,97],[242,98],[243,99],[241,100],[274,101],[269,102],[273,103],[245,104],[262,105],[244,106],[272,107],[239,108],[240,102],[246,109],[247,6],[252,110],[250,109],[237,111],[276,112],[267,113],[256,114],[255,109],[257,115],[260,116],[254,117],[258,118],[270,101],[248,119],[249,120],[261,121],[238,96],[264,122],[263,109],[259,123],[268,6],[236,6],[271,124],[73,125],[76,126],[74,125],[72,6],[75,127],[94,128],[84,129],[80,130],[81,80],[97,131],[95,132],[82,133],[96,134],[71,6],[83,135],[103,136],[220,137],[106,138],[108,139],[115,140],[110,6],[111,6],[109,141],[112,142],[104,6],[105,6],[116,143],[107,144],[113,6],[114,145],[183,146],[186,147],[184,147],[180,146],[187,148],[188,137],[185,147],[181,149],[182,150],[175,151],[121,152],[123,153],[174,6],[122,154],[178,155],[176,6],[124,152],[125,6],[173,156],[120,157],[117,6],[177,158],[118,159],[119,6],[189,160],[126,161],[127,161],[128,161],[129,161],[130,161],[131,161],[132,161],[133,161],[134,161],[135,161],[136,161],[137,161],[139,161],[138,161],[140,161],[141,161],[142,161],[172,162],[143,161],[144,161],[145,161],[146,161],[147,161],[148,161],[149,161],[150,161],[151,161],[152,161],[153,161],[154,161],[155,161],[157,161],[156,161],[158,161],[159,161],[160,161],[161,161],[162,161],[163,161],[164,161],[165,161],[166,161],[167,161],[168,161],[171,161],[169,161],[170,161],[202,163],[223,164],[224,165],[225,164],[227,166],[226,167],[203,168]],"latestChangedDtsFile":"./src/index.d.ts","version":"5.9.3"}
|
package/package.json
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@n24q02m/mnemo-plugin",
|
|
3
|
+
"keywords": [
|
|
4
|
+
"opencode",
|
|
5
|
+
"claude-code",
|
|
6
|
+
"mcp",
|
|
7
|
+
"memory",
|
|
8
|
+
"plugin",
|
|
9
|
+
"mnemo"
|
|
10
|
+
],
|
|
11
|
+
"version": "1.0.0",
|
|
12
|
+
"license": "MIT",
|
|
13
|
+
"type": "module",
|
|
14
|
+
"publishConfig": {
|
|
15
|
+
"access": "public"
|
|
16
|
+
},
|
|
17
|
+
"bin": {
|
|
18
|
+
"mnemo-plugin": "bin/cli.mjs"
|
|
19
|
+
},
|
|
20
|
+
"engines": {
|
|
21
|
+
"node": ">=24.0.0",
|
|
22
|
+
"pnpm": ">=9.0.0"
|
|
23
|
+
},
|
|
24
|
+
"files": [
|
|
25
|
+
"build/",
|
|
26
|
+
"bin/",
|
|
27
|
+
"README.md",
|
|
28
|
+
"LICENSE"
|
|
29
|
+
],
|
|
30
|
+
"peerDependencies": {
|
|
31
|
+
"@opencode-ai/plugin": ">=1.0.0"
|
|
32
|
+
},
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@modelcontextprotocol/sdk": "^1.26.0"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"@biomejs/biome": "^2.3.8",
|
|
38
|
+
"@opencode-ai/plugin": "^1.2.10",
|
|
39
|
+
"@opencode-ai/sdk": "^1.2.10",
|
|
40
|
+
"@types/node": "^24.10.1",
|
|
41
|
+
"@vitest/coverage-v8": "^4.0.15",
|
|
42
|
+
"esbuild": "^0.25.12",
|
|
43
|
+
"tsx": "^4.21.0",
|
|
44
|
+
"typescript": "^5.9.3",
|
|
45
|
+
"vitest": "^4.0.15"
|
|
46
|
+
},
|
|
47
|
+
"description": "Universal Memory Plugin for OpenCode & Claude Code (Powered by mnemo-mcp)",
|
|
48
|
+
"main": "build/src/index.js",
|
|
49
|
+
"repository": {
|
|
50
|
+
"type": "git",
|
|
51
|
+
"url": "https://github.com/n24q02m/mnemo-plugin.git"
|
|
52
|
+
},
|
|
53
|
+
"author": "n24q02m",
|
|
54
|
+
"bugs": {
|
|
55
|
+
"url": "https://github.com/n24q02m/mnemo-plugin/issues"
|
|
56
|
+
},
|
|
57
|
+
"homepage": "https://github.com/n24q02m/mnemo-plugin#readme",
|
|
58
|
+
"scripts": {
|
|
59
|
+
"build": "tsc --build && node scripts/build-cli.js",
|
|
60
|
+
"dev": "tsx watch src/index.ts",
|
|
61
|
+
"test": "vitest --passWithNoTests",
|
|
62
|
+
"test:watch": "vitest watch",
|
|
63
|
+
"test:coverage": "vitest --coverage",
|
|
64
|
+
"lint": "biome lint src",
|
|
65
|
+
"lint:fix": "biome lint --write src",
|
|
66
|
+
"format": "biome format --write .",
|
|
67
|
+
"format:check": "biome format .",
|
|
68
|
+
"type-check": "tsc --noEmit",
|
|
69
|
+
"check": "biome check . && pnpm type-check",
|
|
70
|
+
"check:fix": "biome check --write . && pnpm type-check"
|
|
71
|
+
}
|
|
72
|
+
}
|