@primo-ai/sdk 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.
- package/README.md +93 -0
- package/dist/client.d.ts +44 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +120 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +624 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +65 -0
- package/dist/index.js.map +1 -0
- package/package.json +24 -0
package/README.md
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# @primo-ai/sdk
|
|
2
|
+
|
|
3
|
+
Pure type definitions for the AgentForge framework. Zero dependencies.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
This package contains all shared types used across the AgentForge monorepo. It has no runtime code and zero dependencies -- it exists solely to provide TypeScript interfaces and type aliases.
|
|
8
|
+
|
|
9
|
+
## Key Types
|
|
10
|
+
|
|
11
|
+
### Pipeline
|
|
12
|
+
|
|
13
|
+
| Type | Description |
|
|
14
|
+
|------|-------------|
|
|
15
|
+
| `PipelineStage` | Union of all 13 stage names |
|
|
16
|
+
| `StageName` | `PipelineStage` plus arbitrary plugin-defined strings |
|
|
17
|
+
| `Processor` | `{ stage, execute(context) => Promise<ProcessorResult> }` |
|
|
18
|
+
| `ProcessorResult` | `PipelineContext \| AbortSignal \| SuspensionSignal` |
|
|
19
|
+
| `PipelineContext` | Container with `request`, `agent`, `iteration`, `session` regions |
|
|
20
|
+
| `LoopDirective` | `{ action: 'continue' \| 'stop' \| 'retry' }` |
|
|
21
|
+
|
|
22
|
+
### Context Regions
|
|
23
|
+
|
|
24
|
+
| Type | Description |
|
|
25
|
+
|------|-------------|
|
|
26
|
+
| `RequestRegion` | Immutable input: `input`, `sessionId` |
|
|
27
|
+
| `AgentRegion` | Config: `config`, `systemPrompt`, `toolDeclarations`, `promptFragments` |
|
|
28
|
+
| `IterationRegion` | Per-step: `step`, `response`, `loopDirective`, `pendingToolCalls` |
|
|
29
|
+
| `SessionRegion` | Cross-iteration: `messageHistory`, `totalTokenUsage`, `custom` |
|
|
30
|
+
|
|
31
|
+
### Tools
|
|
32
|
+
|
|
33
|
+
| Type | Description |
|
|
34
|
+
|------|-------------|
|
|
35
|
+
| `Tool<TInput, TOutput>` | Tool definition with `name`, `description`, `inputSchema`, `execute()` |
|
|
36
|
+
| `ToolCall` | LLM-requested tool invocation: `id`, `name`, `args` |
|
|
37
|
+
| `ToolResult` | Tool execution result: `toolCallId`, `name`, `output` |
|
|
38
|
+
|
|
39
|
+
### Observability
|
|
40
|
+
|
|
41
|
+
| Type | Description |
|
|
42
|
+
|------|-------------|
|
|
43
|
+
| `Span` | Observability span with `startChild()`, `setAttribute()`, `end()` |
|
|
44
|
+
| `Tracer` | Span factory: `startSpan(name)` |
|
|
45
|
+
| `Metrics` | Counter/gauge/histogram interface |
|
|
46
|
+
| `TokenUsage` | `{ input: number; output: number }` |
|
|
47
|
+
|
|
48
|
+
### Plugin System
|
|
49
|
+
|
|
50
|
+
| Type | Description |
|
|
51
|
+
|------|-------------|
|
|
52
|
+
| `HarnessAPI` | Plugin harness: register processors, tools, hooks, resources |
|
|
53
|
+
| `PluginRegistration` | Plugin return type: processors, tools, commands |
|
|
54
|
+
| `Hook<TInput, TOutput>` | Before/after hook with point, handler, priority |
|
|
55
|
+
| `HookPoint` | `agent.start`, `llm.before`, `tool.after`, etc. |
|
|
56
|
+
| `ResourceDeclaration` | Lifecycle resource: `start()`, `stop()` |
|
|
57
|
+
|
|
58
|
+
### Configuration
|
|
59
|
+
|
|
60
|
+
| Type | Description |
|
|
61
|
+
|------|-------------|
|
|
62
|
+
| `AgentConfig` | Agent configuration: `model`, `systemPrompt`, `tools`, `maxIterations` |
|
|
63
|
+
| `Dynamic<T>` | `T \| ((ctx) => T)` -- static or per-request resolved value |
|
|
64
|
+
| `HarnessConfig` | Top-level config: agents, plugins, session, model profiles |
|
|
65
|
+
| `ModelProfile` | Per-model behavior customization |
|
|
66
|
+
| `ModelGateway` | Pluggable model resolver interface |
|
|
67
|
+
| `GatewayConfig` | Serializable gateway configuration |
|
|
68
|
+
|
|
69
|
+
### Session
|
|
70
|
+
|
|
71
|
+
| Type | Description |
|
|
72
|
+
|------|-------------|
|
|
73
|
+
| `SessionRecord` | Session metadata: `sessionId`, `status`, `tokenUsage` |
|
|
74
|
+
| `SessionEvent` | Sequential event: `seq`, `type`, `payload` |
|
|
75
|
+
| `SessionStorage` | Storage interface: `append()`, `read()`, `list()` |
|
|
76
|
+
| `SessionManager` | High-level session management: `start()`, `suspend()`, `resume()` |
|
|
77
|
+
|
|
78
|
+
### A2A Protocol
|
|
79
|
+
|
|
80
|
+
| Type | Description |
|
|
81
|
+
|------|-------------|
|
|
82
|
+
| `A2ATask` | Task with `id`, `contextId`, `status`, `history`, `artifacts` |
|
|
83
|
+
| `A2AMessage` | Message with `role`, `parts` (text/data/file) |
|
|
84
|
+
| `A2AAgentCard` | Agent metadata: `name`, `skills`, `capabilities` |
|
|
85
|
+
| `JsonRpcRequest` | JSON-RPC 2.0 request |
|
|
86
|
+
| `JsonRpcResponse` | JSON-RPC 2.0 response |
|
|
87
|
+
|
|
88
|
+
### Client SDK
|
|
89
|
+
|
|
90
|
+
| Export | Description |
|
|
91
|
+
|--------|-------------|
|
|
92
|
+
| `AgentForgeClient` | HTTP client for connecting to AgentForge servers |
|
|
93
|
+
| `parseSSE` | Parse server-sent events |
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { StreamEvent } from './index.js';
|
|
2
|
+
export declare class AgentForgeClientError extends Error {
|
|
3
|
+
readonly status: number;
|
|
4
|
+
readonly body: unknown;
|
|
5
|
+
constructor(message: string, status: number, body?: unknown);
|
|
6
|
+
}
|
|
7
|
+
export declare function isRetryableError(status: number): boolean;
|
|
8
|
+
export interface ClientOptions {
|
|
9
|
+
url: string;
|
|
10
|
+
apiKey?: string;
|
|
11
|
+
retries?: number;
|
|
12
|
+
retryDelay?: number;
|
|
13
|
+
}
|
|
14
|
+
export interface AgentRunResult {
|
|
15
|
+
response: string;
|
|
16
|
+
tokenUsage: {
|
|
17
|
+
input: number;
|
|
18
|
+
output: number;
|
|
19
|
+
};
|
|
20
|
+
sessionId: string;
|
|
21
|
+
}
|
|
22
|
+
export interface SSEMessage {
|
|
23
|
+
type: string;
|
|
24
|
+
[key: string]: unknown;
|
|
25
|
+
}
|
|
26
|
+
export declare function parseSSE(raw: string): Generator<SSEMessage>;
|
|
27
|
+
export declare class AgentForgeClient {
|
|
28
|
+
private baseUrl;
|
|
29
|
+
private headers;
|
|
30
|
+
private retries;
|
|
31
|
+
private retryDelay;
|
|
32
|
+
constructor(options: ClientOptions);
|
|
33
|
+
private request;
|
|
34
|
+
run(agentId: string, input: string): Promise<AgentRunResult>;
|
|
35
|
+
stream(agentId: string, input: string, opts?: {
|
|
36
|
+
mode?: 'text' | 'events';
|
|
37
|
+
}): AsyncGenerator<string | StreamEvent>;
|
|
38
|
+
resume(agentId: string, sessionId: string): Promise<AgentRunResult>;
|
|
39
|
+
getSession(sessionId: string): Promise<{
|
|
40
|
+
sessionId: string;
|
|
41
|
+
status: string;
|
|
42
|
+
}>;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAM9C,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;gBAEX,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO;CAM5D;AAQD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAExD;AAUD,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,wBAAiB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,CAQ5D;AAMD,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAS;gBAEf,OAAO,EAAE,aAAa;YAUpB,OAAO;IA2Cf,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAO3D,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;KAAE,GAAG,cAAc,CAAC,MAAM,GAAG,WAAW,CAAC;IAuBlH,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAOnE,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAMpF"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Error types
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
export class AgentForgeClientError extends Error {
|
|
5
|
+
status;
|
|
6
|
+
body;
|
|
7
|
+
constructor(message, status, body) {
|
|
8
|
+
super(message);
|
|
9
|
+
this.name = 'AgentForgeClientError';
|
|
10
|
+
this.status = status;
|
|
11
|
+
this.body = body;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
// Helpers
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
const RETRYABLE_STATUS_CODES = new Set([429, 502, 503, 504]);
|
|
18
|
+
export function isRetryableError(status) {
|
|
19
|
+
return RETRYABLE_STATUS_CODES.has(status);
|
|
20
|
+
}
|
|
21
|
+
function delay(ms) {
|
|
22
|
+
return new Promise(r => setTimeout(r, ms));
|
|
23
|
+
}
|
|
24
|
+
export function* parseSSE(raw) {
|
|
25
|
+
for (const line of raw.split('\n')) {
|
|
26
|
+
const trimmed = line.trim();
|
|
27
|
+
if (!trimmed.startsWith('data: '))
|
|
28
|
+
continue;
|
|
29
|
+
try {
|
|
30
|
+
yield JSON.parse(trimmed.slice(6));
|
|
31
|
+
}
|
|
32
|
+
catch { /* skip malformed lines */ }
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// ---------------------------------------------------------------------------
|
|
36
|
+
// Client
|
|
37
|
+
// ---------------------------------------------------------------------------
|
|
38
|
+
export class AgentForgeClient {
|
|
39
|
+
baseUrl;
|
|
40
|
+
headers;
|
|
41
|
+
retries;
|
|
42
|
+
retryDelay;
|
|
43
|
+
constructor(options) {
|
|
44
|
+
this.baseUrl = options.url.replace(/\/$/, '');
|
|
45
|
+
this.headers = { 'Content-Type': 'application/json' };
|
|
46
|
+
this.retries = options.retries ?? 0;
|
|
47
|
+
this.retryDelay = options.retryDelay ?? 100;
|
|
48
|
+
if (options.apiKey) {
|
|
49
|
+
this.headers['Authorization'] = `Bearer ${options.apiKey}`;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
async request(url, init) {
|
|
53
|
+
let lastError;
|
|
54
|
+
const maxAttempts = 1 + this.retries;
|
|
55
|
+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
56
|
+
if (attempt > 0) {
|
|
57
|
+
await delay(this.retryDelay * attempt); // linear backoff
|
|
58
|
+
}
|
|
59
|
+
let res;
|
|
60
|
+
try {
|
|
61
|
+
res = await fetch(url, { ...init, headers: { ...this.headers, ...init.headers } });
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
throw new AgentForgeClientError(err instanceof Error ? err.message : 'Network request failed', 0);
|
|
65
|
+
}
|
|
66
|
+
if (!res.ok) {
|
|
67
|
+
let body;
|
|
68
|
+
try {
|
|
69
|
+
body = await res.json();
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
body = undefined;
|
|
73
|
+
}
|
|
74
|
+
const message = body?.error ?? res.statusText;
|
|
75
|
+
lastError = new AgentForgeClientError(message, res.status, body);
|
|
76
|
+
if (isRetryableError(res.status) && attempt < this.retries) {
|
|
77
|
+
continue; // retry
|
|
78
|
+
}
|
|
79
|
+
throw lastError;
|
|
80
|
+
}
|
|
81
|
+
return res.json();
|
|
82
|
+
}
|
|
83
|
+
throw lastError;
|
|
84
|
+
}
|
|
85
|
+
async run(agentId, input) {
|
|
86
|
+
return this.request(`${this.baseUrl}/agents/${agentId}/run`, { method: 'POST', body: JSON.stringify({ input }) });
|
|
87
|
+
}
|
|
88
|
+
async *stream(agentId, input, opts) {
|
|
89
|
+
const mode = opts?.mode ?? 'text';
|
|
90
|
+
const res = await fetch(`${this.baseUrl}/agents/${agentId}/stream?mode=${mode}`, {
|
|
91
|
+
method: 'POST',
|
|
92
|
+
headers: this.headers,
|
|
93
|
+
body: JSON.stringify({ input }),
|
|
94
|
+
});
|
|
95
|
+
const reader = res.body?.getReader();
|
|
96
|
+
if (!reader)
|
|
97
|
+
return;
|
|
98
|
+
const decoder = new TextDecoder();
|
|
99
|
+
let buffer = '';
|
|
100
|
+
while (true) {
|
|
101
|
+
const { done, value } = await reader.read();
|
|
102
|
+
if (done)
|
|
103
|
+
break;
|
|
104
|
+
buffer += decoder.decode(value, { stream: true });
|
|
105
|
+
for (const msg of parseSSE(buffer)) {
|
|
106
|
+
yield msg;
|
|
107
|
+
}
|
|
108
|
+
const lastNewline = buffer.lastIndexOf('\n\n');
|
|
109
|
+
if (lastNewline >= 0)
|
|
110
|
+
buffer = buffer.slice(lastNewline + 2);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
async resume(agentId, sessionId) {
|
|
114
|
+
return this.request(`${this.baseUrl}/agents/${agentId}/resume`, { method: 'POST', body: JSON.stringify({ sessionId }) });
|
|
115
|
+
}
|
|
116
|
+
async getSession(sessionId) {
|
|
117
|
+
return this.request(`${this.baseUrl}/sessions/${sessionId}`, { method: 'GET' });
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,624 @@
|
|
|
1
|
+
/** The agent lifecycle stages + gate stages + tool sub-pipeline stages. */
|
|
2
|
+
export type PipelineStage = 'processInput' | 'buildContext' | 'prepareStep' | 'gateLLM' | 'invokeLLM' | 'processStepOutput' | 'gateTool' | 'executeTools' | 'evaluateIteration' | 'processOutput' | 'beforeTool' | 'execute' | 'afterTool';
|
|
3
|
+
/** Stage name that accepts built-in stages AND arbitrary plugin-defined strings. */
|
|
4
|
+
export type StageName = PipelineStage | (string & {});
|
|
5
|
+
/** A mutation operation applied to a pipeline phase's stage list. */
|
|
6
|
+
export type StageMutation = {
|
|
7
|
+
type: 'insert';
|
|
8
|
+
phase: 'preLoop' | 'loop' | 'postLoop';
|
|
9
|
+
after: StageName;
|
|
10
|
+
stage: StageName;
|
|
11
|
+
} | {
|
|
12
|
+
type: 'remove';
|
|
13
|
+
phase: 'preLoop' | 'loop' | 'postLoop';
|
|
14
|
+
stage: StageName;
|
|
15
|
+
} | {
|
|
16
|
+
type: 'replace';
|
|
17
|
+
phase: 'preLoop' | 'loop' | 'postLoop';
|
|
18
|
+
stages: StageName[];
|
|
19
|
+
};
|
|
20
|
+
/** Configurable pipeline stage sequence. Overrides default stage order when provided. */
|
|
21
|
+
export interface PipelineStageConfig {
|
|
22
|
+
preLoop?: StageName[];
|
|
23
|
+
loop?: StageName[];
|
|
24
|
+
postLoop?: StageName[];
|
|
25
|
+
}
|
|
26
|
+
/** A tool call requested by the LLM. */
|
|
27
|
+
export interface ToolCall {
|
|
28
|
+
id: string;
|
|
29
|
+
name: string;
|
|
30
|
+
args: Record<string, unknown>;
|
|
31
|
+
}
|
|
32
|
+
/** The result of executing a tool call. */
|
|
33
|
+
export interface ToolResult {
|
|
34
|
+
toolCallId: string;
|
|
35
|
+
name: string;
|
|
36
|
+
output: unknown;
|
|
37
|
+
error?: string;
|
|
38
|
+
mutated?: boolean;
|
|
39
|
+
truncated?: boolean;
|
|
40
|
+
validationError?: string;
|
|
41
|
+
}
|
|
42
|
+
/** Structured conversation message supporting tool-call round-trips. */
|
|
43
|
+
export type Message = {
|
|
44
|
+
role: 'user';
|
|
45
|
+
content: string;
|
|
46
|
+
} | {
|
|
47
|
+
role: 'assistant';
|
|
48
|
+
content: string;
|
|
49
|
+
toolCalls?: ToolCall[];
|
|
50
|
+
reasoningContent?: string;
|
|
51
|
+
} | {
|
|
52
|
+
role: 'tool';
|
|
53
|
+
content: string;
|
|
54
|
+
toolCallId: string;
|
|
55
|
+
toolName: string;
|
|
56
|
+
result?: unknown;
|
|
57
|
+
error?: string;
|
|
58
|
+
mutated?: boolean;
|
|
59
|
+
truncated?: boolean;
|
|
60
|
+
validationError?: string;
|
|
61
|
+
};
|
|
62
|
+
/** Abstract token counter — implementations choose encoding strategy. */
|
|
63
|
+
export interface TokenCounter {
|
|
64
|
+
count(text: string, model?: string): number;
|
|
65
|
+
countMessages(messages: Message[], model?: string): number;
|
|
66
|
+
}
|
|
67
|
+
export interface ContextBudget {
|
|
68
|
+
maxTokens: number;
|
|
69
|
+
reservedForSystem?: number;
|
|
70
|
+
reservedForTools?: number;
|
|
71
|
+
}
|
|
72
|
+
/** Function that compresses/trim message history before sending to LLM. */
|
|
73
|
+
export type CompressionStrategy = (messages: Message[], tokenCounter: TokenCounter, budget: number) => Message[] | Promise<Message[]>;
|
|
74
|
+
/** Options for the built-in sliding-window strategy. */
|
|
75
|
+
export interface SlidingWindowOptions {
|
|
76
|
+
/** Maximum number of most-recent messages to keep. Default: 50. */
|
|
77
|
+
keepRecent?: number;
|
|
78
|
+
}
|
|
79
|
+
export type LoopDirective = {
|
|
80
|
+
action: 'continue';
|
|
81
|
+
} | {
|
|
82
|
+
action: 'stop';
|
|
83
|
+
} | {
|
|
84
|
+
action: 'retry';
|
|
85
|
+
retryFrom: StageName;
|
|
86
|
+
};
|
|
87
|
+
export interface RequestRegion {
|
|
88
|
+
input: string;
|
|
89
|
+
sessionId: string;
|
|
90
|
+
}
|
|
91
|
+
export interface AgentRegion {
|
|
92
|
+
config: AgentConfig;
|
|
93
|
+
systemPrompt?: string;
|
|
94
|
+
toolDeclarations: Array<{
|
|
95
|
+
name: string;
|
|
96
|
+
description: string;
|
|
97
|
+
}>;
|
|
98
|
+
/** Append-only. Always spread existing: `[...ctx.agent.promptFragments, newFragment]` */
|
|
99
|
+
promptFragments: string[];
|
|
100
|
+
/** Per-provider options passed through to streamText(). Keyed by provider name. */
|
|
101
|
+
providerOptions?: Record<string, Record<string, unknown>>;
|
|
102
|
+
}
|
|
103
|
+
export interface IterationRegion {
|
|
104
|
+
step: number;
|
|
105
|
+
/** undefined defaults to 'continue'. Default evaluateIteration sets 'stop'. */
|
|
106
|
+
loopDirective?: LoopDirective;
|
|
107
|
+
/** AI SDK fullStream yielding text-delta, tool-call, finish-step, error events. */
|
|
108
|
+
fullStream?: AsyncIterable<unknown>;
|
|
109
|
+
usagePromise?: Promise<TokenUsage>;
|
|
110
|
+
/** Promise resolving to reasoning text from the model (e.g. DeepSeek reasoning_content). */
|
|
111
|
+
reasoningPromise?: Promise<string | undefined>;
|
|
112
|
+
response?: string;
|
|
113
|
+
tokenUsage?: TokenUsage;
|
|
114
|
+
/** Tool calls extracted from the LLM response by PipelineRunner stream consumption. */
|
|
115
|
+
pendingToolCalls?: ToolCall[];
|
|
116
|
+
/** Reasoning content from thinking-mode models (e.g. DeepSeek). Must be passed back on subsequent turns. */
|
|
117
|
+
reasoningContent?: string;
|
|
118
|
+
/** Results from executing pending tool calls (set by executeTools processor). */
|
|
119
|
+
toolResults?: ToolResult[];
|
|
120
|
+
/** Per-stage observability span. Created by PipelineRunner.executeStage(),
|
|
121
|
+
* lives for one stage invocation (not one full iteration). */
|
|
122
|
+
span?: Span;
|
|
123
|
+
}
|
|
124
|
+
export interface SessionRegion {
|
|
125
|
+
messageHistory?: Message[];
|
|
126
|
+
totalTokenUsage?: TokenUsage;
|
|
127
|
+
/** Plugin extension point. Namespaced by plugin ID. */
|
|
128
|
+
custom: Record<string, unknown>;
|
|
129
|
+
}
|
|
130
|
+
export interface PipelineContext {
|
|
131
|
+
request: RequestRegion;
|
|
132
|
+
agent: AgentRegion;
|
|
133
|
+
iteration: IterationRegion;
|
|
134
|
+
session: SessionRegion;
|
|
135
|
+
}
|
|
136
|
+
export interface PromptFragment {
|
|
137
|
+
role: 'system' | 'context' | 'instruction';
|
|
138
|
+
content: string;
|
|
139
|
+
priority: number;
|
|
140
|
+
source: string;
|
|
141
|
+
}
|
|
142
|
+
export interface AbortSignal {
|
|
143
|
+
type: 'abort';
|
|
144
|
+
reason: string;
|
|
145
|
+
retryFrom?: StageName;
|
|
146
|
+
}
|
|
147
|
+
export interface PipelineCheckpoint {
|
|
148
|
+
context: PipelineContext;
|
|
149
|
+
nextStages: StageName[];
|
|
150
|
+
iteration: number;
|
|
151
|
+
}
|
|
152
|
+
export interface SuspensionSignal {
|
|
153
|
+
type: 'suspend';
|
|
154
|
+
suspensionId: string;
|
|
155
|
+
reason: string;
|
|
156
|
+
checkpoint: PipelineCheckpoint;
|
|
157
|
+
expiresAt?: string;
|
|
158
|
+
}
|
|
159
|
+
export type ProcessorResult = PipelineContext | AbortSignal | SuspensionSignal;
|
|
160
|
+
export interface Processor {
|
|
161
|
+
stage: StageName;
|
|
162
|
+
execute(context: PipelineContext): Promise<ProcessorResult>;
|
|
163
|
+
/** When true, this processor is an extension point placeholder that just returns ctx unchanged.
|
|
164
|
+
* PipelineRunner skips hooks for stages where all processors are no-ops. */
|
|
165
|
+
isNoOp?: boolean;
|
|
166
|
+
}
|
|
167
|
+
export interface ToolExecutionContext {
|
|
168
|
+
harness?: unknown;
|
|
169
|
+
span?: unknown;
|
|
170
|
+
sessionId?: string;
|
|
171
|
+
}
|
|
172
|
+
export interface Tool<TInput = unknown, TOutput = unknown> {
|
|
173
|
+
name: string;
|
|
174
|
+
description: string;
|
|
175
|
+
inputSchema: unknown;
|
|
176
|
+
outputSchema?: unknown;
|
|
177
|
+
execute(input: TInput, context: ToolExecutionContext): Promise<TOutput>;
|
|
178
|
+
requireApproval?: boolean;
|
|
179
|
+
allowOutputMutation?: boolean;
|
|
180
|
+
renderCall?(input: TInput): string;
|
|
181
|
+
renderResult?(output: TOutput): string;
|
|
182
|
+
}
|
|
183
|
+
export type ToolDefinition = Tool;
|
|
184
|
+
export interface SpanContext {
|
|
185
|
+
spanId: string;
|
|
186
|
+
traceId: string;
|
|
187
|
+
}
|
|
188
|
+
export interface Span {
|
|
189
|
+
readonly name: string;
|
|
190
|
+
startChild(name: string): Span;
|
|
191
|
+
end(): void;
|
|
192
|
+
setAttribute(key: string, value: unknown): Span;
|
|
193
|
+
addEvent(name: string, attributes?: Record<string, unknown>): Span;
|
|
194
|
+
spanContext(): SpanContext;
|
|
195
|
+
}
|
|
196
|
+
export interface Tracer {
|
|
197
|
+
startSpan(name: string): Span;
|
|
198
|
+
getCurrentSpan(): Span | undefined;
|
|
199
|
+
}
|
|
200
|
+
export interface Metrics {
|
|
201
|
+
increment(name: string, delta?: number, labels?: Record<string, string>): void;
|
|
202
|
+
gauge(name: string, value: number, labels?: Record<string, string>): void;
|
|
203
|
+
histogram(name: string, value: number, labels?: Record<string, string>): void;
|
|
204
|
+
}
|
|
205
|
+
export interface TokenUsage {
|
|
206
|
+
input: number;
|
|
207
|
+
output: number;
|
|
208
|
+
}
|
|
209
|
+
export declare const SpanType: {
|
|
210
|
+
readonly AGENT_RUN: "agent_run";
|
|
211
|
+
readonly MODEL_STEP: "model_step";
|
|
212
|
+
readonly TOOL_CALL: "tool_call";
|
|
213
|
+
readonly PROCESSOR_RUN: "processor_run";
|
|
214
|
+
readonly LLM_STREAM: "llm.stream";
|
|
215
|
+
readonly TOOL_EXECUTE: "tool.execute";
|
|
216
|
+
readonly GATE_DECISION: "harness.gate";
|
|
217
|
+
readonly COST_CAP_CHECK: "harness.cost-cap";
|
|
218
|
+
readonly TOKEN_BUDGET_CHECK: "harness.token-budget";
|
|
219
|
+
readonly GOAL_ECHO: "harness.goal-echo";
|
|
220
|
+
readonly FACT_INJECTION: "harness.fact-injection";
|
|
221
|
+
readonly COMPRESSION: "harness.compression";
|
|
222
|
+
readonly SESSION_LIFECYCLE: "session.lifecycle";
|
|
223
|
+
readonly TOOL_REGISTER: "tool.register";
|
|
224
|
+
readonly TOOL_LOOKUP: "tool.lookup";
|
|
225
|
+
readonly EVENT_DISPATCH: "event.dispatch";
|
|
226
|
+
readonly GATEWAY_RESOLVE: "gateway.resolve";
|
|
227
|
+
readonly CONTEXT_BUILD: "context.build";
|
|
228
|
+
readonly LOOP_ITERATION: "loop.iteration";
|
|
229
|
+
readonly SUB_AGENT_RUN: "subagent.run";
|
|
230
|
+
readonly CHECKPOINT: "checkpoint";
|
|
231
|
+
readonly MCP_CONNECT: "mcp.connect";
|
|
232
|
+
readonly MCP_TOOL_CALL: "mcp.tool_call";
|
|
233
|
+
};
|
|
234
|
+
/** Standard span attribute keys for consistent observability across the framework. */
|
|
235
|
+
export declare const SpanAttributeKeys: {
|
|
236
|
+
readonly TOKENS_INPUT: "tokens.input";
|
|
237
|
+
readonly TOKENS_OUTPUT: "tokens.output";
|
|
238
|
+
readonly TOKENS_TOTAL: "tokens.total";
|
|
239
|
+
readonly COST_ESTIMATED: "cost.estimated";
|
|
240
|
+
readonly COST_CUMULATIVE: "cost.cumulative";
|
|
241
|
+
readonly COST_BUDGET: "cost.budget";
|
|
242
|
+
readonly MODEL_NAME: "model.name";
|
|
243
|
+
readonly TOOL_NAME: "tool.name";
|
|
244
|
+
readonly TOOL_RESULT_SIZE: "tool.result_size";
|
|
245
|
+
readonly HARNESS_DECISION: "harness.decision";
|
|
246
|
+
readonly HARNESS_REASON: "harness.reason";
|
|
247
|
+
readonly BUDGET_CONTEXT_MAX: "budget.context_max";
|
|
248
|
+
readonly BUDGET_CONTEXT_USED: "budget.context_used";
|
|
249
|
+
readonly BUDGET_RESERVED_OUTPUT: "budget.reserved_output";
|
|
250
|
+
readonly GOAL_TEXT: "goal.text";
|
|
251
|
+
readonly GOAL_PROGRESS: "goal.progress";
|
|
252
|
+
readonly GOAL_ITERATION: "goal.iteration";
|
|
253
|
+
readonly FACT_COUNT: "fact.count";
|
|
254
|
+
};
|
|
255
|
+
export type SpanType = (typeof SpanType)[keyof typeof SpanType];
|
|
256
|
+
export type StreamEvent = {
|
|
257
|
+
type: 'text_delta';
|
|
258
|
+
text: string;
|
|
259
|
+
} | {
|
|
260
|
+
type: 'stage_start';
|
|
261
|
+
stage: StageName;
|
|
262
|
+
} | {
|
|
263
|
+
type: 'stage_complete';
|
|
264
|
+
stage: StageName;
|
|
265
|
+
} | {
|
|
266
|
+
type: 'tool_call';
|
|
267
|
+
name: string;
|
|
268
|
+
args: unknown;
|
|
269
|
+
} | {
|
|
270
|
+
type: 'tool_result';
|
|
271
|
+
name: string;
|
|
272
|
+
result: unknown;
|
|
273
|
+
} | {
|
|
274
|
+
type: 'complete';
|
|
275
|
+
context: PipelineContext;
|
|
276
|
+
} | {
|
|
277
|
+
type: 'abort';
|
|
278
|
+
reason: string;
|
|
279
|
+
retryFrom?: StageName;
|
|
280
|
+
} | {
|
|
281
|
+
type: 'suspended';
|
|
282
|
+
suspensionId: string;
|
|
283
|
+
reason: string;
|
|
284
|
+
checkpoint: PipelineCheckpoint;
|
|
285
|
+
};
|
|
286
|
+
export type EventType = 'agent:start' | 'agent:end' | 'tool:before' | 'tool:after' | string;
|
|
287
|
+
export type HookPoint = 'agent.start' | 'agent.end' | 'stage.before' | 'stage.after' | 'llm.before' | 'llm.after' | 'tool.before' | 'tool.after' | 'iteration.end' | 'error';
|
|
288
|
+
export type HookProfile = 'minimal' | 'standard' | 'strict';
|
|
289
|
+
export interface Hook<TInput = unknown, TOutput = unknown> {
|
|
290
|
+
point: HookPoint;
|
|
291
|
+
name?: string;
|
|
292
|
+
handler: (input: TInput, output: TOutput) => void | Promise<void>;
|
|
293
|
+
priority?: number;
|
|
294
|
+
}
|
|
295
|
+
export interface AgentHookInput {
|
|
296
|
+
sessionId: string;
|
|
297
|
+
request: RequestRegion;
|
|
298
|
+
agentConfig: AgentConfig;
|
|
299
|
+
}
|
|
300
|
+
export interface StageHookInput {
|
|
301
|
+
stage: StageName;
|
|
302
|
+
context: PipelineContext;
|
|
303
|
+
}
|
|
304
|
+
export interface LLMHookInput {
|
|
305
|
+
model: string;
|
|
306
|
+
messages: Message[];
|
|
307
|
+
tools?: unknown[];
|
|
308
|
+
options?: Record<string, unknown>;
|
|
309
|
+
}
|
|
310
|
+
export interface ToolHookInput {
|
|
311
|
+
toolName: string;
|
|
312
|
+
args: unknown;
|
|
313
|
+
sessionId: string;
|
|
314
|
+
}
|
|
315
|
+
export interface ErrorHookInput {
|
|
316
|
+
error: unknown;
|
|
317
|
+
stage: StageName;
|
|
318
|
+
sessionId: string;
|
|
319
|
+
}
|
|
320
|
+
export interface ResourceDeclaration {
|
|
321
|
+
id: string;
|
|
322
|
+
type: string;
|
|
323
|
+
config: Record<string, unknown>;
|
|
324
|
+
start: () => Promise<unknown>;
|
|
325
|
+
stop: (instance: unknown) => Promise<void>;
|
|
326
|
+
}
|
|
327
|
+
export interface HarnessAPI {
|
|
328
|
+
registerProcessor(stage: StageName, processor: Processor): void;
|
|
329
|
+
registerTool(tool: ToolDefinition): void;
|
|
330
|
+
unregisterTool(name: string): boolean;
|
|
331
|
+
registerCommand(name: string, handler: (args: string) => Promise<void>): void;
|
|
332
|
+
registerHook(hook: Hook): void;
|
|
333
|
+
subscribe(eventType: string, handler: (data?: unknown) => void): () => void;
|
|
334
|
+
registerResource(declaration: ResourceDeclaration): void;
|
|
335
|
+
registerProvider(name: string, factory: unknown): void;
|
|
336
|
+
registerCompressionStrategy(strategy: CompressionStrategy): void;
|
|
337
|
+
emit(eventType: string, data?: unknown): void;
|
|
338
|
+
insertStage(phase: 'preLoop' | 'loop' | 'postLoop', after: StageName, newStage: StageName): void;
|
|
339
|
+
removeStage(phase: 'preLoop' | 'loop' | 'postLoop', stage: StageName): void;
|
|
340
|
+
replaceStages(phase: 'preLoop' | 'loop' | 'postLoop', stages: StageName[]): void;
|
|
341
|
+
}
|
|
342
|
+
export interface PluginRegistration {
|
|
343
|
+
processors?: Processor[];
|
|
344
|
+
tools?: ToolDefinition[];
|
|
345
|
+
commands?: Record<string, (args: string) => Promise<void>>;
|
|
346
|
+
compressionStrategy?: CompressionStrategy;
|
|
347
|
+
}
|
|
348
|
+
/** Transport protocol for MCP server connections. */
|
|
349
|
+
export type McpTransport = 'stdio' | 'sse' | 'http';
|
|
350
|
+
/**
|
|
351
|
+
* Configuration for an MCP (Model Context Protocol) server connection.
|
|
352
|
+
* For stdio transport, provide `command`. For sse/http transport, provide `url`.
|
|
353
|
+
*/
|
|
354
|
+
export interface McpServerConfig {
|
|
355
|
+
name: string;
|
|
356
|
+
transport?: McpTransport;
|
|
357
|
+
command?: string;
|
|
358
|
+
args?: string[];
|
|
359
|
+
env?: Record<string, string>;
|
|
360
|
+
url?: string;
|
|
361
|
+
}
|
|
362
|
+
export interface AgentConfig {
|
|
363
|
+
model: string;
|
|
364
|
+
systemPrompt?: Dynamic<string>;
|
|
365
|
+
maxIterations?: Dynamic<number>;
|
|
366
|
+
tools?: Tool[];
|
|
367
|
+
providerOptions?: Record<string, Record<string, unknown>>;
|
|
368
|
+
/** Tool names that must be called at least once before the loop can stop. */
|
|
369
|
+
requiredTools?: string[];
|
|
370
|
+
/** Policy for handling required tools that the LLM fails to call after retries.
|
|
371
|
+
* - 'advise' (default): adds prompt fragments asking the LLM to call them; stops loop when exhausted.
|
|
372
|
+
* - 'enforce': when exhausted, injects synthetic tool calls and continues the loop.
|
|
373
|
+
*/
|
|
374
|
+
requiredToolPolicy?: 'advise' | 'enforce';
|
|
375
|
+
}
|
|
376
|
+
/** Context passed to Dynamic<T> resolver functions at processInput stage. */
|
|
377
|
+
export interface ResolveContext {
|
|
378
|
+
input: string;
|
|
379
|
+
sessionId: string;
|
|
380
|
+
metadata: Record<string, unknown>;
|
|
381
|
+
}
|
|
382
|
+
/** A value that is either static T or resolved per-request via a function. */
|
|
383
|
+
export type Dynamic<T> = T | ((ctx: ResolveContext) => T | Promise<T>);
|
|
384
|
+
/** Declares what a specific provider supports in message format. */
|
|
385
|
+
export interface ProviderCapabilities {
|
|
386
|
+
supportsReasoning: boolean;
|
|
387
|
+
supportsToolCalling: boolean;
|
|
388
|
+
supportsParallelToolCalls: boolean;
|
|
389
|
+
requiresAlternatingRoles: boolean;
|
|
390
|
+
rejectsEmptyAssistantContent: boolean;
|
|
391
|
+
toolCallIdPattern?: RegExp;
|
|
392
|
+
}
|
|
393
|
+
/** A compatibility rule that normalizes messages for a specific provider. */
|
|
394
|
+
export interface CompatRule {
|
|
395
|
+
name: string;
|
|
396
|
+
providers: string[] | '*';
|
|
397
|
+
/** Preemptive: rewrite AI SDK messages before sending. Does NOT mutate persisted history. */
|
|
398
|
+
applyToPrompt?(messages: unknown[], capabilities: ProviderCapabilities): unknown[];
|
|
399
|
+
/** Reactive: fix persisted history after an API error. Return null if unfixable. */
|
|
400
|
+
fixHistory?(history: Message[], error: unknown): Message[] | null;
|
|
401
|
+
/** Patterns matched against API error messages for reactive rules. */
|
|
402
|
+
errorPatterns?: RegExp[];
|
|
403
|
+
}
|
|
404
|
+
/** Describes a single modification made by a compat rule. */
|
|
405
|
+
export interface CompatDiffEntry {
|
|
406
|
+
index: number;
|
|
407
|
+
ruleName: string;
|
|
408
|
+
description: string;
|
|
409
|
+
}
|
|
410
|
+
/** Result of applying reactive compat rules: fixed history + diff describing changes. */
|
|
411
|
+
export interface CompatResult {
|
|
412
|
+
history: Message[];
|
|
413
|
+
diff: CompatDiffEntry[];
|
|
414
|
+
}
|
|
415
|
+
/** Per-model behavior customization, applied at buildContext stage. */
|
|
416
|
+
export interface ModelProfile {
|
|
417
|
+
modelPattern: string | RegExp;
|
|
418
|
+
systemPromptSuffix?: string;
|
|
419
|
+
toolOverrides?: {
|
|
420
|
+
[toolName: string]: {
|
|
421
|
+
description?: string;
|
|
422
|
+
exclude?: boolean;
|
|
423
|
+
};
|
|
424
|
+
};
|
|
425
|
+
extraPromptFragments?: PromptFragment[];
|
|
426
|
+
}
|
|
427
|
+
/** Pluggable model resolver. Tried in registration order; first match wins. */
|
|
428
|
+
export interface ModelGateway {
|
|
429
|
+
name: string;
|
|
430
|
+
canResolve(modelString: string): boolean;
|
|
431
|
+
resolve(modelString: string): Promise<unknown>;
|
|
432
|
+
}
|
|
433
|
+
/** Serializable config for an OpenAI-compatible custom gateway. */
|
|
434
|
+
export interface GatewayConfig {
|
|
435
|
+
name: string;
|
|
436
|
+
url: string;
|
|
437
|
+
apiKey?: string;
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* Top-level framework configuration.
|
|
441
|
+
* Merged from multiple layers (highest priority first):
|
|
442
|
+
* 1. Session-level — runtime parameters passed to agent.run()
|
|
443
|
+
* 2. Project-level — .agentforge/config.jsonc in project root
|
|
444
|
+
* 3. Global-level — ~/.agentforge/config.jsonc in user home
|
|
445
|
+
* 4. Environment — AGENTFORGE_CONFIG env var (inline JSON)
|
|
446
|
+
*/
|
|
447
|
+
export interface HarnessConfig {
|
|
448
|
+
agents?: Record<string, Partial<AgentConfig>>;
|
|
449
|
+
tools?: {
|
|
450
|
+
enabled?: string[];
|
|
451
|
+
disabled?: string[];
|
|
452
|
+
};
|
|
453
|
+
plugins?: string[];
|
|
454
|
+
session?: {
|
|
455
|
+
storage?: 'file' | 'memory';
|
|
456
|
+
path?: string;
|
|
457
|
+
};
|
|
458
|
+
modelProfiles?: ModelProfile[];
|
|
459
|
+
modelGateways?: GatewayConfig[];
|
|
460
|
+
hooks?: {
|
|
461
|
+
profile?: HookProfile;
|
|
462
|
+
disabledHooks?: string[];
|
|
463
|
+
};
|
|
464
|
+
costCap?: {
|
|
465
|
+
maxCost: number;
|
|
466
|
+
strategy: 'block' | 'warn';
|
|
467
|
+
modelPricing?: Record<string, {
|
|
468
|
+
input: number;
|
|
469
|
+
output: number;
|
|
470
|
+
}>;
|
|
471
|
+
};
|
|
472
|
+
tokenBudget?: {
|
|
473
|
+
maxContextTokens: number;
|
|
474
|
+
reservedOutputTokens: number;
|
|
475
|
+
strategy: 'compress' | 'truncate' | 'block';
|
|
476
|
+
};
|
|
477
|
+
goalEcho?: {
|
|
478
|
+
enabled: boolean;
|
|
479
|
+
echoFrequency: number;
|
|
480
|
+
progressTracking: boolean;
|
|
481
|
+
};
|
|
482
|
+
factInjection?: {
|
|
483
|
+
facts: string[] | ((ctx: PipelineContext) => string[] | Promise<string[]>);
|
|
484
|
+
};
|
|
485
|
+
}
|
|
486
|
+
export type SessionStatus = 'active' | 'completed' | 'suspended' | 'error';
|
|
487
|
+
export interface SessionRecord {
|
|
488
|
+
sessionId: string;
|
|
489
|
+
parentSessionId?: string;
|
|
490
|
+
createdAt: string;
|
|
491
|
+
updatedAt: string;
|
|
492
|
+
status: SessionStatus;
|
|
493
|
+
model?: string;
|
|
494
|
+
tokenUsage?: TokenUsage;
|
|
495
|
+
}
|
|
496
|
+
export interface SessionEvent {
|
|
497
|
+
seq: number;
|
|
498
|
+
timestamp: string;
|
|
499
|
+
type: string;
|
|
500
|
+
payload: unknown;
|
|
501
|
+
}
|
|
502
|
+
export interface SessionStorage {
|
|
503
|
+
append(sessionId: string, event: SessionEvent): Promise<void>;
|
|
504
|
+
read(sessionId: string): AsyncIterable<SessionEvent>;
|
|
505
|
+
list(filter?: {
|
|
506
|
+
parentSessionId?: string;
|
|
507
|
+
status?: SessionStatus;
|
|
508
|
+
}): Promise<SessionRecord[]>;
|
|
509
|
+
updateMeta(sessionId: string, meta: Partial<SessionRecord>): Promise<void>;
|
|
510
|
+
}
|
|
511
|
+
export interface CheckpointStore<T = unknown> {
|
|
512
|
+
save(sessionId: string, data: T): Promise<void>;
|
|
513
|
+
load(sessionId: string): Promise<T | undefined>;
|
|
514
|
+
delete(sessionId: string): Promise<void>;
|
|
515
|
+
list(): Promise<string[]>;
|
|
516
|
+
}
|
|
517
|
+
/** Backend capable of querying persisted events for replay. */
|
|
518
|
+
export interface ReplayBackend {
|
|
519
|
+
/** Return all stored events for a session, ordered by sequence number. */
|
|
520
|
+
query(sessionId: string): Promise<SessionEvent[]>;
|
|
521
|
+
}
|
|
522
|
+
/** Options controlling which events are replayed and how. */
|
|
523
|
+
export interface ReplayOptions {
|
|
524
|
+
/** Only replay events whose type is in this list. Undefined = all types. */
|
|
525
|
+
eventTypes?: string[];
|
|
526
|
+
/** Start replaying from this sequence number (inclusive). Default: 1. */
|
|
527
|
+
fromSeq?: number;
|
|
528
|
+
/** Stop replaying at this sequence number (inclusive). Undefined = no upper bound. */
|
|
529
|
+
toSeq?: number;
|
|
530
|
+
}
|
|
531
|
+
export interface SessionManager {
|
|
532
|
+
start(input: string, options?: {
|
|
533
|
+
parentSessionId?: string;
|
|
534
|
+
}): Promise<SessionRecord>;
|
|
535
|
+
restore(sessionId: string): Promise<PipelineContext>;
|
|
536
|
+
suspend(sessionId: string, reason: string): Promise<void>;
|
|
537
|
+
resume(sessionId: string, input?: string): Promise<string>;
|
|
538
|
+
list(filter?: {
|
|
539
|
+
parentSessionId?: string;
|
|
540
|
+
}): Promise<SessionRecord[]>;
|
|
541
|
+
}
|
|
542
|
+
export interface SubAgentConfig {
|
|
543
|
+
name: string;
|
|
544
|
+
description?: string;
|
|
545
|
+
inputSchema?: unknown;
|
|
546
|
+
model?: string;
|
|
547
|
+
systemPrompt?: string;
|
|
548
|
+
tools?: ToolDefinition[];
|
|
549
|
+
maxIterations?: number;
|
|
550
|
+
contextPolicy: 'isolated' | 'inherit' | 'summary-only';
|
|
551
|
+
}
|
|
552
|
+
export interface SubAgentResult {
|
|
553
|
+
response: string;
|
|
554
|
+
tokenUsage: TokenUsage;
|
|
555
|
+
sessionId: string;
|
|
556
|
+
}
|
|
557
|
+
/** Named concurrency slot with a maximum parallelism limit. */
|
|
558
|
+
export interface ConcurrencySlot {
|
|
559
|
+
key: string;
|
|
560
|
+
maxConcurrent: number;
|
|
561
|
+
}
|
|
562
|
+
/** An entry in an ordered model fallback chain. 0 = highest priority. */
|
|
563
|
+
export interface FallbackEntry {
|
|
564
|
+
model: string;
|
|
565
|
+
priority: number;
|
|
566
|
+
}
|
|
567
|
+
/** Status of an async task through its lifecycle. */
|
|
568
|
+
export type AsyncTaskStatus = 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';
|
|
569
|
+
/** Configuration for an async (background) sub-agent. */
|
|
570
|
+
export interface AsyncTaskConfig extends SubAgentConfig {
|
|
571
|
+
concurrencySlot?: ConcurrencySlot;
|
|
572
|
+
fallbackModels?: FallbackEntry[];
|
|
573
|
+
}
|
|
574
|
+
/** Handle to a running or completed async sub-agent task. */
|
|
575
|
+
export interface AsyncTaskHandle {
|
|
576
|
+
taskId: string;
|
|
577
|
+
status: AsyncTaskStatus;
|
|
578
|
+
result?: SubAgentResult;
|
|
579
|
+
error?: Error;
|
|
580
|
+
cancel(): void;
|
|
581
|
+
on_complete(handler: (result: SubAgentResult) => void): void;
|
|
582
|
+
}
|
|
583
|
+
/** Manager for async sub-agent tasks. */
|
|
584
|
+
export interface TaskManager {
|
|
585
|
+
launch(config: AsyncTaskConfig, prompt: string): Promise<AsyncTaskHandle>;
|
|
586
|
+
get(taskId: string): AsyncTaskHandle | undefined;
|
|
587
|
+
cancel(taskId: string): void;
|
|
588
|
+
list(filter?: {
|
|
589
|
+
parentSessionId?: string;
|
|
590
|
+
}): AsyncTaskHandle[];
|
|
591
|
+
}
|
|
592
|
+
export interface EvictionStorage {
|
|
593
|
+
store(sessionId: string, key: string, content: unknown): Promise<string>;
|
|
594
|
+
retrieve(sessionId: string, reference: string): Promise<unknown>;
|
|
595
|
+
}
|
|
596
|
+
export interface EvictedResult {
|
|
597
|
+
preview: string;
|
|
598
|
+
reference: string;
|
|
599
|
+
evicted: true;
|
|
600
|
+
}
|
|
601
|
+
export interface AuthResult {
|
|
602
|
+
authenticated: boolean;
|
|
603
|
+
error?: string;
|
|
604
|
+
}
|
|
605
|
+
export interface AuthAdapter {
|
|
606
|
+
authenticate(request: {
|
|
607
|
+
header(name: string): string | undefined;
|
|
608
|
+
}): Promise<AuthResult>;
|
|
609
|
+
}
|
|
610
|
+
export { AgentForgeClient } from './client.js';
|
|
611
|
+
export type { ClientOptions, AgentRunResult, SSEMessage } from './client.js';
|
|
612
|
+
export { parseSSE } from './client.js';
|
|
613
|
+
export interface AgentProfile {
|
|
614
|
+
name: string;
|
|
615
|
+
description?: string;
|
|
616
|
+
extends?: string;
|
|
617
|
+
plugins?: Array<(api: HarnessAPI) => PluginRegistration>;
|
|
618
|
+
tools?: Tool[];
|
|
619
|
+
config?: Partial<HarnessConfig>;
|
|
620
|
+
systemPrompt?: string;
|
|
621
|
+
model?: string;
|
|
622
|
+
maxIterations?: number;
|
|
623
|
+
}
|
|
624
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// @primo-ai/sdk — public type definitions
|
|
2
|
+
// ---------------------------------------------------------------------------
|
|
3
|
+
// Span Types
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
export const SpanType = {
|
|
6
|
+
AGENT_RUN: 'agent_run',
|
|
7
|
+
MODEL_STEP: 'model_step',
|
|
8
|
+
TOOL_CALL: 'tool_call',
|
|
9
|
+
PROCESSOR_RUN: 'processor_run',
|
|
10
|
+
// Phase 2 — harness & detailed observability
|
|
11
|
+
LLM_STREAM: 'llm.stream',
|
|
12
|
+
TOOL_EXECUTE: 'tool.execute',
|
|
13
|
+
GATE_DECISION: 'harness.gate',
|
|
14
|
+
COST_CAP_CHECK: 'harness.cost-cap',
|
|
15
|
+
TOKEN_BUDGET_CHECK: 'harness.token-budget',
|
|
16
|
+
GOAL_ECHO: 'harness.goal-echo',
|
|
17
|
+
FACT_INJECTION: 'harness.fact-injection',
|
|
18
|
+
COMPRESSION: 'harness.compression',
|
|
19
|
+
// Phase 2 — subsystem coverage
|
|
20
|
+
SESSION_LIFECYCLE: 'session.lifecycle',
|
|
21
|
+
TOOL_REGISTER: 'tool.register',
|
|
22
|
+
TOOL_LOOKUP: 'tool.lookup',
|
|
23
|
+
EVENT_DISPATCH: 'event.dispatch',
|
|
24
|
+
GATEWAY_RESOLVE: 'gateway.resolve',
|
|
25
|
+
CONTEXT_BUILD: 'context.build',
|
|
26
|
+
LOOP_ITERATION: 'loop.iteration',
|
|
27
|
+
SUB_AGENT_RUN: 'subagent.run',
|
|
28
|
+
CHECKPOINT: 'checkpoint',
|
|
29
|
+
MCP_CONNECT: 'mcp.connect',
|
|
30
|
+
MCP_TOOL_CALL: 'mcp.tool_call',
|
|
31
|
+
};
|
|
32
|
+
/** Standard span attribute keys for consistent observability across the framework. */
|
|
33
|
+
export const SpanAttributeKeys = {
|
|
34
|
+
// Token / Cost
|
|
35
|
+
TOKENS_INPUT: 'tokens.input',
|
|
36
|
+
TOKENS_OUTPUT: 'tokens.output',
|
|
37
|
+
TOKENS_TOTAL: 'tokens.total',
|
|
38
|
+
COST_ESTIMATED: 'cost.estimated',
|
|
39
|
+
COST_CUMULATIVE: 'cost.cumulative',
|
|
40
|
+
COST_BUDGET: 'cost.budget',
|
|
41
|
+
// Model
|
|
42
|
+
MODEL_NAME: 'model.name',
|
|
43
|
+
// Tool
|
|
44
|
+
TOOL_NAME: 'tool.name',
|
|
45
|
+
TOOL_RESULT_SIZE: 'tool.result_size',
|
|
46
|
+
// Harness gates
|
|
47
|
+
HARNESS_DECISION: 'harness.decision',
|
|
48
|
+
HARNESS_REASON: 'harness.reason',
|
|
49
|
+
// Budget
|
|
50
|
+
BUDGET_CONTEXT_MAX: 'budget.context_max',
|
|
51
|
+
BUDGET_CONTEXT_USED: 'budget.context_used',
|
|
52
|
+
BUDGET_RESERVED_OUTPUT: 'budget.reserved_output',
|
|
53
|
+
// Goal echo
|
|
54
|
+
GOAL_TEXT: 'goal.text',
|
|
55
|
+
GOAL_PROGRESS: 'goal.progress',
|
|
56
|
+
GOAL_ITERATION: 'goal.iteration',
|
|
57
|
+
// Fact injection
|
|
58
|
+
FACT_COUNT: 'fact.count',
|
|
59
|
+
};
|
|
60
|
+
// ---------------------------------------------------------------------------
|
|
61
|
+
// Client SDK
|
|
62
|
+
// ---------------------------------------------------------------------------
|
|
63
|
+
export { AgentForgeClient } from './client.js';
|
|
64
|
+
export { parseSSE } from './client.js';
|
|
65
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAkR1C,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,aAAa,EAAE,eAAe;IAC9B,6CAA6C;IAC7C,UAAU,EAAE,YAAY;IACxB,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,cAAc;IAC7B,cAAc,EAAE,kBAAkB;IAClC,kBAAkB,EAAE,sBAAsB;IAC1C,SAAS,EAAE,mBAAmB;IAC9B,cAAc,EAAE,wBAAwB;IACxC,WAAW,EAAE,qBAAqB;IAClC,+BAA+B;IAC/B,iBAAiB,EAAE,mBAAmB;IACtC,aAAa,EAAE,eAAe;IAC9B,WAAW,EAAE,aAAa;IAC1B,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,aAAa,EAAE,eAAe;IAC9B,cAAc,EAAE,gBAAgB;IAChC,aAAa,EAAE,cAAc;IAC7B,UAAU,EAAE,YAAY;IACxB,WAAW,EAAE,aAAa;IAC1B,aAAa,EAAE,eAAe;CACtB,CAAC;AAEX,sFAAsF;AACtF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,eAAe;IACf,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAC9B,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,WAAW,EAAE,aAAa;IAC1B,QAAQ;IACR,UAAU,EAAE,YAAY;IACxB,OAAO;IACP,SAAS,EAAE,WAAW;IACtB,gBAAgB,EAAE,kBAAkB;IACpC,gBAAgB;IAChB,gBAAgB,EAAE,kBAAkB;IACpC,cAAc,EAAE,gBAAgB;IAChC,SAAS;IACT,kBAAkB,EAAE,oBAAoB;IACxC,mBAAmB,EAAE,qBAAqB;IAC1C,sBAAsB,EAAE,wBAAwB;IAChD,YAAY;IACZ,SAAS,EAAE,WAAW;IACtB,aAAa,EAAE,eAAe;IAC9B,cAAc,EAAE,gBAAgB;IAChC,iBAAiB;IACjB,UAAU,EAAE,YAAY;CAChB,CAAC;AAsbX,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@primo-ai/sdk",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"files": ["dist"],
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "tsc -p tsconfig.build.json",
|
|
16
|
+
"test": "tsc --noEmit && vitest run",
|
|
17
|
+
"check-types": "tsc --noEmit",
|
|
18
|
+
"lint": "eslint src __tests__"
|
|
19
|
+
},
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"typescript": "^5.7.3",
|
|
22
|
+
"vitest": "^3.0.5"
|
|
23
|
+
}
|
|
24
|
+
}
|