bopodev-agent-sdk 0.1.14 → 0.1.16
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.
- package/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-lint.log +4 -0
- package/.turbo/turbo-typecheck.log +1 -1
- package/dist/adapters/claude-code/src/server/parse.d.ts +12 -1
- package/dist/adapters/codex/src/server/parse.d.ts +12 -1
- package/dist/adapters/cursor/src/server/parse.d.ts +12 -1
- package/dist/adapters/gemini-cli/src/server/parse.d.ts +12 -0
- package/dist/agent-sdk/src/adapters.d.ts +33 -15
- package/dist/agent-sdk/src/runtime-parsers.d.ts +1 -1
- package/dist/agent-sdk/src/runtime.d.ts +2 -6
- package/dist/agent-sdk/src/types.d.ts +17 -0
- package/dist/contracts/src/index.d.ts +1305 -3
- package/package.json +2 -2
- package/src/adapters.ts +350 -70
- package/src/registry.ts +7 -3
- package/src/runtime-http.ts +1 -1
- package/src/runtime-parsers.ts +1 -0
- package/src/runtime.ts +199 -27
- package/src/types.ts +18 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
-
> bopodev-agent-sdk@0.1.
|
|
3
|
+
> bopodev-agent-sdk@0.1.16 build /Users/danielkrusenstrahle/Documents/Projects/Monorepo/bopohq/packages/agent-sdk
|
|
4
4
|
> tsc -p tsconfig.json --emitDeclarationOnly
|
|
5
5
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
> bopodev-agent-sdk@0.1.
|
|
2
|
+
> bopodev-agent-sdk@0.1.15 typecheck /Users/danielkrusenstrahle/Documents/Projects/Monorepo/bopohq/packages/agent-sdk
|
|
3
3
|
> tsc -p tsconfig.json --noEmit
|
|
4
4
|
|
|
@@ -1,2 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
import type { AdapterRuntimeUsageResolution } from "../../../../agent-sdk/src/adapters";
|
|
2
2
|
export { isClaudeRunIncomplete, isUnknownSessionError as isClaudeUnknownSessionError } from "../../../../agent-sdk/src/adapters";
|
|
3
|
+
export declare function resolveClaudeRuntimeUsage(input: {
|
|
4
|
+
stdout: string;
|
|
5
|
+
stderr: string;
|
|
6
|
+
parsedUsage?: {
|
|
7
|
+
tokenInput?: number;
|
|
8
|
+
tokenOutput?: number;
|
|
9
|
+
usdCost?: number;
|
|
10
|
+
summary?: string;
|
|
11
|
+
};
|
|
12
|
+
structuredOutputSource?: "stdout" | "stderr";
|
|
13
|
+
}): AdapterRuntimeUsageResolution;
|
|
@@ -1,2 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
import type { AdapterRuntimeUsageResolution } from "../../../../agent-sdk/src/adapters";
|
|
2
2
|
export { isUnknownSessionError as isCodexUnknownSessionError } from "../../../../agent-sdk/src/adapters";
|
|
3
|
+
export declare function resolveCodexRuntimeUsage(input: {
|
|
4
|
+
stdout: string;
|
|
5
|
+
stderr: string;
|
|
6
|
+
parsedUsage?: {
|
|
7
|
+
tokenInput?: number;
|
|
8
|
+
tokenOutput?: number;
|
|
9
|
+
usdCost?: number;
|
|
10
|
+
summary?: string;
|
|
11
|
+
};
|
|
12
|
+
structuredOutputSource?: "stdout" | "stderr";
|
|
13
|
+
}): AdapterRuntimeUsageResolution;
|
|
@@ -1,2 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
import type { AdapterRuntimeUsageResolution } from "../../../../agent-sdk/src/adapters";
|
|
2
2
|
export { isUnknownSessionError as isCursorUnknownSessionError, readRuntimeSessionId } from "../../../../agent-sdk/src/adapters";
|
|
3
|
+
export declare function resolveCursorRuntimeUsage(input: {
|
|
4
|
+
stdout: string;
|
|
5
|
+
stderr: string;
|
|
6
|
+
parsedUsage?: {
|
|
7
|
+
tokenInput?: number;
|
|
8
|
+
tokenOutput?: number;
|
|
9
|
+
usdCost?: number;
|
|
10
|
+
summary?: string;
|
|
11
|
+
};
|
|
12
|
+
structuredOutputSource?: "stdout" | "stderr";
|
|
13
|
+
}): AdapterRuntimeUsageResolution;
|
|
@@ -1 +1,13 @@
|
|
|
1
|
+
import type { AdapterRuntimeUsageResolution } from "../../../../agent-sdk/src/adapters";
|
|
1
2
|
export { parseGeminiOutput, isGeminiUnknownSessionError } from "../../../../agent-sdk/src/adapters";
|
|
3
|
+
export declare function resolveGeminiRuntimeUsage(input: {
|
|
4
|
+
stdout: string;
|
|
5
|
+
stderr: string;
|
|
6
|
+
parsedUsage?: {
|
|
7
|
+
tokenInput?: number;
|
|
8
|
+
tokenOutput?: number;
|
|
9
|
+
usdCost?: number;
|
|
10
|
+
summary?: string;
|
|
11
|
+
};
|
|
12
|
+
structuredOutputSource?: "stdout" | "stderr";
|
|
13
|
+
}): AdapterRuntimeUsageResolution;
|
|
@@ -1,5 +1,25 @@
|
|
|
1
|
-
import type { AdapterEnvironmentCheck, AdapterEnvironmentResult, AdapterExecutionResult, AdapterMetadata, AdapterModelOption, AgentAdapter, AgentProviderType, AgentRuntimeConfig, HeartbeatContext } from "./types";
|
|
1
|
+
import type { AdapterEnvironmentCheck, AdapterEnvironmentResult, AdapterExecutionResult, AdapterMetadata, AdapterModelOption, AdapterNormalizedUsage, AgentAdapter, AgentProviderType, AgentRuntimeConfig, HeartbeatContext } from "./types";
|
|
2
2
|
import { type DirectApiProvider } from "./runtime-http";
|
|
3
|
+
type RuntimeParsedUsage = {
|
|
4
|
+
tokenInput?: number;
|
|
5
|
+
tokenOutput?: number;
|
|
6
|
+
usdCost?: number;
|
|
7
|
+
summary?: string;
|
|
8
|
+
inputTokens?: number;
|
|
9
|
+
cachedInputTokens?: number;
|
|
10
|
+
outputTokens?: number;
|
|
11
|
+
costUsd?: number;
|
|
12
|
+
};
|
|
13
|
+
export type AdapterRuntimeUsageResolution = {
|
|
14
|
+
parsedUsage?: RuntimeParsedUsage;
|
|
15
|
+
structuredOutputSource?: "stdout" | "stderr";
|
|
16
|
+
};
|
|
17
|
+
export type AdapterRuntimeUsageResolver = (runtime: {
|
|
18
|
+
stdout: string;
|
|
19
|
+
stderr: string;
|
|
20
|
+
parsedUsage?: RuntimeParsedUsage;
|
|
21
|
+
structuredOutputSource?: "stdout" | "stderr";
|
|
22
|
+
}) => AdapterRuntimeUsageResolution;
|
|
3
23
|
export declare class ClaudeCodeAdapter implements AgentAdapter {
|
|
4
24
|
providerType: "claude_code";
|
|
5
25
|
execute(context: HeartbeatContext): Promise<AdapterExecutionResult>;
|
|
@@ -47,17 +67,18 @@ export declare function testDirectApiEnvironment(providerType: DirectApiProvider
|
|
|
47
67
|
export declare function runProviderWork(context: HeartbeatContext, provider: "claude_code" | "codex", pricing: {
|
|
48
68
|
inputRate: number;
|
|
49
69
|
outputRate: number;
|
|
70
|
+
}, options?: {
|
|
71
|
+
usageResolver?: AdapterRuntimeUsageResolver;
|
|
72
|
+
}): Promise<AdapterExecutionResult>;
|
|
73
|
+
export declare function runCursorWork(context: HeartbeatContext, options?: {
|
|
74
|
+
usageResolver?: AdapterRuntimeUsageResolver;
|
|
50
75
|
}): Promise<AdapterExecutionResult>;
|
|
51
|
-
export declare function runCursorWork(context: HeartbeatContext): Promise<AdapterExecutionResult>;
|
|
52
76
|
export declare function runOpenCodeWork(context: HeartbeatContext): Promise<AdapterExecutionResult>;
|
|
53
|
-
export declare function runGeminiCliWork(context: HeartbeatContext
|
|
77
|
+
export declare function runGeminiCliWork(context: HeartbeatContext, options?: {
|
|
78
|
+
usageResolver?: AdapterRuntimeUsageResolver;
|
|
79
|
+
}): Promise<AdapterExecutionResult>;
|
|
54
80
|
export declare function resolveFailedUsage(runtime: {
|
|
55
|
-
parsedUsage?:
|
|
56
|
-
tokenInput?: number;
|
|
57
|
-
tokenOutput?: number;
|
|
58
|
-
usdCost?: number;
|
|
59
|
-
summary?: string;
|
|
60
|
-
};
|
|
81
|
+
parsedUsage?: RuntimeParsedUsage;
|
|
61
82
|
failureType?: "timeout" | "spawn_error" | "nonzero_exit";
|
|
62
83
|
stdout: string;
|
|
63
84
|
stderr: string;
|
|
@@ -65,11 +86,13 @@ export declare function resolveFailedUsage(runtime: {
|
|
|
65
86
|
tokenInput: number;
|
|
66
87
|
tokenOutput: number;
|
|
67
88
|
usdCost: number;
|
|
89
|
+
usage: AdapterNormalizedUsage | undefined;
|
|
68
90
|
source: "structured";
|
|
69
91
|
} | {
|
|
70
92
|
tokenInput: number;
|
|
71
93
|
tokenOutput: number;
|
|
72
94
|
usdCost: number;
|
|
95
|
+
usage: AdapterNormalizedUsage;
|
|
73
96
|
source: "none";
|
|
74
97
|
};
|
|
75
98
|
export declare function toProviderResult(context: HeartbeatContext, provider: AgentProviderType, prompt: string, runtime: {
|
|
@@ -90,12 +113,7 @@ export declare function toProviderResult(context: HeartbeatContext, provider: Ag
|
|
|
90
113
|
spawnErrorCode?: string;
|
|
91
114
|
forcedKill: boolean;
|
|
92
115
|
}>;
|
|
93
|
-
parsedUsage?:
|
|
94
|
-
tokenInput?: number;
|
|
95
|
-
tokenOutput?: number;
|
|
96
|
-
usdCost?: number;
|
|
97
|
-
summary?: string;
|
|
98
|
-
};
|
|
116
|
+
parsedUsage?: RuntimeParsedUsage;
|
|
99
117
|
structuredOutputSource?: "stdout" | "stderr";
|
|
100
118
|
structuredOutputDiagnostics?: {
|
|
101
119
|
stdoutJsonObjectCount: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { parseClaudeStreamOutput, parseCursorStreamOutput, parseRuntimeTranscript, parseStructuredUsage } from "./runtime";
|
|
1
|
+
export { parseClaudeStreamOutput, parseCursorStreamOutput, parseGeminiStreamOutput, parseRuntimeTranscript, parseStructuredUsage } from "./runtime";
|
|
@@ -97,13 +97,9 @@ export declare function containsRateLimitFailure(text: string): boolean;
|
|
|
97
97
|
export declare function checkRuntimeCommandHealth(command: string, options?: {
|
|
98
98
|
cwd?: string;
|
|
99
99
|
timeoutMs?: number;
|
|
100
|
+
env?: Record<string, string>;
|
|
100
101
|
}): Promise<RuntimeCommandHealth>;
|
|
101
|
-
export declare function parseStructuredUsage(stdout: string):
|
|
102
|
-
tokenInput: number | undefined;
|
|
103
|
-
tokenOutput: number | undefined;
|
|
104
|
-
usdCost: number | undefined;
|
|
105
|
-
summary: string | undefined;
|
|
106
|
-
} | undefined;
|
|
102
|
+
export declare function parseStructuredUsage(stdout: string): ParsedUsageRecord | undefined;
|
|
107
103
|
export declare function parseClaudeStreamOutput(stdout: string): {
|
|
108
104
|
usage: {
|
|
109
105
|
summary: string | undefined;
|
|
@@ -58,12 +58,29 @@ export interface HeartbeatContext {
|
|
|
58
58
|
memoryContext?: AgentMemoryContext;
|
|
59
59
|
runtime?: AgentRuntimeConfig;
|
|
60
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Normalized usage contract produced by adapter execution.
|
|
63
|
+
*
|
|
64
|
+
* Invariants:
|
|
65
|
+
* - `inputTokens` excludes cache reads.
|
|
66
|
+
* - `cachedInputTokens` tracks cache-hit prompt tokens only.
|
|
67
|
+
* - persisted `tokenInput` = `inputTokens + cachedInputTokens` for backwards compatibility.
|
|
68
|
+
* - `outputTokens` reflects generated/completion tokens.
|
|
69
|
+
*/
|
|
70
|
+
export interface AdapterNormalizedUsage {
|
|
71
|
+
inputTokens: number;
|
|
72
|
+
cachedInputTokens: number;
|
|
73
|
+
outputTokens: number;
|
|
74
|
+
costUsd?: number;
|
|
75
|
+
summary?: string;
|
|
76
|
+
}
|
|
61
77
|
export interface AdapterExecutionResult {
|
|
62
78
|
status: "ok" | "skipped" | "failed";
|
|
63
79
|
summary: string;
|
|
64
80
|
tokenInput: number;
|
|
65
81
|
tokenOutput: number;
|
|
66
82
|
usdCost: number;
|
|
83
|
+
usage?: AdapterNormalizedUsage;
|
|
67
84
|
pricingProviderType?: string | null;
|
|
68
85
|
pricingModelId?: string | null;
|
|
69
86
|
outcome?: ExecutionOutcome;
|