@di-code/coding-agent 0.1.6 → 0.1.8

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 (338) hide show
  1. package/README.md +112 -68
  2. package/compositions/base.yml +54 -0
  3. package/compositions/interactive.yml +14 -0
  4. package/compositions/json.yml +6 -0
  5. package/compositions/print.yml +5 -0
  6. package/compositions/rpc.yml +12 -0
  7. package/compositions/webui.yml +9 -0
  8. package/dist/cli.d.ts +22 -1
  9. package/dist/cli.d.ts.map +1 -1
  10. package/dist/cli.js +97 -3
  11. package/dist/cli.js.map +1 -1
  12. package/dist/composition-loader-entry.d.ts +11 -0
  13. package/dist/composition-loader-entry.d.ts.map +1 -0
  14. package/dist/composition-loader-entry.js +12 -0
  15. package/dist/composition-loader-entry.js.map +1 -0
  16. package/dist/compositions.d.ts +32 -0
  17. package/dist/compositions.d.ts.map +1 -0
  18. package/dist/compositions.js +173 -0
  19. package/dist/compositions.js.map +1 -0
  20. package/dist/core/session/session-manager.d.ts +9 -2
  21. package/dist/core/session/session-manager.d.ts.map +1 -1
  22. package/dist/core/session/session-manager.js +28 -0
  23. package/dist/core/session/session-manager.js.map +1 -1
  24. package/dist/core/session/session-storage.d.ts.map +1 -1
  25. package/dist/core/session/session-storage.js +20 -3
  26. package/dist/core/session/session-storage.js.map +1 -1
  27. package/dist/core/session/types.d.ts +11 -2
  28. package/dist/core/session/types.d.ts.map +1 -1
  29. package/dist/core/session/types.js.map +1 -1
  30. package/dist/core/session-tools.d.ts +5 -0
  31. package/dist/core/session-tools.d.ts.map +1 -0
  32. package/dist/core/session-tools.js +17 -0
  33. package/dist/core/session-tools.js.map +1 -0
  34. package/dist/core/session.d.ts +21 -7
  35. package/dist/core/session.d.ts.map +1 -1
  36. package/dist/core/session.js +77 -41
  37. package/dist/core/session.js.map +1 -1
  38. package/dist/core/tools/bash.d.ts +1 -38
  39. package/dist/core/tools/bash.d.ts.map +1 -1
  40. package/dist/core/tools/bash.js +1 -207
  41. package/dist/core/tools/bash.js.map +1 -1
  42. package/dist/core/tools/edit-diff.d.ts +1 -24
  43. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  44. package/dist/core/tools/edit-diff.js +1 -135
  45. package/dist/core/tools/edit-diff.js.map +1 -1
  46. package/dist/core/tools/edit.d.ts +1 -26
  47. package/dist/core/tools/edit.d.ts.map +1 -1
  48. package/dist/core/tools/edit.js +1 -140
  49. package/dist/core/tools/edit.js.map +1 -1
  50. package/dist/core/tools/file-mutation-queue.d.ts +1 -1
  51. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  52. package/dist/core/tools/file-mutation-queue.js +1 -23
  53. package/dist/core/tools/file-mutation-queue.js.map +1 -1
  54. package/dist/core/tools/file-search.d.ts +1 -13
  55. package/dist/core/tools/file-search.d.ts.map +1 -1
  56. package/dist/core/tools/file-search.js +1 -98
  57. package/dist/core/tools/file-search.js.map +1 -1
  58. package/dist/core/tools/glob.d.ts +1 -10
  59. package/dist/core/tools/glob.d.ts.map +1 -1
  60. package/dist/core/tools/glob.js +1 -43
  61. package/dist/core/tools/glob.js.map +1 -1
  62. package/dist/core/tools/grep.d.ts +1 -12
  63. package/dist/core/tools/grep.d.ts.map +1 -1
  64. package/dist/core/tools/grep.js +1 -66
  65. package/dist/core/tools/grep.js.map +1 -1
  66. package/dist/core/tools/load-skill.d.ts +1 -9
  67. package/dist/core/tools/load-skill.d.ts.map +1 -1
  68. package/dist/core/tools/load-skill.js +1 -21
  69. package/dist/core/tools/load-skill.js.map +1 -1
  70. package/dist/core/tools/path-boundary.d.ts +1 -4
  71. package/dist/core/tools/path-boundary.d.ts.map +1 -1
  72. package/dist/core/tools/path-boundary.js +1 -65
  73. package/dist/core/tools/path-boundary.js.map +1 -1
  74. package/dist/core/tools/read.d.ts +1 -16
  75. package/dist/core/tools/read.d.ts.map +1 -1
  76. package/dist/core/tools/read.js +1 -131
  77. package/dist/core/tools/read.js.map +1 -1
  78. package/dist/core/tools/write.d.ts +1 -16
  79. package/dist/core/tools/write.d.ts.map +1 -1
  80. package/dist/core/tools/write.js +1 -44
  81. package/dist/core/tools/write.js.map +1 -1
  82. package/dist/entry.js +30 -28
  83. package/dist/entry.js.map +1 -1
  84. package/dist/i18n.d.ts.map +1 -1
  85. package/dist/i18n.js +2 -0
  86. package/dist/i18n.js.map +1 -1
  87. package/dist/index.d.ts +6 -3
  88. package/dist/index.d.ts.map +1 -1
  89. package/dist/index.js +6 -3
  90. package/dist/index.js.map +1 -1
  91. package/dist/interactive/builtin.d.ts +17 -0
  92. package/dist/interactive/builtin.d.ts.map +1 -0
  93. package/dist/interactive/builtin.js +47 -0
  94. package/dist/interactive/builtin.js.map +1 -0
  95. package/dist/interactive/controller.d.ts +85 -0
  96. package/dist/interactive/controller.d.ts.map +1 -0
  97. package/dist/interactive/controller.js +211 -0
  98. package/dist/interactive/controller.js.map +1 -0
  99. package/dist/interactive/index.d.ts +3 -0
  100. package/dist/interactive/index.d.ts.map +1 -0
  101. package/dist/interactive/index.js +3 -0
  102. package/dist/interactive/index.js.map +1 -0
  103. package/dist/interactive-host-entry.d.ts +7 -0
  104. package/dist/interactive-host-entry.d.ts.map +1 -0
  105. package/dist/interactive-host-entry.js +123 -0
  106. package/dist/interactive-host-entry.js.map +1 -0
  107. package/dist/interactive-profile.d.ts +18 -0
  108. package/dist/interactive-profile.d.ts.map +1 -0
  109. package/dist/interactive-profile.js +290 -0
  110. package/dist/interactive-profile.js.map +1 -0
  111. package/dist/interactive-resources-entry.d.ts +7 -0
  112. package/dist/interactive-resources-entry.d.ts.map +1 -0
  113. package/dist/interactive-resources-entry.js +42 -0
  114. package/dist/interactive-resources-entry.js.map +1 -0
  115. package/dist/legacy-main.d.ts +39 -0
  116. package/dist/legacy-main.d.ts.map +1 -0
  117. package/dist/legacy-main.js +611 -0
  118. package/dist/legacy-main.js.map +1 -0
  119. package/dist/main.d.ts +15 -34
  120. package/dist/main.d.ts.map +1 -1
  121. package/dist/main.js +130 -513
  122. package/dist/main.js.map +1 -1
  123. package/dist/mcp/entries.d.ts +42 -0
  124. package/dist/mcp/entries.d.ts.map +1 -0
  125. package/dist/mcp/entries.js +98 -0
  126. package/dist/mcp/entries.js.map +1 -0
  127. package/dist/mcp-client-entry.d.ts +5 -0
  128. package/dist/mcp-client-entry.d.ts.map +1 -0
  129. package/dist/mcp-client-entry.js +6 -0
  130. package/dist/mcp-client-entry.js.map +1 -0
  131. package/dist/mcp-config-entry.d.ts +5 -0
  132. package/dist/mcp-config-entry.d.ts.map +1 -0
  133. package/dist/mcp-config-entry.js +6 -0
  134. package/dist/mcp-config-entry.js.map +1 -0
  135. package/dist/mcp-tools-entry.d.ts +5 -0
  136. package/dist/mcp-tools-entry.d.ts.map +1 -0
  137. package/dist/mcp-tools-entry.js +6 -0
  138. package/dist/mcp-tools-entry.js.map +1 -0
  139. package/dist/mcp-transport-entry.d.ts +5 -0
  140. package/dist/mcp-transport-entry.d.ts.map +1 -0
  141. package/dist/mcp-transport-entry.js +6 -0
  142. package/dist/mcp-transport-entry.js.map +1 -0
  143. package/dist/modes/interactive-entry.d.ts +18 -0
  144. package/dist/modes/interactive-entry.d.ts.map +1 -0
  145. package/dist/modes/interactive-entry.js +21 -0
  146. package/dist/modes/interactive-entry.js.map +1 -0
  147. package/dist/modes/interactive-state.js +1 -1
  148. package/dist/modes/interactive-state.js.map +1 -1
  149. package/dist/modes/interactive.d.ts +16 -6
  150. package/dist/modes/interactive.d.ts.map +1 -1
  151. package/dist/modes/interactive.js +99 -33
  152. package/dist/modes/interactive.js.map +1 -1
  153. package/dist/modes/json-entry.d.ts +13 -0
  154. package/dist/modes/json-entry.d.ts.map +1 -0
  155. package/dist/modes/json-entry.js +14 -0
  156. package/dist/modes/json-entry.js.map +1 -0
  157. package/dist/modes/json.d.ts +4 -1
  158. package/dist/modes/json.d.ts.map +1 -1
  159. package/dist/modes/json.js +3 -3
  160. package/dist/modes/json.js.map +1 -1
  161. package/dist/modes/print-entry.d.ts +10 -0
  162. package/dist/modes/print-entry.d.ts.map +1 -0
  163. package/dist/modes/print-entry.js +11 -0
  164. package/dist/modes/print-entry.js.map +1 -0
  165. package/dist/modes/tree-selector.d.ts.map +1 -1
  166. package/dist/modes/tree-selector.js +4 -0
  167. package/dist/modes/tree-selector.js.map +1 -1
  168. package/dist/plugin-dump-composition.d.ts +6 -0
  169. package/dist/plugin-dump-composition.d.ts.map +1 -0
  170. package/dist/plugin-dump-composition.js +7 -0
  171. package/dist/plugin-dump-composition.js.map +1 -0
  172. package/dist/plugin-inventory.d.ts +7 -0
  173. package/dist/plugin-inventory.d.ts.map +1 -0
  174. package/dist/plugin-inventory.js +8 -0
  175. package/dist/plugin-inventory.js.map +1 -0
  176. package/dist/plugin-manager.d.ts +6 -0
  177. package/dist/plugin-manager.d.ts.map +1 -0
  178. package/dist/plugin-manager.js +7 -0
  179. package/dist/plugin-manager.js.map +1 -0
  180. package/dist/plugin-trace.d.ts +6 -0
  181. package/dist/plugin-trace.d.ts.map +1 -0
  182. package/dist/plugin-trace.js +7 -0
  183. package/dist/plugin-trace.js.map +1 -0
  184. package/dist/plugins/dynamic-broker.d.ts +76 -0
  185. package/dist/plugins/dynamic-broker.d.ts.map +1 -0
  186. package/dist/plugins/dynamic-broker.js +852 -0
  187. package/dist/plugins/dynamic-broker.js.map +1 -0
  188. package/dist/plugins/profile.d.ts +15 -0
  189. package/dist/plugins/profile.d.ts.map +1 -0
  190. package/dist/plugins/profile.js +34 -0
  191. package/dist/plugins/profile.js.map +1 -0
  192. package/dist/plugins/runtime-host.d.ts +37 -0
  193. package/dist/plugins/runtime-host.d.ts.map +1 -0
  194. package/dist/plugins/runtime-host.js +95 -0
  195. package/dist/plugins/runtime-host.js.map +1 -0
  196. package/dist/plugins/trust.d.ts +8 -0
  197. package/dist/plugins/trust.d.ts.map +1 -0
  198. package/dist/plugins/trust.js +59 -0
  199. package/dist/plugins/trust.js.map +1 -0
  200. package/dist/project-trust-entry.d.ts +15 -0
  201. package/dist/project-trust-entry.d.ts.map +1 -0
  202. package/dist/project-trust-entry.js +15 -0
  203. package/dist/project-trust-entry.js.map +1 -0
  204. package/dist/rpc/client.d.ts +78 -6
  205. package/dist/rpc/client.d.ts.map +1 -1
  206. package/dist/rpc/client.js +172 -4
  207. package/dist/rpc/client.js.map +1 -1
  208. package/dist/rpc/dispatcher.d.ts +121 -0
  209. package/dist/rpc/dispatcher.d.ts.map +1 -0
  210. package/dist/rpc/dispatcher.js +994 -0
  211. package/dist/rpc/dispatcher.js.map +1 -0
  212. package/dist/rpc/index.d.ts +2 -0
  213. package/dist/rpc/index.d.ts.map +1 -1
  214. package/dist/rpc/index.js +2 -0
  215. package/dist/rpc/index.js.map +1 -1
  216. package/dist/rpc/lifecycle.d.ts +6 -0
  217. package/dist/rpc/lifecycle.d.ts.map +1 -0
  218. package/dist/rpc/lifecycle.js +24 -0
  219. package/dist/rpc/lifecycle.js.map +1 -0
  220. package/dist/rpc/protocol.d.ts +112 -31
  221. package/dist/rpc/protocol.d.ts.map +1 -1
  222. package/dist/rpc/protocol.js +569 -117
  223. package/dist/rpc/protocol.js.map +1 -1
  224. package/dist/rpc/server-service.d.ts +7 -0
  225. package/dist/rpc/server-service.d.ts.map +1 -0
  226. package/dist/rpc/server-service.js +3 -0
  227. package/dist/rpc/server-service.js.map +1 -0
  228. package/dist/rpc/server.d.ts +16 -19
  229. package/dist/rpc/server.d.ts.map +1 -1
  230. package/dist/rpc/server.js +59 -115
  231. package/dist/rpc/server.js.map +1 -1
  232. package/dist/rpc-client-sdk-entry.d.ts +12 -0
  233. package/dist/rpc-client-sdk-entry.d.ts.map +1 -0
  234. package/dist/rpc-client-sdk-entry.js +11 -0
  235. package/dist/rpc-client-sdk-entry.js.map +1 -0
  236. package/dist/rpc-entry.js +50 -18
  237. package/dist/rpc-entry.js.map +1 -1
  238. package/dist/rpc-server-entry.d.ts +8 -0
  239. package/dist/rpc-server-entry.d.ts.map +1 -0
  240. package/dist/rpc-server-entry.js +67 -0
  241. package/dist/rpc-server-entry.js.map +1 -0
  242. package/dist/runtime/attachment-store.d.ts +13 -0
  243. package/dist/runtime/attachment-store.d.ts.map +1 -0
  244. package/dist/runtime/attachment-store.js +93 -0
  245. package/dist/runtime/attachment-store.js.map +1 -0
  246. package/dist/runtime/bootstrap.d.ts +14 -0
  247. package/dist/runtime/bootstrap.d.ts.map +1 -0
  248. package/dist/runtime/bootstrap.js +29 -0
  249. package/dist/runtime/bootstrap.js.map +1 -0
  250. package/dist/runtime/interactive-host-service.d.ts +22 -0
  251. package/dist/runtime/interactive-host-service.d.ts.map +1 -0
  252. package/dist/runtime/interactive-host-service.js +2 -0
  253. package/dist/runtime/interactive-host-service.js.map +1 -0
  254. package/dist/runtime/interactive-resource-service.d.ts +11 -0
  255. package/dist/runtime/interactive-resource-service.d.ts.map +1 -0
  256. package/dist/runtime/interactive-resource-service.js +3 -0
  257. package/dist/runtime/interactive-resource-service.js.map +1 -0
  258. package/dist/runtime/plugin-inventory-entry.d.ts +5 -0
  259. package/dist/runtime/plugin-inventory-entry.d.ts.map +1 -0
  260. package/dist/runtime/plugin-inventory-entry.js +18 -0
  261. package/dist/runtime/plugin-inventory-entry.js.map +1 -0
  262. package/dist/runtime/plugin-inventory-service.d.ts +8 -0
  263. package/dist/runtime/plugin-inventory-service.d.ts.map +1 -0
  264. package/dist/runtime/plugin-inventory-service.js +3 -0
  265. package/dist/runtime/plugin-inventory-service.js.map +1 -0
  266. package/dist/runtime/plugin-manager-entry.d.ts +20 -0
  267. package/dist/runtime/plugin-manager-entry.d.ts.map +1 -0
  268. package/dist/runtime/plugin-manager-entry.js +96 -0
  269. package/dist/runtime/plugin-manager-entry.js.map +1 -0
  270. package/dist/runtime/plugin-observability-entry.d.ts +12 -0
  271. package/dist/runtime/plugin-observability-entry.d.ts.map +1 -0
  272. package/dist/runtime/plugin-observability-entry.js +73 -0
  273. package/dist/runtime/plugin-observability-entry.js.map +1 -0
  274. package/dist/runtime/product-host.d.ts +91 -0
  275. package/dist/runtime/product-host.d.ts.map +1 -0
  276. package/dist/runtime/product-host.js +529 -0
  277. package/dist/runtime/product-host.js.map +1 -0
  278. package/dist/runtime/session-factory.d.ts +17 -0
  279. package/dist/runtime/session-factory.d.ts.map +1 -0
  280. package/dist/runtime/session-factory.js +75 -0
  281. package/dist/runtime/session-factory.js.map +1 -0
  282. package/dist/runtime/session-host.d.ts +152 -0
  283. package/dist/runtime/session-host.d.ts.map +1 -0
  284. package/dist/runtime/session-host.js +895 -0
  285. package/dist/runtime/session-host.js.map +1 -0
  286. package/dist/runtime-core-entry.d.ts +11 -0
  287. package/dist/runtime-core-entry.d.ts.map +1 -0
  288. package/dist/runtime-core-entry.js +9 -0
  289. package/dist/runtime-core-entry.js.map +1 -0
  290. package/dist/session-factory-entry.d.ts +7 -0
  291. package/dist/session-factory-entry.d.ts.map +1 -0
  292. package/dist/session-factory-entry.js +9 -0
  293. package/dist/session-factory-entry.js.map +1 -0
  294. package/dist/session-store-jsonl-entry.d.ts +7 -0
  295. package/dist/session-store-jsonl-entry.d.ts.map +1 -0
  296. package/dist/session-store-jsonl-entry.js +33 -0
  297. package/dist/session-store-jsonl-entry.js.map +1 -0
  298. package/dist/startup.d.ts +21 -1
  299. package/dist/startup.d.ts.map +1 -1
  300. package/dist/startup.js +179 -10
  301. package/dist/startup.js.map +1 -1
  302. package/dist/subagents/index.d.ts +2 -0
  303. package/dist/subagents/index.d.ts.map +1 -0
  304. package/dist/subagents/index.js +2 -0
  305. package/dist/subagents/index.js.map +1 -0
  306. package/dist/subagents/service.d.ts +50 -0
  307. package/dist/subagents/service.d.ts.map +1 -0
  308. package/dist/subagents/service.js +521 -0
  309. package/dist/subagents/service.js.map +1 -0
  310. package/dist/ui-host.d.ts +125 -0
  311. package/dist/ui-host.d.ts.map +1 -0
  312. package/dist/ui-host.js +275 -0
  313. package/dist/ui-host.js.map +1 -0
  314. package/dist/web/assets/index-BwfuGMvv.css +1 -0
  315. package/dist/web/assets/index-DPUaJqFJ.js +41 -0
  316. package/dist/web/assets/index-DPUaJqFJ.js.map +1 -0
  317. package/dist/web/index.html +14 -0
  318. package/dist/web-command.d.ts +11 -0
  319. package/dist/web-command.d.ts.map +1 -0
  320. package/dist/web-command.js +114 -0
  321. package/dist/web-command.js.map +1 -0
  322. package/dist/web-frontend.d.ts +73 -0
  323. package/dist/web-frontend.d.ts.map +1 -0
  324. package/dist/web-frontend.js +249 -0
  325. package/dist/web-frontend.js.map +1 -0
  326. package/dist/web.d.ts +254 -0
  327. package/dist/web.d.ts.map +1 -0
  328. package/dist/web.js +740 -0
  329. package/dist/web.js.map +1 -0
  330. package/dist/webui-entry.d.ts +3 -0
  331. package/dist/webui-entry.d.ts.map +1 -0
  332. package/dist/webui-entry.js +73 -0
  333. package/dist/webui-entry.js.map +1 -0
  334. package/dist/webui.d.ts +91 -0
  335. package/dist/webui.d.ts.map +1 -0
  336. package/dist/webui.js +882 -0
  337. package/dist/webui.js.map +1 -0
  338. package/package.json +89 -8
@@ -0,0 +1,75 @@
1
+ import { agentSessionKey, compactionRegistryKey, networkCapabilityKey, processCapabilityKey, toolApprovalKey, toolOutputKey, toolPolicyKey, toolRegistryKey, workspaceCapabilityKey, } from "@di-code/builtins";
2
+ import { createServiceKey } from "@di-code/plugin-runtime";
3
+ import { createSkillCatalog } from "@di-code/skills";
4
+ import { AgentSession } from "../core/session.js";
5
+ const sessionDependenciesKey = createServiceKey("session-dependencies");
6
+ function asCompositionSessionOptions(value) {
7
+ if (typeof value !== "object" || value === null)
8
+ throw new TypeError("AgentSessionFactory options must be an object");
9
+ return value;
10
+ }
11
+ /**
12
+ * Installs the product AgentSession implementation behind the composition factory.
13
+ * Each session receives an isolated Context and immutable tool snapshot; the factory disposer releases all scopes.
14
+ */
15
+ export function installAgentSessionFactory(context) {
16
+ const factory = context.require(agentSessionKey);
17
+ const sessionContexts = new Set();
18
+ let nextSessionId = 0;
19
+ const unregister = factory.register((input) => {
20
+ const options = asCompositionSessionOptions(input);
21
+ const workspace = { ...context.require(workspaceCapabilityKey), allowedRoot: options.allowedRoot };
22
+ const skillCatalog = createSkillCatalog((options.skills ?? []).map((skill) => ({
23
+ skill: {
24
+ ...skill,
25
+ source: skill.source ?? (skill.scope === "explicit" ? "explicit" : skill.scope === "project" ? "project" : "user"),
26
+ userInvocable: skill.userInvocable ?? true,
27
+ },
28
+ diagnostics: [],
29
+ })));
30
+ const tools = Object.freeze([
31
+ ...context.require(toolRegistryKey).snapshot({
32
+ workspace,
33
+ process: context.require(processCapabilityKey),
34
+ network: context.require(networkCapabilityKey),
35
+ policy: context.require(toolPolicyKey),
36
+ approval: options.toolApproval ?? context.require(toolApprovalKey),
37
+ output: context.require(toolOutputKey),
38
+ skills: skillCatalog,
39
+ }),
40
+ ...(options.externalTools ?? []),
41
+ ]);
42
+ const compaction = context
43
+ .require(compactionRegistryKey)
44
+ .snapshot()
45
+ .find((entry) => entry.name === "tool-result");
46
+ const prepareMessages = compaction
47
+ ? async (messages, signal) => {
48
+ const result = await compaction.compact({ messages }, signal);
49
+ if (typeof result !== "object" ||
50
+ result === null ||
51
+ !Array.isArray(result.messages))
52
+ throw new TypeError("tool-result compaction contribution must return { messages }");
53
+ return result.messages;
54
+ }
55
+ : undefined;
56
+ const sessionContext = context.child({ id: `session-${++nextSessionId}`, isolate: true });
57
+ sessionContexts.add(sessionContext);
58
+ sessionContext.set(sessionDependenciesKey, {
59
+ tools,
60
+ });
61
+ return new AgentSession({
62
+ ...options,
63
+ ...(prepareMessages ? { compaction: { ...(options.compaction ?? {}), prepareMessages } } : {}),
64
+ tools: sessionContext.require(sessionDependenciesKey).tools,
65
+ onDispose: () => sessionContext.dispose(),
66
+ });
67
+ });
68
+ return async () => {
69
+ unregister();
70
+ for (const sessionContext of [...sessionContexts].reverse())
71
+ await sessionContext.dispose();
72
+ sessionContexts.clear();
73
+ };
74
+ }
75
+ //# sourceMappingURL=session-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-factory.js","sourceRoot":"","sources":["../../src/runtime/session-factory.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tagentSessionKey,\n\tcompactionRegistryKey,\n\tnetworkCapabilityKey,\n\tprocessCapabilityKey,\n\ttype ToolApprovalCapability,\n\ttoolApprovalKey,\n\ttoolOutputKey,\n\ttoolPolicyKey,\n\ttoolRegistryKey,\n\tworkspaceCapabilityKey,\n} from \"@di-code/builtins\";\nimport { type Context, createServiceKey, type Disposer } from \"@di-code/plugin-runtime\";\nimport { createSkillCatalog } from \"@di-code/skills\";\nimport type { SkillResource } from \"../core/resources/types.ts\";\nimport { AgentSession, type AgentSessionOptions, type AgentSessionTool } from \"../core/session.ts\";\n\nexport interface CompositionSessionOptions extends Omit<AgentSessionOptions, \"tools\" | \"skills\"> {\n\treadonly skills?: readonly SkillResource[];\n\t/** MCP tools already adapted by the product integration layer. */\n\treadonly externalTools?: readonly AgentSessionTool[];\n\t/** Per-session approval boundary; defaults to the composition capability. */\n\treadonly toolApproval?: ToolApprovalCapability;\n}\n\ninterface SessionDependencies {\n\treadonly tools: readonly AgentSessionTool[];\n}\n\nconst sessionDependenciesKey = createServiceKey<SessionDependencies>(\"session-dependencies\");\n\nfunction asCompositionSessionOptions(value: unknown): CompositionSessionOptions {\n\tif (typeof value !== \"object\" || value === null) throw new TypeError(\"AgentSessionFactory options must be an object\");\n\treturn value as CompositionSessionOptions;\n}\n\n/**\n * Installs the product AgentSession implementation behind the composition factory.\n * Each session receives an isolated Context and immutable tool snapshot; the factory disposer releases all scopes.\n */\nexport function installAgentSessionFactory(context: Context): Disposer {\n\tconst factory = context.require(agentSessionKey);\n\tconst sessionContexts = new Set<Context>();\n\tlet nextSessionId = 0;\n\n\tconst unregister = factory.register((input) => {\n\t\tconst options = asCompositionSessionOptions(input);\n\t\tconst workspace = { ...context.require(workspaceCapabilityKey), allowedRoot: options.allowedRoot };\n\t\tconst skillCatalog = createSkillCatalog(\n\t\t\t(options.skills ?? []).map((skill) => ({\n\t\t\t\tskill: {\n\t\t\t\t\t...skill,\n\t\t\t\t\tsource:\n\t\t\t\t\t\tskill.source ?? (skill.scope === \"explicit\" ? \"explicit\" : skill.scope === \"project\" ? \"project\" : \"user\"),\n\t\t\t\t\tuserInvocable: skill.userInvocable ?? true,\n\t\t\t\t},\n\t\t\t\tdiagnostics: [],\n\t\t\t})),\n\t\t);\n\t\tconst tools = Object.freeze([\n\t\t\t...context.require(toolRegistryKey).snapshot({\n\t\t\t\tworkspace,\n\t\t\t\tprocess: context.require(processCapabilityKey),\n\t\t\t\tnetwork: context.require(networkCapabilityKey),\n\t\t\t\tpolicy: context.require(toolPolicyKey),\n\t\t\t\tapproval: options.toolApproval ?? context.require(toolApprovalKey),\n\t\t\t\toutput: context.require(toolOutputKey),\n\t\t\t\tskills: skillCatalog,\n\t\t\t}),\n\t\t\t...(options.externalTools ?? []),\n\t\t]);\n\t\tconst compaction = context\n\t\t\t.require(compactionRegistryKey)\n\t\t\t.snapshot()\n\t\t\t.find((entry) => entry.name === \"tool-result\");\n\t\tconst prepareMessages = compaction\n\t\t\t? async (messages: readonly import(\"@di-code/ai\").Message[], signal?: AbortSignal) => {\n\t\t\t\t\tconst result = await compaction.compact({ messages }, signal);\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof result !== \"object\" ||\n\t\t\t\t\t\tresult === null ||\n\t\t\t\t\t\t!Array.isArray((result as { readonly messages?: unknown }).messages)\n\t\t\t\t\t)\n\t\t\t\t\t\tthrow new TypeError(\"tool-result compaction contribution must return { messages }\");\n\t\t\t\t\treturn (result as { readonly messages: readonly import(\"@di-code/ai\").Message[] }).messages;\n\t\t\t\t}\n\t\t\t: undefined;\n\t\tconst sessionContext = context.child({ id: `session-${++nextSessionId}`, isolate: true });\n\t\tsessionContexts.add(sessionContext);\n\t\tsessionContext.set(sessionDependenciesKey, {\n\t\t\ttools,\n\t\t});\n\t\treturn new AgentSession({\n\t\t\t...options,\n\t\t\t...(prepareMessages ? { compaction: { ...(options.compaction ?? {}), prepareMessages } } : {}),\n\t\t\ttools: sessionContext.require(sessionDependenciesKey).tools,\n\t\t\tonDispose: () => sessionContext.dispose(),\n\t\t});\n\t});\n\treturn async () => {\n\t\tunregister();\n\t\tfor (const sessionContext of [...sessionContexts].reverse()) await sessionContext.dispose();\n\t\tsessionContexts.clear();\n\t};\n}\n"]}
@@ -0,0 +1,152 @@
1
+ import type { AssistantMessage, ImageContent, Message, Model, Provider, ThinkingLevel } from "@di-code/ai";
2
+ import { type ToolApprovalCapability } from "@di-code/builtins";
3
+ import type { Context } from "@di-code/plugin-runtime";
4
+ import type { SessionTreeNode } from "../core/session/types.ts";
5
+ import { type AgentSessionCompactionOptions, type AgentSessionEvent, type SessionUsage, type TreeNavigationResult } from "../core/session.ts";
6
+ export type SessionId = string & {
7
+ readonly __sessionId: unique symbol;
8
+ };
9
+ export type RequestId = string & {
10
+ readonly __requestId: unique symbol;
11
+ };
12
+ export interface SessionInfo {
13
+ readonly id: SessionId;
14
+ readonly displayId?: string;
15
+ readonly cwd: string;
16
+ readonly label: string;
17
+ readonly modifiedAt?: number;
18
+ readonly stats?: SessionStats;
19
+ }
20
+ export interface SessionStats {
21
+ readonly entryCount: number;
22
+ readonly messageCount: number;
23
+ readonly branchCount: number;
24
+ }
25
+ export interface SessionSnapshot {
26
+ readonly session: SessionInfo;
27
+ readonly transcript: readonly Message[];
28
+ readonly tree: readonly SessionTreeNode[];
29
+ readonly stats: SessionStats;
30
+ readonly readOnly: true;
31
+ }
32
+ export interface SessionHostState {
33
+ readonly disposed: boolean;
34
+ readonly workspace: string;
35
+ readonly activeSession?: SessionInfo;
36
+ readonly busy: boolean;
37
+ readonly operations: readonly {
38
+ readonly requestId: RequestId;
39
+ readonly kind: SessionOperationKind;
40
+ }[];
41
+ }
42
+ export type SessionOperationKind = "prompt" | "steer" | "retry" | "compact" | "tree" | "session";
43
+ export type SessionHostEvent = AgentSessionEvent | {
44
+ readonly type: "session_changed";
45
+ readonly session?: SessionInfo;
46
+ };
47
+ export type SessionHostListener = (event: SessionHostEvent) => void | Promise<void>;
48
+ export interface PromptInput {
49
+ readonly text: string;
50
+ readonly requestId?: string;
51
+ }
52
+ export interface RetryInput {
53
+ readonly targetRequestId: string;
54
+ }
55
+ export interface SessionHostBootstrapOptions {
56
+ readonly cwd: string;
57
+ readonly agentDir: string;
58
+ readonly projectTrusted?: boolean;
59
+ readonly noSkills?: boolean;
60
+ readonly noContextFiles?: boolean;
61
+ readonly skillPaths?: readonly string[];
62
+ readonly provider?: Provider;
63
+ readonly model?: Model;
64
+ readonly signal?: AbortSignal;
65
+ readonly compaction?: AgentSessionCompactionOptions;
66
+ /** Per-host approval boundary captured by each created AgentSession. */
67
+ readonly toolApproval?: ToolApprovalCapability;
68
+ /** Optional managed JSONL file to open before the host is returned. */
69
+ readonly initialSessionPath?: string;
70
+ }
71
+ export interface SessionHost {
72
+ readonly state: () => SessionHostState;
73
+ readonly listSessions: () => Promise<readonly SessionInfo[]>;
74
+ readonly createSession: () => Promise<SessionInfo>;
75
+ readonly openSession: (sessionId: string) => Promise<SessionInfo>;
76
+ readonly inspectSession: (sessionId: string) => Promise<SessionSnapshot>;
77
+ readonly renameSession: (sessionId: string, label: string) => Promise<SessionInfo>;
78
+ readonly deleteSession: (sessionId: string, confirmation: string) => Promise<void>;
79
+ readonly branchSession: (sessionId?: string, entryId?: string) => Promise<SessionInfo>;
80
+ readonly closeSession: () => Promise<void>;
81
+ readonly prompt: (input: PromptInput | string, signal?: AbortSignal) => Promise<AssistantMessage>;
82
+ readonly promptWithImages: (text: string, images: readonly ImageContent[], signal?: AbortSignal) => Promise<AssistantMessage>;
83
+ readonly steer: (input: PromptInput | string, signal?: AbortSignal) => Promise<void>;
84
+ readonly steerWithImages: (text: string, images: readonly ImageContent[], signal?: AbortSignal) => Promise<void>;
85
+ readonly retry: (input?: RetryInput | AbortSignal, signal?: AbortSignal) => Promise<AssistantMessage>;
86
+ readonly cancel: (requestId: string) => boolean;
87
+ readonly transcript: () => readonly import("@di-code/ai").Message[];
88
+ readonly tree: () => readonly SessionTreeNode[];
89
+ readonly navigateTree: (entryId: string) => Promise<TreeNavigationResult>;
90
+ readonly setModel: (modelId: string) => Model;
91
+ readonly setRuntime: (providerId: string, modelId: string) => Model;
92
+ /** Applies an already-resolved runtime without requiring it in the registry. */
93
+ readonly setRuntimeValue: (provider: Provider, model: Model) => Model;
94
+ readonly setThinkingLevel: (level: ThinkingLevel) => ThinkingLevel;
95
+ readonly cycleThinkingLevel: () => ThinkingLevel | undefined;
96
+ readonly compact: (signal?: AbortSignal) => Promise<void>;
97
+ readonly setCompactionEnabled: (enabled: boolean) => boolean;
98
+ /** Reloads Skills, context and MCP tools after an explicit product-configuration change. */
99
+ readonly refreshResources: (projectTrusted?: boolean, signal?: AbortSignal) => Promise<void>;
100
+ readonly usage: () => SessionUsage;
101
+ readonly ui: () => SessionHostUi;
102
+ readonly subscribe: (listener: SessionHostListener) => () => void;
103
+ readonly dispose: () => Promise<void>;
104
+ }
105
+ /** Internal presentation facade. It exposes snapshots and host-owned operations, never Session internals. */
106
+ export interface SessionHostUi {
107
+ readonly allowedRoot: string;
108
+ readonly modelId: string;
109
+ readonly providerId: string;
110
+ readonly thinkingLevel?: ThinkingLevel;
111
+ readonly availableModels: readonly Model[];
112
+ readonly availableSkills: readonly import("../core/resources/types.ts").SkillResource[];
113
+ readonly compactionEnabled: boolean;
114
+ readonly sessionFile?: string;
115
+ readonly sessionTree: readonly SessionTreeNode[];
116
+ readonly sessionLeafId?: string;
117
+ readonly transcript: readonly Message[];
118
+ readonly usage: SessionUsage;
119
+ readonly promptWithImages: SessionHost["promptWithImages"];
120
+ readonly retry: SessionHost["retry"];
121
+ readonly steerWithImages: SessionHost["steerWithImages"];
122
+ readonly subscribeSession: (listener: (event: AgentSessionEvent) => void | Promise<void>) => () => void;
123
+ readonly setModel: SessionHost["setModel"];
124
+ readonly setRuntime: (provider: Provider, model: Model) => Model;
125
+ readonly cycleThinkingLevel: SessionHost["cycleThinkingLevel"];
126
+ readonly setCompactionEnabled: SessionHost["setCompactionEnabled"];
127
+ readonly navigateTree: SessionHost["navigateTree"];
128
+ readonly compact: SessionHost["compact"];
129
+ }
130
+ export declare class SessionHostError extends Error {
131
+ readonly code: "INVALID_WORKSPACE" | "NOT_FOUND" | "BUSY" | "SESSION_IN_USE" | "DISPOSED" | "INVALID_INPUT" | "INTERNAL";
132
+ constructor(code: SessionHostError["code"], message: string, options?: {
133
+ readonly cause?: unknown;
134
+ });
135
+ }
136
+ export declare function createSessionHost(context: Context, options: SessionHostBootstrapOptions): Promise<SessionHost>;
137
+ export interface SessionActor extends SessionHost {
138
+ readonly principal: string;
139
+ readonly workspace: string;
140
+ }
141
+ export interface HostManagerOptions extends SessionHostBootstrapOptions {
142
+ readonly principal: string;
143
+ }
144
+ export declare class HostManager {
145
+ private readonly actors;
146
+ private disposed;
147
+ private readonly context;
148
+ constructor(context: Context);
149
+ get(options: HostManagerOptions): Promise<SessionActor>;
150
+ dispose(): Promise<void>;
151
+ }
152
+ //# sourceMappingURL=session-host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-host.d.ts","sourceRoot":"","sources":["../../src/runtime/session-host.ts"],"names":[],"mappings":"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"}