@openeryc/pi-coding-agent 0.75.25 → 0.75.27

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 (314) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cli/config-selector.d.ts +1 -13
  3. package/dist/cli/config-selector.d.ts.map +1 -1
  4. package/dist/cli/config-selector.js +4 -29
  5. package/dist/cli/config-selector.js.map +1 -1
  6. package/dist/cli/list-models.d.ts.map +1 -1
  7. package/dist/cli/list-models.js +1 -1
  8. package/dist/cli/list-models.js.map +1 -1
  9. package/dist/core/agent-session.d.ts +1 -0
  10. package/dist/core/agent-session.d.ts.map +1 -1
  11. package/dist/core/agent-session.js +20 -0
  12. package/dist/core/agent-session.js.map +1 -1
  13. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  14. package/dist/core/export-html/tool-renderer.js.map +1 -1
  15. package/dist/core/extensions/loader.d.ts.map +1 -1
  16. package/dist/core/extensions/loader.js +1 -1
  17. package/dist/core/extensions/loader.js.map +1 -1
  18. package/dist/core/extensions/runner.d.ts +1 -1
  19. package/dist/core/extensions/runner.d.ts.map +1 -1
  20. package/dist/core/extensions/runner.js +1 -1
  21. package/dist/core/extensions/runner.js.map +1 -1
  22. package/dist/core/extensions/types.d.ts +1 -1
  23. package/dist/core/extensions/types.d.ts.map +1 -1
  24. package/dist/core/extensions/types.js.map +1 -1
  25. package/dist/core/keybindings.d.ts +7 -135
  26. package/dist/core/keybindings.d.ts.map +1 -1
  27. package/dist/core/keybindings.js +1 -1
  28. package/dist/core/keybindings.js.map +1 -1
  29. package/dist/core/mcp/client.d.ts +38 -0
  30. package/dist/core/mcp/client.d.ts.map +1 -0
  31. package/dist/core/mcp/client.js +88 -0
  32. package/dist/core/mcp/client.js.map +1 -0
  33. package/dist/core/mcp/index.d.ts +3 -0
  34. package/dist/core/mcp/index.d.ts.map +1 -0
  35. package/dist/core/mcp/index.js +3 -0
  36. package/dist/core/mcp/index.js.map +1 -0
  37. package/dist/core/mcp/manager.d.ts +11 -0
  38. package/dist/core/mcp/manager.d.ts.map +1 -0
  39. package/dist/core/mcp/manager.js +99 -0
  40. package/dist/core/mcp/manager.js.map +1 -0
  41. package/dist/core/settings-manager.d.ts +10 -0
  42. package/dist/core/settings-manager.d.ts.map +1 -1
  43. package/dist/core/settings-manager.js +3 -0
  44. package/dist/core/settings-manager.js.map +1 -1
  45. package/dist/core/tools/bash.d.ts.map +1 -1
  46. package/dist/core/tools/bash.js +1 -1
  47. package/dist/core/tools/bash.js.map +1 -1
  48. package/dist/core/tools/edit.d.ts +1 -1
  49. package/dist/core/tools/edit.d.ts.map +1 -1
  50. package/dist/core/tools/edit.js +1 -1
  51. package/dist/core/tools/edit.js.map +1 -1
  52. package/dist/core/tools/find.d.ts.map +1 -1
  53. package/dist/core/tools/find.js +1 -1
  54. package/dist/core/tools/find.js.map +1 -1
  55. package/dist/core/tools/grep.d.ts.map +1 -1
  56. package/dist/core/tools/grep.js +1 -1
  57. package/dist/core/tools/grep.js.map +1 -1
  58. package/dist/core/tools/index.d.ts +3 -1
  59. package/dist/core/tools/index.d.ts.map +1 -1
  60. package/dist/core/tools/index.js +27 -1
  61. package/dist/core/tools/index.js.map +1 -1
  62. package/dist/core/tools/ls.d.ts.map +1 -1
  63. package/dist/core/tools/ls.js +1 -1
  64. package/dist/core/tools/ls.js.map +1 -1
  65. package/dist/core/tools/read.d.ts.map +1 -1
  66. package/dist/core/tools/read.js +1 -1
  67. package/dist/core/tools/read.js.map +1 -1
  68. package/dist/core/tools/render-utils.d.ts.map +1 -1
  69. package/dist/core/tools/render-utils.js +1 -1
  70. package/dist/core/tools/render-utils.js.map +1 -1
  71. package/dist/core/tools/web-fetch.d.ts +15 -0
  72. package/dist/core/tools/web-fetch.d.ts.map +1 -0
  73. package/dist/core/tools/web-fetch.js +52 -0
  74. package/dist/core/tools/web-fetch.js.map +1 -0
  75. package/dist/core/tools/web-search.d.ts +18 -0
  76. package/dist/core/tools/web-search.d.ts.map +1 -0
  77. package/dist/core/tools/web-search.js +83 -0
  78. package/dist/core/tools/web-search.js.map +1 -0
  79. package/dist/core/tools/write.d.ts.map +1 -1
  80. package/dist/core/tools/write.js +1 -1
  81. package/dist/core/tools/write.js.map +1 -1
  82. package/dist/core/tui-stubs.d.ts +95 -0
  83. package/dist/core/tui-stubs.d.ts.map +1 -0
  84. package/dist/core/tui-stubs.js +90 -0
  85. package/dist/core/tui-stubs.js.map +1 -0
  86. package/dist/index.d.ts +5 -3
  87. package/dist/index.d.ts.map +1 -1
  88. package/dist/index.js +7 -5
  89. package/dist/index.js.map +1 -1
  90. package/dist/main.d.ts.map +1 -1
  91. package/dist/main.js +14 -106
  92. package/dist/main.js.map +1 -1
  93. package/dist/modes/index.d.ts +0 -4
  94. package/dist/modes/index.d.ts.map +1 -1
  95. package/dist/modes/index.js +0 -4
  96. package/dist/modes/index.js.map +1 -1
  97. package/dist/modes/interactive/components/diff.d.ts +1 -8
  98. package/dist/modes/interactive/components/diff.d.ts.map +1 -1
  99. package/dist/modes/interactive/components/diff.js +2 -131
  100. package/dist/modes/interactive/components/diff.js.map +1 -1
  101. package/dist/modes/interactive/components/keybinding-hints.d.ts +2 -12
  102. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  103. package/dist/modes/interactive/components/keybinding-hints.js +4 -33
  104. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  105. package/dist/modes/interactive/components/visual-truncate.d.ts +1 -19
  106. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  107. package/dist/modes/interactive/components/visual-truncate.js +4 -31
  108. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  109. package/dist/modes/interactive/theme/theme.d.ts +27 -89
  110. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  111. package/dist/modes/interactive/theme/theme.js +44 -992
  112. package/dist/modes/interactive/theme/theme.js.map +1 -1
  113. package/dist/package-manager-cli.d.ts.map +1 -1
  114. package/dist/package-manager-cli.js +1 -1
  115. package/dist/package-manager-cli.js.map +1 -1
  116. package/npm-shrinkwrap.json +240 -246
  117. package/package.json +6 -7
  118. package/dist/cli/session-picker.d.ts +0 -9
  119. package/dist/cli/session-picker.d.ts.map +0 -1
  120. package/dist/cli/session-picker.js +0 -35
  121. package/dist/cli/session-picker.js.map +0 -1
  122. package/dist/modes/interactive/assets/clankolas.png +0 -0
  123. package/dist/modes/interactive/components/armin.d.ts +0 -34
  124. package/dist/modes/interactive/components/armin.d.ts.map +0 -1
  125. package/dist/modes/interactive/components/armin.js +0 -333
  126. package/dist/modes/interactive/components/armin.js.map +0 -1
  127. package/dist/modes/interactive/components/assistant-message.d.ts +0 -20
  128. package/dist/modes/interactive/components/assistant-message.d.ts.map +0 -1
  129. package/dist/modes/interactive/components/assistant-message.js +0 -121
  130. package/dist/modes/interactive/components/assistant-message.js.map +0 -1
  131. package/dist/modes/interactive/components/bash-execution.d.ts +0 -34
  132. package/dist/modes/interactive/components/bash-execution.d.ts.map +0 -1
  133. package/dist/modes/interactive/components/bash-execution.js +0 -175
  134. package/dist/modes/interactive/components/bash-execution.js.map +0 -1
  135. package/dist/modes/interactive/components/bordered-loader.d.ts +0 -16
  136. package/dist/modes/interactive/components/bordered-loader.d.ts.map +0 -1
  137. package/dist/modes/interactive/components/bordered-loader.js +0 -54
  138. package/dist/modes/interactive/components/bordered-loader.js.map +0 -1
  139. package/dist/modes/interactive/components/branch-summary-message.d.ts +0 -16
  140. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +0 -1
  141. package/dist/modes/interactive/components/branch-summary-message.js +0 -44
  142. package/dist/modes/interactive/components/branch-summary-message.js.map +0 -1
  143. package/dist/modes/interactive/components/compaction-summary-message.d.ts +0 -16
  144. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +0 -1
  145. package/dist/modes/interactive/components/compaction-summary-message.js +0 -45
  146. package/dist/modes/interactive/components/compaction-summary-message.js.map +0 -1
  147. package/dist/modes/interactive/components/config-selector.d.ts +0 -71
  148. package/dist/modes/interactive/components/config-selector.d.ts.map +0 -1
  149. package/dist/modes/interactive/components/config-selector.js +0 -506
  150. package/dist/modes/interactive/components/config-selector.js.map +0 -1
  151. package/dist/modes/interactive/components/countdown-timer.d.ts +0 -14
  152. package/dist/modes/interactive/components/countdown-timer.d.ts.map +0 -1
  153. package/dist/modes/interactive/components/countdown-timer.js +0 -33
  154. package/dist/modes/interactive/components/countdown-timer.js.map +0 -1
  155. package/dist/modes/interactive/components/custom-editor.d.ts +0 -21
  156. package/dist/modes/interactive/components/custom-editor.d.ts.map +0 -1
  157. package/dist/modes/interactive/components/custom-editor.js +0 -70
  158. package/dist/modes/interactive/components/custom-editor.js.map +0 -1
  159. package/dist/modes/interactive/components/custom-message.d.ts +0 -20
  160. package/dist/modes/interactive/components/custom-message.d.ts.map +0 -1
  161. package/dist/modes/interactive/components/custom-message.js +0 -79
  162. package/dist/modes/interactive/components/custom-message.js.map +0 -1
  163. package/dist/modes/interactive/components/daxnuts.d.ts +0 -23
  164. package/dist/modes/interactive/components/daxnuts.d.ts.map +0 -1
  165. package/dist/modes/interactive/components/daxnuts.js +0 -140
  166. package/dist/modes/interactive/components/daxnuts.js.map +0 -1
  167. package/dist/modes/interactive/components/dynamic-border.d.ts +0 -15
  168. package/dist/modes/interactive/components/dynamic-border.d.ts.map +0 -1
  169. package/dist/modes/interactive/components/dynamic-border.js +0 -21
  170. package/dist/modes/interactive/components/dynamic-border.js.map +0 -1
  171. package/dist/modes/interactive/components/earendil-announcement.d.ts +0 -5
  172. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +0 -1
  173. package/dist/modes/interactive/components/earendil-announcement.js +0 -40
  174. package/dist/modes/interactive/components/earendil-announcement.js.map +0 -1
  175. package/dist/modes/interactive/components/extension-editor.d.ts +0 -20
  176. package/dist/modes/interactive/components/extension-editor.d.ts.map +0 -1
  177. package/dist/modes/interactive/components/extension-editor.js +0 -119
  178. package/dist/modes/interactive/components/extension-editor.js.map +0 -1
  179. package/dist/modes/interactive/components/extension-input.d.ts +0 -23
  180. package/dist/modes/interactive/components/extension-input.d.ts.map +0 -1
  181. package/dist/modes/interactive/components/extension-input.js +0 -61
  182. package/dist/modes/interactive/components/extension-input.js.map +0 -1
  183. package/dist/modes/interactive/components/extension-selector.d.ts +0 -26
  184. package/dist/modes/interactive/components/extension-selector.d.ts.map +0 -1
  185. package/dist/modes/interactive/components/extension-selector.js +0 -83
  186. package/dist/modes/interactive/components/extension-selector.js.map +0 -1
  187. package/dist/modes/interactive/components/footer.d.ts +0 -27
  188. package/dist/modes/interactive/components/footer.d.ts.map +0 -1
  189. package/dist/modes/interactive/components/footer.js +0 -201
  190. package/dist/modes/interactive/components/footer.js.map +0 -1
  191. package/dist/modes/interactive/components/index.d.ts +0 -32
  192. package/dist/modes/interactive/components/index.d.ts.map +0 -1
  193. package/dist/modes/interactive/components/index.js +0 -33
  194. package/dist/modes/interactive/components/index.js.map +0 -1
  195. package/dist/modes/interactive/components/login-dialog.d.ts +0 -46
  196. package/dist/modes/interactive/components/login-dialog.d.ts.map +0 -1
  197. package/dist/modes/interactive/components/login-dialog.js +0 -160
  198. package/dist/modes/interactive/components/login-dialog.js.map +0 -1
  199. package/dist/modes/interactive/components/model-selector.d.ts +0 -47
  200. package/dist/modes/interactive/components/model-selector.d.ts.map +0 -1
  201. package/dist/modes/interactive/components/model-selector.js +0 -278
  202. package/dist/modes/interactive/components/model-selector.js.map +0 -1
  203. package/dist/modes/interactive/components/oauth-selector.d.ts +0 -31
  204. package/dist/modes/interactive/components/oauth-selector.d.ts.map +0 -1
  205. package/dist/modes/interactive/components/oauth-selector.js +0 -165
  206. package/dist/modes/interactive/components/oauth-selector.js.map +0 -1
  207. package/dist/modes/interactive/components/scoped-models-selector.d.ts +0 -42
  208. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +0 -1
  209. package/dist/modes/interactive/components/scoped-models-selector.js +0 -290
  210. package/dist/modes/interactive/components/scoped-models-selector.js.map +0 -1
  211. package/dist/modes/interactive/components/session-selector-search.d.ts +0 -23
  212. package/dist/modes/interactive/components/session-selector-search.d.ts.map +0 -1
  213. package/dist/modes/interactive/components/session-selector-search.js +0 -155
  214. package/dist/modes/interactive/components/session-selector-search.js.map +0 -1
  215. package/dist/modes/interactive/components/session-selector.d.ts +0 -96
  216. package/dist/modes/interactive/components/session-selector.d.ts.map +0 -1
  217. package/dist/modes/interactive/components/session-selector.js +0 -861
  218. package/dist/modes/interactive/components/session-selector.js.map +0 -1
  219. package/dist/modes/interactive/components/settings-selector.d.ts +0 -69
  220. package/dist/modes/interactive/components/settings-selector.d.ts.map +0 -1
  221. package/dist/modes/interactive/components/settings-selector.js +0 -390
  222. package/dist/modes/interactive/components/settings-selector.js.map +0 -1
  223. package/dist/modes/interactive/components/show-images-selector.d.ts +0 -10
  224. package/dist/modes/interactive/components/show-images-selector.d.ts.map +0 -1
  225. package/dist/modes/interactive/components/show-images-selector.js +0 -39
  226. package/dist/modes/interactive/components/show-images-selector.js.map +0 -1
  227. package/dist/modes/interactive/components/skill-invocation-message.d.ts +0 -17
  228. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +0 -1
  229. package/dist/modes/interactive/components/skill-invocation-message.js +0 -47
  230. package/dist/modes/interactive/components/skill-invocation-message.js.map +0 -1
  231. package/dist/modes/interactive/components/theme-selector.d.ts +0 -11
  232. package/dist/modes/interactive/components/theme-selector.d.ts.map +0 -1
  233. package/dist/modes/interactive/components/theme-selector.js +0 -50
  234. package/dist/modes/interactive/components/theme-selector.js.map +0 -1
  235. package/dist/modes/interactive/components/thinking-selector.d.ts +0 -11
  236. package/dist/modes/interactive/components/thinking-selector.d.ts.map +0 -1
  237. package/dist/modes/interactive/components/thinking-selector.js +0 -51
  238. package/dist/modes/interactive/components/thinking-selector.js.map +0 -1
  239. package/dist/modes/interactive/components/tool-execution.d.ts +0 -63
  240. package/dist/modes/interactive/components/tool-execution.d.ts.map +0 -1
  241. package/dist/modes/interactive/components/tool-execution.js +0 -295
  242. package/dist/modes/interactive/components/tool-execution.js.map +0 -1
  243. package/dist/modes/interactive/components/tree-selector.d.ts +0 -89
  244. package/dist/modes/interactive/components/tree-selector.d.ts.map +0 -1
  245. package/dist/modes/interactive/components/tree-selector.js +0 -1093
  246. package/dist/modes/interactive/components/tree-selector.js.map +0 -1
  247. package/dist/modes/interactive/components/user-message-selector.d.ts +0 -30
  248. package/dist/modes/interactive/components/user-message-selector.d.ts.map +0 -1
  249. package/dist/modes/interactive/components/user-message-selector.js +0 -114
  250. package/dist/modes/interactive/components/user-message-selector.js.map +0 -1
  251. package/dist/modes/interactive/components/user-message.d.ts +0 -10
  252. package/dist/modes/interactive/components/user-message.d.ts.map +0 -1
  253. package/dist/modes/interactive/components/user-message.js +0 -29
  254. package/dist/modes/interactive/components/user-message.js.map +0 -1
  255. package/dist/modes/interactive/interactive-mode.d.ts +0 -375
  256. package/dist/modes/interactive/interactive-mode.d.ts.map +0 -1
  257. package/dist/modes/interactive/interactive-mode.js +0 -4799
  258. package/dist/modes/interactive/interactive-mode.js.map +0 -1
  259. package/dist/modes/interactive/theme/dark.json +0 -86
  260. package/dist/modes/interactive/theme/light.json +0 -85
  261. package/dist/modes/interactive/theme/theme-schema.json +0 -335
  262. package/examples/extensions/border-status-editor.ts +0 -150
  263. package/examples/extensions/built-in-tool-renderer.ts +0 -249
  264. package/examples/extensions/custom-footer.ts +0 -64
  265. package/examples/extensions/custom-header.ts +0 -73
  266. package/examples/extensions/custom-provider-anthropic/index.ts +0 -604
  267. package/examples/extensions/custom-provider-anthropic/package-lock.json +0 -24
  268. package/examples/extensions/custom-provider-anthropic/package.json +0 -19
  269. package/examples/extensions/custom-provider-gitlab-duo/index.ts +0 -349
  270. package/examples/extensions/custom-provider-gitlab-duo/package.json +0 -16
  271. package/examples/extensions/custom-provider-gitlab-duo/test.ts +0 -82
  272. package/examples/extensions/doom-overlay/README.md +0 -46
  273. package/examples/extensions/doom-overlay/doom/build/doom.js +0 -21
  274. package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
  275. package/examples/extensions/doom-overlay/doom/build.sh +0 -152
  276. package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +0 -72
  277. package/examples/extensions/doom-overlay/doom-component.ts +0 -132
  278. package/examples/extensions/doom-overlay/doom-engine.ts +0 -173
  279. package/examples/extensions/doom-overlay/doom-keys.ts +0 -104
  280. package/examples/extensions/doom-overlay/index.ts +0 -74
  281. package/examples/extensions/doom-overlay/wad-finder.ts +0 -51
  282. package/examples/extensions/github-issue-autocomplete.ts +0 -185
  283. package/examples/extensions/handoff.ts +0 -191
  284. package/examples/extensions/interactive-shell.ts +0 -196
  285. package/examples/extensions/message-renderer.ts +0 -59
  286. package/examples/extensions/minimal-mode.ts +0 -426
  287. package/examples/extensions/modal-editor.ts +0 -85
  288. package/examples/extensions/overlay-qa-tests.ts +0 -1379
  289. package/examples/extensions/overlay-test.ts +0 -153
  290. package/examples/extensions/plan-mode/index.ts +0 -340
  291. package/examples/extensions/preset.ts +0 -430
  292. package/examples/extensions/qna.ts +0 -122
  293. package/examples/extensions/question.ts +0 -264
  294. package/examples/extensions/questionnaire.ts +0 -427
  295. package/examples/extensions/rainbow-editor.ts +0 -88
  296. package/examples/extensions/sandbox/index.ts +0 -321
  297. package/examples/extensions/sandbox/package-lock.json +0 -92
  298. package/examples/extensions/sandbox/package.json +0 -19
  299. package/examples/extensions/snake.ts +0 -343
  300. package/examples/extensions/space-invaders.ts +0 -560
  301. package/examples/extensions/ssh.ts +0 -220
  302. package/examples/extensions/status-line.ts +0 -32
  303. package/examples/extensions/structured-output.ts +0 -65
  304. package/examples/extensions/subagent/index.ts +0 -1009
  305. package/examples/extensions/summarize.ts +0 -206
  306. package/examples/extensions/tic-tac-toe.ts +0 -1008
  307. package/examples/extensions/todo.ts +0 -297
  308. package/examples/extensions/tools.ts +0 -141
  309. package/examples/extensions/truncated-tool.ts +0 -195
  310. package/examples/extensions/with-deps/index.ts +0 -32
  311. package/examples/extensions/with-deps/package-lock.json +0 -31
  312. package/examples/extensions/with-deps/package.json +0 -22
  313. package/examples/extensions/working-indicator.ts +0 -123
  314. package/examples/rpc-extension-ui.ts +0 -632
@@ -1,86 +0,0 @@
1
- {
2
- "$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
3
- "name": "dark",
4
- "vars": {
5
- "cyan": "#00d7ff",
6
- "blue": "#5f87ff",
7
- "green": "#b5bd68",
8
- "red": "#cc6666",
9
- "yellow": "#ffff00",
10
- "text": "#d4d4d4",
11
- "gray": "#808080",
12
- "dimGray": "#666666",
13
- "darkGray": "#505050",
14
- "accent": "#8abeb7",
15
- "selectedBg": "#3a3a4a",
16
- "userMsgBg": "#343541",
17
- "toolPendingBg": "#282832",
18
- "toolSuccessBg": "#283228",
19
- "toolErrorBg": "#3c2828",
20
- "customMsgBg": "#2d2838"
21
- },
22
- "colors": {
23
- "accent": "accent",
24
- "border": "blue",
25
- "borderAccent": "cyan",
26
- "borderMuted": "darkGray",
27
- "success": "green",
28
- "error": "red",
29
- "warning": "yellow",
30
- "muted": "gray",
31
- "dim": "dimGray",
32
- "text": "text",
33
- "thinkingText": "gray",
34
-
35
- "selectedBg": "selectedBg",
36
- "userMessageBg": "userMsgBg",
37
- "userMessageText": "text",
38
- "customMessageBg": "customMsgBg",
39
- "customMessageText": "text",
40
- "customMessageLabel": "#9575cd",
41
- "toolPendingBg": "toolPendingBg",
42
- "toolSuccessBg": "toolSuccessBg",
43
- "toolErrorBg": "toolErrorBg",
44
- "toolTitle": "text",
45
- "toolOutput": "gray",
46
-
47
- "mdHeading": "#f0c674",
48
- "mdLink": "#81a2be",
49
- "mdLinkUrl": "dimGray",
50
- "mdCode": "accent",
51
- "mdCodeBlock": "green",
52
- "mdCodeBlockBorder": "gray",
53
- "mdQuote": "gray",
54
- "mdQuoteBorder": "gray",
55
- "mdHr": "gray",
56
- "mdListBullet": "accent",
57
-
58
- "toolDiffAdded": "green",
59
- "toolDiffRemoved": "red",
60
- "toolDiffContext": "gray",
61
-
62
- "syntaxComment": "#6A9955",
63
- "syntaxKeyword": "#569CD6",
64
- "syntaxFunction": "#DCDCAA",
65
- "syntaxVariable": "#9CDCFE",
66
- "syntaxString": "#CE9178",
67
- "syntaxNumber": "#B5CEA8",
68
- "syntaxType": "#4EC9B0",
69
- "syntaxOperator": "#D4D4D4",
70
- "syntaxPunctuation": "#D4D4D4",
71
-
72
- "thinkingOff": "darkGray",
73
- "thinkingMinimal": "#6e6e6e",
74
- "thinkingLow": "#5f87af",
75
- "thinkingMedium": "#81a2be",
76
- "thinkingHigh": "#b294bb",
77
- "thinkingXhigh": "#d183e8",
78
-
79
- "bashMode": "green"
80
- },
81
- "export": {
82
- "pageBg": "#18181e",
83
- "cardBg": "#1e1e24",
84
- "infoBg": "#3c3728"
85
- }
86
- }
@@ -1,85 +0,0 @@
1
- {
2
- "$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
3
- "name": "light",
4
- "vars": {
5
- "teal": "#5a8080",
6
- "blue": "#547da7",
7
- "green": "#588458",
8
- "red": "#aa5555",
9
- "yellow": "#9a7326",
10
- "text": "#1f2328",
11
- "mediumGray": "#6c6c6c",
12
- "dimGray": "#767676",
13
- "lightGray": "#b0b0b0",
14
- "selectedBg": "#d0d0e0",
15
- "userMsgBg": "#e8e8e8",
16
- "toolPendingBg": "#e8e8f0",
17
- "toolSuccessBg": "#e8f0e8",
18
- "toolErrorBg": "#f0e8e8",
19
- "customMsgBg": "#ede7f6"
20
- },
21
- "colors": {
22
- "accent": "teal",
23
- "border": "blue",
24
- "borderAccent": "teal",
25
- "borderMuted": "lightGray",
26
- "success": "green",
27
- "error": "red",
28
- "warning": "yellow",
29
- "muted": "mediumGray",
30
- "dim": "dimGray",
31
- "text": "text",
32
- "thinkingText": "mediumGray",
33
-
34
- "selectedBg": "selectedBg",
35
- "userMessageBg": "userMsgBg",
36
- "userMessageText": "text",
37
- "customMessageBg": "customMsgBg",
38
- "customMessageText": "text",
39
- "customMessageLabel": "#7e57c2",
40
- "toolPendingBg": "toolPendingBg",
41
- "toolSuccessBg": "toolSuccessBg",
42
- "toolErrorBg": "toolErrorBg",
43
- "toolTitle": "text",
44
- "toolOutput": "mediumGray",
45
-
46
- "mdHeading": "yellow",
47
- "mdLink": "blue",
48
- "mdLinkUrl": "dimGray",
49
- "mdCode": "teal",
50
- "mdCodeBlock": "green",
51
- "mdCodeBlockBorder": "mediumGray",
52
- "mdQuote": "mediumGray",
53
- "mdQuoteBorder": "mediumGray",
54
- "mdHr": "mediumGray",
55
- "mdListBullet": "green",
56
-
57
- "toolDiffAdded": "green",
58
- "toolDiffRemoved": "red",
59
- "toolDiffContext": "mediumGray",
60
-
61
- "syntaxComment": "#008000",
62
- "syntaxKeyword": "#0000FF",
63
- "syntaxFunction": "#795E26",
64
- "syntaxVariable": "#001080",
65
- "syntaxString": "#A31515",
66
- "syntaxNumber": "#098658",
67
- "syntaxType": "#267F99",
68
- "syntaxOperator": "#000000",
69
- "syntaxPunctuation": "#000000",
70
-
71
- "thinkingOff": "lightGray",
72
- "thinkingMinimal": "#767676",
73
- "thinkingLow": "blue",
74
- "thinkingMedium": "teal",
75
- "thinkingHigh": "#875f87",
76
- "thinkingXhigh": "#8b008b",
77
-
78
- "bashMode": "green"
79
- },
80
- "export": {
81
- "pageBg": "#f8f8f8",
82
- "cardBg": "#ffffff",
83
- "infoBg": "#fffae6"
84
- }
85
- }
@@ -1,335 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "title": "Pi Coding Agent Theme",
4
- "description": "Theme schema for Pi coding agent",
5
- "type": "object",
6
- "required": ["name", "colors"],
7
- "properties": {
8
- "$schema": {
9
- "type": "string",
10
- "description": "JSON schema reference"
11
- },
12
- "name": {
13
- "type": "string",
14
- "description": "Theme name"
15
- },
16
- "vars": {
17
- "type": "object",
18
- "description": "Reusable color variables",
19
- "additionalProperties": {
20
- "oneOf": [
21
- {
22
- "type": "string",
23
- "description": "Hex color (#RRGGBB), variable reference, or empty string for terminal default"
24
- },
25
- {
26
- "type": "integer",
27
- "minimum": 0,
28
- "maximum": 255,
29
- "description": "256-color palette index (0-255)"
30
- }
31
- ]
32
- }
33
- },
34
- "colors": {
35
- "type": "object",
36
- "description": "Theme color definitions (all required)",
37
- "required": [
38
- "accent",
39
- "border",
40
- "borderAccent",
41
- "borderMuted",
42
- "success",
43
- "error",
44
- "warning",
45
- "muted",
46
- "dim",
47
- "text",
48
- "thinkingText",
49
- "selectedBg",
50
- "userMessageBg",
51
- "userMessageText",
52
- "customMessageBg",
53
- "customMessageText",
54
- "customMessageLabel",
55
- "toolPendingBg",
56
- "toolSuccessBg",
57
- "toolErrorBg",
58
- "toolTitle",
59
- "toolOutput",
60
- "mdHeading",
61
- "mdLink",
62
- "mdLinkUrl",
63
- "mdCode",
64
- "mdCodeBlock",
65
- "mdCodeBlockBorder",
66
- "mdQuote",
67
- "mdQuoteBorder",
68
- "mdHr",
69
- "mdListBullet",
70
- "toolDiffAdded",
71
- "toolDiffRemoved",
72
- "toolDiffContext",
73
- "syntaxComment",
74
- "syntaxKeyword",
75
- "syntaxFunction",
76
- "syntaxVariable",
77
- "syntaxString",
78
- "syntaxNumber",
79
- "syntaxType",
80
- "syntaxOperator",
81
- "syntaxPunctuation",
82
- "thinkingOff",
83
- "thinkingMinimal",
84
- "thinkingLow",
85
- "thinkingMedium",
86
- "thinkingHigh",
87
- "thinkingXhigh",
88
- "bashMode"
89
- ],
90
- "properties": {
91
- "accent": {
92
- "$ref": "#/$defs/colorValue",
93
- "description": "Primary accent color (logo, selected items, cursor)"
94
- },
95
- "border": {
96
- "$ref": "#/$defs/colorValue",
97
- "description": "Normal borders"
98
- },
99
- "borderAccent": {
100
- "$ref": "#/$defs/colorValue",
101
- "description": "Highlighted borders"
102
- },
103
- "borderMuted": {
104
- "$ref": "#/$defs/colorValue",
105
- "description": "Subtle borders"
106
- },
107
- "success": {
108
- "$ref": "#/$defs/colorValue",
109
- "description": "Success states"
110
- },
111
- "error": {
112
- "$ref": "#/$defs/colorValue",
113
- "description": "Error states"
114
- },
115
- "warning": {
116
- "$ref": "#/$defs/colorValue",
117
- "description": "Warning states"
118
- },
119
- "muted": {
120
- "$ref": "#/$defs/colorValue",
121
- "description": "Secondary/dimmed text"
122
- },
123
- "dim": {
124
- "$ref": "#/$defs/colorValue",
125
- "description": "Very dimmed text (more subtle than muted)"
126
- },
127
- "text": {
128
- "$ref": "#/$defs/colorValue",
129
- "description": "Default text color (usually empty string)"
130
- },
131
- "thinkingText": {
132
- "$ref": "#/$defs/colorValue",
133
- "description": "Thinking block text color"
134
- },
135
- "selectedBg": {
136
- "$ref": "#/$defs/colorValue",
137
- "description": "Selected item background"
138
- },
139
- "userMessageBg": {
140
- "$ref": "#/$defs/colorValue",
141
- "description": "User message background"
142
- },
143
- "userMessageText": {
144
- "$ref": "#/$defs/colorValue",
145
- "description": "User message text color"
146
- },
147
- "customMessageBg": {
148
- "$ref": "#/$defs/colorValue",
149
- "description": "Custom message background (hook-injected messages)"
150
- },
151
- "customMessageText": {
152
- "$ref": "#/$defs/colorValue",
153
- "description": "Custom message text color"
154
- },
155
- "customMessageLabel": {
156
- "$ref": "#/$defs/colorValue",
157
- "description": "Custom message type label color"
158
- },
159
- "toolPendingBg": {
160
- "$ref": "#/$defs/colorValue",
161
- "description": "Tool execution box (pending state)"
162
- },
163
- "toolSuccessBg": {
164
- "$ref": "#/$defs/colorValue",
165
- "description": "Tool execution box (success state)"
166
- },
167
- "toolErrorBg": {
168
- "$ref": "#/$defs/colorValue",
169
- "description": "Tool execution box (error state)"
170
- },
171
- "toolTitle": {
172
- "$ref": "#/$defs/colorValue",
173
- "description": "Tool execution box title color"
174
- },
175
- "toolOutput": {
176
- "$ref": "#/$defs/colorValue",
177
- "description": "Tool execution box output text color"
178
- },
179
- "mdHeading": {
180
- "$ref": "#/$defs/colorValue",
181
- "description": "Markdown heading text"
182
- },
183
- "mdLink": {
184
- "$ref": "#/$defs/colorValue",
185
- "description": "Markdown link text"
186
- },
187
- "mdLinkUrl": {
188
- "$ref": "#/$defs/colorValue",
189
- "description": "Markdown link URL"
190
- },
191
- "mdCode": {
192
- "$ref": "#/$defs/colorValue",
193
- "description": "Markdown inline code"
194
- },
195
- "mdCodeBlock": {
196
- "$ref": "#/$defs/colorValue",
197
- "description": "Markdown code block content"
198
- },
199
- "mdCodeBlockBorder": {
200
- "$ref": "#/$defs/colorValue",
201
- "description": "Markdown code block fences"
202
- },
203
- "mdQuote": {
204
- "$ref": "#/$defs/colorValue",
205
- "description": "Markdown blockquote text"
206
- },
207
- "mdQuoteBorder": {
208
- "$ref": "#/$defs/colorValue",
209
- "description": "Markdown blockquote border"
210
- },
211
- "mdHr": {
212
- "$ref": "#/$defs/colorValue",
213
- "description": "Markdown horizontal rule"
214
- },
215
- "mdListBullet": {
216
- "$ref": "#/$defs/colorValue",
217
- "description": "Markdown list bullets/numbers"
218
- },
219
- "toolDiffAdded": {
220
- "$ref": "#/$defs/colorValue",
221
- "description": "Added lines in tool diffs"
222
- },
223
- "toolDiffRemoved": {
224
- "$ref": "#/$defs/colorValue",
225
- "description": "Removed lines in tool diffs"
226
- },
227
- "toolDiffContext": {
228
- "$ref": "#/$defs/colorValue",
229
- "description": "Context lines in tool diffs"
230
- },
231
- "syntaxComment": {
232
- "$ref": "#/$defs/colorValue",
233
- "description": "Syntax highlighting: comments"
234
- },
235
- "syntaxKeyword": {
236
- "$ref": "#/$defs/colorValue",
237
- "description": "Syntax highlighting: keywords"
238
- },
239
- "syntaxFunction": {
240
- "$ref": "#/$defs/colorValue",
241
- "description": "Syntax highlighting: function names"
242
- },
243
- "syntaxVariable": {
244
- "$ref": "#/$defs/colorValue",
245
- "description": "Syntax highlighting: variable names"
246
- },
247
- "syntaxString": {
248
- "$ref": "#/$defs/colorValue",
249
- "description": "Syntax highlighting: string literals"
250
- },
251
- "syntaxNumber": {
252
- "$ref": "#/$defs/colorValue",
253
- "description": "Syntax highlighting: number literals"
254
- },
255
- "syntaxType": {
256
- "$ref": "#/$defs/colorValue",
257
- "description": "Syntax highlighting: type names"
258
- },
259
- "syntaxOperator": {
260
- "$ref": "#/$defs/colorValue",
261
- "description": "Syntax highlighting: operators"
262
- },
263
- "syntaxPunctuation": {
264
- "$ref": "#/$defs/colorValue",
265
- "description": "Syntax highlighting: punctuation"
266
- },
267
- "thinkingOff": {
268
- "$ref": "#/$defs/colorValue",
269
- "description": "Thinking level border: off"
270
- },
271
- "thinkingMinimal": {
272
- "$ref": "#/$defs/colorValue",
273
- "description": "Thinking level border: minimal"
274
- },
275
- "thinkingLow": {
276
- "$ref": "#/$defs/colorValue",
277
- "description": "Thinking level border: low"
278
- },
279
- "thinkingMedium": {
280
- "$ref": "#/$defs/colorValue",
281
- "description": "Thinking level border: medium"
282
- },
283
- "thinkingHigh": {
284
- "$ref": "#/$defs/colorValue",
285
- "description": "Thinking level border: high"
286
- },
287
- "thinkingXhigh": {
288
- "$ref": "#/$defs/colorValue",
289
- "description": "Thinking level border: xhigh (OpenAI codex-max only)"
290
- },
291
- "bashMode": {
292
- "$ref": "#/$defs/colorValue",
293
- "description": "Editor border color in bash mode"
294
- }
295
- },
296
- "additionalProperties": false
297
- },
298
- "export": {
299
- "type": "object",
300
- "description": "Optional colors for HTML export (defaults derived from userMessageBg if not specified)",
301
- "properties": {
302
- "pageBg": {
303
- "$ref": "#/$defs/colorValue",
304
- "description": "Page background color"
305
- },
306
- "cardBg": {
307
- "$ref": "#/$defs/colorValue",
308
- "description": "Card/container background color"
309
- },
310
- "infoBg": {
311
- "$ref": "#/$defs/colorValue",
312
- "description": "Info sections background (system prompt, notices)"
313
- }
314
- },
315
- "additionalProperties": false
316
- }
317
- },
318
- "additionalProperties": false,
319
- "$defs": {
320
- "colorValue": {
321
- "oneOf": [
322
- {
323
- "type": "string",
324
- "description": "Hex color (#RRGGBB), variable reference, or empty string for terminal default"
325
- },
326
- {
327
- "type": "integer",
328
- "minimum": 0,
329
- "maximum": 255,
330
- "description": "256-color palette index (0-255)"
331
- }
332
- ]
333
- }
334
- }
335
- }
@@ -1,150 +0,0 @@
1
- import {
2
- CustomEditor,
3
- type ExtensionAPI,
4
- type ExtensionContext,
5
- type KeybindingsManager,
6
- } from "@openeryc/pi-coding-agent";
7
- import type { Component, EditorTheme, TUI } from "@openeryc/pi-tui";
8
- import { truncateToWidth, visibleWidth } from "@openeryc/pi-tui";
9
-
10
- function fitBorder(
11
- left: string,
12
- right: string,
13
- width: number,
14
- border: (text: string) => string,
15
- fill: (text: string) => string = border,
16
- ): string {
17
- if (width <= 0) return "";
18
- if (width === 1) return border("─");
19
-
20
- let leftText = left;
21
- let rightText = right;
22
- const fixedWidth = 2;
23
- const minimumGap = 3;
24
-
25
- while (
26
- fixedWidth + visibleWidth(leftText) + visibleWidth(rightText) + minimumGap > width &&
27
- visibleWidth(rightText) > 0
28
- ) {
29
- rightText = truncateToWidth(rightText, Math.max(0, visibleWidth(rightText) - 1), "");
30
- }
31
- while (
32
- fixedWidth + visibleWidth(leftText) + visibleWidth(rightText) + minimumGap > width &&
33
- visibleWidth(leftText) > 0
34
- ) {
35
- leftText = truncateToWidth(leftText, Math.max(0, visibleWidth(leftText) - 1), "");
36
- }
37
-
38
- const gapWidth = Math.max(0, width - fixedWidth - visibleWidth(leftText) - visibleWidth(rightText));
39
- return `${border("─")}${leftText}${fill("─".repeat(gapWidth))}${rightText}${border("─")}`;
40
- }
41
-
42
- function formatCwd(cwd: string): string {
43
- const home = process.env.HOME;
44
- if (home && cwd.startsWith(home)) {
45
- return `~${cwd.slice(home.length)}`;
46
- }
47
- return cwd;
48
- }
49
-
50
- function formatContext(ctx: ExtensionContext): string {
51
- const usage = ctx.getContextUsage();
52
- const contextWindow = usage?.contextWindow ?? ctx.model?.contextWindow;
53
- if (!contextWindow || !usage || usage.percent === null) {
54
- return "ctx ?";
55
- }
56
- return `ctx ${Math.round(usage.percent)}%/${(contextWindow / 1000).toFixed(0)}k`;
57
- }
58
-
59
- function formatThinking(level: string): string {
60
- return level === "off" ? "off" : level;
61
- }
62
-
63
- class EmptyFooter implements Component {
64
- render(): string[] {
65
- return [];
66
- }
67
-
68
- invalidate(): void {}
69
- }
70
-
71
- export default function (pi: ExtensionAPI) {
72
- let isWorking = false;
73
- let spinnerIndex = 0;
74
- let spinnerTimer: ReturnType<typeof setInterval> | undefined;
75
- let activeTui: TUI | undefined;
76
- const spinnerFrames = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
77
-
78
- const stopSpinner = () => {
79
- if (spinnerTimer) {
80
- clearInterval(spinnerTimer);
81
- spinnerTimer = undefined;
82
- }
83
- };
84
-
85
- pi.on("agent_start", () => {
86
- isWorking = true;
87
- stopSpinner();
88
- spinnerTimer = setInterval(() => {
89
- spinnerIndex = (spinnerIndex + 1) % spinnerFrames.length;
90
- activeTui?.requestRender();
91
- }, 80);
92
- activeTui?.requestRender();
93
- });
94
-
95
- pi.on("agent_end", () => {
96
- isWorking = false;
97
- stopSpinner();
98
- activeTui?.requestRender();
99
- });
100
-
101
- pi.on("session_shutdown", () => {
102
- stopSpinner();
103
- activeTui = undefined;
104
- });
105
-
106
- pi.on("session_start", (_event, ctx) => {
107
- ctx.ui.setWorkingVisible(false);
108
- ctx.ui.setFooter(() => new EmptyFooter());
109
-
110
- let branch: string | undefined;
111
-
112
- const refreshBranch = async () => {
113
- const result = await pi.exec("git", ["branch", "--show-current"], { cwd: ctx.cwd }).catch(() => undefined);
114
- const stdout = result?.stdout.trim();
115
- branch = stdout && stdout.length > 0 ? stdout : undefined;
116
- activeTui?.requestRender();
117
- };
118
- void refreshBranch();
119
-
120
- class BorderStatusEditor extends CustomEditor {
121
- constructor(tui: TUI, theme: EditorTheme, keybindings: KeybindingsManager) {
122
- super(tui, theme, keybindings, { paddingX: 0 });
123
- activeTui = tui;
124
- }
125
-
126
- render(width: number): string[] {
127
- const lines = super.render(width);
128
- if (lines.length < 2) return lines;
129
-
130
- const thm = ctx.ui.theme;
131
- const model = ctx.model ? `${ctx.model.provider}/${ctx.model.id}` : "no model";
132
- const thinking = pi.getThinkingLevel();
133
- const topLeft = isWorking ? thm.fg("accent", ` ${spinnerFrames[spinnerIndex]} `) : "";
134
- const topRight = "";
135
- const bottomLeft = thm.fg("muted", ` ${model} · ${formatThinking(thinking)} `);
136
- const bottomRight = thm.fg(
137
- "muted",
138
- ` ${formatContext(ctx)} · ${formatCwd(ctx.cwd)}${branch ? ` (${branch})` : ""} `,
139
- );
140
- const borderColor = (text: string) => this.borderColor(text);
141
-
142
- lines[0] = fitBorder(topLeft, topRight, width, borderColor);
143
- lines[lines.length - 1] = fitBorder(bottomLeft, bottomRight, width, borderColor);
144
- return lines;
145
- }
146
- }
147
-
148
- ctx.ui.setEditorComponent((tui, theme, keybindings) => new BorderStatusEditor(tui, theme, keybindings));
149
- });
150
- }