@eminent337/aery 0.1.59 → 0.1.60

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 (714) hide show
  1. package/CHANGELOG.md +0 -0
  2. package/README.md +0 -0
  3. package/dist/bun/cli.d.ts +3 -0
  4. package/dist/bun/cli.d.ts.map +1 -0
  5. package/dist/bun/cli.js +8 -0
  6. package/dist/bun/cli.js.map +1 -0
  7. package/dist/bun/register-bedrock.d.ts +2 -0
  8. package/dist/bun/register-bedrock.d.ts.map +1 -0
  9. package/dist/bun/register-bedrock.js +4 -0
  10. package/dist/bun/register-bedrock.js.map +1 -0
  11. package/dist/bun/restore-sandbox-env.d.ts +13 -0
  12. package/dist/bun/restore-sandbox-env.d.ts.map +1 -0
  13. package/dist/bun/restore-sandbox-env.js +32 -0
  14. package/dist/bun/restore-sandbox-env.js.map +1 -0
  15. package/dist/cli/args.d.ts +53 -0
  16. package/dist/cli/args.d.ts.map +1 -0
  17. package/dist/cli/args.js +329 -0
  18. package/dist/cli/args.js.map +1 -0
  19. package/dist/cli/config-selector.d.ts +14 -0
  20. package/dist/cli/config-selector.d.ts.map +1 -0
  21. package/dist/cli/config-selector.js +31 -0
  22. package/dist/cli/config-selector.js.map +1 -0
  23. package/dist/cli/file-processor.d.ts +15 -0
  24. package/dist/cli/file-processor.d.ts.map +1 -0
  25. package/dist/cli/file-processor.js +83 -0
  26. package/dist/cli/file-processor.js.map +1 -0
  27. package/dist/cli/initial-message.d.ts +18 -0
  28. package/dist/cli/initial-message.d.ts.map +1 -0
  29. package/dist/cli/initial-message.js +22 -0
  30. package/dist/cli/initial-message.js.map +1 -0
  31. package/dist/cli/list-models.d.ts +9 -0
  32. package/dist/cli/list-models.d.ts.map +1 -0
  33. package/dist/cli/list-models.js +98 -0
  34. package/dist/cli/list-models.js.map +1 -0
  35. package/dist/cli/session-picker.d.ts +9 -0
  36. package/dist/cli/session-picker.d.ts.map +1 -0
  37. package/dist/cli/session-picker.js +35 -0
  38. package/dist/cli/session-picker.js.map +1 -0
  39. package/dist/cli.d.ts +3 -0
  40. package/dist/cli.d.ts.map +1 -0
  41. package/dist/cli.js +19 -0
  42. package/dist/cli.js.map +1 -0
  43. package/dist/config.d.ts +86 -0
  44. package/dist/config.d.ts.map +1 -0
  45. package/dist/config.js +332 -0
  46. package/dist/config.js.map +1 -0
  47. package/dist/core/agent-session-runtime.d.ts +117 -0
  48. package/dist/core/agent-session-runtime.d.ts.map +1 -0
  49. package/dist/core/agent-session-runtime.js +300 -0
  50. package/dist/core/agent-session-runtime.js.map +1 -0
  51. package/dist/core/agent-session-services.d.ts +86 -0
  52. package/dist/core/agent-session-services.d.ts.map +1 -0
  53. package/dist/core/agent-session-services.js +117 -0
  54. package/dist/core/agent-session-services.js.map +1 -0
  55. package/dist/core/agent-session.d.ts +595 -0
  56. package/dist/core/agent-session.d.ts.map +1 -0
  57. package/dist/core/agent-session.js +2520 -0
  58. package/dist/core/agent-session.js.map +1 -0
  59. package/dist/core/auth-guidance.d.ts +5 -0
  60. package/dist/core/auth-guidance.d.ts.map +1 -0
  61. package/dist/core/auth-guidance.js +21 -0
  62. package/dist/core/auth-guidance.js.map +1 -0
  63. package/dist/core/auth-storage.d.ts +141 -0
  64. package/dist/core/auth-storage.d.ts.map +1 -0
  65. package/dist/core/auth-storage.js +441 -0
  66. package/dist/core/auth-storage.js.map +1 -0
  67. package/dist/core/bash-executor.d.ts +32 -0
  68. package/dist/core/bash-executor.d.ts.map +1 -0
  69. package/dist/core/bash-executor.js +111 -0
  70. package/dist/core/bash-executor.js.map +1 -0
  71. package/dist/core/compaction/branch-summarization.d.ts +88 -0
  72. package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
  73. package/dist/core/compaction/branch-summarization.js +243 -0
  74. package/dist/core/compaction/branch-summarization.js.map +1 -0
  75. package/dist/core/compaction/compaction.d.ts +121 -0
  76. package/dist/core/compaction/compaction.d.ts.map +1 -0
  77. package/dist/core/compaction/compaction.js +615 -0
  78. package/dist/core/compaction/compaction.js.map +1 -0
  79. package/dist/core/compaction/index.d.ts +7 -0
  80. package/dist/core/compaction/index.d.ts.map +1 -0
  81. package/dist/core/compaction/index.js +7 -0
  82. package/dist/core/compaction/index.js.map +1 -0
  83. package/dist/core/compaction/utils.d.ts +38 -0
  84. package/dist/core/compaction/utils.d.ts.map +1 -0
  85. package/dist/core/compaction/utils.js +153 -0
  86. package/dist/core/compaction/utils.js.map +1 -0
  87. package/dist/core/defaults.d.ts +3 -0
  88. package/dist/core/defaults.d.ts.map +1 -0
  89. package/dist/core/defaults.js +2 -0
  90. package/dist/core/defaults.js.map +1 -0
  91. package/dist/core/diagnostics.d.ts +15 -0
  92. package/dist/core/diagnostics.d.ts.map +1 -0
  93. package/dist/core/diagnostics.js +2 -0
  94. package/dist/core/diagnostics.js.map +1 -0
  95. package/dist/core/event-bus.d.ts +9 -0
  96. package/dist/core/event-bus.d.ts.map +1 -0
  97. package/dist/core/event-bus.js +25 -0
  98. package/dist/core/event-bus.js.map +1 -0
  99. package/dist/core/exec.d.ts +29 -0
  100. package/dist/core/exec.d.ts.map +1 -0
  101. package/dist/core/exec.js +75 -0
  102. package/dist/core/exec.js.map +1 -0
  103. package/dist/core/export-html/ansi-to-html.d.ts +22 -0
  104. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -0
  105. package/dist/core/export-html/ansi-to-html.js +249 -0
  106. package/dist/core/export-html/ansi-to-html.js.map +1 -0
  107. package/dist/core/export-html/index.d.ts +37 -0
  108. package/dist/core/export-html/index.d.ts.map +1 -0
  109. package/dist/core/export-html/index.js +224 -0
  110. package/dist/core/export-html/index.js.map +1 -0
  111. package/dist/core/export-html/template.css +1022 -0
  112. package/dist/core/export-html/template.html +55 -0
  113. package/dist/core/export-html/template.js +1770 -0
  114. package/dist/core/export-html/tool-renderer.d.ts +34 -0
  115. package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
  116. package/dist/core/export-html/tool-renderer.js +108 -0
  117. package/dist/core/export-html/tool-renderer.js.map +1 -0
  118. package/dist/core/export-html/vendor/highlight.min.js +1213 -0
  119. package/dist/core/export-html/vendor/marked.min.js +6 -0
  120. package/dist/core/extensions/index.d.ts +12 -0
  121. package/dist/core/extensions/index.d.ts.map +1 -0
  122. package/dist/core/extensions/index.js +9 -0
  123. package/dist/core/extensions/index.js.map +1 -0
  124. package/dist/core/extensions/loader.d.ts +25 -0
  125. package/dist/core/extensions/loader.d.ts.map +1 -0
  126. package/dist/core/extensions/loader.js +476 -0
  127. package/dist/core/extensions/loader.js.map +1 -0
  128. package/dist/core/extensions/runner.d.ts +158 -0
  129. package/dist/core/extensions/runner.d.ts.map +1 -0
  130. package/dist/core/extensions/runner.js +784 -0
  131. package/dist/core/extensions/runner.js.map +1 -0
  132. package/dist/core/extensions/types.d.ts +1153 -0
  133. package/dist/core/extensions/types.d.ts.map +1 -0
  134. package/dist/core/extensions/types.js +45 -0
  135. package/dist/core/extensions/types.js.map +1 -0
  136. package/dist/core/extensions/wrapper.d.ts +20 -0
  137. package/dist/core/extensions/wrapper.d.ts.map +1 -0
  138. package/dist/core/extensions/wrapper.js +22 -0
  139. package/dist/core/extensions/wrapper.js.map +1 -0
  140. package/dist/core/footer-data-provider.d.ts +52 -0
  141. package/dist/core/footer-data-provider.d.ts.map +1 -0
  142. package/dist/core/footer-data-provider.js +310 -0
  143. package/dist/core/footer-data-provider.js.map +1 -0
  144. package/dist/core/index.d.ts +12 -0
  145. package/dist/core/index.d.ts.map +1 -0
  146. package/dist/core/index.js +12 -0
  147. package/dist/core/index.js.map +1 -0
  148. package/dist/core/keybindings.d.ts +353 -0
  149. package/dist/core/keybindings.d.ts.map +1 -0
  150. package/dist/core/keybindings.js +295 -0
  151. package/dist/core/keybindings.js.map +1 -0
  152. package/dist/core/messages.d.ts +77 -0
  153. package/dist/core/messages.d.ts.map +1 -0
  154. package/dist/core/messages.js +123 -0
  155. package/dist/core/messages.js.map +1 -0
  156. package/dist/core/model-registry.d.ts +144 -0
  157. package/dist/core/model-registry.d.ts.map +1 -0
  158. package/dist/core/model-registry.js +699 -0
  159. package/dist/core/model-registry.js.map +1 -0
  160. package/dist/core/model-resolver.d.ts +110 -0
  161. package/dist/core/model-resolver.d.ts.map +1 -0
  162. package/dist/core/model-resolver.js +489 -0
  163. package/dist/core/model-resolver.js.map +1 -0
  164. package/dist/core/output-guard.d.ts +6 -0
  165. package/dist/core/output-guard.d.ts.map +1 -0
  166. package/dist/core/output-guard.js +59 -0
  167. package/dist/core/output-guard.js.map +1 -0
  168. package/dist/core/package-manager.d.ts +199 -0
  169. package/dist/core/package-manager.d.ts.map +1 -0
  170. package/dist/core/package-manager.js +1973 -0
  171. package/dist/core/package-manager.js.map +1 -0
  172. package/dist/core/prompt-templates.d.ts +52 -0
  173. package/dist/core/prompt-templates.d.ts.map +1 -0
  174. package/dist/core/prompt-templates.js +250 -0
  175. package/dist/core/prompt-templates.js.map +1 -0
  176. package/dist/core/resolve-config-value.d.ts +23 -0
  177. package/dist/core/resolve-config-value.d.ts.map +1 -0
  178. package/dist/core/resolve-config-value.js +126 -0
  179. package/dist/core/resolve-config-value.js.map +1 -0
  180. package/dist/core/resource-loader.d.ts +194 -0
  181. package/dist/core/resource-loader.d.ts.map +1 -0
  182. package/dist/core/resource-loader.js +727 -0
  183. package/dist/core/resource-loader.js.map +1 -0
  184. package/dist/core/sdk.d.ts +107 -0
  185. package/dist/core/sdk.d.ts.map +1 -0
  186. package/dist/core/sdk.js +274 -0
  187. package/dist/core/sdk.js.map +1 -0
  188. package/dist/core/session-cwd.d.ts +19 -0
  189. package/dist/core/session-cwd.d.ts.map +1 -0
  190. package/dist/core/session-cwd.js +38 -0
  191. package/dist/core/session-cwd.js.map +1 -0
  192. package/dist/core/session-manager.d.ts +333 -0
  193. package/dist/core/session-manager.d.ts.map +1 -0
  194. package/dist/core/session-manager.js +1109 -0
  195. package/dist/core/session-manager.js.map +1 -0
  196. package/dist/core/settings-manager.d.ts +261 -0
  197. package/dist/core/settings-manager.d.ts.map +1 -0
  198. package/dist/core/settings-manager.js +782 -0
  199. package/dist/core/settings-manager.js.map +1 -0
  200. package/dist/core/skills.d.ts +60 -0
  201. package/dist/core/skills.d.ts.map +1 -0
  202. package/dist/core/skills.js +404 -0
  203. package/dist/core/skills.js.map +1 -0
  204. package/dist/core/slash-commands.d.ts +14 -0
  205. package/dist/core/slash-commands.d.ts.map +1 -0
  206. package/dist/core/slash-commands.js +25 -0
  207. package/dist/core/slash-commands.js.map +1 -0
  208. package/dist/core/source-info.d.ts +18 -0
  209. package/dist/core/source-info.d.ts.map +1 -0
  210. package/dist/core/source-info.js +19 -0
  211. package/dist/core/source-info.js.map +1 -0
  212. package/dist/core/system-prompt.d.ts +28 -0
  213. package/dist/core/system-prompt.d.ts.map +1 -0
  214. package/dist/core/system-prompt.js +120 -0
  215. package/dist/core/system-prompt.js.map +1 -0
  216. package/dist/core/telemetry.d.ts +3 -0
  217. package/dist/core/telemetry.d.ts.map +1 -0
  218. package/dist/core/telemetry.js +9 -0
  219. package/dist/core/telemetry.js.map +1 -0
  220. package/dist/core/timings.d.ts +8 -0
  221. package/dist/core/timings.d.ts.map +1 -0
  222. package/dist/core/timings.js +31 -0
  223. package/dist/core/timings.js.map +1 -0
  224. package/dist/core/tools/bash.d.ts +68 -0
  225. package/dist/core/tools/bash.d.ts.map +1 -0
  226. package/dist/core/tools/bash.js +355 -0
  227. package/dist/core/tools/bash.js.map +1 -0
  228. package/dist/core/tools/edit-diff.d.ts +85 -0
  229. package/dist/core/tools/edit-diff.d.ts.map +1 -0
  230. package/dist/core/tools/edit-diff.js +337 -0
  231. package/dist/core/tools/edit-diff.js.map +1 -0
  232. package/dist/core/tools/edit.d.ts +49 -0
  233. package/dist/core/tools/edit.d.ts.map +1 -0
  234. package/dist/core/tools/edit.js +323 -0
  235. package/dist/core/tools/edit.js.map +1 -0
  236. package/dist/core/tools/file-mutation-queue.d.ts +6 -0
  237. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -0
  238. package/dist/core/tools/file-mutation-queue.js +37 -0
  239. package/dist/core/tools/file-mutation-queue.js.map +1 -0
  240. package/dist/core/tools/find.d.ts +35 -0
  241. package/dist/core/tools/find.d.ts.map +1 -0
  242. package/dist/core/tools/find.js +298 -0
  243. package/dist/core/tools/find.js.map +1 -0
  244. package/dist/core/tools/grep.d.ts +37 -0
  245. package/dist/core/tools/grep.d.ts.map +1 -0
  246. package/dist/core/tools/grep.js +304 -0
  247. package/dist/core/tools/grep.js.map +1 -0
  248. package/dist/core/tools/index.d.ts +40 -0
  249. package/dist/core/tools/index.d.ts.map +1 -0
  250. package/dist/core/tools/index.js +112 -0
  251. package/dist/core/tools/index.js.map +1 -0
  252. package/dist/core/tools/ls.d.ts +37 -0
  253. package/dist/core/tools/ls.d.ts.map +1 -0
  254. package/dist/core/tools/ls.js +169 -0
  255. package/dist/core/tools/ls.js.map +1 -0
  256. package/dist/core/tools/path-utils.d.ts +8 -0
  257. package/dist/core/tools/path-utils.d.ts.map +1 -0
  258. package/dist/core/tools/path-utils.js +81 -0
  259. package/dist/core/tools/path-utils.js.map +1 -0
  260. package/dist/core/tools/read.d.ts +35 -0
  261. package/dist/core/tools/read.d.ts.map +1 -0
  262. package/dist/core/tools/read.js +232 -0
  263. package/dist/core/tools/read.js.map +1 -0
  264. package/dist/core/tools/render-utils.d.ts +21 -0
  265. package/dist/core/tools/render-utils.d.ts.map +1 -0
  266. package/dist/core/tools/render-utils.js +49 -0
  267. package/dist/core/tools/render-utils.js.map +1 -0
  268. package/dist/core/tools/tool-definition-wrapper.d.ts +14 -0
  269. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
  270. package/dist/core/tools/tool-definition-wrapper.js +34 -0
  271. package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
  272. package/dist/core/tools/truncate.d.ts +70 -0
  273. package/dist/core/tools/truncate.d.ts.map +1 -0
  274. package/dist/core/tools/truncate.js +205 -0
  275. package/dist/core/tools/truncate.js.map +1 -0
  276. package/dist/core/tools/write.d.ts +26 -0
  277. package/dist/core/tools/write.d.ts.map +1 -0
  278. package/dist/core/tools/write.js +213 -0
  279. package/dist/core/tools/write.js.map +1 -0
  280. package/dist/index.d.ts +28 -0
  281. package/dist/index.d.ts.map +1 -0
  282. package/dist/index.js +41 -0
  283. package/dist/index.js.map +1 -0
  284. package/dist/main.d.ts +12 -0
  285. package/dist/main.d.ts.map +1 -0
  286. package/dist/main.js +589 -0
  287. package/dist/main.js.map +1 -0
  288. package/dist/migrations.d.ts +33 -0
  289. package/dist/migrations.d.ts.map +1 -0
  290. package/dist/migrations.js +281 -0
  291. package/dist/migrations.js.map +1 -0
  292. package/dist/modes/index.d.ts +9 -0
  293. package/dist/modes/index.d.ts.map +1 -0
  294. package/dist/modes/index.js +8 -0
  295. package/dist/modes/index.js.map +1 -0
  296. package/dist/modes/interactive/assets/clankolas.png +0 -0
  297. package/dist/modes/interactive/components/aery-splash.d.ts +18 -0
  298. package/dist/modes/interactive/components/aery-splash.d.ts.map +1 -0
  299. package/dist/modes/interactive/components/aery-splash.js +60 -0
  300. package/dist/modes/interactive/components/aery-splash.js.map +1 -0
  301. package/dist/modes/interactive/components/armin.d.ts +34 -0
  302. package/dist/modes/interactive/components/armin.d.ts.map +1 -0
  303. package/dist/modes/interactive/components/armin.js +333 -0
  304. package/dist/modes/interactive/components/armin.js.map +1 -0
  305. package/dist/modes/interactive/components/assistant-message.d.ts +20 -0
  306. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
  307. package/dist/modes/interactive/components/assistant-message.js +121 -0
  308. package/dist/modes/interactive/components/assistant-message.js.map +1 -0
  309. package/dist/modes/interactive/components/bash-execution.d.ts +34 -0
  310. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
  311. package/dist/modes/interactive/components/bash-execution.js +175 -0
  312. package/dist/modes/interactive/components/bash-execution.js.map +1 -0
  313. package/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
  314. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
  315. package/dist/modes/interactive/components/bordered-loader.js +54 -0
  316. package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
  317. package/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
  318. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
  319. package/dist/modes/interactive/components/branch-summary-message.js +44 -0
  320. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
  321. package/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
  322. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
  323. package/dist/modes/interactive/components/compaction-summary-message.js +45 -0
  324. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
  325. package/dist/modes/interactive/components/config-selector.d.ts +71 -0
  326. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
  327. package/dist/modes/interactive/components/config-selector.js +481 -0
  328. package/dist/modes/interactive/components/config-selector.js.map +1 -0
  329. package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
  330. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
  331. package/dist/modes/interactive/components/countdown-timer.js +33 -0
  332. package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
  333. package/dist/modes/interactive/components/custom-editor.d.ts +21 -0
  334. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
  335. package/dist/modes/interactive/components/custom-editor.js +70 -0
  336. package/dist/modes/interactive/components/custom-editor.js.map +1 -0
  337. package/dist/modes/interactive/components/custom-message.d.ts +20 -0
  338. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
  339. package/dist/modes/interactive/components/custom-message.js +79 -0
  340. package/dist/modes/interactive/components/custom-message.js.map +1 -0
  341. package/dist/modes/interactive/components/daxnuts.d.ts +23 -0
  342. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -0
  343. package/dist/modes/interactive/components/daxnuts.js +140 -0
  344. package/dist/modes/interactive/components/daxnuts.js.map +1 -0
  345. package/dist/modes/interactive/components/diff.d.ts +12 -0
  346. package/dist/modes/interactive/components/diff.d.ts.map +1 -0
  347. package/dist/modes/interactive/components/diff.js +133 -0
  348. package/dist/modes/interactive/components/diff.js.map +1 -0
  349. package/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
  350. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
  351. package/dist/modes/interactive/components/dynamic-border.js +21 -0
  352. package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
  353. package/dist/modes/interactive/components/earendil-announcement.d.ts +5 -0
  354. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -0
  355. package/dist/modes/interactive/components/earendil-announcement.js +40 -0
  356. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -0
  357. package/dist/modes/interactive/components/extension-editor.d.ts +20 -0
  358. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -0
  359. package/dist/modes/interactive/components/extension-editor.js +111 -0
  360. package/dist/modes/interactive/components/extension-editor.js.map +1 -0
  361. package/dist/modes/interactive/components/extension-input.d.ts +23 -0
  362. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -0
  363. package/dist/modes/interactive/components/extension-input.js +61 -0
  364. package/dist/modes/interactive/components/extension-input.js.map +1 -0
  365. package/dist/modes/interactive/components/extension-selector.d.ts +24 -0
  366. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
  367. package/dist/modes/interactive/components/extension-selector.js +78 -0
  368. package/dist/modes/interactive/components/extension-selector.js.map +1 -0
  369. package/dist/modes/interactive/components/footer.d.ts +27 -0
  370. package/dist/modes/interactive/components/footer.d.ts.map +1 -0
  371. package/dist/modes/interactive/components/footer.js +201 -0
  372. package/dist/modes/interactive/components/footer.js.map +1 -0
  373. package/dist/modes/interactive/components/index.d.ts +32 -0
  374. package/dist/modes/interactive/components/index.d.ts.map +1 -0
  375. package/dist/modes/interactive/components/index.js +33 -0
  376. package/dist/modes/interactive/components/index.js.map +1 -0
  377. package/dist/modes/interactive/components/keybinding-hints.d.ts +8 -0
  378. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
  379. package/dist/modes/interactive/components/keybinding-hints.js +22 -0
  380. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
  381. package/dist/modes/interactive/components/login-dialog.d.ts +46 -0
  382. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
  383. package/dist/modes/interactive/components/login-dialog.js +158 -0
  384. package/dist/modes/interactive/components/login-dialog.js.map +1 -0
  385. package/dist/modes/interactive/components/model-selector.d.ts +47 -0
  386. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
  387. package/dist/modes/interactive/components/model-selector.js +278 -0
  388. package/dist/modes/interactive/components/model-selector.js.map +1 -0
  389. package/dist/modes/interactive/components/oauth-selector.d.ts +29 -0
  390. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
  391. package/dist/modes/interactive/components/oauth-selector.js +141 -0
  392. package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
  393. package/dist/modes/interactive/components/scoped-models-selector.d.ts +42 -0
  394. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
  395. package/dist/modes/interactive/components/scoped-models-selector.js +290 -0
  396. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -0
  397. package/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
  398. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
  399. package/dist/modes/interactive/components/session-selector-search.js +155 -0
  400. package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
  401. package/dist/modes/interactive/components/session-selector.d.ts +96 -0
  402. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
  403. package/dist/modes/interactive/components/session-selector.js +861 -0
  404. package/dist/modes/interactive/components/session-selector.js.map +1 -0
  405. package/dist/modes/interactive/components/settings-selector.d.ts +67 -0
  406. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
  407. package/dist/modes/interactive/components/settings-selector.js +373 -0
  408. package/dist/modes/interactive/components/settings-selector.js.map +1 -0
  409. package/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
  410. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
  411. package/dist/modes/interactive/components/show-images-selector.js +39 -0
  412. package/dist/modes/interactive/components/show-images-selector.js.map +1 -0
  413. package/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
  414. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
  415. package/dist/modes/interactive/components/skill-invocation-message.js +47 -0
  416. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
  417. package/dist/modes/interactive/components/theme-selector.d.ts +11 -0
  418. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
  419. package/dist/modes/interactive/components/theme-selector.js +50 -0
  420. package/dist/modes/interactive/components/theme-selector.js.map +1 -0
  421. package/dist/modes/interactive/components/thinking-selector.d.ts +11 -0
  422. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
  423. package/dist/modes/interactive/components/thinking-selector.js +51 -0
  424. package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
  425. package/dist/modes/interactive/components/tool-execution.d.ts +63 -0
  426. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
  427. package/dist/modes/interactive/components/tool-execution.js +295 -0
  428. package/dist/modes/interactive/components/tool-execution.js.map +1 -0
  429. package/dist/modes/interactive/components/tree-selector.d.ts +89 -0
  430. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
  431. package/dist/modes/interactive/components/tree-selector.js +1092 -0
  432. package/dist/modes/interactive/components/tree-selector.js.map +1 -0
  433. package/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
  434. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
  435. package/dist/modes/interactive/components/user-message-selector.js +114 -0
  436. package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
  437. package/dist/modes/interactive/components/user-message.d.ts +10 -0
  438. package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
  439. package/dist/modes/interactive/components/user-message.js +29 -0
  440. package/dist/modes/interactive/components/user-message.js.map +1 -0
  441. package/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
  442. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
  443. package/dist/modes/interactive/components/visual-truncate.js +33 -0
  444. package/dist/modes/interactive/components/visual-truncate.js.map +1 -0
  445. package/dist/modes/interactive/interactive-mode.d.ts +359 -0
  446. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
  447. package/dist/modes/interactive/interactive-mode.js +4573 -0
  448. package/dist/modes/interactive/interactive-mode.js.map +1 -0
  449. package/dist/modes/interactive/theme/aery.json +84 -0
  450. package/dist/modes/interactive/theme/catppuccin-mocha.json +81 -0
  451. package/dist/modes/interactive/theme/dark.json +85 -0
  452. package/dist/modes/interactive/theme/dracula.json +81 -0
  453. package/dist/modes/interactive/theme/light.json +84 -0
  454. package/dist/modes/interactive/theme/nord.json +81 -0
  455. package/dist/modes/interactive/theme/theme-schema.json +335 -0
  456. package/dist/modes/interactive/theme/theme.d.ts +81 -0
  457. package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
  458. package/dist/modes/interactive/theme/theme.js +975 -0
  459. package/dist/modes/interactive/theme/theme.js.map +1 -0
  460. package/dist/modes/interactive/theme/tokyo-night.json +81 -0
  461. package/dist/modes/print-mode.d.ts +28 -0
  462. package/dist/modes/print-mode.d.ts.map +1 -0
  463. package/dist/modes/print-mode.js +131 -0
  464. package/dist/modes/print-mode.js.map +1 -0
  465. package/dist/modes/rpc/jsonl.d.ts +17 -0
  466. package/dist/modes/rpc/jsonl.d.ts.map +1 -0
  467. package/dist/modes/rpc/jsonl.js +49 -0
  468. package/dist/modes/rpc/jsonl.js.map +1 -0
  469. package/dist/modes/rpc/rpc-client.d.ts +224 -0
  470. package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
  471. package/dist/modes/rpc/rpc-client.js +410 -0
  472. package/dist/modes/rpc/rpc-client.js.map +1 -0
  473. package/dist/modes/rpc/rpc-mode.d.ts +20 -0
  474. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
  475. package/dist/modes/rpc/rpc-mode.js +597 -0
  476. package/dist/modes/rpc/rpc-mode.js.map +1 -0
  477. package/dist/modes/rpc/rpc-types.d.ts +419 -0
  478. package/dist/modes/rpc/rpc-types.d.ts.map +1 -0
  479. package/dist/modes/rpc/rpc-types.js +8 -0
  480. package/dist/modes/rpc/rpc-types.js.map +1 -0
  481. package/dist/package-manager-cli.d.ts +4 -0
  482. package/dist/package-manager-cli.d.ts.map +1 -0
  483. package/dist/package-manager-cli.js +468 -0
  484. package/dist/package-manager-cli.js.map +1 -0
  485. package/dist/utils/aery-user-agent.d.ts +2 -0
  486. package/dist/utils/aery-user-agent.d.ts.map +1 -0
  487. package/dist/utils/aery-user-agent.js +5 -0
  488. package/dist/utils/aery-user-agent.js.map +1 -0
  489. package/dist/utils/changelog.d.ts +21 -0
  490. package/dist/utils/changelog.d.ts.map +1 -0
  491. package/dist/utils/changelog.js +87 -0
  492. package/dist/utils/changelog.js.map +1 -0
  493. package/dist/utils/child-process.d.ts +11 -0
  494. package/dist/utils/child-process.d.ts.map +1 -0
  495. package/dist/utils/child-process.js +78 -0
  496. package/dist/utils/child-process.js.map +1 -0
  497. package/dist/utils/clipboard-image.d.ts +11 -0
  498. package/dist/utils/clipboard-image.d.ts.map +1 -0
  499. package/dist/utils/clipboard-image.js +245 -0
  500. package/dist/utils/clipboard-image.js.map +1 -0
  501. package/dist/utils/clipboard-native.d.ts +8 -0
  502. package/dist/utils/clipboard-native.d.ts.map +1 -0
  503. package/dist/utils/clipboard-native.js +14 -0
  504. package/dist/utils/clipboard-native.js.map +1 -0
  505. package/dist/utils/clipboard.d.ts +2 -0
  506. package/dist/utils/clipboard.d.ts.map +1 -0
  507. package/dist/utils/clipboard.js +110 -0
  508. package/dist/utils/clipboard.js.map +1 -0
  509. package/dist/utils/exif-orientation.d.ts +5 -0
  510. package/dist/utils/exif-orientation.d.ts.map +1 -0
  511. package/dist/utils/exif-orientation.js +158 -0
  512. package/dist/utils/exif-orientation.js.map +1 -0
  513. package/dist/utils/frontmatter.d.ts +8 -0
  514. package/dist/utils/frontmatter.d.ts.map +1 -0
  515. package/dist/utils/frontmatter.js +26 -0
  516. package/dist/utils/frontmatter.js.map +1 -0
  517. package/dist/utils/fs-watch.d.ts +5 -0
  518. package/dist/utils/fs-watch.d.ts.map +1 -0
  519. package/dist/utils/fs-watch.js +25 -0
  520. package/dist/utils/fs-watch.js.map +1 -0
  521. package/dist/utils/git.d.ts +26 -0
  522. package/dist/utils/git.d.ts.map +1 -0
  523. package/dist/utils/git.js +163 -0
  524. package/dist/utils/git.js.map +1 -0
  525. package/dist/utils/image-convert.d.ts +9 -0
  526. package/dist/utils/image-convert.d.ts.map +1 -0
  527. package/dist/utils/image-convert.js +39 -0
  528. package/dist/utils/image-convert.js.map +1 -0
  529. package/dist/utils/image-resize.d.ts +36 -0
  530. package/dist/utils/image-resize.d.ts.map +1 -0
  531. package/dist/utils/image-resize.js +137 -0
  532. package/dist/utils/image-resize.js.map +1 -0
  533. package/dist/utils/mime.d.ts +2 -0
  534. package/dist/utils/mime.d.ts.map +1 -0
  535. package/dist/utils/mime.js +26 -0
  536. package/dist/utils/mime.js.map +1 -0
  537. package/dist/utils/paths.d.ts +14 -0
  538. package/dist/utils/paths.d.ts.map +1 -0
  539. package/dist/utils/paths.js +34 -0
  540. package/dist/utils/paths.js.map +1 -0
  541. package/dist/utils/photon.d.ts +21 -0
  542. package/dist/utils/photon.d.ts.map +1 -0
  543. package/dist/utils/photon.js +121 -0
  544. package/dist/utils/photon.js.map +1 -0
  545. package/dist/utils/shell.d.ts +30 -0
  546. package/dist/utils/shell.d.ts.map +1 -0
  547. package/dist/utils/shell.js +190 -0
  548. package/dist/utils/shell.js.map +1 -0
  549. package/dist/utils/sleep.d.ts +5 -0
  550. package/dist/utils/sleep.d.ts.map +1 -0
  551. package/dist/utils/sleep.js +17 -0
  552. package/dist/utils/sleep.js.map +1 -0
  553. package/dist/utils/tools-manager.d.ts +3 -0
  554. package/dist/utils/tools-manager.d.ts.map +1 -0
  555. package/dist/utils/tools-manager.js +256 -0
  556. package/dist/utils/tools-manager.js.map +1 -0
  557. package/dist/utils/version-check.d.ts +7 -0
  558. package/dist/utils/version-check.d.ts.map +1 -0
  559. package/dist/utils/version-check.js +70 -0
  560. package/dist/utils/version-check.js.map +1 -0
  561. package/docs/compaction.md +0 -0
  562. package/docs/custom-provider.md +3 -2
  563. package/docs/development.md +0 -0
  564. package/docs/docs.json +0 -0
  565. package/docs/extensions.md +198 -22
  566. package/docs/images/doom-extension.png +0 -0
  567. package/docs/images/exy.png +0 -0
  568. package/docs/images/interactive-mode.png +0 -0
  569. package/docs/images/tree-view.png +0 -0
  570. package/docs/index.md +0 -0
  571. package/docs/json.md +0 -0
  572. package/docs/keybindings.md +0 -0
  573. package/docs/models.md +39 -2
  574. package/docs/packages.md +0 -0
  575. package/docs/prompt-templates.md +0 -0
  576. package/docs/providers.md +18 -0
  577. package/docs/quickstart.md +0 -0
  578. package/docs/rpc.md +0 -0
  579. package/docs/sdk.md +1 -1
  580. package/docs/{session.md → session-format.md} +0 -0
  581. package/docs/sessions.md +137 -0
  582. package/docs/settings.md +32 -8
  583. package/docs/shell-aliases.md +0 -0
  584. package/docs/skills.md +0 -0
  585. package/docs/terminal-setup.md +0 -0
  586. package/docs/termux.md +0 -0
  587. package/docs/themes.md +0 -0
  588. package/docs/tmux.md +0 -0
  589. package/docs/tui.md +0 -0
  590. package/docs/usage.md +0 -0
  591. package/docs/windows.md +0 -0
  592. package/examples/README.md +0 -0
  593. package/examples/extensions/README.md +2 -0
  594. package/examples/extensions/antigravity-image-gen.ts +2 -2
  595. package/examples/extensions/auto-commit-on-exit.ts +0 -0
  596. package/examples/extensions/bash-spawn-hook.ts +0 -0
  597. package/examples/extensions/bookmark.ts +0 -0
  598. package/examples/extensions/border-status-editor.ts +145 -0
  599. package/examples/extensions/built-in-tool-renderer.ts +0 -0
  600. package/examples/extensions/claude-rules.ts +0 -0
  601. package/examples/extensions/commands.ts +0 -0
  602. package/examples/extensions/confirm-destructive.ts +0 -0
  603. package/examples/extensions/custom-compaction.ts +1 -1
  604. package/examples/extensions/custom-footer.ts +1 -1
  605. package/examples/extensions/custom-header.ts +0 -0
  606. package/examples/extensions/custom-provider-anthropic/index.ts +1 -1
  607. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  608. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  609. package/examples/extensions/custom-provider-gitlab-duo/index.ts +1 -1
  610. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  611. package/examples/extensions/custom-provider-gitlab-duo/test.ts +0 -0
  612. package/examples/extensions/custom-provider-qwen-cli/index.ts +1 -1
  613. package/examples/extensions/custom-provider-qwen-cli/package.json +1 -1
  614. package/examples/extensions/dirty-repo-guard.ts +0 -0
  615. package/examples/extensions/doom-overlay/README.md +0 -0
  616. package/examples/extensions/doom-overlay/doom/build/doom.js +0 -0
  617. package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +0 -0
  618. package/examples/extensions/doom-overlay/doom-component.ts +0 -0
  619. package/examples/extensions/doom-overlay/doom-engine.ts +0 -0
  620. package/examples/extensions/doom-overlay/doom-keys.ts +0 -0
  621. package/examples/extensions/doom-overlay/index.ts +0 -0
  622. package/examples/extensions/doom-overlay/wad-finder.ts +0 -0
  623. package/examples/extensions/dynamic-resources/SKILL.md +0 -0
  624. package/examples/extensions/dynamic-resources/dynamic.json +0 -0
  625. package/examples/extensions/dynamic-resources/dynamic.md +0 -0
  626. package/examples/extensions/dynamic-resources/index.ts +0 -0
  627. package/examples/extensions/dynamic-tools.ts +2 -2
  628. package/examples/extensions/event-bus.ts +0 -0
  629. package/examples/extensions/file-trigger.ts +0 -0
  630. package/examples/extensions/git-checkpoint.ts +0 -0
  631. package/examples/extensions/github-issue-autocomplete.ts +185 -0
  632. package/examples/extensions/handoff.ts +8 -7
  633. package/examples/extensions/hello.ts +1 -1
  634. package/examples/extensions/hidden-thinking-label.ts +0 -0
  635. package/examples/extensions/inline-bash.ts +0 -0
  636. package/examples/extensions/input-transform.ts +0 -0
  637. package/examples/extensions/interactive-shell.ts +0 -0
  638. package/examples/extensions/mac-system-theme.ts +0 -0
  639. package/examples/extensions/message-renderer.ts +0 -0
  640. package/examples/extensions/minimal-mode.ts +0 -0
  641. package/examples/extensions/modal-editor.ts +0 -0
  642. package/examples/extensions/model-status.ts +0 -0
  643. package/examples/extensions/notify.ts +0 -0
  644. package/examples/extensions/overlay-qa-tests.ts +0 -0
  645. package/examples/extensions/overlay-test.ts +0 -0
  646. package/examples/extensions/permission-gate.ts +0 -0
  647. package/examples/extensions/pirate.ts +0 -0
  648. package/examples/extensions/plan-mode/README.md +0 -0
  649. package/examples/extensions/plan-mode/index.ts +2 -2
  650. package/examples/extensions/plan-mode/utils.ts +0 -0
  651. package/examples/extensions/preset.ts +1 -1
  652. package/examples/extensions/prompt-customizer.ts +97 -0
  653. package/examples/extensions/protected-paths.ts +0 -0
  654. package/examples/extensions/provider-payload.ts +0 -0
  655. package/examples/extensions/qna.ts +1 -1
  656. package/examples/extensions/question.ts +1 -1
  657. package/examples/extensions/questionnaire.ts +1 -1
  658. package/examples/extensions/rainbow-editor.ts +0 -0
  659. package/examples/extensions/reload-runtime.ts +1 -1
  660. package/examples/extensions/rpc-demo.ts +0 -0
  661. package/examples/extensions/sandbox/index.ts +0 -0
  662. package/examples/extensions/sandbox/package-lock.json +0 -0
  663. package/examples/extensions/sandbox/package.json +0 -0
  664. package/examples/extensions/send-user-message.ts +0 -0
  665. package/examples/extensions/session-name.ts +0 -0
  666. package/examples/extensions/shutdown-command.ts +1 -1
  667. package/examples/extensions/snake.ts +0 -0
  668. package/examples/extensions/space-invaders.ts +0 -0
  669. package/examples/extensions/ssh.ts +0 -0
  670. package/examples/extensions/status-line.ts +0 -0
  671. package/examples/extensions/structured-output.ts +65 -0
  672. package/examples/extensions/subagent/README.md +0 -0
  673. package/examples/extensions/subagent/agents/planner.md +0 -0
  674. package/examples/extensions/subagent/agents/reviewer.md +0 -0
  675. package/examples/extensions/subagent/agents/scout.md +0 -0
  676. package/examples/extensions/subagent/agents/worker.md +0 -0
  677. package/examples/extensions/subagent/agents.ts +0 -0
  678. package/examples/extensions/subagent/index.ts +3 -3
  679. package/examples/extensions/subagent/prompts/implement-and-review.md +0 -0
  680. package/examples/extensions/subagent/prompts/implement.md +0 -0
  681. package/examples/extensions/subagent/prompts/scout-and-plan.md +0 -0
  682. package/examples/extensions/summarize.ts +1 -1
  683. package/examples/extensions/system-prompt-header.ts +0 -0
  684. package/examples/extensions/tic-tac-toe.ts +2 -2
  685. package/examples/extensions/timed-confirm.ts +0 -0
  686. package/examples/extensions/titlebar-spinner.ts +0 -0
  687. package/examples/extensions/todo.ts +2 -2
  688. package/examples/extensions/tool-override.ts +2 -2
  689. package/examples/extensions/tools.ts +0 -0
  690. package/examples/extensions/trigger-compact.ts +0 -0
  691. package/examples/extensions/truncated-tool.ts +1 -1
  692. package/examples/extensions/widget-placement.ts +0 -0
  693. package/examples/extensions/with-deps/index.ts +1 -1
  694. package/examples/extensions/with-deps/package-lock.json +2 -2
  695. package/examples/extensions/with-deps/package.json +1 -1
  696. package/examples/extensions/working-indicator.ts +0 -0
  697. package/examples/extensions/working-message-test.ts +25 -0
  698. package/examples/rpc-extension-ui.ts +0 -0
  699. package/examples/sdk/01-minimal.ts +0 -0
  700. package/examples/sdk/02-custom-model.ts +1 -1
  701. package/examples/sdk/03-custom-prompt.ts +0 -0
  702. package/examples/sdk/04-skills.ts +0 -0
  703. package/examples/sdk/05-tools.ts +0 -0
  704. package/examples/sdk/06-extensions.ts +0 -0
  705. package/examples/sdk/07-context-files.ts +0 -0
  706. package/examples/sdk/08-prompt-templates.ts +0 -0
  707. package/examples/sdk/09-api-keys-and-oauth.ts +0 -0
  708. package/examples/sdk/10-settings.ts +0 -0
  709. package/examples/sdk/11-sessions.ts +0 -0
  710. package/examples/sdk/12-full-control.ts +1 -1
  711. package/examples/sdk/13-session-runtime.ts +0 -0
  712. package/examples/sdk/README.md +0 -0
  713. package/package.json +3 -4
  714. package/docs/tree.md +0 -233
File without changes
File without changes
@@ -8,7 +8,7 @@
8
8
  */
9
9
 
10
10
  import type { ExtensionAPI } from "@eminent337/aery";
11
- import { Type } from "@sinclair/typebox";
11
+ import { Type } from "typebox";
12
12
 
13
13
  const ECHO_PARAMS = Type.Object({
14
14
  message: Type.String({ description: "Message to echo" }),
@@ -35,7 +35,7 @@ export default function dynamicToolsExtension(pi: ExtensionAPI) {
35
35
  label,
36
36
  description: `Echo a message with prefix: ${prefix}`,
37
37
  promptSnippet: `Echo back user-provided text with ${prefix.trim()} prefix`,
38
- promptGuidelines: ["Use this tool when the user asks for exact echo output."],
38
+ promptGuidelines: ["Use echo_session when the user asks for exact echo output."],
39
39
  parameters: ECHO_PARAMS,
40
40
  async execute(_toolCallId, params) {
41
41
  return {
File without changes
File without changes
File without changes
@@ -0,0 +1,185 @@
1
+ // Requires GitHub CLI (`gh`) and a GitHub repository checkout.
2
+ // Preloads the latest open issues once per session, then filters them locally for fast `#...` completion.
3
+
4
+ import type { ExtensionAPI } from "@eminent337/aery";
5
+ import {
6
+ type AutocompleteItem,
7
+ type AutocompleteProvider,
8
+ type AutocompleteSuggestions,
9
+ fuzzyFilter,
10
+ } from "@eminent337/aery-tui";
11
+
12
+ type GitHubIssue = {
13
+ number: number;
14
+ title: string;
15
+ state: string;
16
+ };
17
+
18
+ type RepoResolution = { ok: true; repo: string } | { ok: false; error: string };
19
+
20
+ const MAX_ISSUES = 100;
21
+ const MAX_SUGGESTIONS = 20;
22
+
23
+ function extractIssueToken(textBeforeCursor: string): string | undefined {
24
+ const match = textBeforeCursor.match(/(?:^|[ \t])#([^\s#]*)$/);
25
+ return match?.[1];
26
+ }
27
+
28
+ function parseGitHubRepo(remoteUrl: string): string | undefined {
29
+ const sshMatch = remoteUrl.match(/^git@github\.com:([^/]+\/[^/]+?)(?:\.git)?$/);
30
+ if (sshMatch) {
31
+ return sshMatch[1];
32
+ }
33
+
34
+ const httpsMatch = remoteUrl.match(/^https?:\/\/github\.com\/([^/]+\/[^/]+?)(?:\.git)?$/);
35
+ if (httpsMatch) {
36
+ return httpsMatch[1];
37
+ }
38
+
39
+ return undefined;
40
+ }
41
+
42
+ async function resolveGitHubRepo(pi: ExtensionAPI, cwd: string): Promise<RepoResolution> {
43
+ const result = await pi.exec("git", ["remote", "-v"], { cwd, timeout: 5_000 });
44
+ if (result.code !== 0) {
45
+ return { ok: false, error: "github-issue-autocomplete: cwd is not a git repository" };
46
+ }
47
+
48
+ for (const line of result.stdout.split("\n")) {
49
+ const columns = line.trim().split(/\s+/);
50
+ const remoteUrl = columns[1];
51
+ if (!remoteUrl) {
52
+ continue;
53
+ }
54
+ const repo = parseGitHubRepo(remoteUrl);
55
+ if (repo) {
56
+ return { ok: true, repo };
57
+ }
58
+ }
59
+
60
+ return { ok: false, error: "github-issue-autocomplete: cwd is not a GitHub repository" };
61
+ }
62
+
63
+ function formatIssueItem(issue: GitHubIssue): AutocompleteItem {
64
+ return {
65
+ value: `#${issue.number}`,
66
+ label: `#${issue.number}`,
67
+ description: `[${issue.state.toLowerCase()}] ${issue.title}`,
68
+ };
69
+ }
70
+
71
+ function filterIssues(issues: GitHubIssue[], query: string): AutocompleteItem[] {
72
+ if (!query.trim()) {
73
+ return issues.slice(0, MAX_SUGGESTIONS).map(formatIssueItem);
74
+ }
75
+
76
+ if (/^\d+$/.test(query)) {
77
+ const numericMatches = issues
78
+ .filter((issue) => String(issue.number).startsWith(query))
79
+ .slice(0, MAX_SUGGESTIONS)
80
+ .map(formatIssueItem);
81
+ if (numericMatches.length > 0) {
82
+ return numericMatches;
83
+ }
84
+ }
85
+
86
+ return fuzzyFilter(issues, query, (issue) => `${issue.number} ${issue.title}`)
87
+ .slice(0, MAX_SUGGESTIONS)
88
+ .map(formatIssueItem);
89
+ }
90
+
91
+ function createIssueAutocompleteProvider(
92
+ current: AutocompleteProvider,
93
+ getIssues: () => Promise<GitHubIssue[] | undefined>,
94
+ ): AutocompleteProvider {
95
+ return {
96
+ async getSuggestions(lines, cursorLine, cursorCol, options): Promise<AutocompleteSuggestions | null> {
97
+ const currentLine = lines[cursorLine] ?? "";
98
+ const textBeforeCursor = currentLine.slice(0, cursorCol);
99
+ const token = extractIssueToken(textBeforeCursor);
100
+ if (token === undefined) {
101
+ return current.getSuggestions(lines, cursorLine, cursorCol, options);
102
+ }
103
+
104
+ const issues = await getIssues();
105
+ if (options.signal.aborted || !issues || issues.length === 0) {
106
+ return current.getSuggestions(lines, cursorLine, cursorCol, options);
107
+ }
108
+
109
+ const suggestions = filterIssues(issues, token);
110
+ if (suggestions.length === 0) {
111
+ return current.getSuggestions(lines, cursorLine, cursorCol, options);
112
+ }
113
+
114
+ return {
115
+ items: suggestions,
116
+ prefix: `#${token}`,
117
+ };
118
+ },
119
+
120
+ applyCompletion(lines, cursorLine, cursorCol, item, prefix) {
121
+ return current.applyCompletion(lines, cursorLine, cursorCol, item, prefix);
122
+ },
123
+
124
+ shouldTriggerFileCompletion(lines, cursorLine, cursorCol) {
125
+ return current.shouldTriggerFileCompletion?.(lines, cursorLine, cursorCol) ?? true;
126
+ },
127
+ };
128
+ }
129
+
130
+ export default function (pi: ExtensionAPI): void {
131
+ pi.on("session_start", async (_event, ctx) => {
132
+ const resolvedRepo = await resolveGitHubRepo(pi, ctx.cwd);
133
+ if (!resolvedRepo.ok) {
134
+ ctx.ui.notify(resolvedRepo.error, "error");
135
+ return;
136
+ }
137
+
138
+ const repo = resolvedRepo.repo;
139
+ let issuesPromise: Promise<GitHubIssue[] | undefined> | undefined;
140
+ let loadErrorShown = false;
141
+
142
+ const getIssues = async (): Promise<GitHubIssue[] | undefined> => {
143
+ issuesPromise ||= (async () => {
144
+ const result = await pi.exec(
145
+ "gh",
146
+ [
147
+ "issue",
148
+ "list",
149
+ "--repo",
150
+ repo,
151
+ "--state",
152
+ "open",
153
+ "--limit",
154
+ String(MAX_ISSUES),
155
+ "--json",
156
+ "number,title,state",
157
+ ],
158
+ { cwd: ctx.cwd, timeout: 5_000 },
159
+ );
160
+ if (result.code !== 0) {
161
+ if (!loadErrorShown) {
162
+ loadErrorShown = true;
163
+ const details = result.stderr.trim() || `exit code ${result.code}`;
164
+ ctx.ui.notify(`github-issue-autocomplete: failed to load issues: ${details}`, "error");
165
+ }
166
+ return undefined;
167
+ }
168
+
169
+ try {
170
+ return JSON.parse(result.stdout) as GitHubIssue[];
171
+ } catch {
172
+ if (!loadErrorShown) {
173
+ loadErrorShown = true;
174
+ ctx.ui.notify("github-issue-autocomplete: failed to parse gh issue list output", "error");
175
+ }
176
+ return undefined;
177
+ }
178
+ })();
179
+ return issuesPromise;
180
+ };
181
+
182
+ void getIssues();
183
+ ctx.ui.addAutocompleteProvider((current) => createIssueAutocompleteProvider(current, getIssues));
184
+ });
185
+ }
@@ -12,9 +12,9 @@
12
12
  * The generated prompt appears as a draft in the editor for review/editing.
13
13
  */
14
14
 
15
- import { complete, type Message } from "@eminent337/aery-ai";
16
15
  import type { ExtensionAPI, SessionEntry } from "@eminent337/aery";
17
16
  import { BorderedLoader, convertToLlm, serializeConversation } from "@eminent337/aery";
17
+ import { complete, type Message } from "@eminent337/aery-ai";
18
18
 
19
19
  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:
20
20
 
@@ -135,19 +135,20 @@ export default function (pi: ExtensionAPI) {
135
135
  return;
136
136
  }
137
137
 
138
- // Create new session with parent tracking
138
+ // Create new session with parent tracking. Use the replacement-session
139
+ // context for post-switch UI work; the original ctx is stale after a
140
+ // successful session replacement.
139
141
  const newSessionResult = await ctx.newSession({
140
142
  parentSession: currentSessionFile,
143
+ withSession: async (replacementCtx) => {
144
+ replacementCtx.ui.setEditorText(editedPrompt);
145
+ replacementCtx.ui.notify("Handoff ready. Submit when ready.", "info");
146
+ },
141
147
  });
142
148
 
143
149
  if (newSessionResult.cancelled) {
144
150
  ctx.ui.notify("New session cancelled", "info");
145
- return;
146
151
  }
147
-
148
- // Set the edited prompt in the main editor for submission
149
- ctx.ui.setEditorText(editedPrompt);
150
- ctx.ui.notify("Handoff ready. Submit when ready.", "info");
151
152
  },
152
153
  });
153
154
  }
@@ -2,8 +2,8 @@
2
2
  * Hello Tool - Minimal custom tool example
3
3
  */
4
4
 
5
- import { Type } from "@eminent337/aery-ai";
6
5
  import { defineTool, type ExtensionAPI } from "@eminent337/aery";
6
+ import { Type } from "@eminent337/aery-ai";
7
7
 
8
8
  const helloTool = defineTool({
9
9
  name: "hello",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -12,9 +12,9 @@
12
12
  * - Progress tracking widget during execution
13
13
  */
14
14
 
15
- import type { AgentMessage } from "@eminent337/aery-core";
16
- import type { AssistantMessage, TextContent } from "@eminent337/aery-ai";
17
15
  import type { ExtensionAPI, ExtensionContext } from "@eminent337/aery";
16
+ import type { AssistantMessage, TextContent } from "@eminent337/aery-ai";
17
+ import type { AgentMessage } from "@eminent337/aery-core";
18
18
  import { Key } from "@eminent337/aery-tui";
19
19
  import { extractTodoItems, isSafeCommand, markCompletedSteps, type TodoItem } from "./utils.js";
20
20
 
File without changes
@@ -40,9 +40,9 @@
40
40
 
41
41
  import { existsSync, readFileSync } from "node:fs";
42
42
  import { join } from "node:path";
43
- import type { Api, Model } from "@eminent337/aery-ai";
44
43
  import type { ExtensionAPI, ExtensionContext } from "@eminent337/aery";
45
44
  import { DynamicBorder, getAgentDir } from "@eminent337/aery";
45
+ import type { Api, Model } from "@eminent337/aery-ai";
46
46
  import { Container, Key, type SelectItem, SelectList, Text } from "@eminent337/aery-tui";
47
47
 
48
48
  // Preset configuration
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Prompt Customizer Extension
3
+ *
4
+ * Demonstrates using systemPromptOptions to make informed, context-aware
5
+ * modifications to the system prompt without re-discovering resources.
6
+ *
7
+ * This extension adds tool-specific guidance based on what tools and skills
8
+ * are currently active, respecting whatever the user has configured.
9
+ *
10
+ * Usage:
11
+ * 1. Copy this file to ~/.aery/agent/extensions/ or your project's .pi/extensions/
12
+ * 2. Use the extension — it automatically adapts to your active tools and skills
13
+ */
14
+
15
+ import type { BuildSystemPromptOptions, ExtensionAPI } from "@eminent337/aery";
16
+
17
+ /**
18
+ * Adds tool-specific guidance that adapts to the active tool set.
19
+ * Instead of appending one-size-fits-all instructions, this reads what's
20
+ * actually loaded and tailors the guidance accordingly.
21
+ */
22
+ function addToolGuidance(options: BuildSystemPromptOptions, basePrompt: string): string {
23
+ const hasTool = (name: string) => options.selectedTools?.includes(name) ?? false;
24
+
25
+ const parts: string[] = [];
26
+
27
+ if (hasTool("read")) {
28
+ parts.push(
29
+ "• Use the `read` tool for file contents (supports text and images).",
30
+ " - For large files, use `offset` and `limit` to read in chunks.",
31
+ );
32
+ }
33
+
34
+ if (hasTool("bash")) {
35
+ parts.push("• Execute commands with the `bash` tool. Use it for file operations like `ls`, `find`, `grep`.");
36
+ }
37
+
38
+ if (hasTool("edit")) {
39
+ parts.push(
40
+ "• Use the `edit` tool for precise text replacements in files. Match exact content including whitespace.",
41
+ );
42
+ }
43
+
44
+ if (hasTool("write")) {
45
+ parts.push("• Use the `write` tool to create new files or overwrite existing ones completely.");
46
+ }
47
+
48
+ if (options.skills && options.skills.length > 0) {
49
+ const skillNames = options.skills.map((s) => s.name).join(", ");
50
+ parts.push(`\nAvailable skills: ${skillNames}`, "Use skill documentation for best practices on specific tools.");
51
+ }
52
+
53
+ if (parts.length === 0) {
54
+ return basePrompt;
55
+ }
56
+
57
+ return `${basePrompt}
58
+
59
+ ## Tool Guidance
60
+
61
+ ${parts.join("\n")}
62
+ `;
63
+ }
64
+
65
+ /**
66
+ * Merges extension instructions with user-provided append prompts.
67
+ * This respects whatever the user configured via --append-system-prompt
68
+ * flags or files, rather than duplicating that work.
69
+ */
70
+ function mergeWithUserAppend(options: BuildSystemPromptOptions): string {
71
+ const userAppend = options.appendSystemPrompt;
72
+ const extensionSpecific = `
73
+ ## Extension-Added Context
74
+
75
+ This prompt includes tool guidance and skill information loaded dynamically.
76
+ If you have additional requirements, configure them via --append-system-prompt or project context files.
77
+ `;
78
+
79
+ if (userAppend) {
80
+ return `${userAppend}\n\n${extensionSpecific}`;
81
+ }
82
+
83
+ return extensionSpecific;
84
+ }
85
+
86
+ export default function promptCustomizer(pi: ExtensionAPI) {
87
+ pi.on("before_agent_start", async (event) => {
88
+ const { systemPrompt, systemPromptOptions } = event;
89
+
90
+ const customPrompt = addToolGuidance(systemPromptOptions, systemPrompt);
91
+ const appendSection = mergeWithUserAppend(systemPromptOptions);
92
+
93
+ return {
94
+ systemPrompt: `${customPrompt}${appendSection}`,
95
+ };
96
+ });
97
+ }
File without changes
File without changes
@@ -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 { complete, type UserMessage } from "@eminent337/aery-ai";
11
10
  import type { ExtensionAPI } from "@eminent337/aery";
12
11
  import { BorderedLoader } from "@eminent337/aery";
12
+ import { complete, type UserMessage } from "@eminent337/aery-ai";
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
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  import type { ExtensionAPI } from "@eminent337/aery";
8
8
  import { Editor, type EditorTheme, Key, matchesKey, Text, truncateToWidth } from "@eminent337/aery-tui";
9
- import { Type } from "@sinclair/typebox";
9
+ import { Type } from "typebox";
10
10
 
11
11
  interface OptionWithDesc {
12
12
  label: string;
@@ -7,7 +7,7 @@
7
7
 
8
8
  import type { ExtensionAPI } from "@eminent337/aery";
9
9
  import { Editor, type EditorTheme, Key, matchesKey, Text, truncateToWidth } from "@eminent337/aery-tui";
10
- import { Type } from "@sinclair/typebox";
10
+ import { Type } from "typebox";
11
11
 
12
12
  // Types
13
13
  interface QuestionOption {
File without changes
@@ -6,7 +6,7 @@
6
6
  */
7
7
 
8
8
  import type { ExtensionAPI } from "@eminent337/aery";
9
- import { Type } from "@sinclair/typebox";
9
+ import { Type } from "typebox";
10
10
 
11
11
  export default function (pi: ExtensionAPI) {
12
12
  // Command entrypoint for reload.
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -6,7 +6,7 @@
6
6
  */
7
7
 
8
8
  import type { ExtensionAPI } from "@eminent337/aery";
9
- import { Type } from "@sinclair/typebox";
9
+ import { Type } from "typebox";
10
10
 
11
11
  export default function (pi: ExtensionAPI) {
12
12
  // Register a /quit command that cleanly exits pi
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Structured Output Tool
3
+ *
4
+ * Demonstrates `terminate: true` so the agent can end on a tool call
5
+ * without paying for an extra follow-up LLM turn.
6
+ */
7
+
8
+ import { defineTool, type ExtensionAPI } from "@eminent337/aery";
9
+ import { Text } from "@eminent337/aery-tui";
10
+ import { Type } from "typebox";
11
+
12
+ interface StructuredOutputDetails {
13
+ headline: string;
14
+ summary: string;
15
+ actionItems: string[];
16
+ }
17
+
18
+ const structuredOutputTool = defineTool({
19
+ name: "structured_output",
20
+ label: "Structured Output",
21
+ description:
22
+ "Return a final structured answer. Use this as your last action when the user asks for structured output or a machine-readable summary.",
23
+ promptSnippet: "Emit a final structured answer as a terminating tool result",
24
+ promptGuidelines: [
25
+ "Use structured_output as your final action when the user asks for structured output, JSON-like output, or a machine-readable summary.",
26
+ "After calling structured_output, do not emit another assistant response in the same turn.",
27
+ ],
28
+ parameters: Type.Object({
29
+ headline: Type.String({ description: "Short title for the result" }),
30
+ summary: Type.String({ description: "One-paragraph summary" }),
31
+ actionItems: Type.Array(Type.String(), { description: "Concrete next steps or key bullets" }),
32
+ }),
33
+
34
+ async execute(_toolCallId, params) {
35
+ return {
36
+ content: [{ type: "text", text: `Saved structured output: ${params.headline}` }],
37
+ details: {
38
+ headline: params.headline,
39
+ summary: params.summary,
40
+ actionItems: params.actionItems,
41
+ } satisfies StructuredOutputDetails,
42
+ terminate: true,
43
+ };
44
+ },
45
+
46
+ renderResult(result, _options, theme) {
47
+ const details = result.details as StructuredOutputDetails | undefined;
48
+ if (!details) {
49
+ const text = result.content[0];
50
+ return new Text(text?.type === "text" ? text.text : "", 0, 0);
51
+ }
52
+
53
+ const lines = [
54
+ theme.fg("toolTitle", theme.bold(details.headline)),
55
+ theme.fg("text", details.summary),
56
+ "",
57
+ ...details.actionItems.map((item, index) => theme.fg("muted", `${index + 1}. ${item}`)),
58
+ ];
59
+ return new Text(lines.join("\n"), 0, 0);
60
+ },
61
+ });
62
+
63
+ export default function (pi: ExtensionAPI) {
64
+ pi.registerTool(structuredOutputTool);
65
+ }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -16,12 +16,12 @@ import { spawn } from "node:child_process";
16
16
  import * as fs from "node:fs";
17
17
  import * as os from "node:os";
18
18
  import * as path from "node:path";
19
- import type { AgentToolResult } from "@eminent337/aery-core";
19
+ import { type ExtensionAPI, getMarkdownTheme, withFileMutationQueue } from "@eminent337/aery";
20
20
  import type { Message } from "@eminent337/aery-ai";
21
21
  import { StringEnum } from "@eminent337/aery-ai";
22
- import { type ExtensionAPI, getMarkdownTheme, withFileMutationQueue } from "@eminent337/aery";
22
+ import type { AgentToolResult } from "@eminent337/aery-core";
23
23
  import { Container, Markdown, Spacer, Text } from "@eminent337/aery-tui";
24
- import { Type } from "@sinclair/typebox";
24
+ import { Type } from "typebox";
25
25
  import { type AgentConfig, type AgentScope, discoverAgents } from "./agents.js";
26
26
 
27
27
  const MAX_PARALLEL_TASKS = 8;
File without changes
@@ -1,6 +1,6 @@
1
- import { complete, getModel } from "@eminent337/aery-ai";
2
1
  import type { ExtensionAPI, ExtensionCommandContext } from "@eminent337/aery";
3
2
  import { DynamicBorder, getMarkdownTheme } from "@eminent337/aery";
3
+ import { complete, getModel } from "@eminent337/aery-ai";
4
4
  import { Container, Markdown, matchesKey, Text } from "@eminent337/aery-tui";
5
5
 
6
6
  type ContentBlock = {
File without changes
@@ -17,10 +17,10 @@
17
17
  * separate variables. Only the agent cursor is ever exposed to the agent.
18
18
  */
19
19
 
20
- import { StringEnum } from "@eminent337/aery-ai";
21
20
  import type { ExtensionAPI, ExtensionContext, Theme, ToolExecutionMode } from "@eminent337/aery";
21
+ import { StringEnum } from "@eminent337/aery-ai";
22
22
  import { type Component, matchesKey, Text, truncateToWidth, visibleWidth } from "@eminent337/aery-tui";
23
- import { Type } from "@sinclair/typebox";
23
+ import { Type } from "typebox";
24
24
 
25
25
  // Thrown from the tool on illegal actions. The agent runtime surfaces thrown
26
26
  // errors as tool errors (isError=true) without resetting any of our state.
File without changes
File without changes