@fleetagent/pi-coding-agent 0.0.1

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 (804) hide show
  1. package/CHANGELOG.md +4518 -0
  2. package/README.md +660 -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 +9 -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 +56 -0
  16. package/dist/cli/args.d.ts.map +1 -0
  17. package/dist/cli/args.js +356 -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 +18 -0
  42. package/dist/cli.js.map +1 -0
  43. package/dist/config.d.ts +95 -0
  44. package/dist/config.d.ts.map +1 -0
  45. package/dist/config.js +418 -0
  46. package/dist/config.js.map +1 -0
  47. package/dist/core/agent-session.d.ts +600 -0
  48. package/dist/core/agent-session.d.ts.map +1 -0
  49. package/dist/core/agent-session.js +2505 -0
  50. package/dist/core/agent-session.js.map +1 -0
  51. package/dist/core/auth-guidance.d.ts +5 -0
  52. package/dist/core/auth-guidance.d.ts.map +1 -0
  53. package/dist/core/auth-guidance.js +21 -0
  54. package/dist/core/auth-guidance.js.map +1 -0
  55. package/dist/core/auth-storage.d.ts +141 -0
  56. package/dist/core/auth-storage.d.ts.map +1 -0
  57. package/dist/core/auth-storage.js +442 -0
  58. package/dist/core/auth-storage.js.map +1 -0
  59. package/dist/core/bash-executor.d.ts +32 -0
  60. package/dist/core/bash-executor.d.ts.map +1 -0
  61. package/dist/core/bash-executor.js +111 -0
  62. package/dist/core/bash-executor.js.map +1 -0
  63. package/dist/core/compaction/branch-summarization.d.ts +88 -0
  64. package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
  65. package/dist/core/compaction/branch-summarization.js +243 -0
  66. package/dist/core/compaction/branch-summarization.js.map +1 -0
  67. package/dist/core/compaction/compaction.d.ts +121 -0
  68. package/dist/core/compaction/compaction.d.ts.map +1 -0
  69. package/dist/core/compaction/compaction.js +625 -0
  70. package/dist/core/compaction/compaction.js.map +1 -0
  71. package/dist/core/compaction/index.d.ts +7 -0
  72. package/dist/core/compaction/index.d.ts.map +1 -0
  73. package/dist/core/compaction/index.js +7 -0
  74. package/dist/core/compaction/index.js.map +1 -0
  75. package/dist/core/compaction/utils.d.ts +38 -0
  76. package/dist/core/compaction/utils.d.ts.map +1 -0
  77. package/dist/core/compaction/utils.js +153 -0
  78. package/dist/core/compaction/utils.js.map +1 -0
  79. package/dist/core/defaults.d.ts +3 -0
  80. package/dist/core/defaults.d.ts.map +1 -0
  81. package/dist/core/defaults.js +2 -0
  82. package/dist/core/defaults.js.map +1 -0
  83. package/dist/core/diagnostics.d.ts +15 -0
  84. package/dist/core/diagnostics.d.ts.map +1 -0
  85. package/dist/core/diagnostics.js +2 -0
  86. package/dist/core/diagnostics.js.map +1 -0
  87. package/dist/core/event-bus.d.ts +9 -0
  88. package/dist/core/event-bus.d.ts.map +1 -0
  89. package/dist/core/event-bus.js +25 -0
  90. package/dist/core/event-bus.js.map +1 -0
  91. package/dist/core/exec.d.ts +29 -0
  92. package/dist/core/exec.d.ts.map +1 -0
  93. package/dist/core/exec.js +75 -0
  94. package/dist/core/exec.js.map +1 -0
  95. package/dist/core/export-html/ansi-to-html.d.ts +22 -0
  96. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -0
  97. package/dist/core/export-html/ansi-to-html.js +249 -0
  98. package/dist/core/export-html/ansi-to-html.js.map +1 -0
  99. package/dist/core/export-html/index.d.ts +37 -0
  100. package/dist/core/export-html/index.d.ts.map +1 -0
  101. package/dist/core/export-html/index.js +226 -0
  102. package/dist/core/export-html/index.js.map +1 -0
  103. package/dist/core/export-html/template.css +1066 -0
  104. package/dist/core/export-html/template.html +55 -0
  105. package/dist/core/export-html/template.js +1848 -0
  106. package/dist/core/export-html/tool-renderer.d.ts +34 -0
  107. package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
  108. package/dist/core/export-html/tool-renderer.js +108 -0
  109. package/dist/core/export-html/tool-renderer.js.map +1 -0
  110. package/dist/core/export-html/vendor/highlight.min.js +1213 -0
  111. package/dist/core/export-html/vendor/marked.min.js +6 -0
  112. package/dist/core/extensions/index.d.ts +12 -0
  113. package/dist/core/extensions/index.d.ts.map +1 -0
  114. package/dist/core/extensions/index.js +9 -0
  115. package/dist/core/extensions/index.js.map +1 -0
  116. package/dist/core/extensions/loader.d.ts +24 -0
  117. package/dist/core/extensions/loader.d.ts.map +1 -0
  118. package/dist/core/extensions/loader.js +484 -0
  119. package/dist/core/extensions/loader.js.map +1 -0
  120. package/dist/core/extensions/runner.d.ts +160 -0
  121. package/dist/core/extensions/runner.d.ts.map +1 -0
  122. package/dist/core/extensions/runner.js +824 -0
  123. package/dist/core/extensions/runner.js.map +1 -0
  124. package/dist/core/extensions/types.d.ts +1175 -0
  125. package/dist/core/extensions/types.d.ts.map +1 -0
  126. package/dist/core/extensions/types.js +45 -0
  127. package/dist/core/extensions/types.js.map +1 -0
  128. package/dist/core/extensions/wrapper.d.ts +20 -0
  129. package/dist/core/extensions/wrapper.d.ts.map +1 -0
  130. package/dist/core/extensions/wrapper.js +22 -0
  131. package/dist/core/extensions/wrapper.js.map +1 -0
  132. package/dist/core/footer-data-provider.d.ts +52 -0
  133. package/dist/core/footer-data-provider.d.ts.map +1 -0
  134. package/dist/core/footer-data-provider.js +310 -0
  135. package/dist/core/footer-data-provider.js.map +1 -0
  136. package/dist/core/http-dispatcher.d.ts +21 -0
  137. package/dist/core/http-dispatcher.d.ts.map +1 -0
  138. package/dist/core/http-dispatcher.js +48 -0
  139. package/dist/core/http-dispatcher.js.map +1 -0
  140. package/dist/core/index.d.ts +11 -0
  141. package/dist/core/index.d.ts.map +1 -0
  142. package/dist/core/index.js +11 -0
  143. package/dist/core/index.js.map +1 -0
  144. package/dist/core/keybindings.d.ts +353 -0
  145. package/dist/core/keybindings.d.ts.map +1 -0
  146. package/dist/core/keybindings.js +295 -0
  147. package/dist/core/keybindings.js.map +1 -0
  148. package/dist/core/messages.d.ts +77 -0
  149. package/dist/core/messages.d.ts.map +1 -0
  150. package/dist/core/messages.js +123 -0
  151. package/dist/core/messages.js.map +1 -0
  152. package/dist/core/model-registry.d.ts +150 -0
  153. package/dist/core/model-registry.d.ts.map +1 -0
  154. package/dist/core/model-registry.js +729 -0
  155. package/dist/core/model-registry.js.map +1 -0
  156. package/dist/core/model-resolver.d.ts +110 -0
  157. package/dist/core/model-resolver.d.ts.map +1 -0
  158. package/dist/core/model-resolver.js +495 -0
  159. package/dist/core/model-resolver.js.map +1 -0
  160. package/dist/core/output-guard.d.ts +6 -0
  161. package/dist/core/output-guard.d.ts.map +1 -0
  162. package/dist/core/output-guard.js +59 -0
  163. package/dist/core/output-guard.js.map +1 -0
  164. package/dist/core/package-manager.d.ts +204 -0
  165. package/dist/core/package-manager.d.ts.map +1 -0
  166. package/dist/core/package-manager.js +2021 -0
  167. package/dist/core/package-manager.js.map +1 -0
  168. package/dist/core/pi-agent.d.ts +191 -0
  169. package/dist/core/pi-agent.d.ts.map +1 -0
  170. package/dist/core/pi-agent.js +655 -0
  171. package/dist/core/pi-agent.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 +238 -0
  175. package/dist/core/prompt-templates.js.map +1 -0
  176. package/dist/core/provider-display-names.d.ts +2 -0
  177. package/dist/core/provider-display-names.d.ts.map +1 -0
  178. package/dist/core/provider-display-names.js +33 -0
  179. package/dist/core/provider-display-names.js.map +1 -0
  180. package/dist/core/resolve-config-value.d.ts +23 -0
  181. package/dist/core/resolve-config-value.d.ts.map +1 -0
  182. package/dist/core/resolve-config-value.js +126 -0
  183. package/dist/core/resolve-config-value.js.map +1 -0
  184. package/dist/core/resource-loader.d.ts +194 -0
  185. package/dist/core/resource-loader.d.ts.map +1 -0
  186. package/dist/core/resource-loader.js +734 -0
  187. package/dist/core/resource-loader.js.map +1 -0
  188. package/dist/core/session/constants.d.ts +2 -0
  189. package/dist/core/session/constants.d.ts.map +1 -0
  190. package/dist/core/session/constants.js +2 -0
  191. package/dist/core/session/constants.js.map +1 -0
  192. package/dist/core/session/context.d.ts +9 -0
  193. package/dist/core/session/context.d.ts.map +1 -0
  194. package/dist/core/session/context.js +94 -0
  195. package/dist/core/session/context.js.map +1 -0
  196. package/dist/core/session/ids.d.ts +6 -0
  197. package/dist/core/session/ids.d.ts.map +1 -0
  198. package/dist/core/session/ids.js +15 -0
  199. package/dist/core/session/ids.js.map +1 -0
  200. package/dist/core/session/in-memory-session-manager.d.ts +17 -0
  201. package/dist/core/session/in-memory-session-manager.d.ts.map +1 -0
  202. package/dist/core/session/in-memory-session-manager.js +42 -0
  203. package/dist/core/session/in-memory-session-manager.js.map +1 -0
  204. package/dist/core/session/in-memory-session.d.ts +5 -0
  205. package/dist/core/session/in-memory-session.d.ts.map +1 -0
  206. package/dist/core/session/in-memory-session.js +8 -0
  207. package/dist/core/session/in-memory-session.js.map +1 -0
  208. package/dist/core/session/index.d.ts +16 -0
  209. package/dist/core/session/index.d.ts.map +1 -0
  210. package/dist/core/session/index.js +13 -0
  211. package/dist/core/session/index.js.map +1 -0
  212. package/dist/core/session/jsonl-helpers.d.ts +13 -0
  213. package/dist/core/session/jsonl-helpers.d.ts.map +1 -0
  214. package/dist/core/session/jsonl-helpers.js +18 -0
  215. package/dist/core/session/jsonl-helpers.js.map +1 -0
  216. package/dist/core/session/local-session-manager.d.ts +22 -0
  217. package/dist/core/session/local-session-manager.d.ts.map +1 -0
  218. package/dist/core/session/local-session-manager.js +102 -0
  219. package/dist/core/session/local-session-manager.js.map +1 -0
  220. package/dist/core/session/local-session.d.ts +5 -0
  221. package/dist/core/session/local-session.d.ts.map +1 -0
  222. package/dist/core/session/local-session.js +8 -0
  223. package/dist/core/session/local-session.js.map +1 -0
  224. package/dist/core/session/migrations.d.ts +11 -0
  225. package/dist/core/session/migrations.d.ts.map +1 -0
  226. package/dist/core/session/migrations.js +78 -0
  227. package/dist/core/session/migrations.js.map +1 -0
  228. package/dist/core/session/remote-session-client.d.ts +73 -0
  229. package/dist/core/session/remote-session-client.d.ts.map +1 -0
  230. package/dist/core/session/remote-session-client.js +69 -0
  231. package/dist/core/session/remote-session-client.js.map +1 -0
  232. package/dist/core/session/remote-session-manager.d.ts +32 -0
  233. package/dist/core/session/remote-session-manager.d.ts.map +1 -0
  234. package/dist/core/session/remote-session-manager.js +91 -0
  235. package/dist/core/session/remote-session-manager.js.map +1 -0
  236. package/dist/core/session/remote-session.d.ts +17 -0
  237. package/dist/core/session/remote-session.d.ts.map +1 -0
  238. package/dist/core/session/remote-session.js +30 -0
  239. package/dist/core/session/remote-session.js.map +1 -0
  240. package/dist/core/session/session-manager.d.ts +17 -0
  241. package/dist/core/session/session-manager.d.ts.map +1 -0
  242. package/dist/core/session/session-manager.js +2 -0
  243. package/dist/core/session/session-manager.js.map +1 -0
  244. package/dist/core/session/session.d.ts +135 -0
  245. package/dist/core/session/session.d.ts.map +1 -0
  246. package/dist/core/session/session.js +380 -0
  247. package/dist/core/session/session.js.map +1 -0
  248. package/dist/core/session/stores/in-memory-session-store.d.ts +51 -0
  249. package/dist/core/session/stores/in-memory-session-store.d.ts.map +1 -0
  250. package/dist/core/session/stores/in-memory-session-store.js +199 -0
  251. package/dist/core/session/stores/in-memory-session-store.js.map +1 -0
  252. package/dist/core/session/stores/jsonl-session-store.d.ts +30 -0
  253. package/dist/core/session/stores/jsonl-session-store.d.ts.map +1 -0
  254. package/dist/core/session/stores/jsonl-session-store.js +380 -0
  255. package/dist/core/session/stores/jsonl-session-store.js.map +1 -0
  256. package/dist/core/session/stores/remote-session-store.d.ts +43 -0
  257. package/dist/core/session/stores/remote-session-store.d.ts.map +1 -0
  258. package/dist/core/session/stores/remote-session-store.js +124 -0
  259. package/dist/core/session/stores/remote-session-store.js.map +1 -0
  260. package/dist/core/session/stores/session-store.d.ts +48 -0
  261. package/dist/core/session/stores/session-store.d.ts.map +1 -0
  262. package/dist/core/session/stores/session-store.js +2 -0
  263. package/dist/core/session/stores/session-store.js.map +1 -0
  264. package/dist/core/session/types.d.ts +138 -0
  265. package/dist/core/session/types.d.ts.map +1 -0
  266. package/dist/core/session/types.js +2 -0
  267. package/dist/core/session/types.js.map +1 -0
  268. package/dist/core/session-cwd.d.ts +19 -0
  269. package/dist/core/session-cwd.d.ts.map +1 -0
  270. package/dist/core/session-cwd.js +38 -0
  271. package/dist/core/session-cwd.js.map +1 -0
  272. package/dist/core/session-manager.d.ts +2 -0
  273. package/dist/core/session-manager.d.ts.map +1 -0
  274. package/dist/core/session-manager.js +2 -0
  275. package/dist/core/session-manager.js.map +1 -0
  276. package/dist/core/settings-manager.d.ts +264 -0
  277. package/dist/core/settings-manager.d.ts.map +1 -0
  278. package/dist/core/settings-manager.js +795 -0
  279. package/dist/core/settings-manager.js.map +1 -0
  280. package/dist/core/skills.d.ts +60 -0
  281. package/dist/core/skills.d.ts.map +1 -0
  282. package/dist/core/skills.js +387 -0
  283. package/dist/core/skills.js.map +1 -0
  284. package/dist/core/slash-commands.d.ts +14 -0
  285. package/dist/core/slash-commands.d.ts.map +1 -0
  286. package/dist/core/slash-commands.js +25 -0
  287. package/dist/core/slash-commands.js.map +1 -0
  288. package/dist/core/source-info.d.ts +18 -0
  289. package/dist/core/source-info.d.ts.map +1 -0
  290. package/dist/core/source-info.js +19 -0
  291. package/dist/core/source-info.js.map +1 -0
  292. package/dist/core/system-prompt.d.ts +28 -0
  293. package/dist/core/system-prompt.d.ts.map +1 -0
  294. package/dist/core/system-prompt.js +123 -0
  295. package/dist/core/system-prompt.js.map +1 -0
  296. package/dist/core/telemetry.d.ts +3 -0
  297. package/dist/core/telemetry.d.ts.map +1 -0
  298. package/dist/core/telemetry.js +9 -0
  299. package/dist/core/telemetry.js.map +1 -0
  300. package/dist/core/timings.d.ts +8 -0
  301. package/dist/core/timings.d.ts.map +1 -0
  302. package/dist/core/timings.js +31 -0
  303. package/dist/core/timings.js.map +1 -0
  304. package/dist/core/tools/bash.d.ts +68 -0
  305. package/dist/core/tools/bash.d.ts.map +1 -0
  306. package/dist/core/tools/bash.js +342 -0
  307. package/dist/core/tools/bash.js.map +1 -0
  308. package/dist/core/tools/edit-diff.d.ts +87 -0
  309. package/dist/core/tools/edit-diff.d.ts.map +1 -0
  310. package/dist/core/tools/edit-diff.js +345 -0
  311. package/dist/core/tools/edit-diff.js.map +1 -0
  312. package/dist/core/tools/edit.d.ts +51 -0
  313. package/dist/core/tools/edit.d.ts.map +1 -0
  314. package/dist/core/tools/edit.js +325 -0
  315. package/dist/core/tools/edit.js.map +1 -0
  316. package/dist/core/tools/file-mutation-queue.d.ts +6 -0
  317. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -0
  318. package/dist/core/tools/file-mutation-queue.js +37 -0
  319. package/dist/core/tools/file-mutation-queue.js.map +1 -0
  320. package/dist/core/tools/find.d.ts +35 -0
  321. package/dist/core/tools/find.d.ts.map +1 -0
  322. package/dist/core/tools/find.js +298 -0
  323. package/dist/core/tools/find.js.map +1 -0
  324. package/dist/core/tools/grep.d.ts +37 -0
  325. package/dist/core/tools/grep.d.ts.map +1 -0
  326. package/dist/core/tools/grep.js +304 -0
  327. package/dist/core/tools/grep.js.map +1 -0
  328. package/dist/core/tools/index.d.ts +40 -0
  329. package/dist/core/tools/index.d.ts.map +1 -0
  330. package/dist/core/tools/index.js +112 -0
  331. package/dist/core/tools/index.js.map +1 -0
  332. package/dist/core/tools/ls.d.ts +37 -0
  333. package/dist/core/tools/ls.d.ts.map +1 -0
  334. package/dist/core/tools/ls.js +169 -0
  335. package/dist/core/tools/ls.js.map +1 -0
  336. package/dist/core/tools/output-accumulator.d.ts +52 -0
  337. package/dist/core/tools/output-accumulator.d.ts.map +1 -0
  338. package/dist/core/tools/output-accumulator.js +184 -0
  339. package/dist/core/tools/output-accumulator.js.map +1 -0
  340. package/dist/core/tools/path-utils.d.ts +8 -0
  341. package/dist/core/tools/path-utils.d.ts.map +1 -0
  342. package/dist/core/tools/path-utils.js +62 -0
  343. package/dist/core/tools/path-utils.js.map +1 -0
  344. package/dist/core/tools/read.d.ts +35 -0
  345. package/dist/core/tools/read.d.ts.map +1 -0
  346. package/dist/core/tools/read.js +289 -0
  347. package/dist/core/tools/read.js.map +1 -0
  348. package/dist/core/tools/render-utils.d.ts +21 -0
  349. package/dist/core/tools/render-utils.d.ts.map +1 -0
  350. package/dist/core/tools/render-utils.js +49 -0
  351. package/dist/core/tools/render-utils.js.map +1 -0
  352. package/dist/core/tools/tool-definition-wrapper.d.ts +14 -0
  353. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
  354. package/dist/core/tools/tool-definition-wrapper.js +34 -0
  355. package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
  356. package/dist/core/tools/truncate.d.ts +70 -0
  357. package/dist/core/tools/truncate.d.ts.map +1 -0
  358. package/dist/core/tools/truncate.js +215 -0
  359. package/dist/core/tools/truncate.js.map +1 -0
  360. package/dist/core/tools/write.d.ts +26 -0
  361. package/dist/core/tools/write.d.ts.map +1 -0
  362. package/dist/core/tools/write.js +213 -0
  363. package/dist/core/tools/write.js.map +1 -0
  364. package/dist/index.d.ts +29 -0
  365. package/dist/index.d.ts.map +1 -0
  366. package/dist/index.js +36 -0
  367. package/dist/index.js.map +1 -0
  368. package/dist/main.d.ts +12 -0
  369. package/dist/main.d.ts.map +1 -0
  370. package/dist/main.js +532 -0
  371. package/dist/main.js.map +1 -0
  372. package/dist/migrations.d.ts +33 -0
  373. package/dist/migrations.d.ts.map +1 -0
  374. package/dist/migrations.js +281 -0
  375. package/dist/migrations.js.map +1 -0
  376. package/dist/modes/index.d.ts +9 -0
  377. package/dist/modes/index.d.ts.map +1 -0
  378. package/dist/modes/index.js +8 -0
  379. package/dist/modes/index.js.map +1 -0
  380. package/dist/modes/interactive/assets/clankolas.png +0 -0
  381. package/dist/modes/interactive/components/armin.d.ts +34 -0
  382. package/dist/modes/interactive/components/armin.d.ts.map +1 -0
  383. package/dist/modes/interactive/components/armin.js +333 -0
  384. package/dist/modes/interactive/components/armin.js.map +1 -0
  385. package/dist/modes/interactive/components/assistant-message.d.ts +20 -0
  386. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
  387. package/dist/modes/interactive/components/assistant-message.js +121 -0
  388. package/dist/modes/interactive/components/assistant-message.js.map +1 -0
  389. package/dist/modes/interactive/components/bash-execution.d.ts +34 -0
  390. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
  391. package/dist/modes/interactive/components/bash-execution.js +175 -0
  392. package/dist/modes/interactive/components/bash-execution.js.map +1 -0
  393. package/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
  394. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
  395. package/dist/modes/interactive/components/bordered-loader.js +54 -0
  396. package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
  397. package/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
  398. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
  399. package/dist/modes/interactive/components/branch-summary-message.js +44 -0
  400. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
  401. package/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
  402. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
  403. package/dist/modes/interactive/components/compaction-summary-message.js +45 -0
  404. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
  405. package/dist/modes/interactive/components/config-selector.d.ts +71 -0
  406. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
  407. package/dist/modes/interactive/components/config-selector.js +506 -0
  408. package/dist/modes/interactive/components/config-selector.js.map +1 -0
  409. package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
  410. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
  411. package/dist/modes/interactive/components/countdown-timer.js +33 -0
  412. package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
  413. package/dist/modes/interactive/components/custom-editor.d.ts +21 -0
  414. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
  415. package/dist/modes/interactive/components/custom-editor.js +70 -0
  416. package/dist/modes/interactive/components/custom-editor.js.map +1 -0
  417. package/dist/modes/interactive/components/custom-message.d.ts +20 -0
  418. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
  419. package/dist/modes/interactive/components/custom-message.js +79 -0
  420. package/dist/modes/interactive/components/custom-message.js.map +1 -0
  421. package/dist/modes/interactive/components/daxnuts.d.ts +23 -0
  422. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -0
  423. package/dist/modes/interactive/components/daxnuts.js +140 -0
  424. package/dist/modes/interactive/components/daxnuts.js.map +1 -0
  425. package/dist/modes/interactive/components/diff.d.ts +12 -0
  426. package/dist/modes/interactive/components/diff.d.ts.map +1 -0
  427. package/dist/modes/interactive/components/diff.js +133 -0
  428. package/dist/modes/interactive/components/diff.js.map +1 -0
  429. package/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
  430. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
  431. package/dist/modes/interactive/components/dynamic-border.js +21 -0
  432. package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
  433. package/dist/modes/interactive/components/earendil-announcement.d.ts +5 -0
  434. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -0
  435. package/dist/modes/interactive/components/earendil-announcement.js +40 -0
  436. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -0
  437. package/dist/modes/interactive/components/extension-editor.d.ts +20 -0
  438. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -0
  439. package/dist/modes/interactive/components/extension-editor.js +119 -0
  440. package/dist/modes/interactive/components/extension-editor.js.map +1 -0
  441. package/dist/modes/interactive/components/extension-input.d.ts +23 -0
  442. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -0
  443. package/dist/modes/interactive/components/extension-input.js +61 -0
  444. package/dist/modes/interactive/components/extension-input.js.map +1 -0
  445. package/dist/modes/interactive/components/extension-selector.d.ts +26 -0
  446. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
  447. package/dist/modes/interactive/components/extension-selector.js +83 -0
  448. package/dist/modes/interactive/components/extension-selector.js.map +1 -0
  449. package/dist/modes/interactive/components/footer.d.ts +27 -0
  450. package/dist/modes/interactive/components/footer.d.ts.map +1 -0
  451. package/dist/modes/interactive/components/footer.js +201 -0
  452. package/dist/modes/interactive/components/footer.js.map +1 -0
  453. package/dist/modes/interactive/components/index.d.ts +32 -0
  454. package/dist/modes/interactive/components/index.d.ts.map +1 -0
  455. package/dist/modes/interactive/components/index.js +33 -0
  456. package/dist/modes/interactive/components/index.js.map +1 -0
  457. package/dist/modes/interactive/components/keybinding-hints.d.ts +13 -0
  458. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
  459. package/dist/modes/interactive/components/keybinding-hints.js +36 -0
  460. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
  461. package/dist/modes/interactive/components/login-dialog.d.ts +54 -0
  462. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
  463. package/dist/modes/interactive/components/login-dialog.js +180 -0
  464. package/dist/modes/interactive/components/login-dialog.js.map +1 -0
  465. package/dist/modes/interactive/components/model-selector.d.ts +47 -0
  466. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
  467. package/dist/modes/interactive/components/model-selector.js +278 -0
  468. package/dist/modes/interactive/components/model-selector.js.map +1 -0
  469. package/dist/modes/interactive/components/oauth-selector.d.ts +31 -0
  470. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
  471. package/dist/modes/interactive/components/oauth-selector.js +165 -0
  472. package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
  473. package/dist/modes/interactive/components/scoped-models-selector.d.ts +42 -0
  474. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
  475. package/dist/modes/interactive/components/scoped-models-selector.js +290 -0
  476. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -0
  477. package/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
  478. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
  479. package/dist/modes/interactive/components/session-selector-search.js +155 -0
  480. package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
  481. package/dist/modes/interactive/components/session-selector.d.ts +96 -0
  482. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
  483. package/dist/modes/interactive/components/session-selector.js +861 -0
  484. package/dist/modes/interactive/components/session-selector.js.map +1 -0
  485. package/dist/modes/interactive/components/settings-selector.d.ts +69 -0
  486. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
  487. package/dist/modes/interactive/components/settings-selector.js +390 -0
  488. package/dist/modes/interactive/components/settings-selector.js.map +1 -0
  489. package/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
  490. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
  491. package/dist/modes/interactive/components/show-images-selector.js +39 -0
  492. package/dist/modes/interactive/components/show-images-selector.js.map +1 -0
  493. package/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
  494. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
  495. package/dist/modes/interactive/components/skill-invocation-message.js +47 -0
  496. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
  497. package/dist/modes/interactive/components/theme-selector.d.ts +11 -0
  498. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
  499. package/dist/modes/interactive/components/theme-selector.js +50 -0
  500. package/dist/modes/interactive/components/theme-selector.js.map +1 -0
  501. package/dist/modes/interactive/components/thinking-selector.d.ts +11 -0
  502. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
  503. package/dist/modes/interactive/components/thinking-selector.js +51 -0
  504. package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
  505. package/dist/modes/interactive/components/tool-execution.d.ts +63 -0
  506. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
  507. package/dist/modes/interactive/components/tool-execution.js +295 -0
  508. package/dist/modes/interactive/components/tool-execution.js.map +1 -0
  509. package/dist/modes/interactive/components/tree-selector.d.ts +89 -0
  510. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
  511. package/dist/modes/interactive/components/tree-selector.js +1093 -0
  512. package/dist/modes/interactive/components/tree-selector.js.map +1 -0
  513. package/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
  514. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
  515. package/dist/modes/interactive/components/user-message-selector.js +114 -0
  516. package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
  517. package/dist/modes/interactive/components/user-message.d.ts +10 -0
  518. package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
  519. package/dist/modes/interactive/components/user-message.js +29 -0
  520. package/dist/modes/interactive/components/user-message.js.map +1 -0
  521. package/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
  522. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
  523. package/dist/modes/interactive/components/visual-truncate.js +33 -0
  524. package/dist/modes/interactive/components/visual-truncate.js.map +1 -0
  525. package/dist/modes/interactive/interactive-mode.d.ts +370 -0
  526. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
  527. package/dist/modes/interactive/interactive-mode.js +4653 -0
  528. package/dist/modes/interactive/interactive-mode.js.map +1 -0
  529. package/dist/modes/interactive/theme/dark.json +86 -0
  530. package/dist/modes/interactive/theme/light.json +85 -0
  531. package/dist/modes/interactive/theme/theme-schema.json +335 -0
  532. package/dist/modes/interactive/theme/theme.d.ts +100 -0
  533. package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
  534. package/dist/modes/interactive/theme/theme.js +1024 -0
  535. package/dist/modes/interactive/theme/theme.js.map +1 -0
  536. package/dist/modes/print-mode.d.ts +28 -0
  537. package/dist/modes/print-mode.d.ts.map +1 -0
  538. package/dist/modes/print-mode.js +131 -0
  539. package/dist/modes/print-mode.js.map +1 -0
  540. package/dist/modes/rpc/jsonl.d.ts +17 -0
  541. package/dist/modes/rpc/jsonl.d.ts.map +1 -0
  542. package/dist/modes/rpc/jsonl.js +49 -0
  543. package/dist/modes/rpc/jsonl.js.map +1 -0
  544. package/dist/modes/rpc/rpc-client.d.ts +234 -0
  545. package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
  546. package/dist/modes/rpc/rpc-client.js +418 -0
  547. package/dist/modes/rpc/rpc-client.js.map +1 -0
  548. package/dist/modes/rpc/rpc-mode.d.ts +20 -0
  549. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
  550. package/dist/modes/rpc/rpc-mode.js +603 -0
  551. package/dist/modes/rpc/rpc-mode.js.map +1 -0
  552. package/dist/modes/rpc/rpc-types.d.ts +420 -0
  553. package/dist/modes/rpc/rpc-types.d.ts.map +1 -0
  554. package/dist/modes/rpc/rpc-types.js +8 -0
  555. package/dist/modes/rpc/rpc-types.js.map +1 -0
  556. package/dist/package-manager-cli.d.ts +4 -0
  557. package/dist/package-manager-cli.d.ts.map +1 -0
  558. package/dist/package-manager-cli.js +515 -0
  559. package/dist/package-manager-cli.js.map +1 -0
  560. package/dist/utils/ansi.d.ts +2 -0
  561. package/dist/utils/ansi.d.ts.map +1 -0
  562. package/dist/utils/ansi.js +52 -0
  563. package/dist/utils/ansi.js.map +1 -0
  564. package/dist/utils/changelog.d.ts +21 -0
  565. package/dist/utils/changelog.d.ts.map +1 -0
  566. package/dist/utils/changelog.js +87 -0
  567. package/dist/utils/changelog.js.map +1 -0
  568. package/dist/utils/child-process.d.ts +15 -0
  569. package/dist/utils/child-process.d.ts.map +1 -0
  570. package/dist/utils/child-process.js +88 -0
  571. package/dist/utils/child-process.js.map +1 -0
  572. package/dist/utils/clipboard-image.d.ts +11 -0
  573. package/dist/utils/clipboard-image.d.ts.map +1 -0
  574. package/dist/utils/clipboard-image.js +245 -0
  575. package/dist/utils/clipboard-image.js.map +1 -0
  576. package/dist/utils/clipboard-native.d.ts +8 -0
  577. package/dist/utils/clipboard-native.d.ts.map +1 -0
  578. package/dist/utils/clipboard-native.js +14 -0
  579. package/dist/utils/clipboard-native.js.map +1 -0
  580. package/dist/utils/clipboard.d.ts +2 -0
  581. package/dist/utils/clipboard.d.ts.map +1 -0
  582. package/dist/utils/clipboard.js +117 -0
  583. package/dist/utils/clipboard.js.map +1 -0
  584. package/dist/utils/exif-orientation.d.ts +5 -0
  585. package/dist/utils/exif-orientation.d.ts.map +1 -0
  586. package/dist/utils/exif-orientation.js +158 -0
  587. package/dist/utils/exif-orientation.js.map +1 -0
  588. package/dist/utils/frontmatter.d.ts +8 -0
  589. package/dist/utils/frontmatter.d.ts.map +1 -0
  590. package/dist/utils/frontmatter.js +26 -0
  591. package/dist/utils/frontmatter.js.map +1 -0
  592. package/dist/utils/fs-watch.d.ts +5 -0
  593. package/dist/utils/fs-watch.d.ts.map +1 -0
  594. package/dist/utils/fs-watch.js +25 -0
  595. package/dist/utils/fs-watch.js.map +1 -0
  596. package/dist/utils/git.d.ts +26 -0
  597. package/dist/utils/git.d.ts.map +1 -0
  598. package/dist/utils/git.js +163 -0
  599. package/dist/utils/git.js.map +1 -0
  600. package/dist/utils/html.d.ts +7 -0
  601. package/dist/utils/html.d.ts.map +1 -0
  602. package/dist/utils/html.js +40 -0
  603. package/dist/utils/html.js.map +1 -0
  604. package/dist/utils/image-convert.d.ts +9 -0
  605. package/dist/utils/image-convert.d.ts.map +1 -0
  606. package/dist/utils/image-convert.js +39 -0
  607. package/dist/utils/image-convert.js.map +1 -0
  608. package/dist/utils/image-resize.d.ts +36 -0
  609. package/dist/utils/image-resize.d.ts.map +1 -0
  610. package/dist/utils/image-resize.js +137 -0
  611. package/dist/utils/image-resize.js.map +1 -0
  612. package/dist/utils/mime.d.ts +3 -0
  613. package/dist/utils/mime.d.ts.map +1 -0
  614. package/dist/utils/mime.js +69 -0
  615. package/dist/utils/mime.js.map +1 -0
  616. package/dist/utils/paths.d.ts +31 -0
  617. package/dist/utils/paths.d.ts.map +1 -0
  618. package/dist/utils/paths.js +92 -0
  619. package/dist/utils/paths.js.map +1 -0
  620. package/dist/utils/photon.d.ts +21 -0
  621. package/dist/utils/photon.d.ts.map +1 -0
  622. package/dist/utils/photon.js +121 -0
  623. package/dist/utils/photon.js.map +1 -0
  624. package/dist/utils/pi-user-agent.d.ts +2 -0
  625. package/dist/utils/pi-user-agent.d.ts.map +1 -0
  626. package/dist/utils/pi-user-agent.js +5 -0
  627. package/dist/utils/pi-user-agent.js.map +1 -0
  628. package/dist/utils/shell.d.ts +30 -0
  629. package/dist/utils/shell.d.ts.map +1 -0
  630. package/dist/utils/shell.js +195 -0
  631. package/dist/utils/shell.js.map +1 -0
  632. package/dist/utils/sleep.d.ts +5 -0
  633. package/dist/utils/sleep.d.ts.map +1 -0
  634. package/dist/utils/sleep.js +17 -0
  635. package/dist/utils/sleep.js.map +1 -0
  636. package/dist/utils/syntax-highlight.d.ts +12 -0
  637. package/dist/utils/syntax-highlight.d.ts.map +1 -0
  638. package/dist/utils/syntax-highlight.js +118 -0
  639. package/dist/utils/syntax-highlight.js.map +1 -0
  640. package/dist/utils/tools-manager.d.ts +3 -0
  641. package/dist/utils/tools-manager.d.ts.map +1 -0
  642. package/dist/utils/tools-manager.js +328 -0
  643. package/dist/utils/tools-manager.js.map +1 -0
  644. package/dist/utils/version-check.d.ts +15 -0
  645. package/dist/utils/version-check.d.ts.map +1 -0
  646. package/dist/utils/version-check.js +82 -0
  647. package/dist/utils/version-check.js.map +1 -0
  648. package/dist/utils/windows-self-update.d.ts +3 -0
  649. package/dist/utils/windows-self-update.d.ts.map +1 -0
  650. package/dist/utils/windows-self-update.js +77 -0
  651. package/dist/utils/windows-self-update.js.map +1 -0
  652. package/docs/compaction.md +394 -0
  653. package/docs/custom-provider.md +701 -0
  654. package/docs/development.md +71 -0
  655. package/docs/docs.json +148 -0
  656. package/docs/extensions.md +2596 -0
  657. package/docs/images/doom-extension.png +0 -0
  658. package/docs/images/exy.png +0 -0
  659. package/docs/images/interactive-mode.png +0 -0
  660. package/docs/images/tree-view.png +0 -0
  661. package/docs/index.md +80 -0
  662. package/docs/json.md +82 -0
  663. package/docs/keybindings.md +197 -0
  664. package/docs/models.md +474 -0
  665. package/docs/packages.md +225 -0
  666. package/docs/prompt-templates.md +88 -0
  667. package/docs/providers.md +243 -0
  668. package/docs/quickstart.md +164 -0
  669. package/docs/rpc.md +1407 -0
  670. package/docs/sdk.md +257 -0
  671. package/docs/session-format.md +412 -0
  672. package/docs/sessions.md +137 -0
  673. package/docs/settings.md +277 -0
  674. package/docs/shell-aliases.md +13 -0
  675. package/docs/skills.md +231 -0
  676. package/docs/terminal-setup.md +106 -0
  677. package/docs/termux.md +127 -0
  678. package/docs/themes.md +295 -0
  679. package/docs/tmux.md +61 -0
  680. package/docs/tui.md +918 -0
  681. package/docs/usage.md +279 -0
  682. package/docs/windows.md +17 -0
  683. package/examples/README.md +25 -0
  684. package/examples/extensions/README.md +208 -0
  685. package/examples/extensions/auto-commit-on-exit.ts +49 -0
  686. package/examples/extensions/bash-spawn-hook.ts +30 -0
  687. package/examples/extensions/bookmark.ts +50 -0
  688. package/examples/extensions/border-status-editor.ts +150 -0
  689. package/examples/extensions/built-in-tool-renderer.ts +249 -0
  690. package/examples/extensions/claude-rules.ts +86 -0
  691. package/examples/extensions/commands.ts +72 -0
  692. package/examples/extensions/confirm-destructive.ts +59 -0
  693. package/examples/extensions/custom-compaction.ts +127 -0
  694. package/examples/extensions/custom-footer.ts +64 -0
  695. package/examples/extensions/custom-header.ts +73 -0
  696. package/examples/extensions/custom-provider-anthropic/index.ts +604 -0
  697. package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -0
  698. package/examples/extensions/custom-provider-anthropic/package.json +19 -0
  699. package/examples/extensions/custom-provider-gitlab-duo/index.ts +349 -0
  700. package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -0
  701. package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -0
  702. package/examples/extensions/dirty-repo-guard.ts +56 -0
  703. package/examples/extensions/doom-overlay/README.md +46 -0
  704. package/examples/extensions/doom-overlay/doom/build/doom.js +21 -0
  705. package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
  706. package/examples/extensions/doom-overlay/doom/build.sh +152 -0
  707. package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +72 -0
  708. package/examples/extensions/doom-overlay/doom-component.ts +132 -0
  709. package/examples/extensions/doom-overlay/doom-engine.ts +173 -0
  710. package/examples/extensions/doom-overlay/doom-keys.ts +104 -0
  711. package/examples/extensions/doom-overlay/index.ts +74 -0
  712. package/examples/extensions/doom-overlay/wad-finder.ts +51 -0
  713. package/examples/extensions/dynamic-resources/SKILL.md +8 -0
  714. package/examples/extensions/dynamic-resources/dynamic.json +79 -0
  715. package/examples/extensions/dynamic-resources/dynamic.md +5 -0
  716. package/examples/extensions/dynamic-resources/index.ts +15 -0
  717. package/examples/extensions/dynamic-tools.ts +74 -0
  718. package/examples/extensions/event-bus.ts +43 -0
  719. package/examples/extensions/file-trigger.ts +41 -0
  720. package/examples/extensions/git-checkpoint.ts +53 -0
  721. package/examples/extensions/github-issue-autocomplete.ts +185 -0
  722. package/examples/extensions/handoff.ts +191 -0
  723. package/examples/extensions/hello.ts +26 -0
  724. package/examples/extensions/hidden-thinking-label.ts +53 -0
  725. package/examples/extensions/inline-bash.ts +94 -0
  726. package/examples/extensions/input-transform.ts +43 -0
  727. package/examples/extensions/interactive-shell.ts +196 -0
  728. package/examples/extensions/mac-system-theme.ts +47 -0
  729. package/examples/extensions/message-renderer.ts +59 -0
  730. package/examples/extensions/minimal-mode.ts +426 -0
  731. package/examples/extensions/modal-editor.ts +85 -0
  732. package/examples/extensions/model-status.ts +31 -0
  733. package/examples/extensions/notify.ts +55 -0
  734. package/examples/extensions/overlay-qa-tests.ts +1379 -0
  735. package/examples/extensions/overlay-test.ts +153 -0
  736. package/examples/extensions/permission-gate.ts +34 -0
  737. package/examples/extensions/pirate.ts +47 -0
  738. package/examples/extensions/plan-mode/README.md +65 -0
  739. package/examples/extensions/plan-mode/index.ts +340 -0
  740. package/examples/extensions/plan-mode/utils.ts +168 -0
  741. package/examples/extensions/preset.ts +430 -0
  742. package/examples/extensions/prompt-customizer.ts +97 -0
  743. package/examples/extensions/protected-paths.ts +30 -0
  744. package/examples/extensions/provider-payload.ts +18 -0
  745. package/examples/extensions/qna.ts +122 -0
  746. package/examples/extensions/question.ts +264 -0
  747. package/examples/extensions/questionnaire.ts +427 -0
  748. package/examples/extensions/rainbow-editor.ts +88 -0
  749. package/examples/extensions/reload-runtime.ts +37 -0
  750. package/examples/extensions/rpc-demo.ts +118 -0
  751. package/examples/extensions/sandbox/index.ts +321 -0
  752. package/examples/extensions/sandbox/package-lock.json +92 -0
  753. package/examples/extensions/sandbox/package.json +19 -0
  754. package/examples/extensions/send-user-message.ts +97 -0
  755. package/examples/extensions/session-name.ts +27 -0
  756. package/examples/extensions/shutdown-command.ts +63 -0
  757. package/examples/extensions/snake.ts +343 -0
  758. package/examples/extensions/space-invaders.ts +560 -0
  759. package/examples/extensions/ssh.ts +220 -0
  760. package/examples/extensions/status-line.ts +32 -0
  761. package/examples/extensions/structured-output.ts +65 -0
  762. package/examples/extensions/subagent/README.md +175 -0
  763. package/examples/extensions/subagent/agents/planner.md +37 -0
  764. package/examples/extensions/subagent/agents/reviewer.md +35 -0
  765. package/examples/extensions/subagent/agents/scout.md +50 -0
  766. package/examples/extensions/subagent/agents/worker.md +24 -0
  767. package/examples/extensions/subagent/agents.ts +126 -0
  768. package/examples/extensions/subagent/index.ts +1009 -0
  769. package/examples/extensions/subagent/prompts/implement-and-review.md +10 -0
  770. package/examples/extensions/subagent/prompts/implement.md +10 -0
  771. package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -0
  772. package/examples/extensions/summarize.ts +206 -0
  773. package/examples/extensions/system-prompt-header.ts +17 -0
  774. package/examples/extensions/tic-tac-toe.ts +1008 -0
  775. package/examples/extensions/timed-confirm.ts +70 -0
  776. package/examples/extensions/titlebar-spinner.ts +58 -0
  777. package/examples/extensions/todo.ts +297 -0
  778. package/examples/extensions/tool-override.ts +144 -0
  779. package/examples/extensions/tools.ts +141 -0
  780. package/examples/extensions/trigger-compact.ts +50 -0
  781. package/examples/extensions/truncated-tool.ts +195 -0
  782. package/examples/extensions/widget-placement.ts +9 -0
  783. package/examples/extensions/with-deps/index.ts +32 -0
  784. package/examples/extensions/with-deps/package-lock.json +31 -0
  785. package/examples/extensions/with-deps/package.json +22 -0
  786. package/examples/extensions/working-indicator.ts +123 -0
  787. package/examples/extensions/working-message-test.ts +25 -0
  788. package/examples/rpc-extension-ui.ts +632 -0
  789. package/examples/sdk/01-minimal.ts +27 -0
  790. package/examples/sdk/02-custom-model.ts +54 -0
  791. package/examples/sdk/03-custom-prompt.ts +76 -0
  792. package/examples/sdk/04-skills.ts +60 -0
  793. package/examples/sdk/05-tools.ts +51 -0
  794. package/examples/sdk/06-extensions.ts +94 -0
  795. package/examples/sdk/07-context-files.ts +47 -0
  796. package/examples/sdk/08-prompt-templates.ts +56 -0
  797. package/examples/sdk/09-api-keys-and-oauth.ts +46 -0
  798. package/examples/sdk/10-settings.ts +57 -0
  799. package/examples/sdk/11-sessions.ts +54 -0
  800. package/examples/sdk/12-full-control.ts +78 -0
  801. package/examples/sdk/13-session-runtime.ts +49 -0
  802. package/examples/sdk/README.md +95 -0
  803. package/npm-shrinkwrap.json +1789 -0
  804. package/package.json +98 -0
@@ -0,0 +1,137 @@
1
+ # Sessions
2
+
3
+ Pi saves conversations as sessions so you can continue work, branch from earlier turns, and revisit previous paths.
4
+
5
+ ## Session Storage
6
+
7
+ Sessions auto-save to `~/.pi/agent/sessions/`, organized by working directory. Each session is a JSONL file with a tree structure.
8
+
9
+ ```bash
10
+ pi -c # Continue most recent session
11
+ pi -r # Browse and select from past sessions
12
+ pi --no-session # Ephemeral mode; do not save
13
+ pi --session <path|id> # Use a specific session file or partial session ID
14
+ pi --fork <path|id> # Fork a session file or partial session ID into a new session
15
+ ```
16
+
17
+ Use `/session` in interactive mode to see the current session file, session ID, message count, tokens, and cost.
18
+
19
+ For the JSONL file format and SessionManager API, see [Session Format](session-format.md).
20
+
21
+ ## Session Commands
22
+
23
+ | Command | Description |
24
+ |---------|-------------|
25
+ | `/resume` | Browse and select previous sessions |
26
+ | `/new` | Start a new session |
27
+ | `/name <name>` | Set the current session display name |
28
+ | `/session` | Show session info |
29
+ | `/tree` | Navigate the current session tree |
30
+ | `/fork` | Create a new session from a previous user message |
31
+ | `/clone` | Duplicate the current active branch into a new session |
32
+ | `/compact [prompt]` | Summarize older context; see [Compaction](compaction.md) |
33
+ | `/export [file]` | Export session to HTML |
34
+ | `/share` | Upload as private GitHub gist with shareable HTML link |
35
+
36
+ ## Resuming and Deleting Sessions
37
+
38
+ `/resume` opens an interactive session picker for the current project. `pi -r` opens the same picker at startup.
39
+
40
+ In the picker you can:
41
+
42
+ - search by typing
43
+ - toggle path display with Ctrl+P
44
+ - toggle sort mode with Ctrl+S
45
+ - filter to named sessions with Ctrl+N
46
+ - rename with Ctrl+R
47
+ - delete with Ctrl+D, then confirm
48
+
49
+ When available, pi uses the `trash` CLI for deletion instead of permanently removing files.
50
+
51
+ ## Naming Sessions
52
+
53
+ Use `/name <name>` to set a human-readable session name:
54
+
55
+ ```text
56
+ /name Refactor auth module
57
+ ```
58
+
59
+ Named sessions are easier to find in `/resume` and `pi -r`.
60
+
61
+ ## Branching with `/tree`
62
+
63
+ Sessions are stored as trees. Every entry has an `id` and `parentId`, and the current position is the active leaf. `/tree` lets you jump to any previous point and continue from there without creating a new file.
64
+
65
+ <p align="center"><img src="images/tree-view.png" alt="Tree View" width="600"></p>
66
+
67
+ Example shape:
68
+
69
+ ```text
70
+ ├─ user: "Hello, can you help..."
71
+ │ └─ assistant: "Of course! I can..."
72
+ │ ├─ user: "Let's try approach A..."
73
+ │ │ └─ assistant: "For approach A..."
74
+ │ │ └─ user: "That worked..." ← active
75
+ │ └─ user: "Actually, approach B..."
76
+ │ └─ assistant: "For approach B..."
77
+ ```
78
+
79
+ ### Tree Controls
80
+
81
+ | Key | Action |
82
+ |-----|--------|
83
+ | ↑/↓ | Navigate visible entries |
84
+ | ←/→ | Page up/down |
85
+ | Ctrl+←/Ctrl+→ or Alt+←/Alt+→ | Fold/unfold or jump between branch segments |
86
+ | Shift+L | Set or clear a label on the selected entry |
87
+ | Shift+T | Toggle label timestamps |
88
+ | Enter | Select entry |
89
+ | Escape/Ctrl+C | Cancel |
90
+ | Ctrl+O | Cycle filter mode |
91
+
92
+ Filter modes are: default, no-tools, user-only, labeled-only, and all. Configure the default with `treeFilterMode` in [Settings](settings.md).
93
+
94
+ ### Selection Behavior
95
+
96
+ Selecting a user or custom message:
97
+
98
+ 1. Moves the leaf to the selected message's parent.
99
+ 2. Places the selected message text in the editor.
100
+ 3. Lets you edit and resubmit, creating a new branch.
101
+
102
+ Selecting an assistant, tool, compaction, or other non-user entry:
103
+
104
+ 1. Moves the leaf to that entry.
105
+ 2. Leaves the editor empty.
106
+ 3. Lets you continue from that point.
107
+
108
+ Selecting the root user message resets the leaf to an empty conversation and places the original prompt in the editor.
109
+
110
+ ## `/tree`, `/fork`, and `/clone`
111
+
112
+ | Feature | `/tree` | `/fork` | `/clone` |
113
+ |---------|---------|---------|----------|
114
+ | Output | Same session file | New session file | New session file |
115
+ | View | Full tree | User-message selector | Current active branch |
116
+ | Typical use | Explore alternatives in place | Start a new session from an earlier prompt | Duplicate current work before continuing |
117
+ | Summary | Optional branch summary | None | None |
118
+
119
+ Use `/tree` when you want to keep alternatives together. Use `/fork` or `/clone` when you want a separate session file.
120
+
121
+ ## Branch Summaries
122
+
123
+ When `/tree` switches away from one branch to another, pi can summarize the abandoned branch and attach that summary at the new position. This preserves important context from the path you left without replaying the whole branch.
124
+
125
+ When prompted, choose one of:
126
+
127
+ 1. no summary
128
+ 2. summarize with the default prompt
129
+ 3. summarize with custom focus instructions
130
+
131
+ See [Compaction](compaction.md) for branch summarization internals and extension hooks.
132
+
133
+ ## Session Format
134
+
135
+ Session files are JSONL and contain message entries, model changes, thinking-level changes, labels, compactions, branch summaries, and extension entries.
136
+
137
+ For parsers, extensions, SDK usage, and the full SessionManager API, see [Session Format](session-format.md).
@@ -0,0 +1,277 @@
1
+ # Settings
2
+
3
+ Pi uses JSON settings files with project settings overriding global settings.
4
+
5
+ | Location | Scope |
6
+ |----------|-------|
7
+ | `~/.pi/agent/settings.json` | Global (all projects) |
8
+ | `.pi/settings.json` | Project (current directory) |
9
+
10
+ Edit directly or use `/settings` for common options.
11
+
12
+ ## All Settings
13
+
14
+ ### Model & Thinking
15
+
16
+ | Setting | Type | Default | Description |
17
+ |---------|------|---------|-------------|
18
+ | `defaultProvider` | string | - | Default provider (e.g., `"anthropic"`, `"openai"`) |
19
+ | `defaultModel` | string | - | Default model ID |
20
+ | `defaultThinkingLevel` | string | - | `"off"`, `"minimal"`, `"low"`, `"medium"`, `"high"`, `"xhigh"` |
21
+ | `hideThinkingBlock` | boolean | `false` | Hide thinking blocks in output |
22
+ | `thinkingBudgets` | object | - | Custom token budgets per thinking level |
23
+
24
+ #### thinkingBudgets
25
+
26
+ ```json
27
+ {
28
+ "thinkingBudgets": {
29
+ "minimal": 1024,
30
+ "low": 4096,
31
+ "medium": 10240,
32
+ "high": 32768
33
+ }
34
+ }
35
+ ```
36
+
37
+ ### UI & Display
38
+
39
+ | Setting | Type | Default | Description |
40
+ |---------|------|---------|-------------|
41
+ | `theme` | string | `"dark"` | Theme name (`"dark"`, `"light"`, or custom) |
42
+ | `quietStartup` | boolean | `false` | Hide startup header |
43
+ | `collapseChangelog` | boolean | `false` | Show condensed changelog after updates |
44
+ | `enableInstallTelemetry` | boolean | `true` | Send an anonymous install/update version ping after first install or changelog-detected updates. This does not control update checks |
45
+ | `doubleEscapeAction` | string | `"tree"` | Action for double-escape: `"tree"`, `"fork"`, or `"none"` |
46
+ | `treeFilterMode` | string | `"default"` | Default filter for `/tree`: `"default"`, `"no-tools"`, `"user-only"`, `"labeled-only"`, `"all"` |
47
+ | `editorPaddingX` | number | `0` | Horizontal padding for input editor (0-3) |
48
+ | `autocompleteMaxVisible` | number | `5` | Max visible items in autocomplete dropdown (3-20) |
49
+ | `showHardwareCursor` | boolean | `false` | Show terminal cursor |
50
+
51
+ ### Telemetry and update checks
52
+
53
+ `enableInstallTelemetry` only controls the anonymous install/update ping to `https://pi.dev/api/report-install`. Opting out of telemetry does not disable update checks; Pi can still fetch `https://pi.dev/api/latest-version` to look for the latest version.
54
+
55
+ Set `PI_SKIP_VERSION_CHECK=1` to disable the Pi version update check. Use `--offline` or `PI_OFFLINE=1` to disable all startup network operations described here, including update checks, package update checks, and install/update telemetry.
56
+
57
+ ### Warnings
58
+
59
+ | Setting | Type | Default | Description |
60
+ |---------|------|---------|-------------|
61
+ | `warnings.anthropicExtraUsage` | boolean | `true` | Show a warning when Anthropic subscription auth may use paid extra usage |
62
+
63
+ ```json
64
+ {
65
+ "warnings": {
66
+ "anthropicExtraUsage": false
67
+ }
68
+ }
69
+ ```
70
+
71
+ ### Compaction
72
+
73
+ | Setting | Type | Default | Description |
74
+ |---------|------|---------|-------------|
75
+ | `compaction.enabled` | boolean | `true` | Enable auto-compaction |
76
+ | `compaction.reserveTokens` | number | `16384` | Tokens reserved for LLM response |
77
+ | `compaction.keepRecentTokens` | number | `20000` | Recent tokens to keep (not summarized) |
78
+
79
+ ```json
80
+ {
81
+ "compaction": {
82
+ "enabled": true,
83
+ "reserveTokens": 16384,
84
+ "keepRecentTokens": 20000
85
+ }
86
+ }
87
+ ```
88
+
89
+ ### Branch Summary
90
+
91
+ | Setting | Type | Default | Description |
92
+ |---------|------|---------|-------------|
93
+ | `branchSummary.reserveTokens` | number | `16384` | Tokens reserved for branch summarization |
94
+ | `branchSummary.skipPrompt` | boolean | `false` | Skip "Summarize branch?" prompt on `/tree` navigation (defaults to no summary) |
95
+
96
+ ### Retry
97
+
98
+ | Setting | Type | Default | Description |
99
+ |---------|------|---------|-------------|
100
+ | `retry.enabled` | boolean | `true` | Enable automatic agent-level retry on transient errors |
101
+ | `retry.maxRetries` | number | `3` | Maximum agent-level retry attempts |
102
+ | `retry.baseDelayMs` | number | `2000` | Base delay for agent-level exponential backoff (2s, 4s, 8s) |
103
+ | `retry.provider.timeoutMs` | number | SDK default | Provider/SDK request timeout in milliseconds |
104
+ | `retry.provider.maxRetries` | number | SDK default | Provider/SDK retry attempts |
105
+ | `retry.provider.maxRetryDelayMs` | number | `60000` | Max server-requested delay before failing (60s) |
106
+
107
+ When a provider requests a retry delay longer than `retry.provider.maxRetryDelayMs` (e.g., Google's "quota will reset after 5h"), the request fails immediately with an informative error instead of waiting silently. Set to `0` to disable the cap.
108
+
109
+ ```json
110
+ {
111
+ "retry": {
112
+ "enabled": true,
113
+ "maxRetries": 3,
114
+ "baseDelayMs": 2000,
115
+ "provider": {
116
+ "timeoutMs": 3600000,
117
+ "maxRetries": 0,
118
+ "maxRetryDelayMs": 60000
119
+ }
120
+ }
121
+ }
122
+ ```
123
+
124
+ ### Message Delivery
125
+
126
+ | Setting | Type | Default | Description |
127
+ |---------|------|---------|-------------|
128
+ | `steeringMode` | string | `"one-at-a-time"` | How steering messages are sent: `"all"` or `"one-at-a-time"` |
129
+ | `followUpMode` | string | `"one-at-a-time"` | How follow-up messages are sent: `"all"` or `"one-at-a-time"` |
130
+ | `transport` | string | `"sse"` | Preferred transport for providers that support multiple transports: `"sse"`, `"websocket"`, or `"auto"` |
131
+
132
+ ### Terminal & Images
133
+
134
+ | Setting | Type | Default | Description |
135
+ |---------|------|---------|-------------|
136
+ | `terminal.showImages` | boolean | `true` | Show images in terminal (if supported) |
137
+ | `terminal.imageWidthCells` | number | `60` | Preferred inline image width in terminal cells |
138
+ | `terminal.clearOnShrink` | boolean | `false` | Clear empty rows when content shrinks (can cause flicker) |
139
+ | `images.autoResize` | boolean | `true` | Resize images to 2000x2000 max |
140
+ | `images.blockImages` | boolean | `false` | Block all images from being sent to LLM |
141
+
142
+ ### Shell
143
+
144
+ | Setting | Type | Default | Description |
145
+ |---------|------|---------|-------------|
146
+ | `shellPath` | string | - | Custom shell path (e.g., for Cygwin on Windows) |
147
+ | `shellCommandPrefix` | string | - | Prefix for every bash command (e.g., `"shopt -s expand_aliases"`) |
148
+ | `npmCommand` | string[] | - | Command argv used for npm package lookup/install operations (e.g., `["mise", "exec", "node@20", "--", "npm"]`) |
149
+
150
+ ```json
151
+ {
152
+ "npmCommand": ["mise", "exec", "node@20", "--", "npm"]
153
+ }
154
+ ```
155
+
156
+ `npmCommand` is used for all npm package-manager operations, including installs, uninstalls, and dependency installs inside git packages. User-scoped npm packages install under `~/.pi/agent/npm/`; project-scoped npm packages install under `.pi/npm/`. Use argv-style entries exactly as the process should be launched. When `npmCommand` is configured, git package dependency installs use plain `install` to avoid npm-specific flags in wrappers or alternate package managers.
157
+
158
+ ### Sessions
159
+
160
+ | Setting | Type | Default | Description |
161
+ |---------|------|---------|-------------|
162
+ | `sessionDir` | string | - | Directory where session files are stored. Accepts absolute or relative paths, plus `~`. |
163
+
164
+ ```json
165
+ { "sessionDir": ".pi/sessions" }
166
+ ```
167
+
168
+ When multiple sources specify a session directory, precedence is `--session-dir`, `PI_CODING_AGENT_SESSION_DIR`, then `sessionDir` in settings.json.
169
+
170
+ ### Model Cycling
171
+
172
+ | Setting | Type | Default | Description |
173
+ |---------|------|---------|-------------|
174
+ | `enabledModels` | string[] | - | Model patterns for Ctrl+P cycling (same format as `--models` CLI flag) |
175
+
176
+ ```json
177
+ {
178
+ "enabledModels": ["claude-*", "gpt-4o", "gemini-2*"]
179
+ }
180
+ ```
181
+
182
+ ### Markdown
183
+
184
+ | Setting | Type | Default | Description |
185
+ |---------|------|---------|-------------|
186
+ | `markdown.codeBlockIndent` | string | `" "` | Indentation for code blocks |
187
+
188
+ ### Resources
189
+
190
+ These settings define where to load extensions, skills, prompts, and themes from.
191
+
192
+ Paths in `~/.pi/agent/settings.json` resolve relative to `~/.pi/agent`. Paths in `.pi/settings.json` resolve relative to `.pi`. Absolute paths and `~` are supported.
193
+
194
+ | Setting | Type | Default | Description |
195
+ |---------|------|---------|-------------|
196
+ | `packages` | array | `[]` | npm/git packages to load resources from |
197
+ | `extensions` | string[] | `[]` | Local extension file paths or directories |
198
+ | `skills` | string[] | `[]` | Local skill file paths or directories |
199
+ | `prompts` | string[] | `[]` | Local prompt template paths or directories |
200
+ | `themes` | string[] | `[]` | Local theme file paths or directories |
201
+ | `enableSkillCommands` | boolean | `true` | Register skills as `/skill:name` commands |
202
+
203
+ Arrays support glob patterns and exclusions. Use `!pattern` to exclude. Use `+path` to force-include an exact path and `-path` to force-exclude an exact path.
204
+
205
+ #### packages
206
+
207
+ String form loads all resources from a package:
208
+
209
+ ```json
210
+ {
211
+ "packages": ["pi-skills", "@org/my-extension"]
212
+ }
213
+ ```
214
+
215
+ Object form filters which resources to load:
216
+
217
+ ```json
218
+ {
219
+ "packages": [
220
+ {
221
+ "source": "pi-skills",
222
+ "skills": ["brave-search", "transcribe"],
223
+ "extensions": []
224
+ }
225
+ ]
226
+ }
227
+ ```
228
+
229
+ See [packages.md](packages.md) for package management details.
230
+
231
+ ## Example
232
+
233
+ ```json
234
+ {
235
+ "defaultProvider": "anthropic",
236
+ "defaultModel": "claude-sonnet-4-20250514",
237
+ "defaultThinkingLevel": "medium",
238
+ "theme": "dark",
239
+ "compaction": {
240
+ "enabled": true,
241
+ "reserveTokens": 16384,
242
+ "keepRecentTokens": 20000
243
+ },
244
+ "retry": {
245
+ "enabled": true,
246
+ "maxRetries": 3
247
+ },
248
+ "enabledModels": ["claude-*", "gpt-4o"],
249
+ "warnings": {
250
+ "anthropicExtraUsage": true
251
+ },
252
+ "packages": ["pi-skills"]
253
+ }
254
+ ```
255
+
256
+ ## Project Overrides
257
+
258
+ Project settings (`.pi/settings.json`) override global settings. Nested objects are merged:
259
+
260
+ ```json
261
+ // ~/.pi/agent/settings.json (global)
262
+ {
263
+ "theme": "dark",
264
+ "compaction": { "enabled": true, "reserveTokens": 16384 }
265
+ }
266
+
267
+ // .pi/settings.json (project)
268
+ {
269
+ "compaction": { "reserveTokens": 8192 }
270
+ }
271
+
272
+ // Result
273
+ {
274
+ "theme": "dark",
275
+ "compaction": { "enabled": true, "reserveTokens": 8192 }
276
+ }
277
+ ```
@@ -0,0 +1,13 @@
1
+ # Shell Aliases
2
+
3
+ Pi runs bash in non-interactive mode (`bash -c`), which doesn't expand aliases by default.
4
+
5
+ To enable your shell aliases, add to `~/.pi/agent/settings.json`:
6
+
7
+ ```json
8
+ {
9
+ "shellCommandPrefix": "shopt -s expand_aliases\neval \"$(grep '^alias ' ~/.zshrc)\""
10
+ }
11
+ ```
12
+
13
+ Adjust the path (`~/.zshrc`, `~/.bashrc`, etc.) to match your shell config.
package/docs/skills.md ADDED
@@ -0,0 +1,231 @@
1
+ > pi can create skills. Ask it to build one for your use case.
2
+
3
+ # Skills
4
+
5
+ Skills are self-contained capability packages that the agent loads on-demand. A skill provides specialized workflows, setup instructions, helper scripts, and reference documentation for specific tasks.
6
+
7
+ Pi implements the [Agent Skills standard](https://agentskills.io/specification), warning about most violations but remaining lenient. Pi allows skill names to differ from their parent directory even though the standard disallows it; that rule is suboptimal for shared skill directories used across multiple agent harnesses.
8
+
9
+ ## Table of Contents
10
+
11
+ - [Locations](#locations)
12
+ - [How Skills Work](#how-skills-work)
13
+ - [Skill Commands](#skill-commands)
14
+ - [Skill Structure](#skill-structure)
15
+ - [Frontmatter](#frontmatter)
16
+ - [Validation](#validation)
17
+ - [Example](#example)
18
+ - [Skill Repositories](#skill-repositories)
19
+
20
+ ## Locations
21
+
22
+ > **Security:** Skills can instruct the model to perform any action and may include executable code the model invokes. Review skill content before use.
23
+
24
+ Pi loads skills from:
25
+
26
+ - Global:
27
+ - `~/.pi/agent/skills/`
28
+ - `~/.agents/skills/`
29
+ - Project:
30
+ - `.pi/skills/`
31
+ - `.agents/skills/` in `cwd` and ancestor directories (up to git repo root, or filesystem root when not in a repo)
32
+ - Packages: `skills/` directories or `pi.skills` entries in `package.json`
33
+ - Settings: `skills` array with files or directories
34
+ - CLI: `--skill <path>` (repeatable, additive even with `--no-skills`)
35
+
36
+ Discovery rules:
37
+ - In `~/.pi/agent/skills/` and `.pi/skills/`, direct root `.md` files are discovered as individual skills
38
+ - In all skill locations, directories containing `SKILL.md` are discovered recursively
39
+ - In `~/.agents/skills/` and project `.agents/skills/`, root `.md` files are ignored
40
+
41
+ Disable discovery with `--no-skills` (explicit `--skill` paths still load).
42
+
43
+ ### Using Skills from Other Harnesses
44
+
45
+ To use skills from Claude Code or OpenAI Codex, add their directories to settings:
46
+
47
+ ```json
48
+ {
49
+ "skills": [
50
+ "~/.claude/skills",
51
+ "~/.codex/skills"
52
+ ]
53
+ }
54
+ ```
55
+
56
+ For project-level Claude Code skills, add to `.pi/settings.json`:
57
+
58
+ ```json
59
+ {
60
+ "skills": ["../.claude/skills"]
61
+ }
62
+ ```
63
+
64
+ ## How Skills Work
65
+
66
+ 1. At startup, pi scans skill locations and extracts names and descriptions
67
+ 2. The system prompt includes available skills in XML format per the [specification](https://agentskills.io/integrate-skills)
68
+ 3. When a task matches, the agent uses `read` to load the full SKILL.md (models don't always do this; use prompting or `/skill:name` to force it)
69
+ 4. The agent follows the instructions, using relative paths to reference scripts and assets
70
+
71
+ This is progressive disclosure: only descriptions are always in context, full instructions load on-demand.
72
+
73
+ ## Skill Commands
74
+
75
+ Skills register as `/skill:name` commands:
76
+
77
+ ```bash
78
+ /skill:brave-search # Load and execute the skill
79
+ /skill:pdf-tools extract # Load skill with arguments
80
+ ```
81
+
82
+ Arguments after the command are appended to the skill content as `User: <args>`.
83
+
84
+ Toggle skill commands via `/settings` in interactive mode or in `settings.json`:
85
+
86
+ ```json
87
+ {
88
+ "enableSkillCommands": true
89
+ }
90
+ ```
91
+
92
+ ## Skill Structure
93
+
94
+ A skill is a directory with a `SKILL.md` file. Everything else is freeform.
95
+
96
+ ```
97
+ my-skill/
98
+ ├── SKILL.md # Required: frontmatter + instructions
99
+ ├── scripts/ # Helper scripts
100
+ │ └── process.sh
101
+ ├── references/ # Detailed docs loaded on-demand
102
+ │ └── api-reference.md
103
+ └── assets/
104
+ └── template.json
105
+ ```
106
+
107
+ ### SKILL.md Format
108
+
109
+ ````markdown
110
+ ---
111
+ name: my-skill
112
+ description: What this skill does and when to use it. Be specific.
113
+ ---
114
+
115
+ # My Skill
116
+
117
+ ## Setup
118
+
119
+ Run once before first use:
120
+ ```bash
121
+ cd /path/to/skill && npm install
122
+ ```
123
+
124
+ ## Usage
125
+
126
+ ```bash
127
+ ./scripts/process.sh <input>
128
+ ```
129
+ ````
130
+
131
+ Use relative paths from the skill directory:
132
+
133
+ ```markdown
134
+ See [the reference guide](references/REFERENCE.md) for details.
135
+ ```
136
+
137
+ ## Frontmatter
138
+
139
+ Per the [Agent Skills specification](https://agentskills.io/specification#frontmatter-required):
140
+
141
+ | Field | Required | Description |
142
+ |-------|----------|-------------|
143
+ | `name` | Yes | Max 64 chars. Lowercase a-z, 0-9, hyphens. Unlike the standard, Pi does not require this to match the parent directory because that standard requirement is suboptimal for shared skill directories. |
144
+ | `description` | Yes | Max 1024 chars. What the skill does and when to use it. |
145
+ | `license` | No | License name or reference to bundled file. |
146
+ | `compatibility` | No | Max 500 chars. Environment requirements. |
147
+ | `metadata` | No | Arbitrary key-value mapping. |
148
+ | `allowed-tools` | No | Space-delimited list of pre-approved tools (experimental). |
149
+ | `disable-model-invocation` | No | When `true`, skill is hidden from system prompt. Users must use `/skill:name`. |
150
+
151
+ ### Name Rules
152
+
153
+ - 1-64 characters
154
+ - Lowercase letters, numbers, hyphens only
155
+ - No leading/trailing hyphens
156
+ - No consecutive hyphens
157
+ Pi does not require the name to match the parent directory. The Agent Skills standard does, but that requirement is suboptimal for shared skill directories used by multiple tools.
158
+
159
+ Valid: `pdf-processing`, `data-analysis`, `code-review`
160
+ Invalid: `PDF-Processing`, `-pdf`, `pdf--processing`
161
+
162
+ ### Description Best Practices
163
+
164
+ The description determines when the agent loads the skill. Be specific.
165
+
166
+ Good:
167
+ ```yaml
168
+ description: Extracts text and tables from PDF files, fills PDF forms, and merges multiple PDFs. Use when working with PDF documents.
169
+ ```
170
+
171
+ Poor:
172
+ ```yaml
173
+ description: Helps with PDFs.
174
+ ```
175
+
176
+ ## Validation
177
+
178
+ Pi validates skills against the Agent Skills standard. Most issues produce warnings but still load the skill:
179
+
180
+ - Name exceeds 64 characters or contains invalid characters
181
+ - Name starts/ends with hyphen or has consecutive hyphens
182
+ - Description exceeds 1024 characters
183
+
184
+ Unknown frontmatter fields are ignored.
185
+
186
+ **Exception:** Skills with missing description are not loaded.
187
+
188
+ Name collisions (same name from different locations) warn and keep the first skill found.
189
+
190
+ ## Example
191
+
192
+ ```
193
+ brave-search/
194
+ ├── SKILL.md
195
+ ├── search.js
196
+ └── content.js
197
+ ```
198
+
199
+ **SKILL.md:**
200
+ ````markdown
201
+ ---
202
+ name: brave-search
203
+ description: Web search and content extraction via Brave Search API. Use for searching documentation, facts, or any web content.
204
+ ---
205
+
206
+ # Brave Search
207
+
208
+ ## Setup
209
+
210
+ ```bash
211
+ cd /path/to/brave-search && npm install
212
+ ```
213
+
214
+ ## Search
215
+
216
+ ```bash
217
+ ./search.js "query" # Basic search
218
+ ./search.js "query" --content # Include page content
219
+ ```
220
+
221
+ ## Extract Page Content
222
+
223
+ ```bash
224
+ ./content.js https://example.com
225
+ ```
226
+ ````
227
+
228
+ ## Skill Repositories
229
+
230
+ - [Anthropic Skills](https://github.com/anthropics/skills) - Document processing (docx, pdf, pptx, xlsx), web development
231
+ - [Pi Skills](https://github.com/badlogic/pi-skills) - Web search, browser automation, Google APIs, transcription