@oh-my-pi/pi-coding-agent 8.0.20 → 8.2.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.
Files changed (421) hide show
  1. package/CHANGELOG.md +125 -0
  2. package/docs/session.md +111 -46
  3. package/examples/custom-tools/hello/index.ts +1 -1
  4. package/examples/custom-tools/todo/index.ts +3 -4
  5. package/examples/extensions/api-demo.ts +0 -1
  6. package/examples/extensions/chalk-logger.ts +2 -3
  7. package/examples/extensions/hello.ts +0 -1
  8. package/examples/extensions/pirate.ts +0 -1
  9. package/examples/extensions/plan-mode.ts +15 -16
  10. package/examples/extensions/todo.ts +3 -4
  11. package/examples/extensions/tools.ts +1 -2
  12. package/examples/extensions/with-deps/index.ts +0 -1
  13. package/examples/hooks/auto-commit-on-exit.ts +1 -2
  14. package/examples/hooks/confirm-destructive.ts +0 -1
  15. package/examples/hooks/custom-compaction.ts +1 -2
  16. package/examples/hooks/dirty-repo-guard.ts +0 -1
  17. package/examples/hooks/file-trigger.ts +3 -4
  18. package/examples/hooks/git-checkpoint.ts +0 -1
  19. package/examples/hooks/handoff.ts +3 -4
  20. package/examples/hooks/permission-gate.ts +1 -2
  21. package/examples/hooks/protected-paths.ts +1 -2
  22. package/examples/hooks/qna.ts +2 -3
  23. package/examples/hooks/snake.ts +4 -5
  24. package/examples/hooks/status-line.ts +0 -1
  25. package/examples/sdk/01-minimal.ts +2 -3
  26. package/examples/sdk/02-custom-model.ts +2 -3
  27. package/examples/sdk/03-custom-prompt.ts +3 -4
  28. package/examples/sdk/04-skills.ts +2 -3
  29. package/examples/sdk/06-extensions.ts +1 -2
  30. package/examples/sdk/06-hooks.ts +6 -7
  31. package/examples/sdk/07-context-files.ts +0 -1
  32. package/examples/sdk/08-prompt-templates.ts +0 -1
  33. package/examples/sdk/08-slash-commands.ts +0 -1
  34. package/examples/sdk/09-api-keys-and-oauth.ts +0 -1
  35. package/examples/sdk/10-settings.ts +0 -1
  36. package/examples/sdk/11-sessions.ts +0 -1
  37. package/package.json +54 -23
  38. package/scripts/format-prompts.ts +0 -1
  39. package/src/capability/context-file.ts +3 -4
  40. package/src/capability/extension-module.ts +3 -4
  41. package/src/capability/extension.ts +3 -4
  42. package/src/capability/fs.ts +20 -21
  43. package/src/capability/hook.ts +3 -4
  44. package/src/capability/index.ts +15 -16
  45. package/src/capability/instruction.ts +3 -4
  46. package/src/capability/mcp.ts +3 -4
  47. package/src/capability/prompt.ts +3 -4
  48. package/src/capability/rule.ts +3 -4
  49. package/src/capability/settings.ts +2 -3
  50. package/src/capability/skill.ts +3 -4
  51. package/src/capability/slash-command.ts +3 -4
  52. package/src/capability/ssh.ts +3 -4
  53. package/src/capability/system-prompt.ts +3 -4
  54. package/src/capability/tool.ts +3 -4
  55. package/src/cli/args.ts +5 -6
  56. package/src/cli/config-cli.ts +6 -7
  57. package/src/cli/file-processor.ts +19 -17
  58. package/src/cli/jupyter-cli.ts +105 -0
  59. package/src/cli/list-models.ts +10 -11
  60. package/src/cli/plugin-cli.ts +20 -25
  61. package/src/cli/session-picker.ts +2 -3
  62. package/src/cli/setup-cli.ts +2 -3
  63. package/src/cli/stats-cli.ts +2 -3
  64. package/src/cli/update-cli.ts +25 -22
  65. package/src/commit/agentic/agent.ts +307 -0
  66. package/src/commit/agentic/fallback.ts +96 -0
  67. package/src/commit/agentic/index.ts +351 -0
  68. package/src/commit/agentic/prompts/analyze-file.md +22 -0
  69. package/src/commit/agentic/prompts/session-user.md +26 -0
  70. package/src/commit/agentic/prompts/split-confirm.md +1 -0
  71. package/src/commit/agentic/prompts/system.md +40 -0
  72. package/src/commit/agentic/state.ts +69 -0
  73. package/src/commit/agentic/tools/analyze-file.ts +131 -0
  74. package/src/commit/agentic/tools/git-file-diff.ts +194 -0
  75. package/src/commit/agentic/tools/git-hunk.ts +50 -0
  76. package/src/commit/agentic/tools/git-overview.ts +84 -0
  77. package/src/commit/agentic/tools/index.ts +56 -0
  78. package/src/commit/agentic/tools/propose-changelog.ts +128 -0
  79. package/src/commit/agentic/tools/propose-commit.ts +154 -0
  80. package/src/commit/agentic/tools/recent-commits.ts +81 -0
  81. package/src/commit/agentic/tools/split-commit.ts +280 -0
  82. package/src/commit/agentic/topo-sort.ts +44 -0
  83. package/src/commit/agentic/trivial.ts +51 -0
  84. package/src/commit/agentic/validation.ts +200 -0
  85. package/src/commit/analysis/conventional.ts +165 -0
  86. package/src/commit/analysis/index.ts +4 -0
  87. package/src/commit/analysis/scope.ts +242 -0
  88. package/src/commit/analysis/summary.ts +112 -0
  89. package/src/commit/analysis/validation.ts +66 -0
  90. package/src/commit/changelog/detect.ts +36 -0
  91. package/src/commit/changelog/generate.ts +110 -0
  92. package/src/commit/changelog/index.ts +233 -0
  93. package/src/commit/changelog/parse.ts +44 -0
  94. package/src/commit/cli.ts +93 -0
  95. package/src/commit/git/diff.ts +148 -0
  96. package/src/commit/git/errors.ts +11 -0
  97. package/src/commit/git/index.ts +212 -0
  98. package/src/commit/git/operations.ts +53 -0
  99. package/src/commit/index.ts +5 -0
  100. package/src/commit/map-reduce/index.ts +63 -0
  101. package/src/commit/map-reduce/map-phase.ts +178 -0
  102. package/src/commit/map-reduce/reduce-phase.ts +145 -0
  103. package/src/commit/map-reduce/utils.ts +9 -0
  104. package/src/commit/message.ts +11 -0
  105. package/src/commit/model-selection.ts +80 -0
  106. package/src/commit/pipeline.ts +240 -0
  107. package/src/commit/prompts/analysis-system.md +155 -0
  108. package/src/commit/prompts/analysis-user.md +41 -0
  109. package/src/commit/prompts/changelog-system.md +56 -0
  110. package/src/commit/prompts/changelog-user.md +19 -0
  111. package/src/commit/prompts/file-observer-system.md +26 -0
  112. package/src/commit/prompts/file-observer-user.md +9 -0
  113. package/src/commit/prompts/reduce-system.md +60 -0
  114. package/src/commit/prompts/reduce-user.md +17 -0
  115. package/src/commit/prompts/summary-retry.md +4 -0
  116. package/src/commit/prompts/summary-system.md +52 -0
  117. package/src/commit/prompts/summary-user.md +13 -0
  118. package/src/commit/prompts/types-description.md +2 -0
  119. package/src/commit/types.ts +109 -0
  120. package/src/commit/utils/exclusions.ts +42 -0
  121. package/src/config/file-lock.ts +121 -0
  122. package/src/config/keybindings.ts +6 -8
  123. package/src/config/model-registry.ts +65 -38
  124. package/src/config/model-resolver.ts +18 -19
  125. package/src/config/prompt-templates.ts +11 -11
  126. package/src/config/settings-manager.ts +141 -50
  127. package/src/config.ts +64 -66
  128. package/src/cursor.ts +11 -9
  129. package/src/discovery/agents-md.ts +11 -12
  130. package/src/discovery/builtin.ts +68 -73
  131. package/src/discovery/claude.ts +41 -42
  132. package/src/discovery/cline.ts +11 -12
  133. package/src/discovery/codex.ts +52 -53
  134. package/src/discovery/cursor.ts +9 -10
  135. package/src/discovery/gemini.ts +17 -22
  136. package/src/discovery/github.ts +13 -14
  137. package/src/discovery/helpers.ts +35 -34
  138. package/src/discovery/index.ts +22 -24
  139. package/src/discovery/mcp-json.ts +8 -9
  140. package/src/discovery/ssh.ts +8 -9
  141. package/src/discovery/vscode.ts +4 -5
  142. package/src/discovery/windsurf.ts +6 -7
  143. package/src/exa/company.ts +1 -2
  144. package/src/exa/index.ts +2 -3
  145. package/src/exa/linkedin.ts +1 -2
  146. package/src/exa/mcp-client.ts +14 -16
  147. package/src/exa/render.ts +10 -11
  148. package/src/exa/researcher.ts +1 -2
  149. package/src/exa/search.ts +1 -2
  150. package/src/exa/types.ts +0 -1
  151. package/src/exa/websets.ts +1 -2
  152. package/src/exec/bash-executor.ts +3 -4
  153. package/src/exec/exec.ts +0 -1
  154. package/src/export/custom-share.ts +5 -6
  155. package/src/export/html/index.ts +24 -21
  156. package/src/export/ttsr.ts +2 -3
  157. package/src/extensibility/custom-commands/bundled/review/index.ts +7 -8
  158. package/src/extensibility/custom-commands/loader.ts +18 -15
  159. package/src/extensibility/custom-commands/types.ts +2 -3
  160. package/src/extensibility/custom-tools/loader.ts +11 -12
  161. package/src/extensibility/custom-tools/types.ts +7 -8
  162. package/src/extensibility/custom-tools/wrapper.ts +2 -3
  163. package/src/extensibility/extensions/loader.ts +76 -54
  164. package/src/extensibility/extensions/runner.ts +11 -12
  165. package/src/extensibility/extensions/types.ts +20 -27
  166. package/src/extensibility/extensions/wrapper.ts +3 -4
  167. package/src/extensibility/hooks/index.ts +1 -1
  168. package/src/extensibility/hooks/loader.ts +9 -10
  169. package/src/extensibility/hooks/runner.ts +7 -8
  170. package/src/extensibility/hooks/tool-wrapper.ts +0 -1
  171. package/src/extensibility/hooks/types.ts +11 -18
  172. package/src/extensibility/plugins/doctor.ts +3 -3
  173. package/src/extensibility/plugins/installer.ts +27 -27
  174. package/src/extensibility/plugins/loader.ts +59 -56
  175. package/src/extensibility/plugins/manager.ts +211 -171
  176. package/src/extensibility/plugins/parser.ts +1 -1
  177. package/src/extensibility/plugins/paths.ts +8 -8
  178. package/src/extensibility/skills.ts +63 -60
  179. package/src/extensibility/slash-commands.ts +10 -10
  180. package/src/index.ts +54 -54
  181. package/src/internal-urls/agent-protocol.ts +21 -11
  182. package/src/internal-urls/artifact-protocol.ts +17 -13
  183. package/src/internal-urls/router.ts +1 -2
  184. package/src/internal-urls/rule-protocol.ts +3 -4
  185. package/src/internal-urls/skill-protocol.ts +3 -4
  186. package/src/ipy/executor.ts +109 -9
  187. package/src/ipy/gateway-coordinator.ts +79 -90
  188. package/src/ipy/kernel.ts +32 -30
  189. package/src/ipy/modules.ts +13 -13
  190. package/src/lsp/client.ts +21 -10
  191. package/src/lsp/clients/biome-client.ts +1 -2
  192. package/src/lsp/clients/index.ts +3 -3
  193. package/src/lsp/clients/lsp-linter-client.ts +4 -5
  194. package/src/lsp/config.ts +15 -15
  195. package/src/lsp/edits.ts +4 -5
  196. package/src/lsp/index.ts +43 -44
  197. package/src/lsp/lspmux.ts +8 -8
  198. package/src/lsp/render.ts +99 -61
  199. package/src/lsp/utils.ts +3 -3
  200. package/src/main.ts +71 -37
  201. package/src/mcp/client.ts +2 -3
  202. package/src/mcp/config.ts +5 -6
  203. package/src/mcp/json-rpc.ts +0 -1
  204. package/src/mcp/loader.ts +6 -7
  205. package/src/mcp/manager.ts +17 -18
  206. package/src/mcp/tool-bridge.ts +4 -9
  207. package/src/mcp/tool-cache.ts +2 -3
  208. package/src/mcp/transports/http.ts +2 -4
  209. package/src/mcp/transports/stdio.ts +1 -2
  210. package/src/migrations.ts +63 -52
  211. package/src/modes/components/armin.ts +4 -5
  212. package/src/modes/components/assistant-message.ts +33 -5
  213. package/src/modes/components/bash-execution.ts +7 -8
  214. package/src/modes/components/bordered-loader.ts +3 -3
  215. package/src/modes/components/branch-summary-message.ts +3 -3
  216. package/src/modes/components/compaction-summary-message.ts +3 -3
  217. package/src/modes/components/countdown-timer.ts +0 -1
  218. package/src/modes/components/custom-message.ts +5 -5
  219. package/src/modes/components/diff.ts +1 -1
  220. package/src/modes/components/dynamic-border.ts +2 -2
  221. package/src/modes/components/extensions/extension-dashboard.ts +6 -7
  222. package/src/modes/components/extensions/extension-list.ts +2 -3
  223. package/src/modes/components/extensions/inspector-panel.ts +3 -4
  224. package/src/modes/components/extensions/state-manager.ts +25 -26
  225. package/src/modes/components/extensions/types.ts +1 -2
  226. package/src/modes/components/footer.ts +47 -43
  227. package/src/modes/components/history-search.ts +2 -2
  228. package/src/modes/components/hook-editor.ts +3 -4
  229. package/src/modes/components/hook-input.ts +2 -3
  230. package/src/modes/components/hook-message.ts +5 -5
  231. package/src/modes/components/hook-selector.ts +2 -3
  232. package/src/modes/components/keybinding-hints.ts +2 -3
  233. package/src/modes/components/login-dialog.ts +2 -2
  234. package/src/modes/components/model-selector.ts +12 -12
  235. package/src/modes/components/oauth-selector.ts +2 -2
  236. package/src/modes/components/plugin-settings.ts +20 -20
  237. package/src/modes/components/python-execution.ts +7 -8
  238. package/src/modes/components/queue-mode-selector.ts +3 -3
  239. package/src/modes/components/read-tool-group.ts +2 -2
  240. package/src/modes/components/session-selector.ts +4 -4
  241. package/src/modes/components/settings-defs.ts +77 -69
  242. package/src/modes/components/settings-selector.ts +16 -16
  243. package/src/modes/components/show-images-selector.ts +2 -2
  244. package/src/modes/components/status-line/segments.ts +4 -4
  245. package/src/modes/components/status-line/separators.ts +1 -1
  246. package/src/modes/components/status-line/types.ts +2 -2
  247. package/src/modes/components/status-line-segment-editor.ts +7 -8
  248. package/src/modes/components/status-line.ts +12 -12
  249. package/src/modes/components/theme-selector.ts +8 -7
  250. package/src/modes/components/thinking-selector.ts +4 -4
  251. package/src/modes/components/todo-display.ts +2 -2
  252. package/src/modes/components/todo-reminder.ts +4 -4
  253. package/src/modes/components/tool-execution.ts +16 -19
  254. package/src/modes/components/tree-selector.ts +12 -12
  255. package/src/modes/components/ttsr-notification.ts +5 -5
  256. package/src/modes/components/user-message-selector.ts +1 -1
  257. package/src/modes/components/user-message.ts +1 -1
  258. package/src/modes/components/visual-truncate.ts +0 -1
  259. package/src/modes/components/welcome.ts +4 -4
  260. package/src/modes/controllers/command-controller.ts +46 -47
  261. package/src/modes/controllers/event-controller.ts +16 -20
  262. package/src/modes/controllers/extension-ui-controller.ts +40 -46
  263. package/src/modes/controllers/input-controller.ts +17 -18
  264. package/src/modes/controllers/selector-controller.ts +103 -91
  265. package/src/modes/index.ts +3 -3
  266. package/src/modes/interactive-mode.ts +31 -31
  267. package/src/modes/print-mode.ts +12 -13
  268. package/src/modes/rpc/rpc-client.ts +7 -8
  269. package/src/modes/rpc/rpc-mode.ts +24 -28
  270. package/src/modes/rpc/rpc-types.ts +3 -4
  271. package/src/modes/theme/mermaid-cache.ts +89 -0
  272. package/src/modes/theme/theme.ts +130 -53
  273. package/src/modes/types.ts +10 -10
  274. package/src/modes/utils/ui-helpers.ts +17 -17
  275. package/src/patch/applicator.ts +18 -19
  276. package/src/patch/diff.ts +1 -2
  277. package/src/patch/fuzzy.ts +1 -2
  278. package/src/patch/index.ts +11 -18
  279. package/src/patch/normalize.ts +4 -4
  280. package/src/patch/normative.ts +1 -2
  281. package/src/patch/parser.ts +8 -9
  282. package/src/patch/shared.ts +43 -16
  283. package/src/prompts/tools/task.md +2 -0
  284. package/src/sdk.ts +100 -65
  285. package/src/session/agent-session.ts +84 -85
  286. package/src/session/agent-storage.ts +43 -39
  287. package/src/session/artifacts.ts +32 -10
  288. package/src/session/auth-storage.ts +50 -39
  289. package/src/session/compaction/branch-summarization.ts +7 -10
  290. package/src/session/compaction/compaction.ts +8 -19
  291. package/src/session/compaction/utils.ts +6 -9
  292. package/src/session/history-storage.ts +10 -10
  293. package/src/session/messages.ts +4 -5
  294. package/src/session/session-manager.ts +76 -65
  295. package/src/session/session-storage.ts +57 -69
  296. package/src/session/storage-migration.ts +14 -56
  297. package/src/session/streaming-output.ts +2 -2
  298. package/src/ssh/connection-manager.ts +43 -50
  299. package/src/ssh/ssh-executor.ts +2 -2
  300. package/src/ssh/sshfs-mount.ts +11 -18
  301. package/src/system-prompt.ts +28 -35
  302. package/src/task/agents.ts +45 -30
  303. package/src/task/commands.ts +6 -7
  304. package/src/task/discovery.ts +39 -76
  305. package/src/task/executor.ts +14 -15
  306. package/src/task/index.ts +40 -34
  307. package/src/task/output-manager.ts +93 -0
  308. package/src/task/parallel.ts +0 -1
  309. package/src/task/render.ts +24 -30
  310. package/src/task/subprocess-tool-registry.ts +1 -2
  311. package/src/task/worker-protocol.ts +3 -3
  312. package/src/task/worker.ts +33 -39
  313. package/src/task/worktree.ts +19 -19
  314. package/src/tools/ask.ts +41 -20
  315. package/src/tools/bash-interceptor.ts +1 -5
  316. package/src/tools/bash.ts +91 -97
  317. package/src/tools/calculator.ts +49 -47
  318. package/src/tools/complete.ts +4 -5
  319. package/src/tools/context.ts +2 -2
  320. package/src/tools/fetch.ts +84 -124
  321. package/src/tools/find.ts +94 -98
  322. package/src/tools/gemini-image.ts +14 -14
  323. package/src/tools/grep.ts +100 -116
  324. package/src/tools/index.ts +80 -55
  325. package/src/tools/list-limit.ts +1 -1
  326. package/src/tools/ls.ts +44 -70
  327. package/src/tools/notebook.ts +51 -67
  328. package/src/tools/output-meta.ts +3 -4
  329. package/src/tools/output-utils.ts +2 -2
  330. package/src/tools/path-utils.ts +5 -5
  331. package/src/tools/python.ts +104 -217
  332. package/src/tools/read.ts +92 -33
  333. package/src/tools/render-utils.ts +8 -23
  334. package/src/tools/renderers.ts +6 -7
  335. package/src/tools/review.ts +8 -11
  336. package/src/tools/ssh.ts +69 -49
  337. package/src/tools/todo-write.ts +37 -25
  338. package/src/tools/tool-errors.ts +3 -3
  339. package/src/tools/tool-result.ts +3 -8
  340. package/src/tools/write.ts +99 -75
  341. package/src/tui/code-cell.ts +109 -0
  342. package/src/tui/file-list.ts +47 -0
  343. package/src/tui/index.ts +11 -0
  344. package/src/tui/output-block.ts +72 -0
  345. package/src/tui/status-line.ts +39 -0
  346. package/src/tui/tree-list.ts +55 -0
  347. package/src/tui/types.ts +16 -0
  348. package/src/tui/utils.ts +48 -0
  349. package/src/utils/changelog.ts +9 -10
  350. package/src/utils/clipboard.ts +11 -11
  351. package/src/utils/file-mentions.ts +4 -10
  352. package/src/utils/frontmatter.ts +6 -3
  353. package/src/utils/fuzzy.ts +2 -2
  354. package/src/utils/image-convert.ts +1 -1
  355. package/src/utils/image-resize.ts +1 -1
  356. package/src/utils/mime.ts +2 -2
  357. package/src/utils/shell-snapshot.ts +11 -13
  358. package/src/utils/shell.ts +4 -5
  359. package/src/utils/title-generator.ts +8 -9
  360. package/src/utils/tools-manager.ts +23 -23
  361. package/src/vendor/photon/index.js +1099 -1059
  362. package/src/vendor/photon/photon_rs_bg.wasm +0 -0
  363. package/src/web/scrapers/artifacthub.ts +1 -1
  364. package/src/web/scrapers/arxiv.ts +2 -2
  365. package/src/web/scrapers/bluesky.ts +2 -2
  366. package/src/web/scrapers/cheatsh.ts +1 -1
  367. package/src/web/scrapers/chocolatey.ts +2 -2
  368. package/src/web/scrapers/choosealicense.ts +5 -5
  369. package/src/web/scrapers/cisa-kev.ts +1 -1
  370. package/src/web/scrapers/crossref.ts +2 -2
  371. package/src/web/scrapers/devto.ts +3 -3
  372. package/src/web/scrapers/discogs.ts +3 -4
  373. package/src/web/scrapers/discourse.ts +1 -1
  374. package/src/web/scrapers/dockerhub.ts +1 -1
  375. package/src/web/scrapers/fdroid.ts +2 -2
  376. package/src/web/scrapers/firefox-addons.ts +3 -3
  377. package/src/web/scrapers/flathub.ts +1 -1
  378. package/src/web/scrapers/github.ts +3 -3
  379. package/src/web/scrapers/gitlab.ts +4 -4
  380. package/src/web/scrapers/hackernews.ts +2 -2
  381. package/src/web/scrapers/huggingface.ts +1 -1
  382. package/src/web/scrapers/iacr.ts +2 -2
  383. package/src/web/scrapers/index.ts +0 -1
  384. package/src/web/scrapers/jetbrains-marketplace.ts +1 -1
  385. package/src/web/scrapers/lemmy.ts +2 -2
  386. package/src/web/scrapers/maven.ts +2 -2
  387. package/src/web/scrapers/mdn.ts +2 -4
  388. package/src/web/scrapers/metacpan.ts +2 -2
  389. package/src/web/scrapers/musicbrainz.ts +1 -2
  390. package/src/web/scrapers/npm.ts +1 -1
  391. package/src/web/scrapers/nuget.ts +2 -2
  392. package/src/web/scrapers/nvd.ts +3 -3
  393. package/src/web/scrapers/ollama.ts +7 -9
  394. package/src/web/scrapers/opencorporates.ts +2 -2
  395. package/src/web/scrapers/openlibrary.ts +6 -6
  396. package/src/web/scrapers/orcid.ts +0 -1
  397. package/src/web/scrapers/osv.ts +2 -2
  398. package/src/web/scrapers/packagist.ts +1 -1
  399. package/src/web/scrapers/pubmed.ts +1 -2
  400. package/src/web/scrapers/rawg.ts +2 -2
  401. package/src/web/scrapers/readthedocs.ts +1 -2
  402. package/src/web/scrapers/repology.ts +2 -2
  403. package/src/web/scrapers/rfc.ts +1 -1
  404. package/src/web/scrapers/searchcode.ts +2 -2
  405. package/src/web/scrapers/semantic-scholar.ts +1 -1
  406. package/src/web/scrapers/snapcraft.ts +2 -2
  407. package/src/web/scrapers/sourcegraph.ts +1 -1
  408. package/src/web/scrapers/spdx.ts +3 -3
  409. package/src/web/scrapers/spotify.ts +0 -1
  410. package/src/web/scrapers/twitter.ts +1 -1
  411. package/src/web/scrapers/types.ts +1 -2
  412. package/src/web/scrapers/utils.ts +5 -5
  413. package/src/web/scrapers/wikidata.ts +3 -3
  414. package/src/web/scrapers/youtube.ts +9 -14
  415. package/src/web/search/auth.ts +5 -10
  416. package/src/web/search/index.ts +11 -21
  417. package/src/web/search/providers/anthropic.ts +3 -9
  418. package/src/web/search/providers/exa.ts +6 -10
  419. package/src/web/search/providers/perplexity.ts +5 -5
  420. package/src/web/search/render.ts +129 -175
  421. package/tsconfig.json +0 -42
@@ -7,10 +7,6 @@
7
7
  * - Feature toggles
8
8
  * - Config value editor
9
9
  */
10
-
11
- import { PluginManager } from "@oh-my-pi/pi-coding-agent/extensibility/plugins/manager";
12
- import type { InstalledPlugin, PluginSettingSchema } from "@oh-my-pi/pi-coding-agent/extensibility/plugins/types";
13
- import { getSelectListTheme, getSettingsListTheme, theme } from "@oh-my-pi/pi-coding-agent/modes/theme/theme";
14
10
  import {
15
11
  Container,
16
12
  Input,
@@ -21,6 +17,9 @@ import {
21
17
  Spacer,
22
18
  Text,
23
19
  } from "@oh-my-pi/pi-tui";
20
+ import { PluginManager } from "../../extensibility/plugins/manager";
21
+ import type { InstalledPlugin, PluginSettingSchema } from "../../extensibility/plugins/types";
22
+ import { getSelectListTheme, getSettingsListTheme, theme } from "../../modes/theme/theme";
24
23
  import { DynamicBorder } from "./dynamic-border";
25
24
 
26
25
  // =============================================================================
@@ -62,7 +61,7 @@ export class PluginListComponent extends Container {
62
61
  return;
63
62
  }
64
63
 
65
- const items: SelectItem[] = plugins.map((p) => {
64
+ const items: SelectItem[] = plugins.map(p => {
66
65
  const status = p.enabled
67
66
  ? theme.fg("success", theme.status.enabled)
68
67
  : theme.fg("muted", theme.status.disabled);
@@ -83,8 +82,8 @@ export class PluginListComponent extends Container {
83
82
 
84
83
  this.selectList = new SelectList(items, Math.min(items.length, 8), getSelectListTheme());
85
84
 
86
- this.selectList.onSelect = (item) => {
87
- const plugin = this.plugins.find((p) => p.name === item.value);
85
+ this.selectList.onSelect = item => {
86
+ const plugin = this.plugins.find(p => p.name === item.value);
88
87
  if (plugin) {
89
88
  callbacks.onPluginSelect(plugin);
90
89
  }
@@ -132,10 +131,10 @@ export class PluginDetailComponent extends Container {
132
131
  this.manager = manager;
133
132
  this.callbacks = callbacks;
134
133
 
135
- this.rebuild();
134
+ void this.rebuild();
136
135
  }
137
136
 
138
- private rebuild(): void {
137
+ private async rebuild(): Promise<void> {
139
138
  this.clear();
140
139
 
141
140
  const plugin = this.plugin;
@@ -184,7 +183,7 @@ export class PluginDetailComponent extends Container {
184
183
 
185
184
  // Config settings
186
185
  if (manifest.settings && Object.keys(manifest.settings).length > 0) {
187
- const settings = this.manager.getPluginSettings(plugin.name);
186
+ const settings = await this.manager.getPluginSettings(plugin.name);
188
187
 
189
188
  for (const [key, schema] of Object.entries(manifest.settings)) {
190
189
  const currentValue = settings[key] ?? schema.default;
@@ -210,7 +209,7 @@ export class PluginDetailComponent extends Container {
210
209
  schema.description || `Select value for ${key}`,
211
210
  schema.values,
212
211
  cv,
213
- (value) => {
212
+ value => {
214
213
  this.callbacks.onConfigChange(key, value);
215
214
  done(value);
216
215
  },
@@ -229,7 +228,7 @@ export class PluginDetailComponent extends Container {
229
228
  key,
230
229
  schema,
231
230
  cv === "(not set)" ? "" : cv,
232
- (value) => {
231
+ value => {
233
232
  const parsed = schema.type === "number" ? Number(value) : value;
234
233
  this.callbacks.onConfigChange(key, parsed);
235
234
  done(String(value));
@@ -278,6 +277,7 @@ export class PluginDetailComponent extends Container {
278
277
  }
279
278
 
280
279
  handleInput(data: string): void {
280
+ if (!this.settingsList) return;
281
281
  this.settingsList.handleInput(data);
282
282
  }
283
283
  }
@@ -309,7 +309,7 @@ class ConfigEnumSubmenu extends Container {
309
309
  }
310
310
  this.addChild(new Spacer(1));
311
311
 
312
- const items: SelectItem[] = values.map((v) => ({ value: v, label: v }));
312
+ const items: SelectItem[] = values.map(v => ({ value: v, label: v }));
313
313
  this.selectList = new SelectList(items, Math.min(items.length, 8), getSelectListTheme());
314
314
 
315
315
  const currentIndex = values.indexOf(currentValue);
@@ -317,7 +317,7 @@ class ConfigEnumSubmenu extends Container {
317
317
  this.selectList.setSelectedIndex(currentIndex);
318
318
  }
319
319
 
320
- this.selectList.onSelect = (item) => onSelect(item.value);
320
+ this.selectList.onSelect = item => onSelect(item.value);
321
321
  this.selectList.onCancel = onCancel;
322
322
 
323
323
  this.addChild(this.selectList);
@@ -374,7 +374,7 @@ class ConfigInputSubmenu extends Container {
374
374
  this.input.setValue(currentValue);
375
375
  }
376
376
 
377
- this.input.onSubmit = (value) => {
377
+ this.input.onSubmit = value => {
378
378
  if (value.trim()) {
379
379
  this.onSubmit(value);
380
380
  } else {
@@ -438,7 +438,7 @@ export class PluginSettingsComponent extends Container {
438
438
  const plugins = await this.manager.list();
439
439
 
440
440
  this.viewComponent = new PluginListComponent(plugins, {
441
- onPluginSelect: (plugin) => this.showPluginDetail(plugin),
441
+ onPluginSelect: plugin => this.showPluginDetail(plugin),
442
442
  onCancel: () => this.callbacks.onClose(),
443
443
  });
444
444
 
@@ -451,12 +451,12 @@ export class PluginSettingsComponent extends Container {
451
451
  this.clear();
452
452
 
453
453
  this.viewComponent = new PluginDetailComponent(plugin, this.manager, {
454
- onEnabledChange: async (enabled) => {
454
+ onEnabledChange: async enabled => {
455
455
  await this.manager.setEnabled(plugin.name, enabled);
456
456
  this.callbacks.onPluginChanged();
457
457
  },
458
458
  onFeatureChange: async (feature, enabled) => {
459
- const current = new Set(this.manager.getEnabledFeatures(plugin.name) ?? []);
459
+ const current = new Set((await this.manager.getEnabledFeatures(plugin.name)) ?? []);
460
460
  if (enabled) {
461
461
  current.add(feature);
462
462
  } else {
@@ -465,8 +465,8 @@ export class PluginSettingsComponent extends Container {
465
465
  await this.manager.setEnabledFeatures(plugin.name, [...current]);
466
466
  this.callbacks.onPluginChanged();
467
467
  },
468
- onConfigChange: (key, value) => {
469
- this.manager.setPluginSetting(plugin.name, key, value);
468
+ onConfigChange: async (key, value) => {
469
+ await this.manager.setPluginSetting(plugin.name, key, value);
470
470
  this.callbacks.onPluginChanged();
471
471
  },
472
472
  onBack: () => this.showPluginList(),
@@ -2,12 +2,11 @@
2
2
  * Component for displaying user-initiated Python execution with streaming output.
3
3
  * Shares the same kernel session as the agent's Python tool.
4
4
  */
5
-
6
- import { getSymbolTheme, highlightCode, theme } from "@oh-my-pi/pi-coding-agent/modes/theme/theme";
7
- import type { TruncationMeta } from "@oh-my-pi/pi-coding-agent/tools/output-meta";
8
- import { formatSize } from "@oh-my-pi/pi-coding-agent/tools/truncate";
9
5
  import { Container, Loader, Spacer, Text, type TUI } from "@oh-my-pi/pi-tui";
10
6
  import stripAnsi from "strip-ansi";
7
+ import { getSymbolTheme, highlightCode, theme } from "../../modes/theme/theme";
8
+ import type { TruncationMeta } from "../../tools/output-meta";
9
+ import { formatSize } from "../../tools/truncate";
11
10
  import { DynamicBorder } from "./dynamic-border";
12
11
  import { truncateToVisualLines } from "./visual-truncate";
13
12
 
@@ -51,8 +50,8 @@ export class PythonExecutionComponent extends Container {
51
50
 
52
51
  this.loader = new Loader(
53
52
  ui,
54
- (spinner) => theme.fg(colorKey, spinner),
55
- (text) => theme.fg("muted", text),
53
+ spinner => theme.fg(colorKey, spinner),
54
+ text => theme.fg("muted", text),
56
55
  `Running${theme.format.ellipsis} (esc to cancel)`,
57
56
  getSymbolTheme().spinnerFrames,
58
57
  );
@@ -117,10 +116,10 @@ export class PythonExecutionComponent extends Container {
117
116
 
118
117
  if (availableLines.length > 0) {
119
118
  if (this.expanded) {
120
- const displayText = availableLines.map((line) => theme.fg("muted", line)).join("\n");
119
+ const displayText = availableLines.map(line => theme.fg("muted", line)).join("\n");
121
120
  this.contentContainer.addChild(new Text(`\n${displayText}`, 1, 0));
122
121
  } else {
123
- const styledOutput = previewLogicalLines.map((line) => theme.fg("muted", line)).join("\n");
122
+ const styledOutput = previewLogicalLines.map(line => theme.fg("muted", line)).join("\n");
124
123
  const previewText = `\n${styledOutput}`;
125
124
  this.contentContainer.addChild({
126
125
  render: (width: number) => {
@@ -1,5 +1,5 @@
1
- import { getSelectListTheme } from "@oh-my-pi/pi-coding-agent/modes/theme/theme";
2
1
  import { Container, type SelectItem, SelectList } from "@oh-my-pi/pi-tui";
2
+ import { getSelectListTheme } from "../../modes/theme/theme";
3
3
  import { DynamicBorder } from "./dynamic-border";
4
4
 
5
5
  /**
@@ -31,12 +31,12 @@ export class QueueModeSelectorComponent extends Container {
31
31
  this.selectList = new SelectList(queueModes, 2, getSelectListTheme());
32
32
 
33
33
  // Preselect current mode
34
- const currentIndex = queueModes.findIndex((item) => item.value === currentMode);
34
+ const currentIndex = queueModes.findIndex(item => item.value === currentMode);
35
35
  if (currentIndex !== -1) {
36
36
  this.selectList.setSelectedIndex(currentIndex);
37
37
  }
38
38
 
39
- this.selectList.onSelect = (item) => {
39
+ this.selectList.onSelect = item => {
40
40
  onSelect(item.value as "all" | "one-at-a-time");
41
41
  };
42
42
 
@@ -1,7 +1,7 @@
1
- import { theme } from "@oh-my-pi/pi-coding-agent/modes/theme/theme";
2
- import { shortenPath } from "@oh-my-pi/pi-coding-agent/tools/render-utils";
3
1
  import type { Component } from "@oh-my-pi/pi-tui";
4
2
  import { Container, Text } from "@oh-my-pi/pi-tui";
3
+ import { theme } from "../../modes/theme/theme";
4
+ import { shortenPath } from "../../tools/render-utils";
5
5
  import type { ToolExecutionHandle } from "./tool-execution";
6
6
 
7
7
  type ReadRenderArgs = {
@@ -1,6 +1,3 @@
1
- import { theme } from "@oh-my-pi/pi-coding-agent/modes/theme/theme";
2
- import type { SessionInfo } from "@oh-my-pi/pi-coding-agent/session/session-manager";
3
- import { fuzzyFilter } from "@oh-my-pi/pi-coding-agent/utils/fuzzy";
4
1
  import {
5
2
  type Component,
6
3
  Container,
@@ -11,6 +8,9 @@ import {
11
8
  truncateToWidth,
12
9
  visibleWidth,
13
10
  } from "@oh-my-pi/pi-tui";
11
+ import { theme } from "../../modes/theme/theme";
12
+ import type { SessionInfo } from "../../session/session-manager";
13
+ import { fuzzyFilter } from "../../utils/fuzzy";
14
14
  import { DynamicBorder } from "./dynamic-border";
15
15
 
16
16
  /**
@@ -45,7 +45,7 @@ class SessionList implements Component {
45
45
  }
46
46
 
47
47
  private filterSessions(query: string): void {
48
- this.filteredSessions = fuzzyFilter(this.allSessions, query, (session) => {
48
+ this.filteredSessions = fuzzyFilter(this.allSessions, query, session => {
49
49
  const parts = [
50
50
  session.id,
51
51
  session.title ?? "",