@framers/agentos 0.1.61 → 0.1.63
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/dist/api/agent.d.ts +40 -0
- package/dist/api/agent.d.ts.map +1 -0
- package/dist/api/agent.js +63 -0
- package/dist/api/agent.js.map +1 -0
- package/dist/api/generateText.d.ts +40 -0
- package/dist/api/generateText.d.ts.map +1 -0
- package/dist/api/generateText.js +117 -0
- package/dist/api/generateText.js.map +1 -0
- package/dist/api/model.d.ts +28 -0
- package/dist/api/model.d.ts.map +1 -0
- package/dist/api/model.js +79 -0
- package/dist/api/model.js.map +1 -0
- package/dist/api/streamText.d.ts +28 -0
- package/dist/api/streamText.d.ts.map +1 -0
- package/dist/api/streamText.js +92 -0
- package/dist/api/streamText.js.map +1 -0
- package/dist/api/tool-adapter.d.ts +12 -0
- package/dist/api/tool-adapter.d.ts.map +1 -0
- package/dist/api/tool-adapter.js +51 -0
- package/dist/api/tool-adapter.js.map +1 -0
- package/dist/core/guardrails/IGuardrailService.d.ts +13 -0
- package/dist/core/guardrails/IGuardrailService.d.ts.map +1 -1
- package/dist/core/guardrails/SentenceBoundaryBuffer.d.ts +16 -0
- package/dist/core/guardrails/SentenceBoundaryBuffer.d.ts.map +1 -0
- package/dist/core/guardrails/SentenceBoundaryBuffer.js +48 -0
- package/dist/core/guardrails/SentenceBoundaryBuffer.js.map +1 -0
- package/dist/core/guardrails/index.d.ts +1 -0
- package/dist/core/guardrails/index.d.ts.map +1 -1
- package/dist/core/guardrails/index.js +2 -0
- package/dist/core/guardrails/index.js.map +1 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type GenerateTextOptions, type GenerateTextResult, type Message } from './generateText.js';
|
|
2
|
+
import { type StreamTextResult } from './streamText.js';
|
|
3
|
+
import type { ToolDefinitionMap } from './tool-adapter.js';
|
|
4
|
+
export interface AgentOptions {
|
|
5
|
+
model: string;
|
|
6
|
+
name?: string;
|
|
7
|
+
instructions?: string;
|
|
8
|
+
tools?: ToolDefinitionMap;
|
|
9
|
+
memory?: boolean;
|
|
10
|
+
personality?: Partial<{
|
|
11
|
+
honesty: number;
|
|
12
|
+
emotionality: number;
|
|
13
|
+
extraversion: number;
|
|
14
|
+
agreeableness: number;
|
|
15
|
+
conscientiousness: number;
|
|
16
|
+
openness: number;
|
|
17
|
+
}>;
|
|
18
|
+
guardrails?: string[];
|
|
19
|
+
apiKey?: string;
|
|
20
|
+
baseUrl?: string;
|
|
21
|
+
maxSteps?: number;
|
|
22
|
+
}
|
|
23
|
+
export interface AgentSession {
|
|
24
|
+
readonly id: string;
|
|
25
|
+
send(text: string): Promise<GenerateTextResult>;
|
|
26
|
+
stream(text: string): StreamTextResult;
|
|
27
|
+
messages(): Message[];
|
|
28
|
+
clear(): void;
|
|
29
|
+
}
|
|
30
|
+
export interface Agent {
|
|
31
|
+
generate(prompt: string, opts?: Partial<GenerateTextOptions>): Promise<GenerateTextResult>;
|
|
32
|
+
stream(prompt: string, opts?: Partial<GenerateTextOptions>): StreamTextResult;
|
|
33
|
+
session(id?: string): AgentSession;
|
|
34
|
+
close(): Promise<void>;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Creates a stateful agent with sessions, memory, and personality.
|
|
38
|
+
*/
|
|
39
|
+
export declare function agent(opts: AgentOptions): Agent;
|
|
40
|
+
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/api/agent.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAClH,OAAO,EAAc,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAC5D,aAAa,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;KACpE,CAAC,CAAC;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAChD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACvC,QAAQ,IAAI,OAAO,EAAE,CAAC;IACtB,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC3F,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,gBAAgB,CAAC;IAC9E,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;IACnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,KAAK,CAgE/C"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// packages/agentos/src/api/agent.ts
|
|
2
|
+
import { generateText } from './generateText.js';
|
|
3
|
+
import { streamText } from './streamText.js';
|
|
4
|
+
/**
|
|
5
|
+
* Creates a stateful agent with sessions, memory, and personality.
|
|
6
|
+
*/
|
|
7
|
+
export function agent(opts) {
|
|
8
|
+
const sessions = new Map();
|
|
9
|
+
const baseOpts = {
|
|
10
|
+
model: opts.model,
|
|
11
|
+
system: opts.instructions,
|
|
12
|
+
tools: opts.tools,
|
|
13
|
+
maxSteps: opts.maxSteps ?? 5,
|
|
14
|
+
apiKey: opts.apiKey,
|
|
15
|
+
baseUrl: opts.baseUrl,
|
|
16
|
+
};
|
|
17
|
+
return {
|
|
18
|
+
async generate(prompt, extra) {
|
|
19
|
+
return generateText({ ...baseOpts, ...extra, prompt });
|
|
20
|
+
},
|
|
21
|
+
stream(prompt, extra) {
|
|
22
|
+
return streamText({ ...baseOpts, ...extra, prompt });
|
|
23
|
+
},
|
|
24
|
+
session(id) {
|
|
25
|
+
const sessionId = id ?? `session-${Date.now()}`;
|
|
26
|
+
if (!sessions.has(sessionId))
|
|
27
|
+
sessions.set(sessionId, []);
|
|
28
|
+
const history = sessions.get(sessionId);
|
|
29
|
+
return {
|
|
30
|
+
id: sessionId,
|
|
31
|
+
async send(text) {
|
|
32
|
+
history.push({ role: 'user', content: text });
|
|
33
|
+
const result = await generateText({
|
|
34
|
+
...baseOpts,
|
|
35
|
+
messages: [...history],
|
|
36
|
+
});
|
|
37
|
+
history.push({ role: 'assistant', content: result.text });
|
|
38
|
+
return result;
|
|
39
|
+
},
|
|
40
|
+
stream(text) {
|
|
41
|
+
history.push({ role: 'user', content: text });
|
|
42
|
+
const result = streamText({
|
|
43
|
+
...baseOpts,
|
|
44
|
+
messages: [...history],
|
|
45
|
+
});
|
|
46
|
+
// Capture text for history when done
|
|
47
|
+
result.text.then(t => history.push({ role: 'assistant', content: t }));
|
|
48
|
+
return result;
|
|
49
|
+
},
|
|
50
|
+
messages() {
|
|
51
|
+
return [...history];
|
|
52
|
+
},
|
|
53
|
+
clear() {
|
|
54
|
+
history.length = 0;
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
},
|
|
58
|
+
async close() {
|
|
59
|
+
sessions.clear();
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/api/agent.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,OAAO,EAAE,YAAY,EAAmE,MAAM,mBAAmB,CAAC;AAClH,OAAO,EAAE,UAAU,EAAyB,MAAM,iBAAiB,CAAC;AAkCpE;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,IAAkB;IACtC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAqB,CAAC;IAE9C,MAAM,QAAQ,GAAiC;QAC7C,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,YAAY;QACzB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC;QAC5B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC;IAEF,OAAO;QACL,KAAK,CAAC,QAAQ,CAAC,MAAc,EAAE,KAAoC;YACjE,OAAO,YAAY,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,EAAE,MAAM,EAAyB,CAAC,CAAC;QAChF,CAAC;QAED,MAAM,CAAC,MAAc,EAAE,KAAoC;YACzD,OAAO,UAAU,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,EAAE,MAAM,EAAyB,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO,CAAC,EAAW;YACjB,MAAM,SAAS,GAAG,EAAE,IAAI,WAAW,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YAChD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;gBAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC1D,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;YAEzC,OAAO;gBACL,EAAE,EAAE,SAAS;gBAEb,KAAK,CAAC,IAAI,CAAC,IAAY;oBACrB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC9C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;wBAChC,GAAG,QAAQ;wBACX,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC;qBACA,CAAC,CAAC;oBAC1B,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC1D,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAED,MAAM,CAAC,IAAY;oBACjB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC9C,MAAM,MAAM,GAAG,UAAU,CAAC;wBACxB,GAAG,QAAQ;wBACX,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC;qBACA,CAAC,CAAC;oBAC1B,qCAAqC;oBACrC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBACvE,OAAO,MAAM,CAAC;gBAChB,CAAC;gBAED,QAAQ;oBACN,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;gBACtB,CAAC;gBAED,KAAK;oBACH,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;gBACrB,CAAC;aACF,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,KAAK;YACT,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type ToolDefinitionMap } from './tool-adapter.js';
|
|
2
|
+
export interface Message {
|
|
3
|
+
role: 'system' | 'user' | 'assistant' | 'tool';
|
|
4
|
+
content: string;
|
|
5
|
+
}
|
|
6
|
+
export interface ToolCallRecord {
|
|
7
|
+
name: string;
|
|
8
|
+
args: unknown;
|
|
9
|
+
result?: unknown;
|
|
10
|
+
error?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface TokenUsage {
|
|
13
|
+
promptTokens: number;
|
|
14
|
+
completionTokens: number;
|
|
15
|
+
totalTokens: number;
|
|
16
|
+
}
|
|
17
|
+
export interface GenerateTextOptions {
|
|
18
|
+
model: string;
|
|
19
|
+
prompt?: string;
|
|
20
|
+
system?: string;
|
|
21
|
+
messages?: Message[];
|
|
22
|
+
tools?: ToolDefinitionMap;
|
|
23
|
+
maxSteps?: number;
|
|
24
|
+
temperature?: number;
|
|
25
|
+
maxTokens?: number;
|
|
26
|
+
apiKey?: string;
|
|
27
|
+
baseUrl?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface GenerateTextResult {
|
|
30
|
+
text: string;
|
|
31
|
+
usage: TokenUsage;
|
|
32
|
+
toolCalls: ToolCallRecord[];
|
|
33
|
+
finishReason: 'stop' | 'length' | 'tool-calls' | 'error';
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Stateless text generation. Creates a temporary provider, runs the LLM call,
|
|
37
|
+
* and returns the complete result. Supports multi-step tool calling.
|
|
38
|
+
*/
|
|
39
|
+
export declare function generateText(opts: GenerateTextOptions): Promise<GenerateTextResult>;
|
|
40
|
+
//# sourceMappingURL=generateText.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateText.d.ts","sourceRoot":"","sources":["../../src/api/generateText.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGvE,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,OAAO,CAAC;CAC1D;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAyHzF"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { parseModelString, resolveProvider, createProviderManager } from './model.js';
|
|
2
|
+
import { adaptTools } from './tool-adapter.js';
|
|
3
|
+
/**
|
|
4
|
+
* Stateless text generation. Creates a temporary provider, runs the LLM call,
|
|
5
|
+
* and returns the complete result. Supports multi-step tool calling.
|
|
6
|
+
*/
|
|
7
|
+
export async function generateText(opts) {
|
|
8
|
+
const { providerId, modelId } = parseModelString(opts.model);
|
|
9
|
+
const resolved = resolveProvider(providerId, modelId, { apiKey: opts.apiKey, baseUrl: opts.baseUrl });
|
|
10
|
+
const manager = await createProviderManager(resolved);
|
|
11
|
+
const provider = manager.getProvider(resolved.providerId);
|
|
12
|
+
if (!provider)
|
|
13
|
+
throw new Error(`Provider ${resolved.providerId} not available.`);
|
|
14
|
+
// Build messages
|
|
15
|
+
const messages = [];
|
|
16
|
+
if (opts.system)
|
|
17
|
+
messages.push({ role: 'system', content: opts.system });
|
|
18
|
+
if (opts.messages) {
|
|
19
|
+
for (const m of opts.messages)
|
|
20
|
+
messages.push({ role: m.role, content: m.content });
|
|
21
|
+
}
|
|
22
|
+
if (opts.prompt)
|
|
23
|
+
messages.push({ role: 'user', content: opts.prompt });
|
|
24
|
+
const tools = adaptTools(opts.tools);
|
|
25
|
+
const toolMap = new Map();
|
|
26
|
+
for (const t of tools)
|
|
27
|
+
toolMap.set(t.name, t);
|
|
28
|
+
const toolSchemas = tools.length > 0
|
|
29
|
+
? tools.map(t => ({
|
|
30
|
+
type: 'function',
|
|
31
|
+
function: { name: t.name, description: t.description, parameters: t.inputSchema },
|
|
32
|
+
}))
|
|
33
|
+
: undefined;
|
|
34
|
+
const allToolCalls = [];
|
|
35
|
+
let totalUsage = { promptTokens: 0, completionTokens: 0, totalTokens: 0 };
|
|
36
|
+
const maxSteps = opts.maxSteps ?? 1;
|
|
37
|
+
for (let step = 0; step < maxSteps; step++) {
|
|
38
|
+
const response = await provider.generateCompletion(resolved.modelId, messages, {
|
|
39
|
+
tools: toolSchemas,
|
|
40
|
+
temperature: opts.temperature,
|
|
41
|
+
maxTokens: opts.maxTokens,
|
|
42
|
+
});
|
|
43
|
+
// Accumulate usage
|
|
44
|
+
if (response.usage) {
|
|
45
|
+
totalUsage.promptTokens += response.usage.promptTokens ?? 0;
|
|
46
|
+
totalUsage.completionTokens += response.usage.completionTokens ?? 0;
|
|
47
|
+
totalUsage.totalTokens += response.usage.totalTokens ?? 0;
|
|
48
|
+
}
|
|
49
|
+
const choice = response.choices?.[0];
|
|
50
|
+
if (!choice)
|
|
51
|
+
break;
|
|
52
|
+
const content = choice.message?.content;
|
|
53
|
+
const textContent = typeof content === 'string' ? content : content?.text ?? '';
|
|
54
|
+
const toolCallsInChoice = choice.message?.tool_calls ?? [];
|
|
55
|
+
// If assistant returned text with no tool calls, we're done
|
|
56
|
+
if (textContent && toolCallsInChoice.length === 0) {
|
|
57
|
+
return {
|
|
58
|
+
text: textContent,
|
|
59
|
+
usage: totalUsage,
|
|
60
|
+
toolCalls: allToolCalls,
|
|
61
|
+
finishReason: (choice.finishReason ?? 'stop'),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
// Tool calls
|
|
65
|
+
if (toolCallsInChoice.length > 0) {
|
|
66
|
+
messages.push({
|
|
67
|
+
role: 'assistant',
|
|
68
|
+
content: textContent || null,
|
|
69
|
+
tool_calls: toolCallsInChoice,
|
|
70
|
+
});
|
|
71
|
+
for (const tc of toolCallsInChoice) {
|
|
72
|
+
const fnName = tc.function?.name ?? tc.name ?? '';
|
|
73
|
+
const fnArgs = tc.function?.arguments ?? '{}';
|
|
74
|
+
const tcId = tc.id ?? '';
|
|
75
|
+
const tool = toolMap.get(fnName);
|
|
76
|
+
const record = {
|
|
77
|
+
name: fnName,
|
|
78
|
+
args: JSON.parse(typeof fnArgs === 'string' ? fnArgs : JSON.stringify(fnArgs)),
|
|
79
|
+
};
|
|
80
|
+
if (tool) {
|
|
81
|
+
try {
|
|
82
|
+
const result = await tool.execute(record.args, {});
|
|
83
|
+
record.result = result.output;
|
|
84
|
+
record.error = result.success ? undefined : result.error;
|
|
85
|
+
messages.push({
|
|
86
|
+
role: 'tool',
|
|
87
|
+
tool_call_id: tcId,
|
|
88
|
+
content: JSON.stringify(result.output ?? result.error ?? ''),
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
record.error = err?.message;
|
|
93
|
+
messages.push({ role: 'tool', tool_call_id: tcId, content: JSON.stringify({ error: err?.message }) });
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
allToolCalls.push(record);
|
|
97
|
+
}
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
// No content and no tool calls — done
|
|
101
|
+
return {
|
|
102
|
+
text: textContent,
|
|
103
|
+
usage: totalUsage,
|
|
104
|
+
toolCalls: allToolCalls,
|
|
105
|
+
finishReason: (choice.finishReason ?? 'stop'),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
// Exhausted maxSteps — return last state
|
|
109
|
+
const lastAssistant = messages.filter(m => m.role === 'assistant').pop();
|
|
110
|
+
return {
|
|
111
|
+
text: lastAssistant?.content ?? '',
|
|
112
|
+
usage: totalUsage,
|
|
113
|
+
toolCalls: allToolCalls,
|
|
114
|
+
finishReason: 'tool-calls',
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=generateText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateText.js","sourceRoot":"","sources":["../../src/api/generateText.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { AIModelProviderManager } from '../core/llm/providers/AIModelProviderManager.js';
|
|
2
|
+
export interface ParsedModel {
|
|
3
|
+
providerId: string;
|
|
4
|
+
modelId: string;
|
|
5
|
+
}
|
|
6
|
+
export interface ResolvedProvider {
|
|
7
|
+
providerId: string;
|
|
8
|
+
modelId: string;
|
|
9
|
+
apiKey?: string;
|
|
10
|
+
baseUrl?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Parses 'provider:model' string format.
|
|
14
|
+
* Examples: 'openai:gpt-4o', 'ollama:llama3.2', 'openrouter:anthropic/claude-sonnet-4-5-20250929'
|
|
15
|
+
*/
|
|
16
|
+
export declare function parseModelString(model: string): ParsedModel;
|
|
17
|
+
/**
|
|
18
|
+
* Resolves provider config from env vars, with optional overrides.
|
|
19
|
+
*/
|
|
20
|
+
export declare function resolveProvider(providerId: string, modelId: string, overrides?: {
|
|
21
|
+
apiKey?: string;
|
|
22
|
+
baseUrl?: string;
|
|
23
|
+
}): ResolvedProvider;
|
|
24
|
+
/**
|
|
25
|
+
* Creates an AIModelProviderManager from a resolved provider config.
|
|
26
|
+
*/
|
|
27
|
+
export declare function createProviderManager(resolved: ResolvedProvider): Promise<AIModelProviderManager>;
|
|
28
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/api/model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AAEzF,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAaD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAY3D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAChD,gBAAgB,CA4BlB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,sBAAsB,CAAC,CAoBjC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
// packages/agentos/src/api/model.ts
|
|
2
|
+
import { AIModelProviderManager } from '../core/llm/providers/AIModelProviderManager.js';
|
|
3
|
+
const ENV_KEY_MAP = {
|
|
4
|
+
openai: 'OPENAI_API_KEY',
|
|
5
|
+
anthropic: 'ANTHROPIC_API_KEY',
|
|
6
|
+
openrouter: 'OPENROUTER_API_KEY',
|
|
7
|
+
gemini: 'GEMINI_API_KEY',
|
|
8
|
+
};
|
|
9
|
+
const ENV_URL_MAP = {
|
|
10
|
+
ollama: 'OLLAMA_BASE_URL',
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Parses 'provider:model' string format.
|
|
14
|
+
* Examples: 'openai:gpt-4o', 'ollama:llama3.2', 'openrouter:anthropic/claude-sonnet-4-5-20250929'
|
|
15
|
+
*/
|
|
16
|
+
export function parseModelString(model) {
|
|
17
|
+
if (!model || typeof model !== 'string') {
|
|
18
|
+
throw new Error('Invalid model string. Expected "provider:model" (e.g. "openai:gpt-4o").');
|
|
19
|
+
}
|
|
20
|
+
const colonIdx = model.indexOf(':');
|
|
21
|
+
if (colonIdx <= 0 || colonIdx === model.length - 1) {
|
|
22
|
+
throw new Error(`Invalid model "${model}". Expected "provider:model" (e.g. "openai:gpt-4o").`);
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
providerId: model.slice(0, colonIdx),
|
|
26
|
+
modelId: model.slice(colonIdx + 1),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Resolves provider config from env vars, with optional overrides.
|
|
31
|
+
*/
|
|
32
|
+
export function resolveProvider(providerId, modelId, overrides) {
|
|
33
|
+
const apiKey = overrides?.apiKey
|
|
34
|
+
?? (ENV_KEY_MAP[providerId] ? process.env[ENV_KEY_MAP[providerId]] : undefined);
|
|
35
|
+
const baseUrl = overrides?.baseUrl
|
|
36
|
+
?? (ENV_URL_MAP[providerId] ? process.env[ENV_URL_MAP[providerId]] : undefined);
|
|
37
|
+
if (providerId === 'ollama') {
|
|
38
|
+
if (!baseUrl) {
|
|
39
|
+
throw new Error(`No base URL for ollama. Set OLLAMA_BASE_URL or pass baseUrl.`);
|
|
40
|
+
}
|
|
41
|
+
return { providerId, modelId, baseUrl };
|
|
42
|
+
}
|
|
43
|
+
// Anthropic goes through OpenRouter by default in AgentOS
|
|
44
|
+
if (providerId === 'anthropic' && !apiKey) {
|
|
45
|
+
const orKey = process.env['OPENROUTER_API_KEY'];
|
|
46
|
+
if (orKey) {
|
|
47
|
+
return { providerId: 'openrouter', modelId: `anthropic/${modelId}`, apiKey: orKey };
|
|
48
|
+
}
|
|
49
|
+
throw new Error(`No API key for anthropic. Set ANTHROPIC_API_KEY or OPENROUTER_API_KEY.`);
|
|
50
|
+
}
|
|
51
|
+
if (!apiKey) {
|
|
52
|
+
const envVar = ENV_KEY_MAP[providerId] ?? `${providerId.toUpperCase()}_API_KEY`;
|
|
53
|
+
throw new Error(`No API key for ${providerId}. Set ${envVar} or pass apiKey.`);
|
|
54
|
+
}
|
|
55
|
+
return { providerId, modelId, apiKey, baseUrl };
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Creates an AIModelProviderManager from a resolved provider config.
|
|
59
|
+
*/
|
|
60
|
+
export async function createProviderManager(resolved) {
|
|
61
|
+
const manager = new AIModelProviderManager();
|
|
62
|
+
const providerConfig = {};
|
|
63
|
+
if (resolved.apiKey)
|
|
64
|
+
providerConfig.apiKey = resolved.apiKey;
|
|
65
|
+
if (resolved.baseUrl) {
|
|
66
|
+
providerConfig.baseURL = resolved.baseUrl;
|
|
67
|
+
providerConfig.baseUrl = resolved.baseUrl;
|
|
68
|
+
}
|
|
69
|
+
await manager.initialize({
|
|
70
|
+
providers: [{
|
|
71
|
+
providerId: resolved.providerId,
|
|
72
|
+
enabled: true,
|
|
73
|
+
isDefault: true,
|
|
74
|
+
config: providerConfig,
|
|
75
|
+
}],
|
|
76
|
+
});
|
|
77
|
+
return manager;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/api/model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { GenerateTextOptions, TokenUsage, ToolCallRecord } from './generateText.js';
|
|
2
|
+
export type StreamPart = {
|
|
3
|
+
type: 'text';
|
|
4
|
+
text: string;
|
|
5
|
+
} | {
|
|
6
|
+
type: 'tool-call';
|
|
7
|
+
toolName: string;
|
|
8
|
+
args: unknown;
|
|
9
|
+
} | {
|
|
10
|
+
type: 'tool-result';
|
|
11
|
+
toolName: string;
|
|
12
|
+
result: unknown;
|
|
13
|
+
} | {
|
|
14
|
+
type: 'error';
|
|
15
|
+
error: Error;
|
|
16
|
+
};
|
|
17
|
+
export interface StreamTextResult {
|
|
18
|
+
textStream: AsyncIterable<string>;
|
|
19
|
+
fullStream: AsyncIterable<StreamPart>;
|
|
20
|
+
text: Promise<string>;
|
|
21
|
+
usage: Promise<TokenUsage>;
|
|
22
|
+
toolCalls: Promise<ToolCallRecord[]>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Stateless streaming text generation. Returns immediately with async iterables.
|
|
26
|
+
*/
|
|
27
|
+
export declare function streamText(opts: GenerateTextOptions): StreamTextResult;
|
|
28
|
+
//# sourceMappingURL=streamText.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streamText.d.ts","sourceRoot":"","sources":["../../src/api/streamText.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAW,UAAU,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAElG,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAAC;AAEpC,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACtC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3B,SAAS,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;CACtC;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,mBAAmB,GAAG,gBAAgB,CA6FtE"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
// packages/agentos/src/api/streamText.ts
|
|
2
|
+
import { parseModelString, resolveProvider, createProviderManager } from './model.js';
|
|
3
|
+
import { adaptTools } from './tool-adapter.js';
|
|
4
|
+
/**
|
|
5
|
+
* Stateless streaming text generation. Returns immediately with async iterables.
|
|
6
|
+
*/
|
|
7
|
+
export function streamText(opts) {
|
|
8
|
+
let resolveText;
|
|
9
|
+
let resolveUsage;
|
|
10
|
+
let resolveToolCalls;
|
|
11
|
+
const textPromise = new Promise(r => { resolveText = r; });
|
|
12
|
+
const usagePromise = new Promise(r => { resolveUsage = r; });
|
|
13
|
+
const toolCallsPromise = new Promise(r => { resolveToolCalls = r; });
|
|
14
|
+
const parts = [];
|
|
15
|
+
let fullText = '';
|
|
16
|
+
const allToolCalls = [];
|
|
17
|
+
async function* runStream() {
|
|
18
|
+
const { providerId, modelId } = parseModelString(opts.model);
|
|
19
|
+
const resolved = resolveProvider(providerId, modelId, { apiKey: opts.apiKey, baseUrl: opts.baseUrl });
|
|
20
|
+
const manager = await createProviderManager(resolved);
|
|
21
|
+
const provider = manager.getProvider(resolved.providerId);
|
|
22
|
+
if (!provider)
|
|
23
|
+
throw new Error(`Provider ${resolved.providerId} not available.`);
|
|
24
|
+
const messages = [];
|
|
25
|
+
if (opts.system)
|
|
26
|
+
messages.push({ role: 'system', content: opts.system });
|
|
27
|
+
if (opts.messages)
|
|
28
|
+
for (const m of opts.messages)
|
|
29
|
+
messages.push({ role: m.role, content: m.content });
|
|
30
|
+
if (opts.prompt)
|
|
31
|
+
messages.push({ role: 'user', content: opts.prompt });
|
|
32
|
+
const tools = adaptTools(opts.tools);
|
|
33
|
+
const toolSchemas = tools.length > 0
|
|
34
|
+
? tools.map(t => ({
|
|
35
|
+
type: 'function',
|
|
36
|
+
function: { name: t.name, description: t.description, parameters: t.inputSchema },
|
|
37
|
+
}))
|
|
38
|
+
: undefined;
|
|
39
|
+
const stream = provider.generateCompletionStream(resolved.modelId, messages, {
|
|
40
|
+
tools: toolSchemas,
|
|
41
|
+
temperature: opts.temperature,
|
|
42
|
+
maxTokens: opts.maxTokens,
|
|
43
|
+
});
|
|
44
|
+
const usage = { promptTokens: 0, completionTokens: 0, totalTokens: 0 };
|
|
45
|
+
for await (const chunk of stream) {
|
|
46
|
+
// ModelCompletionResponse uses responseTextDelta for streaming
|
|
47
|
+
const textDelta = chunk.responseTextDelta
|
|
48
|
+
?? chunk.choices?.[0]?.message?.content
|
|
49
|
+
?? '';
|
|
50
|
+
if (textDelta) {
|
|
51
|
+
fullText += textDelta;
|
|
52
|
+
const part = { type: 'text', text: textDelta };
|
|
53
|
+
parts.push(part);
|
|
54
|
+
yield part;
|
|
55
|
+
}
|
|
56
|
+
if (chunk.usage) {
|
|
57
|
+
const u = chunk.usage;
|
|
58
|
+
usage.promptTokens += u.promptTokens ?? u.prompt_tokens ?? 0;
|
|
59
|
+
usage.completionTokens += u.completionTokens ?? u.completion_tokens ?? 0;
|
|
60
|
+
usage.totalTokens += u.totalTokens ?? u.total_tokens ?? 0;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
resolveText(fullText);
|
|
64
|
+
resolveUsage(usage);
|
|
65
|
+
resolveToolCalls(allToolCalls);
|
|
66
|
+
}
|
|
67
|
+
const fullStreamIterable = runStream();
|
|
68
|
+
const textStreamIterable = {
|
|
69
|
+
[Symbol.asyncIterator]() {
|
|
70
|
+
const inner = fullStreamIterable[Symbol.asyncIterator]();
|
|
71
|
+
return {
|
|
72
|
+
async next() {
|
|
73
|
+
while (true) {
|
|
74
|
+
const { value, done } = await inner.next();
|
|
75
|
+
if (done)
|
|
76
|
+
return { value: undefined, done: true };
|
|
77
|
+
if (value.type === 'text')
|
|
78
|
+
return { value: value.text, done: false };
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
return {
|
|
85
|
+
textStream: textStreamIterable,
|
|
86
|
+
fullStream: fullStreamIterable,
|
|
87
|
+
text: textPromise,
|
|
88
|
+
usage: usagePromise,
|
|
89
|
+
toolCalls: toolCallsPromise,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=streamText.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streamText.js","sourceRoot":"","sources":["../../src/api/streamText.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ITool } from '../core/tools/ITool.js';
|
|
2
|
+
export interface ToolDefinition {
|
|
3
|
+
description?: string;
|
|
4
|
+
parameters?: Record<string, unknown>;
|
|
5
|
+
execute?: (args: any) => Promise<any>;
|
|
6
|
+
}
|
|
7
|
+
export type ToolDefinitionMap = Record<string, ToolDefinition | ITool>;
|
|
8
|
+
/**
|
|
9
|
+
* Adapts Zod schemas, JSON Schema objects, and ITool instances into ITool[].
|
|
10
|
+
*/
|
|
11
|
+
export declare function adaptTools(tools: ToolDefinitionMap | undefined): ITool[];
|
|
12
|
+
//# sourceMappingURL=tool-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-adapter.d.ts","sourceRoot":"","sources":["../../src/api/tool-adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAA+D,MAAM,wBAAwB,CAAC;AAEjH,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CACvC;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,KAAK,CAAC,CAAC;AAEvE;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,iBAAiB,GAAG,SAAS,GAAG,KAAK,EAAE,CAgDxE"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapts Zod schemas, JSON Schema objects, and ITool instances into ITool[].
|
|
3
|
+
*/
|
|
4
|
+
export function adaptTools(tools) {
|
|
5
|
+
if (!tools)
|
|
6
|
+
return [];
|
|
7
|
+
const result = [];
|
|
8
|
+
for (const [name, def] of Object.entries(tools)) {
|
|
9
|
+
// ITool pass-through (has inputSchema + execute as ITool signature)
|
|
10
|
+
if ('inputSchema' in def && 'id' in def) {
|
|
11
|
+
result.push(def);
|
|
12
|
+
continue;
|
|
13
|
+
}
|
|
14
|
+
const td = def;
|
|
15
|
+
let schema;
|
|
16
|
+
if (td.parameters && '_def' in td.parameters) {
|
|
17
|
+
// Zod schema — convert to JSON Schema
|
|
18
|
+
try {
|
|
19
|
+
const { zodToJsonSchema } = require('zod-to-json-schema');
|
|
20
|
+
schema = zodToJsonSchema(td.parameters);
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
// zod-to-json-schema not installed — use basic extraction
|
|
24
|
+
schema = { type: 'object', properties: {} };
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
schema = (td.parameters ?? { type: 'object', properties: {} });
|
|
29
|
+
}
|
|
30
|
+
const executeFn = td.execute ?? (async () => ({ success: true }));
|
|
31
|
+
result.push({
|
|
32
|
+
id: `${name}-v1`,
|
|
33
|
+
name,
|
|
34
|
+
displayName: name.replace(/([A-Z])/g, ' $1').replace(/^./, s => s.toUpperCase()).trim(),
|
|
35
|
+
description: td.description ?? '',
|
|
36
|
+
inputSchema: schema,
|
|
37
|
+
hasSideEffects: false,
|
|
38
|
+
async execute(args, _ctx) {
|
|
39
|
+
try {
|
|
40
|
+
const output = await executeFn(args);
|
|
41
|
+
return { success: true, output };
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
return { success: false, error: err?.message ?? String(err) };
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=tool-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-adapter.js","sourceRoot":"","sources":["../../src/api/tool-adapter.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAoC;IAC7D,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,MAAM,GAAY,EAAE,CAAC;IAE3B,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChD,oEAAoE;QACpE,IAAI,aAAa,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,GAAY,CAAC,CAAC;YAC1B,SAAS;QACX,CAAC;QAED,MAAM,EAAE,GAAG,GAAqB,CAAC;QACjC,IAAI,MAAwB,CAAC;QAE7B,IAAI,EAAE,CAAC,UAAU,IAAI,MAAM,IAAK,EAAE,CAAC,UAAkB,EAAE,CAAC;YACtD,sCAAsC;YACtC,IAAI,CAAC;gBACH,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAQ,CAAC;gBACjE,MAAM,GAAG,eAAe,CAAC,EAAE,CAAC,UAAU,CAAqB,CAAC;YAC9D,CAAC;YAAC,MAAM,CAAC;gBACP,0DAA0D;gBAC1D,MAAM,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;YAC9C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,CAAC,EAAE,CAAC,UAAU,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,CAAqB,CAAC;QACrF,CAAC;QAED,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAElE,MAAM,CAAC,IAAI,CAAC;YACV,EAAE,EAAE,GAAG,IAAI,KAAK;YAChB,IAAI;YACJ,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE;YACvF,WAAW,EAAE,EAAE,CAAC,WAAW,IAAI,EAAE;YACjC,WAAW,EAAE,MAAM;YACnB,cAAc,EAAE,KAAK;YACrB,KAAK,CAAC,OAAO,CAAC,IAAS,EAAE,IAA0B;gBACjD,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;oBACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gBACnC,CAAC;gBAAC,OAAO,GAAQ,EAAE,CAAC;oBAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChE,CAAC;YACH,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -259,6 +259,19 @@ export interface GuardrailConfig {
|
|
|
259
259
|
* @default undefined (no timeout — wait indefinitely)
|
|
260
260
|
*/
|
|
261
261
|
timeoutMs?: number;
|
|
262
|
+
/**
|
|
263
|
+
* Streaming evaluation mode.
|
|
264
|
+
*
|
|
265
|
+
* - `'per-chunk'` — evaluate every TEXT_DELTA individually (default behavior).
|
|
266
|
+
* - `'sentence-buffered'` — accumulate chunks and evaluate at sentence
|
|
267
|
+
* boundaries using {@link SentenceBoundaryBuffer}. The previous sentence
|
|
268
|
+
* is included as overlap context for safety evaluation.
|
|
269
|
+
*
|
|
270
|
+
* Only applies when {@link evaluateStreamingChunks} is `true`.
|
|
271
|
+
*
|
|
272
|
+
* @default 'per-chunk'
|
|
273
|
+
*/
|
|
274
|
+
streamingMode?: 'per-chunk' | 'sentence-buffered';
|
|
262
275
|
}
|
|
263
276
|
/**
|
|
264
277
|
* Contract for implementing custom guardrail logic.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IGuardrailService.d.ts","sourceRoot":"","sources":["../../../src/core/guardrails/IGuardrailService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,oBAAY,eAAe;IACzB;;;OAGG;IACH,KAAK,UAAU;IAEf;;;OAGG;IACH,IAAI,SAAS;IAEb;;;;OAIG;IACH,QAAQ,aAAa;IAErB;;;;OAIG;IACH,KAAK,UAAU;CAChB;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;IAEf,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAElB,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,qCAAqC;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,WAAW,yBAAyB;IACxC,8DAA8D;IAC9D,MAAM,EAAE,eAAe,CAAC;IAExB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,kDAAkD;IAClD,OAAO,EAAE,gBAAgB,CAAC;IAE1B,2CAA2C;IAC3C,KAAK,EAAE,YAAY,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,sBAAsB;IACrC,kDAAkD;IAClD,OAAO,EAAE,gBAAgB,CAAC;IAE1B,qCAAqC;IACrC,KAAK,EAAE,eAAe,CAAC;IAEvB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,WAAW,EAAE,iBAAiB,EAAE,CAAC;CACtD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;;;;;;;OAQG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;;;;;;;;;;OAeG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"IGuardrailService.d.ts","sourceRoot":"","sources":["../../../src/core/guardrails/IGuardrailService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,oBAAY,eAAe;IACzB;;;OAGG;IACH,KAAK,UAAU;IAEf;;;OAGG;IACH,IAAI,SAAS;IAEb;;;;OAIG;IACH,QAAQ,aAAa;IAErB;;;;OAIG;IACH,KAAK,UAAU;CAChB;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;IAEf,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAElB,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,qCAAqC;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,WAAW,yBAAyB;IACxC,8DAA8D;IAC9D,MAAM,EAAE,eAAe,CAAC;IAExB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,kDAAkD;IAClD,OAAO,EAAE,gBAAgB,CAAC;IAE1B,2CAA2C;IAC3C,KAAK,EAAE,YAAY,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,sBAAsB;IACrC,kDAAkD;IAClD,OAAO,EAAE,gBAAgB,CAAC;IAE1B,qCAAqC;IACrC,KAAK,EAAE,eAAe,CAAC;IAEvB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,WAAW,EAAE,iBAAiB,EAAE,CAAC;CACtD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;;;;;;;OAQG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;;;;;;;;;;OAeG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,EAAE,WAAW,GAAG,mBAAmB,CAAC;CACnD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,MAAM,CAAC,EAAE,eAAe,CAAC;IAEzB;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;IAE1F;;;;;;;;;;;;;;OAcG;IACH,cAAc,CAAC,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;CAC7F"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Buffers streaming TEXT_DELTA chunks and flushes at sentence boundaries.
|
|
3
|
+
* Includes the previous sentence as overlap context for safety evaluation.
|
|
4
|
+
*/
|
|
5
|
+
export declare class SentenceBoundaryBuffer {
|
|
6
|
+
private buffer;
|
|
7
|
+
private previousSentence;
|
|
8
|
+
/** Push a chunk. Returns evaluation payload if sentence boundary detected, null otherwise. */
|
|
9
|
+
push(chunk: string): string | null;
|
|
10
|
+
/** Flush remaining buffer content (call on stream end). */
|
|
11
|
+
flush(): string | null;
|
|
12
|
+
/** Reset all state. */
|
|
13
|
+
reset(): void;
|
|
14
|
+
private findBoundary;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=SentenceBoundaryBuffer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SentenceBoundaryBuffer.d.ts","sourceRoot":"","sources":["../../../src/core/guardrails/SentenceBoundaryBuffer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,gBAAgB,CAAM;IAE9B,8FAA8F;IAC9F,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAalC,2DAA2D;IAC3D,KAAK,IAAI,MAAM,GAAG,IAAI;IAUtB,uBAAuB;IACvB,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,YAAY;CAMrB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Buffers streaming TEXT_DELTA chunks and flushes at sentence boundaries.
|
|
3
|
+
* Includes the previous sentence as overlap context for safety evaluation.
|
|
4
|
+
*/
|
|
5
|
+
export class SentenceBoundaryBuffer {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.buffer = '';
|
|
8
|
+
this.previousSentence = '';
|
|
9
|
+
}
|
|
10
|
+
/** Push a chunk. Returns evaluation payload if sentence boundary detected, null otherwise. */
|
|
11
|
+
push(chunk) {
|
|
12
|
+
this.buffer += chunk;
|
|
13
|
+
const idx = this.findBoundary(this.buffer);
|
|
14
|
+
if (idx === -1)
|
|
15
|
+
return null;
|
|
16
|
+
const sentence = this.buffer.slice(0, idx + 1).trim();
|
|
17
|
+
this.buffer = this.buffer.slice(idx + 1);
|
|
18
|
+
const payload = this.previousSentence
|
|
19
|
+
? `${this.previousSentence} ${sentence}`
|
|
20
|
+
: sentence;
|
|
21
|
+
this.previousSentence = sentence;
|
|
22
|
+
return payload;
|
|
23
|
+
}
|
|
24
|
+
/** Flush remaining buffer content (call on stream end). */
|
|
25
|
+
flush() {
|
|
26
|
+
if (!this.buffer.trim())
|
|
27
|
+
return null;
|
|
28
|
+
const result = this.previousSentence
|
|
29
|
+
? `${this.previousSentence} ${this.buffer.trim()}`
|
|
30
|
+
: this.buffer.trim();
|
|
31
|
+
this.buffer = '';
|
|
32
|
+
this.previousSentence = '';
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
/** Reset all state. */
|
|
36
|
+
reset() {
|
|
37
|
+
this.buffer = '';
|
|
38
|
+
this.previousSentence = '';
|
|
39
|
+
}
|
|
40
|
+
findBoundary(text) {
|
|
41
|
+
for (let i = text.length - 1; i >= 0; i--) {
|
|
42
|
+
if ('.?!\n'.includes(text[i]))
|
|
43
|
+
return i;
|
|
44
|
+
}
|
|
45
|
+
return -1;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=SentenceBoundaryBuffer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SentenceBoundaryBuffer.js","sourceRoot":"","sources":["../../../src/core/guardrails/SentenceBoundaryBuffer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,sBAAsB;IAAnC;QACU,WAAM,GAAG,EAAE,CAAC;QACZ,qBAAgB,GAAG,EAAE,CAAC;IAuChC,CAAC;IArCC,8FAA8F;IAC9F,IAAI,CAAC,KAAa;QAChB,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,GAAG,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACtD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB;YACnC,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,IAAI,QAAQ,EAAE;YACxC,CAAC,CAAC,QAAQ,CAAC;QACb,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;QACjC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,2DAA2D;IAC3D,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YAAE,OAAO,IAAI,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB;YAClC,CAAC,CAAC,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE;YAClD,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,uBAAuB;IACvB,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;IAC7B,CAAC;IAEO,YAAY,CAAC,IAAY;QAC/B,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;CACF"}
|
|
@@ -49,5 +49,6 @@ export { GuardrailAction, type GuardrailConfig, type GuardrailContext, type Guar
|
|
|
49
49
|
export { createGuardrailBlockedStream, evaluateInputGuardrails, type GuardrailInputOutcome, type GuardrailOutputOptions, wrapOutputGuardrails, } from './guardrailDispatcher';
|
|
50
50
|
export { ParallelGuardrailDispatcher } from './ParallelGuardrailDispatcher';
|
|
51
51
|
export { type CrossAgentOutputPayload, type ICrossAgentGuardrailService, isCrossAgentGuardrail, shouldObserveAgent, } from './ICrossAgentGuardrailService';
|
|
52
|
+
export { SentenceBoundaryBuffer } from './SentenceBoundaryBuffer';
|
|
52
53
|
export { type CrossAgentEvaluationResult, type CrossAgentGuardrailContext, evaluateCrossAgentGuardrails, filterCrossAgentGuardrails, wrapWithCrossAgentGuardrails, } from './crossAgentGuardrailDispatcher';
|
|
53
54
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/guardrails/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAGH,OAAO,EACL,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,GACvB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAG5E,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EAChC,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAC/B,4BAA4B,EAC5B,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,iCAAiC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/guardrails/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAGH,OAAO,EACL,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,GACvB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAG5E,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EAChC,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAC/B,4BAA4B,EAC5B,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,iCAAiC,CAAC"}
|
|
@@ -53,6 +53,8 @@ export { createGuardrailBlockedStream, evaluateInputGuardrails, wrapOutputGuardr
|
|
|
53
53
|
export { ParallelGuardrailDispatcher } from './ParallelGuardrailDispatcher.js';
|
|
54
54
|
// Cross-agent guardrail interface and types
|
|
55
55
|
export { isCrossAgentGuardrail, shouldObserveAgent, } from './ICrossAgentGuardrailService.js';
|
|
56
|
+
// Sentence boundary buffer for streaming evaluation
|
|
57
|
+
export { SentenceBoundaryBuffer } from './SentenceBoundaryBuffer.js';
|
|
56
58
|
// Cross-agent guardrail dispatcher
|
|
57
59
|
export { evaluateCrossAgentGuardrails, filterCrossAgentGuardrails, wrapWithCrossAgentGuardrails, } from './crossAgentGuardrailDispatcher.js';
|
|
58
60
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/guardrails/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,qCAAqC;AACrC,OAAO,EACL,eAAe,GAOhB,MAAM,qBAAqB,CAAC;AAE7B,iCAAiC;AACjC,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EAGvB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAE/B,0CAA0C;AAC1C,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,4CAA4C;AAC5C,OAAO,EAGL,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AAEvC,mCAAmC;AACnC,OAAO,EAGL,4BAA4B,EAC5B,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,iCAAiC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/guardrails/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,qCAAqC;AACrC,OAAO,EACL,eAAe,GAOhB,MAAM,qBAAqB,CAAC;AAE7B,iCAAiC;AACjC,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EAGvB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAE/B,0CAA0C;AAC1C,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,4CAA4C;AAC5C,OAAO,EAGL,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AAEvC,oDAAoD;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,mCAAmC;AACnC,OAAO,EAGL,4BAA4B,EAC5B,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,iCAAiC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -62,4 +62,13 @@ export * from './memory';
|
|
|
62
62
|
export * from './core/provenance';
|
|
63
63
|
export * from './core/safety';
|
|
64
64
|
export { EXTENSION_SECRET_DEFINITIONS, type ExtensionSecretDefinition, getSecretDefinition, resolveSecretForProvider, } from './config/extensionSecrets.js';
|
|
65
|
+
export { generateText } from './api/generateText.js';
|
|
66
|
+
export type { GenerateTextOptions, GenerateTextResult, Message, ToolCallRecord, TokenUsage } from './api/generateText.js';
|
|
67
|
+
export { streamText } from './api/streamText.js';
|
|
68
|
+
export type { StreamTextResult, StreamPart } from './api/streamText.js';
|
|
69
|
+
export { agent } from './api/agent.js';
|
|
70
|
+
export type { Agent, AgentSession, AgentOptions } from './api/agent.js';
|
|
71
|
+
export { parseModelString, resolveProvider } from './api/model.js';
|
|
72
|
+
export { adaptTools } from './api/tool-adapter.js';
|
|
73
|
+
export type { ToolDefinitionMap } from './api/tool-adapter.js';
|
|
65
74
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,YAAY,EAAE,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC7G,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,iDAAiD,CAAC;AAChE,cAAc,yCAAyC,CAAC;AACxD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,0CAA0C,CAAC;AACzD,cAAc,mCAAmC,CAAC;AAClD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,kCAAkC,CAAC;AACjD,cAAc,mDAAmD,CAAC;AAClE,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,yCAAyC,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AAEvF,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,YAAY,EACV,uBAAuB,EACvB,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,YAAY,EACV,sBAAsB,EACtB,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,aAAa,GACd,MAAM,sCAAsC,CAAC;AAE9C,cAAc,iBAAiB,CAAC;AAEhC,cAAc,aAAa,CAAC;AAE5B,cAAc,mBAAmB,CAAC;AAElC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,sBAAsB,CAAC;AAErC,cAAc,mBAAmB,CAAC;AAElC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,4CAA4C,CAAC;AAC3D,cAAc,mDAAmD,CAAC;AAClE,cAAc,4DAA4D,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8DAA8D,CAAC;AAErG,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAE7B,cAAc,YAAY,CAAC;AAE3B,cAAc,SAAS,CAAC;AAExB,cAAc,UAAU,CAAC;AAEzB,cAAc,UAAU,CAAC;AAEzB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,YAAY,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7F,cAAc,wBAAwB,CAAC;AAEvC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,OAAO,CAAC;AAEtB,cAAc,UAAU,CAAC;AAEzB,cAAc,mBAAmB,CAAC;AAElC,cAAc,eAAe,CAAC;AAE9B,OAAO,EACL,4BAA4B,EAC5B,KAAK,yBAAyB,EAC9B,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -81,4 +81,10 @@ export * from './core/provenance/index.js';
|
|
|
81
81
|
export * from './core/safety/index.js';
|
|
82
82
|
// Extension Secrets Catalog
|
|
83
83
|
export { EXTENSION_SECRET_DEFINITIONS, getSecretDefinition, resolveSecretForProvider, } from './config/extensionSecrets.js';
|
|
84
|
+
// --- High-Level API (AI SDK style) ---
|
|
85
|
+
export { generateText } from './api/generateText.js';
|
|
86
|
+
export { streamText } from './api/streamText.js';
|
|
87
|
+
export { agent } from './api/agent.js';
|
|
88
|
+
export { parseModelString, resolveProvider } from './api/model.js';
|
|
89
|
+
export { adaptTools } from './api/tool-adapter.js';
|
|
84
90
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AAEjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,iCAAiC,CAAC;AAChD,cAAc,iDAAiD,CAAC;AAChE,cAAc,yCAAyC,CAAC;AACxD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,0CAA0C,CAAC;AACzD,cAAc,mCAAmC,CAAC;AAClD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,kCAAkC,CAAC;AACjD,cAAc,mDAAmD,CAAC;AAClE,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,yCAAyC,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AACvF,mCAAmC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAOxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAU5E,kBAAkB;AAClB,cAAc,iBAAiB,CAAC;AAChC,2BAA2B;AAC3B,cAAc,aAAa,CAAC;AAC5B,qDAAqD;AACrD,cAAc,mBAAmB,CAAC;AAClC,yBAAyB;AACzB,cAAc,gBAAgB,CAAC;AAC/B,0BAA0B;AAC1B,cAAc,sBAAsB,CAAC;AACrC,uBAAuB;AACvB,cAAc,mBAAmB,CAAC;AAClC,kBAAkB;AAClB,cAAc,kBAAkB,CAAC;AACjC,oBAAoB;AACpB,cAAc,oBAAoB,CAAC;AACnC,8BAA8B;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,4CAA4C,CAAC;AAC3D,cAAc,mDAAmD,CAAC;AAClE,cAAc,4DAA4D,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8DAA8D,CAAC;AACrG,aAAa;AACb,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,kDAAkD;AAClD,cAAc,YAAY,CAAC;AAC3B,oCAAoC;AACpC,cAAc,SAAS,CAAC;AACxB,iDAAiD;AACjD,cAAc,UAAU,CAAC;AACzB,mCAAmC;AACnC,cAAc,UAAU,CAAC;AACzB,uBAAuB;AACvB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7F,mBAAmB;AACnB,cAAc,wBAAwB,CAAC;AACvC,mBAAmB;AACnB,cAAc,gBAAgB,CAAC;AAC/B,uCAAuC;AACvC,cAAc,OAAO,CAAC;AACtB,0BAA0B;AAC1B,cAAc,UAAU,CAAC;AACzB,mCAAmC;AACnC,cAAc,mBAAmB,CAAC;AAClC,0EAA0E;AAC1E,cAAc,eAAe,CAAC;AAC9B,4BAA4B;AAC5B,OAAO,EACL,4BAA4B,EAE5B,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|