quilltap 4.8.0-dev.125 → 4.8.0-dev.136
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 +2 -0
- package/lib/__tests__/completion-coverage.test.js +35 -0
- package/lib/completion/bash.template +4 -0
- package/lib/completion/fish.template +11 -0
- package/lib/completion/zsh.template +3 -0
- package/lib/docs-commands.js +4 -0
- package/lib/memories-commands.js +6 -0
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -187,6 +187,7 @@ quilltap docs status # Per-mount extraction + embeddi
|
|
|
187
187
|
quilltap docs scan <mount> # Trigger a rescan
|
|
188
188
|
quilltap docs reindex <mount> [path] [--force] # Re-extract + re-chunk
|
|
189
189
|
quilltap docs embed <mount> [path] [--force] [--wait] # Enqueue embedding jobs
|
|
190
|
+
quilltap docs grep --semantic [--top N] [--threshold 0..1] <query> # Embedding search over indexed chunks
|
|
190
191
|
quilltap docs write [--force] [--base64] <mount> <path> [file] # Stdin or file → mount
|
|
191
192
|
quilltap docs read [--rendered] [--base64] <mount> <path> # File contents → stdout
|
|
192
193
|
quilltap docs delete <mount> <path> # Idempotent delete
|
|
@@ -226,6 +227,7 @@ quilltap memories grep -i --max 3 --context 1 "concrete examples" # Pattern
|
|
|
226
227
|
quilltap memories show <id|prefix> [--depth N] [--no-related] # Full record + related-memory neighbourhood
|
|
227
228
|
quilltap memories tree <id|prefix> [--depth N] [--max-nodes N] # ASCII walk of the bidirectional related-memory graph
|
|
228
229
|
quilltap memories status [--character <name|id>] # Per-holder rollup + dangling-edge check
|
|
230
|
+
quilltap memories grep --semantic --character Ariadne "the argument" # Embedding search (server required, one holder)
|
|
229
231
|
```
|
|
230
232
|
|
|
231
233
|
Shared filter flags apply to `ls`, `find`, `grep`, and `status` where they make sense: `--character`, `--about` (with `self` / `none` shortcuts), `--source`, `--chat` (with `none` for manual entries), `--project`, `--since`, `--until`, `--min-importance`, `--min-reinforced`, `--has-embedding` / `--no-embedding`. Sort flags (`--sort reinforced|importance|created|accessed|reinforcement-count|links`, plus `-r` to reverse) apply to `ls`, `find`, and `grep`. Names accept fuzzy substrings; ambiguous names print candidates and exit 2. `--json` is supported by every verb. The legacy `quilltap db memories --character <name>` verb remains undisturbed.
|
|
@@ -59,3 +59,38 @@ describe('CLI subcommand surface stays documented', () => {
|
|
|
59
59
|
expect(missing).toEqual([]);
|
|
60
60
|
});
|
|
61
61
|
});
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* A bare substring match is too weak: a subcommand named only in a shared
|
|
65
|
+
* `case` list still tab-completes its own flags as nothing. These check that
|
|
66
|
+
* each shell actually has a per-subcommand completion arm — the gap that let
|
|
67
|
+
* `file-verify` (all three shells) and `recall-replay` (fish) ship with the
|
|
68
|
+
* verb completing but none of its flags.
|
|
69
|
+
*/
|
|
70
|
+
describe('every subcommand has its own completion arm', () => {
|
|
71
|
+
function template(shell) {
|
|
72
|
+
return fs.readFileSync(path.join(COMPLETION_DIR, `${shell}.template`), 'utf8');
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
it('bash has a case arm per subcommand', () => {
|
|
76
|
+
const tpl = template('bash');
|
|
77
|
+
const missing = SUBCOMMANDS.filter((sub) => !new RegExp(`^\\s*${sub}\\)\\s*$`, 'm').test(tpl));
|
|
78
|
+
expect(missing).toEqual([]);
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it('zsh dispatches every subcommand from _quilltap_subcommand', () => {
|
|
82
|
+
const tpl = template('zsh');
|
|
83
|
+
const body = tpl.match(/_quilltap_subcommand\(\) \{([\s\S]*?)\n\}/);
|
|
84
|
+
expect(body).toBeTruthy();
|
|
85
|
+
const missing = SUBCOMMANDS.filter((sub) => !new RegExp(`^\\s*${sub}\\)\\s*$`, 'm').test(body[1]));
|
|
86
|
+
expect(missing).toEqual([]);
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
it('fish offers every subcommand at top level and completes inside it', () => {
|
|
90
|
+
const tpl = template('fish');
|
|
91
|
+
const notOffered = SUBCOMMANDS.filter((sub) => !tpl.includes(`-a '${sub}'`));
|
|
92
|
+
expect(notOffered).toEqual([]);
|
|
93
|
+
const noFlags = SUBCOMMANDS.filter((sub) => !tpl.includes(`__quilltap_using_subcommand ${sub}'`));
|
|
94
|
+
expect(noFlags).toEqual([]);
|
|
95
|
+
});
|
|
96
|
+
});
|
|
@@ -244,6 +244,10 @@ _quilltap_complete() {
|
|
|
244
244
|
COMPREPLY=($(compgen -W "$maint_flags" -- "$cur"))
|
|
245
245
|
fi
|
|
246
246
|
;;
|
|
247
|
+
file-verify)
|
|
248
|
+
local fv_flags="--all --stall-ms --json --instance --data-dir --help"
|
|
249
|
+
COMPREPLY=($(compgen -W "$fv_flags" -- "$cur"))
|
|
250
|
+
;;
|
|
247
251
|
completion)
|
|
248
252
|
if [[ "$cur" == -* ]]; then
|
|
249
253
|
COMPREPLY=($(compgen -W "--help" -- "$cur"))
|
|
@@ -55,6 +55,7 @@ complete -c quilltap -n '__quilltap_no_subcommand' -f -a 'themes' -d 'Manage the
|
|
|
55
55
|
complete -c quilltap -n '__quilltap_no_subcommand' -f -a 'instances' -d 'Register or inspect instances'
|
|
56
56
|
complete -c quilltap -n '__quilltap_no_subcommand' -f -a 'memories' -d 'Search and browse memories'
|
|
57
57
|
complete -c quilltap -n '__quilltap_no_subcommand' -f -a 'memory-diff' -d 'Memory extraction dry-run'
|
|
58
|
+
complete -c quilltap -n '__quilltap_no_subcommand' -f -a 'recall-replay' -d 'Replay memory recall for a turn'
|
|
58
59
|
complete -c quilltap -n '__quilltap_no_subcommand' -f -a 'logs' -d 'Tail or print log files'
|
|
59
60
|
complete -c quilltap -n '__quilltap_no_subcommand' -f -a 'migrations' -d 'Inspect migration status'
|
|
60
61
|
complete -c quilltap -n '__quilltap_no_subcommand' -f -a 'maintenance' -d 'Run retention/cleanup sweeps'
|
|
@@ -261,6 +262,16 @@ complete -c quilltap -n '__quilltap_using_subcommand memory-diff' -l 'port' -s '
|
|
|
261
262
|
complete -c quilltap -n '__quilltap_using_subcommand memory-diff' -l 'concurrency' -d 'Concurrency limit' -x
|
|
262
263
|
complete -c quilltap -n '__quilltap_using_subcommand memory-diff' -l 'out' -d 'Output file' -r -F
|
|
263
264
|
|
|
265
|
+
# ---------- recall-replay flags ----------
|
|
266
|
+
complete -c quilltap -n '__quilltap_using_subcommand recall-replay' -l 'turn' -d 'Interchange to replay (1-based)' -x
|
|
267
|
+
complete -c quilltap -n '__quilltap_using_subcommand recall-replay' -l 'char' -d 'Character whose memories are searched' -x
|
|
268
|
+
complete -c quilltap -n '__quilltap_using_subcommand recall-replay' -l 'limit' -d 'Candidate rows per path' -x
|
|
269
|
+
complete -c quilltap -n '__quilltap_using_subcommand recall-replay' -l 'port' -d 'Server port' -x
|
|
270
|
+
|
|
271
|
+
# ---------- file-verify flags ----------
|
|
272
|
+
complete -c quilltap -n '__quilltap_using_subcommand file-verify' -l 'all' -d 'Read every top-level file, not just dataless ones'
|
|
273
|
+
complete -c quilltap -n '__quilltap_using_subcommand file-verify' -l 'stall-ms' -d 'Per-chunk stall threshold (ms)' -x
|
|
274
|
+
|
|
264
275
|
# ---------- logs flags ----------
|
|
265
276
|
complete -c quilltap -n '__quilltap_using_subcommand logs' -l 'stream' -d 'Log stream' -x -a 'combined error stdout stderr startup'
|
|
266
277
|
complete -c quilltap -n '__quilltap_using_subcommand logs' -l 'tail' -d 'Last N lines (0=full)' -x
|
|
@@ -85,6 +85,9 @@ _quilltap_subcommand() {
|
|
|
85
85
|
maintenance)
|
|
86
86
|
_quilltap_maintenance
|
|
87
87
|
;;
|
|
88
|
+
file-verify)
|
|
89
|
+
_arguments '--all[read every top-level file, not just dataless ones]' '--stall-ms[per-chunk stall threshold in ms]:ms:' '--json[machine-readable output]' '--help[show help]'
|
|
90
|
+
;;
|
|
88
91
|
completion)
|
|
89
92
|
_quilltap_completion
|
|
90
93
|
;;
|
package/lib/docs-commands.js
CHANGED
|
@@ -73,6 +73,9 @@ Read subcommands:
|
|
|
73
73
|
status [--mount <name|id>] [--top N] Per-mount extraction + embedding rollup
|
|
74
74
|
|
|
75
75
|
Server-required subcommands (background-job queue lives in the running server):
|
|
76
|
+
grep --semantic [--mount <name|id|all>] [--top N] [--threshold 0..1] <query>
|
|
77
|
+
Embedding search over indexed chunks
|
|
78
|
+
(default --top 20, --threshold 0.5)
|
|
76
79
|
reindex <mount> [path] [--force] Re-extract text + re-chunk affected files
|
|
77
80
|
embed <mount> [path] [--force] [--wait]
|
|
78
81
|
Enqueue embedding jobs for un-embedded chunks
|
|
@@ -158,6 +161,7 @@ Examples:
|
|
|
158
161
|
quilltap docs find --mount notes --ext md Knowledge
|
|
159
162
|
quilltap docs grep --mount notes --ignore-case "five-point Calvinist"
|
|
160
163
|
quilltap docs grep --mount notes -l "TODO"
|
|
164
|
+
quilltap docs grep --semantic --mount notes --top 10 "what did we decide about pricing"
|
|
161
165
|
quilltap docs read qtap://notes/today.md
|
|
162
166
|
quilltap docs find --uri Manifesto
|
|
163
167
|
quilltap docs status
|
package/lib/memories-commands.js
CHANGED
|
@@ -1276,6 +1276,11 @@ Subcommands:
|
|
|
1276
1276
|
grep [filters] [-i] [-l] [--max N] [--context N] <pattern>
|
|
1277
1277
|
Pattern search inside content
|
|
1278
1278
|
with snippets.
|
|
1279
|
+
grep --semantic --character <name|id> [--top N] [--threshold 0..1] <query>
|
|
1280
|
+
Embedding search via the running
|
|
1281
|
+
server (default --top 20,
|
|
1282
|
+
--threshold 0.5). One holder at a
|
|
1283
|
+
time; --port sets the server port.
|
|
1279
1284
|
show <id|prefix> [--depth N] [--no-related] [--json]
|
|
1280
1285
|
Full record + related-memory
|
|
1281
1286
|
neighbourhood.
|
|
@@ -1326,6 +1331,7 @@ Examples:
|
|
|
1326
1331
|
quilltap memories ls --character Ariadne --sort created --limit 10
|
|
1327
1332
|
quilltap memories find "concrete examples"
|
|
1328
1333
|
quilltap memories grep -i --max 3 --context 1 "concrete examples"
|
|
1334
|
+
quilltap memories grep --semantic --character Ariadne --top 10 "the argument about Calvin"
|
|
1329
1335
|
quilltap memories show abc12345 --depth 2
|
|
1330
1336
|
quilltap memories tree abc12345 --depth 3
|
|
1331
1337
|
quilltap memories status --character Ariadne
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "quilltap",
|
|
3
|
-
"version": "4.8.0-dev.
|
|
3
|
+
"version": "4.8.0-dev.136",
|
|
4
4
|
"description": "Self-hosted AI workspace for writers, worldbuilders, and roleplayers. Run with npx quilltap.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Charles Sebold",
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"@napi-rs/canvas": "^0.1.100",
|
|
40
40
|
"better-sqlite3-multiple-ciphers": "^12.11.1",
|
|
41
41
|
"node-pty": "^1.1.0",
|
|
42
|
-
"sharp": "^0.
|
|
43
|
-
"tar": "^7.5.
|
|
42
|
+
"sharp": "^0.35.3",
|
|
43
|
+
"tar": "^7.5.22",
|
|
44
44
|
"yauzl": "^3.4.0"
|
|
45
45
|
},
|
|
46
46
|
"engines": {
|