@pcircle/memesh 4.5.1 → 4.6.1
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/.claude-plugin/marketplace.json +5 -3
- package/.claude-plugin/plugin.json +6 -4
- package/AGENTS.md +116 -0
- package/README.de.md +141 -48
- package/README.md +173 -48
- package/README.zh-TW.md +142 -48
- package/dashboard/dist/index.html +15 -14
- package/dist/cli/view-live.js +3 -3
- package/dist/core/analytics.d.ts +9 -0
- package/dist/core/analytics.d.ts.map +1 -1
- package/dist/core/analytics.js +36 -18
- package/dist/core/analytics.js.map +1 -1
- package/dist/core/auto-tagger.d.ts.map +1 -1
- package/dist/core/auto-tagger.js +4 -9
- package/dist/core/auto-tagger.js.map +1 -1
- package/dist/core/briefing.d.ts +8 -0
- package/dist/core/briefing.d.ts.map +1 -0
- package/dist/core/briefing.js +92 -0
- package/dist/core/briefing.js.map +1 -0
- package/dist/core/capture-flag.d.ts +5 -0
- package/dist/core/capture-flag.d.ts.map +1 -0
- package/dist/core/capture-flag.js +10 -0
- package/dist/core/capture-flag.js.map +1 -0
- package/dist/core/config.d.ts +0 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js.map +1 -1
- package/dist/core/conflict-candidates.d.ts +20 -0
- package/dist/core/conflict-candidates.d.ts.map +1 -0
- package/dist/core/conflict-candidates.js +79 -0
- package/dist/core/conflict-candidates.js.map +1 -0
- package/dist/core/conflict-judge.d.ts +47 -0
- package/dist/core/conflict-judge.d.ts.map +1 -0
- package/dist/core/conflict-judge.js +189 -0
- package/dist/core/conflict-judge.js.map +1 -0
- package/dist/core/demo.d.ts.map +1 -1
- package/dist/core/demo.js +1 -1
- package/dist/core/demo.js.map +1 -1
- package/dist/core/digest-validator.d.ts.map +1 -1
- package/dist/core/digest-validator.js +3 -5
- package/dist/core/digest-validator.js.map +1 -1
- package/dist/core/doctor.d.ts +2 -0
- package/dist/core/doctor.d.ts.map +1 -1
- package/dist/core/doctor.js +59 -62
- package/dist/core/doctor.js.map +1 -1
- package/dist/core/dreamer.d.ts +5 -2
- package/dist/core/dreamer.d.ts.map +1 -1
- package/dist/core/dreamer.js +329 -25
- package/dist/core/dreamer.js.map +1 -1
- package/dist/core/embedder.d.ts +8 -4
- package/dist/core/embedder.d.ts.map +1 -1
- package/dist/core/embedder.js +82 -24
- package/dist/core/embedder.js.map +1 -1
- package/dist/core/failure-analyzer.d.ts.map +1 -1
- package/dist/core/failure-analyzer.js +7 -12
- package/dist/core/failure-analyzer.js.map +1 -1
- package/dist/core/graph.d.ts +12 -0
- package/dist/core/graph.d.ts.map +1 -1
- package/dist/core/graph.js +56 -1
- package/dist/core/graph.js.map +1 -1
- package/dist/core/guards.d.ts +20 -0
- package/dist/core/guards.d.ts.map +1 -0
- package/dist/core/guards.js +103 -0
- package/dist/core/guards.js.map +1 -0
- package/dist/core/install-channel.d.ts +1 -1
- package/dist/core/install-channel.d.ts.map +1 -1
- package/dist/core/install-channel.js +16 -5
- package/dist/core/install-channel.js.map +1 -1
- package/dist/core/install-hooks.d.ts +5 -0
- package/dist/core/install-hooks.d.ts.map +1 -1
- package/dist/core/install-hooks.js +0 -0
- package/dist/core/install-hooks.js.map +1 -1
- package/dist/core/json-utils.d.ts +1 -0
- package/dist/core/json-utils.d.ts.map +1 -1
- package/dist/core/json-utils.js +19 -10
- package/dist/core/json-utils.js.map +1 -1
- package/dist/core/kg-backfill.d.ts +5 -2
- package/dist/core/kg-backfill.d.ts.map +1 -1
- package/dist/core/kg-backfill.js +155 -5
- package/dist/core/kg-backfill.js.map +1 -1
- package/dist/core/lifecycle.d.ts.map +1 -1
- package/dist/core/lifecycle.js +14 -21
- package/dist/core/lifecycle.js.map +1 -1
- package/dist/core/memory-tool.d.ts.map +1 -1
- package/dist/core/memory-tool.js +4 -4
- package/dist/core/memory-tool.js.map +1 -1
- package/dist/core/operations.d.ts +13 -2
- package/dist/core/operations.d.ts.map +1 -1
- package/dist/core/operations.js +115 -28
- package/dist/core/operations.js.map +1 -1
- package/dist/core/prompt-safety.d.ts +1 -0
- package/dist/core/prompt-safety.d.ts.map +1 -1
- package/dist/core/prompt-safety.js +7 -0
- package/dist/core/prompt-safety.js.map +1 -1
- package/dist/core/schema-export.d.ts.map +1 -1
- package/dist/core/schema-export.js +31 -0
- package/dist/core/schema-export.js.map +1 -1
- package/dist/core/serializer.d.ts.map +1 -1
- package/dist/core/serializer.js +8 -0
- package/dist/core/serializer.js.map +1 -1
- package/dist/core/setup.d.ts +29 -0
- package/dist/core/setup.d.ts.map +1 -0
- package/dist/core/setup.js +127 -0
- package/dist/core/setup.js.map +1 -0
- package/dist/core/task-state-store.d.ts +17 -0
- package/dist/core/task-state-store.d.ts.map +1 -0
- package/dist/core/task-state-store.js +45 -0
- package/dist/core/task-state-store.js.map +1 -0
- package/dist/core/task-state.d.ts +19 -0
- package/dist/core/task-state.d.ts.map +1 -0
- package/dist/core/task-state.js +91 -0
- package/dist/core/task-state.js.map +1 -0
- package/dist/core/time-utils.d.ts +2 -0
- package/dist/core/time-utils.d.ts.map +1 -0
- package/dist/core/time-utils.js +14 -0
- package/dist/core/time-utils.js.map +1 -0
- package/dist/core/title.d.ts +5 -0
- package/dist/core/title.d.ts.map +1 -0
- package/dist/core/title.js +14 -0
- package/dist/core/title.js.map +1 -0
- package/dist/core/transcript-source.d.ts.map +1 -1
- package/dist/core/transcript-source.js +2 -3
- package/dist/core/transcript-source.js.map +1 -1
- package/dist/core/types.d.ts +5 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/why.d.ts +54 -0
- package/dist/core/why.d.ts.map +1 -0
- package/dist/core/why.js +168 -0
- package/dist/core/why.js.map +1 -0
- package/dist/core/work-topology.d.ts +36 -0
- package/dist/core/work-topology.d.ts.map +1 -0
- package/dist/core/work-topology.js +192 -0
- package/dist/core/work-topology.js.map +1 -0
- package/dist/db.d.ts +33 -11
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +307 -315
- package/dist/db.js.map +1 -1
- package/dist/knowledge-graph.d.ts +1 -0
- package/dist/knowledge-graph.d.ts.map +1 -1
- package/dist/knowledge-graph.js +50 -40
- package/dist/knowledge-graph.js.map +1 -1
- package/dist/skills-manifest.json +62 -22
- package/dist/storage/conflicts.d.ts.map +1 -1
- package/dist/storage/conflicts.js +2 -7
- package/dist/storage/conflicts.js.map +1 -1
- package/dist/storage/fts-index.d.ts +4 -2
- package/dist/storage/fts-index.d.ts.map +1 -1
- package/dist/storage/fts-index.js +16 -4
- package/dist/storage/fts-index.js.map +1 -1
- package/dist/storage/schema.d.ts +20 -0
- package/dist/storage/schema.d.ts.map +1 -0
- package/dist/storage/schema.js +274 -0
- package/dist/storage/schema.js.map +1 -0
- package/dist/storage/sqlite.d.ts.map +1 -1
- package/dist/storage/sqlite.js +1 -1
- package/dist/storage/sqlite.js.map +1 -1
- package/dist/transports/cli/cli.d.ts +1 -4
- package/dist/transports/cli/cli.d.ts.map +1 -1
- package/dist/transports/cli/cli.js +579 -66
- package/dist/transports/cli/cli.js.map +1 -1
- package/dist/transports/http/server.d.ts.map +1 -1
- package/dist/transports/http/server.js +242 -303
- package/dist/transports/http/server.js.map +1 -1
- package/dist/transports/mcp/handlers.d.ts +46 -0
- package/dist/transports/mcp/handlers.d.ts.map +1 -1
- package/dist/transports/mcp/handlers.js +59 -4
- package/dist/transports/mcp/handlers.js.map +1 -1
- package/dist/transports/schemas.d.ts +29 -10
- package/dist/transports/schemas.d.ts.map +1 -1
- package/dist/transports/schemas.js +33 -8
- package/dist/transports/schemas.js.map +1 -1
- package/hooks/hooks.json +10 -0
- package/llms-install.md +138 -0
- package/package.json +14 -9
- package/scripts/hooks/_generated/capture-flag.js +17 -0
- package/scripts/hooks/_generated/fts-index.js +16 -4
- package/scripts/hooks/_generated/guards.js +110 -0
- package/scripts/hooks/_generated/schema.js +281 -0
- package/scripts/hooks/_generated/sqlite.js +1 -1
- package/scripts/hooks/_generated/task-state.js +98 -0
- package/scripts/hooks/_generated/time-utils.js +21 -0
- package/scripts/hooks/_generated/title.js +21 -0
- package/scripts/hooks/_generated/work-topology.js +199 -0
- package/scripts/hooks/_shared.js +197 -480
- package/scripts/hooks/guard-check.js +76 -0
- package/scripts/hooks/post-commit.js +31 -1
- package/scripts/hooks/pre-compact.js +13 -1
- package/scripts/hooks/pre-edit-recall.js +158 -120
- package/scripts/hooks/session-start.js +169 -82
- package/scripts/hooks/session-summary.js +78 -90
- package/skills/memesh/SKILL.md +108 -76
- package/README.es.md +0 -467
- package/README.fr.md +0 -459
- package/README.ja.md +0 -467
- package/README.ko.md +0 -467
- package/README.pt.md +0 -459
- package/README.th.md +0 -460
- package/README.vi.md +0 -459
- package/README.zh-CN.md +0 -466
- package/dist/cli/view.d.ts +0 -3
- package/dist/cli/view.d.ts.map +0 -1
- package/dist/cli/view.js +0 -523
- package/dist/cli/view.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/transports/schemas.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/transports/schemas.ts"],"names":[],"mappings":"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"}
|
package/hooks/hooks.json
CHANGED
package/llms-install.md
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# Installing MeMesh — deterministic steps for an AI agent
|
|
2
|
+
|
|
3
|
+
This document is for an AI agent installing MeMesh (`@pcircle/memesh`) on its
|
|
4
|
+
user's machine. Execute each section exactly, verify with the stated check,
|
|
5
|
+
then stop. Once installed, read [AGENTS.md](AGENTS.md) for how to use it.
|
|
6
|
+
|
|
7
|
+
Facts that hold for every path below:
|
|
8
|
+
|
|
9
|
+
- Every host reads and writes the **same database**: `~/.memesh/knowledge-graph.db`.
|
|
10
|
+
Installing for a second host adds an access path, not a second memory.
|
|
11
|
+
- **Nothing is auto-configured beyond what each step states.** `npm install -g`
|
|
12
|
+
runs **no install scripts** — the package has none, by design (it installs
|
|
13
|
+
fully working even under `--ignore-scripts`). Nothing registers MCP servers
|
|
14
|
+
except the per-host commands in this document.
|
|
15
|
+
- Where a host asks for a configured MCP command, use `memesh-mcp` —
|
|
16
|
+
**never `npx -p @pcircle/memesh`**. `npx -p` resolves to the *local* package
|
|
17
|
+
whenever the host's working directory is inside a checkout of this
|
|
18
|
+
repository, silently running that working tree instead of the installed
|
|
19
|
+
release.
|
|
20
|
+
|
|
21
|
+
## 1. Claude Code (plugin)
|
|
22
|
+
|
|
23
|
+
Type these in Claude Code's **chat input** — they are Claude Code slash
|
|
24
|
+
commands, not shell commands:
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
/plugin marketplace add PCIRCLE-AI/memesh
|
|
28
|
+
/plugin install memesh@pcircle-memesh
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Claude Code wires the MCP server, the auto-capture hooks, and the `/memesh`
|
|
32
|
+
skill automatically.
|
|
33
|
+
|
|
34
|
+
**Verify**: restart Claude Code. A status line beginning `◉ MeMesh` appears at
|
|
35
|
+
the top of the next session.
|
|
36
|
+
|
|
37
|
+
| Failure | Remedy |
|
|
38
|
+
|---|---|
|
|
39
|
+
| `/plugin marketplace add` fails | The marketplace is fetched as a git clone. Check `git --version` succeeds and github.com is reachable. |
|
|
40
|
+
| `/plugin install` says plugin not found | The argument is exactly `memesh@pcircle-memesh` — plugin name `memesh`, marketplace name `pcircle-memesh`. Re-run the marketplace add first. |
|
|
41
|
+
| No `◉ MeMesh` line after restart | Run `/plugin` inside Claude Code and confirm the `memesh` plugin is installed and enabled, then restart again. |
|
|
42
|
+
|
|
43
|
+
The plugin does **not** put a `memesh` command on the shell PATH. For terminal
|
|
44
|
+
use — and as a prerequisite for sections 3 and 4 — also do section 2. The two
|
|
45
|
+
installs coexist and share the database.
|
|
46
|
+
|
|
47
|
+
## 2. Terminal / CLI (npm global)
|
|
48
|
+
|
|
49
|
+
Check Node **first** — the floor is 22.13.0 (`node:sqlite` is part of Node
|
|
50
|
+
itself; npm only warns on an engine mismatch, so an install onto an old Node
|
|
51
|
+
"succeeds" and fails later at runtime):
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
node --version
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Expected: `v22.13.0` or later. If lower, stop and upgrade Node before
|
|
58
|
+
continuing.
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
npm install -g @pcircle/memesh
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Expected: exits without error; `memesh`, `memesh-mcp` and `memesh-http` are
|
|
65
|
+
now in `$(npm prefix -g)/bin/`. No compiler is involved and no install script
|
|
66
|
+
runs.
|
|
67
|
+
|
|
68
|
+
**Verify**:
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
memesh doctor
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Expected: a report starting `MeMesh doctor v…` with `Overall: PASS`
|
|
75
|
+
(`PASS_WITH_CONCERNS` is also functional), exit code 0.
|
|
76
|
+
|
|
77
|
+
| Failure | Remedy |
|
|
78
|
+
|---|---|
|
|
79
|
+
| `command not found: memesh` | npm's global bin dir is not on PATH. Run `npm prefix -g`, append `/bin` to its output, and add that directory to PATH. |
|
|
80
|
+
| `No such built-in module: node:sqlite` | The running Node is older than 22.13.0. Upgrade Node, then re-run `memesh doctor`. |
|
|
81
|
+
| `EACCES` during `npm install -g` | The global prefix is not user-writable. Use a user-level Node (nvm/fnm), or `npm config set prefix ~/.npm-global` and add `~/.npm-global/bin` to PATH, then re-install. |
|
|
82
|
+
| `Overall: FAIL` (exit code 1) | The report names the failing check and prints the fix next to it. Apply that fix and re-run `memesh doctor`. |
|
|
83
|
+
|
|
84
|
+
Only if Claude Code is used **without** the section-1 plugin (the plugin wires
|
|
85
|
+
hooks itself — skip this if section 1 is done):
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
memesh install-hooks
|
|
89
|
+
memesh doctor
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## 3. Codex CLI
|
|
93
|
+
|
|
94
|
+
Prerequisite: section 2 — `memesh-mcp` must resolve on PATH.
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
codex mcp add memesh -- memesh-mcp
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Writes `[mcp_servers.memesh]` into `~/.codex/config.toml`.
|
|
101
|
+
|
|
102
|
+
**Verify**:
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
codex mcp list
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Expected: `memesh` is listed as enabled.
|
|
109
|
+
|
|
110
|
+
| Failure | Remedy |
|
|
111
|
+
|---|---|
|
|
112
|
+
| `command not found: codex` | Codex CLI itself is not installed — out of scope here; install it first, then re-run the add. |
|
|
113
|
+
| `memesh` absent from the list | The add did not persist. Re-run `codex mcp add memesh -- memesh-mcp` and re-check. |
|
|
114
|
+
| Listed, but tool calls fail | Run `command -v memesh-mcp`. Empty output means section 2 is incomplete or PATH is wrong — fix per section 2's table. |
|
|
115
|
+
|
|
116
|
+
## 4. Gemini CLI
|
|
117
|
+
|
|
118
|
+
Prerequisite: section 2 — `memesh-mcp` must resolve on PATH.
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
gemini mcp add -s user memesh memesh-mcp
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
`-s user` registers at user scope, so it works from every folder.
|
|
125
|
+
|
|
126
|
+
**Verify**:
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
gemini mcp list
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Expected: `memesh` shows **Connected**.
|
|
133
|
+
|
|
134
|
+
| Failure | Remedy |
|
|
135
|
+
|---|---|
|
|
136
|
+
| `command not found: gemini` | Gemini CLI itself is not installed — out of scope here; install it first, then re-run the add. |
|
|
137
|
+
| Shows Disconnected | Run `command -v memesh-mcp`. Empty output means section 2 is incomplete or PATH is wrong — fix per section 2's table, then re-run `gemini mcp list`. |
|
|
138
|
+
| `memesh` absent from the list | The add was made in a different scope or did not persist. Re-run `gemini mcp add -s user memesh memesh-mcp`. |
|
package/package.json
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pcircle/memesh",
|
|
3
|
-
"version": "4.
|
|
4
|
-
"description": "MeMesh —
|
|
3
|
+
"version": "4.6.1",
|
|
4
|
+
"description": "MeMesh — agentic memory for coding agents. Captured from the agent's real work via hooks, recalled when it acts. One SQLite file, zero cloud required.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
8
8
|
"memesh": "dist/transports/cli/cli.js",
|
|
9
9
|
"memesh-mcp": "dist/mcp/server.js",
|
|
10
|
-
"memesh-http": "dist/transports/http/server.js"
|
|
11
|
-
"memesh-view": "dist/cli/view.js"
|
|
10
|
+
"memesh-http": "dist/transports/http/server.js"
|
|
12
11
|
},
|
|
13
12
|
"files": [
|
|
14
13
|
"dist/",
|
|
@@ -20,7 +19,9 @@
|
|
|
20
19
|
"skills/",
|
|
21
20
|
".claude-plugin/",
|
|
22
21
|
"README.md",
|
|
23
|
-
"LICENSE"
|
|
22
|
+
"LICENSE",
|
|
23
|
+
"llms-install.md",
|
|
24
|
+
"AGENTS.md"
|
|
24
25
|
],
|
|
25
26
|
"scripts": {
|
|
26
27
|
"build": "node scripts/check-schema-drift.mjs && tsc && node scripts/generate-hook-core.mjs && node scripts/copy-cli-assets.mjs && node scripts/set-executable-bits.mjs && node scripts/generate-skills-manifest.mjs && npm run build:dashboard && node scripts/smoke-test.mjs",
|
|
@@ -41,9 +42,9 @@
|
|
|
41
42
|
},
|
|
42
43
|
"author": "PCIRCLE-AI",
|
|
43
44
|
"license": "MIT",
|
|
44
|
-
"homepage": "https://
|
|
45
|
+
"homepage": "https://github.com/PCIRCLE-AI/memesh",
|
|
45
46
|
"bugs": {
|
|
46
|
-
"url": "https://github.com/PCIRCLE-AI/memesh
|
|
47
|
+
"url": "https://github.com/PCIRCLE-AI/memesh/issues"
|
|
47
48
|
},
|
|
48
49
|
"keywords": [
|
|
49
50
|
"claude-code",
|
|
@@ -51,11 +52,15 @@
|
|
|
51
52
|
"model-context-protocol",
|
|
52
53
|
"memory",
|
|
53
54
|
"sqlite",
|
|
54
|
-
"knowledge-graph"
|
|
55
|
+
"knowledge-graph",
|
|
56
|
+
"agentic-memory",
|
|
57
|
+
"agent-memory",
|
|
58
|
+
"ai-agents",
|
|
59
|
+
"coding-agents"
|
|
55
60
|
],
|
|
56
61
|
"repository": {
|
|
57
62
|
"type": "git",
|
|
58
|
-
"url": "git+https://github.com/PCIRCLE-AI/memesh
|
|
63
|
+
"url": "git+https://github.com/PCIRCLE-AI/memesh.git"
|
|
59
64
|
},
|
|
60
65
|
"dependencies": {
|
|
61
66
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// AUTO-GENERATED from src/core/capture-flag.ts — DO NOT EDIT BY HAND.
|
|
3
|
+
// Regenerate with: npm run build (scripts/generate-hook-core.mjs)
|
|
4
|
+
//
|
|
5
|
+
// Claude Code hooks import this committed copy instead of dist/, so the
|
|
6
|
+
// always-on capture path survives a missing or stale dist/ while staying
|
|
7
|
+
// byte-locked to core — eliminating the hand-mirror drift behind the P0 FTS bug.
|
|
8
|
+
// ============================================================================
|
|
9
|
+
export function autoCaptureDecision(envVal, configAutoCapture) {
|
|
10
|
+
if (envVal === 'false')
|
|
11
|
+
return { enabled: false, offSource: 'env' };
|
|
12
|
+
if (envVal === 'true')
|
|
13
|
+
return { enabled: true, offSource: null };
|
|
14
|
+
if (configAutoCapture === false)
|
|
15
|
+
return { enabled: false, offSource: 'config' };
|
|
16
|
+
return { enabled: true, offSource: null };
|
|
17
|
+
}
|
|
@@ -62,9 +62,12 @@ const LONE_UNSPACED_CHAR = new RegExp(`[${UNSPACED_SCRIPT_CLASS}]`, 'u');
|
|
|
62
62
|
export function isLoneUnspacedChar(term) {
|
|
63
63
|
return [...term].length === 1 && LONE_UNSPACED_CHAR.test(term);
|
|
64
64
|
}
|
|
65
|
-
|
|
65
|
+
function foldTitleIntoObservations(title, observationsText) {
|
|
66
|
+
return title ? `${title} ${observationsText}` : observationsText;
|
|
67
|
+
}
|
|
68
|
+
export function removeFromFts(db, entityId, name, prevObsText, prevTitle) {
|
|
66
69
|
try {
|
|
67
|
-
db.prepare("INSERT INTO entities_fts (entities_fts, rowid, name, observations) VALUES('delete', ?, ?, ?)").run(entityId, toIndexForm(name), toIndexForm(prevObsText));
|
|
70
|
+
db.prepare("INSERT INTO entities_fts (entities_fts, rowid, name, observations) VALUES('delete', ?, ?, ?)").run(entityId, toIndexForm(name), toIndexForm(foldTitleIntoObservations(prevTitle, prevObsText)));
|
|
68
71
|
}
|
|
69
72
|
catch (err) {
|
|
70
73
|
if (isBenignFtsDeleteError(err))
|
|
@@ -76,6 +79,15 @@ function isBenignFtsDeleteError(err) {
|
|
|
76
79
|
const msg = err?.message ?? '';
|
|
77
80
|
return /no such rowid|values do not match|no such row\b/i.test(msg);
|
|
78
81
|
}
|
|
79
|
-
export function
|
|
80
|
-
|
|
82
|
+
export function joinIndexedObservations(contents) {
|
|
83
|
+
return contents.join(' ');
|
|
84
|
+
}
|
|
85
|
+
export function indexedObservationText(db, entityId) {
|
|
86
|
+
const rows = db
|
|
87
|
+
.prepare('SELECT content FROM observations WHERE entity_id = ? ORDER BY id')
|
|
88
|
+
.all(entityId);
|
|
89
|
+
return joinIndexedObservations(rows.map((o) => o.content));
|
|
90
|
+
}
|
|
91
|
+
export function insertFtsRow(db, entityId, name, observationsText, title) {
|
|
92
|
+
db.prepare('INSERT INTO entities_fts (rowid, name, observations) VALUES (?, ?, ?)').run(entityId, toIndexForm(name), toIndexForm(foldTitleIntoObservations(title, observationsText)));
|
|
81
93
|
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// AUTO-GENERATED from src/core/guards.ts — DO NOT EDIT BY HAND.
|
|
3
|
+
// Regenerate with: npm run build (scripts/generate-hook-core.mjs)
|
|
4
|
+
//
|
|
5
|
+
// Claude Code hooks import this committed copy instead of dist/, so the
|
|
6
|
+
// always-on capture path survives a missing or stale dist/ while staying
|
|
7
|
+
// byte-locked to core — eliminating the hand-mirror drift behind the P0 FTS bug.
|
|
8
|
+
// ============================================================================
|
|
9
|
+
export const GUARD_TOOLS = new Set(['Bash', 'Edit', 'Write']);
|
|
10
|
+
export const GUARD_BENIGN_PROBES = [
|
|
11
|
+
'ls',
|
|
12
|
+
'git status',
|
|
13
|
+
'git diff',
|
|
14
|
+
'npm test',
|
|
15
|
+
'echo ok',
|
|
16
|
+
'cd ..',
|
|
17
|
+
'src/index.ts',
|
|
18
|
+
];
|
|
19
|
+
const PATTERN_MIN = 6;
|
|
20
|
+
const PATTERN_MAX = 200;
|
|
21
|
+
const MESSAGE_MAX = 280;
|
|
22
|
+
export function validateGuardSpec(spec) {
|
|
23
|
+
const errors = [];
|
|
24
|
+
const s = spec;
|
|
25
|
+
if (!s || typeof s !== 'object')
|
|
26
|
+
return ['guard spec is not an object'];
|
|
27
|
+
if (typeof s.tool !== 'string' || !GUARD_TOOLS.has(s.tool)) {
|
|
28
|
+
errors.push(`tool must be one of ${[...GUARD_TOOLS].join('/')}`);
|
|
29
|
+
}
|
|
30
|
+
if (typeof s.pattern !== 'string' || s.pattern.length < PATTERN_MIN || s.pattern.length > PATTERN_MAX) {
|
|
31
|
+
errors.push(`pattern must be a string of ${PATTERN_MIN}–${PATTERN_MAX} chars`);
|
|
32
|
+
return errors;
|
|
33
|
+
}
|
|
34
|
+
let re;
|
|
35
|
+
try {
|
|
36
|
+
re = new RegExp(s.pattern, 'i');
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
return [...errors, `pattern does not compile: ${err instanceof Error ? err.message : String(err)}`];
|
|
40
|
+
}
|
|
41
|
+
if (re.test(''))
|
|
42
|
+
errors.push('pattern matches the empty string — it would fire on everything');
|
|
43
|
+
for (const probe of GUARD_BENIGN_PROBES) {
|
|
44
|
+
if (re.test(probe))
|
|
45
|
+
errors.push(`pattern matches the benign input "${probe}" — too broad to be a guard`);
|
|
46
|
+
}
|
|
47
|
+
if (typeof s.message !== 'string' || s.message.trim().length === 0 || s.message.length > MESSAGE_MAX) {
|
|
48
|
+
errors.push(`message must be a non-empty string of at most ${MESSAGE_MAX} chars`);
|
|
49
|
+
}
|
|
50
|
+
const matches = Array.isArray(s.should_match) ? s.should_match.filter((x) => typeof x === 'string') : [];
|
|
51
|
+
const nonMatches = Array.isArray(s.should_not_match) ? s.should_not_match.filter((x) => typeof x === 'string') : [];
|
|
52
|
+
if (matches.length < 2) {
|
|
53
|
+
errors.push('should_match needs at least 2 example inputs');
|
|
54
|
+
}
|
|
55
|
+
if (nonMatches.length < 2) {
|
|
56
|
+
errors.push('should_not_match needs at least 2 example inputs');
|
|
57
|
+
}
|
|
58
|
+
for (const ex of matches) {
|
|
59
|
+
if (!re.test(ex))
|
|
60
|
+
errors.push(`should_match example does not match: "${ex.slice(0, 80)}"`);
|
|
61
|
+
}
|
|
62
|
+
for (const ex of nonMatches) {
|
|
63
|
+
if (re.test(ex))
|
|
64
|
+
errors.push(`should_not_match example matches: "${ex.slice(0, 80)}"`);
|
|
65
|
+
}
|
|
66
|
+
return errors;
|
|
67
|
+
}
|
|
68
|
+
export function matchingGuards(guards, tool, haystack) {
|
|
69
|
+
const out = [];
|
|
70
|
+
if (typeof haystack !== 'string' || haystack.length === 0)
|
|
71
|
+
return out;
|
|
72
|
+
for (const g of guards) {
|
|
73
|
+
if (g.tool !== tool)
|
|
74
|
+
continue;
|
|
75
|
+
if (g.action !== 'warn' && g.action !== 'block')
|
|
76
|
+
continue;
|
|
77
|
+
let re;
|
|
78
|
+
try {
|
|
79
|
+
re = new RegExp(g.pattern, 'i');
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (re.test(haystack))
|
|
85
|
+
out.push(g);
|
|
86
|
+
}
|
|
87
|
+
return out;
|
|
88
|
+
}
|
|
89
|
+
export function guardFromMetadata(lessonId, metadata) {
|
|
90
|
+
if (!metadata)
|
|
91
|
+
return null;
|
|
92
|
+
try {
|
|
93
|
+
const meta = JSON.parse(metadata);
|
|
94
|
+
const g = meta?.guard;
|
|
95
|
+
if (!g || g.enabled !== true)
|
|
96
|
+
return null;
|
|
97
|
+
if (typeof g.tool !== 'string' || typeof g.pattern !== 'string' || typeof g.message !== 'string')
|
|
98
|
+
return null;
|
|
99
|
+
return {
|
|
100
|
+
lessonId,
|
|
101
|
+
tool: g.tool,
|
|
102
|
+
pattern: g.pattern,
|
|
103
|
+
message: g.message,
|
|
104
|
+
action: typeof g.action === 'string' ? g.action : 'warn',
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
}
|