@eminent337/aery 0.1.57 → 0.1.59

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 (688) hide show
  1. package/CHANGELOG.md +0 -0
  2. package/README.md +0 -0
  3. package/docs/compaction.md +0 -0
  4. package/docs/custom-provider.md +0 -0
  5. package/docs/development.md +0 -0
  6. package/docs/docs.json +133 -0
  7. package/docs/extensions.md +0 -0
  8. package/docs/images/doom-extension.png +0 -0
  9. package/docs/images/exy.png +0 -0
  10. package/docs/images/interactive-mode.png +0 -0
  11. package/docs/images/tree-view.png +0 -0
  12. package/docs/index.md +61 -0
  13. package/docs/json.md +0 -0
  14. package/docs/keybindings.md +0 -0
  15. package/docs/models.md +0 -0
  16. package/docs/packages.md +0 -0
  17. package/docs/prompt-templates.md +0 -0
  18. package/docs/providers.md +1 -1
  19. package/docs/quickstart.md +142 -0
  20. package/docs/rpc.md +0 -0
  21. package/docs/sdk.md +0 -0
  22. package/docs/session.md +0 -0
  23. package/docs/settings.md +0 -0
  24. package/docs/shell-aliases.md +0 -0
  25. package/docs/skills.md +0 -0
  26. package/docs/terminal-setup.md +0 -0
  27. package/docs/termux.md +0 -0
  28. package/docs/themes.md +0 -0
  29. package/docs/tmux.md +0 -0
  30. package/docs/tree.md +0 -0
  31. package/docs/tui.md +0 -0
  32. package/docs/usage.md +275 -0
  33. package/docs/windows.md +0 -0
  34. package/examples/README.md +0 -0
  35. package/examples/extensions/README.md +0 -0
  36. package/examples/extensions/antigravity-image-gen.ts +0 -0
  37. package/examples/extensions/auto-commit-on-exit.ts +0 -0
  38. package/examples/extensions/bash-spawn-hook.ts +0 -0
  39. package/examples/extensions/bookmark.ts +0 -0
  40. package/examples/extensions/built-in-tool-renderer.ts +0 -0
  41. package/examples/extensions/claude-rules.ts +0 -0
  42. package/examples/extensions/commands.ts +0 -0
  43. package/examples/extensions/confirm-destructive.ts +0 -0
  44. package/examples/extensions/custom-compaction.ts +0 -0
  45. package/examples/extensions/custom-footer.ts +0 -0
  46. package/examples/extensions/custom-header.ts +0 -0
  47. package/examples/extensions/custom-provider-anthropic/index.ts +0 -0
  48. package/examples/extensions/custom-provider-anthropic/package-lock.json +0 -0
  49. package/examples/extensions/custom-provider-anthropic/package.json +0 -0
  50. package/examples/extensions/custom-provider-gitlab-duo/index.ts +0 -0
  51. package/examples/extensions/custom-provider-gitlab-duo/package.json +0 -0
  52. package/examples/extensions/custom-provider-gitlab-duo/test.ts +0 -0
  53. package/examples/extensions/custom-provider-qwen-cli/index.ts +0 -0
  54. package/examples/extensions/custom-provider-qwen-cli/package.json +0 -0
  55. package/examples/extensions/dirty-repo-guard.ts +0 -0
  56. package/examples/extensions/doom-overlay/README.md +0 -0
  57. package/examples/extensions/doom-overlay/doom/build/doom.js +0 -0
  58. package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +0 -0
  59. package/examples/extensions/doom-overlay/doom-component.ts +0 -0
  60. package/examples/extensions/doom-overlay/doom-engine.ts +0 -0
  61. package/examples/extensions/doom-overlay/doom-keys.ts +0 -0
  62. package/examples/extensions/doom-overlay/index.ts +0 -0
  63. package/examples/extensions/doom-overlay/wad-finder.ts +0 -0
  64. package/examples/extensions/dynamic-resources/SKILL.md +0 -0
  65. package/examples/extensions/dynamic-resources/dynamic.json +0 -0
  66. package/examples/extensions/dynamic-resources/dynamic.md +0 -0
  67. package/examples/extensions/dynamic-resources/index.ts +0 -0
  68. package/examples/extensions/dynamic-tools.ts +0 -0
  69. package/examples/extensions/event-bus.ts +0 -0
  70. package/examples/extensions/file-trigger.ts +0 -0
  71. package/examples/extensions/git-checkpoint.ts +0 -0
  72. package/examples/extensions/handoff.ts +0 -0
  73. package/examples/extensions/hello.ts +0 -0
  74. package/examples/extensions/hidden-thinking-label.ts +0 -0
  75. package/examples/extensions/inline-bash.ts +0 -0
  76. package/examples/extensions/input-transform.ts +0 -0
  77. package/examples/extensions/interactive-shell.ts +0 -0
  78. package/examples/extensions/mac-system-theme.ts +0 -0
  79. package/examples/extensions/message-renderer.ts +0 -0
  80. package/examples/extensions/minimal-mode.ts +0 -0
  81. package/examples/extensions/modal-editor.ts +0 -0
  82. package/examples/extensions/model-status.ts +0 -0
  83. package/examples/extensions/notify.ts +0 -0
  84. package/examples/extensions/overlay-qa-tests.ts +0 -0
  85. package/examples/extensions/overlay-test.ts +0 -0
  86. package/examples/extensions/permission-gate.ts +0 -0
  87. package/examples/extensions/pirate.ts +0 -0
  88. package/examples/extensions/plan-mode/README.md +0 -0
  89. package/examples/extensions/plan-mode/index.ts +0 -0
  90. package/examples/extensions/plan-mode/utils.ts +0 -0
  91. package/examples/extensions/preset.ts +0 -0
  92. package/examples/extensions/protected-paths.ts +0 -0
  93. package/examples/extensions/provider-payload.ts +0 -0
  94. package/examples/extensions/qna.ts +0 -0
  95. package/examples/extensions/question.ts +0 -0
  96. package/examples/extensions/questionnaire.ts +0 -0
  97. package/examples/extensions/rainbow-editor.ts +0 -0
  98. package/examples/extensions/reload-runtime.ts +0 -0
  99. package/examples/extensions/rpc-demo.ts +0 -0
  100. package/examples/extensions/sandbox/index.ts +0 -0
  101. package/examples/extensions/sandbox/package-lock.json +0 -0
  102. package/examples/extensions/sandbox/package.json +0 -0
  103. package/examples/extensions/send-user-message.ts +0 -0
  104. package/examples/extensions/session-name.ts +0 -0
  105. package/examples/extensions/shutdown-command.ts +0 -0
  106. package/examples/extensions/snake.ts +0 -0
  107. package/examples/extensions/space-invaders.ts +0 -0
  108. package/examples/extensions/ssh.ts +0 -0
  109. package/examples/extensions/status-line.ts +0 -0
  110. package/examples/extensions/subagent/README.md +0 -0
  111. package/examples/extensions/subagent/agents/planner.md +0 -0
  112. package/examples/extensions/subagent/agents/reviewer.md +0 -0
  113. package/examples/extensions/subagent/agents/scout.md +0 -0
  114. package/examples/extensions/subagent/agents/worker.md +0 -0
  115. package/examples/extensions/subagent/agents.ts +0 -0
  116. package/examples/extensions/subagent/index.ts +0 -0
  117. package/examples/extensions/subagent/prompts/implement-and-review.md +0 -0
  118. package/examples/extensions/subagent/prompts/implement.md +0 -0
  119. package/examples/extensions/subagent/prompts/scout-and-plan.md +0 -0
  120. package/examples/extensions/summarize.ts +0 -0
  121. package/examples/extensions/system-prompt-header.ts +0 -0
  122. package/examples/extensions/tic-tac-toe.ts +0 -0
  123. package/examples/extensions/timed-confirm.ts +0 -0
  124. package/examples/extensions/titlebar-spinner.ts +0 -0
  125. package/examples/extensions/todo.ts +0 -0
  126. package/examples/extensions/tool-override.ts +0 -0
  127. package/examples/extensions/tools.ts +0 -0
  128. package/examples/extensions/trigger-compact.ts +0 -0
  129. package/examples/extensions/truncated-tool.ts +0 -0
  130. package/examples/extensions/widget-placement.ts +0 -0
  131. package/examples/extensions/with-deps/index.ts +0 -0
  132. package/examples/extensions/with-deps/package-lock.json +0 -0
  133. package/examples/extensions/with-deps/package.json +0 -0
  134. package/examples/extensions/working-indicator.ts +0 -0
  135. package/examples/rpc-extension-ui.ts +0 -0
  136. package/examples/sdk/01-minimal.ts +0 -0
  137. package/examples/sdk/02-custom-model.ts +0 -0
  138. package/examples/sdk/03-custom-prompt.ts +0 -0
  139. package/examples/sdk/04-skills.ts +0 -0
  140. package/examples/sdk/05-tools.ts +0 -0
  141. package/examples/sdk/06-extensions.ts +0 -0
  142. package/examples/sdk/07-context-files.ts +0 -0
  143. package/examples/sdk/08-prompt-templates.ts +0 -0
  144. package/examples/sdk/09-api-keys-and-oauth.ts +0 -0
  145. package/examples/sdk/10-settings.ts +0 -0
  146. package/examples/sdk/11-sessions.ts +0 -0
  147. package/examples/sdk/12-full-control.ts +0 -0
  148. package/examples/sdk/13-session-runtime.ts +0 -0
  149. package/examples/sdk/README.md +0 -0
  150. package/package.json +3 -3
  151. package/dist/bun/cli.d.ts +0 -3
  152. package/dist/bun/cli.d.ts.map +0 -1
  153. package/dist/bun/cli.js +0 -7
  154. package/dist/bun/cli.js.map +0 -1
  155. package/dist/bun/register-bedrock.d.ts +0 -2
  156. package/dist/bun/register-bedrock.d.ts.map +0 -1
  157. package/dist/bun/register-bedrock.js +0 -4
  158. package/dist/bun/register-bedrock.js.map +0 -1
  159. package/dist/cli/args.d.ts +0 -52
  160. package/dist/cli/args.d.ts.map +0 -1
  161. package/dist/cli/args.js +0 -321
  162. package/dist/cli/args.js.map +0 -1
  163. package/dist/cli/config-selector.d.ts +0 -14
  164. package/dist/cli/config-selector.d.ts.map +0 -1
  165. package/dist/cli/config-selector.js +0 -31
  166. package/dist/cli/config-selector.js.map +0 -1
  167. package/dist/cli/file-processor.d.ts +0 -15
  168. package/dist/cli/file-processor.d.ts.map +0 -1
  169. package/dist/cli/file-processor.js +0 -83
  170. package/dist/cli/file-processor.js.map +0 -1
  171. package/dist/cli/initial-message.d.ts +0 -18
  172. package/dist/cli/initial-message.d.ts.map +0 -1
  173. package/dist/cli/initial-message.js +0 -22
  174. package/dist/cli/initial-message.js.map +0 -1
  175. package/dist/cli/list-models.d.ts +0 -9
  176. package/dist/cli/list-models.d.ts.map +0 -1
  177. package/dist/cli/list-models.js +0 -97
  178. package/dist/cli/list-models.js.map +0 -1
  179. package/dist/cli/session-picker.d.ts +0 -9
  180. package/dist/cli/session-picker.d.ts.map +0 -1
  181. package/dist/cli/session-picker.js +0 -35
  182. package/dist/cli/session-picker.js.map +0 -1
  183. package/dist/cli.d.ts +0 -3
  184. package/dist/cli.d.ts.map +0 -1
  185. package/dist/cli.js +0 -15
  186. package/dist/cli.js.map +0 -1
  187. package/dist/config.d.ts +0 -77
  188. package/dist/config.d.ts.map +0 -1
  189. package/dist/config.js +0 -221
  190. package/dist/config.js.map +0 -1
  191. package/dist/core/agent-session-runtime.d.ts +0 -99
  192. package/dist/core/agent-session-runtime.d.ts.map +0 -1
  193. package/dist/core/agent-session-runtime.js +0 -261
  194. package/dist/core/agent-session-runtime.js.map +0 -1
  195. package/dist/core/agent-session-services.d.ts +0 -85
  196. package/dist/core/agent-session-services.d.ts.map +0 -1
  197. package/dist/core/agent-session-services.js +0 -116
  198. package/dist/core/agent-session-services.js.map +0 -1
  199. package/dist/core/agent-session.d.ts +0 -590
  200. package/dist/core/agent-session.d.ts.map +0 -1
  201. package/dist/core/agent-session.js +0 -2505
  202. package/dist/core/agent-session.js.map +0 -1
  203. package/dist/core/auth-storage.d.ts +0 -132
  204. package/dist/core/auth-storage.d.ts.map +0 -1
  205. package/dist/core/auth-storage.js +0 -422
  206. package/dist/core/auth-storage.js.map +0 -1
  207. package/dist/core/bash-executor.d.ts +0 -32
  208. package/dist/core/bash-executor.d.ts.map +0 -1
  209. package/dist/core/bash-executor.js +0 -108
  210. package/dist/core/bash-executor.js.map +0 -1
  211. package/dist/core/compaction/branch-summarization.d.ts +0 -88
  212. package/dist/core/compaction/branch-summarization.d.ts.map +0 -1
  213. package/dist/core/compaction/branch-summarization.js +0 -243
  214. package/dist/core/compaction/branch-summarization.js.map +0 -1
  215. package/dist/core/compaction/compaction.d.ts +0 -121
  216. package/dist/core/compaction/compaction.d.ts.map +0 -1
  217. package/dist/core/compaction/compaction.js +0 -615
  218. package/dist/core/compaction/compaction.js.map +0 -1
  219. package/dist/core/compaction/index.d.ts +0 -7
  220. package/dist/core/compaction/index.d.ts.map +0 -1
  221. package/dist/core/compaction/index.js +0 -7
  222. package/dist/core/compaction/index.js.map +0 -1
  223. package/dist/core/compaction/utils.d.ts +0 -38
  224. package/dist/core/compaction/utils.d.ts.map +0 -1
  225. package/dist/core/compaction/utils.js +0 -153
  226. package/dist/core/compaction/utils.js.map +0 -1
  227. package/dist/core/defaults.d.ts +0 -3
  228. package/dist/core/defaults.d.ts.map +0 -1
  229. package/dist/core/defaults.js +0 -2
  230. package/dist/core/defaults.js.map +0 -1
  231. package/dist/core/diagnostics.d.ts +0 -15
  232. package/dist/core/diagnostics.d.ts.map +0 -1
  233. package/dist/core/diagnostics.js +0 -2
  234. package/dist/core/diagnostics.js.map +0 -1
  235. package/dist/core/event-bus.d.ts +0 -9
  236. package/dist/core/event-bus.d.ts.map +0 -1
  237. package/dist/core/event-bus.js +0 -25
  238. package/dist/core/event-bus.js.map +0 -1
  239. package/dist/core/exec.d.ts +0 -29
  240. package/dist/core/exec.d.ts.map +0 -1
  241. package/dist/core/exec.js +0 -75
  242. package/dist/core/exec.js.map +0 -1
  243. package/dist/core/export-html/ansi-to-html.d.ts +0 -22
  244. package/dist/core/export-html/ansi-to-html.d.ts.map +0 -1
  245. package/dist/core/export-html/ansi-to-html.js +0 -249
  246. package/dist/core/export-html/ansi-to-html.js.map +0 -1
  247. package/dist/core/export-html/index.d.ts +0 -37
  248. package/dist/core/export-html/index.d.ts.map +0 -1
  249. package/dist/core/export-html/index.js +0 -224
  250. package/dist/core/export-html/index.js.map +0 -1
  251. package/dist/core/export-html/template.css +0 -1017
  252. package/dist/core/export-html/template.html +0 -55
  253. package/dist/core/export-html/template.js +0 -1729
  254. package/dist/core/export-html/tool-renderer.d.ts +0 -40
  255. package/dist/core/export-html/tool-renderer.d.ts.map +0 -1
  256. package/dist/core/export-html/tool-renderer.js +0 -95
  257. package/dist/core/export-html/tool-renderer.js.map +0 -1
  258. package/dist/core/export-html/vendor/highlight.min.js +0 -1213
  259. package/dist/core/export-html/vendor/marked.min.js +0 -6
  260. package/dist/core/extensions/index.d.ts +0 -12
  261. package/dist/core/extensions/index.d.ts.map +0 -1
  262. package/dist/core/extensions/index.js +0 -9
  263. package/dist/core/extensions/index.js.map +0 -1
  264. package/dist/core/extensions/loader.d.ts +0 -25
  265. package/dist/core/extensions/loader.d.ts.map +0 -1
  266. package/dist/core/extensions/loader.js +0 -436
  267. package/dist/core/extensions/loader.js.map +0 -1
  268. package/dist/core/extensions/runner.d.ts +0 -150
  269. package/dist/core/extensions/runner.d.ts.map +0 -1
  270. package/dist/core/extensions/runner.js +0 -706
  271. package/dist/core/extensions/runner.js.map +0 -1
  272. package/dist/core/extensions/types.d.ts +0 -1111
  273. package/dist/core/extensions/types.d.ts.map +0 -1
  274. package/dist/core/extensions/types.js +0 -45
  275. package/dist/core/extensions/types.js.map +0 -1
  276. package/dist/core/extensions/wrapper.d.ts +0 -20
  277. package/dist/core/extensions/wrapper.d.ts.map +0 -1
  278. package/dist/core/extensions/wrapper.js +0 -22
  279. package/dist/core/extensions/wrapper.js.map +0 -1
  280. package/dist/core/footer-data-provider.d.ts +0 -48
  281. package/dist/core/footer-data-provider.d.ts.map +0 -1
  282. package/dist/core/footer-data-provider.js +0 -314
  283. package/dist/core/footer-data-provider.js.map +0 -1
  284. package/dist/core/index.d.ts +0 -12
  285. package/dist/core/index.d.ts.map +0 -1
  286. package/dist/core/index.js +0 -12
  287. package/dist/core/index.js.map +0 -1
  288. package/dist/core/keybindings.d.ts +0 -353
  289. package/dist/core/keybindings.d.ts.map +0 -1
  290. package/dist/core/keybindings.js +0 -295
  291. package/dist/core/keybindings.js.map +0 -1
  292. package/dist/core/messages.d.ts +0 -77
  293. package/dist/core/messages.d.ts.map +0 -1
  294. package/dist/core/messages.js +0 -123
  295. package/dist/core/messages.js.map +0 -1
  296. package/dist/core/model-registry.d.ts +0 -132
  297. package/dist/core/model-registry.d.ts.map +0 -1
  298. package/dist/core/model-registry.js +0 -635
  299. package/dist/core/model-registry.js.map +0 -1
  300. package/dist/core/model-resolver.d.ts +0 -110
  301. package/dist/core/model-resolver.d.ts.map +0 -1
  302. package/dist/core/model-resolver.js +0 -486
  303. package/dist/core/model-resolver.js.map +0 -1
  304. package/dist/core/output-guard.d.ts +0 -6
  305. package/dist/core/output-guard.d.ts.map +0 -1
  306. package/dist/core/output-guard.js +0 -59
  307. package/dist/core/output-guard.js.map +0 -1
  308. package/dist/core/package-manager.d.ts +0 -194
  309. package/dist/core/package-manager.d.ts.map +0 -1
  310. package/dist/core/package-manager.js +0 -1882
  311. package/dist/core/package-manager.js.map +0 -1
  312. package/dist/core/prompt-templates.d.ts +0 -52
  313. package/dist/core/prompt-templates.d.ts.map +0 -1
  314. package/dist/core/prompt-templates.js +0 -250
  315. package/dist/core/prompt-templates.js.map +0 -1
  316. package/dist/core/resolve-config-value.d.ts +0 -23
  317. package/dist/core/resolve-config-value.d.ts.map +0 -1
  318. package/dist/core/resolve-config-value.js +0 -126
  319. package/dist/core/resolve-config-value.js.map +0 -1
  320. package/dist/core/resource-loader.d.ts +0 -194
  321. package/dist/core/resource-loader.d.ts.map +0 -1
  322. package/dist/core/resource-loader.js +0 -726
  323. package/dist/core/resource-loader.js.map +0 -1
  324. package/dist/core/sdk.d.ts +0 -99
  325. package/dist/core/sdk.d.ts.map +0 -1
  326. package/dist/core/sdk.js +0 -261
  327. package/dist/core/sdk.js.map +0 -1
  328. package/dist/core/session-cwd.d.ts +0 -19
  329. package/dist/core/session-cwd.d.ts.map +0 -1
  330. package/dist/core/session-cwd.js +0 -38
  331. package/dist/core/session-cwd.js.map +0 -1
  332. package/dist/core/session-manager.d.ts +0 -333
  333. package/dist/core/session-manager.d.ts.map +0 -1
  334. package/dist/core/session-manager.js +0 -1109
  335. package/dist/core/session-manager.js.map +0 -1
  336. package/dist/core/settings-manager.d.ts +0 -240
  337. package/dist/core/settings-manager.d.ts.map +0 -1
  338. package/dist/core/settings-manager.js +0 -711
  339. package/dist/core/settings-manager.js.map +0 -1
  340. package/dist/core/skills.d.ts +0 -60
  341. package/dist/core/skills.d.ts.map +0 -1
  342. package/dist/core/skills.js +0 -409
  343. package/dist/core/skills.js.map +0 -1
  344. package/dist/core/slash-commands.d.ts +0 -14
  345. package/dist/core/slash-commands.d.ts.map +0 -1
  346. package/dist/core/slash-commands.js +0 -24
  347. package/dist/core/slash-commands.js.map +0 -1
  348. package/dist/core/source-info.d.ts +0 -18
  349. package/dist/core/source-info.d.ts.map +0 -1
  350. package/dist/core/source-info.js +0 -19
  351. package/dist/core/source-info.js.map +0 -1
  352. package/dist/core/system-prompt.d.ts +0 -28
  353. package/dist/core/system-prompt.d.ts.map +0 -1
  354. package/dist/core/system-prompt.js +0 -120
  355. package/dist/core/system-prompt.js.map +0 -1
  356. package/dist/core/telemetry.d.ts +0 -3
  357. package/dist/core/telemetry.d.ts.map +0 -1
  358. package/dist/core/telemetry.js +0 -9
  359. package/dist/core/telemetry.js.map +0 -1
  360. package/dist/core/timings.d.ts +0 -8
  361. package/dist/core/timings.d.ts.map +0 -1
  362. package/dist/core/timings.js +0 -31
  363. package/dist/core/timings.js.map +0 -1
  364. package/dist/core/tools/bash.d.ts +0 -64
  365. package/dist/core/tools/bash.d.ts.map +0 -1
  366. package/dist/core/tools/bash.js +0 -355
  367. package/dist/core/tools/bash.js.map +0 -1
  368. package/dist/core/tools/edit-diff.d.ts +0 -85
  369. package/dist/core/tools/edit-diff.d.ts.map +0 -1
  370. package/dist/core/tools/edit-diff.js +0 -337
  371. package/dist/core/tools/edit-diff.js.map +0 -1
  372. package/dist/core/tools/edit.d.ts +0 -49
  373. package/dist/core/tools/edit.d.ts.map +0 -1
  374. package/dist/core/tools/edit.js +0 -323
  375. package/dist/core/tools/edit.js.map +0 -1
  376. package/dist/core/tools/file-mutation-queue.d.ts +0 -6
  377. package/dist/core/tools/file-mutation-queue.d.ts.map +0 -1
  378. package/dist/core/tools/file-mutation-queue.js +0 -37
  379. package/dist/core/tools/file-mutation-queue.js.map +0 -1
  380. package/dist/core/tools/find.d.ts +0 -35
  381. package/dist/core/tools/find.d.ts.map +0 -1
  382. package/dist/core/tools/find.js +0 -298
  383. package/dist/core/tools/find.js.map +0 -1
  384. package/dist/core/tools/grep.d.ts +0 -37
  385. package/dist/core/tools/grep.d.ts.map +0 -1
  386. package/dist/core/tools/grep.js +0 -304
  387. package/dist/core/tools/grep.js.map +0 -1
  388. package/dist/core/tools/index.d.ts +0 -40
  389. package/dist/core/tools/index.d.ts.map +0 -1
  390. package/dist/core/tools/index.js +0 -112
  391. package/dist/core/tools/index.js.map +0 -1
  392. package/dist/core/tools/ls.d.ts +0 -37
  393. package/dist/core/tools/ls.d.ts.map +0 -1
  394. package/dist/core/tools/ls.js +0 -169
  395. package/dist/core/tools/ls.js.map +0 -1
  396. package/dist/core/tools/path-utils.d.ts +0 -8
  397. package/dist/core/tools/path-utils.d.ts.map +0 -1
  398. package/dist/core/tools/path-utils.js +0 -81
  399. package/dist/core/tools/path-utils.js.map +0 -1
  400. package/dist/core/tools/read.d.ts +0 -35
  401. package/dist/core/tools/read.d.ts.map +0 -1
  402. package/dist/core/tools/read.js +0 -232
  403. package/dist/core/tools/read.js.map +0 -1
  404. package/dist/core/tools/render-utils.d.ts +0 -21
  405. package/dist/core/tools/render-utils.d.ts.map +0 -1
  406. package/dist/core/tools/render-utils.js +0 -49
  407. package/dist/core/tools/render-utils.js.map +0 -1
  408. package/dist/core/tools/tool-definition-wrapper.d.ts +0 -14
  409. package/dist/core/tools/tool-definition-wrapper.d.ts.map +0 -1
  410. package/dist/core/tools/tool-definition-wrapper.js +0 -34
  411. package/dist/core/tools/tool-definition-wrapper.js.map +0 -1
  412. package/dist/core/tools/truncate.d.ts +0 -70
  413. package/dist/core/tools/truncate.d.ts.map +0 -1
  414. package/dist/core/tools/truncate.js +0 -205
  415. package/dist/core/tools/truncate.js.map +0 -1
  416. package/dist/core/tools/write.d.ts +0 -26
  417. package/dist/core/tools/write.d.ts.map +0 -1
  418. package/dist/core/tools/write.js +0 -213
  419. package/dist/core/tools/write.js.map +0 -1
  420. package/dist/index.d.ts +0 -28
  421. package/dist/index.d.ts.map +0 -1
  422. package/dist/index.js +0 -41
  423. package/dist/index.js.map +0 -1
  424. package/dist/main.d.ts +0 -12
  425. package/dist/main.d.ts.map +0 -1
  426. package/dist/main.js +0 -589
  427. package/dist/main.js.map +0 -1
  428. package/dist/migrations.d.ts +0 -33
  429. package/dist/migrations.d.ts.map +0 -1
  430. package/dist/migrations.js +0 -281
  431. package/dist/migrations.js.map +0 -1
  432. package/dist/modes/index.d.ts +0 -9
  433. package/dist/modes/index.d.ts.map +0 -1
  434. package/dist/modes/index.js +0 -8
  435. package/dist/modes/index.js.map +0 -1
  436. package/dist/modes/interactive/assets/clankolas.png +0 -0
  437. package/dist/modes/interactive/components/aery-splash.d.ts +0 -18
  438. package/dist/modes/interactive/components/aery-splash.d.ts.map +0 -1
  439. package/dist/modes/interactive/components/aery-splash.js +0 -60
  440. package/dist/modes/interactive/components/aery-splash.js.map +0 -1
  441. package/dist/modes/interactive/components/armin.d.ts +0 -34
  442. package/dist/modes/interactive/components/armin.d.ts.map +0 -1
  443. package/dist/modes/interactive/components/armin.js +0 -333
  444. package/dist/modes/interactive/components/armin.js.map +0 -1
  445. package/dist/modes/interactive/components/assistant-message.d.ts +0 -20
  446. package/dist/modes/interactive/components/assistant-message.d.ts.map +0 -1
  447. package/dist/modes/interactive/components/assistant-message.js +0 -121
  448. package/dist/modes/interactive/components/assistant-message.js.map +0 -1
  449. package/dist/modes/interactive/components/bash-execution.d.ts +0 -34
  450. package/dist/modes/interactive/components/bash-execution.d.ts.map +0 -1
  451. package/dist/modes/interactive/components/bash-execution.js +0 -175
  452. package/dist/modes/interactive/components/bash-execution.js.map +0 -1
  453. package/dist/modes/interactive/components/bordered-loader.d.ts +0 -16
  454. package/dist/modes/interactive/components/bordered-loader.d.ts.map +0 -1
  455. package/dist/modes/interactive/components/bordered-loader.js +0 -54
  456. package/dist/modes/interactive/components/bordered-loader.js.map +0 -1
  457. package/dist/modes/interactive/components/branch-summary-message.d.ts +0 -16
  458. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +0 -1
  459. package/dist/modes/interactive/components/branch-summary-message.js +0 -44
  460. package/dist/modes/interactive/components/branch-summary-message.js.map +0 -1
  461. package/dist/modes/interactive/components/compaction-summary-message.d.ts +0 -16
  462. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +0 -1
  463. package/dist/modes/interactive/components/compaction-summary-message.js +0 -45
  464. package/dist/modes/interactive/components/compaction-summary-message.js.map +0 -1
  465. package/dist/modes/interactive/components/config-selector.d.ts +0 -71
  466. package/dist/modes/interactive/components/config-selector.d.ts.map +0 -1
  467. package/dist/modes/interactive/components/config-selector.js +0 -479
  468. package/dist/modes/interactive/components/config-selector.js.map +0 -1
  469. package/dist/modes/interactive/components/countdown-timer.d.ts +0 -14
  470. package/dist/modes/interactive/components/countdown-timer.d.ts.map +0 -1
  471. package/dist/modes/interactive/components/countdown-timer.js +0 -33
  472. package/dist/modes/interactive/components/countdown-timer.js.map +0 -1
  473. package/dist/modes/interactive/components/custom-editor.d.ts +0 -21
  474. package/dist/modes/interactive/components/custom-editor.d.ts.map +0 -1
  475. package/dist/modes/interactive/components/custom-editor.js +0 -70
  476. package/dist/modes/interactive/components/custom-editor.js.map +0 -1
  477. package/dist/modes/interactive/components/custom-message.d.ts +0 -20
  478. package/dist/modes/interactive/components/custom-message.d.ts.map +0 -1
  479. package/dist/modes/interactive/components/custom-message.js +0 -79
  480. package/dist/modes/interactive/components/custom-message.js.map +0 -1
  481. package/dist/modes/interactive/components/daxnuts.d.ts +0 -23
  482. package/dist/modes/interactive/components/daxnuts.d.ts.map +0 -1
  483. package/dist/modes/interactive/components/daxnuts.js +0 -140
  484. package/dist/modes/interactive/components/daxnuts.js.map +0 -1
  485. package/dist/modes/interactive/components/diff.d.ts +0 -12
  486. package/dist/modes/interactive/components/diff.d.ts.map +0 -1
  487. package/dist/modes/interactive/components/diff.js +0 -133
  488. package/dist/modes/interactive/components/diff.js.map +0 -1
  489. package/dist/modes/interactive/components/dynamic-border.d.ts +0 -15
  490. package/dist/modes/interactive/components/dynamic-border.d.ts.map +0 -1
  491. package/dist/modes/interactive/components/dynamic-border.js +0 -21
  492. package/dist/modes/interactive/components/dynamic-border.js.map +0 -1
  493. package/dist/modes/interactive/components/earendil-announcement.d.ts +0 -5
  494. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +0 -1
  495. package/dist/modes/interactive/components/earendil-announcement.js +0 -40
  496. package/dist/modes/interactive/components/earendil-announcement.js.map +0 -1
  497. package/dist/modes/interactive/components/extension-editor.d.ts +0 -20
  498. package/dist/modes/interactive/components/extension-editor.d.ts.map +0 -1
  499. package/dist/modes/interactive/components/extension-editor.js +0 -111
  500. package/dist/modes/interactive/components/extension-editor.js.map +0 -1
  501. package/dist/modes/interactive/components/extension-input.d.ts +0 -23
  502. package/dist/modes/interactive/components/extension-input.d.ts.map +0 -1
  503. package/dist/modes/interactive/components/extension-input.js +0 -61
  504. package/dist/modes/interactive/components/extension-input.js.map +0 -1
  505. package/dist/modes/interactive/components/extension-selector.d.ts +0 -24
  506. package/dist/modes/interactive/components/extension-selector.d.ts.map +0 -1
  507. package/dist/modes/interactive/components/extension-selector.js +0 -78
  508. package/dist/modes/interactive/components/extension-selector.js.map +0 -1
  509. package/dist/modes/interactive/components/footer.d.ts +0 -27
  510. package/dist/modes/interactive/components/footer.d.ts.map +0 -1
  511. package/dist/modes/interactive/components/footer.js +0 -201
  512. package/dist/modes/interactive/components/footer.js.map +0 -1
  513. package/dist/modes/interactive/components/index.d.ts +0 -32
  514. package/dist/modes/interactive/components/index.d.ts.map +0 -1
  515. package/dist/modes/interactive/components/index.js +0 -33
  516. package/dist/modes/interactive/components/index.js.map +0 -1
  517. package/dist/modes/interactive/components/keybinding-hints.d.ts +0 -8
  518. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +0 -1
  519. package/dist/modes/interactive/components/keybinding-hints.js +0 -22
  520. package/dist/modes/interactive/components/keybinding-hints.js.map +0 -1
  521. package/dist/modes/interactive/components/login-dialog.d.ts +0 -42
  522. package/dist/modes/interactive/components/login-dialog.d.ts.map +0 -1
  523. package/dist/modes/interactive/components/login-dialog.js +0 -145
  524. package/dist/modes/interactive/components/login-dialog.js.map +0 -1
  525. package/dist/modes/interactive/components/model-selector.d.ts +0 -47
  526. package/dist/modes/interactive/components/model-selector.d.ts.map +0 -1
  527. package/dist/modes/interactive/components/model-selector.js +0 -278
  528. package/dist/modes/interactive/components/model-selector.js.map +0 -1
  529. package/dist/modes/interactive/components/oauth-selector.d.ts +0 -19
  530. package/dist/modes/interactive/components/oauth-selector.d.ts.map +0 -1
  531. package/dist/modes/interactive/components/oauth-selector.js +0 -97
  532. package/dist/modes/interactive/components/oauth-selector.js.map +0 -1
  533. package/dist/modes/interactive/components/scoped-models-selector.d.ts +0 -42
  534. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +0 -1
  535. package/dist/modes/interactive/components/scoped-models-selector.js +0 -290
  536. package/dist/modes/interactive/components/scoped-models-selector.js.map +0 -1
  537. package/dist/modes/interactive/components/session-selector-search.d.ts +0 -23
  538. package/dist/modes/interactive/components/session-selector-search.d.ts.map +0 -1
  539. package/dist/modes/interactive/components/session-selector-search.js +0 -155
  540. package/dist/modes/interactive/components/session-selector-search.js.map +0 -1
  541. package/dist/modes/interactive/components/session-selector.d.ts +0 -96
  542. package/dist/modes/interactive/components/session-selector.d.ts.map +0 -1
  543. package/dist/modes/interactive/components/session-selector.js +0 -865
  544. package/dist/modes/interactive/components/session-selector.js.map +0 -1
  545. package/dist/modes/interactive/components/settings-selector.d.ts +0 -60
  546. package/dist/modes/interactive/components/settings-selector.d.ts.map +0 -1
  547. package/dist/modes/interactive/components/settings-selector.js +0 -311
  548. package/dist/modes/interactive/components/settings-selector.js.map +0 -1
  549. package/dist/modes/interactive/components/show-images-selector.d.ts +0 -10
  550. package/dist/modes/interactive/components/show-images-selector.d.ts.map +0 -1
  551. package/dist/modes/interactive/components/show-images-selector.js +0 -39
  552. package/dist/modes/interactive/components/show-images-selector.js.map +0 -1
  553. package/dist/modes/interactive/components/skill-invocation-message.d.ts +0 -17
  554. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +0 -1
  555. package/dist/modes/interactive/components/skill-invocation-message.js +0 -47
  556. package/dist/modes/interactive/components/skill-invocation-message.js.map +0 -1
  557. package/dist/modes/interactive/components/theme-selector.d.ts +0 -11
  558. package/dist/modes/interactive/components/theme-selector.d.ts.map +0 -1
  559. package/dist/modes/interactive/components/theme-selector.js +0 -50
  560. package/dist/modes/interactive/components/theme-selector.js.map +0 -1
  561. package/dist/modes/interactive/components/thinking-selector.d.ts +0 -11
  562. package/dist/modes/interactive/components/thinking-selector.d.ts.map +0 -1
  563. package/dist/modes/interactive/components/thinking-selector.js +0 -51
  564. package/dist/modes/interactive/components/thinking-selector.js.map +0 -1
  565. package/dist/modes/interactive/components/tool-execution.d.ts +0 -60
  566. package/dist/modes/interactive/components/tool-execution.d.ts.map +0 -1
  567. package/dist/modes/interactive/components/tool-execution.js +0 -289
  568. package/dist/modes/interactive/components/tool-execution.js.map +0 -1
  569. package/dist/modes/interactive/components/tree-selector.d.ts +0 -89
  570. package/dist/modes/interactive/components/tree-selector.d.ts.map +0 -1
  571. package/dist/modes/interactive/components/tree-selector.js +0 -1092
  572. package/dist/modes/interactive/components/tree-selector.js.map +0 -1
  573. package/dist/modes/interactive/components/user-message-selector.d.ts +0 -30
  574. package/dist/modes/interactive/components/user-message-selector.d.ts.map +0 -1
  575. package/dist/modes/interactive/components/user-message-selector.js +0 -114
  576. package/dist/modes/interactive/components/user-message-selector.js.map +0 -1
  577. package/dist/modes/interactive/components/user-message.d.ts +0 -10
  578. package/dist/modes/interactive/components/user-message.d.ts.map +0 -1
  579. package/dist/modes/interactive/components/user-message.js +0 -29
  580. package/dist/modes/interactive/components/user-message.js.map +0 -1
  581. package/dist/modes/interactive/components/visual-truncate.d.ts +0 -24
  582. package/dist/modes/interactive/components/visual-truncate.d.ts.map +0 -1
  583. package/dist/modes/interactive/components/visual-truncate.js +0 -33
  584. package/dist/modes/interactive/components/visual-truncate.js.map +0 -1
  585. package/dist/modes/interactive/interactive-mode.d.ts +0 -344
  586. package/dist/modes/interactive/interactive-mode.d.ts.map +0 -1
  587. package/dist/modes/interactive/interactive-mode.js +0 -4352
  588. package/dist/modes/interactive/interactive-mode.js.map +0 -1
  589. package/dist/modes/interactive/theme/aery.json +0 -84
  590. package/dist/modes/interactive/theme/catppuccin-mocha.json +0 -81
  591. package/dist/modes/interactive/theme/dark.json +0 -85
  592. package/dist/modes/interactive/theme/dracula.json +0 -81
  593. package/dist/modes/interactive/theme/light.json +0 -84
  594. package/dist/modes/interactive/theme/nord.json +0 -81
  595. package/dist/modes/interactive/theme/theme-schema.json +0 -335
  596. package/dist/modes/interactive/theme/theme.d.ts +0 -81
  597. package/dist/modes/interactive/theme/theme.d.ts.map +0 -1
  598. package/dist/modes/interactive/theme/theme.js +0 -983
  599. package/dist/modes/interactive/theme/theme.js.map +0 -1
  600. package/dist/modes/interactive/theme/tokyo-night.json +0 -81
  601. package/dist/modes/print-mode.d.ts +0 -28
  602. package/dist/modes/print-mode.d.ts.map +0 -1
  603. package/dist/modes/print-mode.js +0 -141
  604. package/dist/modes/print-mode.js.map +0 -1
  605. package/dist/modes/rpc/jsonl.d.ts +0 -17
  606. package/dist/modes/rpc/jsonl.d.ts.map +0 -1
  607. package/dist/modes/rpc/jsonl.js +0 -49
  608. package/dist/modes/rpc/jsonl.js.map +0 -1
  609. package/dist/modes/rpc/rpc-client.d.ts +0 -224
  610. package/dist/modes/rpc/rpc-client.d.ts.map +0 -1
  611. package/dist/modes/rpc/rpc-client.js +0 -410
  612. package/dist/modes/rpc/rpc-client.js.map +0 -1
  613. package/dist/modes/rpc/rpc-mode.d.ts +0 -20
  614. package/dist/modes/rpc/rpc-mode.d.ts.map +0 -1
  615. package/dist/modes/rpc/rpc-mode.js +0 -601
  616. package/dist/modes/rpc/rpc-mode.js.map +0 -1
  617. package/dist/modes/rpc/rpc-types.d.ts +0 -419
  618. package/dist/modes/rpc/rpc-types.d.ts.map +0 -1
  619. package/dist/modes/rpc/rpc-types.js +0 -8
  620. package/dist/modes/rpc/rpc-types.js.map +0 -1
  621. package/dist/package-manager-cli.d.ts +0 -4
  622. package/dist/package-manager-cli.d.ts.map +0 -1
  623. package/dist/package-manager-cli.js +0 -234
  624. package/dist/package-manager-cli.js.map +0 -1
  625. package/dist/utils/changelog.d.ts +0 -21
  626. package/dist/utils/changelog.d.ts.map +0 -1
  627. package/dist/utils/changelog.js +0 -87
  628. package/dist/utils/changelog.js.map +0 -1
  629. package/dist/utils/child-process.d.ts +0 -11
  630. package/dist/utils/child-process.d.ts.map +0 -1
  631. package/dist/utils/child-process.js +0 -78
  632. package/dist/utils/child-process.js.map +0 -1
  633. package/dist/utils/clipboard-image.d.ts +0 -11
  634. package/dist/utils/clipboard-image.d.ts.map +0 -1
  635. package/dist/utils/clipboard-image.js +0 -245
  636. package/dist/utils/clipboard-image.js.map +0 -1
  637. package/dist/utils/clipboard-native.d.ts +0 -8
  638. package/dist/utils/clipboard-native.d.ts.map +0 -1
  639. package/dist/utils/clipboard-native.js +0 -14
  640. package/dist/utils/clipboard-native.js.map +0 -1
  641. package/dist/utils/clipboard.d.ts +0 -2
  642. package/dist/utils/clipboard.d.ts.map +0 -1
  643. package/dist/utils/clipboard.js +0 -78
  644. package/dist/utils/clipboard.js.map +0 -1
  645. package/dist/utils/exif-orientation.d.ts +0 -5
  646. package/dist/utils/exif-orientation.d.ts.map +0 -1
  647. package/dist/utils/exif-orientation.js +0 -158
  648. package/dist/utils/exif-orientation.js.map +0 -1
  649. package/dist/utils/frontmatter.d.ts +0 -8
  650. package/dist/utils/frontmatter.d.ts.map +0 -1
  651. package/dist/utils/frontmatter.js +0 -26
  652. package/dist/utils/frontmatter.js.map +0 -1
  653. package/dist/utils/git.d.ts +0 -26
  654. package/dist/utils/git.d.ts.map +0 -1
  655. package/dist/utils/git.js +0 -163
  656. package/dist/utils/git.js.map +0 -1
  657. package/dist/utils/image-convert.d.ts +0 -9
  658. package/dist/utils/image-convert.d.ts.map +0 -1
  659. package/dist/utils/image-convert.js +0 -39
  660. package/dist/utils/image-convert.js.map +0 -1
  661. package/dist/utils/image-resize.d.ts +0 -36
  662. package/dist/utils/image-resize.d.ts.map +0 -1
  663. package/dist/utils/image-resize.js +0 -137
  664. package/dist/utils/image-resize.js.map +0 -1
  665. package/dist/utils/mime.d.ts +0 -2
  666. package/dist/utils/mime.d.ts.map +0 -1
  667. package/dist/utils/mime.js +0 -26
  668. package/dist/utils/mime.js.map +0 -1
  669. package/dist/utils/paths.d.ts +0 -7
  670. package/dist/utils/paths.d.ts.map +0 -1
  671. package/dist/utils/paths.js +0 -19
  672. package/dist/utils/paths.js.map +0 -1
  673. package/dist/utils/photon.d.ts +0 -21
  674. package/dist/utils/photon.d.ts.map +0 -1
  675. package/dist/utils/photon.js +0 -121
  676. package/dist/utils/photon.js.map +0 -1
  677. package/dist/utils/shell.d.ts +0 -29
  678. package/dist/utils/shell.d.ts.map +0 -1
  679. package/dist/utils/shell.js +0 -203
  680. package/dist/utils/shell.js.map +0 -1
  681. package/dist/utils/sleep.d.ts +0 -5
  682. package/dist/utils/sleep.d.ts.map +0 -1
  683. package/dist/utils/sleep.js +0 -17
  684. package/dist/utils/sleep.js.map +0 -1
  685. package/dist/utils/tools-manager.d.ts +0 -3
  686. package/dist/utils/tools-manager.d.ts.map +0 -1
  687. package/dist/utils/tools-manager.js +0 -252
  688. package/dist/utils/tools-manager.js.map +0 -1
@@ -1,250 +0,0 @@
1
- import { existsSync, readdirSync, readFileSync, statSync } from "fs";
2
- import { homedir } from "os";
3
- import { basename, dirname, isAbsolute, join, resolve, sep } from "path";
4
- import { CONFIG_DIR_NAME } from "../config.js";
5
- import { parseFrontmatter } from "../utils/frontmatter.js";
6
- import { createSyntheticSourceInfo } from "./source-info.js";
7
- /**
8
- * Parse command arguments respecting quoted strings (bash-style)
9
- * Returns array of arguments
10
- */
11
- export function parseCommandArgs(argsString) {
12
- const args = [];
13
- let current = "";
14
- let inQuote = null;
15
- for (let i = 0; i < argsString.length; i++) {
16
- const char = argsString[i];
17
- if (inQuote) {
18
- if (char === inQuote) {
19
- inQuote = null;
20
- }
21
- else {
22
- current += char;
23
- }
24
- }
25
- else if (char === '"' || char === "'") {
26
- inQuote = char;
27
- }
28
- else if (char === " " || char === "\t") {
29
- if (current) {
30
- args.push(current);
31
- current = "";
32
- }
33
- }
34
- else {
35
- current += char;
36
- }
37
- }
38
- if (current) {
39
- args.push(current);
40
- }
41
- return args;
42
- }
43
- /**
44
- * Substitute argument placeholders in template content
45
- * Supports:
46
- * - $1, $2, ... for positional args
47
- * - $@ and $ARGUMENTS for all args
48
- * - ${@:N} for args from Nth onwards (bash-style slicing)
49
- * - ${@:N:L} for L args starting from Nth
50
- *
51
- * Note: Replacement happens on the template string only. Argument values
52
- * containing patterns like $1, $@, or $ARGUMENTS are NOT recursively substituted.
53
- */
54
- export function substituteArgs(content, args) {
55
- let result = content;
56
- // Replace $1, $2, etc. with positional args FIRST (before wildcards)
57
- // This prevents wildcard replacement values containing $<digit> patterns from being re-substituted
58
- result = result.replace(/\$(\d+)/g, (_, num) => {
59
- const index = parseInt(num, 10) - 1;
60
- return args[index] ?? "";
61
- });
62
- // Replace ${@:start} or ${@:start:length} with sliced args (bash-style)
63
- // Process BEFORE simple $@ to avoid conflicts
64
- result = result.replace(/\$\{@:(\d+)(?::(\d+))?\}/g, (_, startStr, lengthStr) => {
65
- let start = parseInt(startStr, 10) - 1; // Convert to 0-indexed (user provides 1-indexed)
66
- // Treat 0 as 1 (bash convention: args start at 1)
67
- if (start < 0)
68
- start = 0;
69
- if (lengthStr) {
70
- const length = parseInt(lengthStr, 10);
71
- return args.slice(start, start + length).join(" ");
72
- }
73
- return args.slice(start).join(" ");
74
- });
75
- // Pre-compute all args joined (optimization)
76
- const allArgs = args.join(" ");
77
- // Replace $ARGUMENTS with all args joined (new syntax, aligns with Claude, Codex, OpenCode)
78
- result = result.replace(/\$ARGUMENTS/g, allArgs);
79
- // Replace $@ with all args joined (existing syntax)
80
- result = result.replace(/\$@/g, allArgs);
81
- return result;
82
- }
83
- function loadTemplateFromFile(filePath, sourceInfo) {
84
- try {
85
- const rawContent = readFileSync(filePath, "utf-8");
86
- const { frontmatter, body } = parseFrontmatter(rawContent);
87
- const name = basename(filePath).replace(/\.md$/, "");
88
- // Get description from frontmatter or first non-empty line
89
- let description = frontmatter.description || "";
90
- if (!description) {
91
- const firstLine = body.split("\n").find((line) => line.trim());
92
- if (firstLine) {
93
- // Truncate if too long
94
- description = firstLine.slice(0, 60);
95
- if (firstLine.length > 60)
96
- description += "...";
97
- }
98
- }
99
- return {
100
- name,
101
- description,
102
- ...(frontmatter["argument-hint"] && { argumentHint: frontmatter["argument-hint"] }),
103
- content: body,
104
- sourceInfo,
105
- filePath,
106
- };
107
- }
108
- catch {
109
- return null;
110
- }
111
- }
112
- /**
113
- * Scan a directory for .md files (non-recursive) and load them as prompt templates.
114
- */
115
- function loadTemplatesFromDir(dir, getSourceInfo) {
116
- const templates = [];
117
- if (!existsSync(dir)) {
118
- return templates;
119
- }
120
- try {
121
- const entries = readdirSync(dir, { withFileTypes: true });
122
- for (const entry of entries) {
123
- const fullPath = join(dir, entry.name);
124
- // For symlinks, check if they point to a file
125
- let isFile = entry.isFile();
126
- if (entry.isSymbolicLink()) {
127
- try {
128
- const stats = statSync(fullPath);
129
- isFile = stats.isFile();
130
- }
131
- catch {
132
- // Broken symlink, skip it
133
- continue;
134
- }
135
- }
136
- if (isFile && entry.name.endsWith(".md")) {
137
- const template = loadTemplateFromFile(fullPath, getSourceInfo(fullPath));
138
- if (template) {
139
- templates.push(template);
140
- }
141
- }
142
- }
143
- }
144
- catch {
145
- return templates;
146
- }
147
- return templates;
148
- }
149
- function normalizePath(input) {
150
- const trimmed = input.trim();
151
- if (trimmed === "~")
152
- return homedir();
153
- if (trimmed.startsWith("~/"))
154
- return join(homedir(), trimmed.slice(2));
155
- if (trimmed.startsWith("~"))
156
- return join(homedir(), trimmed.slice(1));
157
- return trimmed;
158
- }
159
- function resolvePromptPath(p, cwd) {
160
- const normalized = normalizePath(p);
161
- return isAbsolute(normalized) ? normalized : resolve(cwd, normalized);
162
- }
163
- /**
164
- * Load all prompt templates from:
165
- * 1. Global: agentDir/prompts/
166
- * 2. Project: cwd/{CONFIG_DIR_NAME}/prompts/
167
- * 3. Explicit prompt paths
168
- */
169
- export function loadPromptTemplates(options) {
170
- const resolvedCwd = options.cwd;
171
- const resolvedAgentDir = options.agentDir;
172
- const promptPaths = options.promptPaths;
173
- const includeDefaults = options.includeDefaults;
174
- const templates = [];
175
- const globalPromptsDir = options.agentDir ? join(options.agentDir, "prompts") : resolvedAgentDir;
176
- const projectPromptsDir = resolve(resolvedCwd, CONFIG_DIR_NAME, "prompts");
177
- const isUnderPath = (target, root) => {
178
- const normalizedRoot = resolve(root);
179
- if (target === normalizedRoot) {
180
- return true;
181
- }
182
- const prefix = normalizedRoot.endsWith(sep) ? normalizedRoot : `${normalizedRoot}${sep}`;
183
- return target.startsWith(prefix);
184
- };
185
- const getSourceInfo = (resolvedPath) => {
186
- if (isUnderPath(resolvedPath, globalPromptsDir)) {
187
- return createSyntheticSourceInfo(resolvedPath, {
188
- source: "local",
189
- scope: "user",
190
- baseDir: globalPromptsDir,
191
- });
192
- }
193
- if (isUnderPath(resolvedPath, projectPromptsDir)) {
194
- return createSyntheticSourceInfo(resolvedPath, {
195
- source: "local",
196
- scope: "project",
197
- baseDir: projectPromptsDir,
198
- });
199
- }
200
- return createSyntheticSourceInfo(resolvedPath, {
201
- source: "local",
202
- baseDir: statSync(resolvedPath).isDirectory() ? resolvedPath : dirname(resolvedPath),
203
- });
204
- };
205
- if (includeDefaults) {
206
- templates.push(...loadTemplatesFromDir(globalPromptsDir, getSourceInfo));
207
- templates.push(...loadTemplatesFromDir(projectPromptsDir, getSourceInfo));
208
- }
209
- // 3. Load explicit prompt paths
210
- for (const rawPath of promptPaths) {
211
- const resolvedPath = resolvePromptPath(rawPath, resolvedCwd);
212
- if (!existsSync(resolvedPath)) {
213
- continue;
214
- }
215
- try {
216
- const stats = statSync(resolvedPath);
217
- if (stats.isDirectory()) {
218
- templates.push(...loadTemplatesFromDir(resolvedPath, getSourceInfo));
219
- }
220
- else if (stats.isFile() && resolvedPath.endsWith(".md")) {
221
- const template = loadTemplateFromFile(resolvedPath, getSourceInfo(resolvedPath));
222
- if (template) {
223
- templates.push(template);
224
- }
225
- }
226
- }
227
- catch {
228
- // Ignore read failures
229
- }
230
- }
231
- return templates;
232
- }
233
- /**
234
- * Expand a prompt template if it matches a template name.
235
- * Returns the expanded content or the original text if not a template.
236
- */
237
- export function expandPromptTemplate(text, templates) {
238
- if (!text.startsWith("/"))
239
- return text;
240
- const spaceIndex = text.indexOf(" ");
241
- const templateName = spaceIndex === -1 ? text.slice(1) : text.slice(1, spaceIndex);
242
- const argsString = spaceIndex === -1 ? "" : text.slice(spaceIndex + 1);
243
- const template = templates.find((t) => t.name === templateName);
244
- if (template) {
245
- const args = parseCommandArgs(argsString);
246
- return substituteArgs(template.content, args);
247
- }
248
- return text;
249
- }
250
- //# sourceMappingURL=prompt-templates.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompt-templates.js","sourceRoot":"","sources":["../../src/core/prompt-templates.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, readdirSync, readFileSync, statSync } from \"fs\";\nimport { homedir } from \"os\";\nimport { basename, dirname, isAbsolute, join, resolve, sep } from \"path\";\nimport { CONFIG_DIR_NAME } from \"../config.js\";\nimport { parseFrontmatter } from \"../utils/frontmatter.js\";\nimport { createSyntheticSourceInfo, type SourceInfo } from \"./source-info.js\";\n\n/**\n * Represents a prompt template loaded from a markdown file\n */\nexport interface PromptTemplate {\n\tname: string;\n\tdescription: string;\n\targumentHint?: string;\n\tcontent: string;\n\tsourceInfo: SourceInfo;\n\tfilePath: string; // Absolute path to the template file\n}\n\n/**\n * Parse command arguments respecting quoted strings (bash-style)\n * Returns array of arguments\n */\nexport function parseCommandArgs(argsString: string): string[] {\n\tconst args: string[] = [];\n\tlet current = \"\";\n\tlet inQuote: string | null = null;\n\n\tfor (let i = 0; i < argsString.length; i++) {\n\t\tconst char = argsString[i];\n\n\t\tif (inQuote) {\n\t\t\tif (char === inQuote) {\n\t\t\t\tinQuote = null;\n\t\t\t} else {\n\t\t\t\tcurrent += char;\n\t\t\t}\n\t\t} else if (char === '\"' || char === \"'\") {\n\t\t\tinQuote = char;\n\t\t} else if (char === \" \" || char === \"\\t\") {\n\t\t\tif (current) {\n\t\t\t\targs.push(current);\n\t\t\t\tcurrent = \"\";\n\t\t\t}\n\t\t} else {\n\t\t\tcurrent += char;\n\t\t}\n\t}\n\n\tif (current) {\n\t\targs.push(current);\n\t}\n\n\treturn args;\n}\n\n/**\n * Substitute argument placeholders in template content\n * Supports:\n * - $1, $2, ... for positional args\n * - $@ and $ARGUMENTS for all args\n * - ${@:N} for args from Nth onwards (bash-style slicing)\n * - ${@:N:L} for L args starting from Nth\n *\n * Note: Replacement happens on the template string only. Argument values\n * containing patterns like $1, $@, or $ARGUMENTS are NOT recursively substituted.\n */\nexport function substituteArgs(content: string, args: string[]): string {\n\tlet result = content;\n\n\t// Replace $1, $2, etc. with positional args FIRST (before wildcards)\n\t// This prevents wildcard replacement values containing $<digit> patterns from being re-substituted\n\tresult = result.replace(/\\$(\\d+)/g, (_, num) => {\n\t\tconst index = parseInt(num, 10) - 1;\n\t\treturn args[index] ?? \"\";\n\t});\n\n\t// Replace ${@:start} or ${@:start:length} with sliced args (bash-style)\n\t// Process BEFORE simple $@ to avoid conflicts\n\tresult = result.replace(/\\$\\{@:(\\d+)(?::(\\d+))?\\}/g, (_, startStr, lengthStr) => {\n\t\tlet start = parseInt(startStr, 10) - 1; // Convert to 0-indexed (user provides 1-indexed)\n\t\t// Treat 0 as 1 (bash convention: args start at 1)\n\t\tif (start < 0) start = 0;\n\n\t\tif (lengthStr) {\n\t\t\tconst length = parseInt(lengthStr, 10);\n\t\t\treturn args.slice(start, start + length).join(\" \");\n\t\t}\n\t\treturn args.slice(start).join(\" \");\n\t});\n\n\t// Pre-compute all args joined (optimization)\n\tconst allArgs = args.join(\" \");\n\n\t// Replace $ARGUMENTS with all args joined (new syntax, aligns with Claude, Codex, OpenCode)\n\tresult = result.replace(/\\$ARGUMENTS/g, allArgs);\n\n\t// Replace $@ with all args joined (existing syntax)\n\tresult = result.replace(/\\$@/g, allArgs);\n\n\treturn result;\n}\n\nfunction loadTemplateFromFile(filePath: string, sourceInfo: SourceInfo): PromptTemplate | null {\n\ttry {\n\t\tconst rawContent = readFileSync(filePath, \"utf-8\");\n\t\tconst { frontmatter, body } = parseFrontmatter<Record<string, string>>(rawContent);\n\n\t\tconst name = basename(filePath).replace(/\\.md$/, \"\");\n\n\t\t// Get description from frontmatter or first non-empty line\n\t\tlet description = frontmatter.description || \"\";\n\t\tif (!description) {\n\t\t\tconst firstLine = body.split(\"\\n\").find((line) => line.trim());\n\t\t\tif (firstLine) {\n\t\t\t\t// Truncate if too long\n\t\t\t\tdescription = firstLine.slice(0, 60);\n\t\t\t\tif (firstLine.length > 60) description += \"...\";\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tname,\n\t\t\tdescription,\n\t\t\t...(frontmatter[\"argument-hint\"] && { argumentHint: frontmatter[\"argument-hint\"] }),\n\t\t\tcontent: body,\n\t\t\tsourceInfo,\n\t\t\tfilePath,\n\t\t};\n\t} catch {\n\t\treturn null;\n\t}\n}\n\n/**\n * Scan a directory for .md files (non-recursive) and load them as prompt templates.\n */\nfunction loadTemplatesFromDir(dir: string, getSourceInfo: (filePath: string) => SourceInfo): PromptTemplate[] {\n\tconst templates: PromptTemplate[] = [];\n\n\tif (!existsSync(dir)) {\n\t\treturn templates;\n\t}\n\n\ttry {\n\t\tconst entries = readdirSync(dir, { withFileTypes: true });\n\n\t\tfor (const entry of entries) {\n\t\t\tconst fullPath = join(dir, entry.name);\n\n\t\t\t// For symlinks, check if they point to a file\n\t\t\tlet isFile = entry.isFile();\n\t\t\tif (entry.isSymbolicLink()) {\n\t\t\t\ttry {\n\t\t\t\t\tconst stats = statSync(fullPath);\n\t\t\t\t\tisFile = stats.isFile();\n\t\t\t\t} catch {\n\t\t\t\t\t// Broken symlink, skip it\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (isFile && entry.name.endsWith(\".md\")) {\n\t\t\t\tconst template = loadTemplateFromFile(fullPath, getSourceInfo(fullPath));\n\t\t\t\tif (template) {\n\t\t\t\t\ttemplates.push(template);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} catch {\n\t\treturn templates;\n\t}\n\n\treturn templates;\n}\n\nexport interface LoadPromptTemplatesOptions {\n\t/** Working directory for project-local templates. */\n\tcwd: string;\n\t/** Agent config directory for global templates. */\n\tagentDir: string;\n\t/** Explicit prompt template paths (files or directories). */\n\tpromptPaths: string[];\n\t/** Include default prompt directories. */\n\tincludeDefaults: boolean;\n}\n\nfunction normalizePath(input: string): string {\n\tconst trimmed = input.trim();\n\tif (trimmed === \"~\") return homedir();\n\tif (trimmed.startsWith(\"~/\")) return join(homedir(), trimmed.slice(2));\n\tif (trimmed.startsWith(\"~\")) return join(homedir(), trimmed.slice(1));\n\treturn trimmed;\n}\n\nfunction resolvePromptPath(p: string, cwd: string): string {\n\tconst normalized = normalizePath(p);\n\treturn isAbsolute(normalized) ? normalized : resolve(cwd, normalized);\n}\n\n/**\n * Load all prompt templates from:\n * 1. Global: agentDir/prompts/\n * 2. Project: cwd/{CONFIG_DIR_NAME}/prompts/\n * 3. Explicit prompt paths\n */\nexport function loadPromptTemplates(options: LoadPromptTemplatesOptions): PromptTemplate[] {\n\tconst resolvedCwd = options.cwd;\n\tconst resolvedAgentDir = options.agentDir;\n\tconst promptPaths = options.promptPaths;\n\tconst includeDefaults = options.includeDefaults;\n\n\tconst templates: PromptTemplate[] = [];\n\n\tconst globalPromptsDir = options.agentDir ? join(options.agentDir, \"prompts\") : resolvedAgentDir;\n\tconst projectPromptsDir = resolve(resolvedCwd, CONFIG_DIR_NAME, \"prompts\");\n\n\tconst isUnderPath = (target: string, root: string): boolean => {\n\t\tconst normalizedRoot = resolve(root);\n\t\tif (target === normalizedRoot) {\n\t\t\treturn true;\n\t\t}\n\t\tconst prefix = normalizedRoot.endsWith(sep) ? normalizedRoot : `${normalizedRoot}${sep}`;\n\t\treturn target.startsWith(prefix);\n\t};\n\n\tconst getSourceInfo = (resolvedPath: string): SourceInfo => {\n\t\tif (isUnderPath(resolvedPath, globalPromptsDir)) {\n\t\t\treturn createSyntheticSourceInfo(resolvedPath, {\n\t\t\t\tsource: \"local\",\n\t\t\t\tscope: \"user\",\n\t\t\t\tbaseDir: globalPromptsDir,\n\t\t\t});\n\t\t}\n\t\tif (isUnderPath(resolvedPath, projectPromptsDir)) {\n\t\t\treturn createSyntheticSourceInfo(resolvedPath, {\n\t\t\t\tsource: \"local\",\n\t\t\t\tscope: \"project\",\n\t\t\t\tbaseDir: projectPromptsDir,\n\t\t\t});\n\t\t}\n\t\treturn createSyntheticSourceInfo(resolvedPath, {\n\t\t\tsource: \"local\",\n\t\t\tbaseDir: statSync(resolvedPath).isDirectory() ? resolvedPath : dirname(resolvedPath),\n\t\t});\n\t};\n\n\tif (includeDefaults) {\n\t\ttemplates.push(...loadTemplatesFromDir(globalPromptsDir, getSourceInfo));\n\t\ttemplates.push(...loadTemplatesFromDir(projectPromptsDir, getSourceInfo));\n\t}\n\n\t// 3. Load explicit prompt paths\n\tfor (const rawPath of promptPaths) {\n\t\tconst resolvedPath = resolvePromptPath(rawPath, resolvedCwd);\n\t\tif (!existsSync(resolvedPath)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\ttry {\n\t\t\tconst stats = statSync(resolvedPath);\n\t\t\tif (stats.isDirectory()) {\n\t\t\t\ttemplates.push(...loadTemplatesFromDir(resolvedPath, getSourceInfo));\n\t\t\t} else if (stats.isFile() && resolvedPath.endsWith(\".md\")) {\n\t\t\t\tconst template = loadTemplateFromFile(resolvedPath, getSourceInfo(resolvedPath));\n\t\t\t\tif (template) {\n\t\t\t\t\ttemplates.push(template);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch {\n\t\t\t// Ignore read failures\n\t\t}\n\t}\n\n\treturn templates;\n}\n\n/**\n * Expand a prompt template if it matches a template name.\n * Returns the expanded content or the original text if not a template.\n */\nexport function expandPromptTemplate(text: string, templates: PromptTemplate[]): string {\n\tif (!text.startsWith(\"/\")) return text;\n\n\tconst spaceIndex = text.indexOf(\" \");\n\tconst templateName = spaceIndex === -1 ? text.slice(1) : text.slice(1, spaceIndex);\n\tconst argsString = spaceIndex === -1 ? \"\" : text.slice(spaceIndex + 1);\n\n\tconst template = templates.find((t) => t.name === templateName);\n\tif (template) {\n\t\tconst args = parseCommandArgs(argsString);\n\t\treturn substituteArgs(template.content, args);\n\t}\n\n\treturn text;\n}\n"]}
@@ -1,23 +0,0 @@
1
- /**
2
- * Resolve configuration values that may be shell commands, environment variables, or literals.
3
- * Used by auth-storage.ts and model-registry.ts.
4
- */
5
- /**
6
- * Resolve a config value (API key, header value, etc.) to an actual value.
7
- * - If starts with "!", executes the rest as a shell command and uses stdout (cached)
8
- * - Otherwise checks environment variable first, then treats as literal (not cached)
9
- */
10
- export declare function resolveConfigValue(config: string): string | undefined;
11
- /**
12
- * Resolve all header values using the same resolution logic as API keys.
13
- */
14
- export declare function resolveConfigValueUncached(config: string): string | undefined;
15
- export declare function resolveConfigValueOrThrow(config: string, description: string): string;
16
- /**
17
- * Resolve all header values using the same resolution logic as API keys.
18
- */
19
- export declare function resolveHeaders(headers: Record<string, string> | undefined): Record<string, string> | undefined;
20
- export declare function resolveHeadersOrThrow(headers: Record<string, string> | undefined, description: string): Record<string, string> | undefined;
21
- /** Clear the config value command cache. Exported for testing. */
22
- export declare function clearConfigValueCache(): void;
23
- //# sourceMappingURL=resolve-config-value.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve-config-value.d.ts","sourceRoot":"","sources":["../../src/core/resolve-config-value.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMrE;AAiED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAM7E;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAWrF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAU9G;AAED,wBAAgB,qBAAqB,CACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAC3C,WAAW,EAAE,MAAM,GACjB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAOpC;AAED,kEAAkE;AAClE,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C","sourcesContent":["/**\n * Resolve configuration values that may be shell commands, environment variables, or literals.\n * Used by auth-storage.ts and model-registry.ts.\n */\n\nimport { execSync, spawnSync } from \"child_process\";\nimport { getShellConfig } from \"../utils/shell.js\";\n\n// Cache for shell command results (persists for process lifetime)\nconst commandResultCache = new Map<string, string | undefined>();\n\n/**\n * Resolve a config value (API key, header value, etc.) to an actual value.\n * - If starts with \"!\", executes the rest as a shell command and uses stdout (cached)\n * - Otherwise checks environment variable first, then treats as literal (not cached)\n */\nexport function resolveConfigValue(config: string): string | undefined {\n\tif (config.startsWith(\"!\")) {\n\t\treturn executeCommand(config);\n\t}\n\tconst envValue = process.env[config];\n\treturn envValue || config;\n}\n\nfunction executeWithConfiguredShell(command: string): { executed: boolean; value: string | undefined } {\n\ttry {\n\t\tconst { shell, args } = getShellConfig();\n\t\tconst result = spawnSync(shell, [...args, command], {\n\t\t\tencoding: \"utf-8\",\n\t\t\ttimeout: 10000,\n\t\t\tstdio: [\"ignore\", \"pipe\", \"ignore\"],\n\t\t\tshell: false,\n\t\t\twindowsHide: true,\n\t\t});\n\n\t\tif (result.error) {\n\t\t\tconst error = result.error as NodeJS.ErrnoException;\n\t\t\tif (error.code === \"ENOENT\") {\n\t\t\t\treturn { executed: false, value: undefined };\n\t\t\t}\n\t\t\treturn { executed: true, value: undefined };\n\t\t}\n\n\t\tif (result.status !== 0) {\n\t\t\treturn { executed: true, value: undefined };\n\t\t}\n\n\t\tconst value = (result.stdout ?? \"\").trim();\n\t\treturn { executed: true, value: value || undefined };\n\t} catch {\n\t\treturn { executed: false, value: undefined };\n\t}\n}\n\nfunction executeWithDefaultShell(command: string): string | undefined {\n\ttry {\n\t\tconst output = execSync(command, {\n\t\t\tencoding: \"utf-8\",\n\t\t\ttimeout: 10000,\n\t\t\tstdio: [\"ignore\", \"pipe\", \"ignore\"],\n\t\t});\n\t\treturn output.trim() || undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction executeCommandUncached(commandConfig: string): string | undefined {\n\tconst command = commandConfig.slice(1);\n\treturn process.platform === \"win32\"\n\t\t? (() => {\n\t\t\t\tconst configuredResult = executeWithConfiguredShell(command);\n\t\t\t\treturn configuredResult.executed ? configuredResult.value : executeWithDefaultShell(command);\n\t\t\t})()\n\t\t: executeWithDefaultShell(command);\n}\n\nfunction executeCommand(commandConfig: string): string | undefined {\n\tif (commandResultCache.has(commandConfig)) {\n\t\treturn commandResultCache.get(commandConfig);\n\t}\n\n\tconst result = executeCommandUncached(commandConfig);\n\tcommandResultCache.set(commandConfig, result);\n\treturn result;\n}\n\n/**\n * Resolve all header values using the same resolution logic as API keys.\n */\nexport function resolveConfigValueUncached(config: string): string | undefined {\n\tif (config.startsWith(\"!\")) {\n\t\treturn executeCommandUncached(config);\n\t}\n\tconst envValue = process.env[config];\n\treturn envValue || config;\n}\n\nexport function resolveConfigValueOrThrow(config: string, description: string): string {\n\tconst resolvedValue = resolveConfigValueUncached(config);\n\tif (resolvedValue !== undefined) {\n\t\treturn resolvedValue;\n\t}\n\n\tif (config.startsWith(\"!\")) {\n\t\tthrow new Error(`Failed to resolve ${description} from shell command: ${config.slice(1)}`);\n\t}\n\n\tthrow new Error(`Failed to resolve ${description}`);\n}\n\n/**\n * Resolve all header values using the same resolution logic as API keys.\n */\nexport function resolveHeaders(headers: Record<string, string> | undefined): Record<string, string> | undefined {\n\tif (!headers) return undefined;\n\tconst resolved: Record<string, string> = {};\n\tfor (const [key, value] of Object.entries(headers)) {\n\t\tconst resolvedValue = resolveConfigValue(value);\n\t\tif (resolvedValue) {\n\t\t\tresolved[key] = resolvedValue;\n\t\t}\n\t}\n\treturn Object.keys(resolved).length > 0 ? resolved : undefined;\n}\n\nexport function resolveHeadersOrThrow(\n\theaders: Record<string, string> | undefined,\n\tdescription: string,\n): Record<string, string> | undefined {\n\tif (!headers) return undefined;\n\tconst resolved: Record<string, string> = {};\n\tfor (const [key, value] of Object.entries(headers)) {\n\t\tresolved[key] = resolveConfigValueOrThrow(value, `${description} header \"${key}\"`);\n\t}\n\treturn Object.keys(resolved).length > 0 ? resolved : undefined;\n}\n\n/** Clear the config value command cache. Exported for testing. */\nexport function clearConfigValueCache(): void {\n\tcommandResultCache.clear();\n}\n"]}
@@ -1,126 +0,0 @@
1
- /**
2
- * Resolve configuration values that may be shell commands, environment variables, or literals.
3
- * Used by auth-storage.ts and model-registry.ts.
4
- */
5
- import { execSync, spawnSync } from "child_process";
6
- import { getShellConfig } from "../utils/shell.js";
7
- // Cache for shell command results (persists for process lifetime)
8
- const commandResultCache = new Map();
9
- /**
10
- * Resolve a config value (API key, header value, etc.) to an actual value.
11
- * - If starts with "!", executes the rest as a shell command and uses stdout (cached)
12
- * - Otherwise checks environment variable first, then treats as literal (not cached)
13
- */
14
- export function resolveConfigValue(config) {
15
- if (config.startsWith("!")) {
16
- return executeCommand(config);
17
- }
18
- const envValue = process.env[config];
19
- return envValue || config;
20
- }
21
- function executeWithConfiguredShell(command) {
22
- try {
23
- const { shell, args } = getShellConfig();
24
- const result = spawnSync(shell, [...args, command], {
25
- encoding: "utf-8",
26
- timeout: 10000,
27
- stdio: ["ignore", "pipe", "ignore"],
28
- shell: false,
29
- windowsHide: true,
30
- });
31
- if (result.error) {
32
- const error = result.error;
33
- if (error.code === "ENOENT") {
34
- return { executed: false, value: undefined };
35
- }
36
- return { executed: true, value: undefined };
37
- }
38
- if (result.status !== 0) {
39
- return { executed: true, value: undefined };
40
- }
41
- const value = (result.stdout ?? "").trim();
42
- return { executed: true, value: value || undefined };
43
- }
44
- catch {
45
- return { executed: false, value: undefined };
46
- }
47
- }
48
- function executeWithDefaultShell(command) {
49
- try {
50
- const output = execSync(command, {
51
- encoding: "utf-8",
52
- timeout: 10000,
53
- stdio: ["ignore", "pipe", "ignore"],
54
- });
55
- return output.trim() || undefined;
56
- }
57
- catch {
58
- return undefined;
59
- }
60
- }
61
- function executeCommandUncached(commandConfig) {
62
- const command = commandConfig.slice(1);
63
- return process.platform === "win32"
64
- ? (() => {
65
- const configuredResult = executeWithConfiguredShell(command);
66
- return configuredResult.executed ? configuredResult.value : executeWithDefaultShell(command);
67
- })()
68
- : executeWithDefaultShell(command);
69
- }
70
- function executeCommand(commandConfig) {
71
- if (commandResultCache.has(commandConfig)) {
72
- return commandResultCache.get(commandConfig);
73
- }
74
- const result = executeCommandUncached(commandConfig);
75
- commandResultCache.set(commandConfig, result);
76
- return result;
77
- }
78
- /**
79
- * Resolve all header values using the same resolution logic as API keys.
80
- */
81
- export function resolveConfigValueUncached(config) {
82
- if (config.startsWith("!")) {
83
- return executeCommandUncached(config);
84
- }
85
- const envValue = process.env[config];
86
- return envValue || config;
87
- }
88
- export function resolveConfigValueOrThrow(config, description) {
89
- const resolvedValue = resolveConfigValueUncached(config);
90
- if (resolvedValue !== undefined) {
91
- return resolvedValue;
92
- }
93
- if (config.startsWith("!")) {
94
- throw new Error(`Failed to resolve ${description} from shell command: ${config.slice(1)}`);
95
- }
96
- throw new Error(`Failed to resolve ${description}`);
97
- }
98
- /**
99
- * Resolve all header values using the same resolution logic as API keys.
100
- */
101
- export function resolveHeaders(headers) {
102
- if (!headers)
103
- return undefined;
104
- const resolved = {};
105
- for (const [key, value] of Object.entries(headers)) {
106
- const resolvedValue = resolveConfigValue(value);
107
- if (resolvedValue) {
108
- resolved[key] = resolvedValue;
109
- }
110
- }
111
- return Object.keys(resolved).length > 0 ? resolved : undefined;
112
- }
113
- export function resolveHeadersOrThrow(headers, description) {
114
- if (!headers)
115
- return undefined;
116
- const resolved = {};
117
- for (const [key, value] of Object.entries(headers)) {
118
- resolved[key] = resolveConfigValueOrThrow(value, `${description} header "${key}"`);
119
- }
120
- return Object.keys(resolved).length > 0 ? resolved : undefined;
121
- }
122
- /** Clear the config value command cache. Exported for testing. */
123
- export function clearConfigValueCache() {
124
- commandResultCache.clear();
125
- }
126
- //# sourceMappingURL=resolve-config-value.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve-config-value.js","sourceRoot":"","sources":["../../src/core/resolve-config-value.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,kEAAkE;AAClE,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAA8B,CAAC;AAEjE;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAsB;IACtE,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO,QAAQ,IAAI,MAAM,CAAC;AAAA,CAC1B;AAED,SAAS,0BAA0B,CAAC,OAAe,EAAoD;IACtG,IAAI,CAAC;QACJ,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,cAAc,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE;YACnD,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;YACnC,KAAK,EAAE,KAAK;YACZ,WAAW,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG,MAAM,CAAC,KAA8B,CAAC;YACpD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;YAC9C,CAAC;YACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC7C,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC7C,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3C,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,SAAS,EAAE,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAC9C,CAAC;AAAA,CACD;AAED,SAAS,uBAAuB,CAAC,OAAe,EAAsB;IACrE,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,EAAE;YAChC,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACnC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,SAAS,CAAC;IAClB,CAAC;AAAA,CACD;AAED,SAAS,sBAAsB,CAAC,aAAqB,EAAsB;IAC1E,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO;QAClC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YACP,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;YAC7D,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAAA,CAC7F,CAAC,EAAE;QACL,CAAC,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAAA,CACpC;AAED,SAAS,cAAc,CAAC,aAAqB,EAAsB;IAClE,IAAI,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;QAC3C,OAAO,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,MAAM,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;IACrD,kBAAkB,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC9C,OAAO,MAAM,CAAC;AAAA,CACd;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAc,EAAsB;IAC9E,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO,QAAQ,IAAI,MAAM,CAAC;AAAA,CAC1B;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAc,EAAE,WAAmB,EAAU;IACtF,MAAM,aAAa,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACzD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,aAAa,CAAC;IACtB,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,qBAAqB,WAAW,wBAAwB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,qBAAqB,WAAW,EAAE,CAAC,CAAC;AAAA,CACpD;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAA2C,EAAsC;IAC/G,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,MAAM,aAAa,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,aAAa,EAAE,CAAC;YACnB,QAAQ,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC;QAC/B,CAAC;IACF,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AAAA,CAC/D;AAED,MAAM,UAAU,qBAAqB,CACpC,OAA2C,EAC3C,WAAmB,EACkB;IACrC,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,QAAQ,CAAC,GAAG,CAAC,GAAG,yBAAyB,CAAC,KAAK,EAAE,GAAG,WAAW,YAAY,GAAG,GAAG,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AAAA,CAC/D;AAED,kEAAkE;AAClE,MAAM,UAAU,qBAAqB,GAAS;IAC7C,kBAAkB,CAAC,KAAK,EAAE,CAAC;AAAA,CAC3B","sourcesContent":["/**\n * Resolve configuration values that may be shell commands, environment variables, or literals.\n * Used by auth-storage.ts and model-registry.ts.\n */\n\nimport { execSync, spawnSync } from \"child_process\";\nimport { getShellConfig } from \"../utils/shell.js\";\n\n// Cache for shell command results (persists for process lifetime)\nconst commandResultCache = new Map<string, string | undefined>();\n\n/**\n * Resolve a config value (API key, header value, etc.) to an actual value.\n * - If starts with \"!\", executes the rest as a shell command and uses stdout (cached)\n * - Otherwise checks environment variable first, then treats as literal (not cached)\n */\nexport function resolveConfigValue(config: string): string | undefined {\n\tif (config.startsWith(\"!\")) {\n\t\treturn executeCommand(config);\n\t}\n\tconst envValue = process.env[config];\n\treturn envValue || config;\n}\n\nfunction executeWithConfiguredShell(command: string): { executed: boolean; value: string | undefined } {\n\ttry {\n\t\tconst { shell, args } = getShellConfig();\n\t\tconst result = spawnSync(shell, [...args, command], {\n\t\t\tencoding: \"utf-8\",\n\t\t\ttimeout: 10000,\n\t\t\tstdio: [\"ignore\", \"pipe\", \"ignore\"],\n\t\t\tshell: false,\n\t\t\twindowsHide: true,\n\t\t});\n\n\t\tif (result.error) {\n\t\t\tconst error = result.error as NodeJS.ErrnoException;\n\t\t\tif (error.code === \"ENOENT\") {\n\t\t\t\treturn { executed: false, value: undefined };\n\t\t\t}\n\t\t\treturn { executed: true, value: undefined };\n\t\t}\n\n\t\tif (result.status !== 0) {\n\t\t\treturn { executed: true, value: undefined };\n\t\t}\n\n\t\tconst value = (result.stdout ?? \"\").trim();\n\t\treturn { executed: true, value: value || undefined };\n\t} catch {\n\t\treturn { executed: false, value: undefined };\n\t}\n}\n\nfunction executeWithDefaultShell(command: string): string | undefined {\n\ttry {\n\t\tconst output = execSync(command, {\n\t\t\tencoding: \"utf-8\",\n\t\t\ttimeout: 10000,\n\t\t\tstdio: [\"ignore\", \"pipe\", \"ignore\"],\n\t\t});\n\t\treturn output.trim() || undefined;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction executeCommandUncached(commandConfig: string): string | undefined {\n\tconst command = commandConfig.slice(1);\n\treturn process.platform === \"win32\"\n\t\t? (() => {\n\t\t\t\tconst configuredResult = executeWithConfiguredShell(command);\n\t\t\t\treturn configuredResult.executed ? configuredResult.value : executeWithDefaultShell(command);\n\t\t\t})()\n\t\t: executeWithDefaultShell(command);\n}\n\nfunction executeCommand(commandConfig: string): string | undefined {\n\tif (commandResultCache.has(commandConfig)) {\n\t\treturn commandResultCache.get(commandConfig);\n\t}\n\n\tconst result = executeCommandUncached(commandConfig);\n\tcommandResultCache.set(commandConfig, result);\n\treturn result;\n}\n\n/**\n * Resolve all header values using the same resolution logic as API keys.\n */\nexport function resolveConfigValueUncached(config: string): string | undefined {\n\tif (config.startsWith(\"!\")) {\n\t\treturn executeCommandUncached(config);\n\t}\n\tconst envValue = process.env[config];\n\treturn envValue || config;\n}\n\nexport function resolveConfigValueOrThrow(config: string, description: string): string {\n\tconst resolvedValue = resolveConfigValueUncached(config);\n\tif (resolvedValue !== undefined) {\n\t\treturn resolvedValue;\n\t}\n\n\tif (config.startsWith(\"!\")) {\n\t\tthrow new Error(`Failed to resolve ${description} from shell command: ${config.slice(1)}`);\n\t}\n\n\tthrow new Error(`Failed to resolve ${description}`);\n}\n\n/**\n * Resolve all header values using the same resolution logic as API keys.\n */\nexport function resolveHeaders(headers: Record<string, string> | undefined): Record<string, string> | undefined {\n\tif (!headers) return undefined;\n\tconst resolved: Record<string, string> = {};\n\tfor (const [key, value] of Object.entries(headers)) {\n\t\tconst resolvedValue = resolveConfigValue(value);\n\t\tif (resolvedValue) {\n\t\t\tresolved[key] = resolvedValue;\n\t\t}\n\t}\n\treturn Object.keys(resolved).length > 0 ? resolved : undefined;\n}\n\nexport function resolveHeadersOrThrow(\n\theaders: Record<string, string> | undefined,\n\tdescription: string,\n): Record<string, string> | undefined {\n\tif (!headers) return undefined;\n\tconst resolved: Record<string, string> = {};\n\tfor (const [key, value] of Object.entries(headers)) {\n\t\tresolved[key] = resolveConfigValueOrThrow(value, `${description} header \"${key}\"`);\n\t}\n\treturn Object.keys(resolved).length > 0 ? resolved : undefined;\n}\n\n/** Clear the config value command cache. Exported for testing. */\nexport function clearConfigValueCache(): void {\n\tcommandResultCache.clear();\n}\n"]}
@@ -1,194 +0,0 @@
1
- import { type Theme } from "../modes/interactive/theme/theme.js";
2
- import type { ResourceDiagnostic } from "./diagnostics.js";
3
- export type { ResourceCollision, ResourceDiagnostic } from "./diagnostics.js";
4
- import { type EventBus } from "./event-bus.js";
5
- import type { ExtensionFactory, LoadExtensionsResult } from "./extensions/types.js";
6
- import { type PathMetadata } from "./package-manager.js";
7
- import type { PromptTemplate } from "./prompt-templates.js";
8
- import { SettingsManager } from "./settings-manager.js";
9
- import type { Skill } from "./skills.js";
10
- export interface ResourceExtensionPaths {
11
- skillPaths?: Array<{
12
- path: string;
13
- metadata: PathMetadata;
14
- }>;
15
- promptPaths?: Array<{
16
- path: string;
17
- metadata: PathMetadata;
18
- }>;
19
- themePaths?: Array<{
20
- path: string;
21
- metadata: PathMetadata;
22
- }>;
23
- }
24
- export interface ResourceLoader {
25
- getExtensions(): LoadExtensionsResult;
26
- getSkills(): {
27
- skills: Skill[];
28
- diagnostics: ResourceDiagnostic[];
29
- };
30
- getPrompts(): {
31
- prompts: PromptTemplate[];
32
- diagnostics: ResourceDiagnostic[];
33
- };
34
- getThemes(): {
35
- themes: Theme[];
36
- diagnostics: ResourceDiagnostic[];
37
- };
38
- getAgentsFiles(): {
39
- agentsFiles: Array<{
40
- path: string;
41
- content: string;
42
- }>;
43
- };
44
- getSystemPrompt(): string | undefined;
45
- getAppendSystemPrompt(): string[];
46
- extendResources(paths: ResourceExtensionPaths): void;
47
- reload(): Promise<void>;
48
- }
49
- export declare function loadProjectContextFiles(options: {
50
- cwd: string;
51
- agentDir: string;
52
- }): Array<{
53
- path: string;
54
- content: string;
55
- }>;
56
- export interface DefaultResourceLoaderOptions {
57
- cwd: string;
58
- agentDir: string;
59
- settingsManager?: SettingsManager;
60
- eventBus?: EventBus;
61
- additionalExtensionPaths?: string[];
62
- additionalSkillPaths?: string[];
63
- additionalPromptTemplatePaths?: string[];
64
- additionalThemePaths?: string[];
65
- extensionFactories?: ExtensionFactory[];
66
- noExtensions?: boolean;
67
- noSkills?: boolean;
68
- noPromptTemplates?: boolean;
69
- noThemes?: boolean;
70
- noContextFiles?: boolean;
71
- systemPrompt?: string;
72
- appendSystemPrompt?: string[];
73
- extensionsOverride?: (base: LoadExtensionsResult) => LoadExtensionsResult;
74
- skillsOverride?: (base: {
75
- skills: Skill[];
76
- diagnostics: ResourceDiagnostic[];
77
- }) => {
78
- skills: Skill[];
79
- diagnostics: ResourceDiagnostic[];
80
- };
81
- promptsOverride?: (base: {
82
- prompts: PromptTemplate[];
83
- diagnostics: ResourceDiagnostic[];
84
- }) => {
85
- prompts: PromptTemplate[];
86
- diagnostics: ResourceDiagnostic[];
87
- };
88
- themesOverride?: (base: {
89
- themes: Theme[];
90
- diagnostics: ResourceDiagnostic[];
91
- }) => {
92
- themes: Theme[];
93
- diagnostics: ResourceDiagnostic[];
94
- };
95
- agentsFilesOverride?: (base: {
96
- agentsFiles: Array<{
97
- path: string;
98
- content: string;
99
- }>;
100
- }) => {
101
- agentsFiles: Array<{
102
- path: string;
103
- content: string;
104
- }>;
105
- };
106
- systemPromptOverride?: (base: string | undefined) => string | undefined;
107
- appendSystemPromptOverride?: (base: string[]) => string[];
108
- }
109
- export declare class DefaultResourceLoader implements ResourceLoader {
110
- private cwd;
111
- private agentDir;
112
- private settingsManager;
113
- private eventBus;
114
- private packageManager;
115
- private additionalExtensionPaths;
116
- private additionalSkillPaths;
117
- private additionalPromptTemplatePaths;
118
- private additionalThemePaths;
119
- private extensionFactories;
120
- private noExtensions;
121
- private noSkills;
122
- private noPromptTemplates;
123
- private noThemes;
124
- private noContextFiles;
125
- private systemPromptSource?;
126
- private appendSystemPromptSource?;
127
- private extensionsOverride?;
128
- private skillsOverride?;
129
- private promptsOverride?;
130
- private themesOverride?;
131
- private agentsFilesOverride?;
132
- private systemPromptOverride?;
133
- private appendSystemPromptOverride?;
134
- private extensionsResult;
135
- private skills;
136
- private skillDiagnostics;
137
- private prompts;
138
- private promptDiagnostics;
139
- private themes;
140
- private themeDiagnostics;
141
- private agentsFiles;
142
- private systemPrompt?;
143
- private appendSystemPrompt;
144
- private lastSkillPaths;
145
- private extensionSkillSourceInfos;
146
- private extensionPromptSourceInfos;
147
- private extensionThemeSourceInfos;
148
- private lastPromptPaths;
149
- private lastThemePaths;
150
- constructor(options: DefaultResourceLoaderOptions);
151
- getExtensions(): LoadExtensionsResult;
152
- getSkills(): {
153
- skills: Skill[];
154
- diagnostics: ResourceDiagnostic[];
155
- };
156
- getPrompts(): {
157
- prompts: PromptTemplate[];
158
- diagnostics: ResourceDiagnostic[];
159
- };
160
- getThemes(): {
161
- themes: Theme[];
162
- diagnostics: ResourceDiagnostic[];
163
- };
164
- getAgentsFiles(): {
165
- agentsFiles: Array<{
166
- path: string;
167
- content: string;
168
- }>;
169
- };
170
- getSystemPrompt(): string | undefined;
171
- getAppendSystemPrompt(): string[];
172
- extendResources(paths: ResourceExtensionPaths): void;
173
- reload(): Promise<void>;
174
- private normalizeExtensionPaths;
175
- private updateSkillsFromPaths;
176
- private updatePromptsFromPaths;
177
- private updateThemesFromPaths;
178
- private applyExtensionSourceInfo;
179
- private findSourceInfoForPath;
180
- private getDefaultSourceInfoForPath;
181
- private mergePaths;
182
- private resolveResourcePath;
183
- private loadThemes;
184
- private loadThemesFromDir;
185
- private loadThemeFromFile;
186
- private loadExtensionFactories;
187
- private dedupePrompts;
188
- private dedupeThemes;
189
- private discoverSystemPromptFile;
190
- private discoverAppendSystemPromptFile;
191
- private isUnderPath;
192
- private detectExtensionConflicts;
193
- }
194
- //# sourceMappingURL=resource-loader.d.ts.map