@gencode/agents 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (353) hide show
  1. package/dist/bootstrap/bootstrap-layout.d.ts +23 -0
  2. package/dist/bootstrap/bootstrap-layout.d.ts.map +1 -0
  3. package/dist/bootstrap/bootstrap-layout.js +151 -0
  4. package/dist/bootstrap/bootstrap-layout.js.map +1 -0
  5. package/dist/bootstrap/bootstrap.d.ts +36 -0
  6. package/dist/bootstrap/bootstrap.d.ts.map +1 -0
  7. package/dist/bootstrap/bootstrap.js +136 -0
  8. package/dist/bootstrap/bootstrap.js.map +1 -0
  9. package/dist/bootstrap/templates/AGENTS_MD.d.ts +2 -0
  10. package/dist/bootstrap/templates/AGENTS_MD.d.ts.map +1 -0
  11. package/dist/bootstrap/templates/AGENTS_MD.js +223 -0
  12. package/dist/bootstrap/templates/AGENTS_MD.js.map +1 -0
  13. package/dist/bootstrap/templates/BOOTSTRAP_MD.d.ts +2 -0
  14. package/dist/bootstrap/templates/BOOTSTRAP_MD.d.ts.map +1 -0
  15. package/dist/bootstrap/templates/BOOTSTRAP_MD.js +66 -0
  16. package/dist/bootstrap/templates/BOOTSTRAP_MD.js.map +1 -0
  17. package/dist/bootstrap/templates/HEARTBEAT_MD.d.ts +2 -0
  18. package/dist/bootstrap/templates/HEARTBEAT_MD.d.ts.map +1 -0
  19. package/dist/bootstrap/templates/HEARTBEAT_MD.js +16 -0
  20. package/dist/bootstrap/templates/HEARTBEAT_MD.js.map +1 -0
  21. package/dist/bootstrap/templates/IDENTITY_MD.d.ts +2 -0
  22. package/dist/bootstrap/templates/IDENTITY_MD.d.ts.map +1 -0
  23. package/dist/bootstrap/templates/IDENTITY_MD.js +31 -0
  24. package/dist/bootstrap/templates/IDENTITY_MD.js.map +1 -0
  25. package/dist/bootstrap/templates/SOUL_MD.d.ts +2 -0
  26. package/dist/bootstrap/templates/SOUL_MD.d.ts.map +1 -0
  27. package/dist/bootstrap/templates/SOUL_MD.js +47 -0
  28. package/dist/bootstrap/templates/SOUL_MD.js.map +1 -0
  29. package/dist/bootstrap/templates/TOOLS_MD.d.ts +2 -0
  30. package/dist/bootstrap/templates/TOOLS_MD.d.ts.map +1 -0
  31. package/dist/bootstrap/templates/TOOLS_MD.js +51 -0
  32. package/dist/bootstrap/templates/TOOLS_MD.js.map +1 -0
  33. package/dist/bootstrap/templates/USER_MD.d.ts +2 -0
  34. package/dist/bootstrap/templates/USER_MD.d.ts.map +1 -0
  35. package/dist/bootstrap/templates/USER_MD.js +27 -0
  36. package/dist/bootstrap/templates/USER_MD.js.map +1 -0
  37. package/dist/bootstrap/templates/index.d.ts +3 -0
  38. package/dist/bootstrap/templates/index.d.ts.map +1 -0
  39. package/dist/bootstrap/templates/index.js +26 -0
  40. package/dist/bootstrap/templates/index.js.map +1 -0
  41. package/dist/commands/compact.d.ts +28 -0
  42. package/dist/commands/compact.d.ts.map +1 -0
  43. package/dist/commands/compact.js +57 -0
  44. package/dist/commands/compact.js.map +1 -0
  45. package/dist/commands/help.d.ts +3 -0
  46. package/dist/commands/help.d.ts.map +1 -0
  47. package/dist/commands/help.js +50 -0
  48. package/dist/commands/help.js.map +1 -0
  49. package/dist/commands/index.d.ts +6 -0
  50. package/dist/commands/index.d.ts.map +1 -0
  51. package/dist/commands/index.js +32 -0
  52. package/dist/commands/index.js.map +1 -0
  53. package/dist/commands/new.d.ts +3 -0
  54. package/dist/commands/new.d.ts.map +1 -0
  55. package/dist/commands/new.js +4 -0
  56. package/dist/commands/new.js.map +1 -0
  57. package/dist/commands/registry.d.ts +11 -0
  58. package/dist/commands/registry.d.ts.map +1 -0
  59. package/dist/commands/registry.js +122 -0
  60. package/dist/commands/registry.js.map +1 -0
  61. package/dist/commands/reset.d.ts +3 -0
  62. package/dist/commands/reset.d.ts.map +1 -0
  63. package/dist/commands/reset.js +4 -0
  64. package/dist/commands/reset.js.map +1 -0
  65. package/dist/commands/skill.d.ts +7 -0
  66. package/dist/commands/skill.d.ts.map +1 -0
  67. package/dist/commands/skill.js +23 -0
  68. package/dist/commands/skill.js.map +1 -0
  69. package/dist/commands/types.d.ts +57 -0
  70. package/dist/commands/types.d.ts.map +1 -0
  71. package/dist/commands/types.js +2 -0
  72. package/dist/commands/types.js.map +1 -0
  73. package/dist/config/agents-config.d.ts +85 -0
  74. package/dist/config/agents-config.d.ts.map +1 -0
  75. package/dist/config/agents-config.js +257 -0
  76. package/dist/config/agents-config.js.map +1 -0
  77. package/dist/config/index.d.ts +9 -0
  78. package/dist/config/index.d.ts.map +1 -0
  79. package/dist/config/index.js +9 -0
  80. package/dist/config/index.js.map +1 -0
  81. package/dist/config/types.d.ts +87 -0
  82. package/dist/config/types.d.ts.map +1 -0
  83. package/dist/config/types.js +6 -0
  84. package/dist/config/types.js.map +1 -0
  85. package/dist/history/compaction.d.ts +42 -0
  86. package/dist/history/compaction.d.ts.map +1 -0
  87. package/dist/history/compaction.js +135 -0
  88. package/dist/history/compaction.js.map +1 -0
  89. package/dist/history/index.d.ts +57 -0
  90. package/dist/history/index.d.ts.map +1 -0
  91. package/dist/history/index.js +145 -0
  92. package/dist/history/index.js.map +1 -0
  93. package/dist/history/limit.d.ts +13 -0
  94. package/dist/history/limit.d.ts.map +1 -0
  95. package/dist/history/limit.js +32 -0
  96. package/dist/history/limit.js.map +1 -0
  97. package/dist/history/repair.d.ts +13 -0
  98. package/dist/history/repair.d.ts.map +1 -0
  99. package/dist/history/repair.js +25 -0
  100. package/dist/history/repair.js.map +1 -0
  101. package/dist/history/token-estimate.d.ts +22 -0
  102. package/dist/history/token-estimate.d.ts.map +1 -0
  103. package/dist/history/token-estimate.js +38 -0
  104. package/dist/history/token-estimate.js.map +1 -0
  105. package/dist/index.d.ts +41 -0
  106. package/dist/index.d.ts.map +1 -0
  107. package/dist/index.js +35 -0
  108. package/dist/index.js.map +1 -0
  109. package/dist/llm/client.d.ts +53 -0
  110. package/dist/llm/client.d.ts.map +1 -0
  111. package/dist/llm/client.js +214 -0
  112. package/dist/llm/client.js.map +1 -0
  113. package/dist/llm/openai-completions-compat.d.ts +23 -0
  114. package/dist/llm/openai-completions-compat.d.ts.map +1 -0
  115. package/dist/llm/openai-completions-compat.js +602 -0
  116. package/dist/llm/openai-completions-compat.js.map +1 -0
  117. package/dist/llm/openai-stream-error.d.ts +11 -0
  118. package/dist/llm/openai-stream-error.d.ts.map +1 -0
  119. package/dist/llm/openai-stream-error.js +77 -0
  120. package/dist/llm/openai-stream-error.js.map +1 -0
  121. package/dist/loop-detection/session-state.d.ts +5 -0
  122. package/dist/loop-detection/session-state.d.ts.map +1 -0
  123. package/dist/loop-detection/session-state.js +16 -0
  124. package/dist/loop-detection/session-state.js.map +1 -0
  125. package/dist/loop-detection/tool-loop-detection.d.ts +122 -0
  126. package/dist/loop-detection/tool-loop-detection.d.ts.map +1 -0
  127. package/dist/loop-detection/tool-loop-detection.js +516 -0
  128. package/dist/loop-detection/tool-loop-detection.js.map +1 -0
  129. package/dist/memory/builtin-provider.d.ts +5 -0
  130. package/dist/memory/builtin-provider.d.ts.map +1 -0
  131. package/dist/memory/builtin-provider.js +42 -0
  132. package/dist/memory/builtin-provider.js.map +1 -0
  133. package/dist/memory/config.d.ts +50 -0
  134. package/dist/memory/config.d.ts.map +1 -0
  135. package/dist/memory/config.js +46 -0
  136. package/dist/memory/config.js.map +1 -0
  137. package/dist/memory/embedding-registry.d.ts +37 -0
  138. package/dist/memory/embedding-registry.d.ts.map +1 -0
  139. package/dist/memory/embedding-registry.js +56 -0
  140. package/dist/memory/embedding-registry.js.map +1 -0
  141. package/dist/memory/embeddings.d.ts +11 -0
  142. package/dist/memory/embeddings.d.ts.map +1 -0
  143. package/dist/memory/embeddings.js +40 -0
  144. package/dist/memory/embeddings.js.map +1 -0
  145. package/dist/memory/fs-utils.d.ts +12 -0
  146. package/dist/memory/fs-utils.d.ts.map +1 -0
  147. package/dist/memory/fs-utils.js +24 -0
  148. package/dist/memory/fs-utils.js.map +1 -0
  149. package/dist/memory/hybrid.d.ts +43 -0
  150. package/dist/memory/hybrid.d.ts.map +1 -0
  151. package/dist/memory/hybrid.js +80 -0
  152. package/dist/memory/hybrid.js.map +1 -0
  153. package/dist/memory/internal.d.ts +28 -0
  154. package/dist/memory/internal.d.ts.map +1 -0
  155. package/dist/memory/internal.js +270 -0
  156. package/dist/memory/internal.js.map +1 -0
  157. package/dist/memory/manager-search.d.ts +61 -0
  158. package/dist/memory/manager-search.d.ts.map +1 -0
  159. package/dist/memory/manager-search.js +106 -0
  160. package/dist/memory/manager-search.js.map +1 -0
  161. package/dist/memory/manager.d.ts +126 -0
  162. package/dist/memory/manager.d.ts.map +1 -0
  163. package/dist/memory/manager.js +1006 -0
  164. package/dist/memory/manager.js.map +1 -0
  165. package/dist/memory/memory-schema.d.ts +11 -0
  166. package/dist/memory/memory-schema.d.ts.map +1 -0
  167. package/dist/memory/memory-schema.js +78 -0
  168. package/dist/memory/memory-schema.js.map +1 -0
  169. package/dist/memory/memory.d.ts +46 -0
  170. package/dist/memory/memory.d.ts.map +1 -0
  171. package/dist/memory/memory.js +127 -0
  172. package/dist/memory/memory.js.map +1 -0
  173. package/dist/memory/mmr.d.ts +22 -0
  174. package/dist/memory/mmr.d.ts.map +1 -0
  175. package/dist/memory/mmr.js +112 -0
  176. package/dist/memory/mmr.js.map +1 -0
  177. package/dist/memory/provider-registry.d.ts +29 -0
  178. package/dist/memory/provider-registry.d.ts.map +1 -0
  179. package/dist/memory/provider-registry.js +58 -0
  180. package/dist/memory/provider-registry.js.map +1 -0
  181. package/dist/memory/provider.d.ts +40 -0
  182. package/dist/memory/provider.d.ts.map +1 -0
  183. package/dist/memory/provider.js +2 -0
  184. package/dist/memory/provider.js.map +1 -0
  185. package/dist/memory/session-files.d.ts +13 -0
  186. package/dist/memory/session-files.d.ts.map +1 -0
  187. package/dist/memory/session-files.js +116 -0
  188. package/dist/memory/session-files.js.map +1 -0
  189. package/dist/memory/sqlite-vec.d.ts +10 -0
  190. package/dist/memory/sqlite-vec.d.ts.map +1 -0
  191. package/dist/memory/sqlite-vec.js +20 -0
  192. package/dist/memory/sqlite-vec.js.map +1 -0
  193. package/dist/memory/sqlite.d.ts +2 -0
  194. package/dist/memory/sqlite.d.ts.map +1 -0
  195. package/dist/memory/sqlite.js +12 -0
  196. package/dist/memory/sqlite.js.map +1 -0
  197. package/dist/memory/temporal-decay.d.ts +26 -0
  198. package/dist/memory/temporal-decay.d.ts.map +1 -0
  199. package/dist/memory/temporal-decay.js +119 -0
  200. package/dist/memory/temporal-decay.js.map +1 -0
  201. package/dist/memory/watch-bridge.d.ts +20 -0
  202. package/dist/memory/watch-bridge.d.ts.map +1 -0
  203. package/dist/memory/watch-bridge.js +128 -0
  204. package/dist/memory/watch-bridge.js.map +1 -0
  205. package/dist/plugins/boundary-file-read.d.ts +13 -0
  206. package/dist/plugins/boundary-file-read.d.ts.map +1 -0
  207. package/dist/plugins/boundary-file-read.js +31 -0
  208. package/dist/plugins/boundary-file-read.js.map +1 -0
  209. package/dist/plugins/config-state.d.ts +35 -0
  210. package/dist/plugins/config-state.d.ts.map +1 -0
  211. package/dist/plugins/config-state.js +97 -0
  212. package/dist/plugins/config-state.js.map +1 -0
  213. package/dist/plugins/discovery.d.ts +21 -0
  214. package/dist/plugins/discovery.d.ts.map +1 -0
  215. package/dist/plugins/discovery.js +425 -0
  216. package/dist/plugins/discovery.js.map +1 -0
  217. package/dist/plugins/hooks.d.ts +112 -0
  218. package/dist/plugins/hooks.d.ts.map +1 -0
  219. package/dist/plugins/hooks.js +19 -0
  220. package/dist/plugins/hooks.js.map +1 -0
  221. package/dist/plugins/index.d.ts +20 -0
  222. package/dist/plugins/index.d.ts.map +1 -0
  223. package/dist/plugins/index.js +11 -0
  224. package/dist/plugins/index.js.map +1 -0
  225. package/dist/plugins/loader.d.ts +60 -0
  226. package/dist/plugins/loader.d.ts.map +1 -0
  227. package/dist/plugins/loader.js +224 -0
  228. package/dist/plugins/loader.js.map +1 -0
  229. package/dist/plugins/manager.d.ts +20 -0
  230. package/dist/plugins/manager.d.ts.map +1 -0
  231. package/dist/plugins/manager.js +33 -0
  232. package/dist/plugins/manager.js.map +1 -0
  233. package/dist/plugins/manifest-registry.d.ts +15 -0
  234. package/dist/plugins/manifest-registry.d.ts.map +1 -0
  235. package/dist/plugins/manifest-registry.js +37 -0
  236. package/dist/plugins/manifest-registry.js.map +1 -0
  237. package/dist/plugins/manifest.d.ts +6 -0
  238. package/dist/plugins/manifest.d.ts.map +1 -0
  239. package/dist/plugins/manifest.js +80 -0
  240. package/dist/plugins/manifest.js.map +1 -0
  241. package/dist/plugins/path-safety.d.ts +6 -0
  242. package/dist/plugins/path-safety.d.ts.map +1 -0
  243. package/dist/plugins/path-safety.js +32 -0
  244. package/dist/plugins/path-safety.js.map +1 -0
  245. package/dist/plugins/runtime-context.d.ts +12 -0
  246. package/dist/plugins/runtime-context.d.ts.map +1 -0
  247. package/dist/plugins/runtime-context.js +2 -0
  248. package/dist/plugins/runtime-context.js.map +1 -0
  249. package/dist/plugins/runtime.d.ts +12 -0
  250. package/dist/plugins/runtime.d.ts.map +1 -0
  251. package/dist/plugins/runtime.js +13 -0
  252. package/dist/plugins/runtime.js.map +1 -0
  253. package/dist/plugins/schema-validator.d.ts +17 -0
  254. package/dist/plugins/schema-validator.d.ts.map +1 -0
  255. package/dist/plugins/schema-validator.js +26 -0
  256. package/dist/plugins/schema-validator.js.map +1 -0
  257. package/dist/plugins/tool-hooks.d.ts +4 -0
  258. package/dist/plugins/tool-hooks.d.ts.map +1 -0
  259. package/dist/plugins/tool-hooks.js +60 -0
  260. package/dist/plugins/tool-hooks.js.map +1 -0
  261. package/dist/plugins/tools.d.ts +20 -0
  262. package/dist/plugins/tools.d.ts.map +1 -0
  263. package/dist/plugins/tools.js +42 -0
  264. package/dist/plugins/tools.js.map +1 -0
  265. package/dist/plugins/types.d.ts +61 -0
  266. package/dist/plugins/types.d.ts.map +1 -0
  267. package/dist/plugins/types.js +2 -0
  268. package/dist/plugins/types.js.map +1 -0
  269. package/dist/plugins/utils.d.ts +4 -0
  270. package/dist/plugins/utils.d.ts.map +1 -0
  271. package/dist/plugins/utils.js +22 -0
  272. package/dist/plugins/utils.js.map +1 -0
  273. package/dist/runner/runner.d.ts +14 -0
  274. package/dist/runner/runner.d.ts.map +1 -0
  275. package/dist/runner/runner.js +893 -0
  276. package/dist/runner/runner.js.map +1 -0
  277. package/dist/session/session.d.ts +45 -0
  278. package/dist/session/session.d.ts.map +1 -0
  279. package/dist/session/session.js +167 -0
  280. package/dist/session/session.js.map +1 -0
  281. package/dist/skills/skills.d.ts +23 -0
  282. package/dist/skills/skills.d.ts.map +1 -0
  283. package/dist/skills/skills.js +109 -0
  284. package/dist/skills/skills.js.map +1 -0
  285. package/dist/subagent/registry-persist.d.ts +31 -0
  286. package/dist/subagent/registry-persist.d.ts.map +1 -0
  287. package/dist/subagent/registry-persist.js +115 -0
  288. package/dist/subagent/registry-persist.js.map +1 -0
  289. package/dist/subagent/registry.d.ts +52 -0
  290. package/dist/subagent/registry.d.ts.map +1 -0
  291. package/dist/subagent/registry.js +122 -0
  292. package/dist/subagent/registry.js.map +1 -0
  293. package/dist/subagent/types.d.ts +20 -0
  294. package/dist/subagent/types.d.ts.map +1 -0
  295. package/dist/subagent/types.js +2 -0
  296. package/dist/subagent/types.js.map +1 -0
  297. package/dist/system-prompt/builder.d.ts +50 -0
  298. package/dist/system-prompt/builder.d.ts.map +1 -0
  299. package/dist/system-prompt/builder.js +335 -0
  300. package/dist/system-prompt/builder.js.map +1 -0
  301. package/dist/tools/apply-patch.d.ts +15 -0
  302. package/dist/tools/apply-patch.d.ts.map +1 -0
  303. package/dist/tools/apply-patch.js +425 -0
  304. package/dist/tools/apply-patch.js.map +1 -0
  305. package/dist/tools/bash.d.ts +11 -0
  306. package/dist/tools/bash.d.ts.map +1 -0
  307. package/dist/tools/bash.js +13 -0
  308. package/dist/tools/bash.js.map +1 -0
  309. package/dist/tools/cron.d.ts +23 -0
  310. package/dist/tools/cron.d.ts.map +1 -0
  311. package/dist/tools/cron.js +37 -0
  312. package/dist/tools/cron.js.map +1 -0
  313. package/dist/tools/exec.d.ts +18 -0
  314. package/dist/tools/exec.d.ts.map +1 -0
  315. package/dist/tools/exec.js +125 -0
  316. package/dist/tools/exec.js.map +1 -0
  317. package/dist/tools/files.d.ts +37 -0
  318. package/dist/tools/files.d.ts.map +1 -0
  319. package/dist/tools/files.js +191 -0
  320. package/dist/tools/files.js.map +1 -0
  321. package/dist/tools/image.d.ts +14 -0
  322. package/dist/tools/image.d.ts.map +1 -0
  323. package/dist/tools/image.js +26 -0
  324. package/dist/tools/image.js.map +1 -0
  325. package/dist/tools/index.d.ts +35 -0
  326. package/dist/tools/index.d.ts.map +1 -0
  327. package/dist/tools/index.js +53 -0
  328. package/dist/tools/index.js.map +1 -0
  329. package/dist/tools/memory.d.ts +41 -0
  330. package/dist/tools/memory.d.ts.map +1 -0
  331. package/dist/tools/memory.js +114 -0
  332. package/dist/tools/memory.js.map +1 -0
  333. package/dist/tools/process-registry.d.ts +47 -0
  334. package/dist/tools/process-registry.d.ts.map +1 -0
  335. package/dist/tools/process-registry.js +252 -0
  336. package/dist/tools/process-registry.js.map +1 -0
  337. package/dist/tools/process.d.ts +17 -0
  338. package/dist/tools/process.d.ts.map +1 -0
  339. package/dist/tools/process.js +114 -0
  340. package/dist/tools/process.js.map +1 -0
  341. package/dist/tools/subagent-spawn.d.ts +44 -0
  342. package/dist/tools/subagent-spawn.d.ts.map +1 -0
  343. package/dist/tools/subagent-spawn.js +100 -0
  344. package/dist/tools/subagent-spawn.js.map +1 -0
  345. package/dist/tools/subagents.d.ts +30 -0
  346. package/dist/tools/subagents.d.ts.map +1 -0
  347. package/dist/tools/subagents.js +101 -0
  348. package/dist/tools/subagents.js.map +1 -0
  349. package/dist/types.d.ts +241 -0
  350. package/dist/types.d.ts.map +1 -0
  351. package/dist/types.js +6 -0
  352. package/dist/types.js.map +1 -0
  353. package/package.json +46 -0
@@ -0,0 +1,112 @@
1
+ import type { AssistantMessage } from "@mariozechner/pi-ai";
2
+ import type { AgentRunParams } from "../types.js";
3
+ import type { MemoryChangedEvent } from "../memory/provider.js";
4
+ export type PluginHookName = "before_model_resolve" | "before_prompt_build" | "llm_input" | "llm_output" | "before_tool_call" | "after_tool_call" | "agent_end" | "before_compaction" | "after_compaction" | "session_start" | "session_end" | "session_reset" | "memory_changed";
5
+ export type PluginHookAgentContext = {
6
+ agentId?: string;
7
+ sessionId?: string;
8
+ workspaceDir?: string;
9
+ channel?: AgentRunParams["channel"];
10
+ };
11
+ export type PluginHookBeforeModelResolveEvent = {
12
+ prompt: string;
13
+ };
14
+ export type PluginHookBeforeModelResolveResult = {
15
+ modelOverride?: string;
16
+ };
17
+ export type PluginHookBeforePromptBuildEvent = {
18
+ prompt: string;
19
+ };
20
+ export type PluginHookBeforePromptBuildResult = {
21
+ systemPrompt?: string;
22
+ prependContext?: string;
23
+ };
24
+ export type PluginHookLlmInputEvent = {
25
+ sessionId: string;
26
+ model: string;
27
+ prompt: string;
28
+ historyMessages: unknown[];
29
+ };
30
+ export type PluginHookLlmOutputEvent = {
31
+ sessionId: string;
32
+ model: string;
33
+ assistantTexts: string[];
34
+ lastAssistant?: AssistantMessage;
35
+ usage?: {
36
+ input?: number;
37
+ output?: number;
38
+ total?: number;
39
+ };
40
+ };
41
+ export type PluginHookBeforeToolCallEvent = {
42
+ toolName: string;
43
+ params: Record<string, unknown>;
44
+ };
45
+ export type PluginHookBeforeToolCallResult = {
46
+ params?: Record<string, unknown>;
47
+ block?: boolean;
48
+ blockReason?: string;
49
+ };
50
+ export type PluginHookAfterToolCallEvent = {
51
+ toolName: string;
52
+ params: Record<string, unknown>;
53
+ result?: unknown;
54
+ error?: string;
55
+ durationMs?: number;
56
+ };
57
+ export type PluginHookAgentEndEvent = {
58
+ success: boolean;
59
+ error?: string;
60
+ durationMs?: number;
61
+ };
62
+ export type PluginHookBeforeCompactionEvent = {
63
+ messageCount: number;
64
+ compactingCount?: number;
65
+ };
66
+ export type PluginHookAfterCompactionEvent = {
67
+ messageCount: number;
68
+ compactedCount: number;
69
+ };
70
+ export type PluginHookSessionStartEvent = {
71
+ sessionId: string;
72
+ };
73
+ export type PluginHookSessionEndEvent = {
74
+ sessionId: string;
75
+ messageCount: number;
76
+ durationMs?: number;
77
+ };
78
+ export type PluginHookSessionResetEvent = {
79
+ action: "new" | "reset";
80
+ sessionId: string;
81
+ previousSessionId?: string;
82
+ message: string;
83
+ };
84
+ export type PluginHookMemoryChangedEvent = MemoryChangedEvent;
85
+ export type PluginHookHandlerMap = {
86
+ before_model_resolve: (event: PluginHookBeforeModelResolveEvent, ctx: PluginHookAgentContext) => PluginHookBeforeModelResolveResult | void | Promise<PluginHookBeforeModelResolveResult | void>;
87
+ before_prompt_build: (event: PluginHookBeforePromptBuildEvent, ctx: PluginHookAgentContext) => PluginHookBeforePromptBuildResult | void | Promise<PluginHookBeforePromptBuildResult | void>;
88
+ llm_input: (event: PluginHookLlmInputEvent, ctx: PluginHookAgentContext) => void | Promise<void>;
89
+ llm_output: (event: PluginHookLlmOutputEvent, ctx: PluginHookAgentContext) => void | Promise<void>;
90
+ before_tool_call: (event: PluginHookBeforeToolCallEvent, ctx: PluginHookAgentContext) => PluginHookBeforeToolCallResult | void | Promise<PluginHookBeforeToolCallResult | void>;
91
+ after_tool_call: (event: PluginHookAfterToolCallEvent, ctx: PluginHookAgentContext) => void | Promise<void>;
92
+ agent_end: (event: PluginHookAgentEndEvent, ctx: PluginHookAgentContext) => void | Promise<void>;
93
+ before_compaction: (event: PluginHookBeforeCompactionEvent, ctx: PluginHookAgentContext) => void | Promise<void>;
94
+ after_compaction: (event: PluginHookAfterCompactionEvent, ctx: PluginHookAgentContext) => void | Promise<void>;
95
+ session_start: (event: PluginHookSessionStartEvent, ctx: PluginHookAgentContext) => void | Promise<void>;
96
+ session_end: (event: PluginHookSessionEndEvent, ctx: PluginHookAgentContext) => void | Promise<void>;
97
+ session_reset: (event: PluginHookSessionResetEvent, ctx: PluginHookAgentContext) => void | Promise<void>;
98
+ memory_changed: (event: PluginHookMemoryChangedEvent, ctx: PluginHookAgentContext) => void | Promise<void>;
99
+ };
100
+ export type PluginHookRegistration<K extends PluginHookName = PluginHookName> = {
101
+ pluginId: string;
102
+ hookName: K;
103
+ handler: PluginHookHandlerMap[K];
104
+ priority?: number;
105
+ source: string;
106
+ };
107
+ export declare class PluginHookRegistry {
108
+ private readonly hooks;
109
+ register<K extends PluginHookName>(registration: PluginHookRegistration<K>): void;
110
+ dispatch<K extends PluginHookName>(hookName: K, event: Parameters<PluginHookHandlerMap[K]>[0], ctx: Parameters<PluginHookHandlerMap[K]>[1]): Promise<Array<Awaited<ReturnType<PluginHookHandlerMap[K]>>>>;
111
+ }
112
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/plugins/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,MAAM,cAAc,GACtB,sBAAsB,GACtB,qBAAqB,GACrB,WAAW,GACX,YAAY,GACZ,kBAAkB,GAClB,iBAAiB,GACjB,WAAW,GACX,mBAAmB,GACnB,kBAAkB,GAClB,eAAe,GACf,aAAa,GACb,eAAe,GACf,gBAAgB,CAAC;AAErB,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG;IAC/C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,OAAO,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,gBAAgB,CAAC;IACjC,KAAK,CAAC,EAAE;QACN,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,MAAM,EAAE,KAAK,GAAG,OAAO,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,kBAAkB,CAAC;AAE9D,MAAM,MAAM,oBAAoB,GAAG;IACjC,oBAAoB,EAAE,CACpB,KAAK,EAAE,iCAAiC,EACxC,GAAG,EAAE,sBAAsB,KACxB,kCAAkC,GAAG,IAAI,GAAG,OAAO,CAAC,kCAAkC,GAAG,IAAI,CAAC,CAAC;IACpG,mBAAmB,EAAE,CACnB,KAAK,EAAE,gCAAgC,EACvC,GAAG,EAAE,sBAAsB,KACxB,iCAAiC,GAAG,IAAI,GAAG,OAAO,CAAC,iCAAiC,GAAG,IAAI,CAAC,CAAC;IAClG,SAAS,EAAE,CACT,KAAK,EAAE,uBAAuB,EAC9B,GAAG,EAAE,sBAAsB,KACxB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,UAAU,EAAE,CACV,KAAK,EAAE,wBAAwB,EAC/B,GAAG,EAAE,sBAAsB,KACxB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,gBAAgB,EAAE,CAChB,KAAK,EAAE,6BAA6B,EACpC,GAAG,EAAE,sBAAsB,KACxB,8BAA8B,GAAG,IAAI,GAAG,OAAO,CAAC,8BAA8B,GAAG,IAAI,CAAC,CAAC;IAC5F,eAAe,EAAE,CACf,KAAK,EAAE,4BAA4B,EACnC,GAAG,EAAE,sBAAsB,KACxB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,SAAS,EAAE,CACT,KAAK,EAAE,uBAAuB,EAC9B,GAAG,EAAE,sBAAsB,KACxB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,iBAAiB,EAAE,CACjB,KAAK,EAAE,+BAA+B,EACtC,GAAG,EAAE,sBAAsB,KACxB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,gBAAgB,EAAE,CAChB,KAAK,EAAE,8BAA8B,EACrC,GAAG,EAAE,sBAAsB,KACxB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,aAAa,EAAE,CACb,KAAK,EAAE,2BAA2B,EAClC,GAAG,EAAE,sBAAsB,KACxB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,WAAW,EAAE,CACX,KAAK,EAAE,yBAAyB,EAChC,GAAG,EAAE,sBAAsB,KACxB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,aAAa,EAAE,CACb,KAAK,EAAE,2BAA2B,EAClC,GAAG,EAAE,sBAAsB,KACxB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,cAAc,EAAE,CACd,KAAK,EAAE,4BAA4B,EACnC,GAAG,EAAE,sBAAsB,KACxB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,sBAAsB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,IAAI;IAC9E,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,CAAC,CAAC;IACZ,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuD;IAE7E,QAAQ,CAAC,CAAC,SAAS,cAAc,EAAE,YAAY,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAAG,IAAI;IAO3E,QAAQ,CAAC,CAAC,SAAS,cAAc,EACrC,QAAQ,EAAE,CAAC,EACX,KAAK,EAAE,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAC7C,GAAG,EAAE,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAC1C,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAShE"}
@@ -0,0 +1,19 @@
1
+ export class PluginHookRegistry {
2
+ hooks = new Map();
3
+ register(registration) {
4
+ const list = this.hooks.get(registration.hookName) ?? [];
5
+ list.push(registration);
6
+ list.sort((a, b) => (a.priority ?? 0) - (b.priority ?? 0));
7
+ this.hooks.set(registration.hookName, list);
8
+ }
9
+ async dispatch(hookName, event, ctx) {
10
+ const list = this.hooks.get(hookName) ?? [];
11
+ const results = [];
12
+ for (const entry of list) {
13
+ const result = await entry.handler(event, ctx);
14
+ results.push(result);
15
+ }
16
+ return results;
17
+ }
18
+ }
19
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/plugins/hooks.ts"],"names":[],"mappings":"AAmLA,MAAM,OAAO,kBAAkB;IACZ,KAAK,GAAG,IAAI,GAAG,EAA4C,CAAC;IAE7E,QAAQ,CAA2B,YAAuC;QACxE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACzD,IAAI,CAAC,IAAI,CAAC,YAAsC,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,QAAW,EACX,KAA6C,EAC7C,GAA2C;QAE3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAwD,EAAE,CAAC;QACxE,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,MAAO,KAAK,CAAC,OAAe,CAAC,KAAK,EAAE,GAA6B,CAAC,CAAC;YAClF,OAAO,CAAC,IAAI,CAAC,MAAsD,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
@@ -0,0 +1,20 @@
1
+ export type { PluginDiagnostic, PluginOrigin, PluginKind, PluginConfigUiHint, PluginManifest, PluginManifestLoadResult, PluginCandidate, PluginDiscoveryResult, } from "./types.js";
2
+ export { discoverAIMaxPlugins, type PluginDiscoveryOptions, } from "./discovery.js";
3
+ export { loadPluginManifest, resolvePluginManifestPath, PLUGIN_MANIFEST_FILENAME, PLUGIN_MANIFEST_FILENAMES, } from "./manifest.js";
4
+ export { normalizePluginsConfig, validatePluginsConfig, } from "./config-state.js";
5
+ export type { PluginsConfig, NormalizedPluginsConfig, PluginEntryConfig, PluginsConfigValidationResult, } from "./config-state.js";
6
+ export { loadPluginManifestRegistry, } from "./manifest-registry.js";
7
+ export type { PluginManifestRegistry } from "./manifest-registry.js";
8
+ export { loadPlugins } from "./loader.js";
9
+ export type { PluginRegistry, PluginRecord, PluginApi } from "./loader.js";
10
+ export { initializePluginSystem } from "./manager.js";
11
+ export type { PluginSystem, PluginSystemOptions } from "./manager.js";
12
+ export type { PluginRuntimeContext } from "./runtime-context.js";
13
+ export { PluginHookRegistry } from "./hooks.js";
14
+ export type { PluginHookName, PluginHookHandlerMap, PluginHookAgentContext, PluginHookBeforeModelResolveEvent, PluginHookBeforeModelResolveResult, PluginHookBeforePromptBuildEvent, PluginHookBeforePromptBuildResult, PluginHookLlmInputEvent, PluginHookLlmOutputEvent, PluginHookBeforeToolCallEvent, PluginHookBeforeToolCallResult, PluginHookAfterToolCallEvent, PluginHookAgentEndEvent, PluginHookBeforeCompactionEvent, PluginHookAfterCompactionEvent, PluginHookSessionStartEvent, PluginHookSessionEndEvent, PluginHookSessionResetEvent, PluginHookMemoryChangedEvent, } from "./hooks.js";
15
+ export { PluginToolRegistry } from "./tools.js";
16
+ export type { PluginToolOptions, RegisteredPluginTool } from "./tools.js";
17
+ export { createPluginRuntime } from "./runtime.js";
18
+ export type { PluginRuntime } from "./runtime.js";
19
+ export { wrapToolsWithHooks } from "./tool-hooks.js";
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,wBAAwB,EACxB,eAAe,EACf,qBAAqB,GACtB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,oBAAoB,EACpB,KAAK,sBAAsB,GAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,aAAa,EACb,uBAAuB,EACvB,iBAAiB,EACjB,6BAA6B,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACtE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,iCAAiC,EACjC,kCAAkC,EAClC,gCAAgC,EAChC,iCAAiC,EACjC,uBAAuB,EACvB,wBAAwB,EACxB,6BAA6B,EAC7B,8BAA8B,EAC9B,4BAA4B,EAC5B,uBAAuB,EACvB,+BAA+B,EAC/B,8BAA8B,EAC9B,2BAA2B,EAC3B,yBAAyB,EACzB,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,11 @@
1
+ export { discoverAIMaxPlugins, } from "./discovery.js";
2
+ export { loadPluginManifest, resolvePluginManifestPath, PLUGIN_MANIFEST_FILENAME, PLUGIN_MANIFEST_FILENAMES, } from "./manifest.js";
3
+ export { normalizePluginsConfig, validatePluginsConfig, } from "./config-state.js";
4
+ export { loadPluginManifestRegistry, } from "./manifest-registry.js";
5
+ export { loadPlugins } from "./loader.js";
6
+ export { initializePluginSystem } from "./manager.js";
7
+ export { PluginHookRegistry } from "./hooks.js";
8
+ export { PluginToolRegistry } from "./tools.js";
9
+ export { createPluginRuntime } from "./runtime.js";
10
+ export { wrapToolsWithHooks } from "./tool-hooks.js";
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,oBAAoB,GAErB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EACL,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAGtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAsBhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,60 @@
1
+ import type { NormalizedPluginsConfig } from "./config-state.js";
2
+ import type { PluginManifestRegistry } from "./manifest-registry.js";
3
+ import type { PluginDiagnostic, PluginOrigin } from "./types.js";
4
+ import { PluginHookRegistry, type PluginHookName, type PluginHookHandlerMap } from "./hooks.js";
5
+ import { PluginToolRegistry } from "./tools.js";
6
+ import { createPluginRuntime } from "./runtime.js";
7
+ import { type LlmChatParams, type LlmChatResult } from "../llm/client.js";
8
+ import type { PluginRuntimeContext } from "./runtime-context.js";
9
+ import { type EmbeddingProviderFactory } from "../memory/embedding-registry.js";
10
+ import type { MemoryProviderFactory } from "../memory/provider.js";
11
+ export type PluginRecord = {
12
+ id: string;
13
+ source: string;
14
+ origin: PluginOrigin;
15
+ enabled: boolean;
16
+ status: "loaded" | "disabled" | "error";
17
+ error?: string;
18
+ toolCount: number;
19
+ hookCount: number;
20
+ skills: string[];
21
+ configSchema: boolean;
22
+ };
23
+ export type PluginRegistry = {
24
+ plugins: PluginRecord[];
25
+ diagnostics: PluginDiagnostic[];
26
+ tools: PluginToolRegistry;
27
+ hooks: PluginHookRegistry;
28
+ skills: string[];
29
+ };
30
+ export type PluginLoadOptions = {
31
+ registry: PluginManifestRegistry;
32
+ plugins: NormalizedPluginsConfig;
33
+ workspaceDir?: string;
34
+ runtime?: PluginRuntimeContext;
35
+ };
36
+ export type PluginApi = {
37
+ id: string;
38
+ source: string;
39
+ rootDir: string;
40
+ config: Record<string, unknown> | undefined;
41
+ runtime: ReturnType<typeof createPluginRuntime>;
42
+ llm: {
43
+ chat: (params: LlmChatParams) => Promise<LlmChatResult>;
44
+ };
45
+ registerTool: (tool: Parameters<PluginToolRegistry["register"]>[1], opts?: Parameters<PluginToolRegistry["register"]>[2]) => void;
46
+ registerEmbeddingProvider: (params: {
47
+ id?: string;
48
+ create: EmbeddingProviderFactory;
49
+ }) => void;
50
+ registerMemoryProvider: (params: {
51
+ id?: string;
52
+ create: MemoryProviderFactory;
53
+ }) => void;
54
+ registerHook: <K extends PluginHookName>(hookName: K, handler: PluginHookHandlerMap[K], opts?: {
55
+ priority?: number;
56
+ }) => void;
57
+ registerSkillDir: (dir: string) => void;
58
+ };
59
+ export declare function loadPlugins(options: PluginLoadOptions): PluginRegistry;
60
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,224 @@
1
+ import path from "node:path";
2
+ import { createJiti } from "jiti";
3
+ import { PluginHookRegistry } from "./hooks.js";
4
+ import { PluginToolRegistry } from "./tools.js";
5
+ import { createPluginRuntime } from "./runtime.js";
6
+ import { createLlmClient } from "../llm/client.js";
7
+ import { registerEmbeddingProvider } from "../memory/embedding-registry.js";
8
+ import { registerMemoryProvider } from "../memory/provider-registry.js";
9
+ function resolveEnabledState(params) {
10
+ if (!params.config.enabled) {
11
+ return false;
12
+ }
13
+ const entry = params.config.entries[params.pluginId];
14
+ if (entry?.enabled === false) {
15
+ return false;
16
+ }
17
+ if (params.config.deny.includes(params.pluginId)) {
18
+ return false;
19
+ }
20
+ if (params.config.allow.length > 0 && !params.config.allow.includes(params.pluginId)) {
21
+ return false;
22
+ }
23
+ if (params.origin === "bundled" && entry?.enabled !== true) {
24
+ return false;
25
+ }
26
+ if (params.kind && params.config.slots?.[params.kind]) {
27
+ const selected = params.config.slots[params.kind];
28
+ if (selected && selected !== "none" && selected !== params.pluginId) {
29
+ return false;
30
+ }
31
+ }
32
+ return true;
33
+ }
34
+ function buildPluginRecord(params) {
35
+ return {
36
+ id: params.id,
37
+ source: params.source,
38
+ origin: params.origin,
39
+ enabled: params.enabled,
40
+ status: params.enabled ? "loaded" : "disabled",
41
+ toolCount: 0,
42
+ hookCount: 0,
43
+ skills: params.skills,
44
+ configSchema: params.configSchema,
45
+ };
46
+ }
47
+ export function loadPlugins(options) {
48
+ const diagnostics = [...options.registry.diagnostics];
49
+ const tools = new PluginToolRegistry();
50
+ const hooks = new PluginHookRegistry();
51
+ const skills = [];
52
+ const plugins = [];
53
+ const llmClient = options.runtime?.llm
54
+ ? createLlmClient({
55
+ baseUrl: options.runtime.llm.baseUrl,
56
+ apiKey: options.runtime.llm.apiKey,
57
+ defaultModel: options.runtime.llm.model,
58
+ hooks,
59
+ hookCtx: options.runtime.hookCtx,
60
+ })
61
+ : undefined;
62
+ const llmAllowlist = normalizeAllowlist(options.runtime?.llmAllowlist);
63
+ const jiti = createJiti(import.meta.url, {
64
+ interopDefault: true,
65
+ requireCache: false,
66
+ });
67
+ for (const record of options.registry.manifests.values()) {
68
+ const enabled = resolveEnabledState({
69
+ config: options.plugins,
70
+ pluginId: record.id,
71
+ origin: record.origin,
72
+ kind: record.manifest.kind,
73
+ });
74
+ const pluginRecord = buildPluginRecord({
75
+ id: record.id,
76
+ source: record.source,
77
+ origin: record.origin,
78
+ enabled,
79
+ configSchema: true,
80
+ skills: record.manifest.skills ?? [],
81
+ });
82
+ if (!enabled) {
83
+ plugins.push(pluginRecord);
84
+ continue;
85
+ }
86
+ let moduleExport;
87
+ try {
88
+ moduleExport = jiti(record.source);
89
+ }
90
+ catch (err) {
91
+ pluginRecord.status = "error";
92
+ pluginRecord.error = String(err);
93
+ diagnostics.push({
94
+ level: "error",
95
+ message: `failed to load plugin ${record.id}: ${String(err)}`,
96
+ pluginId: record.id,
97
+ source: record.source,
98
+ });
99
+ plugins.push(pluginRecord);
100
+ continue;
101
+ }
102
+ const resolved = moduleExport &&
103
+ typeof moduleExport === "object" &&
104
+ "default" in moduleExport
105
+ ? moduleExport.default
106
+ : moduleExport;
107
+ const registerFn = typeof resolved === "function"
108
+ ? resolved
109
+ : resolved && typeof resolved === "object" && typeof resolved.register === "function"
110
+ ? resolved.register
111
+ : undefined;
112
+ if (!registerFn) {
113
+ pluginRecord.status = "error";
114
+ pluginRecord.error = "plugin module does not export a register function";
115
+ diagnostics.push({
116
+ level: "error",
117
+ message: `plugin ${record.id} has no register function`,
118
+ pluginId: record.id,
119
+ source: record.source,
120
+ });
121
+ plugins.push(pluginRecord);
122
+ continue;
123
+ }
124
+ const runtime = createPluginRuntime();
125
+ const pluginConfig = options.plugins.entries[record.id]?.config;
126
+ const api = {
127
+ id: record.id,
128
+ source: record.source,
129
+ rootDir: record.rootDir,
130
+ config: pluginConfig,
131
+ runtime,
132
+ llm: {
133
+ chat: async (params) => {
134
+ if (!llmClient) {
135
+ throw new Error("LLM client is not configured");
136
+ }
137
+ if (!isLlmAllowed(record.id, tools, llmAllowlist)) {
138
+ throw new Error(`Plugin ${record.id} is not allowed to use LLM`);
139
+ }
140
+ return llmClient.chat(params);
141
+ },
142
+ },
143
+ registerTool: (tool, opts) => {
144
+ tools.register(record.id, tool, opts);
145
+ pluginRecord.toolCount += 1;
146
+ },
147
+ registerEmbeddingProvider: (params) => {
148
+ if (record.manifest.kind !== "memory") {
149
+ throw new Error(`Plugin ${record.id} is not allowed to register embedding providers`);
150
+ }
151
+ registerEmbeddingProvider({
152
+ pluginId: record.id,
153
+ id: params.id,
154
+ create: params.create,
155
+ config: pluginConfig,
156
+ rootDir: record.rootDir,
157
+ source: record.source,
158
+ });
159
+ },
160
+ registerMemoryProvider: (params) => {
161
+ if (record.manifest.kind !== "memory") {
162
+ throw new Error(`Plugin ${record.id} is not allowed to register memory providers`);
163
+ }
164
+ registerMemoryProvider({
165
+ pluginId: record.id,
166
+ id: params.id,
167
+ create: params.create,
168
+ config: pluginConfig,
169
+ rootDir: record.rootDir,
170
+ source: record.source,
171
+ });
172
+ },
173
+ registerHook: (hookName, handler, opts) => {
174
+ hooks.register({
175
+ pluginId: record.id,
176
+ hookName,
177
+ handler: handler,
178
+ priority: opts?.priority,
179
+ source: record.source,
180
+ });
181
+ pluginRecord.hookCount += 1;
182
+ },
183
+ registerSkillDir: (dir) => {
184
+ const resolved = path.isAbsolute(dir) ? dir : path.resolve(record.rootDir, dir);
185
+ skills.push(resolved);
186
+ },
187
+ };
188
+ try {
189
+ registerFn(api);
190
+ }
191
+ catch (err) {
192
+ pluginRecord.status = "error";
193
+ pluginRecord.error = String(err);
194
+ diagnostics.push({
195
+ level: "error",
196
+ message: `plugin ${record.id} registration failed: ${String(err)}`,
197
+ pluginId: record.id,
198
+ source: record.source,
199
+ });
200
+ }
201
+ if (record.manifest.skills && record.manifest.skills.length > 0) {
202
+ for (const skillDir of record.manifest.skills) {
203
+ const resolved = path.isAbsolute(skillDir)
204
+ ? skillDir
205
+ : path.resolve(record.rootDir, skillDir);
206
+ skills.push(resolved);
207
+ }
208
+ }
209
+ plugins.push(pluginRecord);
210
+ }
211
+ return { plugins, diagnostics, tools, hooks, skills };
212
+ }
213
+ function normalizeAllowlist(allowlist) {
214
+ return (allowlist ?? []).map((entry) => entry.trim()).filter(Boolean);
215
+ }
216
+ function isLlmAllowed(pluginId, tools, allowlist) {
217
+ if (allowlist.length === 0)
218
+ return false;
219
+ if (allowlist.includes(pluginId))
220
+ return true;
221
+ const toolNames = tools.namesForPlugin(pluginId);
222
+ return toolNames.some((name) => allowlist.includes(name));
223
+ }
224
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { PluginsConfig, NormalizedPluginsConfig } from "./config-state.js";
2
+ import { type PluginRegistry } from "./loader.js";
3
+ import type { PluginDiagnostic } from "./types.js";
4
+ import type { PluginRuntimeContext } from "./runtime-context.js";
5
+ export type PluginSystemOptions = {
6
+ config?: PluginsConfig;
7
+ dataDir?: string;
8
+ workspaceDir?: string;
9
+ bundledDir?: string;
10
+ ownershipUid?: number | null;
11
+ toolAllowlist?: string[];
12
+ runtime?: PluginRuntimeContext;
13
+ };
14
+ export type PluginSystem = {
15
+ registry: PluginRegistry;
16
+ diagnostics: PluginDiagnostic[];
17
+ normalizedConfig: NormalizedPluginsConfig;
18
+ };
19
+ export declare function initializePluginSystem(options?: PluginSystemOptions): PluginSystem;
20
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/plugins/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAIhF,OAAO,EAAe,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,gBAAgB,EAAE,uBAAuB,CAAC;CAC3C,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,OAAO,GAAE,mBAAwB,GAAG,YAAY,CAiCtF"}
@@ -0,0 +1,33 @@
1
+ import { normalizePluginsConfig, validatePluginsConfig } from "./config-state.js";
2
+ import { discoverAIMaxPlugins } from "./discovery.js";
3
+ import { loadPluginManifestRegistry } from "./manifest-registry.js";
4
+ import { loadPlugins } from "./loader.js";
5
+ export function initializePluginSystem(options = {}) {
6
+ const normalized = normalizePluginsConfig(options.config);
7
+ const discovery = discoverAIMaxPlugins({
8
+ dataDir: options.dataDir,
9
+ workspaceDir: options.workspaceDir,
10
+ extraPaths: normalized.loadPaths,
11
+ bundledDir: options.bundledDir,
12
+ ownershipUid: options.ownershipUid,
13
+ });
14
+ const manifestRegistry = loadPluginManifestRegistry(discovery.candidates);
15
+ const validation = validatePluginsConfig({
16
+ config: normalized,
17
+ registry: manifestRegistry,
18
+ });
19
+ const registry = loadPlugins({
20
+ registry: manifestRegistry,
21
+ plugins: normalized,
22
+ workspaceDir: options.workspaceDir,
23
+ runtime: options.runtime,
24
+ });
25
+ const diagnostics = [
26
+ ...discovery.diagnostics,
27
+ ...manifestRegistry.diagnostics,
28
+ ...validation.diagnostics,
29
+ ...registry.diagnostics,
30
+ ];
31
+ return { registry, diagnostics, normalizedConfig: normalized };
32
+ }
33
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/plugins/manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAuB,MAAM,aAAa,CAAC;AAoB/D,MAAM,UAAU,sBAAsB,CAAC,UAA+B,EAAE;IACtE,MAAM,UAAU,GAAG,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAE1D,MAAM,SAAS,GAAG,oBAAoB,CAAC;QACrC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,UAAU,EAAE,UAAU,CAAC,SAAS;QAChC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,YAAY,EAAE,OAAO,CAAC,YAAY;KACnC,CAAC,CAAC;IAEH,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAE1E,MAAM,UAAU,GAAG,qBAAqB,CAAC;QACvC,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE,gBAAgB;KAC3B,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,WAAW,CAAC;QAC3B,QAAQ,EAAE,gBAAgB;QAC1B,OAAO,EAAE,UAAU;QACnB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG;QAClB,GAAG,SAAS,CAAC,WAAW;QACxB,GAAG,gBAAgB,CAAC,WAAW;QAC/B,GAAG,UAAU,CAAC,WAAW;QACzB,GAAG,QAAQ,CAAC,WAAW;KACxB,CAAC;IAEF,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC;AACjE,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { PluginCandidate, PluginDiagnostic, PluginManifest } from "./types.js";
2
+ export type PluginManifestRecord = {
3
+ id: string;
4
+ rootDir: string;
5
+ source: string;
6
+ origin: PluginCandidate["origin"];
7
+ manifestPath: string;
8
+ manifest: PluginManifest;
9
+ };
10
+ export type PluginManifestRegistry = {
11
+ manifests: Map<string, PluginManifestRecord>;
12
+ diagnostics: PluginDiagnostic[];
13
+ };
14
+ export declare function loadPluginManifestRegistry(candidates: PluginCandidate[]): PluginManifestRegistry;
15
+ //# sourceMappingURL=manifest-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-registry.d.ts","sourceRoot":"","sources":["../../src/plugins/manifest-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGpF,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,cAAc,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAC7C,WAAW,EAAE,gBAAgB,EAAE,CAAC;CACjC,CAAC;AAEF,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,eAAe,EAAE,GAC5B,sBAAsB,CAoCxB"}
@@ -0,0 +1,37 @@
1
+ import { loadPluginManifest } from "./manifest.js";
2
+ export function loadPluginManifestRegistry(candidates) {
3
+ const manifests = new Map();
4
+ const diagnostics = [];
5
+ for (const candidate of candidates) {
6
+ const result = loadPluginManifest(candidate.rootDir);
7
+ if (!result.ok) {
8
+ diagnostics.push({
9
+ level: "error",
10
+ message: result.error,
11
+ source: candidate.source,
12
+ pluginId: candidate.idHint,
13
+ });
14
+ continue;
15
+ }
16
+ const pluginId = result.manifest.id;
17
+ if (manifests.has(pluginId)) {
18
+ diagnostics.push({
19
+ level: "warn",
20
+ message: `duplicate plugin id ignored: ${pluginId}`,
21
+ source: candidate.source,
22
+ pluginId,
23
+ });
24
+ continue;
25
+ }
26
+ manifests.set(pluginId, {
27
+ id: pluginId,
28
+ rootDir: candidate.rootDir,
29
+ source: candidate.source,
30
+ origin: candidate.origin,
31
+ manifestPath: result.manifestPath,
32
+ manifest: result.manifest,
33
+ });
34
+ }
35
+ return { manifests, diagnostics };
36
+ }
37
+ //# sourceMappingURL=manifest-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-registry.js","sourceRoot":"","sources":["../../src/plugins/manifest-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAgBnD,MAAM,UAAU,0BAA0B,CACxC,UAA6B;IAE7B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAgC,CAAC;IAC1D,MAAM,WAAW,GAAuB,EAAE,CAAC;IAE3C,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,WAAW,CAAC,IAAI,CAAC;gBACf,KAAK,EAAE,OAAO;gBACd,OAAO,EAAG,MAAuC,CAAC,KAAK;gBACvD,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,QAAQ,EAAE,SAAS,CAAC,MAAM;aAC3B,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,WAAW,CAAC,IAAI,CAAC;gBACf,KAAK,EAAE,MAAM;gBACb,OAAO,EAAE,gCAAgC,QAAQ,EAAE;gBACnD,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,QAAQ;aACT,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE;YACtB,EAAE,EAAE,QAAQ;YACZ,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC;AACpC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { PluginManifestLoadResult } from "./types.js";
2
+ export declare const PLUGIN_MANIFEST_FILENAME = "aimax.plugin.json";
3
+ export declare const PLUGIN_MANIFEST_FILENAMES: readonly ["aimax.plugin.json"];
4
+ export declare function resolvePluginManifestPath(rootDir: string): string;
5
+ export declare function loadPluginManifest(rootDir: string, rejectHardlinks?: boolean): PluginManifestLoadResult;
6
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/plugins/manifest.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAkD,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE3G,eAAO,MAAM,wBAAwB,sBAAsB,CAAC;AAC5D,eAAO,MAAM,yBAAyB,gCAAsC,CAAC;AAE7E,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQjE;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,eAAe,UAAO,GACrB,wBAAwB,CAoE1B"}