@astralyn/pi 0.87.1 → 0.87.3

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 (328) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/bundle/chunks/{chunk-CDMUKIXY.js → chunk-MJ45I4SM.js} +1 -1
  3. package/dist/bundle/chunks/{chunk-772GXEFD.js → chunk-TYOQD6VQ.js} +97 -84
  4. package/dist/bundle/chunks/{virtual-modules-LQO2MG3T.js → virtual-modules-NDGCHNG7.js} +1 -1
  5. package/dist/bundle/cli.js +1 -1
  6. package/dist/bundle/index.js +1 -1
  7. package/dist/bundle/rpc-entry.js +1 -1
  8. package/dist/config.d.ts +1 -1
  9. package/dist/config.d.ts.map +1 -1
  10. package/dist/config.js.map +1 -1
  11. package/dist/core/agent-session-runtime.d.ts +9 -0
  12. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  13. package/dist/core/agent-session-runtime.js +158 -157
  14. package/dist/core/agent-session-runtime.js.map +1 -1
  15. package/dist/core/agent-session.d.ts +14 -0
  16. package/dist/core/agent-session.d.ts.map +1 -1
  17. package/dist/core/agent-session.js +437 -434
  18. package/dist/core/agent-session.js.map +1 -1
  19. package/dist/core/background/types.d.ts +2 -0
  20. package/dist/core/background/types.d.ts.map +1 -1
  21. package/dist/core/background/types.js.map +1 -1
  22. package/dist/core/extensions/distribution-api.d.ts +41 -0
  23. package/dist/core/extensions/distribution-api.d.ts.map +1 -0
  24. package/dist/core/extensions/distribution-api.js +12 -0
  25. package/dist/core/extensions/distribution-api.js.map +1 -0
  26. package/dist/core/extensions/index.d.ts +1 -1
  27. package/dist/core/extensions/index.d.ts.map +1 -1
  28. package/dist/core/extensions/index.js.map +1 -1
  29. package/dist/core/extensions/loader.d.ts.map +1 -1
  30. package/dist/core/extensions/loader.js +1 -0
  31. package/dist/core/extensions/loader.js.map +1 -1
  32. package/dist/core/extensions/runner.d.ts.map +1 -1
  33. package/dist/core/extensions/runner.js +0 -2
  34. package/dist/core/extensions/runner.js.map +1 -1
  35. package/dist/core/extensions/types.d.ts +15 -45
  36. package/dist/core/extensions/types.d.ts.map +1 -1
  37. package/dist/core/extensions/types.js +1 -11
  38. package/dist/core/extensions/types.js.map +1 -1
  39. package/dist/core/extensions/virtual-modules.d.ts.map +1 -1
  40. package/dist/core/extensions/virtual-modules.js +2 -1
  41. package/dist/core/extensions/virtual-modules.js.map +1 -1
  42. package/dist/core/keybinding-registry.d.ts +11 -0
  43. package/dist/core/keybinding-registry.d.ts.map +1 -0
  44. package/dist/core/keybinding-registry.js +24 -0
  45. package/dist/core/keybinding-registry.js.map +1 -0
  46. package/dist/core/keybindings.d.ts +4 -64
  47. package/dist/core/keybindings.d.ts.map +1 -1
  48. package/dist/core/keybindings.js +2 -41
  49. package/dist/core/keybindings.js.map +1 -1
  50. package/dist/core/model-config.d.ts +70 -2
  51. package/dist/core/model-config.d.ts.map +1 -1
  52. package/dist/core/model-config.js +2 -26
  53. package/dist/core/model-config.js.map +1 -1
  54. package/dist/core/resource-loader.d.ts.map +1 -1
  55. package/dist/core/resource-loader.js +5 -11
  56. package/dist/core/resource-loader.js.map +1 -1
  57. package/dist/core/tools/bash.d.ts.map +1 -1
  58. package/dist/core/tools/bash.js +2 -2
  59. package/dist/core/tools/bash.js.map +1 -1
  60. package/dist/core/tools/shell-execution.d.ts +1 -0
  61. package/dist/core/tools/shell-execution.d.ts.map +1 -1
  62. package/dist/core/tools/shell-execution.js +21 -0
  63. package/dist/core/tools/shell-execution.js.map +1 -1
  64. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  65. package/dist/core/tools/tool-definition-wrapper.js +114 -1
  66. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  67. package/dist/core/trust-manager.d.ts.map +1 -1
  68. package/dist/core/trust-manager.js +11 -48
  69. package/dist/core/trust-manager.js.map +1 -1
  70. package/dist/extensions/background/actions.d.ts.map +1 -1
  71. package/dist/extensions/background/actions.js +107 -55
  72. package/dist/extensions/background/actions.js.map +1 -1
  73. package/dist/extensions/background/index.d.ts +2 -0
  74. package/dist/extensions/background/index.d.ts.map +1 -1
  75. package/dist/extensions/background/index.js +20 -3
  76. package/dist/extensions/background/index.js.map +1 -1
  77. package/dist/extensions/background/keybindings.d.ts +10 -0
  78. package/dist/extensions/background/keybindings.d.ts.map +1 -0
  79. package/dist/extensions/background/keybindings.js +14 -0
  80. package/dist/extensions/background/keybindings.js.map +1 -0
  81. package/dist/extensions/background/manager.d.ts +2 -0
  82. package/dist/extensions/background/manager.d.ts.map +1 -1
  83. package/dist/extensions/background/manager.js +1 -0
  84. package/dist/extensions/background/manager.js.map +1 -1
  85. package/dist/extensions/btw/controller.d.ts +1 -0
  86. package/dist/extensions/btw/controller.d.ts.map +1 -1
  87. package/dist/extensions/btw/controller.js +5 -5
  88. package/dist/extensions/btw/controller.js.map +1 -1
  89. package/dist/extensions/btw/index.js +1 -2
  90. package/dist/extensions/btw/index.js.map +1 -1
  91. package/dist/extensions/btw/keybindings.d.ts +10 -0
  92. package/dist/extensions/btw/keybindings.d.ts.map +1 -0
  93. package/dist/extensions/btw/keybindings.js +8 -0
  94. package/dist/extensions/btw/keybindings.js.map +1 -0
  95. package/dist/extensions/btw/panel.d.ts +1 -0
  96. package/dist/extensions/btw/panel.d.ts.map +1 -1
  97. package/dist/extensions/btw/panel.js +1 -0
  98. package/dist/extensions/btw/panel.js.map +1 -1
  99. package/dist/extensions/list-keybindings.d.ts +8 -0
  100. package/dist/extensions/list-keybindings.d.ts.map +1 -0
  101. package/dist/extensions/list-keybindings.js +8 -0
  102. package/dist/extensions/list-keybindings.js.map +1 -0
  103. package/dist/extensions/provider/compat-fields.d.ts.map +1 -1
  104. package/dist/extensions/provider/compat-fields.js +23 -3
  105. package/dist/extensions/provider/compat-fields.js.map +1 -1
  106. package/dist/extensions/provider/connection.d.ts.map +1 -1
  107. package/dist/extensions/provider/connection.js +1 -1
  108. package/dist/extensions/provider/connection.js.map +1 -1
  109. package/dist/extensions/provider/constants.d.ts +2 -0
  110. package/dist/extensions/provider/constants.d.ts.map +1 -1
  111. package/dist/extensions/provider/constants.js +2 -0
  112. package/dist/extensions/provider/constants.js.map +1 -1
  113. package/dist/extensions/provider/keybindings.d.ts +9 -0
  114. package/dist/extensions/provider/keybindings.d.ts.map +1 -0
  115. package/dist/extensions/provider/keybindings.js +12 -0
  116. package/dist/extensions/provider/keybindings.js.map +1 -0
  117. package/dist/extensions/provider/probe.d.ts +8 -4
  118. package/dist/extensions/provider/probe.d.ts.map +1 -1
  119. package/dist/extensions/provider/probe.js +169 -11
  120. package/dist/extensions/provider/probe.js.map +1 -1
  121. package/dist/extensions/provider/ui/builtin-data.d.ts +1 -0
  122. package/dist/extensions/provider/ui/builtin-data.d.ts.map +1 -1
  123. package/dist/extensions/provider/ui/builtin-data.js +1 -0
  124. package/dist/extensions/provider/ui/builtin-data.js.map +1 -1
  125. package/dist/extensions/provider/ui/compat.d.ts +1 -0
  126. package/dist/extensions/provider/ui/compat.d.ts.map +1 -1
  127. package/dist/extensions/provider/ui/compat.js +1 -0
  128. package/dist/extensions/provider/ui/compat.js.map +1 -1
  129. package/dist/extensions/provider/ui/dictionary.d.ts +1 -0
  130. package/dist/extensions/provider/ui/dictionary.d.ts.map +1 -1
  131. package/dist/extensions/provider/ui/dictionary.js +1 -0
  132. package/dist/extensions/provider/ui/dictionary.js.map +1 -1
  133. package/dist/extensions/provider/ui/editor.d.ts +1 -0
  134. package/dist/extensions/provider/ui/editor.d.ts.map +1 -1
  135. package/dist/extensions/provider/ui/editor.js +1 -0
  136. package/dist/extensions/provider/ui/editor.js.map +1 -1
  137. package/dist/extensions/provider/ui/fetch-models.d.ts +5 -3
  138. package/dist/extensions/provider/ui/fetch-models.d.ts.map +1 -1
  139. package/dist/extensions/provider/ui/fetch-models.js +28 -3
  140. package/dist/extensions/provider/ui/fetch-models.js.map +1 -1
  141. package/dist/extensions/provider/ui/model-fields.d.ts +1 -0
  142. package/dist/extensions/provider/ui/model-fields.d.ts.map +1 -1
  143. package/dist/extensions/provider/ui/model-fields.js +1 -0
  144. package/dist/extensions/provider/ui/model-fields.js.map +1 -1
  145. package/dist/extensions/provider/ui/model-options.d.ts +1 -0
  146. package/dist/extensions/provider/ui/model-options.d.ts.map +1 -1
  147. package/dist/extensions/provider/ui/model-options.js +1 -0
  148. package/dist/extensions/provider/ui/model-options.js.map +1 -1
  149. package/dist/extensions/provider/ui/provider-fields.d.ts +1 -0
  150. package/dist/extensions/provider/ui/provider-fields.d.ts.map +1 -1
  151. package/dist/extensions/provider/ui/provider-fields.js +1 -0
  152. package/dist/extensions/provider/ui/provider-fields.js.map +1 -1
  153. package/dist/extensions/question/dialog.d.ts +1 -0
  154. package/dist/extensions/question/dialog.d.ts.map +1 -1
  155. package/dist/extensions/question/dialog.js +1 -0
  156. package/dist/extensions/question/dialog.js.map +1 -1
  157. package/dist/extensions/question/index.d.ts.map +1 -1
  158. package/dist/extensions/question/index.js +3 -1
  159. package/dist/extensions/question/index.js.map +1 -1
  160. package/dist/extensions/question/keybindings.d.ts +2 -0
  161. package/dist/extensions/question/keybindings.d.ts.map +1 -0
  162. package/dist/extensions/question/keybindings.js +3 -0
  163. package/dist/extensions/question/keybindings.js.map +1 -0
  164. package/dist/extensions/question/schema.d.ts +18 -0
  165. package/dist/extensions/question/schema.d.ts.map +1 -1
  166. package/dist/extensions/question/schema.js +52 -0
  167. package/dist/extensions/question/schema.js.map +1 -1
  168. package/dist/extensions/subagent/index.d.ts.map +1 -1
  169. package/dist/extensions/subagent/index.js +3 -1
  170. package/dist/extensions/subagent/index.js.map +1 -1
  171. package/dist/extensions/subagent/resolve.d.ts +14 -1
  172. package/dist/extensions/subagent/resolve.d.ts.map +1 -1
  173. package/dist/extensions/subagent/resolve.js +32 -18
  174. package/dist/extensions/subagent/resolve.js.map +1 -1
  175. package/dist/extensions/subagent/runner.d.ts.map +1 -1
  176. package/dist/extensions/subagent/runner.js +4 -1
  177. package/dist/extensions/subagent/runner.js.map +1 -1
  178. package/dist/extensions/subagent/schema.d.ts +9 -0
  179. package/dist/extensions/subagent/schema.d.ts.map +1 -1
  180. package/dist/extensions/subagent/schema.js +30 -1
  181. package/dist/extensions/subagent/schema.js.map +1 -1
  182. package/dist/extensions/subagent/types.d.ts +2 -0
  183. package/dist/extensions/subagent/types.d.ts.map +1 -1
  184. package/dist/extensions/subagent/types.js.map +1 -1
  185. package/dist/extensions/todo/constants.d.ts +1 -1
  186. package/dist/extensions/todo/constants.d.ts.map +1 -1
  187. package/dist/extensions/todo/constants.js +8 -8
  188. package/dist/extensions/todo/constants.js.map +1 -1
  189. package/dist/extensions/todo/index.d.ts.map +1 -1
  190. package/dist/extensions/todo/index.js +1 -0
  191. package/dist/extensions/todo/index.js.map +1 -1
  192. package/dist/extensions/todo/schema.d.ts +30 -25
  193. package/dist/extensions/todo/schema.d.ts.map +1 -1
  194. package/dist/extensions/todo/schema.js +26 -20
  195. package/dist/extensions/todo/schema.js.map +1 -1
  196. package/dist/extensions/todo/state.d.ts +12 -8
  197. package/dist/extensions/todo/state.d.ts.map +1 -1
  198. package/dist/extensions/todo/state.js +255 -171
  199. package/dist/extensions/todo/state.js.map +1 -1
  200. package/dist/extensions/todo/view.d.ts +6 -2
  201. package/dist/extensions/todo/view.d.ts.map +1 -1
  202. package/dist/extensions/todo/view.js +234 -144
  203. package/dist/extensions/todo/view.js.map +1 -1
  204. package/dist/index.d.ts +1 -1
  205. package/dist/index.d.ts.map +1 -1
  206. package/dist/index.js.map +1 -1
  207. package/dist/modes/interactive/editor-host.d.ts +43 -0
  208. package/dist/modes/interactive/editor-host.d.ts.map +1 -0
  209. package/dist/modes/interactive/editor-host.js +83 -0
  210. package/dist/modes/interactive/editor-host.js.map +1 -0
  211. package/dist/modes/interactive/interactive-mode.d.ts +1 -11
  212. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  213. package/dist/modes/interactive/interactive-mode.js +300 -360
  214. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  215. package/dist/modes/interactive/tool-chat.d.ts +21 -0
  216. package/dist/modes/interactive/tool-chat.d.ts.map +1 -0
  217. package/dist/modes/interactive/tool-chat.js +58 -0
  218. package/dist/modes/interactive/tool-chat.js.map +1 -0
  219. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  220. package/dist/modes/rpc/rpc-mode.js +0 -2
  221. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  222. package/dist/utils/path-identity.d.ts +12 -0
  223. package/dist/utils/path-identity.d.ts.map +1 -0
  224. package/dist/utils/path-identity.js +63 -0
  225. package/dist/utils/path-identity.js.map +1 -0
  226. package/dist/utils/shell.d.ts +0 -1
  227. package/dist/utils/shell.d.ts.map +1 -1
  228. package/dist/utils/shell.js +0 -21
  229. package/dist/utils/shell.js.map +1 -1
  230. package/dist/utils/syntax-highlight.d.ts +2 -0
  231. package/dist/utils/syntax-highlight.d.ts.map +1 -1
  232. package/dist/utils/syntax-highlight.js +2 -0
  233. package/dist/utils/syntax-highlight.js.map +1 -1
  234. package/docs/bundled/extensions/background.md +1 -1
  235. package/docs/bundled/extensions/provider.md +7 -3
  236. package/docs/bundled/extensions/question.md +1 -0
  237. package/docs/bundled/extensions/subagent.md +3 -1
  238. package/docs/bundled/extensions/todo.md +35 -23
  239. package/docs/extensions.md +17 -5
  240. package/examples/extensions/README.md +34 -14
  241. package/examples/extensions/auto-commit-on-exit.ts +1 -1
  242. package/examples/extensions/bash-spawn-hook.ts +2 -2
  243. package/examples/extensions/bookmark.ts +1 -1
  244. package/examples/extensions/border-status-editor.ts +6 -1
  245. package/examples/extensions/built-in-tool-renderer.ts +2 -2
  246. package/examples/extensions/claude-rules.ts +1 -1
  247. package/examples/extensions/commands.ts +1 -1
  248. package/examples/extensions/confirm-destructive.ts +1 -1
  249. package/examples/extensions/custom-compaction.ts +2 -2
  250. package/examples/extensions/custom-footer.ts +1 -1
  251. package/examples/extensions/custom-header.ts +2 -2
  252. package/examples/extensions/custom-provider-anthropic/index.ts +6 -6
  253. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  254. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  255. package/examples/extensions/custom-provider-gitlab-duo/index.ts +3 -3
  256. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  257. package/examples/extensions/dirty-repo-guard.ts +1 -1
  258. package/examples/extensions/doom-overlay/index.ts +1 -1
  259. package/examples/extensions/dynamic-resources/dynamic.json +3 -1
  260. package/examples/extensions/dynamic-resources/index.ts +1 -1
  261. package/examples/extensions/dynamic-tools.ts +1 -1
  262. package/examples/extensions/entry-renderer.ts +1 -1
  263. package/examples/extensions/event-bus.ts +1 -1
  264. package/examples/extensions/file-trigger.ts +1 -1
  265. package/examples/extensions/git-checkpoint.ts +1 -1
  266. package/examples/extensions/git-merge-and-resolve.ts +1 -1
  267. package/examples/extensions/github-issue-autocomplete.ts +1 -1
  268. package/examples/extensions/gondolin/index.ts +9 -7
  269. package/examples/extensions/gondolin/package-lock.json +2 -2
  270. package/examples/extensions/gondolin/package.json +1 -1
  271. package/examples/extensions/handoff.ts +2 -2
  272. package/examples/extensions/hello.ts +1 -1
  273. package/examples/extensions/hidden-thinking-label.ts +1 -1
  274. package/examples/extensions/inline-bash.ts +1 -1
  275. package/examples/extensions/input-transform-streaming.ts +1 -1
  276. package/examples/extensions/input-transform.ts +1 -1
  277. package/examples/extensions/interactive-shell.ts +1 -1
  278. package/examples/extensions/mac-system-theme.ts +1 -1
  279. package/examples/extensions/message-renderer.ts +1 -1
  280. package/examples/extensions/minimal-mode.ts +2 -2
  281. package/examples/extensions/modal-editor.ts +1 -1
  282. package/examples/extensions/model-status.ts +1 -1
  283. package/examples/extensions/notify.ts +1 -1
  284. package/examples/extensions/overlay-qa-tests.ts +3 -3
  285. package/examples/extensions/overlay-test.ts +1 -1
  286. package/examples/extensions/permission-gate.ts +1 -1
  287. package/examples/extensions/pirate.ts +1 -1
  288. package/examples/extensions/plan-mode/index.ts +1 -1
  289. package/examples/extensions/preset.ts +2 -2
  290. package/examples/extensions/project-trust.ts +3 -3
  291. package/examples/extensions/prompt-customizer.ts +1 -1
  292. package/examples/extensions/protected-paths.ts +1 -1
  293. package/examples/extensions/provider-payload.ts +1 -1
  294. package/examples/extensions/qna.ts +2 -2
  295. package/examples/extensions/question.ts +1 -1
  296. package/examples/extensions/questionnaire.ts +1 -1
  297. package/examples/extensions/rainbow-editor.ts +1 -1
  298. package/examples/extensions/reload-runtime.ts +1 -1
  299. package/examples/extensions/rpc-demo.ts +1 -1
  300. package/examples/extensions/sandbox/index.ts +2 -2
  301. package/examples/extensions/sandbox/package-lock.json +2 -2
  302. package/examples/extensions/sandbox/package.json +1 -1
  303. package/examples/extensions/send-user-message.ts +1 -1
  304. package/examples/extensions/session-name.ts +1 -1
  305. package/examples/extensions/shutdown-command.ts +1 -1
  306. package/examples/extensions/snake.ts +1 -1
  307. package/examples/extensions/space-invaders.ts +1 -1
  308. package/examples/extensions/ssh.ts +2 -2
  309. package/examples/extensions/status-line.ts +1 -1
  310. package/examples/extensions/structured-output.ts +1 -1
  311. package/examples/extensions/summarize.ts +2 -3
  312. package/examples/extensions/system-prompt-header.ts +1 -1
  313. package/examples/extensions/tic-tac-toe.ts +1 -1
  314. package/examples/extensions/timed-confirm.ts +1 -1
  315. package/examples/extensions/titlebar-spinner.ts +1 -1
  316. package/examples/extensions/todo.ts +1 -1
  317. package/examples/extensions/tool-override.ts +1 -1
  318. package/examples/extensions/tools.ts +2 -2
  319. package/examples/extensions/trigger-compact.ts +1 -1
  320. package/examples/extensions/truncated-tool.ts +4 -4
  321. package/examples/extensions/widget-placement.ts +1 -1
  322. package/examples/extensions/with-deps/index.ts +1 -1
  323. package/examples/extensions/with-deps/package-lock.json +2 -2
  324. package/examples/extensions/with-deps/package.json +1 -1
  325. package/examples/extensions/working-indicator.ts +1 -1
  326. package/examples/extensions/working-message-test.ts +1 -1
  327. package/npm-shrinkwrap.json +2 -2
  328. package/package.json +1 -1
@@ -5,7 +5,7 @@
5
5
  * Useful to ensure work is committed before switching context.
6
6
  */
7
7
 
8
- import type { ExtensionAPI, ExtensionContext } from "@astralyn/pi";
8
+ import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent";
9
9
 
10
10
  async function checkDirtyRepo(
11
11
  pi: ExtensionAPI,
@@ -9,7 +9,7 @@
9
9
  * This demonstrates that overlays can handle real-time game rendering at 35 FPS.
10
10
  */
11
11
 
12
- import type { ExtensionAPI } from "@astralyn/pi";
12
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
13
13
  import { DoomOverlayComponent } from "./doom-component.ts";
14
14
  import { DoomEngine } from "./doom-engine.ts";
15
15
  import { ensureWadFile } from "./wad-finder.ts";
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://raw.githubusercontent.com/ming-kang/pi/main/src/modes/interactive/theme/theme-schema.json",
2
+ "$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
3
3
  "name": "dynamic-resources",
4
4
  "vars": {
5
5
  "cyan": "#00d7ff",
@@ -30,6 +30,8 @@
30
30
  "dim": "dimGray",
31
31
  "text": "",
32
32
  "thinkingText": "gray",
33
+ "scrollbarTrack": "darkGray",
34
+ "scrollbarThumb": "",
33
35
  "selectedBg": "selectedBg",
34
36
  "userMessageBg": "userMsgBg",
35
37
  "userMessageText": "",
@@ -1,6 +1,6 @@
1
1
  import { dirname, join } from "node:path";
2
2
  import { fileURLToPath } from "node:url";
3
- import type { ExtensionAPI } from "@astralyn/pi";
3
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
4
4
 
5
5
  const baseDir = dirname(fileURLToPath(import.meta.url));
6
6
 
@@ -7,7 +7,7 @@
7
7
  * - Registers additional tools at runtime via /add-echo-tool <name>
8
8
  */
9
9
 
10
- import type { ExtensionAPI } from "@astralyn/pi";
10
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
11
11
  import { Type } from "typebox";
12
12
 
13
13
  const ECHO_PARAMS = Type.Object({
@@ -8,7 +8,7 @@
8
8
  * Usage: /status-card [message]
9
9
  */
10
10
 
11
- import type { ExtensionAPI } from "@astralyn/pi";
11
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
12
12
  import { Box, Text } from "@earendil-works/pi-tui";
13
13
 
14
14
  interface StatusCardData {
@@ -7,7 +7,7 @@
7
7
  * Usage: /emit [event-name] [data] - emit an event on the bus
8
8
  */
9
9
 
10
- import type { ExtensionAPI, ExtensionContext } from "@astralyn/pi";
10
+ import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent";
11
11
 
12
12
  export default function (pi: ExtensionAPI) {
13
13
  // Store ctx for use in event handler
@@ -9,7 +9,7 @@
9
9
  */
10
10
 
11
11
  import * as fs from "node:fs";
12
- import type { ExtensionAPI } from "@astralyn/pi";
12
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
13
13
 
14
14
  export default function (pi: ExtensionAPI) {
15
15
  pi.on("session_start", async (_event, ctx) => {
@@ -5,7 +5,7 @@
5
5
  * When forking, offers to restore code to that point in history.
6
6
  */
7
7
 
8
- import type { ExtensionAPI } from "@astralyn/pi";
8
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
9
9
 
10
10
  export default function (pi: ExtensionAPI) {
11
11
  const checkpoints = new Map<string, string>();
@@ -14,7 +14,7 @@
14
14
  import { createReadStream } from "node:fs";
15
15
  import { join } from "node:path";
16
16
  import { createInterface } from "node:readline";
17
- import type { ExtensionAPI } from "@astralyn/pi";
17
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
18
18
 
19
19
  interface ConflictBlock {
20
20
  file: string;
@@ -1,7 +1,7 @@
1
1
  // Requires GitHub CLI (`gh`) and a GitHub repository checkout.
2
2
  // Preloads the latest open issues once per session, then filters them locally for fast `#...` completion.
3
3
 
4
- import type { ExtensionAPI } from "@astralyn/pi";
4
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
5
5
  import {
6
6
  type AutocompleteItem,
7
7
  type AutocompleteProvider,
@@ -6,11 +6,13 @@
6
6
  * /workspace write through to the host; other guest filesystem changes are
7
7
  * isolated to the VM.
8
8
  *
9
- * Setup (from the repository or package root):
10
- * npm install --ignore-scripts --prefix examples/extensions/gondolin
9
+ * Setup:
10
+ * cd packages/coding-agent/examples/extensions/gondolin
11
+ * npm install --ignore-scripts
11
12
  *
12
- * Usage (from the project that should be mounted at /workspace):
13
- * pi -e /absolute/path/to/pi/examples/extensions/gondolin
13
+ * Usage:
14
+ * cd /path/to/project
15
+ * pi -e /path/to/pi/packages/coding-agent/examples/extensions/gondolin
14
16
  *
15
17
  * Requirements:
16
18
  * - Node.js >= 23.6.0 for @earendil-works/gondolin
@@ -18,7 +20,8 @@
18
20
  */
19
21
 
20
22
  import path from "node:path";
21
- import type { ExtensionAPI, ExtensionContext } from "@astralyn/pi";
23
+ import { RealFSProvider, VM } from "@earendil-works/gondolin";
24
+ import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent";
22
25
  import {
23
26
  type BashOperations,
24
27
  createBashTool,
@@ -39,8 +42,7 @@ import {
39
42
  truncateHead,
40
43
  truncateLine,
41
44
  type WriteOperations,
42
- } from "@astralyn/pi";
43
- import { RealFSProvider, VM } from "@earendil-works/gondolin";
45
+ } from "@earendil-works/pi-coding-agent";
44
46
 
45
47
  const GUEST_WORKSPACE = "/workspace";
46
48
  const DEFAULT_GREP_LIMIT = 100;
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "pi-extension-gondolin",
3
- "version": "0.84.3",
3
+ "version": "0.87.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pi-extension-gondolin",
9
- "version": "0.84.3",
9
+ "version": "0.87.1",
10
10
  "dependencies": {
11
11
  "@earendil-works/gondolin": "0.12.0"
12
12
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-gondolin",
3
3
  "private": true,
4
- "version": "0.84.3",
4
+ "version": "0.87.1",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -12,10 +12,10 @@
12
12
  * The generated prompt appears as a draft in the editor for review/editing.
13
13
  */
14
14
 
15
- import type { ExtensionAPI, SessionEntry } from "@astralyn/pi";
16
- import { BorderedLoader, convertToLlm, serializeConversation } from "@astralyn/pi";
17
15
  import type { AgentMessage } from "@earendil-works/pi-agent-core";
18
16
  import { type Message, uuidv7 } from "@earendil-works/pi-ai";
17
+ import type { ExtensionAPI, SessionEntry } from "@earendil-works/pi-coding-agent";
18
+ import { BorderedLoader, convertToLlm, serializeConversation } from "@earendil-works/pi-coding-agent";
19
19
 
20
20
  const SYSTEM_PROMPT = `You are a context transfer assistant. Given a conversation history and the user's goal for a new thread, generate a focused prompt that:
21
21
 
@@ -2,8 +2,8 @@
2
2
  * Hello Tool - Minimal custom tool example
3
3
  */
4
4
 
5
- import { defineTool, type ExtensionAPI } from "@astralyn/pi";
6
5
  import { Type } from "@earendil-works/pi-ai";
6
+ import { defineTool, type ExtensionAPI } from "@earendil-works/pi-coding-agent";
7
7
 
8
8
  const helloTool = defineTool({
9
9
  name: "hello",
@@ -18,7 +18,7 @@
18
18
  * /thinking-label Reset to the default label
19
19
  */
20
20
 
21
- import type { ExtensionAPI, ExtensionContext } from "@astralyn/pi";
21
+ import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent";
22
22
 
23
23
  const DEFAULT_LABEL = "Pondering...";
24
24
 
@@ -14,7 +14,7 @@
14
14
  *
15
15
  * Note: Regular !command syntax (whole-line bash) is preserved and works as before.
16
16
  */
17
- import type { ExtensionAPI } from "@astralyn/pi";
17
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
18
18
 
19
19
  export default function (pi: ExtensionAPI) {
20
20
  const PATTERN = /!\{([^}]+)\}/g;
@@ -11,7 +11,7 @@
11
11
  * Start pi with this extension:
12
12
  * pi -e ./examples/extensions/input-transform-streaming.ts
13
13
  */
14
- import type { ExtensionAPI } from "@astralyn/pi";
14
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
15
15
 
16
16
  const TRIGGER = /\b(changes?|diff|modified)\b/i;
17
17
 
@@ -9,7 +9,7 @@
9
9
  * ping → "pong" (instant, no LLM)
10
10
  * time → current time (instant, no LLM)
11
11
  */
12
- import type { ExtensionAPI } from "@astralyn/pi";
12
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
13
13
 
14
14
  export default function (pi: ExtensionAPI) {
15
15
  pi.on("input", async (event, ctx) => {
@@ -21,7 +21,7 @@
21
21
  */
22
22
 
23
23
  import { spawnSync } from "node:child_process";
24
- import type { ExtensionAPI } from "@astralyn/pi";
24
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
25
25
 
26
26
  // Default interactive commands - editors, pagers, git ops, TUIs
27
27
  const DEFAULT_INTERACTIVE_COMMANDS = [
@@ -7,7 +7,7 @@
7
7
 
8
8
  import { exec } from "node:child_process";
9
9
  import { promisify } from "node:util";
10
- import type { ExtensionAPI } from "@astralyn/pi";
10
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
11
11
 
12
12
  const execAsync = promisify(exec);
13
13
 
@@ -7,7 +7,7 @@
7
7
  * Usage: /status [message] - sends a status message with custom rendering
8
8
  */
9
9
 
10
- import type { ExtensionAPI } from "@astralyn/pi";
10
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
11
11
  import { Box, Text } from "@earendil-works/pi-tui";
12
12
 
13
13
  export default function (pi: ExtensionAPI) {
@@ -16,7 +16,7 @@
16
16
  * Then use ctrl+o to toggle between minimal (collapsed) and full (expanded) views.
17
17
  */
18
18
 
19
- import type { ExtensionAPI } from "@astralyn/pi";
19
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
20
20
  import {
21
21
  createBashTool,
22
22
  createEditTool,
@@ -25,7 +25,7 @@ import {
25
25
  createLsTool,
26
26
  createReadTool,
27
27
  createWriteTool,
28
- } from "@astralyn/pi";
28
+ } from "@earendil-works/pi-coding-agent";
29
29
  import { Text } from "@earendil-works/pi-tui";
30
30
  import { homedir } from "os";
31
31
 
@@ -9,7 +9,7 @@
9
9
  * - ctrl+c, ctrl+d, etc. work in both modes
10
10
  */
11
11
 
12
- import { CustomEditor, type ExtensionAPI } from "@astralyn/pi";
12
+ import { CustomEditor, type ExtensionAPI } from "@earendil-works/pi-coding-agent";
13
13
  import { matchesKey, truncateToWidth, visibleWidth } from "@earendil-works/pi-tui";
14
14
 
15
15
  // Normal mode key mappings: key -> escape sequence (or null for mode switch)
@@ -7,7 +7,7 @@
7
7
  * Usage: pi -e ./model-status.ts
8
8
  */
9
9
 
10
- import type { ExtensionAPI } from "@astralyn/pi";
10
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
11
11
 
12
12
  export default function (pi: ExtensionAPI) {
13
13
  pi.on("model_select", async (event, ctx) => {
@@ -8,7 +8,7 @@
8
8
  * - Windows toast: Windows Terminal (WSL)
9
9
  */
10
10
 
11
- import type { ExtensionAPI } from "@astralyn/pi";
11
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
12
12
 
13
13
  function windowsToastScript(title: string, body: string): string {
14
14
  const type = "Windows.UI.Notifications";
@@ -19,7 +19,7 @@
19
19
  * /overlay-streaming - Multiple input panels with simulated streaming (Tab to cycle focus)
20
20
  */
21
21
 
22
- import type { ExtensionAPI, ExtensionCommandContext, Theme } from "@astralyn/pi";
22
+ import type { ExtensionAPI, ExtensionCommandContext, Theme } from "@earendil-works/pi-coding-agent";
23
23
  import type { Component, OverlayAnchor, OverlayHandle, OverlayOptions, TUI } from "@earendil-works/pi-tui";
24
24
  import { Input, matchesKey, truncateToWidth, visibleWidth } from "@earendil-works/pi-tui";
25
25
  import { spawn } from "child_process";
@@ -485,13 +485,13 @@ class StreamingOverflowComponent extends BaseOverlay {
485
485
  echo ""
486
486
  for i in $(seq 1 100); do
487
487
  # Simulate long file paths with OSC 8 hyperlinks (clickable) - tests width overflow
488
- DIR="/opt/overlay-qa-fixtures/a-deliberately-long-project-directory/src/modes/interactive"
488
+ DIR="/Users/nicobailon/Documents/development/pi-mono/packages/coding-agent/src/modes/interactive"
489
489
  FILE="\${DIR}/components/very-long-component-name-that-exceeds-width-\${i}.ts"
490
490
  echo -e "\\033]8;;file://\${FILE}\\007▶ read: \${FILE}\\033]8;;\\007"
491
491
 
492
492
  # Add some colored status messages with long text
493
493
  if [ $((i % 5)) -eq 0 ]; then
494
- echo -e " \\033[32m✓ Successfully processed \${i} files in \${DIR}\\033[0m"
494
+ echo -e " \\033[32m✓ Successfully processed \${i} files in /Users/nicobailon/Documents/development/pi-mono\\033[0m"
495
495
  fi
496
496
  if [ $((i % 7)) -eq 0 ]; then
497
497
  echo -e " \\033[33m⚠ Warning: potential issue detected at line \${i} in very-long-component-name-that-exceeds-width.ts\\033[0m"
@@ -8,7 +8,7 @@
8
8
  * - Edge case tests (wide chars, styled text, emoji)
9
9
  */
10
10
 
11
- import type { ExtensionAPI, ExtensionCommandContext, Theme } from "@astralyn/pi";
11
+ import type { ExtensionAPI, ExtensionCommandContext, Theme } from "@earendil-works/pi-coding-agent";
12
12
  import { CURSOR_MARKER, type Focusable, matchesKey, visibleWidth } from "@earendil-works/pi-tui";
13
13
 
14
14
  export default function (pi: ExtensionAPI) {
@@ -5,7 +5,7 @@
5
5
  * Patterns checked: rm -rf, sudo, chmod/chown 777
6
6
  */
7
7
 
8
- import type { ExtensionAPI } from "@astralyn/pi";
8
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
9
9
 
10
10
  export default function (pi: ExtensionAPI) {
11
11
  const dangerousPatterns = [/\brm\s+(-rf?|--recursive)/i, /\bsudo\b/i, /\b(chmod|chown)\b.*777/i];
@@ -10,7 +10,7 @@
10
10
  * 3. When enabled, the agent will respond like a pirate
11
11
  */
12
12
 
13
- import type { ExtensionAPI } from "@astralyn/pi";
13
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
14
14
 
15
15
  export default function pirateExtension(pi: ExtensionAPI) {
16
16
  let pirateMode = false;
@@ -12,9 +12,9 @@
12
12
  * - Progress tracking widget during execution
13
13
  */
14
14
 
15
- import type { ExtensionAPI, ExtensionContext } from "@astralyn/pi";
16
15
  import type { AgentMessage } from "@earendil-works/pi-agent-core";
17
16
  import type { AssistantMessage, TextContent } from "@earendil-works/pi-ai";
17
+ import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent";
18
18
  import { Key } from "@earendil-works/pi-tui";
19
19
  import { extractTodoItems, isSafeCommand, markCompletedSteps, type TodoItem } from "./utils.ts";
20
20
 
@@ -40,9 +40,9 @@
40
40
 
41
41
  import { existsSync, readFileSync } from "node:fs";
42
42
  import { join } from "node:path";
43
- import type { ExtensionAPI, ExtensionContext } from "@astralyn/pi";
44
- import { CONFIG_DIR_NAME, DynamicBorder, getAgentDir } from "@astralyn/pi";
45
43
  import type { Api, Model } from "@earendil-works/pi-ai";
44
+ import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent";
45
+ import { CONFIG_DIR_NAME, DynamicBorder, getAgentDir } from "@earendil-works/pi-coding-agent";
46
46
  import { Container, Key, type SelectItem, SelectList, Text } from "@earendil-works/pi-tui";
47
47
 
48
48
  // Preset configuration
@@ -4,16 +4,16 @@
4
4
  * Demonstrates the project_trust event. Install globally or pass via -e:
5
5
  *
6
6
  * mkdir -p ~/.pi/agent/extensions
7
- * cp examples/extensions/project-trust.ts ~/.pi/agent/extensions/
7
+ * cp packages/coding-agent/examples/extensions/project-trust.ts ~/.pi/agent/extensions/
8
8
  *
9
9
  * Or:
10
10
  *
11
- * pi -e examples/extensions/project-trust.ts
11
+ * pi -e packages/coding-agent/examples/extensions/project-trust.ts
12
12
  *
13
13
  * Try it in a project containing .pi, AGENTS.md/CLAUDE.md, or .agents/skills.
14
14
  */
15
15
 
16
- import type { ExtensionAPI, ProjectTrustEventResult } from "@astralyn/pi";
16
+ import type { ExtensionAPI, ProjectTrustEventResult } from "@earendil-works/pi-coding-agent";
17
17
 
18
18
  export default function (pi: ExtensionAPI) {
19
19
  let loadCount = 0;
@@ -9,7 +9,7 @@
9
9
  * 2. Use the extension — it automatically adapts to your active tools and skills
10
10
  */
11
11
 
12
- import type { BuildSystemPromptOptions, ExtensionAPI } from "@astralyn/pi";
12
+ import type { BuildSystemPromptOptions, ExtensionAPI } from "@earendil-works/pi-coding-agent";
13
13
 
14
14
  function buildToolGuidance(options: BuildSystemPromptOptions): string {
15
15
  const hasTool = (name: string) => options.selectedTools?.includes(name) ?? false;
@@ -5,7 +5,7 @@
5
5
  * Useful for preventing accidental modifications to sensitive files.
6
6
  */
7
7
 
8
- import type { ExtensionAPI } from "@astralyn/pi";
8
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
9
9
 
10
10
  export default function (pi: ExtensionAPI) {
11
11
  const protectedPaths = [".env", ".git/", "node_modules/"];
@@ -1,6 +1,6 @@
1
1
  import { appendFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
- import { CONFIG_DIR_NAME, type ExtensionAPI } from "@astralyn/pi";
3
+ import { CONFIG_DIR_NAME, type ExtensionAPI } from "@earendil-works/pi-coding-agent";
4
4
 
5
5
  export default function (pi: ExtensionAPI) {
6
6
  pi.on("before_provider_request", (event, ctx) => {
@@ -7,9 +7,9 @@
7
7
  * 3. Loads the result into the editor for user to fill in answers
8
8
  */
9
9
 
10
- import type { ExtensionAPI } from "@astralyn/pi";
11
- import { BorderedLoader } from "@astralyn/pi";
12
10
  import type { UserMessage } from "@earendil-works/pi-ai";
11
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
12
+ import { BorderedLoader } from "@earendil-works/pi-coding-agent";
13
13
 
14
14
  const SYSTEM_PROMPT = `You are a question extractor. Given text from a conversation, extract any questions that need answering and format them for the user to fill in.
15
15
 
@@ -4,7 +4,7 @@
4
4
  * Escape in editor returns to options, Escape in options cancels
5
5
  */
6
6
 
7
- import type { ExtensionAPI } from "@astralyn/pi";
7
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
8
8
  import {
9
9
  Editor,
10
10
  type EditorTheme,
@@ -5,7 +5,7 @@
5
5
  * Multiple questions: tab bar navigation between questions
6
6
  */
7
7
 
8
- import type { ExtensionAPI } from "@astralyn/pi";
8
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
9
9
  import {
10
10
  Editor,
11
11
  type EditorTheme,
@@ -4,7 +4,7 @@
4
4
  * Usage: pi --extension ./examples/extensions/rainbow-editor.ts
5
5
  */
6
6
 
7
- import { CustomEditor, type ExtensionAPI } from "@astralyn/pi";
7
+ import { CustomEditor, type ExtensionAPI } from "@earendil-works/pi-coding-agent";
8
8
 
9
9
  // Base colors (coral → yellow → green → teal → blue → purple → pink)
10
10
  const COLORS: [number, number, number][] = [
@@ -5,7 +5,7 @@
5
5
  * tool that queues a follow-up command to trigger reload.
6
6
  */
7
7
 
8
- import type { ExtensionAPI } from "@astralyn/pi";
8
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
9
9
  import { Type } from "typebox";
10
10
 
11
11
  export default function (pi: ExtensionAPI) {
@@ -17,7 +17,7 @@
17
17
  * - setEditorText() - via /rpc-prefill command
18
18
  */
19
19
 
20
- import type { ExtensionAPI } from "@astralyn/pi";
20
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
21
21
 
22
22
  export default function (pi: ExtensionAPI) {
23
23
  let turnCount = 0;
@@ -45,8 +45,8 @@ import { spawn } from "node:child_process";
45
45
  import { existsSync, readFileSync } from "node:fs";
46
46
  import { join } from "node:path";
47
47
  import { SandboxManager, type SandboxRuntimeConfig } from "@anthropic-ai/sandbox-runtime";
48
- import type { ExtensionAPI } from "@astralyn/pi";
49
- import { type BashOperations, CONFIG_DIR_NAME, createBashTool, getAgentDir } from "@astralyn/pi";
48
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
49
+ import { type BashOperations, CONFIG_DIR_NAME, createBashTool, getAgentDir } from "@earendil-works/pi-coding-agent";
50
50
 
51
51
  interface SandboxConfig extends SandboxRuntimeConfig {
52
52
  enabled?: boolean;
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "pi-extension-sandbox",
3
- "version": "1.14.3",
3
+ "version": "1.17.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "pi-extension-sandbox",
9
- "version": "1.14.3",
9
+ "version": "1.17.1",
10
10
  "dependencies": {
11
11
  "@anthropic-ai/sandbox-runtime": "^0.0.26"
12
12
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "pi-extension-sandbox",
3
3
  "private": true,
4
- "version": "1.14.3",
4
+ "version": "1.17.1",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -11,7 +11,7 @@
11
11
  * /followup And then? - Sends while streaming with followUp delivery
12
12
  */
13
13
 
14
- import type { ExtensionAPI } from "@astralyn/pi";
14
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
15
15
 
16
16
  export default function (pi: ExtensionAPI) {
17
17
  // Simple command that sends a user message
@@ -7,7 +7,7 @@
7
7
  * Usage: /session-name [name] - set or show session name
8
8
  */
9
9
 
10
- import type { ExtensionAPI } from "@astralyn/pi";
10
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
11
11
 
12
12
  export default function (pi: ExtensionAPI) {
13
13
  pi.registerCommand("session-name", {
@@ -5,7 +5,7 @@
5
5
  * Demonstrates how extensions can use ctx.shutdown() to exit pi cleanly.
6
6
  */
7
7
 
8
- import type { ExtensionAPI } from "@astralyn/pi";
8
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
9
9
  import { Type } from "typebox";
10
10
 
11
11
  export default function (pi: ExtensionAPI) {
@@ -2,7 +2,7 @@
2
2
  * Snake game extension - play snake with /snake command
3
3
  */
4
4
 
5
- import type { ExtensionAPI } from "@astralyn/pi";
5
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
6
6
  import { matchesKey, visibleWidth } from "@earendil-works/pi-tui";
7
7
 
8
8
  const GAME_WIDTH = 40;
@@ -3,7 +3,7 @@
3
3
  * Uses Kitty keyboard protocol for smooth movement (press/release detection)
4
4
  */
5
5
 
6
- import type { ExtensionAPI } from "@astralyn/pi";
6
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
7
7
  import { isKeyRelease, Key, matchesKey, visibleWidth } from "@earendil-works/pi-tui";
8
8
 
9
9
  const GAME_WIDTH = 60;
@@ -14,7 +14,7 @@
14
14
  */
15
15
 
16
16
  import { spawn } from "node:child_process";
17
- import type { ExtensionAPI } from "@astralyn/pi";
17
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
18
18
  import {
19
19
  type BashOperations,
20
20
  createBashTool,
@@ -24,7 +24,7 @@ import {
24
24
  type EditOperations,
25
25
  type ReadOperations,
26
26
  type WriteOperations,
27
- } from "@astralyn/pi";
27
+ } from "@earendil-works/pi-coding-agent";
28
28
 
29
29
  function sshExec(remote: string, command: string): Promise<Buffer> {
30
30
  return new Promise((resolve, reject) => {