@code-yeongyu/senpi 2026.6.6-3 → 2026.6.10-2

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 (342) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +102 -100
  3. package/dist/cli/args.d.ts.map +1 -1
  4. package/dist/cli/args.js +1 -2
  5. package/dist/cli/args.js.map +1 -1
  6. package/dist/cli/project-trust.d.ts +10 -0
  7. package/dist/cli/project-trust.d.ts.map +1 -0
  8. package/dist/cli/project-trust.js +48 -0
  9. package/dist/cli/project-trust.js.map +1 -0
  10. package/dist/cli/startup-ui.d.ts +7 -0
  11. package/dist/cli/startup-ui.d.ts.map +1 -0
  12. package/dist/cli/startup-ui.js +59 -0
  13. package/dist/cli/startup-ui.js.map +1 -0
  14. package/dist/cli.js +10 -1
  15. package/dist/cli.js.map +1 -1
  16. package/dist/core/agent-session-runtime.d.ts +3 -1
  17. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  18. package/dist/core/agent-session-runtime.js +4 -1
  19. package/dist/core/agent-session-runtime.js.map +1 -1
  20. package/dist/core/agent-session-services.d.ts +2 -1
  21. package/dist/core/agent-session-services.d.ts.map +1 -1
  22. package/dist/core/agent-session-services.js +2 -2
  23. package/dist/core/agent-session-services.js.map +1 -1
  24. package/dist/core/agent-session.d.ts +1 -0
  25. package/dist/core/agent-session.d.ts.map +1 -1
  26. package/dist/core/agent-session.js +6 -0
  27. package/dist/core/agent-session.js.map +1 -1
  28. package/dist/core/compaction/utils.d.ts +1 -1
  29. package/dist/core/compaction/utils.d.ts.map +1 -1
  30. package/dist/core/compaction/utils.js +1 -1
  31. package/dist/core/compaction/utils.js.map +1 -1
  32. package/dist/core/extensions/builtin/compaction/degradation-monitor.d.ts +0 -1
  33. package/dist/core/extensions/builtin/compaction/degradation-monitor.d.ts.map +1 -1
  34. package/dist/core/extensions/builtin/compaction/degradation-monitor.js +0 -1
  35. package/dist/core/extensions/builtin/compaction/degradation-monitor.js.map +1 -1
  36. package/dist/core/extensions/builtin/compaction/index.d.ts.map +1 -1
  37. package/dist/core/extensions/builtin/compaction/index.js +4 -4
  38. package/dist/core/extensions/builtin/compaction/index.js.map +1 -1
  39. package/dist/core/extensions/builtin/compaction/policy.d.ts +0 -5
  40. package/dist/core/extensions/builtin/compaction/policy.d.ts.map +1 -1
  41. package/dist/core/extensions/builtin/compaction/policy.js +0 -4
  42. package/dist/core/extensions/builtin/compaction/policy.js.map +1 -1
  43. package/dist/core/extensions/builtin/compaction/speculative.d.ts +0 -6
  44. package/dist/core/extensions/builtin/compaction/speculative.d.ts.map +1 -1
  45. package/dist/core/extensions/builtin/compaction/speculative.js +0 -3
  46. package/dist/core/extensions/builtin/compaction/speculative.js.map +1 -1
  47. package/dist/core/extensions/builtin/gpt-apply-patch/extension.d.ts +1 -1
  48. package/dist/core/extensions/builtin/gpt-apply-patch/extension.d.ts.map +1 -1
  49. package/dist/core/extensions/builtin/gpt-apply-patch/extension.js +10 -2
  50. package/dist/core/extensions/builtin/gpt-apply-patch/extension.js.map +1 -1
  51. package/dist/core/extensions/builtin/permission-system/cli.d.ts +0 -3
  52. package/dist/core/extensions/builtin/permission-system/cli.d.ts.map +1 -1
  53. package/dist/core/extensions/builtin/permission-system/cli.js +0 -13
  54. package/dist/core/extensions/builtin/permission-system/cli.js.map +1 -1
  55. package/dist/core/extensions/builtin/todotools/index.d.ts.map +1 -1
  56. package/dist/core/extensions/builtin/todotools/index.js +0 -2
  57. package/dist/core/extensions/builtin/todotools/index.js.map +1 -1
  58. package/dist/core/extensions/builtin/todotools/prompt.d.ts +1 -1
  59. package/dist/core/extensions/builtin/todotools/prompt.d.ts.map +1 -1
  60. package/dist/core/extensions/builtin/todotools/prompt.js +0 -2
  61. package/dist/core/extensions/builtin/todotools/prompt.js.map +1 -1
  62. package/dist/core/extensions/index.d.ts +1 -1
  63. package/dist/core/extensions/index.d.ts.map +1 -1
  64. package/dist/core/extensions/index.js.map +1 -1
  65. package/dist/core/extensions/loader.d.ts +1 -1
  66. package/dist/core/extensions/loader.d.ts.map +1 -1
  67. package/dist/core/extensions/loader.js +4 -4
  68. package/dist/core/extensions/loader.js.map +1 -1
  69. package/dist/core/extensions/runner.d.ts +7 -2
  70. package/dist/core/extensions/runner.d.ts.map +1 -1
  71. package/dist/core/extensions/runner.js +34 -0
  72. package/dist/core/extensions/runner.js.map +1 -1
  73. package/dist/core/extensions/types.d.ts +21 -1
  74. package/dist/core/extensions/types.d.ts.map +1 -1
  75. package/dist/core/extensions/types.js.map +1 -1
  76. package/dist/core/model-registry.d.ts +3 -4
  77. package/dist/core/model-registry.d.ts.map +1 -1
  78. package/dist/core/model-registry.js +23 -6
  79. package/dist/core/model-registry.js.map +1 -1
  80. package/dist/core/project-trust.d.ts +15 -0
  81. package/dist/core/project-trust.d.ts.map +1 -0
  82. package/dist/core/project-trust.js +58 -0
  83. package/dist/core/project-trust.js.map +1 -0
  84. package/dist/core/prompt-templates.d.ts +2 -1
  85. package/dist/core/prompt-templates.d.ts.map +1 -1
  86. package/dist/core/prompt-templates.js +24 -26
  87. package/dist/core/prompt-templates.js.map +1 -1
  88. package/dist/core/resolve-config-value.d.ts +0 -4
  89. package/dist/core/resolve-config-value.d.ts.map +1 -1
  90. package/dist/core/resolve-config-value.js +0 -15
  91. package/dist/core/resolve-config-value.js.map +1 -1
  92. package/dist/core/resource-loader.d.ts +14 -3
  93. package/dist/core/resource-loader.d.ts.map +1 -1
  94. package/dist/core/resource-loader.js +128 -58
  95. package/dist/core/resource-loader.js.map +1 -1
  96. package/dist/core/session-manager.d.ts +3 -0
  97. package/dist/core/session-manager.d.ts.map +1 -1
  98. package/dist/core/session-manager.js +34 -17
  99. package/dist/core/session-manager.js.map +1 -1
  100. package/dist/core/session-resident-store.d.ts +16 -0
  101. package/dist/core/session-resident-store.d.ts.map +1 -0
  102. package/dist/core/session-resident-store.js +48 -0
  103. package/dist/core/session-resident-store.js.map +1 -0
  104. package/dist/core/settings-manager.d.ts +4 -0
  105. package/dist/core/settings-manager.d.ts.map +1 -1
  106. package/dist/core/settings-manager.js +9 -0
  107. package/dist/core/settings-manager.js.map +1 -1
  108. package/dist/core/tools/edit-diff.d.ts +0 -5
  109. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  110. package/dist/core/tools/edit-diff.js +0 -7
  111. package/dist/core/tools/edit-diff.js.map +1 -1
  112. package/dist/core/tools/index.d.ts +0 -5
  113. package/dist/core/tools/index.d.ts.map +1 -1
  114. package/dist/core/tools/index.js +0 -67
  115. package/dist/core/tools/index.js.map +1 -1
  116. package/dist/core/trust-manager.d.ts +22 -0
  117. package/dist/core/trust-manager.d.ts.map +1 -1
  118. package/dist/core/trust-manager.js +75 -22
  119. package/dist/core/trust-manager.js.map +1 -1
  120. package/dist/index.d.ts +5 -5
  121. package/dist/index.d.ts.map +1 -1
  122. package/dist/index.js +2 -2
  123. package/dist/index.js.map +1 -1
  124. package/dist/main.d.ts.map +1 -1
  125. package/dist/main.js +92 -129
  126. package/dist/main.js.map +1 -1
  127. package/dist/migrations.d.ts.map +1 -1
  128. package/dist/migrations.js +39 -34
  129. package/dist/migrations.js.map +1 -1
  130. package/dist/modes/index.d.ts +1 -1
  131. package/dist/modes/index.d.ts.map +1 -1
  132. package/dist/modes/index.js.map +1 -1
  133. package/dist/modes/interactive/components/login-dialog.d.ts +1 -0
  134. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  135. package/dist/modes/interactive/components/login-dialog.js +7 -1
  136. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  137. package/dist/modes/interactive/components/settings-selector.d.ts +3 -1
  138. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  139. package/dist/modes/interactive/components/settings-selector.js +20 -0
  140. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  141. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  142. package/dist/modes/interactive/components/tool-execution.js +26 -4
  143. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  144. package/dist/modes/interactive/components/trust-selector.d.ts +6 -3
  145. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -1
  146. package/dist/modes/interactive/components/trust-selector.js +22 -18
  147. package/dist/modes/interactive/components/trust-selector.js.map +1 -1
  148. package/dist/modes/interactive/interactive-mode.d.ts +15 -0
  149. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  150. package/dist/modes/interactive/interactive-mode.js +158 -19
  151. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  152. package/dist/modes/interactive/theme/theme.d.ts +0 -4
  153. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  154. package/dist/modes/interactive/theme/theme.js +0 -7
  155. package/dist/modes/interactive/theme/theme.js.map +1 -1
  156. package/dist/modes/interactive/working-status.d.ts +2 -0
  157. package/dist/modes/interactive/working-status.d.ts.map +1 -1
  158. package/dist/modes/interactive/working-status.js +34 -0
  159. package/dist/modes/interactive/working-status.js.map +1 -1
  160. package/dist/modes/rpc/rpc-types.d.ts +0 -1
  161. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  162. package/dist/modes/rpc/rpc-types.js.map +1 -1
  163. package/dist/package-manager-cli.d.ts +6 -2
  164. package/dist/package-manager-cli.d.ts.map +1 -1
  165. package/dist/package-manager-cli.js +58 -11
  166. package/dist/package-manager-cli.js.map +1 -1
  167. package/dist/senpi +10 -1
  168. package/dist/utils/changelog.d.ts +1 -0
  169. package/dist/utils/changelog.d.ts.map +1 -1
  170. package/dist/utils/changelog.js +78 -0
  171. package/dist/utils/changelog.js.map +1 -1
  172. package/docs/compaction-guide.md +9 -9
  173. package/docs/compaction.md +2 -2
  174. package/docs/containerization.md +22 -22
  175. package/docs/custom-provider.md +13 -13
  176. package/docs/development.md +4 -2
  177. package/docs/docs.json +4 -0
  178. package/docs/extensions.md +46 -18
  179. package/docs/index.md +5 -4
  180. package/docs/json.md +21 -15
  181. package/docs/keybindings.md +6 -3
  182. package/docs/models.md +10 -43
  183. package/docs/packages.md +11 -13
  184. package/docs/prompt-templates.md +10 -3
  185. package/docs/providers.md +9 -9
  186. package/docs/rpc.md +14 -13
  187. package/docs/sdk.md +18 -9
  188. package/docs/security.md +55 -0
  189. package/docs/session-format.md +4 -4
  190. package/docs/sessions.md +14 -14
  191. package/docs/settings.md +14 -11
  192. package/docs/skills.md +8 -8
  193. package/docs/terminal-setup.md +38 -4
  194. package/docs/termux.md +3 -3
  195. package/docs/tmux.md +4 -2
  196. package/docs/tui.md +4 -4
  197. package/docs/usage.md +55 -57
  198. package/examples/extensions/README.md +1 -0
  199. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  200. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  201. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  202. package/examples/extensions/gondolin/package-lock.json +2 -2
  203. package/examples/extensions/gondolin/package.json +1 -1
  204. package/examples/extensions/project-trust.ts +64 -0
  205. package/examples/extensions/sandbox/package-lock.json +2 -2
  206. package/examples/extensions/sandbox/package.json +1 -1
  207. package/examples/extensions/with-deps/package-lock.json +2 -2
  208. package/examples/extensions/with-deps/package.json +1 -1
  209. package/node_modules/@earendil-works/pi-agent-core/README.md +4 -3
  210. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js +125 -77
  211. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js.map +1 -1
  212. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts +1 -1
  213. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts.map +1 -1
  214. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js +1 -1
  215. package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js.map +1 -1
  216. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts +0 -2
  217. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts.map +1 -1
  218. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.js +0 -4
  219. package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.js.map +1 -1
  220. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts +7 -4
  221. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts.map +1 -1
  222. package/node_modules/@earendil-works/pi-agent-core/dist/types.js.map +1 -1
  223. package/node_modules/@earendil-works/pi-agent-core/package.json +2 -2
  224. package/node_modules/@earendil-works/pi-ai/README.md +4 -5
  225. package/node_modules/@earendil-works/pi-ai/dist/api-registry.d.ts +0 -1
  226. package/node_modules/@earendil-works/pi-ai/dist/api-registry.d.ts.map +1 -1
  227. package/node_modules/@earendil-works/pi-ai/dist/api-registry.js +0 -3
  228. package/node_modules/@earendil-works/pi-ai/dist/api-registry.js.map +1 -1
  229. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts +2 -2
  230. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js +6 -6
  231. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js.map +1 -1
  232. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +355 -313
  233. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts.map +1 -1
  234. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +376 -431
  235. package/node_modules/@earendil-works/pi-ai/dist/models.generated.js.map +1 -1
  236. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.d.ts.map +1 -1
  237. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js +15 -7
  238. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js.map +1 -1
  239. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.d.ts +1 -1
  240. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
  241. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js +17 -7
  242. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js.map +1 -1
  243. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.js +1 -0
  244. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.js.map +1 -1
  245. package/node_modules/@earendil-works/pi-ai/dist/providers/google-shared.d.ts +0 -4
  246. package/node_modules/@earendil-works/pi-ai/dist/providers/google-shared.d.ts.map +1 -1
  247. package/node_modules/@earendil-works/pi-ai/dist/providers/google-shared.js +0 -13
  248. package/node_modules/@earendil-works/pi-ai/dist/providers/google-shared.js.map +1 -1
  249. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.d.ts.map +1 -1
  250. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.js +4 -3
  251. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.js.map +1 -1
  252. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.d.ts.map +1 -1
  253. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.js +2 -1
  254. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.js.map +1 -1
  255. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.d.ts.map +1 -1
  256. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.js +3 -2
  257. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.js.map +1 -1
  258. package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.d.ts +1 -7
  259. package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.d.ts.map +1 -1
  260. package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.js +2 -16
  261. package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.js.map +1 -1
  262. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +5 -1
  263. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
  264. package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
  265. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts +0 -4
  266. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts.map +1 -1
  267. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js +0 -6
  268. package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js.map +1 -1
  269. package/node_modules/@earendil-works/pi-ai/package.json +1 -1
  270. package/node_modules/@earendil-works/pi-tui/README.md +1 -2
  271. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts +2 -0
  272. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts.map +1 -1
  273. package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js.map +1 -1
  274. package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts +6 -1
  275. package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts.map +1 -1
  276. package/node_modules/@earendil-works/pi-tui/dist/components/editor.js +89 -39
  277. package/node_modules/@earendil-works/pi-tui/dist/components/editor.js.map +1 -1
  278. package/node_modules/@earendil-works/pi-tui/dist/components/loader.d.ts +5 -0
  279. package/node_modules/@earendil-works/pi-tui/dist/components/loader.d.ts.map +1 -1
  280. package/node_modules/@earendil-works/pi-tui/dist/components/loader.js +18 -4
  281. package/node_modules/@earendil-works/pi-tui/dist/components/loader.js.map +1 -1
  282. package/node_modules/@earendil-works/pi-tui/dist/fuzzy.d.ts.map +1 -1
  283. package/node_modules/@earendil-works/pi-tui/dist/fuzzy.js +131 -61
  284. package/node_modules/@earendil-works/pi-tui/dist/fuzzy.js.map +1 -1
  285. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts +1 -1
  286. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts.map +1 -1
  287. package/node_modules/@earendil-works/pi-tui/dist/index.js +1 -1
  288. package/node_modules/@earendil-works/pi-tui/dist/index.js.map +1 -1
  289. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts +0 -1
  290. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts.map +1 -1
  291. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js +4 -7
  292. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js.map +1 -1
  293. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts +4 -7
  294. package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts.map +1 -1
  295. package/node_modules/@earendil-works/pi-tui/dist/terminal.js +38 -76
  296. package/node_modules/@earendil-works/pi-tui/dist/terminal.js.map +1 -1
  297. package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts.map +1 -1
  298. package/node_modules/@earendil-works/pi-tui/dist/tui.js +14 -4
  299. package/node_modules/@earendil-works/pi-tui/dist/tui.js.map +1 -1
  300. package/node_modules/@earendil-works/pi-tui/dist/utils.d.ts +0 -4
  301. package/node_modules/@earendil-works/pi-tui/dist/utils.d.ts.map +1 -1
  302. package/node_modules/@earendil-works/pi-tui/dist/utils.js +43 -21
  303. package/node_modules/@earendil-works/pi-tui/dist/utils.js.map +1 -1
  304. package/node_modules/@earendil-works/pi-tui/package.json +1 -1
  305. package/npm-shrinkwrap.json +12 -12
  306. package/package.json +4 -8
  307. package/dist/core/extensions/builtin/compaction/overflow-detection.d.ts +0 -11
  308. package/dist/core/extensions/builtin/compaction/overflow-detection.d.ts.map +0 -1
  309. package/dist/core/extensions/builtin/compaction/overflow-detection.js +0 -40
  310. package/dist/core/extensions/builtin/compaction/overflow-detection.js.map +0 -1
  311. package/dist/core/extensions/builtin/system-messages.d.ts +0 -47
  312. package/dist/core/extensions/builtin/system-messages.d.ts.map +0 -1
  313. package/dist/core/extensions/builtin/system-messages.js +0 -117
  314. package/dist/core/extensions/builtin/system-messages.js.map +0 -1
  315. package/dist/core/extensions/builtin/todotools/continuation/config.d.ts +0 -10
  316. package/dist/core/extensions/builtin/todotools/continuation/config.d.ts.map +0 -1
  317. package/dist/core/extensions/builtin/todotools/continuation/config.js +0 -33
  318. package/dist/core/extensions/builtin/todotools/continuation/config.js.map +0 -1
  319. package/dist/core/extensions/builtin/todotools/continuation/index.d.ts +0 -2
  320. package/dist/core/extensions/builtin/todotools/continuation/index.d.ts.map +0 -1
  321. package/dist/core/extensions/builtin/todotools/continuation/index.js +0 -2
  322. package/dist/core/extensions/builtin/todotools/continuation/index.js.map +0 -1
  323. package/dist/core/extensions/builtin/todotools/continuation/prompt.d.ts +0 -5
  324. package/dist/core/extensions/builtin/todotools/continuation/prompt.d.ts.map +0 -1
  325. package/dist/core/extensions/builtin/todotools/continuation/prompt.js +0 -34
  326. package/dist/core/extensions/builtin/todotools/continuation/prompt.js.map +0 -1
  327. package/dist/core/extensions/builtin/todotools/continuation/runtime.d.ts +0 -11
  328. package/dist/core/extensions/builtin/todotools/continuation/runtime.d.ts.map +0 -1
  329. package/dist/core/extensions/builtin/todotools/continuation/runtime.js +0 -201
  330. package/dist/core/extensions/builtin/todotools/continuation/runtime.js.map +0 -1
  331. package/dist/core/extensions/builtin/todotools/settings.d.ts +0 -6
  332. package/dist/core/extensions/builtin/todotools/settings.d.ts.map +0 -1
  333. package/dist/core/extensions/builtin/todotools/settings.js +0 -58
  334. package/dist/core/extensions/builtin/todotools/settings.js.map +0 -1
  335. package/dist/core/extensions/builtin/todotools/system-messages.d.ts +0 -34
  336. package/dist/core/extensions/builtin/todotools/system-messages.d.ts.map +0 -1
  337. package/dist/core/extensions/builtin/todotools/system-messages.js +0 -82
  338. package/dist/core/extensions/builtin/todotools/system-messages.js.map +0 -1
  339. package/dist/core/index.d.ts +0 -12
  340. package/dist/core/index.d.ts.map +0 -1
  341. package/dist/core/index.js +0 -12
  342. package/dist/core/index.js.map +0 -1
package/dist/main.js CHANGED
@@ -6,13 +6,14 @@
6
6
  */
7
7
  import { createInterface } from "node:readline";
8
8
  import { modelsAreEqual } from "@earendil-works/pi-ai";
9
- import { ProcessTerminal, setKeybindings, TUI } from "@earendil-works/pi-tui";
10
9
  import chalk from "chalk";
11
10
  import { parseArgs, printHelp } from "./cli/args.js";
12
11
  import { processFileArguments } from "./cli/file-processor.js";
13
12
  import { buildInitialMessage } from "./cli/initial-message.js";
14
13
  import { listModels } from "./cli/list-models.js";
14
+ import { createProjectTrustContext } from "./cli/project-trust.js";
15
15
  import { selectSession } from "./cli/session-picker.js";
16
+ import { showStartupSelector } from "./cli/startup-ui.js";
16
17
  import { ENV_SESSION_DIR, expandTildePath, getAgentDir, getPackageDir, VERSION } from "./config.js";
17
18
  import { createAgentSessionRuntime } from "./core/agent-session-runtime.js";
18
19
  import { createAgentSessionFromServices, createAgentSessionServices, } from "./core/agent-session-services.js";
@@ -20,9 +21,9 @@ import { formatNoModelsAvailableMessage } from "./core/auth-guidance.js";
20
21
  import { AuthStorage } from "./core/auth-storage.js";
21
22
  import { exportFromFile } from "./core/export-html/index.js";
22
23
  import { configureHttpDispatcher } from "./core/http-dispatcher.js";
23
- import { KeybindingsManager } from "./core/keybindings.js";
24
24
  import { getModelNarrowingPatterns, resolveCliModel, resolveModelScope, } from "./core/model-resolver.js";
25
25
  import { restoreStdout, takeOverStdout } from "./core/output-guard.js";
26
+ import { resolveProjectTrusted } from "./core/project-trust.js";
26
27
  import { formatMissingSessionCwdPrompt, getMissingSessionCwdIssue, MissingSessionCwdError, } from "./core/session-cwd.js";
27
28
  import { assertValidSessionId, SessionManager } from "./core/session-manager.js";
28
29
  import { SettingsManager } from "./core/settings-manager.js";
@@ -30,7 +31,6 @@ import { printTimings, resetTimings, time } from "./core/timings.js";
30
31
  import { hasProjectTrustInputs, ProjectTrustStore } from "./core/trust-manager.js";
31
32
  import { runMigrations, showDeprecationWarnings } from "./migrations.js";
32
33
  import { InteractiveMode, runPrintMode, runRpcMode } from "./modes/index.js";
33
- import { ExtensionSelectorComponent } from "./modes/interactive/components/extension-selector.js";
34
34
  import { initTheme, stopThemeWatcher } from "./modes/interactive/theme/theme.js";
35
35
  import { handleConfigCommand, handlePackageCommand } from "./package-manager-cli.js";
36
36
  import { isLocalPath, normalizePath, resolvePath } from "./utils/paths.js";
@@ -74,14 +74,14 @@ function isTruthyEnvFlag(value) {
74
74
  return false;
75
75
  return value === "1" || value.toLowerCase() === "true" || value.toLowerCase() === "yes";
76
76
  }
77
- function resolveAppMode(parsed, stdinIsTTY) {
77
+ function resolveAppMode(parsed, stdinIsTTY, stdoutIsTTY) {
78
78
  if (parsed.mode === "rpc") {
79
79
  return "rpc";
80
80
  }
81
81
  if (parsed.mode === "json") {
82
82
  return "json";
83
83
  }
84
- if (parsed.print || !stdinIsTTY) {
84
+ if (parsed.print || !stdinIsTTY || !stdoutIsTTY) {
85
85
  return "print";
86
86
  }
87
87
  return "interactive";
@@ -89,6 +89,9 @@ function resolveAppMode(parsed, stdinIsTTY) {
89
89
  function toPrintOutputMode(appMode) {
90
90
  return appMode === "json" ? "json" : "text";
91
91
  }
92
+ function isPlainRuntimeMetadataCommand(parsed) {
93
+ return !parsed.print && parsed.mode === undefined && (parsed.help === true || parsed.listModels !== undefined);
94
+ }
92
95
  async function prepareInitialMessage(parsed, autoResizeImages, stdinContent) {
93
96
  if (parsed.fileArgs.length === 0) {
94
97
  return buildInitialMessage({ parsed, stdinContent });
@@ -106,16 +109,9 @@ async function prepareInitialMessage(parsed, autoResizeImages, stdinContent) {
106
109
  * If it looks like a path, use as-is. Otherwise try to match as session ID prefix.
107
110
  */
108
111
  async function findLocalSessionByExactId(sessionId, cwd, sessionDir) {
109
- const localSessions = await SessionManager.list(cwd, sessionDir);
112
+ const localSessions = sessionDir ? await SessionManager.listAll(sessionDir) : await SessionManager.list(cwd);
110
113
  const localMatch = localSessions.find((s) => s.id === sessionId);
111
- if (localMatch) {
112
- return { type: "local", path: localMatch.path };
113
- }
114
- if (!sessionDir) {
115
- return undefined;
116
- }
117
- const customDirMatch = (await SessionManager.listAll(sessionDir)).find((s) => s.id === sessionId);
118
- return customDirMatch ? { type: "local", path: customDirMatch.path } : undefined;
114
+ return localMatch ? { type: "local", path: localMatch.path } : undefined;
119
115
  }
120
116
  async function resolveSessionPath(sessionArg, cwd, sessionDir) {
121
117
  // If it looks like a file path, resolve it before handing it to the session manager.
@@ -318,14 +314,13 @@ function buildSessionOptions(parsed, scopedModels, hasExistingSession, modelRegi
318
314
  if (parsed.thinking) {
319
315
  options.thinkingLevel = parsed.thinking;
320
316
  }
321
- // Global model catalog narrowing
317
+ // Scoped models for Ctrl+P cycling
322
318
  // Keep thinking level undefined when not explicitly set in the model pattern.
323
- // Undefined means "inherit current session thinking level" when selecting the narrowed model.
319
+ // Undefined means "inherit current session thinking level" during cycling.
324
320
  if (scopedModels.length > 0) {
325
321
  options.scopedModels = scopedModels.map((sm) => ({
326
322
  model: sm.model,
327
323
  thinkingLevel: sm.thinkingLevel,
328
- serviceTier: sm.serviceTier,
329
324
  }));
330
325
  }
331
326
  // API key from CLI - set in authStorage
@@ -348,64 +343,12 @@ function buildSessionOptions(parsed, scopedModels, hasExistingSession, modelRegi
348
343
  function resolveCliPaths(cwd, paths) {
349
344
  return paths?.map((value) => (isLocalPath(value) ? resolvePath(value, cwd) : value));
350
345
  }
351
- async function showStartupSelector(settingsManager, title, options) {
352
- initTheme(settingsManager.getTheme());
353
- setKeybindings(KeybindingsManager.create());
354
- return new Promise((resolve) => {
355
- const ui = new TUI(new ProcessTerminal(), settingsManager.getShowHardwareCursor());
356
- ui.setClearOnShrink(settingsManager.getClearOnShrink());
357
- let settled = false;
358
- const finish = (result) => {
359
- if (settled) {
360
- return;
361
- }
362
- settled = true;
363
- ui.stop();
364
- resolve(result);
365
- };
366
- const selector = new ExtensionSelectorComponent(title, options.map((option) => option.label), (option) => finish(options.find((entry) => entry.label === option)?.value), () => finish(undefined), { tui: ui });
367
- ui.addChild(selector);
368
- ui.setFocus(selector);
369
- ui.start();
370
- });
371
- }
372
346
  async function promptForMissingSessionCwd(issue, settingsManager) {
373
347
  return showStartupSelector(settingsManager, formatMissingSessionCwdPrompt(issue), [
374
348
  { label: "Continue", value: issue.fallbackCwd },
375
349
  { label: "Cancel", value: undefined },
376
350
  ]);
377
351
  }
378
- async function promptForProjectTrust(cwd, settingsManager) {
379
- return showStartupSelector(settingsManager, `Trust project folder?\n${cwd}\n\nThis allows pi to read project instructions (AGENTS.md/CLAUDE.md), load .pi settings and resources, install missing project packages, and execute project extensions.`, [
380
- { label: "Trust", value: { trusted: true, remember: true } },
381
- { label: "Trust (this session only)", value: { trusted: true, remember: false } },
382
- { label: "Do not trust", value: { trusted: false, remember: true } },
383
- { label: "Do not trust (this session only)", value: { trusted: false, remember: false } },
384
- ]);
385
- }
386
- async function resolveProjectTrusted(options) {
387
- if (options.trustOverride !== undefined) {
388
- return options.trustOverride;
389
- }
390
- if (!hasProjectTrustInputs(options.cwd)) {
391
- return true;
392
- }
393
- const decision = options.trustStore.get(options.cwd);
394
- if (decision !== null) {
395
- return decision;
396
- }
397
- if (options.appMode !== "interactive") {
398
- return false;
399
- }
400
- const selected = await promptForProjectTrust(options.cwd, options.settingsManagerForPrompt);
401
- if (selected !== undefined) {
402
- if (selected.remember) {
403
- options.trustStore.set(options.cwd, selected.trusted);
404
- }
405
- return selected.trusted;
406
- }
407
- return false;
408
- }
409
352
  export async function main(args, options) {
410
353
  resetTimings();
411
354
  const offlineMode = args.includes("--offline") || isTruthyEnvFlag(process.env.PI_OFFLINE);
@@ -416,10 +359,10 @@ export async function main(args, options) {
416
359
  if (process.platform === "win32") {
417
360
  cleanupWindowsSelfUpdateQuarantine(getPackageDir());
418
361
  }
419
- if (await handlePackageCommand(args)) {
362
+ if (await handlePackageCommand(args, { extensionFactories: options?.extensionFactories })) {
420
363
  return;
421
364
  }
422
- if (await handleConfigCommand(args)) {
365
+ if (await handleConfigCommand(args, { extensionFactories: options?.extensionFactories })) {
423
366
  return;
424
367
  }
425
368
  const parsed = parseArgs(args);
@@ -433,11 +376,6 @@ export async function main(args, options) {
433
376
  }
434
377
  }
435
378
  time("parseArgs");
436
- let appMode = resolveAppMode(parsed, process.stdin.isTTY);
437
- const shouldTakeOverStdout = appMode !== "interactive";
438
- if (shouldTakeOverStdout) {
439
- takeOverStdout();
440
- }
441
379
  if (parsed.version) {
442
380
  console.log(VERSION);
443
381
  process.exit(0);
@@ -445,9 +383,8 @@ export async function main(args, options) {
445
383
  if (parsed.export) {
446
384
  let result;
447
385
  try {
448
- const inputPath = expandTildePath(parsed.export);
449
- const outputPath = parsed.messages.length > 0 ? expandTildePath(parsed.messages[0]) : undefined;
450
- result = await exportFromFile(inputPath, outputPath);
386
+ const outputPath = parsed.messages.length > 0 ? parsed.messages[0] : undefined;
387
+ result = await exportFromFile(parsed.export, outputPath);
451
388
  }
452
389
  catch (error) {
453
390
  const message = error instanceof Error ? error.message : "Failed to export session";
@@ -457,6 +394,11 @@ export async function main(args, options) {
457
394
  console.log(`Exported to: ${result}`);
458
395
  process.exit(0);
459
396
  }
397
+ let appMode = resolveAppMode(parsed, process.stdin.isTTY, process.stdout.isTTY);
398
+ const shouldTakeOverStdout = appMode !== "interactive" && !isPlainRuntimeMetadataCommand(parsed);
399
+ if (shouldTakeOverStdout) {
400
+ takeOverStdout();
401
+ }
460
402
  if (parsed.mode === "rpc" && parsed.fileArgs.length > 0) {
461
403
  console.error(chalk.red("Error: @file arguments are not supported in RPC mode"));
462
404
  process.exit(1);
@@ -470,6 +412,39 @@ export async function main(args, options) {
470
412
  const agentDir = getAgentDir();
471
413
  const startupSettingsManager = SettingsManager.create(cwd, agentDir);
472
414
  reportDiagnostics(collectSettingsDiagnostics(startupSettingsManager, "startup session lookup"));
415
+ const resolvedExtensionPaths = resolveCliPaths(cwd, parsed.extensions);
416
+ const resolvedSkillPaths = resolveCliPaths(cwd, parsed.skills);
417
+ const resolvedPromptTemplatePaths = resolveCliPaths(cwd, parsed.promptTemplates);
418
+ const resolvedThemePaths = resolveCliPaths(cwd, parsed.themes);
419
+ const authStorage = AuthStorage.create();
420
+ if (parsed.listModels !== undefined) {
421
+ const services = await createAgentSessionServices({
422
+ cwd,
423
+ agentDir,
424
+ authStorage,
425
+ settingsManager: startupSettingsManager,
426
+ extensionFlagValues: parsed.unknownFlags,
427
+ resourceLoaderOptions: {
428
+ additionalExtensionPaths: resolvedExtensionPaths,
429
+ additionalSkillPaths: resolvedSkillPaths,
430
+ additionalPromptTemplatePaths: resolvedPromptTemplatePaths,
431
+ additionalThemePaths: resolvedThemePaths,
432
+ noExtensions: parsed.noExtensions,
433
+ noSkills: true,
434
+ noPromptTemplates: true,
435
+ noThemes: true,
436
+ noContextFiles: true,
437
+ extensionFactories: options?.extensionFactories,
438
+ },
439
+ });
440
+ reportDiagnostics([
441
+ ...services.diagnostics,
442
+ ...collectSettingsDiagnostics(services.settingsManager, "model listing"),
443
+ ]);
444
+ const searchPattern = typeof parsed.listModels === "string" ? parsed.listModels : undefined;
445
+ await listModels(services.modelRegistry, searchPattern);
446
+ process.exit(0);
447
+ }
473
448
  // Decide the final runtime cwd before creating cwd-bound runtime services.
474
449
  // --session and --resume may select a session from another project, so project-local
475
450
  // settings, resources, provider registrations, and models must be resolved only after
@@ -504,23 +479,19 @@ export async function main(args, options) {
504
479
  }
505
480
  time("createSessionManager");
506
481
  const trustStore = new ProjectTrustStore(agentDir);
482
+ const sessionCwd = sessionManager.getCwd();
483
+ const autoTrustOnReloadCwd = parsed.projectTrustOverride === undefined && !hasProjectTrustInputs(sessionCwd) ? sessionCwd : undefined;
507
484
  const trustPromptMode = parsed.help || parsed.listModels !== undefined ? "print" : appMode;
508
- const projectTrustedForSession = await resolveProjectTrusted({
509
- cwd: sessionManager.getCwd(),
510
- trustStore,
511
- trustOverride: parsed.projectTrustOverride,
512
- appMode: trustPromptMode,
513
- settingsManagerForPrompt: startupSettingsManager,
514
- });
515
- const resolvedExtensionPaths = resolveCliPaths(cwd, parsed.extensions);
516
- const resolvedSkillPaths = resolveCliPaths(cwd, parsed.skills);
517
- const resolvedPromptTemplatePaths = resolveCliPaths(cwd, parsed.promptTemplates);
518
- const resolvedThemePaths = resolveCliPaths(cwd, parsed.themes);
519
- const authStorage = AuthStorage.create();
520
- const createRuntime = async ({ cwd, agentDir, sessionManager, sessionStartEvent, }) => {
521
- const projectTrusted = cwd === sessionManager.getCwd()
522
- ? projectTrustedForSession
523
- : (parsed.projectTrustOverride ?? (!hasProjectTrustInputs(cwd) || trustStore.get(cwd) === true));
485
+ const projectTrustByCwd = new Map();
486
+ const createRuntime = async ({ cwd, agentDir, sessionManager, sessionStartEvent, projectTrustContext, }) => {
487
+ const isInitialRuntime = sessionStartEvent === undefined;
488
+ const projectTrustDiagnostics = [];
489
+ const cachedProjectTrust = projectTrustByCwd.get(cwd);
490
+ const hasTrustInputs = hasProjectTrustInputs(cwd);
491
+ const shouldResolveProjectTrust = parsed.projectTrustOverride === undefined && cachedProjectTrust === undefined && hasTrustInputs;
492
+ const projectTrusted = shouldResolveProjectTrust
493
+ ? false
494
+ : (cachedProjectTrust ?? parsed.projectTrustOverride ?? (!hasTrustInputs || trustStore.get(cwd) === true));
524
495
  const runtimeSettingsManager = SettingsManager.create(cwd, agentDir, { projectTrusted });
525
496
  const services = await createAgentSessionServices({
526
497
  cwd,
@@ -528,6 +499,29 @@ export async function main(args, options) {
528
499
  authStorage,
529
500
  settingsManager: runtimeSettingsManager,
530
501
  extensionFlagValues: parsed.unknownFlags,
502
+ resourceLoaderReloadOptions: shouldResolveProjectTrust
503
+ ? {
504
+ resolveProjectTrust: async ({ extensionsResult }) => {
505
+ const trusted = await resolveProjectTrusted({
506
+ cwd,
507
+ trustStore,
508
+ trustOverride: parsed.projectTrustOverride,
509
+ defaultProjectTrust: startupSettingsManager.getDefaultProjectTrust(),
510
+ extensionsResult,
511
+ projectTrustContext: projectTrustContext ??
512
+ createProjectTrustContext({
513
+ cwd,
514
+ mode: isInitialRuntime ? trustPromptMode : appMode,
515
+ settingsManager: startupSettingsManager,
516
+ hasUI: isInitialRuntime && trustPromptMode === "interactive",
517
+ }),
518
+ onExtensionError: (message) => projectTrustDiagnostics.push({ type: "warning", message }),
519
+ });
520
+ projectTrustByCwd.set(cwd, trusted);
521
+ return trusted;
522
+ },
523
+ }
524
+ : undefined,
531
525
  resourceLoaderOptions: {
532
526
  additionalExtensionPaths: resolvedExtensionPaths,
533
527
  additionalSkillPaths: resolvedSkillPaths,
@@ -543,6 +537,7 @@ export async function main(args, options) {
543
537
  });
544
538
  const { settingsManager, modelRegistry, resourceLoader } = services;
545
539
  const diagnostics = [
540
+ ...projectTrustDiagnostics,
546
541
  ...services.diagnostics,
547
542
  ...collectSettingsDiagnostics(settingsManager, "runtime creation"),
548
543
  ...resourceLoader.getExtensions().errors.map(({ path, error }) => ({
@@ -555,7 +550,6 @@ export async function main(args, options) {
555
550
  legacyEnabledPatterns: settingsManager.getEnabledModels(),
556
551
  });
557
552
  const scopedModels = modelPatterns && modelPatterns.length > 0 ? await resolveModelScope(modelPatterns, modelRegistry) : [];
558
- const favoriteModels = await resolveModelScope(settingsManager.getFavoriteModels() ?? [], modelRegistry);
559
553
  const { options: sessionOptions, cliThinkingFromModel, diagnostics: sessionOptionDiagnostics, } = buildSessionOptions(parsed, scopedModels, sessionManager.buildSessionContext().messages.length > 0, modelRegistry, settingsManager);
560
554
  diagnostics.push(...sessionOptionDiagnostics);
561
555
  if (parsed.apiKey) {
@@ -576,7 +570,6 @@ export async function main(args, options) {
576
570
  model: sessionOptions.model,
577
571
  thinkingLevel: sessionOptions.thinkingLevel,
578
572
  scopedModels: sessionOptions.scopedModels,
579
- favoriteModels,
580
573
  tools: sessionOptions.tools,
581
574
  excludeTools: sessionOptions.excludeTools,
582
575
  noTools: sessionOptions.noTools,
@@ -600,7 +593,7 @@ export async function main(args, options) {
600
593
  });
601
594
  time("createAgentSessionRuntime");
602
595
  const { services, session, modelFallbackMessage } = runtime;
603
- const { settingsManager, modelRegistry, resourceLoader } = services;
596
+ const { settingsManager, resourceLoader } = services;
604
597
  configureHttpDispatcher(settingsManager.getHttpIdleTimeoutMs());
605
598
  if (parsed.help) {
606
599
  const extensionFlags = resourceLoader
@@ -609,11 +602,6 @@ export async function main(args, options) {
609
602
  printHelp(extensionFlags);
610
603
  process.exit(0);
611
604
  }
612
- if (parsed.listModels !== undefined) {
613
- const searchPattern = typeof parsed.listModels === "string" ? parsed.listModels : undefined;
614
- await listModels(modelRegistry, searchPattern);
615
- process.exit(0);
616
- }
617
605
  // Read piped stdin content (if any) - skip for RPC mode which uses stdin for JSON-RPC
618
606
  let stdinContent;
619
607
  if (appMode !== "rpc") {
@@ -631,14 +619,6 @@ export async function main(args, options) {
631
619
  if (appMode === "interactive" && deprecationWarnings.length > 0) {
632
620
  await showDeprecationWarnings(deprecationWarnings);
633
621
  }
634
- const scopedModels = [...session.scopedModels];
635
- const favoriteModels = [...session.favoriteModels];
636
- const narrowedModelIds = scopedModels.length > 0
637
- ? new Set(scopedModels.map((scoped) => `${scoped.model.provider}/${scoped.model.id}`))
638
- : null;
639
- const favoriteModelsForCycle = narrowedModelIds
640
- ? favoriteModels.filter((favorite) => narrowedModelIds.has(`${favorite.model.provider}/${favorite.model.id}`))
641
- : favoriteModels;
642
622
  time("resolveModelScope");
643
623
  reportDiagnostics(runtime.diagnostics);
644
624
  if (runtime.diagnostics.some((diagnostic) => diagnostic.type === "error")) {
@@ -659,27 +639,10 @@ export async function main(args, options) {
659
639
  await runRpcMode(runtime);
660
640
  }
661
641
  else if (appMode === "interactive") {
662
- if (scopedModels.length > 0 && (parsed.verbose || !settingsManager.getQuietStartup())) {
663
- const modelList = scopedModels
664
- .map((sm) => {
665
- const thinkingStr = sm.thinkingLevel ? `:${sm.thinkingLevel}` : "";
666
- return `${sm.model.id}${thinkingStr}`;
667
- })
668
- .join(", ");
669
- console.log(chalk.dim(`Model catalog: ${modelList} ${chalk.gray("(narrowed)")}`));
670
- }
671
- if (favoriteModelsForCycle.length > 0 && (parsed.verbose || !settingsManager.getQuietStartup())) {
672
- const modelList = favoriteModelsForCycle
673
- .map((favorite) => {
674
- const thinkingStr = favorite.thinkingLevel ? `:${favorite.thinkingLevel}` : "";
675
- return `${favorite.model.id}${thinkingStr}`;
676
- })
677
- .join(", ");
678
- console.log(chalk.dim(`Favorite models: ${modelList} ${chalk.gray("(Ctrl+P to cycle)")}`));
679
- }
680
642
  const interactiveMode = new InteractiveMode(runtime, {
681
643
  migratedProviders,
682
644
  modelFallbackMessage,
645
+ autoTrustOnReloadCwd,
683
646
  initialMessage,
684
647
  initialImages,
685
648
  initialMessages: parsed.messages,