@oh-my-pi/pi-coding-agent 12.17.0 → 12.18.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
@@ -2,6 +2,48 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [12.18.0] - 2026-02-21
6
+
7
+ ### Added
8
+
9
+ - Added `overlay` option to custom UI hooks to display components as bottom-centered overlays instead of replacing the editor
10
+ - Added automatic chat transcript rebuild when returning from custom or debug UI to prevent message duplication
11
+
12
+ ### Changed
13
+
14
+ - Changed custom UI hook cleanup to conditionally restore editor state only when not using overlay mode
15
+ - Extracted environment variable configuration for non-interactive bash execution into reusable `NO_PAGER_ENV` constant
16
+ - Replaced custom timing instrumentation with logger.timeAsync() and logger.time() from pi-utils for consistent startup profiling
17
+ - Removed PI_DEBUG_STARTUP environment variable in favor of logger.debug() for conditional debug output
18
+ - Consolidated timing calls throughout initialization pipeline to use unified logger-based timing system
19
+
20
+ ### Removed
21
+
22
+ - Deleted utils/timings.ts module - timing functionality now provided by pi-utils logger
23
+
24
+ ### Fixed
25
+
26
+ - Fixed potential race condition in bash interactive component where output could be appended after the component was closed
27
+
28
+ ## [12.17.2] - 2026-02-21
29
+ ### Changed
30
+
31
+ - Modified bash command normalization to only apply explicit head/tail parameters from tool input, removing automatic extraction from command pipes
32
+ - Updated shell snapshot creation to use explicit timeout and kill signal configuration for more reliable process termination
33
+
34
+ ### Fixed
35
+
36
+ - Fixed persistent shell session state not being reset after command abort or hard timeout, preventing stale environment variables from affecting subsequent commands
37
+ - Fixed hard timeout handling to properly interrupt long-running commands that exceed the grace period beyond the configured timeout
38
+
39
+ ## [12.17.1] - 2026-02-21
40
+ ### Added
41
+
42
+ - Added `filterBrowser` option to filter out browser automation MCP servers when builtin browser tool is enabled
43
+ - Added `isBrowserMCPServer()` function to detect browser automation MCP servers by name, URL, or command patterns
44
+ - Added `filterBrowserMCPServers()` function to remove browser MCP servers from loaded configurations
45
+ - Added `BrowserFilterResult` type for browser MCP server filtering results
46
+
5
47
  ## [12.17.0] - 2026-02-21
6
48
  ### Added
7
49
 
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.17.0",
4
+ "version": "12.18.0",
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.18.0",
45
+ "@oh-my-pi/pi-agent-core": "12.18.0",
46
+ "@oh-my-pi/pi-ai": "12.18.0",
47
+ "@oh-my-pi/pi-natives": "12.18.0",
48
+ "@oh-my-pi/pi-tui": "12.18.0",
49
+ "@oh-my-pi/pi-utils": "12.18.0",
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.17.0",
89
- "@oh-my-pi/pi-agent-core": "12.17.0",
90
- "@oh-my-pi/pi-ai": "12.17.0",
91
- "@oh-my-pi/pi-natives": "12.17.0",
92
- "@oh-my-pi/pi-tui": "12.17.0",
93
- "@oh-my-pi/pi-utils": "12.17.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
  }
@@ -8,12 +8,9 @@
8
8
  */
9
9
  import * as os from "node:os";
10
10
  import * as path from "node:path";
11
- import { $env } from "@oh-my-pi/pi-utils";
11
+ import { logger } from "@oh-my-pi/pi-utils";
12
12
  import { getProjectDir } from "@oh-my-pi/pi-utils/dirs";
13
13
 
14
- /** Conditional startup debug prints (stderr) when PI_DEBUG_STARTUP is set */
15
- const debugStartup = $env.PI_DEBUG_STARTUP ? (stage: string) => process.stderr.write(`[startup] ${stage}\n`) : () => {};
16
-
17
14
  import type { Settings } from "../config/settings";
18
15
  import { clearCache as clearFsCache, cacheStats as fsCacheStats, invalidate as invalidateFs } from "./fs";
19
16
  import type {
@@ -115,12 +112,12 @@ async function loadImpl<T>(
115
112
  const results = await Promise.all(
116
113
  providers.map(async provider => {
117
114
  try {
118
- debugStartup(`capability:${capability.id}:${provider.id}:start`);
119
- const result = await provider.load(ctx);
120
- debugStartup(`capability:${capability.id}:${provider.id}:done`);
115
+ const result = await logger.timeAsync(`capability:${capability.id}:${provider.id}`, () =>
116
+ provider.load(ctx),
117
+ );
121
118
  return { provider, result };
122
119
  } catch (error) {
123
- debugStartup(`capability:${capability.id}:${provider.id}:error`);
120
+ logger.debug(`capability:${capability.id}:${provider.id}:error`);
124
121
  return { provider, error };
125
122
  }
126
123
  }),
@@ -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...");