coding-friend-cli 1.18.0 → 1.19.0
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 +4 -1
- package/dist/{chunk-A427XMWE.js → chunk-IRPW2BMP.js} +3 -1
- package/dist/{chunk-YC6MBHCT.js → chunk-JFGLNTZI.js} +13 -0
- package/dist/{chunk-VUAUAO2R.js → chunk-NEQZP5D4.js} +10 -6
- package/dist/{chunk-KTX4MGMR.js → chunk-QMD7P67N.js} +24 -4
- package/dist/chunk-WEMDLEK5.js +331 -0
- package/dist/{config-6SBGNTAQ.js → config-UQXY45DN.js} +6 -244
- package/dist/{dev-MC6TGHRT.js → dev-7DLYIXBO.js} +2 -2
- package/dist/{disable-R6K5YJN4.js → disable-XYZRE3TD.js} +1 -1
- package/dist/{enable-HF4PYVJN.js → enable-3NZBQWLQ.js} +1 -1
- package/dist/{host-SYZH3FVC.js → host-QDWBFJB2.js} +1 -1
- package/dist/index.js +37 -28
- package/dist/{init-2HLPKYXB.js → init-ONUC6QMM.js} +1 -1
- package/dist/{install-3QCRGPTY.js → install-HLCVBOXO.js} +3 -3
- package/dist/{mcp-TBEDYELW.js → mcp-GFIOFXOL.js} +1 -1
- package/dist/{memory-BQK2R7BV.js → memory-BL37DXPU.js} +141 -21
- package/dist/postinstall.js +1 -1
- package/dist/{session-H4XW2WXH.js → session-JGRF5SNX.js} +1 -1
- package/dist/status-V324NM64.js +223 -0
- package/dist/{uninstall-5LRHXFSF.js → uninstall-NNCEKPIE.js} +2 -2
- package/dist/{update-4YUSCBCB.js → update-EVOGWLKX.js} +6 -2
- package/package.json +1 -1
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
import {
|
|
2
|
+
memoryConfigMenu
|
|
3
|
+
} from "./chunk-WEMDLEK5.js";
|
|
1
4
|
import {
|
|
2
5
|
getAllRules,
|
|
3
6
|
getExistingRules
|
|
4
7
|
} from "./chunk-7CAIGH2Y.js";
|
|
8
|
+
import "./chunk-RZRT7NGT.js";
|
|
5
9
|
import {
|
|
6
10
|
findStatuslineHookPath,
|
|
7
11
|
isStatuslineConfigured,
|
|
@@ -17,7 +21,7 @@ import {
|
|
|
17
21
|
ensureShellCompletion,
|
|
18
22
|
hasShellCompletion,
|
|
19
23
|
removeShellCompletion
|
|
20
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-NEQZP5D4.js";
|
|
21
25
|
import {
|
|
22
26
|
BACK,
|
|
23
27
|
applyDocsDirChange,
|
|
@@ -61,9 +65,6 @@ function getNestedFieldScope(section, field, globalCfg, localCfg) {
|
|
|
61
65
|
function getLearnFieldScope(field, globalCfg, localCfg) {
|
|
62
66
|
return getNestedFieldScope("learn", field, globalCfg, localCfg);
|
|
63
67
|
}
|
|
64
|
-
function getMemoryFieldScope(field, globalCfg, localCfg) {
|
|
65
|
-
return getNestedFieldScope("memory", field, globalCfg, localCfg);
|
|
66
|
-
}
|
|
67
68
|
function getMergedNestedValue(section, field, globalCfg, localCfg) {
|
|
68
69
|
const localSection = localCfg?.[section];
|
|
69
70
|
if (localSection?.[field] !== void 0) return localSection[field];
|
|
@@ -73,9 +74,6 @@ function getMergedNestedValue(section, field, globalCfg, localCfg) {
|
|
|
73
74
|
function getMergedLearnValue(field, globalCfg, localCfg) {
|
|
74
75
|
return getMergedNestedValue("learn", field, globalCfg, localCfg);
|
|
75
76
|
}
|
|
76
|
-
function getMergedMemoryValue(field, globalCfg, localCfg) {
|
|
77
|
-
return getMergedNestedValue("memory", field, globalCfg, localCfg);
|
|
78
|
-
}
|
|
79
77
|
function writeToScope(scope, data) {
|
|
80
78
|
const targetPath = scope === "global" ? globalConfigPath() : localConfigPath();
|
|
81
79
|
mergeJson(targetPath, data);
|
|
@@ -92,9 +90,6 @@ function writeNestedField(section, scope, field, value) {
|
|
|
92
90
|
function writeLearnField(scope, field, value) {
|
|
93
91
|
writeNestedField("learn", scope, field, value);
|
|
94
92
|
}
|
|
95
|
-
function writeMemoryField(scope, field, value) {
|
|
96
|
-
writeNestedField("memory", scope, field, value);
|
|
97
|
-
}
|
|
98
93
|
async function editDocsDir(globalCfg, localCfg) {
|
|
99
94
|
const currentValue = getMergedValue("docsDir", globalCfg, localCfg);
|
|
100
95
|
if (currentValue) {
|
|
@@ -380,239 +375,6 @@ async function learnSubMenu() {
|
|
|
380
375
|
}
|
|
381
376
|
}
|
|
382
377
|
}
|
|
383
|
-
async function editMemoryTier(globalCfg, localCfg) {
|
|
384
|
-
const currentValue = getMergedMemoryValue("tier", globalCfg, localCfg);
|
|
385
|
-
if (currentValue) {
|
|
386
|
-
log.dim(`Current: ${currentValue}`);
|
|
387
|
-
}
|
|
388
|
-
const choice = await select({
|
|
389
|
-
message: "Memory search tier:",
|
|
390
|
-
choices: injectBackChoice(
|
|
391
|
-
[
|
|
392
|
-
{
|
|
393
|
-
name: "auto \u2014 detect best available (recommended)",
|
|
394
|
-
value: "auto"
|
|
395
|
-
},
|
|
396
|
-
{
|
|
397
|
-
name: "full \u2014 SQLite + FTS5 + vector embeddings (Tier 1)",
|
|
398
|
-
value: "full"
|
|
399
|
-
},
|
|
400
|
-
{
|
|
401
|
-
name: "lite \u2014 MiniSearch daemon, in-memory BM25 + fuzzy (Tier 2)",
|
|
402
|
-
value: "lite"
|
|
403
|
-
},
|
|
404
|
-
{
|
|
405
|
-
name: "markdown \u2014 file-based substring search (Tier 3)",
|
|
406
|
-
value: "markdown"
|
|
407
|
-
}
|
|
408
|
-
],
|
|
409
|
-
"Back"
|
|
410
|
-
)
|
|
411
|
-
});
|
|
412
|
-
if (choice === BACK) return;
|
|
413
|
-
const scope = await askScope();
|
|
414
|
-
if (scope === "back") return;
|
|
415
|
-
writeMemoryField(scope, "tier", choice);
|
|
416
|
-
}
|
|
417
|
-
async function editMemoryAutoCapture(globalCfg, localCfg) {
|
|
418
|
-
const currentValue = getMergedMemoryValue(
|
|
419
|
-
"autoCapture",
|
|
420
|
-
globalCfg,
|
|
421
|
-
localCfg
|
|
422
|
-
);
|
|
423
|
-
if (currentValue !== void 0) {
|
|
424
|
-
log.dim(`Current: ${currentValue}`);
|
|
425
|
-
}
|
|
426
|
-
const value = await confirm({
|
|
427
|
-
message: "Auto-capture session context to memory on PreCompact (context window compression)?",
|
|
428
|
-
default: currentValue ?? false
|
|
429
|
-
});
|
|
430
|
-
const scope = await askScope();
|
|
431
|
-
if (scope === "back") return;
|
|
432
|
-
writeMemoryField(scope, "autoCapture", value);
|
|
433
|
-
}
|
|
434
|
-
async function editMemoryAutoStart(globalCfg, localCfg) {
|
|
435
|
-
const currentValue = getMergedMemoryValue(
|
|
436
|
-
"autoStart",
|
|
437
|
-
globalCfg,
|
|
438
|
-
localCfg
|
|
439
|
-
);
|
|
440
|
-
if (currentValue !== void 0) {
|
|
441
|
-
log.dim(`Current: ${currentValue}`);
|
|
442
|
-
}
|
|
443
|
-
const value = await confirm({
|
|
444
|
-
message: "Auto-start memory daemon when MCP server connects?",
|
|
445
|
-
default: currentValue ?? false
|
|
446
|
-
});
|
|
447
|
-
const scope = await askScope();
|
|
448
|
-
if (scope === "back") return;
|
|
449
|
-
writeMemoryField(scope, "autoStart", value);
|
|
450
|
-
}
|
|
451
|
-
async function editMemoryEmbedding(globalCfg, localCfg) {
|
|
452
|
-
const currentEmbedding = getMergedMemoryValue(
|
|
453
|
-
"embedding",
|
|
454
|
-
globalCfg,
|
|
455
|
-
localCfg
|
|
456
|
-
);
|
|
457
|
-
if (currentEmbedding) {
|
|
458
|
-
const parts = [`provider: ${currentEmbedding.provider ?? "transformers"}`];
|
|
459
|
-
if (currentEmbedding.model) parts.push(`model: ${currentEmbedding.model}`);
|
|
460
|
-
if (currentEmbedding.ollamaUrl)
|
|
461
|
-
parts.push(`url: ${currentEmbedding.ollamaUrl}`);
|
|
462
|
-
log.dim(`Current: ${parts.join(", ")}`);
|
|
463
|
-
}
|
|
464
|
-
const provider = await select({
|
|
465
|
-
message: "Embedding provider:",
|
|
466
|
-
choices: injectBackChoice(
|
|
467
|
-
[
|
|
468
|
-
{
|
|
469
|
-
name: "transformers \u2014 Transformers.js, runs in-process (no external deps)",
|
|
470
|
-
value: "transformers"
|
|
471
|
-
},
|
|
472
|
-
{
|
|
473
|
-
name: "ollama \u2014 Local Ollama server (faster, GPU support, wider model selection)",
|
|
474
|
-
value: "ollama"
|
|
475
|
-
}
|
|
476
|
-
],
|
|
477
|
-
"Back"
|
|
478
|
-
)
|
|
479
|
-
});
|
|
480
|
-
if (provider === BACK) return;
|
|
481
|
-
let model;
|
|
482
|
-
let ollamaUrl;
|
|
483
|
-
if (provider === "ollama") {
|
|
484
|
-
model = await input({
|
|
485
|
-
message: "Ollama model name:",
|
|
486
|
-
default: currentEmbedding?.model ?? "all-minilm:l6-v2"
|
|
487
|
-
});
|
|
488
|
-
ollamaUrl = await input({
|
|
489
|
-
message: "Ollama server URL:",
|
|
490
|
-
default: currentEmbedding?.ollamaUrl ?? "http://localhost:11434"
|
|
491
|
-
});
|
|
492
|
-
if (ollamaUrl === "http://localhost:11434") ollamaUrl = void 0;
|
|
493
|
-
} else {
|
|
494
|
-
model = await input({
|
|
495
|
-
message: "Transformers.js model:",
|
|
496
|
-
default: currentEmbedding?.model ?? "Xenova/all-MiniLM-L6-v2"
|
|
497
|
-
});
|
|
498
|
-
if (model === "Xenova/all-MiniLM-L6-v2") model = void 0;
|
|
499
|
-
}
|
|
500
|
-
const scope = await askScope();
|
|
501
|
-
if (scope === "back") return;
|
|
502
|
-
const embedding = { provider };
|
|
503
|
-
if (model) embedding.model = model;
|
|
504
|
-
if (ollamaUrl) embedding.ollamaUrl = ollamaUrl;
|
|
505
|
-
writeMemoryField(scope, "embedding", embedding);
|
|
506
|
-
}
|
|
507
|
-
async function editMemoryDaemonTimeout(globalCfg, localCfg) {
|
|
508
|
-
const currentDaemon = getMergedMemoryValue("daemon", globalCfg, localCfg);
|
|
509
|
-
const currentMs = currentDaemon?.idleTimeout;
|
|
510
|
-
const currentMin = currentMs ? currentMs / 6e4 : void 0;
|
|
511
|
-
if (currentMin !== void 0) {
|
|
512
|
-
log.dim(`Current: ${currentMin} minutes`);
|
|
513
|
-
}
|
|
514
|
-
const value = await input({
|
|
515
|
-
message: "Daemon idle timeout (minutes):",
|
|
516
|
-
default: String(currentMin ?? 30),
|
|
517
|
-
validate: (val) => {
|
|
518
|
-
const n = Number(val);
|
|
519
|
-
if (isNaN(n) || n < 1) return "Must be a positive number";
|
|
520
|
-
return true;
|
|
521
|
-
}
|
|
522
|
-
});
|
|
523
|
-
const scope = await askScope();
|
|
524
|
-
if (scope === "back") return;
|
|
525
|
-
writeMemoryField(scope, "daemon", {
|
|
526
|
-
...currentDaemon,
|
|
527
|
-
idleTimeout: Number(value) * 6e4
|
|
528
|
-
});
|
|
529
|
-
}
|
|
530
|
-
async function memorySubMenu() {
|
|
531
|
-
while (true) {
|
|
532
|
-
const globalCfg = readJson(globalConfigPath());
|
|
533
|
-
const localCfg = readJson(localConfigPath());
|
|
534
|
-
const tierScope = getMemoryFieldScope("tier", globalCfg, localCfg);
|
|
535
|
-
const tierVal = getMergedMemoryValue("tier", globalCfg, localCfg);
|
|
536
|
-
const autoCaptureScope = getMemoryFieldScope(
|
|
537
|
-
"autoCapture",
|
|
538
|
-
globalCfg,
|
|
539
|
-
localCfg
|
|
540
|
-
);
|
|
541
|
-
const autoCaptureVal = getMergedMemoryValue(
|
|
542
|
-
"autoCapture",
|
|
543
|
-
globalCfg,
|
|
544
|
-
localCfg
|
|
545
|
-
);
|
|
546
|
-
const autoStartScope = getMemoryFieldScope(
|
|
547
|
-
"autoStart",
|
|
548
|
-
globalCfg,
|
|
549
|
-
localCfg
|
|
550
|
-
);
|
|
551
|
-
const autoStartVal = getMergedMemoryValue(
|
|
552
|
-
"autoStart",
|
|
553
|
-
globalCfg,
|
|
554
|
-
localCfg
|
|
555
|
-
);
|
|
556
|
-
const embeddingScope = getMemoryFieldScope(
|
|
557
|
-
"embedding",
|
|
558
|
-
globalCfg,
|
|
559
|
-
localCfg
|
|
560
|
-
);
|
|
561
|
-
const embeddingVal = getMergedMemoryValue(
|
|
562
|
-
"embedding",
|
|
563
|
-
globalCfg,
|
|
564
|
-
localCfg
|
|
565
|
-
);
|
|
566
|
-
const daemonScope = getMemoryFieldScope("daemon", globalCfg, localCfg);
|
|
567
|
-
const daemonVal = getMergedMemoryValue("daemon", globalCfg, localCfg);
|
|
568
|
-
const choice = await select({
|
|
569
|
-
message: "Memory settings:",
|
|
570
|
-
choices: injectBackChoice(
|
|
571
|
-
[
|
|
572
|
-
{
|
|
573
|
-
name: `Tier ${formatScopeLabel(tierScope)}${tierVal ? ` (${tierVal})` : ""}`,
|
|
574
|
-
value: "tier"
|
|
575
|
-
},
|
|
576
|
-
{
|
|
577
|
-
name: `Auto-capture ${formatScopeLabel(autoCaptureScope)}${autoCaptureVal !== void 0 ? ` (${autoCaptureVal})` : ""}`,
|
|
578
|
-
value: "autoCapture"
|
|
579
|
-
},
|
|
580
|
-
{
|
|
581
|
-
name: `Auto-start daemon ${formatScopeLabel(autoStartScope)}${autoStartVal !== void 0 ? ` (${autoStartVal})` : ""}`,
|
|
582
|
-
value: "autoStart"
|
|
583
|
-
},
|
|
584
|
-
{
|
|
585
|
-
name: `Embedding ${formatScopeLabel(embeddingScope)}${embeddingVal?.provider ? ` (${embeddingVal.provider})` : ""}`,
|
|
586
|
-
value: "embedding"
|
|
587
|
-
},
|
|
588
|
-
{
|
|
589
|
-
name: `Daemon timeout ${formatScopeLabel(daemonScope)}${daemonVal?.idleTimeout ? ` (${daemonVal.idleTimeout / 6e4}min)` : ""}`,
|
|
590
|
-
value: "daemon"
|
|
591
|
-
}
|
|
592
|
-
],
|
|
593
|
-
"Back"
|
|
594
|
-
)
|
|
595
|
-
});
|
|
596
|
-
if (choice === BACK) return;
|
|
597
|
-
switch (choice) {
|
|
598
|
-
case "tier":
|
|
599
|
-
await editMemoryTier(globalCfg, localCfg);
|
|
600
|
-
break;
|
|
601
|
-
case "autoCapture":
|
|
602
|
-
await editMemoryAutoCapture(globalCfg, localCfg);
|
|
603
|
-
break;
|
|
604
|
-
case "autoStart":
|
|
605
|
-
await editMemoryAutoStart(globalCfg, localCfg);
|
|
606
|
-
break;
|
|
607
|
-
case "embedding":
|
|
608
|
-
await editMemoryEmbedding(globalCfg, localCfg);
|
|
609
|
-
break;
|
|
610
|
-
case "daemon":
|
|
611
|
-
await editMemoryDaemonTimeout(globalCfg, localCfg);
|
|
612
|
-
break;
|
|
613
|
-
}
|
|
614
|
-
}
|
|
615
|
-
}
|
|
616
378
|
async function editStatusline() {
|
|
617
379
|
const hookResult = findStatuslineHookPath();
|
|
618
380
|
if (!hookResult) {
|
|
@@ -885,7 +647,7 @@ async function configCommand() {
|
|
|
885
647
|
await learnSubMenu();
|
|
886
648
|
break;
|
|
887
649
|
case "memory":
|
|
888
|
-
await
|
|
650
|
+
await memoryConfigMenu();
|
|
889
651
|
break;
|
|
890
652
|
case "statusline":
|
|
891
653
|
await editStatusline();
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
isMarketplaceRegistered,
|
|
3
3
|
isPluginInstalled
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-JFGLNTZI.js";
|
|
5
5
|
import {
|
|
6
6
|
ensureStatusline
|
|
7
7
|
} from "./chunk-ORACWEDN.js";
|
|
8
8
|
import "./chunk-POC2WHU2.js";
|
|
9
9
|
import {
|
|
10
10
|
ensureShellCompletion
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-NEQZP5D4.js";
|
|
12
12
|
import {
|
|
13
13
|
commandExists,
|
|
14
14
|
run
|
package/dist/index.js
CHANGED
|
@@ -14,35 +14,35 @@ program.name("cf").description(
|
|
|
14
14
|
"coding-friend CLI \u2014 host learning docs, setup MCP, init projects"
|
|
15
15
|
).version(pkg.version, "-v, --version");
|
|
16
16
|
program.command("install").description("Install the Coding Friend plugin into Claude Code").option("--user", "Install at user scope (all projects)").option("--global", "Install at user scope (all projects)").option("--project", "Install at project scope (shared via git)").option("--local", "Install at local scope (this machine only)").action(async (opts) => {
|
|
17
|
-
const { installCommand } = await import("./install-
|
|
17
|
+
const { installCommand } = await import("./install-HLCVBOXO.js");
|
|
18
18
|
await installCommand(opts);
|
|
19
19
|
});
|
|
20
20
|
program.command("uninstall").description("Uninstall the Coding Friend plugin from Claude Code").option("--user", "Uninstall from user scope (all projects)").option("--global", "Uninstall from user scope (all projects)").option("--project", "Uninstall from project scope").option("--local", "Uninstall from local scope").action(async (opts) => {
|
|
21
|
-
const { uninstallCommand } = await import("./uninstall-
|
|
21
|
+
const { uninstallCommand } = await import("./uninstall-NNCEKPIE.js");
|
|
22
22
|
await uninstallCommand(opts);
|
|
23
23
|
});
|
|
24
24
|
program.command("disable").description("Disable the Coding Friend plugin without uninstalling").option("--user", "Disable at user scope (all projects)").option("--global", "Disable at user scope (all projects)").option("--project", "Disable at project scope").option("--local", "Disable at local scope").action(async (opts) => {
|
|
25
|
-
const { disableCommand } = await import("./disable-
|
|
25
|
+
const { disableCommand } = await import("./disable-XYZRE3TD.js");
|
|
26
26
|
await disableCommand(opts);
|
|
27
27
|
});
|
|
28
28
|
program.command("enable").description("Re-enable the Coding Friend plugin").option("--user", "Enable at user scope (all projects)").option("--global", "Enable at user scope (all projects)").option("--project", "Enable at project scope").option("--local", "Enable at local scope").action(async (opts) => {
|
|
29
|
-
const { enableCommand } = await import("./enable-
|
|
29
|
+
const { enableCommand } = await import("./enable-3NZBQWLQ.js");
|
|
30
30
|
await enableCommand(opts);
|
|
31
31
|
});
|
|
32
32
|
program.command("init").description("Initialize coding-friend in current project").action(async () => {
|
|
33
|
-
const { initCommand } = await import("./init-
|
|
33
|
+
const { initCommand } = await import("./init-ONUC6QMM.js");
|
|
34
34
|
await initCommand();
|
|
35
35
|
});
|
|
36
36
|
program.command("config").description("Manage Coding Friend configuration").action(async () => {
|
|
37
|
-
const { configCommand } = await import("./config-
|
|
37
|
+
const { configCommand } = await import("./config-UQXY45DN.js");
|
|
38
38
|
await configCommand();
|
|
39
39
|
});
|
|
40
40
|
program.command("host").description("Build and serve learning docs as a static website").argument("[path]", "path to docs folder").option("-p, --port <port>", "port number", "3333").action(async (path, opts) => {
|
|
41
|
-
const { hostCommand } = await import("./host-
|
|
41
|
+
const { hostCommand } = await import("./host-QDWBFJB2.js");
|
|
42
42
|
await hostCommand(path, opts);
|
|
43
43
|
});
|
|
44
44
|
program.command("mcp").description("Setup MCP server for learning docs").argument("[path]", "path to docs folder").action(async (path) => {
|
|
45
|
-
const { mcpCommand } = await import("./mcp-
|
|
45
|
+
const { mcpCommand } = await import("./mcp-GFIOFXOL.js");
|
|
46
46
|
await mcpCommand(path);
|
|
47
47
|
});
|
|
48
48
|
program.command("permission").description("Manage Claude Code permission rules for Coding Friend").option("--all", "Apply all recommended permissions without prompts").option("--user", "Save to user-level settings (~/.claude/settings.json)").option(
|
|
@@ -57,9 +57,13 @@ program.command("statusline").description("Setup coding-friend statusline in Cla
|
|
|
57
57
|
await statuslineCommand();
|
|
58
58
|
});
|
|
59
59
|
program.command("update").description("Update coding-friend plugin, CLI, and statusline").option("--cli", "Update only the CLI (npm package)").option("--plugin", "Update only the Claude Code plugin").option("--statusline", "Update only the statusline").option("--user", "Update plugin at user scope (all projects)").option("--global", "Update plugin at user scope (all projects)").option("--project", "Update plugin at project scope").option("--local", "Update plugin at local scope").action(async (opts) => {
|
|
60
|
-
const { updateCommand } = await import("./update-
|
|
60
|
+
const { updateCommand } = await import("./update-EVOGWLKX.js");
|
|
61
61
|
await updateCommand(opts);
|
|
62
62
|
});
|
|
63
|
+
program.command("status").description("Show comprehensive Coding Friend status").action(async () => {
|
|
64
|
+
const { statusCommand } = await import("./status-V324NM64.js");
|
|
65
|
+
await statusCommand();
|
|
66
|
+
});
|
|
63
67
|
var session = program.command("session").description("Save and load Claude Code sessions across machines");
|
|
64
68
|
program.addHelpText(
|
|
65
69
|
"after",
|
|
@@ -72,11 +76,11 @@ session.command("save").description("Save current Claude Code session to sync fo
|
|
|
72
76
|
"-s, --session-id <id>",
|
|
73
77
|
"session UUID to save (default: auto-detect newest)"
|
|
74
78
|
).option("-l, --label <label>", "label for this session").action(async (opts) => {
|
|
75
|
-
const { sessionSaveCommand } = await import("./session-
|
|
79
|
+
const { sessionSaveCommand } = await import("./session-JGRF5SNX.js");
|
|
76
80
|
await sessionSaveCommand(opts);
|
|
77
81
|
});
|
|
78
82
|
session.command("load").description("Load a saved session from sync folder").action(async () => {
|
|
79
|
-
const { sessionLoadCommand } = await import("./session-
|
|
83
|
+
const { sessionLoadCommand } = await import("./session-JGRF5SNX.js");
|
|
80
84
|
await sessionLoadCommand();
|
|
81
85
|
});
|
|
82
86
|
var memory = program.command("memory").description("AI memory system \u2014 store and search project knowledge");
|
|
@@ -88,46 +92,51 @@ Memory subcommands:
|
|
|
88
92
|
memory search Search memories by query
|
|
89
93
|
memory list List memories in current project (--projects for all DBs)
|
|
90
94
|
memory rm Remove a project database (--project-id <id>, --all, or --prune)
|
|
91
|
-
memory init Initialize
|
|
95
|
+
memory init Initialize memory system (interactive wizard)
|
|
96
|
+
memory config Configure memory system settings
|
|
92
97
|
memory start-daemon Start the memory daemon (Tier 2)
|
|
93
98
|
memory stop-daemon Stop the memory daemon
|
|
94
99
|
memory rebuild Rebuild the daemon search index
|
|
95
100
|
memory mcp Show MCP server setup instructions`
|
|
96
101
|
);
|
|
97
102
|
memory.command("status").description("Show memory system status").action(async () => {
|
|
98
|
-
const { memoryStatusCommand } = await import("./memory-
|
|
103
|
+
const { memoryStatusCommand } = await import("./memory-BL37DXPU.js");
|
|
99
104
|
await memoryStatusCommand();
|
|
100
105
|
});
|
|
101
106
|
memory.command("search").description("Search memories by query").argument("<query>", "search query").action(async (query) => {
|
|
102
|
-
const { memorySearchCommand } = await import("./memory-
|
|
107
|
+
const { memorySearchCommand } = await import("./memory-BL37DXPU.js");
|
|
103
108
|
await memorySearchCommand(query);
|
|
104
109
|
});
|
|
105
110
|
memory.command("list").description(
|
|
106
111
|
"List memories in current project, or all projects with --projects"
|
|
107
112
|
).option("--projects", "List all project databases with size and metadata").action(async (opts) => {
|
|
108
|
-
const { memoryListCommand } = await import("./memory-
|
|
113
|
+
const { memoryListCommand } = await import("./memory-BL37DXPU.js");
|
|
109
114
|
await memoryListCommand(opts);
|
|
110
115
|
});
|
|
111
116
|
memory.command("init").description(
|
|
112
|
-
"Initialize
|
|
117
|
+
"Initialize memory system \u2014 interactive wizard (first time) or config menu"
|
|
113
118
|
).action(async () => {
|
|
114
|
-
const { memoryInitCommand } = await import("./memory-
|
|
119
|
+
const { memoryInitCommand } = await import("./memory-BL37DXPU.js");
|
|
115
120
|
await memoryInitCommand();
|
|
116
121
|
});
|
|
122
|
+
memory.command("config").description("Configure memory system settings").action(async () => {
|
|
123
|
+
const { memoryConfigCommand } = await import("./memory-BL37DXPU.js");
|
|
124
|
+
await memoryConfigCommand();
|
|
125
|
+
});
|
|
117
126
|
memory.command("start-daemon").description("Start the memory daemon (Tier 2 \u2014 MiniSearch)").action(async () => {
|
|
118
|
-
const { memoryStartDaemonCommand } = await import("./memory-
|
|
127
|
+
const { memoryStartDaemonCommand } = await import("./memory-BL37DXPU.js");
|
|
119
128
|
await memoryStartDaemonCommand();
|
|
120
129
|
});
|
|
121
130
|
memory.command("stop-daemon").description("Stop the memory daemon").action(async () => {
|
|
122
|
-
const { memoryStopDaemonCommand } = await import("./memory-
|
|
131
|
+
const { memoryStopDaemonCommand } = await import("./memory-BL37DXPU.js");
|
|
123
132
|
await memoryStopDaemonCommand();
|
|
124
133
|
});
|
|
125
134
|
memory.command("rebuild").description("Rebuild the daemon search index").action(async () => {
|
|
126
|
-
const { memoryRebuildCommand } = await import("./memory-
|
|
135
|
+
const { memoryRebuildCommand } = await import("./memory-BL37DXPU.js");
|
|
127
136
|
await memoryRebuildCommand();
|
|
128
137
|
});
|
|
129
138
|
memory.command("mcp").description("Show MCP server setup instructions").action(async () => {
|
|
130
|
-
const { memoryMcpCommand } = await import("./memory-
|
|
139
|
+
const { memoryMcpCommand } = await import("./memory-BL37DXPU.js");
|
|
131
140
|
await memoryMcpCommand();
|
|
132
141
|
});
|
|
133
142
|
memory.command("rm").description("Remove a project database").option("--project-id <id>", "Project ID to remove").option("--all", "Remove all project databases").option(
|
|
@@ -135,7 +144,7 @@ memory.command("rm").description("Remove a project database").option("--project-
|
|
|
135
144
|
"Remove orphaned projects (source dir missing or 0 memories)"
|
|
136
145
|
).action(
|
|
137
146
|
async (opts) => {
|
|
138
|
-
const { memoryRmCommand } = await import("./memory-
|
|
147
|
+
const { memoryRmCommand } = await import("./memory-BL37DXPU.js");
|
|
139
148
|
await memoryRmCommand(opts);
|
|
140
149
|
}
|
|
141
150
|
);
|
|
@@ -152,35 +161,35 @@ Dev subcommands:
|
|
|
152
161
|
dev update [path] Update local dev plugin to latest version`
|
|
153
162
|
);
|
|
154
163
|
dev.command("on").description("Switch to local plugin source").argument("[path]", "path to local coding-friend repo (default: cwd)").action(async (path) => {
|
|
155
|
-
const { devOnCommand } = await import("./dev-
|
|
164
|
+
const { devOnCommand } = await import("./dev-7DLYIXBO.js");
|
|
156
165
|
await devOnCommand(path);
|
|
157
166
|
});
|
|
158
167
|
dev.command("off").description("Switch back to remote marketplace").action(async () => {
|
|
159
|
-
const { devOffCommand } = await import("./dev-
|
|
168
|
+
const { devOffCommand } = await import("./dev-7DLYIXBO.js");
|
|
160
169
|
await devOffCommand();
|
|
161
170
|
});
|
|
162
171
|
dev.command("status").description("Show current dev mode").action(async () => {
|
|
163
|
-
const { devStatusCommand } = await import("./dev-
|
|
172
|
+
const { devStatusCommand } = await import("./dev-7DLYIXBO.js");
|
|
164
173
|
await devStatusCommand();
|
|
165
174
|
});
|
|
166
175
|
dev.command("sync").description(
|
|
167
176
|
"Copy local source files to plugin cache (no version bump needed)"
|
|
168
177
|
).action(async () => {
|
|
169
|
-
const { devSyncCommand } = await import("./dev-
|
|
178
|
+
const { devSyncCommand } = await import("./dev-7DLYIXBO.js");
|
|
170
179
|
await devSyncCommand();
|
|
171
180
|
});
|
|
172
181
|
dev.command("restart").description("Reinstall local dev plugin (off + on)").argument(
|
|
173
182
|
"[path]",
|
|
174
183
|
"path to local coding-friend repo (default: saved path or cwd)"
|
|
175
184
|
).action(async (path) => {
|
|
176
|
-
const { devRestartCommand } = await import("./dev-
|
|
185
|
+
const { devRestartCommand } = await import("./dev-7DLYIXBO.js");
|
|
177
186
|
await devRestartCommand(path);
|
|
178
187
|
});
|
|
179
188
|
dev.command("update").description("Update local dev plugin to latest version (off + on)").argument(
|
|
180
189
|
"[path]",
|
|
181
190
|
"path to local coding-friend repo (default: saved path or cwd)"
|
|
182
191
|
).action(async (path) => {
|
|
183
|
-
const { devUpdateCommand } = await import("./dev-
|
|
192
|
+
const { devUpdateCommand } = await import("./dev-7DLYIXBO.js");
|
|
184
193
|
await devUpdateCommand(path);
|
|
185
194
|
});
|
|
186
195
|
program.parse();
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getLatestVersion,
|
|
3
3
|
semverCompare
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-IRPW2BMP.js";
|
|
5
5
|
import {
|
|
6
6
|
enableMarketplaceAutoUpdate,
|
|
7
7
|
isMarketplaceRegistered,
|
|
8
8
|
isPluginDisabled
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-JFGLNTZI.js";
|
|
10
10
|
import {
|
|
11
11
|
getInstalledVersion
|
|
12
12
|
} from "./chunk-ORACWEDN.js";
|
|
13
13
|
import "./chunk-POC2WHU2.js";
|
|
14
14
|
import {
|
|
15
15
|
ensureShellCompletion
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-NEQZP5D4.js";
|
|
17
17
|
import {
|
|
18
18
|
resolveScope
|
|
19
19
|
} from "./chunk-C5LYVVEI.js";
|