squish-memory 1.0.2 → 1.1.5
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/.env.example +130 -0
- package/CHANGELOG.md +55 -0
- package/README.md +150 -287
- package/config/hooks/claude-code-hooks.json +39 -0
- package/config/hooks/cursor-hooks.json +30 -0
- package/config/hooks/opencode-hooks.json +30 -0
- package/config/hooks/windsurf-hooks.json +30 -0
- package/config/mcp-mode-semantics.json +23 -21
- package/config/plugin-manifest.json +101 -152
- package/{plugin.json → config/plugin.json} +2 -2
- package/config/settings.json +52 -51
- package/{commands → core/commands}/init.md +39 -39
- package/dist/config.d.ts +28 -4
- package/dist/config.js +97 -29
- package/dist/core/adapters/config/claude-code.d.ts +45 -0
- package/dist/core/adapters/config/claude-code.js +113 -0
- package/dist/core/adapters/config/cursor.d.ts +26 -0
- package/dist/core/adapters/config/cursor.js +74 -0
- package/dist/core/adapters/config/opencode.d.ts +23 -0
- package/dist/core/adapters/config/opencode.js +73 -0
- package/dist/core/adapters/config/windsurf.d.ts +26 -0
- package/dist/core/adapters/config/windsurf.js +74 -0
- package/dist/core/adapters/index.d.ts +45 -0
- package/dist/core/adapters/index.js +84 -0
- package/dist/core/adapters/scripts/install-adapter.d.ts +19 -0
- package/dist/core/adapters/scripts/install-adapter.js +149 -0
- package/dist/core/adapters/timeline.d.ts +23 -0
- package/dist/core/adapters/timeline.js +88 -0
- package/dist/core/adapters/types.d.ts +157 -0
- package/dist/core/adapters/types.js +50 -0
- package/dist/{algorithms → core/algorithms}/analytics/token-estimator.d.ts +1 -1
- package/dist/{algorithms → core/algorithms}/analytics/token-estimator.js +3 -3
- package/dist/{algorithms → core/algorithms}/detection/semantic-ranker.d.ts +1 -1
- package/dist/{algorithms → core/algorithms}/detection/semantic-ranker.js +1 -1
- package/dist/{algorithms → core/algorithms}/detection/two-stage-detector.d.ts +1 -1
- package/dist/{algorithms → core/algorithms}/detection/two-stage-detector.js +7 -10
- package/dist/{algorithms → core/algorithms}/handlers/approve-merge.js +4 -4
- package/dist/{algorithms → core/algorithms}/handlers/detect-duplicates.js +3 -3
- package/dist/{algorithms → core/algorithms}/handlers/get-stats.js +3 -3
- package/dist/{algorithms → core/algorithms}/handlers/list-proposals.js +3 -3
- package/dist/{algorithms → core/algorithms}/handlers/preview-merge.js +3 -3
- package/dist/{algorithms → core/algorithms}/handlers/reject-merge.js +3 -3
- package/dist/{algorithms → core/algorithms}/handlers/reverse-merge.js +3 -3
- package/dist/core/algorithms/index.d.ts +21 -0
- package/dist/core/algorithms/index.js +26 -0
- package/dist/core/algorithms/operations/cache-maintenance.d.ts +12 -0
- package/dist/core/algorithms/operations/cache-maintenance.js +157 -0
- package/dist/{algorithms → core/algorithms}/safety/safety-checks.d.ts +1 -1
- package/dist/{algorithms → core/algorithms}/strategies/merge-strategies.d.ts +19 -1
- package/dist/{algorithms → core/algorithms}/strategies/merge-strategies.js +74 -123
- package/dist/core/algorithms/types.d.ts +133 -0
- package/dist/core/algorithms/types.js +5 -0
- package/dist/core/associations.d.ts +1 -2
- package/dist/core/associations.js +1 -2
- package/dist/core/autosave.d.ts +19 -0
- package/dist/core/autosave.js +16 -0
- package/dist/{commands → core/commands}/managed-sync.js +5 -5
- package/dist/core/commands/mcp-server.js +739 -0
- package/dist/core/context/agent-context.d.ts +106 -0
- package/dist/core/context/agent-context.js +274 -0
- package/dist/core/{context-paging.d.ts → context/context-paging.d.ts} +2 -12
- package/dist/core/{context-paging.js → context/context-paging.js} +19 -39
- package/dist/core/context/context-window.d.ts +40 -0
- package/dist/core/context/context-window.js +177 -0
- package/dist/core/context/context.js +22 -0
- package/dist/core/embeddings.d.ts +1 -1
- package/dist/core/embeddings.js +54 -2
- package/dist/core/error-handling.d.ts +63 -0
- package/dist/core/error-handling.js +173 -0
- package/dist/core/external-folder/index.d.ts +102 -0
- package/dist/core/external-folder/index.js +294 -0
- package/dist/core/hooks/agent-hooks.d.ts +74 -0
- package/dist/core/hooks/agent-hooks.js +244 -0
- package/dist/core/hooks/auto-tagger.d.ts +19 -0
- package/dist/core/hooks/auto-tagger.js +155 -0
- package/dist/core/hooks/capture-filter.d.ts +41 -0
- package/dist/core/hooks/capture-filter.js +128 -0
- package/dist/core/index.d.ts +6 -6
- package/dist/core/index.js +6 -6
- package/dist/core/{agent-memory.js → ingestion/agent-memory.js} +5 -7
- package/dist/core/{core-memory.js → ingestion/core-memory.js} +4 -4
- package/dist/core/ingestion/learnings.d.ts +57 -0
- package/dist/core/ingestion/learnings.js +202 -0
- package/dist/core/lib/db-client.d.ts +114 -0
- package/dist/core/lib/db-client.js +130 -0
- package/dist/core/lib/schemas.d.ts +129 -0
- package/dist/core/lib/schemas.js +87 -0
- package/dist/core/{utils.d.ts → lib/utils.d.ts} +1 -0
- package/dist/core/{utils.js → lib/utils.js} +31 -15
- package/dist/core/lib/validation.d.ts +38 -0
- package/dist/core/lib/validation.js +151 -0
- package/dist/core/lifecycle.d.ts +7 -0
- package/dist/core/lifecycle.js +140 -20
- package/dist/core/local-embeddings.d.ts +6 -1
- package/dist/core/local-embeddings.js +6 -15
- package/dist/core/logger.js +7 -1
- package/dist/core/mcp/tools.js +35 -3
- package/dist/core/memory/categorizer.js +1 -0
- package/dist/core/memory/conflict-detector.js +1 -1
- package/dist/core/memory/consolidation.d.ts +1 -10
- package/dist/core/memory/consolidation.js +2 -11
- package/dist/core/memory/context-collector.js +1 -1
- package/dist/core/memory/edit-workflow.js +1 -1
- package/dist/core/memory/entity-resolver.js +7 -7
- package/dist/core/memory/fact-extractor.js +12 -12
- package/dist/core/memory/feedback-tracker.js +1 -1
- package/dist/core/memory/hooks.d.ts +88 -0
- package/dist/core/memory/hooks.js +174 -0
- package/dist/core/memory/hybrid-retrieval.js +2 -2
- package/dist/core/memory/hybrid-search.d.ts +1 -6
- package/dist/core/memory/hybrid-search.js +70 -84
- package/dist/core/memory/importance.d.ts +8 -13
- package/dist/core/memory/importance.js +47 -74
- package/dist/core/memory/loader.d.ts +31 -0
- package/dist/core/memory/loader.js +141 -0
- package/dist/core/memory/markdown/markdown-storage.d.ts +72 -0
- package/dist/core/memory/markdown/markdown-storage.js +243 -0
- package/dist/core/memory/memories.d.ts +12 -4
- package/dist/core/memory/memories.js +192 -180
- package/dist/core/memory/memory-lifecycle.d.ts +8 -0
- package/dist/core/memory/memory-lifecycle.js +55 -0
- package/dist/core/memory/migrate.d.ts +21 -0
- package/dist/core/memory/migrate.js +134 -0
- package/dist/core/memory/normalization.d.ts +22 -0
- package/dist/core/memory/normalization.js +26 -0
- package/dist/core/memory/progressive-disclosure.js +1 -1
- package/dist/core/memory/query-rewriter.js +9 -9
- package/dist/core/memory/serialization.d.ts +4 -0
- package/dist/core/memory/serialization.js +49 -0
- package/dist/core/memory/stats.d.ts +5 -0
- package/dist/core/memory/stats.js +63 -12
- package/dist/core/memory/temporal-facts.js +21 -0
- package/dist/core/memory/write-gate.js +1 -1
- package/dist/core/obsidian-vault.d.ts +30 -0
- package/dist/core/obsidian-vault.js +94 -0
- package/dist/core/places/index.d.ts +14 -0
- package/dist/core/places/index.js +14 -0
- package/dist/core/places/memory-places.d.ts +68 -0
- package/dist/core/places/memory-places.js +261 -0
- package/dist/core/places/places.d.ts +88 -0
- package/dist/core/places/places.js +314 -0
- package/dist/core/places/rules.d.ts +74 -0
- package/dist/core/places/rules.js +240 -0
- package/dist/core/places/walking.d.ts +56 -0
- package/dist/core/places/walking.js +121 -0
- package/dist/core/projects.d.ts +5 -0
- package/dist/core/projects.js +39 -18
- package/dist/core/responses.d.ts +96 -0
- package/dist/core/responses.js +122 -0
- package/dist/core/scheduler/cron-scheduler.js +29 -7
- package/dist/core/scheduler/index.d.ts +1 -1
- package/dist/core/scheduler/index.js +1 -1
- package/dist/core/scheduler/job-runner.js +1 -1
- package/dist/core/search/conversations.js +40 -42
- package/dist/core/search/entities.js +6 -9
- package/dist/core/search/graph-boost.d.ts +7 -0
- package/dist/core/search/graph-boost.js +23 -0
- package/dist/core/search/qmd-search.js +4 -4
- package/dist/core/security/encrypt.d.ts +6 -0
- package/dist/core/security/encrypt.js +47 -0
- package/dist/core/{governance.d.ts → security/governance.d.ts} +6 -1
- package/dist/core/security/governance.js +79 -0
- package/dist/core/session/auto-load.js +6 -6
- package/dist/core/session/index.d.ts +1 -1
- package/dist/core/session/index.js +1 -1
- package/dist/core/session/self-iteration-job.d.ts +20 -0
- package/dist/core/session/self-iteration-job.js +282 -0
- package/dist/core/session/session-hooks.d.ts +18 -0
- package/dist/core/session/session-hooks.js +58 -0
- package/dist/core/session-hooks/self-iteration-job.js +35 -35
- package/dist/core/{cache.js → storage/cache.js} +2 -2
- package/dist/core/sync/qmd-sync.d.ts +1 -13
- package/dist/core/sync/qmd-sync.js +1 -13
- package/dist/core/toon.d.ts +43 -0
- package/dist/core/toon.js +160 -0
- package/dist/core/utils/memory-operations.js +1 -1
- package/dist/core/utils/vector-operations.d.ts +71 -0
- package/dist/core/utils/vector-operations.js +129 -0
- package/dist/db/adapter.d.ts +3 -3
- package/dist/db/adapter.js +99 -88
- package/dist/db/bootstrap.js +820 -522
- package/dist/{drizzle → db/drizzle}/schema-sqlite.d.ts +74 -25
- package/dist/{drizzle → db/drizzle}/schema-sqlite.js +91 -24
- package/dist/{drizzle → db/drizzle}/schema.d.ts +79 -32
- package/dist/{drizzle → db/drizzle}/schema.js +106 -35
- package/dist/db/drizzle.config.d.ts +3 -0
- package/dist/db/drizzle.config.js +12 -0
- package/dist/db/index.d.ts +1 -5
- package/dist/db/index.js +51 -8
- package/dist/db/neon.d.ts +8 -0
- package/dist/db/neon.js +20 -0
- package/dist/db/schema/index.d.ts +40 -0
- package/dist/db/schema/index.js +105 -0
- package/dist/db/schema/tables/context-sessions.d.ts +9 -0
- package/dist/db/schema/tables/context-sessions.js +37 -0
- package/dist/db/schema/tables/conversations.d.ts +9 -0
- package/dist/db/schema/tables/conversations.js +47 -0
- package/dist/db/schema/tables/core-memory.d.ts +9 -0
- package/dist/db/schema/tables/core-memory.js +41 -0
- package/dist/db/schema/tables/entities.d.ts +9 -0
- package/dist/db/schema/tables/entities.js +39 -0
- package/dist/db/schema/tables/entity-relations.d.ts +9 -0
- package/dist/db/schema/tables/entity-relations.js +31 -0
- package/dist/db/schema/tables/learnings.d.ts +9 -0
- package/dist/db/schema/tables/learnings.js +66 -0
- package/dist/db/schema/tables/memories.d.ts +9 -0
- package/dist/db/schema/tables/memories.js +161 -0
- package/dist/db/schema/tables/memory-associations.d.ts +9 -0
- package/dist/db/schema/tables/memory-associations.js +39 -0
- package/dist/db/schema/tables/memory-hash-cache.d.ts +9 -0
- package/dist/db/schema/tables/memory-hash-cache.js +29 -0
- package/dist/db/schema/tables/memory-merge-history.d.ts +9 -0
- package/dist/db/schema/tables/memory-merge-history.js +33 -0
- package/dist/db/schema/tables/memory-merge-proposals.d.ts +9 -0
- package/dist/db/schema/tables/memory-merge-proposals.js +39 -0
- package/dist/db/schema/tables/messages.d.ts +9 -0
- package/dist/db/schema/tables/messages.js +41 -0
- package/dist/db/schema/tables/namespaces.d.ts +9 -0
- package/dist/db/schema/tables/namespaces.js +37 -0
- package/dist/db/schema/tables/projects.d.ts +9 -0
- package/dist/db/schema/tables/projects.js +31 -0
- package/dist/db/schema/tables/users.d.ts +9 -0
- package/dist/db/schema/tables/users.js +27 -0
- package/dist/db/schema.d.ts +1 -1
- package/dist/db/schema.js +2 -2
- package/dist/db/supabase.d.ts +9 -0
- package/dist/db/supabase.js +24 -0
- package/dist/index.d.ts +2 -14
- package/dist/index.js +1320 -640
- package/dist/vendor/sql.js/sql-wasm.wasm +0 -0
- package/dist/webui/server.d.ts +5 -0
- package/dist/{api/web/web.js → webui/server.js} +511 -508
- package/generated/mcp/manifest.json +1 -1
- package/{.mcp.json → mcp.json.example} +1 -1
- package/package.json +159 -181
- package/scripts/README.md +60 -0
- package/scripts/copy-runtime-assets.mjs +26 -0
- package/scripts/generate-mcp.mjs +264 -264
- package/scripts/github-release.sh +4 -4
- package/scripts/install-claude-code.sh +85 -0
- package/scripts/install-cursor.sh +56 -0
- package/scripts/install-hooks.sh +73 -0
- package/scripts/install-interactive.mjs +357 -677
- package/scripts/install-opencode.sh +75 -0
- package/scripts/install-windsurf.sh +67 -0
- package/skills/squish-memory/SKILL.md +104 -114
- package/skills/squish-memory/{install.mjs → scripts/install.mjs} +2 -2
- package/skills/squish-memory/{install.sh → scripts/install.sh} +2 -2
- package/skills/squish-memory/write_skill.js +2 -0
- package/.claude-plugin/marketplace.json +0 -20
- package/.claude-plugin/plugin.json +0 -32
- package/.env.mcp.example +0 -60
- package/QUICK-START.md +0 -71
- package/bin/squish-add.mjs +0 -32
- package/bin/squish-rm.mjs +0 -21
- package/commands/observe.md +0 -5
- package/dist/api/web/index.d.ts +0 -3
- package/dist/api/web/index.js +0 -4
- package/dist/api/web/web-server.d.ts +0 -3
- package/dist/api/web/web-server.js +0 -6
- package/dist/api/web/web.d.ts +0 -4
- package/dist/commands/mcp-server.js +0 -393
- package/dist/core/context.js +0 -24
- package/dist/core/governance.js +0 -64
- package/dist/core/observations.d.ts +0 -26
- package/dist/core/observations.js +0 -110
- package/dist/core/requirements.d.ts +0 -20
- package/dist/core/requirements.js +0 -35
- package/hooks/hooks.json +0 -52
- package/hooks/post-tool-use.js +0 -26
- package/hooks/session-end.js +0 -28
- package/hooks/session-start.js +0 -33
- package/hooks/user-prompt-submit.js +0 -26
- package/hooks/utils.js +0 -153
- package/npx-installer.js +0 -208
- package/packages/plugin-claude-code/README.md +0 -73
- package/packages/plugin-claude-code/dist/plugin-wrapper.d.ts +0 -35
- package/packages/plugin-claude-code/dist/plugin-wrapper.js +0 -191
- package/packages/plugin-claude-code/package.json +0 -31
- package/packages/plugin-openclaw/README.md +0 -70
- package/packages/plugin-openclaw/dist/index.d.ts +0 -49
- package/packages/plugin-openclaw/dist/index.js +0 -262
- package/packages/plugin-openclaw/openclaw.plugin.json +0 -94
- package/packages/plugin-openclaw/package.json +0 -31
- package/packages/plugin-opencode/install.mjs +0 -217
- package/packages/plugin-opencode/package.json +0 -21
- package/scripts/db/check-db.mjs +0 -88
- package/scripts/db/fix-all-columns.mjs +0 -52
- package/scripts/db/fix-schema-all.mjs +0 -55
- package/scripts/db/fix-schema-full.mjs +0 -46
- package/scripts/db/fix-schema.mjs +0 -38
- package/scripts/db/init-db.mjs +0 -13
- package/scripts/db/recreate-db.mjs +0 -14
- package/scripts/install-mcp.mjs +0 -116
- package/scripts/install-web.sh +0 -120
- package/scripts/install.mjs +0 -340
- package/scripts/openclaw-bootstrap.mjs +0 -127
- package/scripts/package-release.sh +0 -71
- package/scripts/test/test-all-systems.mjs +0 -139
- package/scripts/test/test-memory-system.mjs +0 -139
- package/scripts/test/test-v0.5.0.mjs +0 -210
- package/skills/memory-guide/SKILL.md +0 -332
- package/skills/squish-cli/SKILL.md +0 -240
- package/skills/squish-mcp/SKILL.md +0 -355
- package/skills/squish-memory/claude-desktop.json +0 -12
- package/skills/squish-memory/openclaw.json +0 -13
- package/skills/squish-memory/opencode.json +0 -14
- package/skills/squish-memory/skill.json +0 -32
- /package/{commands → core/commands}/context-paging.md +0 -0
- /package/{commands → core/commands}/context-status.md +0 -0
- /package/{commands → core/commands}/context.md +0 -0
- /package/{commands → core/commands}/core-memory.md +0 -0
- /package/{commands → core/commands}/health.md +0 -0
- /package/{commands → core/commands}/merge.md +0 -0
- /package/{commands → core/commands}/recall.md +0 -0
- /package/{commands → core/commands}/remember.md +0 -0
- /package/{commands → core/commands}/search.md +0 -0
- /package/dist/{algorithms → core/algorithms}/detection/hash-filters.d.ts +0 -0
- /package/dist/{algorithms → core/algorithms}/detection/hash-filters.js +0 -0
- /package/dist/{algorithms → core/algorithms}/handlers/approve-merge.d.ts +0 -0
- /package/dist/{algorithms → core/algorithms}/handlers/detect-duplicates.d.ts +0 -0
- /package/dist/{algorithms → core/algorithms}/handlers/get-stats.d.ts +0 -0
- /package/dist/{algorithms → core/algorithms}/handlers/list-proposals.d.ts +0 -0
- /package/dist/{algorithms → core/algorithms}/handlers/preview-merge.d.ts +0 -0
- /package/dist/{algorithms → core/algorithms}/handlers/reject-merge.d.ts +0 -0
- /package/dist/{algorithms → core/algorithms}/handlers/reverse-merge.d.ts +0 -0
- /package/dist/{algorithms → core/algorithms}/safety/safety-checks.js +0 -0
- /package/dist/{algorithms → core/algorithms}/utils/response-builder.d.ts +0 -0
- /package/dist/{algorithms → core/algorithms}/utils/response-builder.js +0 -0
- /package/dist/{commands → core/commands}/managed-sync.d.ts +0 -0
- /package/dist/{commands → core/commands}/mcp-server.d.ts +0 -0
- /package/dist/core/{context.d.ts → context/context.d.ts} +0 -0
- /package/dist/core/{agent-memory.d.ts → ingestion/agent-memory.d.ts} +0 -0
- /package/dist/core/{core-memory.d.ts → ingestion/core-memory.d.ts} +0 -0
- /package/dist/core/{privacy.d.ts → security/privacy.d.ts} +0 -0
- /package/dist/core/{privacy.js → security/privacy.js} +0 -0
- /package/dist/core/{secret-detector.d.ts → security/secret-detector.d.ts} +0 -0
- /package/dist/core/{secret-detector.js → security/secret-detector.js} +0 -0
- /package/dist/core/{cache.d.ts → storage/cache.d.ts} +0 -0
- /package/dist/core/{database.d.ts → storage/database.d.ts} +0 -0
- /package/dist/core/{database.js → storage/database.js} +0 -0
package/README.md
CHANGED
|
@@ -1,368 +1,231 @@
|
|
|
1
|
-
# Squish - Universal
|
|
1
|
+
# Squish - Universal Memory for AI Agents
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/squish-memory)
|
|
4
4
|
[](https://www.npmjs.com/package/squish-memory)
|
|
5
5
|
[](https://opensource.org/licenses/MIT)
|
|
6
6
|
[](https://www.typescriptlang.org/)
|
|
7
7
|
|
|
8
|
-
**
|
|
8
|
+
**Give any AI agent persistent, intelligent memory.** Without memory, agents forget everything between sessions. With Squish, they learn and adapt over time.
|
|
9
|
+
|
|
10
|
+
> Squish does not have a crypto token, has no token launch planned, and nobody is authorized to launch one on behalf of the project.
|
|
9
11
|
|
|
10
12
|
```bash
|
|
11
|
-
|
|
13
|
+
bun add squish-memory
|
|
12
14
|
```
|
|
13
15
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
## Why Agents Need Memory
|
|
16
|
+
## Why Memory Matters
|
|
17
17
|
|
|
18
18
|
| Without Squish | With Squish |
|
|
19
19
|
|----------------|-------------|
|
|
20
|
-
| Forgets after
|
|
20
|
+
| Forgets everything after session | Remembers across sessions |
|
|
21
21
|
| Repeats the same mistakes | Learns from past decisions |
|
|
22
|
-
| No
|
|
23
|
-
| Can't track preferences | Adapts to
|
|
22
|
+
| No project awareness | Builds understanding over time |
|
|
23
|
+
| Can't track preferences | Adapts to your style |
|
|
24
24
|
|
|
25
25
|
## How It Works
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
- **Short-term Memory (QMD)**: Lightning-fast file-based search using QMD (BM25 + vector). Instant recall, optimized for recent/active context.
|
|
29
|
-
- **Long-term Memory (Database)**: SQLite (local) or PostgreSQL (team) for durable, searchable storage of important memories.
|
|
27
|
+
**Two-tier architecture** for optimal speed and durability:
|
|
30
28
|
|
|
31
29
|
```
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
v
|
|
41
|
-
┌──────────────┐
|
|
42
|
-
│ Write Gate │ <-- Validate, sanitize, score
|
|
43
|
-
└──────────────┘
|
|
44
|
-
|
|
|
45
|
-
┌───────────────┴───────────────┐
|
|
46
|
-
v v
|
|
47
|
-
┌──────────────┐ ┌──────────────┐
|
|
48
|
-
│ Short-term │ │ Long-term │
|
|
49
|
-
│ QMD (Files) │ │ SQLite/PG │
|
|
50
|
-
│ Fast recall │ │ Persistent │
|
|
51
|
-
└──────────────┘ └──────────────┘
|
|
52
|
-
| |
|
|
53
|
-
v v
|
|
54
|
-
┌──────────────────────────────────────────┐
|
|
55
|
-
│ Hybrid Retrieval: QMD + Vector Ranking │
|
|
56
|
-
└──────────────────────────────────────────┘
|
|
57
|
-
|
|
|
58
|
-
v
|
|
59
|
-
Agent Context
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
## Key Features
|
|
63
|
-
|
|
64
|
-
### Memory Intelligence
|
|
65
|
-
- **Trigger Detection**: Auto-detects "remember", "important", corrections
|
|
66
|
-
- **Contradiction Resolution**: Auto-updates when facts change
|
|
67
|
-
- **Temporal Facts**: Handles time-bound information ("until January")
|
|
68
|
-
- **Confidence Scoring**: Knows how reliable each memory is
|
|
69
|
-
|
|
70
|
-
### Retrieval Quality
|
|
71
|
-
- **Hybrid Search**: Vector + keyword (BM25) with fusion
|
|
72
|
-
- **Multi-factor Ranking**: Semantic, recency, importance, confidence
|
|
73
|
-
- **Telemetry**: Tracks which memories are actually useful
|
|
30
|
+
User Action ──► Trigger Detection ──► Write Gate ──► Short-term (QMD)
|
|
31
|
+
│
|
|
32
|
+
Long-term (SQLite/PG)
|
|
33
|
+
│
|
|
34
|
+
Hybrid Retrieval
|
|
35
|
+
│
|
|
36
|
+
Agent Context
|
|
37
|
+
```
|
|
74
38
|
|
|
75
|
-
|
|
76
|
-
- **
|
|
77
|
-
- **Secret Detection**: Auto-redacts API keys, passwords
|
|
78
|
-
- **Graceful Degradation**: Works even when database fails
|
|
39
|
+
- **Short-term (QMD)**: Lightning-fast file-based search. Instant recall for recent context.
|
|
40
|
+
- **Long-term (SQLite/PG)**: Durable storage. SQLite for local, PostgreSQL for teams.
|
|
79
41
|
|
|
80
42
|
## Quick Start
|
|
81
43
|
|
|
82
|
-
###
|
|
83
|
-
|
|
84
|
-
# Store a memory
|
|
85
|
-
squish remember "User prefers TypeScript"
|
|
86
|
-
|
|
87
|
-
# Search memories
|
|
88
|
-
squish search "preferences"
|
|
89
|
-
|
|
90
|
-
# Check health
|
|
91
|
-
squish health
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
### Universal Plugin Installer (Recommended)
|
|
95
|
-
```bash
|
|
96
|
-
# Install for your AI assistant(s)
|
|
97
|
-
npx squish-memory install-plugin --client=claude-code # Claude Code
|
|
98
|
-
npx squish-memory install-plugin --client=openclaw # OpenClaw
|
|
99
|
-
npx squish-memory install-plugin --client=opencode # OpenCode
|
|
100
|
-
npx squish-memory install-plugin --client=all # All supported clients
|
|
101
|
-
|
|
102
|
-
# Verify installation
|
|
103
|
-
npx squish-memory install-plugin --client=claude-code --verify
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
### For Claude Code (Plugin) - Legacy Method
|
|
107
|
-
```bash
|
|
108
|
-
# Install from marketplace
|
|
109
|
-
/plugin marketplace add https://github.com/michielhdoteth/squish.git
|
|
110
|
-
/plugin install squish@michielhdoteth-squish
|
|
111
|
-
```
|
|
44
|
+
### Install with add-mcp (Recommended)
|
|
45
|
+
One command installs to Claude Code, OpenCode, Cursor, VS Code, Codex, and more:
|
|
112
46
|
|
|
113
|
-
### For OpenClaw (npm) - Legacy Method
|
|
114
47
|
```bash
|
|
115
|
-
|
|
48
|
+
npx add-mcp squish-memory
|
|
116
49
|
```
|
|
117
50
|
|
|
118
|
-
|
|
51
|
+
Or traditional npm install:
|
|
119
52
|
|
|
120
|
-
### Universal CLI
|
|
121
53
|
```bash
|
|
122
|
-
|
|
123
|
-
squish remember "User prefers TypeScript"
|
|
124
|
-
squish search "preferences"
|
|
125
|
-
squish health
|
|
54
|
+
bun add squish-memory
|
|
126
55
|
```
|
|
127
56
|
|
|
128
|
-
### Universal API
|
|
129
57
|
```bash
|
|
130
|
-
#
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
# Add memory via HTTP (stored in both QMD index and SQLite)
|
|
134
|
-
curl -X POST http://localhost:3000/api/memories \
|
|
135
|
-
-H "Content-Type: application/json" \
|
|
136
|
-
-d '{"content": "User prefers TypeScript", "type": "preference", "container": "my-project"}'
|
|
137
|
-
|
|
138
|
-
# Search memories via HTTP (uses QMD for fast hybrid search)
|
|
139
|
-
curl "http://localhost:3000/api/memories/search?q=TypeScript"
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
**That's it.** One install, persistent memory for any AI agent.
|
|
143
|
-
|
|
144
|
-
## MCP Tools for Agents
|
|
145
|
-
|
|
146
|
-
| Tool | What It Does |
|
|
147
|
-
|------|--------------|
|
|
148
|
-
| `remember` | Store a memory |
|
|
149
|
-
| `search` | Find relevant memories |
|
|
150
|
-
| `recall` | Get specific memory by ID |
|
|
151
|
-
| `core_memory` | Always-visible context (persona, user info) |
|
|
152
|
-
| `context` | Get project-relevant memories |
|
|
153
|
-
| `observe` | Record patterns from tool usage |
|
|
154
|
-
|
|
155
|
-
## Execution Model
|
|
156
|
-
|
|
157
|
-
- **Universal First**: Works with any AI agent via MCP, CLI, or HTTP API
|
|
158
|
-
- **Transport Agnostic**: MCP (stdio/SSE), CLI, or HTTP/WebSocket - choose your preference
|
|
159
|
-
- **Storage Flexible**: SQLite for local, PostgreSQL for team deployments
|
|
160
|
-
|
|
161
|
-
## Universal Plugin Architecture
|
|
162
|
-
|
|
163
|
-
Squish now provides a **universal plugin system** that works as a plugin across all major AI assistant frameworks through a single manifest-driven installer.
|
|
164
|
-
|
|
165
|
-
### How It Works
|
|
166
|
-
1. Single `plugin-manifest.json` defines the plugin for all clients
|
|
167
|
-
2. `npx squish-memory install-plugin --client=<target>` handles installation
|
|
168
|
-
3. Auto-installs dependencies (mcporter, qmd) with pinned versions
|
|
169
|
-
4. Generates client-specific configurations automatically
|
|
170
|
-
5. Provides unified verification and troubleshooting
|
|
58
|
+
# Store a memory
|
|
59
|
+
squish remember "User prefers TypeScript over JavaScript"
|
|
171
60
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|--------|-------------------|---------|
|
|
175
|
-
| Claude Code | Plugin hooks (.claude-plugin/) | ✅ Stable |
|
|
176
|
-
| OpenClaw | Memory slot via MCP bridge | ✅ Stable |
|
|
177
|
-
| OpenCode | MCP server config | ✅ Stable |
|
|
178
|
-
| Codex | MCP server config | ✅ Stable |
|
|
179
|
-
| Cursor | MCP server config | ✅ Beta |
|
|
180
|
-
| VS Code | MCP server config | ✅ Beta |
|
|
181
|
-
| Windsurf | MCP server config | ✅ Beta |
|
|
61
|
+
# Save a quick note
|
|
62
|
+
squish note "Revisit caching strategy after launch"
|
|
182
63
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
# Install for Claude Code (recommended for Claude users)
|
|
186
|
-
npx squish-memory install-plugin --client=claude-code --verify
|
|
64
|
+
# Record an observation
|
|
65
|
+
squish learn observation "Updated auth flow" --action edit
|
|
187
66
|
|
|
188
|
-
#
|
|
189
|
-
|
|
67
|
+
# Record a fix or lesson learned
|
|
68
|
+
squish learn fix "Patched auth middleware regression"
|
|
190
69
|
|
|
191
|
-
#
|
|
192
|
-
|
|
70
|
+
# Search memories
|
|
71
|
+
squish search "coding preferences"
|
|
193
72
|
|
|
194
|
-
#
|
|
195
|
-
|
|
196
|
-
|
|
73
|
+
# List projects, then inspect relevant context
|
|
74
|
+
squish context --list-projects
|
|
75
|
+
squish context
|
|
197
76
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
- **Zero manual configuration**: Automatic dependency installation
|
|
201
|
-
- **Version pinned dependencies**: Stable, reproducible builds
|
|
202
|
-
- **Unified verification**: One command to check all clients
|
|
203
|
-
- **Backward compatible**: Existing integrations still work
|
|
204
|
-
|
|
205
|
-
## Universal API
|
|
206
|
-
|
|
207
|
-
Squish now provides a universal HTTP API that works with any AI agent:
|
|
208
|
-
|
|
209
|
-
```typescript
|
|
210
|
-
// Add memory via HTTP
|
|
211
|
-
POST /api/memories
|
|
212
|
-
{
|
|
213
|
-
"content": "User prefers TypeScript",
|
|
214
|
-
"type": "preference",
|
|
215
|
-
"container": "my-project",
|
|
216
|
-
"tags": ["preferences", "coding-style"]
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
// Search memories via HTTP
|
|
220
|
-
GET /api/memories/search?query=TypeScript&limit=10
|
|
77
|
+
# Get relevant context or fetch by ID
|
|
78
|
+
squish recall "user preferences"
|
|
221
79
|
```
|
|
222
80
|
|
|
223
|
-
|
|
224
|
-
- Works with any AI agent (Claude, OpenAI, Anthropic, custom)
|
|
225
|
-
- HTTP RESTful API + WebSocket for real-time sync
|
|
226
|
-
- PostgreSQL + pgvector for scalable memory
|
|
227
|
-
- Docker-ready for easy deployment
|
|
228
|
-
|
|
229
|
-
### Docker Deployment
|
|
81
|
+
Or use as a plugin:
|
|
230
82
|
|
|
231
83
|
```bash
|
|
232
|
-
#
|
|
233
|
-
|
|
84
|
+
# Install for Claude Code
|
|
85
|
+
npx squish-memory install-plugin --client=claude-code
|
|
234
86
|
|
|
235
|
-
#
|
|
236
|
-
|
|
237
|
-
docker run -p 3000:3000 squish-universal
|
|
87
|
+
# Install for OpenCode
|
|
88
|
+
npx squish-memory install-plugin --client=opencode
|
|
238
89
|
```
|
|
239
90
|
|
|
240
|
-
##
|
|
91
|
+
## Features
|
|
241
92
|
|
|
242
|
-
|
|
243
|
-
-
|
|
244
|
-
-
|
|
245
|
-
-
|
|
246
|
-
|
|
247
|
-
|
|
93
|
+
### Memory Intelligence
|
|
94
|
+
- Auto-detects "remember this", "important", corrections
|
|
95
|
+
- Handles contradictions when facts change
|
|
96
|
+
- Temporal facts with expiration ("until January")
|
|
97
|
+
- Confidence scoring for each memory
|
|
98
|
+
- **Tier lifecycle**: hot/warm/cold memory tiers with automatic decay
|
|
99
|
+
- **Graph-boosted retrieval**: associations between memories boost relevance
|
|
248
100
|
|
|
249
|
-
###
|
|
101
|
+
### Retrieval Quality
|
|
102
|
+
- Hybrid search: semantic + keyword (BM25) with Reciprocal Rank Fusion
|
|
103
|
+
- Multi-factor ranking: relevance, recency, importance, graph-boost
|
|
104
|
+
- LLM-powered context extraction with Ollama (local)
|
|
105
|
+
- **Graph associations**: memories linked by coactivation boost search results
|
|
106
|
+
|
|
107
|
+
### Security & Encryption
|
|
108
|
+
- **Client-side encryption**: AES-256-GCM encryption for sensitive memories
|
|
109
|
+
- **Passphrase management**: `squish_set_passphrase` and `squish_rotate_key` MCP tools
|
|
110
|
+
- Optional encryption via `SQUISH_ENCRYPTION_PASSPHRASE` env var
|
|
111
|
+
|
|
112
|
+
### Universal Compatibility
|
|
113
|
+
- **CLI**: `squish config`, `squish remember`, `squish note`, `squish learn`, `squish search`, `squish context`, `squish stats`
|
|
114
|
+
- **MCP Server**: Works with Claude Code, OpenCode, Cursor, VS Code, OpenClaw
|
|
115
|
+
- **HTTP API**: REST API + WebSocket for any agent
|
|
116
|
+
- **SQLite**: Local, zero-config
|
|
117
|
+
- **PostgreSQL**: Team mode with Supabase/pgvector
|
|
118
|
+
- **QMD Integration**: Native .md file search via QMD
|
|
119
|
+
|
|
120
|
+
### Current MCP Tools
|
|
121
|
+
- `squish_remember`, `squish_search`, `squish_recall`, `squish_forget`, `squish_update`
|
|
122
|
+
- `squish_link`, `squish_context`, `squish_learn`, `squish_health`, `squish_stats`
|
|
123
|
+
- `squish_confidence`, `squish_pin`, `squish_set_passphrase`, `squish_rotate_key`
|
|
124
|
+
- `squish_recent`, `squish_stale`, `squish_note`, `squish_tag`
|
|
125
|
+
|
|
126
|
+
## Benchmark Results
|
|
127
|
+
|
|
128
|
+
Real tests using [LoCoMo](https://github.com/snap-research/locomo) benchmark (22 questions):
|
|
129
|
+
|
|
130
|
+
| Metric | Result |
|
|
131
|
+
|--------|--------|
|
|
132
|
+
| **LoCoMo Score** | **77%** |
|
|
133
|
+
| Embedding Latency | 1-5ms |
|
|
134
|
+
| API Latency | 1-20ms |
|
|
135
|
+
| Max Throughput | 943 ops/sec |
|
|
136
|
+
| Package Size | **283 KB** |
|
|
137
|
+
|
|
138
|
+
### vs Cloud Solutions
|
|
139
|
+
|
|
140
|
+
| | Squish | Cloud Memory |
|
|
141
|
+
|--|--------|-------------|
|
|
142
|
+
| **Cost** | $0 | API fees |
|
|
143
|
+
| **Local-first** | Yes | No |
|
|
144
|
+
| **Setup** | 1 command | 3+ steps |
|
|
145
|
+
| **API keys** | None | Required |
|
|
146
|
+
| **LoCoMo** | 77% | 75-81% |
|
|
147
|
+
|
|
148
|
+
Squish matches cloud solutions on accuracy while running 100% locally with zero API costs.
|
|
149
|
+
|
|
150
|
+
## Supported Clients
|
|
151
|
+
|
|
152
|
+
| Client | Status |
|
|
153
|
+
|--------|--------|
|
|
154
|
+
| Claude Code | Stable |
|
|
155
|
+
| OpenCode | Stable |
|
|
156
|
+
| OpenClaw | Stable |
|
|
157
|
+
| Cursor | Beta |
|
|
158
|
+
| VS Code | Beta |
|
|
159
|
+
| Windsurf | Beta |
|
|
250
160
|
|
|
251
|
-
|
|
252
|
-
- None! Works out-of-the-box with local TF-IDF embeddings
|
|
161
|
+
## Configuration
|
|
253
162
|
|
|
254
|
-
**
|
|
255
|
-
```bash
|
|
256
|
-
# For universal HTTP API mode
|
|
257
|
-
DATABASE_URL=postgresql://user:pass@host/db # Required for universal mode
|
|
258
|
-
REDIS_URL=redis://localhost:6379 # Optional for caching
|
|
259
|
-
PORT=3000 # API server port
|
|
260
|
-
```
|
|
163
|
+
**Zero config required** - works out of the box with local embeddings.
|
|
261
164
|
|
|
262
|
-
|
|
263
|
-
```json
|
|
264
|
-
{
|
|
265
|
-
"embeddings": {
|
|
266
|
-
"provider": "local",
|
|
267
|
-
"models": {
|
|
268
|
-
"openai": { "model": "text-embedding-3-small" },
|
|
269
|
-
"google": { "model": "gemini-embedding-001" },
|
|
270
|
-
"ollama": { "model": "nomic-embed-text:v1.5" }
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
```
|
|
165
|
+
For customization:
|
|
275
166
|
|
|
276
|
-
**Environment Variables (override settings.json):**
|
|
277
167
|
```bash
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
# Model selection (optional, uses defaults if not set)
|
|
282
|
-
SQUISH_OPENAI_EMBEDDING_MODEL=text-embedding-3-small
|
|
283
|
-
SQUISH_GOOGLE_EMBEDDING_MODEL=gemini-embedding-001
|
|
284
|
-
SQUISH_OLLAMA_EMBEDDING_MODEL=nomic-embed-text:v1.5
|
|
285
|
-
|
|
286
|
-
# API credentials (for cloud providers)
|
|
287
|
-
SQUISH_OPENAI_API_KEY=sk-...
|
|
168
|
+
# Environment variables
|
|
169
|
+
SQUISH_DATA_DIR=./.squish
|
|
170
|
+
SQUISH_EMBEDDINGS_PROVIDER=ollama # openai, ollama, google, local
|
|
288
171
|
SQUISH_OLLAMA_URL=http://localhost:11434
|
|
289
|
-
GOOGLE_CLOUD_PROJECT=your-project
|
|
290
|
-
GOOGLE_CLOUD_API_KEY=your-key
|
|
291
172
|
|
|
292
|
-
#
|
|
293
|
-
SQUISH_EMBEDDINGS_TIMEOUT_MS=30000
|
|
294
|
-
SQUISH_EMBEDDINGS_MAX_RETRIES=3
|
|
295
|
-
SQUISH_EMBEDDINGS_RETRY_DELAY_MS=1000
|
|
296
|
-
|
|
297
|
-
# Core memory size (default: 16KB total, 4KB per section)
|
|
298
|
-
SQUISH_CORE_MEMORY_TOTAL_BYTES=16384
|
|
299
|
-
SQUISH_CORE_MEMORY_SECTION_BYTES=4096
|
|
300
|
-
|
|
301
|
-
# For team mode
|
|
173
|
+
# Team mode
|
|
302
174
|
DATABASE_URL=postgresql://user:pass@host/db
|
|
303
175
|
```
|
|
304
176
|
|
|
305
177
|
## Architecture
|
|
306
178
|
|
|
307
|
-
### Two-Tier Memory
|
|
308
|
-
|
|
309
|
-
- **
|
|
310
|
-
- **Long-term (Database)**: SQLite (local) or PostgreSQL (team). Durable ACID-compliant storage for important memories that need persistence.
|
|
179
|
+
### Two-Tier Memory
|
|
180
|
+
- **QMD (Files)**: BM25 + vectors for fast recall
|
|
181
|
+
- **SQLite/PostgreSQL**: ACID-compliant persistent storage
|
|
311
182
|
|
|
312
|
-
###
|
|
313
|
-
- **MCP
|
|
314
|
-
- **HTTP REST
|
|
315
|
-
- **
|
|
316
|
-
- **CLI**: Standalone command-line tool for shell-based agents and debugging
|
|
317
|
-
|
|
318
|
-
### Memory Organization
|
|
319
|
-
- **Core Memory (configurable, default 16KB total)**: Always-visible sections for persona, user info, project context, and working notes. Each section limited to 4KB by default. Token estimation helps track LLM context usage.
|
|
320
|
-
- **Context Paging**: Agent-controlled retrieval with token budgeting (8KB default)
|
|
321
|
-
- **Background Jobs**: Automatic memory maintenance including decay, deduplication, and consolidation
|
|
183
|
+
### Interfaces
|
|
184
|
+
- **MCP**: Native agent integration
|
|
185
|
+
- **HTTP**: REST + WebSocket
|
|
186
|
+
- **CLI**: Shell and scripts
|
|
322
187
|
|
|
323
188
|
### Memory Lifecycle
|
|
324
|
-
- **Sectors**: episodic, semantic, procedural, autobiographical
|
|
325
|
-
- **Tiers**: hot (
|
|
326
|
-
- **Status**: active, merged, superseded, expired
|
|
327
|
-
|
|
328
|
-
### Deployment Flexibility
|
|
329
|
-
- **Local SQLite**: Zero-configuration, perfect for individual agents and edge deployment
|
|
330
|
-
- **PostgreSQL**: Horizontal scaling for teams and enterprise deployments
|
|
331
|
-
- **Docker**: Single-command deployment with docker-compose.universal.yml
|
|
332
|
-
- **Cloud**: Ready for AWS/GCP/Azure with standard PostgreSQL compatibility
|
|
189
|
+
- **Sectors**: episodic, semantic, procedural, autobiographical
|
|
190
|
+
- **Tiers**: hot (recent), warm (accessible), cold (archived)
|
|
191
|
+
- **Status**: active, merged, superseded, expired
|
|
333
192
|
|
|
334
193
|
## Development
|
|
335
194
|
|
|
336
195
|
```bash
|
|
337
|
-
# Install dependencies
|
|
338
196
|
bun install
|
|
339
|
-
|
|
340
|
-
# Build
|
|
341
197
|
bun run build
|
|
342
|
-
|
|
343
|
-
# Test
|
|
344
198
|
bun test
|
|
345
|
-
|
|
346
|
-
# Verify MCP
|
|
347
199
|
bun run verify:mcp
|
|
348
200
|
```
|
|
349
201
|
|
|
350
202
|
## Troubleshooting
|
|
351
203
|
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
-
|
|
204
|
+
```bash
|
|
205
|
+
# Reset local database
|
|
206
|
+
rm -rf .squish/squish.db
|
|
207
|
+
|
|
208
|
+
# Verify MCP setup
|
|
209
|
+
bun run verify:mcp
|
|
210
|
+
|
|
211
|
+
# Check health
|
|
212
|
+
squish health
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
## CLI Command Families
|
|
355
216
|
|
|
356
|
-
|
|
357
|
-
-
|
|
358
|
-
-
|
|
217
|
+
- Setup/runtime: `squish`, `squish config`, `squish install`, `squish run mcp`, `squish run web`
|
|
218
|
+
- Capture/retrieval: `squish remember`, `squish note`, `squish learn`, `squish search`, `squish recall`, `squish recent`
|
|
219
|
+
- Memory management: `squish update`, `squish forget`, `squish pin`, `squish confidence`, `squish tag`, `squish stale`, `squish link`
|
|
220
|
+
- Context/project discovery: `squish context --list-projects`, `squish context`
|
|
221
|
+
- System: `squish health`, `squish stats`
|
|
359
222
|
|
|
360
223
|
## License
|
|
361
224
|
|
|
362
|
-
MIT
|
|
225
|
+
MIT License. See [LICENSE](LICENSE).
|
|
363
226
|
|
|
364
227
|
## Links
|
|
365
228
|
|
|
366
|
-
-
|
|
367
|
-
-
|
|
368
|
-
-
|
|
229
|
+
- [Documentation](https://github.com/michielhdoteth/squish)
|
|
230
|
+
- [Benchmarks](docs/BENCHMARK.md)
|
|
231
|
+
- [Issues](https://github.com/michielhdoteth/squish/issues)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "squish-hooks-claude-code",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Squish memory hooks for Claude Code",
|
|
5
|
+
"agent": "claude-code",
|
|
6
|
+
"hooks": {
|
|
7
|
+
"sessionStart": {
|
|
8
|
+
"enabled": true,
|
|
9
|
+
"matchers": ["startup", "resume", "compact"],
|
|
10
|
+
"command": "squish hooks session-start --agent claude-code"
|
|
11
|
+
},
|
|
12
|
+
"postToolUse": {
|
|
13
|
+
"enabled": true,
|
|
14
|
+
"captureFilter": {
|
|
15
|
+
"tools": ["Write", "Edit", "MultiEdit", "Bash", "Task", "TodoWrite"],
|
|
16
|
+
"exclude": ["Read", "Glob", "grep", "WebSearch", "WebFetch"]
|
|
17
|
+
},
|
|
18
|
+
"command": "squish hooks post-tool-use --agent claude-code"
|
|
19
|
+
},
|
|
20
|
+
"sessionEnd": {
|
|
21
|
+
"enabled": true,
|
|
22
|
+
"command": "squish hooks session-end --agent claude-code"
|
|
23
|
+
},
|
|
24
|
+
"preCompact": {
|
|
25
|
+
"enabled": true,
|
|
26
|
+
"matchers": ["auto"],
|
|
27
|
+
"command": "squish hooks pre-compact --agent claude-code"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"mcpServers": {
|
|
31
|
+
"squish-memory": {
|
|
32
|
+
"command": "squish",
|
|
33
|
+
"args": ["run", "mcp"],
|
|
34
|
+
"env": {
|
|
35
|
+
"SQUISH_PROJECT_DIR": "${CLAUDE_PROJECT_DIR}"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "squish-hooks-cursor",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Squish memory hooks for Cursor",
|
|
5
|
+
"agent": "cursor",
|
|
6
|
+
"hooks": {
|
|
7
|
+
"sessionStart": {
|
|
8
|
+
"enabled": true,
|
|
9
|
+
"command": "squish hooks session-start --agent cursor"
|
|
10
|
+
},
|
|
11
|
+
"postToolUse": {
|
|
12
|
+
"enabled": true,
|
|
13
|
+
"captureFilter": {
|
|
14
|
+
"tools": ["Write", "Edit", "Bash", "Task"],
|
|
15
|
+
"exclude": ["Read", "Glob", "Grep"]
|
|
16
|
+
},
|
|
17
|
+
"command": "squish hooks post-tool-use --agent cursor"
|
|
18
|
+
},
|
|
19
|
+
"sessionEnd": {
|
|
20
|
+
"enabled": true,
|
|
21
|
+
"command": "squish hooks session-end --agent cursor"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"mcpServers": {
|
|
25
|
+
"squish": {
|
|
26
|
+
"command": "squish",
|
|
27
|
+
"args": ["run", "mcp"]
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "squish-hooks-opencode",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Squish memory hooks for OpenCode",
|
|
5
|
+
"agent": "opencode",
|
|
6
|
+
"hooks": {
|
|
7
|
+
"sessionStart": {
|
|
8
|
+
"enabled": true,
|
|
9
|
+
"command": "squish hooks session-start --agent opencode"
|
|
10
|
+
},
|
|
11
|
+
"postToolUse": {
|
|
12
|
+
"enabled": true,
|
|
13
|
+
"captureFilter": {
|
|
14
|
+
"tools": ["Write", "Edit", "Bash", "Task"],
|
|
15
|
+
"exclude": ["Read", "Glob", "grep"]
|
|
16
|
+
},
|
|
17
|
+
"command": "squish hooks post-tool-use --agent opencode"
|
|
18
|
+
},
|
|
19
|
+
"sessionEnd": {
|
|
20
|
+
"enabled": true,
|
|
21
|
+
"command": "squish hooks session-end --agent opencode"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"mcpServers": {
|
|
25
|
+
"squish": {
|
|
26
|
+
"command": "squish",
|
|
27
|
+
"args": ["run", "mcp"]
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "squish-hooks-windsurf",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Squish memory hooks for Windsurf",
|
|
5
|
+
"agent": "windsurf",
|
|
6
|
+
"hooks": {
|
|
7
|
+
"sessionStart": {
|
|
8
|
+
"enabled": true,
|
|
9
|
+
"command": "squish hooks session-start --agent windsurf"
|
|
10
|
+
},
|
|
11
|
+
"postToolUse": {
|
|
12
|
+
"enabled": true,
|
|
13
|
+
"captureFilter": {
|
|
14
|
+
"tools": ["Write", "Edit", "Bash", "Task"],
|
|
15
|
+
"exclude": ["Read", "Glob", "Grep"]
|
|
16
|
+
},
|
|
17
|
+
"command": "squish hooks post-tool-use --agent windsurf"
|
|
18
|
+
},
|
|
19
|
+
"sessionEnd": {
|
|
20
|
+
"enabled": true,
|
|
21
|
+
"command": "squish hooks session-end --agent windsurf"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"mcpServers": {
|
|
25
|
+
"squish": {
|
|
26
|
+
"command": "squish",
|
|
27
|
+
"args": ["run", "mcp"]
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|