fivocell 4.1.3 โ†’ 4.1.5

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 CHANGED
@@ -1,99 +1,175 @@
1
- # ๐Ÿง  FIVO Cell v3.0
1
+ # ๐Ÿง  FIVO Cell v4.1.5
2
2
 
3
- **Personal Developer Intelligence Layer. You write code. Cell learns.**
3
+ **Switch tools. Cell remembers. No need to re-explain.**
4
4
 
5
5
  [![License](https://img.shields.io/badge/License-Apache%202.0-blue)](LICENSE)
6
- [![Version](https://img.shields.io/badge/Version-3.0.0-purple)](https://www.npmjs.com/package/fivocell)
6
+ [![Version](https://img.shields.io/badge/Version-4.1.5-purple)](https://www.npmjs.com/package/fivocell)
7
7
  [![Platform](https://img.shields.io/badge/Mac%20%7C%20Windows%20%7C%20Linux-supported-lightgrey)]()
8
+ [![Node](https://img.shields.io/badge/Node-%3E%3D18-green)]()
8
9
 
9
10
  ---
10
11
 
11
- ## What Cell Does
12
+ ## The problem
13
+
14
+ You work in Cursor. Then Claude Code. Then Open Code. Then Antigravity.
15
+ Every time you open a new tool, **you re-explain** your stack, your style,
16
+ what you were working on, the bug you just fixed.
17
+
18
+ Cell sits between you and your tools. It remembers everything.
12
19
 
13
20
  ```
14
- $ cell scan
15
- $ cell status
21
+ $ @cell
22
+
23
+ โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
24
+ โšก CELL CONTEXT โ€” my-saas-app
25
+ โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
16
26
 
17
- ๐Ÿ”ฎ Predictions:
18
- โš  "15 async functions missing try/catch โ€” 2x repeated"
27
+ ๐Ÿ“ฆ PROJECT
28
+ Project: my-saas-app (412 files, 24,891 lines)
29
+ Stack: Quotes: single ยท Semicolons: always ยท Indent: 2-spaces ยท Async: uses-async ยท Tests: jest
19
30
 
20
- ๐Ÿง  Git Intelligence:
21
- Best hours: 10:00-11:00 | Most productive: Monday
22
- Mastered: TypeScript | Learning: JavaScript
31
+ โš ๏ธ BLIND SPOTS:
32
+ โ†’ [12x, trust 92] async_without_trycatch:12/15
33
+ โ†’ [8x, trust 88] chained_property_access:8/8
23
34
 
24
- ๐Ÿ“‚ Personal:
25
- ! 15 async functions missing try/catch
26
- ! 15 empty catch blocks โ€” errors silently swallowed
27
- ! 127 console.log statements โ€” use structured logger
28
- ! 34 'any' type usages โ€” use specific types
35
+ ๐ŸŽฏ LAST SESSION
36
+ Tool: claude-code (12 min ago)
37
+ Working on: fixing memory leak in webhooks
38
+ Last file: src/webhooks/handler.ts
39
+ Key decision: switched from Map to WeakMap for handler registry
29
40
 
30
- ๐Ÿ‘ฅ Team: Git-based sharing. No servers. No ports.
31
- ๐ŸŒ Community: Anonymous patterns + benchmarks.
41
+ # โ”€โ”€โ”€ End @cell Context โ”€โ”€โ”€
32
42
  ```
33
43
 
44
+ **Cell remembers. No need to re-explain.**
45
+
46
+ ---
47
+
34
48
  ## Install
35
49
 
36
50
  ```bash
37
- npm i -g fivocell
51
+ npm i -g fivocell@4.1.5
38
52
  cell start
39
- cell scan
40
- cell status
53
+ cell mcp-config # auto-register MCP in Cursor/Antigravity/Codex/OpenCode
54
+ @cell # in your IDE chat
41
55
  ```
42
56
 
43
- ## 7 Commands
57
+ That's it. 30 seconds.
58
+
59
+ ---
60
+
61
+ ## How it works
62
+
63
+ Cell runs an MCP server on `localhost:9876` with **67 tools**. Every supported
64
+ IDE (Cursor, Claude Code, Open Code, Antigravity, Codex) connects to the same
65
+ daemon, the same SQLite DB, the same memory.
66
+
67
+ ```
68
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
69
+ โ”‚ Your IDE โ€” Cursor, Claude Code, etc โ”‚
70
+ โ”‚ Chat types @cell โ”‚
71
+ โ”‚ โ†“ โ”‚
72
+ โ”‚ AI calls cell_get_context via MCP โ”‚
73
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
74
+ โ”‚ JSON-RPC
75
+ โ–ผ
76
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
77
+ โ”‚ Cell Daemon (port 9876) โ”‚
78
+ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
79
+ โ”‚ โ”‚ 67 MCP Tools โ”‚ โ”‚
80
+ โ”‚ โ”‚ context, scan, blind spots, โ”‚ โ”‚
81
+ โ”‚ โ”‚ team, community, watcher, etc. โ”‚ โ”‚
82
+ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
83
+ โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
84
+ โ”‚ โ”‚ SQLite DB โ”‚ โ”‚
85
+ โ”‚ โ”‚ ~/.fivo/cell/cell.db โ”‚ โ”‚
86
+ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
87
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
88
+ ```
89
+
90
+ ---
91
+
92
+ ## Commands
44
93
 
45
94
  | Command | Does |
46
95
  |---------|------|
47
96
  | `cell start` | Start daemon + MCP (port 9876) |
48
97
  | `cell stop` | Stop daemon cleanly |
49
- | `cell scan` | Deep scan codebase โ€” AST + Git intelligence |
50
- | `cell status` | Full dashboard: personal, predictions, team, community |
51
- | `cell team` | Git-based team sharing & knowledge map |
52
- | `cell community` | Anonymous patterns, benchmarks, trends |
53
- | `cell help` | Show commands |
98
+ | `cell --version` | Print version + daemon status |
99
+ | `cell mcp-config` | Auto-register cell MCP in all IDEs |
100
+ | `cell scan` | Deep scan codebase + build all layers |
101
+ | `cell status` | Full dashboard |
102
+ | `cell status --session` | Last file touched + patterns |
103
+ | `cell status --decisions` | Recent decisions with verdict |
104
+ | `cell context [proj] [tool]` | Inject @cell context block |
105
+ | `cell blindspots [file]` | Scan for blind spots with line numbers |
106
+ | `cell watch start` | Live file watcher |
107
+ | `cell team` | Git-based team sharing |
108
+ | `cell community` | Anonymous patterns + benchmarks |
54
109
 
55
- ## Cell Knows
110
+ ---
56
111
 
57
- - **Code Style**: quotes, semicolons, naming, indentation, function style, async patterns
58
- - **Blind Spots**: exact counts โ€” "15 async without try/catch", "15 empty catch blocks"
59
- - **Git Intelligence**: best work hours, most productive day, skill levels, bug history
60
- - **Predictions**: repeat mistakes, decision regret, complexity traps, energy warnings
61
- - **Team**: knowledge map, bus factor, shared patterns via git
62
- - **Community**: anonymous pattern sharing, aggregate benchmarks
63
- - **$> cell status** shows everything
112
+ ## What Cell knows
64
113
 
65
- ## MCP Server
114
+ - **Code Style** โ€” quotes, semicolons, naming, indentation, async patterns
115
+ - **Blind Spots** โ€” exact counts with line numbers
116
+ - **Live Memory** โ€” last file touched, current task, working context
117
+ - **Decisions** โ€” accepted/rejected AI suggestions over time
118
+ - **Git Intelligence** โ€” best work hours, skill levels, bug history
119
+ - **Team** โ€” knowledge map, bus factor, shared patterns via git
120
+ - **Community** โ€” anonymous pattern sharing, aggregate benchmarks
66
121
 
67
- Cell runs an MCP server on `localhost:9876/mcp` with 15 tools:
122
+ ---
123
+
124
+ ## Cross-tool context (the killer feature)
68
125
 
69
126
  ```
70
- cell_get_dev_profile cell_get_code_patterns cell_deep_scan
71
- cell_scan_report cell_send_signal cell_get_context
72
- cell_scan_full_pc cell_behavior_summary cell_log_error
73
- cell_log_fix cell_log_decision cell_log_context
74
- cell_log_stuck cell_session_bridge cell_predict
127
+ You work in Cursor:
128
+ - Edit src/webhooks/handler.ts
129
+ - Accept AI suggestion: "use WeakMap"
130
+ - Move to a meeting.
131
+
132
+ You open Claude Code:
133
+ - Type @cell
134
+ - See: "Last session: cursor, 23 min ago. Working on: fixing memory
135
+ leak in webhooks. Last file: src/webhooks/handler.ts. Key
136
+ decision: switched from Map to WeakMap."
137
+
138
+ You open Open Code:
139
+ - Type @cell
140
+ - Same context. No re-explanation.
141
+
142
+ You open Antigravity:
143
+ - Same. 67 tools, same DB, same memory.
75
144
  ```
76
145
 
77
- Connect from Cursor, Claude Code, Windsurf or any MCP-compatible tool.
146
+ **Cell remembers. No need to re-explain.**
147
+
148
+ ---
149
+
150
+ ## Privacy
151
+
152
+ - **100% local** โ€” code never leaves your machine
153
+ - **Apache 2.0** โ€” free forever, no telemetry, no cloud
154
+ - Community sharing sends only **abstract pattern types** (zero code, zero filenames, max 300 bytes per payload)
155
+
156
+ ---
78
157
 
79
158
  ## Architecture
80
159
 
81
160
  ```
82
- .cell/
83
- โ”œโ”€โ”€ personal/ โ€” profile, style, errors, decisions
84
- โ”œโ”€โ”€ team/ โ€” members, shared patterns, blind spots, knowledge map
85
- โ”œโ”€โ”€ community/ โ€” aggregate patterns, benchmarks, shares
86
- โ””โ”€โ”€ cell.db โ€” SQLite database (all persistent data)
161
+ ~/.fivo/cell/
162
+ โ”œโ”€โ”€ cell.db โ€” SQLite (all persistent data)
163
+ โ”œโ”€โ”€ daemon.log โ€” daemon output (replaces stderr)
164
+ โ””โ”€โ”€ daemon.pid โ€” process tracking
87
165
 
88
- .cell/team/ in git repo โ€” push/pull for team sharing
166
+ .cell/
167
+ โ”œโ”€โ”€ personal/ โ€” profile, style, errors, decisions
168
+ โ”œโ”€โ”€ team/ โ€” members, shared patterns, knowledge map
169
+ โ””โ”€โ”€ community/ โ€” aggregate patterns, benchmarks, shares
89
170
  ```
90
171
 
91
- ## Privacy
92
-
93
- - **100% local** โ€” code never leaves your machine
94
- - **Apache 2.0** โ€” free forever
95
- - Community sharing sends only **abstract pattern types** (zero code, zero filenames)
96
- - Maximum 300 bytes per community payload
172
+ ---
97
173
 
98
174
  ## License
99
175
 
@@ -1 +1 @@
1
- {"version":3,"file":"behavioral-tracker.d.ts","sourceRoot":"","sources":["../src/behavioral-tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"behavioral-tracker.d.ts","sourceRoot":"","sources":["../src/behavioral-tracker.ts"],"names":[],"mappings":"AAEA,wBAAgB,kBAAkB,IAAI,IAAI,CAiDzC;AAID,wBAAgB,QAAQ,CAAC,IAAI,EAAE;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAOjB;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,IAAI,CAKP;AAED,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC,CAoBD;AAED,wBAAgB,eAAe,CAAC,KAAK,GAAE,MAAW,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC3E,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC,CAmBD;AAID,wBAAgB,WAAW,CAAC,IAAI,EAAE;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAOjB;AAED,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,KAAK,CAAC;IACxE,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CAmBD;AAID,wBAAgB,UAAU,CAAC,IAAI,EAAE;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAQjB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,IAAI,CAYP;AAID,wBAAgB,QAAQ,CAAC,IAAI,EAAE;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAOjB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAG1E;AAED,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC,CAgBD;AAID,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;IACnD,YAAY,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;IACjD,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC;IACjD,cAAc,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;IACrD,WAAW,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;CAClD,CAiBA;AAID;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,IAAI,CAWP;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC,CAoBA;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,KAAK,CAAC;IAC5E,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CAiBD"}
@@ -238,7 +238,8 @@ function getRecentDecisionsWithAgo(project, limit = 5) {
238
238
  const rows = getDecisions(project, limit);
239
239
  const now = Date.now();
240
240
  return rows.map(r => {
241
- const ts = new Date(r.decidedAt).getTime();
241
+ // SQLite datetime('now') returns UTC; append Z so JS parses as UTC, not local
242
+ const ts = parseSqliteUtc(r.decidedAt);
242
243
  const diffMs = now - ts;
243
244
  return {
244
245
  id: r.id,
@@ -269,4 +270,18 @@ function formatAgo(ms) {
269
270
  const month = Math.floor(day / 30);
270
271
  return `${month} month${month === 1 ? '' : 's'} ago`;
271
272
  }
273
+ /**
274
+ * Parse a SQLite `datetime('now')` string (UTC, no TZ marker) into JS ms.
275
+ * Without this helper, `new Date(str)` interprets SQLite datetimes as LOCAL time,
276
+ * producing a 5h30m offset in IST.
277
+ */
278
+ function parseSqliteUtc(s) {
279
+ if (!s)
280
+ return 0;
281
+ if (s.endsWith('Z') || /[+-]\d{2}:?\d{2}$/.test(s)) {
282
+ return new Date(s).getTime();
283
+ }
284
+ return new Date(s.replace(' ', 'T') + 'Z').getTime();
285
+ }
286
+ // test touch 14:50:07
272
287
  //# sourceMappingURL=behavioral-tracker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"behavioral-tracker.js","sourceRoot":"","sources":["../src/behavioral-tracker.ts"],"names":[],"mappings":";;AAEA,gDAiDC;AAID,4BAaC;AAED,kCAUC;AAED,4CA0BC;AAED,0CA2BC;AAID,kCAeC;AAED,oCA4BC;AAID,gCAYC;AAED,8CAgBC;AAID,4BAWC;AAED,4CAGC;AAED,4CAsBC;AAID,gDAyBC;AASD,gDAeC;AAMD,4CAuBC;AAMD,8DAuBC;AAvXD,8CAAwC;AAExC,SAAgB,kBAAkB;IAChC,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CP,CAAC,CAAC;AACL,CAAC;AAED,gFAAgF;AAEhF,SAAgB,QAAQ,CAAC,IAMxB;IACC,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,kBAAkB,EAAE,CAAC;IACrB,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAClB,2GAA2G,CAC5G,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;IAC1G,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,SAAgB,WAAW,CAAC,IAK3B;IACC,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,EAAE,CAAC,OAAO,CACR,uFAAuF,CACxF,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACnF,CAAC;AAED,SAAgB,gBAAgB,CAAC,OAAgB;IAO/C,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,kBAAkB,EAAE,CAAC;IACrB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxC,OAAO,EAAE,CAAC,OAAO,CAAC;;;;;qBAKC,KAAK;;;GAGvB,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAMd,CAAC;AACL,CAAC;AAED,SAAgB,eAAe,CAAC,QAAgB,EAAE,EAAE,OAAgB;IASlE,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,kBAAkB,EAAE,CAAC;IACrB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACpD,OAAO,EAAE,CAAC,OAAO,CAAC;;;qBAGC,KAAK;;GAEvB,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAQd,CAAC;AACL,CAAC;AAED,gFAAgF;AAEhF,SAAgB,WAAW,CAAC,IAQ3B;IACC,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,kBAAkB,EAAE,CAAC;IACrB,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAClB,yHAAyH,CAC1H,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAC3I,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,SAAgB,YAAY,CAAC,OAAgB,EAAE,QAAgB,EAAE;IAU/D,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,kBAAkB,EAAE,CAAC;IACrB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACpD,OAAO,EAAE,CAAC,OAAO,CAAC;;wBAEI,KAAK;;GAE1B,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CASd,CAAC;AACL,CAAC;AAED,gFAAgF;AAEhF,SAAgB,UAAU,CAAC,IAI1B;IACC,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,kBAAkB,EAAE,CAAC;IACrB,EAAE,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACzF,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAClB,kFAAkF,CACnF,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;IACvE,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,SAAgB,iBAAiB,CAAC,OAAgB;IAKhD,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,kBAAkB,EAAE,CAAC;IACrB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAChF,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC;;uBAEF,KAAK;;GAEzB,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAmE,CAAC;IACpF,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;AAC5F,CAAC;AAED,gFAAgF;AAEhF,SAAgB,QAAQ,CAAC,IAIxB;IACC,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,kBAAkB,EAAE,CAAC;IACrB,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAClB,0EAA0E,CAC3E,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7D,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,SAAgB,gBAAgB,CAAC,OAAe,EAAE,UAAkB;IAClE,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,EAAE,CAAC,OAAO,CAAC,gEAAgE,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACxG,CAAC;AAED,SAAgB,gBAAgB,CAAC,OAAgB;IAO/C,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,kBAAkB,EAAE,CAAC;IACrB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxC,OAAO,EAAE,CAAC,OAAO,CAAC;;qBAEC,KAAK;;GAEvB,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAMd,CAAC;AACL,CAAC;AAED,gFAAgF;AAEhF,SAAgB,kBAAkB,CAAC,OAAgB;IASjD,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,kBAAkB,EAAE,CAAC;IACrB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxC,MAAM,WAAW,GAAI,EAAE,CAAC,OAAO,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAmB,CAAC,CAAC,CAAC;IACnH,MAAM,cAAc,GAAI,EAAE,CAAC,OAAO,CAAC,0CAA0C,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAmB,CAAC,CAAC,CAAC;IAEzH,OAAO;QACL,WAAW;QACX,aAAa,EAAE,gBAAgB,CAAC,OAAO,CAAC;QACxC,YAAY,EAAE,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC;QACzC,cAAc;QACd,eAAe,EAAE,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC;QACzC,cAAc,EAAE,iBAAiB,CAAC,OAAO,CAAC;QAC1C,WAAW,EAAE,gBAAgB,CAAC,OAAO,CAAC;KACvC,CAAC;AACJ,CAAC;AAED,+EAA+E;AAE/E;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,OAAgB;IAKjD,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;IACnB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC;;yBAEA,KAAK;;GAE3B,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAA0E,CAAC;IAC3F,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,OAAgB;IAI/C,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,IAAA,gBAAK,GAAE,CAAC;QACnB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;2BAED,KAAK;;KAE3B,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAA6C,CAAC;QAC9D,MAAM,UAAU,GAA2B,EAAE,CAAC;QAC9C,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,UAAU,CAAC,CAAC,CAAC,QAAQ,IAAI,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACpD,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IACtC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,yBAAyB,CAAC,OAAgB,EAAE,KAAK,GAAG,CAAC;IAQnE,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAClB,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC;QACxB,OAAO;YACL,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,0DAA0D;YAC1D,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;YACzB,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC;YACtB,SAAS,EAAE,CAAC,CAAC,SAAS;SACvB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,EAAU;IAC3B,IAAI,EAAE,GAAG,CAAC;QAAE,OAAO,UAAU,CAAC;IAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAClC,IAAI,GAAG,GAAG,EAAE;QAAE,OAAO,GAAG,GAAG,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAChE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;IACjC,IAAI,GAAG,GAAG,EAAE;QAAE,OAAO,GAAG,GAAG,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAChE,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;IAChC,IAAI,EAAE,GAAG,EAAE;QAAE,OAAO,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAChC,IAAI,GAAG,GAAG,EAAE;QAAE,OAAO,GAAG,GAAG,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;IACnC,OAAO,GAAG,KAAK,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"behavioral-tracker.js","sourceRoot":"","sources":["../src/behavioral-tracker.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -39,6 +39,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
39
39
  Object.defineProperty(exports, "__esModule", { value: true });
40
40
  const path = __importStar(require("path"));
41
41
  const fs = __importStar(require("fs"));
42
+ const os = __importStar(require("os"));
42
43
  const chalk_1 = __importDefault(require("chalk"));
43
44
  const figlet_1 = __importDefault(require("figlet"));
44
45
  const gradient_string_1 = __importDefault(require("gradient-string"));
@@ -87,6 +88,11 @@ function parseArgs(argv) {
87
88
  const args = parseArgs(process.argv.slice(2));
88
89
  const cmd = args[0] || '';
89
90
  switch (cmd) {
91
+ case '--version':
92
+ case '-v':
93
+ case 'version':
94
+ doVersion();
95
+ break;
90
96
  case 'start':
91
97
  doStart();
92
98
  break;
@@ -123,7 +129,12 @@ switch (cmd) {
123
129
  case 'context':
124
130
  doContext();
125
131
  break;
132
+ case 'mcp-config':
133
+ doMcpConfig();
134
+ break;
126
135
  case 'help':
136
+ case '--help':
137
+ case '-h':
127
138
  doHelp();
128
139
  break;
129
140
  default:
@@ -321,6 +332,34 @@ function semiLabel(s) {
321
332
  return 'mixed';
322
333
  return s;
323
334
  }
335
+ // โ”€โ”€โ”€ cell --version / -v / version โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
336
+ function doVersion() {
337
+ const pkg = require('../package.json');
338
+ console.log(`${C.primary('cell')} v${C.num(pkg.version)}`);
339
+ console.log(C.dim(` ${pkg.description}`));
340
+ console.log();
341
+ // Live info that's useful at a glance
342
+ try {
343
+ const http = require('http');
344
+ http.get('http://localhost:9876/health', (res) => {
345
+ let data = '';
346
+ res.on('data', (c) => { data += c || ''; });
347
+ res.on('end', () => {
348
+ const live = res.statusCode === 200 ? C.success('running') : C.warn(`status ${res.statusCode}`);
349
+ console.log(` Daemon: ${live} on port 9876`);
350
+ console.log(` Tools: 67 MCP tools registered`);
351
+ console.log(` License: Apache-2.0`);
352
+ console.log();
353
+ });
354
+ }).on('error', () => {
355
+ console.log(` Daemon: ${C.warn('not running')} โ€” start with: cell start`);
356
+ console.log(` Tools: 67 MCP tools (ready when daemon starts)`);
357
+ console.log(` License: Apache-2.0`);
358
+ console.log();
359
+ });
360
+ }
361
+ catch { }
362
+ }
324
363
  function doStatus() {
325
364
  // โ”€โ”€โ”€ Flag passthroughs (Pre-Launch Test 1 + Test 3) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
326
365
  // Allow `cell status --session` and `cell status --decisions` as
@@ -521,7 +560,7 @@ function doSession() {
521
560
  const patterns = getPatternCounts(project);
522
561
  const behavior = getBehaviorSummary(project);
523
562
  if (last) {
524
- const ago = formatTimeAgo(new Date(last.lastTouched).getTime());
563
+ const ago = formatTimeAgo(parseSqliteUtc(last.lastTouched));
525
564
  console.log(` Last file: ${C.num(last.file)}`);
526
565
  console.log(` Time: ${ago} (${last.touchCount} touch${last.touchCount === 1 ? '' : 'es'})`);
527
566
  }
@@ -595,6 +634,23 @@ function formatTimeAgo(ts) {
595
634
  const month = Math.floor(day / 30);
596
635
  return `${month} month${month === 1 ? '' : 's'} ago`;
597
636
  }
637
+ /**
638
+ * Parse a SQLite `datetime('now')` string into a JS millisecond timestamp.
639
+ * SQLite's datetime() returns UTC time as a string like "2026-06-05 09:20:26"
640
+ * (no timezone marker). JS `new Date(str)` would treat this as LOCAL time,
641
+ * which causes a 5h30m offset in IST. We force UTC interpretation by
642
+ * appending "Z" or by replacing the space with "T" + "Z".
643
+ */
644
+ function parseSqliteUtc(s) {
645
+ if (!s)
646
+ return 0;
647
+ // Already has TZ marker
648
+ if (s.endsWith('Z') || /[+-]\d{2}:?\d{2}$/.test(s)) {
649
+ return new Date(s).getTime();
650
+ }
651
+ // Replace space separator with T, append Z
652
+ return new Date(s.replace(' ', 'T') + 'Z').getTime();
653
+ }
598
654
  // โ”€โ”€โ”€ cell team โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
599
655
  function doTeam() {
600
656
  console.log();
@@ -1169,6 +1225,139 @@ function doContext() {
1169
1225
  return;
1170
1226
  }
1171
1227
  }
1228
+ // โ”€โ”€โ”€ cell mcp-config (Pre-Launch: auto-register all IDEs) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
1229
+ /**
1230
+ * Auto-write MCP config for every supported IDE. Detects which config files
1231
+ * exist and creates/updates the cell MCP entry in each.
1232
+ *
1233
+ * Supported IDEs:
1234
+ * - Cursor: ~/.cursor/mcp.json
1235
+ * - Gemini CLI: ~/.gemini/settings.json
1236
+ * - Antigravity: ~/.gemini/config/mcp_config.json
1237
+ * - Codex: ~/.codex/config.json
1238
+ * - OpenCode: ~/.config/opencode/opencode.jsonc
1239
+ */
1240
+ function doMcpConfig() {
1241
+ console.log();
1242
+ console.log(C.bold(' Cell MCP Auto-Config'));
1243
+ console.log(C.dim(' โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€'));
1244
+ console.log();
1245
+ const homedir = os.homedir();
1246
+ const targets = [
1247
+ {
1248
+ name: 'Cursor',
1249
+ configPath: path.join(homedir, '.cursor', 'mcp.json'),
1250
+ format: 'json',
1251
+ cellKey: 'fivo-cell',
1252
+ url: 'http://localhost:9876/mcp',
1253
+ description: '~/.cursor/mcp.json',
1254
+ buildPayload: (url) => ({ url }),
1255
+ },
1256
+ {
1257
+ name: 'Gemini CLI',
1258
+ configPath: path.join(homedir, '.gemini', 'settings.json'),
1259
+ format: 'json',
1260
+ cellKey: 'fivo-cell',
1261
+ url: 'http://localhost:9876/mcp',
1262
+ description: '~/.gemini/settings.json',
1263
+ buildPayload: (url) => ({ url }),
1264
+ },
1265
+ {
1266
+ name: 'Antigravity',
1267
+ configPath: path.join(homedir, '.gemini', 'config', 'mcp_config.json'),
1268
+ format: 'json',
1269
+ cellKey: 'fivo-cell',
1270
+ url: 'http://localhost:9876/mcp',
1271
+ description: '~/.gemini/config/mcp_config.json',
1272
+ buildPayload: (url) => ({ url }),
1273
+ },
1274
+ {
1275
+ name: 'Codex',
1276
+ configPath: path.join(homedir, '.codex', 'config.json'),
1277
+ format: 'json',
1278
+ cellKey: 'fivo-cell',
1279
+ url: 'http://localhost:9876/mcp',
1280
+ description: '~/.codex/config.json',
1281
+ buildPayload: (url) => ({ url }),
1282
+ },
1283
+ {
1284
+ name: 'OpenCode',
1285
+ configPath: path.join(homedir, '.config', 'opencode', 'opencode.jsonc'),
1286
+ format: 'jsonc',
1287
+ cellKey: 'cell',
1288
+ url: 'http://localhost:9876/mcp',
1289
+ description: '~/.config/opencode/opencode.jsonc',
1290
+ buildPayload: (url) => ({
1291
+ type: 'remote',
1292
+ url,
1293
+ enabled: true,
1294
+ }),
1295
+ },
1296
+ ];
1297
+ let writtenCount = 0;
1298
+ let skippedCount = 0;
1299
+ for (const t of targets) {
1300
+ const dir = path.dirname(t.configPath);
1301
+ const exists = fs.existsSync(t.configPath);
1302
+ let cfg = {};
1303
+ if (exists) {
1304
+ try {
1305
+ const raw = fs.readFileSync(t.configPath, 'utf8');
1306
+ // Strip // comments for jsonc (OpenCode)
1307
+ const stripped = t.format === 'jsonc'
1308
+ ? raw.replace(/^\s*\/\/.*$/gm, '').replace(/\/\*[\s\S]*?\*\//g, '')
1309
+ : raw;
1310
+ cfg = JSON.parse(stripped);
1311
+ }
1312
+ catch (err) {
1313
+ const msg = err instanceof Error ? err.message : String(err);
1314
+ console.log(` ${C.warn('!')} ${t.name}: parse failed โ€” ${msg}`);
1315
+ console.log(C.dim(` ${t.configPath}`));
1316
+ skippedCount++;
1317
+ continue;
1318
+ }
1319
+ }
1320
+ // Get or create the right container
1321
+ let container;
1322
+ if (t.name === 'OpenCode') {
1323
+ // OpenCode uses top-level "mcp" object, not "mcpServers"
1324
+ container = cfg.mcp || {};
1325
+ }
1326
+ else {
1327
+ container = cfg.mcpServers || {};
1328
+ }
1329
+ // Set/overwrite the cell entry
1330
+ container[t.cellKey] = t.buildPayload(t.url);
1331
+ // Write back
1332
+ if (t.name === 'OpenCode') {
1333
+ cfg.mcp = container;
1334
+ }
1335
+ else {
1336
+ cfg.mcpServers = container;
1337
+ }
1338
+ try {
1339
+ fs.mkdirSync(dir, { recursive: true });
1340
+ const json = JSON.stringify(cfg, null, 2);
1341
+ fs.writeFileSync(t.configPath, json + '\n', 'utf8');
1342
+ const action = exists ? 'updated' : 'created';
1343
+ console.log(` ${C.success('โœ“')} ${t.name.padEnd(14)} ${C.dim(action)} โ€” ${t.configPath}`);
1344
+ writtenCount++;
1345
+ }
1346
+ catch (err) {
1347
+ const msg = err instanceof Error ? err.message : String(err);
1348
+ console.log(` ${C.warn('!')} ${t.name}: write failed โ€” ${msg}`);
1349
+ skippedCount++;
1350
+ }
1351
+ }
1352
+ console.log();
1353
+ console.log(` ${C.success('Done')}: ${writtenCount} config file${writtenCount === 1 ? '' : 's'} ${writtenCount === 1 ? 'written' : 'written'}`);
1354
+ if (skippedCount > 0)
1355
+ console.log(C.dim(` ${skippedCount} skipped (parse errors)`));
1356
+ console.log();
1357
+ console.log(C.dim(' Restart your IDE to load the new MCP config.'));
1358
+ console.log(C.dim(' Make sure `cell start` is running for tools to connect.'));
1359
+ console.log();
1360
+ }
1172
1361
  // โ”€โ”€โ”€ cell help โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
1173
1362
  function doHelp() {
1174
1363
  console.log();
@@ -1177,6 +1366,8 @@ function doHelp() {
1177
1366
  console.log();
1178
1367
  console.log(` ${C.primary('cell start')} Start daemon + MCP (port 9876)`);
1179
1368
  console.log(` ${C.primary('cell stop')} Stop daemon`);
1369
+ console.log(` ${C.primary('cell --version')} Print version + daemon status`);
1370
+ console.log(` ${C.primary('cell mcp-config')} Auto-register cell MCP in Cursor/Antigravity/Codex/OpenCode`);
1180
1371
  console.log(` ${C.primary('cell scan')} Scan codebase + build layers`);
1181
1372
  console.log(` ${C.primary('cell analyze')} AI prompts from scan data`);
1182
1373
  console.log(` ${C.primary('cell status')} What Cell knows about you`);
@@ -1196,4 +1387,5 @@ function doHelp() {
1196
1387
  console.log(C.dim(' Then: cell start'));
1197
1388
  console.log();
1198
1389
  }
1390
+ // test touch 14:40:59
1199
1391
  //# sourceMappingURL=cli.js.map