@gmickel/gno 1.34.4 → 1.34.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -1
- package/THIRD_PARTY_NOTICES.md +16 -0
- package/browser-extension/artifacts/{gno-browser-clipper-v1.34.4.zip → gno-browser-clipper-v1.34.6.zip} +0 -0
- package/browser-extension/artifacts/gno-browser-clipper-v1.34.6.zip.sha256 +1 -0
- package/browser-extension/dist/manifest.json +1 -1
- package/package.json +5 -1
- package/spec/cli.md +16 -10
- package/src/cli/pager.ts +29 -14
- package/src/ingestion/sync.ts +368 -84
- package/src/serve/public/globals.built.css +1 -1
- package/src/serve/watch-reconciliation-fallback-disk.ts +220 -0
- package/src/serve/watch-reconciliation-fallback.ts +404 -0
- package/src/serve/watch-reconciliation-shared.ts +343 -0
- package/src/serve/watch-reconciliation.ts +122 -0
- package/src/serve/watch-service-events.ts +261 -0
- package/src/serve/watch-service-flush-generation.ts +140 -0
- package/src/serve/watch-service-flush-helpers.ts +147 -0
- package/src/serve/watch-service-flush.ts +433 -0
- package/src/serve/watch-service-hosts.ts +109 -0
- package/src/serve/watch-service-lifecycle.ts +219 -0
- package/src/serve/watch-service-run-flush.ts +236 -0
- package/src/serve/watch-service-snapshot.ts +101 -0
- package/src/serve/watch-service-state.ts +146 -0
- package/src/serve/watch-service.ts +265 -306
- package/src/serve/watch-snapshot-handles.ts +285 -0
- package/src/serve/watch-snapshot-libc.ts +391 -0
- package/src/serve/watch-snapshot-ops.ts +399 -0
- package/src/serve/watch-snapshot-resolve.ts +246 -0
- package/src/serve/watch-snapshot-scan.ts +297 -0
- package/src/serve/watch-snapshot-types.ts +350 -0
- package/src/serve/watch-snapshot.ts +51 -0
- package/src/store/index.ts +1 -1
- package/src/store/sqlite/adapter.ts +191 -0
- package/src/store/types.ts +66 -0
- package/vendor/fts5-snowball/README.md +5 -1
- package/vendor/fts5-snowball/darwin-x64/fts5stemmer.dylib +0 -0
- package/browser-extension/artifacts/gno-browser-clipper-v1.34.4.zip.sha256 +0 -1
package/README.md
CHANGED
|
@@ -117,7 +117,7 @@ gno daemon --detach # headless indexing + resident MCP gateway
|
|
|
117
117
|
|
|
118
118
|
<!-- public-truth:current-version -->
|
|
119
119
|
|
|
120
|
-
> Current release: **v1.34.
|
|
120
|
+
> Current release: **v1.34.5** — see [CHANGELOG.md](./CHANGELOG.md)
|
|
121
121
|
|
|
122
122
|
<!-- /public-truth -->
|
|
123
123
|
|
|
@@ -332,6 +332,11 @@ gno daemon --detach # background (macOS/Linux); use --status / --stop to manag
|
|
|
332
332
|
detached child and exits 0; `gno daemon --status` and `gno daemon --stop` give
|
|
333
333
|
you lifecycle control without `nohup`, `launchd`, or `systemd` units.
|
|
334
334
|
|
|
335
|
+
Exact eligible file events always go through content hashing. Atomic-save temp
|
|
336
|
+
files, directory events, missing filenames, and recursive deletions are
|
|
337
|
+
reconciled from bounded filesystem/index evidence, so final files appear and
|
|
338
|
+
proven removals disappear without routinely resyncing untouched siblings.
|
|
339
|
+
|
|
335
340
|
See also: [docs/DAEMON.md](./docs/DAEMON.md)
|
|
336
341
|
|
|
337
342
|
### Connect to AI Agents
|
|
@@ -396,6 +401,11 @@ headless. `--detach` / `--status` / `--stop` give you symmetric lifecycle
|
|
|
396
401
|
controls so you don't need `nohup`, `launchd`, or `systemd` units. The same
|
|
397
402
|
flag set is available on `gno serve`.
|
|
398
403
|
|
|
404
|
+
The shared watcher preserves exact content-hash decisions while reconciling
|
|
405
|
+
ambiguous atomic replacements and directory changes with bounded work and
|
|
406
|
+
durable retries. Tested guarantees cover supported local filesystems; network,
|
|
407
|
+
removable, and coarse-timestamp filesystems are not universally claimed.
|
|
408
|
+
|
|
399
409
|
[Daemon guide →](https://gno.sh/features/daemon-mode)
|
|
400
410
|
|
|
401
411
|
---
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -2,6 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
This project includes the following third-party components:
|
|
4
4
|
|
|
5
|
+
## less-pager-mini
|
|
6
|
+
|
|
7
|
+
- **License**: MIT
|
|
8
|
+
- **Copyright**: Dawson Huang
|
|
9
|
+
- **Project URL**: https://github.com/dawsonhuang0/Less-Pager-Mini
|
|
10
|
+
|
|
11
|
+
Installed as a runtime dependency to provide the built-in Windows terminal pager.
|
|
12
|
+
|
|
13
|
+
## char-width
|
|
14
|
+
|
|
15
|
+
- **License**: MIT
|
|
16
|
+
- **Copyright**: Dawson Huang
|
|
17
|
+
- **Project URL**: https://github.com/legend80s/char-width
|
|
18
|
+
|
|
19
|
+
Installed transitively by `less-pager-mini` for terminal display-width calculation.
|
|
20
|
+
|
|
5
21
|
## fts5-snowball
|
|
6
22
|
|
|
7
23
|
- **Source**: vendored under `vendor/fts5-snowball/`
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
76e1e560efa69f780e5e61130008e863cf8288a8ffe5cd82e16b48608c6c8578 gno-browser-clipper-v1.34.6.zip
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gmickel/gno",
|
|
3
|
-
"version": "1.34.
|
|
3
|
+
"version": "1.34.6",
|
|
4
4
|
"description": "Local semantic search for your documents. Index Markdown, PDF, and Office files with hybrid BM25 + vector search.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"embeddings",
|
|
@@ -82,6 +82,9 @@
|
|
|
82
82
|
"eval:hybrid:delta": "bun scripts/hybrid-benchmark.ts --delta",
|
|
83
83
|
"bench:ast-chunking": "bun scripts/ast-chunking-benchmark.ts",
|
|
84
84
|
"smoke:serve-shutdown": "bun scripts/serve-shutdown-smoke.ts",
|
|
85
|
+
"test:watcher:filesystem": "bun test test/serve/watch-service-filesystem.test.ts test/serve/resident-runtime.test.ts",
|
|
86
|
+
"bench:watcher-reconciliation": "bun scripts/watcher-reconciliation-benchmark.ts",
|
|
87
|
+
"smoke:watcher-reconciliation": "bun scripts/watcher-reconciliation-smoke.ts",
|
|
85
88
|
"bench:code-embeddings": "bun scripts/code-embedding-benchmark.ts",
|
|
86
89
|
"bench:code-embeddings:write": "bun scripts/code-embedding-benchmark.ts --write",
|
|
87
90
|
"bench:general-embeddings": "bun scripts/general-embedding-benchmark.ts",
|
|
@@ -176,6 +179,7 @@
|
|
|
176
179
|
"embla-carousel-react": "8.6.0",
|
|
177
180
|
"franc": "6.2.0",
|
|
178
181
|
"jsonc-parser": "3.3.1",
|
|
182
|
+
"less-pager-mini": "1.12.1",
|
|
179
183
|
"lucide-react": "1.28.0",
|
|
180
184
|
"markitdown-ts": "0.0.10",
|
|
181
185
|
"mdast-util-from-markdown": "2.0.3",
|
package/spec/cli.md
CHANGED
|
@@ -3369,6 +3369,12 @@ is blocked.
|
|
|
3369
3369
|
- Opens DB once at startup
|
|
3370
3370
|
- Loads config and requires at least one configured collection
|
|
3371
3371
|
- Starts the same watcher + embed scheduler used by `gno serve`
|
|
3372
|
+
- Exact contained eligible paths always use targeted content-hash sync.
|
|
3373
|
+
Ambiguous temp/directory/missing-name/recursive-delete events use bounded,
|
|
3374
|
+
failure-safe filesystem/index reconciliation with durable retry.
|
|
3375
|
+
- Bounded overflow or unavailable native anchored handles escalates to full
|
|
3376
|
+
collection sync. This does not claim universal network/removable filesystem
|
|
3377
|
+
watcher behavior.
|
|
3372
3378
|
- Runs an initial sync by default
|
|
3373
3379
|
- Triggers embedding after initial sync completes
|
|
3374
3380
|
- Runs in the foreground until `SIGINT` / `SIGTERM`
|
|
@@ -3496,16 +3502,16 @@ Error codes match exit codes: `VALIDATION` (exit 1), `RUNTIME` (exit 2), `NOT_RU
|
|
|
3496
3502
|
|
|
3497
3503
|
## Environment Variables
|
|
3498
3504
|
|
|
3499
|
-
| Variable | Description
|
|
3500
|
-
| -------------------------- |
|
|
3501
|
-
| `GNO_CONFIG_DIR` | Override config directory
|
|
3502
|
-
| `GNO_DATA_DIR` | Override data directory (DB location)
|
|
3503
|
-
| `GNO_CACHE_DIR` | Override cache directory (models)
|
|
3504
|
-
| `NO_COLOR` | Disable colored output (standard)
|
|
3505
|
-
| `PAGER` | Pager for long output (default: less -R,
|
|
3506
|
-
| `GNO_SKILLS_HOME_OVERRIDE` | Override home dir for skill user scope (testing)
|
|
3507
|
-
| `CLAUDE_SKILLS_DIR` | Override Claude skills directory
|
|
3508
|
-
| `CODEX_SKILLS_DIR` | Override Codex skills directory
|
|
3505
|
+
| Variable | Description |
|
|
3506
|
+
| -------------------------- | --------------------------------------------------------------------- |
|
|
3507
|
+
| `GNO_CONFIG_DIR` | Override config directory |
|
|
3508
|
+
| `GNO_DATA_DIR` | Override data directory (DB location) |
|
|
3509
|
+
| `GNO_CACHE_DIR` | Override cache directory (models) |
|
|
3510
|
+
| `NO_COLOR` | Disable colored output (standard) |
|
|
3511
|
+
| `PAGER` | Pager for long output (default: less -R on Unix, built-in on Windows) |
|
|
3512
|
+
| `GNO_SKILLS_HOME_OVERRIDE` | Override home dir for skill user scope (testing) |
|
|
3513
|
+
| `CLAUDE_SKILLS_DIR` | Override Claude skills directory |
|
|
3514
|
+
| `CODEX_SKILLS_DIR` | Override Codex skills directory |
|
|
3509
3515
|
|
|
3510
3516
|
---
|
|
3511
3517
|
|
package/src/cli/pager.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Pager utility for long CLI output.
|
|
3
|
-
* Pipes output through less
|
|
3
|
+
* Pipes output through less or an in-process Windows pager when terminal height exceeded.
|
|
4
4
|
*
|
|
5
5
|
* @module src/cli/pager
|
|
6
6
|
*/
|
|
@@ -25,26 +25,32 @@ export interface PagerOptions {
|
|
|
25
25
|
|
|
26
26
|
/**
|
|
27
27
|
* Find available pager command.
|
|
28
|
-
* Priority: $PAGER env → less (with -R for colors)
|
|
28
|
+
* Priority: $PAGER env → built-in Windows pager → less (with -R for colors)
|
|
29
29
|
*/
|
|
30
|
-
|
|
30
|
+
export type PagerTarget =
|
|
31
|
+
| { kind: "external"; command: string[] }
|
|
32
|
+
| { kind: "internal" };
|
|
33
|
+
|
|
34
|
+
export function findPager(
|
|
35
|
+
env: NodeJS.ProcessEnv = process.env,
|
|
36
|
+
platformName: NodeJS.Platform = platform()
|
|
37
|
+
): PagerTarget {
|
|
31
38
|
// Check $PAGER env first (cross-platform)
|
|
32
|
-
const pagerEnv =
|
|
39
|
+
const pagerEnv = env.PAGER;
|
|
33
40
|
if (pagerEnv) {
|
|
34
41
|
// Split in case user has args like "less -R"
|
|
35
|
-
return pagerEnv.split(/\s+/);
|
|
42
|
+
return { kind: "external", command: pagerEnv.split(/\s+/) };
|
|
36
43
|
}
|
|
37
44
|
|
|
38
45
|
// Platform-specific fallbacks
|
|
39
|
-
const isWindows =
|
|
46
|
+
const isWindows = platformName === "win32";
|
|
40
47
|
|
|
41
48
|
if (isWindows) {
|
|
42
|
-
|
|
43
|
-
return ["more.com"];
|
|
49
|
+
return { kind: "internal" };
|
|
44
50
|
}
|
|
45
51
|
|
|
46
52
|
// Unix: prefer less with -R (preserve ANSI colors)
|
|
47
|
-
return ["less", "-R"];
|
|
53
|
+
return { kind: "external", command: ["less", "-R"] };
|
|
48
54
|
}
|
|
49
55
|
|
|
50
56
|
/**
|
|
@@ -136,15 +142,24 @@ export class Pager {
|
|
|
136
142
|
}
|
|
137
143
|
|
|
138
144
|
// Try to spawn pager
|
|
139
|
-
const
|
|
140
|
-
if (
|
|
141
|
-
|
|
142
|
-
process.stdout.write(content + "\n");
|
|
145
|
+
const pagerTarget = findPager();
|
|
146
|
+
if (pagerTarget.kind === "internal") {
|
|
147
|
+
await this.runInProcessPager(content);
|
|
143
148
|
return;
|
|
144
149
|
}
|
|
145
150
|
|
|
146
151
|
// Spawn pager and pipe content
|
|
147
|
-
await this.spawnPager(
|
|
152
|
+
await this.spawnPager(pagerTarget.command, content);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/** Use a less-compatible terminal UI on Windows without an external binary. */
|
|
156
|
+
private async runInProcessPager(content: string): Promise<void> {
|
|
157
|
+
try {
|
|
158
|
+
const { default: pager } = await import("less-pager-mini");
|
|
159
|
+
await pager(content, { LESS: "-R" });
|
|
160
|
+
} catch {
|
|
161
|
+
process.stdout.write(content + "\n");
|
|
162
|
+
}
|
|
148
163
|
}
|
|
149
164
|
|
|
150
165
|
/**
|