laminark 2.21.8 → 2.21.9

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.
Files changed (52) hide show
  1. package/README.md +36 -71
  2. package/package.json +9 -7
  3. package/plugin/.claude-plugin/plugin.json +2 -2
  4. package/plugin/CLAUDE.md +10 -0
  5. package/plugin/commands/recall.md +55 -0
  6. package/plugin/commands/remember.md +34 -0
  7. package/plugin/commands/resume.md +45 -0
  8. package/plugin/commands/stash.md +34 -0
  9. package/plugin/commands/status.md +33 -0
  10. package/plugin/dist/hooks/handler.d.ts +3 -1
  11. package/plugin/dist/hooks/handler.d.ts.map +1 -1
  12. package/plugin/dist/hooks/handler.js +312 -23
  13. package/plugin/dist/hooks/handler.js.map +1 -1
  14. package/plugin/dist/index.d.ts +3 -1
  15. package/plugin/dist/index.d.ts.map +1 -1
  16. package/plugin/dist/index.js +2111 -525
  17. package/plugin/dist/index.js.map +1 -1
  18. package/plugin/dist/{observations-Ch0nc47i.d.mts → observations-CorAAc1A.d.mts} +23 -1
  19. package/plugin/dist/observations-CorAAc1A.d.mts.map +1 -0
  20. package/plugin/dist/{tool-registry-CZ3mJ4iR.mjs → tool-registry-D8un_AcG.mjs} +932 -13
  21. package/plugin/dist/tool-registry-D8un_AcG.mjs.map +1 -0
  22. package/plugin/hooks/hooks.json +6 -6
  23. package/plugin/laminark.db +0 -0
  24. package/plugin/package.json +17 -0
  25. package/plugin/scripts/README.md +19 -1
  26. package/plugin/scripts/bump-version.sh +24 -19
  27. package/plugin/scripts/dev-sync.sh +58 -0
  28. package/plugin/scripts/ensure-deps.sh +5 -2
  29. package/plugin/scripts/install.sh +115 -39
  30. package/plugin/scripts/local-install.sh +93 -58
  31. package/plugin/scripts/uninstall.sh +76 -38
  32. package/plugin/scripts/update.sh +20 -69
  33. package/plugin/scripts/verify-install.sh +69 -25
  34. package/plugin/ui/activity.js +12 -0
  35. package/plugin/ui/app.js +24 -54
  36. package/plugin/ui/graph.js +413 -186
  37. package/plugin/ui/help/activity-feed.png +0 -0
  38. package/plugin/ui/help/analysis-panel.png +0 -0
  39. package/plugin/ui/help/graph-toolbar.png +0 -0
  40. package/plugin/ui/help/graph-view.png +0 -0
  41. package/plugin/ui/help/settings.png +0 -0
  42. package/plugin/ui/help/timeline.png +0 -0
  43. package/plugin/ui/help.js +876 -172
  44. package/plugin/ui/index.html +506 -242
  45. package/plugin/ui/settings.js +781 -17
  46. package/plugin/ui/styles.css +990 -44
  47. package/plugin/ui/timeline.js +2 -2
  48. package/plugin/ui/tools.js +826 -0
  49. package/.claude-plugin/marketplace.json +0 -15
  50. package/plugin/dist/observations-Ch0nc47i.d.mts.map +0 -1
  51. package/plugin/dist/tool-registry-CZ3mJ4iR.mjs.map +0 -1
  52. package/plugin/scripts/setup-tmpdir.sh +0 -65
package/README.md CHANGED
@@ -14,28 +14,18 @@ Persistent adaptive memory for Claude Code. Automatically captures observations
14
14
 
15
15
  ## Installation
16
16
 
17
- User-level installation is recommended. This enables Laminark across all your projects with data automatically isolated per project directory.
17
+ ### Quick Install (Recommended)
18
18
 
19
- ### UI Installation (Easiest)
20
-
21
- To install via Claude Code's UI (`/plugin` command), first set up TMPDIR to avoid EXDEV errors:
19
+ One command no git clone needed:
22
20
 
23
21
  ```bash
24
- # One-time setup - run this once
25
- git clone https://github.com/NoobyNull/Laminark.git
26
- cd Laminark
27
- ./scripts/setup-tmpdir.sh
28
-
29
- # Then restart your terminal and restart Claude Code
22
+ curl -fsSL https://raw.githubusercontent.com/NoobyNull/Laminark/master/plugin/scripts/install.sh | bash
30
23
  ```
31
24
 
32
- After setup, you can install/update via Claude's UI:
33
- 1. In Claude Code, type `/plugin`
34
- 2. Select "Add marketplace"
35
- 3. Enter `NoobyNull/Laminark`
36
- 4. Click "Install"
37
-
38
- **Why this is needed:** Systems with separate filesystems for `/home/` and `/tmp/` (common with btrfs, Docker, or separate partitions) encounter EXDEV errors during plugin installation. Setting TMPDIR fixes this globally.
25
+ This will:
26
+ 1. Install `laminark` globally via npm
27
+ 2. Register the MCP server with Claude Code
28
+ 3. Configure hooks in `~/.claude/settings.json`
39
29
 
40
30
  ### Local Installation (Development)
41
31
 
@@ -46,92 +36,67 @@ git clone https://github.com/NoobyNull/Laminark.git
46
36
  cd Laminark
47
37
  npm install
48
38
  npm run build
49
- ./scripts/local-install.sh
39
+ ./plugin/scripts/local-install.sh
50
40
  ```
51
41
 
52
- ### Marketplace Installation (End Users)
53
-
54
- ```bash
55
- ./scripts/install.sh
56
- # Or: curl -fsSL https://raw.githubusercontent.com/NoobyNull/Laminark/master/scripts/install.sh | bash
57
- ```
42
+ This uses `npm link` so changes to the repo are reflected immediately after rebuilding.
58
43
 
59
44
  ### Manual Installation (Advanced)
60
45
 
61
- If you need manual control or encounter issues:
46
+ If you need manual control:
62
47
 
63
48
  ```bash
64
- # Set TMPDIR to avoid cross-device errors
65
- export TMPDIR=~/.claude/tmp
66
- mkdir -p "$TMPDIR"
67
- claude plugin add /path/to/Laminark
68
- ```
69
-
70
- ### Post-Installation
49
+ # Install the package
50
+ npm install -g laminark
71
51
 
72
- Enable the plugin:
52
+ # Register MCP server
53
+ claude mcp add-json laminark '{"command":"laminark-server"}' -s user
73
54
 
74
- ```bash
75
- claude plugin enable laminark
55
+ # Configure hooks manually in ~/.claude/settings.json
56
+ # (see install.sh for the hook structure)
76
57
  ```
77
58
 
59
+ ### Post-Installation
60
+
78
61
  Verify installation:
79
62
 
80
63
  ```bash
81
- claude plugin list # Should show laminark
64
+ # If installed from repo:
65
+ ./plugin/scripts/verify-install.sh
66
+
67
+ # Or check manually:
68
+ npm list -g laminark && claude mcp list | grep laminark
82
69
  ```
83
70
 
84
71
  Laminark will now run in every Claude Code session. Each project's memory is isolated by directory path -- Project A and Project B never share data, but each project remembers across sessions.
85
72
 
86
73
  ### Updating
87
74
 
88
- Check for and install updates:
89
-
90
75
  ```bash
91
- ./scripts/update.sh
92
- # Or: npm run update
76
+ npm update -g laminark
77
+ # Or: ./plugin/scripts/update.sh
93
78
  ```
94
79
 
95
- The update script will:
96
- - Check your current version
97
- - Fetch the latest version from GitHub
98
- - Prompt before updating
99
- - Handle EXDEV errors automatically
100
-
101
80
  ### Uninstalling
102
81
 
103
- Remove the plugin with optional data cleanup:
104
-
105
82
  ```bash
106
- ./scripts/uninstall.sh
107
- # Or: npm run uninstall
83
+ claude mcp remove laminark -s user
84
+ npm uninstall -g laminark
85
+ # Then remove laminark hook entries from ~/.claude/settings.json
86
+ # Optionally: rm -rf ~/.laminark (deletes all memories)
108
87
  ```
109
88
 
110
- The uninstall script will:
111
- - Remove the plugin
112
- - Ask if you want to keep or delete your data
113
- - Clean up plugin cache
114
-
115
- ### Troubleshooting: EXDEV Errors
116
-
117
- If you see `EXDEV: cross-device link not permitted` errors:
89
+ ## Recommended: GSD (Get Shit Done)
118
90
 
119
- **Cause:** Your `/home/` and `/tmp/` directories are on different filesystems (common with btrfs, Docker, or separate partitions).
91
+ Laminark pairs well with [GSD](https://github.com/gsd-framework/gsd) by [@gsd-framework](https://github.com/gsd-framework), a structured workflow plugin for Claude Code. While Laminark handles persistent memory and context, GSD provides project planning, phased execution, and atomic commits. Together they give Claude Code sessions continuity (Laminark) and structure (GSD).
120
92
 
121
- **Solutions (choose one):**
93
+ > **Note:** GSD is an independent project. Its authors do not endorse or recommend Laminark. This is our recommendation based on how well the two tools complement each other.
122
94
 
123
- 1. **For UI installation** - Run the setup script once:
124
- ```bash
125
- ./scripts/setup-tmpdir.sh
126
- # Then restart terminal and Claude Code
127
- ```
128
- This configures TMPDIR globally, allowing you to use Claude's `/plugin` UI.
95
+ ```bash
96
+ claude plugin add gsd
97
+ ```
129
98
 
130
- 2. **For command-line installation** - Use our scripts:
131
- ```bash
132
- ./scripts/local-install.sh # or ./scripts/install.sh
133
- ```
134
- These scripts handle EXDEV automatically without global configuration.
99
+ The install scripts will offer to install GSD automatically if it isn't already present.
135
100
 
136
101
  ## Why User-Level?
137
102
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "laminark",
3
- "version": "2.21.8",
3
+ "version": "2.21.9",
4
4
  "description": "Persistent adaptive memory for Claude Code",
5
5
  "type": "module",
6
6
  "bin": {
@@ -10,8 +10,7 @@
10
10
  "main": "./plugin/dist/index.js",
11
11
  "types": "./plugin/dist/index.d.ts",
12
12
  "files": [
13
- "plugin",
14
- ".claude-plugin"
13
+ "plugin"
15
14
  ],
16
15
  "engines": {
17
16
  "node": ">=22.0.0"
@@ -22,10 +21,13 @@
22
21
  "test": "vitest run",
23
22
  "test:watch": "vitest",
24
23
  "prepublishOnly": "npm run build",
25
- "install:local": "./scripts/local-install.sh",
26
- "install:marketplace": "./scripts/install.sh",
27
- "update": "./scripts/update.sh",
28
- "uninstall": "./scripts/uninstall.sh"
24
+ "install:local": "./plugin/scripts/local-install.sh",
25
+ "install:global": "./plugin/scripts/install.sh",
26
+ "update": "./plugin/scripts/update.sh",
27
+ "uninstall": "./plugin/scripts/uninstall.sh",
28
+ "verify": "./plugin/scripts/verify-install.sh",
29
+ "sync": "./plugin/scripts/dev-sync.sh",
30
+ "dev": "npm run build && npm run sync"
29
31
  },
30
32
  "repository": {
31
33
  "type": "git",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "laminark",
3
3
  "description": "Persistent adaptive memory for Claude Code. Automatic observation capture, semantic search, topic detection, knowledge graph, and web visualization.",
4
- "version": "2.21.6",
4
+ "version": "0.1.0",
5
5
  "author": {
6
6
  "name": "NoobyNull"
7
7
  },
@@ -9,5 +9,5 @@
9
9
  "repository": "https://github.com/NoobyNull/Laminark",
10
10
  "license": "ISC",
11
11
  "keywords": ["memory", "mcp", "sqlite", "knowledge-graph", "semantic-search"],
12
- "skills": "../skills/"
12
+ "skills": "./skills/"
13
13
  }
@@ -0,0 +1,10 @@
1
+ # Memory & Context
2
+
3
+ When you need to recall prior work, decisions, or context:
4
+ - **First** query Laminark's memory tools (`recall`, `query_graph`, `query_branches`) before resorting to grep/glob searches
5
+ - Use `recall` with keyword searches to find past observations, decisions, and findings
6
+ - Use `query_graph` to find relationships between files, decisions, and problems
7
+ - Use `query_branches` to see work history - what was investigated, fixed, built, and where it left off
8
+ - Use `show_branch` to trace the full arc of a specific work unit (investigation -> diagnosis -> planning -> execution -> verification)
9
+ - Use `save_memory` to persist important decisions, findings, and reference material
10
+ - Only fall back to raw file searches (Grep, Glob) when Laminark has no relevant results
@@ -0,0 +1,55 @@
1
+ # /laminark:recall
2
+
3
+ Search Laminark memories by description or topic.
4
+
5
+ ## Usage
6
+
7
+ /laminark:recall {description of what you're looking for}
8
+
9
+ ## Instructions
10
+
11
+ When the user invokes this command:
12
+
13
+ 1. Take the text provided after the command as the search query
14
+ 2. Call the `search` MCP tool with:
15
+ - `query`: The user's search description
16
+ - `limit`: 10 (show top 10 results)
17
+ 3. Present the results to the user in a readable format:
18
+ - Show each result with its relevance score, a content snippet, the source, and when it was created
19
+ - Group results by relevance tier if helpful (highly relevant, somewhat relevant)
20
+ - If results include memories from different sessions, note which session they came from
21
+
22
+ ## Response Format
23
+
24
+ Present results like this:
25
+
26
+ **Memory Search: "{query}"**
27
+
28
+ Found {N} relevant memories:
29
+
30
+ 1. **[{score}% match]** {content snippet, first 200 chars}
31
+ _{source} | {relative time}_
32
+
33
+ 2. **[{score}% match]** {content snippet}
34
+ _{source} | {relative time}_
35
+
36
+ ...
37
+
38
+ _Use the search tool for more specific queries, or get_observations for full details on any memory._
39
+
40
+ ## Examples
41
+
42
+ User: /laminark:recall authentication decisions
43
+ Action: Call search with query="authentication decisions"
44
+ Response: Show top results about auth-related memories with scores and snippets
45
+
46
+ User: /laminark:recall what database did we choose
47
+ Action: Call search with query="what database did we choose"
48
+ Response: Show results mentioning database selection decisions
49
+
50
+ ## Notes
51
+
52
+ - Results use hybrid search (keyword + semantic) for best matching
53
+ - If no results are found, suggest the user try different search terms or check if they have saved any memories yet
54
+ - If no query is provided after the command, ask the user what they'd like to search for
55
+ - For detailed view of any result, Claude can use the get_observations MCP tool with the observation ID
@@ -0,0 +1,34 @@
1
+ # /laminark:remember
2
+
3
+ Save a memory to Laminark for future retrieval.
4
+
5
+ ## Usage
6
+
7
+ /laminark:remember {text to remember}
8
+
9
+ ## Instructions
10
+
11
+ When the user invokes this command:
12
+
13
+ 1. Take the text provided after the command as the memory content
14
+ 2. Call the `save_memory` MCP tool with:
15
+ - `content`: The user's text exactly as provided
16
+ - `source`: "slash:remember" (identifies this as an explicit user save)
17
+ 3. Confirm to the user that the memory has been saved
18
+ 4. Show a brief snippet of what was saved (first 100 characters)
19
+
20
+ ## Examples
21
+
22
+ User: /laminark:remember The auth system uses JWT with 15-minute expiry and refresh tokens stored in httpOnly cookies
23
+ Action: Call save_memory with content="The auth system uses JWT with 15-minute expiry and refresh tokens stored in httpOnly cookies" and source="slash:remember"
24
+ Response: "Saved to memory: 'The auth system uses JWT with 15-minute expiry and refresh tokens stored in httpOnly cookies'"
25
+
26
+ User: /laminark:remember We decided to use Postgres instead of MySQL for the new service because of JSONB support
27
+ Action: Call save_memory with the full text
28
+ Response: "Saved to memory: 'We decided to use Postgres instead of MySQL for the new serv...'"
29
+
30
+ ## Notes
31
+
32
+ - Memories saved via /laminark:remember are high-priority in search results (source: "slash:remember")
33
+ - These memories persist across sessions and are included in session context injection
34
+ - If no text is provided after the command, ask the user what they'd like to remember
@@ -0,0 +1,45 @@
1
+ # /laminark:resume
2
+
3
+ Resume a previously stashed context thread, or list all available stashed threads.
4
+
5
+ ## Usage
6
+
7
+ /laminark:resume
8
+ /laminark:resume {stash-id}
9
+
10
+ ## Instructions
11
+
12
+ When the user invokes this command:
13
+
14
+ ### List mode (no ID provided)
15
+
16
+ 1. Call the `topic_context` MCP tool with no arguments (or limit: 5)
17
+ 2. Present the stashed threads as a numbered list showing:
18
+ - Topic label
19
+ - How long ago it was stashed
20
+ - Brief summary (first 80 characters)
21
+ 3. Tell the user they can resume a specific thread by providing its ID
22
+
23
+ ### Resume mode (ID provided)
24
+
25
+ 1. Call the `topic_context` MCP tool to look up the stash
26
+ 2. Restore the context from the stash observations into the conversation
27
+ 3. Confirm to the user which thread was resumed and how many observations were restored
28
+ 4. Summarize the key context from the restored thread so the user can pick up where they left off
29
+
30
+ ## Examples
31
+
32
+ User: /laminark:resume
33
+ Action: Call topic_context to list stashed threads
34
+ Response: Show numbered list of available threads with topic labels and timestamps
35
+
36
+ User: /laminark:resume abc123def456
37
+ Action: Resume the specific stash, inject its context
38
+ Response: "Resumed: 'JWT authentication' -- Context restored with 5 observations. Here's where you left off: ..."
39
+
40
+ ## Notes
41
+
42
+ - Only threads with status "stashed" are shown (already resumed threads are excluded)
43
+ - Resuming a thread marks it as "resumed" so it no longer appears in the list
44
+ - The restored context includes observation snapshots from the time of stashing
45
+ - If no stashed threads exist, inform the user they are working in a single thread
@@ -0,0 +1,34 @@
1
+ # /laminark:stash
2
+
3
+ Manually stash the current session's context for later retrieval.
4
+
5
+ ## Usage
6
+
7
+ /laminark:stash [optional label]
8
+
9
+ ## Instructions
10
+
11
+ When the user invokes this command:
12
+
13
+ 1. Call the `save_memory` MCP tool to persist current observations, then call the stash handler to snapshot the current session
14
+ 2. If a label is provided after the command, use it as the stash topic label
15
+ 3. If no label is provided, one is generated automatically from the earliest observation
16
+ 4. Confirm to the user that their context was stashed
17
+ 5. Show the topic label and remind them about /laminark:resume
18
+
19
+ ## Examples
20
+
21
+ User: /laminark:stash authentication implementation
22
+ Action: Stash current session context with label "authentication implementation"
23
+ Response: "Context stashed: 'authentication implementation'. Use /laminark:resume to return to it."
24
+
25
+ User: /laminark:stash
26
+ Action: Stash current session context with auto-generated label
27
+ Response: "Context stashed: 'Initial project setup and configur...'. Use /laminark:resume to return to it."
28
+
29
+ ## Notes
30
+
31
+ - Stashing preserves a snapshot of the current session's observations
32
+ - The stash remains available across sessions until resumed or deleted
33
+ - Use /laminark:resume to list available stashes or restore a specific one
34
+ - Automatic stashing also occurs when topic shifts are detected during normal work
@@ -0,0 +1,33 @@
1
+ # /laminark:status
2
+
3
+ Show Laminark system status: connection info, memory count, token estimates, and capabilities.
4
+
5
+ ## Usage
6
+
7
+ /laminark:status
8
+
9
+ ## Instructions
10
+
11
+ When the user invokes this command:
12
+
13
+ 1. Call the `status` MCP tool with no arguments
14
+ 2. Present the returned dashboard directly to the user
15
+
16
+ The tool returns a formatted status report including:
17
+ - **Connection**: project path, project hash, database path, uptime
18
+ - **Capabilities**: vector search availability, embedding worker status
19
+ - **Memories**: observation count, embedded count, session count, stashed threads
20
+ - **Tokens**: estimated total tokens across all stored memories
21
+ - **Knowledge Graph**: node and edge counts
22
+
23
+ ## Examples
24
+
25
+ User: /laminark:status
26
+ Action: Call the status MCP tool
27
+ Response: Display the formatted status dashboard
28
+
29
+ ## Notes
30
+
31
+ - This is a read-only diagnostic command with no side effects
32
+ - Token estimates use the ~4 chars/token heuristic
33
+ - Uptime reflects time since the MCP server process started
@@ -1,4 +1,4 @@
1
- import { t as ObservationRepository } from "../observations-Ch0nc47i.mjs";
1
+ import { t as ObservationRepository } from "../observations-CorAAc1A.mjs";
2
2
  import * as better_sqlite30 from "better-sqlite3";
3
3
  import Database from "better-sqlite3";
4
4
 
@@ -63,6 +63,7 @@ interface DiscoveredTool {
63
63
  projectHash: string | null;
64
64
  description: string | null;
65
65
  serverName: string | null;
66
+ triggerHints: string | null;
66
67
  }
67
68
  /**
68
69
  * Raw database row from the tool_registry table (snake_case).
@@ -76,6 +77,7 @@ interface ToolRegistryRow {
76
77
  project_hash: string | null;
77
78
  description: string | null;
78
79
  server_name: string | null;
80
+ trigger_hints: string | null;
79
81
  usage_count: number;
80
82
  last_used_at: string | null;
81
83
  discovered_at: string;
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","names":[],"sources":["../../../src/storage/research-buffer.ts","../../../src/shared/tool-types.ts","../../../src/storage/tool-registry.ts","../../../src/hooks/handler.ts"],"mappings":";;;;;;;;;AAcA;;;;;;cAAa,wBAAA;EAAA,iBACM,EAAA;EAAA,iBACA,WAAA;EAAA,iBAEA,UAAA;EAAA,iBACA,aAAA;EAAA,iBACA,SAAA;cAEL,EAAA,EAAI,QAAA,CAAc,QAAA,EAAU,WAAA;EAAA;;;EA2BxC,GAAA,CAAI,KAAA;IACF,SAAA;IACA,QAAA;IACA,MAAA;EAAA;EAmBA;;;EAFF,SAAA,CACE,SAAA,UACA,aAAA,YACC,KAAA;IAAQ,QAAA;IAAkB,MAAA;IAAgB,SAAA;EAAA;EAiBV;;;EAAnC,KAAA,CAAM,gBAAA;AAAA;;;;;;KCtFI,QAAA;;ADWZ;;KCNY,SAAA;;;;;UAMK,cAAA;EACf,IAAA;EACA,QAAA,EAAU,QAAA;EACV,KAAA,EAAO,SAAA;EACP,MAAA;EACA,WAAA;EACA,WAAA;EACA,UAAA;AAAA;;;;UAMe,eAAA;EACf,EAAA;EACA,IAAA;EACA,SAAA;EACA,KAAA;EACA,MAAA;EACA,YAAA;EACA,WAAA;EACA,WAAA;EACA,WAAA;EACA,YAAA;EACA,aAAA;EACA,UAAA;EACA,MAAA;AAAA;;;;UAkBe,cAAA;EACf,SAAA;EACA,WAAA;EACA,SAAA;AAAA;;;;UAMe,gBAAA;EACf,IAAA,EAAM,eAAA;EACN,KAAA;EACA,SAAA;AAAA;;;;;;ADxDF;;;;;;;cEEa,sBAAA;EAAA,iBACM,EAAA;EAAA,iBAGA,UAAA;EAAA,iBACA,eAAA;EAAA,iBACA,cAAA;EAAA,iBACA,aAAA;EAAA,iBACA,UAAA;EAAA,iBACA,SAAA;EAAA,iBACA,0BAAA;EAAA,iBACA,eAAA;EAAA,iBACA,mBAAA;EAAA,iBACA,sBAAA;EAAA,iBACA,iBAAA;EAAA,iBACA,kBAAA;EAAA,iBACA,aAAA;EAAA,iBACA,eAAA;EAAA,iBACA,cAAA;EAAA,iBACA,oBAAA;EAAA,iBACA,0BAAA;cAEL,EAAA,EAAI,QAAA,CAAc,QAAA;EFmDxB;;;;EE2GN,MAAA,CAAO,IAAA,EAAM,cAAA;;ADjMf;;;ECsNE,WAAA,CAAY,IAAA,UAAc,WAAA;EDtNR;AAKpB;;;;;AAMA;EC2NE,cAAA,CACE,IAAA,UACA,QAAA,EAAU,IAAA,CAAK,cAAA,WACf,SAAA,kBACA,OAAA;;;;EAqBF,aAAA,CAAc,WAAA,WAAsB,eAAA;EDlP1B;;;;EC0PV,sBAAA,CAAuB,WAAA,WAAsB,eAAA;EDtP7C;;;EC6PA,SAAA,CAAU,IAAA,WAAe,eAAA;EDtPV;;;EC8Pf,MAAA,CAAA,GAAU,eAAA;ED7PV;;;ECoQA,KAAA,CAAA;EDhQA;;;;ECyQA,eAAA,CAAgB,QAAA,UAAkB,WAAA,UAAqB,YAAA,YAAmC,cAAA;EDpQ1F;;;EC4QA,kBAAA,CAAmB,SAAA,WAAoB,cAAA;EDzQjC;;AAkBR;;EC+PE,aAAA,CAAc,WAAA,UAAqB,YAAA,YAAmC,cAAA;ED/PzC;;;;;ECwQ7B,cAAA,CAAe,WAAA,UAAqB,KAAA,YAAsB,cAAA;ED/P3C;;;;EC2Qf,SAAA,CAAU,IAAA,UAAc,WAAA;ED1QlB;;;ECsRN,WAAA,CAAY,IAAA,UAAc,WAAA;EDpRjB;;;;ECiST,UAAA,CAAW,IAAA,UAAc,WAAA;EAvVQ;;;;EAoWjC,qBAAA,CAAsB,WAAA,WAAsB,eAAA;EAzIhC;;;;;EAuJZ,sBAAA,CAAuB,QAAA,UAAkB,WAAA,UAAqB,KAAA,YAAoB,KAAA;IAAQ,OAAA;EAAA;EAhEhC;;;;;EAAA,QAkFlD,aAAA;EAmGwD;;;;EAhFhE,eAAA,CAAgB,KAAA,UAAe,OAAA;IAAY,KAAA;IAAgB,KAAA;EAAA,IAAmB,gBAAA;EAtZ7D;;;;EA4bjB,cAAA,CAAe,cAAA,EAAgB,YAAA,EAAc,OAAA;IAAY,KAAA;IAAgB,KAAA;EAAA,IAAmB,KAAA;IAAQ,OAAA;IAAiB,QAAA;EAAA;EA/apG;;;;;EAodX,WAAA,CACJ,KAAA,UACA,OAAA;IACE,KAAA;IACA,KAAA;IACA,MAAA;MAAW,OAAA;MAAoB,KAAA,CAAM,IAAA,WAAe,OAAA,CAAQ,YAAA;IAAA;IAC5D,gBAAA;EAAA,IAED,OAAA,CAAQ,gBAAA;EAjSX;;;;EAkWA,cAAA,CAAe,MAAA,UAAgB,SAAA,EAAW,YAAA;EAhV9B;;;;EA8VZ,mBAAA,CAAoB,KAAA,YAAoB,KAAA;IAAQ,EAAA;IAAY,IAAA;IAAc,WAAA;EAAA;AAAA;;;;;AF3jB5E;;;;iBGiDgB,0BAAA,CACd,KAAA,EAAO,MAAA,mBACP,OAAA,EAAS,qBAAA,EACT,cAAA,GAAiB,wBAAA,EACjB,YAAA,GAAe,sBAAA,EACf,WAAA,WACA,EAAA,GAFqC,eAAA,CAEP,QAAA"}
1
+ {"version":3,"file":"handler.d.ts","names":[],"sources":["../../../src/storage/research-buffer.ts","../../../src/shared/tool-types.ts","../../../src/storage/tool-registry.ts","../../../src/hooks/handler.ts"],"mappings":"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"}