coding-friend-cli 1.39.0 → 1.39.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.
@@ -16,8 +16,9 @@ import {
16
16
  import {
17
17
  CODEX_MARKETPLACE_NAME,
18
18
  getCodexInstalledVersion,
19
+ isCodexMarketplaceLocal,
19
20
  isCodexMarketplaceRegistered
20
- } from "./chunk-JSH6BMVZ.js";
21
+ } from "./chunk-RL3DCID7.js";
21
22
  import {
22
23
  deployOmpAgents,
23
24
  isOmpAgentInstalled,
@@ -383,6 +384,19 @@ async function updateCodexCommand(opts, mode) {
383
384
  );
384
385
  if (!commandExists("codex")) {
385
386
  log.error("Codex CLI not found. Cannot update Codex plugin.");
387
+ } else if (isCodexMarketplaceLocal()) {
388
+ if (beforeVersion) {
389
+ log.info(
390
+ "Codex marketplace is a local dev source \u2014 skipping git upgrade (it only works on git marketplaces)."
391
+ );
392
+ log.dim(
393
+ `Codex runs a cached copy at v${beforeVersion}; to pick up working-tree changes, reinstall via Codex \u2192 /plugins.`
394
+ );
395
+ } else {
396
+ log.warn(
397
+ "Codex marketplace is a local dev source, but coding-friend is not installed yet. Open Codex and run /plugins to install it."
398
+ );
399
+ }
386
400
  } else {
387
401
  log.step("Updating Codex marketplace...");
388
402
  const result = runWithStderr("codex", [
@@ -97,6 +97,15 @@ function isCodexMarketplaceRegistered(configPath = codexConfigTomlPath()) {
97
97
  (line) => line.trim() === tableHeader(`marketplaces.${CODEX_MARKETPLACE_NAME}`)
98
98
  );
99
99
  }
100
+ function isCodexMarketplaceLocal(configPath = codexConfigTomlPath()) {
101
+ const table = getTable(
102
+ readToml(configPath),
103
+ `marketplaces.${CODEX_MARKETPLACE_NAME}`
104
+ );
105
+ return table.some(
106
+ (line) => /^\s*source_type\s*=\s*["']local["']\s*(?:#.*)?$/.test(line)
107
+ );
108
+ }
100
109
  function setCodexPluginEnabled(enabled, configPath = codexConfigTomlPath()) {
101
110
  const content = readToml(configPath);
102
111
  writeToml(
@@ -225,6 +234,7 @@ function deployCodexAgents(sourceDir, targetDir = codexAgentsDir()) {
225
234
  export {
226
235
  CODEX_MARKETPLACE_NAME,
227
236
  isCodexMarketplaceRegistered,
237
+ isCodexMarketplaceLocal,
228
238
  setCodexPluginEnabled,
229
239
  isCodexPluginDisabled,
230
240
  removeCodexMemoryMcpConfig,
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  isCodexPluginDisabled,
7
7
  setCodexPluginEnabled
8
- } from "./chunk-JSH6BMVZ.js";
8
+ } from "./chunk-RL3DCID7.js";
9
9
  import {
10
10
  setOmpAgentDisabled
11
11
  } from "./chunk-GTOEIGDM.js";
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  isCodexPluginDisabled,
7
7
  setCodexPluginEnabled
8
- } from "./chunk-JSH6BMVZ.js";
8
+ } from "./chunk-RL3DCID7.js";
9
9
  import {
10
10
  setOmpAgentEnabled
11
11
  } from "./chunk-GTOEIGDM.js";
package/dist/index.js CHANGED
@@ -43,29 +43,29 @@ program.name("cf").description(
43
43
  "coding-friend CLI \u2014 host learning docs, setup MCP, init projects"
44
44
  ).version(wantsVersion ? buildVersionString() : pkg.version, "-v, --version");
45
45
  program.command("install").description("Install the Coding Friend plugin into a supported host").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)").option("--agent <agent>", "Operate on host agent: claude, codex, or omp").option("--codex", "Alias for --agent codex").option("--omp", "Alias for --agent omp").action(async (opts) => {
46
- const { installCommand } = await import("./install-OEFJLAWA.js");
46
+ const { installCommand } = await import("./install-A4TSBGOV.js");
47
47
  await installCommand(opts);
48
48
  });
49
49
  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("--agent <agent>", "Operate on host agent: claude, codex, or omp").option("--codex", "Alias for --agent codex").option("--omp", "Alias for --agent omp").option(
50
50
  "--remove-marketplace",
51
51
  "Also remove the host marketplace registration"
52
52
  ).action(async (opts) => {
53
- const { uninstallCommand } = await import("./uninstall-EV7362NK.js");
53
+ const { uninstallCommand } = await import("./uninstall-TCMK2WNW.js");
54
54
  await uninstallCommand(opts);
55
55
  });
56
56
  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").option("--agent <agent>", "Operate on host agent: claude, codex, or omp").option("--codex", "Alias for --agent codex").option("--omp", "Alias for --agent omp").action(async (opts) => {
57
- const { disableCommand } = await import("./disable-NROSQUHR.js");
57
+ const { disableCommand } = await import("./disable-6L352DMD.js");
58
58
  await disableCommand(opts);
59
59
  });
60
60
  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").option("--agent <agent>", "Operate on host agent: claude, codex, or omp").option("--codex", "Alias for --agent codex").option("--omp", "Alias for --agent omp").action(async (opts) => {
61
- const { enableCommand } = await import("./enable-26FFJGX5.js");
61
+ const { enableCommand } = await import("./enable-6KXREKRP.js");
62
62
  await enableCommand(opts);
63
63
  });
64
64
  program.command("init").description("Initialize coding-friend in current project").option("--agent <agent>", "Operate on host agent: claude, codex, or omp").option("--codex", "Alias for --agent codex").option("--omp", "Alias for --agent omp").option(
65
65
  "--trust-project",
66
66
  "For Codex, mark the current project trusted in ~/.codex/config.toml"
67
67
  ).action(async (opts) => {
68
- const { initCommand } = await import("./init-MHHII5EP.js");
68
+ const { initCommand } = await import("./init-VENKICVP.js");
69
69
  await initCommand(opts);
70
70
  });
71
71
  program.command("config").description("Manage Coding Friend configuration").action(async () => {
@@ -124,11 +124,11 @@ program.command("statusline").description("Setup coding-friend statusline in Cla
124
124
  await statuslineCommand();
125
125
  });
126
126
  program.command("update").description("Update coding-friend plugin, CLI, and statusline").option("--cli", "Update only the CLI (npm package)").option("--plugin", "Update only the host 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").option("--agent <agent>", "Operate on host agent: claude, codex, or omp").option("--codex", "Alias for --agent codex").option("--omp", "Alias for --agent omp").action(async (opts) => {
127
- const { updateCommand } = await import("./update-YQBBAIIF.js");
127
+ const { updateCommand } = await import("./update-6OYI5BAY.js");
128
128
  await updateCommand(opts);
129
129
  });
130
130
  program.command("status").description("Show comprehensive Coding Friend status").action(async () => {
131
- const { statusCommand } = await import("./status-4WMIQL7L.js");
131
+ const { statusCommand } = await import("./status-ZOAYLVH6.js");
132
132
  await statusCommand();
133
133
  });
134
134
  program.command("clean").description("Clean files generated by Coding Friend in docs/").action(async () => {
@@ -47,7 +47,7 @@ import {
47
47
  trustCodexProject,
48
48
  writeCodexAgentLimits,
49
49
  writeCodexMemoryMcpConfig
50
- } from "./chunk-JSH6BMVZ.js";
50
+ } from "./chunk-RL3DCID7.js";
51
51
  import {
52
52
  isOmpAgentInstalled
53
53
  } from "./chunk-GTOEIGDM.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getLatestVersion,
3
3
  semverCompare
4
- } from "./chunk-WJHQUCOF.js";
4
+ } from "./chunk-MO4SUPZN.js";
5
5
  import {
6
6
  getInstalledVersion
7
7
  } from "./chunk-4CPUWHIN.js";
@@ -22,7 +22,7 @@ import {
22
22
  findCodexAgentSourceDir,
23
23
  isCodexMarketplaceRegistered,
24
24
  setCodexPluginEnabled
25
- } from "./chunk-JSH6BMVZ.js";
25
+ } from "./chunk-RL3DCID7.js";
26
26
  import {
27
27
  deployOmpAgents,
28
28
  writeOmpExtensionEntry
@@ -18,7 +18,7 @@ import {
18
18
  getLatestCliVersion,
19
19
  getLatestVersion,
20
20
  semverCompare
21
- } from "./chunk-WJHQUCOF.js";
21
+ } from "./chunk-MO4SUPZN.js";
22
22
  import {
23
23
  getInstalledVersion
24
24
  } from "./chunk-4CPUWHIN.js";
@@ -34,7 +34,7 @@ import {
34
34
  detectPluginScope,
35
35
  isPluginDisabled
36
36
  } from "./chunk-2EY7VVFT.js";
37
- import "./chunk-JSH6BMVZ.js";
37
+ import "./chunk-RL3DCID7.js";
38
38
  import "./chunk-GTOEIGDM.js";
39
39
  import "./chunk-VMODQCSL.js";
40
40
  import {
@@ -18,7 +18,7 @@ import {
18
18
  removeCodexMemoryMcpConfig,
19
19
  removeDeployedCodexAgents,
20
20
  setCodexPluginEnabled
21
- } from "./chunk-JSH6BMVZ.js";
21
+ } from "./chunk-RL3DCID7.js";
22
22
  import {
23
23
  isOmpAgentInstalled,
24
24
  removeOmpAgents,
@@ -4,13 +4,13 @@ import {
4
4
  getLatestVersion,
5
5
  semverCompare,
6
6
  updateCommand
7
- } from "./chunk-WJHQUCOF.js";
7
+ } from "./chunk-MO4SUPZN.js";
8
8
  import "./chunk-4CPUWHIN.js";
9
9
  import "./chunk-3WIZA5OZ.js";
10
10
  import "./chunk-667NMPN4.js";
11
11
  import "./chunk-ZGIUKUL2.js";
12
12
  import "./chunk-2EY7VVFT.js";
13
- import "./chunk-JSH6BMVZ.js";
13
+ import "./chunk-RL3DCID7.js";
14
14
  import "./chunk-GTOEIGDM.js";
15
15
  import "./chunk-VMODQCSL.js";
16
16
  import "./chunk-ZZNTNIM4.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "coding-friend-cli",
3
- "version": "1.39.0",
3
+ "version": "1.39.1",
4
4
  "description": "CLI for coding-friend — host learning docs, setup MCP server, initialize projects",
5
5
  "type": "module",
6
6
  "bin": {