@antelopejs/dms-ai 0.0.5 → 0.1.0

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 (218) hide show
  1. package/README.md +53 -2
  2. package/dist/routes/settings.d.ts +7 -0
  3. package/dist/routes/settings.js +2 -0
  4. package/dist/routes/settings.js.map +1 -1
  5. package/frontend-vue/app/components/SettingsView.vue +85 -3
  6. package/frontend-vue/app/plugins/ai.client.ts +17 -5
  7. package/frontend-vue/app/runtime/session-gate.ts +22 -0
  8. package/frontend-vue/tests/session-gate.test.ts +39 -0
  9. package/frontend-vue/tests/sidecar-guest.test.ts +53 -19
  10. package/package.json +11 -1
  11. package/sidecar/chatbox/dist/assets/index-CEZ1NLp9.js +52 -0
  12. package/sidecar/chatbox/dist/assets/{index-pP_KOHIn.css → index-D_51Vqqk.css} +1 -1
  13. package/sidecar/chatbox/dist/index.html +2 -2
  14. package/sidecar/dist/agent/attachment-files.d.ts +5 -0
  15. package/sidecar/dist/agent/attachment-files.js +29 -0
  16. package/sidecar/dist/agent/attachment-files.js.map +1 -0
  17. package/sidecar/dist/agent/provider.d.ts +40 -0
  18. package/sidecar/dist/agent/provider.js +2 -0
  19. package/sidecar/dist/agent/provider.js.map +1 -0
  20. package/sidecar/dist/agent/{claude-runner.d.ts → runner.d.ts} +8 -11
  21. package/sidecar/dist/agent/runner.js +71 -0
  22. package/sidecar/dist/agent/runner.js.map +1 -0
  23. package/sidecar/dist/agent/session.d.ts +22 -0
  24. package/sidecar/dist/agent/{claude-session.js → session.js} +39 -47
  25. package/sidecar/dist/agent/session.js.map +1 -0
  26. package/sidecar/dist/agent/switching-runner.d.ts +6 -0
  27. package/sidecar/dist/agent/switching-runner.js +58 -0
  28. package/sidecar/dist/agent/switching-runner.js.map +1 -0
  29. package/sidecar/dist/constants/agent.d.ts +2 -12
  30. package/sidecar/dist/constants/agent.js +2 -11
  31. package/sidecar/dist/constants/agent.js.map +1 -1
  32. package/sidecar/dist/constants/claude.d.ts +10 -0
  33. package/sidecar/dist/constants/claude.js +10 -0
  34. package/sidecar/dist/constants/claude.js.map +1 -0
  35. package/sidecar/dist/constants/codex.d.ts +85 -0
  36. package/sidecar/dist/constants/codex.js +110 -0
  37. package/sidecar/dist/constants/codex.js.map +1 -0
  38. package/sidecar/dist/constants/http.d.ts +1 -0
  39. package/sidecar/dist/constants/http.js +1 -0
  40. package/sidecar/dist/constants/http.js.map +1 -1
  41. package/sidecar/dist/constants/mcp.d.ts +6 -0
  42. package/sidecar/dist/constants/mcp.js +11 -0
  43. package/sidecar/dist/constants/mcp.js.map +1 -1
  44. package/sidecar/dist/constants/paths.d.ts +5 -0
  45. package/sidecar/dist/constants/paths.js +5 -0
  46. package/sidecar/dist/constants/paths.js.map +1 -1
  47. package/sidecar/dist/constants/providers.d.ts +16 -0
  48. package/sidecar/dist/constants/providers.js +17 -0
  49. package/sidecar/dist/constants/providers.js.map +1 -0
  50. package/sidecar/dist/constants/settings.d.ts +1 -4
  51. package/sidecar/dist/constants/settings.js +2 -12
  52. package/sidecar/dist/constants/settings.js.map +1 -1
  53. package/sidecar/dist/constants/skills.d.ts +1 -0
  54. package/sidecar/dist/constants/skills.js +2 -0
  55. package/sidecar/dist/constants/skills.js.map +1 -0
  56. package/sidecar/dist/constants/timing.d.ts +1 -0
  57. package/sidecar/dist/constants/timing.js +1 -0
  58. package/sidecar/dist/constants/timing.js.map +1 -1
  59. package/sidecar/dist/constants/tool-lexicon.d.ts +7 -0
  60. package/sidecar/dist/constants/tool-lexicon.js +8 -0
  61. package/sidecar/dist/constants/tool-lexicon.js.map +1 -0
  62. package/sidecar/dist/index.js +28 -3
  63. package/sidecar/dist/index.js.map +1 -1
  64. package/sidecar/dist/mcp/define-tool.d.ts +23 -0
  65. package/sidecar/dist/mcp/define-tool.js +4 -0
  66. package/sidecar/dist/mcp/define-tool.js.map +1 -0
  67. package/sidecar/dist/mcp/http-binding.d.ts +9 -0
  68. package/sidecar/dist/mcp/http-binding.js +123 -0
  69. package/sidecar/dist/mcp/http-binding.js.map +1 -0
  70. package/sidecar/dist/mcp/sdk-binding.js +14 -0
  71. package/sidecar/dist/mcp/sdk-binding.js.map +1 -0
  72. package/sidecar/dist/mcp/tool-definitions.d.ts +3 -0
  73. package/sidecar/dist/mcp/{server.js → tool-definitions.js} +2 -11
  74. package/sidecar/dist/mcp/tool-definitions.js.map +1 -0
  75. package/sidecar/dist/mcp/tools/ask-user.d.ts +1 -1
  76. package/sidecar/dist/mcp/tools/ask-user.js +2 -2
  77. package/sidecar/dist/mcp/tools/ask-user.js.map +1 -1
  78. package/sidecar/dist/mcp/tools/builder.d.ts +19 -19
  79. package/sidecar/dist/mcp/tools/builder.js +26 -26
  80. package/sidecar/dist/mcp/tools/builder.js.map +1 -1
  81. package/sidecar/dist/mcp/tools/find-pages-using.d.ts +1 -1
  82. package/sidecar/dist/mcp/tools/find-pages-using.js +2 -2
  83. package/sidecar/dist/mcp/tools/find-pages-using.js.map +1 -1
  84. package/sidecar/dist/mcp/tools/get-current-page.d.ts +1 -1
  85. package/sidecar/dist/mcp/tools/get-current-page.js +2 -2
  86. package/sidecar/dist/mcp/tools/get-current-page.js.map +1 -1
  87. package/sidecar/dist/mcp/tools/list-pages.d.ts +1 -1
  88. package/sidecar/dist/mcp/tools/list-pages.js +2 -2
  89. package/sidecar/dist/mcp/tools/list-pages.js.map +1 -1
  90. package/sidecar/dist/mcp/tools/navigate-to-page.d.ts +1 -1
  91. package/sidecar/dist/mcp/tools/navigate-to-page.js +2 -2
  92. package/sidecar/dist/mcp/tools/navigate-to-page.js.map +1 -1
  93. package/sidecar/dist/mcp/tools/query-logs.d.ts +1 -1
  94. package/sidecar/dist/mcp/tools/query-logs.js +2 -2
  95. package/sidecar/dist/mcp/tools/query-logs.js.map +1 -1
  96. package/sidecar/dist/mcp/tools/typecheck.d.ts +1 -1
  97. package/sidecar/dist/mcp/tools/typecheck.js +2 -2
  98. package/sidecar/dist/mcp/tools/typecheck.js.map +1 -1
  99. package/sidecar/dist/mcp/types.d.ts +6 -2
  100. package/sidecar/dist/protocol/events.d.ts +37 -0
  101. package/sidecar/dist/protocol/events.js +8 -0
  102. package/sidecar/dist/protocol/events.js.map +1 -1
  103. package/sidecar/dist/protocol/messages.d.ts +8 -0
  104. package/sidecar/dist/protocol/messages.js +2 -0
  105. package/sidecar/dist/protocol/messages.js.map +1 -1
  106. package/sidecar/dist/providers/claude/adapter.d.ts +5 -0
  107. package/sidecar/dist/{agent/sdk-adapter.js → providers/claude/adapter.js} +20 -1
  108. package/sidecar/dist/providers/claude/adapter.js.map +1 -0
  109. package/sidecar/dist/{agent → providers/claude}/attachments.d.ts +1 -1
  110. package/sidecar/dist/{agent → providers/claude}/attachments.js +3 -27
  111. package/sidecar/dist/providers/claude/attachments.js.map +1 -0
  112. package/sidecar/dist/providers/claude/config.d.ts +4 -0
  113. package/sidecar/dist/providers/claude/config.js +13 -0
  114. package/sidecar/dist/providers/claude/config.js.map +1 -0
  115. package/sidecar/dist/providers/claude/input-queue.js.map +1 -0
  116. package/sidecar/dist/providers/claude/module.d.ts +2 -0
  117. package/sidecar/dist/providers/claude/module.js +25 -0
  118. package/sidecar/dist/providers/claude/module.js.map +1 -0
  119. package/sidecar/dist/providers/claude/provider.d.ts +11 -0
  120. package/sidecar/dist/{agent/claude-runner.js → providers/claude/provider.js} +118 -96
  121. package/sidecar/dist/providers/claude/provider.js.map +1 -0
  122. package/sidecar/dist/{agent/resolve-claude-binary.js → providers/claude/resolve-binary.js} +3 -3
  123. package/sidecar/dist/{agent/resolve-claude-binary.js.map → providers/claude/resolve-binary.js.map} +1 -1
  124. package/sidecar/dist/providers/claude/sdk-loader.js +16 -0
  125. package/sidecar/dist/providers/claude/sdk-loader.js.map +1 -0
  126. package/sidecar/dist/providers/codex/adapter.d.ts +7 -0
  127. package/sidecar/dist/providers/codex/adapter.js +147 -0
  128. package/sidecar/dist/providers/codex/adapter.js.map +1 -0
  129. package/sidecar/dist/providers/codex/attachments.d.ts +7 -0
  130. package/sidecar/dist/providers/codex/attachments.js +73 -0
  131. package/sidecar/dist/providers/codex/attachments.js.map +1 -0
  132. package/sidecar/dist/providers/codex/client.d.ts +34 -0
  133. package/sidecar/dist/providers/codex/client.js +128 -0
  134. package/sidecar/dist/providers/codex/client.js.map +1 -0
  135. package/sidecar/dist/providers/codex/config.d.ts +34 -0
  136. package/sidecar/dist/providers/codex/config.js +111 -0
  137. package/sidecar/dist/providers/codex/config.js.map +1 -0
  138. package/sidecar/dist/providers/codex/event-stream.d.ts +8 -0
  139. package/sidecar/dist/providers/codex/event-stream.js +53 -0
  140. package/sidecar/dist/providers/codex/event-stream.js.map +1 -0
  141. package/sidecar/dist/providers/codex/module.d.ts +2 -0
  142. package/sidecar/dist/providers/codex/module.js +54 -0
  143. package/sidecar/dist/providers/codex/module.js.map +1 -0
  144. package/sidecar/dist/providers/codex/permissions.d.ts +21 -0
  145. package/sidecar/dist/providers/codex/permissions.js +77 -0
  146. package/sidecar/dist/providers/codex/permissions.js.map +1 -0
  147. package/sidecar/dist/providers/codex/process.d.ts +23 -0
  148. package/sidecar/dist/providers/codex/process.js +208 -0
  149. package/sidecar/dist/providers/codex/process.js.map +1 -0
  150. package/sidecar/dist/providers/codex/protocol/common.d.ts +59 -0
  151. package/sidecar/dist/providers/codex/protocol/common.js +2 -0
  152. package/sidecar/dist/providers/codex/protocol/common.js.map +1 -0
  153. package/sidecar/dist/providers/codex/protocol/index.d.ts +3 -0
  154. package/sidecar/dist/providers/codex/protocol/index.js +3 -0
  155. package/sidecar/dist/providers/codex/protocol/index.js.map +1 -0
  156. package/sidecar/dist/providers/codex/protocol/serde_json.d.ts +3 -0
  157. package/sidecar/dist/providers/codex/protocol/serde_json.js +2 -0
  158. package/sidecar/dist/providers/codex/protocol/serde_json.js.map +1 -0
  159. package/sidecar/dist/providers/codex/protocol/v2.d.ts +481 -0
  160. package/sidecar/dist/providers/codex/protocol/v2.js +2 -0
  161. package/sidecar/dist/providers/codex/protocol/v2.js.map +1 -0
  162. package/sidecar/dist/providers/codex/provider.d.ts +14 -0
  163. package/sidecar/dist/providers/codex/provider.js +225 -0
  164. package/sidecar/dist/providers/codex/provider.js.map +1 -0
  165. package/sidecar/dist/providers/codex/resolve-binary.d.ts +10 -0
  166. package/sidecar/dist/providers/codex/resolve-binary.js +80 -0
  167. package/sidecar/dist/providers/codex/resolve-binary.js.map +1 -0
  168. package/sidecar/dist/providers/codex/skills.d.ts +10 -0
  169. package/sidecar/dist/providers/codex/skills.js +42 -0
  170. package/sidecar/dist/providers/codex/skills.js.map +1 -0
  171. package/sidecar/dist/providers/registry.d.ts +7 -0
  172. package/sidecar/dist/providers/registry.js +31 -0
  173. package/sidecar/dist/providers/registry.js.map +1 -0
  174. package/sidecar/dist/providers/types.d.ts +25 -0
  175. package/sidecar/dist/providers/types.js +5 -0
  176. package/sidecar/dist/providers/types.js.map +1 -0
  177. package/sidecar/dist/server/http.d.ts +2 -0
  178. package/sidecar/dist/server/http.js +26 -12
  179. package/sidecar/dist/server/http.js.map +1 -1
  180. package/sidecar/dist/server/routing.d.ts +4 -4
  181. package/sidecar/dist/server/routing.js +7 -1
  182. package/sidecar/dist/server/routing.js.map +1 -1
  183. package/sidecar/dist/server/ws.d.ts +2 -0
  184. package/sidecar/dist/server/ws.js +40 -17
  185. package/sidecar/dist/server/ws.js.map +1 -1
  186. package/sidecar/dist/skills/build-catalog.d.ts +2 -0
  187. package/sidecar/dist/skills/build-catalog.js +12 -1
  188. package/sidecar/dist/skills/build-catalog.js.map +1 -1
  189. package/sidecar/dist/state/conversations.d.ts +3 -1
  190. package/sidecar/dist/state/conversations.js +20 -0
  191. package/sidecar/dist/state/conversations.js.map +1 -1
  192. package/sidecar/dist/state/safe-segment.d.ts +1 -0
  193. package/sidecar/dist/state/safe-segment.js +17 -0
  194. package/sidecar/dist/state/safe-segment.js.map +1 -0
  195. package/sidecar/dist/state/settings-store.js +7 -0
  196. package/sidecar/dist/state/settings-store.js.map +1 -1
  197. package/sidecar/dist/state/settings-types.d.ts +2 -0
  198. package/sidecar/dist/state/settings-types.js.map +1 -1
  199. package/sidecar/dist/state/types.d.ts +11 -0
  200. package/sidecar/dist/state/types.js +7 -0
  201. package/sidecar/dist/state/types.js.map +1 -1
  202. package/sidecar/package.json +3 -0
  203. package/sidecar/chatbox/dist/assets/index-Cy2BwTG0.js +0 -50
  204. package/sidecar/dist/agent/attachments.js.map +0 -1
  205. package/sidecar/dist/agent/claude-runner.js.map +0 -1
  206. package/sidecar/dist/agent/claude-session.d.ts +0 -18
  207. package/sidecar/dist/agent/claude-session.js.map +0 -1
  208. package/sidecar/dist/agent/input-queue.js.map +0 -1
  209. package/sidecar/dist/agent/sdk-adapter.d.ts +0 -3
  210. package/sidecar/dist/agent/sdk-adapter.js.map +0 -1
  211. package/sidecar/dist/agent/sdk-loader.js +0 -14
  212. package/sidecar/dist/agent/sdk-loader.js.map +0 -1
  213. package/sidecar/dist/mcp/server.js.map +0 -1
  214. /package/sidecar/dist/mcp/{server.d.ts → sdk-binding.d.ts} +0 -0
  215. /package/sidecar/dist/{agent → providers/claude}/input-queue.d.ts +0 -0
  216. /package/sidecar/dist/{agent → providers/claude}/input-queue.js +0 -0
  217. /package/sidecar/dist/{agent/resolve-claude-binary.d.ts → providers/claude/resolve-binary.d.ts} +0 -0
  218. /package/sidecar/dist/{agent → providers/claude}/sdk-loader.d.ts +0 -0
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>dms-ai chatbox</title>
7
- <script type="module" crossorigin src="/assets/index-Cy2BwTG0.js"></script>
8
- <link rel="stylesheet" crossorigin href="/assets/index-pP_KOHIn.css">
7
+ <script type="module" crossorigin src="/assets/index-CEZ1NLp9.js"></script>
8
+ <link rel="stylesheet" crossorigin href="/assets/index-D_51Vqqk.css">
9
9
  </head>
10
10
  <body>
11
11
  <div id="app"></div>
@@ -0,0 +1,5 @@
1
+ import type { AttachmentType } from "../protocol/messages.js";
2
+ export declare function sanitizeFileName(name: string): string;
3
+ export declare function uploadsDirFor(hostProjectRoot: string, conversationId: string): string;
4
+ export declare function writeDiskAttachment(att: AttachmentType, index: number, dir: string): Promise<string>;
5
+ export declare function joinTextSections(text: string, diskPaths: string[]): string;
@@ -0,0 +1,29 @@
1
+ import fs from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { UPLOADS_DIR_SEGMENT } from "../constants/attachments.js";
4
+ import { STATE_DIR_SEGMENTS } from "../constants/paths.js";
5
+ import { safeDirSegment } from "../state/safe-segment.js";
6
+ const FALLBACK_FILE_NAME = "file";
7
+ export function sanitizeFileName(name) {
8
+ const base = path
9
+ .basename(name)
10
+ .replace(/[^\w.\- ]+/g, "_")
11
+ .trim();
12
+ return base.length > 0 ? base : FALLBACK_FILE_NAME;
13
+ }
14
+ export function uploadsDirFor(hostProjectRoot, conversationId) {
15
+ return path.join(hostProjectRoot, ...STATE_DIR_SEGMENTS, UPLOADS_DIR_SEGMENT, safeDirSegment(conversationId));
16
+ }
17
+ export async function writeDiskAttachment(att, index, dir) {
18
+ const fileName = `${Date.now()}-${index}-${sanitizeFileName(att.name)}`;
19
+ const filePath = path.join(dir, fileName);
20
+ await fs.writeFile(filePath, Buffer.from(att.data, "base64"));
21
+ return filePath;
22
+ }
23
+ export function joinTextSections(text, diskPaths) {
24
+ const noteLines = diskPaths.map((p) => `[Attached file: ${p}]`);
25
+ const notes = noteLines.join("\n");
26
+ const sections = [text.trim(), notes].filter((s) => s.length > 0);
27
+ return sections.join("\n\n");
28
+ }
29
+ //# sourceMappingURL=attachment-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment-files.js","sourceRoot":"","sources":["../../src/agent/attachment-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAIlC,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,IAAI,GAAG,IAAI;SACd,QAAQ,CAAC,IAAI,CAAC;SACd,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,IAAI,EAAE,CAAC;IACV,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,eAAuB,EACvB,cAAsB;IAEtB,OAAO,IAAI,CAAC,IAAI,CACd,eAAe,EACf,GAAG,kBAAkB,EACrB,mBAAmB,EACnB,cAAc,CAAC,cAAc,CAAC,CAC/B,CAAC;AACJ,CAAC;AAID,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,GAAmB,EACnB,KAAa,EACb,GAAW;IAEX,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC1C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9D,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,SAAmB;IAChE,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClE,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,40 @@
1
+ import type { PermissionDecision } from "../constants/permissions.js";
2
+ import type { AiMcpServer } from "../mcp/types.js";
3
+ import type { AttachmentType } from "../protocol/messages.js";
4
+ import type { SkillSource } from "../skills/types.js";
5
+ import type { CurrentPage } from "../state/host-state.js";
6
+ import type { AppSettings } from "../state/settings-types.js";
7
+ import type { TokenUsage } from "../state/types.js";
8
+ import type { PermissionBus } from "./permission-bus.js";
9
+ import type { RunnerEvent } from "./runner-events.js";
10
+ export interface TurnInput {
11
+ text: string;
12
+ attachments: readonly AttachmentType[];
13
+ }
14
+ export interface ProviderSessionContext {
15
+ conversationId: string;
16
+ hostProjectRoot: string;
17
+ getCurrentPage: () => CurrentPage;
18
+ settings: AppSettings;
19
+ permissionBus?: PermissionBus;
20
+ mcpServer?: AiMcpServer;
21
+ onPermissionDecision?: (toolName: string, decision: PermissionDecision) => void;
22
+ onTokenUsage?: (usage: TokenUsage) => void;
23
+ onDisposed: () => void;
24
+ }
25
+ export interface ProviderSession {
26
+ runTurn(input: TurnInput, settings: AppSettings): AsyncIterable<RunnerEvent>;
27
+ interrupt(): void;
28
+ dispose(): void;
29
+ applySettings?(settings: AppSettings): void;
30
+ }
31
+ export interface AgentProvider {
32
+ createSession(ctx: ProviderSessionContext): Promise<ProviderSession>;
33
+ }
34
+ export interface AgentProviderOptions {
35
+ timeoutMs?: number;
36
+ settings?: AppSettings;
37
+ moduleRoots?: string[];
38
+ skillDirs?: SkillSource[];
39
+ }
40
+ export type AgentProviderFactory = (options?: AgentProviderOptions) => AgentProvider;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/agent/provider.ts"],"names":[],"mappings":""}
@@ -1,11 +1,11 @@
1
- import type { PermissionResult } from "@anthropic-ai/claude-agent-sdk";
2
- import { type PermissionDecision } from "../constants/permissions.js";
1
+ import type { PermissionDecision } from "../constants/permissions.js";
3
2
  import type { AiMcpServer } from "../mcp/types.js";
4
3
  import type { AttachmentType } from "../protocol/messages.js";
5
- import type { SkillSource } from "../skills/types.js";
6
4
  import type { CurrentPage } from "../state/host-state.js";
7
5
  import type { AppSettings } from "../state/settings-types.js";
6
+ import type { TokenUsage } from "../state/types.js";
8
7
  import type { PermissionBus } from "./permission-bus.js";
8
+ import type { AgentProvider } from "./provider.js";
9
9
  import type { RunnerEvent } from "./runner-events.js";
10
10
  export interface RunnerContext {
11
11
  conversationId: string;
@@ -13,21 +13,18 @@ export interface RunnerContext {
13
13
  getCurrentPage: () => CurrentPage;
14
14
  attachments?: AttachmentType[];
15
15
  permissionBus?: PermissionBus;
16
- mcpServer?: AiMcpServer;
16
+ createMcpServer?: () => AiMcpServer;
17
17
  onPermissionDecision?: (toolName: string, decision: PermissionDecision) => void;
18
+ onTokenUsage?: (usage: TokenUsage) => void;
18
19
  }
19
- export interface ClaudeRunner {
20
+ export interface AgentRunner {
20
21
  start(message: string, ctx: RunnerContext): AsyncIterable<RunnerEvent>;
21
22
  interruptSession(conversationId: string): void;
22
23
  disposeSession(conversationId: string): void;
23
24
  applySettings(settings: AppSettings): void;
24
25
  dispose(): void;
25
26
  }
26
- export interface ClaudeRunnerOptions {
27
- timeoutMs?: number;
27
+ export interface AgentRunnerOptions {
28
28
  settings?: AppSettings;
29
- moduleRoots?: string[];
30
- skillDirs?: SkillSource[];
31
29
  }
32
- export declare function bridgeCanUseTool(bus: PermissionBus, conversationId: string, toolName: string, input: Record<string, unknown>, onDecision?: (toolName: string, decision: PermissionDecision) => void): Promise<PermissionResult>;
33
- export declare function createClaudeRunner(options?: ClaudeRunnerOptions): ClaudeRunner;
30
+ export declare function createAgentRunner(provider: AgentProvider, options?: AgentRunnerOptions): AgentRunner;
@@ -0,0 +1,71 @@
1
+ import { effectiveGenerationMode } from "../builder/capability.js";
2
+ import { DEFAULT_SETTINGS } from "../constants/settings.js";
3
+ import { prependHostContext } from "./host-context.js";
4
+ function createSession(manager, ctx) {
5
+ return manager.provider.createSession({
6
+ conversationId: ctx.conversationId,
7
+ hostProjectRoot: ctx.hostProjectRoot,
8
+ getCurrentPage: ctx.getCurrentPage,
9
+ settings: manager.settings,
10
+ permissionBus: ctx.permissionBus,
11
+ mcpServer: ctx.createMcpServer?.(),
12
+ onPermissionDecision: ctx.onPermissionDecision,
13
+ onTokenUsage: ctx.onTokenUsage,
14
+ onDisposed: () => {
15
+ manager.sessions.delete(ctx.conversationId);
16
+ },
17
+ });
18
+ }
19
+ async function getOrCreateSession(manager, ctx) {
20
+ const existing = manager.sessions.get(ctx.conversationId);
21
+ if (existing !== undefined)
22
+ return existing;
23
+ const session = await createSession(manager, ctx);
24
+ manager.sessions.set(ctx.conversationId, session);
25
+ return session;
26
+ }
27
+ async function* startTurn(manager, message, ctx) {
28
+ const session = await getOrCreateSession(manager, ctx);
29
+ const grounded = prependHostContext(message, ctx.getCurrentPage(), effectiveGenerationMode(manager.settings.generationMode));
30
+ yield* session.runTurn({ text: grounded, attachments: ctx.attachments ?? [] }, manager.settings);
31
+ }
32
+ function interruptSession(manager, conversationId) {
33
+ const session = manager.sessions.get(conversationId);
34
+ if (session === undefined)
35
+ return;
36
+ session.interrupt();
37
+ }
38
+ function disposeSession(manager, conversationId) {
39
+ const session = manager.sessions.get(conversationId);
40
+ if (session === undefined)
41
+ return;
42
+ manager.sessions.delete(conversationId);
43
+ session.dispose();
44
+ }
45
+ function disposeAll(manager) {
46
+ const sessions = [...manager.sessions.values()];
47
+ manager.sessions.clear();
48
+ for (const session of sessions)
49
+ session.dispose();
50
+ }
51
+ function applySettings(manager, settings) {
52
+ manager.settings = settings;
53
+ for (const session of manager.sessions.values()) {
54
+ session.applySettings?.(settings);
55
+ }
56
+ }
57
+ export function createAgentRunner(provider, options) {
58
+ const manager = {
59
+ provider,
60
+ sessions: new Map(),
61
+ settings: options?.settings ?? DEFAULT_SETTINGS,
62
+ };
63
+ return {
64
+ start: (message, ctx) => startTurn(manager, message, ctx),
65
+ interruptSession: (conversationId) => interruptSession(manager, conversationId),
66
+ disposeSession: (conversationId) => disposeSession(manager, conversationId),
67
+ applySettings: (settings) => applySettings(manager, settings),
68
+ dispose: () => disposeAll(manager),
69
+ };
70
+ }
71
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/agent/runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { AppSettings } from "../state/settings-types.js";
2
+ import type { TurnInput } from "./provider.js";
3
+ import type { RunnerEvent } from "./runner-events.js";
4
+ export interface SessionControls {
5
+ submitTurn(input: TurnInput): void | Promise<void>;
6
+ interrupt(): void;
7
+ close(): void;
8
+ applySettings?(settings: AppSettings): void;
9
+ }
10
+ export interface AgentSession {
11
+ sendTurn(input: TurnInput, timeoutMs: number): AsyncIterable<RunnerEvent>;
12
+ applySettings(settings: AppSettings): void;
13
+ interrupt(): void;
14
+ dispose: () => void;
15
+ }
16
+ export interface SessionDeps {
17
+ events: AsyncIterator<RunnerEvent, void>;
18
+ controls: SessionControls;
19
+ abortController: AbortController;
20
+ onDisposed: () => void;
21
+ }
22
+ export declare function createAgentSession(deps: SessionDeps): AgentSession;
@@ -1,32 +1,18 @@
1
- import { INTERRUPT_FALLBACK_MS, SDK_TIMEOUT_MESSAGE, } from "../constants/agent.js";
2
- import { messageToEvents } from "./sdk-adapter.js";
3
- const RESULT_MESSAGE_TYPE = "result";
4
- function buildUserMessage(content) {
5
- return {
6
- type: "user",
7
- message: { role: "user", content },
8
- parent_tool_use_id: null,
9
- session_id: "",
10
- };
11
- }
1
+ import { INTERRUPT_FALLBACK_MS, TURN_IDLE_TIMEOUT_MESSAGE, } from "../constants/agent.js";
2
+ import { TOOL_EXECUTION_CAP_MS } from "../constants/timing.js";
12
3
  function disposeSession(state) {
13
4
  if (state.disposed)
14
5
  return;
15
6
  state.disposed = true;
16
7
  clearInterruptFallback(state);
17
- state.input.close();
8
+ state.controls.close();
18
9
  state.abortController.abort();
19
10
  state.onDisposed();
20
11
  }
21
- function setPermissionMode(state, mode) {
22
- if (state.disposed)
23
- return;
24
- void state.output.setPermissionMode(mode).catch(() => undefined);
25
- }
26
- function setMaxThinkingTokens(state, tokens) {
12
+ function applySettings(state, settings) {
27
13
  if (state.disposed)
28
14
  return;
29
- void state.output.setMaxThinkingTokens(tokens).catch(() => undefined);
15
+ state.controls.applySettings?.(settings);
30
16
  }
31
17
  function clearInterruptFallback(state) {
32
18
  if (state.interruptTimer === null)
@@ -39,7 +25,7 @@ function interrupt(state) {
39
25
  return;
40
26
  if (state.activeTurns === 0)
41
27
  return;
42
- void state.output.interrupt().catch(() => undefined);
28
+ state.controls.interrupt();
43
29
  clearInterruptFallback(state);
44
30
  state.interruptTimer = setTimeout(() => {
45
31
  state.interruptTimer = null;
@@ -51,34 +37,46 @@ function interrupt(state) {
51
37
  function armTurnTimeout(state, timeoutMs) {
52
38
  const flag = { isTimedOut: false };
53
39
  let timer;
54
- const arm = () => {
40
+ const arm = (delayMs) => {
55
41
  timer = setTimeout(() => {
56
42
  flag.isTimedOut = true;
57
43
  state.abortController.abort();
58
- }, timeoutMs);
44
+ }, delayMs);
59
45
  };
60
- arm();
46
+ arm(timeoutMs);
61
47
  return {
62
48
  flag,
63
49
  clear: () => clearTimeout(timer),
64
50
  reset: () => {
65
51
  clearTimeout(timer);
66
- arm();
52
+ arm(timeoutMs);
53
+ },
54
+ suspend: () => {
55
+ clearTimeout(timer);
56
+ arm(TOOL_EXECUTION_CAP_MS);
67
57
  },
68
58
  };
69
59
  }
70
60
  function buildErrorEvent(err, flag) {
71
61
  if (flag.isTimedOut)
72
- return { type: "error", message: SDK_TIMEOUT_MESSAGE };
62
+ return { type: "error", message: TURN_IDLE_TIMEOUT_MESSAGE };
73
63
  const message = err instanceof Error ? err.message : String(err);
74
64
  return { type: "error", message };
75
65
  }
66
+ const OUTSTANDING_TOOL_DELTAS = {
67
+ tool_use: 1,
68
+ tool_result: -1,
69
+ };
70
+ function countOutstanding(outstanding, event) {
71
+ const delta = OUTSTANDING_TOOL_DELTAS[event.type] ?? 0;
72
+ return Math.max(0, outstanding + delta);
73
+ }
76
74
  async function* readTurn(state, timeout) {
77
75
  let outstandingTools = 0;
78
76
  while (true) {
79
77
  let result;
80
78
  try {
81
- result = await state.output.next();
79
+ result = await state.events.next();
82
80
  }
83
81
  catch (err) {
84
82
  yield buildErrorEvent(err, timeout.flag);
@@ -89,24 +87,19 @@ async function* readTurn(state, timeout) {
89
87
  disposeSession(state);
90
88
  return;
91
89
  }
92
- for (const event of messageToEvents(result.value)) {
93
- if (event.type === "tool_use")
94
- outstandingTools += 1;
95
- else if (event.type === "tool_result") {
96
- outstandingTools = Math.max(0, outstandingTools - 1);
97
- }
98
- yield event;
99
- }
90
+ const event = result.value;
91
+ outstandingTools = countOutstanding(outstandingTools, event);
92
+ yield event;
100
93
  if (outstandingTools > 0)
101
- timeout.clear();
94
+ timeout.suspend();
102
95
  else
103
96
  timeout.reset();
104
- if (result.value.type === RESULT_MESSAGE_TYPE)
97
+ if (event.type === "done")
105
98
  return;
106
99
  }
107
100
  }
108
- async function* runTurn(state, content, timeoutMs) {
109
- state.input.push(buildUserMessage(content));
101
+ async function* runTurn(state, input, timeoutMs) {
102
+ await state.controls.submitTurn(input);
110
103
  state.activeTurns += 1;
111
104
  const timeout = armTurnTimeout(state, timeoutMs);
112
105
  try {
@@ -119,24 +112,24 @@ async function* runTurn(state, content, timeoutMs) {
119
112
  clearInterruptFallback(state);
120
113
  }
121
114
  }
122
- async function* chainTurn(state, content, timeoutMs, previous, release) {
115
+ async function* chainTurn(state, input, timeoutMs, previous, release) {
123
116
  await previous;
124
117
  try {
125
- yield* runTurn(state, content, timeoutMs);
118
+ yield* runTurn(state, input, timeoutMs);
126
119
  }
127
120
  finally {
128
121
  release();
129
122
  }
130
123
  }
131
- function sendTurn(state, content, timeoutMs) {
124
+ function sendTurn(state, input, timeoutMs) {
132
125
  const previous = state.tail;
133
126
  let release = () => { };
134
127
  state.tail = new Promise((resolve) => {
135
128
  release = resolve;
136
129
  });
137
- return chainTurn(state, content, timeoutMs, previous, release);
130
+ return chainTurn(state, input, timeoutMs, previous, release);
138
131
  }
139
- export function createClaudeSession(deps) {
132
+ export function createAgentSession(deps) {
140
133
  const state = {
141
134
  ...deps,
142
135
  disposed: false,
@@ -145,11 +138,10 @@ export function createClaudeSession(deps) {
145
138
  interruptTimer: null,
146
139
  };
147
140
  return {
148
- sendTurn: (content, timeoutMs) => sendTurn(state, content, timeoutMs),
149
- setPermissionMode: (mode) => setPermissionMode(state, mode),
150
- setMaxThinkingTokens: (tokens) => setMaxThinkingTokens(state, tokens),
141
+ sendTurn: (input, timeoutMs) => sendTurn(state, input, timeoutMs),
142
+ applySettings: (settings) => applySettings(state, settings),
151
143
  interrupt: () => interrupt(state),
152
144
  dispose: () => disposeSession(state),
153
145
  };
154
146
  }
155
- //# sourceMappingURL=claude-session.js.map
147
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/agent/session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { AppSettings } from "../state/settings-types.js";
2
+ import type { ProviderName } from "../state/types.js";
3
+ import type { AgentRunner } from "./runner.js";
4
+ export type ProviderRunnerFactory = (settings: AppSettings) => AgentRunner;
5
+ export type UnavailableReason = (name: ProviderName) => string | undefined;
6
+ export declare function createSwitchingRunner(build: Record<ProviderName, ProviderRunnerFactory>, settings: AppSettings, unavailableReason?: UnavailableReason): AgentRunner;
@@ -0,0 +1,58 @@
1
+ import { PROVIDER_LABEL_TOKEN, PROVIDER_LABELS, PROVIDER_SWITCH_LOG, PROVIDER_UNAVAILABLE_ERROR, } from "../constants/providers.js";
2
+ import { providerUnavailableReason } from "../providers/registry.js";
3
+ function unavailableError(name, reason) {
4
+ const prefix = PROVIDER_UNAVAILABLE_ERROR.replace(PROVIDER_LABEL_TOKEN, PROVIDER_LABELS[name]);
5
+ return new Error(`${prefix} ${reason}`);
6
+ }
7
+ function activate(state) {
8
+ if (state.active !== null)
9
+ return state.active.runner;
10
+ const name = state.settings.provider;
11
+ const reason = state.unavailableReason(name);
12
+ if (reason !== undefined)
13
+ throw unavailableError(name, reason);
14
+ const runner = state.build[name](state.settings);
15
+ state.active = { name, runner };
16
+ return runner;
17
+ }
18
+ function switchProvider(state, next) {
19
+ const previous = state.active;
20
+ state.active = null;
21
+ if (previous === null)
22
+ return;
23
+ console.log(`${PROVIDER_SWITCH_LOG} ${previous.name} -> ${next}`);
24
+ previous.runner.dispose();
25
+ }
26
+ function applySettings(state, settings) {
27
+ state.settings = settings;
28
+ if (state.active !== null && state.active.name !== settings.provider) {
29
+ switchProvider(state, settings.provider);
30
+ return;
31
+ }
32
+ state.active?.runner.applySettings(settings);
33
+ }
34
+ function withActive(state, act) {
35
+ if (state.active === null)
36
+ return;
37
+ act(state.active.runner);
38
+ }
39
+ export function createSwitchingRunner(build, settings, unavailableReason = providerUnavailableReason) {
40
+ const state = {
41
+ build,
42
+ unavailableReason,
43
+ settings,
44
+ active: null,
45
+ };
46
+ return {
47
+ start: (message, ctx) => activate(state).start(message, ctx),
48
+ interruptSession: (conversationId) => withActive(state, (runner) => runner.interruptSession(conversationId)),
49
+ disposeSession: (conversationId) => withActive(state, (runner) => runner.disposeSession(conversationId)),
50
+ applySettings: (next) => applySettings(state, next),
51
+ dispose: () => {
52
+ const previous = state.active;
53
+ state.active = null;
54
+ previous?.runner.dispose();
55
+ },
56
+ };
57
+ }
58
+ //# sourceMappingURL=switching-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switching-runner.js","sourceRoot":"","sources":["../../src/agent/switching-runner.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,6 @@
1
- import type { SettingSource } from "@anthropic-ai/claude-agent-sdk";
2
- export declare const SDK_TIMEOUT_MS: number;
3
- export declare const SDK_TIMEOUT_MESSAGE = "AI run timed out after 5 minutes of inactivity";
1
+ export declare const TURN_IDLE_TIMEOUT_MS: number;
2
+ export declare const TURN_IDLE_TIMEOUT_MESSAGE = "AI run timed out after 5 minutes of inactivity";
4
3
  export declare const INTERRUPT_FALLBACK_MS = 4000;
5
- export declare const MOCK_FLAG_ENV = "MOCK_CLAUDE";
6
- export declare const MOCK_FLAG_ENABLED = "1";
7
- export declare const REAL_SDK_PACKAGE = "@anthropic-ai/claude-agent-sdk";
8
- export declare const MOCK_SDK_RELATIVE = "../../tests/fixtures/mock-claude/index.js";
9
- export declare const SYSTEM_PROMPT_PRESET_TYPE: "preset";
10
- export declare const SYSTEM_PROMPT_PRESET_NAME: "claude_code";
11
- export declare const SDK_SETTING_SOURCES_ISOLATED: SettingSource[];
12
- export declare const SKILL_PLUGIN_WRAPPER_DIR = "skill-plugins";
13
- export declare const SDK_INCLUDE_PARTIAL_MESSAGES = true;
14
4
  export declare const SYSTEM_PROMPT_PLACEHOLDER_UNKNOWN = "unknown";
15
5
  export declare const SYSTEM_PROMPT_MODULES_NONE = "none";
16
6
  export declare const SYSTEM_PROMPT_MODULES_SEPARATOR = ", ";
@@ -1,15 +1,6 @@
1
- export const SDK_TIMEOUT_MS = 5 * 60_000;
2
- export const SDK_TIMEOUT_MESSAGE = "AI run timed out after 5 minutes of inactivity";
1
+ export const TURN_IDLE_TIMEOUT_MS = 5 * 60_000;
2
+ export const TURN_IDLE_TIMEOUT_MESSAGE = "AI run timed out after 5 minutes of inactivity";
3
3
  export const INTERRUPT_FALLBACK_MS = 4_000;
4
- export const MOCK_FLAG_ENV = "MOCK_CLAUDE";
5
- export const MOCK_FLAG_ENABLED = "1";
6
- export const REAL_SDK_PACKAGE = "@anthropic-ai/claude-agent-sdk";
7
- export const MOCK_SDK_RELATIVE = "../../tests/fixtures/mock-claude/index.js";
8
- export const SYSTEM_PROMPT_PRESET_TYPE = "preset";
9
- export const SYSTEM_PROMPT_PRESET_NAME = "claude_code";
10
- export const SDK_SETTING_SOURCES_ISOLATED = [];
11
- export const SKILL_PLUGIN_WRAPPER_DIR = "skill-plugins";
12
- export const SDK_INCLUDE_PARTIAL_MESSAGES = true;
13
4
  export const SYSTEM_PROMPT_PLACEHOLDER_UNKNOWN = "unknown";
14
5
  export const SYSTEM_PROMPT_MODULES_NONE = "none";
15
6
  export const SYSTEM_PROMPT_MODULES_SEPARATOR = ", ";
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/constants/agent.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAG,MAAM,CAAC;AACzC,MAAM,CAAC,MAAM,mBAAmB,GAC9B,gDAAgD,CAAC;AAInD,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAC3C,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC;AAC3C,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AACrC,MAAM,CAAC,MAAM,gBAAgB,GAAG,gCAAgC,CAAC;AACjE,MAAM,CAAC,MAAM,iBAAiB,GAAG,2CAA2C,CAAC;AAE7E,MAAM,CAAC,MAAM,yBAAyB,GAAG,QAAiB,CAAC;AAC3D,MAAM,CAAC,MAAM,yBAAyB,GAAG,aAAsB,CAAC;AAChE,MAAM,CAAC,MAAM,4BAA4B,GAAoB,EAAE,CAAC;AAKhE,MAAM,CAAC,MAAM,wBAAwB,GAAG,eAAe,CAAC;AACxD,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAC;AACjD,MAAM,CAAC,MAAM,iCAAiC,GAAG,SAAS,CAAC;AAC3D,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AACjD,MAAM,CAAC,MAAM,+BAA+B,GAAG,IAAI,CAAC;AACpD,MAAM,CAAC,MAAM,wBAAwB,GAAG,UAAU,CAAC;AACnD,MAAM,CAAC,MAAM,6BAA6B,GAAG,qBAAqB,CAAC;AACnE,MAAM,CAAC,MAAM,2BAA2B,GAAG,qBAAqB,CAAC;AAOjE,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAClD,MAAM,CAAC,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;AACpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,QAAQ,CAAC;AAChD,MAAM,CAAC,MAAM,uBAAuB,GAAG,QAAQ,CAAC;AAChD,MAAM,CAAC,MAAM,wBAAwB,GAAG,SAAS,CAAC;AAClD,MAAM,CAAC,MAAM,uBAAuB,GAAG,QAAQ,CAAC"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/constants/agent.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAG,MAAM,CAAC;AAC/C,MAAM,CAAC,MAAM,yBAAyB,GACpC,gDAAgD,CAAC;AAInD,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAE3C,MAAM,CAAC,MAAM,iCAAiC,GAAG,SAAS,CAAC;AAC3D,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AACjD,MAAM,CAAC,MAAM,+BAA+B,GAAG,IAAI,CAAC;AACpD,MAAM,CAAC,MAAM,wBAAwB,GAAG,UAAU,CAAC;AACnD,MAAM,CAAC,MAAM,6BAA6B,GAAG,qBAAqB,CAAC;AACnE,MAAM,CAAC,MAAM,2BAA2B,GAAG,qBAAqB,CAAC;AAOjE,MAAM,CAAC,MAAM,iBAAiB,GAAG,gBAAgB,CAAC;AAClD,MAAM,CAAC,MAAM,kBAAkB,GAAG,iBAAiB,CAAC;AACpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,QAAQ,CAAC;AAChD,MAAM,CAAC,MAAM,uBAAuB,GAAG,QAAQ,CAAC;AAChD,MAAM,CAAC,MAAM,wBAAwB,GAAG,SAAS,CAAC;AAClD,MAAM,CAAC,MAAM,uBAAuB,GAAG,QAAQ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { SettingSource } from "@anthropic-ai/claude-agent-sdk";
2
+ export declare const REAL_SDK_PACKAGE = "@anthropic-ai/claude-agent-sdk";
3
+ export declare const MOCK_CLAUDE_FLAG_ENV = "MOCK_CLAUDE";
4
+ export declare const MOCK_CLAUDE_FLAG_ENABLED = "1";
5
+ export declare const MOCK_CLAUDE_SDK_RELATIVE = "../../../tests/fixtures/mock-claude/index.js";
6
+ export declare const SYSTEM_PROMPT_PRESET_TYPE: "preset";
7
+ export declare const SYSTEM_PROMPT_PRESET_NAME: "claude_code";
8
+ export declare const SDK_SETTING_SOURCES_ISOLATED: SettingSource[];
9
+ export declare const SDK_INCLUDE_PARTIAL_MESSAGES = true;
10
+ export declare const SKILL_PLUGIN_WRAPPER_DIR = "skill-plugins";
@@ -0,0 +1,10 @@
1
+ export const REAL_SDK_PACKAGE = "@anthropic-ai/claude-agent-sdk";
2
+ export const MOCK_CLAUDE_FLAG_ENV = "MOCK_CLAUDE";
3
+ export const MOCK_CLAUDE_FLAG_ENABLED = "1";
4
+ export const MOCK_CLAUDE_SDK_RELATIVE = "../../../tests/fixtures/mock-claude/index.js";
5
+ export const SYSTEM_PROMPT_PRESET_TYPE = "preset";
6
+ export const SYSTEM_PROMPT_PRESET_NAME = "claude_code";
7
+ export const SDK_SETTING_SOURCES_ISOLATED = [];
8
+ export const SDK_INCLUDE_PARTIAL_MESSAGES = true;
9
+ export const SKILL_PLUGIN_WRAPPER_DIR = "skill-plugins";
10
+ //# sourceMappingURL=claude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/constants/claude.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,gBAAgB,GAAG,gCAAgC,CAAC;AAKjE,MAAM,CAAC,MAAM,oBAAoB,GAAG,aAAa,CAAC;AAClD,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAC5C,MAAM,CAAC,MAAM,wBAAwB,GACnC,8CAA8C,CAAC;AAEjD,MAAM,CAAC,MAAM,yBAAyB,GAAG,QAAiB,CAAC;AAC3D,MAAM,CAAC,MAAM,yBAAyB,GAAG,aAAsB,CAAC;AAChE,MAAM,CAAC,MAAM,4BAA4B,GAAoB,EAAE,CAAC;AAChE,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAC;AAMjD,MAAM,CAAC,MAAM,wBAAwB,GAAG,eAAe,CAAC"}