coding-friend-cli 1.40.3 → 1.40.4
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-2M42TEZC.js → chunk-DVWCO7K4.js} +1 -1
- package/dist/{chunk-FSQCAHWF.js → chunk-LZPCZAGZ.js} +1 -1
- package/dist/{chunk-PIXAQLXQ.js → chunk-SKEWZ2ET.js} +31 -0
- package/dist/{chunk-CGZNFAOB.js → chunk-ZEOWTLWI.js} +7 -1
- package/dist/{clean-S57BNTWM.js → clean-VD6CFY4C.js} +1 -1
- package/dist/{config-OFGL545F.js → config-7LMHDOGW.js} +3 -3
- package/dist/{host-7XKH5HLB.js → host-KGUAFN4Y.js} +1 -1
- package/dist/index.js +24 -24
- package/dist/{init-XAWQUS2X.js → init-GL353JQR.js} +3 -3
- package/dist/{install-B3646W7P.js → install-3APP3HXQ.js} +1 -1
- package/dist/{learn-Q5YHKHQH.js → learn-ZNJ54LRO.js} +1 -1
- package/dist/{mcp-ZG56IYLD.js → mcp-TS7MOQ3A.js} +2 -2
- package/dist/{mcp-serve-7RWXY3J4.js → mcp-serve-D6BHVTCY.js} +1 -1
- package/dist/{memory-LBVPVWJQ.js → memory-NAFLQ6NN.js} +2 -2
- package/dist/{permission-W3NM7HOL.js → permission-TORAVB2Y.js} +1 -1
- package/dist/{session-WU5344ZD.js → session-AOC37YNH.js} +1 -1
- package/dist/{status-GQ3ZDYZ4.js → status-Z7DB7Y2S.js} +3 -3
- package/dist/{update-HGEF46T5.js → update-NHI4DBZL.js} +1 -1
- package/package.json +1 -1
|
@@ -348,7 +348,7 @@ async function updateClaudeCommand(opts, mode) {
|
|
|
348
348
|
}
|
|
349
349
|
let refreshMemoryAfterUpdate = null;
|
|
350
350
|
if (doCli) {
|
|
351
|
-
({ refreshMemoryAfterUpdate } = await import("./memory-
|
|
351
|
+
({ refreshMemoryAfterUpdate } = await import("./memory-NAFLQ6NN.js"));
|
|
352
352
|
if (!latestCliVersion) {
|
|
353
353
|
log.warn("Cannot check latest CLI version from npm.");
|
|
354
354
|
} else {
|
|
@@ -93,6 +93,37 @@ var STATIC_RULES = [
|
|
|
93
93
|
category: "Core Utilities",
|
|
94
94
|
recommended: true
|
|
95
95
|
},
|
|
96
|
+
// The cf-review scope snapshot lives under /tmp/coding-friend/review/<run-id>/.
|
|
97
|
+
// Only the main agent writes it (gather-diff.sh --snapshot-dir); reviewer
|
|
98
|
+
// subagents read it. Without these rules a background reviewer can stall for
|
|
99
|
+
// hours on a write-permission prompt nobody sees.
|
|
100
|
+
// Read/Edit/Write need a DOUBLE leading slash: a single "/" anchors at the
|
|
101
|
+
// settings source dir, not the filesystem root. Bash rules take the literal
|
|
102
|
+
// command text, so mkdir keeps one slash.
|
|
103
|
+
{
|
|
104
|
+
rule: "Bash(mkdir -p /tmp/coding-friend/review/*)",
|
|
105
|
+
description: "[write] Create the review scope snapshot dir \xB7 Used by: /cf-review gather-diff --snapshot-dir",
|
|
106
|
+
category: "Core Utilities",
|
|
107
|
+
recommended: true
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
rule: "Read(//tmp/coding-friend/review/**)",
|
|
111
|
+
description: "[read-only] Read the review scope snapshot \xB7 Used by: /cf-review reviewer agents",
|
|
112
|
+
category: "Core Utilities",
|
|
113
|
+
recommended: true
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
rule: "Edit(//tmp/coding-friend/review/**)",
|
|
117
|
+
description: "[modify] Update the review scope snapshot \xB7 Used by: /cf-review main agent",
|
|
118
|
+
category: "Core Utilities",
|
|
119
|
+
recommended: true
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
rule: "Write(//tmp/coding-friend/review/**)",
|
|
123
|
+
description: "[write] Write the review scope snapshot \xB7 Used by: /cf-review main agent",
|
|
124
|
+
category: "Core Utilities",
|
|
125
|
+
recommended: true
|
|
126
|
+
},
|
|
96
127
|
// Git Operations
|
|
97
128
|
{
|
|
98
129
|
rule: "Bash(git status *)",
|
|
@@ -102,7 +102,13 @@ var MemoryConfigSchema = z.object({
|
|
|
102
102
|
});
|
|
103
103
|
var ReviewConfigSchema = z.strictObject({
|
|
104
104
|
withCodex: z.boolean().optional(),
|
|
105
|
-
maxRounds: z.number().int().min(1).optional()
|
|
105
|
+
maxRounds: z.number().int().min(1).optional(),
|
|
106
|
+
// Both timeouts are whole positive seconds: zero, negative and fractional
|
|
107
|
+
// values cannot be enforced as a deadline, so they are rejected here rather
|
|
108
|
+
// than coerced somewhere downstream. Deliberately NOT offered in the
|
|
109
|
+
// interactive `cf config` review menu — they are file-only settings.
|
|
110
|
+
agentTimeout: z.number().int().min(1).optional(),
|
|
111
|
+
nativeTimeout: z.number().int().min(1).optional()
|
|
106
112
|
});
|
|
107
113
|
var ConfigSchema = z.strictObject({
|
|
108
114
|
language: z.string().optional(),
|
|
@@ -2,13 +2,13 @@ import {
|
|
|
2
2
|
afterAutoApproveEnabled,
|
|
3
3
|
getAllRules,
|
|
4
4
|
getExistingRules
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-SKEWZ2ET.js";
|
|
6
6
|
import {
|
|
7
7
|
listMdFilesRecursive
|
|
8
8
|
} from "./chunk-2DTXVMPQ.js";
|
|
9
9
|
import {
|
|
10
10
|
resolveLearnDir
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-ZEOWTLWI.js";
|
|
12
12
|
import {
|
|
13
13
|
findStatuslineHookPath,
|
|
14
14
|
getCurrentAccountEmail,
|
|
@@ -802,7 +802,7 @@ async function editPermissions() {
|
|
|
802
802
|
)
|
|
803
803
|
});
|
|
804
804
|
if (choice === BACK) return;
|
|
805
|
-
const { permissionCommand } = await import("./permission-
|
|
805
|
+
const { permissionCommand } = await import("./permission-TORAVB2Y.js");
|
|
806
806
|
switch (choice) {
|
|
807
807
|
case "interactive":
|
|
808
808
|
await permissionCommand({});
|
package/dist/index.js
CHANGED
|
@@ -46,7 +46,7 @@ program.command("install").description("Install the Coding Friend plugin into a
|
|
|
46
46
|
"--agent <agent>",
|
|
47
47
|
"Operate on host agent: claude, codex, omp, or agy"
|
|
48
48
|
).option("--codex", "Alias for --agent codex").option("--omp", "Alias for --agent omp").option("--agy", "Shortcut for --agent agy (beta)").action(async (opts) => {
|
|
49
|
-
const { installCommand } = await import("./install-
|
|
49
|
+
const { installCommand } = await import("./install-3APP3HXQ.js");
|
|
50
50
|
await installCommand(opts);
|
|
51
51
|
});
|
|
52
52
|
program.command("uninstall").description("Uninstall the Coding Friend plugin from a supported host").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").option(
|
|
@@ -80,11 +80,11 @@ program.command("init").description("Initialize coding-friend in current project
|
|
|
80
80
|
"--trust-project",
|
|
81
81
|
"For Codex, mark the current project trusted in ~/.codex/config.toml"
|
|
82
82
|
).action(async (opts) => {
|
|
83
|
-
const { initCommand } = await import("./init-
|
|
83
|
+
const { initCommand } = await import("./init-GL353JQR.js");
|
|
84
84
|
await initCommand(opts);
|
|
85
85
|
});
|
|
86
86
|
program.command("config").description("Manage Coding Friend configuration").action(async () => {
|
|
87
|
-
const { configCommand } = await import("./config-
|
|
87
|
+
const { configCommand } = await import("./config-7LMHDOGW.js");
|
|
88
88
|
await configCommand();
|
|
89
89
|
});
|
|
90
90
|
var learn = program.command("learn").description("Manage learning docs \u2014 host as a website or push to git");
|
|
@@ -96,25 +96,25 @@ Learn subcommands:
|
|
|
96
96
|
learn push [path] Commit and push learning docs (only if learn dir is the git root)`
|
|
97
97
|
);
|
|
98
98
|
learn.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) => {
|
|
99
|
-
const { hostCommand } = await import("./host-
|
|
99
|
+
const { hostCommand } = await import("./host-KGUAFN4Y.js");
|
|
100
100
|
await hostCommand(path, opts);
|
|
101
101
|
});
|
|
102
102
|
learn.command("push").description("Commit and push learning docs to origin").argument("[path]", "path to docs folder").action(async (path) => {
|
|
103
|
-
const { learnPushCommand } = await import("./learn-
|
|
103
|
+
const { learnPushCommand } = await import("./learn-ZNJ54LRO.js");
|
|
104
104
|
await learnPushCommand(path);
|
|
105
105
|
});
|
|
106
106
|
program.command("host", { hidden: true }).argument("[path]", "path to docs folder").option("-p, --port <port>", "port number", "3333").action(async (path, opts) => {
|
|
107
|
-
const { hostCommand } = await import("./host-
|
|
107
|
+
const { hostCommand } = await import("./host-KGUAFN4Y.js");
|
|
108
108
|
await hostCommand(path, opts);
|
|
109
109
|
});
|
|
110
110
|
program.command("mcp").description("Setup MCP server for learning docs").action(async () => {
|
|
111
|
-
const { mcpCommand } = await import("./mcp-
|
|
111
|
+
const { mcpCommand } = await import("./mcp-TS7MOQ3A.js");
|
|
112
112
|
await mcpCommand();
|
|
113
113
|
});
|
|
114
114
|
program.command("mcp-serve").description(
|
|
115
115
|
"Start the cf-memory MCP server (used internally by npx). When memoryDir is omitted, resolves from CLAUDE_PROJECT_DIR at runtime."
|
|
116
116
|
).argument("[memoryDir]", "path to memory directory (optional)").action(async (memoryDir) => {
|
|
117
|
-
const { mcpServeCommand } = await import("./mcp-serve-
|
|
117
|
+
const { mcpServeCommand } = await import("./mcp-serve-D6BHVTCY.js");
|
|
118
118
|
await mcpServeCommand(memoryDir);
|
|
119
119
|
});
|
|
120
120
|
program.command("mcp-serve-learn").description("Start the learn MCP server (used internally by npx)").argument("<docsDir>", "path to docs directory").action(async (docsDir) => {
|
|
@@ -134,7 +134,7 @@ program.command("permission").description("Manage host permission and approval s
|
|
|
134
134
|
"--disable-auto-approve",
|
|
135
135
|
"For Codex, disable deterministic Coding Friend auto-approve"
|
|
136
136
|
).action(async (opts) => {
|
|
137
|
-
const { permissionCommand } = await import("./permission-
|
|
137
|
+
const { permissionCommand } = await import("./permission-TORAVB2Y.js");
|
|
138
138
|
await permissionCommand(opts);
|
|
139
139
|
});
|
|
140
140
|
program.command("statusline").description("Setup coding-friend statusline in Claude Code").action(async () => {
|
|
@@ -145,15 +145,15 @@ program.command("update").description("Update coding-friend plugin, CLI, and sta
|
|
|
145
145
|
"--agent <agent>",
|
|
146
146
|
"Operate on host agent: claude, codex, omp, or agy"
|
|
147
147
|
).option("--codex", "Alias for --agent codex").option("--omp", "Alias for --agent omp").option("--agy", "Shortcut for --agent agy (beta)").action(async (opts) => {
|
|
148
|
-
const { updateCommand } = await import("./update-
|
|
148
|
+
const { updateCommand } = await import("./update-NHI4DBZL.js");
|
|
149
149
|
await updateCommand(opts);
|
|
150
150
|
});
|
|
151
151
|
program.command("status").description("Show comprehensive Coding Friend status").action(async () => {
|
|
152
|
-
const { statusCommand } = await import("./status-
|
|
152
|
+
const { statusCommand } = await import("./status-Z7DB7Y2S.js");
|
|
153
153
|
await statusCommand();
|
|
154
154
|
});
|
|
155
155
|
program.command("clean").description("Clean files generated by Coding Friend in docs/").action(async () => {
|
|
156
|
-
const { cleanCommand } = await import("./clean-
|
|
156
|
+
const { cleanCommand } = await import("./clean-VD6CFY4C.js");
|
|
157
157
|
await cleanCommand();
|
|
158
158
|
});
|
|
159
159
|
var session = program.command("session").description("[beta] Save and load Claude Code sessions across machines");
|
|
@@ -168,11 +168,11 @@ session.command("save").description("Save current Claude Code session to sync fo
|
|
|
168
168
|
"-s, --session-id <id>",
|
|
169
169
|
"session UUID to save (default: auto-detect newest)"
|
|
170
170
|
).option("-l, --label <label>", "label for this session").action(async (opts) => {
|
|
171
|
-
const { sessionSaveCommand } = await import("./session-
|
|
171
|
+
const { sessionSaveCommand } = await import("./session-AOC37YNH.js");
|
|
172
172
|
await sessionSaveCommand(opts);
|
|
173
173
|
});
|
|
174
174
|
session.command("load").description("Load a saved session from sync folder").action(async () => {
|
|
175
|
-
const { sessionLoadCommand } = await import("./session-
|
|
175
|
+
const { sessionLoadCommand } = await import("./session-AOC37YNH.js");
|
|
176
176
|
await sessionLoadCommand();
|
|
177
177
|
});
|
|
178
178
|
var memory = program.command("memory").description("AI memory system \u2014 store and search project knowledge");
|
|
@@ -192,43 +192,43 @@ Memory subcommands:
|
|
|
192
192
|
memory mcp Show MCP server setup instructions`
|
|
193
193
|
);
|
|
194
194
|
memory.command("status").description("Show memory system status").action(async () => {
|
|
195
|
-
const { memoryStatusCommand } = await import("./memory-
|
|
195
|
+
const { memoryStatusCommand } = await import("./memory-NAFLQ6NN.js");
|
|
196
196
|
await memoryStatusCommand();
|
|
197
197
|
});
|
|
198
198
|
memory.command("search").description("Search memories by query").argument("<query>", "search query").action(async (query) => {
|
|
199
|
-
const { memorySearchCommand } = await import("./memory-
|
|
199
|
+
const { memorySearchCommand } = await import("./memory-NAFLQ6NN.js");
|
|
200
200
|
await memorySearchCommand(query);
|
|
201
201
|
});
|
|
202
202
|
memory.command("list").description(
|
|
203
203
|
"List memories in current project, or all projects with --projects"
|
|
204
204
|
).option("--projects", "List all project databases with size and metadata").action(async (opts) => {
|
|
205
|
-
const { memoryListCommand } = await import("./memory-
|
|
205
|
+
const { memoryListCommand } = await import("./memory-NAFLQ6NN.js");
|
|
206
206
|
await memoryListCommand(opts);
|
|
207
207
|
});
|
|
208
208
|
memory.command("init").description(
|
|
209
209
|
"Initialize memory system \u2014 interactive wizard (first time) or config menu"
|
|
210
210
|
).action(async () => {
|
|
211
|
-
const { memoryInitCommand } = await import("./memory-
|
|
211
|
+
const { memoryInitCommand } = await import("./memory-NAFLQ6NN.js");
|
|
212
212
|
await memoryInitCommand();
|
|
213
213
|
});
|
|
214
214
|
memory.command("config").description("Configure memory system settings").action(async () => {
|
|
215
|
-
const { memoryConfigCommand } = await import("./memory-
|
|
215
|
+
const { memoryConfigCommand } = await import("./memory-NAFLQ6NN.js");
|
|
216
216
|
await memoryConfigCommand();
|
|
217
217
|
});
|
|
218
218
|
memory.command("start-daemon").description("Start the memory daemon (Tier 2 \u2014 MiniSearch)").action(async () => {
|
|
219
|
-
const { memoryStartDaemonCommand } = await import("./memory-
|
|
219
|
+
const { memoryStartDaemonCommand } = await import("./memory-NAFLQ6NN.js");
|
|
220
220
|
await memoryStartDaemonCommand();
|
|
221
221
|
});
|
|
222
222
|
memory.command("stop-daemon").description("Stop the memory daemon").action(async () => {
|
|
223
|
-
const { memoryStopDaemonCommand } = await import("./memory-
|
|
223
|
+
const { memoryStopDaemonCommand } = await import("./memory-NAFLQ6NN.js");
|
|
224
224
|
await memoryStopDaemonCommand();
|
|
225
225
|
});
|
|
226
226
|
memory.command("rebuild").description("Rebuild the daemon search index").action(async () => {
|
|
227
|
-
const { memoryRebuildCommand } = await import("./memory-
|
|
227
|
+
const { memoryRebuildCommand } = await import("./memory-NAFLQ6NN.js");
|
|
228
228
|
await memoryRebuildCommand();
|
|
229
229
|
});
|
|
230
230
|
memory.command("mcp").description("Show MCP server setup instructions").action(async () => {
|
|
231
|
-
const { memoryMcpCommand } = await import("./memory-
|
|
231
|
+
const { memoryMcpCommand } = await import("./memory-NAFLQ6NN.js");
|
|
232
232
|
await memoryMcpCommand();
|
|
233
233
|
});
|
|
234
234
|
memory.command("rm").description("Remove a project database").option("--project-id <id>", "Project ID to remove").option("--all", "Remove all project databases").option(
|
|
@@ -236,7 +236,7 @@ memory.command("rm").description("Remove a project database").option("--project-
|
|
|
236
236
|
"Remove orphaned projects (source dir missing or 0 memories)"
|
|
237
237
|
).action(
|
|
238
238
|
async (opts) => {
|
|
239
|
-
const { memoryRmCommand } = await import("./memory-
|
|
239
|
+
const { memoryRmCommand } = await import("./memory-NAFLQ6NN.js");
|
|
240
240
|
await memoryRmCommand(opts);
|
|
241
241
|
}
|
|
242
242
|
);
|
|
@@ -7,14 +7,14 @@ import {
|
|
|
7
7
|
getExistingRules,
|
|
8
8
|
getMissingRules,
|
|
9
9
|
logPluginScriptWarning
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-SKEWZ2ET.js";
|
|
11
11
|
import {
|
|
12
12
|
ensureMemoryBuilt,
|
|
13
13
|
isMemoryInitialized,
|
|
14
14
|
memoryInitWizard
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-DVWCO7K4.js";
|
|
16
16
|
import "./chunk-HEVK3OYL.js";
|
|
17
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-ZEOWTLWI.js";
|
|
18
18
|
import {
|
|
19
19
|
findStatuslineHookPath,
|
|
20
20
|
getCurrentAccountEmail,
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
ensureMemoryBuilt,
|
|
6
6
|
printMemoryMcpConfig
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-DVWCO7K4.js";
|
|
8
8
|
import {
|
|
9
9
|
checkLearnMcpHealth,
|
|
10
10
|
checkMemoryMcpHealth,
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
import {
|
|
16
16
|
resolveLearnDir,
|
|
17
17
|
resolveMemoryDir
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-ZEOWTLWI.js";
|
|
19
19
|
import "./chunk-ITI7MXLA.js";
|
|
20
20
|
import {
|
|
21
21
|
isLearnMcpRegistered,
|
|
@@ -14,9 +14,9 @@ import {
|
|
|
14
14
|
memoryStopDaemonCommand,
|
|
15
15
|
printMemoryMcpConfig,
|
|
16
16
|
refreshMemoryAfterUpdate
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-DVWCO7K4.js";
|
|
18
18
|
import "./chunk-HEVK3OYL.js";
|
|
19
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-ZEOWTLWI.js";
|
|
20
20
|
import "./chunk-ITI7MXLA.js";
|
|
21
21
|
import "./chunk-BQ4E66ZV.js";
|
|
22
22
|
import "./chunk-KCBMCHSA.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getExistingRules
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-SKEWZ2ET.js";
|
|
4
4
|
import {
|
|
5
5
|
listMdFilesRecursive
|
|
6
6
|
} from "./chunk-2DTXVMPQ.js";
|
|
@@ -12,13 +12,13 @@ import {
|
|
|
12
12
|
resolveLearnDir,
|
|
13
13
|
resolveMemoryDir,
|
|
14
14
|
sanitizeRawConfig
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-ZEOWTLWI.js";
|
|
16
16
|
import {
|
|
17
17
|
getCliVersion,
|
|
18
18
|
getLatestCliVersion,
|
|
19
19
|
getLatestVersion,
|
|
20
20
|
semverCompare
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-LZPCZAGZ.js";
|
|
22
22
|
import {
|
|
23
23
|
getInstalledVersion
|
|
24
24
|
} from "./chunk-FK4SXIF7.js";
|