bopodev-agent-sdk 0.1.11 → 0.1.13

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 (100) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.turbo/turbo-typecheck.log +1 -1
  3. package/dist/adapters/anthropic-api/src/cli/format-event.d.ts +1 -0
  4. package/dist/adapters/anthropic-api/src/cli/index.d.ts +1 -0
  5. package/dist/adapters/anthropic-api/src/index.d.ts +16 -0
  6. package/dist/adapters/anthropic-api/src/server/execute.d.ts +2 -0
  7. package/dist/adapters/anthropic-api/src/server/index.d.ts +6 -0
  8. package/dist/adapters/anthropic-api/src/server/parse.d.ts +1 -0
  9. package/dist/adapters/anthropic-api/src/server/test.d.ts +2 -0
  10. package/dist/adapters/anthropic-api/src/ui/build-config.d.ts +3 -0
  11. package/dist/adapters/anthropic-api/src/ui/index.d.ts +2 -0
  12. package/dist/adapters/anthropic-api/src/ui/parse-stdout.d.ts +6 -0
  13. package/dist/adapters/claude-code/src/cli/format-event.d.ts +1 -0
  14. package/dist/adapters/claude-code/src/cli/index.d.ts +1 -0
  15. package/dist/adapters/claude-code/src/index.d.ts +16 -0
  16. package/dist/adapters/claude-code/src/server/execute.d.ts +2 -0
  17. package/dist/adapters/claude-code/src/server/index.d.ts +6 -0
  18. package/dist/adapters/claude-code/src/server/parse.d.ts +2 -0
  19. package/dist/adapters/claude-code/src/server/test.d.ts +2 -0
  20. package/dist/adapters/claude-code/src/ui/build-config.d.ts +3 -0
  21. package/dist/adapters/claude-code/src/ui/index.d.ts +2 -0
  22. package/dist/adapters/claude-code/src/ui/parse-stdout.d.ts +6 -0
  23. package/dist/adapters/codex/src/cli/format-event.d.ts +1 -0
  24. package/dist/adapters/codex/src/cli/index.d.ts +1 -0
  25. package/dist/adapters/codex/src/index.d.ts +34 -0
  26. package/dist/adapters/codex/src/server/execute.d.ts +2 -0
  27. package/dist/adapters/codex/src/server/index.d.ts +6 -0
  28. package/dist/adapters/codex/src/server/parse.d.ts +2 -0
  29. package/dist/adapters/codex/src/server/test.d.ts +2 -0
  30. package/dist/adapters/codex/src/ui/build-config.d.ts +3 -0
  31. package/dist/adapters/codex/src/ui/index.d.ts +2 -0
  32. package/dist/adapters/codex/src/ui/parse-stdout.d.ts +6 -0
  33. package/dist/adapters/cursor/src/cli/format-event.d.ts +1 -0
  34. package/dist/adapters/cursor/src/cli/index.d.ts +1 -0
  35. package/dist/adapters/cursor/src/index.d.ts +22 -0
  36. package/dist/adapters/cursor/src/server/execute.d.ts +2 -0
  37. package/dist/adapters/cursor/src/server/index.d.ts +6 -0
  38. package/dist/adapters/cursor/src/server/parse.d.ts +2 -0
  39. package/dist/adapters/cursor/src/server/test.d.ts +2 -0
  40. package/dist/adapters/cursor/src/ui/build-config.d.ts +3 -0
  41. package/dist/adapters/cursor/src/ui/index.d.ts +2 -0
  42. package/dist/adapters/cursor/src/ui/parse-stdout.d.ts +6 -0
  43. package/dist/adapters/http/src/cli/format-event.d.ts +1 -0
  44. package/dist/adapters/http/src/cli/index.d.ts +1 -0
  45. package/dist/adapters/http/src/index.d.ts +7 -0
  46. package/dist/adapters/http/src/server/execute.d.ts +2 -0
  47. package/dist/adapters/http/src/server/index.d.ts +6 -0
  48. package/dist/adapters/http/src/server/parse.d.ts +1 -0
  49. package/dist/adapters/http/src/server/test.d.ts +2 -0
  50. package/dist/adapters/http/src/ui/build-config.d.ts +3 -0
  51. package/dist/adapters/http/src/ui/index.d.ts +2 -0
  52. package/dist/adapters/http/src/ui/parse-stdout.d.ts +6 -0
  53. package/dist/adapters/openai-api/src/cli/format-event.d.ts +1 -0
  54. package/dist/adapters/openai-api/src/cli/index.d.ts +1 -0
  55. package/dist/adapters/openai-api/src/index.d.ts +22 -0
  56. package/dist/adapters/openai-api/src/server/execute.d.ts +2 -0
  57. package/dist/adapters/openai-api/src/server/index.d.ts +6 -0
  58. package/dist/adapters/openai-api/src/server/parse.d.ts +1 -0
  59. package/dist/adapters/openai-api/src/server/test.d.ts +2 -0
  60. package/dist/adapters/openai-api/src/ui/build-config.d.ts +3 -0
  61. package/dist/adapters/openai-api/src/ui/index.d.ts +2 -0
  62. package/dist/adapters/openai-api/src/ui/parse-stdout.d.ts +6 -0
  63. package/dist/adapters/opencode/src/cli/format-event.d.ts +1 -0
  64. package/dist/adapters/opencode/src/cli/index.d.ts +1 -0
  65. package/dist/adapters/opencode/src/index.d.ts +7 -0
  66. package/dist/adapters/opencode/src/server/execute.d.ts +2 -0
  67. package/dist/adapters/opencode/src/server/index.d.ts +6 -0
  68. package/dist/adapters/opencode/src/server/parse.d.ts +1 -0
  69. package/dist/adapters/opencode/src/server/test.d.ts +2 -0
  70. package/dist/adapters/opencode/src/ui/build-config.d.ts +3 -0
  71. package/dist/adapters/opencode/src/ui/index.d.ts +2 -0
  72. package/dist/adapters/opencode/src/ui/parse-stdout.d.ts +6 -0
  73. package/dist/adapters/shell/src/cli/format-event.d.ts +1 -0
  74. package/dist/adapters/shell/src/cli/index.d.ts +1 -0
  75. package/dist/adapters/shell/src/index.d.ts +7 -0
  76. package/dist/adapters/shell/src/server/execute.d.ts +2 -0
  77. package/dist/adapters/shell/src/server/index.d.ts +6 -0
  78. package/dist/adapters/shell/src/server/parse.d.ts +1 -0
  79. package/dist/adapters/shell/src/server/test.d.ts +2 -0
  80. package/dist/adapters/shell/src/ui/build-config.d.ts +3 -0
  81. package/dist/adapters/shell/src/ui/index.d.ts +2 -0
  82. package/dist/adapters/shell/src/ui/parse-stdout.d.ts +6 -0
  83. package/dist/agent-sdk/src/adapters.d.ts +226 -1
  84. package/dist/agent-sdk/src/index.d.ts +2 -0
  85. package/dist/agent-sdk/src/registry.d.ts +2 -1
  86. package/dist/agent-sdk/src/runtime-core.d.ts +2 -0
  87. package/dist/agent-sdk/src/runtime-http.d.ts +38 -0
  88. package/dist/agent-sdk/src/runtime-parsers.d.ts +1 -0
  89. package/dist/agent-sdk/src/runtime.d.ts +36 -0
  90. package/dist/agent-sdk/src/types.d.ts +55 -0
  91. package/dist/contracts/src/index.d.ts +889 -12
  92. package/package.json +2 -2
  93. package/src/adapters.ts +385 -36
  94. package/src/index.ts +2 -0
  95. package/src/registry.ts +67 -18
  96. package/src/runtime-core.ts +7 -0
  97. package/src/runtime-http.ts +455 -0
  98. package/src/runtime-parsers.ts +6 -0
  99. package/src/runtime.ts +848 -33
  100. package/src/types.ts +61 -0
@@ -1,4 +1,5 @@
1
- import type { AdapterEnvironmentResult, AdapterExecutionResult, AdapterMetadata, AdapterModelOption, AgentAdapter, AgentProviderType, AgentRuntimeConfig, HeartbeatContext } from "./types";
1
+ import type { AdapterEnvironmentCheck, AdapterEnvironmentResult, AdapterExecutionResult, AdapterMetadata, AdapterModelOption, AgentAdapter, AgentProviderType, AgentRuntimeConfig, HeartbeatContext } from "./types";
2
+ import { type DirectApiProvider } from "./runtime-http";
2
3
  export declare class ClaudeCodeAdapter implements AgentAdapter {
3
4
  providerType: "claude_code";
4
5
  execute(context: HeartbeatContext): Promise<AdapterExecutionResult>;
@@ -15,11 +16,235 @@ export declare class OpenCodeAdapter implements AgentAdapter {
15
16
  providerType: "opencode";
16
17
  execute(context: HeartbeatContext): Promise<AdapterExecutionResult>;
17
18
  }
19
+ export declare class OpenAIApiAdapter implements AgentAdapter {
20
+ providerType: "openai_api";
21
+ execute(context: HeartbeatContext): Promise<AdapterExecutionResult>;
22
+ }
23
+ export declare class AnthropicApiAdapter implements AgentAdapter {
24
+ providerType: "anthropic_api";
25
+ execute(context: HeartbeatContext): Promise<AdapterExecutionResult>;
26
+ }
18
27
  export declare class GenericHeartbeatAdapter implements AgentAdapter {
19
28
  providerType: "http" | "shell";
20
29
  constructor(providerType: "http" | "shell");
21
30
  execute(context: HeartbeatContext): Promise<AdapterExecutionResult>;
22
31
  }
32
+ type ProviderSessionUpdate = {
33
+ currentSessionId?: string | null;
34
+ resumedSessionId?: string | null;
35
+ resumeAttempted?: boolean;
36
+ resumeSkippedReason?: string | null;
37
+ clearedStaleSession?: boolean;
38
+ cwd?: string | null;
39
+ };
23
40
  export declare function listAdapterMetadata(): AdapterMetadata[];
41
+ export declare function getAdapterMetadataByProviderType(providerType: AgentProviderType): AdapterMetadata;
24
42
  export declare function listAdapterModels(providerType: AgentProviderType, runtime?: AgentRuntimeConfig): Promise<AdapterModelOption[]>;
25
43
  export declare function testAdapterEnvironment(providerType: AgentProviderType, runtime?: AgentRuntimeConfig): Promise<AdapterEnvironmentResult>;
44
+ export declare function createSkippedResult(providerLabel: string, providerKey: string, context: HeartbeatContext): AdapterExecutionResult;
45
+ export declare function runDirectApiWork(context: HeartbeatContext, provider: "openai_api" | "anthropic_api"): Promise<AdapterExecutionResult>;
46
+ export declare function testDirectApiEnvironment(providerType: DirectApiProvider, runtime?: AgentRuntimeConfig): Promise<AdapterEnvironmentResult>;
47
+ export declare function runProviderWork(context: HeartbeatContext, provider: "claude_code" | "codex", pricing: {
48
+ inputRate: number;
49
+ outputRate: number;
50
+ }): Promise<AdapterExecutionResult>;
51
+ export declare function runCursorWork(context: HeartbeatContext): Promise<AdapterExecutionResult>;
52
+ export declare function runOpenCodeWork(context: HeartbeatContext): Promise<AdapterExecutionResult>;
53
+ export declare function resolveFailedUsage(runtime: {
54
+ parsedUsage?: {
55
+ tokenInput?: number;
56
+ tokenOutput?: number;
57
+ usdCost?: number;
58
+ summary?: string;
59
+ };
60
+ failureType?: "timeout" | "spawn_error" | "nonzero_exit";
61
+ stdout: string;
62
+ stderr: string;
63
+ }, prompt: string, pricing: {
64
+ inputRate: number;
65
+ outputRate: number;
66
+ }): {
67
+ tokenInput: number;
68
+ tokenOutput: number;
69
+ usdCost: number;
70
+ source: "structured";
71
+ } | {
72
+ tokenInput: number;
73
+ tokenOutput: number;
74
+ usdCost: number;
75
+ source: "none";
76
+ } | {
77
+ tokenInput: number;
78
+ tokenOutput: number;
79
+ usdCost: number;
80
+ source: "estimated";
81
+ };
82
+ export declare function toProviderResult(context: HeartbeatContext, provider: AgentProviderType, prompt: string, runtime: {
83
+ ok: boolean;
84
+ code: number | null;
85
+ stdout: string;
86
+ stderr: string;
87
+ timedOut: boolean;
88
+ elapsedMs: number;
89
+ attemptCount: number;
90
+ failureType?: "timeout" | "spawn_error" | "nonzero_exit";
91
+ attempts: Array<{
92
+ attempt: number;
93
+ code: number | null;
94
+ timedOut: boolean;
95
+ elapsedMs: number;
96
+ signal: NodeJS.Signals | null;
97
+ spawnErrorCode?: string;
98
+ forcedKill: boolean;
99
+ }>;
100
+ parsedUsage?: {
101
+ tokenInput?: number;
102
+ tokenOutput?: number;
103
+ usdCost?: number;
104
+ summary?: string;
105
+ };
106
+ structuredOutputSource?: "stdout" | "stderr";
107
+ structuredOutputDiagnostics?: {
108
+ stdoutJsonObjectCount: number;
109
+ stderrJsonObjectCount: number;
110
+ stderrStructuredUsageDetected: boolean;
111
+ stdoutBytes: number;
112
+ stderrBytes: number;
113
+ hasAnyOutput: boolean;
114
+ lastStdoutLine?: string;
115
+ lastStderrLine?: string;
116
+ likelyCause: "no_output_from_runtime" | "json_missing" | "json_on_stderr_only" | "schema_or_shape_mismatch";
117
+ claudeStopReason?: string;
118
+ claudeResultSubtype?: string;
119
+ claudeSessionId?: string;
120
+ claudeContract?: {
121
+ commandOverride: boolean;
122
+ commandLooksClaude: boolean;
123
+ commandWasProviderAlias: boolean;
124
+ hasPromptFlag: boolean;
125
+ hasOutputFormatJson: boolean;
126
+ outputFormat: string | null;
127
+ hasMaxTurnsFlag: boolean;
128
+ hasVerboseFlag: boolean;
129
+ hasDangerouslySkipPermissions: boolean;
130
+ hasJsonSchema: boolean;
131
+ missingRequiredArgs: string[];
132
+ };
133
+ };
134
+ commandUsed?: string;
135
+ argsUsed?: string[];
136
+ transcript?: Array<{
137
+ kind: "system" | "assistant" | "thinking" | "tool_call" | "tool_result" | "result" | "stderr";
138
+ label?: string;
139
+ text?: string;
140
+ payload?: string;
141
+ }>;
142
+ }, pricing: {
143
+ inputRate: number;
144
+ outputRate: number;
145
+ }, sessionUpdate?: ProviderSessionUpdate): AdapterExecutionResult;
146
+ export declare function resolveRuntimeFailureDetail(runtime: {
147
+ stderr: string;
148
+ stdout: string;
149
+ code: number | null;
150
+ failureType?: "timeout" | "spawn_error" | "nonzero_exit";
151
+ attempts: Array<{
152
+ spawnErrorCode?: string;
153
+ }>;
154
+ }): string;
155
+ export declare function parseOpenCodeOutput(stdout: string): {
156
+ sessionId: string | null;
157
+ };
158
+ export declare function resolveCursorResumeState(state: HeartbeatContext["state"], cwd: string): {
159
+ resumeSessionId: null;
160
+ resumeAttempted: boolean;
161
+ resumeSkippedReason: null;
162
+ } | {
163
+ resumeSessionId: null;
164
+ resumeAttempted: boolean;
165
+ resumeSkippedReason: string;
166
+ } | {
167
+ resumeSessionId: string;
168
+ resumeAttempted: boolean;
169
+ resumeSkippedReason: null;
170
+ };
171
+ export declare function readRuntimeSessionId(runtime: {
172
+ structuredOutputDiagnostics?: {
173
+ claudeSessionId?: string;
174
+ cursorSessionId?: string;
175
+ };
176
+ }, fallback: string | null): string | null;
177
+ export declare function isUnknownSessionError(stderr: string, stdout: string): boolean;
178
+ export declare function hasTrustFlag(args: string[]): boolean;
179
+ export declare function resolveRuntimeCommand(providerType: AgentProviderType, runtime?: AgentRuntimeConfig): string;
180
+ export declare function runRuntimeProbe(providerType: AgentProviderType, runtime?: AgentRuntimeConfig): Promise<import("./runtime").RuntimeExecutionOutput>;
181
+ export declare function discoverCursorModels(runtime?: AgentRuntimeConfig): Promise<AdapterModelOption[]>;
182
+ export declare function discoverOpenCodeModels(runtime?: AgentRuntimeConfig): Promise<AdapterModelOption[]>;
183
+ export declare function discoverOpenCodeModelsCached(runtime?: AgentRuntimeConfig): Promise<AdapterModelOption[]>;
184
+ export declare function ensureOpenCodeModelConfiguredAndAvailable(input: {
185
+ model?: string;
186
+ command?: string;
187
+ cwd?: string;
188
+ env?: Record<string, string>;
189
+ }): Promise<void>;
190
+ export declare function parseModelLines(text: string): AdapterModelOption[];
191
+ export declare function dedupeModels(models: AdapterModelOption[]): AdapterModelOption[];
192
+ export declare function resolveCursorLaunchConfig(runtime?: AgentRuntimeConfig): Promise<{
193
+ command: string;
194
+ prefixArgs: string[];
195
+ }>;
196
+ export declare function toEnvironmentStatus(checks: AdapterEnvironmentCheck[]): "pass" | "warn" | "fail";
197
+ export declare function createPrompt(context: HeartbeatContext): string;
198
+ export declare function withProviderMetadata(context: HeartbeatContext, provider: string, lastRuntimeMs?: number, lastExitCode?: number | null): {
199
+ metadata: {
200
+ lastExitCode?: number | null | undefined;
201
+ lastRuntimeMs?: number | undefined;
202
+ lastProvider: string;
203
+ lastHeartbeatRunId: string;
204
+ };
205
+ sessionId?: string;
206
+ cwd?: string;
207
+ cursorSession?: {
208
+ sessionId: string;
209
+ cwd?: string;
210
+ };
211
+ };
212
+ export declare function applyProviderSessionState(context: HeartbeatContext, provider: AgentProviderType, sessionUpdate?: ProviderSessionUpdate, lastRuntimeMs?: number, lastExitCode?: number | null): import("./types").AgentState & Record<string, unknown>;
213
+ export declare function toPreview(value: string, max?: number): string;
214
+ export declare function buildMissingStructuredOutputDetail(provider: string, runtime: {
215
+ structuredOutputSource?: "stdout" | "stderr";
216
+ structuredOutputDiagnostics?: {
217
+ stdoutJsonObjectCount: number;
218
+ stderrJsonObjectCount: number;
219
+ stderrStructuredUsageDetected: boolean;
220
+ stdoutBytes: number;
221
+ stderrBytes: number;
222
+ hasAnyOutput: boolean;
223
+ lastStdoutLine?: string;
224
+ lastStderrLine?: string;
225
+ likelyCause: "no_output_from_runtime" | "json_missing" | "json_on_stderr_only" | "schema_or_shape_mismatch";
226
+ claudeStopReason?: string;
227
+ claudeResultSubtype?: string;
228
+ claudeSessionId?: string;
229
+ claudeContract?: {
230
+ commandOverride: boolean;
231
+ commandLooksClaude: boolean;
232
+ commandWasProviderAlias: boolean;
233
+ hasPromptFlag: boolean;
234
+ hasOutputFormatJson: boolean;
235
+ outputFormat: string | null;
236
+ hasMaxTurnsFlag: boolean;
237
+ hasVerboseFlag: boolean;
238
+ hasDangerouslySkipPermissions: boolean;
239
+ hasJsonSchema: boolean;
240
+ missingRequiredArgs: string[];
241
+ };
242
+ };
243
+ }): string;
244
+ export declare function isClaudeRunIncomplete(runtime: {
245
+ structuredOutputDiagnostics?: {
246
+ claudeStopReason?: string;
247
+ claudeResultSubtype?: string;
248
+ };
249
+ }): boolean;
250
+ export {};
@@ -1,4 +1,6 @@
1
1
  export * from "./adapters";
2
2
  export * from "./registry";
3
3
  export * from "./runtime";
4
+ export * from "./runtime-core";
5
+ export * from "./runtime-parsers";
4
6
  export * from "./types";
@@ -1,4 +1,5 @@
1
- import type { AdapterEnvironmentResult, AdapterMetadata, AdapterModelOption, AgentAdapter, AgentProviderType, AgentRuntimeConfig } from "./types";
1
+ import type { AdapterEnvironmentResult, AdapterMetadata, AdapterModule, AdapterModelOption, AgentAdapter, AgentProviderType, AgentRuntimeConfig } from "./types";
2
+ export declare function getRegisteredAdapterModules(): Record<AgentProviderType, AdapterModule>;
2
3
  export declare function resolveAdapter(providerType: AgentProviderType): AgentAdapter;
3
4
  export declare function getAdapterModels(providerType: AgentProviderType, runtime?: AgentRuntimeConfig): Promise<AdapterModelOption[]>;
4
5
  export declare function getAdapterMetadata(): AdapterMetadata[];
@@ -0,0 +1,2 @@
1
+ export type { RuntimeAttemptTrace, RuntimeCommandHealth, RuntimeExecutionOutput, RuntimeTranscriptEvent } from "./runtime";
2
+ export { checkRuntimeCommandHealth, executeAgentRuntime, executePromptRuntime } from "./runtime";
@@ -0,0 +1,38 @@
1
+ import type { AgentRuntimeConfig } from "./types";
2
+ export type DirectApiProvider = "openai_api" | "anthropic_api";
3
+ export type DirectApiExecutionOutput = {
4
+ ok: boolean;
5
+ provider: DirectApiProvider;
6
+ model: string;
7
+ endpoint: string;
8
+ elapsedMs: number;
9
+ statusCode: number;
10
+ summary?: string;
11
+ tokenInput?: number;
12
+ tokenOutput?: number;
13
+ usdCost?: number;
14
+ failureType?: "auth" | "rate_limit" | "timeout" | "network" | "bad_response" | "http_error";
15
+ error?: string;
16
+ responsePreview?: string;
17
+ attemptCount: number;
18
+ attempts: Array<{
19
+ attempt: number;
20
+ statusCode: number;
21
+ elapsedMs: number;
22
+ failureType?: "auth" | "rate_limit" | "timeout" | "network" | "bad_response" | "http_error";
23
+ error?: string;
24
+ }>;
25
+ };
26
+ type ProbeResult = {
27
+ ok: boolean;
28
+ statusCode: number;
29
+ elapsedMs: number;
30
+ message: string;
31
+ };
32
+ export declare function resolveDirectApiCredentials(provider: DirectApiProvider, runtime?: AgentRuntimeConfig): {
33
+ key: string;
34
+ baseUrl: string;
35
+ };
36
+ export declare function executeDirectApiRuntime(provider: DirectApiProvider, prompt: string, runtime?: AgentRuntimeConfig): Promise<DirectApiExecutionOutput>;
37
+ export declare function probeDirectApiEnvironment(provider: DirectApiProvider, runtime?: AgentRuntimeConfig): Promise<ProbeResult>;
38
+ export {};
@@ -0,0 +1 @@
1
+ export { parseClaudeStreamOutput, parseCursorStreamOutput, parseRuntimeTranscript, parseStructuredUsage } from "./runtime";
@@ -13,6 +13,20 @@ type ClaudeContractDiagnostics = {
13
13
  hasJsonSchema: boolean;
14
14
  missingRequiredArgs: string[];
15
15
  };
16
+ type ParsedUsageRecord = {
17
+ tokenInput?: number;
18
+ tokenOutput?: number;
19
+ usdCost?: number;
20
+ summary?: string;
21
+ };
22
+ type CursorParsedStream = {
23
+ usage: ParsedUsageRecord;
24
+ sessionId?: string;
25
+ errorMessage?: string;
26
+ resultSubtype?: string;
27
+ };
28
+ type TranscriptSignalLevel = "high" | "medium" | "low" | "noise";
29
+ type TranscriptSource = "stdout" | "stderr" | "trace_fallback";
16
30
  export interface RuntimeExecutionOutput {
17
31
  ok: boolean;
18
32
  code: number | null;
@@ -54,6 +68,9 @@ export interface RuntimeTranscriptEvent {
54
68
  label?: string;
55
69
  text?: string;
56
70
  payload?: string;
71
+ signalLevel?: TranscriptSignalLevel;
72
+ groupKey?: string;
73
+ source?: TranscriptSource;
57
74
  }
58
75
  export interface RuntimeAttemptTrace {
59
76
  attempt: number;
@@ -80,4 +97,23 @@ export declare function checkRuntimeCommandHealth(command: string, options?: {
80
97
  cwd?: string;
81
98
  timeoutMs?: number;
82
99
  }): Promise<RuntimeCommandHealth>;
100
+ export declare function parseStructuredUsage(stdout: string): {
101
+ tokenInput: number | undefined;
102
+ tokenOutput: number | undefined;
103
+ usdCost: number | undefined;
104
+ summary: string | undefined;
105
+ } | undefined;
106
+ export declare function parseClaudeStreamOutput(stdout: string): {
107
+ usage: {
108
+ summary: string | undefined;
109
+ tokenInput: number | undefined;
110
+ tokenOutput: number | undefined;
111
+ usdCost: number | undefined;
112
+ };
113
+ stopReason: string | undefined;
114
+ resultSubtype: string | undefined;
115
+ sessionId: string | undefined;
116
+ } | undefined;
117
+ export declare function parseCursorStreamOutput(stdout: string): CursorParsedStream | undefined;
118
+ export declare function parseRuntimeTranscript(provider: LocalProvider | undefined, stdout: string, stderr: string): RuntimeTranscriptEvent[] | undefined;
83
119
  export {};
@@ -10,6 +10,14 @@ export interface AgentWorkItem {
10
10
  priority?: string;
11
11
  labels?: string[];
12
12
  tags?: string[];
13
+ attachments?: Array<{
14
+ id: string;
15
+ fileName: string;
16
+ mimeType?: string | null;
17
+ fileSizeBytes: number;
18
+ relativePath: string;
19
+ absolutePath: string;
20
+ }>;
13
21
  }
14
22
  export interface AgentState {
15
23
  sessionId?: string;
@@ -20,6 +28,12 @@ export interface AgentState {
20
28
  };
21
29
  metadata?: Record<string, unknown>;
22
30
  }
31
+ export interface AgentMemoryContext {
32
+ memoryRoot: string;
33
+ tacitNotes?: string;
34
+ durableFacts: string[];
35
+ dailyNotes: string[];
36
+ }
23
37
  export interface HeartbeatContext {
24
38
  companyId: string;
25
39
  agentId: string;
@@ -41,6 +55,7 @@ export interface HeartbeatContext {
41
55
  agentGoals: string[];
42
56
  };
43
57
  state: AgentState;
58
+ memoryContext?: AgentMemoryContext;
44
59
  runtime?: AgentRuntimeConfig;
45
60
  }
46
61
  export interface AdapterExecutionResult {
@@ -57,6 +72,11 @@ export interface AgentAdapter {
57
72
  providerType: AgentProviderType;
58
73
  execute(context: HeartbeatContext): Promise<AdapterExecutionResult>;
59
74
  }
75
+ export interface AdapterSessionCodec {
76
+ deserialize(raw: unknown): Record<string, unknown> | null;
77
+ serialize(params: Record<string, unknown> | null): Record<string, unknown> | null;
78
+ getDisplayId?(params: Record<string, unknown> | null): string | null;
79
+ }
60
80
  export type AdapterEnvironmentCheckLevel = "info" | "warn" | "error";
61
81
  export type AdapterEnvironmentStatus = "pass" | "warn" | "fail";
62
82
  export interface AdapterEnvironmentCheck {
@@ -85,6 +105,32 @@ export interface AdapterMetadata {
85
105
  supportsThinkingEffort: boolean;
86
106
  requiresRuntimeCwd: boolean;
87
107
  }
108
+ export interface ServerAdapterModule {
109
+ type: AgentProviderType;
110
+ execute(context: HeartbeatContext): Promise<AdapterExecutionResult>;
111
+ listModels?(runtime?: AgentRuntimeConfig): Promise<AdapterModelOption[]>;
112
+ testEnvironment?(runtime?: AgentRuntimeConfig): Promise<AdapterEnvironmentResult>;
113
+ sessionCodec?: AdapterSessionCodec;
114
+ }
115
+ export interface UIAdapterModule {
116
+ type: AgentProviderType;
117
+ parseStdoutLine?: (line: string, timestampIso: string) => Array<Record<string, unknown>>;
118
+ buildAdapterConfig?: (values: Record<string, unknown>) => Record<string, unknown>;
119
+ }
120
+ export interface CLIAdapterModule {
121
+ type: AgentProviderType;
122
+ formatStdoutEvent?: (line: string, debug: boolean) => void;
123
+ }
124
+ export interface AdapterModule {
125
+ type: AgentProviderType;
126
+ label: string;
127
+ metadata: AdapterMetadata;
128
+ models?: AdapterModelOption[];
129
+ agentConfigurationDoc?: string;
130
+ server: ServerAdapterModule;
131
+ ui?: UIAdapterModule;
132
+ cli?: CLIAdapterModule;
133
+ }
88
134
  export interface AgentRuntimeConfig {
89
135
  command?: string;
90
136
  args?: string[];
@@ -102,6 +148,15 @@ export interface AgentRuntimeConfig {
102
148
  sandboxMode?: "workspace_write" | "full_access";
103
149
  allowWebSearch?: boolean;
104
150
  };
151
+ onTranscriptEvent?: (event: {
152
+ kind: "system" | "assistant" | "thinking" | "tool_call" | "tool_result" | "result" | "stderr";
153
+ label?: string;
154
+ text?: string;
155
+ payload?: string;
156
+ signalLevel?: "high" | "medium" | "low" | "noise";
157
+ groupKey?: string;
158
+ source?: "stdout" | "stderr" | "trace_fallback";
159
+ }) => void;
105
160
  }
106
161
  export interface AdapterTrace {
107
162
  command?: string;