@code-yeongyu/senpi 2026.6.28-4 → 2026.6.30-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/README.md +2 -1
  3. package/dist/core/agent-session.d.ts +2 -0
  4. package/dist/core/agent-session.d.ts.map +1 -1
  5. package/dist/core/agent-session.js +54 -28
  6. package/dist/core/agent-session.js.map +1 -1
  7. package/dist/core/extensions/builtin/hooks/command-runner.d.ts +25 -0
  8. package/dist/core/extensions/builtin/hooks/command-runner.d.ts.map +1 -0
  9. package/dist/core/extensions/builtin/hooks/command-runner.js +152 -0
  10. package/dist/core/extensions/builtin/hooks/command-runner.js.map +1 -0
  11. package/dist/core/extensions/builtin/hooks/command.d.ts +11 -0
  12. package/dist/core/extensions/builtin/hooks/command.d.ts.map +1 -0
  13. package/dist/core/extensions/builtin/hooks/command.js +180 -0
  14. package/dist/core/extensions/builtin/hooks/command.js.map +1 -0
  15. package/dist/core/extensions/builtin/hooks/config-loader.d.ts +19 -0
  16. package/dist/core/extensions/builtin/hooks/config-loader.d.ts.map +1 -0
  17. package/dist/core/extensions/builtin/hooks/config-loader.js +125 -0
  18. package/dist/core/extensions/builtin/hooks/config-loader.js.map +1 -0
  19. package/dist/core/extensions/builtin/hooks/diagnostics.d.ts +10 -0
  20. package/dist/core/extensions/builtin/hooks/diagnostics.d.ts.map +1 -0
  21. package/dist/core/extensions/builtin/hooks/diagnostics.js +14 -0
  22. package/dist/core/extensions/builtin/hooks/diagnostics.js.map +1 -0
  23. package/dist/core/extensions/builtin/hooks/dispatcher.d.ts +60 -0
  24. package/dist/core/extensions/builtin/hooks/dispatcher.d.ts.map +1 -0
  25. package/dist/core/extensions/builtin/hooks/dispatcher.js +161 -0
  26. package/dist/core/extensions/builtin/hooks/dispatcher.js.map +1 -0
  27. package/dist/core/extensions/builtin/hooks/handler.d.ts +12 -0
  28. package/dist/core/extensions/builtin/hooks/handler.d.ts.map +1 -0
  29. package/dist/core/extensions/builtin/hooks/handler.js +128 -0
  30. package/dist/core/extensions/builtin/hooks/handler.js.map +1 -0
  31. package/dist/core/extensions/builtin/hooks/index.d.ts +6 -0
  32. package/dist/core/extensions/builtin/hooks/index.d.ts.map +1 -0
  33. package/dist/core/extensions/builtin/hooks/index.js +216 -0
  34. package/dist/core/extensions/builtin/hooks/index.js.map +1 -0
  35. package/dist/core/extensions/builtin/hooks/lifecycle-adapter.d.ts +29 -0
  36. package/dist/core/extensions/builtin/hooks/lifecycle-adapter.d.ts.map +1 -0
  37. package/dist/core/extensions/builtin/hooks/lifecycle-adapter.js +276 -0
  38. package/dist/core/extensions/builtin/hooks/lifecycle-adapter.js.map +1 -0
  39. package/dist/core/extensions/builtin/hooks/matcher.d.ts +7 -0
  40. package/dist/core/extensions/builtin/hooks/matcher.d.ts.map +1 -0
  41. package/dist/core/extensions/builtin/hooks/matcher.js +109 -0
  42. package/dist/core/extensions/builtin/hooks/matcher.js.map +1 -0
  43. package/dist/core/extensions/builtin/hooks/output-bounds.d.ts +29 -0
  44. package/dist/core/extensions/builtin/hooks/output-bounds.d.ts.map +1 -0
  45. package/dist/core/extensions/builtin/hooks/output-bounds.js +47 -0
  46. package/dist/core/extensions/builtin/hooks/output-bounds.js.map +1 -0
  47. package/dist/core/extensions/builtin/hooks/output-parser.d.ts +27 -0
  48. package/dist/core/extensions/builtin/hooks/output-parser.d.ts.map +1 -0
  49. package/dist/core/extensions/builtin/hooks/output-parser.js +168 -0
  50. package/dist/core/extensions/builtin/hooks/output-parser.js.map +1 -0
  51. package/dist/core/extensions/builtin/hooks/plugin-loader.d.ts +11 -0
  52. package/dist/core/extensions/builtin/hooks/plugin-loader.d.ts.map +1 -0
  53. package/dist/core/extensions/builtin/hooks/plugin-loader.js +138 -0
  54. package/dist/core/extensions/builtin/hooks/plugin-loader.js.map +1 -0
  55. package/dist/core/extensions/builtin/hooks/plugin-manifest.d.ts +47 -0
  56. package/dist/core/extensions/builtin/hooks/plugin-manifest.d.ts.map +1 -0
  57. package/dist/core/extensions/builtin/hooks/plugin-manifest.js +86 -0
  58. package/dist/core/extensions/builtin/hooks/plugin-manifest.js.map +1 -0
  59. package/dist/core/extensions/builtin/hooks/prompt-adapter.d.ts +30 -0
  60. package/dist/core/extensions/builtin/hooks/prompt-adapter.d.ts.map +1 -0
  61. package/dist/core/extensions/builtin/hooks/prompt-adapter.js +59 -0
  62. package/dist/core/extensions/builtin/hooks/prompt-adapter.js.map +1 -0
  63. package/dist/core/extensions/builtin/hooks/safety.d.ts +14 -0
  64. package/dist/core/extensions/builtin/hooks/safety.d.ts.map +1 -0
  65. package/dist/core/extensions/builtin/hooks/safety.js +179 -0
  66. package/dist/core/extensions/builtin/hooks/safety.js.map +1 -0
  67. package/dist/core/extensions/builtin/hooks/schema.d.ts +3 -0
  68. package/dist/core/extensions/builtin/hooks/schema.d.ts.map +1 -0
  69. package/dist/core/extensions/builtin/hooks/schema.js +94 -0
  70. package/dist/core/extensions/builtin/hooks/schema.js.map +1 -0
  71. package/dist/core/extensions/builtin/hooks/stop-adapter.d.ts +18 -0
  72. package/dist/core/extensions/builtin/hooks/stop-adapter.d.ts.map +1 -0
  73. package/dist/core/extensions/builtin/hooks/stop-adapter.js +282 -0
  74. package/dist/core/extensions/builtin/hooks/stop-adapter.js.map +1 -0
  75. package/dist/core/extensions/builtin/hooks/tool-adapter.d.ts +11 -0
  76. package/dist/core/extensions/builtin/hooks/tool-adapter.d.ts.map +1 -0
  77. package/dist/core/extensions/builtin/hooks/tool-adapter.js +158 -0
  78. package/dist/core/extensions/builtin/hooks/tool-adapter.js.map +1 -0
  79. package/dist/core/extensions/builtin/hooks/trust-storage.d.ts +24 -0
  80. package/dist/core/extensions/builtin/hooks/trust-storage.d.ts.map +1 -0
  81. package/dist/core/extensions/builtin/hooks/trust-storage.js +102 -0
  82. package/dist/core/extensions/builtin/hooks/trust-storage.js.map +1 -0
  83. package/dist/core/extensions/builtin/hooks/trust.d.ts +34 -0
  84. package/dist/core/extensions/builtin/hooks/trust.d.ts.map +1 -0
  85. package/dist/core/extensions/builtin/hooks/trust.js +194 -0
  86. package/dist/core/extensions/builtin/hooks/trust.js.map +1 -0
  87. package/dist/core/extensions/builtin/hooks/types.d.ts +134 -0
  88. package/dist/core/extensions/builtin/hooks/types.d.ts.map +1 -0
  89. package/dist/core/extensions/builtin/hooks/types.js +36 -0
  90. package/dist/core/extensions/builtin/hooks/types.js.map +1 -0
  91. package/dist/core/extensions/builtin/index.d.ts.map +1 -1
  92. package/dist/core/extensions/builtin/index.js +2 -0
  93. package/dist/core/extensions/builtin/index.js.map +1 -1
  94. package/dist/core/extensions/index.d.ts +1 -1
  95. package/dist/core/extensions/index.d.ts.map +1 -1
  96. package/dist/core/extensions/index.js.map +1 -1
  97. package/dist/core/extensions/runner.d.ts +5 -0
  98. package/dist/core/extensions/runner.d.ts.map +1 -1
  99. package/dist/core/extensions/runner.js +20 -1
  100. package/dist/core/extensions/runner.js.map +1 -1
  101. package/dist/core/extensions/types.d.ts +25 -1
  102. package/dist/core/extensions/types.d.ts.map +1 -1
  103. package/dist/core/extensions/types.js.map +1 -1
  104. package/dist/core/http-dispatcher.d.ts.map +1 -1
  105. package/dist/core/http-dispatcher.js +28 -1
  106. package/dist/core/http-dispatcher.js.map +1 -1
  107. package/dist/core/package-manager.d.ts +1 -0
  108. package/dist/core/package-manager.d.ts.map +1 -1
  109. package/dist/core/package-manager.js +14 -1
  110. package/dist/core/package-manager.js.map +1 -1
  111. package/dist/core/resource-loader.d.ts +14 -1
  112. package/dist/core/resource-loader.d.ts.map +1 -1
  113. package/dist/core/resource-loader.js +38 -0
  114. package/dist/core/resource-loader.js.map +1 -1
  115. package/dist/core/settings-manager.d.ts +5 -0
  116. package/dist/core/settings-manager.d.ts.map +1 -1
  117. package/dist/core/settings-manager.js +8 -0
  118. package/dist/core/settings-manager.js.map +1 -1
  119. package/dist/index.d.ts +2 -2
  120. package/dist/index.d.ts.map +1 -1
  121. package/dist/index.js.map +1 -1
  122. package/dist/modes/interactive/components/assistant-message.d.ts +3 -1
  123. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  124. package/dist/modes/interactive/components/assistant-message.js +15 -7
  125. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  126. package/dist/modes/interactive/components/settings-selector.d.ts +2 -0
  127. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  128. package/dist/modes/interactive/components/settings-selector.js +13 -1
  129. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  130. package/dist/modes/interactive/components/status-indicator.d.ts +27 -0
  131. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -0
  132. package/dist/modes/interactive/components/status-indicator.js +64 -0
  133. package/dist/modes/interactive/components/status-indicator.js.map +1 -0
  134. package/dist/modes/interactive/components/user-message.d.ts +6 -2
  135. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  136. package/dist/modes/interactive/components/user-message.js +15 -4
  137. package/dist/modes/interactive/components/user-message.js.map +1 -1
  138. package/dist/modes/interactive/interactive-mode.d.ts +9 -12
  139. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  140. package/dist/modes/interactive/interactive-mode.js +123 -125
  141. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  142. package/dist/modes/rpc/rpc-client.d.ts +15 -0
  143. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  144. package/dist/modes/rpc/rpc-client.js +14 -0
  145. package/dist/modes/rpc/rpc-client.js.map +1 -1
  146. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  147. package/dist/modes/rpc/rpc-mode.js +16 -0
  148. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  149. package/dist/modes/rpc/rpc-types.d.ts +26 -0
  150. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  151. package/dist/modes/rpc/rpc-types.js.map +1 -1
  152. package/dist/utils/version-check.d.ts +1 -0
  153. package/dist/utils/version-check.d.ts.map +1 -1
  154. package/dist/utils/version-check.js +7 -0
  155. package/dist/utils/version-check.js.map +1 -1
  156. package/docs/extensions.md +464 -0
  157. package/docs/index.md +1 -1
  158. package/docs/packages.md +9 -6
  159. package/docs/rpc.md +58 -0
  160. package/docs/settings.md +1 -0
  161. package/examples/extensions/README.md +1 -0
  162. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  163. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  164. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  165. package/examples/extensions/gondolin/package-lock.json +2 -2
  166. package/examples/extensions/gondolin/package.json +1 -1
  167. package/examples/extensions/sandbox/package-lock.json +2 -2
  168. package/examples/extensions/sandbox/package.json +1 -1
  169. package/examples/extensions/with-deps/package-lock.json +2 -2
  170. package/examples/extensions/with-deps/package.json +1 -1
  171. package/node_modules/@earendil-works/pi-agent-core/dist/agent.d.ts +3 -1
  172. package/node_modules/@earendil-works/pi-agent-core/dist/agent.d.ts.map +1 -1
  173. package/node_modules/@earendil-works/pi-agent-core/dist/agent.js +9 -1
  174. package/node_modules/@earendil-works/pi-agent-core/dist/agent.js.map +1 -1
  175. package/node_modules/@earendil-works/pi-agent-core/package.json +2 -2
  176. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.d.ts.map +1 -1
  177. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js +2 -14
  178. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js.map +1 -1
  179. package/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.d.ts.map +1 -1
  180. package/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.js +12 -4
  181. package/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.js.map +1 -1
  182. package/node_modules/@earendil-works/pi-ai/dist/api/google-generative-ai.d.ts.map +1 -1
  183. package/node_modules/@earendil-works/pi-ai/dist/api/google-generative-ai.js +2 -1
  184. package/node_modules/@earendil-works/pi-ai/dist/api/google-generative-ai.js.map +1 -1
  185. package/node_modules/@earendil-works/pi-ai/dist/api/google-vertex.d.ts.map +1 -1
  186. package/node_modules/@earendil-works/pi-ai/dist/api/google-vertex.js +2 -1
  187. package/node_modules/@earendil-works/pi-ai/dist/api/google-vertex.js.map +1 -1
  188. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.d.ts.map +1 -1
  189. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js +10 -24
  190. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js.map +1 -1
  191. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.d.ts.map +1 -1
  192. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js +8 -3
  193. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js.map +1 -1
  194. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.d.ts.map +1 -1
  195. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js +2 -14
  196. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js.map +1 -1
  197. package/node_modules/@earendil-works/pi-ai/dist/api/openrouter-images.d.ts.map +1 -1
  198. package/node_modules/@earendil-works/pi-ai/dist/api/openrouter-images.js +2 -1
  199. package/node_modules/@earendil-works/pi-ai/dist/api/openrouter-images.js.map +1 -1
  200. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts +15 -45
  201. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts.map +1 -1
  202. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js +15 -45
  203. package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js.map +1 -1
  204. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +167 -32
  205. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts.map +1 -1
  206. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.models.d.ts +119 -0
  207. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.models.d.ts.map +1 -1
  208. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.models.js +119 -0
  209. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.models.js.map +1 -1
  210. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.models.d.ts +20 -0
  211. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.models.d.ts.map +1 -1
  212. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.models.js +18 -0
  213. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.models.js.map +1 -1
  214. package/node_modules/@earendil-works/pi-ai/dist/providers/groq.models.js +1 -1
  215. package/node_modules/@earendil-works/pi-ai/dist/providers/groq.models.js.map +1 -1
  216. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-go.models.js +3 -3
  217. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-go.models.js.map +1 -1
  218. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.models.d.ts +8 -32
  219. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.models.d.ts.map +1 -1
  220. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.models.js +46 -65
  221. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.models.js.map +1 -1
  222. package/node_modules/@earendil-works/pi-ai/dist/providers/vercel-ai-gateway.models.d.ts +20 -0
  223. package/node_modules/@earendil-works/pi-ai/dist/providers/vercel-ai-gateway.models.d.ts.map +1 -1
  224. package/node_modules/@earendil-works/pi-ai/dist/providers/vercel-ai-gateway.models.js +18 -0
  225. package/node_modules/@earendil-works/pi-ai/dist/providers/vercel-ai-gateway.models.js.map +1 -1
  226. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-ams.models.js +12 -12
  227. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-ams.models.js.map +1 -1
  228. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-cn.models.js +12 -12
  229. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-cn.models.js.map +1 -1
  230. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-sgp.models.js +12 -12
  231. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi-token-plan-sgp.models.js.map +1 -1
  232. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi.models.js +15 -15
  233. package/node_modules/@earendil-works/pi-ai/dist/providers/xiaomi.models.js.map +1 -1
  234. package/node_modules/@earendil-works/pi-ai/dist/utils/error-body.d.ts +25 -0
  235. package/node_modules/@earendil-works/pi-ai/dist/utils/error-body.d.ts.map +1 -0
  236. package/node_modules/@earendil-works/pi-ai/dist/utils/error-body.js +109 -0
  237. package/node_modules/@earendil-works/pi-ai/dist/utils/error-body.js.map +1 -0
  238. package/node_modules/@earendil-works/pi-ai/package.json +1 -1
  239. package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts.map +1 -1
  240. package/node_modules/@earendil-works/pi-tui/dist/tui.js +3 -0
  241. package/node_modules/@earendil-works/pi-tui/dist/tui.js.map +1 -1
  242. package/node_modules/@earendil-works/pi-tui/package.json +1 -1
  243. package/npm-shrinkwrap.json +9 -9
  244. package/package.json +4 -4
@@ -2,7 +2,7 @@ import { type Theme } from "../modes/interactive/theme/theme.ts";
2
2
  import type { ResourceDiagnostic } from "./diagnostics.ts";
3
3
  export type { ResourceCollision, ResourceDiagnostic } from "./diagnostics.ts";
4
4
  import { type EventBus } from "./event-bus.ts";
5
- import type { ExtensionFactory, LoadExtensionsResult } from "./extensions/types.ts";
5
+ import type { ExtensionFactory, LoadExtensionsResult, LoadedHookSources } from "./extensions/types.ts";
6
6
  import { type PathMetadata } from "./package-manager.ts";
7
7
  import type { PromptTemplate } from "./prompt-templates.ts";
8
8
  import { SettingsManager } from "./settings-manager.ts";
@@ -20,6 +20,10 @@ export interface ResourceExtensionPaths {
20
20
  path: string;
21
21
  metadata: PathMetadata;
22
22
  }>;
23
+ hookPaths?: Array<{
24
+ path: string;
25
+ metadata: PathMetadata;
26
+ }>;
23
27
  }
24
28
  export interface ResourceLoaderReloadOptions {
25
29
  resolveProjectTrust?: (input: {
@@ -48,6 +52,7 @@ export interface ResourceLoader {
48
52
  };
49
53
  getSystemPrompt(): string | undefined;
50
54
  getAppendSystemPrompt(): string[];
55
+ getLoadedHookSources?(): LoadedHookSources;
51
56
  extendResources(paths: ResourceExtensionPaths): void;
52
57
  reload(options?: ResourceLoaderReloadOptions): Promise<void>;
53
58
  }
@@ -67,6 +72,7 @@ export interface DefaultResourceLoaderOptions {
67
72
  additionalSkillPaths?: string[];
68
73
  additionalPromptTemplatePaths?: string[];
69
74
  additionalThemePaths?: string[];
75
+ additionalHookPaths?: string[];
70
76
  extensionFactories?: ExtensionFactory[];
71
77
  noExtensions?: boolean;
72
78
  noSkills?: boolean;
@@ -117,6 +123,7 @@ export declare class DefaultResourceLoader implements ResourceLoader {
117
123
  private additionalSkillPaths;
118
124
  private additionalPromptTemplatePaths;
119
125
  private additionalThemePaths;
126
+ private additionalHookPaths;
120
127
  private builtinExtensionFactories;
121
128
  private extensionFactories;
122
129
  private noExtensions;
@@ -143,6 +150,10 @@ export declare class DefaultResourceLoader implements ResourceLoader {
143
150
  private extensionThemeSourceInfos;
144
151
  private lastPromptPaths;
145
152
  private lastThemePaths;
153
+ private globalHookSourcePaths;
154
+ private projectHookSourcePaths;
155
+ private preSessionHookSourcePaths;
156
+ private loadedHookSources;
146
157
  private loaded;
147
158
  constructor(options: DefaultResourceLoaderOptions);
148
159
  getExtensions(): LoadExtensionsResult;
@@ -166,6 +177,7 @@ export declare class DefaultResourceLoader implements ResourceLoader {
166
177
  };
167
178
  getSystemPrompt(): string | undefined;
168
179
  getAppendSystemPrompt(): string[];
180
+ getLoadedHookSources(): LoadedHookSources;
169
181
  extendResources(paths: ResourceExtensionPaths): void;
170
182
  loadProjectTrustExtensions(): Promise<LoadExtensionsResult>;
171
183
  reload(options?: ResourceLoaderReloadOptions): Promise<void>;
@@ -177,6 +189,7 @@ export declare class DefaultResourceLoader implements ResourceLoader {
177
189
  private addExtensionConflictDiagnostics;
178
190
  private mapSkillPath;
179
191
  private normalizeExtensionPaths;
192
+ private buildLoadedHookSources;
180
193
  private updateSkillsFromPaths;
181
194
  private updatePromptsFromPaths;
182
195
  private updateThemesFromPaths;
@@ -1 +1 @@
1
- {"version":3,"file":"resource-loader.d.ts","sourceRoot":"","sources":["../../src/core/resource-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource-loader.d.ts","sourceRoot":"","sources":["../../src/core/resource-loader.ts"],"names":[],"mappings":"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"}
@@ -136,6 +136,7 @@ export class DefaultResourceLoader {
136
136
  this.additionalSkillPaths = options.additionalSkillPaths ?? [];
137
137
  this.additionalPromptTemplatePaths = options.additionalPromptTemplatePaths ?? [];
138
138
  this.additionalThemePaths = options.additionalThemePaths ?? [];
139
+ this.additionalHookPaths = options.additionalHookPaths ?? [];
139
140
  this.builtinExtensionFactories = builtinExtensions;
140
141
  this.extensionFactories = options.extensionFactories ?? [];
141
142
  this.noExtensions = options.noExtensions ?? false;
@@ -162,6 +163,10 @@ export class DefaultResourceLoader {
162
163
  this.extensionThemeSourceInfos = new Map();
163
164
  this.lastPromptPaths = [];
164
165
  this.lastThemePaths = [];
166
+ this.globalHookSourcePaths = [];
167
+ this.projectHookSourcePaths = [];
168
+ this.preSessionHookSourcePaths = [];
169
+ this.loadedHookSources = this.buildLoadedHookSources([]);
165
170
  this.loaded = false;
166
171
  }
167
172
  getExtensions() {
@@ -185,10 +190,14 @@ export class DefaultResourceLoader {
185
190
  getAppendSystemPrompt() {
186
191
  return [];
187
192
  }
193
+ getLoadedHookSources() {
194
+ return this.loadedHookSources;
195
+ }
188
196
  extendResources(paths) {
189
197
  const skillPaths = this.normalizeExtensionPaths(paths.skillPaths ?? []);
190
198
  const promptPaths = this.normalizeExtensionPaths(paths.promptPaths ?? []);
191
199
  const themePaths = this.normalizeExtensionPaths(paths.themePaths ?? []);
200
+ const hookPaths = this.normalizeExtensionPaths(paths.hookPaths ?? []);
192
201
  for (const entry of skillPaths) {
193
202
  this.extensionSkillSourceInfos.set(entry.path, createSourceInfo(entry.path, entry.metadata));
194
203
  }
@@ -210,6 +219,10 @@ export class DefaultResourceLoader {
210
219
  this.lastThemePaths = this.mergePaths(this.lastThemePaths, themePaths.map((entry) => entry.path));
211
220
  this.updateThemesFromPaths(this.lastThemePaths);
212
221
  }
222
+ if (hookPaths.length > 0) {
223
+ const runtimeHookSourcePaths = this.mergePaths([...this.loadedHookSources.runtimeHookSourcePaths], hookPaths.map((entry) => entry.path));
224
+ this.loadedHookSources = this.buildLoadedHookSources(runtimeHookSourcePaths);
225
+ }
213
226
  }
214
227
  async loadProjectTrustExtensions() {
215
228
  // Force untrusted project settings for the bootstrap pass. This keeps project-local
@@ -254,6 +267,7 @@ export class DefaultResourceLoader {
254
267
  const enabledSkillResources = getEnabledResources(resolvedPaths.skills);
255
268
  const enabledPrompts = getEnabledPaths(resolvedPaths.prompts);
256
269
  const enabledThemes = getEnabledPaths(resolvedPaths.themes);
270
+ const enabledHookResources = getEnabledResources(resolvedPaths.hooks);
257
271
  const enabledSkills = enabledSkillResources.map((resource) => this.mapSkillPath(resource, metadataByPath));
258
272
  // Add CLI paths metadata. Explicit -e/-s resources must keep CLI precedence
259
273
  // even when they resolve through a package manifest.
@@ -269,10 +283,22 @@ export class DefaultResourceLoader {
269
283
  for (const r of cliExtensionPaths.themes) {
270
284
  metadataByPath.set(r.path, { source: "cli", scope: "temporary", origin: "top-level" });
271
285
  }
286
+ for (const r of cliExtensionPaths.hooks) {
287
+ metadataByPath.set(r.path, { source: "cli", scope: "temporary", origin: "top-level" });
288
+ }
272
289
  const cliEnabledExtensions = getEnabledPaths(cliExtensionPaths.extensions);
273
290
  const cliEnabledSkills = getEnabledPaths(cliExtensionPaths.skills);
274
291
  const cliEnabledPrompts = getEnabledPaths(cliExtensionPaths.prompts);
275
292
  const cliEnabledThemes = getEnabledPaths(cliExtensionPaths.themes);
293
+ const cliEnabledHooks = getEnabledPaths(cliExtensionPaths.hooks);
294
+ this.globalHookSourcePaths = enabledHookResources
295
+ .filter((resource) => resource.metadata.scope === "user")
296
+ .map((resource) => resource.path);
297
+ this.projectHookSourcePaths = enabledHookResources
298
+ .filter((resource) => resource.metadata.scope === "project")
299
+ .map((resource) => resource.path);
300
+ this.preSessionHookSourcePaths = this.mergePaths(cliEnabledHooks, this.additionalHookPaths);
301
+ this.loadedHookSources = this.buildLoadedHookSources([...this.loadedHookSources.runtimeHookSourcePaths]);
276
302
  const extensionPaths = this.noExtensions
277
303
  ? cliEnabledExtensions
278
304
  : this.mergePaths(cliEnabledExtensions, enabledExtensions);
@@ -470,6 +496,18 @@ export class DefaultResourceLoader {
470
496
  };
471
497
  });
472
498
  }
499
+ buildLoadedHookSources(runtimeHookSourcePaths) {
500
+ return {
501
+ agentDir: this.agentDir,
502
+ cwd: this.cwd,
503
+ globalHookSourcePaths: this.globalHookSourcePaths.map((path) => this.resolveResourcePath(path)),
504
+ globalHooksPath: this.resolveResourcePath(join(this.agentDir, "hooks.json")),
505
+ preSessionHookSourcePaths: this.preSessionHookSourcePaths.map((path) => this.resolveResourcePath(path)),
506
+ projectHookSourcePaths: this.projectHookSourcePaths.map((path) => this.resolveResourcePath(path)),
507
+ projectHooksPath: this.resolveResourcePath(join(this.cwd, CONFIG_DIR_NAME, "hooks.json")),
508
+ runtimeHookSourcePaths: runtimeHookSourcePaths.map((path) => this.resolveResourcePath(path)),
509
+ };
510
+ }
473
511
  updateSkillsFromPaths(skillPaths, metadataByPath) {
474
512
  let skillsResult;
475
513
  if (this.noSkills && skillPaths.length === 0) {