@captra-ai/core 0.0.0-stage → 0.3.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/dist/agent.d.ts +29 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +75 -0
- package/dist/agent.js.map +1 -0
- package/dist/builtins.d.ts +74 -0
- package/dist/builtins.d.ts.map +1 -0
- package/dist/builtins.js +30 -0
- package/dist/builtins.js.map +1 -0
- package/dist/checkpoints.d.ts +32 -0
- package/dist/checkpoints.d.ts.map +1 -0
- package/dist/checkpoints.js +7 -0
- package/dist/checkpoints.js.map +1 -0
- package/dist/core.d.ts +198 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +205 -0
- package/dist/core.js.map +1 -0
- package/dist/evals.d.ts +31 -0
- package/dist/evals.d.ts.map +1 -0
- package/dist/evals.js +18 -0
- package/dist/evals.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/manifest.d.ts +34 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +5 -0
- package/dist/manifest.js.map +1 -0
- package/dist/memory.d.ts +74 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +55 -0
- package/dist/memory.js.map +1 -0
- package/dist/models.d.ts +63 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +54 -0
- package/dist/models.js.map +1 -0
- package/dist/planner.d.ts +15 -0
- package/dist/planner.d.ts.map +1 -0
- package/dist/planner.js +6 -0
- package/dist/planner.js.map +1 -0
- package/dist/protocol.d.ts +45 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +2 -0
- package/dist/protocol.js.map +1 -0
- package/dist/queue.d.ts +80 -0
- package/dist/queue.d.ts.map +1 -0
- package/dist/queue.js +36 -0
- package/dist/queue.js.map +1 -0
- package/dist/stores.d.ts +20 -0
- package/dist/stores.d.ts.map +1 -0
- package/dist/stores.js +14 -0
- package/dist/stores.js.map +1 -0
- package/dist/telemetry.d.ts +66 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +29 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/tools.d.ts +29 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +37 -0
- package/dist/tools.js.map +1 -0
- package/package.json +35 -4
- package/README.md +0 -3
package/dist/agent.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type ZodType } from 'zod';
|
|
2
|
+
import { type Capability, type ExecutionPolicy, type ViewReference } from './core.js';
|
|
3
|
+
import type { MemoryScope } from './memory.js';
|
|
4
|
+
import type { ModelAdapter } from './models.js';
|
|
5
|
+
import type { Tool } from './tools.js';
|
|
6
|
+
export type AgentBudget = {
|
|
7
|
+
maxSteps?: number;
|
|
8
|
+
maxToolCalls?: number;
|
|
9
|
+
maxTokens?: number;
|
|
10
|
+
};
|
|
11
|
+
export type AgentDefinition<Input, Output, Name extends string = string> = {
|
|
12
|
+
name: Name;
|
|
13
|
+
description: string;
|
|
14
|
+
instructions: string;
|
|
15
|
+
input: ZodType<Input>;
|
|
16
|
+
output: ZodType<Output>;
|
|
17
|
+
model: ModelAdapter;
|
|
18
|
+
tools?: readonly Tool<any, any>[];
|
|
19
|
+
memory?: readonly MemoryScope[];
|
|
20
|
+
permissions?: readonly string[];
|
|
21
|
+
approval?: 'never' | 'required';
|
|
22
|
+
idempotent?: boolean;
|
|
23
|
+
policy?: ExecutionPolicy;
|
|
24
|
+
budget?: AgentBudget;
|
|
25
|
+
temperature?: number;
|
|
26
|
+
view: ViewReference<Output> | unknown;
|
|
27
|
+
};
|
|
28
|
+
export declare function agent<const Name extends string, Input, Output>(definition: AgentDefinition<Input, Output, Name>): Capability<Input, Output, Name>;
|
|
29
|
+
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,OAAO,EAAE,MAAM,KAAK,CAAA;AAC/C,OAAO,EAAa,KAAK,UAAU,EAAC,KAAK,eAAe,EAAqB,KAAK,aAAa,EAAE,MAAM,WAAW,CAAA;AAClH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,KAAK,EAAE,YAAY,EAA2C,MAAM,aAAa,CAAA;AACxF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEtC,MAAM,MAAM,WAAW,GAAC;IAAC,QAAQ,CAAC,EAAC,MAAM,CAAC;IAAA,YAAY,CAAC,EAAC,MAAM,CAAC;IAAA,SAAS,CAAC,EAAC,MAAM,CAAA;CAAC,CAAA;AACjF,MAAM,MAAM,eAAe,CAAC,KAAK,EAAC,MAAM,EAAC,IAAI,SAAS,MAAM,GAAC,MAAM,IAAE;IACnE,IAAI,EAAC,IAAI,CAAC;IAAA,WAAW,EAAC,MAAM,CAAC;IAAA,YAAY,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAAA,MAAM,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAAA,KAAK,EAAC,YAAY,CAAA;IAC/G,KAAK,CAAC,EAAC,SAAS,IAAI,CAAC,GAAG,EAAC,GAAG,CAAC,EAAE,CAAC;IAAA,MAAM,CAAC,EAAC,SAAS,WAAW,EAAE,CAAC;IAAA,WAAW,CAAC,EAAC,SAAS,MAAM,EAAE,CAAC;IAAA,QAAQ,CAAC,EAAC,OAAO,GAAC,UAAU,CAAA;IAC1H,UAAU,CAAC,EAAC,OAAO,CAAC;IAAA,MAAM,CAAC,EAAC,eAAe,CAAC;IAAA,MAAM,CAAC,EAAC,WAAW,CAAC;IAAA,WAAW,CAAC,EAAC,MAAM,CAAC;IAAA,IAAI,EAAC,aAAa,CAAC,MAAM,CAAC,GAAC,OAAO,CAAA;CACvH,CAAA;AAED,wBAAgB,KAAK,CAAC,KAAK,CAAC,IAAI,SAAS,MAAM,EAAC,KAAK,EAAC,MAAM,EAAE,UAAU,EAAC,eAAe,CAAC,KAAK,EAAC,MAAM,EAAC,IAAI,CAAC,GAAE,UAAU,CAAC,KAAK,EAAC,MAAM,EAAC,IAAI,CAAC,CAIzI"}
|
package/dist/agent.js
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { toJSONSchema } from 'zod';
|
|
2
|
+
import { capability } from './core.js';
|
|
3
|
+
export function agent(definition) {
|
|
4
|
+
const allowed = new Set((definition.tools ?? []).map(tool => tool.name)), tools = (definition.tools ?? []).map(tool => ({ name: tool.name, description: tool.description, inputSchema: toJSONSchema(tool.input) }));
|
|
5
|
+
return capability({ name: definition.name, description: definition.description, input: definition.input, output: definition.output, memory: definition.memory, permissions: definition.permissions, approval: definition.approval, idempotent: definition.idempotent, policy: definition.policy, tools: definition.tools, mode: 'agent', view: definition.view,
|
|
6
|
+
run: async (input, context) => runAgent(definition, input, context, allowed, tools) });
|
|
7
|
+
}
|
|
8
|
+
async function runAgent(definition, input, context, allowed, tools) {
|
|
9
|
+
const maxSteps = definition.budget?.maxSteps ?? 8, maxToolCalls = definition.budget?.maxToolCalls ?? 16, maxTokens = definition.budget?.maxTokens ?? 50_000;
|
|
10
|
+
const memory = context.memories.length ? `\nRelevant scoped memory:\n${context.memories.map(item => `- [${item.type}] ${item.content}`).join('\n')}` : '';
|
|
11
|
+
const initial = { version: 1, step: 1, messages: [{ role: 'system', content: `${definition.instructions}${memory}\nWhen finished, return only JSON matching the required output schema: ${JSON.stringify(toJSONSchema(definition.output))}` }, { role: 'user', content: JSON.stringify(input) }], toolCalls: 0, tokens: 0 };
|
|
12
|
+
const key = `agent/${definition.name}/state`, restored = await context.checkpoints.load(key), state = isAgentState(restored?.state) ? restored.state : initial;
|
|
13
|
+
for (;;) {
|
|
14
|
+
if (state.pending) {
|
|
15
|
+
for (let index = state.pending.next; index < state.pending.calls.length; index++) {
|
|
16
|
+
const call = state.pending.calls[index];
|
|
17
|
+
if (!allowed.has(call.name))
|
|
18
|
+
throw new Error(`Agent attempted unavailable tool: ${call.name}`);
|
|
19
|
+
await context.emit({ type: 'agent.tool.selected', capability: definition.name, detail: call.name, data: { step: state.step, toolCallId: call.id } });
|
|
20
|
+
const value = await context.tools.call(call.name, call.input);
|
|
21
|
+
state.toolCalls++;
|
|
22
|
+
state.messages.push({ role: 'tool', name: call.name, toolCallId: call.id, content: JSON.stringify(value) });
|
|
23
|
+
state.pending.next = index + 1;
|
|
24
|
+
await context.checkpoints.save(key, state);
|
|
25
|
+
}
|
|
26
|
+
state.pending = undefined;
|
|
27
|
+
state.step++;
|
|
28
|
+
await context.checkpoints.save(key, state);
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
if (state.step > maxSteps)
|
|
32
|
+
throw new Error(`Agent step budget exceeded (${maxSteps})`);
|
|
33
|
+
await context.emit({ type: 'agent.step', capability: definition.name, detail: `Agent step ${state.step}`, data: { step: state.step, maxSteps, toolCalls: state.toolCalls, tokens: state.tokens } });
|
|
34
|
+
const modelSpan = context.telemetry.startSpan('captra.model', { runId: context.runId, capability: definition.name, step: state.step }), modelStarted = Date.now();
|
|
35
|
+
let response;
|
|
36
|
+
try {
|
|
37
|
+
response = await definition.model.generate({ messages: state.messages, tools, signal: context.signal, temperature: definition.temperature, providerState: state.providerState });
|
|
38
|
+
modelSpan.setAttribute('model', response.model);
|
|
39
|
+
modelSpan.setAttribute('inputTokens', response.usage?.inputTokens);
|
|
40
|
+
modelSpan.setAttribute('outputTokens', response.usage?.outputTokens);
|
|
41
|
+
modelSpan.end();
|
|
42
|
+
context.telemetry.histogram?.('captra.model.duration', Date.now() - modelStarted, { capability: definition.name, model: response.model });
|
|
43
|
+
context.telemetry.counter?.('captra.model.tokens', (response.usage?.inputTokens ?? 0) + (response.usage?.outputTokens ?? 0), { capability: definition.name, model: response.model });
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
modelSpan.end(error);
|
|
47
|
+
context.telemetry.counter?.('captra.model.failures', 1, { capability: definition.name });
|
|
48
|
+
throw error;
|
|
49
|
+
}
|
|
50
|
+
state.providerState = response.providerState;
|
|
51
|
+
state.tokens += (response.usage?.inputTokens ?? 0) + (response.usage?.outputTokens ?? 0);
|
|
52
|
+
if (state.tokens > maxTokens)
|
|
53
|
+
throw new Error(`Agent token budget exceeded (${maxTokens})`);
|
|
54
|
+
if (response.toolCalls?.length) {
|
|
55
|
+
if (state.toolCalls + response.toolCalls.length > maxToolCalls)
|
|
56
|
+
throw new Error(`Agent tool-call budget exceeded (${maxToolCalls})`);
|
|
57
|
+
state.messages.push({ role: 'assistant', content: response.text, toolCalls: response.toolCalls });
|
|
58
|
+
state.pending = { calls: [...response.toolCalls], next: 0 };
|
|
59
|
+
await context.checkpoints.save(key, state);
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
let candidate;
|
|
63
|
+
try {
|
|
64
|
+
candidate = JSON.parse(response.text);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
throw new Error('Agent returned invalid JSON output');
|
|
68
|
+
}
|
|
69
|
+
const output = definition.output.parse(candidate);
|
|
70
|
+
await context.emit({ type: 'agent.completed', capability: definition.name, detail: `Completed in ${state.step} steps`, data: { steps: state.step, toolCalls: state.toolCalls, tokens: state.tokens, model: response.model } });
|
|
71
|
+
return output;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
function isAgentState(value) { const state = value; return !!state && state.version === 1 && typeof state.step === 'number' && Array.isArray(state.messages) && typeof state.toolCalls === 'number' && typeof state.tokens === 'number'; }
|
|
75
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
export declare const rememberTool: import("./tools.js").Tool<{
|
|
2
|
+
scope: "user" | "organization" | "project" | "session" | "task";
|
|
3
|
+
ownerId: string;
|
|
4
|
+
type: "fact" | "preference" | "decision" | "working-state";
|
|
5
|
+
content: string;
|
|
6
|
+
confidence: number;
|
|
7
|
+
}, {
|
|
8
|
+
id: string;
|
|
9
|
+
saved: true;
|
|
10
|
+
}>;
|
|
11
|
+
export declare const recallTool: import("./tools.js").Tool<{
|
|
12
|
+
scopes: ("user" | "organization" | "project" | "session" | "task")[];
|
|
13
|
+
limit: number;
|
|
14
|
+
query?: string | undefined;
|
|
15
|
+
}, {
|
|
16
|
+
items: {
|
|
17
|
+
id: string;
|
|
18
|
+
scope: string;
|
|
19
|
+
type: string;
|
|
20
|
+
content: string;
|
|
21
|
+
confidence: number;
|
|
22
|
+
}[];
|
|
23
|
+
}>;
|
|
24
|
+
export declare const forgetTool: import("./tools.js").Tool<{
|
|
25
|
+
id: string;
|
|
26
|
+
}, {
|
|
27
|
+
forgotten: boolean;
|
|
28
|
+
}>;
|
|
29
|
+
export declare const fetchJsonTool: import("./tools.js").Tool<{
|
|
30
|
+
url: string;
|
|
31
|
+
method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
|
|
32
|
+
headers: Record<string, string>;
|
|
33
|
+
body?: unknown;
|
|
34
|
+
}, {
|
|
35
|
+
status: number;
|
|
36
|
+
ok: boolean;
|
|
37
|
+
data: unknown;
|
|
38
|
+
}>;
|
|
39
|
+
export declare const builtinTools: readonly (import("./tools.js").Tool<{
|
|
40
|
+
scope: "user" | "organization" | "project" | "session" | "task";
|
|
41
|
+
ownerId: string;
|
|
42
|
+
type: "fact" | "preference" | "decision" | "working-state";
|
|
43
|
+
content: string;
|
|
44
|
+
confidence: number;
|
|
45
|
+
}, {
|
|
46
|
+
id: string;
|
|
47
|
+
saved: true;
|
|
48
|
+
}> | import("./tools.js").Tool<{
|
|
49
|
+
scopes: ("user" | "organization" | "project" | "session" | "task")[];
|
|
50
|
+
limit: number;
|
|
51
|
+
query?: string | undefined;
|
|
52
|
+
}, {
|
|
53
|
+
items: {
|
|
54
|
+
id: string;
|
|
55
|
+
scope: string;
|
|
56
|
+
type: string;
|
|
57
|
+
content: string;
|
|
58
|
+
confidence: number;
|
|
59
|
+
}[];
|
|
60
|
+
}> | import("./tools.js").Tool<{
|
|
61
|
+
id: string;
|
|
62
|
+
}, {
|
|
63
|
+
forgotten: boolean;
|
|
64
|
+
}> | import("./tools.js").Tool<{
|
|
65
|
+
url: string;
|
|
66
|
+
method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
|
|
67
|
+
headers: Record<string, string>;
|
|
68
|
+
body?: unknown;
|
|
69
|
+
}, {
|
|
70
|
+
status: number;
|
|
71
|
+
ok: boolean;
|
|
72
|
+
data: unknown;
|
|
73
|
+
}>)[];
|
|
74
|
+
//# sourceMappingURL=builtins.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../src/builtins.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY;;;;;;;;;EAKvB,CAAA;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;;;EAKrB,CAAA;AAEF,eAAO,MAAM,UAAU;;;;EAIrB,CAAA;AAEF,eAAO,MAAM,aAAa;;;;;;;;;EAKxB,CAAA;AAEF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAAkE,CAAA"}
|
package/dist/builtins.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { defineTool } from './tools.js';
|
|
3
|
+
export const rememberTool = defineTool({
|
|
4
|
+
name: 'memory.remember', description: 'Save a fact, preference, decision, or working state',
|
|
5
|
+
input: z.object({ scope: z.enum(['organization', 'user', 'project', 'session', 'task']), ownerId: z.string(), type: z.enum(['fact', 'preference', 'decision', 'working-state']), content: z.string().min(1), confidence: z.number().min(0).max(1).default(1) }),
|
|
6
|
+
output: z.object({ id: z.string(), saved: z.literal(true) }),
|
|
7
|
+
execute: async (input, context) => { const record = await context.memory.remember({ ...input, tenantId: context.tenantId }); return { id: record.id, saved: true }; }
|
|
8
|
+
});
|
|
9
|
+
export const recallTool = defineTool({
|
|
10
|
+
name: 'memory.recall', description: 'Recall relevant memories available to the current identity',
|
|
11
|
+
input: z.object({ scopes: z.array(z.enum(['organization', 'user', 'project', 'session', 'task'])), query: z.string().optional(), limit: z.number().int().positive().max(100).default(20) }),
|
|
12
|
+
output: z.object({ items: z.array(z.object({ id: z.string(), scope: z.string(), type: z.string(), content: z.string(), confidence: z.number() })) }),
|
|
13
|
+
execute: async ({ scopes, query, limit }, context) => { const records = await context.memory.recall(scopes, context, { query, limit }); return { items: records.map(({ id, scope, type, content, confidence }) => ({ id, scope, type, content, confidence })) }; }
|
|
14
|
+
});
|
|
15
|
+
export const forgetTool = defineTool({
|
|
16
|
+
name: 'memory.forget', description: 'Delete a memory available to the current identity',
|
|
17
|
+
input: z.object({ id: z.string() }), output: z.object({ forgotten: z.boolean() }),
|
|
18
|
+
execute: async ({ id }, context) => ({ forgotten: context.memory.forget ? await context.memory.forget(id, context) : false })
|
|
19
|
+
});
|
|
20
|
+
export const fetchJsonTool = defineTool({
|
|
21
|
+
name: 'http.fetchJson', description: 'Call an HTTP JSON endpoint', permissions: ['network:http'],
|
|
22
|
+
input: z.object({ url: z.url(), method: z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE']).default('GET'), headers: z.record(z.string(), z.string()).default({}), body: z.unknown().optional() }),
|
|
23
|
+
output: z.object({ status: z.number(), ok: z.boolean(), data: z.unknown() }),
|
|
24
|
+
execute: async ({ url, method, headers, body }, context) => { const response = await fetch(url, { method, headers: { accept: 'application/json', ...(body === undefined ? {} : { 'content-type': 'application/json' }), ...headers }, body: body === undefined ? undefined : JSON.stringify(body), signal: context.signal }); const text = await response.text(); let data = text; try {
|
|
25
|
+
data = text ? JSON.parse(text) : null;
|
|
26
|
+
}
|
|
27
|
+
catch { } return { status: response.status, ok: response.ok, data }; }
|
|
28
|
+
});
|
|
29
|
+
export const builtinTools = Object.freeze([rememberTool, recallTool, forgetTool, fetchJsonTool]);
|
|
30
|
+
//# sourceMappingURL=builtins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtins.js","sourceRoot":"","sources":["../src/builtins.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export type CheckpointRecord = {
|
|
2
|
+
id: string;
|
|
3
|
+
runId: string;
|
|
4
|
+
key: string;
|
|
5
|
+
sequence: number;
|
|
6
|
+
state: unknown;
|
|
7
|
+
createdAt: number;
|
|
8
|
+
};
|
|
9
|
+
export interface CheckpointStore {
|
|
10
|
+
save(runId: string, key: string, state: unknown): Promise<CheckpointRecord>;
|
|
11
|
+
load(runId: string, key: string): Promise<CheckpointRecord | undefined>;
|
|
12
|
+
list(runId: string): Promise<CheckpointRecord[]>;
|
|
13
|
+
}
|
|
14
|
+
export declare class InMemoryCheckpointStore implements CheckpointStore {
|
|
15
|
+
#private;
|
|
16
|
+
save(runId: string, key: string, state: unknown): Promise<{
|
|
17
|
+
id: `${string}-${string}-${string}-${string}-${string}`;
|
|
18
|
+
runId: string;
|
|
19
|
+
key: string;
|
|
20
|
+
sequence: number;
|
|
21
|
+
state: unknown;
|
|
22
|
+
createdAt: number;
|
|
23
|
+
}>;
|
|
24
|
+
load(runId: string, key: string): Promise<CheckpointRecord | undefined>;
|
|
25
|
+
list(runId: string): Promise<CheckpointRecord[]>;
|
|
26
|
+
}
|
|
27
|
+
export type RunCheckpoints = {
|
|
28
|
+
save(key: string, state: unknown): Promise<CheckpointRecord>;
|
|
29
|
+
load(key: string): Promise<CheckpointRecord | undefined>;
|
|
30
|
+
list(): Promise<CheckpointRecord[]>;
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=checkpoints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoints.d.ts","sourceRoot":"","sources":["../src/checkpoints.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAC;IAAC,EAAE,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,MAAM,CAAC;IAAA,GAAG,EAAC,MAAM,CAAC;IAAA,QAAQ,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,OAAO,CAAC;IAAA,SAAS,EAAC,MAAM,CAAA;CAAC,CAAA;AAC/G,MAAM,WAAW,eAAe;IAAC,IAAI,CAAC,KAAK,EAAC,MAAM,EAAC,GAAG,EAAC,MAAM,EAAC,KAAK,EAAC,OAAO,GAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAAA,IAAI,CAAC,KAAK,EAAC,MAAM,EAAC,GAAG,EAAC,MAAM,GAAE,OAAO,CAAC,gBAAgB,GAAC,SAAS,CAAC,CAAC;IAAA,IAAI,CAAC,KAAK,EAAC,MAAM,GAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;CAAC;AACxN,qBAAa,uBAAwB,YAAW,eAAe;;IAEvD,IAAI,CAAC,KAAK,EAAC,MAAM,EAAC,GAAG,EAAC,MAAM,EAAC,KAAK,EAAC,OAAO;;;;;;;;IAC1C,IAAI,CAAC,KAAK,EAAC,MAAM,EAAC,GAAG,EAAC,MAAM;IAC5B,IAAI,CAAC,KAAK,EAAC,MAAM;CACxB;AACD,MAAM,MAAM,cAAc,GAAC;IAAC,IAAI,CAAC,GAAG,EAAC,MAAM,EAAC,KAAK,EAAC,OAAO,GAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAAA,IAAI,CAAC,GAAG,EAAC,MAAM,GAAE,OAAO,CAAC,gBAAgB,GAAC,SAAS,CAAC,CAAC;IAAA,IAAI,IAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAA;CAAC,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export class InMemoryCheckpointStore {
|
|
2
|
+
#records = new Map();
|
|
3
|
+
async save(runId, key, state) { const list = this.#records.get(runId) ?? [], record = { id: crypto.randomUUID(), runId, key, sequence: list.length + 1, state: structuredClone(state), createdAt: Date.now() }; list.push(record); this.#records.set(runId, list); return record; }
|
|
4
|
+
async load(runId, key) { return [...(this.#records.get(runId) ?? [])].reverse().find(record => record.key === key); }
|
|
5
|
+
async list(runId) { return [...(this.#records.get(runId) ?? [])]; }
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=checkpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoints.js","sourceRoot":"","sources":["../src/checkpoints.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,uBAAuB;IACzB,QAAQ,GAAC,IAAI,GAAG,EAA6B,CAAA;IACtD,KAAK,CAAC,IAAI,CAAC,KAAY,EAAC,GAAU,EAAC,KAAa,IAAE,MAAM,IAAI,GAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAE,EAAE,EAAC,MAAM,GAAC,EAAC,EAAE,EAAC,MAAM,CAAC,UAAU,EAAE,EAAC,KAAK,EAAC,GAAG,EAAC,QAAQ,EAAC,IAAI,CAAC,MAAM,GAAC,CAAC,EAAC,KAAK,EAAC,eAAe,CAAC,KAAK,CAAC,EAAC,SAAS,EAAC,IAAI,CAAC,GAAG,EAAE,EAAC,CAAC,CAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAC,IAAI,CAAC,CAAC,CAAA,OAAO,MAAM,CAAA,CAAA,CAAC;IAC3Q,KAAK,CAAC,IAAI,CAAC,KAAY,EAAC,GAAU,IAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAA,EAAE,CAAA,MAAM,CAAC,GAAG,KAAG,GAAG,CAAC,CAAA,CAAA,CAAC;IACxH,KAAK,CAAC,IAAI,CAAC,KAAY,IAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAE,EAAE,CAAC,CAAC,CAAA,CAAA,CAAC;CACrE"}
|
package/dist/core.d.ts
ADDED
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import type { ZodType } from 'zod';
|
|
2
|
+
import { MemoryStore, type MemoryAdapter, type MemoryRecord, type MemoryScope } from './memory.js';
|
|
3
|
+
import { type RunStore } from './stores.js';
|
|
4
|
+
import type { CaptraEvent, RunRecord } from './protocol.js';
|
|
5
|
+
import { type Tool, type ToolRunner } from './tools.js';
|
|
6
|
+
import type { WorkQueue } from './queue.js';
|
|
7
|
+
import { type CheckpointStore, type RunCheckpoints } from './checkpoints.js';
|
|
8
|
+
import { type TelemetryAdapter } from './telemetry.js';
|
|
9
|
+
export type ApprovalRequest = {
|
|
10
|
+
capability: string;
|
|
11
|
+
summary: string;
|
|
12
|
+
input: unknown;
|
|
13
|
+
};
|
|
14
|
+
export type ExecutionIdentity = {
|
|
15
|
+
tenantId: string;
|
|
16
|
+
userId: string;
|
|
17
|
+
projectId: string;
|
|
18
|
+
sessionId?: string;
|
|
19
|
+
};
|
|
20
|
+
export type RuntimeContext = ExecutionIdentity & {
|
|
21
|
+
runId: string;
|
|
22
|
+
memory: MemoryAdapter;
|
|
23
|
+
memories: readonly MemoryRecord[];
|
|
24
|
+
tools: ToolRunner;
|
|
25
|
+
checkpoints: RunCheckpoints;
|
|
26
|
+
telemetry: TelemetryAdapter;
|
|
27
|
+
signal?: AbortSignal;
|
|
28
|
+
emit: (event: Omit<CaptraEvent, 'id' | 'protocol' | 'runId' | 'sequence' | 'at'>) => Promise<void>;
|
|
29
|
+
};
|
|
30
|
+
export type CapabilityViewProps<Output> = {
|
|
31
|
+
value: Output;
|
|
32
|
+
capability: string;
|
|
33
|
+
};
|
|
34
|
+
export type ViewReference<Output = unknown> = {
|
|
35
|
+
readonly name: string;
|
|
36
|
+
readonly component?: unknown;
|
|
37
|
+
readonly __output?: Output;
|
|
38
|
+
};
|
|
39
|
+
export declare function view<Output>(name: string, component?: unknown): ViewReference<Output>;
|
|
40
|
+
export type ExecutionPolicy = {
|
|
41
|
+
timeoutMs?: number;
|
|
42
|
+
retries?: number;
|
|
43
|
+
retryDelayMs?: number;
|
|
44
|
+
};
|
|
45
|
+
export type StateReference = string | readonly unknown[];
|
|
46
|
+
export type CapabilityState = {
|
|
47
|
+
readonly reads: readonly StateReference[];
|
|
48
|
+
readonly writes: readonly StateReference[];
|
|
49
|
+
readonly invalidates: readonly StateReference[];
|
|
50
|
+
};
|
|
51
|
+
export type Capability<Input, Output, Name extends string = string> = {
|
|
52
|
+
readonly kind: 'capability';
|
|
53
|
+
readonly mode: 'function' | 'agent';
|
|
54
|
+
readonly name: Name;
|
|
55
|
+
readonly description: string;
|
|
56
|
+
readonly input: ZodType<Input>;
|
|
57
|
+
readonly output: ZodType<Output>;
|
|
58
|
+
readonly scopes: readonly MemoryScope[];
|
|
59
|
+
readonly state: CapabilityState;
|
|
60
|
+
readonly permissions: readonly string[];
|
|
61
|
+
readonly approval: 'never' | 'required';
|
|
62
|
+
readonly idempotent: boolean;
|
|
63
|
+
readonly policy: ExecutionPolicy;
|
|
64
|
+
readonly tools: readonly Tool<any, any>[];
|
|
65
|
+
readonly execute: (input: Input, context: RuntimeContext) => Promise<Output>;
|
|
66
|
+
readonly view: ViewReference<Output>;
|
|
67
|
+
};
|
|
68
|
+
export declare function defineCapability<const Name extends string, Input, Output>(definition: Omit<Capability<Input, Output, Name>, 'kind' | 'mode' | 'permissions' | 'idempotent' | 'policy' | 'tools' | 'view' | 'state'> & {
|
|
69
|
+
mode?: 'function' | 'agent';
|
|
70
|
+
state?: Partial<CapabilityState>;
|
|
71
|
+
permissions?: readonly string[];
|
|
72
|
+
idempotent?: boolean;
|
|
73
|
+
policy?: ExecutionPolicy;
|
|
74
|
+
tools?: readonly Tool<any, any>[];
|
|
75
|
+
view: ViewReference<Output> | unknown;
|
|
76
|
+
}): Capability<Input, Output, Name>;
|
|
77
|
+
export declare function capability<const Name extends string, Input, Output>(definition: {
|
|
78
|
+
name: Name;
|
|
79
|
+
description: string;
|
|
80
|
+
input: ZodType<Input>;
|
|
81
|
+
output: ZodType<Output>;
|
|
82
|
+
memory?: readonly MemoryScope[];
|
|
83
|
+
state?: Partial<CapabilityState>;
|
|
84
|
+
permissions?: readonly string[];
|
|
85
|
+
approval?: 'never' | 'required';
|
|
86
|
+
idempotent?: boolean;
|
|
87
|
+
policy?: ExecutionPolicy;
|
|
88
|
+
tools?: readonly Tool<any, any>[];
|
|
89
|
+
mode?: 'function' | 'agent';
|
|
90
|
+
run: (input: Input, context: RuntimeContext) => Promise<Output>;
|
|
91
|
+
view: ViewReference<Output> | unknown;
|
|
92
|
+
}): Capability<Input, Output, Name>;
|
|
93
|
+
export type Hook = {
|
|
94
|
+
name: string;
|
|
95
|
+
beforeCapability?: (name: string, input: unknown, context: RuntimeContext) => unknown | Promise<unknown>;
|
|
96
|
+
afterCapability?: (name: string, output: unknown, context: RuntimeContext) => unknown | Promise<unknown>;
|
|
97
|
+
afterMemoryRecall?: (records: readonly MemoryRecord[], context: RuntimeContext) => readonly MemoryRecord[] | Promise<readonly MemoryRecord[]>;
|
|
98
|
+
beforeTool?: (name: string, input: unknown, context: RuntimeContext) => unknown | Promise<unknown>;
|
|
99
|
+
afterTool?: (name: string, output: unknown, context: RuntimeContext) => unknown | Promise<unknown>;
|
|
100
|
+
beforeApproval?: (approval: {
|
|
101
|
+
run: RunRecord;
|
|
102
|
+
decision: 'approved' | 'rejected';
|
|
103
|
+
}) => void | Promise<void>;
|
|
104
|
+
onEvent?: (event: CaptraEvent, context: RuntimeContext) => void | Promise<void>;
|
|
105
|
+
onError?: (name: string, error: unknown, context: RuntimeContext) => void | Promise<void>;
|
|
106
|
+
onToolError?: (name: string, error: unknown, context: RuntimeContext) => void | Promise<void>;
|
|
107
|
+
};
|
|
108
|
+
export declare function defineHook(hook: Hook): Hook;
|
|
109
|
+
export type CaptraPlugin = {
|
|
110
|
+
readonly name: string;
|
|
111
|
+
readonly version: string;
|
|
112
|
+
readonly tools: readonly Tool<any, any>[];
|
|
113
|
+
readonly hooks: readonly Hook[];
|
|
114
|
+
};
|
|
115
|
+
export declare function definePlugin(definition: {
|
|
116
|
+
name: string;
|
|
117
|
+
version?: string;
|
|
118
|
+
tools?: readonly Tool<any, any>[];
|
|
119
|
+
hooks?: readonly Hook[];
|
|
120
|
+
}): CaptraPlugin;
|
|
121
|
+
export type Surface = {
|
|
122
|
+
readonly mode: 'capability-views';
|
|
123
|
+
};
|
|
124
|
+
export declare function capabilityViews(): Surface;
|
|
125
|
+
export type AgentApp<C extends readonly Capability<any, any, any>[] = readonly Capability<any, any, any>[]> = {
|
|
126
|
+
name: string;
|
|
127
|
+
version: string;
|
|
128
|
+
scopes: readonly MemoryScope[];
|
|
129
|
+
capabilities: C;
|
|
130
|
+
tools: readonly Tool<unknown, unknown>[];
|
|
131
|
+
surface: Surface;
|
|
132
|
+
hooks: readonly Hook[];
|
|
133
|
+
plugins: readonly CaptraPlugin[];
|
|
134
|
+
};
|
|
135
|
+
export type CapabilityName<App extends AgentApp> = App['capabilities'][number]['name'];
|
|
136
|
+
export type CapabilityByName<App extends AgentApp, Name extends CapabilityName<App>> = Extract<App['capabilities'][number], {
|
|
137
|
+
name: Name;
|
|
138
|
+
}>;
|
|
139
|
+
export type CapabilityInput<App extends AgentApp, Name extends CapabilityName<App>> = CapabilityByName<App, Name> extends Capability<infer Input, any, any> ? Input : never;
|
|
140
|
+
export type CapabilityOutput<App extends AgentApp, Name extends CapabilityName<App>> = CapabilityByName<App, Name> extends Capability<any, infer Output, any> ? Output : never;
|
|
141
|
+
export declare function defineApp<const C extends readonly Capability<any, any, any>[]>(definition: {
|
|
142
|
+
name: string;
|
|
143
|
+
version?: string;
|
|
144
|
+
scopes: readonly MemoryScope[];
|
|
145
|
+
capabilities: C;
|
|
146
|
+
tools?: readonly Tool<any, any>[];
|
|
147
|
+
surface: Surface;
|
|
148
|
+
hooks?: readonly Hook[];
|
|
149
|
+
plugins?: readonly CaptraPlugin[];
|
|
150
|
+
}): AgentApp<C>;
|
|
151
|
+
export type RunRequest = {
|
|
152
|
+
capability: string;
|
|
153
|
+
input: unknown;
|
|
154
|
+
identity: ExecutionIdentity;
|
|
155
|
+
idempotencyKey?: string;
|
|
156
|
+
onEvent?: (event: CaptraEvent) => void | Promise<void>;
|
|
157
|
+
};
|
|
158
|
+
export type CapabilityResult = {
|
|
159
|
+
run: RunRecord;
|
|
160
|
+
capability: Capability<unknown, unknown>;
|
|
161
|
+
value: unknown;
|
|
162
|
+
trace: CaptraEvent[];
|
|
163
|
+
};
|
|
164
|
+
export type RuntimeOptions = {
|
|
165
|
+
memory?: MemoryAdapter;
|
|
166
|
+
runs?: RunStore;
|
|
167
|
+
checkpoints?: CheckpointStore;
|
|
168
|
+
telemetry?: TelemetryAdapter;
|
|
169
|
+
authorize?: (identity: ExecutionIdentity, permissions: readonly string[]) => Promise<boolean> | boolean;
|
|
170
|
+
signal?: AbortSignal;
|
|
171
|
+
};
|
|
172
|
+
export declare function createRuntime(app: AgentApp, options?: RuntimeOptions | MemoryStore): {
|
|
173
|
+
app: AgentApp<readonly Capability<any, any, any>[]>;
|
|
174
|
+
memory: MemoryAdapter;
|
|
175
|
+
runs: RunStore;
|
|
176
|
+
checkpoints: CheckpointStore;
|
|
177
|
+
telemetry: TelemetryAdapter;
|
|
178
|
+
execute: (request: RunRequest) => Promise<CapabilityResult>;
|
|
179
|
+
enqueue: (request: RunRequest, queue: WorkQueue, options?: {
|
|
180
|
+
maxAttempts?: number;
|
|
181
|
+
availableAt?: number;
|
|
182
|
+
}) => Promise<RunRecord>;
|
|
183
|
+
resume: (runId: string) => Promise<CapabilityResult>;
|
|
184
|
+
replay: (runId: string) => Promise<{
|
|
185
|
+
run: RunRecord;
|
|
186
|
+
events: CaptraEvent[];
|
|
187
|
+
checkpoints: import("./checkpoints.js").CheckpointRecord[];
|
|
188
|
+
}>;
|
|
189
|
+
approve: (runId: string, decision: "approved" | "rejected") => Promise<CapabilityResult>;
|
|
190
|
+
cancel: (runId: string) => Promise<RunRecord | undefined>;
|
|
191
|
+
run(name: string, input: unknown, legacy: Omit<ExecutionIdentity, "tenantId"> & {
|
|
192
|
+
tenantId?: string;
|
|
193
|
+
approve: (request: ApprovalRequest) => Promise<boolean>;
|
|
194
|
+
}): Promise<CapabilityResult>;
|
|
195
|
+
};
|
|
196
|
+
export type Runtime = ReturnType<typeof createRuntime>;
|
|
197
|
+
export type RuntimeEvent = CaptraEvent;
|
|
198
|
+
//# sourceMappingURL=core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
|