autodev-cli 1.4.131 → 1.4.133

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 (265) hide show
  1. package/LICENSE.md +21 -0
  2. package/media/profile/00b-self-verifiable-work.md +62 -0
  3. package/media/profile/00c-verifiable-threads.md +78 -0
  4. package/media/profile/00d-turn-end-retrospective.md +61 -0
  5. package/media/profile/00e-long-horizon-planning.md +83 -0
  6. package/out/commands/office.js +4 -0
  7. package/out/commands/office.js.map +1 -1
  8. package/out/commands/start.js +1 -1
  9. package/out/commands/start.js.map +1 -1
  10. package/out/core/claudeUsage.d.ts +1 -26
  11. package/out/core/claudeUsage.js +15 -91
  12. package/out/core/claudeUsage.js.map +1 -1
  13. package/out/core/modelInfo.d.ts +1 -28
  14. package/out/core/modelInfo.js +15 -94
  15. package/out/core/modelInfo.js.map +1 -1
  16. package/out/core/provider/BaseProvider.d.ts +1 -14
  17. package/out/core/provider/BaseProvider.js +15 -22
  18. package/out/core/provider/BaseProvider.js.map +1 -1
  19. package/out/core/provider/ProviderRegistry.d.ts +1 -12
  20. package/out/core/provider/ProviderRegistry.js +15 -38
  21. package/out/core/provider/ProviderRegistry.js.map +1 -1
  22. package/out/core/provider/contract.d.ts +1 -62
  23. package/out/core/provider/contract.js +15 -6
  24. package/out/core/provider/contract.js.map +1 -1
  25. package/out/core/provider/implementations.d.ts +1 -65
  26. package/out/core/provider/implementations.js +4 -169
  27. package/out/core/provider/implementations.js.map +1 -1
  28. package/out/dispatcher.js +7 -0
  29. package/out/dispatcher.js.map +1 -1
  30. package/out/hookEventNormalizer.d.ts +1 -33
  31. package/out/hookEventNormalizer.js +15 -424
  32. package/out/hookEventNormalizer.js.map +1 -1
  33. package/out/profileBuilder.js +32 -0
  34. package/out/profileBuilder.js.map +1 -1
  35. package/out/providers/base/BaseProvider.d.ts +14 -0
  36. package/out/providers/base/BaseProvider.js +25 -0
  37. package/out/providers/base/BaseProvider.js.map +1 -0
  38. package/out/providers/base/ProviderEvents.d.ts +12 -0
  39. package/out/providers/base/ProviderEvents.js +81 -0
  40. package/out/providers/base/ProviderEvents.js.map +1 -0
  41. package/out/providers/base/ProviderManager.d.ts +25 -0
  42. package/out/providers/base/ProviderManager.js +22 -0
  43. package/out/providers/base/ProviderManager.js.map +1 -0
  44. package/out/providers/base/ProviderModels.d.ts +28 -0
  45. package/out/providers/base/ProviderModels.js +89 -0
  46. package/out/providers/base/ProviderModels.js.map +1 -0
  47. package/out/providers/base/ProviderNormalizer.d.ts +42 -0
  48. package/out/providers/base/ProviderNormalizer.js +439 -0
  49. package/out/providers/base/ProviderNormalizer.js.map +1 -0
  50. package/out/providers/base/ProviderRegistry.d.ts +12 -0
  51. package/out/providers/base/ProviderRegistry.js +42 -0
  52. package/out/providers/base/ProviderRegistry.js.map +1 -0
  53. package/out/providers/base/ProviderSessions.d.ts +15 -0
  54. package/out/providers/base/ProviderSessions.js +15 -0
  55. package/out/providers/base/ProviderSessions.js.map +1 -0
  56. package/out/providers/base/ProviderState.d.ts +9 -0
  57. package/out/providers/base/ProviderState.js +16 -0
  58. package/out/providers/base/ProviderState.js.map +1 -0
  59. package/out/providers/base/ProviderUsage.d.ts +12 -0
  60. package/out/providers/base/ProviderUsage.js +33 -0
  61. package/out/providers/base/ProviderUsage.js.map +1 -0
  62. package/out/providers/base/contract.d.ts +62 -0
  63. package/out/providers/base/contract.js +9 -0
  64. package/out/providers/base/contract.js.map +1 -0
  65. package/out/providers/base/factories.d.ts +64 -0
  66. package/out/providers/base/factories.js +265 -0
  67. package/out/providers/base/factories.js.map +1 -0
  68. package/out/providers/base/implementations.d.ts +5 -0
  69. package/out/providers/base/implementations.js +23 -0
  70. package/out/providers/base/implementations.js.map +1 -0
  71. package/out/providers/base/index.d.ts +13 -0
  72. package/out/providers/base/index.js +29 -0
  73. package/out/providers/base/index.js.map +1 -0
  74. package/out/providers/base/types.d.ts +30 -0
  75. package/out/providers/base/types.js +8 -0
  76. package/out/providers/base/types.js.map +1 -0
  77. package/out/providers/claude/ProviderEvents.d.ts +5 -0
  78. package/out/providers/claude/ProviderEvents.js +18 -0
  79. package/out/providers/claude/ProviderEvents.js.map +1 -0
  80. package/out/providers/claude/ProviderManager.d.ts +39 -0
  81. package/out/providers/claude/ProviderManager.js +50 -0
  82. package/out/providers/claude/ProviderManager.js.map +1 -0
  83. package/out/providers/claude/ProviderModels.d.ts +8 -0
  84. package/out/providers/claude/ProviderModels.js +23 -0
  85. package/out/providers/claude/ProviderModels.js.map +1 -0
  86. package/out/providers/claude/ProviderNormalizer.d.ts +5 -0
  87. package/out/providers/claude/ProviderNormalizer.js +10 -0
  88. package/out/providers/claude/ProviderNormalizer.js.map +1 -0
  89. package/out/providers/claude/ProviderSessions.d.ts +14 -0
  90. package/out/providers/claude/ProviderSessions.js +35 -0
  91. package/out/providers/claude/ProviderSessions.js.map +1 -0
  92. package/out/providers/claude/ProviderState.d.ts +13 -0
  93. package/out/providers/claude/ProviderState.js +19 -0
  94. package/out/providers/claude/ProviderState.js.map +1 -0
  95. package/out/providers/claude/ProviderUsage.d.ts +13 -0
  96. package/out/providers/claude/ProviderUsage.js +59 -0
  97. package/out/providers/claude/ProviderUsage.js.map +1 -0
  98. package/out/providers/claude/cli.d.ts +95 -0
  99. package/out/providers/claude/cli.js +674 -0
  100. package/out/providers/claude/cli.js.map +1 -0
  101. package/out/providers/claude/index.d.ts +9 -0
  102. package/out/providers/claude/index.js +26 -0
  103. package/out/providers/claude/index.js.map +1 -0
  104. package/out/providers/claude/tui.d.ts +38 -0
  105. package/out/providers/claude/tui.js +346 -0
  106. package/out/providers/claude/tui.js.map +1 -0
  107. package/out/providers/claudeCliProvider.d.ts +1 -95
  108. package/out/providers/claudeCliProvider.js +4 -660
  109. package/out/providers/claudeCliProvider.js.map +1 -1
  110. package/out/providers/claudeTuiProvider.d.ts +1 -38
  111. package/out/providers/claudeTuiProvider.js +4 -332
  112. package/out/providers/claudeTuiProvider.js.map +1 -1
  113. package/out/providers/copilot/ProviderEvents.d.ts +6 -0
  114. package/out/providers/copilot/ProviderEvents.js +18 -0
  115. package/out/providers/copilot/ProviderEvents.js.map +1 -0
  116. package/out/providers/copilot/ProviderManager.d.ts +39 -0
  117. package/out/providers/copilot/ProviderManager.js +98 -0
  118. package/out/providers/copilot/ProviderManager.js.map +1 -0
  119. package/out/providers/copilot/ProviderModels.d.ts +7 -0
  120. package/out/providers/copilot/ProviderModels.js +18 -0
  121. package/out/providers/copilot/ProviderModels.js.map +1 -0
  122. package/out/providers/copilot/ProviderNormalizer.d.ts +5 -0
  123. package/out/providers/copilot/ProviderNormalizer.js +10 -0
  124. package/out/providers/copilot/ProviderNormalizer.js.map +1 -0
  125. package/out/providers/copilot/ProviderSessions.d.ts +12 -0
  126. package/out/providers/copilot/ProviderSessions.js +39 -0
  127. package/out/providers/copilot/ProviderSessions.js.map +1 -0
  128. package/out/providers/copilot/ProviderState.d.ts +11 -0
  129. package/out/providers/copilot/ProviderState.js +17 -0
  130. package/out/providers/copilot/ProviderState.js.map +1 -0
  131. package/out/providers/copilot/ProviderUsage.d.ts +12 -0
  132. package/out/providers/copilot/ProviderUsage.js +41 -0
  133. package/out/providers/copilot/ProviderUsage.js.map +1 -0
  134. package/out/providers/copilot/cli.d.ts +16 -0
  135. package/out/providers/copilot/cli.js +52 -0
  136. package/out/providers/copilot/cli.js.map +1 -0
  137. package/out/providers/copilot/index.d.ts +10 -0
  138. package/out/providers/copilot/index.js +27 -0
  139. package/out/providers/copilot/index.js.map +1 -0
  140. package/out/providers/copilot/sdk.d.ts +22 -0
  141. package/out/providers/copilot/sdk.js +489 -0
  142. package/out/providers/copilot/sdk.js.map +1 -0
  143. package/out/providers/copilot/sessions.d.ts +25 -0
  144. package/out/providers/copilot/sessions.js +214 -0
  145. package/out/providers/copilot/sessions.js.map +1 -0
  146. package/out/providers/copilotCliProvider.d.ts +1 -16
  147. package/out/providers/copilotCliProvider.js +15 -49
  148. package/out/providers/copilotCliProvider.js.map +1 -1
  149. package/out/providers/copilotSdkProvider.d.ts +1 -22
  150. package/out/providers/copilotSdkProvider.js +4 -475
  151. package/out/providers/copilotSdkProvider.js.map +1 -1
  152. package/out/providers/copilotSessions.d.ts +1 -25
  153. package/out/providers/copilotSessions.js +4 -200
  154. package/out/providers/copilotSessions.js.map +1 -1
  155. package/out/providers/dummy/ProviderEvents.d.ts +5 -0
  156. package/out/providers/dummy/ProviderEvents.js +16 -0
  157. package/out/providers/dummy/ProviderEvents.js.map +1 -0
  158. package/out/providers/dummy/ProviderManager.d.ts +31 -0
  159. package/out/providers/dummy/ProviderManager.js +115 -0
  160. package/out/providers/dummy/ProviderManager.js.map +1 -0
  161. package/out/providers/dummy/ProviderModels.d.ts +7 -0
  162. package/out/providers/dummy/ProviderModels.js +15 -0
  163. package/out/providers/dummy/ProviderModels.js.map +1 -0
  164. package/out/providers/dummy/ProviderNormalizer.d.ts +4 -0
  165. package/out/providers/dummy/ProviderNormalizer.js +9 -0
  166. package/out/providers/dummy/ProviderNormalizer.js.map +1 -0
  167. package/out/providers/dummy/ProviderSessions.d.ts +12 -0
  168. package/out/providers/dummy/ProviderSessions.js +105 -0
  169. package/out/providers/dummy/ProviderSessions.js.map +1 -0
  170. package/out/providers/dummy/ProviderState.d.ts +12 -0
  171. package/out/providers/dummy/ProviderState.js +23 -0
  172. package/out/providers/dummy/ProviderState.js.map +1 -0
  173. package/out/providers/dummy/ProviderUsage.d.ts +9 -0
  174. package/out/providers/dummy/ProviderUsage.js +27 -0
  175. package/out/providers/dummy/ProviderUsage.js.map +1 -0
  176. package/out/providers/dummy/commands.d.ts +9 -0
  177. package/out/providers/dummy/commands.js +48 -0
  178. package/out/providers/dummy/commands.js.map +1 -0
  179. package/out/providers/dummy/index.d.ts +10 -0
  180. package/out/providers/dummy/index.js +27 -0
  181. package/out/providers/dummy/index.js.map +1 -0
  182. package/out/providers/dummy/office.d.ts +23 -0
  183. package/out/providers/dummy/office.js +66 -0
  184. package/out/providers/dummy/office.js.map +1 -0
  185. package/out/providers/dummy/traces.d.ts +8 -0
  186. package/out/providers/dummy/traces.js +174 -0
  187. package/out/providers/dummy/traces.js.map +1 -0
  188. package/out/providers/grok/ProviderEvents.d.ts +6 -0
  189. package/out/providers/grok/ProviderEvents.js +17 -0
  190. package/out/providers/grok/ProviderEvents.js.map +1 -0
  191. package/out/providers/grok/ProviderManager.d.ts +42 -0
  192. package/out/providers/grok/ProviderManager.js +48 -0
  193. package/out/providers/grok/ProviderManager.js.map +1 -0
  194. package/out/providers/grok/ProviderModels.d.ts +7 -0
  195. package/out/providers/grok/ProviderModels.js +16 -0
  196. package/out/providers/grok/ProviderModels.js.map +1 -0
  197. package/out/providers/grok/ProviderNormalizer.d.ts +5 -0
  198. package/out/providers/grok/ProviderNormalizer.js +10 -0
  199. package/out/providers/grok/ProviderNormalizer.js.map +1 -0
  200. package/out/providers/grok/ProviderSessions.d.ts +12 -0
  201. package/out/providers/grok/ProviderSessions.js +27 -0
  202. package/out/providers/grok/ProviderSessions.js.map +1 -0
  203. package/out/providers/grok/ProviderState.d.ts +10 -0
  204. package/out/providers/grok/ProviderState.js +15 -0
  205. package/out/providers/grok/ProviderState.js.map +1 -0
  206. package/out/providers/grok/ProviderUsage.d.ts +7 -0
  207. package/out/providers/grok/ProviderUsage.js +20 -0
  208. package/out/providers/grok/ProviderUsage.js.map +1 -0
  209. package/out/providers/grok/index.d.ts +9 -0
  210. package/out/providers/grok/index.js +26 -0
  211. package/out/providers/grok/index.js.map +1 -0
  212. package/out/providers/grok/sessions.d.ts +27 -0
  213. package/out/providers/grok/sessions.js +246 -0
  214. package/out/providers/grok/sessions.js.map +1 -0
  215. package/out/providers/grok/tui.d.ts +38 -0
  216. package/out/providers/grok/tui.js +1630 -0
  217. package/out/providers/grok/tui.js.map +1 -0
  218. package/out/providers/grokSessions.d.ts +1 -27
  219. package/out/providers/grokSessions.js +4 -232
  220. package/out/providers/grokSessions.js.map +1 -1
  221. package/out/providers/grokTuiProvider.d.ts +1 -38
  222. package/out/providers/grokTuiProvider.js +4 -1616
  223. package/out/providers/grokTuiProvider.js.map +1 -1
  224. package/out/providers/opencode/ProviderEvents.d.ts +6 -0
  225. package/out/providers/opencode/ProviderEvents.js +18 -0
  226. package/out/providers/opencode/ProviderEvents.js.map +1 -0
  227. package/out/providers/opencode/ProviderManager.d.ts +39 -0
  228. package/out/providers/opencode/ProviderManager.js +90 -0
  229. package/out/providers/opencode/ProviderManager.js.map +1 -0
  230. package/out/providers/opencode/ProviderModels.d.ts +7 -0
  231. package/out/providers/opencode/ProviderModels.js +17 -0
  232. package/out/providers/opencode/ProviderModels.js.map +1 -0
  233. package/out/providers/opencode/ProviderNormalizer.d.ts +5 -0
  234. package/out/providers/opencode/ProviderNormalizer.js +10 -0
  235. package/out/providers/opencode/ProviderNormalizer.js.map +1 -0
  236. package/out/providers/opencode/ProviderSessions.d.ts +11 -0
  237. package/out/providers/opencode/ProviderSessions.js +28 -0
  238. package/out/providers/opencode/ProviderSessions.js.map +1 -0
  239. package/out/providers/opencode/ProviderState.d.ts +14 -0
  240. package/out/providers/opencode/ProviderState.js +20 -0
  241. package/out/providers/opencode/ProviderState.js.map +1 -0
  242. package/out/providers/opencode/ProviderUsage.d.ts +7 -0
  243. package/out/providers/opencode/ProviderUsage.js +20 -0
  244. package/out/providers/opencode/ProviderUsage.js.map +1 -0
  245. package/out/providers/opencode/cli.d.ts +29 -0
  246. package/out/providers/opencode/cli.js +199 -0
  247. package/out/providers/opencode/cli.js.map +1 -0
  248. package/out/providers/opencode/index.d.ts +9 -0
  249. package/out/providers/opencode/index.js +26 -0
  250. package/out/providers/opencode/index.js.map +1 -0
  251. package/out/providers/opencode/sdk.d.ts +32 -0
  252. package/out/providers/opencode/sdk.js +610 -0
  253. package/out/providers/opencode/sdk.js.map +1 -0
  254. package/out/providers/opencodeCliProvider.d.ts +1 -29
  255. package/out/providers/opencodeCliProvider.js +15 -196
  256. package/out/providers/opencodeCliProvider.js.map +1 -1
  257. package/out/providers/opencodeSdkProvider.d.ts +1 -32
  258. package/out/providers/opencodeSdkProvider.js +4 -596
  259. package/out/providers/opencodeSdkProvider.js.map +1 -1
  260. package/out/providers.d.ts +1 -1
  261. package/out/providers.js +5 -0
  262. package/out/providers.js.map +1 -1
  263. package/out/sdk/index.js +5 -0
  264. package/out/sdk/index.js.map +1 -1
  265. package/package.json +2 -2
@@ -0,0 +1,62 @@
1
+ import { ProviderId } from '../../providers';
2
+ import { AutodevSettings } from '../../core/settingsLoader';
3
+ import { IProcessLauncher } from '../../core/adapters';
4
+ export type ProviderKind = 'cli' | 'sdk' | 'tui';
5
+ export type Logger = (msg: string) => void;
6
+ /**
7
+ * DTO — everything a provider needs to dispatch ONE task. Immutable; built by
8
+ * the dispatcher's shared setup phase and handed to the resolved provider.
9
+ */
10
+ export interface DispatchRequest {
11
+ /** Absolute workspace root. */
12
+ readonly root: string;
13
+ /** Absolute path to `.autodev/AGENT_PROFILE.md`. */
14
+ readonly agentProfileFile: string;
15
+ /** Absolute path to the task MESSAGE file. */
16
+ readonly messageFile: string;
17
+ /** Absolute path to a profile+message combined file (built on demand). */
18
+ readonly combinedFile: string;
19
+ /** Session id to resume, or undefined for a fresh session. */
20
+ readonly resolvedSessionId?: string;
21
+ /** Whether to inject the agent profile into the prompt. */
22
+ readonly includeProfile: boolean;
23
+ /** Loaded workspace settings. */
24
+ readonly settings: AutodevSettings;
25
+ /** Per-message stdout sink. */
26
+ readonly stdoutFile: string;
27
+ /** Per-message exit-code sink. */
28
+ readonly exitFile: string;
29
+ }
30
+ /**
31
+ * DTO — the result of a dispatch. CLI providers return a shell `command` for
32
+ * the orchestrator to launch via the injected IProcessLauncher; in-process
33
+ * (sdk/tui) providers spawn directly and return `command: undefined`.
34
+ */
35
+ export interface DispatchOutcome {
36
+ readonly command?: string;
37
+ }
38
+ /** Collaborators passed to a provider at dispatch time (dependency injection). */
39
+ export interface DispatchContext {
40
+ readonly log: Logger;
41
+ readonly launcher: IProcessLauncher;
42
+ /** Reveal output UI (VS Code shell only); no-op headless. */
43
+ readonly showOutput?: () => void;
44
+ }
45
+ /**
46
+ * A pluggable AI backend. One instance per provider id, registered in the
47
+ * ProviderRegistry. Methods are intentionally minimal (interface segregation):
48
+ * CLI providers leave isBusy/close as the BaseProvider defaults.
49
+ */
50
+ export interface IProvider {
51
+ readonly id: ProviderId;
52
+ readonly label: string;
53
+ readonly kind: ProviderKind;
54
+ /** Resolve a session id to resume (probe/list), or undefined for fresh. */
55
+ resolveSession(root: string, log: Logger): Promise<string | undefined>;
56
+ /** Build a shell command (cli) or send in-process (sdk/tui) and return the outcome. */
57
+ dispatch(req: DispatchRequest, ctx: DispatchContext): Promise<DispatchOutcome>;
58
+ /** True while a persistent in-process turn is still running (sdk/tui only). */
59
+ isBusy(root: string): boolean;
60
+ /** Tear down any persistent server/session for this root (sdk/tui only). */
61
+ close(root: string, log: Logger): void;
62
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ // ---------------------------------------------------------------------------
3
+ // Provider contract — DTOs + interfaces (SOLID: interface segregation +
4
+ // dependency inversion). The dispatcher depends on IProvider, never on a
5
+ // concrete provider, so adding a provider means adding a class + a registry
6
+ // entry (open/closed) with zero changes to the dispatch orchestration.
7
+ // ---------------------------------------------------------------------------
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ //# sourceMappingURL=contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../../src/providers/base/contract.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,wEAAwE;AACxE,yEAAyE;AACzE,4EAA4E;AAC5E,uEAAuE;AACvE,8EAA8E"}
@@ -0,0 +1,64 @@
1
+ import { DispatchRequest, DispatchContext } from './contract';
2
+ import type { HookEvent, ModelInfo, SessionRecord, TranscriptMsg, UsagePayload } from './types';
3
+ export interface HookFactoryOpts {
4
+ cwd?: string;
5
+ sessionId?: string;
6
+ provider?: string;
7
+ timestamp?: string;
8
+ }
9
+ /** Build realistic hook events the way pixel-office's HookPayloadFactory does. */
10
+ export declare class HookEventFactory {
11
+ cwd: string;
12
+ sessionId: string;
13
+ provider: string;
14
+ timestamp: string;
15
+ constructor(opts?: HookFactoryOpts);
16
+ static make(opts?: HookFactoryOpts): HookEventFactory;
17
+ with(over: Partial<HookFactoryOpts>): HookEventFactory;
18
+ private claudeLike;
19
+ sessionStart(source?: string): HookEvent;
20
+ sessionEnd(reason?: string): HookEvent;
21
+ userPromptSubmit(prompt?: string): HookEvent;
22
+ notification(message: string): HookEvent;
23
+ toolStart(toolName: string, input?: Record<string, unknown>, toolUseId?: string): HookEvent;
24
+ toolEnd(toolName: string, inputOrOutput?: Record<string, unknown>, toolUseId?: string, failure?: boolean): HookEvent;
25
+ agentMessage(message: string): HookEvent;
26
+ stop(reason?: string): HookEvent;
27
+ stopFailure(reason?: string): HookEvent;
28
+ permissionRequest(tool?: string, command?: string): HookEvent;
29
+ todoUpdated(todos?: Array<{
30
+ id?: string;
31
+ content?: string;
32
+ status?: string;
33
+ }>): HookEvent;
34
+ /**
35
+ * Full todo-app lifecycle matching pixel-office HookPayloadFactory::todoAppLifecycle.
36
+ * Used by the dummy agent and by factory-driven tests.
37
+ */
38
+ todoAppLifecycle(): HookEvent[];
39
+ }
40
+ /** Factory for DispatchRequest DTOs used by manager.dispatch tests. */
41
+ export declare class DispatchRequestFactory {
42
+ static make(over: Partial<DispatchRequest> & {
43
+ root: string;
44
+ }): DispatchRequest;
45
+ static context(over?: Partial<DispatchContext>): DispatchContext;
46
+ }
47
+ /** Factory for session records / transcripts. */
48
+ export declare class SessionFactory {
49
+ static record(over?: Partial<SessionRecord>): SessionRecord;
50
+ static transcript(over?: {
51
+ user?: string;
52
+ assistant?: string;
53
+ }): TranscriptMsg[];
54
+ }
55
+ /** Factory for usage snapshots. */
56
+ export declare class UsageFactory {
57
+ static make(over?: Partial<UsagePayload>): UsagePayload;
58
+ static claudeBlock(over?: Record<string, number>): Record<string, number>;
59
+ static copilotBlock(over?: Record<string, number>): Record<string, number>;
60
+ }
61
+ /** Factory for model catalog entries. */
62
+ export declare class ModelFactory {
63
+ static make(over?: Partial<ModelInfo>): ModelInfo;
64
+ }
@@ -0,0 +1,265 @@
1
+ "use strict";
2
+ // ---------------------------------------------------------------------------
3
+ // Factory generation for provider tests. Shapes mirror pixel-office
4
+ // HookPayloadFactory + the real fixtures under
5
+ // external/pixel-office/tests/Fixtures/traces so unit tests never invent
6
+ // a one-off event schema.
7
+ // ---------------------------------------------------------------------------
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ModelFactory = exports.UsageFactory = exports.SessionFactory = exports.DispatchRequestFactory = exports.HookEventFactory = void 0;
10
+ const crypto_1 = require("crypto");
11
+ const settingsLoader_1 = require("../../core/settingsLoader");
12
+ const ProviderNormalizer_1 = require("./ProviderNormalizer");
13
+ /** Build realistic hook events the way pixel-office's HookPayloadFactory does. */
14
+ class HookEventFactory {
15
+ cwd;
16
+ sessionId;
17
+ provider;
18
+ timestamp;
19
+ constructor(opts = {}) {
20
+ this.cwd = opts.cwd ?? '/workspace/todo-app';
21
+ this.sessionId = opts.sessionId ?? (0, crypto_1.randomUUID)();
22
+ this.provider = opts.provider ?? 'claude-cli';
23
+ this.timestamp = opts.timestamp ?? new Date().toISOString();
24
+ }
25
+ static make(opts) {
26
+ return new HookEventFactory(opts);
27
+ }
28
+ with(over) {
29
+ return new HookEventFactory({
30
+ cwd: over.cwd ?? this.cwd,
31
+ sessionId: over.sessionId ?? this.sessionId,
32
+ provider: over.provider ?? this.provider,
33
+ timestamp: over.timestamp ?? this.timestamp,
34
+ });
35
+ }
36
+ claudeLike(name, extra = {}) {
37
+ return {
38
+ hook_event_name: name,
39
+ event_type: (0, ProviderNormalizer_1.eventTypeFor)(name),
40
+ provider: this.provider,
41
+ cwd: this.cwd,
42
+ timestamp: this.timestamp,
43
+ session_id: this.sessionId,
44
+ ...extra,
45
+ };
46
+ }
47
+ sessionStart(source = 'startup') {
48
+ return this.claudeLike('SessionStart', { source });
49
+ }
50
+ sessionEnd(reason = 'completed') {
51
+ return this.claudeLike('SessionEnd', { reason });
52
+ }
53
+ userPromptSubmit(prompt = 'Build a todo app') {
54
+ return this.claudeLike('UserPromptSubmit', { message: prompt });
55
+ }
56
+ notification(message) {
57
+ return this.claudeLike('Notification', {
58
+ message,
59
+ title: this.provider,
60
+ tool_name: this.provider,
61
+ });
62
+ }
63
+ toolStart(toolName, input = {}, toolUseId) {
64
+ const id = toolUseId ?? `call-${(0, crypto_1.randomUUID)()}`;
65
+ return this.claudeLike('PreToolUse', {
66
+ tool_name: toolName,
67
+ tool_input: Object.keys(input).length ? input : defaultToolInput(toolName, this.cwd),
68
+ tool_use_id: id,
69
+ session_id: this.sessionId,
70
+ });
71
+ }
72
+ toolEnd(toolName, inputOrOutput = {}, toolUseId, failure = false) {
73
+ const id = toolUseId ?? `call-${(0, crypto_1.randomUUID)()}`;
74
+ const outputText = String(inputOrOutput['output'] ?? inputOrOutput['text'] ?? `✓ ${toolName} ok`);
75
+ const input = { ...inputOrOutput };
76
+ delete input['output'];
77
+ delete input['text'];
78
+ return this.claudeLike(failure ? 'PostToolUseFailure' : 'PostToolUse', {
79
+ tool_name: toolName,
80
+ tool_input: Object.keys(input).length ? input : defaultToolInput(toolName, this.cwd),
81
+ tool_output: { text: outputText },
82
+ tool_use_id: id,
83
+ success: !failure,
84
+ });
85
+ }
86
+ agentMessage(message) {
87
+ return this.claudeLike('AgentMessage', { message });
88
+ }
89
+ stop(reason) {
90
+ return this.claudeLike('Stop', reason ? { reason } : {});
91
+ }
92
+ stopFailure(reason = 'watchdog_timeout') {
93
+ return this.claudeLike('StopFailure', { reason });
94
+ }
95
+ permissionRequest(tool = 'Bash', command = 'rm -rf /') {
96
+ return this.claudeLike('PermissionRequest', {
97
+ tool_name: tool,
98
+ tool_input: { command },
99
+ message: `Allow ${tool}?`,
100
+ });
101
+ }
102
+ todoUpdated(todos) {
103
+ const list = todos ?? [
104
+ { id: '1', content: 'Scaffold index.html', status: 'completed' },
105
+ { id: '2', content: 'Implement add/toggle/delete in app.js', status: 'in_progress' },
106
+ { id: '3', content: 'Style with CSS', status: 'pending' },
107
+ ];
108
+ return this.claudeLike('TaskCreated', {
109
+ task_id: `todo-${(0, crypto_1.randomUUID)().slice(0, 8)}`,
110
+ task_subject: list[1]?.content ?? 'Todo update',
111
+ task_description: JSON.stringify(list),
112
+ });
113
+ }
114
+ /**
115
+ * Full todo-app lifecycle matching pixel-office HookPayloadFactory::todoAppLifecycle.
116
+ * Used by the dummy agent and by factory-driven tests.
117
+ */
118
+ todoAppLifecycle() {
119
+ const writeId = `call-${(0, crypto_1.randomUUID)()}`;
120
+ const readId = `call-${(0, crypto_1.randomUUID)()}`;
121
+ const writeTool = writeToolFor(this.provider);
122
+ return [
123
+ this.sessionStart(),
124
+ this.userPromptSubmit('Build a sample todo app with add/complete/delete'),
125
+ this.notification('Starting work on the sample todo app…'),
126
+ this.toolStart('list_dir', { target_directory: this.cwd }),
127
+ this.toolEnd('list_dir', { target_directory: this.cwd, output: `- ${this.cwd}/\n - README.md\n` }),
128
+ this.toolStart('read_file', { target_file: `${this.cwd}/README.md` }, readId),
129
+ this.toolEnd('read_file', { target_file: `${this.cwd}/README.md`, output: '# Todo App workspace' }, readId),
130
+ this.toolStart(writeTool, {
131
+ file_path: `${this.cwd}/index.html`,
132
+ content: '<!doctype html><title>Todos</title><div id="app"></div><script src="app.js"></script>',
133
+ }, writeId),
134
+ this.toolEnd(writeTool, { file_path: `${this.cwd}/index.html`, output: 'Wrote index.html' }, writeId),
135
+ this.todoUpdated(),
136
+ this.notification('Todo scaffold written. Handing styles to teammate.'),
137
+ this.sessionEnd(),
138
+ ];
139
+ }
140
+ }
141
+ exports.HookEventFactory = HookEventFactory;
142
+ function writeToolFor(provider) {
143
+ if (provider.startsWith('grok'))
144
+ return 'search_replace';
145
+ if (provider.startsWith('copilot'))
146
+ return 'create_file';
147
+ if (provider.startsWith('opencode'))
148
+ return 'write';
149
+ if (provider.startsWith('dummy'))
150
+ return 'Write';
151
+ return 'Write';
152
+ }
153
+ function defaultToolInput(toolName, cwd) {
154
+ switch (toolName) {
155
+ case 'read_file':
156
+ case 'Read':
157
+ case 'view':
158
+ return { target_file: `${cwd}/README.md` };
159
+ case 'list_dir':
160
+ case 'LS':
161
+ case 'list_bash':
162
+ return { target_directory: cwd };
163
+ case 'run_terminal_command':
164
+ case 'Bash':
165
+ case 'shell':
166
+ return { command: 'ls -la' };
167
+ case 'search_replace':
168
+ case 'Edit':
169
+ case 'Write':
170
+ case 'write':
171
+ case 'create_file':
172
+ return { file_path: `${cwd}/app.js`, content: '// todo app' };
173
+ default:
174
+ return { input: toolName };
175
+ }
176
+ }
177
+ /** Factory for DispatchRequest DTOs used by manager.dispatch tests. */
178
+ class DispatchRequestFactory {
179
+ static make(over) {
180
+ return {
181
+ root: over.root,
182
+ agentProfileFile: over.agentProfileFile ?? `${over.root}/.autodev/AGENT_PROFILE.md`,
183
+ messageFile: over.messageFile ?? `${over.root}/.autodev/MESSAGE.md`,
184
+ combinedFile: over.combinedFile ?? `${over.root}/.autodev/messages/temp_1.md`,
185
+ resolvedSessionId: over.resolvedSessionId,
186
+ includeProfile: over.includeProfile ?? true,
187
+ settings: (over.settings ?? { ...settingsLoader_1.SETTINGS_DEFAULTS, hooksEnabled: false }),
188
+ stdoutFile: over.stdoutFile ?? `${over.root}/out.log`,
189
+ exitFile: over.exitFile ?? `${over.root}/exit.code`,
190
+ };
191
+ }
192
+ static context(over = {}) {
193
+ return {
194
+ log: over.log ?? (() => { }),
195
+ launcher: over.launcher ?? { launch() { } },
196
+ showOutput: over.showOutput ?? (() => { }),
197
+ };
198
+ }
199
+ }
200
+ exports.DispatchRequestFactory = DispatchRequestFactory;
201
+ /** Factory for session records / transcripts. */
202
+ class SessionFactory {
203
+ static record(over = {}) {
204
+ return {
205
+ id: over.id ?? (0, crypto_1.randomUUID)(),
206
+ name: over.name ?? '(untitled)',
207
+ cwd: over.cwd ?? '/workspace/todo-app',
208
+ updated: over.updated ?? Date.now(),
209
+ file: over.file,
210
+ msgs: over.msgs ?? 3,
211
+ };
212
+ }
213
+ static transcript(over = {}) {
214
+ return [
215
+ { role: 'user', text: over.user ?? 'Build a todo app', ts: Date.now() - 2000 },
216
+ { role: 'assistant', text: over.assistant ?? 'I will scaffold index.html and app.js.', ts: Date.now() - 1000 },
217
+ { role: 'tool', text: '🔧 Write({"file_path":"index.html"})', ts: Date.now() },
218
+ ];
219
+ }
220
+ }
221
+ exports.SessionFactory = SessionFactory;
222
+ /** Factory for usage snapshots. */
223
+ class UsageFactory {
224
+ static make(over = {}) {
225
+ const input = over.inputTokens ?? 5000;
226
+ const output = over.outputTokens ?? 1200;
227
+ const context = over.contextTokens ?? 40_000;
228
+ const limit = 200_000;
229
+ return {
230
+ tokens: over.tokens ?? input + output,
231
+ inputTokens: input,
232
+ outputTokens: output,
233
+ contextTokens: context,
234
+ contextPct: over.contextPct ?? Math.round((context / limit) * 1000) / 10,
235
+ };
236
+ }
237
+ static claudeBlock(over = {}) {
238
+ return {
239
+ input_tokens: over['input_tokens'] ?? 5000,
240
+ output_tokens: over['output_tokens'] ?? 1200,
241
+ cache_read_input_tokens: over['cache_read_input_tokens'] ?? 30_000,
242
+ cache_creation_input_tokens: over['cache_creation_input_tokens'] ?? 5000,
243
+ };
244
+ }
245
+ static copilotBlock(over = {}) {
246
+ return {
247
+ inputTokens: over['inputTokens'] ?? 4200,
248
+ outputTokens: over['outputTokens'] ?? 800,
249
+ contextTokens: over['contextTokens'] ?? 24_000,
250
+ };
251
+ }
252
+ }
253
+ exports.UsageFactory = UsageFactory;
254
+ /** Factory for model catalog entries. */
255
+ class ModelFactory {
256
+ static make(over = {}) {
257
+ return {
258
+ id: over.id ?? 'dummy-fast',
259
+ label: over.label ?? 'Dummy Fast',
260
+ contextLimit: over.contextLimit ?? 128_000,
261
+ };
262
+ }
263
+ }
264
+ exports.ModelFactory = ModelFactory;
265
+ //# sourceMappingURL=factories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factories.js","sourceRoot":"","sources":["../../../src/providers/base/factories.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { ClaudeCliProvider, ClaudeTuiProvider } from '../claude/ProviderManager';
2
+ export { CopilotCliProvider, CopilotSdkProvider } from '../copilot/ProviderManager';
3
+ export { OpenCodeCliProvider, OpenCodeSdkProvider } from '../opencode/ProviderManager';
4
+ export { GrokCliProvider, GrokTuiProvider } from '../grok/ProviderManager';
5
+ export { DummyProvider, dummyProvider } from '../dummy/ProviderManager';
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ // ---------------------------------------------------------------------------
3
+ // Concrete provider strategies. Each class lives in its family folder; this
4
+ // module re-exports them so the registry (and existing imports) stay stable.
5
+ // ---------------------------------------------------------------------------
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.dummyProvider = exports.DummyProvider = exports.GrokTuiProvider = exports.GrokCliProvider = exports.OpenCodeSdkProvider = exports.OpenCodeCliProvider = exports.CopilotSdkProvider = exports.CopilotCliProvider = exports.ClaudeTuiProvider = exports.ClaudeCliProvider = void 0;
8
+ var ProviderManager_1 = require("../claude/ProviderManager");
9
+ Object.defineProperty(exports, "ClaudeCliProvider", { enumerable: true, get: function () { return ProviderManager_1.ClaudeCliProvider; } });
10
+ Object.defineProperty(exports, "ClaudeTuiProvider", { enumerable: true, get: function () { return ProviderManager_1.ClaudeTuiProvider; } });
11
+ var ProviderManager_2 = require("../copilot/ProviderManager");
12
+ Object.defineProperty(exports, "CopilotCliProvider", { enumerable: true, get: function () { return ProviderManager_2.CopilotCliProvider; } });
13
+ Object.defineProperty(exports, "CopilotSdkProvider", { enumerable: true, get: function () { return ProviderManager_2.CopilotSdkProvider; } });
14
+ var ProviderManager_3 = require("../opencode/ProviderManager");
15
+ Object.defineProperty(exports, "OpenCodeCliProvider", { enumerable: true, get: function () { return ProviderManager_3.OpenCodeCliProvider; } });
16
+ Object.defineProperty(exports, "OpenCodeSdkProvider", { enumerable: true, get: function () { return ProviderManager_3.OpenCodeSdkProvider; } });
17
+ var ProviderManager_4 = require("../grok/ProviderManager");
18
+ Object.defineProperty(exports, "GrokCliProvider", { enumerable: true, get: function () { return ProviderManager_4.GrokCliProvider; } });
19
+ Object.defineProperty(exports, "GrokTuiProvider", { enumerable: true, get: function () { return ProviderManager_4.GrokTuiProvider; } });
20
+ var ProviderManager_5 = require("../dummy/ProviderManager");
21
+ Object.defineProperty(exports, "DummyProvider", { enumerable: true, get: function () { return ProviderManager_5.DummyProvider; } });
22
+ Object.defineProperty(exports, "dummyProvider", { enumerable: true, get: function () { return ProviderManager_5.dummyProvider; } });
23
+ //# sourceMappingURL=implementations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implementations.js","sourceRoot":"","sources":["../../../src/providers/base/implementations.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,4EAA4E;AAC5E,6EAA6E;AAC7E,8EAA8E;;;AAE9E,6DAAiF;AAAxE,oHAAA,iBAAiB,OAAA;AAAE,oHAAA,iBAAiB,OAAA;AAC7C,8DAAoF;AAA3E,qHAAA,kBAAkB,OAAA;AAAE,qHAAA,kBAAkB,OAAA;AAC/C,+DAAuF;AAA9E,sHAAA,mBAAmB,OAAA;AAAE,sHAAA,mBAAmB,OAAA;AACjD,2DAA2E;AAAlE,kHAAA,eAAe,OAAA;AAAE,kHAAA,eAAe,OAAA;AACzC,4DAAwE;AAA/D,gHAAA,aAAa,OAAA;AAAE,gHAAA,aAAa,OAAA"}
@@ -0,0 +1,13 @@
1
+ export * from './contract';
2
+ export * from './BaseProvider';
3
+ export * from './ProviderRegistry';
4
+ export * from './ProviderEvents';
5
+ export * from './ProviderModels';
6
+ export * from './ProviderSessions';
7
+ export * from './ProviderState';
8
+ export * from './ProviderNormalizer';
9
+ export * from './ProviderUsage';
10
+ export * from './ProviderManager';
11
+ export * from './implementations';
12
+ export * from './factories';
13
+ export type { TranscriptMsg, UsagePayload, ModelInfo, SessionRecord } from './types';
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./contract"), exports);
18
+ __exportStar(require("./BaseProvider"), exports);
19
+ __exportStar(require("./ProviderRegistry"), exports);
20
+ __exportStar(require("./ProviderEvents"), exports);
21
+ __exportStar(require("./ProviderModels"), exports);
22
+ __exportStar(require("./ProviderSessions"), exports);
23
+ __exportStar(require("./ProviderState"), exports);
24
+ __exportStar(require("./ProviderNormalizer"), exports);
25
+ __exportStar(require("./ProviderUsage"), exports);
26
+ __exportStar(require("./ProviderManager"), exports);
27
+ __exportStar(require("./implementations"), exports);
28
+ __exportStar(require("./factories"), exports);
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/base/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,iDAA+B;AAC/B,qDAAmC;AACnC,mDAAiC;AACjC,mDAAiC;AACjC,qDAAmC;AACnC,kDAAgC;AAChC,uDAAqC;AACrC,kDAAgC;AAChC,oDAAkC;AAClC,oDAAkC;AAClC,8CAA4B"}
@@ -0,0 +1,30 @@
1
+ /** Normalized transcript message shared across session readers. */
2
+ export interface TranscriptMsg {
3
+ role: 'user' | 'assistant' | 'system' | 'tool';
4
+ text: string;
5
+ ts?: number;
6
+ }
7
+ /** Compact usage snapshot forwarded to pixel-office (all ints, pct 0..100). */
8
+ export interface UsagePayload {
9
+ tokens: number;
10
+ inputTokens: number;
11
+ outputTokens: number;
12
+ contextTokens: number;
13
+ contextPct: number;
14
+ }
15
+ /** One catalog entry for a provider's supported models. */
16
+ export interface ModelInfo {
17
+ id: string;
18
+ label: string;
19
+ contextLimit: number;
20
+ }
21
+ /** Workspace-scoped session descriptor (newest-first lists). */
22
+ export interface SessionRecord {
23
+ id: string;
24
+ name?: string;
25
+ cwd?: string;
26
+ updated: number;
27
+ file?: string;
28
+ msgs?: number;
29
+ }
30
+ export type { HookEvent } from './ProviderNormalizer';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ // ---------------------------------------------------------------------------
3
+ // Shared provider-layer types used by every family (claude / grok / opencode /
4
+ // copilot / dummy). Kept here so service classes don't re-declare the same
5
+ // DTOs and so tests can import one shape.
6
+ // ---------------------------------------------------------------------------
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/providers/base/types.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,+EAA+E;AAC/E,2EAA2E;AAC3E,0CAA0C;AAC1C,8EAA8E"}
@@ -0,0 +1,5 @@
1
+ import { ProviderEvents } from '../base/ProviderEvents';
2
+ export declare class ClaudeProviderEvents extends ProviderEvents {
3
+ readonly provider = "claude-cli";
4
+ listSupported(): string[];
5
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ClaudeProviderEvents = void 0;
4
+ const ProviderEvents_1 = require("../base/ProviderEvents");
5
+ class ClaudeProviderEvents extends ProviderEvents_1.ProviderEvents {
6
+ provider = 'claude-cli';
7
+ listSupported() {
8
+ return [
9
+ 'SessionStart', 'SessionEnd', 'UserPromptSubmit',
10
+ 'PreToolUse', 'PostToolUse', 'PostToolUseFailure',
11
+ 'AgentMessage', 'Notification', 'Stop', 'StopFailure',
12
+ 'PermissionRequest', 'PermissionDenied',
13
+ 'SubagentStart', 'SubagentStop', 'TaskCreated', 'TaskCompleted',
14
+ ];
15
+ }
16
+ }
17
+ exports.ClaudeProviderEvents = ClaudeProviderEvents;
18
+ //# sourceMappingURL=ProviderEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderEvents.js","sourceRoot":"","sources":["../../../src/providers/claude/ProviderEvents.ts"],"names":[],"mappings":";;;AAAA,2DAAwD;AAExD,MAAa,oBAAqB,SAAQ,+BAAc;IAC7C,QAAQ,GAAG,YAAY,CAAC;IAEjC,aAAa;QACX,OAAO;YACL,cAAc,EAAE,YAAY,EAAE,kBAAkB;YAChD,YAAY,EAAE,aAAa,EAAE,oBAAoB;YACjD,cAAc,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa;YACrD,mBAAmB,EAAE,kBAAkB;YACvC,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe;SAChE,CAAC;IACJ,CAAC;CACF;AAZD,oDAYC"}
@@ -0,0 +1,39 @@
1
+ import { ProviderId } from '../../providers';
2
+ import { ProviderKind, Logger, DispatchRequest, DispatchOutcome } from '../base/contract';
3
+ import { ProviderManager } from '../base/ProviderManager';
4
+ import { ClaudeProviderEvents } from './ProviderEvents';
5
+ import { ClaudeProviderModels } from './ProviderModels';
6
+ import { ClaudeProviderSessions } from './ProviderSessions';
7
+ import { ClaudeCliProviderState, ClaudeTuiProviderState } from './ProviderState';
8
+ import { ClaudeProviderNormalizer } from './ProviderNormalizer';
9
+ import { ClaudeProviderUsage } from './ProviderUsage';
10
+ export declare class ClaudeCliProvider extends ProviderManager {
11
+ readonly id: ProviderId;
12
+ readonly label = "Claude CLI";
13
+ readonly kind: ProviderKind;
14
+ readonly family = "claude";
15
+ readonly events: ClaudeProviderEvents;
16
+ readonly models: ClaudeProviderModels;
17
+ readonly sessions: ClaudeProviderSessions;
18
+ readonly state: ClaudeCliProviderState;
19
+ readonly normalizer: ClaudeProviderNormalizer;
20
+ readonly usage: ClaudeProviderUsage;
21
+ resolveSession(root: string, log: Logger): Promise<string | undefined>;
22
+ dispatch(req: DispatchRequest): Promise<DispatchOutcome>;
23
+ }
24
+ export declare class ClaudeTuiProvider extends ProviderManager {
25
+ readonly id: ProviderId;
26
+ readonly label = "Claude TUI";
27
+ readonly kind: ProviderKind;
28
+ readonly family = "claude";
29
+ readonly events: ClaudeProviderEvents;
30
+ readonly models: ClaudeProviderModels;
31
+ readonly sessions: ClaudeProviderSessions;
32
+ readonly state: ClaudeTuiProviderState;
33
+ readonly normalizer: ClaudeProviderNormalizer;
34
+ readonly usage: ClaudeProviderUsage;
35
+ dispatch(req: DispatchRequest, ctx: {
36
+ log: Logger;
37
+ showOutput?: () => void;
38
+ }): Promise<DispatchOutcome>;
39
+ }