coding-friend-cli 1.34.0 → 1.34.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/dist/{chunk-K6EDQGDN.js → chunk-AZ6AK5M4.js} +6 -11
- package/dist/{chunk-TVAY4OQL.js → chunk-CZDXMFEZ.js} +1 -1
- package/dist/{chunk-OYPOADCX.js → chunk-DHH6SRXV.js} +0 -1
- package/dist/{chunk-5X3JZKYW.js → chunk-FAANBGCB.js} +3 -3
- package/dist/{chunk-AYIREX73.js → chunk-FI5HEQ43.js} +1 -1
- package/dist/{chunk-UGTNIFBH.js → chunk-G4QGJEV7.js} +1 -1
- package/dist/{chunk-XOHLBLN2.js → chunk-LXZ47XCD.js} +1 -1
- package/dist/{chunk-3UIH5U3Y.js → chunk-QCKIBJF6.js} +1 -1
- package/dist/{chunk-CXG6I6ZF.js → config-44VQBNMS.js} +5 -78
- package/dist/{dev-S6VZUD33.js → dev-QXVERU42.js} +2 -2
- package/dist/{host-Y3WIXDSS.js → host-6IBKKCPA.js} +2 -2
- package/dist/index.js +26 -26
- package/dist/{init-WDFYY5MM.js → init-KY3ZPEWP.js} +7 -20
- package/dist/{install-FKL6WLIG.js → install-22BLHQ6D.js} +3 -3
- package/dist/{mcp-J4SD646S.js → mcp-OGZAZZRF.js} +9 -7
- package/dist/{memory-RLZR7XQY.js → memory-JM45DEIX.js} +5 -5
- package/dist/{session-6WQGKIRG.js → session-RCEE6P35.js} +2 -2
- package/dist/{status-BX2SVBBW.js → status-NMSVOSC4.js} +7 -7
- package/dist/{statusline-MLLKBHHR.js → statusline-GKVAX7GR.js} +2 -2
- package/dist/{update-G5HZINBK.js → update-P5ZR2JVQ.js} +3 -3
- package/package.json +1 -1
- package/dist/config-MCEQOLE5.js +0 -22
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DEFAULT_CONFIG
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-DHH6SRXV.js";
|
|
4
4
|
import {
|
|
5
5
|
globalConfigPath,
|
|
6
6
|
localConfigPath,
|
|
@@ -66,11 +66,6 @@ var MemoryConfigSchema = z.object({
|
|
|
66
66
|
autoCapture: z.boolean().optional(),
|
|
67
67
|
autoStart: z.boolean().optional()
|
|
68
68
|
});
|
|
69
|
-
var CodexConfigSchema = z.strictObject({
|
|
70
|
-
enabled: z.boolean().optional(),
|
|
71
|
-
modes: z.array(z.enum(["QUICK", "STANDARD", "DEEP"])).optional(),
|
|
72
|
-
effort: z.enum(["minimal", "low", "medium", "high", "xhigh"]).optional()
|
|
73
|
-
});
|
|
74
69
|
var ConfigSchema = z.strictObject({
|
|
75
70
|
language: z.string().optional(),
|
|
76
71
|
docsDir: z.string().optional(),
|
|
@@ -79,8 +74,7 @@ var ConfigSchema = z.strictObject({
|
|
|
79
74
|
memory: MemoryConfigSchema.optional(),
|
|
80
75
|
autoApprove: z.boolean().optional(),
|
|
81
76
|
autoApproveIgnore: z.array(z.string()).optional(),
|
|
82
|
-
autoApproveAllowExtra: z.array(z.string()).optional()
|
|
83
|
-
codex: CodexConfigSchema.optional()
|
|
77
|
+
autoApproveAllowExtra: z.array(z.string()).optional()
|
|
84
78
|
});
|
|
85
79
|
var KNOWN_KEYS = [
|
|
86
80
|
"language",
|
|
@@ -90,8 +84,7 @@ var KNOWN_KEYS = [
|
|
|
90
84
|
"memory",
|
|
91
85
|
"autoApprove",
|
|
92
86
|
"autoApproveIgnore",
|
|
93
|
-
"autoApproveAllowExtra"
|
|
94
|
-
"codex"
|
|
87
|
+
"autoApproveAllowExtra"
|
|
95
88
|
];
|
|
96
89
|
function suggestKey(unknown) {
|
|
97
90
|
let best = null;
|
|
@@ -173,7 +166,9 @@ function sanitizeRawConfig(raw) {
|
|
|
173
166
|
}
|
|
174
167
|
}
|
|
175
168
|
const keyList = unknownKeys.length > 0 ? `: ${unknownKeys.join(", ")}` : "";
|
|
176
|
-
log.warn(
|
|
169
|
+
log.warn(
|
|
170
|
+
`sanitizeRawConfig: unrecognized config keys${keyList} \u2014 returning raw config`
|
|
171
|
+
);
|
|
177
172
|
return raw;
|
|
178
173
|
}
|
|
179
174
|
function loadConfig() {
|
|
@@ -22,7 +22,6 @@ var ALL_COMPONENT_IDS = STATUSLINE_COMPONENTS.map((c) => c.id);
|
|
|
22
22
|
var DEFAULT_CONFIG = {
|
|
23
23
|
language: "en",
|
|
24
24
|
docsDir: "docs",
|
|
25
|
-
codex: { enabled: false, modes: ["STANDARD", "DEEP"], effort: "medium" },
|
|
26
25
|
learn: {
|
|
27
26
|
language: "en",
|
|
28
27
|
outputDir: "docs/learn",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
warnStaleMcpJson
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-FI5HEQ43.js";
|
|
4
4
|
import {
|
|
5
5
|
editMemoryAutoCapture,
|
|
6
6
|
editMemoryAutoStart,
|
|
@@ -9,11 +9,11 @@ import {
|
|
|
9
9
|
getMemoryMcpStatus,
|
|
10
10
|
memoryConfigMenu,
|
|
11
11
|
writeMemoryMcpEntry
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-QCKIBJF6.js";
|
|
13
13
|
import {
|
|
14
14
|
loadConfig,
|
|
15
15
|
resolveMemoryDir
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-AZ6AK5M4.js";
|
|
17
17
|
import {
|
|
18
18
|
getLibPath
|
|
19
19
|
} from "./chunk-RZRT7NGT.js";
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
memoryConfigMenu
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-QCKIBJF6.js";
|
|
4
|
+
import "./chunk-AZ6AK5M4.js";
|
|
5
|
+
import "./chunk-RZRT7NGT.js";
|
|
4
6
|
import {
|
|
5
7
|
findStatuslineHookPath,
|
|
6
8
|
getCurrentAccountEmail,
|
|
@@ -11,11 +13,11 @@ import {
|
|
|
11
13
|
saveStatuslineConfig,
|
|
12
14
|
selectStatuslineComponents,
|
|
13
15
|
writeStatuslineSettings
|
|
14
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-LXZ47XCD.js";
|
|
15
17
|
import {
|
|
16
18
|
ALL_COMPONENT_IDS,
|
|
17
19
|
DEFAULT_CONFIG
|
|
18
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-DHH6SRXV.js";
|
|
19
21
|
import {
|
|
20
22
|
ensureShellCompletion,
|
|
21
23
|
hasShellCompletion,
|
|
@@ -411,68 +413,6 @@ async function editAutoApprove(globalCfg, localCfg) {
|
|
|
411
413
|
log.dim("Docs: https://cf.dinhanhthi.com/docs/reference/auto-approve/");
|
|
412
414
|
}
|
|
413
415
|
}
|
|
414
|
-
function buildCodexConfig(input2) {
|
|
415
|
-
return {
|
|
416
|
-
enabled: input2.enabled,
|
|
417
|
-
modes: input2.modes,
|
|
418
|
-
effort: input2.effort
|
|
419
|
-
};
|
|
420
|
-
}
|
|
421
|
-
async function editCodex(globalCfg, localCfg) {
|
|
422
|
-
const current = localCfg?.codex ?? globalCfg?.codex;
|
|
423
|
-
const defaults = DEFAULT_CONFIG.codex;
|
|
424
|
-
if (current !== void 0) {
|
|
425
|
-
log.dim(
|
|
426
|
-
`Current: enabled=${current.enabled}, modes=${(current.modes ?? []).join(",") || "(none)"}, effort=${current.effort}`
|
|
427
|
-
);
|
|
428
|
-
}
|
|
429
|
-
const enabled = await confirm({
|
|
430
|
-
message: "Enable Codex as 6th specialist in /cf-review? (requires `codex` CLI in PATH)",
|
|
431
|
-
default: current?.enabled ?? defaults.enabled
|
|
432
|
-
});
|
|
433
|
-
const modes = await checkbox({
|
|
434
|
-
message: "Which review modes should Codex run in?",
|
|
435
|
-
choices: [
|
|
436
|
-
{ name: "QUICK (\u22643 files, \u226450 lines)", value: "QUICK" },
|
|
437
|
-
{ name: "STANDARD (4\u201310 files or 51\u2013300 lines)", value: "STANDARD" },
|
|
438
|
-
{
|
|
439
|
-
name: "DEEP (>10 files, >300 lines, or sensitive paths)",
|
|
440
|
-
value: "DEEP"
|
|
441
|
-
}
|
|
442
|
-
],
|
|
443
|
-
default: current?.modes ?? defaults.modes
|
|
444
|
-
});
|
|
445
|
-
if (modes.length === 0) {
|
|
446
|
-
log.dim(
|
|
447
|
-
"Warning: no modes selected \u2014 Codex will never run. Select at least one mode."
|
|
448
|
-
);
|
|
449
|
-
}
|
|
450
|
-
const effort = await select({
|
|
451
|
-
message: "Codex reasoning effort level:",
|
|
452
|
-
choices: [
|
|
453
|
-
{ name: "minimal \u2014 fastest, least thorough", value: "minimal" },
|
|
454
|
-
{ name: "low", value: "low" },
|
|
455
|
-
{ name: "medium (default)", value: "medium" },
|
|
456
|
-
{ name: "high", value: "high" },
|
|
457
|
-
{ name: "xhigh \u2014 slowest, most thorough", value: "xhigh" }
|
|
458
|
-
],
|
|
459
|
-
default: current?.effort ?? defaults.effort
|
|
460
|
-
});
|
|
461
|
-
const scope = await askScope();
|
|
462
|
-
if (scope === "back") return;
|
|
463
|
-
const codexCfg = buildCodexConfig({ enabled, modes, effort });
|
|
464
|
-
writeToScope(scope, { codex: codexCfg });
|
|
465
|
-
if (enabled) {
|
|
466
|
-
log.dim(
|
|
467
|
-
"Tip: make sure `codex` CLI is installed \u2014 `npm install -g @openai/codex`"
|
|
468
|
-
);
|
|
469
|
-
log.dim(
|
|
470
|
-
"Docs: https://cf.dinhanhthi.com/docs/configuration/config-json/#codex"
|
|
471
|
-
);
|
|
472
|
-
} else {
|
|
473
|
-
log.dim("Codex disabled.");
|
|
474
|
-
}
|
|
475
|
-
}
|
|
476
416
|
async function editStatusline() {
|
|
477
417
|
const hookResult = findStatuslineHookPath();
|
|
478
418
|
if (!hookResult) {
|
|
@@ -686,8 +626,6 @@ async function configCommand() {
|
|
|
686
626
|
globalCfg,
|
|
687
627
|
localCfg
|
|
688
628
|
);
|
|
689
|
-
const codexScope = getScopeLabel("codex", globalCfg, localCfg);
|
|
690
|
-
const codexEnabled = getMergedValue("codex", globalCfg, localCfg)?.enabled;
|
|
691
629
|
const statuslineStatus = isStatuslineConfigured() ? chalk.green("configured") : chalk.yellow("not configured");
|
|
692
630
|
const completionStatus = hasShellCompletion() ? chalk.green("installed") : chalk.yellow("not installed");
|
|
693
631
|
const projectRules = getExistingRules(claudeLocalSettingsPath());
|
|
@@ -728,11 +666,6 @@ async function configCommand() {
|
|
|
728
666
|
value: "autoApprove",
|
|
729
667
|
description: " Auto-approve safe tool calls, block destructive ones, prompt for ambiguous"
|
|
730
668
|
},
|
|
731
|
-
{
|
|
732
|
-
name: `Codex cross-engine review ${formatScopeLabel(codexScope)}${codexEnabled !== void 0 ? ` (${codexEnabled ? "enabled" : "disabled"})` : ""}`,
|
|
733
|
-
value: "codex",
|
|
734
|
-
description: " Enable OpenAI Codex as 6th specialist in /cf-review (opt-in)"
|
|
735
|
-
},
|
|
736
669
|
{
|
|
737
670
|
name: `Statusline (${statuslineStatus})`,
|
|
738
671
|
value: "statusline",
|
|
@@ -776,9 +709,6 @@ async function configCommand() {
|
|
|
776
709
|
case "autoApprove":
|
|
777
710
|
await editAutoApprove(globalCfg, localCfg);
|
|
778
711
|
break;
|
|
779
|
-
case "codex":
|
|
780
|
-
await editCodex(globalCfg, localCfg);
|
|
781
|
-
break;
|
|
782
712
|
case "statusline":
|
|
783
713
|
await editStatusline();
|
|
784
714
|
break;
|
|
@@ -795,9 +725,6 @@ async function configCommand() {
|
|
|
795
725
|
console.log();
|
|
796
726
|
}
|
|
797
727
|
}
|
|
798
|
-
|
|
799
728
|
export {
|
|
800
|
-
buildCodexConfig,
|
|
801
|
-
editCodex,
|
|
802
729
|
configCommand
|
|
803
730
|
};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
resolveDocsDir
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-AZ6AK5M4.js";
|
|
4
4
|
import {
|
|
5
5
|
getLibPath
|
|
6
6
|
} from "./chunk-RZRT7NGT.js";
|
|
7
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-DHH6SRXV.js";
|
|
8
8
|
import "./chunk-TWKNGPBO.js";
|
|
9
9
|
import {
|
|
10
10
|
run,
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,7 @@ 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-22BLHQ6D.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) => {
|
|
@@ -30,19 +30,19 @@ program.command("enable").description("Re-enable the Coding Friend plugin").opti
|
|
|
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-KY3ZPEWP.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-44VQBNMS.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-6IBKKCPA.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-OGZAZZRF.js");
|
|
46
46
|
await mcpCommand(path);
|
|
47
47
|
});
|
|
48
48
|
program.command("mcp-serve").description("Start the cf-memory MCP server (used internally by npx)").argument("<memoryDir>", "path to memory directory").action(async (memoryDir) => {
|
|
@@ -61,15 +61,15 @@ program.command("permission").description("Manage Claude Code permission rules f
|
|
|
61
61
|
await permissionCommand(opts);
|
|
62
62
|
});
|
|
63
63
|
program.command("statusline").description("Setup coding-friend statusline in Claude Code").action(async () => {
|
|
64
|
-
const { statuslineCommand } = await import("./statusline-
|
|
64
|
+
const { statuslineCommand } = await import("./statusline-GKVAX7GR.js");
|
|
65
65
|
await statuslineCommand();
|
|
66
66
|
});
|
|
67
67
|
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) => {
|
|
68
|
-
const { updateCommand } = await import("./update-
|
|
68
|
+
const { updateCommand } = await import("./update-P5ZR2JVQ.js");
|
|
69
69
|
await updateCommand(opts);
|
|
70
70
|
});
|
|
71
71
|
program.command("status").description("Show comprehensive Coding Friend status").action(async () => {
|
|
72
|
-
const { statusCommand } = await import("./status-
|
|
72
|
+
const { statusCommand } = await import("./status-NMSVOSC4.js");
|
|
73
73
|
await statusCommand();
|
|
74
74
|
});
|
|
75
75
|
var session = program.command("session").description("Save and load Claude Code sessions across machines");
|
|
@@ -84,11 +84,11 @@ session.command("save").description("Save current Claude Code session to sync fo
|
|
|
84
84
|
"-s, --session-id <id>",
|
|
85
85
|
"session UUID to save (default: auto-detect newest)"
|
|
86
86
|
).option("-l, --label <label>", "label for this session").action(async (opts) => {
|
|
87
|
-
const { sessionSaveCommand } = await import("./session-
|
|
87
|
+
const { sessionSaveCommand } = await import("./session-RCEE6P35.js");
|
|
88
88
|
await sessionSaveCommand(opts);
|
|
89
89
|
});
|
|
90
90
|
session.command("load").description("Load a saved session from sync folder").action(async () => {
|
|
91
|
-
const { sessionLoadCommand } = await import("./session-
|
|
91
|
+
const { sessionLoadCommand } = await import("./session-RCEE6P35.js");
|
|
92
92
|
await sessionLoadCommand();
|
|
93
93
|
});
|
|
94
94
|
var memory = program.command("memory").description("AI memory system \u2014 store and search project knowledge");
|
|
@@ -108,43 +108,43 @@ Memory subcommands:
|
|
|
108
108
|
memory mcp Show MCP server setup instructions`
|
|
109
109
|
);
|
|
110
110
|
memory.command("status").description("Show memory system status").action(async () => {
|
|
111
|
-
const { memoryStatusCommand } = await import("./memory-
|
|
111
|
+
const { memoryStatusCommand } = await import("./memory-JM45DEIX.js");
|
|
112
112
|
await memoryStatusCommand();
|
|
113
113
|
});
|
|
114
114
|
memory.command("search").description("Search memories by query").argument("<query>", "search query").action(async (query) => {
|
|
115
|
-
const { memorySearchCommand } = await import("./memory-
|
|
115
|
+
const { memorySearchCommand } = await import("./memory-JM45DEIX.js");
|
|
116
116
|
await memorySearchCommand(query);
|
|
117
117
|
});
|
|
118
118
|
memory.command("list").description(
|
|
119
119
|
"List memories in current project, or all projects with --projects"
|
|
120
120
|
).option("--projects", "List all project databases with size and metadata").action(async (opts) => {
|
|
121
|
-
const { memoryListCommand } = await import("./memory-
|
|
121
|
+
const { memoryListCommand } = await import("./memory-JM45DEIX.js");
|
|
122
122
|
await memoryListCommand(opts);
|
|
123
123
|
});
|
|
124
124
|
memory.command("init").description(
|
|
125
125
|
"Initialize memory system \u2014 interactive wizard (first time) or config menu"
|
|
126
126
|
).action(async () => {
|
|
127
|
-
const { memoryInitCommand } = await import("./memory-
|
|
127
|
+
const { memoryInitCommand } = await import("./memory-JM45DEIX.js");
|
|
128
128
|
await memoryInitCommand();
|
|
129
129
|
});
|
|
130
130
|
memory.command("config").description("Configure memory system settings").action(async () => {
|
|
131
|
-
const { memoryConfigCommand } = await import("./memory-
|
|
131
|
+
const { memoryConfigCommand } = await import("./memory-JM45DEIX.js");
|
|
132
132
|
await memoryConfigCommand();
|
|
133
133
|
});
|
|
134
134
|
memory.command("start-daemon").description("Start the memory daemon (Tier 2 \u2014 MiniSearch)").action(async () => {
|
|
135
|
-
const { memoryStartDaemonCommand } = await import("./memory-
|
|
135
|
+
const { memoryStartDaemonCommand } = await import("./memory-JM45DEIX.js");
|
|
136
136
|
await memoryStartDaemonCommand();
|
|
137
137
|
});
|
|
138
138
|
memory.command("stop-daemon").description("Stop the memory daemon").action(async () => {
|
|
139
|
-
const { memoryStopDaemonCommand } = await import("./memory-
|
|
139
|
+
const { memoryStopDaemonCommand } = await import("./memory-JM45DEIX.js");
|
|
140
140
|
await memoryStopDaemonCommand();
|
|
141
141
|
});
|
|
142
142
|
memory.command("rebuild").description("Rebuild the daemon search index").action(async () => {
|
|
143
|
-
const { memoryRebuildCommand } = await import("./memory-
|
|
143
|
+
const { memoryRebuildCommand } = await import("./memory-JM45DEIX.js");
|
|
144
144
|
await memoryRebuildCommand();
|
|
145
145
|
});
|
|
146
146
|
memory.command("mcp").description("Show MCP server setup instructions").action(async () => {
|
|
147
|
-
const { memoryMcpCommand } = await import("./memory-
|
|
147
|
+
const { memoryMcpCommand } = await import("./memory-JM45DEIX.js");
|
|
148
148
|
await memoryMcpCommand();
|
|
149
149
|
});
|
|
150
150
|
memory.command("rm").description("Remove a project database").option("--project-id <id>", "Project ID to remove").option("--all", "Remove all project databases").option(
|
|
@@ -152,7 +152,7 @@ memory.command("rm").description("Remove a project database").option("--project-
|
|
|
152
152
|
"Remove orphaned projects (source dir missing or 0 memories)"
|
|
153
153
|
).action(
|
|
154
154
|
async (opts) => {
|
|
155
|
-
const { memoryRmCommand } = await import("./memory-
|
|
155
|
+
const { memoryRmCommand } = await import("./memory-JM45DEIX.js");
|
|
156
156
|
await memoryRmCommand(opts);
|
|
157
157
|
}
|
|
158
158
|
);
|
|
@@ -178,35 +178,35 @@ Dev subcommands:
|
|
|
178
178
|
dev update [path] Update local dev plugin to latest version`
|
|
179
179
|
);
|
|
180
180
|
dev.command("on").description("Switch to local plugin source").argument("[path]", "path to local coding-friend repo (default: cwd)").action(async (path) => {
|
|
181
|
-
const { devOnCommand } = await import("./dev-
|
|
181
|
+
const { devOnCommand } = await import("./dev-QXVERU42.js");
|
|
182
182
|
await devOnCommand(path);
|
|
183
183
|
});
|
|
184
184
|
dev.command("off").description("Switch back to remote marketplace").action(async () => {
|
|
185
|
-
const { devOffCommand } = await import("./dev-
|
|
185
|
+
const { devOffCommand } = await import("./dev-QXVERU42.js");
|
|
186
186
|
await devOffCommand();
|
|
187
187
|
});
|
|
188
188
|
dev.command("status").description("Show current dev mode").action(async () => {
|
|
189
|
-
const { devStatusCommand } = await import("./dev-
|
|
189
|
+
const { devStatusCommand } = await import("./dev-QXVERU42.js");
|
|
190
190
|
await devStatusCommand();
|
|
191
191
|
});
|
|
192
192
|
dev.command("sync").description(
|
|
193
193
|
"Copy local source files to plugin cache (no version bump needed)"
|
|
194
194
|
).action(async () => {
|
|
195
|
-
const { devSyncCommand } = await import("./dev-
|
|
195
|
+
const { devSyncCommand } = await import("./dev-QXVERU42.js");
|
|
196
196
|
await devSyncCommand();
|
|
197
197
|
});
|
|
198
198
|
dev.command("restart").description("Reinstall local dev plugin (off + on)").argument(
|
|
199
199
|
"[path]",
|
|
200
200
|
"path to local coding-friend repo (default: saved path or cwd)"
|
|
201
201
|
).action(async (path) => {
|
|
202
|
-
const { devRestartCommand } = await import("./dev-
|
|
202
|
+
const { devRestartCommand } = await import("./dev-QXVERU42.js");
|
|
203
203
|
await devRestartCommand(path);
|
|
204
204
|
});
|
|
205
205
|
dev.command("update").description("Update local dev plugin to latest version (off + on)").argument(
|
|
206
206
|
"[path]",
|
|
207
207
|
"path to local coding-friend repo (default: saved path or cwd)"
|
|
208
208
|
).action(async (path) => {
|
|
209
|
-
const { devUpdateCommand } = await import("./dev-
|
|
209
|
+
const { devUpdateCommand } = await import("./dev-QXVERU42.js");
|
|
210
210
|
await devUpdateCommand(path);
|
|
211
211
|
});
|
|
212
212
|
program.hook("postAction", async () => {
|
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
editCodex
|
|
3
|
-
} from "./chunk-CXG6I6ZF.js";
|
|
4
1
|
import {
|
|
5
2
|
ensureMemoryBuilt,
|
|
6
3
|
isMemoryInitialized,
|
|
7
4
|
memoryInitWizard
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-FAANBGCB.js";
|
|
6
|
+
import "./chunk-FI5HEQ43.js";
|
|
10
7
|
import {
|
|
11
8
|
memoryConfigMenu
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-QCKIBJF6.js";
|
|
10
|
+
import "./chunk-AZ6AK5M4.js";
|
|
14
11
|
import {
|
|
15
12
|
getLibPath
|
|
16
13
|
} from "./chunk-RZRT7NGT.js";
|
|
@@ -24,10 +21,10 @@ import {
|
|
|
24
21
|
saveStatuslineConfig,
|
|
25
22
|
selectStatuslineComponents,
|
|
26
23
|
writeStatuslineSettings
|
|
27
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-LXZ47XCD.js";
|
|
28
25
|
import {
|
|
29
26
|
DEFAULT_CONFIG
|
|
30
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-DHH6SRXV.js";
|
|
31
28
|
import {
|
|
32
29
|
ensureShellCompletion,
|
|
33
30
|
hasShellCompletion
|
|
@@ -745,8 +742,6 @@ async function initMenu(gitAvailable) {
|
|
|
745
742
|
globalCfg,
|
|
746
743
|
localCfg
|
|
747
744
|
);
|
|
748
|
-
const codexScope = getScopeLabel("codex", globalCfg, localCfg);
|
|
749
|
-
const codexEnabled = getMergedValue("codex", globalCfg, localCfg)?.enabled;
|
|
750
745
|
const projectRules = getExistingRules(claudeLocalSettingsPath());
|
|
751
746
|
const userRules = getExistingRules(claudeSettingsPath());
|
|
752
747
|
const allRules = getAllRules();
|
|
@@ -798,11 +793,6 @@ async function initMenu(gitAvailable) {
|
|
|
798
793
|
value: "autoApprove",
|
|
799
794
|
description: " Auto-approve safe tool calls, block destructive ones, prompt for ambiguous"
|
|
800
795
|
},
|
|
801
|
-
{
|
|
802
|
-
name: `Codex cross-engine review ${formatScopeLabel(codexScope)}${codexEnabled !== void 0 ? ` (${codexEnabled ? "enabled" : "disabled"})` : ""}`,
|
|
803
|
-
value: "codex",
|
|
804
|
-
description: " Enable OpenAI Codex as 6th specialist in /cf-review (opt-in)"
|
|
805
|
-
},
|
|
806
796
|
{
|
|
807
797
|
name: `Permissions (${permissionStatus} rules)`,
|
|
808
798
|
value: "permissions",
|
|
@@ -871,9 +861,6 @@ async function initMenu(gitAvailable) {
|
|
|
871
861
|
}
|
|
872
862
|
break;
|
|
873
863
|
}
|
|
874
|
-
case "codex":
|
|
875
|
-
await editCodex(globalCfg, localCfg);
|
|
876
|
-
break;
|
|
877
864
|
case "permissions": {
|
|
878
865
|
const learnCfg = localCfg?.learn ?? globalCfg?.learn;
|
|
879
866
|
const learnOutputDir = learnCfg?.outputDir || `${docsDir}/learn`;
|
|
@@ -1014,7 +1001,7 @@ async function initCommand() {
|
|
|
1014
1001
|
console.log();
|
|
1015
1002
|
log.congrats("Setup complete!");
|
|
1016
1003
|
log.dim(
|
|
1017
|
-
"Available commands: /cf-ask, /cf-plan, /cf-
|
|
1004
|
+
"Available commands: /cf-ask, /cf-plan, /cf-design, /cf-fix, /cf-commit, /cf-review, /cf-review-out, /cf-review-in, /cf-ship, /cf-optimize, /cf-scan, /cf-remember, /cf-learn, /cf-teach, /cf-research, /cf-session, /cf-warm, /cf-help"
|
|
1018
1005
|
);
|
|
1019
1006
|
}
|
|
1020
1007
|
export {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getLatestVersion,
|
|
3
3
|
semverCompare
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-G4QGJEV7.js";
|
|
5
5
|
import {
|
|
6
6
|
getInstalledVersion
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-LXZ47XCD.js";
|
|
8
|
+
import "./chunk-DHH6SRXV.js";
|
|
9
9
|
import {
|
|
10
10
|
ensureShellCompletion
|
|
11
11
|
} from "./chunk-DMJCO6LJ.js";
|
|
@@ -2,24 +2,24 @@ import {
|
|
|
2
2
|
checkLearnMcpHealth,
|
|
3
3
|
checkMemoryMcpHealth,
|
|
4
4
|
listMdFilesRecursive
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-CZDXMFEZ.js";
|
|
6
6
|
import {
|
|
7
7
|
ensureMemoryBuilt,
|
|
8
8
|
printMemoryMcpConfig
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-FAANBGCB.js";
|
|
10
10
|
import {
|
|
11
11
|
detectMemoryMcpState,
|
|
12
12
|
warnStaleMcpJson
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-FI5HEQ43.js";
|
|
14
|
+
import "./chunk-QCKIBJF6.js";
|
|
15
15
|
import {
|
|
16
16
|
resolveDocsDir,
|
|
17
17
|
resolveMemoryDir
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-AZ6AK5M4.js";
|
|
19
19
|
import {
|
|
20
20
|
getLibPath
|
|
21
21
|
} from "./chunk-RZRT7NGT.js";
|
|
22
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-DHH6SRXV.js";
|
|
23
23
|
import "./chunk-Z5Q533UG.js";
|
|
24
24
|
import "./chunk-TWKNGPBO.js";
|
|
25
25
|
import {
|
|
@@ -95,7 +95,9 @@ async function mcpCommand(path) {
|
|
|
95
95
|
}
|
|
96
96
|
if (!existsSync(join(learnMcpDir, "dist"))) {
|
|
97
97
|
log.step("Building MCP server...");
|
|
98
|
-
const result = run("npm", ["run", "build", "--silent"], {
|
|
98
|
+
const result = run("npm", ["run", "build", "--silent"], {
|
|
99
|
+
cwd: learnMcpDir
|
|
100
|
+
});
|
|
99
101
|
if (result === null) {
|
|
100
102
|
log.error("Failed to build MCP server");
|
|
101
103
|
process.exit(1);
|
|
@@ -13,12 +13,12 @@ import {
|
|
|
13
13
|
memoryStatusCommand,
|
|
14
14
|
memoryStopDaemonCommand,
|
|
15
15
|
printMemoryMcpConfig
|
|
16
|
-
} from "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
16
|
+
} from "./chunk-FAANBGCB.js";
|
|
17
|
+
import "./chunk-FI5HEQ43.js";
|
|
18
|
+
import "./chunk-QCKIBJF6.js";
|
|
19
|
+
import "./chunk-AZ6AK5M4.js";
|
|
20
20
|
import "./chunk-RZRT7NGT.js";
|
|
21
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-DHH6SRXV.js";
|
|
22
22
|
import "./chunk-Z5Q533UG.js";
|
|
23
23
|
import "./chunk-TWKNGPBO.js";
|
|
24
24
|
import "./chunk-EVGXUDX4.js";
|
|
@@ -2,14 +2,14 @@ import {
|
|
|
2
2
|
checkLearnMcpHealth,
|
|
3
3
|
checkMemoryMcpHealth,
|
|
4
4
|
listMdFilesRecursive
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-CZDXMFEZ.js";
|
|
6
|
+
import "./chunk-FI5HEQ43.js";
|
|
7
|
+
import "./chunk-QCKIBJF6.js";
|
|
8
8
|
import {
|
|
9
9
|
resolveDocsDir,
|
|
10
10
|
resolveMemoryDir,
|
|
11
11
|
sanitizeRawConfig
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-AZ6AK5M4.js";
|
|
13
13
|
import {
|
|
14
14
|
getLibPath
|
|
15
15
|
} from "./chunk-RZRT7NGT.js";
|
|
@@ -18,11 +18,11 @@ import {
|
|
|
18
18
|
getLatestCliVersion,
|
|
19
19
|
getLatestVersion,
|
|
20
20
|
semverCompare
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-G4QGJEV7.js";
|
|
22
22
|
import {
|
|
23
23
|
getInstalledVersion
|
|
24
|
-
} from "./chunk-
|
|
25
|
-
import "./chunk-
|
|
24
|
+
} from "./chunk-LXZ47XCD.js";
|
|
25
|
+
import "./chunk-DHH6SRXV.js";
|
|
26
26
|
import "./chunk-DMJCO6LJ.js";
|
|
27
27
|
import {
|
|
28
28
|
detectPluginScope,
|
|
@@ -8,10 +8,10 @@ import {
|
|
|
8
8
|
saveStatuslineConfig,
|
|
9
9
|
selectStatuslineComponents,
|
|
10
10
|
writeStatuslineSettings
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-LXZ47XCD.js";
|
|
12
12
|
import {
|
|
13
13
|
ALL_COMPONENT_IDS
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-DHH6SRXV.js";
|
|
15
15
|
import "./chunk-TWKNGPBO.js";
|
|
16
16
|
import {
|
|
17
17
|
commandExists
|
|
@@ -4,9 +4,9 @@ import {
|
|
|
4
4
|
getLatestVersion,
|
|
5
5
|
semverCompare,
|
|
6
6
|
updateCommand
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-G4QGJEV7.js";
|
|
8
|
+
import "./chunk-LXZ47XCD.js";
|
|
9
|
+
import "./chunk-DHH6SRXV.js";
|
|
10
10
|
import "./chunk-DMJCO6LJ.js";
|
|
11
11
|
import "./chunk-Z5Q533UG.js";
|
|
12
12
|
import "./chunk-TWKNGPBO.js";
|
package/package.json
CHANGED
package/dist/config-MCEQOLE5.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
buildCodexConfig,
|
|
3
|
-
configCommand,
|
|
4
|
-
editCodex
|
|
5
|
-
} from "./chunk-CXG6I6ZF.js";
|
|
6
|
-
import "./chunk-3UIH5U3Y.js";
|
|
7
|
-
import "./chunk-K6EDQGDN.js";
|
|
8
|
-
import "./chunk-RZRT7NGT.js";
|
|
9
|
-
import "./chunk-XOHLBLN2.js";
|
|
10
|
-
import "./chunk-OYPOADCX.js";
|
|
11
|
-
import "./chunk-DMJCO6LJ.js";
|
|
12
|
-
import "./chunk-Z5Q533UG.js";
|
|
13
|
-
import "./chunk-TWKNGPBO.js";
|
|
14
|
-
import "./chunk-EVGXUDX4.js";
|
|
15
|
-
import "./chunk-NREZK463.js";
|
|
16
|
-
import "./chunk-O27FVQFU.js";
|
|
17
|
-
import "./chunk-5UVDWG5L.js";
|
|
18
|
-
export {
|
|
19
|
-
buildCodexConfig,
|
|
20
|
-
configCommand,
|
|
21
|
-
editCodex
|
|
22
|
-
};
|