@docketcloud/init 0.1.0 → 0.2.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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # @docketcloud/init
2
2
 
3
- Zero-config setup for [Docket Cloud](https://docketcloud.app): detects which of Claude Code, Cursor, Windsurf, and Claude Desktop you have on this machine, and wires up your Docket Cloud workspace as an MCP server in each one -- so your coding agent can read and write the same tasks, specs, and session state your team sees on the dashboard.
3
+ Zero-config setup for [Docket Cloud](https://docketcloud.app): detects which of Claude Code, Cursor, Windsurf, Claude Desktop, and Codex you have on this machine, and wires up your Docket Cloud workspace as an MCP server in each one -- so your coding agent can read and write the same tasks, specs, and session state your team sees on the dashboard.
4
4
 
5
5
  ## Usage
6
6
 
@@ -18,7 +18,7 @@ Run it again any time -- re-running with the same key is a no-op; a new key upda
18
18
 
19
19
  ## What it touches
20
20
 
21
- Only ever a single `"docket-cloud"` entry under `mcpServers` in each tool's own config file -- nothing else in the file is read or changed:
21
+ Only ever a single `docket-cloud` entry in each tool's own config file -- nothing else in the file is read or changed:
22
22
 
23
23
  | Tool | Config file | Scope |
24
24
  | :--- | :--- | :--- |
@@ -26,18 +26,21 @@ Only ever a single `"docket-cloud"` entry under `mcpServers` in each tool's own
26
26
  | Cursor | `.cursor/mcp.json` in the current project (or `~/.cursor/mcp.json`) | project, falls back to global |
27
27
  | Windsurf | `~/.codeium/windsurf/mcp_config.json` | global only |
28
28
  | Claude Desktop | the OS-standard `claude_desktop_config.json` | global only |
29
+ | Codex (CLI, IDE extension, and desktop app) | `.codex/config.toml` in the current project (or `~/.codex/config.toml`) | project, falls back to global |
29
30
 
30
- A tool is only touched if there's evidence it's actually installed (its own app-data directory already exists) -- `docket-init` never creates a `.cursor/` or `.claude/` directory for a tool you don't have.
31
+ A tool is only touched if there's evidence it's actually installed (its own app-data directory already exists) -- `docket-init` never creates a `.cursor/`, `.claude/`, or `.codex/` directory for a tool you don't have.
31
32
 
32
33
  Claude Desktop doesn't support remote HTTP MCP servers directly, so its entry uses the standard [`mcp-remote`](https://www.npmjs.com/package/mcp-remote) stdio bridge instead of a bare URL.
33
34
 
35
+ Codex's `config.toml` is shared by its CLI, IDE extension, and desktop app -- configuring it once covers all three. Unlike every other client here, Codex's config never stores your API key directly: it takes the *name* of an environment variable (`bearer_token_env_var`) and reads the actual token from your shell at connect time. After writing Codex's config, this CLI prints the exact `export DOCKET_API_KEY=...` line to add to your shell profile (`~/.zshrc`, `~/.bashrc`, etc.) -- without that, Codex has nowhere to read the key from.
36
+
34
37
  ## Options
35
38
 
36
39
  ```
37
40
  --tenant <slug> Your Docket Cloud tenant slug. Prompted for if omitted.
38
41
  --api-key <key> A Docket Cloud API key (dk_...). Prompted for if omitted.
39
42
  --root-domain <host> Override the root domain (default: docketcloud.app) -- for self-hosted deployments.
40
- --only <ids> Comma-separated: claude-code,cursor,windsurf,claude-desktop
43
+ --only <ids> Comma-separated: claude-code,cursor,windsurf,claude-desktop,codex
41
44
  --yes, -y Skip the confirmation prompt before writing.
42
45
  --dry-run Show what would change without writing anything.
43
46
  ```
package/dist/cli.js CHANGED
@@ -24,7 +24,7 @@ function parseArgs(argv) {
24
24
  }
25
25
  return args;
26
26
  }
27
- const HELP = `docket-init -- wire up Docket Cloud as an MCP server in Claude Code, Cursor, Windsurf, and Claude Desktop.
27
+ const HELP = `docket-init -- wire up Docket Cloud as an MCP server in Claude Code, Cursor, Windsurf, Claude Desktop, and Codex.
28
28
 
29
29
  Usage:
30
30
  npx @docketcloud/init [--tenant <slug>] [--api-key <dk_...>] [options]
@@ -33,10 +33,15 @@ Options:
33
33
  --tenant <slug> Your Docket Cloud tenant slug (the <slug> in <slug>.docketcloud.app). Prompted for if omitted.
34
34
  --api-key <key> A Docket Cloud API key (dk_...). Prompted for if omitted. Get one from https://<slug>.docketcloud.app/app.
35
35
  --root-domain <host> Override the root domain (default: docketcloud.app) -- for self-hosted deployments.
36
- --only <ids> Comma-separated client ids to limit to: claude-code,cursor,windsurf,claude-desktop
36
+ --only <ids> Comma-separated client ids to limit to: claude-code,cursor,windsurf,claude-desktop,codex
37
37
  --yes, -y Don't ask for confirmation before writing config files.
38
38
  --dry-run Show what would change without writing anything.
39
39
  --help, -h Show this help.
40
+
41
+ Note on Codex: its config.toml doesn't store your API key directly -- it
42
+ reads it from an environment variable at connect time. After this command
43
+ writes Codex's config, export DOCKET_API_KEY=<your key> in your shell
44
+ profile (~/.zshrc, ~/.bashrc, etc.) for Codex to actually authenticate.
40
45
  `;
41
46
  async function prompt(rl, question) {
42
47
  const answer = await rl.question(question);
@@ -131,6 +136,15 @@ async function main() {
131
136
  if (toWrite.some((p) => p.target.id === "claude-desktop")) {
132
137
  stdout.write("\nRestart Claude Desktop for the change to take effect.\n");
133
138
  }
139
+ // Codex's config.toml only stores the *name* of an env var
140
+ // (bearer_token_env_var), never the key itself -- writing the file
141
+ // alone isn't enough for Codex to actually authenticate.
142
+ const envVarTarget = toWrite.find((p) => p.target.requiresManualEnvVar);
143
+ if (envVarTarget?.target.requiresManualEnvVar) {
144
+ stdout.write(`\n${envVarTarget.target.name} reads its API key from an environment variable, not the config file --\n` +
145
+ `add this to your shell profile (~/.zshrc, ~/.bashrc, etc.) and restart your shell:\n\n` +
146
+ ` export ${envVarTarget.target.requiresManualEnvVar}=${apiKey}\n`);
147
+ }
134
148
  stdout.write("\nDone. Docket Cloud is now available as an MCP server in the tools configured above.\n");
135
149
  }
136
150
  finally {
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/clients.js CHANGED
@@ -9,20 +9,32 @@ function homeConfigDir(home, mac, windowsEnvVar, windowsFallback, linux) {
9
9
  return path.join(home, linux);
10
10
  }
11
11
  /**
12
- * The four clients Phase 1 of the Vibe Coder Transformation spec calls
13
- * out. `cwd` is the directory the CLI was invoked from -- Claude Code and
14
- * Cursor both support a project-local config that's the more natural fit
15
- * for "run this inside your project," so those two prefer a project path
16
- * when there's already evidence (a .claude/ or .cursor/ dir) this project
12
+ * The clients Phase 1 of the Vibe Coder Transformation spec calls out,
13
+ * plus Codex (added later, on request). `cwd` is the directory the CLI
14
+ * was invoked from -- Claude Code, Cursor, and Codex all support a
15
+ * project-local config that's the more natural fit for "run this inside
16
+ * your project," so those three prefer a project path when there's
17
+ * already evidence (a .claude/, .cursor/, or .codex/ dir) this project
17
18
  * uses that tool, falling back to the global path otherwise. Windsurf and
18
19
  * Claude Desktop have no project-level config concept, so they're always
19
20
  * global.
21
+ *
22
+ * Codex is one logical client, not two, despite being asked for as
23
+ * "Codex CLI and Codex Desktop": OpenAI's own docs are explicit that the
24
+ * CLI, the IDE extension, and the desktop app all read the exact same
25
+ * config.toml -- configuring it once covers all three, the same way
26
+ * configuring Claude Desktop doesn't need a separate "Claude Desktop
27
+ * (Sonnet)" entry.
20
28
  */
21
29
  export function buildClientTargets(cwd, home = os.homedir()) {
22
30
  const projectClaudeDir = path.join(cwd, ".claude");
23
31
  const globalClaudeCodeConfig = path.join(home, ".claude.json");
24
32
  const projectCursorDir = path.join(cwd, ".cursor");
25
33
  const globalCursorDir = path.join(home, ".cursor");
34
+ const projectCodexDir = path.join(cwd, ".codex");
35
+ const globalCodexDir = path.join(home, ".codex");
36
+ const DOCKET_API_KEY_ENV_VAR = "DOCKET_API_KEY";
37
+ const codexEntry = (mcpUrl) => ({ url: mcpUrl, bearer_token_env_var: DOCKET_API_KEY_ENV_VAR });
26
38
  return [
27
39
  {
28
40
  id: "claude-code",
@@ -99,6 +111,34 @@ export function buildClientTargets(cwd, home = os.homedir()) {
99
111
  env: { DOCKET_API_KEY: apiKey }
100
112
  };
101
113
  }
114
+ },
115
+ {
116
+ id: "codex",
117
+ name: "Codex (CLI, IDE extension, and desktop app)",
118
+ installedMarkerDir: projectCodexDir,
119
+ configPath: path.join(projectCodexDir, "config.toml"),
120
+ installed: false,
121
+ format: "toml",
122
+ serverContainerKey: "mcp_servers",
123
+ // Codex's config.toml is TOML, not JSON, and its remote-server shape
124
+ // is also different from every other client here: rather than
125
+ // embedding the key directly (headers: {Authorization: ...}), it
126
+ // takes the *name* of an environment variable and reads the actual
127
+ // token from that at connect time -- see cli.ts's post-write notice,
128
+ // which is the only reason this ever actually authenticates.
129
+ requiresManualEnvVar: DOCKET_API_KEY_ENV_VAR,
130
+ buildEntry: codexEntry
131
+ },
132
+ {
133
+ id: "codex-global",
134
+ name: "Codex (CLI, IDE extension, and desktop app, global)",
135
+ installedMarkerDir: globalCodexDir,
136
+ configPath: path.join(globalCodexDir, "config.toml"),
137
+ installed: false,
138
+ format: "toml",
139
+ serverContainerKey: "mcp_servers",
140
+ requiresManualEnvVar: DOCKET_API_KEY_ENV_VAR,
141
+ buildEntry: codexEntry
102
142
  }
103
143
  ];
104
144
  }
@@ -120,7 +160,8 @@ export function resolveScopedTargets(targets) {
120
160
  // pointing at the path that would have been used.
121
161
  for (const [projectId, globalId] of [
122
162
  ["claude-code", "claude-code-global"],
123
- ["cursor", "cursor-global"]
163
+ ["cursor", "cursor-global"],
164
+ ["codex", "codex-global"]
124
165
  ]) {
125
166
  const project = byId.get(projectId);
126
167
  const global = byId.get(globalId);
@@ -1 +1 @@
1
- {"version":3,"file":"clients.js","sourceRoot":"","sources":["../src/clients.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clients.js","sourceRoot":"","sources":["../src/clients.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import fs from "node:fs/promises";
2
2
  import path from "node:path";
3
+ import * as toml from "smol-toml";
3
4
  import { SERVER_KEY } from "./clients.js";
4
5
  async function exists(p) {
5
6
  try {
@@ -14,39 +15,47 @@ async function exists(p) {
14
15
  export async function detectInstalled(targets) {
15
16
  return Promise.all(targets.map(async (t) => ({ ...t, installed: await exists(t.installedMarkerDir) })));
16
17
  }
18
+ function parseExisting(target, raw) {
19
+ if (raw.trim() === "")
20
+ return { ok: true, data: {} };
21
+ try {
22
+ const parsed = target.format === "toml" ? toml.parse(raw) : JSON.parse(raw);
23
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
24
+ return { ok: false, parseError: `${target.configPath} does not contain a ${target.format === "toml" ? "TOML table" : "JSON object"} at its root` };
25
+ }
26
+ return { ok: true, data: parsed };
27
+ }
28
+ catch (err) {
29
+ const kind = target.format === "toml" ? "TOML" : "JSON";
30
+ return { ok: false, parseError: `${target.configPath} is not valid ${kind} (${err.message}) -- left untouched` };
31
+ }
32
+ }
17
33
  /**
18
34
  * Reads the target's existing config (if any), merges in the docket-cloud
19
- * server entry under mcpServers, and returns the plan without writing --
20
- * callers decide whether to apply it (supports --dry-run and a
21
- * confirmation prompt before any file on disk actually changes).
22
- * Never touches any other key in the file, or any other entry under
23
- * mcpServers -- only "docket-cloud" is added or replaced.
35
+ * server entry under its server-container key (mcpServers for every JSON
36
+ * client, mcp_servers for Codex's TOML), and returns the plan without
37
+ * writing -- callers decide whether to apply it (supports --dry-run and a
38
+ * confirmation prompt before any file on disk actually changes). Never
39
+ * touches any other key in the file, or any other entry under the
40
+ * container key -- only "docket-cloud" is added or replaced.
24
41
  */
25
42
  export async function planMerge(target, mcpUrl, apiKey) {
26
43
  let existing = {};
27
44
  if (await exists(target.configPath)) {
28
45
  const raw = await fs.readFile(target.configPath, "utf-8");
29
- try {
30
- const parsed = raw.trim() === "" ? {} : JSON.parse(raw);
31
- if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
32
- return { target, nextContent: raw, unchanged: false, parseError: `${target.configPath} does not contain a JSON object` };
33
- }
34
- existing = parsed;
35
- }
36
- catch (err) {
37
- return {
38
- target,
39
- nextContent: raw,
40
- unchanged: false,
41
- parseError: `${target.configPath} is not valid JSON (${err.message}) -- left untouched`
42
- };
46
+ const result = parseExisting(target, raw);
47
+ if (!result.ok) {
48
+ return { target, nextContent: raw, unchanged: false, parseError: result.parseError };
43
49
  }
50
+ existing = result.data;
44
51
  }
45
- const mcpServers = (existing.mcpServers && typeof existing.mcpServers === "object" ? existing.mcpServers : {});
52
+ const containerKey = target.serverContainerKey ?? "mcpServers";
53
+ const servers = (existing[containerKey] && typeof existing[containerKey] === "object" ? existing[containerKey] : {});
46
54
  const newEntry = target.buildEntry(mcpUrl, apiKey);
47
- const unchanged = JSON.stringify(mcpServers[SERVER_KEY] ?? null) === JSON.stringify(newEntry);
48
- const next = { ...existing, mcpServers: { ...mcpServers, [SERVER_KEY]: newEntry } };
49
- return { target, nextContent: JSON.stringify(next, null, 2) + "\n", unchanged };
55
+ const unchanged = JSON.stringify(servers[SERVER_KEY] ?? null) === JSON.stringify(newEntry);
56
+ const next = { ...existing, [containerKey]: { ...servers, [SERVER_KEY]: newEntry } };
57
+ const nextContent = target.format === "toml" ? toml.stringify(next) : JSON.stringify(next, null, 2) + "\n";
58
+ return { target, nextContent, unchanged };
50
59
  }
51
60
  export async function applyMerge(plan) {
52
61
  await fs.mkdir(path.dirname(plan.target.configPath), { recursive: true });
@@ -1 +1 @@
1
- {"version":3,"file":"configFile.js","sourceRoot":"","sources":["../src/configFile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configFile.js","sourceRoot":"","sources":["../src/configFile.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@docketcloud/init",
3
- "version": "0.1.0",
4
- "description": "Zero-config setup for Docket Cloud: detects Claude Code, Cursor, Windsurf, and Claude Desktop on this machine and wires up Docket Cloud as an MCP server in each.",
3
+ "version": "0.2.0",
4
+ "description": "Zero-config setup for Docket Cloud: detects Claude Code, Cursor, Windsurf, Claude Desktop, and Codex on this machine and wires up Docket Cloud as an MCP server in each.",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "engines": {
@@ -23,5 +23,8 @@
23
23
  "@types/node": "^22.10.5",
24
24
  "typescript": "^5.7.3",
25
25
  "vitest": "^4.1.10"
26
+ },
27
+ "dependencies": {
28
+ "smol-toml": "^1.8.0"
26
29
  }
27
30
  }