@scrylog/cli 0.2.0 → 0.3.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.
- package/README.md +46 -7
- package/dist/assets/highlights-eq9cgrbb.scm +604 -0
- package/dist/assets/highlights-ghv9g403.scm +205 -0
- package/dist/assets/highlights-hk7bwhj4.scm +284 -0
- package/dist/assets/highlights-r812a2qc.scm +150 -0
- package/dist/assets/highlights-x6tmsnaa.scm +115 -0
- package/dist/assets/injections-73j83es3.scm +27 -0
- package/dist/assets/parser.worker-xyhf83rf.js +4563 -0
- package/dist/assets/tree-sitter-3jzf13jk.wasm +0 -0
- package/dist/assets/tree-sitter-javascript-nd0q4pe9.wasm +0 -0
- package/dist/assets/tree-sitter-markdown-411r6y9b.wasm +0 -0
- package/dist/assets/tree-sitter-markdown_inline-j5349f42.wasm +0 -0
- package/dist/assets/tree-sitter-typescript-zxjzwt75.wasm +0 -0
- package/dist/assets/tree-sitter-zig-e78zbjpm.wasm +0 -0
- package/dist/cli/assets/providers/SOURCES.md +21 -0
- package/dist/cli/assets/providers/claude-terminal.png +0 -0
- package/dist/cli/assets/providers/claude-terminal.svg +62 -0
- package/dist/cli/assets/providers/claude.png +0 -0
- package/dist/cli/assets/providers/copilot.png +0 -0
- package/dist/cli/assets/providers/copilot.svg +44 -0
- package/dist/cli/assets/providers/openai-terminal.png +0 -0
- package/dist/cli/assets/providers/openai-terminal.svg +62 -0
- package/dist/cli/assets/providers/openai.png +0 -0
- package/dist/cli/assets/providers/opencode-terminal.png +0 -0
- package/dist/cli/assets/providers/opencode-terminal.svg +62 -0
- package/dist/cli/assets/providers/opencode.png +0 -0
- package/dist/cli/assets/providers/shell.png +0 -0
- package/dist/cli/assets/providers/shell.svg +23 -0
- package/dist/cli/assets/providers/unknown.png +0 -0
- package/dist/cli/assets/providers/unknown.svg +23 -0
- package/dist/cli/index.js +499 -0
- package/dist/cli/index.js.map +61 -0
- package/dist/daemon/index.js +670 -0
- package/dist/daemon/index.js.map +1475 -0
- package/dist/hooks/claude.js +6 -0
- package/dist/hooks/claude.js.map +11 -0
- package/dist/hooks/codex.js +10 -0
- package/dist/hooks/codex.js.map +11 -0
- package/dist/mcp/index.js +100 -0
- package/dist/mcp/index.js.map +231 -0
- package/dist/oc/index.js +21 -0
- package/dist/oc/index.js.map +10 -0
- package/package.json +26 -20
- package/src/postinstall.cjs +11 -0
- package/src/api/docs/sessions.keys.ts +0 -6
- package/src/api/docs/sessions.ts +0 -81
- package/src/api/docs/system.keys.ts +0 -5
- package/src/api/docs/system.ts +0 -66
- package/src/api/docs/usage.keys.ts +0 -3
- package/src/api/docs/usage.ts +0 -24
- package/src/api/docs/webhooks.keys.ts +0 -5
- package/src/api/docs/webhooks.ts +0 -78
- package/src/api/index.ts +0 -18
- package/src/api/lib/auth.ts +0 -43
- package/src/api/lib/errors.ts +0 -28
- package/src/api/lib/route.ts +0 -18
- package/src/api/models/claude.ts +0 -4
- package/src/api/models/codex.ts +0 -4
- package/src/api/models/opencode.ts +0 -11
- package/src/api/routes/sessions.ts +0 -47
- package/src/api/routes/system.ts +0 -103
- package/src/api/routes/usage.ts +0 -15
- package/src/api/routes/webhooks/claude.ts +0 -141
- package/src/api/routes/webhooks/codex.ts +0 -175
- package/src/api/routes/webhooks/opencode.ts +0 -111
- package/src/api/routes.ts +0 -93
- package/src/api/schemas/common.ts +0 -21
- package/src/api/schemas/sessions.ts +0 -72
- package/src/api/schemas/usage.ts +0 -50
- package/src/api/schemas/webhooks/claude.ts +0 -32
- package/src/api/schemas/webhooks/codex.ts +0 -34
- package/src/api/schemas/webhooks/opencode.ts +0 -29
- package/src/api/services/claude-session.ts +0 -9
- package/src/api/services/codex-session.ts +0 -8
- package/src/api/services/opencode-session.ts +0 -73
- package/src/classifier.ts +0 -206
- package/src/cli/commands.ts +0 -632
- package/src/cli/prompt.ts +0 -44
- package/src/daemon/cli.ts +0 -27
- package/src/daemon/collectors/claude/README.md +0 -108
- package/src/daemon/collectors/claude/collector.ts +0 -423
- package/src/daemon/collectors/claude/discovery.ts +0 -148
- package/src/daemon/collectors/claude/hooks.ts +0 -181
- package/src/daemon/collectors/claude/index.ts +0 -8
- package/src/daemon/collectors/claude/jsonl.ts +0 -85
- package/src/daemon/collectors/claude/transcript.ts +0 -246
- package/src/daemon/collectors/codex/README.md +0 -147
- package/src/daemon/collectors/codex/collector.ts +0 -661
- package/src/daemon/collectors/codex/discovery.ts +0 -104
- package/src/daemon/collectors/codex/hooks.ts +0 -179
- package/src/daemon/collectors/codex/index.ts +0 -7
- package/src/daemon/collectors/codex/jsonl.ts +0 -108
- package/src/daemon/collectors/codex/transcript.ts +0 -299
- package/src/daemon/collectors/git.ts +0 -295
- package/src/daemon/collectors/opencode/README.md +0 -106
- package/src/daemon/collectors/opencode/collector.ts +0 -545
- package/src/daemon/collectors/opencode/discovery.ts +0 -257
- package/src/daemon/collectors/opencode/index.ts +0 -5
- package/src/daemon/collectors/opencode/session-builder.ts +0 -59
- package/src/daemon/collectors/opencode-db.ts +0 -282
- package/src/daemon/collectors/process.ts +0 -201
- package/src/daemon/collectors/tmux/README.md +0 -128
- package/src/daemon/collectors/tmux/collector.ts +0 -472
- package/src/daemon/collectors/tmux/enrichment.ts +0 -241
- package/src/daemon/collectors/tmux/index.ts +0 -4
- package/src/daemon/collectors/tmux/parse.ts +0 -128
- package/src/daemon/collectors/usage.ts +0 -193
- package/src/daemon/index.ts +0 -207
- package/src/daemon/scheduler.ts +0 -86
- package/src/daemon/store.ts +0 -588
- package/src/detect.ts +0 -143
- package/src/hooks/claude.ts +0 -596
- package/src/hooks/codex.ts +0 -517
- package/src/legacy/classifier.ts +0 -215
- package/src/legacy/detect.ts +0 -143
- package/src/mcp/client-server.ts +0 -21
- package/src/mcp/http-handler.ts +0 -126
- package/src/mcp/index.ts +0 -61
- package/src/mcp/resources/config-current.ts +0 -19
- package/src/mcp/resources/index.ts +0 -11
- package/src/mcp/resources/sessions-active.ts +0 -19
- package/src/mcp/resources/sessions-all.ts +0 -19
- package/src/mcp/schemas/sessions.ts +0 -3
- package/src/mcp/server.ts +0 -17
- package/src/mcp/services/api-adapter.ts +0 -48
- package/src/mcp/services/data-source.ts +0 -22
- package/src/mcp/services/store-adapter.ts +0 -40
- package/src/mcp/tools/get-active-sessions.ts +0 -16
- package/src/mcp/tools/get-session-children.ts +0 -24
- package/src/mcp/tools/get-session-messages.ts +0 -24
- package/src/mcp/tools/get-session.ts +0 -23
- package/src/mcp/tools/index.ts +0 -15
- package/src/mcp/tools/list-sessions.ts +0 -16
- package/src/neo-blessed.d.ts +0 -4
- package/src/oc/index.ts +0 -302
- package/src/service/manager.ts +0 -284
- package/src/shared/config.ts +0 -478
- package/src/shared/ipc.ts +0 -80
- package/src/shared/logger.ts +0 -248
- package/src/shared/paths.ts +0 -73
- package/src/shared/platform.ts +0 -110
- package/src/shared/session-view.ts +0 -241
- package/src/shared/types.ts +0 -299
- package/src/shared/utils.ts +0 -339
- package/src/tui/app.ts +0 -920
- package/src/tui/client.ts +0 -149
- package/src/tui/index.ts +0 -217
- package/src/types.ts +0 -113
- package/src/usage/README.md +0 -323
- package/src/usage/api.ts +0 -99
- package/src/usage/client.ts +0 -3
- package/src/usage/clients/anthropic-oauth-usage.ts +0 -178
- package/src/usage/clients/anthropic-web-usage.ts +0 -245
- package/src/usage/clients/claude-cli-probe.ts +0 -187
- package/src/usage/clients/codex-oauth-usage.ts +0 -113
- package/src/usage/clients/opencode-go-usage.ts +0 -441
- package/src/usage/index.ts +0 -20
- package/src/usage/mappers.ts +0 -273
- package/src/usage/planner.ts +0 -54
- package/src/usage/providers/claude.ts +0 -113
- package/src/usage/providers/codex.ts +0 -34
- package/src/usage/providers/opencode-go.ts +0 -37
- package/src/usage/resolver.ts +0 -4
- package/src/usage/resolvers/browser-cookies.ts +0 -470
- package/src/usage/resolvers/claude-auth.ts +0 -108
- package/src/usage/resolvers/claude-cli.ts +0 -24
- package/src/usage/resolvers/claude-desktop-auth.ts +0 -160
- package/src/usage/resolvers/claude-web.ts +0 -16
- package/src/usage/resolvers/codex-auth.ts +0 -117
- package/src/usage/resolvers/opencode-go-web.ts +0 -14
- package/src/usage/types.ts +0 -190
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
# Codex Collector
|
|
2
|
-
|
|
3
|
-
This module provides session discovery and real-time state tracking for OpenAI Codex CLI.
|
|
4
|
-
|
|
5
|
-
## Architecture
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
~/.codex/sessions/YYYY/MM/DD/*.jsonl ~/.codex/archived_sessions/*.jsonl
|
|
9
|
-
│ │
|
|
10
|
-
│ │
|
|
11
|
-
▼ ▼
|
|
12
|
-
┌──────────────┐ ┌──────────────┐
|
|
13
|
-
│ discovery │ discoverTranscripts() │ hooks │ readHookData()
|
|
14
|
-
│ │ │ │
|
|
15
|
-
└──────┬───────┘ └──────┬───────┘
|
|
16
|
-
│ │
|
|
17
|
-
│ │
|
|
18
|
-
▼ │
|
|
19
|
-
┌──────────────┐ │
|
|
20
|
-
│ jsonl │ parseJsonlFile() │
|
|
21
|
-
└──────┬───────┘ │
|
|
22
|
-
│ │
|
|
23
|
-
▼ │
|
|
24
|
-
┌──────────────┐ │
|
|
25
|
-
│ transcript │ extractMeta() │
|
|
26
|
-
│ │ (no state inference) │
|
|
27
|
-
└──────┬───────┘ │
|
|
28
|
-
│ │
|
|
29
|
-
└────────────┬───────────────────────────┘
|
|
30
|
-
│
|
|
31
|
-
▼
|
|
32
|
-
┌─────────────────────────────────┐
|
|
33
|
-
│ collector.ts │
|
|
34
|
-
│ │
|
|
35
|
-
│ ┌──────────────┐ ┌──────────┐ │
|
|
36
|
-
│ │ 30s poll │ │ fs.watch │ │
|
|
37
|
-
│ │ run() │ │ hooksDir │ │
|
|
38
|
-
│ └──────┬───────┘ └────┬─────┘ │
|
|
39
|
-
│ │ │ │
|
|
40
|
-
│ └──────┬────────┘ │
|
|
41
|
-
│ │ │
|
|
42
|
-
│ ▼ │
|
|
43
|
-
│ processTranscript() │
|
|
44
|
-
│ │ │
|
|
45
|
-
│ │ ┌──────────────┴─────────────┐
|
|
46
|
-
│ └──│ mergeHookIntoModel() │
|
|
47
|
-
│ │ (if hook newer than transcript)│
|
|
48
|
-
│ └──────────────────────────────┘
|
|
49
|
-
│ │ │
|
|
50
|
-
│ ▼ │
|
|
51
|
-
│ store.upsertSession() │
|
|
52
|
-
│ store.syncChildSessionIds() │
|
|
53
|
-
└─────────────────────────────────┘
|
|
54
|
-
│
|
|
55
|
-
▼
|
|
56
|
-
DaemonStore ──► /api/events SSE ──► TUI
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
## Modules
|
|
60
|
-
|
|
61
|
-
| File | Responsibility | Key Exports |
|
|
62
|
-
|------|-------------|-------------|
|
|
63
|
-
| `discovery.ts` | Scan `~/.codex/sessions/YYYY/MM/DD/*.jsonl` and `~/.codex/archived_sessions/*.jsonl`; respect `$CODEX_HOME` | `discoverTranscripts()`, `getCodexDir()` |
|
|
64
|
-
| `jsonl.ts` | Read JSONL tail with byte-size limits; parse lines into typed entries | `parseJsonlFile()`, `readTextTail()`, `CodexJsonlEntry` |
|
|
65
|
-
| `transcript.ts` | Extract session metadata from JSONL (`session_meta`, `turn_context`, `token_count`). No state inference. | `extractMeta()`, `CodexTranscriptMeta` |
|
|
66
|
-
| `hooks.ts` | Read/validate hook JSON files; merge hook data into a session model; merge codex metadata without overwriting existing fields | `readHookData()`, `mergeHookIntoModel()`, `mergeCodexMeta()`, `isHookNewer()`, `getHookTime()`, `isValidHookData()`, `CodexHookFileData` |
|
|
67
|
-
| `collector.ts` | Orchestrate discovery, transcript watching, hook watching, deduplication, and store writes | `CodexCollector` (implements `Collector`) |
|
|
68
|
-
| `index.ts` | Public re-exports | `CodexCollector`, `extractMeta` |
|
|
69
|
-
|
|
70
|
-
## JSONL Format
|
|
71
|
-
|
|
72
|
-
Codex JSONL files contain three processed line types:
|
|
73
|
-
|
|
74
|
-
- `session_meta` — session identity and fork lineage
|
|
75
|
-
- `turn_context` — active model slug
|
|
76
|
-
- `event_msg` with `payload.type === "token_count"` — token usage
|
|
77
|
-
|
|
78
|
-
No conversational content is parsed (format is unstable).
|
|
79
|
-
|
|
80
|
-
## Hook Requirement
|
|
81
|
-
|
|
82
|
-
Hooks are **required** for real-time state. Without hooks:
|
|
83
|
-
|
|
84
|
-
- Sessions are discovered from JSONL files
|
|
85
|
-
- State is always `idle`
|
|
86
|
-
- `detectionSource` is `"codex-transcript"`
|
|
87
|
-
|
|
88
|
-
With hooks (`codex.hooksEnabled: true`):
|
|
89
|
-
|
|
90
|
-
- State is derived from Codex lifecycle events (`SessionStart`, `PreToolUse`, `PermissionRequest`, `PostToolUse`, `UserPromptSubmit`, `Stop`)
|
|
91
|
-
- `detectionSource` is `"codex-hook"`
|
|
92
|
-
- `turn_id` is captured for turn-level tracking
|
|
93
|
-
|
|
94
|
-
## Install Hooks
|
|
95
|
-
|
|
96
|
-
```bash
|
|
97
|
-
scrylog codex hooks install
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
This writes `~/.codex/hooks.json` with entries for all 6 Codex hook events pointing to `scrylog-codex-hook`.
|
|
101
|
-
|
|
102
|
-
## Hook Merge Priority
|
|
103
|
-
|
|
104
|
-
When both transcript and hook data exist, the collector uses this priority:
|
|
105
|
-
|
|
106
|
-
1. **Hook newer** (`hookSeq` or `hookEventTime` >= existing): hook data wins for `state`, `hasAttention`, `summary`, `activeTool`
|
|
107
|
-
2. **Hook older**: transcript data wins (except `codex` metadata merged via `mergeCodexMeta`)
|
|
108
|
-
3. **Hook-managed session** (`detectionSource === "codex-hook"`): transcript can only fill missing metadata (e.g. `transcriptPath`), never override state
|
|
109
|
-
|
|
110
|
-
## State Derivation Rules
|
|
111
|
-
|
|
112
|
-
| Event | State | Reason |
|
|
113
|
-
|-------|-------|--------|
|
|
114
|
-
| `SessionStart` | `idle` | Session just started |
|
|
115
|
-
| `UserPromptSubmit` | `working` | User submitted a prompt, Codex is working |
|
|
116
|
-
| `PreToolUse` | `working` | Codex is about to use a tool |
|
|
117
|
-
| `PermissionRequest` | `waiting-input` | Codex is waiting for user permission |
|
|
118
|
-
| `PostToolUse` | `working` | Tool completed, Codex continues |
|
|
119
|
-
| `Stop` with `stop_hook_active: true` | `working` | Codex will continue automatically |
|
|
120
|
-
| `Stop` with `stop_hook_active: false` | `idle` | Session ended |
|
|
121
|
-
|
|
122
|
-
## Configuration
|
|
123
|
-
|
|
124
|
-
```json
|
|
125
|
-
{
|
|
126
|
-
"codex": {
|
|
127
|
-
"codexDir": "/path/to/.codex",
|
|
128
|
-
"hooksEnabled": true,
|
|
129
|
-
"hooksDir": "/tmp/scrylog-codex-hooks"
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
## Interactions
|
|
135
|
-
|
|
136
|
-
| Component | How |
|
|
137
|
-
|-----------|-----|
|
|
138
|
-
| `GitCollector` | Resolves `currentPath` → `project` when hooks/transcript provide a directory |
|
|
139
|
-
| `DaemonStore` | Upserts sessions; clears old bindings via `syncChildSessionIds()` |
|
|
140
|
-
| `TmuxCollector` | Reads `@codex-session` pane option for authoritative pane→session linking |
|
|
141
|
-
| `Scheduler` | Calls `start()` → sets up `30s` discovery interval + `5s` fallback re-read |
|
|
142
|
-
| `TUI` | Receives updates via SSE from the store |
|
|
143
|
-
|
|
144
|
-
## Detection Sources Produced
|
|
145
|
-
|
|
146
|
-
- `"codex-transcript"` — session discovered from `.jsonl` file, state is `idle`
|
|
147
|
-
- `"codex-hook"` — session discovered/enriched from hook JSON, state is authoritative from Codex CLI directly
|