codeden 0.3.0 → 0.4.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 +8 -2
- package/dist/cli.js +1 -1
- package/dist/{main-DgpYK_Si.js → main-B7VuaduN.js} +2 -2
- package/dist/{main-DgpYK_Si.js.map → main-B7VuaduN.js.map} +1 -1
- package/dist/{main-BAX1sPiD.js → main-sEg3GS7X.js} +1196 -198
- package/dist/main-sEg3GS7X.js.map +1 -0
- package/dist/{runner-DGomZl80.js → runner-QPAnitMx.js} +198 -3
- package/dist/runner-QPAnitMx.js.map +1 -0
- package/dist/runner.js +1 -1
- package/dist/web/apple-touch-icon.png +0 -0
- package/dist/web/assets/{core-D2h_xdbh.js → core-1ZGcgEnc.js} +1 -1
- package/dist/web/assets/engine-oniguruma-S10PniCp.js +1 -0
- package/dist/web/assets/{highlighted-body-JLMTFACH-DpId3Lg2.js → highlighted-body-JLMTFACH-Gb9WrOV2.js} +1 -1
- package/dist/web/assets/{highlights-C1SeynWZ.js → highlights-BbG82Nvt.js} +1 -1
- package/dist/web/assets/index-CW3M7yYL.css +1 -0
- package/dist/web/assets/index-Capj1YIA.js +914 -0
- package/dist/web/assets/langs-92p-7kXy.js +1 -0
- package/dist/web/assets/mermaid-WFAXDIZX-D5w0oM_l.js +1 -0
- package/dist/web/assets/{shiki-h6vxFpD2.js → shiki-DvdkI_wn.js} +2 -2
- package/dist/web/assets/{stream-tokenizer-D8Euixi9.js → stream-tokenizer-hzLEdzf1.js} +1 -1
- package/dist/web/assets/{themes-Bi1mPEwQ.js → themes-o5fWh38V.js} +2 -2
- package/dist/web/icons/icon-192.png +0 -0
- package/dist/web/icons/icon-512.png +0 -0
- package/dist/web/icons/maskable-192.png +0 -0
- package/dist/web/icons/maskable-512.png +0 -0
- package/dist/web/index.html +10 -2
- package/dist/web/manifest.webmanifest +28 -0
- package/package.json +1 -1
- package/dist/main-BAX1sPiD.js.map +0 -1
- package/dist/runner-DGomZl80.js.map +0 -1
- package/dist/web/assets/engine-oniguruma-CG0oBFVI.js +0 -1
- package/dist/web/assets/index-BPuGYbOr.css +0 -1
- package/dist/web/assets/index-BXhyz2mO.js +0 -914
- package/dist/web/assets/langs-NwkcQ-R2.js +0 -1
- package/dist/web/assets/mermaid-WFAXDIZX-jqhY_qSL.js +0 -1
package/README.md
CHANGED
|
@@ -165,8 +165,8 @@ More in [Architecture](https://github.com/leonvanzyl/codeden/blob/main/docs/arch
|
|
|
165
165
|
|
|
166
166
|
## Security model
|
|
167
167
|
|
|
168
|
-
- The server and runner listen on **127.0.0.1 only
|
|
169
|
-
- Every HTTP, WebSocket and MCP request needs a **per-install random token**. The browser gets it once through the launch URL, then holds it in an HttpOnly, `SameSite=Strict` cookie.
|
|
168
|
+
- The server and runner listen on **127.0.0.1 only** by default. **Network access** for your phone or tablet is opt-in, needs a password (stored only as a salted hash), and never exposes the runner or the agents' MCP endpoint. See [Phones, tablets and network access](https://github.com/leonvanzyl/codeden/blob/main/docs/remote-access.md).
|
|
169
|
+
- Every local HTTP, WebSocket and MCP request needs a **per-install random token**. The browser gets it once through the launch URL, then holds it in an HttpOnly, `SameSite=Strict` cookie.
|
|
170
170
|
- `Host` and `Origin` headers are checked, which blocks other websites and DNS rebinding from reaching the local API.
|
|
171
171
|
- Agent MCP tokens are **per session and role-scoped**, stored only as hashes, and revoked when the session ends.
|
|
172
172
|
- The default autonomy level, **Auto, risky actions ask**, lets agents edit and run normal commands inside their worktree, and sends risky actions to your inbox: writes outside the worktree, force pushes, branch deletion, global installs, piping downloads into a shell, and secrets access.
|
|
@@ -224,6 +224,8 @@ codeden [options] Start CodeDen and open it in the browser
|
|
|
224
224
|
codeden doctor Check the installation (--install: add Claude Code support now)
|
|
225
225
|
codeden update Install the latest version and switch to it (--rollback: go back)
|
|
226
226
|
codeden stop Stop the server and the runner
|
|
227
|
+
codeden password Set the network access password (--generate: make one up)
|
|
228
|
+
codeden network on|off Let phones on your network open CodeDen, or stop it
|
|
227
229
|
|
|
228
230
|
Options:
|
|
229
231
|
--port <n> Port to listen on (default 4317)
|
|
@@ -277,6 +279,9 @@ The server stops; the runner, and any agent mid-turn, keeps going. The next `cod
|
|
|
277
279
|
**Which platforms?**
|
|
278
280
|
Windows, macOS and Linux. Windows is tested first.
|
|
279
281
|
|
|
282
|
+
**Can I use it from my phone?**
|
|
283
|
+
Yes. Turn on **Settings › Network access**, set a password, and scan the QR code with your phone on the same Wi-Fi (or over your own VPN such as Tailscale). The UI adapts to phones and tablets, and **Add to Home Screen** opens it full screen. Plain http addresses mean no notifications or microphone on the phone. See [Phones, tablets and network access](https://github.com/leonvanzyl/codeden/blob/main/docs/remote-access.md).
|
|
284
|
+
|
|
280
285
|
**Is the dark factory safe to leave running?**
|
|
281
286
|
It's experimental. Read [Autonomy and the dark factory](https://github.com/leonvanzyl/codeden/blob/main/docs/autonomy-and-dark-factory.md) first, start with Autopilot on a sandbox repository, set a budget and protected areas, and keep the kill switch in reach.
|
|
282
287
|
|
|
@@ -294,6 +299,7 @@ It's experimental. Read [Autonomy and the dark factory](https://github.com/leonv
|
|
|
294
299
|
| [Agent configuration](https://github.com/leonvanzyl/codeden/blob/main/docs/agent-config.md) | Memory, skills, subagents and MCP servers |
|
|
295
300
|
| [Voice and images](https://github.com/leonvanzyl/codeden/blob/main/docs/voice-and-images.md) | Dictation, read-aloud and image generation |
|
|
296
301
|
| [Usage and costs](https://github.com/leonvanzyl/codeden/blob/main/docs/usage-and-costs.md) | The ledger, reports, budgets and rate limits |
|
|
302
|
+
| [Phones, tablets and network access](https://github.com/leonvanzyl/codeden/blob/main/docs/remote-access.md) | Opening CodeDen from your phone, the QR code, Add to Home Screen and VPNs |
|
|
297
303
|
| [Security](https://github.com/leonvanzyl/codeden/blob/main/docs/security.md) | The security model in detail |
|
|
298
304
|
| [Troubleshooting](https://github.com/leonvanzyl/codeden/blob/main/docs/troubleshooting.md) | `doctor`, logs and common issues |
|
|
299
305
|
| [Architecture](https://github.com/leonvanzyl/codeden/blob/main/docs/architecture.md) | How the pieces fit, with a link to the full design |
|
package/dist/cli.js
CHANGED
|
@@ -242,7 +242,7 @@ async function run() {
|
|
|
242
242
|
console.log(selfVersion);
|
|
243
243
|
process.exit(0);
|
|
244
244
|
}
|
|
245
|
-
await import("./main-
|
|
245
|
+
await import("./main-sEg3GS7X.js");
|
|
246
246
|
}
|
|
247
247
|
/** Settles once this copy's CLI has loaded (an older launcher that switched here awaits it). */
|
|
248
248
|
const started = run();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as startRunner } from "./runner-
|
|
1
|
+
import { t as startRunner } from "./runner-QPAnitMx.js";
|
|
2
2
|
import { parseArgs } from "node:util";
|
|
3
3
|
// ../runner/src/main.ts
|
|
4
4
|
/**
|
|
@@ -56,4 +56,4 @@ try {
|
|
|
56
56
|
}
|
|
57
57
|
export {};
|
|
58
58
|
|
|
59
|
-
//# sourceMappingURL=main-
|
|
59
|
+
//# sourceMappingURL=main-B7VuaduN.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main-
|
|
1
|
+
{"version":3,"file":"main-B7VuaduN.js","names":[],"sources":["../../runner/src/main.ts"],"sourcesContent":["/**\n * Runner process entry. Started detached by the server:\n * node main.js --home <dir> [--fake] [--no-builtin] [--replay <fixture.json>] [--mcp-upstream <url>]\n */\nimport { parseArgs } from \"node:util\";\nimport { startRunner } from \"./runner\";\n\nconst { values } = parseArgs({\n options: {\n home: { type: \"string\" },\n fake: { type: \"boolean\", default: false },\n /** Skip the real Claude Code / Codex adapters (tests that only use Fake or Replay). */\n \"no-builtin\": { type: \"boolean\", default: false },\n /** Serve a recorded fixture as the `replay` provider (repeatable). */\n replay: { type: \"string\", multiple: true },\n \"mcp-upstream\": { type: \"string\" },\n },\n allowPositionals: false,\n});\n\nconst home = values.home ?? process.env.CODEDEN_HOME;\nif (!home) {\n console.error(\"codeden runner: --home or CODEDEN_HOME is required\");\n process.exit(2);\n}\n\nconst log = (m: string) => console.log(`[${new Date().toISOString()}] ${m}`);\n\ntry {\n const runner = await startRunner({\n home,\n enableFakeProvider: values.fake,\n builtinProviders: !values[\"no-builtin\"],\n replayFixtures: values.replay,\n mcpUpstreamUrl: values[\"mcp-upstream\"],\n sweepDescendants: true,\n log,\n onShutdown: () => process.exit(0),\n });\n const stop = () => void runner.close().then(() => process.exit(0));\n for (const signal of [\"SIGINT\", \"SIGTERM\", \"SIGHUP\", \"SIGBREAK\"] as const) {\n process.on(signal, stop);\n }\n} catch (error) {\n log(`failed to start: ${error instanceof Error ? error.message : String(error)}`);\n process.exit(1);\n}\n"],"mappings":";;;;;;;AAOA,MAAM,EAAE,WAAW,UAAU;CAC3B,SAAS;EACP,MAAM,EAAE,MAAM,SAAS;EACvB,MAAM;GAAE,MAAM;GAAW,SAAS;EAAM;;EAExC,cAAc;GAAE,MAAM;GAAW,SAAS;EAAM;;EAEhD,QAAQ;GAAE,MAAM;GAAU,UAAU;EAAK;EACzC,gBAAgB,EAAE,MAAM,SAAS;CACnC;CACA,kBAAkB;AACpB,CAAC;AAED,MAAM,OAAO,OAAO,QAAQ,QAAQ,IAAI;AACxC,IAAI,CAAC,MAAM;CACT,QAAQ,MAAM,oDAAoD;CAClE,QAAQ,KAAK,CAAC;AAChB;AAEA,MAAM,OAAO,MAAc,QAAQ,IAAI,qBAAI,IAAI,KAAK,EAAA,CAAE,YAAY,EAAE,IAAI,GAAG;AAE3E,IAAI;CACF,MAAM,SAAS,MAAM,YAAY;EAC/B;EACA,oBAAoB,OAAO;EAC3B,kBAAkB,CAAC,OAAO;EAC1B,gBAAgB,OAAO;EACvB,gBAAgB,OAAO;EACvB,kBAAkB;EAClB;EACA,kBAAkB,QAAQ,KAAK,CAAC;CAClC,CAAC;CACD,MAAM,aAAa,KAAK,OAAO,MAAM,CAAC,CAAC,WAAW,QAAQ,KAAK,CAAC,CAAC;CACjE,KAAK,MAAM,UAAU;EAAC;EAAU;EAAW;EAAU;CAAU,GAC7D,QAAQ,GAAG,QAAQ,IAAI;AAE3B,SAAS,OAAO;CACd,IAAI,oBAAoB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,GAAG;CAChF,QAAQ,KAAK,CAAC;AAChB"}
|