coding-friend-cli 1.36.0 → 1.36.2
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/dist/{chunk-DUKBBMVM.js → chunk-CDTQL4FI.js} +9 -5
- package/dist/{chunk-KIKN5HEH.js → chunk-EAJJVXAE.js} +9 -5
- package/dist/{chunk-PQUACN4U.js → chunk-MAGBNYZK.js} +4 -4
- package/dist/{chunk-GHR3TNL6.js → chunk-TPGAW67X.js} +35 -15
- package/dist/{chunk-7QFJODWB.js → chunk-VV2U7NDN.js} +5 -5
- package/dist/{clean-2IRHH4SU.js → clean-MXIMMXDH.js} +5 -5
- package/dist/{config-36YY3XLM.js → config-U3UYCC7M.js} +101 -13
- package/dist/{disable-35RSJICU.js → disable-HL5OEURT.js} +3 -3
- package/dist/{enable-RXWDQRIU.js → enable-CZIOCKKJ.js} +3 -3
- package/dist/{host-BYJEZN6T.js → host-PEKK7OOC.js} +5 -5
- package/dist/index.js +37 -37
- package/dist/{init-QXCMAPXT.js → init-GJ5II4WB.js} +121 -22
- package/dist/{install-NALHBTGG.js → install-VFMO45SP.js} +6 -6
- package/dist/{learn-PNG2TI2E.js → learn-QQ7XEHDY.js} +5 -5
- package/dist/{mcp-6GRHKIQW.js → mcp-372LGOZJ.js} +16 -16
- package/dist/{memory-A7OUTQ54.js → memory-XINRMEWB.js} +10 -8
- package/dist/{permission-PB3OMKRB.js → permission-I3OFJUYA.js} +11 -11
- package/dist/{session-YJJRGQPX.js → session-2R7WWNML.js} +4 -4
- package/dist/{status-SG5LCXER.js → status-Z4V7IYOB.js} +12 -12
- package/dist/{uninstall-JLSEHXS5.js → uninstall-ASLHT3MH.js} +5 -5
- package/dist/{update-MO5BT3C5.js → update-MY2DRJLV.js} +3 -3
- package/package.json +1 -1
- package/dist/{chunk-EFRPDFO7.js → chunk-IKLMHJH6.js} +3 -3
- package/dist/{chunk-TEC25H6C.js → chunk-YIXAQ4R2.js} +3 -3
- package/dist/{dev-JSYPSXEZ.js → dev-GKD52XE6.js} +4 -4
- package/dist/{guide-ECSMH2AT.js → guide-CO2V4ZLZ.js} +3 -3
- package/dist/{mcp-serve-learn-36ZQQQTF.js → mcp-serve-learn-OF3ZJUJC.js} +3 -3
- package/dist/{statusline-3Z4DE24F.js → statusline-WDTN3OI4.js} +2 -2
- package/dist/{update-check-I2RSVGFO.js → update-check-25SCLHZO.js} +3 -3
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DEFAULT_CONFIG
|
|
3
3
|
} from "./chunk-57EGAXYI.js";
|
|
4
|
-
import {
|
|
5
|
-
log
|
|
6
|
-
} from "./chunk-NREZK463.js";
|
|
7
4
|
import {
|
|
8
5
|
readJson
|
|
9
6
|
} from "./chunk-5UVDWG5L.js";
|
|
@@ -12,6 +9,9 @@ import {
|
|
|
12
9
|
localConfigPath,
|
|
13
10
|
resolvePath
|
|
14
11
|
} from "./chunk-X2H7JJMR.js";
|
|
12
|
+
import {
|
|
13
|
+
log
|
|
14
|
+
} from "./chunk-NREZK463.js";
|
|
15
15
|
|
|
16
16
|
// src/lib/config.ts
|
|
17
17
|
import { z } from "zod";
|
|
@@ -80,7 +80,9 @@ var ConfigSchema = z.strictObject({
|
|
|
80
80
|
review: ReviewConfigSchema.optional(),
|
|
81
81
|
autoApprove: z.boolean().optional(),
|
|
82
82
|
autoApproveIgnore: z.array(z.string()).optional(),
|
|
83
|
-
autoApproveAllowExtra: z.array(z.string()).optional()
|
|
83
|
+
autoApproveAllowExtra: z.array(z.string()).optional(),
|
|
84
|
+
disableGUIPlan: z.boolean().optional(),
|
|
85
|
+
guiPlanFormat: z.enum(["html", "md"]).optional()
|
|
84
86
|
});
|
|
85
87
|
var KNOWN_KEYS = [
|
|
86
88
|
"language",
|
|
@@ -92,7 +94,9 @@ var KNOWN_KEYS = [
|
|
|
92
94
|
"review",
|
|
93
95
|
"autoApprove",
|
|
94
96
|
"autoApproveIgnore",
|
|
95
|
-
"autoApproveAllowExtra"
|
|
97
|
+
"autoApproveAllowExtra",
|
|
98
|
+
"disableGUIPlan",
|
|
99
|
+
"guiPlanFormat"
|
|
96
100
|
];
|
|
97
101
|
function suggestKey(unknown) {
|
|
98
102
|
let best = null;
|
|
@@ -7,23 +7,23 @@ import {
|
|
|
7
7
|
} from "./chunk-667NMPN4.js";
|
|
8
8
|
import {
|
|
9
9
|
resolveScope
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-IKLMHJH6.js";
|
|
11
11
|
import {
|
|
12
12
|
commandExists,
|
|
13
13
|
run,
|
|
14
14
|
runWithStderr,
|
|
15
15
|
sleepSync
|
|
16
16
|
} from "./chunk-EVGXUDX4.js";
|
|
17
|
-
import {
|
|
18
|
-
log,
|
|
19
|
-
printBanner
|
|
20
|
-
} from "./chunk-NREZK463.js";
|
|
21
17
|
import {
|
|
22
18
|
readJson
|
|
23
19
|
} from "./chunk-5UVDWG5L.js";
|
|
24
20
|
import {
|
|
25
21
|
claudeSettingsPath
|
|
26
22
|
} from "./chunk-X2H7JJMR.js";
|
|
23
|
+
import {
|
|
24
|
+
log,
|
|
25
|
+
printBanner
|
|
26
|
+
} from "./chunk-NREZK463.js";
|
|
27
27
|
|
|
28
28
|
// src/commands/update.ts
|
|
29
29
|
import { readFileSync } from "fs";
|
|
@@ -248,6 +248,10 @@ async function updateCommand(opts) {
|
|
|
248
248
|
}
|
|
249
249
|
}
|
|
250
250
|
}
|
|
251
|
+
if (doCli) {
|
|
252
|
+
const { refreshMemoryAfterUpdate } = await import("./memory-XINRMEWB.js");
|
|
253
|
+
await refreshMemoryAfterUpdate();
|
|
254
|
+
}
|
|
251
255
|
if (doStatusline) {
|
|
252
256
|
const updatedVersion = ensureStatusline();
|
|
253
257
|
if (updatedVersion) {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
writeMemoryMcpEntry
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import {
|
|
5
|
-
log
|
|
6
|
-
} from "./chunk-NREZK463.js";
|
|
3
|
+
} from "./chunk-VV2U7NDN.js";
|
|
7
4
|
import {
|
|
8
5
|
readJson
|
|
9
6
|
} from "./chunk-5UVDWG5L.js";
|
|
7
|
+
import {
|
|
8
|
+
log
|
|
9
|
+
} from "./chunk-NREZK463.js";
|
|
10
10
|
|
|
11
11
|
// src/lib/mcp-state.ts
|
|
12
12
|
import { existsSync } from "fs";
|
|
@@ -2,30 +2,26 @@ import {
|
|
|
2
2
|
checkMemoryMcpHealth,
|
|
3
3
|
printHealthSection,
|
|
4
4
|
warnStaleMcpJson
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-MAGBNYZK.js";
|
|
6
6
|
import {
|
|
7
7
|
getMemoryMcpStatus,
|
|
8
8
|
memoryConfigMenu,
|
|
9
9
|
writeMemoryMcpEntry
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-VV2U7NDN.js";
|
|
11
11
|
import {
|
|
12
12
|
loadConfig,
|
|
13
13
|
resolveMemoryDir
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-CDTQL4FI.js";
|
|
15
15
|
import {
|
|
16
16
|
getLibPath
|
|
17
17
|
} from "./chunk-RZRT7NGT.js";
|
|
18
18
|
import {
|
|
19
19
|
showConfigHint
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-IKLMHJH6.js";
|
|
21
21
|
import {
|
|
22
22
|
run,
|
|
23
23
|
runWithStderr
|
|
24
24
|
} from "./chunk-EVGXUDX4.js";
|
|
25
|
-
import {
|
|
26
|
-
log,
|
|
27
|
-
printBanner
|
|
28
|
-
} from "./chunk-NREZK463.js";
|
|
29
25
|
import {
|
|
30
26
|
mergeJson,
|
|
31
27
|
readJson
|
|
@@ -34,6 +30,10 @@ import {
|
|
|
34
30
|
globalConfigPath,
|
|
35
31
|
localConfigPath
|
|
36
32
|
} from "./chunk-X2H7JJMR.js";
|
|
33
|
+
import {
|
|
34
|
+
log,
|
|
35
|
+
printBanner
|
|
36
|
+
} from "./chunk-NREZK463.js";
|
|
37
37
|
|
|
38
38
|
// src/commands/memory.ts
|
|
39
39
|
import { existsSync, readdirSync, statSync, rmSync } from "fs";
|
|
@@ -65,14 +65,19 @@ function truncateError(text) {
|
|
|
65
65
|
const skipped = lines.length - 28;
|
|
66
66
|
return [...head, ` ... (${skipped} lines omitted) ...`, ...tail].join("\n");
|
|
67
67
|
}
|
|
68
|
-
function ensureMemoryBuilt(mcpDir) {
|
|
68
|
+
function ensureMemoryBuilt(mcpDir, opts) {
|
|
69
|
+
const exitOnError = opts?.exitOnError ?? true;
|
|
70
|
+
const fail = (msg, stderr) => {
|
|
71
|
+
log.error(msg);
|
|
72
|
+
if (stderr) log.error(truncateError(stderr));
|
|
73
|
+
if (exitOnError) process.exit(1);
|
|
74
|
+
return false;
|
|
75
|
+
};
|
|
69
76
|
if (!existsSync(join(mcpDir, "node_modules"))) {
|
|
70
77
|
log.step("Installing memory server dependencies (one-time setup)...");
|
|
71
78
|
const result = runWithStderr("npm", ["install"], { cwd: mcpDir });
|
|
72
79
|
if (result.exitCode !== 0) {
|
|
73
|
-
|
|
74
|
-
if (result.stderr) log.error(truncateError(result.stderr));
|
|
75
|
-
process.exit(1);
|
|
80
|
+
return fail("Failed to install dependencies", result.stderr);
|
|
76
81
|
}
|
|
77
82
|
log.success("Done.");
|
|
78
83
|
}
|
|
@@ -80,12 +85,26 @@ function ensureMemoryBuilt(mcpDir) {
|
|
|
80
85
|
log.step("Building memory server...");
|
|
81
86
|
const result = runWithStderr("npm", ["run", "build"], { cwd: mcpDir });
|
|
82
87
|
if (result.exitCode !== 0) {
|
|
83
|
-
|
|
84
|
-
if (result.stderr) log.error(truncateError(result.stderr));
|
|
85
|
-
process.exit(1);
|
|
88
|
+
return fail("Failed to build memory server", result.stderr);
|
|
86
89
|
}
|
|
87
90
|
log.success("Done.");
|
|
88
91
|
}
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
async function refreshMemoryAfterUpdate() {
|
|
95
|
+
try {
|
|
96
|
+
if (!isMemoryInitialized()) return;
|
|
97
|
+
const mcpDir = getLibPath("cf-memory");
|
|
98
|
+
log.step("Ensuring memory server is built...");
|
|
99
|
+
const built = ensureMemoryBuilt(mcpDir, { exitOnError: false });
|
|
100
|
+
if (built) {
|
|
101
|
+
log.success("Memory server ready.");
|
|
102
|
+
} else {
|
|
103
|
+
log.warn('Memory server build failed \u2014 run "cf memory status" to retry.');
|
|
104
|
+
}
|
|
105
|
+
} catch {
|
|
106
|
+
log.warn('Could not refresh memory server \u2014 run "cf memory status" to retry.');
|
|
107
|
+
}
|
|
89
108
|
}
|
|
90
109
|
function printMemoryMcpConfig(memoryDir) {
|
|
91
110
|
console.log(chalk.dim("Add this to your MCP client config:"));
|
|
@@ -855,6 +874,7 @@ async function memoryMcpCommand() {
|
|
|
855
874
|
|
|
856
875
|
export {
|
|
857
876
|
ensureMemoryBuilt,
|
|
877
|
+
refreshMemoryAfterUpdate,
|
|
858
878
|
printMemoryMcpConfig,
|
|
859
879
|
memoryStatusCommand,
|
|
860
880
|
memorySearchCommand,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
resolveMemoryDir
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CDTQL4FI.js";
|
|
4
4
|
import {
|
|
5
5
|
getLibPath
|
|
6
6
|
} from "./chunk-RZRT7NGT.js";
|
|
@@ -9,10 +9,7 @@ import {
|
|
|
9
9
|
askScope,
|
|
10
10
|
formatScopeLabel,
|
|
11
11
|
injectBackChoice
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import {
|
|
14
|
-
log
|
|
15
|
-
} from "./chunk-NREZK463.js";
|
|
12
|
+
} from "./chunk-IKLMHJH6.js";
|
|
16
13
|
import {
|
|
17
14
|
mergeJson,
|
|
18
15
|
readJson,
|
|
@@ -23,6 +20,9 @@ import {
|
|
|
23
20
|
globalConfigPath,
|
|
24
21
|
localConfigPath
|
|
25
22
|
} from "./chunk-X2H7JJMR.js";
|
|
23
|
+
import {
|
|
24
|
+
log
|
|
25
|
+
} from "./chunk-NREZK463.js";
|
|
26
26
|
|
|
27
27
|
// src/lib/memory-prompts.ts
|
|
28
28
|
import { confirm, input, select } from "@inquirer/prompts";
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
loadConfig,
|
|
3
3
|
resolveMemoryDir
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-CDTQL4FI.js";
|
|
5
5
|
import "./chunk-57EGAXYI.js";
|
|
6
|
-
import {
|
|
7
|
-
log,
|
|
8
|
-
printBanner
|
|
9
|
-
} from "./chunk-NREZK463.js";
|
|
10
6
|
import "./chunk-5UVDWG5L.js";
|
|
11
7
|
import {
|
|
12
8
|
resolvePath
|
|
13
9
|
} from "./chunk-X2H7JJMR.js";
|
|
10
|
+
import {
|
|
11
|
+
log,
|
|
12
|
+
printBanner
|
|
13
|
+
} from "./chunk-NREZK463.js";
|
|
14
14
|
|
|
15
15
|
// src/commands/clean.ts
|
|
16
16
|
import { existsSync, readdirSync, rmSync, statSync } from "fs";
|
|
@@ -1,16 +1,20 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getAllRules,
|
|
3
|
+
getExistingRules
|
|
4
|
+
} from "./chunk-O5ZKLFSL.js";
|
|
1
5
|
import {
|
|
2
6
|
listMdFilesRecursive
|
|
3
7
|
} from "./chunk-2DTXVMPQ.js";
|
|
4
8
|
import {
|
|
5
9
|
registerLearnMcp,
|
|
6
10
|
unregisterLearnMcp
|
|
7
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-YIXAQ4R2.js";
|
|
8
12
|
import {
|
|
9
13
|
memoryConfigMenu
|
|
10
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-VV2U7NDN.js";
|
|
11
15
|
import {
|
|
12
16
|
resolveLearnDir
|
|
13
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-CDTQL4FI.js";
|
|
14
18
|
import "./chunk-RZRT7NGT.js";
|
|
15
19
|
import {
|
|
16
20
|
findStatuslineHookPath,
|
|
@@ -41,16 +45,8 @@ import {
|
|
|
41
45
|
getScopeLabel,
|
|
42
46
|
injectBackChoice,
|
|
43
47
|
showConfigHint
|
|
44
|
-
} from "./chunk-
|
|
48
|
+
} from "./chunk-IKLMHJH6.js";
|
|
45
49
|
import "./chunk-EVGXUDX4.js";
|
|
46
|
-
import {
|
|
47
|
-
log,
|
|
48
|
-
printBanner
|
|
49
|
-
} from "./chunk-NREZK463.js";
|
|
50
|
-
import {
|
|
51
|
-
getAllRules,
|
|
52
|
-
getExistingRules
|
|
53
|
-
} from "./chunk-O5ZKLFSL.js";
|
|
54
50
|
import {
|
|
55
51
|
mergeJson,
|
|
56
52
|
readJson
|
|
@@ -63,6 +59,10 @@ import {
|
|
|
63
59
|
localConfigPath,
|
|
64
60
|
resolvePath
|
|
65
61
|
} from "./chunk-X2H7JJMR.js";
|
|
62
|
+
import {
|
|
63
|
+
log,
|
|
64
|
+
printBanner
|
|
65
|
+
} from "./chunk-NREZK463.js";
|
|
66
66
|
|
|
67
67
|
// src/commands/config.ts
|
|
68
68
|
import { checkbox, confirm, input, select } from "@inquirer/prompts";
|
|
@@ -432,6 +432,85 @@ async function learnSubMenu() {
|
|
|
432
432
|
}
|
|
433
433
|
}
|
|
434
434
|
}
|
|
435
|
+
async function editDisableGUIPlan(globalCfg, localCfg) {
|
|
436
|
+
const currentValue = getMergedValue("disableGUIPlan", globalCfg, localCfg);
|
|
437
|
+
if (currentValue !== void 0) {
|
|
438
|
+
log.dim(`Current: ${currentValue}`);
|
|
439
|
+
}
|
|
440
|
+
const value = await confirm({
|
|
441
|
+
message: "Disable the human overview doc that /cf-plan generates alongside the agent plan?",
|
|
442
|
+
default: currentValue ?? false
|
|
443
|
+
});
|
|
444
|
+
const scope = await askScope();
|
|
445
|
+
if (scope === "back") return;
|
|
446
|
+
writeToScope(scope, { disableGUIPlan: value });
|
|
447
|
+
}
|
|
448
|
+
async function editGuiPlanFormat(globalCfg, localCfg) {
|
|
449
|
+
const currentValue = getMergedValue(
|
|
450
|
+
"guiPlanFormat",
|
|
451
|
+
globalCfg,
|
|
452
|
+
localCfg
|
|
453
|
+
);
|
|
454
|
+
if (currentValue !== void 0) {
|
|
455
|
+
log.dim(`Current: ${currentValue}`);
|
|
456
|
+
}
|
|
457
|
+
const choice = await select({
|
|
458
|
+
message: "Format for the /cf-plan human overview doc?",
|
|
459
|
+
choices: injectBackChoice(
|
|
460
|
+
[
|
|
461
|
+
{ name: "HTML", value: "html" },
|
|
462
|
+
{ name: "Markdown", value: "md" }
|
|
463
|
+
],
|
|
464
|
+
"Back"
|
|
465
|
+
),
|
|
466
|
+
default: currentValue ?? "html"
|
|
467
|
+
});
|
|
468
|
+
if (choice === BACK) return;
|
|
469
|
+
const scope = await askScope();
|
|
470
|
+
if (scope === "back") return;
|
|
471
|
+
writeToScope(scope, { guiPlanFormat: choice });
|
|
472
|
+
}
|
|
473
|
+
async function planDocsSubMenu() {
|
|
474
|
+
while (true) {
|
|
475
|
+
const globalCfg = readJson(globalConfigPath());
|
|
476
|
+
const localCfg = readJson(localConfigPath());
|
|
477
|
+
const disableVal = getMergedValue(
|
|
478
|
+
"disableGUIPlan",
|
|
479
|
+
globalCfg,
|
|
480
|
+
localCfg
|
|
481
|
+
);
|
|
482
|
+
const formatVal = getMergedValue(
|
|
483
|
+
"guiPlanFormat",
|
|
484
|
+
globalCfg,
|
|
485
|
+
localCfg
|
|
486
|
+
);
|
|
487
|
+
const choice = await select({
|
|
488
|
+
message: "Plan docs settings:",
|
|
489
|
+
choices: injectBackChoice(
|
|
490
|
+
[
|
|
491
|
+
{
|
|
492
|
+
name: `Disable overview doc (${disableVal ?? false})`,
|
|
493
|
+
value: "disableGUIPlan"
|
|
494
|
+
},
|
|
495
|
+
{
|
|
496
|
+
name: `Format (${formatVal ?? "html"})`,
|
|
497
|
+
value: "guiPlanFormat"
|
|
498
|
+
}
|
|
499
|
+
],
|
|
500
|
+
"Back"
|
|
501
|
+
)
|
|
502
|
+
});
|
|
503
|
+
if (choice === BACK) return;
|
|
504
|
+
switch (choice) {
|
|
505
|
+
case "disableGUIPlan":
|
|
506
|
+
await editDisableGUIPlan(globalCfg, localCfg);
|
|
507
|
+
break;
|
|
508
|
+
case "guiPlanFormat":
|
|
509
|
+
await editGuiPlanFormat(globalCfg, localCfg);
|
|
510
|
+
break;
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
}
|
|
435
514
|
async function editTdd(globalCfg, localCfg) {
|
|
436
515
|
const currentValue = getMergedValue("tdd", globalCfg, localCfg);
|
|
437
516
|
if (currentValue !== void 0) {
|
|
@@ -668,7 +747,7 @@ async function editPermissions() {
|
|
|
668
747
|
)
|
|
669
748
|
});
|
|
670
749
|
if (choice === BACK) return;
|
|
671
|
-
const { permissionCommand } = await import("./permission-
|
|
750
|
+
const { permissionCommand } = await import("./permission-I3OFJUYA.js");
|
|
672
751
|
switch (choice) {
|
|
673
752
|
case "interactive":
|
|
674
753
|
await permissionCommand({});
|
|
@@ -705,6 +784,7 @@ async function configCommand() {
|
|
|
705
784
|
);
|
|
706
785
|
const reviewScope = getScopeLabel("review", globalCfg, localCfg);
|
|
707
786
|
const withCodexVal = getMergedValue("review", globalCfg, localCfg)?.withCodex;
|
|
787
|
+
const planDocsScope = getScopeLabel("disableGUIPlan", globalCfg, localCfg);
|
|
708
788
|
const statuslineStatus = isStatuslineConfigured() ? chalk.green("configured") : chalk.yellow("not configured");
|
|
709
789
|
const completionStatus = hasShellCompletion() ? chalk.green("installed") : chalk.yellow("not installed");
|
|
710
790
|
const projectRules = getExistingRules(claudeLocalSettingsPath());
|
|
@@ -755,6 +835,11 @@ async function configCommand() {
|
|
|
755
835
|
value: "review",
|
|
756
836
|
description: " Run a Codex second-opinion review alongside Claude's on every /cf-review"
|
|
757
837
|
},
|
|
838
|
+
{
|
|
839
|
+
name: `Plan docs ${formatScopeLabel(planDocsScope)}`,
|
|
840
|
+
value: "planDocs",
|
|
841
|
+
description: " Human overview doc generated by /cf-plan \u2014 enable/disable + format (html/md)"
|
|
842
|
+
},
|
|
758
843
|
{
|
|
759
844
|
name: `Statusline (${statuslineStatus})`,
|
|
760
845
|
value: "statusline",
|
|
@@ -804,6 +889,9 @@ async function configCommand() {
|
|
|
804
889
|
case "review":
|
|
805
890
|
await editReviewWithCodex(globalCfg, localCfg);
|
|
806
891
|
break;
|
|
892
|
+
case "planDocs":
|
|
893
|
+
await planDocsSubMenu();
|
|
894
|
+
break;
|
|
807
895
|
case "statusline":
|
|
808
896
|
await editStatusline();
|
|
809
897
|
break;
|
|
@@ -4,13 +4,13 @@ import {
|
|
|
4
4
|
} from "./chunk-GZT3YPAP.js";
|
|
5
5
|
import {
|
|
6
6
|
resolveScope
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-IKLMHJH6.js";
|
|
8
8
|
import "./chunk-EVGXUDX4.js";
|
|
9
|
+
import "./chunk-5UVDWG5L.js";
|
|
10
|
+
import "./chunk-X2H7JJMR.js";
|
|
9
11
|
import {
|
|
10
12
|
log
|
|
11
13
|
} from "./chunk-NREZK463.js";
|
|
12
|
-
import "./chunk-5UVDWG5L.js";
|
|
13
|
-
import "./chunk-X2H7JJMR.js";
|
|
14
14
|
|
|
15
15
|
// src/commands/disable.ts
|
|
16
16
|
import chalk from "chalk";
|
|
@@ -4,13 +4,13 @@ import {
|
|
|
4
4
|
} from "./chunk-GZT3YPAP.js";
|
|
5
5
|
import {
|
|
6
6
|
resolveScope
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-IKLMHJH6.js";
|
|
8
8
|
import "./chunk-EVGXUDX4.js";
|
|
9
|
+
import "./chunk-5UVDWG5L.js";
|
|
10
|
+
import "./chunk-X2H7JJMR.js";
|
|
9
11
|
import {
|
|
10
12
|
log
|
|
11
13
|
} from "./chunk-NREZK463.js";
|
|
12
|
-
import "./chunk-5UVDWG5L.js";
|
|
13
|
-
import "./chunk-X2H7JJMR.js";
|
|
14
14
|
|
|
15
15
|
// src/commands/enable.ts
|
|
16
16
|
import chalk from "chalk";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
resolveLearnDir
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CDTQL4FI.js";
|
|
4
4
|
import {
|
|
5
5
|
getLibPath
|
|
6
6
|
} from "./chunk-RZRT7NGT.js";
|
|
@@ -9,16 +9,16 @@ import {
|
|
|
9
9
|
run,
|
|
10
10
|
streamExec
|
|
11
11
|
} from "./chunk-EVGXUDX4.js";
|
|
12
|
-
import {
|
|
13
|
-
log,
|
|
14
|
-
printBanner
|
|
15
|
-
} from "./chunk-NREZK463.js";
|
|
16
12
|
import {
|
|
17
13
|
readJson
|
|
18
14
|
} from "./chunk-5UVDWG5L.js";
|
|
19
15
|
import {
|
|
20
16
|
globalConfigPath
|
|
21
17
|
} from "./chunk-X2H7JJMR.js";
|
|
18
|
+
import {
|
|
19
|
+
log,
|
|
20
|
+
printBanner
|
|
21
|
+
} from "./chunk-NREZK463.js";
|
|
22
22
|
|
|
23
23
|
// src/commands/host.ts
|
|
24
24
|
import { existsSync, readdirSync } from "fs";
|