@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.
Files changed (62) hide show
  1. package/dist/agent.d.ts +29 -0
  2. package/dist/agent.d.ts.map +1 -0
  3. package/dist/agent.js +75 -0
  4. package/dist/agent.js.map +1 -0
  5. package/dist/builtins.d.ts +74 -0
  6. package/dist/builtins.d.ts.map +1 -0
  7. package/dist/builtins.js +30 -0
  8. package/dist/builtins.js.map +1 -0
  9. package/dist/checkpoints.d.ts +32 -0
  10. package/dist/checkpoints.d.ts.map +1 -0
  11. package/dist/checkpoints.js +7 -0
  12. package/dist/checkpoints.js.map +1 -0
  13. package/dist/core.d.ts +198 -0
  14. package/dist/core.d.ts.map +1 -0
  15. package/dist/core.js +205 -0
  16. package/dist/core.js.map +1 -0
  17. package/dist/evals.d.ts +31 -0
  18. package/dist/evals.d.ts.map +1 -0
  19. package/dist/evals.js +18 -0
  20. package/dist/evals.js.map +1 -0
  21. package/dist/index.d.ts +15 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +15 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/manifest.d.ts +34 -0
  26. package/dist/manifest.d.ts.map +1 -0
  27. package/dist/manifest.js +5 -0
  28. package/dist/manifest.js.map +1 -0
  29. package/dist/memory.d.ts +74 -0
  30. package/dist/memory.d.ts.map +1 -0
  31. package/dist/memory.js +55 -0
  32. package/dist/memory.js.map +1 -0
  33. package/dist/models.d.ts +63 -0
  34. package/dist/models.d.ts.map +1 -0
  35. package/dist/models.js +54 -0
  36. package/dist/models.js.map +1 -0
  37. package/dist/planner.d.ts +15 -0
  38. package/dist/planner.d.ts.map +1 -0
  39. package/dist/planner.js +6 -0
  40. package/dist/planner.js.map +1 -0
  41. package/dist/protocol.d.ts +45 -0
  42. package/dist/protocol.d.ts.map +1 -0
  43. package/dist/protocol.js +2 -0
  44. package/dist/protocol.js.map +1 -0
  45. package/dist/queue.d.ts +80 -0
  46. package/dist/queue.d.ts.map +1 -0
  47. package/dist/queue.js +36 -0
  48. package/dist/queue.js.map +1 -0
  49. package/dist/stores.d.ts +20 -0
  50. package/dist/stores.d.ts.map +1 -0
  51. package/dist/stores.js +14 -0
  52. package/dist/stores.js.map +1 -0
  53. package/dist/telemetry.d.ts +66 -0
  54. package/dist/telemetry.d.ts.map +1 -0
  55. package/dist/telemetry.js +29 -0
  56. package/dist/telemetry.js.map +1 -0
  57. package/dist/tools.d.ts +29 -0
  58. package/dist/tools.d.ts.map +1 -0
  59. package/dist/tools.js +37 -0
  60. package/dist/tools.js.map +1 -0
  61. package/package.json +35 -4
  62. package/README.md +0 -3
@@ -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"}
@@ -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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"}