prjct-cli 1.53.0 → 1.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.55.0] - 2026-04-05
4
+
5
+ ### Features
6
+
7
+ - Obsidian vault integration (#240)
8
+
9
+
10
+ ## [1.54.0] - 2026-04-05
11
+
12
+ ### Features
13
+
14
+ - multi-agent parallel sessions with auto-worktree isolation (#237)
15
+ - Obsidian vault integration — CLI commands, 8 MCP tools, Kanban board, Canvas roadmap, Dataview dashboards, path security
16
+ - Sync skill generates `_insights.md` via LLM when Obsidian is configured
17
+ - Linear CSV import script with per-project Kanban boards and tags
18
+
19
+ ### Bug Fixes
20
+
21
+ - guard feedback array spreads preventing s.push crash (#236)
22
+
23
+ ## [1.53.1] - 2026-04-04
24
+
25
+ ### Docs
26
+ - update README with full command reference, Windsurf support, MCP server, parallel sessions, code intelligence, web dashboard, cloud sync, and architecture overview
27
+
3
28
  ## [1.52.4] - 2026-03-26
4
29
 
5
30
  ### Bug Fixes
package/README.md CHANGED
@@ -2,13 +2,14 @@
2
2
 
3
3
  **Context layer for AI coding agents.**
4
4
 
5
- Works with Claude Code, Gemini CLI, OpenAI Codex, Antigravity, Cursor IDE, and more.
5
+ Works with Claude Code, Gemini CLI, OpenAI Codex, Antigravity, Cursor IDE, Windsurf, and more.
6
6
 
7
7
  [![Claude Code](https://img.shields.io/badge/Claude%20Code-Ready-6366f1)](CLAUDE.md)
8
8
  [![Gemini CLI](https://img.shields.io/badge/Gemini%20CLI-Ready-4285F4)]()
9
9
  [![OpenAI Codex](https://img.shields.io/badge/OpenAI%20Codex-Ready-10A37F)]()
10
10
  [![Antigravity](https://img.shields.io/badge/Antigravity-Ready-EA4335)]()
11
11
  [![Cursor IDE](https://img.shields.io/badge/Cursor%20IDE-Ready-00D4AA)]()
12
+ [![Windsurf](https://img.shields.io/badge/Windsurf-Ready-7C3AED)]()
12
13
  [![npm](https://img.shields.io/npm/v/prjct-cli)](https://www.npmjs.com/package/prjct-cli)
13
14
 
14
15
  ## What is prjct?
@@ -17,18 +18,18 @@ prjct gives AI coding agents the context they need about your project. It mainta
17
18
 
18
19
  ```
19
20
  Your AI Agent prjct
20
- (Claude/Gemini/Antigravity/Cursor)
21
-
22
- "What am I working on?"
23
- ────────────────────────────────►
24
- Reads project context
25
- Task: "Add user auth"
26
- Branch: feature/auth
27
- Subtask 2/5: API routes
28
- ◄────────────────────────────────
29
-
30
-
31
- Writes code with full context
21
+ (Claude/Gemini/Codex/Cursor/Windsurf) |
22
+ | |
23
+ | "What am I working on?" |
24
+ | --------------------------------> |
25
+ | | Reads project context
26
+ | Task: "Add user auth" |
27
+ | Branch: feature/auth |
28
+ | Subtask 2/5: API routes |
29
+ | <-------------------------------- |
30
+ | |
31
+ v |
32
+ Writes code with full context |
32
33
  ```
33
34
 
34
35
  ## Install
@@ -52,232 +53,270 @@ prjct init
52
53
  # 3. Open in Claude Code, Gemini CLI, or Codex and use:
53
54
  p. sync # Analyze project
54
55
  p. task "add user auth" # Start a task
55
- p. done # Complete subtask
56
+ p. done # Complete task
56
57
  p. ship # Ship with PR
57
58
  ```
58
59
 
59
- > **Note (Codex):** `prjct sync` generates `AGENTS.md` for project-level Codex context, `prjct start` installs `~/.codex/skills/prjct/SKILL.md`, and `prjct doctor` validates the `p.` router health.
60
-
61
- ### Google Antigravity
62
-
63
- ```bash
64
- # 1. One-time global setup (installs prjct as a skill)
65
- prjct start
66
-
67
- # 2. Initialize your project
68
- cd my-project
69
- prjct init
70
-
71
- # 3. Open in Antigravity and use:
72
- p. sync # Analyze project
73
- p. task "add user auth" # Start a task
74
- p. done # Complete subtask
75
- p. ship # Ship with PR
76
- ```
77
-
78
- > **Note:** prjct integrates as a Skill (not MCP server) for zero-overhead operation.
79
-
80
- ### Cursor IDE
60
+ ### Cursor IDE / Windsurf
81
61
 
82
62
  ```bash
83
63
  # 1. Initialize your project (no global setup needed)
84
64
  cd my-project
85
65
  prjct init
86
66
 
87
- # 2. Open in Cursor and use:
67
+ # 2. Open in Cursor or Windsurf and use:
88
68
  /sync # Analyze project
89
69
  /task "add user auth" # Start a task
90
- /done # Complete subtask
70
+ /done # Complete task
91
71
  /ship # Ship with PR
92
72
  ```
93
73
 
94
- > **Note:** Cursor uses `/command` syntax. Commands are installed per-project in `.cursor/commands/`. If deleted, run `/sync` to regenerate.
74
+ > Cursor uses `.cursor/commands/`, Windsurf uses `.windsurf/` with YAML frontmatter. Run `/sync` to regenerate if deleted.
95
75
 
96
76
  ### Core Workflow
97
77
 
98
78
  ```
99
- Claude/Gemini/Codex/Antigravity: p. sync p. task "..." [code] p. done p. ship
100
- Cursor: /sync /task "..." [code] /done /ship
79
+ Claude/Gemini/Codex: p. sync -> p. task "..." -> [code] -> p. done -> p. ship
80
+ Cursor/Windsurf: /sync -> /task "..." -> [code] -> /done -> /ship
101
81
  ```
102
82
 
103
83
  ## How It Works
104
84
 
105
- | Component | Claude Code | Gemini CLI | OpenAI Codex | Antigravity | Cursor IDE |
106
- |-----------|-------------|------------|--------------|-------------|------------|
107
- | Router | `~/.claude/commands/p.md` | `~/.gemini/commands/p.toml` | Skill (`~/.codex/skills/prjct/SKILL.md`) | Skill | `.cursor/commands/*.md` |
108
- | Config | `~/.claude/CLAUDE.md` | `~/.gemini/GEMINI.md` | `AGENTS.md` | `~/.gemini/antigravity/skills/prjct/` | `.cursor/rules/prjct.mdc` |
109
- | Storage | `~/.prjct-cli/projects/` | `~/.prjct-cli/projects/` | `~/.prjct-cli/projects/` | `~/.prjct-cli/projects/` | `~/.prjct-cli/projects/` |
110
- | Scope | Global | Global | Project + Global skill | Global | Per-project |
111
- | Syntax | `p. command` | `p. command` | `p. command` | `p. command` | `/command` |
85
+ | Component | Claude Code | Gemini CLI | OpenAI Codex | Antigravity | Cursor IDE | Windsurf |
86
+ |-----------|-------------|------------|--------------|-------------|------------|----------|
87
+ | Router | `~/.claude/commands/p.md` | `~/.gemini/commands/p.toml` | `~/.codex/skills/prjct/SKILL.md` | Skill | `.cursor/commands/*.md` | `.windsurf/*.md` |
88
+ | Config | `~/.claude/CLAUDE.md` | `~/.gemini/GEMINI.md` | `AGENTS.md` | `~/.gemini/antigravity/skills/prjct/` | `.cursor/rules/prjct.mdc` | `.windsurf/` (YAML) |
89
+ | Storage | `~/.prjct-cli/projects/` | `~/.prjct-cli/projects/` | `~/.prjct-cli/projects/` | `~/.prjct-cli/projects/` | `~/.prjct-cli/projects/` | `~/.prjct-cli/projects/` |
90
+ | Syntax | `p. command` | `p. command` | `p. command` | `p. command` | `/command` | `/command` |
112
91
 
113
- All agents share the same project storage, so you can switch between them freely.
92
+ All agents share the same SQLite-backed project storage, so you can switch between them freely.
114
93
 
115
94
  ## Commands
116
95
 
117
- | Claude/Gemini | Cursor | Description |
118
- |---------------|--------|-------------|
119
- | `p. sync` | `/sync` | Analyze project, generate domain agents |
96
+ ### Core Workflow
97
+
98
+ | Claude/Gemini | Cursor/Windsurf | Description |
99
+ |---------------|-----------------|-------------|
100
+ | `p. sync` | `/sync` | Analyze project, build indexes, generate skills |
120
101
  | `p. task "desc"` | `/task "desc"` | Start task with auto-classification |
121
- | `p. done` | `/done` | Complete current subtask |
102
+ | `p. done` | `/done` | Complete current task |
122
103
  | `p. ship "name"` | `/ship "name"` | Ship feature with PR + version bump |
123
104
  | `p. pause` | `/pause` | Pause current task |
124
105
  | `p. resume` | `/resume` | Resume paused task |
125
- | `p. bug "desc"` | `/bug "desc"` | Report a bug |
126
- | `p. linear` | - | Linear integration |
127
- | `p. github` | - | GitHub Issues integration |
128
-
129
- ## Task History
106
+ | `p. next` | `/next` | Show priority queue or roadmap |
107
+ | `p. bug "desc"` | `/bug "desc"` | Report and track a bug |
108
+ | `p. idea "desc"` | `/idea "desc"` | Transform idea into technical architecture |
109
+ | `p. spec` | `/spec` | Create detailed spec for complex features |
110
+ | `p. dash` | `/dash` | Unified dashboard (status, progress, roadmap) |
111
+ | `p. suggest` | `/suggest` | Smart recommendations based on project state |
130
112
 
131
- prjct automatically tracks your completed tasks to help AI agents learn from patterns and make better decisions across sessions.
113
+ ### Analysis & Performance
132
114
 
133
- ### How It Works
115
+ | Command | Description |
116
+ |---------|-------------|
117
+ | `p. status` | Check if context is stale |
118
+ | `p. perf` | Performance dashboard (startup, memory, context) |
119
+ | `p. velocity` | Sprint-based velocity with trend detection |
120
+ | `p. tokens <in> <out>` | Record token usage on active task |
121
+ | `p. stats` | Value dashboard (token savings, impact) |
122
+ | `p. sessions` | Show recent sessions across projects |
123
+ | `p. diff` | Diff between draft and sealed analysis |
124
+ | `p. seal` | Seal analysis with commit-hash signature |
125
+ | `p. verify` | Verify integrity (cryptographic or `--semantic`) |
126
+ | `p. rollback` | Rollback to previous sealed analysis |
127
+
128
+ ### Advanced
134
129
 
135
- When you complete a task (`p. done` / `/done`), prjct stores:
136
- - Task description and classification (feature, bug, improvement, chore)
137
- - Start and completion timestamps
138
- - Number of subtasks and their summaries
139
- - Git branch name and Linear issue ID (if linked)
140
- - PR URL (if shipped)
130
+ | Command | Description |
131
+ |---------|-------------|
132
+ | `p. design` | Design system architecture, APIs, components |
133
+ | `p. enrich "issue"` | Build enrichment context for an issue |
134
+ | `p. workflow` | Configure workflow hooks via natural language |
135
+ | `p. git` | Smart git operations with context |
136
+ | `p. test` | Run tests with auto-fix |
137
+ | `p. undo` / `p. redo` | Snapshot-based undo/redo |
138
+ | `p. recover` | Recover abandoned session with context |
139
+ | `p. linear` | Linear integration via MCP |
140
+ | `p. jira` | Jira integration via MCP |
141
+ | `p. obsidian` | Obsidian vault integration (setup, export, status) |
141
142
 
142
- This history is:
143
- - **Bounded**: Maximum 20 entries with FIFO (First-In-First-Out) eviction
144
- - **Contextual**: Filtered by task type when starting similar work
145
- - **Persistent**: Survives across sessions and agent types
143
+ ### Parallel Agent Sessions
146
144
 
147
- ### Context Injection
145
+ Run multiple AI agents on different tasks simultaneously, each in an isolated git worktree.
148
146
 
149
- Task history is automatically injected into the AI agent's context:
150
- - When **starting a task**: Shows 3 most recent tasks of the same type (e.g., recent bug fixes when starting a new bug)
151
- - When **idle**: Shows 5 most recent tasks across all types
152
- - **Purpose**: Helps agents identify patterns, avoid repeating mistakes, and build on previous solutions
147
+ | Command | Description |
148
+ |---------|-------------|
149
+ | `p. parallel spawn "task"` | Spawn agent in isolated worktree |
150
+ | `p. parallel status` | Show all active agents |
151
+ | `p. parallel join` | Merge completed branches back |
152
+ | `p. worktree create` | Create worktree (auto-copies .env, installs deps) |
153
+ | `p. worktree list` | List active worktrees |
154
+ | `p. worktree remove` | Clean up completed worktrees |
155
+ | `p. conductor init` | Scaffold Conductor.build integration |
153
156
 
154
- ### Accessor Methods (for developers)
157
+ ## CLI Commands
155
158
 
156
- ```typescript
157
- import { stateStorage } from './storage/state-storage'
159
+ Commands you run directly in the terminal (outside your AI agent):
158
160
 
159
- // Get full task history (max 20 entries, newest first)
160
- const history = await stateStorage.getTaskHistory(projectId)
161
+ ```bash
162
+ prjct start # First-time setup wizard
163
+ prjct init # Initialize project
164
+ prjct sync # Analyze project and build indexes
165
+ prjct doctor # Check system health and dependencies
166
+ prjct serve # Start web dashboard (port 3478)
167
+ prjct watch # Auto-sync on file changes
168
+ prjct hooks # Manage git hooks for auto-sync
169
+ prjct context # Smart context filtering tools
170
+ prjct enrich # Prepare issue enrichment context
171
+ prjct linear # Linear MCP gateway
172
+ prjct jira # Jira MCP gateway
173
+ prjct obsidian setup # Link project to Obsidian vault
174
+ prjct obsidian export # Export board, queue, shipped, roadmap to vault
175
+ prjct obsidian status # Check Obsidian integration status
176
+ prjct login # Authenticate with prjct cloud (opens browser)
177
+ prjct logout # Sign out from prjct cloud
178
+ prjct update # Update CLI system-wide
179
+ prjct stop # Stop the background daemon
180
+ prjct restart # Restart the background daemon
181
+ prjct uninstall # Complete system removal
182
+ prjct --version # Show version + provider status
183
+ prjct --help # Show help
184
+ ```
161
185
 
162
- // Get most recent completed task
163
- const recent = await stateStorage.getMostRecentTask(projectId)
186
+ ## Code Intelligence
164
187
 
165
- // Get tasks by classification
166
- const bugs = await stateStorage.getTaskHistoryByType(projectId, 'bug')
167
- const features = await stateStorage.getTaskHistoryByType(projectId, 'feature')
168
- ```
188
+ `prjct sync` builds a triple-index system over your codebase:
169
189
 
170
- ## CLI Commands
190
+ | Index | Purpose |
191
+ |-------|---------|
192
+ | **BM25** | Full-text search over file names, symbols, comments |
193
+ | **Import Graph** | Dependency graph with forward and reverse edges |
194
+ | **Git Co-change** | Files that frequently change together |
171
195
 
172
- ```bash
173
- prjct start # First-time setup (Claude/Gemini/Codex skill install)
174
- prjct init # Initialize project (+ AI tool setup)
175
- prjct sync # Analyze project and generate context
176
- prjct verify # Verify analysis integrity (cryptographic)
177
- prjct verify --semantic # Verify analysis consistency (semantic)
178
- prjct --version # Show version + provider status
179
- prjct --help # Show help
180
- ```
196
+ These indexes power file ranking, impact analysis, and related-context suggestions for your AI agent.
181
197
 
182
- ### Analysis Verification
198
+ ## MCP Server
183
199
 
184
- prjct provides two types of analysis verification to ensure data integrity and logical consistency:
200
+ prjct exposes an MCP server with tools that AI agents can call directly:
185
201
 
186
- #### Cryptographic Verification (Default)
187
- ```bash
188
- prjct verify [--json]
189
- ```
202
+ | Category | Tools | Examples |
203
+ |----------|-------|---------|
204
+ | **Memory** | 8 | Save/search memories, record decisions, manage preferences |
205
+ | **Session** | 4 | Start sessions, recover context, record outcomes |
206
+ | **Code Intelligence** | 3 | Impact analysis, related files, staleness check |
207
+ | **Workflow** | 4 | Task and session management |
208
+ | **File** | 3 | File reading and filtering |
209
+ | **Pattern** | 3 | Pattern extraction and matching |
210
+ | **Review** | 3 | Code review context |
211
+ | **Project** | 4 | Project-level operations |
212
+ | **Obsidian** | 8 | Read, write, search, list, export, import, stats, status |
190
213
 
191
- Verifies the integrity of sealed analysis results using cryptographic signatures. This ensures:
192
- - Analysis data hasn't been tampered with
193
- - Sealed analysis matches the original analysis
194
- - Hash signatures are valid
214
+ The memory system uses FTS5 full-text search, tracks decision outcomes ("did this work before?"), and auto-captures patterns during normal workflow.
195
215
 
196
- **When to use:** After sealing an analysis (`prjct seal`) to confirm data integrity.
216
+ ## Web Dashboard
197
217
 
198
- #### Semantic Verification (PRJ-270)
199
218
  ```bash
200
- prjct verify --semantic [--json]
219
+ prjct serve
201
220
  ```
202
221
 
203
- Validates that analysis results match the actual project state. This checks:
204
- - ✓ **Frameworks** exist in `package.json` dependencies
205
- - ✓ **Languages** match actual file extensions (.ts → TypeScript)
206
- - ✓ **Pattern locations** reference real files in the project
207
- - ✓ **File count** is accurate (within 10% tolerance)
208
- - ✓ **Anti-pattern files** exist when referenced
222
+ Starts an HTTP server on port 3478 with:
209
223
 
210
- **When to use:** Before sealing an analysis to catch logical inconsistencies or after project changes to validate analysis accuracy.
224
+ - REST API for project state, task queue, ideas, roadmap, shipped features
225
+ - SSE (Server-Sent Events) for real-time updates
226
+ - Status bar endpoint for IDE integration (`/api/status-bar/compact`)
227
+ - Global statistics across all projects
211
228
 
212
- **Example output:**
213
- ```
214
- Semantic Verification Report
215
- ────────────────────────────
216
- ✓ Framework verification: passed (2 frameworks validated)
217
- Language verification: passed (1 language validated)
218
- Pattern locations: passed (12 patterns verified)
219
- ✓ File count verification: passed (324 files, within tolerance)
220
- ✓ Anti-pattern files: passed (3 anti-patterns verified)
221
-
222
- Result: PASSED (5/5 checks)
223
- Total time: 145ms
229
+ Built with Hono, supports both Bun and Node.js runtimes.
230
+
231
+ ## Cloud Sync
232
+
233
+ ```bash
234
+ prjct login # Browser-based OTP authentication
235
+ prjct sync # Bidirectional push/pull with prjct cloud
224
236
  ```
225
237
 
226
- Both verification modes support `--json` flag for programmatic use.
238
+ Cloud sync enables:
239
+ - Cross-device project state synchronization
240
+ - Event-sourced bidirectional push/pull
241
+ - Automatic sync on task completion
227
242
 
228
- ## Environment Variables
243
+ ## Obsidian Integration
229
244
 
230
- ### Configuration
245
+ Use Obsidian as your project management tool with Kanban boards, dashboards, and knowledge base.
231
246
 
232
- | Variable | Default | Description |
233
- |----------|---------|-------------|
234
- | `PRJCT_CLI_HOME` | `~/.prjct-cli` | Override global storage location. Useful for tests or sandboxed environments. |
235
- | `PRJCT_DEBUG` | _(unset)_ | Enable debug logging. Values: `1`, `true`, or a log level (`error`, `warn`, `info`, `debug`). |
236
- | `DEBUG` | _(unset)_ | Fallback debug flag (used if `PRJCT_DEBUG` is not set). Values: `1`, `true`, or `prjct`. |
237
- | `CI` | _(unset)_ | Set automatically in CI environments. Skips interactive prompts. |
247
+ ```bash
248
+ prjct obsidian setup --vault-path ~/Obsidian/my-vault # Link project to vault
249
+ prjct obsidian export # Export data to vault
250
+ prjct obsidian status # Check config
251
+ ```
252
+
253
+ Features:
254
+ - **Kanban board** with Obsidian Kanban plugin (per-project filtered views)
255
+ - **Dataview dashboards** (active sprint, backlog, stats, by project/priority)
256
+ - **Canvas roadmap** with dependency arrows between features
257
+ - **Daily standup notes** with task progress and queue
258
+ - **8 MCP tools** for AI agents to read, write, search, and import vault notes
259
+ - **`_insights.md`** generated by LLM on each `p. sync` (architecture, risks, progress)
260
+ - **Tags** for Graph View coloring (status, priority, labels, project)
261
+ - **Security**: path traversal prevention, extension whitelist, blocked directories
238
262
 
239
- ### Issue Tracker MCP (Linear + Jira)
263
+ ## Issue Tracker Integration
240
264
 
241
265
  Issue trackers are configured via MCP (OAuth in your AI client), not API tokens.
242
266
 
243
- | Command | Description |
244
- |---------|-------------|
245
- | `prjct linear setup` | Configure Linear MCP server in `~/.claude/mcp.json`. |
246
- | `prjct linear status` | Verify Linear MCP config. |
247
- | `prjct linear <sync|list|get|create|update|start|done|comment>` | Delegate Linear operation to MCP tools in your AI client. |
248
- | `prjct jira setup` | Configure Jira MCP server in `~/.claude/mcp.json`. |
249
- | `prjct jira status` | Verify Jira MCP config. |
250
- | `prjct jira <sync|list|get|create|update|start|done|transition|comment>` | Delegate Jira operation to MCP tools in your AI client. |
267
+ ```bash
268
+ # Linear
269
+ prjct linear setup # Configure Linear MCP server
270
+ prjct linear status # Verify config
271
+ # Then use: p. linear sync|list|get|create|update|start|done|comment
272
+
273
+ # Jira
274
+ prjct jira setup # Configure Jira MCP server
275
+ prjct jira status # Verify config
276
+ # Then use: p. jira sync|list|get|create|update|start|done|transition|comment
277
+ ```
251
278
 
252
- ### Agent Detection (Auto-set)
279
+ ## Analysis Verification
253
280
 
254
- These are typically set by the AI agent runtime, not by users:
281
+ ```bash
282
+ prjct verify # Cryptographic: hash signature integrity
283
+ prjct verify --semantic # Semantic: frameworks, languages, file counts match reality
284
+ ```
255
285
 
256
- | Variable | Description |
257
- |----------|-------------|
258
- | `CLAUDE_AGENT` | Set when running inside Claude Code. |
259
- | `ANTHROPIC_CLAUDE` | Alternative Claude environment indicator. |
260
- | `MCP_AVAILABLE` | Set when MCP (Model Context Protocol) is available. |
261
- | `HOME` / `USERPROFILE` | Standard OS home directory (used for path resolution). |
286
+ Both modes support `--json` for programmatic use.
262
287
 
263
- ### Usage Examples
288
+ ## Environment Variables
264
289
 
265
- ```bash
266
- # Enable debug logging
267
- PRJCT_DEBUG=1 prjct sync
290
+ | Variable | Default | Description |
291
+ |----------|---------|-------------|
292
+ | `PRJCT_CLI_HOME` | `~/.prjct-cli` | Override global storage location |
293
+ | `PRJCT_DEBUG` | _(unset)_ | Enable debug logging (`1`, `true`, or log level) |
294
+ | `DEBUG` | _(unset)_ | Fallback debug flag (`1`, `true`, or `prjct`) |
295
+ | `CI` | _(unset)_ | Set in CI environments; skips interactive prompts |
268
296
 
269
- # Use a custom storage location
270
- PRJCT_CLI_HOME=/tmp/prjct-test prjct init
297
+ ## Architecture
271
298
 
272
- # Configure Linear + Jira via MCP
273
- prjct linear setup
274
- prjct jira setup
299
+ ```
300
+ prjct-cli/
301
+ core/
302
+ commands/ # CLI command handlers
303
+ domain/ # BM25, import graph, co-change, velocity
304
+ infrastructure/ # Config, path manager, AI provider detection
305
+ mcp/ # MCP server (56 tools)
306
+ schemas/ # Zod schemas (PRD, model, etc.)
307
+ server/ # Hono HTTP server + SSE
308
+ services/ # Memory, sync, code intel, skills, doctor
309
+ storage/ # SQLite via better-sqlite3
310
+ sync/ # Cloud sync client + event mapping
311
+ types/ # TypeScript type definitions
312
+ utils/ # Shared utilities
313
+ templates/ # Skill templates per editor
275
314
  ```
276
315
 
277
316
  ## Requirements
278
317
 
279
318
  - Node.js 18+ or Bun 1.0+
280
- - One of: Claude Code, Gemini CLI, Antigravity, or Cursor IDE
319
+ - One of: Claude Code, Gemini CLI, OpenAI Codex, Antigravity, Cursor IDE, or Windsurf
281
320
 
282
321
  ## Links
283
322