@greppleai/grip 0.1.4 → 0.1.6

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 (569) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/README.md +2 -2
  3. package/dist/bun/cli.d.ts.map +1 -1
  4. package/dist/bun/cli.js.map +1 -1
  5. package/dist/bun/embedded-assets.d.ts.map +1 -1
  6. package/dist/bun/embedded-assets.js.map +1 -1
  7. package/dist/bun/register-bedrock.d.ts.map +1 -1
  8. package/dist/bun/restore-sandbox-env.d.ts.map +1 -1
  9. package/dist/bun/restore-sandbox-env.js.map +1 -1
  10. package/dist/cli/args.d.ts.map +1 -1
  11. package/dist/cli/args.js.map +1 -1
  12. package/dist/cli/config-selector.d.ts.map +1 -1
  13. package/dist/cli/config-selector.js.map +1 -1
  14. package/dist/cli/file-processor.d.ts.map +1 -1
  15. package/dist/cli/file-processor.js.map +1 -1
  16. package/dist/cli/initial-message.d.ts +1 -1
  17. package/dist/cli/initial-message.d.ts.map +1 -1
  18. package/dist/cli/initial-message.js.map +1 -1
  19. package/dist/cli/list-models.d.ts.map +1 -1
  20. package/dist/cli/list-models.js.map +1 -1
  21. package/dist/cli/session-picker.d.ts.map +1 -1
  22. package/dist/cli/session-picker.js.map +1 -1
  23. package/dist/cli.d.ts.map +1 -1
  24. package/dist/cli.js.map +1 -1
  25. package/dist/config.d.ts.map +1 -1
  26. package/dist/config.js.map +1 -1
  27. package/dist/core/agent-session.d.ts +27 -0
  28. package/dist/core/agent-session.d.ts.map +1 -1
  29. package/dist/core/agent-session.js +117 -152
  30. package/dist/core/agent-session.js.map +1 -1
  31. package/dist/core/auth-guidance.d.ts.map +1 -1
  32. package/dist/core/auth-guidance.js.map +1 -1
  33. package/dist/core/auth-storage.d.ts +4 -0
  34. package/dist/core/auth-storage.d.ts.map +1 -1
  35. package/dist/core/auth-storage.js +6 -11
  36. package/dist/core/auth-storage.js.map +1 -1
  37. package/dist/core/bash-executor.d.ts.map +1 -1
  38. package/dist/core/bash-executor.js +19 -23
  39. package/dist/core/bash-executor.js.map +1 -1
  40. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  41. package/dist/core/compaction/branch-summarization.js.map +1 -1
  42. package/dist/core/compaction/compaction.d.ts.map +1 -1
  43. package/dist/core/compaction/compaction.js.map +1 -1
  44. package/dist/core/compaction/compression-detection-ledger.d.ts.map +1 -1
  45. package/dist/core/compaction/compression-detection-ledger.js.map +1 -1
  46. package/dist/core/compaction/compression-detector.d.ts +1 -0
  47. package/dist/core/compaction/compression-detector.d.ts.map +1 -1
  48. package/dist/core/compaction/compression-detector.js +10 -21
  49. package/dist/core/compaction/compression-detector.js.map +1 -1
  50. package/dist/core/compaction/compression-economics.d.ts.map +1 -1
  51. package/dist/core/compaction/compression-economics.js.map +1 -1
  52. package/dist/core/compaction/utils.d.ts.map +1 -1
  53. package/dist/core/compaction/utils.js.map +1 -1
  54. package/dist/core/defaults.d.ts.map +1 -1
  55. package/dist/core/diagnostics.d.ts.map +1 -1
  56. package/dist/core/event-bus.d.ts.map +1 -1
  57. package/dist/core/event-bus.js.map +1 -1
  58. package/dist/core/exec.d.ts.map +1 -1
  59. package/dist/core/exec.js.map +1 -1
  60. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
  61. package/dist/core/export-html/ansi-to-html.js.map +1 -1
  62. package/dist/core/export-html/index.d.ts.map +1 -1
  63. package/dist/core/export-html/index.js.map +1 -1
  64. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  65. package/dist/core/export-html/tool-renderer.js.map +1 -1
  66. package/dist/core/extensions/loader.d.ts.map +1 -1
  67. package/dist/core/extensions/loader.js.map +1 -1
  68. package/dist/core/extensions/runner.d.ts.map +1 -1
  69. package/dist/core/extensions/runner.js +18 -30
  70. package/dist/core/extensions/runner.js.map +1 -1
  71. package/dist/core/extensions/types.d.ts.map +1 -1
  72. package/dist/core/extensions/types.js.map +1 -1
  73. package/dist/core/extensions/wrapper.d.ts.map +1 -1
  74. package/dist/core/extensions/wrapper.js.map +1 -1
  75. package/dist/core/footer-data-provider.d.ts.map +1 -1
  76. package/dist/core/footer-data-provider.js +15 -16
  77. package/dist/core/footer-data-provider.js.map +1 -1
  78. package/dist/core/grip-agent.d.ts.map +1 -1
  79. package/dist/core/grip-agent.js +11 -23
  80. package/dist/core/grip-agent.js.map +1 -1
  81. package/dist/core/grip-manifest.d.ts.map +1 -1
  82. package/dist/core/grip-manifest.js.map +1 -1
  83. package/dist/core/hooks/aggregate.d.ts.map +1 -1
  84. package/dist/core/hooks/aggregate.js.map +1 -1
  85. package/dist/core/hooks/config.d.ts.map +1 -1
  86. package/dist/core/hooks/config.js.map +1 -1
  87. package/dist/core/hooks/executor.d.ts.map +1 -1
  88. package/dist/core/hooks/executor.js.map +1 -1
  89. package/dist/core/hooks/index.d.ts.map +1 -1
  90. package/dist/core/hooks/index.js.map +1 -1
  91. package/dist/core/hooks/matcher.d.ts.map +1 -1
  92. package/dist/core/hooks/matcher.js.map +1 -1
  93. package/dist/core/hooks/trust-store.d.ts.map +1 -1
  94. package/dist/core/hooks/trust-store.js +0 -3
  95. package/dist/core/hooks/trust-store.js.map +1 -1
  96. package/dist/core/hooks/types.d.ts.map +1 -1
  97. package/dist/core/hooks/types.js.map +1 -1
  98. package/dist/core/http-dispatcher.d.ts.map +1 -1
  99. package/dist/core/http-dispatcher.js.map +1 -1
  100. package/dist/core/instruction-resource-loader.d.ts.map +1 -1
  101. package/dist/core/instruction-resource-loader.js +0 -3
  102. package/dist/core/instruction-resource-loader.js.map +1 -1
  103. package/dist/core/keybindings.d.ts.map +1 -1
  104. package/dist/core/keybindings.js +0 -1
  105. package/dist/core/keybindings.js.map +1 -1
  106. package/dist/core/lsp/abort.d.ts.map +1 -1
  107. package/dist/core/lsp/abort.js.map +1 -1
  108. package/dist/core/lsp/client.d.ts.map +1 -1
  109. package/dist/core/lsp/client.js +8 -22
  110. package/dist/core/lsp/client.js.map +1 -1
  111. package/dist/core/lsp/config-loader.d.ts.map +1 -1
  112. package/dist/core/lsp/config-loader.js.map +1 -1
  113. package/dist/core/lsp/config.d.ts.map +1 -1
  114. package/dist/core/lsp/config.js.map +1 -1
  115. package/dist/core/lsp/diagnostics.d.ts.map +1 -1
  116. package/dist/core/lsp/diagnostics.js.map +1 -1
  117. package/dist/core/lsp/file-sync.d.ts.map +1 -1
  118. package/dist/core/lsp/file-sync.js +7 -9
  119. package/dist/core/lsp/file-sync.js.map +1 -1
  120. package/dist/core/lsp/integration.d.ts.map +1 -1
  121. package/dist/core/lsp/integration.js.map +1 -1
  122. package/dist/core/lsp/language-map.d.ts.map +1 -1
  123. package/dist/core/lsp/language-map.js +2 -7
  124. package/dist/core/lsp/language-map.js.map +1 -1
  125. package/dist/core/lsp/manager.d.ts.map +1 -1
  126. package/dist/core/lsp/manager.js +18 -29
  127. package/dist/core/lsp/manager.js.map +1 -1
  128. package/dist/core/lsp/navigation.d.ts.map +1 -1
  129. package/dist/core/lsp/navigation.js.map +1 -1
  130. package/dist/core/lsp/portable-path.d.ts.map +1 -1
  131. package/dist/core/lsp/portable-path.js.map +1 -1
  132. package/dist/core/lsp/refactor.d.ts.map +1 -1
  133. package/dist/core/lsp/refactor.js.map +1 -1
  134. package/dist/core/lsp/transport.d.ts.map +1 -1
  135. package/dist/core/lsp/transport.js.map +1 -1
  136. package/dist/core/messages.d.ts.map +1 -1
  137. package/dist/core/messages.js.map +1 -1
  138. package/dist/core/model-registry.d.ts.map +1 -1
  139. package/dist/core/model-registry.js +5 -7
  140. package/dist/core/model-registry.js.map +1 -1
  141. package/dist/core/model-resolver.d.ts.map +1 -1
  142. package/dist/core/model-resolver.js.map +1 -1
  143. package/dist/core/output-guard.d.ts.map +1 -1
  144. package/dist/core/output-guard.js.map +1 -1
  145. package/dist/core/package-manager.d.ts.map +1 -1
  146. package/dist/core/package-manager.js +0 -6
  147. package/dist/core/package-manager.js.map +1 -1
  148. package/dist/core/prompt-templates.d.ts.map +1 -1
  149. package/dist/core/prompt-templates.js.map +1 -1
  150. package/dist/core/provider-display-names.d.ts.map +1 -1
  151. package/dist/core/remote-workspace-protocol/contract.d.ts.map +1 -1
  152. package/dist/core/remote-workspace-protocol/contract.js +4 -2
  153. package/dist/core/remote-workspace-protocol/contract.js.map +1 -1
  154. package/dist/core/remote-workspace-protocol/guest-shared-client.d.ts.map +1 -1
  155. package/dist/core/remote-workspace-protocol/guest-shared-client.js +1 -5
  156. package/dist/core/remote-workspace-protocol/guest-shared-client.js.map +1 -1
  157. package/dist/core/remote-workspace-protocol/guest-shared-outbound-scheduler.d.ts.map +1 -1
  158. package/dist/core/remote-workspace-protocol/guest-shared-outbound-scheduler.js +5 -10
  159. package/dist/core/remote-workspace-protocol/guest-shared-outbound-scheduler.js.map +1 -1
  160. package/dist/core/remote-workspace-protocol/guest-shared-uplink.d.ts.map +1 -1
  161. package/dist/core/remote-workspace-protocol/guest-shared-uplink.js +2 -9
  162. package/dist/core/remote-workspace-protocol/guest-shared-uplink.js.map +1 -1
  163. package/dist/core/remote-workspace-protocol/lima-owner-directory.d.ts.map +1 -1
  164. package/dist/core/remote-workspace-protocol/lima-owner-directory.js.map +1 -1
  165. package/dist/core/remote-workspace-protocol/lima-owner-lock.d.ts.map +1 -1
  166. package/dist/core/remote-workspace-protocol/lima-owner-lock.js.map +1 -1
  167. package/dist/core/remote-workspace-protocol/session.d.ts.map +1 -1
  168. package/dist/core/remote-workspace-protocol/session.js +27 -65
  169. package/dist/core/remote-workspace-protocol/session.js.map +1 -1
  170. package/dist/core/remote-workspace-protocol/shared-transport.d.ts.map +1 -1
  171. package/dist/core/remote-workspace-protocol/shared-transport.js.map +1 -1
  172. package/dist/core/resolve-config-value.d.ts.map +1 -1
  173. package/dist/core/resolve-config-value.js.map +1 -1
  174. package/dist/core/resource-loader.d.ts.map +1 -1
  175. package/dist/core/resource-loader.js +0 -48
  176. package/dist/core/resource-loader.js.map +1 -1
  177. package/dist/core/rules.d.ts.map +1 -1
  178. package/dist/core/rules.js.map +1 -1
  179. package/dist/core/sandbox/command.d.ts.map +1 -1
  180. package/dist/core/sandbox/command.js.map +1 -1
  181. package/dist/core/sandbox/config.d.ts.map +1 -1
  182. package/dist/core/sandbox/config.js.map +1 -1
  183. package/dist/core/sandbox/lima-guest-binary.d.ts.map +1 -1
  184. package/dist/core/sandbox/lima-guest-binary.js.map +1 -1
  185. package/dist/core/sandbox/lima.d.ts +2 -0
  186. package/dist/core/sandbox/lima.d.ts.map +1 -1
  187. package/dist/core/sandbox/lima.js +9 -15
  188. package/dist/core/sandbox/lima.js.map +1 -1
  189. package/dist/core/sandbox/shared-lima-roots.d.ts.map +1 -1
  190. package/dist/core/sandbox/shared-lima-roots.js.map +1 -1
  191. package/dist/core/sandbox/update-shared-guest-binary.d.ts.map +1 -1
  192. package/dist/core/sandbox/update-shared-guest-binary.js.map +1 -1
  193. package/dist/core/session/constants.d.ts.map +1 -1
  194. package/dist/core/session/context-metadata.d.ts.map +1 -1
  195. package/dist/core/session/context-metadata.js.map +1 -1
  196. package/dist/core/session/context.d.ts.map +1 -1
  197. package/dist/core/session/context.js.map +1 -1
  198. package/dist/core/session/ids.d.ts.map +1 -1
  199. package/dist/core/session/ids.js.map +1 -1
  200. package/dist/core/session/in-memory-session-manager.d.ts.map +1 -1
  201. package/dist/core/session/in-memory-session-manager.js +0 -1
  202. package/dist/core/session/in-memory-session-manager.js.map +1 -1
  203. package/dist/core/session/in-memory-session.d.ts.map +1 -1
  204. package/dist/core/session/in-memory-session.js.map +1 -1
  205. package/dist/core/session/jsonl-errors.d.ts.map +1 -1
  206. package/dist/core/session/jsonl-errors.js +0 -11
  207. package/dist/core/session/jsonl-errors.js.map +1 -1
  208. package/dist/core/session/jsonl-helpers.d.ts.map +1 -1
  209. package/dist/core/session/jsonl-helpers.js.map +1 -1
  210. package/dist/core/session/local-session-manager.d.ts.map +1 -1
  211. package/dist/core/session/local-session-manager.js +4 -6
  212. package/dist/core/session/local-session-manager.js.map +1 -1
  213. package/dist/core/session/local-session.d.ts.map +1 -1
  214. package/dist/core/session/local-session.js.map +1 -1
  215. package/dist/core/session/migrations.d.ts.map +1 -1
  216. package/dist/core/session/migrations.js.map +1 -1
  217. package/dist/core/session/remote-session-client.d.ts.map +1 -1
  218. package/dist/core/session/remote-session-client.js +0 -6
  219. package/dist/core/session/remote-session-client.js.map +1 -1
  220. package/dist/core/session/remote-session-manager.d.ts.map +1 -1
  221. package/dist/core/session/remote-session-manager.js +0 -3
  222. package/dist/core/session/remote-session-manager.js.map +1 -1
  223. package/dist/core/session/remote-session.d.ts.map +1 -1
  224. package/dist/core/session/remote-session.js +0 -1
  225. package/dist/core/session/remote-session.js.map +1 -1
  226. package/dist/core/session/session-manager.d.ts.map +1 -1
  227. package/dist/core/session/session.d.ts.map +1 -1
  228. package/dist/core/session/session.js +1 -5
  229. package/dist/core/session/session.js.map +1 -1
  230. package/dist/core/session/stores/in-memory-session-store.d.ts.map +1 -1
  231. package/dist/core/session/stores/in-memory-session-store.js +7 -6
  232. package/dist/core/session/stores/in-memory-session-store.js.map +1 -1
  233. package/dist/core/session/stores/jsonl-session-store.d.ts.map +1 -1
  234. package/dist/core/session/stores/jsonl-session-store.js +6 -14
  235. package/dist/core/session/stores/jsonl-session-store.js.map +1 -1
  236. package/dist/core/session/stores/remote-session-store.d.ts.map +1 -1
  237. package/dist/core/session/stores/remote-session-store.js +3 -8
  238. package/dist/core/session/stores/remote-session-store.js.map +1 -1
  239. package/dist/core/session/stores/session-store.d.ts.map +1 -1
  240. package/dist/core/session/types.d.ts.map +1 -1
  241. package/dist/core/session/usage-ledger.d.ts.map +1 -1
  242. package/dist/core/session/usage-ledger.js.map +1 -1
  243. package/dist/core/session-cwd.d.ts.map +1 -1
  244. package/dist/core/session-cwd.js +0 -1
  245. package/dist/core/session-cwd.js.map +1 -1
  246. package/dist/core/settings-manager.d.ts.map +1 -1
  247. package/dist/core/settings-manager.js +9 -17
  248. package/dist/core/settings-manager.js.map +1 -1
  249. package/dist/core/skills.d.ts.map +1 -1
  250. package/dist/core/skills.js.map +1 -1
  251. package/dist/core/slash-commands.d.ts.map +1 -1
  252. package/dist/core/source-info.d.ts.map +1 -1
  253. package/dist/core/source-info.js.map +1 -1
  254. package/dist/core/system-prompt.d.ts.map +1 -1
  255. package/dist/core/system-prompt.js.map +1 -1
  256. package/dist/core/telemetry.d.ts.map +1 -1
  257. package/dist/core/telemetry.js.map +1 -1
  258. package/dist/core/timings.d.ts.map +1 -1
  259. package/dist/core/timings.js.map +1 -1
  260. package/dist/core/tools/bash.d.ts.map +1 -1
  261. package/dist/core/tools/bash.js +8 -5
  262. package/dist/core/tools/bash.js.map +1 -1
  263. package/dist/core/tools/compress-context.d.ts.map +1 -1
  264. package/dist/core/tools/compress-context.js.map +1 -1
  265. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  266. package/dist/core/tools/edit-diff.js.map +1 -1
  267. package/dist/core/tools/edit.d.ts.map +1 -1
  268. package/dist/core/tools/edit.js.map +1 -1
  269. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  270. package/dist/core/tools/file-mutation-queue.js.map +1 -1
  271. package/dist/core/tools/find.d.ts.map +1 -1
  272. package/dist/core/tools/find.js.map +1 -1
  273. package/dist/core/tools/grep.d.ts.map +1 -1
  274. package/dist/core/tools/grep.js.map +1 -1
  275. package/dist/core/tools/hash-store.d.ts.map +1 -1
  276. package/dist/core/tools/hash-store.js.map +1 -1
  277. package/dist/core/tools/hashline/apply.d.ts.map +1 -1
  278. package/dist/core/tools/hashline/apply.js.map +1 -1
  279. package/dist/core/tools/hashline/hash.d.ts.map +1 -1
  280. package/dist/core/tools/hashline/hash.js.map +1 -1
  281. package/dist/core/tools/hashline/parse.d.ts.map +1 -1
  282. package/dist/core/tools/hashline/parse.js.map +1 -1
  283. package/dist/core/tools/hashline/resolve.d.ts.map +1 -1
  284. package/dist/core/tools/hashline/resolve.js.map +1 -1
  285. package/dist/core/tools/hashline-utils.d.ts.map +1 -1
  286. package/dist/core/tools/hashline-utils.js.map +1 -1
  287. package/dist/core/tools/index.d.ts.map +1 -1
  288. package/dist/core/tools/index.js.map +1 -1
  289. package/dist/core/tools/ls.d.ts.map +1 -1
  290. package/dist/core/tools/ls.js.map +1 -1
  291. package/dist/core/tools/operations.d.ts +5 -0
  292. package/dist/core/tools/operations.d.ts.map +1 -1
  293. package/dist/core/tools/operations.js +26 -24
  294. package/dist/core/tools/operations.js.map +1 -1
  295. package/dist/core/tools/output-accumulator.d.ts.map +1 -1
  296. package/dist/core/tools/output-accumulator.js +12 -18
  297. package/dist/core/tools/output-accumulator.js.map +1 -1
  298. package/dist/core/tools/path-utils.d.ts.map +1 -1
  299. package/dist/core/tools/path-utils.js.map +1 -1
  300. package/dist/core/tools/read.d.ts.map +1 -1
  301. package/dist/core/tools/read.js.map +1 -1
  302. package/dist/core/tools/render-utils.d.ts.map +1 -1
  303. package/dist/core/tools/render-utils.js.map +1 -1
  304. package/dist/core/tools/replace-diff.d.ts.map +1 -1
  305. package/dist/core/tools/replace-diff.js.map +1 -1
  306. package/dist/core/tools/replace-normalize.d.ts.map +1 -1
  307. package/dist/core/tools/replace-normalize.js.map +1 -1
  308. package/dist/core/tools/replace-render.d.ts +1 -1
  309. package/dist/core/tools/replace-render.d.ts.map +1 -1
  310. package/dist/core/tools/replace-render.js.map +1 -1
  311. package/dist/core/tools/runtime.d.ts.map +1 -1
  312. package/dist/core/tools/runtime.js.map +1 -1
  313. package/dist/core/tools/session-history.d.ts.map +1 -1
  314. package/dist/core/tools/session-history.js.map +1 -1
  315. package/dist/core/tools/subagent-agents.d.ts.map +1 -1
  316. package/dist/core/tools/subagent-agents.js.map +1 -1
  317. package/dist/core/tools/subagent.d.ts.map +1 -1
  318. package/dist/core/tools/subagent.js.map +1 -1
  319. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  320. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  321. package/dist/core/tools/truncate.d.ts.map +1 -1
  322. package/dist/core/tools/truncate.js.map +1 -1
  323. package/dist/core/tools/websearch.d.ts.map +1 -1
  324. package/dist/core/tools/websearch.js.map +1 -1
  325. package/dist/core/tools/workspace-tool-host.d.ts +1 -0
  326. package/dist/core/tools/workspace-tool-host.d.ts.map +1 -1
  327. package/dist/core/tools/workspace-tool-host.js +36 -22
  328. package/dist/core/tools/workspace-tool-host.js.map +1 -1
  329. package/dist/core/tools/write.d.ts.map +1 -1
  330. package/dist/core/tools/write.js +0 -1
  331. package/dist/core/tools/write.js.map +1 -1
  332. package/dist/core/workspace-identity.d.ts.map +1 -1
  333. package/dist/daemon/activity-budget.d.ts.map +1 -1
  334. package/dist/daemon/activity-budget.js +2 -3
  335. package/dist/daemon/activity-budget.js.map +1 -1
  336. package/dist/daemon/command.d.ts.map +1 -1
  337. package/dist/daemon/command.js.map +1 -1
  338. package/dist/daemon/config.d.ts +2 -0
  339. package/dist/daemon/config.d.ts.map +1 -1
  340. package/dist/daemon/config.js +4 -0
  341. package/dist/daemon/config.js.map +1 -1
  342. package/dist/daemon/help.d.ts.map +1 -1
  343. package/dist/daemon/help.js +4 -3
  344. package/dist/daemon/help.js.map +1 -1
  345. package/dist/daemon/lsp-config.d.ts.map +1 -1
  346. package/dist/daemon/lsp-config.js.map +1 -1
  347. package/dist/daemon/outbound-budget.d.ts.map +1 -1
  348. package/dist/daemon/outbound-budget.js +2 -4
  349. package/dist/daemon/outbound-budget.js.map +1 -1
  350. package/dist/daemon/security.d.ts.map +1 -1
  351. package/dist/daemon/security.js.map +1 -1
  352. package/dist/daemon/server.d.ts.map +1 -1
  353. package/dist/daemon/server.js.map +1 -1
  354. package/dist/daemon/shared-connection.d.ts.map +1 -1
  355. package/dist/daemon/shared-connection.js +10 -15
  356. package/dist/daemon/shared-connection.js.map +1 -1
  357. package/dist/daemon/shared-revision.d.ts.map +1 -1
  358. package/dist/daemon/shared-revision.js +2 -1
  359. package/dist/daemon/shared-revision.js.map +1 -1
  360. package/dist/daemon/shared-roots.d.ts.map +1 -1
  361. package/dist/daemon/shared-roots.js +0 -1
  362. package/dist/daemon/shared-roots.js.map +1 -1
  363. package/dist/daemon/workspace-runtime.d.ts +2 -0
  364. package/dist/daemon/workspace-runtime.d.ts.map +1 -1
  365. package/dist/daemon/workspace-runtime.js +43 -15
  366. package/dist/daemon/workspace-runtime.js.map +1 -1
  367. package/dist/index.d.ts.map +1 -1
  368. package/dist/main.d.ts.map +1 -1
  369. package/dist/main.js.map +1 -1
  370. package/dist/migrations.d.ts.map +1 -1
  371. package/dist/migrations.js.map +1 -1
  372. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  373. package/dist/modes/interactive/components/assistant-message.js +21 -17
  374. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  375. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  376. package/dist/modes/interactive/components/bash-execution.js +4 -9
  377. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  378. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  379. package/dist/modes/interactive/components/bordered-loader.js +0 -3
  380. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  381. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  382. package/dist/modes/interactive/components/branch-summary-message.js +1 -3
  383. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  384. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  385. package/dist/modes/interactive/components/compaction-summary-message.js +1 -3
  386. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  387. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  388. package/dist/modes/interactive/components/config-selector.js +6 -16
  389. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  390. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  391. package/dist/modes/interactive/components/countdown-timer.js +0 -5
  392. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  393. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  394. package/dist/modes/interactive/components/custom-editor.js +1 -8
  395. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  396. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  397. package/dist/modes/interactive/components/custom-message.js +1 -6
  398. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  399. package/dist/modes/interactive/components/diff.d.ts.map +1 -1
  400. package/dist/modes/interactive/components/diff.js.map +1 -1
  401. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  402. package/dist/modes/interactive/components/dynamic-border.js +0 -1
  403. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  404. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  405. package/dist/modes/interactive/components/extension-editor.js +1 -7
  406. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  407. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  408. package/dist/modes/interactive/components/extension-input.js +2 -8
  409. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  410. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  411. package/dist/modes/interactive/components/extension-selector.js +1 -9
  412. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  413. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  414. package/dist/modes/interactive/components/footer.js +1 -3
  415. package/dist/modes/interactive/components/footer.js.map +1 -1
  416. package/dist/modes/interactive/components/hook-execution.d.ts.map +1 -1
  417. package/dist/modes/interactive/components/hook-execution.js +2 -5
  418. package/dist/modes/interactive/components/hook-execution.js.map +1 -1
  419. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  420. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  421. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  422. package/dist/modes/interactive/components/login-dialog.js +3 -9
  423. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  424. package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -1
  425. package/dist/modes/interactive/components/markdown-transform.js.map +1 -1
  426. package/dist/modes/interactive/components/mermaid.d.ts.map +1 -1
  427. package/dist/modes/interactive/components/mermaid.js.map +1 -1
  428. package/dist/modes/interactive/components/message-card.d.ts.map +1 -1
  429. package/dist/modes/interactive/components/message-card.js +0 -1
  430. package/dist/modes/interactive/components/message-card.js.map +1 -1
  431. package/dist/modes/interactive/components/model-selector.d.ts +26 -18
  432. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  433. package/dist/modes/interactive/components/model-selector.js +223 -210
  434. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  435. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  436. package/dist/modes/interactive/components/oauth-selector.js +3 -12
  437. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  438. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  439. package/dist/modes/interactive/components/scoped-models-selector.js +9 -13
  440. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  441. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  442. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  443. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  444. package/dist/modes/interactive/components/session-selector.js +33 -58
  445. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  446. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  447. package/dist/modes/interactive/components/settings-selector.js +0 -4
  448. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  449. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  450. package/dist/modes/interactive/components/show-images-selector.js +0 -1
  451. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  452. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  453. package/dist/modes/interactive/components/skill-invocation-message.js +1 -3
  454. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  455. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  456. package/dist/modes/interactive/components/theme-selector.js +0 -2
  457. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  458. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  459. package/dist/modes/interactive/components/thinking-selector.js +0 -1
  460. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  461. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  462. package/dist/modes/interactive/components/tool-execution.js +9 -24
  463. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  464. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  465. package/dist/modes/interactive/components/tree-selector.js +18 -34
  466. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  467. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  468. package/dist/modes/interactive/components/user-message-selector.js +3 -6
  469. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  470. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  471. package/dist/modes/interactive/components/user-message.js +0 -4
  472. package/dist/modes/interactive/components/user-message.js.map +1 -1
  473. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  474. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  475. package/dist/modes/interactive/interactive-mode.d.ts +14 -0
  476. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  477. package/dist/modes/interactive/interactive-mode.js +223 -137
  478. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  479. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  480. package/dist/modes/interactive/theme/theme.js +0 -7
  481. package/dist/modes/interactive/theme/theme.js.map +1 -1
  482. package/dist/modes/json-event.d.ts.map +1 -1
  483. package/dist/modes/json-event.js.map +1 -1
  484. package/dist/modes/print-mode.d.ts.map +1 -1
  485. package/dist/modes/print-mode.js.map +1 -1
  486. package/dist/modes/rpc/jsonl.d.ts.map +1 -1
  487. package/dist/modes/rpc/jsonl.js.map +1 -1
  488. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  489. package/dist/modes/rpc/rpc-client.js +10 -11
  490. package/dist/modes/rpc/rpc-client.js.map +1 -1
  491. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  492. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  493. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  494. package/dist/package-manager-cli.d.ts.map +1 -1
  495. package/dist/package-manager-cli.js.map +1 -1
  496. package/dist/utils/ansi.d.ts.map +1 -1
  497. package/dist/utils/ansi.js.map +1 -1
  498. package/dist/utils/changelog.d.ts.map +1 -1
  499. package/dist/utils/changelog.js.map +1 -1
  500. package/dist/utils/child-process.d.ts.map +1 -1
  501. package/dist/utils/child-process.js.map +1 -1
  502. package/dist/utils/clipboard-image.d.ts.map +1 -1
  503. package/dist/utils/clipboard-image.js.map +1 -1
  504. package/dist/utils/clipboard-native.d.ts.map +1 -1
  505. package/dist/utils/clipboard-native.js.map +1 -1
  506. package/dist/utils/clipboard.d.ts.map +1 -1
  507. package/dist/utils/clipboard.js.map +1 -1
  508. package/dist/utils/deprecation.d.ts.map +1 -1
  509. package/dist/utils/deprecation.js.map +1 -1
  510. package/dist/utils/directory-completions.d.ts.map +1 -1
  511. package/dist/utils/directory-completions.js.map +1 -1
  512. package/dist/utils/exif-orientation.d.ts.map +1 -1
  513. package/dist/utils/exif-orientation.js.map +1 -1
  514. package/dist/utils/frontmatter.d.ts.map +1 -1
  515. package/dist/utils/frontmatter.js.map +1 -1
  516. package/dist/utils/fs-watch.d.ts.map +1 -1
  517. package/dist/utils/fs-watch.js.map +1 -1
  518. package/dist/utils/git.d.ts.map +1 -1
  519. package/dist/utils/git.js.map +1 -1
  520. package/dist/utils/grip-user-agent.d.ts.map +1 -1
  521. package/dist/utils/grip-user-agent.js +1 -1
  522. package/dist/utils/grip-user-agent.js.map +1 -1
  523. package/dist/utils/html.d.ts.map +1 -1
  524. package/dist/utils/html.js.map +1 -1
  525. package/dist/utils/image-convert.d.ts.map +1 -1
  526. package/dist/utils/image-convert.js.map +1 -1
  527. package/dist/utils/image-process.d.ts.map +1 -1
  528. package/dist/utils/image-process.js.map +1 -1
  529. package/dist/utils/image-resize-core.d.ts.map +1 -1
  530. package/dist/utils/image-resize-core.js.map +1 -1
  531. package/dist/utils/image-resize-worker.d.ts.map +1 -1
  532. package/dist/utils/image-resize-worker.js.map +1 -1
  533. package/dist/utils/image-resize.d.ts.map +1 -1
  534. package/dist/utils/image-resize.js.map +1 -1
  535. package/dist/utils/json.d.ts.map +1 -1
  536. package/dist/utils/json.js.map +1 -1
  537. package/dist/utils/mime.d.ts.map +1 -1
  538. package/dist/utils/mime.js.map +1 -1
  539. package/dist/utils/open-browser.d.ts.map +1 -1
  540. package/dist/utils/open-browser.js.map +1 -1
  541. package/dist/utils/paths.d.ts.map +1 -1
  542. package/dist/utils/paths.js.map +1 -1
  543. package/dist/utils/photon.d.ts.map +1 -1
  544. package/dist/utils/photon.js +10 -5
  545. package/dist/utils/photon.js.map +1 -1
  546. package/dist/utils/shell.d.ts.map +1 -1
  547. package/dist/utils/shell.js.map +1 -1
  548. package/dist/utils/sleep.d.ts.map +1 -1
  549. package/dist/utils/sleep.js.map +1 -1
  550. package/dist/utils/syntax-highlight.d.ts.map +1 -1
  551. package/dist/utils/syntax-highlight.js +1 -1
  552. package/dist/utils/syntax-highlight.js.map +1 -1
  553. package/dist/utils/tools-manager.d.ts.map +1 -1
  554. package/dist/utils/tools-manager.js.map +1 -1
  555. package/dist/utils/version-check.d.ts.map +1 -1
  556. package/dist/utils/version-check.js.map +1 -1
  557. package/dist/utils/windows-self-update.d.ts.map +1 -1
  558. package/dist/utils/windows-self-update.js.map +1 -1
  559. package/docs/keybindings.md +3 -1
  560. package/docs/providers.md +3 -1
  561. package/docs/sandbox.md +7 -1
  562. package/docs/sessions.md +1 -1
  563. package/docs/usage.md +39 -2
  564. package/examples/extensions/custom-provider-anthropic/package.json +2 -2
  565. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  566. package/examples/extensions/sandbox/package.json +2 -2
  567. package/examples/extensions/with-deps/package.json +1 -1
  568. package/npm-shrinkwrap.json +601 -833
  569. package/package.json +20 -21
@@ -1 +1 @@
1
- {"version":3,"file":"resource-loader.js","sourceRoot":"","sources":["../../src/core/resource-loader.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, readdirSync, readFileSync, statSync } from \"node:fs\";\nimport { join, resolve, sep } from \"node:path\";\nimport chalk from \"chalk\";\nimport { CONFIG_DIR_NAME } from \"../config.ts\";\nimport { loadThemeFromPath, type Theme } from \"../modes/interactive/theme/theme.ts\";\nimport type { ResourceDiagnostic } from \"./diagnostics.ts\";\n\nexport type { ResourceCollision, ResourceDiagnostic } from \"./diagnostics.ts\";\n\nimport { canonicalizePath, isLocalPath, resolvePath } from \"../utils/paths.ts\";\nimport { createEventBus, type EventBus } from \"./event-bus.ts\";\nimport { createExtensionRuntime, loadExtensionFromFactory, loadExtensions } from \"./extensions/loader.ts\";\nimport type { Extension, ExtensionFactory, ExtensionRuntime, LoadExtensionsResult } from \"./extensions/types.ts\";\nimport { dirnamePortablePath, joinPortablePath, pathComparisonValue, relativeWithin } from \"./lsp/portable-path.ts\";\nimport {\n\tDefaultPackageManager,\n\ttype PathMetadata,\n\ttype ResolvedPaths,\n\ttype ResolvedResource,\n} from \"./package-manager.ts\";\nimport type { PromptTemplate } from \"./prompt-templates.ts\";\nimport { loadPromptTemplates, loadPromptTemplatesWithOperations } from \"./prompt-templates.ts\";\nimport type { LoadRulesResult, Rule } from \"./rules.ts\";\nimport { loadRules, loadRulesWithOperations } from \"./rules.ts\";\nimport { SettingsManager } from \"./settings-manager.ts\";\nimport type { LoadSkillsResult, Skill } from \"./skills.ts\";\nimport { loadSkills, loadSkillsWithOperations } from \"./skills.ts\";\nimport { createSourceInfo, createSyntheticSourceInfo, type SourceInfo, type SourceScope } from \"./source-info.ts\";\nimport { resetTimings } from \"./timings.ts\";\nimport type { ToolBackendInfo, ToolOperations } from \"./tools/operations.ts\";\nimport type { WorkspaceIdentity } from \"./workspace-identity.ts\";\n\nexport interface ProjectContextFile {\n\tpath: string;\n\tcontent: string;\n\tsourceInfo?: SourceInfo;\n}\n\ninterface NamedResourceMergeResult<T> {\n\tresources: T[];\n\tdiagnostics: ResourceDiagnostic[];\n}\n\nexport interface ResourcePathEntry {\n\tpath: string;\n\tmetadata: PathMetadata;\n}\n\nexport interface LoadPromptTemplatesResult {\n\tprompts: PromptTemplate[];\n\tdiagnostics: ResourceDiagnostic[];\n}\n\nexport interface LoadThemesResult {\n\tthemes: Theme[];\n\tdiagnostics: ResourceDiagnostic[];\n}\n\nexport interface ProjectContextFilesResult {\n\tagentsFiles: ProjectContextFile[];\n}\n\nexport interface LoadProjectContextFilesOptions {\n\tcwd: string;\n\tagentDir: string;\n}\n\nexport type ResourceOverride<TResult> = (base: TResult) => TResult;\n\ninterface LoadProjectContextFilesWithOperationsOptions extends LoadProjectContextFilesOptions {\n\toperations: ToolOperations;\n\tworkspace?: WorkspaceIdentity;\n}\n\ntype ConfiguredInstructionBackend = Extract<ToolBackendInfo, { type: \"remote\"; configured: true }>;\n\ninterface RemoteInstructionResourcePaths {\n\tskills: ResourcePathEntry[];\n\trules: ResourcePathEntry[];\n\tprompts: ResourcePathEntry[];\n}\n\n// grip-ignore noNearIdenticalDataStructures: Resolved reload paths are required runtime inputs, while GripManifest is an optional package declaration with independent validation and evolution.\ninterface ReloadResourcePaths {\n\textensions: string[];\n\tskills: string[];\n\trules: string[];\n\tprompts: string[];\n\tthemes: string[];\n}\n\ntype InlineExtensionLoadResult = Pick<LoadExtensionsResult, \"extensions\" | \"errors\">;\n\nfunction appendMissingResourceDiagnostic(\n\tresolvedPath: string,\n\tdiagnostics: ResourceDiagnostic[],\n\tdiagnosticPaths: Set<string | undefined>,\n\tmessage: string,\n): void {\n\tif (existsSync(resolvedPath) || diagnosticPaths.has(resolvedPath)) return;\n\tdiagnostics.push({ type: \"error\", message, path: resolvedPath });\n\tdiagnosticPaths.add(resolvedPath);\n}\n\ninterface ExtensionConflict {\n\tpath: string;\n\tmessage: string;\n}\n\ntype NamedInstructionResourceType = \"skill\" | \"rule\";\n\nfunction mergeNamedResources<T extends { name: string; filePath: string }>(\n\tprimary: readonly T[],\n\tsecondary: readonly T[],\n\tresourceType: NamedInstructionResourceType,\n): NamedResourceMergeResult<T> {\n\tconst resources = new Map(primary.map((resource) => [resource.name, resource]));\n\tconst diagnostics: ResourceDiagnostic[] = [];\n\tfor (const resource of secondary) {\n\t\tconst winner = resources.get(resource.name);\n\t\tif (!winner) {\n\t\t\tresources.set(resource.name, resource);\n\t\t\tcontinue;\n\t\t}\n\t\tdiagnostics.push({\n\t\t\ttype: \"collision\",\n\t\t\tmessage: `name ${JSON.stringify(resource.name)} collision`,\n\t\t\tpath: resource.filePath,\n\t\t\tcollision: {\n\t\t\t\tresourceType,\n\t\t\t\tname: resource.name,\n\t\t\t\twinnerPath: winner.filePath,\n\t\t\t\tloserPath: resource.filePath,\n\t\t\t},\n\t\t});\n\t}\n\treturn { resources: [...resources.values()], diagnostics };\n}\nexport interface ResourceExtensionPaths {\n\tskillPaths?: ResourcePathEntry[];\n\trulePaths?: ResourcePathEntry[];\n\tpromptPaths?: ResourcePathEntry[];\n\tthemePaths?: ResourcePathEntry[];\n}\n\nexport interface ResourceLoader {\n\tgetExtensions(): LoadExtensionsResult;\n\tgetSkills(): LoadSkillsResult;\n\tgetRules(): LoadRulesResult;\n\tgetPrompts(): LoadPromptTemplatesResult;\n\tgetThemes(): LoadThemesResult;\n\tgetAgentsFiles(): ProjectContextFilesResult;\n\tgetSystemPrompt(): string | undefined;\n\tgetAppendSystemPrompt(): string[];\n\tsetToolOperations?(operations: ToolOperations | undefined): void;\n\textendResources(paths: ResourceExtensionPaths): void;\n\treload(): Promise<void>;\n}\n\nasync function resolvePromptInput(\n\tinput: string | undefined,\n\tdescription: string,\n\toperations?: ToolOperations,\n): Promise<string | undefined> {\n\tif (!input) {\n\t\treturn undefined;\n\t}\n\n\tif (existsSync(input)) {\n\t\ttry {\n\t\t\treturn readFileSync(input, \"utf-8\");\n\t\t} catch (error) {\n\t\t\tconsole.error(chalk.yellow(`Warning: Could not read ${description} file ${input}: ${error}`));\n\t\t\treturn input;\n\t\t}\n\t}\n\n\tif (operations) {\n\t\ttry {\n\t\t\tawait operations.access(input, \"read\");\n\t\t\treturn (await operations.readFile(input)).toString(\"utf-8\");\n\t\t} catch {}\n\t}\n\n\treturn input;\n}\n\nconst CONTEXT_FILE_CANDIDATES = [\"AGENTS.override.md\", \"AGENTS.md\", \"AGENTS.MD\", \"CLAUDE.md\", \"CLAUDE.MD\"];\n\nfunction loadContextFileFromDir(dir: string): ProjectContextFile | null {\n\tfor (const filename of CONTEXT_FILE_CANDIDATES) {\n\t\tconst filePath = join(dir, filename);\n\t\tif (existsSync(filePath)) {\n\t\t\ttry {\n\t\t\t\tif (!statSync(filePath).isFile()) continue;\n\t\t\t\treturn {\n\t\t\t\t\tpath: filePath,\n\t\t\t\t\tcontent: readFileSync(filePath, \"utf-8\"),\n\t\t\t\t};\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(chalk.yellow(`Warning: Could not read ${filePath}: ${error}`));\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n}\n\nexport function loadProjectContextFiles(options: LoadProjectContextFilesOptions): ProjectContextFile[] {\n\tconst resolvedCwd = resolvePath(options.cwd);\n\tconst resolvedAgentDir = resolvePath(options.agentDir);\n\n\tconst contextFiles: ProjectContextFile[] = [];\n\tconst seenPaths = new Set<string>();\n\n\tconst globalContext = loadContextFileFromDir(resolvedAgentDir);\n\tif (globalContext) {\n\t\tcontextFiles.push(globalContext);\n\t\tseenPaths.add(globalContext.path);\n\t}\n\n\tconst ancestorContextFiles: ProjectContextFile[] = [];\n\n\tlet currentDir = resolvedCwd;\n\tconst root = resolve(\"/\");\n\n\twhile (true) {\n\t\tconst contextFile = loadContextFileFromDir(currentDir);\n\t\tif (contextFile && !seenPaths.has(contextFile.path)) {\n\t\t\tancestorContextFiles.unshift(contextFile);\n\t\t\tseenPaths.add(contextFile.path);\n\t\t}\n\n\t\tif (currentDir === root) break;\n\n\t\tconst parentDir = resolve(currentDir, \"..\");\n\t\tif (parentDir === currentDir) break;\n\t\tcurrentDir = parentDir;\n\t}\n\n\tcontextFiles.push(...ancestorContextFiles);\n\n\treturn contextFiles;\n}\n\nasync function loadContextFileFromDirWithOperations(\n\toperations: ToolOperations,\n\tdir: string,\n\tworkspace?: WorkspaceIdentity,\n): Promise<ProjectContextFile | null> {\n\tfor (const filename of CONTEXT_FILE_CANDIDATES) {\n\t\tconst filePath = joinPortablePath(dir, filename);\n\t\ttry {\n\t\t\tif (!(await operations.stat(filePath)).isFile()) continue;\n\t\t\tawait operations.access(filePath, \"read\");\n\t\t\treturn {\n\t\t\t\tpath: filePath,\n\t\t\t\tcontent: (await operations.readFile(filePath)).toString(\"utf-8\"),\n\t\t\t\tsourceInfo: {\n\t\t\t\t\tpath: filePath,\n\t\t\t\t\tsource: \"remote\",\n\t\t\t\t\tscope: \"project\",\n\t\t\t\t\torigin: \"top-level\",\n\t\t\t\t\tbaseDir: dir,\n\t\t\t\t\t...(workspace ? { workspace } : {}),\n\t\t\t\t},\n\t\t\t};\n\t\t} catch {}\n\t}\n\treturn null;\n}\n\nasync function loadProjectContextFilesWithOperations(\n\toptions: LoadProjectContextFilesWithOperationsOptions,\n): Promise<ProjectContextFile[]> {\n\tconst contextFiles: ProjectContextFile[] = [];\n\tconst seenPaths = new Set<string>();\n\tconst globalContext = loadContextFileFromDir(resolvePath(options.agentDir));\n\tif (globalContext) {\n\t\tcontextFiles.push(globalContext);\n\t\tseenPaths.add(globalContext.path);\n\t}\n\tconst sandboxUserContext = await loadDaemonContextFileWithOperations(\n\t\toptions.operations,\n\t\toptions.workspace,\n\t\t\"AGENTS.md\",\n\t\t\"~/.grip/AGENTS.md\",\n\t\t\"user\",\n\t\t\"~/.grip\",\n\t);\n\tif (sandboxUserContext && !seenPaths.has(sandboxUserContext.path)) {\n\t\tcontextFiles.push(sandboxUserContext);\n\t\tseenPaths.add(sandboxUserContext.path);\n\t}\n\tconst ancestorContextFiles: ProjectContextFile[] = [];\n\tlet currentDir = options.cwd;\n\twhile (true) {\n\t\tconst contextFile = await loadContextFileFromDirWithOperations(options.operations, currentDir, options.workspace);\n\t\tif (contextFile && !seenPaths.has(contextFile.path)) {\n\t\t\tancestorContextFiles.unshift(contextFile);\n\t\t\tseenPaths.add(contextFile.path);\n\t\t}\n\t\tif (\n\t\t\toptions.workspace &&\n\t\t\tpathComparisonValue(currentDir, options.workspace.pathFlavor) ===\n\t\t\t\tpathComparisonValue(options.workspace.root, options.workspace.pathFlavor)\n\t\t)\n\t\t\tbreak;\n\t\tconst parentDir = dirnamePortablePath(currentDir, options.workspace?.pathFlavor);\n\t\tif (parentDir === currentDir) break;\n\t\tcurrentDir = parentDir;\n\t}\n\tcontextFiles.push(...ancestorContextFiles);\n\tconst sandboxContext = await loadDaemonContextFileWithOperations(\n\t\toptions.operations,\n\t\toptions.workspace,\n\t\t\"SANDBOX.md\",\n\t\t\"SANDBOX.md\",\n\t\t\"project\",\n\t\toptions.workspace?.root,\n\t);\n\tif (sandboxContext && !seenPaths.has(sandboxContext.path)) contextFiles.push(sandboxContext);\n\treturn contextFiles;\n}\n\nasync function loadDaemonContextFileWithOperations(\n\toperations: ToolOperations,\n\tworkspace: WorkspaceIdentity | undefined,\n\tresourcePath: string,\n\tdisplayPath: string,\n\tscope: SourceScope,\n\tbaseDir: string | undefined,\n): Promise<ProjectContextFile | null> {\n\tif (!workspace || !operations.readResource) return null;\n\ttry {\n\t\tconst content = (await operations.readResource(resourcePath)).toString(\"utf-8\");\n\t\treturn {\n\t\t\tpath: displayPath,\n\t\t\tcontent,\n\t\t\tsourceInfo: createSyntheticSourceInfo(displayPath, {\n\t\t\t\tsource: \"remote\",\n\t\t\t\tscope,\n\t\t\t\torigin: \"top-level\",\n\t\t\t\tbaseDir,\n\t\t\t\tworkspace,\n\t\t\t}),\n\t\t};\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nexport interface DefaultResourceLoaderOptions {\n\tcwd: string;\n\tagentDir: string;\n\tsettingsManager?: SettingsManager;\n\teventBus?: EventBus;\n\tadditionalExtensionPaths?: string[];\n\tadditionalSkillPaths?: string[];\n\tadditionalRulePaths?: string[];\n\tadditionalPromptTemplatePaths?: string[];\n\tadditionalThemePaths?: string[];\n\textensionFactories?: ExtensionFactory[];\n\tnoExtensions?: boolean;\n\tnoSkills?: boolean;\n\tnoRules?: boolean;\n\tnoPromptTemplates?: boolean;\n\tnoThemes?: boolean;\n\tnoContextFiles?: boolean;\n\tsystemPrompt?: string;\n\tappendSystemPrompt?: string[];\n\ttoolOperations?: ToolOperations;\n\textensionsOverride?: (base: LoadExtensionsResult) => LoadExtensionsResult;\n\tskillsOverride?: ResourceOverride<LoadSkillsResult>;\n\trulesOverride?: ResourceOverride<LoadRulesResult>;\n\tpromptsOverride?: ResourceOverride<LoadPromptTemplatesResult>;\n\tthemesOverride?: ResourceOverride<LoadThemesResult>;\n\tagentsFilesOverride?: ResourceOverride<ProjectContextFilesResult>;\n\tsystemPromptOverride?: (base: string | undefined) => string | undefined;\n\tappendSystemPromptOverride?: (base: string[]) => string[];\n}\n\nexport class DefaultResourceLoader implements ResourceLoader {\n\tprivate cwd: string;\n\tprivate agentDir: string;\n\tprivate settingsManager: SettingsManager;\n\tprivate eventBus: EventBus;\n\tprivate packageManager: DefaultPackageManager;\n\tprivate additionalExtensionPaths: string[];\n\tprivate additionalSkillPaths: string[];\n\tprivate additionalRulePaths: string[];\n\tprivate additionalPromptTemplatePaths: string[];\n\tprivate additionalThemePaths: string[];\n\tprivate extensionFactories: ExtensionFactory[];\n\tprivate noExtensions: boolean;\n\tprivate noSkills: boolean;\n\tprivate noRules: boolean;\n\tprivate noPromptTemplates: boolean;\n\tprivate noThemes: boolean;\n\tprivate noContextFiles: boolean;\n\tprivate systemPromptSource?: string;\n\tprivate appendSystemPromptSource?: string[];\n\tprivate toolOperations?: ToolOperations;\n\tprivate extensionsOverride?: (base: LoadExtensionsResult) => LoadExtensionsResult;\n\tprivate skillsOverride?: ResourceOverride<LoadSkillsResult>;\n\tprivate rulesOverride?: ResourceOverride<LoadRulesResult>;\n\tprivate promptsOverride?: ResourceOverride<LoadPromptTemplatesResult>;\n\tprivate themesOverride?: ResourceOverride<LoadThemesResult>;\n\tprivate agentsFilesOverride?: ResourceOverride<ProjectContextFilesResult>;\n\tprivate systemPromptOverride?: (base: string | undefined) => string | undefined;\n\tprivate appendSystemPromptOverride?: (base: string[]) => string[];\n\n\tprivate extensionsResult: LoadExtensionsResult;\n\tprivate skills: Skill[];\n\tprivate skillDiagnostics: ResourceDiagnostic[];\n\tprivate rules: Rule[];\n\tprivate ruleDiagnostics: ResourceDiagnostic[];\n\tprivate prompts: PromptTemplate[];\n\tprivate promptDiagnostics: ResourceDiagnostic[];\n\tprivate themes: Theme[];\n\tprivate themeDiagnostics: ResourceDiagnostic[];\n\tprivate agentsFiles: ProjectContextFile[];\n\tprivate systemPrompt?: string;\n\tprivate appendSystemPrompt: string[];\n\tprivate lastSkillPaths: string[];\n\tprivate lastRulePaths: string[];\n\tprivate extensionSkillSourceInfos: Map<string, SourceInfo>;\n\tprivate extensionRuleSourceInfos: Map<string, SourceInfo>;\n\tprivate extensionPromptSourceInfos: Map<string, SourceInfo>;\n\tprivate extensionThemeSourceInfos: Map<string, SourceInfo>;\n\tprivate lastPromptPaths: string[];\n\tprivate lastThemePaths: string[];\n\n\tconstructor(options: DefaultResourceLoaderOptions) {\n\t\tthis.cwd = resolvePath(options.cwd);\n\t\tthis.agentDir = resolvePath(options.agentDir);\n\t\tthis.settingsManager = options.settingsManager ?? SettingsManager.create(this.cwd, this.agentDir);\n\t\tthis.eventBus = options.eventBus ?? createEventBus();\n\t\tthis.packageManager = new DefaultPackageManager({\n\t\t\tcwd: this.cwd,\n\t\t\tagentDir: this.agentDir,\n\t\t\tsettingsManager: this.settingsManager,\n\t\t});\n\t\tthis.additionalExtensionPaths = options.additionalExtensionPaths ?? [];\n\t\tthis.additionalSkillPaths = options.additionalSkillPaths ?? [];\n\t\tthis.additionalRulePaths = options.additionalRulePaths ?? [];\n\t\tthis.additionalPromptTemplatePaths = options.additionalPromptTemplatePaths ?? [];\n\t\tthis.additionalThemePaths = options.additionalThemePaths ?? [];\n\t\tthis.extensionFactories = options.extensionFactories ?? [];\n\t\tthis.noExtensions = options.noExtensions ?? false;\n\t\tthis.noSkills = options.noSkills ?? false;\n\t\tthis.noRules = options.noRules ?? false;\n\t\tthis.noPromptTemplates = options.noPromptTemplates ?? false;\n\t\tthis.noThemes = options.noThemes ?? false;\n\t\tthis.noContextFiles = options.noContextFiles ?? false;\n\t\tthis.systemPromptSource = options.systemPrompt;\n\t\tthis.appendSystemPromptSource = options.appendSystemPrompt;\n\t\tthis.toolOperations = options.toolOperations;\n\t\tthis.extensionsOverride = options.extensionsOverride;\n\t\tthis.skillsOverride = options.skillsOverride;\n\t\tthis.rulesOverride = options.rulesOverride;\n\t\tthis.promptsOverride = options.promptsOverride;\n\t\tthis.themesOverride = options.themesOverride;\n\t\tthis.agentsFilesOverride = options.agentsFilesOverride;\n\t\tthis.systemPromptOverride = options.systemPromptOverride;\n\t\tthis.appendSystemPromptOverride = options.appendSystemPromptOverride;\n\n\t\tthis.extensionsResult = { extensions: [], errors: [], runtime: createExtensionRuntime() };\n\t\tthis.skills = [];\n\t\tthis.skillDiagnostics = [];\n\t\tthis.rules = [];\n\t\tthis.ruleDiagnostics = [];\n\t\tthis.prompts = [];\n\t\tthis.promptDiagnostics = [];\n\t\tthis.themes = [];\n\t\tthis.themeDiagnostics = [];\n\t\tthis.agentsFiles = [];\n\t\tthis.appendSystemPrompt = [];\n\t\tthis.lastSkillPaths = [];\n\t\tthis.lastRulePaths = [];\n\t\tthis.extensionSkillSourceInfos = new Map();\n\t\tthis.extensionRuleSourceInfos = new Map();\n\t\tthis.extensionPromptSourceInfos = new Map();\n\t\tthis.extensionThemeSourceInfos = new Map();\n\t\tthis.lastPromptPaths = [];\n\t\tthis.lastThemePaths = [];\n\t}\n\n\tgetExtensions(): LoadExtensionsResult {\n\t\treturn this.extensionsResult;\n\t}\n\n\tgetSkills(): LoadSkillsResult {\n\t\treturn { skills: this.skills, diagnostics: this.skillDiagnostics };\n\t}\n\n\tgetRules(): LoadRulesResult {\n\t\treturn { rules: this.rules, diagnostics: this.ruleDiagnostics };\n\t}\n\n\tgetPrompts(): LoadPromptTemplatesResult {\n\t\treturn { prompts: this.prompts, diagnostics: this.promptDiagnostics };\n\t}\n\n\tgetThemes(): LoadThemesResult {\n\t\treturn { themes: this.themes, diagnostics: this.themeDiagnostics };\n\t}\n\n\tgetAgentsFiles(): ProjectContextFilesResult {\n\t\treturn { agentsFiles: this.agentsFiles };\n\t}\n\n\tgetSystemPrompt(): string | undefined {\n\t\treturn this.systemPrompt;\n\t}\n\n\tgetAppendSystemPrompt(): string[] {\n\t\treturn this.appendSystemPrompt;\n\t}\n\n\tsetToolOperations(operations: ToolOperations | undefined): void {\n\t\tthis.toolOperations = operations;\n\t}\n\n\tprivate getInstructionOperations(): ToolOperations | undefined {\n\t\tconst backend = this.toolOperations?.getBackendInfo?.();\n\t\treturn backend?.type === \"remote\" && backend.configured ? this.toolOperations : undefined;\n\t}\n\n\tprivate getRemoteProjectInstructionResourcePaths(\n\t\tcwd: string,\n\t\tbackend: ConfiguredInstructionBackend,\n\t): RemoteInstructionResourcePaths {\n\t\tconst projectBaseDir = joinPortablePath(cwd, CONFIG_DIR_NAME);\n\t\tconst projectMetadata: PathMetadata = {\n\t\t\tsource: \"remote\",\n\t\t\tscope: \"project\",\n\t\t\torigin: \"top-level\",\n\t\t\tbaseDir: projectBaseDir,\n\t\t\tworkspace: backend.workspace,\n\t\t};\n\t\tconst skills: ResourcePathEntry[] = [\n\t\t\t{ path: joinPortablePath(projectBaseDir, \"skills\"), metadata: projectMetadata },\n\t\t];\n\t\tconst rules: ResourcePathEntry[] = [\n\t\t\t{ path: joinPortablePath(projectBaseDir, \"rules\"), metadata: projectMetadata },\n\t\t];\n\t\tconst prompts: ResourcePathEntry[] = [\n\t\t\t{ path: joinPortablePath(projectBaseDir, \"prompts\"), metadata: projectMetadata },\n\t\t];\n\n\t\tlet currentDir = cwd;\n\t\tconst boundary = backend.workspace.root;\n\t\twhile (true) {\n\t\t\tconst agentsBaseDir = joinPortablePath(currentDir, \".agents\");\n\t\t\tconst agentsMetadata: PathMetadata = {\n\t\t\t\tsource: \"remote\",\n\t\t\t\tscope: \"project\",\n\t\t\t\torigin: \"top-level\",\n\t\t\t\tbaseDir: agentsBaseDir,\n\t\t\t\tworkspace: backend.workspace,\n\t\t\t};\n\t\t\tskills.push({ path: joinPortablePath(agentsBaseDir, \"skills\"), metadata: agentsMetadata });\n\t\t\trules.push({ path: joinPortablePath(agentsBaseDir, \"rules\"), metadata: agentsMetadata });\n\t\t\tif (\n\t\t\t\tpathComparisonValue(currentDir, backend.workspace.pathFlavor) ===\n\t\t\t\tpathComparisonValue(boundary, backend.workspace.pathFlavor)\n\t\t\t)\n\t\t\t\tbreak;\n\t\t\tconst parentDir = dirnamePortablePath(currentDir, backend.workspace.pathFlavor);\n\t\t\tif (parentDir === currentDir) break;\n\t\t\tcurrentDir = parentDir;\n\t\t}\n\n\t\treturn { skills, rules, prompts };\n\t}\n\n\textendResources(paths: ResourceExtensionPaths): void {\n\t\tconst skillPaths = this.normalizeExtensionPaths(paths.skillPaths ?? []);\n\t\tconst rulePaths = this.normalizeExtensionPaths(paths.rulePaths ?? []);\n\t\tconst promptPaths = this.normalizeExtensionPaths(paths.promptPaths ?? []);\n\t\tconst themePaths = this.normalizeExtensionPaths(paths.themePaths ?? []);\n\n\t\tfor (const entry of skillPaths) {\n\t\t\tthis.extensionSkillSourceInfos.set(entry.path, createSourceInfo(entry.path, entry.metadata));\n\t\t}\n\t\tfor (const entry of rulePaths) {\n\t\t\tthis.extensionRuleSourceInfos.set(entry.path, createSourceInfo(entry.path, entry.metadata));\n\t\t}\n\t\tfor (const entry of promptPaths) {\n\t\t\tthis.extensionPromptSourceInfos.set(entry.path, createSourceInfo(entry.path, entry.metadata));\n\t\t}\n\t\tfor (const entry of themePaths) {\n\t\t\tthis.extensionThemeSourceInfos.set(entry.path, createSourceInfo(entry.path, entry.metadata));\n\t\t}\n\n\t\tif (skillPaths.length > 0) {\n\t\t\tthis.lastSkillPaths = this.mergePaths(\n\t\t\t\tthis.lastSkillPaths,\n\t\t\t\tskillPaths.map((entry) => entry.path),\n\t\t\t);\n\t\t\tthis.updateSkillsFromPaths(this.lastSkillPaths);\n\t\t}\n\n\t\tif (rulePaths.length > 0) {\n\t\t\tthis.lastRulePaths = this.mergePaths(\n\t\t\t\tthis.lastRulePaths,\n\t\t\t\trulePaths.map((entry) => entry.path),\n\t\t\t);\n\t\t\tthis.updateRulesFromPaths(this.lastRulePaths);\n\t\t}\n\n\t\tif (promptPaths.length > 0) {\n\t\t\tthis.lastPromptPaths = this.mergePaths(\n\t\t\t\tthis.lastPromptPaths,\n\t\t\t\tpromptPaths.map((entry) => entry.path),\n\t\t\t);\n\t\t\tthis.updatePromptsFromPaths(this.lastPromptPaths);\n\t\t}\n\n\t\tif (themePaths.length > 0) {\n\t\t\tthis.lastThemePaths = this.mergePaths(\n\t\t\t\tthis.lastThemePaths,\n\t\t\t\tthemePaths.map((entry) => entry.path),\n\t\t\t);\n\t\t\tthis.updateThemesFromPaths(this.lastThemePaths);\n\t\t}\n\t}\n\n\tprivate recordResourceMetadata(resources: ResolvedResource[], metadataByPath: Map<string, PathMetadata>): void {\n\t\tfor (const resource of resources) {\n\t\t\tif (!metadataByPath.has(resource.path)) metadataByPath.set(resource.path, resource.metadata);\n\t\t}\n\t}\n\n\tprivate getEnabledResources(\n\t\tresources: ResolvedResource[],\n\t\tmetadataByPath: Map<string, PathMetadata>,\n\t): ResolvedResource[] {\n\t\tthis.recordResourceMetadata(resources, metadataByPath);\n\t\treturn resources.filter((resource) => resource.enabled);\n\t}\n\n\tprivate getEnabledPaths(resources: ResolvedResource[], metadataByPath: Map<string, PathMetadata>): string[] {\n\t\treturn this.getEnabledResources(resources, metadataByPath).map((resource) => resource.path);\n\t}\n\n\tprivate shouldExcludeLocalProjectInstructionResource(\n\t\tresource: ResolvedResource,\n\t\tloadProjectInstructionsRemotely: boolean,\n\t): boolean {\n\t\treturn (\n\t\t\tloadProjectInstructionsRemotely &&\n\t\t\tresource.metadata.scope === \"project\" &&\n\t\t\tresource.metadata.origin === \"top-level\"\n\t\t);\n\t}\n\n\tprivate normalizePackagedInstructionPath(\n\t\tresource: ResolvedResource,\n\t\tfilename: string,\n\t\tmetadataByPath: Map<string, PathMetadata>,\n\t): string {\n\t\tif (resource.metadata.source !== \"auto\" && resource.metadata.origin !== \"package\") return resource.path;\n\t\ttry {\n\t\t\tif (!statSync(resource.path).isDirectory()) return resource.path;\n\t\t} catch {\n\t\t\treturn resource.path;\n\t\t}\n\t\tconst instructionFile = join(resource.path, filename);\n\t\tif (!existsSync(instructionFile)) return resource.path;\n\t\tif (!metadataByPath.has(instructionFile)) metadataByPath.set(instructionFile, resource.metadata);\n\t\treturn instructionFile;\n\t}\n\n\tprivate async filterExistingRemoteInstructionPaths(\n\t\tentries: ResourcePathEntry[],\n\t\toperations: ToolOperations,\n\t): Promise<ResourcePathEntry[]> {\n\t\tconst existing: ResourcePathEntry[] = [];\n\t\tfor (const entry of entries) {\n\t\t\ttry {\n\t\t\t\tawait operations.access(entry.path, \"exists\");\n\t\t\t\texisting.push(entry);\n\t\t\t} catch {}\n\t\t}\n\t\treturn existing;\n\t}\n\n\tprivate async discoverRemoteInstructionResourcePaths(\n\t\toperations: ToolOperations | undefined,\n\t): Promise<RemoteInstructionResourcePaths> {\n\t\tconst emptyPaths = { skills: [], rules: [], prompts: [] };\n\t\tif (!operations) return emptyPaths;\n\t\tconst backend = operations.getBackendInfo?.();\n\t\tif (backend?.type !== \"remote\" || !backend.configured) return emptyPaths;\n\t\tconst discovered = this.getRemoteProjectInstructionResourcePaths(operations.cwd, backend);\n\t\treturn {\n\t\t\tskills: await this.filterExistingRemoteInstructionPaths(discovered.skills, operations),\n\t\t\trules: await this.filterExistingRemoteInstructionPaths(discovered.rules, operations),\n\t\t\tprompts: await this.filterExistingRemoteInstructionPaths(discovered.prompts, operations),\n\t\t};\n\t}\n\n\tprivate recordRemoteInstructionMetadata(\n\t\tpaths: RemoteInstructionResourcePaths,\n\t\tmetadataByPath: Map<string, PathMetadata>,\n\t): void {\n\t\tfor (const entry of [...paths.skills, ...paths.rules, ...paths.prompts]) {\n\t\t\tmetadataByPath.set(entry.path, entry.metadata);\n\t\t}\n\t}\n\n\tprivate recordCliInstructionMetadata(paths: ResolvedPaths, metadataByPath: Map<string, PathMetadata>): void {\n\t\tfor (const resource of [...paths.extensions, ...paths.skills, ...paths.rules]) {\n\t\t\tif (!metadataByPath.has(resource.path)) {\n\t\t\t\tmetadataByPath.set(resource.path, { source: \"cli\", scope: \"temporary\", origin: \"top-level\" });\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async collectReloadResourcePaths(\n\t\tresolvedPaths: ResolvedPaths,\n\t\tcliPaths: ResolvedPaths,\n\t\tmetadataByPath: Map<string, PathMetadata>,\n\t\tinstructionOperations: ToolOperations | undefined,\n\t): Promise<ReloadResourcePaths> {\n\t\tconst loadProjectInstructionsRemotely = instructionOperations !== undefined;\n\t\tconst enabledExtensions = this.getEnabledPaths(resolvedPaths.extensions, metadataByPath);\n\t\tconst enabledSkillResources = this.getEnabledResources(resolvedPaths.skills, metadataByPath).filter(\n\t\t\t(resource) => !this.shouldExcludeLocalProjectInstructionResource(resource, loadProjectInstructionsRemotely),\n\t\t);\n\t\tconst enabledRuleResources = this.getEnabledResources(resolvedPaths.rules, metadataByPath).filter(\n\t\t\t(resource) => !this.shouldExcludeLocalProjectInstructionResource(resource, loadProjectInstructionsRemotely),\n\t\t);\n\t\tconst enabledPrompts = this.getEnabledResources(resolvedPaths.prompts, metadataByPath)\n\t\t\t.filter(\n\t\t\t\t(resource) => !this.shouldExcludeLocalProjectInstructionResource(resource, loadProjectInstructionsRemotely),\n\t\t\t)\n\t\t\t.map((resource) => resource.path);\n\t\tconst enabledThemes = this.getEnabledPaths(resolvedPaths.themes, metadataByPath);\n\n\t\tconst remotePaths = await this.discoverRemoteInstructionResourcePaths(instructionOperations);\n\t\tthis.recordRemoteInstructionMetadata(remotePaths, metadataByPath);\n\t\tconst enabledSkills = enabledSkillResources.map((resource) =>\n\t\t\tthis.normalizePackagedInstructionPath(resource, \"SKILL.md\", metadataByPath),\n\t\t);\n\t\tconst enabledRules = enabledRuleResources.map((resource) =>\n\t\t\tthis.normalizePackagedInstructionPath(resource, \"RULES.md\", metadataByPath),\n\t\t);\n\n\t\tthis.recordCliInstructionMetadata(cliPaths, metadataByPath);\n\t\tconst cliExtensions = this.getEnabledPaths(cliPaths.extensions, metadataByPath);\n\t\tconst cliSkills = this.getEnabledPaths(cliPaths.skills, metadataByPath);\n\t\tconst cliRules = this.getEnabledPaths(cliPaths.rules, metadataByPath);\n\t\tconst cliPrompts = this.getEnabledPaths(cliPaths.prompts, metadataByPath);\n\t\tconst cliThemes = this.getEnabledPaths(cliPaths.themes, metadataByPath);\n\n\t\treturn {\n\t\t\textensions: this.noExtensions ? cliExtensions : this.mergePaths(cliExtensions, enabledExtensions),\n\t\t\tskills: this.noSkills\n\t\t\t\t? this.mergePaths(cliSkills, this.additionalSkillPaths)\n\t\t\t\t: this.mergePaths(\n\t\t\t\t\t\t[...cliSkills, ...enabledSkills, ...remotePaths.skills.map((entry) => entry.path)],\n\t\t\t\t\t\tthis.additionalSkillPaths,\n\t\t\t\t\t),\n\t\t\trules: this.noRules\n\t\t\t\t? this.mergePaths(cliRules, this.additionalRulePaths)\n\t\t\t\t: this.mergePaths(\n\t\t\t\t\t\t[...cliRules, ...enabledRules, ...remotePaths.rules.map((entry) => entry.path)],\n\t\t\t\t\t\tthis.additionalRulePaths,\n\t\t\t\t\t),\n\t\t\tprompts: this.noPromptTemplates\n\t\t\t\t? this.mergePaths(cliPrompts, this.additionalPromptTemplatePaths)\n\t\t\t\t: this.mergePaths(\n\t\t\t\t\t\t[...cliPrompts, ...enabledPrompts, ...remotePaths.prompts.map((entry) => entry.path)],\n\t\t\t\t\t\tthis.additionalPromptTemplatePaths,\n\t\t\t\t\t),\n\t\t\tthemes: this.noThemes\n\t\t\t\t? this.mergePaths(cliThemes, this.additionalThemePaths)\n\t\t\t\t: this.mergePaths([...cliThemes, ...enabledThemes], this.additionalThemePaths),\n\t\t};\n\t}\n\n\tprivate async reloadExtensions(extensionPaths: string[], metadataByPath: Map<string, PathMetadata>): Promise<void> {\n\t\tconst extensionsResult = await loadExtensions(extensionPaths, this.cwd, this.eventBus);\n\t\tconst inlineExtensions = await this.loadExtensionFactories(extensionsResult.runtime);\n\t\textensionsResult.extensions.push(...inlineExtensions.extensions);\n\t\textensionsResult.errors.push(...inlineExtensions.errors);\n\t\tfor (const conflict of this.detectExtensionConflicts(extensionsResult.extensions)) {\n\t\t\textensionsResult.errors.push({ path: conflict.path, error: conflict.message });\n\t\t}\n\t\tfor (const path of this.additionalExtensionPaths) {\n\t\t\tif (!isLocalPath(path)) continue;\n\t\t\tconst resolved = this.resolveResourcePath(path);\n\t\t\tif (!existsSync(resolved)) {\n\t\t\t\textensionsResult.errors.push({ path: resolved, error: `Extension path does not exist: ${resolved}` });\n\t\t\t}\n\t\t}\n\t\tthis.extensionsResult = this.extensionsOverride ? this.extensionsOverride(extensionsResult) : extensionsResult;\n\t\tthis.applyExtensionSourceInfo(this.extensionsResult.extensions, metadataByPath);\n\t}\n\n\tprivate async reloadSkills(skillPaths: string[], metadataByPath: Map<string, PathMetadata>): Promise<void> {\n\t\tthis.lastSkillPaths = skillPaths;\n\t\tawait this.updateSkillsFromPathsForReload(skillPaths, metadataByPath);\n\t\tconst diagnosticPaths = new Set(this.skillDiagnostics.map((diagnostic) => diagnostic.path));\n\t\tfor (const path of this.additionalSkillPaths) {\n\t\t\tif (!isLocalPath(path)) continue;\n\t\t\tconst resolved = this.resolveResourcePath(path);\n\t\t\tappendMissingResourceDiagnostic(resolved, this.skillDiagnostics, diagnosticPaths, \"Skill path does not exist\");\n\t\t}\n\t}\n\n\tprivate async reloadRules(rulePaths: string[], metadataByPath: Map<string, PathMetadata>): Promise<void> {\n\t\tthis.lastRulePaths = rulePaths;\n\t\tawait this.updateRulesFromPathsForReload(rulePaths, metadataByPath);\n\t\tconst diagnosticPaths = new Set(this.ruleDiagnostics.map((diagnostic) => diagnostic.path));\n\t\tfor (const path of this.additionalRulePaths) {\n\t\t\tif (!isLocalPath(path)) continue;\n\t\t\tconst resolved = this.resolveResourcePath(path);\n\t\t\tappendMissingResourceDiagnostic(resolved, this.ruleDiagnostics, diagnosticPaths, \"Rule path does not exist\");\n\t\t}\n\t}\n\n\tprivate async reloadPrompts(promptPaths: string[], metadataByPath: Map<string, PathMetadata>): Promise<void> {\n\t\tthis.lastPromptPaths = promptPaths;\n\t\tawait this.updatePromptsFromPathsForReload(promptPaths, metadataByPath);\n\t\tconst diagnosticPaths = new Set(this.promptDiagnostics.map((diagnostic) => diagnostic.path));\n\t\tfor (const path of this.additionalPromptTemplatePaths) {\n\t\t\tif (!isLocalPath(path)) continue;\n\t\t\tconst resolved = this.resolveResourcePath(path);\n\t\t\tappendMissingResourceDiagnostic(\n\t\t\t\tresolved,\n\t\t\t\tthis.promptDiagnostics,\n\t\t\t\tdiagnosticPaths,\n\t\t\t\t\"Prompt template path does not exist\",\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate reloadThemes(themePaths: string[], metadataByPath: Map<string, PathMetadata>): void {\n\t\tthis.lastThemePaths = themePaths;\n\t\tthis.updateThemesFromPaths(themePaths, metadataByPath);\n\t\tconst diagnosticPaths = new Set(this.themeDiagnostics.map((diagnostic) => diagnostic.path));\n\t\tfor (const path of this.additionalThemePaths) {\n\t\t\tconst resolved = this.resolveResourcePath(path);\n\t\t\tappendMissingResourceDiagnostic(resolved, this.themeDiagnostics, diagnosticPaths, \"Theme path does not exist\");\n\t\t}\n\t}\n\n\tprivate async reloadProjectContextFiles(instructionOperations: ToolOperations | undefined): Promise<void> {\n\t\tconst backend = instructionOperations?.getBackendInfo?.();\n\t\tconst agentsFiles = {\n\t\t\tagentsFiles: this.noContextFiles\n\t\t\t\t? []\n\t\t\t\t: instructionOperations\n\t\t\t\t\t? await loadProjectContextFilesWithOperations({\n\t\t\t\t\t\t\tcwd: instructionOperations.cwd,\n\t\t\t\t\t\t\tagentDir: this.agentDir,\n\t\t\t\t\t\t\toperations: instructionOperations,\n\t\t\t\t\t\t\tworkspace: backend?.type === \"remote\" && backend.configured ? backend.workspace : undefined,\n\t\t\t\t\t\t})\n\t\t\t\t\t: loadProjectContextFiles({ cwd: this.cwd, agentDir: this.agentDir }),\n\t\t};\n\t\tconst resolvedAgentsFiles = this.agentsFilesOverride ? this.agentsFilesOverride(agentsFiles) : agentsFiles;\n\t\tthis.agentsFiles = resolvedAgentsFiles.agentsFiles;\n\t}\n\n\tprivate async reloadSystemPrompts(): Promise<void> {\n\t\tconst baseSystemPrompt = await resolvePromptInput(\n\t\t\tthis.systemPromptSource ?? this.discoverSystemPromptFile(),\n\t\t\t\"system prompt\",\n\t\t\tthis.getInstructionOperations(),\n\t\t);\n\t\tthis.systemPrompt = this.systemPromptOverride ? this.systemPromptOverride(baseSystemPrompt) : baseSystemPrompt;\n\n\t\tconst appendSources =\n\t\t\tthis.appendSystemPromptSource ??\n\t\t\t(this.discoverAppendSystemPromptFile() ? [this.discoverAppendSystemPromptFile()!] : []);\n\t\tconst baseAppend = (\n\t\t\tawait Promise.all(\n\t\t\t\tappendSources.map((source) =>\n\t\t\t\t\tresolvePromptInput(source, \"append system prompt\", this.getInstructionOperations()),\n\t\t\t\t),\n\t\t\t)\n\t\t).filter((source): source is string => source !== undefined);\n\t\tthis.appendSystemPrompt = this.appendSystemPromptOverride\n\t\t\t? this.appendSystemPromptOverride(baseAppend)\n\t\t\t: baseAppend;\n\t}\n\n\tasync reload(): Promise<void> {\n\t\tresetTimings(\"extensions\");\n\t\tawait this.settingsManager.reload();\n\t\tconst resolvedPaths = await this.packageManager.resolve();\n\t\tconst cliPaths = await this.packageManager.resolveExtensionSources(this.additionalExtensionPaths, {\n\t\t\ttemporary: true,\n\t\t});\n\t\tconst metadataByPath = new Map<string, PathMetadata>();\n\t\tthis.extensionSkillSourceInfos = new Map();\n\t\tthis.extensionRuleSourceInfos = new Map();\n\t\tthis.extensionPromptSourceInfos = new Map();\n\t\tthis.extensionThemeSourceInfos = new Map();\n\n\t\tconst instructionOperations = this.getInstructionOperations();\n\t\tconst paths = await this.collectReloadResourcePaths(\n\t\t\tresolvedPaths,\n\t\t\tcliPaths,\n\t\t\tmetadataByPath,\n\t\t\tinstructionOperations,\n\t\t);\n\t\tawait this.reloadExtensions(paths.extensions, metadataByPath);\n\t\tawait this.reloadSkills(paths.skills, metadataByPath);\n\t\tawait this.reloadRules(paths.rules, metadataByPath);\n\t\tawait this.reloadPrompts(paths.prompts, metadataByPath);\n\t\tthis.reloadThemes(paths.themes, metadataByPath);\n\t\tawait this.reloadProjectContextFiles(instructionOperations);\n\t\tawait this.reloadSystemPrompts();\n\t}\n\n\tprivate normalizeExtensionPaths(entries: ResourcePathEntry[]): ResourcePathEntry[] {\n\t\treturn entries.map((entry) => {\n\t\t\tconst metadata = entry.metadata.baseDir\n\t\t\t\t? { ...entry.metadata, baseDir: this.resolveResourcePath(entry.metadata.baseDir) }\n\t\t\t\t: entry.metadata;\n\t\t\treturn {\n\t\t\t\tpath: this.resolveResourcePath(entry.path),\n\t\t\t\tmetadata,\n\t\t\t};\n\t\t});\n\t}\n\n\tprivate getExtensionRegisteredSkills(): Skill[] {\n\t\treturn this.extensionsResult.extensions.flatMap((extension) => Array.from(extension.skills.values()));\n\t}\n\n\tprivate getExtensionRegisteredRules(): Rule[] {\n\t\treturn this.extensionsResult.extensions.flatMap((extension) => Array.from(extension.rules.values()));\n\t}\n\n\tprivate getExtensionRegisteredPrompts(): PromptTemplate[] {\n\t\treturn this.extensionsResult.extensions.flatMap((extension) => Array.from(extension.prompts.values()));\n\t}\n\n\tprivate applyLoadedSkills(skillsResult: LoadSkillsResult, metadataByPath?: Map<string, PathMetadata>): void {\n\t\tconst extensionSkills = this.getExtensionRegisteredSkills();\n\t\tconst seenSkillNames = new Set(extensionSkills.map((skill) => skill.name));\n\t\tconst baseSkillsResult = {\n\t\t\tskills: [...extensionSkills, ...skillsResult.skills.filter((skill) => !seenSkillNames.has(skill.name))],\n\t\t\tdiagnostics: skillsResult.diagnostics,\n\t\t};\n\t\tconst resolvedSkills = this.skillsOverride ? this.skillsOverride(baseSkillsResult) : baseSkillsResult;\n\t\tthis.skills = resolvedSkills.skills.map((skill) => ({\n\t\t\t...skill,\n\t\t\tsourceInfo:\n\t\t\t\tthis.findSourceInfoForPath(skill.filePath, this.extensionSkillSourceInfos, metadataByPath) ??\n\t\t\t\tskill.sourceInfo ??\n\t\t\t\tthis.getDefaultSourceInfoForPath(skill.filePath),\n\t\t}));\n\t\tthis.skillDiagnostics = resolvedSkills.diagnostics;\n\t}\n\n\tprivate updateSkillsFromPaths(skillPaths: string[], metadataByPath?: Map<string, PathMetadata>): void {\n\t\tlet skillsResult: { skills: Skill[]; diagnostics: ResourceDiagnostic[] };\n\t\tif (this.noSkills && skillPaths.length === 0) {\n\t\t\tskillsResult = { skills: [], diagnostics: [] };\n\t\t} else {\n\t\t\tskillsResult = loadSkills({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\tagentDir: this.agentDir,\n\t\t\t\tskillPaths,\n\t\t\t\tincludeDefaults: false,\n\t\t\t});\n\t\t}\n\t\tthis.applyLoadedSkills(skillsResult, metadataByPath);\n\t}\n\n\tprivate shouldLoadPathWithInstructionOperations(path: string, metadataByPath?: Map<string, PathMetadata>): boolean {\n\t\tconst operations = this.getInstructionOperations();\n\t\tif (!operations) return false;\n\t\tconst sourceInfo = this.findSourceInfoForPath(path, undefined, metadataByPath);\n\t\tif (sourceInfo?.source === \"remote\") return true;\n\t\tconst backend = operations.getBackendInfo?.();\n\t\tif (backend?.type === \"remote\" && backend.configured) {\n\t\t\treturn relativeWithin(backend.workspace.root, path) !== undefined;\n\t\t}\n\t\tconst cwd = operations.cwd.endsWith(sep) ? operations.cwd : `${operations.cwd}${sep}`;\n\t\treturn path === operations.cwd || path.startsWith(cwd);\n\t}\n\n\tprivate async updateSkillsFromPathsForReload(\n\t\tskillPaths: string[],\n\t\tmetadataByPath?: Map<string, PathMetadata>,\n\t): Promise<void> {\n\t\tlet skillsResult: { skills: Skill[]; diagnostics: ResourceDiagnostic[] };\n\t\tconst operations = this.getInstructionOperations();\n\t\tif (this.noSkills && skillPaths.length === 0) {\n\t\t\tskillsResult = { skills: [], diagnostics: [] };\n\t\t} else if (operations) {\n\t\t\tconst remotePaths = skillPaths.filter((path) =>\n\t\t\t\tthis.shouldLoadPathWithInstructionOperations(path, metadataByPath),\n\t\t\t);\n\t\t\tconst localPaths = skillPaths.filter(\n\t\t\t\t(path) => !this.shouldLoadPathWithInstructionOperations(path, metadataByPath),\n\t\t\t);\n\t\t\tconst remoteResult = await loadSkillsWithOperations({\n\t\t\t\tcwd: operations.cwd,\n\t\t\t\tagentDir: this.agentDir,\n\t\t\t\tskillPaths: remotePaths,\n\t\t\t\tincludeDefaults: false,\n\t\t\t\toperations,\n\t\t\t});\n\t\t\tconst localResult = loadSkills({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\tagentDir: this.agentDir,\n\t\t\t\tskillPaths: localPaths,\n\t\t\t\tincludeDefaults: false,\n\t\t\t});\n\t\t\tconst merged = mergeNamedResources(remoteResult.skills, localResult.skills, \"skill\");\n\t\t\tskillsResult = {\n\t\t\t\tskills: merged.resources,\n\t\t\t\tdiagnostics: [...remoteResult.diagnostics, ...localResult.diagnostics, ...merged.diagnostics],\n\t\t\t};\n\t\t} else {\n\t\t\tskillsResult = loadSkills({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\tagentDir: this.agentDir,\n\t\t\t\tskillPaths,\n\t\t\t\tincludeDefaults: false,\n\t\t\t});\n\t\t}\n\t\tthis.applyLoadedSkills(skillsResult, metadataByPath);\n\t}\n\n\tprivate applyLoadedRules(rulesResult: LoadRulesResult, metadataByPath?: Map<string, PathMetadata>): void {\n\t\tconst extensionRules = this.getExtensionRegisteredRules();\n\t\tconst seenRuleNames = new Set(extensionRules.map((rule) => rule.name));\n\t\tconst baseRulesResult = {\n\t\t\trules: [...extensionRules, ...rulesResult.rules.filter((rule) => !seenRuleNames.has(rule.name))],\n\t\t\tdiagnostics: rulesResult.diagnostics,\n\t\t};\n\t\tconst resolvedRules = this.rulesOverride ? this.rulesOverride(baseRulesResult) : baseRulesResult;\n\t\tthis.rules = resolvedRules.rules.map((rule) => ({\n\t\t\t...rule,\n\t\t\tsourceInfo:\n\t\t\t\tthis.findSourceInfoForPath(rule.filePath, this.extensionRuleSourceInfos, metadataByPath) ??\n\t\t\t\trule.sourceInfo ??\n\t\t\t\tthis.getDefaultSourceInfoForPath(rule.filePath),\n\t\t}));\n\t\tthis.ruleDiagnostics = resolvedRules.diagnostics;\n\t}\n\n\tprivate updateRulesFromPaths(rulePaths: string[], metadataByPath?: Map<string, PathMetadata>): void {\n\t\tlet rulesResult: { rules: Rule[]; diagnostics: ResourceDiagnostic[] };\n\t\tif (this.noRules && rulePaths.length === 0) {\n\t\t\trulesResult = { rules: [], diagnostics: [] };\n\t\t} else {\n\t\t\trulesResult = loadRules({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\tagentDir: this.agentDir,\n\t\t\t\trulePaths,\n\t\t\t\tincludeDefaults: false,\n\t\t\t});\n\t\t}\n\t\tthis.applyLoadedRules(rulesResult, metadataByPath);\n\t}\n\n\tprivate async updateRulesFromPathsForReload(\n\t\trulePaths: string[],\n\t\tmetadataByPath?: Map<string, PathMetadata>,\n\t): Promise<void> {\n\t\tlet rulesResult: { rules: Rule[]; diagnostics: ResourceDiagnostic[] };\n\t\tconst operations = this.getInstructionOperations();\n\t\tif (this.noRules && rulePaths.length === 0) {\n\t\t\trulesResult = { rules: [], diagnostics: [] };\n\t\t} else if (operations) {\n\t\t\tconst remotePaths = rulePaths.filter((path) =>\n\t\t\t\tthis.shouldLoadPathWithInstructionOperations(path, metadataByPath),\n\t\t\t);\n\t\t\tconst localPaths = rulePaths.filter(\n\t\t\t\t(path) => !this.shouldLoadPathWithInstructionOperations(path, metadataByPath),\n\t\t\t);\n\t\t\tconst remoteResult = await loadRulesWithOperations({\n\t\t\t\tcwd: operations.cwd,\n\t\t\t\tagentDir: this.agentDir,\n\t\t\t\trulePaths: remotePaths,\n\t\t\t\tincludeDefaults: false,\n\t\t\t\toperations,\n\t\t\t});\n\t\t\tconst localResult = loadRules({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\tagentDir: this.agentDir,\n\t\t\t\trulePaths: localPaths,\n\t\t\t\tincludeDefaults: false,\n\t\t\t});\n\t\t\tconst merged = mergeNamedResources(remoteResult.rules, localResult.rules, \"rule\");\n\t\t\trulesResult = {\n\t\t\t\trules: merged.resources,\n\t\t\t\tdiagnostics: [...remoteResult.diagnostics, ...localResult.diagnostics, ...merged.diagnostics],\n\t\t\t};\n\t\t} else {\n\t\t\trulesResult = loadRules({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\tagentDir: this.agentDir,\n\t\t\t\trulePaths,\n\t\t\t\tincludeDefaults: false,\n\t\t\t});\n\t\t}\n\t\tthis.applyLoadedRules(rulesResult, metadataByPath);\n\t}\n\n\tprivate applyLoadedPrompts(\n\t\tpromptsResult: LoadPromptTemplatesResult,\n\t\tmetadataByPath?: Map<string, PathMetadata>,\n\t): void {\n\t\tconst extensionPrompts = this.getExtensionRegisteredPrompts();\n\t\tconst basePromptsResult = this.dedupePrompts([...extensionPrompts, ...promptsResult.prompts]);\n\t\tbasePromptsResult.diagnostics.unshift(...promptsResult.diagnostics);\n\t\tconst resolvedPrompts = this.promptsOverride ? this.promptsOverride(basePromptsResult) : basePromptsResult;\n\t\tthis.prompts = resolvedPrompts.prompts.map((prompt) => ({\n\t\t\t...prompt,\n\t\t\tsourceInfo:\n\t\t\t\tthis.findSourceInfoForPath(prompt.filePath, this.extensionPromptSourceInfos, metadataByPath) ??\n\t\t\t\tprompt.sourceInfo ??\n\t\t\t\tthis.getDefaultSourceInfoForPath(prompt.filePath),\n\t\t}));\n\t\tthis.promptDiagnostics = resolvedPrompts.diagnostics;\n\t}\n\n\tprivate updatePromptsFromPaths(promptPaths: string[], metadataByPath?: Map<string, PathMetadata>): void {\n\t\tlet promptsResult: { prompts: PromptTemplate[]; diagnostics: ResourceDiagnostic[] };\n\t\tif (this.noPromptTemplates && promptPaths.length === 0) {\n\t\t\tpromptsResult = { prompts: [], diagnostics: [] };\n\t\t} else {\n\t\t\tconst allPrompts = loadPromptTemplates({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\tagentDir: this.agentDir,\n\t\t\t\tpromptPaths,\n\t\t\t\tincludeDefaults: false,\n\t\t\t});\n\t\t\tpromptsResult = this.dedupePrompts(allPrompts);\n\t\t}\n\t\tthis.applyLoadedPrompts(promptsResult, metadataByPath);\n\t}\n\n\tprivate async updatePromptsFromPathsForReload(\n\t\tpromptPaths: string[],\n\t\tmetadataByPath?: Map<string, PathMetadata>,\n\t): Promise<void> {\n\t\tlet promptsResult: { prompts: PromptTemplate[]; diagnostics: ResourceDiagnostic[] };\n\t\tconst operations = this.getInstructionOperations();\n\t\tif (this.noPromptTemplates && promptPaths.length === 0) {\n\t\t\tpromptsResult = { prompts: [], diagnostics: [] };\n\t\t} else if (operations) {\n\t\t\tconst remotePaths = promptPaths.filter((path) =>\n\t\t\t\tthis.shouldLoadPathWithInstructionOperations(path, metadataByPath),\n\t\t\t);\n\t\t\tconst localPaths = promptPaths.filter(\n\t\t\t\t(path) => !this.shouldLoadPathWithInstructionOperations(path, metadataByPath),\n\t\t\t);\n\t\t\tconst remotePrompts = await loadPromptTemplatesWithOperations({\n\t\t\t\tcwd: operations.cwd,\n\t\t\t\tagentDir: this.agentDir,\n\t\t\t\tpromptPaths: remotePaths,\n\t\t\t\tincludeDefaults: false,\n\t\t\t\toperations,\n\t\t\t});\n\t\t\tconst localPrompts = loadPromptTemplates({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\tagentDir: this.agentDir,\n\t\t\t\tpromptPaths: localPaths,\n\t\t\t\tincludeDefaults: false,\n\t\t\t});\n\t\t\tpromptsResult = this.dedupePrompts([...remotePrompts, ...localPrompts]);\n\t\t} else {\n\t\t\tconst allPrompts = loadPromptTemplates({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\tagentDir: this.agentDir,\n\t\t\t\tpromptPaths,\n\t\t\t\tincludeDefaults: false,\n\t\t\t});\n\t\t\tpromptsResult = this.dedupePrompts(allPrompts);\n\t\t}\n\t\tthis.applyLoadedPrompts(promptsResult, metadataByPath);\n\t}\n\n\tprivate updateThemesFromPaths(themePaths: string[], metadataByPath?: Map<string, PathMetadata>): void {\n\t\tlet themesResult: { themes: Theme[]; diagnostics: ResourceDiagnostic[] };\n\t\tif (this.noThemes && themePaths.length === 0) {\n\t\t\tthemesResult = { themes: [], diagnostics: [] };\n\t\t} else {\n\t\t\tconst loaded = this.loadThemes(themePaths, false);\n\t\t\tconst deduped = this.dedupeThemes(loaded.themes);\n\t\t\tthemesResult = { themes: deduped.themes, diagnostics: [...loaded.diagnostics, ...deduped.diagnostics] };\n\t\t}\n\t\tconst resolvedThemes = this.themesOverride ? this.themesOverride(themesResult) : themesResult;\n\t\tthis.themes = resolvedThemes.themes.map((theme) => {\n\t\t\tconst sourcePath = theme.sourcePath;\n\t\t\ttheme.sourceInfo = sourcePath\n\t\t\t\t? (this.findSourceInfoForPath(sourcePath, this.extensionThemeSourceInfos, metadataByPath) ??\n\t\t\t\t\ttheme.sourceInfo ??\n\t\t\t\t\tthis.getDefaultSourceInfoForPath(sourcePath))\n\t\t\t\t: theme.sourceInfo;\n\t\t\treturn theme;\n\t\t});\n\t\tthis.themeDiagnostics = resolvedThemes.diagnostics;\n\t}\n\n\tprivate applyExtensionSourceInfo(extensions: Extension[], metadataByPath: Map<string, PathMetadata>): void {\n\t\tfor (const extension of extensions) {\n\t\t\textension.sourceInfo =\n\t\t\t\tthis.findSourceInfoForPath(extension.path, undefined, metadataByPath) ??\n\t\t\t\tthis.getDefaultSourceInfoForPath(extension.path);\n\t\t\tfor (const command of extension.commands.values()) {\n\t\t\t\tcommand.sourceInfo = extension.sourceInfo;\n\t\t\t}\n\t\t\tfor (const tool of extension.tools.values()) {\n\t\t\t\ttool.sourceInfo = extension.sourceInfo;\n\t\t\t}\n\t\t\tfor (const skill of extension.skills.values()) {\n\t\t\t\tskill.sourceInfo = extension.sourceInfo;\n\t\t\t}\n\t\t\tfor (const rule of extension.rules.values()) {\n\t\t\t\trule.sourceInfo = extension.sourceInfo;\n\t\t\t}\n\t\t\tfor (const prompt of extension.prompts.values()) {\n\t\t\t\tprompt.sourceInfo = extension.sourceInfo;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate findRegisteredSourceInfoForPath(\n\t\tresourcePath: string,\n\t\tnormalizedResourcePath: string,\n\t\tsourceInfos: Map<string, SourceInfo>,\n\t): SourceInfo | undefined {\n\t\tfor (const [sourcePath, sourceInfo] of sourceInfos.entries()) {\n\t\t\tconst normalizedSourcePath = resolve(sourcePath);\n\t\t\tif (\n\t\t\t\tnormalizedResourcePath === normalizedSourcePath ||\n\t\t\t\tnormalizedResourcePath.startsWith(`${normalizedSourcePath}${sep}`)\n\t\t\t) {\n\t\t\t\treturn { ...sourceInfo, path: resourcePath };\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tprivate findResolvedResourceSourceInfoForPath(\n\t\tresourcePath: string,\n\t\tnormalizedResourcePath: string,\n\t\tmetadataByPath: Map<string, PathMetadata>,\n\t): SourceInfo | undefined {\n\t\tconst exact = metadataByPath.get(normalizedResourcePath) ?? metadataByPath.get(resourcePath);\n\t\tif (exact) return createSourceInfo(resourcePath, exact);\n\n\t\tfor (const [sourcePath, metadata] of metadataByPath.entries()) {\n\t\t\tif (metadata.workspace) {\n\t\t\t\tif (relativeWithin(sourcePath, resourcePath) !== undefined) {\n\t\t\t\t\treturn createSourceInfo(resourcePath, metadata);\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst normalizedSourcePath = resolve(sourcePath);\n\t\t\tif (\n\t\t\t\tnormalizedResourcePath === normalizedSourcePath ||\n\t\t\t\tnormalizedResourcePath.startsWith(`${normalizedSourcePath}${sep}`)\n\t\t\t) {\n\t\t\t\treturn createSourceInfo(resourcePath, metadata);\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tprivate findSourceInfoForPath(\n\t\tresourcePath: string,\n\t\textraSourceInfos?: Map<string, SourceInfo>,\n\t\tmetadataByPath?: Map<string, PathMetadata>,\n\t): SourceInfo | undefined {\n\t\tif (!resourcePath) return undefined;\n\t\tif (resourcePath.startsWith(\"<\")) return this.getDefaultSourceInfoForPath(resourcePath);\n\n\t\tconst normalizedResourcePath = resolve(resourcePath);\n\t\tconst registeredSourceInfo = extraSourceInfos\n\t\t\t? this.findRegisteredSourceInfoForPath(resourcePath, normalizedResourcePath, extraSourceInfos)\n\t\t\t: undefined;\n\t\tif (registeredSourceInfo) return registeredSourceInfo;\n\t\treturn metadataByPath\n\t\t\t? this.findResolvedResourceSourceInfoForPath(resourcePath, normalizedResourcePath, metadataByPath)\n\t\t\t: undefined;\n\t}\n\n\tprivate getDefaultSourceInfoForPath(filePath: string): SourceInfo {\n\t\tif (filePath.startsWith(\"<\") && filePath.endsWith(\">\")) {\n\t\t\treturn {\n\t\t\t\tpath: filePath,\n\t\t\t\tsource: filePath.slice(1, -1).split(\":\")[0] || \"temporary\",\n\t\t\t\tscope: \"temporary\",\n\t\t\t\torigin: \"top-level\",\n\t\t\t};\n\t\t}\n\n\t\tconst normalizedPath = resolve(filePath);\n\t\tconst agentRoots = [\n\t\t\tjoin(this.agentDir, \"skills\"),\n\t\t\tjoin(this.agentDir, \"rules\"),\n\t\t\tjoin(this.agentDir, \"prompts\"),\n\t\t\tjoin(this.agentDir, \"themes\"),\n\t\t\tjoin(this.agentDir, \"extensions\"),\n\t\t];\n\t\tconst projectRoots = [\n\t\t\tjoin(this.cwd, CONFIG_DIR_NAME, \"skills\"),\n\t\t\tjoin(this.cwd, CONFIG_DIR_NAME, \"rules\"),\n\t\t\tjoin(this.cwd, CONFIG_DIR_NAME, \"prompts\"),\n\t\t\tjoin(this.cwd, CONFIG_DIR_NAME, \"themes\"),\n\t\t\tjoin(this.cwd, CONFIG_DIR_NAME, \"extensions\"),\n\t\t];\n\n\t\tfor (const root of agentRoots) {\n\t\t\tif (this.isUnderPath(normalizedPath, root)) {\n\t\t\t\treturn { path: filePath, source: \"local\", scope: \"user\", origin: \"top-level\", baseDir: root };\n\t\t\t}\n\t\t}\n\n\t\tfor (const root of projectRoots) {\n\t\t\tif (this.isUnderPath(normalizedPath, root)) {\n\t\t\t\treturn { path: filePath, source: \"local\", scope: \"project\", origin: \"top-level\", baseDir: root };\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tpath: filePath,\n\t\t\tsource: \"local\",\n\t\t\tscope: \"temporary\",\n\t\t\torigin: \"top-level\",\n\t\t\tbaseDir: statSync(normalizedPath).isDirectory() ? normalizedPath : resolve(normalizedPath, \"..\"),\n\t\t};\n\t}\n\n\tprivate mergePaths(primary: string[], additional: string[]): string[] {\n\t\tconst merged: string[] = [];\n\t\tconst seen = new Set<string>();\n\n\t\tfor (const p of [...primary, ...additional]) {\n\t\t\tconst resolved = this.resolveResourcePath(p);\n\t\t\tconst canonicalPath = canonicalizePath(resolved);\n\t\t\tif (seen.has(canonicalPath)) continue;\n\t\t\tseen.add(canonicalPath);\n\t\t\tmerged.push(resolved);\n\t\t}\n\n\t\treturn merged;\n\t}\n\n\tprivate resolveResourcePath(p: string): string {\n\t\treturn resolvePath(p, this.cwd, { trim: true });\n\t}\n\n\tprivate loadThemes(paths: string[], includeDefaults: boolean = true): LoadThemesResult {\n\t\tconst themes: Theme[] = [];\n\t\tconst diagnostics: ResourceDiagnostic[] = [];\n\t\tif (includeDefaults) {\n\t\t\tconst defaultDirs = [join(this.agentDir, \"themes\"), join(this.cwd, CONFIG_DIR_NAME, \"themes\")];\n\n\t\t\tfor (const dir of defaultDirs) {\n\t\t\t\tthis.loadThemesFromDir(dir, themes, diagnostics);\n\t\t\t}\n\t\t}\n\n\t\tfor (const p of paths) {\n\t\t\tconst resolved = this.resolveResourcePath(p);\n\t\t\tif (!existsSync(resolved)) {\n\t\t\t\tdiagnostics.push({ type: \"warning\", message: \"theme path does not exist\", path: resolved });\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst stats = statSync(resolved);\n\t\t\t\tif (stats.isDirectory()) {\n\t\t\t\t\tthis.loadThemesFromDir(resolved, themes, diagnostics);\n\t\t\t\t} else if (stats.isFile() && resolved.endsWith(\".json\")) {\n\t\t\t\t\tthis.loadThemeFromFile(resolved, themes, diagnostics);\n\t\t\t\t} else {\n\t\t\t\t\tdiagnostics.push({ type: \"warning\", message: \"theme path is not a json file\", path: resolved });\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconst message = error instanceof Error ? error.message : \"failed to read theme path\";\n\t\t\t\tdiagnostics.push({ type: \"warning\", message, path: resolved });\n\t\t\t}\n\t\t}\n\n\t\treturn { themes, diagnostics };\n\t}\n\n\tprivate loadThemesFromDir(dir: string, themes: Theme[], diagnostics: ResourceDiagnostic[]): void {\n\t\tif (!existsSync(dir)) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tconst entries = readdirSync(dir, { withFileTypes: true });\n\t\t\tfor (const entry of entries) {\n\t\t\t\tlet isFile = entry.isFile();\n\t\t\t\tif (entry.isSymbolicLink()) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tisFile = statSync(join(dir, entry.name)).isFile();\n\t\t\t\t\t} catch {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!isFile) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (!entry.name.endsWith(\".json\")) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tthis.loadThemeFromFile(join(dir, entry.name), themes, diagnostics);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : \"failed to read theme directory\";\n\t\t\tdiagnostics.push({ type: \"warning\", message, path: dir });\n\t\t}\n\t}\n\n\tprivate loadThemeFromFile(filePath: string, themes: Theme[], diagnostics: ResourceDiagnostic[]): void {\n\t\ttry {\n\t\t\tthemes.push(loadThemeFromPath(filePath));\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : \"failed to load theme\";\n\t\t\tdiagnostics.push({ type: \"warning\", message, path: filePath });\n\t\t}\n\t}\n\n\tprivate async loadExtensionFactories(runtime: ExtensionRuntime): Promise<InlineExtensionLoadResult> {\n\t\tconst extensions: Extension[] = [];\n\t\tconst errors: Array<{ path: string; error: string }> = [];\n\n\t\tfor (const [index, factory] of this.extensionFactories.entries()) {\n\t\t\tconst extensionPath = `<inline:${index + 1}>`;\n\t\t\ttry {\n\t\t\t\tconst extension = await loadExtensionFromFactory(factory, this.cwd, this.eventBus, runtime, extensionPath);\n\t\t\t\textensions.push(extension);\n\t\t\t} catch (error) {\n\t\t\t\tconst message = error instanceof Error ? error.message : \"failed to load extension\";\n\t\t\t\terrors.push({ path: extensionPath, error: message });\n\t\t\t}\n\t\t}\n\n\t\treturn { extensions, errors };\n\t}\n\n\tprivate dedupePrompts(prompts: PromptTemplate[]): LoadPromptTemplatesResult {\n\t\tconst seen = new Map<string, PromptTemplate>();\n\t\tconst diagnostics: ResourceDiagnostic[] = [];\n\n\t\tfor (const prompt of prompts) {\n\t\t\tconst existing = seen.get(prompt.name);\n\t\t\tif (existing) {\n\t\t\t\tdiagnostics.push({\n\t\t\t\t\ttype: \"collision\",\n\t\t\t\t\tmessage: `name \"/${prompt.name}\" collision`,\n\t\t\t\t\tpath: prompt.filePath,\n\t\t\t\t\tcollision: {\n\t\t\t\t\t\tresourceType: \"prompt\",\n\t\t\t\t\t\tname: prompt.name,\n\t\t\t\t\t\twinnerPath: existing.filePath,\n\t\t\t\t\t\tloserPath: prompt.filePath,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tseen.set(prompt.name, prompt);\n\t\t\t}\n\t\t}\n\n\t\treturn { prompts: Array.from(seen.values()), diagnostics };\n\t}\n\n\tprivate dedupeThemes(themes: Theme[]): LoadThemesResult {\n\t\tconst seen = new Map<string, Theme>();\n\t\tconst diagnostics: ResourceDiagnostic[] = [];\n\n\t\tfor (const t of themes) {\n\t\t\tconst name = t.name ?? \"unnamed\";\n\t\t\tconst existing = seen.get(name);\n\t\t\tif (existing) {\n\t\t\t\tdiagnostics.push({\n\t\t\t\t\ttype: \"collision\",\n\t\t\t\t\tmessage: `name \"${name}\" collision`,\n\t\t\t\t\tpath: t.sourcePath,\n\t\t\t\t\tcollision: {\n\t\t\t\t\t\tresourceType: \"theme\",\n\t\t\t\t\t\tname,\n\t\t\t\t\t\twinnerPath: existing.sourcePath ?? \"<builtin>\",\n\t\t\t\t\t\tloserPath: t.sourcePath ?? \"<builtin>\",\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tseen.set(name, t);\n\t\t\t}\n\t\t}\n\n\t\treturn { themes: Array.from(seen.values()), diagnostics };\n\t}\n\n\tprivate discoverSystemPromptFile(): string | undefined {\n\t\tconst projectPath = join(this.cwd, CONFIG_DIR_NAME, \"SYSTEM.md\");\n\t\tif (existsSync(projectPath)) {\n\t\t\treturn projectPath;\n\t\t}\n\n\t\tconst globalPath = join(this.agentDir, \"SYSTEM.md\");\n\t\tif (existsSync(globalPath)) {\n\t\t\treturn globalPath;\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tprivate discoverAppendSystemPromptFile(): string | undefined {\n\t\tconst projectPath = join(this.cwd, CONFIG_DIR_NAME, \"APPEND_SYSTEM.md\");\n\t\tif (existsSync(projectPath)) {\n\t\t\treturn projectPath;\n\t\t}\n\n\t\tconst globalPath = join(this.agentDir, \"APPEND_SYSTEM.md\");\n\t\tif (existsSync(globalPath)) {\n\t\t\treturn globalPath;\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tprivate 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\tprivate detectExtensionConflicts(extensions: Extension[]): ExtensionConflict[] {\n\t\tconst conflicts: ExtensionConflict[] = [];\n\n\t\t// Track which extension registered each tool and flag\n\t\tconst toolOwners = new Map<string, string>();\n\t\tconst flagOwners = new Map<string, string>();\n\n\t\tfor (const ext of extensions) {\n\t\t\t// Check tools\n\t\t\tfor (const toolName of ext.tools.keys()) {\n\t\t\t\tconst existingOwner = toolOwners.get(toolName);\n\t\t\t\tif (existingOwner && existingOwner !== ext.path) {\n\t\t\t\t\tconflicts.push({\n\t\t\t\t\t\tpath: ext.path,\n\t\t\t\t\t\tmessage: `Tool \"${toolName}\" conflicts with ${existingOwner}`,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\ttoolOwners.set(toolName, ext.path);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Check flags\n\t\t\tfor (const flagName of ext.flags.keys()) {\n\t\t\t\tconst existingOwner = flagOwners.get(flagName);\n\t\t\t\tif (existingOwner && existingOwner !== ext.path) {\n\t\t\t\t\tconflicts.push({\n\t\t\t\t\t\tpath: ext.path,\n\t\t\t\t\t\tmessage: `Flag \"--${flagName}\" conflicts with ${existingOwner}`,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tflagOwners.set(flagName, ext.path);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn conflicts;\n\t}\n}\n"]}
1
+ {"version":3,"file":"resource-loader.js","sourceRoot":"","sources":["../../src/core/resource-loader.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, readdirSync, readFileSync, statSync } from \"node:fs\";\nimport { join, resolve, sep } from \"node:path\";\nimport chalk from \"chalk\";\nimport { CONFIG_DIR_NAME } from \"../config.ts\";\nimport { loadThemeFromPath, type Theme } from \"../modes/interactive/theme/theme.ts\";\nimport type { ResourceDiagnostic } from \"./diagnostics.ts\";\n\nexport type { ResourceCollision, ResourceDiagnostic } from \"./diagnostics.ts\";\n\nimport { canonicalizePath, isLocalPath, resolvePath } from \"../utils/paths.ts\";\nimport { createEventBus, type EventBus } from \"./event-bus.ts\";\nimport { createExtensionRuntime, loadExtensionFromFactory, loadExtensions } from \"./extensions/loader.ts\";\nimport type { Extension, ExtensionFactory, ExtensionRuntime, LoadExtensionsResult } from \"./extensions/types.ts\";\nimport { dirnamePortablePath, joinPortablePath, pathComparisonValue, relativeWithin } from \"./lsp/portable-path.ts\";\nimport {\n\tDefaultPackageManager,\n\ttype PathMetadata,\n\ttype ResolvedPaths,\n\ttype ResolvedResource,\n} from \"./package-manager.ts\";\nimport type { PromptTemplate } from \"./prompt-templates.ts\";\nimport { loadPromptTemplates, loadPromptTemplatesWithOperations } from \"./prompt-templates.ts\";\nimport type { LoadRulesResult, Rule } from \"./rules.ts\";\nimport { loadRules, loadRulesWithOperations } from \"./rules.ts\";\nimport { SettingsManager } from \"./settings-manager.ts\";\nimport type { LoadSkillsResult, Skill } from \"./skills.ts\";\nimport { loadSkills, loadSkillsWithOperations } from \"./skills.ts\";\nimport { createSourceInfo, createSyntheticSourceInfo, type SourceInfo, type SourceScope } from \"./source-info.ts\";\nimport { resetTimings } from \"./timings.ts\";\nimport type { ToolBackendInfo, ToolOperations } from \"./tools/operations.ts\";\nimport type { WorkspaceIdentity } from \"./workspace-identity.ts\";\n\nexport interface ProjectContextFile {\n\tpath: string;\n\tcontent: string;\n\tsourceInfo?: SourceInfo;\n}\n\ninterface NamedResourceMergeResult<T> {\n\tresources: T[];\n\tdiagnostics: ResourceDiagnostic[];\n}\n\nexport interface ResourcePathEntry {\n\tpath: string;\n\tmetadata: PathMetadata;\n}\n\nexport interface LoadPromptTemplatesResult {\n\tprompts: PromptTemplate[];\n\tdiagnostics: ResourceDiagnostic[];\n}\n\nexport interface LoadThemesResult {\n\tthemes: Theme[];\n\tdiagnostics: ResourceDiagnostic[];\n}\n\nexport interface ProjectContextFilesResult {\n\tagentsFiles: ProjectContextFile[];\n}\n\nexport interface LoadProjectContextFilesOptions {\n\tcwd: string;\n\tagentDir: string;\n}\n\nexport type ResourceOverride<TResult> = (base: TResult) => TResult;\n\ninterface LoadProjectContextFilesWithOperationsOptions extends LoadProjectContextFilesOptions {\n\toperations: ToolOperations;\n\tworkspace?: WorkspaceIdentity;\n}\n\ntype ConfiguredInstructionBackend = Extract<ToolBackendInfo, { type: \"remote\"; configured: true }>;\n\ninterface RemoteInstructionResourcePaths {\n\tskills: ResourcePathEntry[];\n\trules: ResourcePathEntry[];\n\tprompts: ResourcePathEntry[];\n}\n\n// grip-ignore noNearIdenticalDataStructures: Resolved reload paths are required runtime inputs, while GripManifest is an optional package declaration with independent validation and evolution.\ninterface ReloadResourcePaths {\n\textensions: string[];\n\tskills: string[];\n\trules: string[];\n\tprompts: string[];\n\tthemes: string[];\n}\n\ntype InlineExtensionLoadResult = Pick<LoadExtensionsResult, \"extensions\" | \"errors\">;\n\nfunction appendMissingResourceDiagnostic(\n\tresolvedPath: string,\n\tdiagnostics: ResourceDiagnostic[],\n\tdiagnosticPaths: Set<string | undefined>,\n\tmessage: string,\n): void {\n\tif (existsSync(resolvedPath) || diagnosticPaths.has(resolvedPath)) return;\n\tdiagnostics.push({ type: \"error\", message, path: resolvedPath });\n\tdiagnosticPaths.add(resolvedPath);\n}\n\ninterface ExtensionConflict {\n\tpath: string;\n\tmessage: string;\n}\n\ntype NamedInstructionResourceType = \"skill\" | \"rule\";\n\nfunction mergeNamedResources<T extends { name: string; filePath: string }>(\n\tprimary: readonly T[],\n\tsecondary: readonly T[],\n\tresourceType: NamedInstructionResourceType,\n): NamedResourceMergeResult<T> {\n\tconst resources = new Map(primary.map((resource) => [resource.name, resource]));\n\tconst diagnostics: ResourceDiagnostic[] = [];\n\tfor (const resource of secondary) {\n\t\tconst winner = resources.get(resource.name);\n\t\tif (!winner) {\n\t\t\tresources.set(resource.name, resource);\n\t\t\tcontinue;\n\t\t}\n\t\tdiagnostics.push({\n\t\t\ttype: \"collision\",\n\t\t\tmessage: `name ${JSON.stringify(resource.name)} collision`,\n\t\t\tpath: resource.filePath,\n\t\t\tcollision: {\n\t\t\t\tresourceType,\n\t\t\t\tname: resource.name,\n\t\t\t\twinnerPath: winner.filePath,\n\t\t\t\tloserPath: resource.filePath,\n\t\t\t},\n\t\t});\n\t}\n\treturn { resources: [...resources.values()], diagnostics };\n}\nexport interface ResourceExtensionPaths {\n\tskillPaths?: ResourcePathEntry[];\n\trulePaths?: ResourcePathEntry[];\n\tpromptPaths?: ResourcePathEntry[];\n\tthemePaths?: ResourcePathEntry[];\n}\n\nexport interface ResourceLoader {\n\tgetExtensions(): LoadExtensionsResult;\n\tgetSkills(): LoadSkillsResult;\n\tgetRules(): LoadRulesResult;\n\tgetPrompts(): LoadPromptTemplatesResult;\n\tgetThemes(): LoadThemesResult;\n\tgetAgentsFiles(): ProjectContextFilesResult;\n\tgetSystemPrompt(): string | undefined;\n\tgetAppendSystemPrompt(): string[];\n\tsetToolOperations?(operations: ToolOperations | undefined): void;\n\textendResources(paths: ResourceExtensionPaths): void;\n\treload(): Promise<void>;\n}\n\nasync function resolvePromptInput(\n\tinput: string | undefined,\n\tdescription: string,\n\toperations?: ToolOperations,\n): Promise<string | undefined> {\n\tif (!input) {\n\t\treturn undefined;\n\t}\n\n\tif (existsSync(input)) {\n\t\ttry {\n\t\t\treturn readFileSync(input, \"utf-8\");\n\t\t} catch (error) {\n\t\t\tconsole.error(chalk.yellow(`Warning: Could not read ${description} file ${input}: ${error}`));\n\t\t\treturn input;\n\t\t}\n\t}\n\n\tif (operations) {\n\t\ttry {\n\t\t\tawait operations.access(input, \"read\");\n\t\t\treturn (await operations.readFile(input)).toString(\"utf-8\");\n\t\t} catch {}\n\t}\n\n\treturn input;\n}\n\nconst CONTEXT_FILE_CANDIDATES = [\"AGENTS.override.md\", \"AGENTS.md\", \"AGENTS.MD\", \"CLAUDE.md\", \"CLAUDE.MD\"];\n\nfunction loadContextFileFromDir(dir: string): ProjectContextFile | null {\n\tfor (const filename of CONTEXT_FILE_CANDIDATES) {\n\t\tconst filePath = join(dir, filename);\n\t\tif (existsSync(filePath)) {\n\t\t\ttry {\n\t\t\t\tif (!statSync(filePath).isFile()) continue;\n\t\t\t\treturn {\n\t\t\t\t\tpath: filePath,\n\t\t\t\t\tcontent: readFileSync(filePath, \"utf-8\"),\n\t\t\t\t};\n\t\t\t} catch (error) {\n\t\t\t\tconsole.error(chalk.yellow(`Warning: Could not read ${filePath}: ${error}`));\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n}\n\nexport function loadProjectContextFiles(options: LoadProjectContextFilesOptions): ProjectContextFile[] {\n\tconst resolvedCwd = resolvePath(options.cwd);\n\tconst resolvedAgentDir = resolvePath(options.agentDir);\n\n\tconst contextFiles: ProjectContextFile[] = [];\n\tconst seenPaths = new Set<string>();\n\n\tconst globalContext = loadContextFileFromDir(resolvedAgentDir);\n\tif (globalContext) {\n\t\tcontextFiles.push(globalContext);\n\t\tseenPaths.add(globalContext.path);\n\t}\n\n\tconst ancestorContextFiles: ProjectContextFile[] = [];\n\n\tlet currentDir = resolvedCwd;\n\tconst root = resolve(\"/\");\n\n\twhile (true) {\n\t\tconst contextFile = loadContextFileFromDir(currentDir);\n\t\tif (contextFile && !seenPaths.has(contextFile.path)) {\n\t\t\tancestorContextFiles.unshift(contextFile);\n\t\t\tseenPaths.add(contextFile.path);\n\t\t}\n\n\t\tif (currentDir === root) break;\n\n\t\tconst parentDir = resolve(currentDir, \"..\");\n\t\tif (parentDir === currentDir) break;\n\t\tcurrentDir = parentDir;\n\t}\n\n\tcontextFiles.push(...ancestorContextFiles);\n\n\treturn contextFiles;\n}\n\nasync function loadContextFileFromDirWithOperations(\n\toperations: ToolOperations,\n\tdir: string,\n\tworkspace?: WorkspaceIdentity,\n): Promise<ProjectContextFile | null> {\n\tfor (const filename of CONTEXT_FILE_CANDIDATES) {\n\t\tconst filePath = joinPortablePath(dir, filename);\n\t\ttry {\n\t\t\tif (!(await operations.stat(filePath)).isFile()) continue;\n\t\t\tawait operations.access(filePath, \"read\");\n\t\t\treturn {\n\t\t\t\tpath: filePath,\n\t\t\t\tcontent: (await operations.readFile(filePath)).toString(\"utf-8\"),\n\t\t\t\tsourceInfo: {\n\t\t\t\t\tpath: filePath,\n\t\t\t\t\tsource: \"remote\",\n\t\t\t\t\tscope: \"project\",\n\t\t\t\t\torigin: \"top-level\",\n\t\t\t\t\tbaseDir: dir,\n\t\t\t\t\t...(workspace ? { workspace } : {}),\n\t\t\t\t},\n\t\t\t};\n\t\t} catch {}\n\t}\n\treturn null;\n}\n\nasync function loadProjectContextFilesWithOperations(\n\toptions: LoadProjectContextFilesWithOperationsOptions,\n): Promise<ProjectContextFile[]> {\n\tconst contextFiles: ProjectContextFile[] = [];\n\tconst seenPaths = new Set<string>();\n\tconst globalContext = loadContextFileFromDir(resolvePath(options.agentDir));\n\tif (globalContext) {\n\t\tcontextFiles.push(globalContext);\n\t\tseenPaths.add(globalContext.path);\n\t}\n\tconst sandboxUserContext = await loadDaemonContextFileWithOperations(\n\t\toptions.operations,\n\t\toptions.workspace,\n\t\t\"AGENTS.md\",\n\t\t\"~/.grip/AGENTS.md\",\n\t\t\"user\",\n\t\t\"~/.grip\",\n\t);\n\tif (sandboxUserContext && !seenPaths.has(sandboxUserContext.path)) {\n\t\tcontextFiles.push(sandboxUserContext);\n\t\tseenPaths.add(sandboxUserContext.path);\n\t}\n\tconst ancestorContextFiles: ProjectContextFile[] = [];\n\tlet currentDir = options.cwd;\n\twhile (true) {\n\t\tconst contextFile = await loadContextFileFromDirWithOperations(options.operations, currentDir, options.workspace);\n\t\tif (contextFile && !seenPaths.has(contextFile.path)) {\n\t\t\tancestorContextFiles.unshift(contextFile);\n\t\t\tseenPaths.add(contextFile.path);\n\t\t}\n\t\tif (\n\t\t\toptions.workspace &&\n\t\t\tpathComparisonValue(currentDir, options.workspace.pathFlavor) ===\n\t\t\t\tpathComparisonValue(options.workspace.root, options.workspace.pathFlavor)\n\t\t)\n\t\t\tbreak;\n\t\tconst parentDir = dirnamePortablePath(currentDir, options.workspace?.pathFlavor);\n\t\tif (parentDir === currentDir) break;\n\t\tcurrentDir = parentDir;\n\t}\n\tcontextFiles.push(...ancestorContextFiles);\n\tconst sandboxContext = await loadDaemonContextFileWithOperations(\n\t\toptions.operations,\n\t\toptions.workspace,\n\t\t\"SANDBOX.md\",\n\t\t\"SANDBOX.md\",\n\t\t\"project\",\n\t\toptions.workspace?.root,\n\t);\n\tif (sandboxContext && !seenPaths.has(sandboxContext.path)) contextFiles.push(sandboxContext);\n\treturn contextFiles;\n}\n\nasync function loadDaemonContextFileWithOperations(\n\toperations: ToolOperations,\n\tworkspace: WorkspaceIdentity | undefined,\n\tresourcePath: string,\n\tdisplayPath: string,\n\tscope: SourceScope,\n\tbaseDir: string | undefined,\n): Promise<ProjectContextFile | null> {\n\tif (!workspace || !operations.readResource) return null;\n\ttry {\n\t\tconst content = (await operations.readResource(resourcePath)).toString(\"utf-8\");\n\t\treturn {\n\t\t\tpath: displayPath,\n\t\t\tcontent,\n\t\t\tsourceInfo: createSyntheticSourceInfo(displayPath, {\n\t\t\t\tsource: \"remote\",\n\t\t\t\tscope,\n\t\t\t\torigin: \"top-level\",\n\t\t\t\tbaseDir,\n\t\t\t\tworkspace,\n\t\t\t}),\n\t\t};\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nexport interface DefaultResourceLoaderOptions {\n\tcwd: string;\n\tagentDir: string;\n\tsettingsManager?: SettingsManager;\n\teventBus?: EventBus;\n\tadditionalExtensionPaths?: string[];\n\tadditionalSkillPaths?: string[];\n\tadditionalRulePaths?: string[];\n\tadditionalPromptTemplatePaths?: string[];\n\tadditionalThemePaths?: string[];\n\textensionFactories?: ExtensionFactory[];\n\tnoExtensions?: boolean;\n\tnoSkills?: boolean;\n\tnoRules?: boolean;\n\tnoPromptTemplates?: boolean;\n\tnoThemes?: boolean;\n\tnoContextFiles?: boolean;\n\tsystemPrompt?: string;\n\tappendSystemPrompt?: string[];\n\ttoolOperations?: ToolOperations;\n\textensionsOverride?: (base: LoadExtensionsResult) => LoadExtensionsResult;\n\tskillsOverride?: ResourceOverride<LoadSkillsResult>;\n\trulesOverride?: ResourceOverride<LoadRulesResult>;\n\tpromptsOverride?: ResourceOverride<LoadPromptTemplatesResult>;\n\tthemesOverride?: ResourceOverride<LoadThemesResult>;\n\tagentsFilesOverride?: ResourceOverride<ProjectContextFilesResult>;\n\tsystemPromptOverride?: (base: string | undefined) => string | undefined;\n\tappendSystemPromptOverride?: (base: string[]) => string[];\n}\n\nexport class DefaultResourceLoader implements ResourceLoader {\n\tprivate cwd: string;\n\tprivate agentDir: string;\n\tprivate settingsManager: SettingsManager;\n\tprivate eventBus: EventBus;\n\tprivate packageManager: DefaultPackageManager;\n\tprivate additionalExtensionPaths: string[];\n\tprivate additionalSkillPaths: string[];\n\tprivate additionalRulePaths: string[];\n\tprivate additionalPromptTemplatePaths: string[];\n\tprivate additionalThemePaths: string[];\n\tprivate extensionFactories: ExtensionFactory[];\n\tprivate noExtensions: boolean;\n\tprivate noSkills: boolean;\n\tprivate noRules: boolean;\n\tprivate noPromptTemplates: boolean;\n\tprivate noThemes: boolean;\n\tprivate noContextFiles: boolean;\n\tprivate systemPromptSource?: string;\n\tprivate appendSystemPromptSource?: string[];\n\tprivate toolOperations?: ToolOperations;\n\tprivate extensionsOverride?: (base: LoadExtensionsResult) => LoadExtensionsResult;\n\tprivate skillsOverride?: ResourceOverride<LoadSkillsResult>;\n\tprivate rulesOverride?: ResourceOverride<LoadRulesResult>;\n\tprivate promptsOverride?: ResourceOverride<LoadPromptTemplatesResult>;\n\tprivate themesOverride?: ResourceOverride<LoadThemesResult>;\n\tprivate agentsFilesOverride?: ResourceOverride<ProjectContextFilesResult>;\n\tprivate systemPromptOverride?: (base: string | undefined) => string | undefined;\n\tprivate appendSystemPromptOverride?: (base: string[]) => string[];\n\n\tprivate extensionsResult: LoadExtensionsResult;\n\tprivate skills: Skill[];\n\tprivate skillDiagnostics: ResourceDiagnostic[];\n\tprivate rules: Rule[];\n\tprivate ruleDiagnostics: ResourceDiagnostic[];\n\tprivate prompts: PromptTemplate[];\n\tprivate promptDiagnostics: ResourceDiagnostic[];\n\tprivate themes: Theme[];\n\tprivate themeDiagnostics: ResourceDiagnostic[];\n\tprivate agentsFiles: ProjectContextFile[];\n\tprivate systemPrompt?: string;\n\tprivate appendSystemPrompt: string[];\n\tprivate lastSkillPaths: string[];\n\tprivate lastRulePaths: string[];\n\tprivate extensionSkillSourceInfos: Map<string, SourceInfo>;\n\tprivate extensionRuleSourceInfos: Map<string, SourceInfo>;\n\tprivate extensionPromptSourceInfos: Map<string, SourceInfo>;\n\tprivate extensionThemeSourceInfos: Map<string, SourceInfo>;\n\tprivate lastPromptPaths: string[];\n\tprivate lastThemePaths: string[];\n\n\tconstructor(options: DefaultResourceLoaderOptions) {\n\t\tthis.cwd = resolvePath(options.cwd);\n\t\tthis.agentDir = resolvePath(options.agentDir);\n\t\tthis.settingsManager = options.settingsManager ?? SettingsManager.create(this.cwd, this.agentDir);\n\t\tthis.eventBus = options.eventBus ?? createEventBus();\n\t\tthis.packageManager = new DefaultPackageManager({\n\t\t\tcwd: this.cwd,\n\t\t\tagentDir: this.agentDir,\n\t\t\tsettingsManager: this.settingsManager,\n\t\t});\n\t\tthis.additionalExtensionPaths = options.additionalExtensionPaths ?? [];\n\t\tthis.additionalSkillPaths = options.additionalSkillPaths ?? [];\n\t\tthis.additionalRulePaths = options.additionalRulePaths ?? [];\n\t\tthis.additionalPromptTemplatePaths = options.additionalPromptTemplatePaths ?? [];\n\t\tthis.additionalThemePaths = options.additionalThemePaths ?? [];\n\t\tthis.extensionFactories = options.extensionFactories ?? [];\n\t\tthis.noExtensions = options.noExtensions ?? false;\n\t\tthis.noSkills = options.noSkills ?? false;\n\t\tthis.noRules = options.noRules ?? false;\n\t\tthis.noPromptTemplates = options.noPromptTemplates ?? false;\n\t\tthis.noThemes = options.noThemes ?? false;\n\t\tthis.noContextFiles = options.noContextFiles ?? false;\n\t\tthis.systemPromptSource = options.systemPrompt;\n\t\tthis.appendSystemPromptSource = options.appendSystemPrompt;\n\t\tthis.toolOperations = options.toolOperations;\n\t\tthis.extensionsOverride = options.extensionsOverride;\n\t\tthis.skillsOverride = options.skillsOverride;\n\t\tthis.rulesOverride = options.rulesOverride;\n\t\tthis.promptsOverride = options.promptsOverride;\n\t\tthis.themesOverride = options.themesOverride;\n\t\tthis.agentsFilesOverride = options.agentsFilesOverride;\n\t\tthis.systemPromptOverride = options.systemPromptOverride;\n\t\tthis.appendSystemPromptOverride = options.appendSystemPromptOverride;\n\n\t\tthis.extensionsResult = { extensions: [], errors: [], runtime: createExtensionRuntime() };\n\t\tthis.skills = [];\n\t\tthis.skillDiagnostics = [];\n\t\tthis.rules = [];\n\t\tthis.ruleDiagnostics = [];\n\t\tthis.prompts = [];\n\t\tthis.promptDiagnostics = [];\n\t\tthis.themes = [];\n\t\tthis.themeDiagnostics = [];\n\t\tthis.agentsFiles = [];\n\t\tthis.appendSystemPrompt = [];\n\t\tthis.lastSkillPaths = [];\n\t\tthis.lastRulePaths = [];\n\t\tthis.extensionSkillSourceInfos = new Map();\n\t\tthis.extensionRuleSourceInfos = new Map();\n\t\tthis.extensionPromptSourceInfos = new Map();\n\t\tthis.extensionThemeSourceInfos = new Map();\n\t\tthis.lastPromptPaths = [];\n\t\tthis.lastThemePaths = [];\n\t}\n\n\tgetExtensions(): LoadExtensionsResult {\n\t\treturn this.extensionsResult;\n\t}\n\n\tgetSkills(): LoadSkillsResult {\n\t\treturn { skills: this.skills, diagnostics: this.skillDiagnostics };\n\t}\n\n\tgetRules(): LoadRulesResult {\n\t\treturn { rules: this.rules, diagnostics: this.ruleDiagnostics };\n\t}\n\n\tgetPrompts(): LoadPromptTemplatesResult {\n\t\treturn { prompts: this.prompts, diagnostics: this.promptDiagnostics };\n\t}\n\n\tgetThemes(): LoadThemesResult {\n\t\treturn { themes: this.themes, diagnostics: this.themeDiagnostics };\n\t}\n\n\tgetAgentsFiles(): ProjectContextFilesResult {\n\t\treturn { agentsFiles: this.agentsFiles };\n\t}\n\n\tgetSystemPrompt(): string | undefined {\n\t\treturn this.systemPrompt;\n\t}\n\n\tgetAppendSystemPrompt(): string[] {\n\t\treturn this.appendSystemPrompt;\n\t}\n\n\tsetToolOperations(operations: ToolOperations | undefined): void {\n\t\tthis.toolOperations = operations;\n\t}\n\n\tprivate getInstructionOperations(): ToolOperations | undefined {\n\t\tconst backend = this.toolOperations?.getBackendInfo?.();\n\t\treturn backend?.type === \"remote\" && backend.configured ? this.toolOperations : undefined;\n\t}\n\n\tprivate getRemoteProjectInstructionResourcePaths(\n\t\tcwd: string,\n\t\tbackend: ConfiguredInstructionBackend,\n\t): RemoteInstructionResourcePaths {\n\t\tconst projectBaseDir = joinPortablePath(cwd, CONFIG_DIR_NAME);\n\t\tconst projectMetadata: PathMetadata = {\n\t\t\tsource: \"remote\",\n\t\t\tscope: \"project\",\n\t\t\torigin: \"top-level\",\n\t\t\tbaseDir: projectBaseDir,\n\t\t\tworkspace: backend.workspace,\n\t\t};\n\t\tconst skills: ResourcePathEntry[] = [\n\t\t\t{ path: joinPortablePath(projectBaseDir, \"skills\"), metadata: projectMetadata },\n\t\t];\n\t\tconst rules: ResourcePathEntry[] = [\n\t\t\t{ path: joinPortablePath(projectBaseDir, \"rules\"), metadata: projectMetadata },\n\t\t];\n\t\tconst prompts: ResourcePathEntry[] = [\n\t\t\t{ path: joinPortablePath(projectBaseDir, \"prompts\"), metadata: projectMetadata },\n\t\t];\n\n\t\tlet currentDir = cwd;\n\t\tconst boundary = backend.workspace.root;\n\t\twhile (true) {\n\t\t\tconst agentsBaseDir = joinPortablePath(currentDir, \".agents\");\n\t\t\tconst agentsMetadata: PathMetadata = {\n\t\t\t\tsource: \"remote\",\n\t\t\t\tscope: \"project\",\n\t\t\t\torigin: \"top-level\",\n\t\t\t\tbaseDir: agentsBaseDir,\n\t\t\t\tworkspace: backend.workspace,\n\t\t\t};\n\t\t\tskills.push({ path: joinPortablePath(agentsBaseDir, \"skills\"), metadata: agentsMetadata });\n\t\t\trules.push({ path: joinPortablePath(agentsBaseDir, \"rules\"), metadata: agentsMetadata });\n\t\t\tif (\n\t\t\t\tpathComparisonValue(currentDir, backend.workspace.pathFlavor) ===\n\t\t\t\tpathComparisonValue(boundary, backend.workspace.pathFlavor)\n\t\t\t)\n\t\t\t\tbreak;\n\t\t\tconst parentDir = dirnamePortablePath(currentDir, backend.workspace.pathFlavor);\n\t\t\tif (parentDir === currentDir) break;\n\t\t\tcurrentDir = parentDir;\n\t\t}\n\n\t\treturn { skills, rules, prompts };\n\t}\n\n\textendResources(paths: ResourceExtensionPaths): void {\n\t\tconst skillPaths = this.normalizeExtensionPaths(paths.skillPaths ?? []);\n\t\tconst rulePaths = this.normalizeExtensionPaths(paths.rulePaths ?? []);\n\t\tconst promptPaths = this.normalizeExtensionPaths(paths.promptPaths ?? []);\n\t\tconst themePaths = this.normalizeExtensionPaths(paths.themePaths ?? []);\n\n\t\tfor (const entry of skillPaths) {\n\t\t\tthis.extensionSkillSourceInfos.set(entry.path, createSourceInfo(entry.path, entry.metadata));\n\t\t}\n\t\tfor (const entry of rulePaths) {\n\t\t\tthis.extensionRuleSourceInfos.set(entry.path, createSourceInfo(entry.path, entry.metadata));\n\t\t}\n\t\tfor (const entry of promptPaths) {\n\t\t\tthis.extensionPromptSourceInfos.set(entry.path, createSourceInfo(entry.path, entry.metadata));\n\t\t}\n\t\tfor (const entry of themePaths) {\n\t\t\tthis.extensionThemeSourceInfos.set(entry.path, createSourceInfo(entry.path, entry.metadata));\n\t\t}\n\n\t\tif (skillPaths.length > 0) {\n\t\t\tthis.lastSkillPaths = this.mergePaths(\n\t\t\t\tthis.lastSkillPaths,\n\t\t\t\tskillPaths.map((entry) => entry.path),\n\t\t\t);\n\t\t\tthis.updateSkillsFromPaths(this.lastSkillPaths);\n\t\t}\n\n\t\tif (rulePaths.length > 0) {\n\t\t\tthis.lastRulePaths = this.mergePaths(\n\t\t\t\tthis.lastRulePaths,\n\t\t\t\trulePaths.map((entry) => entry.path),\n\t\t\t);\n\t\t\tthis.updateRulesFromPaths(this.lastRulePaths);\n\t\t}\n\n\t\tif (promptPaths.length > 0) {\n\t\t\tthis.lastPromptPaths = this.mergePaths(\n\t\t\t\tthis.lastPromptPaths,\n\t\t\t\tpromptPaths.map((entry) => entry.path),\n\t\t\t);\n\t\t\tthis.updatePromptsFromPaths(this.lastPromptPaths);\n\t\t}\n\n\t\tif (themePaths.length > 0) {\n\t\t\tthis.lastThemePaths = this.mergePaths(\n\t\t\t\tthis.lastThemePaths,\n\t\t\t\tthemePaths.map((entry) => entry.path),\n\t\t\t);\n\t\t\tthis.updateThemesFromPaths(this.lastThemePaths);\n\t\t}\n\t}\n\n\tprivate recordResourceMetadata(resources: ResolvedResource[], metadataByPath: Map<string, PathMetadata>): void {\n\t\tfor (const resource of resources) {\n\t\t\tif (!metadataByPath.has(resource.path)) metadataByPath.set(resource.path, resource.metadata);\n\t\t}\n\t}\n\n\tprivate getEnabledResources(\n\t\tresources: ResolvedResource[],\n\t\tmetadataByPath: Map<string, PathMetadata>,\n\t): ResolvedResource[] {\n\t\tthis.recordResourceMetadata(resources, metadataByPath);\n\t\treturn resources.filter((resource) => resource.enabled);\n\t}\n\n\tprivate getEnabledPaths(resources: ResolvedResource[], metadataByPath: Map<string, PathMetadata>): string[] {\n\t\treturn this.getEnabledResources(resources, metadataByPath).map((resource) => resource.path);\n\t}\n\n\tprivate shouldExcludeLocalProjectInstructionResource(\n\t\tresource: ResolvedResource,\n\t\tloadProjectInstructionsRemotely: boolean,\n\t): boolean {\n\t\treturn (\n\t\t\tloadProjectInstructionsRemotely &&\n\t\t\tresource.metadata.scope === \"project\" &&\n\t\t\tresource.metadata.origin === \"top-level\"\n\t\t);\n\t}\n\n\tprivate normalizePackagedInstructionPath(\n\t\tresource: ResolvedResource,\n\t\tfilename: string,\n\t\tmetadataByPath: Map<string, PathMetadata>,\n\t): string {\n\t\tif (resource.metadata.source !== \"auto\" && resource.metadata.origin !== \"package\") return resource.path;\n\t\ttry {\n\t\t\tif (!statSync(resource.path).isDirectory()) return resource.path;\n\t\t} catch {\n\t\t\treturn resource.path;\n\t\t}\n\t\tconst instructionFile = join(resource.path, filename);\n\t\tif (!existsSync(instructionFile)) return resource.path;\n\t\tif (!metadataByPath.has(instructionFile)) metadataByPath.set(instructionFile, resource.metadata);\n\t\treturn instructionFile;\n\t}\n\n\tprivate async filterExistingRemoteInstructionPaths(\n\t\tentries: ResourcePathEntry[],\n\t\toperations: ToolOperations,\n\t): Promise<ResourcePathEntry[]> {\n\t\tconst existing: ResourcePathEntry[] = [];\n\t\tfor (const entry of entries) {\n\t\t\ttry {\n\t\t\t\tawait operations.access(entry.path, \"exists\");\n\t\t\t\texisting.push(entry);\n\t\t\t} catch {}\n\t\t}\n\t\treturn existing;\n\t}\n\n\tprivate async discoverRemoteInstructionResourcePaths(\n\t\toperations: ToolOperations | undefined,\n\t): Promise<RemoteInstructionResourcePaths> {\n\t\tconst emptyPaths = { skills: [], rules: [], prompts: [] };\n\t\tif (!operations) return emptyPaths;\n\t\tconst backend = operations.getBackendInfo?.();\n\t\tif (backend?.type !== \"remote\" || !backend.configured) return emptyPaths;\n\t\tconst discovered = this.getRemoteProjectInstructionResourcePaths(operations.cwd, backend);\n\t\treturn {\n\t\t\tskills: await this.filterExistingRemoteInstructionPaths(discovered.skills, operations),\n\t\t\trules: await this.filterExistingRemoteInstructionPaths(discovered.rules, operations),\n\t\t\tprompts: await this.filterExistingRemoteInstructionPaths(discovered.prompts, operations),\n\t\t};\n\t}\n\n\tprivate recordRemoteInstructionMetadata(\n\t\tpaths: RemoteInstructionResourcePaths,\n\t\tmetadataByPath: Map<string, PathMetadata>,\n\t): void {\n\t\tfor (const entry of [...paths.skills, ...paths.rules, ...paths.prompts]) {\n\t\t\tmetadataByPath.set(entry.path, entry.metadata);\n\t\t}\n\t}\n\n\tprivate recordCliInstructionMetadata(paths: ResolvedPaths, metadataByPath: Map<string, PathMetadata>): void {\n\t\tfor (const resource of [...paths.extensions, ...paths.skills, ...paths.rules]) {\n\t\t\tif (!metadataByPath.has(resource.path)) {\n\t\t\t\tmetadataByPath.set(resource.path, { source: \"cli\", scope: \"temporary\", origin: \"top-level\" });\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async collectReloadResourcePaths(\n\t\tresolvedPaths: ResolvedPaths,\n\t\tcliPaths: ResolvedPaths,\n\t\tmetadataByPath: Map<string, PathMetadata>,\n\t\tinstructionOperations: ToolOperations | undefined,\n\t): Promise<ReloadResourcePaths> {\n\t\tconst loadProjectInstructionsRemotely = instructionOperations !== undefined;\n\t\tconst enabledExtensions = this.getEnabledPaths(resolvedPaths.extensions, metadataByPath);\n\t\tconst enabledSkillResources = this.getEnabledResources(resolvedPaths.skills, metadataByPath).filter(\n\t\t\t(resource) => !this.shouldExcludeLocalProjectInstructionResource(resource, loadProjectInstructionsRemotely),\n\t\t);\n\t\tconst enabledRuleResources = this.getEnabledResources(resolvedPaths.rules, metadataByPath).filter(\n\t\t\t(resource) => !this.shouldExcludeLocalProjectInstructionResource(resource, loadProjectInstructionsRemotely),\n\t\t);\n\t\tconst enabledPrompts = this.getEnabledResources(resolvedPaths.prompts, metadataByPath)\n\t\t\t.filter(\n\t\t\t\t(resource) => !this.shouldExcludeLocalProjectInstructionResource(resource, loadProjectInstructionsRemotely),\n\t\t\t)\n\t\t\t.map((resource) => resource.path);\n\t\tconst enabledThemes = this.getEnabledPaths(resolvedPaths.themes, metadataByPath);\n\n\t\tconst remotePaths = await this.discoverRemoteInstructionResourcePaths(instructionOperations);\n\t\tthis.recordRemoteInstructionMetadata(remotePaths, metadataByPath);\n\t\tconst enabledSkills = enabledSkillResources.map((resource) =>\n\t\t\tthis.normalizePackagedInstructionPath(resource, \"SKILL.md\", metadataByPath),\n\t\t);\n\t\tconst enabledRules = enabledRuleResources.map((resource) =>\n\t\t\tthis.normalizePackagedInstructionPath(resource, \"RULES.md\", metadataByPath),\n\t\t);\n\n\t\tthis.recordCliInstructionMetadata(cliPaths, metadataByPath);\n\t\tconst cliExtensions = this.getEnabledPaths(cliPaths.extensions, metadataByPath);\n\t\tconst cliSkills = this.getEnabledPaths(cliPaths.skills, metadataByPath);\n\t\tconst cliRules = this.getEnabledPaths(cliPaths.rules, metadataByPath);\n\t\tconst cliPrompts = this.getEnabledPaths(cliPaths.prompts, metadataByPath);\n\t\tconst cliThemes = this.getEnabledPaths(cliPaths.themes, metadataByPath);\n\n\t\treturn {\n\t\t\textensions: this.noExtensions ? cliExtensions : this.mergePaths(cliExtensions, enabledExtensions),\n\t\t\tskills: this.noSkills\n\t\t\t\t? this.mergePaths(cliSkills, this.additionalSkillPaths)\n\t\t\t\t: this.mergePaths(\n\t\t\t\t\t\t[...cliSkills, ...enabledSkills, ...remotePaths.skills.map((entry) => entry.path)],\n\t\t\t\t\t\tthis.additionalSkillPaths,\n\t\t\t\t\t),\n\t\t\trules: this.noRules\n\t\t\t\t? this.mergePaths(cliRules, this.additionalRulePaths)\n\t\t\t\t: this.mergePaths(\n\t\t\t\t\t\t[...cliRules, ...enabledRules, ...remotePaths.rules.map((entry) => entry.path)],\n\t\t\t\t\t\tthis.additionalRulePaths,\n\t\t\t\t\t),\n\t\t\tprompts: this.noPromptTemplates\n\t\t\t\t? this.mergePaths(cliPrompts, this.additionalPromptTemplatePaths)\n\t\t\t\t: this.mergePaths(\n\t\t\t\t\t\t[...cliPrompts, ...enabledPrompts, ...remotePaths.prompts.map((entry) => entry.path)],\n\t\t\t\t\t\tthis.additionalPromptTemplatePaths,\n\t\t\t\t\t),\n\t\t\tthemes: this.noThemes\n\t\t\t\t? this.mergePaths(cliThemes, this.additionalThemePaths)\n\t\t\t\t: this.mergePaths([...cliThemes, ...enabledThemes], this.additionalThemePaths),\n\t\t};\n\t}\n\n\tprivate async reloadExtensions(extensionPaths: string[], metadataByPath: Map<string, PathMetadata>): Promise<void> {\n\t\tconst extensionsResult = await loadExtensions(extensionPaths, this.cwd, this.eventBus);\n\t\tconst inlineExtensions = await this.loadExtensionFactories(extensionsResult.runtime);\n\t\textensionsResult.extensions.push(...inlineExtensions.extensions);\n\t\textensionsResult.errors.push(...inlineExtensions.errors);\n\t\tfor (const conflict of this.detectExtensionConflicts(extensionsResult.extensions)) {\n\t\t\textensionsResult.errors.push({ path: conflict.path, error: conflict.message });\n\t\t}\n\t\tfor (const path of this.additionalExtensionPaths) {\n\t\t\tif (!isLocalPath(path)) continue;\n\t\t\tconst resolved = this.resolveResourcePath(path);\n\t\t\tif (!existsSync(resolved)) {\n\t\t\t\textensionsResult.errors.push({ path: resolved, error: `Extension path does not exist: ${resolved}` });\n\t\t\t}\n\t\t}\n\t\tthis.extensionsResult = this.extensionsOverride ? this.extensionsOverride(extensionsResult) : extensionsResult;\n\t\tthis.applyExtensionSourceInfo(this.extensionsResult.extensions, metadataByPath);\n\t}\n\n\tprivate async reloadSkills(skillPaths: string[], metadataByPath: Map<string, PathMetadata>): Promise<void> {\n\t\tthis.lastSkillPaths = skillPaths;\n\t\tawait this.updateSkillsFromPathsForReload(skillPaths, metadataByPath);\n\t\tconst diagnosticPaths = new Set(this.skillDiagnostics.map((diagnostic) => diagnostic.path));\n\t\tfor (const path of this.additionalSkillPaths) {\n\t\t\tif (!isLocalPath(path)) continue;\n\t\t\tconst resolved = this.resolveResourcePath(path);\n\t\t\tappendMissingResourceDiagnostic(resolved, this.skillDiagnostics, diagnosticPaths, \"Skill path does not exist\");\n\t\t}\n\t}\n\n\tprivate async reloadRules(rulePaths: string[], metadataByPath: Map<string, PathMetadata>): Promise<void> {\n\t\tthis.lastRulePaths = rulePaths;\n\t\tawait this.updateRulesFromPathsForReload(rulePaths, metadataByPath);\n\t\tconst diagnosticPaths = new Set(this.ruleDiagnostics.map((diagnostic) => diagnostic.path));\n\t\tfor (const path of this.additionalRulePaths) {\n\t\t\tif (!isLocalPath(path)) continue;\n\t\t\tconst resolved = this.resolveResourcePath(path);\n\t\t\tappendMissingResourceDiagnostic(resolved, this.ruleDiagnostics, diagnosticPaths, \"Rule path does not exist\");\n\t\t}\n\t}\n\n\tprivate async reloadPrompts(promptPaths: string[], metadataByPath: Map<string, PathMetadata>): Promise<void> {\n\t\tthis.lastPromptPaths = promptPaths;\n\t\tawait this.updatePromptsFromPathsForReload(promptPaths, metadataByPath);\n\t\tconst diagnosticPaths = new Set(this.promptDiagnostics.map((diagnostic) => diagnostic.path));\n\t\tfor (const path of this.additionalPromptTemplatePaths) {\n\t\t\tif (!isLocalPath(path)) continue;\n\t\t\tconst resolved = this.resolveResourcePath(path);\n\t\t\tappendMissingResourceDiagnostic(\n\t\t\t\tresolved,\n\t\t\t\tthis.promptDiagnostics,\n\t\t\t\tdiagnosticPaths,\n\t\t\t\t\"Prompt template path does not exist\",\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate reloadThemes(themePaths: string[], metadataByPath: Map<string, PathMetadata>): void {\n\t\tthis.lastThemePaths = themePaths;\n\t\tthis.updateThemesFromPaths(themePaths, metadataByPath);\n\t\tconst diagnosticPaths = new Set(this.themeDiagnostics.map((diagnostic) => diagnostic.path));\n\t\tfor (const path of this.additionalThemePaths) {\n\t\t\tconst resolved = this.resolveResourcePath(path);\n\t\t\tappendMissingResourceDiagnostic(resolved, this.themeDiagnostics, diagnosticPaths, \"Theme path does not exist\");\n\t\t}\n\t}\n\n\tprivate async reloadProjectContextFiles(instructionOperations: ToolOperations | undefined): Promise<void> {\n\t\tconst backend = instructionOperations?.getBackendInfo?.();\n\t\tconst agentsFiles = {\n\t\t\tagentsFiles: this.noContextFiles\n\t\t\t\t? []\n\t\t\t\t: instructionOperations\n\t\t\t\t\t? await loadProjectContextFilesWithOperations({\n\t\t\t\t\t\t\tcwd: instructionOperations.cwd,\n\t\t\t\t\t\t\tagentDir: this.agentDir,\n\t\t\t\t\t\t\toperations: instructionOperations,\n\t\t\t\t\t\t\tworkspace: backend?.type === \"remote\" && backend.configured ? backend.workspace : undefined,\n\t\t\t\t\t\t})\n\t\t\t\t\t: loadProjectContextFiles({ cwd: this.cwd, agentDir: this.agentDir }),\n\t\t};\n\t\tconst resolvedAgentsFiles = this.agentsFilesOverride ? this.agentsFilesOverride(agentsFiles) : agentsFiles;\n\t\tthis.agentsFiles = resolvedAgentsFiles.agentsFiles;\n\t}\n\n\tprivate async reloadSystemPrompts(): Promise<void> {\n\t\tconst baseSystemPrompt = await resolvePromptInput(\n\t\t\tthis.systemPromptSource ?? this.discoverSystemPromptFile(),\n\t\t\t\"system prompt\",\n\t\t\tthis.getInstructionOperations(),\n\t\t);\n\t\tthis.systemPrompt = this.systemPromptOverride ? this.systemPromptOverride(baseSystemPrompt) : baseSystemPrompt;\n\n\t\tconst appendSources =\n\t\t\tthis.appendSystemPromptSource ??\n\t\t\t(this.discoverAppendSystemPromptFile() ? [this.discoverAppendSystemPromptFile()!] : []);\n\t\tconst baseAppend = (\n\t\t\tawait Promise.all(\n\t\t\t\tappendSources.map((source) =>\n\t\t\t\t\tresolvePromptInput(source, \"append system prompt\", this.getInstructionOperations()),\n\t\t\t\t),\n\t\t\t)\n\t\t).filter((source): source is string => source !== undefined);\n\t\tthis.appendSystemPrompt = this.appendSystemPromptOverride\n\t\t\t? this.appendSystemPromptOverride(baseAppend)\n\t\t\t: baseAppend;\n\t}\n\n\tasync reload(): Promise<void> {\n\t\tresetTimings(\"extensions\");\n\t\tawait this.settingsManager.reload();\n\t\tconst resolvedPaths = await this.packageManager.resolve();\n\t\tconst cliPaths = await this.packageManager.resolveExtensionSources(this.additionalExtensionPaths, {\n\t\t\ttemporary: true,\n\t\t});\n\t\tconst metadataByPath = new Map<string, PathMetadata>();\n\t\tthis.extensionSkillSourceInfos = new Map();\n\t\tthis.extensionRuleSourceInfos = new Map();\n\t\tthis.extensionPromptSourceInfos = new Map();\n\t\tthis.extensionThemeSourceInfos = new Map();\n\n\t\tconst instructionOperations = this.getInstructionOperations();\n\t\tconst paths = await this.collectReloadResourcePaths(\n\t\t\tresolvedPaths,\n\t\t\tcliPaths,\n\t\t\tmetadataByPath,\n\t\t\tinstructionOperations,\n\t\t);\n\t\tawait this.reloadExtensions(paths.extensions, metadataByPath);\n\t\tawait this.reloadSkills(paths.skills, metadataByPath);\n\t\tawait this.reloadRules(paths.rules, metadataByPath);\n\t\tawait this.reloadPrompts(paths.prompts, metadataByPath);\n\t\tthis.reloadThemes(paths.themes, metadataByPath);\n\t\tawait this.reloadProjectContextFiles(instructionOperations);\n\t\tawait this.reloadSystemPrompts();\n\t}\n\n\tprivate normalizeExtensionPaths(entries: ResourcePathEntry[]): ResourcePathEntry[] {\n\t\treturn entries.map((entry) => {\n\t\t\tconst metadata = entry.metadata.baseDir\n\t\t\t\t? { ...entry.metadata, baseDir: this.resolveResourcePath(entry.metadata.baseDir) }\n\t\t\t\t: entry.metadata;\n\t\t\treturn {\n\t\t\t\tpath: this.resolveResourcePath(entry.path),\n\t\t\t\tmetadata,\n\t\t\t};\n\t\t});\n\t}\n\n\tprivate getExtensionRegisteredSkills(): Skill[] {\n\t\treturn this.extensionsResult.extensions.flatMap((extension) => Array.from(extension.skills.values()));\n\t}\n\n\tprivate getExtensionRegisteredRules(): Rule[] {\n\t\treturn this.extensionsResult.extensions.flatMap((extension) => Array.from(extension.rules.values()));\n\t}\n\n\tprivate getExtensionRegisteredPrompts(): PromptTemplate[] {\n\t\treturn this.extensionsResult.extensions.flatMap((extension) => Array.from(extension.prompts.values()));\n\t}\n\n\tprivate applyLoadedSkills(skillsResult: LoadSkillsResult, metadataByPath?: Map<string, PathMetadata>): void {\n\t\tconst extensionSkills = this.getExtensionRegisteredSkills();\n\t\tconst seenSkillNames = new Set(extensionSkills.map((skill) => skill.name));\n\t\tconst baseSkillsResult = {\n\t\t\tskills: [...extensionSkills, ...skillsResult.skills.filter((skill) => !seenSkillNames.has(skill.name))],\n\t\t\tdiagnostics: skillsResult.diagnostics,\n\t\t};\n\t\tconst resolvedSkills = this.skillsOverride ? this.skillsOverride(baseSkillsResult) : baseSkillsResult;\n\t\tthis.skills = resolvedSkills.skills.map((skill) => ({\n\t\t\t...skill,\n\t\t\tsourceInfo:\n\t\t\t\tthis.findSourceInfoForPath(skill.filePath, this.extensionSkillSourceInfos, metadataByPath) ??\n\t\t\t\tskill.sourceInfo ??\n\t\t\t\tthis.getDefaultSourceInfoForPath(skill.filePath),\n\t\t}));\n\t\tthis.skillDiagnostics = resolvedSkills.diagnostics;\n\t}\n\n\tprivate updateSkillsFromPaths(skillPaths: string[], metadataByPath?: Map<string, PathMetadata>): void {\n\t\tlet skillsResult: { skills: Skill[]; diagnostics: ResourceDiagnostic[] };\n\t\tif (this.noSkills && skillPaths.length === 0) {\n\t\t\tskillsResult = { skills: [], diagnostics: [] };\n\t\t} else {\n\t\t\tskillsResult = loadSkills({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\tagentDir: this.agentDir,\n\t\t\t\tskillPaths,\n\t\t\t\tincludeDefaults: false,\n\t\t\t});\n\t\t}\n\t\tthis.applyLoadedSkills(skillsResult, metadataByPath);\n\t}\n\n\tprivate shouldLoadPathWithInstructionOperations(path: string, metadataByPath?: Map<string, PathMetadata>): boolean {\n\t\tconst operations = this.getInstructionOperations();\n\t\tif (!operations) return false;\n\t\tconst sourceInfo = this.findSourceInfoForPath(path, undefined, metadataByPath);\n\t\tif (sourceInfo?.source === \"remote\") return true;\n\t\tconst backend = operations.getBackendInfo?.();\n\t\tif (backend?.type === \"remote\" && backend.configured) {\n\t\t\treturn relativeWithin(backend.workspace.root, path) !== undefined;\n\t\t}\n\t\tconst cwd = operations.cwd.endsWith(sep) ? operations.cwd : `${operations.cwd}${sep}`;\n\t\treturn path === operations.cwd || path.startsWith(cwd);\n\t}\n\n\tprivate async updateSkillsFromPathsForReload(\n\t\tskillPaths: string[],\n\t\tmetadataByPath?: Map<string, PathMetadata>,\n\t): Promise<void> {\n\t\tlet skillsResult: { skills: Skill[]; diagnostics: ResourceDiagnostic[] };\n\t\tconst operations = this.getInstructionOperations();\n\t\tif (this.noSkills && skillPaths.length === 0) {\n\t\t\tskillsResult = { skills: [], diagnostics: [] };\n\t\t} else if (operations) {\n\t\t\tconst remotePaths = skillPaths.filter((path) =>\n\t\t\t\tthis.shouldLoadPathWithInstructionOperations(path, metadataByPath),\n\t\t\t);\n\t\t\tconst localPaths = skillPaths.filter(\n\t\t\t\t(path) => !this.shouldLoadPathWithInstructionOperations(path, metadataByPath),\n\t\t\t);\n\t\t\tconst remoteResult = await loadSkillsWithOperations({\n\t\t\t\tcwd: operations.cwd,\n\t\t\t\tagentDir: this.agentDir,\n\t\t\t\tskillPaths: remotePaths,\n\t\t\t\tincludeDefaults: false,\n\t\t\t\toperations,\n\t\t\t});\n\t\t\tconst localResult = loadSkills({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\tagentDir: this.agentDir,\n\t\t\t\tskillPaths: localPaths,\n\t\t\t\tincludeDefaults: false,\n\t\t\t});\n\t\t\tconst merged = mergeNamedResources(remoteResult.skills, localResult.skills, \"skill\");\n\t\t\tskillsResult = {\n\t\t\t\tskills: merged.resources,\n\t\t\t\tdiagnostics: [...remoteResult.diagnostics, ...localResult.diagnostics, ...merged.diagnostics],\n\t\t\t};\n\t\t} else {\n\t\t\tskillsResult = loadSkills({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\tagentDir: this.agentDir,\n\t\t\t\tskillPaths,\n\t\t\t\tincludeDefaults: false,\n\t\t\t});\n\t\t}\n\t\tthis.applyLoadedSkills(skillsResult, metadataByPath);\n\t}\n\n\tprivate applyLoadedRules(rulesResult: LoadRulesResult, metadataByPath?: Map<string, PathMetadata>): void {\n\t\tconst extensionRules = this.getExtensionRegisteredRules();\n\t\tconst seenRuleNames = new Set(extensionRules.map((rule) => rule.name));\n\t\tconst baseRulesResult = {\n\t\t\trules: [...extensionRules, ...rulesResult.rules.filter((rule) => !seenRuleNames.has(rule.name))],\n\t\t\tdiagnostics: rulesResult.diagnostics,\n\t\t};\n\t\tconst resolvedRules = this.rulesOverride ? this.rulesOverride(baseRulesResult) : baseRulesResult;\n\t\tthis.rules = resolvedRules.rules.map((rule) => ({\n\t\t\t...rule,\n\t\t\tsourceInfo:\n\t\t\t\tthis.findSourceInfoForPath(rule.filePath, this.extensionRuleSourceInfos, metadataByPath) ??\n\t\t\t\trule.sourceInfo ??\n\t\t\t\tthis.getDefaultSourceInfoForPath(rule.filePath),\n\t\t}));\n\t\tthis.ruleDiagnostics = resolvedRules.diagnostics;\n\t}\n\n\tprivate updateRulesFromPaths(rulePaths: string[], metadataByPath?: Map<string, PathMetadata>): void {\n\t\tlet rulesResult: { rules: Rule[]; diagnostics: ResourceDiagnostic[] };\n\t\tif (this.noRules && rulePaths.length === 0) {\n\t\t\trulesResult = { rules: [], diagnostics: [] };\n\t\t} else {\n\t\t\trulesResult = loadRules({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\tagentDir: this.agentDir,\n\t\t\t\trulePaths,\n\t\t\t\tincludeDefaults: false,\n\t\t\t});\n\t\t}\n\t\tthis.applyLoadedRules(rulesResult, metadataByPath);\n\t}\n\n\tprivate async updateRulesFromPathsForReload(\n\t\trulePaths: string[],\n\t\tmetadataByPath?: Map<string, PathMetadata>,\n\t): Promise<void> {\n\t\tlet rulesResult: { rules: Rule[]; diagnostics: ResourceDiagnostic[] };\n\t\tconst operations = this.getInstructionOperations();\n\t\tif (this.noRules && rulePaths.length === 0) {\n\t\t\trulesResult = { rules: [], diagnostics: [] };\n\t\t} else if (operations) {\n\t\t\tconst remotePaths = rulePaths.filter((path) =>\n\t\t\t\tthis.shouldLoadPathWithInstructionOperations(path, metadataByPath),\n\t\t\t);\n\t\t\tconst localPaths = rulePaths.filter(\n\t\t\t\t(path) => !this.shouldLoadPathWithInstructionOperations(path, metadataByPath),\n\t\t\t);\n\t\t\tconst remoteResult = await loadRulesWithOperations({\n\t\t\t\tcwd: operations.cwd,\n\t\t\t\tagentDir: this.agentDir,\n\t\t\t\trulePaths: remotePaths,\n\t\t\t\tincludeDefaults: false,\n\t\t\t\toperations,\n\t\t\t});\n\t\t\tconst localResult = loadRules({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\tagentDir: this.agentDir,\n\t\t\t\trulePaths: localPaths,\n\t\t\t\tincludeDefaults: false,\n\t\t\t});\n\t\t\tconst merged = mergeNamedResources(remoteResult.rules, localResult.rules, \"rule\");\n\t\t\trulesResult = {\n\t\t\t\trules: merged.resources,\n\t\t\t\tdiagnostics: [...remoteResult.diagnostics, ...localResult.diagnostics, ...merged.diagnostics],\n\t\t\t};\n\t\t} else {\n\t\t\trulesResult = loadRules({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\tagentDir: this.agentDir,\n\t\t\t\trulePaths,\n\t\t\t\tincludeDefaults: false,\n\t\t\t});\n\t\t}\n\t\tthis.applyLoadedRules(rulesResult, metadataByPath);\n\t}\n\n\tprivate applyLoadedPrompts(\n\t\tpromptsResult: LoadPromptTemplatesResult,\n\t\tmetadataByPath?: Map<string, PathMetadata>,\n\t): void {\n\t\tconst extensionPrompts = this.getExtensionRegisteredPrompts();\n\t\tconst basePromptsResult = this.dedupePrompts([...extensionPrompts, ...promptsResult.prompts]);\n\t\tbasePromptsResult.diagnostics.unshift(...promptsResult.diagnostics);\n\t\tconst resolvedPrompts = this.promptsOverride ? this.promptsOverride(basePromptsResult) : basePromptsResult;\n\t\tthis.prompts = resolvedPrompts.prompts.map((prompt) => ({\n\t\t\t...prompt,\n\t\t\tsourceInfo:\n\t\t\t\tthis.findSourceInfoForPath(prompt.filePath, this.extensionPromptSourceInfos, metadataByPath) ??\n\t\t\t\tprompt.sourceInfo ??\n\t\t\t\tthis.getDefaultSourceInfoForPath(prompt.filePath),\n\t\t}));\n\t\tthis.promptDiagnostics = resolvedPrompts.diagnostics;\n\t}\n\n\tprivate updatePromptsFromPaths(promptPaths: string[], metadataByPath?: Map<string, PathMetadata>): void {\n\t\tlet promptsResult: { prompts: PromptTemplate[]; diagnostics: ResourceDiagnostic[] };\n\t\tif (this.noPromptTemplates && promptPaths.length === 0) {\n\t\t\tpromptsResult = { prompts: [], diagnostics: [] };\n\t\t} else {\n\t\t\tconst allPrompts = loadPromptTemplates({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\tagentDir: this.agentDir,\n\t\t\t\tpromptPaths,\n\t\t\t\tincludeDefaults: false,\n\t\t\t});\n\t\t\tpromptsResult = this.dedupePrompts(allPrompts);\n\t\t}\n\t\tthis.applyLoadedPrompts(promptsResult, metadataByPath);\n\t}\n\n\tprivate async updatePromptsFromPathsForReload(\n\t\tpromptPaths: string[],\n\t\tmetadataByPath?: Map<string, PathMetadata>,\n\t): Promise<void> {\n\t\tlet promptsResult: { prompts: PromptTemplate[]; diagnostics: ResourceDiagnostic[] };\n\t\tconst operations = this.getInstructionOperations();\n\t\tif (this.noPromptTemplates && promptPaths.length === 0) {\n\t\t\tpromptsResult = { prompts: [], diagnostics: [] };\n\t\t} else if (operations) {\n\t\t\tconst remotePaths = promptPaths.filter((path) =>\n\t\t\t\tthis.shouldLoadPathWithInstructionOperations(path, metadataByPath),\n\t\t\t);\n\t\t\tconst localPaths = promptPaths.filter(\n\t\t\t\t(path) => !this.shouldLoadPathWithInstructionOperations(path, metadataByPath),\n\t\t\t);\n\t\t\tconst remotePrompts = await loadPromptTemplatesWithOperations({\n\t\t\t\tcwd: operations.cwd,\n\t\t\t\tagentDir: this.agentDir,\n\t\t\t\tpromptPaths: remotePaths,\n\t\t\t\tincludeDefaults: false,\n\t\t\t\toperations,\n\t\t\t});\n\t\t\tconst localPrompts = loadPromptTemplates({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\tagentDir: this.agentDir,\n\t\t\t\tpromptPaths: localPaths,\n\t\t\t\tincludeDefaults: false,\n\t\t\t});\n\t\t\tpromptsResult = this.dedupePrompts([...remotePrompts, ...localPrompts]);\n\t\t} else {\n\t\t\tconst allPrompts = loadPromptTemplates({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\tagentDir: this.agentDir,\n\t\t\t\tpromptPaths,\n\t\t\t\tincludeDefaults: false,\n\t\t\t});\n\t\t\tpromptsResult = this.dedupePrompts(allPrompts);\n\t\t}\n\t\tthis.applyLoadedPrompts(promptsResult, metadataByPath);\n\t}\n\n\tprivate updateThemesFromPaths(themePaths: string[], metadataByPath?: Map<string, PathMetadata>): void {\n\t\tlet themesResult: { themes: Theme[]; diagnostics: ResourceDiagnostic[] };\n\t\tif (this.noThemes && themePaths.length === 0) {\n\t\t\tthemesResult = { themes: [], diagnostics: [] };\n\t\t} else {\n\t\t\tconst loaded = this.loadThemes(themePaths, false);\n\t\t\tconst deduped = this.dedupeThemes(loaded.themes);\n\t\t\tthemesResult = { themes: deduped.themes, diagnostics: [...loaded.diagnostics, ...deduped.diagnostics] };\n\t\t}\n\t\tconst resolvedThemes = this.themesOverride ? this.themesOverride(themesResult) : themesResult;\n\t\tthis.themes = resolvedThemes.themes.map((theme) => {\n\t\t\tconst sourcePath = theme.sourcePath;\n\t\t\ttheme.sourceInfo = sourcePath\n\t\t\t\t? (this.findSourceInfoForPath(sourcePath, this.extensionThemeSourceInfos, metadataByPath) ??\n\t\t\t\t\ttheme.sourceInfo ??\n\t\t\t\t\tthis.getDefaultSourceInfoForPath(sourcePath))\n\t\t\t\t: theme.sourceInfo;\n\t\t\treturn theme;\n\t\t});\n\t\tthis.themeDiagnostics = resolvedThemes.diagnostics;\n\t}\n\n\tprivate applyExtensionSourceInfo(extensions: Extension[], metadataByPath: Map<string, PathMetadata>): void {\n\t\tfor (const extension of extensions) {\n\t\t\textension.sourceInfo =\n\t\t\t\tthis.findSourceInfoForPath(extension.path, undefined, metadataByPath) ??\n\t\t\t\tthis.getDefaultSourceInfoForPath(extension.path);\n\t\t\tfor (const command of extension.commands.values()) {\n\t\t\t\tcommand.sourceInfo = extension.sourceInfo;\n\t\t\t}\n\t\t\tfor (const tool of extension.tools.values()) {\n\t\t\t\ttool.sourceInfo = extension.sourceInfo;\n\t\t\t}\n\t\t\tfor (const skill of extension.skills.values()) {\n\t\t\t\tskill.sourceInfo = extension.sourceInfo;\n\t\t\t}\n\t\t\tfor (const rule of extension.rules.values()) {\n\t\t\t\trule.sourceInfo = extension.sourceInfo;\n\t\t\t}\n\t\t\tfor (const prompt of extension.prompts.values()) {\n\t\t\t\tprompt.sourceInfo = extension.sourceInfo;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate findRegisteredSourceInfoForPath(\n\t\tresourcePath: string,\n\t\tnormalizedResourcePath: string,\n\t\tsourceInfos: Map<string, SourceInfo>,\n\t): SourceInfo | undefined {\n\t\tfor (const [sourcePath, sourceInfo] of sourceInfos.entries()) {\n\t\t\tconst normalizedSourcePath = resolve(sourcePath);\n\t\t\tif (\n\t\t\t\tnormalizedResourcePath === normalizedSourcePath ||\n\t\t\t\tnormalizedResourcePath.startsWith(`${normalizedSourcePath}${sep}`)\n\t\t\t) {\n\t\t\t\treturn { ...sourceInfo, path: resourcePath };\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tprivate findResolvedResourceSourceInfoForPath(\n\t\tresourcePath: string,\n\t\tnormalizedResourcePath: string,\n\t\tmetadataByPath: Map<string, PathMetadata>,\n\t): SourceInfo | undefined {\n\t\tconst exact = metadataByPath.get(normalizedResourcePath) ?? metadataByPath.get(resourcePath);\n\t\tif (exact) return createSourceInfo(resourcePath, exact);\n\n\t\tfor (const [sourcePath, metadata] of metadataByPath.entries()) {\n\t\t\tif (metadata.workspace) {\n\t\t\t\tif (relativeWithin(sourcePath, resourcePath) !== undefined) {\n\t\t\t\t\treturn createSourceInfo(resourcePath, metadata);\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst normalizedSourcePath = resolve(sourcePath);\n\t\t\tif (\n\t\t\t\tnormalizedResourcePath === normalizedSourcePath ||\n\t\t\t\tnormalizedResourcePath.startsWith(`${normalizedSourcePath}${sep}`)\n\t\t\t) {\n\t\t\t\treturn createSourceInfo(resourcePath, metadata);\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tprivate findSourceInfoForPath(\n\t\tresourcePath: string,\n\t\textraSourceInfos?: Map<string, SourceInfo>,\n\t\tmetadataByPath?: Map<string, PathMetadata>,\n\t): SourceInfo | undefined {\n\t\tif (!resourcePath) return undefined;\n\t\tif (resourcePath.startsWith(\"<\")) return this.getDefaultSourceInfoForPath(resourcePath);\n\n\t\tconst normalizedResourcePath = resolve(resourcePath);\n\t\tconst registeredSourceInfo = extraSourceInfos\n\t\t\t? this.findRegisteredSourceInfoForPath(resourcePath, normalizedResourcePath, extraSourceInfos)\n\t\t\t: undefined;\n\t\tif (registeredSourceInfo) return registeredSourceInfo;\n\t\treturn metadataByPath\n\t\t\t? this.findResolvedResourceSourceInfoForPath(resourcePath, normalizedResourcePath, metadataByPath)\n\t\t\t: undefined;\n\t}\n\n\tprivate getDefaultSourceInfoForPath(filePath: string): SourceInfo {\n\t\tif (filePath.startsWith(\"<\") && filePath.endsWith(\">\")) {\n\t\t\treturn {\n\t\t\t\tpath: filePath,\n\t\t\t\tsource: filePath.slice(1, -1).split(\":\")[0] || \"temporary\",\n\t\t\t\tscope: \"temporary\",\n\t\t\t\torigin: \"top-level\",\n\t\t\t};\n\t\t}\n\n\t\tconst normalizedPath = resolve(filePath);\n\t\tconst agentRoots = [\n\t\t\tjoin(this.agentDir, \"skills\"),\n\t\t\tjoin(this.agentDir, \"rules\"),\n\t\t\tjoin(this.agentDir, \"prompts\"),\n\t\t\tjoin(this.agentDir, \"themes\"),\n\t\t\tjoin(this.agentDir, \"extensions\"),\n\t\t];\n\t\tconst projectRoots = [\n\t\t\tjoin(this.cwd, CONFIG_DIR_NAME, \"skills\"),\n\t\t\tjoin(this.cwd, CONFIG_DIR_NAME, \"rules\"),\n\t\t\tjoin(this.cwd, CONFIG_DIR_NAME, \"prompts\"),\n\t\t\tjoin(this.cwd, CONFIG_DIR_NAME, \"themes\"),\n\t\t\tjoin(this.cwd, CONFIG_DIR_NAME, \"extensions\"),\n\t\t];\n\n\t\tfor (const root of agentRoots) {\n\t\t\tif (this.isUnderPath(normalizedPath, root)) {\n\t\t\t\treturn { path: filePath, source: \"local\", scope: \"user\", origin: \"top-level\", baseDir: root };\n\t\t\t}\n\t\t}\n\n\t\tfor (const root of projectRoots) {\n\t\t\tif (this.isUnderPath(normalizedPath, root)) {\n\t\t\t\treturn { path: filePath, source: \"local\", scope: \"project\", origin: \"top-level\", baseDir: root };\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tpath: filePath,\n\t\t\tsource: \"local\",\n\t\t\tscope: \"temporary\",\n\t\t\torigin: \"top-level\",\n\t\t\tbaseDir: statSync(normalizedPath).isDirectory() ? normalizedPath : resolve(normalizedPath, \"..\"),\n\t\t};\n\t}\n\n\tprivate mergePaths(primary: string[], additional: string[]): string[] {\n\t\tconst merged: string[] = [];\n\t\tconst seen = new Set<string>();\n\n\t\tfor (const p of [...primary, ...additional]) {\n\t\t\tconst resolved = this.resolveResourcePath(p);\n\t\t\tconst canonicalPath = canonicalizePath(resolved);\n\t\t\tif (seen.has(canonicalPath)) continue;\n\t\t\tseen.add(canonicalPath);\n\t\t\tmerged.push(resolved);\n\t\t}\n\n\t\treturn merged;\n\t}\n\n\tprivate resolveResourcePath(p: string): string {\n\t\treturn resolvePath(p, this.cwd, { trim: true });\n\t}\n\n\tprivate loadThemes(paths: string[], includeDefaults: boolean = true): LoadThemesResult {\n\t\tconst themes: Theme[] = [];\n\t\tconst diagnostics: ResourceDiagnostic[] = [];\n\t\tif (includeDefaults) {\n\t\t\tconst defaultDirs = [join(this.agentDir, \"themes\"), join(this.cwd, CONFIG_DIR_NAME, \"themes\")];\n\n\t\t\tfor (const dir of defaultDirs) {\n\t\t\t\tthis.loadThemesFromDir(dir, themes, diagnostics);\n\t\t\t}\n\t\t}\n\n\t\tfor (const p of paths) {\n\t\t\tconst resolved = this.resolveResourcePath(p);\n\t\t\tif (!existsSync(resolved)) {\n\t\t\t\tdiagnostics.push({ type: \"warning\", message: \"theme path does not exist\", path: resolved });\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst stats = statSync(resolved);\n\t\t\t\tif (stats.isDirectory()) {\n\t\t\t\t\tthis.loadThemesFromDir(resolved, themes, diagnostics);\n\t\t\t\t} else if (stats.isFile() && resolved.endsWith(\".json\")) {\n\t\t\t\t\tthis.loadThemeFromFile(resolved, themes, diagnostics);\n\t\t\t\t} else {\n\t\t\t\t\tdiagnostics.push({ type: \"warning\", message: \"theme path is not a json file\", path: resolved });\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconst message = error instanceof Error ? error.message : \"failed to read theme path\";\n\t\t\t\tdiagnostics.push({ type: \"warning\", message, path: resolved });\n\t\t\t}\n\t\t}\n\n\t\treturn { themes, diagnostics };\n\t}\n\n\tprivate loadThemesFromDir(dir: string, themes: Theme[], diagnostics: ResourceDiagnostic[]): void {\n\t\tif (!existsSync(dir)) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tconst entries = readdirSync(dir, { withFileTypes: true });\n\t\t\tfor (const entry of entries) {\n\t\t\t\tlet isFile = entry.isFile();\n\t\t\t\tif (entry.isSymbolicLink()) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tisFile = statSync(join(dir, entry.name)).isFile();\n\t\t\t\t\t} catch {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!isFile) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (!entry.name.endsWith(\".json\")) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tthis.loadThemeFromFile(join(dir, entry.name), themes, diagnostics);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : \"failed to read theme directory\";\n\t\t\tdiagnostics.push({ type: \"warning\", message, path: dir });\n\t\t}\n\t}\n\n\tprivate loadThemeFromFile(filePath: string, themes: Theme[], diagnostics: ResourceDiagnostic[]): void {\n\t\ttry {\n\t\t\tthemes.push(loadThemeFromPath(filePath));\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : \"failed to load theme\";\n\t\t\tdiagnostics.push({ type: \"warning\", message, path: filePath });\n\t\t}\n\t}\n\n\tprivate async loadExtensionFactories(runtime: ExtensionRuntime): Promise<InlineExtensionLoadResult> {\n\t\tconst extensions: Extension[] = [];\n\t\tconst errors: Array<{ path: string; error: string }> = [];\n\n\t\tfor (const [index, factory] of this.extensionFactories.entries()) {\n\t\t\tconst extensionPath = `<inline:${index + 1}>`;\n\t\t\ttry {\n\t\t\t\tconst extension = await loadExtensionFromFactory(factory, this.cwd, this.eventBus, runtime, extensionPath);\n\t\t\t\textensions.push(extension);\n\t\t\t} catch (error) {\n\t\t\t\tconst message = error instanceof Error ? error.message : \"failed to load extension\";\n\t\t\t\terrors.push({ path: extensionPath, error: message });\n\t\t\t}\n\t\t}\n\n\t\treturn { extensions, errors };\n\t}\n\n\tprivate dedupePrompts(prompts: PromptTemplate[]): LoadPromptTemplatesResult {\n\t\tconst seen = new Map<string, PromptTemplate>();\n\t\tconst diagnostics: ResourceDiagnostic[] = [];\n\n\t\tfor (const prompt of prompts) {\n\t\t\tconst existing = seen.get(prompt.name);\n\t\t\tif (existing) {\n\t\t\t\tdiagnostics.push({\n\t\t\t\t\ttype: \"collision\",\n\t\t\t\t\tmessage: `name \"/${prompt.name}\" collision`,\n\t\t\t\t\tpath: prompt.filePath,\n\t\t\t\t\tcollision: {\n\t\t\t\t\t\tresourceType: \"prompt\",\n\t\t\t\t\t\tname: prompt.name,\n\t\t\t\t\t\twinnerPath: existing.filePath,\n\t\t\t\t\t\tloserPath: prompt.filePath,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tseen.set(prompt.name, prompt);\n\t\t\t}\n\t\t}\n\n\t\treturn { prompts: Array.from(seen.values()), diagnostics };\n\t}\n\n\tprivate dedupeThemes(themes: Theme[]): LoadThemesResult {\n\t\tconst seen = new Map<string, Theme>();\n\t\tconst diagnostics: ResourceDiagnostic[] = [];\n\n\t\tfor (const t of themes) {\n\t\t\tconst name = t.name ?? \"unnamed\";\n\t\t\tconst existing = seen.get(name);\n\t\t\tif (existing) {\n\t\t\t\tdiagnostics.push({\n\t\t\t\t\ttype: \"collision\",\n\t\t\t\t\tmessage: `name \"${name}\" collision`,\n\t\t\t\t\tpath: t.sourcePath,\n\t\t\t\t\tcollision: {\n\t\t\t\t\t\tresourceType: \"theme\",\n\t\t\t\t\t\tname,\n\t\t\t\t\t\twinnerPath: existing.sourcePath ?? \"<builtin>\",\n\t\t\t\t\t\tloserPath: t.sourcePath ?? \"<builtin>\",\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tseen.set(name, t);\n\t\t\t}\n\t\t}\n\n\t\treturn { themes: Array.from(seen.values()), diagnostics };\n\t}\n\n\tprivate discoverSystemPromptFile(): string | undefined {\n\t\tconst projectPath = join(this.cwd, CONFIG_DIR_NAME, \"SYSTEM.md\");\n\t\tif (existsSync(projectPath)) {\n\t\t\treturn projectPath;\n\t\t}\n\n\t\tconst globalPath = join(this.agentDir, \"SYSTEM.md\");\n\t\tif (existsSync(globalPath)) {\n\t\t\treturn globalPath;\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tprivate discoverAppendSystemPromptFile(): string | undefined {\n\t\tconst projectPath = join(this.cwd, CONFIG_DIR_NAME, \"APPEND_SYSTEM.md\");\n\t\tif (existsSync(projectPath)) {\n\t\t\treturn projectPath;\n\t\t}\n\n\t\tconst globalPath = join(this.agentDir, \"APPEND_SYSTEM.md\");\n\t\tif (existsSync(globalPath)) {\n\t\t\treturn globalPath;\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tprivate 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\tprivate detectExtensionConflicts(extensions: Extension[]): ExtensionConflict[] {\n\t\tconst conflicts: ExtensionConflict[] = [];\n\n\t\t// Track which extension registered each tool and flag\n\t\tconst toolOwners = new Map<string, string>();\n\t\tconst flagOwners = new Map<string, string>();\n\n\t\tfor (const ext of extensions) {\n\t\t\t// Check tools\n\t\t\tfor (const toolName of ext.tools.keys()) {\n\t\t\t\tconst existingOwner = toolOwners.get(toolName);\n\t\t\t\tif (existingOwner && existingOwner !== ext.path) {\n\t\t\t\t\tconflicts.push({\n\t\t\t\t\t\tpath: ext.path,\n\t\t\t\t\t\tmessage: `Tool \"${toolName}\" conflicts with ${existingOwner}`,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\ttoolOwners.set(toolName, ext.path);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Check flags\n\t\t\tfor (const flagName of ext.flags.keys()) {\n\t\t\t\tconst existingOwner = flagOwners.get(flagName);\n\t\t\t\tif (existingOwner && existingOwner !== ext.path) {\n\t\t\t\t\tconflicts.push({\n\t\t\t\t\t\tpath: ext.path,\n\t\t\t\t\t\tmessage: `Flag \"--${flagName}\" conflicts with ${existingOwner}`,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tflagOwners.set(flagName, ext.path);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn conflicts;\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/core/rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAEN,KAAK,mBAAmB,EACxB,KAAK,mCAAmC,EACxC,KAAK,8BAA8B,EACnC,yBAAyB,EACzB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,WAAW,eAAgB,SAAQ,8BAA8B;CAAG;AAE1E,MAAM,WAAW,IAAK,SAAQ,mBAAmB;CAAG;AAEpD,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,WAAW,EAAE,kBAAkB,EAAE,CAAC;CAClC;AAED,MAAM,MAAM,uBAAuB,GAAG,mCAAmC,CAAC;AAE1E,MAAM,WAAW,gBAAgB;IAChC,iDAAiD;IACjD,GAAG,EAAE,MAAM,CAAC;IACZ,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,yCAAyC;IACzC,eAAe,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,8BAA+B,SAAQ,gBAAgB;IACvE,UAAU,EAAE,cAAc,CAAC;CAC3B;AAED,qBAAa,UAAW,SAAQ,yBAAyB,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/E,cAEC;IAED,UAAmB,cAAc,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAErE;IAED,WAAW,CAAC,OAAO,EAAE,uBAAuB,GAAG,eAAe,CAG7D;IAED,IAAI,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAQ/C;IAEK,kBAAkB,CAAC,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,eAAe,CAAC,CAS1F;CACD;AAID,mCAAmC;AACnC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,eAAe,CAElF;AAED,gDAAgD;AAChD,wBAAgB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAEpE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,eAAe,CAAC,CAEzG;AAED,mEAAmE;AACnE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,CAU1D","sourcesContent":["import type { ResourceDiagnostic } from \"./diagnostics.ts\";\nimport {\n\tformatInstructionResourcesForPrompt,\n\ttype InstructionResource,\n\ttype InstructionResourceDirectoryOptions,\n\ttype InstructionResourceFrontmatter,\n\tInstructionResourceLoader,\n} from \"./instruction-resource-loader.ts\";\nimport type { ToolOperations } from \"./tools/operations.ts\";\n\nexport interface RuleFrontmatter extends InstructionResourceFrontmatter {}\n\nexport interface Rule extends InstructionResource {}\n\nexport interface LoadRulesResult {\n\trules: Rule[];\n\tdiagnostics: ResourceDiagnostic[];\n}\n\nexport type LoadRulesFromDirOptions = InstructionResourceDirectoryOptions;\n\nexport interface LoadRulesOptions {\n\t/** Working directory for project-local rules. */\n\tcwd: string;\n\t/** Agent config directory for global rules. */\n\tagentDir: string;\n\t/** Explicit rule paths (files or directories) */\n\trulePaths: string[];\n\t/** Include default rules directories. */\n\tincludeDefaults: boolean;\n}\n\nexport interface LoadRulesWithOperationsOptions extends LoadRulesOptions {\n\toperations: ToolOperations;\n}\n\nexport class RuleLoader extends InstructionResourceLoader<Rule, RuleFrontmatter> {\n\tconstructor() {\n\t\tsuper({ resourceType: \"rule\", defaultDirectoryName: \"rules\", rootFileName: \"RULES.md\" });\n\t}\n\n\tprotected override createResource(resource: InstructionResource): Rule {\n\t\treturn resource;\n\t}\n\n\tloadFromDir(options: LoadRulesFromDirOptions): LoadRulesResult {\n\t\tconst result = this.loadResourcesFromDir(options.dir, options.source);\n\t\treturn { rules: result.resources, diagnostics: result.diagnostics };\n\t}\n\n\tload(options: LoadRulesOptions): LoadRulesResult {\n\t\tconst result = this.loadResources({\n\t\t\tcwd: options.cwd,\n\t\t\tagentDir: options.agentDir,\n\t\t\tresourcePaths: options.rulePaths,\n\t\t\tincludeDefaults: options.includeDefaults,\n\t\t});\n\t\treturn { rules: result.resources, diagnostics: result.diagnostics };\n\t}\n\n\tasync loadWithOperations(options: LoadRulesWithOperationsOptions): Promise<LoadRulesResult> {\n\t\tconst result = await this.loadResourcesWithOperations({\n\t\t\tcwd: options.cwd,\n\t\t\tagentDir: options.agentDir,\n\t\t\tresourcePaths: options.rulePaths,\n\t\t\tincludeDefaults: options.includeDefaults,\n\t\t\toperations: options.operations,\n\t\t});\n\t\treturn { rules: result.resources, diagnostics: result.diagnostics };\n\t}\n}\n\nconst ruleLoader = new RuleLoader();\n\n/** Load rules from a directory. */\nexport function loadRulesFromDir(options: LoadRulesFromDirOptions): LoadRulesResult {\n\treturn ruleLoader.loadFromDir(options);\n}\n\n/** Load rules from all configured locations. */\nexport function loadRules(options: LoadRulesOptions): LoadRulesResult {\n\treturn ruleLoader.load(options);\n}\n\nexport function loadRulesWithOperations(options: LoadRulesWithOperationsOptions): Promise<LoadRulesResult> {\n\treturn ruleLoader.loadWithOperations(options);\n}\n\n/** Format model-visible rules for inclusion in a system prompt. */\nexport function formatRulesForPrompt(rules: Rule[]): string {\n\treturn formatInstructionResourcesForPrompt(rules, {\n\t\tintro: [\n\t\t\t\"The following rules provide mandatory constraints and policies.\",\n\t\t\t\"Use the read tool to load a rule's file when the task or files match its description; applicable rules are mandatory.\",\n\t\t\t\"When a rule file references a relative path, resolve it against the rule directory (parent of RULES.md / dirname of the path) and use that absolute path in tool commands.\",\n\t\t],\n\t\tcontainerTag: \"available_rules\",\n\t\titemTag: \"rule\",\n\t});\n}\n"]}
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/core/rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAEN,KAAK,mBAAmB,EACxB,KAAK,mCAAmC,EACxC,KAAK,8BAA8B,EACnC,yBAAyB,EACzB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,WAAW,eAAgB,SAAQ,8BAA8B;CAAG;AAE1E,MAAM,WAAW,IAAK,SAAQ,mBAAmB;CAAG;AAEpD,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,WAAW,EAAE,kBAAkB,EAAE,CAAC;CAClC;AAED,MAAM,MAAM,uBAAuB,GAAG,mCAAmC,CAAC;AAE1E,MAAM,WAAW,gBAAgB;IAChC,iDAAiD;IACjD,GAAG,EAAE,MAAM,CAAC;IACZ,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,yCAAyC;IACzC,eAAe,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,8BAA+B,SAAQ,gBAAgB;IACvE,UAAU,EAAE,cAAc,CAAC;CAC3B;AAED,qBAAa,UAAW,SAAQ,yBAAyB,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/E,cAEC;IAED,UAAmB,cAAc,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,CAErE;IAED,WAAW,CAAC,OAAO,EAAE,uBAAuB,GAAG,eAAe,CAG7D;IAED,IAAI,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAQ/C;IAEK,kBAAkB,CAAC,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,eAAe,CAAC,CAS1F;CACD;AAID,mCAAmC;AACnC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,eAAe,CAElF;AAED,gDAAgD;AAChD,wBAAgB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,eAAe,CAEpE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,8BAA8B,GAAG,OAAO,CAAC,eAAe,CAAC,CAEzG;AAED,mEAAmE;AACnE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,CAU1D"}
@@ -1 +1 @@
1
- {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/core/rules.ts"],"names":[],"mappings":"AACA,OAAO,EACN,mCAAmC,EAInC,yBAAyB,GACzB,MAAM,kCAAkC,CAAC;AA6B1C,MAAM,OAAO,UAAW,SAAQ,yBAAgD;IAC/E,cAAc;QACb,KAAK,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,oBAAoB,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;IAAA,CACzF;IAEkB,cAAc,CAAC,QAA6B,EAAQ;QACtE,OAAO,QAAQ,CAAC;IAAA,CAChB;IAED,WAAW,CAAC,OAAgC,EAAmB;QAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACtE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;IAAA,CACpE;IAED,IAAI,CAAC,OAAyB,EAAmB;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;YACjC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,aAAa,EAAE,OAAO,CAAC,SAAS;YAChC,eAAe,EAAE,OAAO,CAAC,eAAe;SACxC,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;IAAA,CACpE;IAED,KAAK,CAAC,kBAAkB,CAAC,OAAuC,EAA4B;QAC3F,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC;YACrD,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,aAAa,EAAE,OAAO,CAAC,SAAS;YAChC,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,UAAU,EAAE,OAAO,CAAC,UAAU;SAC9B,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;IAAA,CACpE;CACD;AAED,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;AAEpC,mCAAmC;AACnC,MAAM,UAAU,gBAAgB,CAAC,OAAgC,EAAmB;IACnF,OAAO,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAAA,CACvC;AAED,gDAAgD;AAChD,MAAM,UAAU,SAAS,CAAC,OAAyB,EAAmB;IACrE,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAAA,CAChC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAuC,EAA4B;IAC1G,OAAO,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAAA,CAC9C;AAED,mEAAmE;AACnE,MAAM,UAAU,oBAAoB,CAAC,KAAa,EAAU;IAC3D,OAAO,mCAAmC,CAAC,KAAK,EAAE;QACjD,KAAK,EAAE;YACN,iEAAiE;YACjE,uHAAuH;YACvH,4KAA4K;SAC5K;QACD,YAAY,EAAE,iBAAiB;QAC/B,OAAO,EAAE,MAAM;KACf,CAAC,CAAC;AAAA,CACH","sourcesContent":["import type { ResourceDiagnostic } from \"./diagnostics.ts\";\nimport {\n\tformatInstructionResourcesForPrompt,\n\ttype InstructionResource,\n\ttype InstructionResourceDirectoryOptions,\n\ttype InstructionResourceFrontmatter,\n\tInstructionResourceLoader,\n} from \"./instruction-resource-loader.ts\";\nimport type { ToolOperations } from \"./tools/operations.ts\";\n\nexport interface RuleFrontmatter extends InstructionResourceFrontmatter {}\n\nexport interface Rule extends InstructionResource {}\n\nexport interface LoadRulesResult {\n\trules: Rule[];\n\tdiagnostics: ResourceDiagnostic[];\n}\n\nexport type LoadRulesFromDirOptions = InstructionResourceDirectoryOptions;\n\nexport interface LoadRulesOptions {\n\t/** Working directory for project-local rules. */\n\tcwd: string;\n\t/** Agent config directory for global rules. */\n\tagentDir: string;\n\t/** Explicit rule paths (files or directories) */\n\trulePaths: string[];\n\t/** Include default rules directories. */\n\tincludeDefaults: boolean;\n}\n\nexport interface LoadRulesWithOperationsOptions extends LoadRulesOptions {\n\toperations: ToolOperations;\n}\n\nexport class RuleLoader extends InstructionResourceLoader<Rule, RuleFrontmatter> {\n\tconstructor() {\n\t\tsuper({ resourceType: \"rule\", defaultDirectoryName: \"rules\", rootFileName: \"RULES.md\" });\n\t}\n\n\tprotected override createResource(resource: InstructionResource): Rule {\n\t\treturn resource;\n\t}\n\n\tloadFromDir(options: LoadRulesFromDirOptions): LoadRulesResult {\n\t\tconst result = this.loadResourcesFromDir(options.dir, options.source);\n\t\treturn { rules: result.resources, diagnostics: result.diagnostics };\n\t}\n\n\tload(options: LoadRulesOptions): LoadRulesResult {\n\t\tconst result = this.loadResources({\n\t\t\tcwd: options.cwd,\n\t\t\tagentDir: options.agentDir,\n\t\t\tresourcePaths: options.rulePaths,\n\t\t\tincludeDefaults: options.includeDefaults,\n\t\t});\n\t\treturn { rules: result.resources, diagnostics: result.diagnostics };\n\t}\n\n\tasync loadWithOperations(options: LoadRulesWithOperationsOptions): Promise<LoadRulesResult> {\n\t\tconst result = await this.loadResourcesWithOperations({\n\t\t\tcwd: options.cwd,\n\t\t\tagentDir: options.agentDir,\n\t\t\tresourcePaths: options.rulePaths,\n\t\t\tincludeDefaults: options.includeDefaults,\n\t\t\toperations: options.operations,\n\t\t});\n\t\treturn { rules: result.resources, diagnostics: result.diagnostics };\n\t}\n}\n\nconst ruleLoader = new RuleLoader();\n\n/** Load rules from a directory. */\nexport function loadRulesFromDir(options: LoadRulesFromDirOptions): LoadRulesResult {\n\treturn ruleLoader.loadFromDir(options);\n}\n\n/** Load rules from all configured locations. */\nexport function loadRules(options: LoadRulesOptions): LoadRulesResult {\n\treturn ruleLoader.load(options);\n}\n\nexport function loadRulesWithOperations(options: LoadRulesWithOperationsOptions): Promise<LoadRulesResult> {\n\treturn ruleLoader.loadWithOperations(options);\n}\n\n/** Format model-visible rules for inclusion in a system prompt. */\nexport function formatRulesForPrompt(rules: Rule[]): string {\n\treturn formatInstructionResourcesForPrompt(rules, {\n\t\tintro: [\n\t\t\t\"The following rules provide mandatory constraints and policies.\",\n\t\t\t\"Use the read tool to load a rule's file when the task or files match its description; applicable rules are mandatory.\",\n\t\t\t\"When a rule file references a relative path, resolve it against the rule directory (parent of RULES.md / dirname of the path) and use that absolute path in tool commands.\",\n\t\t],\n\t\tcontainerTag: \"available_rules\",\n\t\titemTag: \"rule\",\n\t});\n}\n"]}
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/core/rules.ts"],"names":[],"mappings":"AACA,OAAO,EACN,mCAAmC,EAInC,yBAAyB,GACzB,MAAM,kCAAkC,CAAC;AA6B1C,MAAM,OAAO,UAAW,SAAQ,yBAAgD;IAC/E;QACC,KAAK,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,oBAAoB,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;IAC1F,CAAC;IAEkB,cAAc,CAAC,QAA6B;QAC9D,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,WAAW,CAAC,OAAgC;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACtE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;IACrE,CAAC;IAED,IAAI,CAAC,OAAyB;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;YACjC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,aAAa,EAAE,OAAO,CAAC,SAAS;YAChC,eAAe,EAAE,OAAO,CAAC,eAAe;SACxC,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,OAAuC;QAC/D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAAC;YACrD,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,aAAa,EAAE,OAAO,CAAC,SAAS;YAChC,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,UAAU,EAAE,OAAO,CAAC,UAAU;SAC9B,CAAC,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;IACrE,CAAC;CACD;AAED,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;AAEpC,mCAAmC;AACnC,MAAM,UAAU,gBAAgB,CAAC,OAAgC;IAChE,OAAO,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,SAAS,CAAC,OAAyB;IAClD,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAuC;IAC9E,OAAO,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,oBAAoB,CAAC,KAAa;IACjD,OAAO,mCAAmC,CAAC,KAAK,EAAE;QACjD,KAAK,EAAE;YACN,iEAAiE;YACjE,uHAAuH;YACvH,4KAA4K;SAC5K;QACD,YAAY,EAAE,iBAAiB;QAC/B,OAAO,EAAE,MAAM;KACf,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import type { ResourceDiagnostic } from \"./diagnostics.ts\";\nimport {\n\tformatInstructionResourcesForPrompt,\n\ttype InstructionResource,\n\ttype InstructionResourceDirectoryOptions,\n\ttype InstructionResourceFrontmatter,\n\tInstructionResourceLoader,\n} from \"./instruction-resource-loader.ts\";\nimport type { ToolOperations } from \"./tools/operations.ts\";\n\nexport interface RuleFrontmatter extends InstructionResourceFrontmatter {}\n\nexport interface Rule extends InstructionResource {}\n\nexport interface LoadRulesResult {\n\trules: Rule[];\n\tdiagnostics: ResourceDiagnostic[];\n}\n\nexport type LoadRulesFromDirOptions = InstructionResourceDirectoryOptions;\n\nexport interface LoadRulesOptions {\n\t/** Working directory for project-local rules. */\n\tcwd: string;\n\t/** Agent config directory for global rules. */\n\tagentDir: string;\n\t/** Explicit rule paths (files or directories) */\n\trulePaths: string[];\n\t/** Include default rules directories. */\n\tincludeDefaults: boolean;\n}\n\nexport interface LoadRulesWithOperationsOptions extends LoadRulesOptions {\n\toperations: ToolOperations;\n}\n\nexport class RuleLoader extends InstructionResourceLoader<Rule, RuleFrontmatter> {\n\tconstructor() {\n\t\tsuper({ resourceType: \"rule\", defaultDirectoryName: \"rules\", rootFileName: \"RULES.md\" });\n\t}\n\n\tprotected override createResource(resource: InstructionResource): Rule {\n\t\treturn resource;\n\t}\n\n\tloadFromDir(options: LoadRulesFromDirOptions): LoadRulesResult {\n\t\tconst result = this.loadResourcesFromDir(options.dir, options.source);\n\t\treturn { rules: result.resources, diagnostics: result.diagnostics };\n\t}\n\n\tload(options: LoadRulesOptions): LoadRulesResult {\n\t\tconst result = this.loadResources({\n\t\t\tcwd: options.cwd,\n\t\t\tagentDir: options.agentDir,\n\t\t\tresourcePaths: options.rulePaths,\n\t\t\tincludeDefaults: options.includeDefaults,\n\t\t});\n\t\treturn { rules: result.resources, diagnostics: result.diagnostics };\n\t}\n\n\tasync loadWithOperations(options: LoadRulesWithOperationsOptions): Promise<LoadRulesResult> {\n\t\tconst result = await this.loadResourcesWithOperations({\n\t\t\tcwd: options.cwd,\n\t\t\tagentDir: options.agentDir,\n\t\t\tresourcePaths: options.rulePaths,\n\t\t\tincludeDefaults: options.includeDefaults,\n\t\t\toperations: options.operations,\n\t\t});\n\t\treturn { rules: result.resources, diagnostics: result.diagnostics };\n\t}\n}\n\nconst ruleLoader = new RuleLoader();\n\n/** Load rules from a directory. */\nexport function loadRulesFromDir(options: LoadRulesFromDirOptions): LoadRulesResult {\n\treturn ruleLoader.loadFromDir(options);\n}\n\n/** Load rules from all configured locations. */\nexport function loadRules(options: LoadRulesOptions): LoadRulesResult {\n\treturn ruleLoader.load(options);\n}\n\nexport function loadRulesWithOperations(options: LoadRulesWithOperationsOptions): Promise<LoadRulesResult> {\n\treturn ruleLoader.loadWithOperations(options);\n}\n\n/** Format model-visible rules for inclusion in a system prompt. */\nexport function formatRulesForPrompt(rules: Rule[]): string {\n\treturn formatInstructionResourcesForPrompt(rules, {\n\t\tintro: [\n\t\t\t\"The following rules provide mandatory constraints and policies.\",\n\t\t\t\"Use the read tool to load a rule's file when the task or files match its description; applicable rules are mandatory.\",\n\t\t\t\"When a rule file references a relative path, resolve it against the rule directory (parent of RULES.md / dirname of the path) and use that absolute path in tool commands.\",\n\t\t],\n\t\tcontainerTag: \"available_rules\",\n\t\titemTag: \"rule\",\n\t});\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../src/core/sandbox/command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE3F,MAAM,WAAW,uBAAuB;IACvC,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,MAAM,kBAAkB,GAC3B;IAAE,UAAU,EAAE,QAAQ,CAAA;CAAE,GACxB;IAAE,UAAU,EAAE,OAAO,CAAA;CAAE,GACvB;IAAE,UAAU,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACrC,uBAAuB,GACvB;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GACtB;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AA+C3C,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,CA6BzE;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAO3E;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,gBAAgB,EAAE,GAAG,MAAM,CASxE;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAMzE","sourcesContent":["import type { SandboxContainer, SandboxStartResult, SandboxStopResult } from \"./config.ts\";\n\nexport interface SandboxStartUserCommand {\n\tsubcommand: \"start\";\n\tname?: string;\n\ttemplate?: string;\n\tupdate?: boolean;\n}\n\nexport type SandboxUserCommand =\n\t| { subcommand: \"status\" }\n\t| { subcommand: \"clear\" }\n\t| { subcommand: \"attach\"; url: string }\n\t| SandboxStartUserCommand\n\t| { subcommand: \"list\" }\n\t| { subcommand: \"stop\"; target?: string };\n\nfunction splitCommandLine(input: string): string[] {\n\tconst tokens = input.match(/(?:[^\\s\"']+|\"[^\"]*\"|'[^']*')+/g) ?? [];\n\treturn tokens.map((token) => {\n\t\tif ((token.startsWith('\"') && token.endsWith('\"')) || (token.startsWith(\"'\") && token.endsWith(\"'\"))) {\n\t\t\treturn token.slice(1, -1);\n\t\t}\n\t\treturn token;\n\t});\n}\n\nfunction parseSandboxStartValue(\n\toption: string | undefined,\n\tvalue: string | undefined,\n): Pick<SandboxStartUserCommand, \"name\" | \"template\"> {\n\tif (option !== \"--name\" && option !== \"--template\") {\n\t\tthrow new Error(`Unsupported /sandbox start argument: ${option}`);\n\t}\n\tif (!value || value.startsWith(\"--\")) {\n\t\tthrow new Error(\"Usage: /sandbox start [--name <lima-instance>] [--template <lima-template>] [--update]\");\n\t}\n\treturn option === \"--name\" ? { name: value } : { template: value };\n}\n\nfunction parseSandboxStartCommand(tokens: string[]): SandboxUserCommand {\n\tconst fields: Pick<SandboxStartUserCommand, \"name\" | \"template\"> = {};\n\tlet update = false;\n\tfor (let index = 2; index < tokens.length; index++) {\n\t\tconst option = tokens[index];\n\t\tif (option === \"--update\") {\n\t\t\tif (update) throw new Error(\"Duplicate /sandbox start --update\");\n\t\t\tupdate = true;\n\t\t\tcontinue;\n\t\t}\n\t\tObject.assign(fields, parseSandboxStartValue(option, tokens[++index]));\n\t}\n\tif (update && (!fields.name || fields.template)) {\n\t\tthrow new Error(\"/sandbox start --update requires --name and cannot be combined with --template\");\n\t}\n\treturn {\n\t\tsubcommand: \"start\",\n\t\t...fields,\n\t\t...(update ? { update: true } : {}),\n\t};\n}\n\nexport function parseSandboxUserCommand(input: string): SandboxUserCommand {\n\tconst tokens = splitCommandLine(input.trim());\n\tif (tokens[0] !== \"/sandbox\") throw new Error(\"Sandbox command must start with /sandbox\");\n\n\tconst subcommand = tokens[1];\n\tswitch (subcommand) {\n\t\tcase undefined:\n\t\tcase \"status\":\n\t\t\tif (tokens.length > 2) throw new Error(\"Usage: /sandbox status\");\n\t\t\treturn { subcommand: \"status\" };\n\t\tcase \"clear\":\n\t\t\tif (tokens.length > 2) throw new Error(\"Usage: /sandbox clear\");\n\t\t\treturn { subcommand: \"clear\" };\n\t\tcase \"--attach\":\n\t\t\tif (tokens.length !== 3) throw new Error(\"Usage: /sandbox --attach <ws://url>\");\n\t\t\treturn { subcommand: \"attach\", url: tokens[2]! };\n\t\tcase \"start\":\n\t\t\treturn parseSandboxStartCommand(tokens);\n\t\tcase \"list\":\n\t\t\tif (tokens.length !== 2) throw new Error(\"Usage: /sandbox list\");\n\t\t\treturn { subcommand: \"list\" };\n\t\tcase \"stop\":\n\t\t\tif (tokens.length > 3) throw new Error(\"Usage: /sandbox stop [vm]\");\n\t\t\treturn tokens[2] ? { subcommand: \"stop\", target: tokens[2] } : { subcommand: \"stop\" };\n\t\tdefault:\n\t\t\tthrow new Error(\n\t\t\t\t`Unsupported /sandbox subcommand: ${subcommand}. Use status, clear, --attach, start, list, or stop.`,\n\t\t\t);\n\t}\n}\n\nexport function formatSandboxStartResult(result: SandboxStartResult): string {\n\treturn [\n\t\t`Sandbox started: ${result.containerName} (${result.containerId})`,\n\t\t`Workspace: ${result.workspaceRoot} -> ${result.workspaceMountPath}`,\n\t\t`Daemon: ${result.daemonUrlRedacted}`,\n\t\t\"Sandbox mode active: workspace tools/resources now route through the sandbox daemon.\",\n\t].join(\"\\n\");\n}\n\nexport function formatSandboxList(containers: SandboxContainer[]): string {\n\tif (containers.length === 0) return \"No Grip sandboxes found for this workspace.\";\n\treturn containers\n\t\t.map((container) => {\n\t\t\tconst endpoint = container.daemonEndpoint ? ` daemon=${container.daemonEndpoint}` : \"\";\n\t\t\tconst mount = container.workspaceMountPath ? ` workspace=${container.workspaceMountPath}` : \"\";\n\t\t\treturn `${container.id}\\t${container.name}\\t${container.state ?? container.status}\\t${container.image}${mount}${endpoint}`;\n\t\t})\n\t\t.join(\"\\n\");\n}\n\nexport function formatSandboxStopResult(result: SandboxStopResult): string {\n\tif (result.status === \"not-found\") return result.message;\n\tif (result.status === \"already-stopped\")\n\t\treturn `Sandbox already stopped: ${result.container.name} (${result.container.id})`;\n\tif (result.status === \"removed\") return `Sandbox removed: ${result.container.name} (${result.container.id})`;\n\treturn `Sandbox stopped: ${result.container.name} (${result.container.id})`;\n}\n"]}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../src/core/sandbox/command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE3F,MAAM,WAAW,uBAAuB;IACvC,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,MAAM,kBAAkB,GAC3B;IAAE,UAAU,EAAE,QAAQ,CAAA;CAAE,GACxB;IAAE,UAAU,EAAE,OAAO,CAAA;CAAE,GACvB;IAAE,UAAU,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACrC,uBAAuB,GACvB;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GACtB;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AA+C3C,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,CA6BzE;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAO3E;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,gBAAgB,EAAE,GAAG,MAAM,CASxE;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAMzE"}