@oh-my-pi/pi-coding-agent 12.16.0 → 12.17.2

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
@@ -2,6 +2,36 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [12.17.2] - 2026-02-21
6
+ ### Changed
7
+
8
+ - Modified bash command normalization to only apply explicit head/tail parameters from tool input, removing automatic extraction from command pipes
9
+ - Updated shell snapshot creation to use explicit timeout and kill signal configuration for more reliable process termination
10
+
11
+ ### Fixed
12
+
13
+ - Fixed persistent shell session state not being reset after command abort or hard timeout, preventing stale environment variables from affecting subsequent commands
14
+ - Fixed hard timeout handling to properly interrupt long-running commands that exceed the grace period beyond the configured timeout
15
+
16
+ ## [12.17.1] - 2026-02-21
17
+ ### Added
18
+
19
+ - Added `filterBrowser` option to filter out browser automation MCP servers when builtin browser tool is enabled
20
+ - Added `isBrowserMCPServer()` function to detect browser automation MCP servers by name, URL, or command patterns
21
+ - Added `filterBrowserMCPServers()` function to remove browser MCP servers from loaded configurations
22
+ - Added `BrowserFilterResult` type for browser MCP server filtering results
23
+
24
+ ## [12.17.0] - 2026-02-21
25
+ ### Added
26
+
27
+ - Added timeout protection (5 seconds) for system prompt preparation with graceful fallback to minimal context on timeout
28
+
29
+ ### Changed
30
+
31
+ - Replaced glob-based AGENTS.md discovery with depth-limited directory traversal (depth 1-4) for improved performance and control
32
+ - Refactored system prompt preparation to parallelize file loading operations with a 5-second timeout to prevent startup hangs
33
+ - Unified `renderCall` signatures to `(args, options, theme)` across all tool renderers and extension types
34
+
5
35
  ## [12.16.0] - 2026-02-21
6
36
 
7
37
  ### Added
package/package.json CHANGED
@@ -1,50 +1,259 @@
1
1
  {
2
+ "type": "module",
2
3
  "name": "@oh-my-pi/pi-coding-agent",
3
- "version": "12.16.0",
4
+ "version": "12.17.2",
4
5
  "description": "Coding agent CLI with read, bash, edit, write tools and session management",
5
- "type": "module",
6
- "bin": {
7
- "omp": "src/cli.ts"
6
+ "homepage": "https://github.com/can1357/oh-my-pi",
7
+ "author": "Can Bölük",
8
+ "contributors": [
9
+ "Mario Zechner"
10
+ ],
11
+ "license": "MIT",
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "git+https://github.com/can1357/oh-my-pi.git",
15
+ "directory": "packages/coding-agent"
8
16
  },
17
+ "bugs": {
18
+ "url": "https://github.com/can1357/oh-my-pi/issues"
19
+ },
20
+ "keywords": [
21
+ "coding-agent",
22
+ "ai",
23
+ "llm",
24
+ "cli",
25
+ "tui",
26
+ "agent"
27
+ ],
9
28
  "main": "./src/index.ts",
10
29
  "types": "./src/index.ts",
30
+ "bin": {
31
+ "omp": "src/cli.ts"
32
+ },
33
+ "scripts": {
34
+ "check": "tsgo -p tsconfig.json",
35
+ "format-prompts": "bun scripts/format-prompts.ts",
36
+ "generate-docs-index": "bun scripts/generate-docs-index.ts",
37
+ "prepack": "bun scripts/generate-docs-index.ts",
38
+ "build:binary": "cd ../.. && bun --cwd=packages/stats scripts/generate-client-bundle.ts && bun --cwd=packages/natives run embed:native && bun build --compile --define PI_COMPILED=true --root . ./packages/coding-agent/src/cli.ts --outfile packages/coding-agent/dist/omp && bun --cwd=packages/natives run embed:native --reset && bun --cwd=packages/stats scripts/generate-client-bundle.ts --reset",
39
+ "generate-template": "bun scripts/generate-template.ts",
40
+ "test": "bun test"
41
+ },
42
+ "dependencies": {
43
+ "@mozilla/readability": "0.6.0",
44
+ "@oh-my-pi/omp-stats": "12.17.2",
45
+ "@oh-my-pi/pi-agent-core": "12.17.2",
46
+ "@oh-my-pi/pi-ai": "12.17.2",
47
+ "@oh-my-pi/pi-natives": "12.17.2",
48
+ "@oh-my-pi/pi-tui": "12.17.2",
49
+ "@oh-my-pi/pi-utils": "12.17.2",
50
+ "@sinclair/typebox": "^0.34.48",
51
+ "@xterm/headless": "^6.0.0",
52
+ "ajv": "^8.18.0",
53
+ "chalk": "^5.6.2",
54
+ "diff": "^8.0.3",
55
+ "file-type": "^21.3.0",
56
+ "glob": "^13.0.3",
57
+ "handlebars": "^4.7.8",
58
+ "ignore": "^7.0.5",
59
+ "linkedom": "^0.18.12",
60
+ "marked": "^17.0.2",
61
+ "node-html-parser": "^7.0.2",
62
+ "puppeteer": "^24.37.3",
63
+ "smol-toml": "^1.6.0",
64
+ "zod": "^4.3.6"
65
+ },
66
+ "devDependencies": {
67
+ "@types/bun": "^1.3.9",
68
+ "@types/ms": "^2.1.0",
69
+ "ms": "^2.1.3"
70
+ },
71
+ "engines": {
72
+ "bun": ">=1.3.7"
73
+ },
74
+ "files": [
75
+ "src",
76
+ "scripts",
77
+ "examples",
78
+ "README.md",
79
+ "CHANGELOG.md"
80
+ ],
11
81
  "exports": {
12
82
  ".": {
13
83
  "types": "./src/index.ts",
14
84
  "import": "./src/index.ts"
15
85
  },
16
- "./hooks": {
17
- "types": "./src/extensibility/hooks/index.ts",
18
- "import": "./src/extensibility/hooks/index.ts"
86
+ "./*": {
87
+ "types": "./src/*.ts",
88
+ "import": "./src/*.ts"
19
89
  },
20
- "./sdk": {
21
- "types": "./src/sdk.ts",
22
- "import": "./src/sdk.ts"
90
+ "./capability": {
91
+ "types": "./src/capability/index.ts",
92
+ "import": "./src/capability/index.ts"
23
93
  },
24
- "./prompts/*": "./src/prompts/*.md",
25
94
  "./capability/*": {
26
95
  "types": "./src/capability/*.ts",
27
96
  "import": "./src/capability/*.ts"
28
97
  },
98
+ "./cli/*": {
99
+ "types": "./src/cli/*.ts",
100
+ "import": "./src/cli/*.ts"
101
+ },
102
+ "./commands/*": {
103
+ "types": "./src/commands/*.ts",
104
+ "import": "./src/commands/*.ts"
105
+ },
106
+ "./commit": {
107
+ "types": "./src/commit/index.ts",
108
+ "import": "./src/commit/index.ts"
109
+ },
110
+ "./commit/*": {
111
+ "types": "./src/commit/*.ts",
112
+ "import": "./src/commit/*.ts"
113
+ },
114
+ "./commit/agentic": {
115
+ "types": "./src/commit/agentic/index.ts",
116
+ "import": "./src/commit/agentic/index.ts"
117
+ },
118
+ "./commit/agentic/*": {
119
+ "types": "./src/commit/agentic/*.ts",
120
+ "import": "./src/commit/agentic/*.ts"
121
+ },
122
+ "./commit/agentic/tools": {
123
+ "types": "./src/commit/agentic/tools/index.ts",
124
+ "import": "./src/commit/agentic/tools/index.ts"
125
+ },
126
+ "./commit/agentic/tools/*": {
127
+ "types": "./src/commit/agentic/tools/*.ts",
128
+ "import": "./src/commit/agentic/tools/*.ts"
129
+ },
130
+ "./commit/analysis": {
131
+ "types": "./src/commit/analysis/index.ts",
132
+ "import": "./src/commit/analysis/index.ts"
133
+ },
134
+ "./commit/analysis/*": {
135
+ "types": "./src/commit/analysis/*.ts",
136
+ "import": "./src/commit/analysis/*.ts"
137
+ },
138
+ "./commit/changelog": {
139
+ "types": "./src/commit/changelog/index.ts",
140
+ "import": "./src/commit/changelog/index.ts"
141
+ },
142
+ "./commit/changelog/*": {
143
+ "types": "./src/commit/changelog/*.ts",
144
+ "import": "./src/commit/changelog/*.ts"
145
+ },
146
+ "./commit/git": {
147
+ "types": "./src/commit/git/index.ts",
148
+ "import": "./src/commit/git/index.ts"
149
+ },
150
+ "./commit/git/*": {
151
+ "types": "./src/commit/git/*.ts",
152
+ "import": "./src/commit/git/*.ts"
153
+ },
154
+ "./commit/map-reduce": {
155
+ "types": "./src/commit/map-reduce/index.ts",
156
+ "import": "./src/commit/map-reduce/index.ts"
157
+ },
158
+ "./commit/map-reduce/*": {
159
+ "types": "./src/commit/map-reduce/*.ts",
160
+ "import": "./src/commit/map-reduce/*.ts"
161
+ },
162
+ "./commit/utils/*": {
163
+ "types": "./src/commit/utils/*.ts",
164
+ "import": "./src/commit/utils/*.ts"
165
+ },
29
166
  "./config/*": {
30
167
  "types": "./src/config/*.ts",
31
168
  "import": "./src/config/*.ts"
32
169
  },
170
+ "./debug": {
171
+ "types": "./src/debug/index.ts",
172
+ "import": "./src/debug/index.ts"
173
+ },
174
+ "./debug/*": {
175
+ "types": "./src/debug/*.ts",
176
+ "import": "./src/debug/*.ts"
177
+ },
178
+ "./discovery": {
179
+ "types": "./src/discovery/index.ts",
180
+ "import": "./src/discovery/index.ts"
181
+ },
182
+ "./discovery/*": {
183
+ "types": "./src/discovery/*.ts",
184
+ "import": "./src/discovery/*.ts"
185
+ },
186
+ "./exa": {
187
+ "types": "./src/exa/index.ts",
188
+ "import": "./src/exa/index.ts"
189
+ },
190
+ "./exa/*": {
191
+ "types": "./src/exa/*.ts",
192
+ "import": "./src/exa/*.ts"
193
+ },
194
+ "./exec/*": {
195
+ "types": "./src/exec/*.ts",
196
+ "import": "./src/exec/*.ts"
197
+ },
198
+ "./export/*": {
199
+ "types": "./src/export/*.ts",
200
+ "import": "./src/export/*.ts"
201
+ },
202
+ "./export/html": {
203
+ "types": "./src/export/html/index.ts",
204
+ "import": "./src/export/html/index.ts"
205
+ },
206
+ "./export/html/*": {
207
+ "types": "./src/export/html/*.ts",
208
+ "import": "./src/export/html/*.ts"
209
+ },
33
210
  "./extensibility/*": {
34
211
  "types": "./src/extensibility/*.ts",
35
212
  "import": "./src/extensibility/*.ts"
36
213
  },
37
- "./extensibility/hooks/*": {
38
- "types": "./src/extensibility/hooks/*.ts",
39
- "import": "./src/extensibility/hooks/*.ts"
214
+ "./extensibility/custom-commands": {
215
+ "types": "./src/extensibility/custom-commands/index.ts",
216
+ "import": "./src/extensibility/custom-commands/index.ts"
217
+ },
218
+ "./extensibility/custom-commands/*": {
219
+ "types": "./src/extensibility/custom-commands/*.ts",
220
+ "import": "./src/extensibility/custom-commands/*.ts"
221
+ },
222
+ "./extensibility/custom-commands/bundled/review": {
223
+ "types": "./src/extensibility/custom-commands/bundled/review/index.ts",
224
+ "import": "./src/extensibility/custom-commands/bundled/review/index.ts"
225
+ },
226
+ "./extensibility/custom-tools": {
227
+ "types": "./src/extensibility/custom-tools/index.ts",
228
+ "import": "./src/extensibility/custom-tools/index.ts"
229
+ },
230
+ "./extensibility/custom-tools/*": {
231
+ "types": "./src/extensibility/custom-tools/*.ts",
232
+ "import": "./src/extensibility/custom-tools/*.ts"
233
+ },
234
+ "./extensibility/extensions": {
235
+ "types": "./src/extensibility/extensions/index.ts",
236
+ "import": "./src/extensibility/extensions/index.ts"
40
237
  },
41
238
  "./extensibility/extensions/*": {
42
239
  "types": "./src/extensibility/extensions/*.ts",
43
240
  "import": "./src/extensibility/extensions/*.ts"
44
241
  },
45
- "./session/*": {
46
- "types": "./src/session/*.ts",
47
- "import": "./src/session/*.ts"
242
+ "./extensibility/hooks": {
243
+ "types": "./src/extensibility/hooks/index.ts",
244
+ "import": "./src/extensibility/hooks/index.ts"
245
+ },
246
+ "./extensibility/hooks/*": {
247
+ "types": "./src/extensibility/hooks/*.ts",
248
+ "import": "./src/extensibility/hooks/*.ts"
249
+ },
250
+ "./extensibility/plugins": {
251
+ "types": "./src/extensibility/plugins/index.ts",
252
+ "import": "./src/extensibility/plugins/index.ts"
253
+ },
254
+ "./extensibility/plugins/*": {
255
+ "types": "./src/extensibility/plugins/*.ts",
256
+ "import": "./src/extensibility/plugins/*.ts"
48
257
  },
49
258
  "./internal-urls": {
50
259
  "types": "./src/internal-urls/index.ts",
@@ -54,85 +263,198 @@
54
263
  "types": "./src/internal-urls/*.ts",
55
264
  "import": "./src/internal-urls/*.ts"
56
265
  },
266
+ "./ipy/*": {
267
+ "types": "./src/ipy/*.ts",
268
+ "import": "./src/ipy/*.ts"
269
+ },
270
+ "./lsp": {
271
+ "types": "./src/lsp/index.ts",
272
+ "import": "./src/lsp/index.ts"
273
+ },
274
+ "./lsp/*": {
275
+ "types": "./src/lsp/*.ts",
276
+ "import": "./src/lsp/*.ts"
277
+ },
278
+ "./lsp/clients": {
279
+ "types": "./src/lsp/clients/index.ts",
280
+ "import": "./src/lsp/clients/index.ts"
281
+ },
282
+ "./lsp/clients/*": {
283
+ "types": "./src/lsp/clients/*.ts",
284
+ "import": "./src/lsp/clients/*.ts"
285
+ },
286
+ "./mcp": {
287
+ "types": "./src/mcp/index.ts",
288
+ "import": "./src/mcp/index.ts"
289
+ },
290
+ "./mcp/*": {
291
+ "types": "./src/mcp/*.ts",
292
+ "import": "./src/mcp/*.ts"
293
+ },
294
+ "./mcp/transports": {
295
+ "types": "./src/mcp/transports/index.ts",
296
+ "import": "./src/mcp/transports/index.ts"
297
+ },
298
+ "./mcp/transports/*": {
299
+ "types": "./src/mcp/transports/*.ts",
300
+ "import": "./src/mcp/transports/*.ts"
301
+ },
302
+ "./memories": {
303
+ "types": "./src/memories/index.ts",
304
+ "import": "./src/memories/index.ts"
305
+ },
306
+ "./memories/*": {
307
+ "types": "./src/memories/*.ts",
308
+ "import": "./src/memories/*.ts"
309
+ },
310
+ "./modes": {
311
+ "types": "./src/modes/index.ts",
312
+ "import": "./src/modes/index.ts"
313
+ },
314
+ "./modes/*": {
315
+ "types": "./src/modes/*.ts",
316
+ "import": "./src/modes/*.ts"
317
+ },
318
+ "./modes/components": {
319
+ "types": "./src/modes/components/index.ts",
320
+ "import": "./src/modes/components/index.ts"
321
+ },
322
+ "./modes/components/*": {
323
+ "types": "./src/modes/components/*.ts",
324
+ "import": "./src/modes/components/*.ts"
325
+ },
326
+ "./modes/components/extensions": {
327
+ "types": "./src/modes/components/extensions/index.ts",
328
+ "import": "./src/modes/components/extensions/index.ts"
329
+ },
330
+ "./modes/components/extensions/*": {
331
+ "types": "./src/modes/components/extensions/*.ts",
332
+ "import": "./src/modes/components/extensions/*.ts"
333
+ },
334
+ "./modes/components/status-line": {
335
+ "types": "./src/modes/components/status-line/index.ts",
336
+ "import": "./src/modes/components/status-line/index.ts"
337
+ },
338
+ "./modes/components/status-line/*": {
339
+ "types": "./src/modes/components/status-line/*.ts",
340
+ "import": "./src/modes/components/status-line/*.ts"
341
+ },
342
+ "./modes/controllers/*": {
343
+ "types": "./src/modes/controllers/*.ts",
344
+ "import": "./src/modes/controllers/*.ts"
345
+ },
346
+ "./modes/rpc/*": {
347
+ "types": "./src/modes/rpc/*.ts",
348
+ "import": "./src/modes/rpc/*.ts"
349
+ },
350
+ "./modes/theme/*": {
351
+ "types": "./src/modes/theme/*.ts",
352
+ "import": "./src/modes/theme/*.ts"
353
+ },
354
+ "./modes/theme/defaults": {
355
+ "types": "./src/modes/theme/defaults/index.ts",
356
+ "import": "./src/modes/theme/defaults/index.ts"
357
+ },
358
+ "./modes/utils/*": {
359
+ "types": "./src/modes/utils/*.ts",
360
+ "import": "./src/modes/utils/*.ts"
361
+ },
362
+ "./patch": {
363
+ "types": "./src/patch/index.ts",
364
+ "import": "./src/patch/index.ts"
365
+ },
57
366
  "./patch/*": {
58
367
  "types": "./src/patch/*.ts",
59
368
  "import": "./src/patch/*.ts"
60
369
  },
61
- "./cli": {
62
- "types": "./src/cli.ts",
63
- "import": "./src/cli.ts"
370
+ "./plan-mode/*": {
371
+ "types": "./src/plan-mode/*.ts",
372
+ "import": "./src/plan-mode/*.ts"
64
373
  },
65
- "./*": {
66
- "types": "./src/*.ts",
67
- "import": "./src/*.ts"
374
+ "./prompts/*": "./src/prompts/*.md",
375
+ "./secrets": {
376
+ "types": "./src/secrets/index.ts",
377
+ "import": "./src/secrets/index.ts"
378
+ },
379
+ "./secrets/*": {
380
+ "types": "./src/secrets/*.ts",
381
+ "import": "./src/secrets/*.ts"
382
+ },
383
+ "./session/*": {
384
+ "types": "./src/session/*.ts",
385
+ "import": "./src/session/*.ts"
386
+ },
387
+ "./session/compaction": {
388
+ "types": "./src/session/compaction/index.ts",
389
+ "import": "./src/session/compaction/index.ts"
390
+ },
391
+ "./session/compaction/*": {
392
+ "types": "./src/session/compaction/*.ts",
393
+ "import": "./src/session/compaction/*.ts"
394
+ },
395
+ "./slash-commands/*": {
396
+ "types": "./src/slash-commands/*.ts",
397
+ "import": "./src/slash-commands/*.ts"
398
+ },
399
+ "./ssh/*": {
400
+ "types": "./src/ssh/*.ts",
401
+ "import": "./src/ssh/*.ts"
402
+ },
403
+ "./stt": {
404
+ "types": "./src/stt/index.ts",
405
+ "import": "./src/stt/index.ts"
406
+ },
407
+ "./stt/*": {
408
+ "types": "./src/stt/*.ts",
409
+ "import": "./src/stt/*.ts"
410
+ },
411
+ "./task": {
412
+ "types": "./src/task/index.ts",
413
+ "import": "./src/task/index.ts"
414
+ },
415
+ "./task/*": {
416
+ "types": "./src/task/*.ts",
417
+ "import": "./src/task/*.ts"
418
+ },
419
+ "./tools": {
420
+ "types": "./src/tools/index.ts",
421
+ "import": "./src/tools/index.ts"
422
+ },
423
+ "./tools/*": {
424
+ "types": "./src/tools/*.ts",
425
+ "import": "./src/tools/*.ts"
426
+ },
427
+ "./tui": {
428
+ "types": "./src/tui/index.ts",
429
+ "import": "./src/tui/index.ts"
430
+ },
431
+ "./tui/*": {
432
+ "types": "./src/tui/*.ts",
433
+ "import": "./src/tui/*.ts"
434
+ },
435
+ "./utils/*": {
436
+ "types": "./src/utils/*.ts",
437
+ "import": "./src/utils/*.ts"
438
+ },
439
+ "./web/scrapers": {
440
+ "types": "./src/web/scrapers/index.ts",
441
+ "import": "./src/web/scrapers/index.ts"
442
+ },
443
+ "./web/scrapers/*": {
444
+ "types": "./src/web/scrapers/*.ts",
445
+ "import": "./src/web/scrapers/*.ts"
446
+ },
447
+ "./web/search": {
448
+ "types": "./src/web/search/index.ts",
449
+ "import": "./src/web/search/index.ts"
450
+ },
451
+ "./web/search/*": {
452
+ "types": "./src/web/search/*.ts",
453
+ "import": "./src/web/search/*.ts"
454
+ },
455
+ "./web/search/providers/*": {
456
+ "types": "./src/web/search/providers/*.ts",
457
+ "import": "./src/web/search/providers/*.ts"
68
458
  }
69
- },
70
- "files": [
71
- "src",
72
- "scripts",
73
- "examples",
74
- "README.md",
75
- "CHANGELOG.md"
76
- ],
77
- "scripts": {
78
- "check": "tsgo -p tsconfig.json",
79
- "format-prompts": "bun scripts/format-prompts.ts",
80
- "generate-docs-index": "bun scripts/generate-docs-index.ts",
81
- "prepack": "bun scripts/generate-docs-index.ts",
82
- "build:binary": "cd ../.. && bun --cwd=packages/stats scripts/generate-client-bundle.ts && bun --cwd=packages/natives run embed:native && bun build --compile --define PI_COMPILED=true --root . ./packages/coding-agent/src/cli.ts --outfile packages/coding-agent/dist/omp && bun --cwd=packages/natives run embed:native --reset && bun --cwd=packages/stats scripts/generate-client-bundle.ts --reset",
83
- "generate-template": "bun scripts/generate-template.ts",
84
- "test": "bun test"
85
- },
86
- "dependencies": {
87
- "@mozilla/readability": "0.6.0",
88
- "@oh-my-pi/omp-stats": "12.16.0",
89
- "@oh-my-pi/pi-agent-core": "12.16.0",
90
- "@oh-my-pi/pi-ai": "12.16.0",
91
- "@oh-my-pi/pi-natives": "12.16.0",
92
- "@oh-my-pi/pi-tui": "12.16.0",
93
- "@oh-my-pi/pi-utils": "12.16.0",
94
- "@sinclair/typebox": "^0.34.48",
95
- "@xterm/headless": "^6.0.0",
96
- "ajv": "^8.18.0",
97
- "chalk": "^5.6.2",
98
- "diff": "^8.0.3",
99
- "file-type": "^21.3.0",
100
- "glob": "^13.0.3",
101
- "handlebars": "^4.7.8",
102
- "ignore": "^7.0.5",
103
- "linkedom": "^0.18.12",
104
- "marked": "^17.0.2",
105
- "node-html-parser": "^7.0.2",
106
- "puppeteer": "^24.37.3",
107
- "smol-toml": "^1.6.0",
108
- "zod": "^4.3.6"
109
- },
110
- "devDependencies": {
111
- "@types/bun": "^1.3.9",
112
- "@types/ms": "^2.1.0",
113
- "ms": "^2.1.3"
114
- },
115
- "keywords": [
116
- "coding-agent",
117
- "ai",
118
- "llm",
119
- "cli",
120
- "tui",
121
- "agent"
122
- ],
123
- "author": "Can Bölük",
124
- "contributors": ["Mario Zechner"],
125
- "license": "MIT",
126
- "repository": {
127
- "type": "git",
128
- "url": "git+https://github.com/can1357/oh-my-pi.git",
129
- "directory": "packages/coding-agent"
130
- },
131
- "homepage": "https://github.com/can1357/oh-my-pi",
132
- "bugs": {
133
- "url": "https://github.com/can1357/oh-my-pi/issues"
134
- },
135
- "engines": {
136
- "bun": ">=1.3.7"
137
- }
459
+ }
138
460
  }
@@ -85,9 +85,9 @@ function formatPercent(n: number): string {
85
85
 
86
86
  export async function runStatsCommand(cmd: StatsCommandArgs): Promise<void> {
87
87
  // Lazy import to avoid loading stats module when not needed
88
- const { getDashboardStats, syncAllSessions, getTotalMessageCount } = await import("@oh-my-pi/omp-stats");
89
- const { startServer } = await import("@oh-my-pi/omp-stats/src/server");
90
- const { closeDb } = await import("@oh-my-pi/omp-stats/src/db");
88
+ const { getDashboardStats, syncAllSessions, getTotalMessageCount, startServer, closeDb } = await import(
89
+ "@oh-my-pi/omp-stats"
90
+ );
91
91
 
92
92
  // Sync session files first
93
93
  console.log("Syncing session files...");