clitrigger 0.2.14 → 0.2.16
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 +50 -76
- package/README_KR.md +50 -74
- package/dist/client/assets/index-2mYmwdkH.css +32 -0
- package/dist/client/assets/index-CZPlygtk.js +852 -0
- package/dist/client/index.html +2 -2
- package/dist/server/db/queries.d.ts +38 -0
- package/dist/server/db/queries.d.ts.map +1 -1
- package/dist/server/db/queries.js +92 -0
- package/dist/server/db/queries.js.map +1 -1
- package/dist/server/db/schema.d.ts.map +1 -1
- package/dist/server/db/schema.js +23 -0
- package/dist/server/db/schema.js.map +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +2 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/lib/jira-client.d.ts +18 -0
- package/dist/server/lib/jira-client.d.ts.map +1 -0
- package/dist/server/lib/jira-client.js +38 -0
- package/dist/server/lib/jira-client.js.map +1 -0
- package/dist/server/lib/native-picker.d.ts +2 -0
- package/dist/server/lib/native-picker.d.ts.map +1 -0
- package/dist/server/lib/native-picker.js +161 -0
- package/dist/server/lib/native-picker.js.map +1 -0
- package/dist/server/plugins/jira/router.d.ts.map +1 -1
- package/dist/server/plugins/jira/router.js +6 -14
- package/dist/server/plugins/jira/router.js.map +1 -1
- package/dist/server/routes/favorites.d.ts.map +1 -1
- package/dist/server/routes/favorites.js +9 -0
- package/dist/server/routes/favorites.js.map +1 -1
- package/dist/server/routes/images.d.ts +4 -0
- package/dist/server/routes/images.d.ts.map +1 -1
- package/dist/server/routes/images.js +114 -1
- package/dist/server/routes/images.js.map +1 -1
- package/dist/server/routes/personal.d.ts +3 -0
- package/dist/server/routes/personal.d.ts.map +1 -0
- package/dist/server/routes/personal.js +313 -0
- package/dist/server/routes/personal.js.map +1 -0
- package/dist/server/services/svn-manager.js +3 -3
- package/dist/server/services/svn-manager.js.map +1 -1
- package/electron/main.cjs +15 -6
- package/package.json +1 -1
- package/dist/client/assets/index-C582uW8d.js +0 -820
- package/dist/client/assets/index-DwSQbbDf.css +0 -32
package/README.md
CHANGED
|
@@ -6,17 +6,15 @@
|
|
|
6
6
|
<img alt="CLITrigger" src="https://raw.githubusercontent.com/HyperAITeam/CLITrigger/main/src/client/public/logo.svg" width="360">
|
|
7
7
|
</picture>
|
|
8
8
|
|
|
9
|
-
**AI
|
|
9
|
+
**Your AI Development Command Center**
|
|
10
10
|
|
|
11
|
-
*
|
|
11
|
+
*Plan your day, delegate to parallel AI agents, review every diff — in one place.*
|
|
12
12
|
|
|
13
13
|
<p align="center">
|
|
14
|
-
<a href="https://github.com/
|
|
15
|
-
<a href="https://github.com/
|
|
14
|
+
<a href="https://github.com/HyperAITeam/CLITrigger/blob/main/README.md">English</a> ·
|
|
15
|
+
<a href="https://github.com/HyperAITeam/CLITrigger/blob/main/README_KR.md">한국어</a>
|
|
16
16
|
</p>
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
18
|
[](LICENSE)
|
|
21
19
|
[](https://www.npmjs.com/package/clitrigger)
|
|
22
20
|
[](https://www.npmjs.com/package/clitrigger)
|
|
@@ -30,11 +28,11 @@
|
|
|
30
28
|
|
|
31
29
|
---
|
|
32
30
|
|
|
33
|
-
> ###
|
|
31
|
+
> ### Plan it. Delegate it. Review it.
|
|
34
32
|
>
|
|
35
|
-
>
|
|
33
|
+
> CLITrigger brings your day's work and your AI agents into one place. Capture what needs doing — in a personal calendar, a planner, or a project knowledge wiki — then hand it to multiple AI coding agents (**Claude Code · Codex · Gemini CLI**) running in parallel, each in its own isolated git worktree.
|
|
36
34
|
>
|
|
37
|
-
>
|
|
35
|
+
> While you sleep (or focus elsewhere), they burn through your token quota. Next morning you sit down, review the stack of diffs, and **accept / reject / merge**.
|
|
38
36
|
>
|
|
39
37
|
> **Parallel AI execution — without losing context.**
|
|
40
38
|
|
|
@@ -51,70 +49,32 @@ Boris Cherny, creator of Claude Code, emphasizes **parallelism** as the key to A
|
|
|
51
49
|
|
|
52
50
|
At the same time, most AI services have **rate limits** — you can burn through your daily quota by noon and be stuck waiting until midnight.
|
|
53
51
|
|
|
54
|
-
|
|
52
|
+
And as AI writes more of the code, the developer's real job becomes **capturing intent and reviewing output** — which falls apart the moment your context is scattered across sticky notes, terminals, and a dozen browser tabs.
|
|
53
|
+
|
|
54
|
+
CLITrigger solves all three:
|
|
55
55
|
|
|
56
56
|
- **Right now** — Multiple tasks run in isolated git worktrees, with Claude / Gemini / Codex executing in parallel
|
|
57
57
|
- **Without hitting limits** — Schedule tasks for off-peak hours to make the most of your token quota
|
|
58
|
+
- **Without losing the thread** — Capture in one place (calendar, planner, wiki), delegate, and review every diff holistically
|
|
58
59
|
- **Better output** — Multiple AI agents debate and review before implementation, producing higher-quality results than a single AI working alone
|
|
59
60
|
|
|
60
61
|
---
|
|
61
62
|
|
|
62
|
-
##
|
|
63
|
-
|
|
64
|
-
```
|
|
65
|
-
[Write TODOs in the browser]
|
|
66
|
-
↓
|
|
67
|
-
┌──────────────────────────────────────────────────────────────┐
|
|
68
|
-
│ TODO 1: Implement login → worktree/feature-login → Claude CLI → auto-commit │
|
|
69
|
-
│ TODO 2: Signup page → worktree/feature-signup → Gemini CLI → auto-commit │
|
|
70
|
-
│ TODO 3: Dashboard layout → worktree/feature-dashboard → Claude CLI → auto-commit │
|
|
71
|
-
└──────────────────────────────────────────────────────────────┘
|
|
72
|
-
↓
|
|
73
|
-
[Live log streaming → Review diffs → Merge to main]
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
Each TODO runs in its **own isolated git worktree** — no conflicts, separate branches, independent commit history. You review the results and decide what to merge.
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
## The Workflow — Hand Off, Then Review
|
|
81
|
-
|
|
82
|
-
**CLITrigger is built for "delegate and review" — not for staring at a progress bar.**
|
|
83
|
-
|
|
84
|
-
### Scenario 1: The AI night shift — hand off at bedtime, pick up in the morning
|
|
85
|
-
Before bed, dump unfinished work and sudden ideas into the Planner, convert them into TODOs or scheduled runs, then close the laptop. While you sleep, Claude / Gemini / Codex burn through your token quota in parallel worktrees. Next morning, sit down with coffee and review the diffs holistically — accept what makes sense, reject what doesn't, merge what's ready.
|
|
86
|
-
|
|
87
|
-
**Your tokens never sleep. Neither does your codebase.**
|
|
88
|
-
|
|
89
|
-
### Scenario 2: The background worker
|
|
90
|
-
Stay focused on your main work while CLITrigger handles side quests in the background. Refactors, test coverage, doc updates, speculative features — the stuff you never have time for — gets done while you ship the critical path. Browser notifications (or phone alerts via Cloudflare Tunnel) surface completed tasks only when they need your attention.
|
|
91
|
-
|
|
92
|
-
### The Core Loop
|
|
63
|
+
## Features
|
|
93
64
|
|
|
94
|
-
|
|
95
|
-
Evening Overnight / Sidelined Morning / Break
|
|
96
|
-
─────────── ─────────────────────── ────────────────────
|
|
97
|
-
Capture → AI executes in parallel → Review holistically
|
|
98
|
-
• Planner • Worktree isolation • Diff by diff
|
|
99
|
-
• TODOs • Rate-limit auto-recovery • Log by log
|
|
100
|
-
• Schedules • Multi-agent discussion • Accept / Reject / Merge
|
|
101
|
-
```
|
|
65
|
+
CLITrigger spans four layers — **plan & organize** what needs doing, **delegate** it to AI, **review & ship** the results, and **access** it from anywhere.
|
|
102
66
|
|
|
103
|
-
|
|
67
|
+
### 🗂 Plan & Organize
|
|
104
68
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
## Features
|
|
108
|
-
|
|
109
|
-
### Wiki (Karpathy LLM-Wiki Pattern)
|
|
110
|
-
A per-project knowledge graph (nodes + typed edges) that you curate once and selectively inject into TODO and discussion prompts. Stop pasting the same domain context every run. Toggle between List and Graph views (`@xyflow/react` + dagre auto-layout, drag-to-connect edges, cycle guards on `precedes`/`refines`), pick `None` / `All` / `Selected` / **`Auto`** per task — `Auto` runs a one-shot LLM retrieval right before each call to pick only the relevant entries, saving tokens. Preview the exact `<long_term_memory>` block (with char/token estimates) before sending; **export DB → `.clitrigger/wiki/<entity>/<slug>.md` Markdown** + Disk diff to keep the wiki alive in git or Obsidian. Lint surfaces duplicates / orphans / stale entries with inline fix actions (merge / delete / link); the Activity sub-tab logs ingest / lint / retrieve / merge events with severity. CLI-agnostic — Claude, Gemini, and Codex all see identical context with no adapter changes.
|
|
69
|
+
#### My Schedule
|
|
70
|
+
A global, project-independent personal hub. One calendar — month / week / day / table views — overlays four sources on a single grid: your own dated **memos**, **schedules** across every project, **planner due dates**, and **Jira issues** assigned to you. Capture quick notes (optional title, body, pasted images, color tags), filter by tag, **drag-resize** the calendar rows, **hover a crowded day** to expand it into a full popover, and **bulk-clean memos by date range** for housekeeping. Connect Jira once (site URL + email + API token, stored server-side, the token never echoed back) to overlay your assigned issues as blue chips and import them into a memo or straight into a project planner. Read-only project / Jira chips deep-link back to their source.
|
|
111
71
|
|
|
112
72
|
<div align="center">
|
|
113
|
-
<img src="https://raw.githubusercontent.com/HyperAITeam/CLITrigger/main/docs/images/screenshot-
|
|
114
|
-
<p><em>
|
|
73
|
+
<img src="https://raw.githubusercontent.com/HyperAITeam/CLITrigger/main/docs/images/screenshot-agenda.png" alt="My Schedule — personal calendar overlaying memos, schedules, planner & Jira" width="800">
|
|
74
|
+
<p><em>One calendar overlaying personal memos, cross-project schedules, planner due dates, and assigned Jira issues</em></p>
|
|
115
75
|
</div>
|
|
116
76
|
|
|
117
|
-
|
|
77
|
+
#### Planner
|
|
118
78
|
A lightweight task planner separate from TODOs — capture ideas, attach images, tag with colors, sort by any column. Convert any planner item into a TODO or a schedule in one click. Markdown export/import (status sections + GFM checkboxes + HTML-comment metadata) lets you move plans across machines or share via GitHub / Obsidian / any plain Markdown viewer. Drop a `.md` file onto the planner card to import.
|
|
119
79
|
|
|
120
80
|
<div align="center">
|
|
@@ -122,18 +82,31 @@ A lightweight task planner separate from TODOs — capture ideas, attach images,
|
|
|
122
82
|
<p><em>Inline editing, color-coded tags, image attachments, and one-click conversion to TODOs or schedules</em></p>
|
|
123
83
|
</div>
|
|
124
84
|
|
|
125
|
-
|
|
85
|
+
#### Vault (File-based Knowledge)
|
|
86
|
+
An Obsidian-style, file-based knowledge vault per project. CLITrigger auto-scans the `.md` / `.html` files in your project root, parses `[[wikilinks]]` and YAML frontmatter (`title`, `tags`), and builds a relationship graph — files *are* the nodes, so there's no separate ingest step. Browse them in the **Files** tab with inline preview, then flip the graph toggle for a ReactFlow force-directed view (tag-based node colors, `.vaultignore` to exclude paths). The markdown preview is interactive: Find/Replace, ephemeral pen/highlighter annotations with undo/redo, and task-checkbox toggles that round-trip `- [ ]` / `- [x]` straight to disk. Inject it into any task / session / discussion prompt — `None` / **`Auto`** (server picks files matching the task text) / `All` / `Selected`, with an **Include linked** toggle that pulls in 1-hop `[[wikilink]]` neighbors (each row previews how many will be added). Serialized as a `<long_term_memory>` wrapper with `<vault_file type="md|html">` blocks — CLI-agnostic, so Claude, Gemini, and Codex all see identical context.
|
|
87
|
+
|
|
88
|
+
<div align="center">
|
|
89
|
+
<img src="https://raw.githubusercontent.com/HyperAITeam/CLITrigger/main/docs/images/screenshot-vault.png" alt="Vault — Obsidian-style file-based knowledge with a link graph" width="800">
|
|
90
|
+
<p><em>The Vault tab — browse project markdown with inline preview and a force-directed wikilink graph, then selectively inject files into prompts</em></p>
|
|
91
|
+
</div>
|
|
92
|
+
|
|
93
|
+
#### Favorites Launcher
|
|
94
|
+
Register frequently-used external tools (executables, shell commands, URLs/folders) in a global Favorites section in the sidebar. Fire-and-forget one-click execution from anywhere in CLITrigger — reduces context-switching to the OS shell for environment setup, IDE launches, or external service access.
|
|
95
|
+
|
|
96
|
+
### 🤖 Delegate to AI
|
|
97
|
+
|
|
98
|
+
#### Parallel Worktree Execution (Tasks)
|
|
126
99
|
Each TODO automatically gets its own git worktree. Claude / Gemini / Codex CLIs execute simultaneously in parallel. Dependency chains let you automatically trigger follow-up tasks and branch merges once prerequisites complete. Per-project worktree toggle plus per-TODO tri-state override (inherit / force-worktree / force-main) give you fine-grained control — main-branch tasks are automatically serialized to avoid conflicts. Drag-and-drop reordering and an iOS-style stack mode keep long task lists manageable.
|
|
127
100
|
|
|
128
|
-
|
|
129
|
-
Long-lived interactive CLI sessions as first-class entities — bring up a Claude / Gemini / Codex session in a floating draggable window. **VS Code-style window grouping and docking**: drag a tab onto another window for a 5-zone diamond (top/bottom/left/right/center) to either split into resizable panes or merge as tabs, plus **Aero-style edge snapping, sticky window-to-window snapping, and a minimize-to-dock-tray** flow — keeps multi-session screens tidy. **xterm.js rendering** shows ANSI colors, cursor control, and TUI box-drawing identically to a native terminal. PTY spawns at the exact viewport dimensions, with **per-session font size** (A−/A+ buttons or Ctrl/Cmd ±) for readability. Per-session wiki injection plus a **Send/Skip pre-flight banner** lets you review the auto-generated initial prompt before it hits the model. Inline edit button updates non-running sessions in place. iOS Safari mobile Hangul IME is composed via a client-side dubeolsik composer. Window geometry, group tree, and tab arrangement persist and survive tab navigation; works on desktop and mobile (fullscreen on small screens).
|
|
101
|
+
#### Interactive Sessions
|
|
102
|
+
Long-lived interactive CLI sessions as first-class entities — bring up a Claude / Gemini / Codex session in a floating draggable window. **VS Code-style window grouping and docking**: drag a tab onto another window for a 5-zone diamond (top/bottom/left/right/center) to either split into resizable panes or merge as tabs, plus **Aero-style edge snapping, sticky window-to-window snapping, and a minimize-to-dock-tray** flow — keeps multi-session screens tidy. Pop a window out into a **separate OS window** (multi-window), and the session list flags it with a badge + a one-click "bring back to the main window" recall — popped windows also appear as chips in the bottom dock tray. **xterm.js rendering** shows ANSI colors, cursor control, and TUI box-drawing identically to a native terminal. PTY spawns at the exact viewport dimensions, with **per-session font size** (A−/A+ buttons or Ctrl/Cmd ±) for readability. Per-session wiki injection plus a **Send/Skip pre-flight banner** lets you review the auto-generated initial prompt before it hits the model. Inline edit button updates non-running sessions in place. iOS Safari mobile Hangul IME is composed via a client-side dubeolsik composer. Window geometry, group tree, and tab arrangement persist and survive tab navigation; works on desktop and mobile (fullscreen on small screens).
|
|
130
103
|
|
|
131
104
|
<div align="center">
|
|
132
105
|
<img src="https://raw.githubusercontent.com/HyperAITeam/CLITrigger/main/docs/images/screenshot-sessions.png" alt="Sessions — Multi-CLI floating windows with VS Code-style docking" width="800">
|
|
133
106
|
<p><em>Claude, Gemini, and Codex sessions docked side-by-side via VS Code-style window grouping — each running in its own worktree branch</em></p>
|
|
134
107
|
</div>
|
|
135
108
|
|
|
136
|
-
|
|
109
|
+
#### Multi-Agent Discussion
|
|
137
110
|
AI agents with different roles — architect, developer, reviewer — debate in rounds before implementation. The resulting design is far more robust than a single AI working in isolation. Agents flagged as **Implementers** (`can_implement`) can commit code during their regular turns, while a final implementation round stitches everything together. Auto-implement triggers the code-writing round automatically on consensus. Or hit **Send to Planner** on a finished discussion to have the transcript distilled into curated planner items via a one-shot LLM extraction — review and edit before persisting.
|
|
138
111
|
|
|
139
112
|
<div align="center">
|
|
@@ -141,7 +114,7 @@ AI agents with different roles — architect, developer, reviewer — debate in
|
|
|
141
114
|
<p><em>Multiple AI agents with different roles debating in the Discussion view</em></p>
|
|
142
115
|
</div>
|
|
143
116
|
|
|
144
|
-
|
|
117
|
+
#### Scheduled Execution
|
|
145
118
|
Schedule tasks for off-peak hours to avoid rate limits. Supports recurring cron schedules, one-time scheduled runs, and auto-recovery scheduling on rate-limit events — if the CLI hits a token quota, CLITrigger schedules a retry for the exact reset time.
|
|
146
119
|
|
|
147
120
|
<div align="center">
|
|
@@ -149,7 +122,15 @@ Schedule tasks for off-peak hours to avoid rate limits. Supports recurring cron
|
|
|
149
122
|
<p><em>Cron-based recurring and one-time scheduled task execution</em></p>
|
|
150
123
|
</div>
|
|
151
124
|
|
|
152
|
-
|
|
125
|
+
#### Multi-CLI & Sandbox Mode
|
|
126
|
+
Select Claude / Gemini / Codex per project, per TODO, or per discussion agent. Strict sandbox mode restricts CLI file access to the worktree directory using each CLI's native sandboxing (Claude settings.json, Codex `--full-auto`, Gemini prompt-level restriction).
|
|
127
|
+
|
|
128
|
+
### 🔍 Review & Ship
|
|
129
|
+
|
|
130
|
+
#### Morning Review Queue
|
|
131
|
+
A single cross-project triage screen for the "delegate overnight, review next morning" loop. Aggregates every recent TODO across all your projects into a card stack with project label, last-assistant summary, token totals, diff stats, and a server-classified risk badge (low / medium / high based on status and diff size). Keyboard-only operation: `j`/`k` to navigate, `Enter` for the embedded log viewer, `Space` / `→` to expand changed files and diffs inline, `m` to merge, `d` to discard, `Esc` to close — N todos become O(N) keypresses. Time-window selector (12h / 24h / 7d), filter chips (All / Risky / Quick wins / Failed), and a sticky token ribbon with CLI breakdown. Inline diffs survive worktree cleanup by falling back through branch ref → `master`/`main`.
|
|
132
|
+
|
|
133
|
+
#### Built-in Git Client
|
|
153
134
|
A full Git client lives inside the web UI with a Fork/SourceTree-style layout — a workspace menu switches between **File Status** (staged/unstaged file lists, working-tree diff viewer, commit message + push toggle, Cmd/Ctrl+Enter to commit) and **History** (commit graph, action toolbar, worktree list, VS Code-style branch context menu with checkout / merge / rebase / fetch / pull / push / rename / delete, and a commit detail panel with file-level diff viewer). Every split is user-resizable and persisted to localStorage. Non-ASCII filenames (Korean, CJK, emoji) render correctly in diff and status output.
|
|
154
135
|
|
|
155
136
|
<div align="center">
|
|
@@ -157,7 +138,7 @@ A full Git client lives inside the web UI with a Fork/SourceTree-style layout
|
|
|
157
138
|
<p><em>Commit graph, branch actions, file diffs — all in the browser</em></p>
|
|
158
139
|
</div>
|
|
159
140
|
|
|
160
|
-
|
|
141
|
+
#### Analytics
|
|
161
142
|
Per-project cost and execution stats powered by Recharts — stacked bar chart by CLI tool, donut chart for status distribution, line chart for cost/token trends. Denormalized cost fields in the DB keep aggregation fast even on long histories.
|
|
162
143
|
|
|
163
144
|
<div align="center">
|
|
@@ -165,21 +146,14 @@ Per-project cost and execution stats powered by Recharts — stacked bar chart b
|
|
|
165
146
|
<p><em>Cost and token usage broken down by CLI, status, and over time</em></p>
|
|
166
147
|
</div>
|
|
167
148
|
|
|
168
|
-
|
|
169
|
-
A single cross-project triage screen for the "delegate overnight, review next morning" loop. Aggregates every recent TODO across all your projects into a card stack with project label, last-assistant summary, token totals, diff stats, and a server-classified risk badge (low / medium / high based on status and diff size). Keyboard-only operation: `j`/`k` to navigate, `Enter` for the embedded log viewer, `Space` / `→` to expand changed files and diffs inline, `m` to merge, `d` to discard, `Esc` to close — N todos become O(N) keypresses. Time-window selector (12h / 24h / 7d), filter chips (All / Risky / Quick wins / Failed), and a sticky token ribbon with CLI breakdown. Inline diffs survive worktree cleanup by falling back through branch ref → `master`/`main`.
|
|
170
|
-
|
|
171
|
-
### Live Logs (Chat & Raw)
|
|
149
|
+
#### Live Logs (Chat & Raw)
|
|
172
150
|
WebSocket-based real-time log streaming with two view modes — Chat mode renders assistant messages as markdown with collapsible tool-use rows; Raw mode is a flat terminal view. Multi-round continue reuses the same worktree via the CLI's native `--continue` flag.
|
|
173
151
|
|
|
174
|
-
###
|
|
175
|
-
Select Claude / Gemini / Codex per project, per TODO, or per discussion agent. Strict sandbox mode restricts CLI file access to the worktree directory using each CLI's native sandboxing (Claude settings.json, Codex `--full-auto`, Gemini prompt-level restriction).
|
|
152
|
+
### 🌐 Access Anywhere
|
|
176
153
|
|
|
177
|
-
|
|
154
|
+
#### Remote Access
|
|
178
155
|
Access and control from anywhere via Cloudflare Tunnel. Browser notifications alert you when tasks or discussions complete, so you can walk away and come back. **Route a named tunnel through your own domain** — set Tunnel Name + Custom Hostname in the sidebar ⚙ → Tunnel settings modal, and the displayed URL becomes `https://app.your-domain.com`, sidestepping the browser "dangerous site" warnings that hit `*.trycloudflare.com` / `*.cfargotunnel.com` by inheriting your domain's reputation.
|
|
179
156
|
|
|
180
|
-
### Favorites Launcher
|
|
181
|
-
Register frequently-used external tools (executables, shell commands, URLs/folders) in a global Favorites section in the sidebar. Fire-and-forget one-click execution from anywhere in CLITrigger — reduces context-switching to the OS shell for environment setup, IDE launches, or external service access.
|
|
182
|
-
|
|
183
157
|
---
|
|
184
158
|
|
|
185
159
|
## Tech Stack
|
package/README_KR.md
CHANGED
|
@@ -6,13 +6,13 @@
|
|
|
6
6
|
<img alt="CLITrigger" src="https://raw.githubusercontent.com/HyperAITeam/CLITrigger/main/src/client/public/logo.svg" width="360">
|
|
7
7
|
</picture>
|
|
8
8
|
|
|
9
|
-
**AI
|
|
9
|
+
**AI 개발 커맨드 센터**
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
*하루를 계획하고, 병렬 AI 에이전트에 위임하고, 모든 diff를 리뷰 — 한곳에서.*
|
|
12
12
|
|
|
13
13
|
<p align="center">
|
|
14
|
-
<a href="https://github.com/
|
|
15
|
-
<a href="https://github.com/
|
|
14
|
+
<a href="https://github.com/HyperAITeam/CLITrigger/blob/main/README.md">English</a> ·
|
|
15
|
+
<a href="https://github.com/HyperAITeam/CLITrigger/blob/main/README_KR.md">한국어</a>
|
|
16
16
|
</p>
|
|
17
17
|
|
|
18
18
|
[](LICENSE)
|
|
@@ -28,11 +28,11 @@
|
|
|
28
28
|
|
|
29
29
|
---
|
|
30
30
|
|
|
31
|
-
> ###
|
|
31
|
+
> ### 계획하고. 위임하고. 리뷰한다.
|
|
32
32
|
>
|
|
33
|
-
> AI
|
|
33
|
+
> CLITrigger는 당신의 하루치 작업과 AI 에이전트를 한곳에 모은다. 해야 할 일을 개인 캘린더·플래너·프로젝트 위키에 캡처하고 — 그걸 여러 AI 코딩 에이전트(**Claude Code · Codex · Gemini CLI**)에 넘기면, 각자의 격리된 git worktree에서 병렬로 처리한다.
|
|
34
34
|
>
|
|
35
|
-
>
|
|
35
|
+
> 당신이 자는 동안(혹은 다른 일에 집중하는 동안) AI는 토큰 한도를 끝까지 써가며 일한다. 다음 날 아침 책상에 앉아 쌓인 diff를 보고 **accept / reject / merge**만 하면 된다.
|
|
36
36
|
>
|
|
37
37
|
> **AI를 병렬로 돌리되, 개발자는 맥락을 잃지 않는다.**
|
|
38
38
|
|
|
@@ -49,70 +49,32 @@ Claude Code 제작자 Boris Cherny는 **병렬 실행(Parallelism)** 을 강조
|
|
|
49
49
|
|
|
50
50
|
동시에 많은 AI 서비스는 **시간당 토큰 한도**를 가지고 있다. 낮에 한도를 다 쓰면 밤에 아무것도 못 한다.
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
그리고 AI가 코드를 더 많이 짤수록 개발자의 진짜 역할은 **의도를 캡처하고 결과를 리뷰하는 것**이 된다 — 그런데 그 맥락이 포스트잇·터미널·열두 개의 브라우저 탭에 흩어지는 순간 모든 게 무너진다.
|
|
53
|
+
|
|
54
|
+
CLITrigger는 이 세 가지를 한 번에 해결한다:
|
|
53
55
|
|
|
54
56
|
- **지금 당장** — 여러 작업을 격리된 worktree에서 Claude / Gemini / Codex가 병렬로 처리
|
|
55
57
|
- **한도 걱정 없이** — 새벽, 특정 시각에 예약 실행으로 토큰을 최대한 활용
|
|
58
|
+
- **맥락을 잃지 않고** — 한곳(캘린더·플래너·위키)에 캡처하고, 위임하고, 모든 diff를 통합적으로 리뷰
|
|
56
59
|
- **더 나은 결과** — 여러 AI 에이전트가 서로 토론한 뒤 구현, 혼자 짠 코드보다 품질이 높아진다
|
|
57
60
|
|
|
58
61
|
---
|
|
59
62
|
|
|
60
|
-
##
|
|
61
|
-
|
|
62
|
-
```
|
|
63
|
-
[브라우저에서 TODO 작성]
|
|
64
|
-
↓
|
|
65
|
-
┌────────────────────────────────────────────────────┐
|
|
66
|
-
│ TODO 1: 로그인 기능 구현 → worktree/feature-login → Claude CLI → 자동 커밋 │
|
|
67
|
-
│ TODO 2: 회원가입 페이지 → worktree/feature-signup → Gemini CLI → 자동 커밋 │
|
|
68
|
-
│ TODO 3: 대시보드 레이아웃 → worktree/feature-dashboard → Claude CLI → 자동 커밋 │
|
|
69
|
-
└────────────────────────────────────────────────────┘
|
|
70
|
-
↓
|
|
71
|
-
[실시간 로그 확인 → Diff 보기 → Main에 Merge]
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
각 TODO는 **독립된 git worktree**에서 실행된다. 서로 충돌하지 않고, 각자의 브랜치에서 커밋이 쌓인다. 개발자는 결과를 검토하고 머지 여부를 결정한다.
|
|
75
|
-
|
|
76
|
-
---
|
|
77
|
-
|
|
78
|
-
## 사용 흐름 — 맡겨두고, 나중에 리뷰
|
|
79
|
-
|
|
80
|
-
**CLITrigger는 "위임하고 리뷰"를 위해 설계되었다 — 진행 바를 쳐다보며 기다리는 도구가 아니다.**
|
|
81
|
-
|
|
82
|
-
### 시나리오 1: AI 야간 근무 — 저녁에 맡기고, 아침에 받기
|
|
83
|
-
자기 전에 못다 한 업무나 문득 떠오른 아이디어를 Planner에 던져 넣고, TODO나 예약 실행으로 변환한 뒤 노트북을 닫는다. 당신이 자는 동안 Claude / Gemini / Codex가 병렬 워크트리에서 토큰 한도를 끝까지 써가며 일한다. 다음날 아침 커피 한 잔 들고 책상에 앉아 결과물을 통합적으로 살펴본다 — 마음에 드는 건 accept, 아닌 건 reject, 준비된 건 머지.
|
|
84
|
-
|
|
85
|
-
**당신의 토큰은 잠들지 않는다. 당신의 코드베이스도.**
|
|
86
|
-
|
|
87
|
-
### 시나리오 2: 백그라운드 워커
|
|
88
|
-
메인 작업에 집중하는 동안 CLITrigger가 옆에서 서브 퀘스트를 처리한다. 리팩토링, 테스트 커버리지, 문서 업데이트, 해보고 싶었던 실험적 기능 — 평소 시간이 없어 미뤄둔 일들이 당신이 중요한 경로를 밀고 나가는 동안 끝나 있다. Cloudflare Tunnel + 브라우저 알림으로 작업이 완료되면 알림이 올라오니, 필요한 순간에만 주의를 돌리면 된다.
|
|
89
|
-
|
|
90
|
-
### 핵심 루프
|
|
91
|
-
|
|
92
|
-
```
|
|
93
|
-
저녁 밤새 / 딴 일 하는 동안 아침 / 쉬는 시간
|
|
94
|
-
───────── ──────────────────────── ─────────────────────
|
|
95
|
-
캡처 → AI가 병렬로 실행 → 통합 리뷰
|
|
96
|
-
• Planner • 워크트리 격리 • Diff 하나하나
|
|
97
|
-
• TODO • 한도 초과 자동 복구 • 로그 하나하나
|
|
98
|
-
• 예약 • 다중 AI 토론 • Accept / Reject / Merge
|
|
99
|
-
```
|
|
63
|
+
## 주요 기능
|
|
100
64
|
|
|
101
|
-
CLITrigger
|
|
65
|
+
CLITrigger는 네 개의 계층으로 이루어진다 — 할 일을 **계획·정리**하고, AI에 **위임**하고, 결과를 **리뷰·머지**하고, **어디서나 접속**한다.
|
|
102
66
|
|
|
103
|
-
|
|
67
|
+
### 🗂 계획 · 정리
|
|
104
68
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
### 위키 (Karpathy LLM-Wiki 패턴)
|
|
108
|
-
프로젝트별로 한 번 정리해 두면 TODO와 토론 프롬프트에 골라 주입할 수 있는 노드+엣지 지식 그래프. 매번 같은 도메인 컨텍스트를 붙여넣을 필요가 없다. List / Graph 뷰 토글(`@xyflow/react` + dagre 자동 레이아웃, drag-to-connect 엣지, `precedes`/`refines` 관계는 cycle 차단), todo마다 `None` / `All` / `Selected` / **`Auto`** 모드 선택 — `Auto`는 매 실행 직전 한 번의 LLM 호출로 관련 항목만 자동으로 골라 토큰을 절약한다. 전송 전 `<long_term_memory>` 블록을 char/token 추정치와 함께 미리볼 수 있고, **DB → `.clitrigger/wiki/<entity>/<slug>.md` Markdown 익스포트** + Disk diff로 git/Obsidian과 함께 살릴 수 있다. Lint는 중복/orphan/stale 항목에 인라인 fix 액션(merge / delete / link)을 제공하고, Activity 서브탭이 ingest / lint / retrieve / merge 이벤트를 시간순/severity로 보여준다. CLI-agnostic — Claude / Gemini / Codex 모두 동일한 컨텍스트를 받으며 어댑터 변경이 필요 없다.
|
|
69
|
+
#### 내 일정 (My Schedule)
|
|
70
|
+
프로젝트에 종속되지 않는 전역 개인 허브. 하나의 캘린더(월 / 주 / 일 / 표 뷰)가 네 가지 소스를 한 그리드에 겹쳐 보여준다 — 내 **개인 메모**, 전 프로젝트의 **스케줄**, **플래너 마감일**, 그리고 나에게 할당된 **Jira 이슈**. 빠른 메모(제목은 선택, 본문·붙여넣기 이미지·색상 태그)를 캡처하고, 태그로 필터링하고, 캘린더 행 높이를 **드래그로 조절**하고, 항목이 많은 날을 **잠깐 호버하면** 팝오버로 확대해서 전체를 보고, **기간 단위로 메모를 일괄 정리**할 수 있다. Jira는 한 번만 연결하면(사이트 주소 + 이메일 + API 토큰, 서버에 저장되고 토큰은 응답에 노출되지 않음) 내게 할당된 이슈가 파란 칩으로 겹쳐 보이고, 메모나 프로젝트 플래너로 바로 가져올 수 있다. 읽기 전용 프로젝트 / Jira 칩은 클릭하면 원본으로 딥링크된다.
|
|
109
71
|
|
|
110
72
|
<div align="center">
|
|
111
|
-
<img src="https://raw.githubusercontent.com/HyperAITeam/CLITrigger/main/docs/images/screenshot-
|
|
112
|
-
<p><em
|
|
73
|
+
<img src="https://raw.githubusercontent.com/HyperAITeam/CLITrigger/main/docs/images/screenshot-agenda.png" alt="내 일정 — 개인 메모·스케줄·플래너·Jira를 한 캘린더에" width="800">
|
|
74
|
+
<p><em>개인 메모, 전 프로젝트 스케줄, 플래너 마감일, 내게 할당된 Jira 이슈를 하나의 캘린더에 겹쳐 보기</em></p>
|
|
113
75
|
</div>
|
|
114
76
|
|
|
115
|
-
|
|
77
|
+
#### Planner (플래너)
|
|
116
78
|
TODO와는 별개인 경량 작업 플래너 — 아이디어를 빠르게 적고, 이미지를 첨부하고, 색상 태그로 분류하고, 열 단위로 정렬할 수 있다. 플래너 항목을 한 번의 클릭으로 TODO나 예약 스케줄로 변환할 수 있다. Markdown Export / Import (status 섹션 + GFM 체크박스 + HTML 주석 메타데이터)로 다른 머신에 옮기거나 GitHub / Obsidian / 어떤 Markdown 뷰어에서도 그대로 열어볼 수 있고, `.md` 파일을 카드에 드래그하면 바로 Import된다.
|
|
117
79
|
|
|
118
80
|
<div align="center">
|
|
@@ -120,18 +82,31 @@ TODO와는 별개인 경량 작업 플래너 — 아이디어를 빠르게 적
|
|
|
120
82
|
<p><em>인라인 편집, 컬러 태그, 이미지 첨부, 원클릭 TODO/스케줄 변환</em></p>
|
|
121
83
|
</div>
|
|
122
84
|
|
|
123
|
-
|
|
85
|
+
#### 볼트 (파일 기반 지식)
|
|
86
|
+
프로젝트별 Obsidian 스타일 **파일 기반 지식 볼트**. CLITrigger가 프로젝트 루트의 `.md` / `.html` 파일을 자동 스캔하고, `[[wikilink]]`와 YAML frontmatter(`title`, `tags`)를 파싱해 관계 그래프를 구성한다 — 파일이 곧 노드라 별도 인제스트가 필요 없다. **Files** 탭에서 인라인 미리보기로 탐색하고, 그래프 토글로 ReactFlow force-directed 뷰(태그 기반 노드 색상, `.vaultignore`로 경로 제외)로 전환한다. 마크다운 프리뷰는 정적 뷰어가 아니라 인터랙티브하다 — Find/Replace, 휘발성 펜/형광펜 주석(Undo/Redo), `- [ ]` / `- [x]` 체크박스를 디스크에 바로 round-trip. 그리고 task / session / discussion 프롬프트에 골라 주입한다 — `None` / **`Auto`**(태스크 텍스트와 매칭되는 파일 자동 선택) / `All` / `Selected`, **Include linked** 토글로 `[[wikilink]]` 1-hop 이웃까지 포함(행마다 추가될 개수 미리보기). `<long_term_memory>` 래퍼 + `<vault_file type="md|html">` 블록으로 직렬화 — CLI-agnostic이라 Claude / Gemini / Codex 모두 동일한 컨텍스트를 받는다.
|
|
87
|
+
|
|
88
|
+
<div align="center">
|
|
89
|
+
<img src="https://raw.githubusercontent.com/HyperAITeam/CLITrigger/main/docs/images/screenshot-vault.png" alt="볼트 — Obsidian 스타일 파일 기반 지식 + 링크 그래프" width="800">
|
|
90
|
+
<p><em>Vault 탭 — 프로젝트 마크다운을 인라인 미리보기와 wikilink force-directed 그래프로 탐색하고, 파일을 골라 프롬프트에 주입</em></p>
|
|
91
|
+
</div>
|
|
92
|
+
|
|
93
|
+
#### 즐겨찾기 런처 (Favorites)
|
|
94
|
+
자주 쓰는 외부 도구(실행파일, 셸 명령어, URL/폴더)를 사이드바의 글로벌 Favorites 섹션에 등록해 두고 어디서든 한 번의 클릭으로 실행한다. 일-맡겨두기 모드라 OS 셸로 오갈 필요 없이 CLITrigger 내에서 환경 설정, IDE 실행, 외부 서비스 접근 등을 빠르게 수행할 수 있다.
|
|
95
|
+
|
|
96
|
+
### 🤖 AI에 위임
|
|
97
|
+
|
|
98
|
+
#### 병렬 Worktree 실행 (자동 작업)
|
|
124
99
|
TODO를 작성하면 각 작업마다 격리된 git worktree가 자동 생성된다. Claude / Gemini / Codex CLI가 동시에 병렬로 실행되며, 의존성 체인을 설정하면 선행 작업 완료 후 자동으로 후속 작업이 실행되고 브랜치 병합까지 처리된다. 프로젝트별 워크트리 토글에 더해 TODO별 3단계 오버라이드(상속 / 강제 워크트리 / 강제 메인)로 세밀한 제어가 가능하고, 메인 브랜치 작업은 자동 직렬화되어 충돌을 막는다. 드래그 앤 드롭으로 순서를 바꾸고, iOS 스타일 스택 모드로 긴 목록도 깔끔하게 관리할 수 있다.
|
|
125
100
|
|
|
126
|
-
|
|
127
|
-
긴 생애주기의 인터랙티브 CLI 세션을 1급 엔티티로 관리 — Claude / Gemini / Codex 세션을 드래그 가능한 floating window에 띄운다. **VS Code 스타일 그룹화/도킹** 지원: 탭을 다른 윈도우로 드래그하면 5-zone 다이아몬드(top/bottom/left/right/center)로 분할 pane이나 탭 합치기가 가능하고, **Aero 스타일 엣지 스냅 + 윈도우 간 sticky 스냅 + dock tray 최소화**까지 — 멀티 세션 화면을 깔끔하게 정리할 수 있다. **xterm.js 렌더링**으로 ANSI 컬러, 커서 제어, TUI 박스 그리기까지 네이티브 터미널과 동일하게 표시된다. PTY가 정확한 viewport 크기로 spawn되고, **per-session 폰트 크기**(A−/A+ 또는 Ctrl/Cmd ±)로 가독성도 조절 가능. 세션별 위키 주입 모드와 **Send/Skip pre-flight** 배너로 자동 생성된 초기 프롬프트를 검토 후 명시적으로 보낼 수 있고, 인라인 편집 버튼으로 running이 아닌 세션은 그 자리에서 제목/CLI/모델/위키 주입 변경. iOS Safari 모바일은 한글 IME가 두벌식 composer로 정상 조립된다. Window 위치/크기/그룹 트리는 영속되고 탭 전환 후에도 살아남는다.
|
|
101
|
+
#### 인터랙티브 세션 (Sessions)
|
|
102
|
+
긴 생애주기의 인터랙티브 CLI 세션을 1급 엔티티로 관리 — Claude / Gemini / Codex 세션을 드래그 가능한 floating window에 띄운다. **VS Code 스타일 그룹화/도킹** 지원: 탭을 다른 윈도우로 드래그하면 5-zone 다이아몬드(top/bottom/left/right/center)로 분할 pane이나 탭 합치기가 가능하고, **Aero 스타일 엣지 스냅 + 윈도우 간 sticky 스냅 + dock tray 최소화**까지 — 멀티 세션 화면을 깔끔하게 정리할 수 있다. 윈도우를 **별도 OS 창(멀티 윈도우)** 으로 빼내면 세션 목록에 그 상태가 배지로 표시되고 "중앙 창으로 불러오기" 버튼 한 번으로 되돌릴 수 있으며, 빼낸 창은 하단 dock tray에도 칩으로 나타난다. **xterm.js 렌더링**으로 ANSI 컬러, 커서 제어, TUI 박스 그리기까지 네이티브 터미널과 동일하게 표시된다. PTY가 정확한 viewport 크기로 spawn되고, **per-session 폰트 크기**(A−/A+ 또는 Ctrl/Cmd ±)로 가독성도 조절 가능. 세션별 위키 주입 모드와 **Send/Skip pre-flight** 배너로 자동 생성된 초기 프롬프트를 검토 후 명시적으로 보낼 수 있고, 인라인 편집 버튼으로 running이 아닌 세션은 그 자리에서 제목/CLI/모델/위키 주입 변경. iOS Safari 모바일은 한글 IME가 두벌식 composer로 정상 조립된다. Window 위치/크기/그룹 트리는 영속되고 탭 전환 후에도 살아남는다.
|
|
128
103
|
|
|
129
104
|
<div align="center">
|
|
130
105
|
<img src="https://raw.githubusercontent.com/HyperAITeam/CLITrigger/main/docs/images/screenshot-sessions.png" alt="Sessions — VS Code 스타일로 도킹된 멀티 CLI floating windows" width="800">
|
|
131
106
|
<p><em>VS Code 스타일 그룹화로 도킹된 Claude · Gemini · Codex 세션 — 각각 독립된 worktree 브랜치에서 동시 실행</em></p>
|
|
132
107
|
</div>
|
|
133
108
|
|
|
134
|
-
|
|
109
|
+
#### 다중 AI 토론 (Discussion)
|
|
135
110
|
아키텍트, 개발자, 리뷰어 등 역할이 다른 AI 에이전트들이 라운드 방식으로 토론한 뒤, 합의된 내용을 바탕으로 자동 구현까지 이어진다. 단일 AI의 판단보다 훨씬 검증된 설계 결과물이 나온다. **구현자(Implementer, `can_implement`)** 로 표시된 에이전트는 일반 턴에서도 코드를 커밋할 수 있고, 마지막 구현 라운드가 남은 작업을 정리해 마무리한다. 자동 구현(Auto-implement) 옵션을 켜면 토론 완료 즉시 코드 작성 라운드가 자동 실행된다. 완료된 토론에서 **Send to Planner** 버튼을 누르면 트랜스크립트를 한방 LLM 호출로 추출해 액션 아이템을 Planner로 영속한다 — 저장 전 항목별 편집 가능.
|
|
136
111
|
|
|
137
112
|
<div align="center">
|
|
@@ -139,7 +114,7 @@ TODO를 작성하면 각 작업마다 격리된 git worktree가 자동 생성된
|
|
|
139
114
|
<p><em>여러 AI 에이전트가 역할별로 토론하는 Discussion 화면</em></p>
|
|
140
115
|
</div>
|
|
141
116
|
|
|
142
|
-
|
|
117
|
+
#### 예약 실행 (Scheduler)
|
|
143
118
|
토큰 한도를 피해 새벽이나 특정 시각에 작업을 예약 실행할 수 있다. cron 기반 반복 스케줄, 일회성 예약, 그리고 **한도 초과 자동 복구 예약**까지 지원한다 — CLI가 토큰 한도에 걸리면 CLITrigger가 리셋 시각을 파싱해 자동으로 재시도를 예약한다.
|
|
144
119
|
|
|
145
120
|
<div align="center">
|
|
@@ -147,7 +122,15 @@ TODO를 작성하면 각 작업마다 격리된 git worktree가 자동 생성된
|
|
|
147
122
|
<p><em>cron 기반 반복·일회성 예약 실행 설정 화면</em></p>
|
|
148
123
|
</div>
|
|
149
124
|
|
|
150
|
-
|
|
125
|
+
#### 멀티 CLI & 샌드박스
|
|
126
|
+
Claude / Gemini / Codex CLI를 프로젝트·TODO·토론 에이전트별로 선택한다. 엄격(strict) 샌드박스 모드에서는 각 CLI의 네이티브 샌드박싱(Claude `settings.json`, Codex `--full-auto`, Gemini 프롬프트 단 제한)을 사용해 파일 접근을 워크트리 디렉토리로 제한한다.
|
|
127
|
+
|
|
128
|
+
### 🔍 리뷰 · 머지
|
|
129
|
+
|
|
130
|
+
#### Morning Review Queue (아침 리뷰 큐)
|
|
131
|
+
"밤새 위임하고 아침에 리뷰" 루프를 위한 크로스-프로젝트 단일 트리아주 화면. 모든 프로젝트의 최근 TODO를 카드 스택으로 모아 프로젝트 라벨, 마지막 어시스턴트 한 줄 요약, 토큰 합계, diff 통계, 서버 분류 risk 배지(low / medium / high — 상태와 diff 크기 기반)를 한눈에 보여준다. 키보드 전용 조작: `j`/`k`로 이동, `Enter`로 임베드 로그 뷰어, `Space` / `→`로 변경 파일과 diff를 카드에서 바로 펼치기, `m` 머지, `d` discard, `Esc`로 닫기 — N개 todo가 O(N) 키 입력으로 끝난다. 시간 윈도우(12h / 24h / 7d), 필터 칩(All / Risky / Quick wins / Failed), CLI별 분해가 표시되는 sticky 토큰 리본까지. 워크트리가 정리된 뒤에도 브랜치 ref → `master`/`main` 폴백으로 인라인 diff를 끝까지 보여준다.
|
|
132
|
+
|
|
133
|
+
#### 내장 Git 클라이언트
|
|
151
134
|
웹 UI 안에 Fork/SourceTree 스타일 풀 Git 클라이언트가 내장되어 있다 — 워크스페이스 메뉴로 **File Status** 뷰(staged/unstaged 파일 리스트, working tree diff 뷰어, 커밋 메시지 + push 토글, Cmd/Ctrl+Enter 커밋)와 **History** 뷰(커밋 그래프, 액션 툴바, 워크트리 목록, VS Code 스타일 브랜치 컨텍스트 메뉴: 체크아웃 / 머지 / 리베이스 / 페치 / 풀 / 푸시 / 이름 변경 / 삭제, 파일 단위 diff 뷰어가 붙은 커밋 상세 패널)를 전환한다. 모든 분할 영역은 사용자가 직접 비율을 조절할 수 있고, 그 비율은 localStorage에 영속된다. 한글·CJK·이모지 등 비-ASCII 파일명도 diff / status 출력에 제대로 표시된다.
|
|
152
135
|
|
|
153
136
|
<div align="center">
|
|
@@ -155,7 +138,7 @@ TODO를 작성하면 각 작업마다 격리된 git worktree가 자동 생성된
|
|
|
155
138
|
<p><em>커밋 그래프, 브랜치 작업, 파일 diff까지 브라우저 안에서</em></p>
|
|
156
139
|
</div>
|
|
157
140
|
|
|
158
|
-
|
|
141
|
+
#### Analytics (통계)
|
|
159
142
|
프로젝트별 비용·실행 통계를 Recharts 기반 차트로 시각화 — CLI 도구별 누적 막대, 상태별 도넛, 시간에 따른 비용/토큰 라인 차트를 제공한다. DB에 비정규화된 비용 컬럼을 두어 긴 실행 이력에서도 집계가 빠르다.
|
|
160
143
|
|
|
161
144
|
<div align="center">
|
|
@@ -163,21 +146,14 @@ TODO를 작성하면 각 작업마다 격리된 git worktree가 자동 생성된
|
|
|
163
146
|
<p><em>CLI·상태·시간 축으로 나눠 보는 비용과 토큰 사용량</em></p>
|
|
164
147
|
</div>
|
|
165
148
|
|
|
166
|
-
|
|
167
|
-
"밤새 위임하고 아침에 리뷰" 루프를 위한 크로스-프로젝트 단일 트리아주 화면. 모든 프로젝트의 최근 TODO를 카드 스택으로 모아 프로젝트 라벨, 마지막 어시스턴트 한 줄 요약, 토큰 합계, diff 통계, 서버 분류 risk 배지(low / medium / high — 상태와 diff 크기 기반)를 한눈에 보여준다. 키보드 전용 조작: `j`/`k`로 이동, `Enter`로 임베드 로그 뷰어, `Space` / `→`로 변경 파일과 diff를 카드에서 바로 펼치기, `m` 머지, `d` discard, `Esc`로 닫기 — N개 todo가 O(N) 키 입력으로 끝난다. 시간 윈도우(12h / 24h / 7d), 필터 칩(All / Risky / Quick wins / Failed), CLI별 분해가 표시되는 sticky 토큰 리본까지. 워크트리가 정리된 뒤에도 브랜치 ref → `master`/`main` 폴백으로 인라인 diff를 끝까지 보여준다.
|
|
168
|
-
|
|
169
|
-
### 실시간 로그 (Chat & Raw)
|
|
149
|
+
#### 실시간 로그 (Chat & Raw)
|
|
170
150
|
WebSocket으로 실행 로그를 실시간 스트리밍하며 두 가지 뷰를 지원한다 — Chat 모드는 assistant 메시지를 마크다운으로 렌더링하고 tool-use 행을 접을 수 있으며, Raw 모드는 플랫 터미널 뷰다. 다중 라운드 Continue는 CLI의 네이티브 `--continue` 플래그를 사용해 동일 워크트리를 재사용한다.
|
|
171
151
|
|
|
172
|
-
###
|
|
173
|
-
Claude / Gemini / Codex CLI를 프로젝트·TODO·토론 에이전트별로 선택한다. 엄격(strict) 샌드박스 모드에서는 각 CLI의 네이티브 샌드박싱(Claude `settings.json`, Codex `--full-auto`, Gemini 프롬프트 단 제한)을 사용해 파일 접근을 워크트리 디렉토리로 제한한다.
|
|
152
|
+
### 🌐 어디서나 접속
|
|
174
153
|
|
|
175
|
-
|
|
154
|
+
#### 외부 접속
|
|
176
155
|
Cloudflare Tunnel로 어디서든 폰·노트북으로 제어한다. 작업이나 토론이 완료되면 브라우저 알림이 울리므로, 자리를 비워도 상태를 놓치지 않는다. **Named Tunnel을 본인 도메인으로 라우팅**할 수 있어 — 사이드바 ⚙ → Tunnel 설정 모달에서 Tunnel Name + Custom Hostname을 입력하면 표시 URL이 `https://app.your-domain.com`으로 바뀌고, `*.trycloudflare.com` / `*.cfargotunnel.com`에서 발생하던 브라우저 "위험한 사이트" 경고를 본인 도메인 평판으로 회피할 수 있다.
|
|
177
156
|
|
|
178
|
-
### 즐겨찾기 런처 (Favorites)
|
|
179
|
-
자주 쓰는 외부 도구(실행파일, 셸 명령어, URL/폴더)를 사이드바의 글로벌 Favorites 섹션에 등록해 두고 어디서든 한 번의 클릭으로 실행한다. 일-맡겨두기 모드라 OS 셸로 오갈 필요 없이 CLITrigger 내에서 환경 설정, IDE 실행, 외부 서비스 접근 등을 빠르게 수행할 수 있다.
|
|
180
|
-
|
|
181
157
|
---
|
|
182
158
|
|
|
183
159
|
## 기술 스택
|