aicodeman 1.16.2 → 1.16.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/README.md +11 -10
- package/dist/claude-credentials.d.ts +50 -0
- package/dist/claude-credentials.d.ts.map +1 -0
- package/dist/claude-credentials.js +102 -0
- package/dist/claude-credentials.js.map +1 -0
- package/dist/config/voice.d.ts +43 -0
- package/dist/config/voice.d.ts.map +1 -0
- package/dist/config/voice.js +48 -0
- package/dist/config/voice.js.map +1 -0
- package/dist/search-service.d.ts +9 -1
- package/dist/search-service.d.ts.map +1 -1
- package/dist/search-service.js +13 -3
- package/dist/search-service.js.map +1 -1
- package/dist/services/unified-session-service.d.ts +9 -0
- package/dist/services/unified-session-service.d.ts.map +1 -1
- package/dist/services/unified-session-service.js +4 -1
- package/dist/services/unified-session-service.js.map +1 -1
- package/dist/types/search.d.ts +17 -3
- package/dist/types/search.d.ts.map +1 -1
- package/dist/web/ports/config-port.d.ts +2 -0
- package/dist/web/ports/config-port.d.ts.map +1 -1
- package/dist/web/public/admin-ui.js +35 -20
- package/dist/web/public/admin-ui.js.br +0 -0
- package/dist/web/public/admin-ui.js.gz +0 -0
- package/dist/web/public/api-client.c9b1cddc.js.gz +0 -0
- package/dist/web/public/{app.4d006245.js → app.f9c6aadd.js} +18 -18
- package/dist/web/public/app.f9c6aadd.js.br +0 -0
- package/dist/web/public/app.f9c6aadd.js.gz +0 -0
- package/dist/web/public/approvals-ui.js.gz +0 -0
- package/dist/web/public/{constants.7d0f4047.js → constants.53dc0fa1.js} +43 -0
- package/dist/web/public/constants.53dc0fa1.js.br +0 -0
- package/dist/web/public/constants.53dc0fa1.js.gz +0 -0
- package/dist/web/public/cron-ui.js.gz +0 -0
- package/dist/web/public/entrance-animations.js.gz +0 -0
- package/dist/web/public/home-sessions.js +132 -10
- package/dist/web/public/home-sessions.js.br +0 -0
- package/dist/web/public/home-sessions.js.gz +0 -0
- package/dist/web/public/i18n.89097ff5.js +1 -0
- package/dist/web/public/i18n.89097ff5.js.br +0 -0
- package/dist/web/public/i18n.89097ff5.js.gz +0 -0
- package/dist/web/public/image-input.ee16ad88.js.gz +0 -0
- package/dist/web/public/index.html +1335 -1000
- package/dist/web/public/index.html.br +0 -0
- package/dist/web/public/index.html.gz +0 -0
- package/dist/web/public/input-cjk.63794d0b.js.gz +0 -0
- package/dist/web/public/{keyboard-accessory.1f35b482.js → keyboard-accessory.0f524637.js} +207 -5
- package/dist/web/public/keyboard-accessory.0f524637.js.br +0 -0
- package/dist/web/public/keyboard-accessory.0f524637.js.gz +0 -0
- package/dist/web/public/mobile-handlers.32fdd57f.js.gz +0 -0
- package/dist/web/public/mobile-overview.js.gz +0 -0
- package/dist/web/public/mobile.4f875962.css +1 -0
- package/dist/web/public/mobile.4f875962.css.br +0 -0
- package/dist/web/public/mobile.4f875962.css.gz +0 -0
- package/dist/web/public/notification-manager.5d229063.js.gz +0 -0
- package/dist/web/public/orchestrator-panel.js.gz +0 -0
- package/dist/web/public/{panels-ui.3df9cd95.js → panels-ui.54b0d004.js} +1 -1
- package/dist/web/public/panels-ui.54b0d004.js.br +0 -0
- package/dist/web/public/panels-ui.54b0d004.js.gz +0 -0
- package/dist/web/public/ralph-panel.6de2d0f8.js.gz +0 -0
- package/dist/web/public/ralph-wizard.13a1831e.js.gz +0 -0
- package/dist/web/public/readmymind-ui.js +98 -18
- package/dist/web/public/readmymind-ui.js.br +0 -0
- package/dist/web/public/readmymind-ui.js.gz +0 -0
- package/dist/web/public/respawn-ui.ff0dae4c.js.gz +0 -0
- package/dist/web/public/sanitize-html.bc7078d6.js.gz +0 -0
- package/dist/web/public/{session-ui.f4fed187.js → session-ui.46a0993c.js} +5 -5
- package/dist/web/public/session-ui.46a0993c.js.br +0 -0
- package/dist/web/public/session-ui.46a0993c.js.gz +0 -0
- package/dist/web/public/settings-ui.63be4178.js +67 -0
- package/dist/web/public/settings-ui.63be4178.js.br +0 -0
- package/dist/web/public/settings-ui.63be4178.js.gz +0 -0
- package/dist/web/public/styles.9e04378d.css +1 -0
- package/dist/web/public/styles.9e04378d.css.br +0 -0
- package/dist/web/public/styles.9e04378d.css.gz +0 -0
- package/dist/web/public/subagent-windows.4cc8b005.js.gz +0 -0
- package/dist/web/public/sw.js.gz +0 -0
- package/dist/web/public/terminal-ui.ae776405.js +4 -0
- package/dist/web/public/terminal-ui.ae776405.js.br +0 -0
- package/dist/web/public/terminal-ui.ae776405.js.gz +0 -0
- package/dist/web/public/ultracode-panel.js.gz +0 -0
- package/dist/web/public/ultracode-windows.js.gz +0 -0
- package/dist/web/public/upload.html.gz +0 -0
- package/dist/web/public/vendor/dompurify.min.js.gz +0 -0
- package/dist/web/public/vendor/marked.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-fit.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-serialize.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-unicode11.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-webgl.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-predictive-echo.6cec0fba.js.gz +0 -0
- package/dist/web/public/vendor/xterm-zerolag-input.137ad9f0.js.gz +0 -0
- package/dist/web/public/vendor/xterm.css.gz +0 -0
- package/dist/web/public/vendor/xterm.min.js.gz +0 -0
- package/dist/web/public/{voice-input.e5461859.js → voice-input.4ec670b0.js} +421 -13
- package/dist/web/public/voice-input.4ec670b0.js.br +0 -0
- package/dist/web/public/voice-input.4ec670b0.js.gz +0 -0
- package/dist/web/public/voice-pcm-worklet.js +57 -0
- package/dist/web/public/voice-pcm-worklet.js.br +0 -0
- package/dist/web/public/voice-pcm-worklet.js.gz +0 -0
- package/dist/web/public/webview-tabs.js.gz +0 -0
- package/dist/web/routes/index.d.ts +1 -0
- package/dist/web/routes/index.d.ts.map +1 -1
- package/dist/web/routes/index.js +1 -0
- package/dist/web/routes/index.js.map +1 -1
- package/dist/web/routes/search-routes.d.ts +3 -1
- package/dist/web/routes/search-routes.d.ts.map +1 -1
- package/dist/web/routes/search-routes.js +34 -1
- package/dist/web/routes/search-routes.js.map +1 -1
- package/dist/web/routes/session-routes.d.ts.map +1 -1
- package/dist/web/routes/session-routes.js +151 -9
- package/dist/web/routes/session-routes.js.map +1 -1
- package/dist/web/routes/voice-routes.d.ts +45 -0
- package/dist/web/routes/voice-routes.d.ts.map +1 -0
- package/dist/web/routes/voice-routes.js +172 -0
- package/dist/web/routes/voice-routes.js.map +1 -0
- package/dist/web/schemas.d.ts +2 -0
- package/dist/web/schemas.d.ts.map +1 -1
- package/dist/web/schemas.js +12 -0
- package/dist/web/schemas.js.map +1 -1
- package/dist/web/server.d.ts +1 -0
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +11 -1
- package/dist/web/server.js.map +1 -1
- package/dist/web/session-history-index.d.ts +108 -0
- package/dist/web/session-history-index.d.ts.map +1 -0
- package/dist/web/session-history-index.js +118 -0
- package/dist/web/session-history-index.js.map +1 -0
- package/dist/web/voice-stream.d.ts +96 -0
- package/dist/web/voice-stream.d.ts.map +1 -0
- package/dist/web/voice-stream.js +268 -0
- package/dist/web/voice-stream.js.map +1 -0
- package/package.json +1 -1
- package/dist/web/public/app.4d006245.js.br +0 -0
- package/dist/web/public/app.4d006245.js.gz +0 -0
- package/dist/web/public/constants.7d0f4047.js.br +0 -0
- package/dist/web/public/constants.7d0f4047.js.gz +0 -0
- package/dist/web/public/i18n.ef50083f.js +0 -1
- package/dist/web/public/i18n.ef50083f.js.br +0 -0
- package/dist/web/public/i18n.ef50083f.js.gz +0 -0
- package/dist/web/public/keyboard-accessory.1f35b482.js.br +0 -0
- package/dist/web/public/keyboard-accessory.1f35b482.js.gz +0 -0
- package/dist/web/public/mobile.5d8c896c.css +0 -1
- package/dist/web/public/mobile.5d8c896c.css.br +0 -0
- package/dist/web/public/mobile.5d8c896c.css.gz +0 -0
- package/dist/web/public/panels-ui.3df9cd95.js.br +0 -0
- package/dist/web/public/panels-ui.3df9cd95.js.gz +0 -0
- package/dist/web/public/session-ui.f4fed187.js.br +0 -0
- package/dist/web/public/session-ui.f4fed187.js.gz +0 -0
- package/dist/web/public/settings-ui.1c15649c.js +0 -67
- package/dist/web/public/settings-ui.1c15649c.js.br +0 -0
- package/dist/web/public/settings-ui.1c15649c.js.gz +0 -0
- package/dist/web/public/styles.0024c22e.css +0 -1
- package/dist/web/public/styles.0024c22e.css.br +0 -0
- package/dist/web/public/styles.0024c22e.css.gz +0 -0
- package/dist/web/public/terminal-ui.e7c5d233.js +0 -4
- package/dist/web/public/terminal-ui.e7c5d233.js.br +0 -0
- package/dist/web/public/terminal-ui.e7c5d233.js.gz +0 -0
- package/dist/web/public/voice-input.e5461859.js.br +0 -0
- package/dist/web/public/voice-input.e5461859.js.gz +0 -0
package/README.md
CHANGED
|
@@ -252,9 +252,9 @@ Click **+ New Session** (or **Quick Start**). A session is one AI CLI running in
|
|
|
252
252
|
|
|
253
253
|
| Field | What it does |
|
|
254
254
|
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------- |
|
|
255
|
-
| **Working directory / case** | The folder the agent operates in. A "case" is just a named working dir Codeman remembers.
|
|
255
|
+
| **Working directory / case** | The folder the agent operates in. A "case" is just a named working dir Codeman remembers. **Add Case** creates one from scratch, links an existing folder, or clones a GitHub repo straight into one (**Clone Repo**). |
|
|
256
256
|
| **CLI / run mode** | `Claude` (default), `OpenCode`, `Codex`, `Antigravity`, `Gemini`, or `Terminal` (plain shell). |
|
|
257
|
-
| **Model** | Per-session model (App Settings → Claude
|
|
257
|
+
| **Model** | Per-session model (App Settings → Models → New Claude sessions). A soft default — `/model` still works in-session. |
|
|
258
258
|
| **Effort / Ultracode** | Reasoning effort (`low`–`max`) or `ultracode` for dynamic multi-agent workflows. Switchable anytime with `/effort`. |
|
|
259
259
|
|
|
260
260
|
Hit start — Codeman spawns the CLI via a real PTY and streams it to your browser over SSE.
|
|
@@ -278,7 +278,7 @@ Hit start — Codeman spawns the CLI via a real PTY and streams it to your brows
|
|
|
278
278
|
| ---------------- | --------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
|
|
279
279
|
| **Respawn** | Long unattended runs — auto-restarts the CLI on idle/limit, with adaptive timing. Presets: `solo-work`, `overnight-autonomous`, … | Respawn tab |
|
|
280
280
|
| **Orchestrator** | Turn one goal into a phased plan and drive it to completion across agents. | Orchestrator panel |
|
|
281
|
-
| **Cron** | Saved, named jobs on a schedule (`once`/`interval`/`daily`/`weekly`) that spawn a session and send a prompt when due. | ⏰ Cron button _(opt-in: App Settings →
|
|
281
|
+
| **Cron** | Saved, named jobs on a schedule (`once`/`interval`/`daily`/`weekly`) that spawn a session and send a prompt when due. | ⏰ Cron button _(opt-in: App Settings → Header & Panels → Scheduling)_ |
|
|
282
282
|
| **Auto-resume** | Automatically continue after a subscription rate-limit resets. | Respawn tab (top) |
|
|
283
283
|
|
|
284
284
|
### 6. Reach it from anywhere
|
|
@@ -291,7 +291,7 @@ Hit start — Codeman spawns the CLI via a real PTY and streams it to your brows
|
|
|
291
291
|
|
|
292
292
|
- **App Settings** — model, effort, permission startup mode, theme/skin, notifications, display toggles, per-CLI options, a synced custom display name, and per-device English/Simplified Chinese UI language.
|
|
293
293
|
- **Run it in the background** — `codeman web -d` detaches from your shell (`--status`, `--stop`); `codeman service install` makes it a systemd user unit / macOS LaunchAgent that survives reboots. Both verify the server actually answers before reporting success, and both refuse to start a second server on one data dir. See [Keep it running in the background](#quick-start---installation).
|
|
294
|
-
- **Self-update** — git-clone installs update in place from **Settings → Updates**.
|
|
294
|
+
- **Self-update** — git-clone installs update in place from **App Settings → System → Updates**.
|
|
295
295
|
- **Deploy your own changes** — see [Development](#development).
|
|
296
296
|
|
|
297
297
|
> ⚠️ **Safety:** if you're working _inside_ a Codeman-managed session (`echo $CODEMAN_MUX` → `1`), never run `tmux kill-session` / `pkill claude` directly — use the web UI or `./scripts/tmux-manager.sh`.
|
|
@@ -427,16 +427,17 @@ PTY Output → 16ms Server Batch → DEC 2026 Wrap → SSE → Client rAF → xt
|
|
|
427
427
|
## More Features
|
|
428
428
|
|
|
429
429
|
- **Background daemon & service install** — `codeman web -d` runs the server detached with a pidfile, `~/.codeman/web.log`, and verified startup (it polls the server until it answers, so a port clash never reads as success); `codeman service install` writes a systemd user unit (Linux) or LaunchAgent (macOS) with your shell's PATH baked in, so an nvm or Homebrew `node`, `tmux` and `claude` are actually found. Secrets are never written into unit files
|
|
430
|
-
- **Self-update** — git-clone installs under systemd/launchd update in place from **App Settings → Updates**: it detects the latest release, auto-stashes a dirty tree, and streams build progress across the service restart (npm installs report as non-updatable)
|
|
430
|
+
- **Self-update** — git-clone installs under systemd/launchd update in place from **App Settings → System → Updates**: it detects the latest release, auto-stashes a dirty tree, and streams build progress across the service restart (npm installs report as non-updatable)
|
|
431
|
+
- **Clone a GitHub repo as a case** — paste a repository URL into **Add Case → Clone Repo** and Codeman clones it into `~/codeman-cases/<name>` and registers it as a normal case, ready to run an agent in. It preflights the URL while you type (tells you whether it can be cloned anonymously and offers the repo's real branches and tags for the optional branch/tag field), fills the case name in from the URL, and lets you pick which CLI the Run button should use. Public repositories over `https://`; Codeman never collects or stores credentials
|
|
431
432
|
- **Multi-CLI** — run **Claude Code**, **OpenCode**, **Codex**, **Antigravity**, or **Gemini** per session; env-var prefixes auto-gate (`CLAUDE_CODE_*` vs `OPENCODE_*` vs `CODEX_*` vs `ANTIGRAVITY_*` vs `GEMINI_*`/`GOOGLE_*`). See [`docs/opencode-integration.md`](docs/opencode-integration.md)
|
|
432
433
|
- **Docker sessions** — run a case inside an isolated, hardened container. One checkbox on **Create New** spins up a container with sensible defaults and starts the agent inside it; multiple sessions share one per-case container; export a container + its workspace to a portable `.tar.gz` to move it to another machine. See [`docs/docker-cases.md`](docs/docker-cases.md)
|
|
433
434
|
- **Remote SSH sessions** — point a case at another machine and run the agent there inside a durable remote tmux: survives SSH drops, auto-reconnects, and can discover + attach sessions already running on the host. See [`docs/remote-sessions.md`](docs/remote-sessions.md)
|
|
434
435
|
- **Effort & Ultracode** — set a per-session default effort (`low`–`max`) or enable **ultracode** (dynamic multi-agent workflows). Soft defaults only — switchable anytime with `/effort` in-session. Extended-thinking budget is configurable too
|
|
435
436
|
- **Voice input** — dictate prompts with Deepgram Nova-3 (Web Speech API fallback): toggle recording, auto-silence stop, live level meter (`Ctrl+Shift+V`)
|
|
436
437
|
- **Image input** — paste or drag-and-drop images straight into a session
|
|
437
|
-
- **Gesture control** _(opt-in)_ — a MediaPipe hand-tracking overlay to grab/drag session windows and pinch buttons, hands-free. Enable with `CODEMAN_GESTURE=1` + App Settings →
|
|
438
|
+
- **Gesture control** _(opt-in)_ — a MediaPipe hand-tracking overlay to grab/drag session windows and pinch buttons, hands-free. Enable with `CODEMAN_GESTURE=1` + App Settings → Terminal & Input
|
|
438
439
|
- **Multi-monitor span** _(macOS)_ — one click opens a browser window maximized across all displays, so floating agent/gesture panels can cross the physical seam
|
|
439
|
-
- **File Viewer button** _(opt-in)_ — a header button that toggles the built-in file browser panel with one tap; enable under App Settings →
|
|
440
|
+
- **File Viewer button** _(opt-in)_ — a header button that toggles the built-in file browser panel with one tap; enable under App Settings → Header & Panels → Header buttons
|
|
440
441
|
- **CJK / IME input** — full composition support for Chinese / Japanese / Korean
|
|
441
442
|
- **OS notifications & hostname-aware titles** — desktop alerts and tab titles are prefixed `codeman:<host>` so multi-host setups stay unambiguous
|
|
442
443
|
|
|
@@ -520,7 +521,7 @@ The script auto-installs a systemd user service on first run. The tunnel URL is
|
|
|
520
521
|
systemctl --user enable codeman-tunnel
|
|
521
522
|
loginctl enable-linger $USER
|
|
522
523
|
|
|
523
|
-
# Or via the Codeman web UI: Settings →
|
|
524
|
+
# Or via the Codeman web UI: App Settings → System → Remote access → Cloudflare Tunnel
|
|
524
525
|
```
|
|
525
526
|
|
|
526
527
|
</details>
|
|
@@ -622,7 +623,7 @@ By default Codeman launches sessions with `--dangerously-skip-permissions`, so t
|
|
|
622
623
|
- **Loopback by default** — the server binary binds `127.0.0.1`, reachable only from the same machine, so the no-password default is safe out of the box (the guided installer asks about network access and configures the binding + password for you). Binding a non-loopback host without `CODEMAN_PASSWORD` _starts but prints a loud warning_ with three concrete fixes (set a password, loopback + an authenticated tunnel, or explicitly acknowledge with `--allow-unauthenticated-network`)
|
|
623
624
|
- **Optional auth, real sessions** — HTTP Basic via `CODEMAN_USERNAME` (default `admin`) / `CODEMAN_PASSWORD`. Success issues an opaque 256-bit `codeman_session` cookie (`randomBytes(32)`) — validated server-side, not client-signed, so it can't be forged offline (24h TTL, auto-extend, device-context audit log)
|
|
624
625
|
- **Per-IP rate limiting** — 10 failed attempts → `429` with `Retry-After` (15-min decay). A valid cookie or correct password recovers _immediately_ even while an attacker hammers the same IP — important because all tunnel traffic shares one loopback IP. QR auth has its own separate limiter
|
|
625
|
-
- **Configurable permission mode** - `--dangerously-skip-permissions` is only the default. **App Settings →
|
|
626
|
+
- **Configurable permission mode** - `--dangerously-skip-permissions` is only the default. **App Settings → Agents & CLIs → Claude → Startup Mode** can switch new sessions to Anthropic's classifier-guarded `auto` mode (low-prompt, needs Claude Code 2.1.207+), `normal` prompting, or an explicit allowed-tools list. In multi-user mode, non-granted users are forced to `auto`, and shell sessions / skip-permissions require an explicit per-user grant
|
|
626
627
|
|
|
627
628
|
### Always-on browser hardening (v0.9.5)
|
|
628
629
|
|
|
@@ -695,7 +696,7 @@ For AI agents and automation that control Codeman without a browser: an agent th
|
|
|
695
696
|
>
|
|
696
697
|
> - `npx skills add Ark0N/Codeman --skill codeman -g`: global, works for any skills-aware agent
|
|
697
698
|
> - `codeman skill install` (global) or `codeman skill install --case <name>`: for npm installs that never cloned the repo; `codeman skill uninstall` reverses it
|
|
698
|
-
> - **App Settings → Agent Skill** (`agentSkillEnabled`, default off): Codeman then injects the skill into each case on Claude session create; a user-authored `skills/codeman` in the case is never overwritten
|
|
699
|
+
> - **App Settings → Agents & CLIs → Claude → Agent Skill** (`agentSkillEnabled`, default off): Codeman then injects the skill into each case on Claude session create; a user-authored `skills/codeman` in the case is never overwritten
|
|
699
700
|
>
|
|
700
701
|
> A global install (`codeman skill install`, or `npx skills add`) is picked up by **every new Claude Code session on the machine**, inside Codeman or not. The skill self-gates: outside a Codeman session (`CODEMAN_MUX` unset) it refuses to act, so a global install costs an idle session nothing.
|
|
701
702
|
>
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Read-only access to the Claude Code OAuth credentials.
|
|
3
|
+
*
|
|
4
|
+
* Claude Code stores its subscription OAuth tokens in
|
|
5
|
+
* `$CLAUDE_CONFIG_DIR/.credentials.json` (default `~/.claude/.credentials.json`,
|
|
6
|
+
* mode 0600) on Linux/Windows, and in the login keychain on macOS. Codeman reads
|
|
7
|
+
* the access token to authenticate the voice-dictation relay
|
|
8
|
+
* (`src/web/voice-stream.ts`) against the same speech-to-text service the CLI's
|
|
9
|
+
* own `/voice` mode uses.
|
|
10
|
+
*
|
|
11
|
+
* ⚠️ READ-ONLY, deliberately. Codeman never writes this file and never performs
|
|
12
|
+
* an OAuth refresh: a refresh ROTATES the refresh token, so racing Claude Code's
|
|
13
|
+
* own refresh could invalidate the user's CLI login. An expired access token is
|
|
14
|
+
* reported as `expired` and the caller tells the user to run a Claude session
|
|
15
|
+
* (which refreshes it) instead.
|
|
16
|
+
*
|
|
17
|
+
* ⚠️ The token is a bearer secret: it is never logged, never persisted, never
|
|
18
|
+
* included in any API response, and never sent to the browser.
|
|
19
|
+
*/
|
|
20
|
+
/** Result of inspecting the credential store. The token is present only on 'ok'. */
|
|
21
|
+
export type ClaudeCredentialStatus = 'ok' | 'expired' | 'missing' | 'malformed';
|
|
22
|
+
export interface ClaudeOAuthCredentials {
|
|
23
|
+
status: ClaudeCredentialStatus;
|
|
24
|
+
/** Bearer token. Present only when status is 'ok'. Never log or serialize this. */
|
|
25
|
+
accessToken?: string;
|
|
26
|
+
/** Epoch ms the access token expires at, when the store reports one. */
|
|
27
|
+
expiresAt?: number;
|
|
28
|
+
/** e.g. 'max', 'pro'. Display-only, safe to surface. */
|
|
29
|
+
subscriptionType?: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Parse a `.credentials.json` payload. Pure: no IO, no clock read (pass `now`),
|
|
33
|
+
* so the expiry and shape handling are unit-testable.
|
|
34
|
+
*
|
|
35
|
+
* Returns 'malformed' for anything that is not the expected `claudeAiOauth`
|
|
36
|
+
* shape rather than throwing — a hand-edited or half-written file must degrade
|
|
37
|
+
* to "voice unavailable", never to a 500.
|
|
38
|
+
*/
|
|
39
|
+
export declare function parseClaudeCredentials(raw: string, now: number): ClaudeOAuthCredentials;
|
|
40
|
+
/** Path of the credentials file, honoring CLAUDE_CONFIG_DIR like the CLI does. */
|
|
41
|
+
export declare function claudeCredentialsPath(env?: NodeJS.ProcessEnv): string;
|
|
42
|
+
/**
|
|
43
|
+
* Locate and parse the Claude Code OAuth credentials.
|
|
44
|
+
*
|
|
45
|
+
* File first (present on every platform once the CLI has run there), keychain
|
|
46
|
+
* second on macOS. Never caches: Claude Code rewrites the store roughly every
|
|
47
|
+
* 8 hours, and a cached token would go stale inside a long-lived server.
|
|
48
|
+
*/
|
|
49
|
+
export declare function readClaudeOAuthCredentials(now?: number): Promise<ClaudeOAuthCredentials>;
|
|
50
|
+
//# sourceMappingURL=claude-credentials.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-credentials.d.ts","sourceRoot":"","sources":["../src/claude-credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAOH,oFAAoF;AACpF,MAAM,MAAM,sBAAsB,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;AAEhF,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,sBAAsB,CAAC;IAC/B,mFAAmF;IACnF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAWD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,sBAAsB,CAyBvF;AAED,kFAAkF;AAClF,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAGlF;AAcD;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAAC,GAAG,GAAE,MAAmB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAkB1G"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Read-only access to the Claude Code OAuth credentials.
|
|
3
|
+
*
|
|
4
|
+
* Claude Code stores its subscription OAuth tokens in
|
|
5
|
+
* `$CLAUDE_CONFIG_DIR/.credentials.json` (default `~/.claude/.credentials.json`,
|
|
6
|
+
* mode 0600) on Linux/Windows, and in the login keychain on macOS. Codeman reads
|
|
7
|
+
* the access token to authenticate the voice-dictation relay
|
|
8
|
+
* (`src/web/voice-stream.ts`) against the same speech-to-text service the CLI's
|
|
9
|
+
* own `/voice` mode uses.
|
|
10
|
+
*
|
|
11
|
+
* ⚠️ READ-ONLY, deliberately. Codeman never writes this file and never performs
|
|
12
|
+
* an OAuth refresh: a refresh ROTATES the refresh token, so racing Claude Code's
|
|
13
|
+
* own refresh could invalidate the user's CLI login. An expired access token is
|
|
14
|
+
* reported as `expired` and the caller tells the user to run a Claude session
|
|
15
|
+
* (which refreshes it) instead.
|
|
16
|
+
*
|
|
17
|
+
* ⚠️ The token is a bearer secret: it is never logged, never persisted, never
|
|
18
|
+
* included in any API response, and never sent to the browser.
|
|
19
|
+
*/
|
|
20
|
+
import { readFile } from 'fs/promises';
|
|
21
|
+
import { execFile } from 'child_process';
|
|
22
|
+
import { homedir, userInfo } from 'os';
|
|
23
|
+
import { join } from 'path';
|
|
24
|
+
/** Skew applied to the stored expiry so a token that dies mid-stream is refused up front. */
|
|
25
|
+
const EXPIRY_SKEW_MS = 60_000;
|
|
26
|
+
/** macOS keychain service holding the same JSON blob as `.credentials.json`. */
|
|
27
|
+
const KEYCHAIN_SERVICE = 'Claude Code-credentials';
|
|
28
|
+
/** Keychain lookups shell out; keep them short so a locked keychain cannot hang a request. */
|
|
29
|
+
const KEYCHAIN_TIMEOUT_MS = 3000;
|
|
30
|
+
/**
|
|
31
|
+
* Parse a `.credentials.json` payload. Pure: no IO, no clock read (pass `now`),
|
|
32
|
+
* so the expiry and shape handling are unit-testable.
|
|
33
|
+
*
|
|
34
|
+
* Returns 'malformed' for anything that is not the expected `claudeAiOauth`
|
|
35
|
+
* shape rather than throwing — a hand-edited or half-written file must degrade
|
|
36
|
+
* to "voice unavailable", never to a 500.
|
|
37
|
+
*/
|
|
38
|
+
export function parseClaudeCredentials(raw, now) {
|
|
39
|
+
let parsed;
|
|
40
|
+
try {
|
|
41
|
+
parsed = JSON.parse(raw);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return { status: 'malformed' };
|
|
45
|
+
}
|
|
46
|
+
if (!parsed || typeof parsed !== 'object')
|
|
47
|
+
return { status: 'malformed' };
|
|
48
|
+
const oauth = parsed.claudeAiOauth;
|
|
49
|
+
if (!oauth || typeof oauth !== 'object')
|
|
50
|
+
return { status: 'malformed' };
|
|
51
|
+
const record = oauth;
|
|
52
|
+
const accessToken = typeof record.accessToken === 'string' ? record.accessToken.trim() : '';
|
|
53
|
+
if (!accessToken)
|
|
54
|
+
return { status: 'malformed' };
|
|
55
|
+
const expiresAt = typeof record.expiresAt === 'number' ? record.expiresAt : undefined;
|
|
56
|
+
const subscriptionType = typeof record.subscriptionType === 'string' ? record.subscriptionType : undefined;
|
|
57
|
+
// An expired token is a real state (the CLI refreshes on its next run), not a
|
|
58
|
+
// malformed store: report it separately so the UI can say something useful.
|
|
59
|
+
if (expiresAt !== undefined && expiresAt - EXPIRY_SKEW_MS <= now) {
|
|
60
|
+
return { status: 'expired', expiresAt, subscriptionType };
|
|
61
|
+
}
|
|
62
|
+
return { status: 'ok', accessToken, expiresAt, subscriptionType };
|
|
63
|
+
}
|
|
64
|
+
/** Path of the credentials file, honoring CLAUDE_CONFIG_DIR like the CLI does. */
|
|
65
|
+
export function claudeCredentialsPath(env = process.env) {
|
|
66
|
+
const configDir = typeof env.CLAUDE_CONFIG_DIR === 'string' && env.CLAUDE_CONFIG_DIR.trim();
|
|
67
|
+
return join(configDir || join(homedir(), '.claude'), '.credentials.json');
|
|
68
|
+
}
|
|
69
|
+
/** Read the macOS keychain entry. Resolves to null on any failure (locked, absent, non-mac). */
|
|
70
|
+
function readKeychainCredentials() {
|
|
71
|
+
return new Promise((resolve) => {
|
|
72
|
+
execFile('security', ['find-generic-password', '-a', userInfo().username, '-w', '-s', KEYCHAIN_SERVICE], { encoding: 'utf-8', timeout: KEYCHAIN_TIMEOUT_MS }, (err, stdout) => resolve(err ? null : stdout.trim() || null));
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Locate and parse the Claude Code OAuth credentials.
|
|
77
|
+
*
|
|
78
|
+
* File first (present on every platform once the CLI has run there), keychain
|
|
79
|
+
* second on macOS. Never caches: Claude Code rewrites the store roughly every
|
|
80
|
+
* 8 hours, and a cached token would go stale inside a long-lived server.
|
|
81
|
+
*/
|
|
82
|
+
export async function readClaudeOAuthCredentials(now = Date.now()) {
|
|
83
|
+
let fileResult = null;
|
|
84
|
+
try {
|
|
85
|
+
fileResult = parseClaudeCredentials(await readFile(claudeCredentialsPath(), 'utf-8'), now);
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
fileResult = null;
|
|
89
|
+
}
|
|
90
|
+
if (fileResult && fileResult.status !== 'malformed')
|
|
91
|
+
return fileResult;
|
|
92
|
+
if (process.platform === 'darwin') {
|
|
93
|
+
const raw = await readKeychainCredentials();
|
|
94
|
+
if (raw) {
|
|
95
|
+
const keychainResult = parseClaudeCredentials(raw, now);
|
|
96
|
+
if (keychainResult.status !== 'malformed')
|
|
97
|
+
return keychainResult;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return fileResult ?? { status: 'missing' };
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=claude-credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-credentials.js","sourceRoot":"","sources":["../src/claude-credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Bounds and endpoint config for Claude voice dictation.
|
|
3
|
+
*
|
|
4
|
+
* Backs the browser → Codeman → Anthropic dictation relay (`src/web/voice-stream.ts`,
|
|
5
|
+
* `src/web/routes/voice-routes.ts`; design in `docs/claude-voice-plan.md`).
|
|
6
|
+
*
|
|
7
|
+
* Why everything here is bounded: an open microphone is an open pipe. Each live
|
|
8
|
+
* stream holds a browser socket, an upstream socket and a keepalive timer, and
|
|
9
|
+
* every second of audio is billed against the server owner's Claude subscription.
|
|
10
|
+
* A tab left recording (phone in a pocket, forgotten laptop) must cost a bounded
|
|
11
|
+
* amount, so streams die on their own at `MAX_STREAM_MS` and the server refuses
|
|
12
|
+
* more than `MAX_CONCURRENT_STREAMS` at once.
|
|
13
|
+
*
|
|
14
|
+
* The audio frame cap is a memory guard on a socket that carries attacker-shaped
|
|
15
|
+
* binary data: PCM16 at 16 kHz mono is 32 KB/s, so a 256 ms frame is ~8 KB and
|
|
16
|
+
* anything near 64 KB is either a broken client or an attempt to make the relay
|
|
17
|
+
* buffer for someone else.
|
|
18
|
+
*/
|
|
19
|
+
/** Upstream speech-to-text service (the one Claude Code's own `/voice` mode uses). */
|
|
20
|
+
export declare const VOICE_STREAM_HOST = "wss://api.anthropic.com";
|
|
21
|
+
/** Path of the streaming speech-to-text endpoint. */
|
|
22
|
+
export declare const VOICE_STREAM_PATH = "/api/ws/speech_to_text/voice_stream";
|
|
23
|
+
/**
|
|
24
|
+
* Base override, for tests (point the relay at a local mock) and for users on an
|
|
25
|
+
* Anthropic-compatible gateway. Must be a ws:// or wss:// origin.
|
|
26
|
+
*/
|
|
27
|
+
export declare function voiceStreamBase(env?: NodeJS.ProcessEnv): string;
|
|
28
|
+
/** Upstream drops an idle socket; the CLI pings at 8s and so do we. */
|
|
29
|
+
export declare const KEEPALIVE_INTERVAL_MS = 8000;
|
|
30
|
+
/** Hard ceiling on one dictation. Long enough for any real utterance, short enough to bound a forgotten mic. */
|
|
31
|
+
export declare const MAX_STREAM_MS: number;
|
|
32
|
+
/** Concurrent relays server-wide. Dictation is a human-paced, one-at-a-time act. */
|
|
33
|
+
export declare const MAX_CONCURRENT_STREAMS = 4;
|
|
34
|
+
/** Largest single audio frame accepted from the browser (~2s of PCM16 @16 kHz mono). */
|
|
35
|
+
export declare const MAX_AUDIO_FRAME_BYTES: number;
|
|
36
|
+
/** How long to wait for the final transcript after the client asks to finalize. */
|
|
37
|
+
export declare const FINALIZE_TIMEOUT_MS = 3000;
|
|
38
|
+
/** Upstream caps the keyterms header; mirrors the CLI's own limit. */
|
|
39
|
+
export declare const MAX_KEYTERMS_HEADER_CHARS = 1024;
|
|
40
|
+
/** Audio format the endpoint is opened with. The browser worklet must match exactly. */
|
|
41
|
+
export declare const AUDIO_SAMPLE_RATE = 16000;
|
|
42
|
+
export declare const AUDIO_CHANNELS = 1;
|
|
43
|
+
//# sourceMappingURL=voice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice.d.ts","sourceRoot":"","sources":["../../src/config/voice.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,sFAAsF;AACtF,eAAO,MAAM,iBAAiB,4BAA4B,CAAC;AAE3D,qDAAqD;AACrD,eAAO,MAAM,iBAAiB,wCAAwC,CAAC;AAEvE;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAI5E;AAED,uEAAuE;AACvE,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAE1C,gHAAgH;AAChH,eAAO,MAAM,aAAa,QAAa,CAAC;AAExC,oFAAoF;AACpF,eAAO,MAAM,sBAAsB,IAAI,CAAC;AAExC,wFAAwF;AACxF,eAAO,MAAM,qBAAqB,QAAY,CAAC;AAE/C,mFAAmF;AACnF,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC,sEAAsE;AACtE,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAE9C,wFAAwF;AACxF,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AACvC,eAAO,MAAM,cAAc,IAAI,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Bounds and endpoint config for Claude voice dictation.
|
|
3
|
+
*
|
|
4
|
+
* Backs the browser → Codeman → Anthropic dictation relay (`src/web/voice-stream.ts`,
|
|
5
|
+
* `src/web/routes/voice-routes.ts`; design in `docs/claude-voice-plan.md`).
|
|
6
|
+
*
|
|
7
|
+
* Why everything here is bounded: an open microphone is an open pipe. Each live
|
|
8
|
+
* stream holds a browser socket, an upstream socket and a keepalive timer, and
|
|
9
|
+
* every second of audio is billed against the server owner's Claude subscription.
|
|
10
|
+
* A tab left recording (phone in a pocket, forgotten laptop) must cost a bounded
|
|
11
|
+
* amount, so streams die on their own at `MAX_STREAM_MS` and the server refuses
|
|
12
|
+
* more than `MAX_CONCURRENT_STREAMS` at once.
|
|
13
|
+
*
|
|
14
|
+
* The audio frame cap is a memory guard on a socket that carries attacker-shaped
|
|
15
|
+
* binary data: PCM16 at 16 kHz mono is 32 KB/s, so a 256 ms frame is ~8 KB and
|
|
16
|
+
* anything near 64 KB is either a broken client or an attempt to make the relay
|
|
17
|
+
* buffer for someone else.
|
|
18
|
+
*/
|
|
19
|
+
/** Upstream speech-to-text service (the one Claude Code's own `/voice` mode uses). */
|
|
20
|
+
export const VOICE_STREAM_HOST = 'wss://api.anthropic.com';
|
|
21
|
+
/** Path of the streaming speech-to-text endpoint. */
|
|
22
|
+
export const VOICE_STREAM_PATH = '/api/ws/speech_to_text/voice_stream';
|
|
23
|
+
/**
|
|
24
|
+
* Base override, for tests (point the relay at a local mock) and for users on an
|
|
25
|
+
* Anthropic-compatible gateway. Must be a ws:// or wss:// origin.
|
|
26
|
+
*/
|
|
27
|
+
export function voiceStreamBase(env = process.env) {
|
|
28
|
+
const override = typeof env.CODEMAN_VOICE_STREAM_BASE === 'string' ? env.CODEMAN_VOICE_STREAM_BASE.trim() : '';
|
|
29
|
+
if (override && /^wss?:\/\//.test(override))
|
|
30
|
+
return override.replace(/\/+$/, '');
|
|
31
|
+
return VOICE_STREAM_HOST;
|
|
32
|
+
}
|
|
33
|
+
/** Upstream drops an idle socket; the CLI pings at 8s and so do we. */
|
|
34
|
+
export const KEEPALIVE_INTERVAL_MS = 8000;
|
|
35
|
+
/** Hard ceiling on one dictation. Long enough for any real utterance, short enough to bound a forgotten mic. */
|
|
36
|
+
export const MAX_STREAM_MS = 5 * 60_000;
|
|
37
|
+
/** Concurrent relays server-wide. Dictation is a human-paced, one-at-a-time act. */
|
|
38
|
+
export const MAX_CONCURRENT_STREAMS = 4;
|
|
39
|
+
/** Largest single audio frame accepted from the browser (~2s of PCM16 @16 kHz mono). */
|
|
40
|
+
export const MAX_AUDIO_FRAME_BYTES = 64 * 1024;
|
|
41
|
+
/** How long to wait for the final transcript after the client asks to finalize. */
|
|
42
|
+
export const FINALIZE_TIMEOUT_MS = 3000;
|
|
43
|
+
/** Upstream caps the keyterms header; mirrors the CLI's own limit. */
|
|
44
|
+
export const MAX_KEYTERMS_HEADER_CHARS = 1024;
|
|
45
|
+
/** Audio format the endpoint is opened with. The browser worklet must match exactly. */
|
|
46
|
+
export const AUDIO_SAMPLE_RATE = 16000;
|
|
47
|
+
export const AUDIO_CHANNELS = 1;
|
|
48
|
+
//# sourceMappingURL=voice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice.js","sourceRoot":"","sources":["../../src/config/voice.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,sFAAsF;AACtF,MAAM,CAAC,MAAM,iBAAiB,GAAG,yBAAyB,CAAC;AAE3D,qDAAqD;AACrD,MAAM,CAAC,MAAM,iBAAiB,GAAG,qCAAqC,CAAC;AAEvE;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,MAAyB,OAAO,CAAC,GAAG;IAClE,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,yBAAyB,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,yBAAyB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/G,IAAI,QAAQ,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACjF,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,uEAAuE;AACvE,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAE1C,gHAAgH;AAChH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAG,MAAM,CAAC;AAExC,oFAAoF;AACpF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAExC,wFAAwF;AACxF,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,GAAG,IAAI,CAAC;AAE/C,mFAAmF;AACnF,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAExC,sEAAsE;AACtE,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAE9C,wFAAwF;AACxF,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AACvC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC"}
|
package/dist/search-service.d.ts
CHANGED
|
@@ -33,13 +33,21 @@ export declare const SEARCH_TOTAL_CAP = 60;
|
|
|
33
33
|
export declare const SEARCH_PER_GROUP_CAP = 25;
|
|
34
34
|
/** Maximum characters in a result snippet. */
|
|
35
35
|
export declare const SEARCH_SNIPPET_MAX = 200;
|
|
36
|
-
/** A
|
|
36
|
+
/** A session row harvested for the session/case source (live or past). */
|
|
37
37
|
export interface SessionSearchInput {
|
|
38
38
|
sessionId: string;
|
|
39
39
|
sessionName: string;
|
|
40
40
|
workingDir: string;
|
|
41
41
|
/** Recency timestamp (e.g. lastActivityAt or createdAt). */
|
|
42
42
|
timestamp: number;
|
|
43
|
+
/**
|
|
44
|
+
* True for a session that is no longer running (issue #261, past sessions come
|
|
45
|
+
* from the history index, not the live map). Such a result resumes the
|
|
46
|
+
* conversation instead of switching to a tab that no longer exists.
|
|
47
|
+
*/
|
|
48
|
+
history?: boolean;
|
|
49
|
+
/** Claude conversation UUID to resume, when it differs from the Codeman id. */
|
|
50
|
+
claudeSessionId?: string;
|
|
43
51
|
}
|
|
44
52
|
/** A run-summary timeline event harvested for the event source. */
|
|
45
53
|
export interface EventSearchInput {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-service.d.ts","sourceRoot":"","sources":["../src/search-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAmC,kBAAkB,EAAoB,MAAM,mBAAmB,CAAC;AAE/G,2DAA2D;AAC3D,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,+DAA+D;AAC/D,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,8CAA8C;AAC9C,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,
|
|
1
|
+
{"version":3,"file":"search-service.d.ts","sourceRoot":"","sources":["../src/search-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAmC,kBAAkB,EAAoB,MAAM,mBAAmB,CAAC;AAE/G,2DAA2D;AAC3D,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,+DAA+D;AAC/D,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,8CAA8C;AAC9C,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,0EAA0E;AAC1E,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+EAA+E;IAC/E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,mEAAmE;AACnE,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,8DAA8D;AAC9D,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,sFAAsF;IACtF,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,yEAAyE;AACzE,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,KAAK,EAAE,eAAe,EAAE,CAAC;CAC1B;AA6BD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,kBAAkB,CA2GvF"}
|
package/dist/search-service.js
CHANGED
|
@@ -74,14 +74,24 @@ export function searchSources(query, sources) {
|
|
|
74
74
|
const sessionRows = [];
|
|
75
75
|
for (const s of sources.sessions) {
|
|
76
76
|
if (contains(s.sessionName) || contains(s.workingDir) || contains(s.sessionId)) {
|
|
77
|
+
const label = s.sessionName || s.workingDir.split('/').pop() || s.sessionId;
|
|
77
78
|
sessionRows.push({
|
|
78
79
|
type: 'session',
|
|
79
80
|
sessionId: s.sessionId,
|
|
80
|
-
sessionName:
|
|
81
|
+
sessionName: label,
|
|
81
82
|
timestamp: s.timestamp,
|
|
82
|
-
snippet: truncate(s.workingDir ? `${
|
|
83
|
+
snippet: truncate(s.workingDir ? `${label} — ${s.workingDir}` : label),
|
|
83
84
|
exactMatch: isExact(s.sessionName),
|
|
84
|
-
|
|
85
|
+
// A resume needs a directory to run in, so a history row without one
|
|
86
|
+
// stays a plain session target rather than an action that cannot work.
|
|
87
|
+
jumpTo: s.history && s.workingDir
|
|
88
|
+
? {
|
|
89
|
+
kind: 'resume-session',
|
|
90
|
+
sessionId: s.sessionId,
|
|
91
|
+
claudeSessionId: s.claudeSessionId,
|
|
92
|
+
workingDir: s.workingDir,
|
|
93
|
+
}
|
|
94
|
+
: { kind: 'session', sessionId: s.sessionId },
|
|
85
95
|
});
|
|
86
96
|
}
|
|
87
97
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-service.js","sourceRoot":"","sources":["../src/search-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,2DAA2D;AAC3D,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AACnC,+DAA+D;AAC/D,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,8CAA8C;AAC9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"search-service.js","sourceRoot":"","sources":["../src/search-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,12 @@ export type UnifiedSessionItem = {
|
|
|
31
31
|
lastPrompt?: string;
|
|
32
32
|
sizeBytes?: number;
|
|
33
33
|
projectKey?: string;
|
|
34
|
+
/** Git branch recorded in the transcript (#266). */
|
|
35
|
+
gitBranch?: string;
|
|
36
|
+
/** Linked-worktree name, when the session ran in one (#266). */
|
|
37
|
+
worktreeName?: string;
|
|
38
|
+
/** Main repo root a worktree belongs to (#266). */
|
|
39
|
+
worktreeRepo?: string;
|
|
34
40
|
remote?: boolean;
|
|
35
41
|
/** Pinned to the top of the session manager list (COD-139). */
|
|
36
42
|
pinned?: boolean;
|
|
@@ -88,6 +94,9 @@ export type HistoryInput = {
|
|
|
88
94
|
/** Most recent user prompt from the transcript (COD-145). */
|
|
89
95
|
lastPrompt?: string;
|
|
90
96
|
projectKey?: string;
|
|
97
|
+
gitBranch?: string;
|
|
98
|
+
worktreeName?: string;
|
|
99
|
+
worktreeRepo?: string;
|
|
91
100
|
};
|
|
92
101
|
/** Mux process-stat view. */
|
|
93
102
|
export type MuxStatInput = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unified-session-service.d.ts","sourceRoot":"","sources":["../../src/services/unified-session-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CAClD,CAAC;AAEF,mEAAmE;AACnE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,yDAAyD;AACzD,MAAM,MAAM,qBAAqB,GAAG;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oFAAoF;IACpF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,qHAAqH;AACrH,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,0DAA0D;AAC1D,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"unified-session-service.d.ts","sourceRoot":"","sources":["../../src/services/unified-session-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -65,6 +65,9 @@ export function mergeUnifiedSessions(sources) {
|
|
|
65
65
|
overwrite(item, 'firstPrompt', h.firstPrompt);
|
|
66
66
|
overwrite(item, 'lastPrompt', h.lastPrompt);
|
|
67
67
|
overwrite(item, 'projectKey', h.projectKey);
|
|
68
|
+
overwrite(item, 'gitBranch', h.gitBranch);
|
|
69
|
+
overwrite(item, 'worktreeName', h.worktreeName);
|
|
70
|
+
overwrite(item, 'worktreeRepo', h.worktreeRepo);
|
|
68
71
|
const ms = Date.parse(h.lastModified);
|
|
69
72
|
if (!Number.isNaN(ms) && item.lastActivityAt === undefined)
|
|
70
73
|
item.lastActivityAt = ms;
|
|
@@ -253,7 +256,7 @@ export function filterAndPaginate(items, opts) {
|
|
|
253
256
|
const q = (opts.q ?? '').trim().toLowerCase();
|
|
254
257
|
const filtered = q
|
|
255
258
|
? items.filter((it) => {
|
|
256
|
-
const hay = [it.name, it.firstPrompt, it.lastPrompt, it.workingDir, it.sessionId]
|
|
259
|
+
const hay = [it.name, it.firstPrompt, it.lastPrompt, it.workingDir, it.sessionId, it.worktreeName, it.gitBranch]
|
|
257
260
|
.filter((v) => typeof v === 'string')
|
|
258
261
|
.join(' ')
|
|
259
262
|
.toLowerCase();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unified-session-service.js","sourceRoot":"","sources":["../../src/services/unified-session-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"unified-session-service.js","sourceRoot":"","sources":["../../src/services/unified-session-service.ts"],"names":[],"mappings":"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"}
|
package/dist/types/search.d.ts
CHANGED
|
@@ -20,15 +20,19 @@
|
|
|
20
20
|
export type SearchSourceType = 'session' | 'event' | 'file';
|
|
21
21
|
/** Where the frontend should jump when a result card is activated. */
|
|
22
22
|
export interface SearchJumpTarget {
|
|
23
|
-
/**
|
|
24
|
-
|
|
23
|
+
/**
|
|
24
|
+
* Kind of navigation target. `resume-session` marks a session that is no longer
|
|
25
|
+
* running: selecting it has to REPLAY the conversation rather than switch to a
|
|
26
|
+
* tab that does not exist.
|
|
27
|
+
*/
|
|
28
|
+
kind: 'session' | 'run-summary' | 'file-preview' | 'resume-session';
|
|
25
29
|
/** Owning Codeman session id (always present — every result is session-scoped). */
|
|
26
30
|
sessionId: string;
|
|
27
31
|
/**
|
|
28
32
|
* Secondary identifier for the target:
|
|
29
33
|
* - kind 'run-summary': the run-summary event id
|
|
30
34
|
* - kind 'file-preview': the attachment history item id
|
|
31
|
-
* - kind 'session': undefined (the sessionId is sufficient)
|
|
35
|
+
* - kind 'session' / 'resume-session': undefined (the sessionId is sufficient)
|
|
32
36
|
*/
|
|
33
37
|
targetId?: string;
|
|
34
38
|
/**
|
|
@@ -36,6 +40,16 @@ export interface SearchJumpTarget {
|
|
|
36
40
|
* server-private external paths are intentionally omitted to avoid leakage.
|
|
37
41
|
*/
|
|
38
42
|
relativePath?: string;
|
|
43
|
+
/**
|
|
44
|
+
* `resume-session` only: the Claude conversation UUID to resume, when it differs
|
|
45
|
+
* from the Codeman session id (resumed and `/clear`-respawned sessions).
|
|
46
|
+
*/
|
|
47
|
+
claudeSessionId?: string;
|
|
48
|
+
/**
|
|
49
|
+
* `resume-session` only: the directory to resume in. Already visible in the
|
|
50
|
+
* result snippet for session rows, so this exposes nothing new.
|
|
51
|
+
*/
|
|
52
|
+
workingDir?: string;
|
|
39
53
|
}
|
|
40
54
|
/** A single typed search result card. */
|
|
41
55
|
export interface SearchResult {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/types/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,+EAA+E;AAC/E,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAE5D,sEAAsE;AACtE,MAAM,WAAW,gBAAgB;IAC/B
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/types/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,+EAA+E;AAC/E,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAE5D,sEAAsE;AACtE,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,IAAI,EAAE,SAAS,GAAG,aAAa,GAAG,cAAc,GAAG,gBAAgB,CAAC;IACpE,mFAAmF;IACnF,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,yCAAyC;AACzC,MAAM,WAAW,YAAY;IAC3B,mDAAmD;IACnD,IAAI,EAAE,gBAAgB,CAAC;IACvB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,oFAAoF;IACpF,UAAU,EAAE,OAAO,CAAC;IACpB,gDAAgD;IAChD,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED,+DAA+D;AAC/D,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,2EAA2E;AAC3E,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,sEAAsE;IACtE,YAAY,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,SAAS,EAAE,OAAO,CAAC;CACpB"}
|
|
@@ -23,6 +23,8 @@ export interface ConfigPort {
|
|
|
23
23
|
getTerminalHistoryConfig(): Promise<TerminalHistoryConfig>;
|
|
24
24
|
/** Synced `agentSkillEnabled` app setting (default OFF); gates per-case agent-skill injection. */
|
|
25
25
|
getAgentSkillEnabled(): Promise<boolean>;
|
|
26
|
+
/** Synced `claudeVoiceEnabled` app setting (default OFF); gates the Claude voice dictation relay. */
|
|
27
|
+
getClaudeVoiceEnabled(): Promise<boolean>;
|
|
26
28
|
getDefaultClaudeMdPath(): Promise<string | undefined>;
|
|
27
29
|
getLightState(identity?: {
|
|
28
30
|
username: string;
|