@captra-ai/core 0.4.0 → 0.5.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 CHANGED
@@ -1,12 +1,20 @@
1
1
  import { type ZodType } from 'zod';
2
- import { type Capability, type ExecutionPolicy, type ViewReference } from './core.js';
2
+ import { type ApprovalPolicy, type Capability, type ExecutionPolicy, type ViewReference } from './core.js';
3
3
  import type { MemoryScope } from './memory.js';
4
- import type { ModelAdapter } from './models.js';
4
+ import type { ModelAdapter, ModelMessage } from './models.js';
5
5
  import type { Tool } from './tools.js';
6
+ import { type BudgetQuota } from './budgets.js';
6
7
  export type AgentBudget = {
7
8
  maxSteps?: number;
8
9
  maxToolCalls?: number;
9
10
  maxTokens?: number;
11
+ maxInputTokens?: number;
12
+ maxOutputTokens?: number;
13
+ maxCostUsd?: number;
14
+ user?: BudgetQuota;
15
+ tenant?: BudgetQuota;
16
+ estimateTokens?: (messages: readonly ModelMessage[]) => number;
17
+ estimateCostUsd?: (inputTokens: number, outputTokens: number) => number;
10
18
  };
11
19
  export type AgentDefinition<Input, Output, Name extends string = string> = {
12
20
  name: Name;
@@ -18,7 +26,7 @@ export type AgentDefinition<Input, Output, Name extends string = string> = {
18
26
  tools?: readonly Tool<any, any>[];
19
27
  memory?: readonly MemoryScope[];
20
28
  permissions?: readonly string[];
21
- approval?: 'never' | 'required';
29
+ approval?: ApprovalPolicy;
22
30
  idempotent?: boolean;
23
31
  policy?: ExecutionPolicy;
24
32
  budget?: AgentBudget;
@@ -1 +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"}
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,cAAc,EAAC,KAAK,UAAU,EAAC,KAAK,eAAe,EAAqB,KAAK,aAAa,EAAE,MAAM,WAAW,CAAA;AACtI,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAC,YAAY,EAA8B,MAAM,aAAa,CAAA;AACxF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAA0C,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAEvF,MAAM,MAAM,WAAW,GAAC;IAAC,QAAQ,CAAC,EAAC,MAAM,CAAC;IAAA,YAAY,CAAC,EAAC,MAAM,CAAC;IAAA,SAAS,CAAC,EAAC,MAAM,CAAC;IAAA,cAAc,CAAC,EAAC,MAAM,CAAC;IAAA,eAAe,CAAC,EAAC,MAAM,CAAC;IAAA,UAAU,CAAC,EAAC,MAAM,CAAC;IAAA,IAAI,CAAC,EAAC,WAAW,CAAC;IAAA,MAAM,CAAC,EAAC,WAAW,CAAC;IAAA,cAAc,CAAC,EAAC,CAAC,QAAQ,EAAC,SAAS,YAAY,EAAE,KAAG,MAAM,CAAC;IAAA,eAAe,CAAC,EAAC,CAAC,WAAW,EAAC,MAAM,EAAC,YAAY,EAAC,MAAM,KAAG,MAAM,CAAA;CAAC,CAAA;AACtT,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,cAAc,CAAA;IACtH,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 CHANGED
@@ -1,14 +1,15 @@
1
1
  import { toJSONSchema } from 'zod';
2
2
  import { capability } from './core.js';
3
+ import { BudgetExceededError, estimateModelTokens } from './budgets.js';
3
4
  export function agent(definition) {
4
5
  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
6
  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
7
  run: async (input, context) => runAgent(definition, input, context, allowed, tools) });
7
8
  }
8
9
  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 maxSteps = definition.budget?.maxSteps ?? 8, maxToolCalls = definition.budget?.maxToolCalls ?? 16, maxTokens = definition.budget?.maxTokens ?? 50_000, maxInputTokens = definition.budget?.maxInputTokens ?? maxTokens, maxOutputTokens = definition.budget?.maxOutputTokens ?? 4_096, maxCostUsd = definition.budget?.maxCostUsd ?? Number.POSITIVE_INFINITY;
10
11
  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 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, inputTokens: 0, outputTokens: 0, costUsd: 0 };
12
13
  const key = `agent/${definition.name}/state`, restored = await context.checkpoints.load(key), state = isAgentState(restored?.state) ? restored.state : initial;
13
14
  for (;;) {
14
15
  if (state.pending) {
@@ -30,11 +31,31 @@ async function runAgent(definition, input, context, allowed, tools) {
30
31
  }
31
32
  if (state.step > maxSteps)
32
33
  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
+ 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, costUsd: state.costUsd } });
35
+ const estimatedInput = Math.max(1, Math.ceil((definition.budget?.estimateTokens ?? estimateModelTokens)(state.messages))), remainingTokens = maxTokens - state.tokens;
36
+ if (state.inputTokens + estimatedInput > maxInputTokens)
37
+ await exceed(context, definition.name, new BudgetExceededError('run', 'tokens', maxInputTokens, state.inputTokens, estimatedInput));
38
+ const reservedOutput = Math.min(maxOutputTokens, remainingTokens - estimatedInput);
39
+ if (reservedOutput <= 0)
40
+ await exceed(context, definition.name, new BudgetExceededError('run', 'tokens', maxTokens, state.tokens, estimatedInput));
41
+ const estimatedCost = definition.budget?.estimateCostUsd?.(estimatedInput, reservedOutput) ?? 0;
42
+ if (state.costUsd + estimatedCost > maxCostUsd)
43
+ await exceed(context, definition.name, new BudgetExceededError('run', 'costUsd', maxCostUsd, state.costUsd, estimatedCost));
44
+ await context.emit({ type: 'budget.checked', capability: definition.name, detail: 'Model-call budget checked', data: { estimatedInputTokens: estimatedInput, reservedOutputTokens: reservedOutput, estimatedCostUsd: estimatedCost, remainingTokens } });
45
+ let reservation;
46
+ try {
47
+ reservation = await context.budgets.reserve({ runId: context.runId, identity: context, amount: { tokens: estimatedInput + reservedOutput, costUsd: estimatedCost }, limits: { user: definition.budget?.user, tenant: definition.budget?.tenant } });
48
+ }
49
+ catch (error) {
50
+ if (error instanceof BudgetExceededError)
51
+ await exceed(context, definition.name, error);
52
+ throw error;
53
+ }
54
+ await context.emit({ type: 'budget.reserved', capability: definition.name, detail: 'Reserved model-call budget', data: { reservationId: reservation.id, tokens: reservation.amount.tokens, costUsd: reservation.amount.costUsd } });
34
55
  const modelSpan = context.telemetry.startSpan('captra.model', { runId: context.runId, capability: definition.name, step: state.step }), modelStarted = Date.now();
35
56
  let response;
36
57
  try {
37
- response = await definition.model.generate({ messages: state.messages, tools, signal: context.signal, temperature: definition.temperature, providerState: state.providerState });
58
+ response = await definition.model.generate({ messages: state.messages, tools, signal: context.signal, temperature: definition.temperature, maxOutputTokens: reservedOutput, providerState: state.providerState });
38
59
  modelSpan.setAttribute('model', response.model);
39
60
  modelSpan.setAttribute('inputTokens', response.usage?.inputTokens);
40
61
  modelSpan.setAttribute('outputTokens', response.usage?.outputTokens);
@@ -43,14 +64,26 @@ async function runAgent(definition, input, context, allowed, tools) {
43
64
  context.telemetry.counter?.('captra.model.tokens', (response.usage?.inputTokens ?? 0) + (response.usage?.outputTokens ?? 0), { capability: definition.name, model: response.model });
44
65
  }
45
66
  catch (error) {
67
+ await context.budgets.release(reservation.id);
68
+ await context.emit({ type: 'budget.released', capability: definition.name, detail: 'Released failed model-call reservation', data: { reservationId: reservation.id } });
46
69
  modelSpan.end(error);
47
70
  context.telemetry.counter?.('captra.model.failures', 1, { capability: definition.name });
48
71
  throw error;
49
72
  }
50
73
  state.providerState = response.providerState;
51
- state.tokens += (response.usage?.inputTokens ?? 0) + (response.usage?.outputTokens ?? 0);
74
+ const actualInput = response.usage?.inputTokens ?? estimatedInput, actualOutput = response.usage?.outputTokens ?? 0, actualTokens = actualInput + actualOutput, actualCost = response.usage?.costUsd ?? definition.budget?.estimateCostUsd?.(actualInput, actualOutput) ?? 0;
75
+ await context.budgets.commit(reservation.id, { tokens: actualTokens, costUsd: actualCost });
76
+ await context.emit({ type: 'budget.committed', capability: definition.name, detail: 'Committed actual model usage', data: { reservationId: reservation.id, inputTokens: actualInput, outputTokens: actualOutput, tokens: actualTokens, costUsd: actualCost, releasedTokens: Math.max(0, reservation.amount.tokens - actualTokens), releasedCostUsd: Math.max(0, reservation.amount.costUsd - actualCost) } });
77
+ state.inputTokens += actualInput;
78
+ state.outputTokens += actualOutput;
79
+ state.tokens += actualTokens;
80
+ state.costUsd += actualCost;
52
81
  if (state.tokens > maxTokens)
53
- throw new Error(`Agent token budget exceeded (${maxTokens})`);
82
+ await exceed(context, definition.name, new BudgetExceededError('run', 'tokens', maxTokens, state.tokens - actualTokens, actualTokens));
83
+ if (state.inputTokens > maxInputTokens)
84
+ await exceed(context, definition.name, new BudgetExceededError('run', 'tokens', maxInputTokens, state.inputTokens - actualInput, actualInput));
85
+ if (state.costUsd > maxCostUsd)
86
+ await exceed(context, definition.name, new BudgetExceededError('run', 'costUsd', maxCostUsd, state.costUsd - actualCost, actualCost));
54
87
  if (response.toolCalls?.length) {
55
88
  if (state.toolCalls + response.toolCalls.length > maxToolCalls)
56
89
  throw new Error(`Agent tool-call budget exceeded (${maxToolCalls})`);
@@ -67,9 +100,11 @@ async function runAgent(definition, input, context, allowed, tools) {
67
100
  throw new Error('Agent returned invalid JSON output');
68
101
  }
69
102
  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 } });
103
+ 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, inputTokens: state.inputTokens, outputTokens: state.outputTokens, costUsd: state.costUsd, model: response.model } });
71
104
  return output;
72
105
  }
73
106
  }
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'; }
107
+ function isAgentState(value) { const state = value; if (!state || state.version !== 1 || typeof state.step !== 'number' || !Array.isArray(state.messages) || typeof state.toolCalls !== 'number' || typeof state.tokens !== 'number')
108
+ return false; state.inputTokens ??= state.tokens; state.outputTokens ??= 0; state.costUsd ??= 0; return true; }
109
+ async function exceed(context, capability, error) { await context.emit({ type: 'budget.exceeded', capability, detail: error.message, data: { code: error.code, scope: error.scope, resource: error.resource, limit: error.limit, used: error.used, requested: error.requested, retryAt: error.retryAt } }); throw error; }
75
110
  //# sourceMappingURL=agent.js.map
package/dist/agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import type { ExecutionIdentity } from './core.js';
2
+ export type BudgetQuota = {
3
+ tokens?: number;
4
+ costUsd?: number;
5
+ windowMs: number;
6
+ };
7
+ export type BudgetLimits = {
8
+ user?: BudgetQuota;
9
+ tenant?: BudgetQuota;
10
+ };
11
+ export type BudgetAmount = {
12
+ tokens: number;
13
+ costUsd: number;
14
+ };
15
+ export type BudgetReservation = {
16
+ id: string;
17
+ amount: BudgetAmount;
18
+ };
19
+ export type BudgetReserveRequest = {
20
+ runId: string;
21
+ identity: ExecutionIdentity;
22
+ amount: BudgetAmount;
23
+ limits: BudgetLimits;
24
+ now?: number;
25
+ };
26
+ export declare class BudgetExceededError extends Error {
27
+ readonly scope: 'run' | 'user' | 'tenant';
28
+ readonly resource: 'tokens' | 'costUsd';
29
+ readonly limit: number;
30
+ readonly used: number;
31
+ readonly requested: number;
32
+ readonly retryAt?: number | undefined;
33
+ readonly code = "budget_exceeded";
34
+ constructor(scope: 'run' | 'user' | 'tenant', resource: 'tokens' | 'costUsd', limit: number, used: number, requested: number, retryAt?: number | undefined);
35
+ }
36
+ export interface BudgetAdapter {
37
+ reserve(request: BudgetReserveRequest): Promise<BudgetReservation>;
38
+ commit(reservationId: string, actual: BudgetAmount): Promise<void>;
39
+ release(reservationId: string): Promise<void>;
40
+ }
41
+ export declare class InMemoryBudgetAdapter implements BudgetAdapter {
42
+ #private;
43
+ reserve(request: BudgetReserveRequest): Promise<{
44
+ id: `${string}-${string}-${string}-${string}-${string}`;
45
+ amount: {
46
+ tokens: number;
47
+ costUsd: number;
48
+ };
49
+ }>;
50
+ commit(id: string, actual: BudgetAmount): Promise<void>;
51
+ release(id: string): Promise<void>;
52
+ }
53
+ export declare function estimateModelTokens(messages: readonly {
54
+ content: string;
55
+ }[]): number;
56
+ //# sourceMappingURL=budgets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budgets.d.ts","sourceRoot":"","sources":["../src/budgets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAElD,MAAM,MAAM,WAAW,GAAC;IAAC,MAAM,CAAC,EAAC,MAAM,CAAC;IAAA,OAAO,CAAC,EAAC,MAAM,CAAC;IAAA,QAAQ,EAAC,MAAM,CAAA;CAAC,CAAA;AACxE,MAAM,MAAM,YAAY,GAAC;IAAC,IAAI,CAAC,EAAC,WAAW,CAAC;IAAA,MAAM,CAAC,EAAC,WAAW,CAAA;CAAC,CAAA;AAChE,MAAM,MAAM,YAAY,GAAC;IAAC,MAAM,EAAC,MAAM,CAAC;IAAA,OAAO,EAAC,MAAM,CAAA;CAAC,CAAA;AACvD,MAAM,MAAM,iBAAiB,GAAC;IAAC,EAAE,EAAC,MAAM,CAAC;IAAA,MAAM,EAAC,YAAY,CAAA;CAAC,CAAA;AAC7D,MAAM,MAAM,oBAAoB,GAAC;IAAC,KAAK,EAAC,MAAM,CAAC;IAAA,QAAQ,EAAC,iBAAiB,CAAC;IAAA,MAAM,EAAC,YAAY,CAAC;IAAA,MAAM,EAAC,YAAY,CAAC;IAAA,GAAG,CAAC,EAAC,MAAM,CAAA;CAAC,CAAA;AAE9H,qBAAa,mBAAoB,SAAQ,KAAK;IAEhC,QAAQ,CAAC,KAAK,EAAC,KAAK,GAAC,MAAM,GAAC,QAAQ;IAAC,QAAQ,CAAC,QAAQ,EAAC,QAAQ,GAAC,SAAS;IAAC,QAAQ,CAAC,KAAK,EAAC,MAAM;IAAC,QAAQ,CAAC,IAAI,EAAC,MAAM;IAAC,QAAQ,CAAC,SAAS,EAAC,MAAM;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAC,MAAM;IADnL,QAAQ,CAAC,IAAI,qBAAkB;gBACV,KAAK,EAAC,KAAK,GAAC,MAAM,GAAC,QAAQ,EAAU,QAAQ,EAAC,QAAQ,GAAC,SAAS,EAAU,KAAK,EAAC,MAAM,EAAU,IAAI,EAAC,MAAM,EAAU,SAAS,EAAC,MAAM,EAAU,OAAO,CAAC,EAAC,MAAM,YAAA;CACpL;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,OAAO,EAAC,oBAAoB,GAAE,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAChE,MAAM,CAAC,aAAa,EAAC,MAAM,EAAC,MAAM,EAAC,YAAY,GAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9D,OAAO,CAAC,aAAa,EAAC,MAAM,GAAE,OAAO,CAAC,IAAI,CAAC,CAAA;CAC5C;AAKD,qBAAa,qBAAsB,YAAW,aAAa;;IAGnD,OAAO,CAAC,OAAO,EAAC,oBAAoB;;;oBArBX,MAAM;qBAAS,MAAM;;;IA8B9C,MAAM,CAAC,EAAE,EAAC,MAAM,EAAC,MAAM,EAAC,YAAY;IACpC,OAAO,CAAC,EAAE,EAAC,MAAM;CAIxB;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAC,SAAS;IAAC,OAAO,EAAC,MAAM,CAAA;CAAC,EAAE,UAAmG"}
@@ -0,0 +1,62 @@
1
+ export class BudgetExceededError extends Error {
2
+ scope;
3
+ resource;
4
+ limit;
5
+ used;
6
+ requested;
7
+ retryAt;
8
+ code = 'budget_exceeded';
9
+ constructor(scope, resource, limit, used, requested, retryAt) {
10
+ super(`${scope} ${resource} budget exceeded (${limit})`);
11
+ this.scope = scope;
12
+ this.resource = resource;
13
+ this.limit = limit;
14
+ this.used = used;
15
+ this.requested = requested;
16
+ this.retryAt = retryAt;
17
+ this.name = 'BudgetExceededError';
18
+ }
19
+ }
20
+ export class InMemoryBudgetAdapter {
21
+ #buckets = new Map();
22
+ #reservations = new Map();
23
+ async reserve(request) {
24
+ const now = request.now ?? Date.now(), entries = this.#entries(request, now);
25
+ for (const { scope, quota, bucket } of entries) {
26
+ this.#assert(scope, 'tokens', quota.tokens, bucket.committed.tokens + bucket.reserved.tokens, request.amount.tokens, bucket.resetAt);
27
+ this.#assert(scope, 'costUsd', quota.costUsd, bucket.committed.costUsd + bucket.reserved.costUsd, request.amount.costUsd, bucket.resetAt);
28
+ }
29
+ for (const { key, bucket } of entries) {
30
+ bucket.reserved.tokens += request.amount.tokens;
31
+ bucket.reserved.costUsd += request.amount.costUsd;
32
+ this.#buckets.set(key, bucket);
33
+ }
34
+ const reservation = { id: crypto.randomUUID(), amount: { ...request.amount } };
35
+ this.#reservations.set(reservation.id, { amount: { ...request.amount }, keys: entries.map(entry => entry.key) });
36
+ return reservation;
37
+ }
38
+ async commit(id, actual) { const reservation = this.#take(id); for (const key of reservation.keys) {
39
+ const bucket = this.#buckets.get(key);
40
+ if (!bucket)
41
+ continue;
42
+ bucket.reserved.tokens = Math.max(0, bucket.reserved.tokens - reservation.amount.tokens);
43
+ bucket.reserved.costUsd = Math.max(0, bucket.reserved.costUsd - reservation.amount.costUsd);
44
+ bucket.committed.tokens += actual.tokens;
45
+ bucket.committed.costUsd += actual.costUsd;
46
+ } }
47
+ async release(id) { const reservation = this.#take(id); for (const key of reservation.keys) {
48
+ const bucket = this.#buckets.get(key);
49
+ if (!bucket)
50
+ continue;
51
+ bucket.reserved.tokens = Math.max(0, bucket.reserved.tokens - reservation.amount.tokens);
52
+ bucket.reserved.costUsd = Math.max(0, bucket.reserved.costUsd - reservation.amount.costUsd);
53
+ } }
54
+ #entries(request, now) { return ['user', 'tenant'].flatMap(scope => { const quota = request.limits[scope]; if (!quota)
55
+ return []; const owner = scope === 'user' ? `${request.identity.tenantId}:${request.identity.userId}` : request.identity.tenantId, key = `${scope}:${owner}:${Math.floor(now / quota.windowMs)}`, resetAt = (Math.floor(now / quota.windowMs) + 1) * quota.windowMs, existing = this.#buckets.get(key), bucket = existing && existing.resetAt > now ? existing : { committed: { tokens: 0, costUsd: 0 }, reserved: { tokens: 0, costUsd: 0 }, resetAt }; return [{ scope, quota, key, bucket }]; }); }
56
+ #assert(scope, resource, limit, used, requested, retryAt) { if (limit !== undefined && used + requested > limit)
57
+ throw new BudgetExceededError(scope, resource, limit, used, requested, retryAt); }
58
+ #take(id) { const reservation = this.#reservations.get(id); if (!reservation)
59
+ throw new Error(`Unknown budget reservation: ${id}`); this.#reservations.delete(id); return reservation; }
60
+ }
61
+ export function estimateModelTokens(messages) { return Math.max(1, Math.ceil(messages.reduce((total, message) => total + message.content.length, 0) / 4)); }
62
+ //# sourceMappingURL=budgets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budgets.js","sourceRoot":"","sources":["../src/budgets.ts"],"names":[],"mappings":"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"}
package/dist/core.d.ts CHANGED
@@ -6,6 +6,8 @@ import { type Tool, type ToolRunner } from './tools.js';
6
6
  import type { WorkQueue } from './queue.js';
7
7
  import { type CheckpointStore, type RunCheckpoints } from './checkpoints.js';
8
8
  import { type TelemetryAdapter } from './telemetry.js';
9
+ import { type BudgetAdapter } from './budgets.js';
10
+ import { type EffectStore } from './effects.js';
9
11
  export type ApprovalRequest = {
10
12
  capability: string;
11
13
  summary: string;
@@ -17,14 +19,25 @@ export type ExecutionIdentity = {
17
19
  projectId: string;
18
20
  sessionId?: string;
19
21
  };
22
+ export type ApprovalPolicy = 'never' | 'required' | {
23
+ required: true;
24
+ allowRequester?: boolean;
25
+ };
26
+ export declare class RunCancelledError extends Error {
27
+ readonly runId: string;
28
+ readonly code = "run_cancelled";
29
+ constructor(runId: string);
30
+ }
20
31
  export type RuntimeContext = ExecutionIdentity & {
21
32
  runId: string;
22
33
  memory: MemoryAdapter;
23
34
  memories: readonly MemoryRecord[];
24
35
  tools: ToolRunner;
25
36
  checkpoints: RunCheckpoints;
37
+ budgets: BudgetAdapter;
38
+ effects: EffectStore;
26
39
  telemetry: TelemetryAdapter;
27
- signal?: AbortSignal;
40
+ signal: AbortSignal;
28
41
  emit: (event: Omit<CaptraEvent, 'id' | 'protocol' | 'runId' | 'sequence' | 'at'>) => Promise<void>;
29
42
  };
30
43
  export type CapabilityViewProps<Output> = {
@@ -59,7 +72,7 @@ export type Capability<Input, Output, Name extends string = string> = {
59
72
  readonly scopes: readonly MemoryScope[];
60
73
  readonly state: CapabilityState;
61
74
  readonly permissions: readonly string[];
62
- readonly approval: 'never' | 'required';
75
+ readonly approval: ApprovalPolicy;
63
76
  readonly idempotent: boolean;
64
77
  readonly policy: ExecutionPolicy;
65
78
  readonly tools: readonly Tool<any, any>[];
@@ -83,7 +96,7 @@ export declare function capability<const Name extends string, Input, Output>(def
83
96
  memory?: readonly MemoryScope[];
84
97
  state?: Partial<CapabilityState>;
85
98
  permissions?: readonly string[];
86
- approval?: 'never' | 'required';
99
+ approval?: ApprovalPolicy;
87
100
  idempotent?: boolean;
88
101
  policy?: ExecutionPolicy;
89
102
  tools?: readonly Tool<any, any>[];
@@ -101,6 +114,7 @@ export type Hook = {
101
114
  beforeApproval?: (approval: {
102
115
  run: RunRecord;
103
116
  decision: 'approved' | 'rejected';
117
+ approver: ExecutionIdentity;
104
118
  }) => void | Promise<void>;
105
119
  onEvent?: (event: CaptraEvent, context: RuntimeContext) => void | Promise<void>;
106
120
  onError?: (name: string, error: unknown, context: RuntimeContext) => void | Promise<void>;
@@ -166,8 +180,11 @@ export type RuntimeOptions = {
166
180
  memory?: MemoryAdapter;
167
181
  runs?: RunStore;
168
182
  checkpoints?: CheckpointStore;
183
+ budgets?: BudgetAdapter;
184
+ effects?: EffectStore;
169
185
  telemetry?: TelemetryAdapter;
170
186
  authorize?: (identity: ExecutionIdentity, permissions: readonly string[]) => Promise<boolean> | boolean;
187
+ authorizeApproval?: (approver: ExecutionIdentity, run: RunRecord) => Promise<boolean> | boolean;
171
188
  signal?: AbortSignal;
172
189
  };
173
190
  export declare function createRuntime(app: AgentApp, options?: RuntimeOptions | MemoryStore): {
@@ -175,6 +192,8 @@ export declare function createRuntime(app: AgentApp, options?: RuntimeOptions |
175
192
  memory: MemoryAdapter;
176
193
  runs: RunStore;
177
194
  checkpoints: CheckpointStore;
195
+ budgets: BudgetAdapter;
196
+ effects: EffectStore;
178
197
  telemetry: TelemetryAdapter;
179
198
  execute: (request: RunRequest) => Promise<CapabilityResult>;
180
199
  enqueue: (request: RunRequest, queue: WorkQueue, options?: {
@@ -187,10 +206,11 @@ export declare function createRuntime(app: AgentApp, options?: RuntimeOptions |
187
206
  events: CaptraEvent[];
188
207
  checkpoints: import("./checkpoints.js").CheckpointRecord[];
189
208
  }>;
190
- approve: (runId: string, decision: "approved" | "rejected") => Promise<CapabilityResult>;
191
- cancel: (runId: string) => Promise<RunRecord | undefined>;
209
+ approve: (runId: string, decision: "approved" | "rejected", approver: ExecutionIdentity) => Promise<CapabilityResult>;
210
+ cancel: (runId: string) => Promise<RunRecord>;
192
211
  run(name: string, input: unknown, legacy: Omit<ExecutionIdentity, "tenantId"> & {
193
212
  tenantId?: string;
213
+ approver?: ExecutionIdentity;
194
214
  approve: (request: ApprovalRequest) => Promise<boolean>;
195
215
  }): Promise<CapabilityResult>;
196
216
  };
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
package/dist/core.js CHANGED
@@ -3,6 +3,17 @@ import { InMemoryRunStore } from './stores.js';
3
3
  import { createToolRunner } from './tools.js';
4
4
  import { InMemoryCheckpointStore } from './checkpoints.js';
5
5
  import { noopTelemetry } from './telemetry.js';
6
+ import { InMemoryBudgetAdapter } from './budgets.js';
7
+ import { InMemoryEffectStore } from './effects.js';
8
+ export class RunCancelledError extends Error {
9
+ runId;
10
+ code = 'run_cancelled';
11
+ constructor(runId) {
12
+ super(`Run ${runId} was cancelled`);
13
+ this.runId = runId;
14
+ this.name = 'RunCancelledError';
15
+ }
16
+ }
6
17
  export function view(name, component) { return Object.freeze({ name, component }); }
7
18
  export function defineCapability(definition) {
8
19
  const candidate = definition.view;
@@ -43,9 +54,15 @@ export function defineApp(definition) {
43
54
  }
44
55
  export function createRuntime(app, options = {}) {
45
56
  const normalized = options instanceof MemoryStore ? { memory: options } : options;
46
- const memory = normalized.memory ?? new MemoryStore(), runs = normalized.runs ?? new InMemoryRunStore(), checkpoints = normalized.checkpoints ?? new InMemoryCheckpointStore(), telemetry = normalized.telemetry ?? noopTelemetry, byName = new Map(app.capabilities.map(c => [c.name, c]));
57
+ const memory = normalized.memory ?? new MemoryStore(), runs = normalized.runs ?? new InMemoryRunStore(), checkpoints = normalized.checkpoints ?? new InMemoryCheckpointStore(), budgets = normalized.budgets ?? new InMemoryBudgetAdapter(), effects = normalized.effects ?? new InMemoryEffectStore(), telemetry = normalized.telemetry ?? noopTelemetry, byName = new Map(app.capabilities.map(c => [c.name, c])), activeRuns = new Map();
47
58
  const resultFor = async (run, capability) => ({ run, capability, value: run.output, trace: await runs.events(run.id) });
48
59
  async function continueRun(run, capability) {
60
+ const controller = new AbortController();
61
+ activeRuns.set(run.id, controller);
62
+ if (normalized.signal?.aborted)
63
+ controller.abort(normalized.signal.reason);
64
+ else
65
+ normalized.signal?.addEventListener('abort', () => controller.abort(normalized.signal?.reason), { once: true });
49
66
  const span = telemetry.startSpan('captra.run', { runId: run.id, capability: capability.name, tenantId: run.identity.tenantId, mode: capability.mode }), startedAt = Date.now();
50
67
  const context = {};
51
68
  const observe = async (callback) => { try {
@@ -59,7 +76,7 @@ export function createRuntime(app, options = {}) {
59
76
  await observe(() => hook.onEvent(saved, context)); };
60
77
  const scopedCheckpoints = { save: async (key, state) => { const saved = await checkpoints.save(run.id, key, state); await emit({ type: 'checkpoint.saved', capability: capability.name, detail: key, data: { sequence: saved.sequence } }); return saved; }, load: async (key) => { const saved = await checkpoints.load(run.id, key); if (saved)
61
78
  await emit({ type: 'checkpoint.restored', capability: capability.name, detail: key, data: { sequence: saved.sequence } }); return saved; }, list: () => checkpoints.list(run.id) };
62
- Object.assign(context, { ...run.identity, runId: run.id, memory, memories: [], checkpoints: scopedCheckpoints, telemetry, signal: normalized.signal, emit });
79
+ Object.assign(context, { ...run.identity, runId: run.id, memory, memories: [], checkpoints: scopedCheckpoints, budgets, effects, telemetry, signal: controller.signal, emit });
63
80
  Object.assign(context, { tools: createToolRunner(app.tools, context, async (permissions) => !normalized.authorize || await normalized.authorize(run.identity, permissions), {
64
81
  before: async (name, input) => { let value = input; for (const hook of app.hooks)
65
82
  if (hook.beforeTool)
@@ -86,15 +103,20 @@ export function createRuntime(app, options = {}) {
86
103
  input = await hook.beforeCapability(capability.name, input, context);
87
104
  await emit({ type: 'hook.completed', capability: capability.name, detail: hook.name, data: { phase: 'before' } });
88
105
  }
89
- if (capability.approval === 'required' && run.approval !== 'approved') {
90
- await runs.update(run.id, { status: 'waiting_for_approval', approval: 'pending', validatedInput: input });
91
- await emit({ type: 'approval.requested', capability: capability.name, detail: capability.description, data: { input } });
106
+ if (requiresApproval(capability.approval) && run.approval !== 'approved') {
107
+ const waiting = await runs.compareAndSet(run.id, [run.status], { status: 'waiting_for_approval', approval: 'pending', validatedInput: input });
108
+ if (!waiting)
109
+ throw new RunCancelledError(run.id);
110
+ await emit({ type: 'approval.requested', capability: capability.name, detail: capability.description, data: { input, requester: run.identity } });
111
+ activeRuns.delete(run.id);
92
112
  span.setAttribute('status', 'waiting_for_approval');
93
113
  span.end();
94
114
  telemetry.histogram?.('captra.run.duration', Date.now() - startedAt, { capability: capability.name, status: 'waiting_for_approval' });
95
- return resultFor((await runs.get(run.id)), capability);
115
+ return resultFor(waiting, capability);
96
116
  }
97
- await runs.update(run.id, { status: 'running', validatedInput: input });
117
+ const running = await runs.compareAndSet(run.id, [run.status], { status: 'running', validatedInput: input });
118
+ if (!running)
119
+ throw new RunCancelledError(run.id);
98
120
  await emit({ type: 'capability.started', capability: capability.name, detail: 'Executing capability function' });
99
121
  let output = capability.output.parse(await executeWithPolicy(capability, input, context));
100
122
  for (const hook of [...app.hooks].reverse())
@@ -103,20 +125,30 @@ export function createRuntime(app, options = {}) {
103
125
  await emit({ type: 'hook.completed', capability: capability.name, detail: hook.name, data: { phase: 'after' } });
104
126
  }
105
127
  output = capability.output.parse(output);
106
- await runs.update(run.id, { status: 'completed', output });
128
+ const completed = await runs.compareAndSet(run.id, ['running'], { status: 'completed', output });
129
+ if (!completed)
130
+ throw new RunCancelledError(run.id);
107
131
  await emit({ type: 'run.completed', capability: capability.name, detail: capability.view.name, data: { view: capability.view.name } });
132
+ activeRuns.delete(run.id);
108
133
  span.setAttribute('status', 'completed');
109
134
  span.end();
110
135
  telemetry.histogram?.('captra.run.duration', Date.now() - startedAt, { capability: capability.name, status: 'completed' });
111
- return resultFor((await runs.get(run.id)), capability);
136
+ return resultFor(completed, capability);
112
137
  }
113
138
  catch (error) {
139
+ activeRuns.delete(run.id);
140
+ const current = await runs.get(run.id);
141
+ if (current?.status === 'cancelled' || controller.signal.aborted) {
142
+ span.setAttribute('status', 'cancelled');
143
+ span.end(error);
144
+ throw error instanceof RunCancelledError ? error : new RunCancelledError(run.id);
145
+ }
114
146
  for (const hook of [...app.hooks].reverse())
115
147
  if (hook.onError)
116
148
  await observe(() => hook.onError(capability.name, error, context));
117
- const message = error instanceof Error ? error.message : 'Unknown runtime error';
118
- await runs.update(run.id, { status: 'failed', error: message });
119
- await emit({ type: 'run.failed', capability: capability.name, detail: message });
149
+ const message = error instanceof Error ? error.message : 'Unknown runtime error', failed = await runs.compareAndSet(run.id, ['created', 'queued', 'running'], { status: 'failed', error: message });
150
+ if (failed)
151
+ await emit({ type: 'run.failed', capability: capability.name, detail: message });
120
152
  span.setAttribute('status', 'failed');
121
153
  span.end(error);
122
154
  telemetry.counter?.('captra.run.failures', 1, { capability: capability.name });
@@ -139,13 +171,15 @@ export function createRuntime(app, options = {}) {
139
171
  finally {
140
172
  runRequestEvents.delete(run.id);
141
173
  } }
142
- async function approve(runId, decision) { const run = await runs.get(runId); if (!run)
174
+ async function approve(runId, decision, approver) { const run = await runs.get(runId); if (!run)
143
175
  throw new Error(`Unknown run: ${runId}`); if (run.status !== 'waiting_for_approval')
144
- throw new Error(`Run ${runId} is not waiting for approval`); const capability = byName.get(run.capability); for (const hook of app.hooks)
145
- await hook.beforeApproval?.({ run, decision }); await runs.update(runId, { approval: decision }); await runs.appendEvent(runId, { type: decision === 'approved' ? 'approval.approved' : 'approval.rejected', capability: capability.name, detail: decision }); if (decision === 'rejected') {
146
- await runs.update(runId, { status: 'cancelled' });
147
- return resultFor((await runs.get(runId)), capability);
148
- } return continueRun((await runs.get(runId)), capability); }
176
+ throw new Error(`Run ${runId} is not waiting for approval`); if (run.identity.tenantId !== approver.tenantId)
177
+ throw new Error('Approver must belong to the run tenant'); const capability = byName.get(run.capability); if (decision === 'approved' && !allowsRequester(capability.approval) && sameActor(run.identity, approver))
178
+ throw new Error('Requester cannot approve their own run'); if (normalized.authorizeApproval && !(await normalized.authorizeApproval(approver, run)))
179
+ throw new Error('Not authorized to approve this run'); for (const hook of app.hooks)
180
+ await hook.beforeApproval?.({ run, decision, approver }); const decided = await runs.compareAndSet(runId, ['waiting_for_approval'], { status: decision === 'approved' ? 'running' : 'cancelled', approval: decision, approvalIdentity: approver }); if (!decided)
181
+ throw new Error(`Run ${runId} is no longer waiting for approval`); await runs.appendEvent(runId, { type: decision === 'approved' ? 'approval.approved' : 'approval.rejected', capability: capability.name, detail: decision, data: { approver } }); if (decision === 'rejected')
182
+ return resultFor(decided, capability); return continueRun(decided, capability); }
149
183
  async function enqueue(request, queue, options = {}) { const capability = byName.get(request.capability); if (!capability)
150
184
  throw new Error(`Unknown capability: ${request.capability}`); if (normalized.authorize && !(await normalized.authorize(request.identity, capability.permissions)))
151
185
  throw new Error(`Not authorized to run ${capability.name}`); if (request.idempotencyKey) {
@@ -167,17 +201,22 @@ export function createRuntime(app, options = {}) {
167
201
  throw new Error(`Unknown capability: ${run.capability}`); if (['completed', 'cancelled', 'waiting_for_approval'].includes(run.status))
168
202
  return resultFor(run, capability); return continueRun(run, capability); }
169
203
  async function cancel(runId) { const run = await runs.get(runId); if (!run)
170
- throw new Error(`Unknown run: ${runId}`); if (['completed', 'failed', 'cancelled'].includes(run.status))
171
- throw new Error(`Run ${runId} cannot be cancelled`); await runs.update(runId, { status: 'cancelled' }); await runs.appendEvent(runId, { type: 'run.cancelled', capability: run.capability, detail: 'Cancelled' }); return runs.get(runId); }
204
+ throw new Error(`Unknown run: ${runId}`); const cancelled = await runs.compareAndSet(runId, ['created', 'queued', 'running', 'waiting_for_approval'], { status: 'cancelled' }); if (!cancelled)
205
+ throw new Error(`Run ${runId} cannot be cancelled`); activeRuns.get(runId)?.abort(new RunCancelledError(runId)); await runs.appendEvent(runId, { type: 'run.cancelled', capability: run.capability, detail: 'Cancelled' }); return cancelled; }
172
206
  async function replay(runId) { const run = await runs.get(runId); if (!run)
173
207
  throw new Error(`Unknown run: ${runId}`); return { run, events: await runs.events(runId), checkpoints: await checkpoints.list(runId) }; }
174
- return { app, memory, runs, checkpoints, telemetry, execute, enqueue, resume, replay, approve, cancel, async run(name, input, legacy) { let result = await execute({ capability: name, input, identity: { tenantId: legacy.tenantId ?? 'default', userId: legacy.userId, projectId: legacy.projectId } }); if (result.run.status === 'waiting_for_approval') {
208
+ return { app, memory, runs, checkpoints, budgets, effects, telemetry, execute, enqueue, resume, replay, approve, cancel, async run(name, input, legacy) { let result = await execute({ capability: name, input, identity: { tenantId: legacy.tenantId ?? 'default', userId: legacy.userId, projectId: legacy.projectId } }); if (result.run.status === 'waiting_for_approval') {
209
+ if (!legacy.approver)
210
+ throw new Error('Legacy approval requires an independent approver identity');
175
211
  const allowed = await legacy.approve({ capability: name, summary: result.capability.description, input });
176
- result = await approve(result.run.id, allowed ? 'approved' : 'rejected');
212
+ result = await approve(result.run.id, allowed ? 'approved' : 'rejected', legacy.approver);
177
213
  if (!allowed)
178
214
  throw new Error('Approval rejected');
179
215
  } return result; } };
180
216
  }
217
+ function requiresApproval(policy) { return policy === 'required' || typeof policy === 'object' && policy.required; }
218
+ function allowsRequester(policy) { return typeof policy === 'object' && policy.allowRequester === true; }
219
+ function sameActor(left, right) { return left.tenantId === right.tenantId && left.userId === right.userId; }
181
220
  function safeQuery(input) { const values = []; const visit = (value, depth) => { if (depth > 4)
182
221
  return; if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean')
183
222
  values.push(String(value));
package/dist/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ export type EffectReceipt = {
2
+ key: string;
3
+ tenantId: string;
4
+ tool: string;
5
+ status: 'started' | 'completed' | 'in_doubt';
6
+ output?: unknown;
7
+ error?: string;
8
+ createdAt: number;
9
+ updatedAt: number;
10
+ };
11
+ export type EffectClaim = {
12
+ status: 'claimed';
13
+ } | {
14
+ status: 'completed';
15
+ output: unknown;
16
+ } | {
17
+ status: 'in_doubt';
18
+ receipt: EffectReceipt;
19
+ };
20
+ export declare class EffectInDoubtError extends Error {
21
+ readonly receipt: EffectReceipt;
22
+ readonly code = "effect_in_doubt";
23
+ constructor(receipt: EffectReceipt);
24
+ }
25
+ export interface EffectStore {
26
+ claim(tenantId: string, tool: string, key: string): Promise<EffectClaim>;
27
+ complete(tenantId: string, tool: string, key: string, output: unknown): Promise<void>;
28
+ doubt(tenantId: string, tool: string, key: string, error: string): Promise<void>;
29
+ }
30
+ export declare class InMemoryEffectStore implements EffectStore {
31
+ #private;
32
+ claim(tenantId: string, tool: string, key: string): Promise<EffectClaim>;
33
+ complete(tenantId: string, tool: string, key: string, output: unknown): Promise<void>;
34
+ doubt(tenantId: string, tool: string, key: string, error: string): Promise<void>;
35
+ }
36
+ //# sourceMappingURL=effects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effects.d.ts","sourceRoot":"","sources":["../src/effects.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAC;IAAC,GAAG,EAAC,MAAM,CAAC;IAAA,QAAQ,EAAC,MAAM,CAAC;IAAA,IAAI,EAAC,MAAM,CAAC;IAAA,MAAM,EAAC,SAAS,GAAC,WAAW,GAAC,UAAU,CAAC;IAAA,MAAM,CAAC,EAAC,OAAO,CAAC;IAAA,KAAK,CAAC,EAAC,MAAM,CAAC;IAAA,SAAS,EAAC,MAAM,CAAC;IAAA,SAAS,EAAC,MAAM,CAAA;CAAC,CAAA;AAC1K,MAAM,MAAM,WAAW,GAAC;IAAC,MAAM,EAAC,SAAS,CAAA;CAAC,GAAC;IAAC,MAAM,EAAC,WAAW,CAAC;IAAA,MAAM,EAAC,OAAO,CAAA;CAAC,GAAC;IAAC,MAAM,EAAC,UAAU,CAAC;IAAA,OAAO,EAAC,aAAa,CAAA;CAAC,CAAA;AAExH,qBAAa,kBAAmB,SAAQ,KAAK;IAE/B,QAAQ,CAAC,OAAO,EAAC,aAAa;IAD1C,QAAQ,CAAC,IAAI,qBAAkB;gBACV,OAAO,EAAC,aAAa;CAC3C;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,QAAQ,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,GAAG,EAAC,MAAM,GAAE,OAAO,CAAC,WAAW,CAAC,CAAA;IAClE,QAAQ,CAAC,QAAQ,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,GAAG,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,GAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7E,KAAK,CAAC,QAAQ,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,GAAG,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,GAAE,OAAO,CAAC,IAAI,CAAC,CAAA;CACzE;AAED,qBAAa,mBAAoB,YAAW,WAAW;;IAE/C,KAAK,CAAC,QAAQ,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,GAAG,EAAC,MAAM,GAAE,OAAO,CAAC,WAAW,CAAC;IAClE,QAAQ,CAAC,QAAQ,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,GAAG,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO;IAC9D,KAAK,CAAC,QAAQ,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,GAAG,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM;CAEhE"}
@@ -0,0 +1,21 @@
1
+ export class EffectInDoubtError extends Error {
2
+ receipt;
3
+ code = 'effect_in_doubt';
4
+ constructor(receipt) {
5
+ super(`Effect ${receipt.tool} is in doubt for key ${receipt.key}`);
6
+ this.receipt = receipt;
7
+ this.name = 'EffectInDoubtError';
8
+ }
9
+ }
10
+ export class InMemoryEffectStore {
11
+ #receipts = new Map();
12
+ async claim(tenantId, tool, key) { const id = this.#id(tenantId, tool, key), existing = this.#receipts.get(id); if (existing?.status === 'completed')
13
+ return { status: 'completed', output: structuredClone(existing.output) }; if (existing)
14
+ return { status: 'in_doubt', receipt: structuredClone(existing) }; const now = Date.now(); this.#receipts.set(id, { key, tenantId, tool, status: 'started', createdAt: now, updatedAt: now }); return { status: 'claimed' }; }
15
+ async complete(tenantId, tool, key, output) { const id = this.#id(tenantId, tool, key), existing = this.#receipts.get(id); if (!existing)
16
+ throw new Error(`Effect was not claimed: ${tool}/${key}`); this.#receipts.set(id, { ...existing, status: 'completed', output: structuredClone(output), error: undefined, updatedAt: Date.now() }); }
17
+ async doubt(tenantId, tool, key, error) { const id = this.#id(tenantId, tool, key), existing = this.#receipts.get(id); if (!existing)
18
+ throw new Error(`Effect was not claimed: ${tool}/${key}`); this.#receipts.set(id, { ...existing, status: 'in_doubt', error, updatedAt: Date.now() }); }
19
+ #id(tenantId, tool, key) { return `${tenantId}\u0000${tool}\u0000${key}`; }
20
+ }
21
+ //# sourceMappingURL=effects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effects.js","sourceRoot":"","sources":["../src/effects.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAEtB;IADZ,IAAI,GAAC,iBAAiB,CAAA;IAC/B,YAAqB,OAAqB;QAAE,KAAK,CAAC,UAAU,OAAO,CAAC,IAAI,wBAAwB,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAA1F,YAAO,GAAP,OAAO,CAAc;QAAqE,IAAI,CAAC,IAAI,GAAC,oBAAoB,CAAA;IAAA,CAAC;CAC/I;AAQD,MAAM,OAAO,mBAAmB;IACrB,SAAS,GAAC,IAAI,GAAG,EAAwB,CAAA;IAClD,KAAK,CAAC,KAAK,CAAC,QAAe,EAAC,IAAW,EAAC,GAAU,IAAuB,MAAM,EAAE,GAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAC,IAAI,EAAC,GAAG,CAAC,EAAC,QAAQ,GAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA,IAAG,QAAQ,EAAE,MAAM,KAAG,WAAW;QAAC,OAAO,EAAC,MAAM,EAAC,WAAW,EAAC,MAAM,EAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAC,CAAC,CAAA,IAAG,QAAQ;QAAC,OAAO,EAAC,MAAM,EAAC,UAAU,EAAC,OAAO,EAAC,eAAe,CAAC,QAAQ,CAAC,EAAC,CAAC,CAAA,MAAM,GAAG,GAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAC,EAAC,GAAG,EAAC,QAAQ,EAAC,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,SAAS,EAAC,GAAG,EAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC,CAAA,OAAO,EAAC,MAAM,EAAC,SAAS,EAAC,CAAA,CAAA,CAAC;IACpc,KAAK,CAAC,QAAQ,CAAC,QAAe,EAAC,IAAW,EAAC,GAAU,EAAC,MAAc,IAAE,MAAM,EAAE,GAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAC,IAAI,EAAC,GAAG,CAAC,EAAC,QAAQ,GAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA,IAAG,CAAC,QAAQ;QAAC,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAC,EAAC,GAAG,QAAQ,EAAC,MAAM,EAAC,WAAW,EAAC,MAAM,EAAC,eAAe,CAAC,MAAM,CAAC,EAAC,KAAK,EAAC,SAAS,EAAC,SAAS,EAAC,IAAI,CAAC,GAAG,EAAE,EAAC,CAAC,CAAA,CAAA,CAAC;IAC9U,KAAK,CAAC,KAAK,CAAC,QAAe,EAAC,IAAW,EAAC,GAAU,EAAC,KAAY,IAAE,MAAM,EAAE,GAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAC,IAAI,EAAC,GAAG,CAAC,EAAC,QAAQ,GAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA,IAAG,CAAC,QAAQ;QAAC,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAC,EAAC,GAAG,QAAQ,EAAC,MAAM,EAAC,UAAU,EAAC,KAAK,EAAC,SAAS,EAAC,IAAI,CAAC,GAAG,EAAE,EAAC,CAAC,CAAA,CAAA,CAAC;IAC/R,GAAG,CAAC,QAAe,EAAC,IAAW,EAAC,GAAU,IAAE,OAAO,GAAG,QAAQ,SAAS,IAAI,SAAS,GAAG,EAAE,CAAA,CAAA,CAAC;CAC3F"}
package/dist/index.d.ts CHANGED
@@ -12,4 +12,6 @@ export * from './agent.js';
12
12
  export * from './checkpoints.js';
13
13
  export * from './telemetry.js';
14
14
  export * from './evals.js';
15
+ export * from './budgets.js';
16
+ export * from './effects.js';
15
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA"}
package/dist/index.js CHANGED
@@ -12,4 +12,6 @@ export * from './agent.js';
12
12
  export * from './checkpoints.js';
13
13
  export * from './telemetry.js';
14
14
  export * from './evals.js';
15
+ export * from './budgets.js';
16
+ export * from './effects.js';
15
17
  //# 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,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA"}
@@ -18,7 +18,7 @@ export declare function compileManifest(app: AgentApp): {
18
18
  memory: readonly import("./memory.js").MemoryScope[];
19
19
  state: import("./core.js").CapabilityState;
20
20
  permissions: readonly string[];
21
- approval: "never" | "required";
21
+ approval: import("./core.js").ApprovalPolicy;
22
22
  idempotent: boolean;
23
23
  policy: import("./core.js").ExecutionPolicy;
24
24
  view: string;
package/dist/models.d.ts CHANGED
@@ -23,15 +23,20 @@ export type ModelRequest = {
23
23
  tools?: readonly ModelTool[];
24
24
  signal?: AbortSignal;
25
25
  temperature?: number;
26
+ maxOutputTokens?: number;
26
27
  providerState?: unknown;
27
28
  };
29
+ export type ModelUsage = {
30
+ inputTokens?: number;
31
+ outputTokens?: number;
32
+ cachedInputTokens?: number;
33
+ reasoningTokens?: number;
34
+ costUsd?: number;
35
+ };
28
36
  export type ModelResponse = {
29
37
  text: string;
30
38
  toolCalls?: readonly ModelToolCall[];
31
- usage?: {
32
- inputTokens?: number;
33
- outputTokens?: number;
34
- };
39
+ usage?: ModelUsage;
35
40
  model?: string;
36
41
  providerState?: unknown;
37
42
  };
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAClC,OAAO,KAAK,EAAY,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAC5D,OAAO,KAAK,EAAQ,cAAc,EAAE,MAAM,cAAc,CAAA;AAExD,MAAM,MAAM,YAAY,GAAC;IAAC,IAAI,EAAC,QAAQ,GAAC,MAAM,GAAC,WAAW,GAAC,MAAM,CAAC;IAAA,OAAO,EAAC,MAAM,CAAC;IAAA,IAAI,CAAC,EAAC,MAAM,CAAC;IAAA,UAAU,CAAC,EAAC,MAAM,CAAC;IAAA,SAAS,CAAC,EAAC,SAAS,aAAa,EAAE,CAAA;CAAC,CAAA;AACrJ,MAAM,MAAM,SAAS,GAAC;IAAC,IAAI,EAAC,MAAM,CAAC;IAAA,WAAW,EAAC,MAAM,CAAC;IAAA,WAAW,EAAC,OAAO,CAAA;CAAC,CAAA;AAC1E,MAAM,MAAM,aAAa,GAAC;IAAC,EAAE,EAAC,MAAM,CAAC;IAAA,IAAI,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,OAAO,CAAA;CAAC,CAAA;AAC/D,MAAM,MAAM,YAAY,GAAC;IAAC,QAAQ,EAAC,SAAS,YAAY,EAAE,CAAC;IAAA,KAAK,CAAC,EAAC,SAAS,SAAS,EAAE,CAAC;IAAA,MAAM,CAAC,EAAC,WAAW,CAAC;IAAA,WAAW,CAAC,EAAC,MAAM,CAAC;IAAA,aAAa,CAAC,EAAC,OAAO,CAAA;CAAC,CAAA;AACtJ,MAAM,MAAM,aAAa,GAAC;IAAC,IAAI,EAAC,MAAM,CAAC;IAAA,SAAS,CAAC,EAAC,SAAS,aAAa,EAAE,CAAC;IAAA,KAAK,CAAC,EAAC;QAAC,WAAW,CAAC,EAAC,MAAM,CAAC;QAAA,YAAY,CAAC,EAAC,MAAM,CAAA;KAAC,CAAC;IAAA,KAAK,CAAC,EAAC,MAAM,CAAC;IAAA,aAAa,CAAC,EAAC,OAAO,CAAA;CAAC,CAAA;AAClK,MAAM,WAAW,YAAY;IAAG,QAAQ,CAAC,OAAO,EAAC,YAAY,GAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAAC,MAAM,CAAC,CAAC,OAAO,EAAC,YAAY,GAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CAAE;AAC5I,MAAM,MAAM,cAAc,GAAC;IAAC,EAAE,EAAC,MAAM,CAAC;IAAA,OAAO,EAAC,YAAY,CAAC;IAAA,QAAQ,EAAC,aAAa,CAAC;IAAA,SAAS,EAAC,MAAM,CAAA;CAAC,CAAA;AACnG,MAAM,WAAW,mBAAmB;IAAC,MAAM,CAAC,MAAM,EAAC,cAAc,GAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAAA,IAAI,IAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAA;CAAC;AAClH,qBAAa,2BAA4B,YAAW,mBAAmB;IAAC,QAAQ,CAAC,OAAO,EAAC,cAAc,EAAE,CAAI;IAAM,MAAM,CAAC,MAAM,EAAC,cAAc;IAAmD,IAAI;CAAyC;AAC/O,wBAAgB,WAAW,CAAC,KAAK,EAAC,YAAY,EAAC,KAAK,EAAC,mBAAmB,GAAE,YAAY,CAA2P;AACjV,wBAAgB,WAAW,CAAC,UAAU,EAAC,SAAS,cAAc,EAAE,EAAC,OAAO,GAAC;IAAC,MAAM,CAAC,EAAC,OAAO,CAAA;CAAI,GAAE,YAAY,CAAmU;AAE9a,wBAAgB,yBAAyB,CAAC,KAAK,EAAC,YAAY,IAC3B,MAAM,EAAE,QAAO,OAAO,CAAC,MAAM,CAAC,EAAC,SAAQ,YAAY,KAAE,OAAO,CAAC,MAAM,CAAC,CAMpG;AAKD,wBAAgB,kBAAkB,CAAC,KAAK,EAAC,YAAY,EAAC,QAAQ,CAAC,EAAC,OAAO,CAAC,iBAAiB,CAAC,GAAE,cAAc,CAczG"}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { CapabilityState, ExecutionIdentity } from './core.js';
2
2
  export declare const CAPTRA_PROTOCOL_VERSION = "1.0";
3
3
  export type RunStatus = 'created' | 'queued' | 'running' | 'waiting_for_approval' | 'completed' | 'failed' | 'cancelled';
4
- export type EventType = 'run.queued' | 'run.started' | 'memory.recalled' | 'hook.completed' | 'capability.started' | 'capability.retrying' | 'agent.step' | 'agent.tool.selected' | 'agent.completed' | 'checkpoint.saved' | 'checkpoint.restored' | 'tool.started' | 'tool.completed' | 'tool.failed' | 'approval.requested' | 'approval.approved' | 'approval.rejected' | 'run.completed' | 'run.failed' | 'run.cancelled';
4
+ export type EventType = 'run.queued' | 'run.started' | 'memory.recalled' | 'hook.completed' | 'capability.started' | 'capability.retrying' | 'agent.step' | 'agent.tool.selected' | 'agent.completed' | 'budget.checked' | 'budget.reserved' | 'budget.committed' | 'budget.released' | 'budget.exceeded' | 'checkpoint.saved' | 'checkpoint.restored' | 'tool.started' | 'tool.completed' | 'tool.failed' | 'approval.requested' | 'approval.approved' | 'approval.rejected' | 'run.completed' | 'run.failed' | 'run.cancelled';
5
5
  export type CaptraEvent = {
6
6
  id: string;
7
7
  protocol: typeof CAPTRA_PROTOCOL_VERSION;
@@ -24,6 +24,7 @@ export type RunRecord = {
24
24
  validatedInput?: unknown;
25
25
  output?: unknown;
26
26
  approval?: 'pending' | 'approved' | 'rejected';
27
+ approvalIdentity?: ExecutionIdentity;
27
28
  error?: string;
28
29
  idempotencyKey?: string;
29
30
  createdAt: number;
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AACnE,eAAO,MAAM,uBAAuB,QAAQ,CAAA;AAC5C,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,sBAAsB,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAA;AACxH,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,aAAa,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,oBAAoB,GAAG,qBAAqB,GAAG,YAAY,GAAG,qBAAqB,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,qBAAqB,GAAG,cAAc,GAAG,gBAAgB,GAAG,aAAa,GAAG,oBAAoB,GAAG,mBAAmB,GAAG,mBAAmB,GAAG,eAAe,GAAG,YAAY,GAAG,eAAe,CAAA;AAC5Z,MAAM,MAAM,WAAW,GAAG;IAAE,EAAE,EAAC,MAAM,CAAC;IAAC,QAAQ,EAAC,OAAO,uBAAuB,CAAC;IAAC,KAAK,EAAC,MAAM,CAAC;IAAC,QAAQ,EAAC,MAAM,CAAC;IAAC,EAAE,EAAC,MAAM,CAAC;IAAC,IAAI,EAAC,SAAS,CAAC;IAAC,UAAU,EAAC,MAAM,CAAC;IAAC,MAAM,EAAC,MAAM,CAAC;IAAC,IAAI,CAAC,EAAC,OAAO,CAAA;CAAE,CAAA;AAC3L,MAAM,MAAM,SAAS,GAAG;IAAE,EAAE,EAAC,MAAM,CAAC;IAAC,GAAG,EAAC,MAAM,CAAC;IAAC,UAAU,EAAC,MAAM,CAAC;IAAC,UAAU,EAAC,MAAM,CAAC;IAAC,MAAM,EAAC,SAAS,CAAC;IAAC,QAAQ,EAAC,iBAAiB,CAAC;IAAC,KAAK,EAAC,OAAO,CAAC;IAAC,cAAc,CAAC,EAAC,OAAO,CAAC;IAAC,MAAM,CAAC,EAAC,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAC,SAAS,GAAC,UAAU,GAAC,UAAU,CAAC;IAAC,KAAK,CAAC,EAAC,MAAM,CAAC;IAAC,cAAc,CAAC,EAAC,MAAM,CAAC;IAAC,SAAS,EAAC,MAAM,CAAC;IAAC,SAAS,EAAC,MAAM,CAAA;CAAE,CAAA;AACpT,MAAM,MAAM,oBAAoB,GAAC;IAAC,IAAI,EAAC,MAAM,CAAC;IAAA,IAAI,EAAC,UAAU,GAAC,OAAO,CAAC;IAAA,WAAW,EAAC,MAAM,CAAC;IAAA,IAAI,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,eAAe,CAAA;CAAC,CAAA;AAC3H,MAAM,MAAM,sBAAsB,CAAC,MAAM,GAAC,OAAO,IAAE;IAAC,GAAG,EAAC,SAAS,CAAC;IAAA,UAAU,EAAC,oBAAoB,CAAC;IAAA,KAAK,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,WAAW,EAAE,CAAA;CAAC,CAAA"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AACnE,eAAO,MAAM,uBAAuB,QAAQ,CAAA;AAC5C,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,sBAAsB,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAA;AACxH,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,aAAa,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,oBAAoB,GAAG,qBAAqB,GAAG,YAAY,GAAG,qBAAqB,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,qBAAqB,GAAG,cAAc,GAAG,gBAAgB,GAAG,aAAa,GAAG,oBAAoB,GAAG,mBAAmB,GAAG,mBAAmB,GAAG,eAAe,GAAG,YAAY,GAAG,eAAe,CAAA;AAChgB,MAAM,MAAM,WAAW,GAAG;IAAE,EAAE,EAAC,MAAM,CAAC;IAAC,QAAQ,EAAC,OAAO,uBAAuB,CAAC;IAAC,KAAK,EAAC,MAAM,CAAC;IAAC,QAAQ,EAAC,MAAM,CAAC;IAAC,EAAE,EAAC,MAAM,CAAC;IAAC,IAAI,EAAC,SAAS,CAAC;IAAC,UAAU,EAAC,MAAM,CAAC;IAAC,MAAM,EAAC,MAAM,CAAC;IAAC,IAAI,CAAC,EAAC,OAAO,CAAA;CAAE,CAAA;AAC3L,MAAM,MAAM,SAAS,GAAG;IAAE,EAAE,EAAC,MAAM,CAAC;IAAC,GAAG,EAAC,MAAM,CAAC;IAAC,UAAU,EAAC,MAAM,CAAC;IAAC,UAAU,EAAC,MAAM,CAAC;IAAC,MAAM,EAAC,SAAS,CAAC;IAAC,QAAQ,EAAC,iBAAiB,CAAC;IAAC,KAAK,EAAC,OAAO,CAAC;IAAC,cAAc,CAAC,EAAC,OAAO,CAAC;IAAC,MAAM,CAAC,EAAC,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAC,SAAS,GAAC,UAAU,GAAC,UAAU,CAAC;IAAA,gBAAgB,CAAC,EAAC,iBAAiB,CAAC;IAAC,KAAK,CAAC,EAAC,MAAM,CAAC;IAAC,cAAc,CAAC,EAAC,MAAM,CAAC;IAAC,SAAS,EAAC,MAAM,CAAC;IAAC,SAAS,EAAC,MAAM,CAAA;CAAE,CAAA;AACxV,MAAM,MAAM,oBAAoB,GAAC;IAAC,IAAI,EAAC,MAAM,CAAC;IAAA,IAAI,EAAC,UAAU,GAAC,OAAO,CAAC;IAAA,WAAW,EAAC,MAAM,CAAC;IAAA,IAAI,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,eAAe,CAAA;CAAC,CAAA;AAC3H,MAAM,MAAM,sBAAsB,CAAC,MAAM,GAAC,OAAO,IAAE;IAAC,GAAG,EAAC,SAAS,CAAC;IAAA,UAAU,EAAC,oBAAoB,CAAC;IAAA,KAAK,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,WAAW,EAAE,CAAA;CAAC,CAAA"}
package/dist/stores.d.ts CHANGED
@@ -4,6 +4,7 @@ export interface RunStore {
4
4
  create(input: CreateRun): Promise<RunRecord>;
5
5
  get(id: string): Promise<RunRecord | undefined>;
6
6
  update(id: string, patch: Partial<RunRecord>): Promise<void>;
7
+ compareAndSet(id: string, expected: readonly RunRecord['status'][], patch: Partial<RunRecord>): Promise<RunRecord | undefined>;
7
8
  appendEvent(id: string, event: Omit<CaptraEvent, 'id' | 'protocol' | 'runId' | 'sequence' | 'at'>): Promise<CaptraEvent>;
8
9
  events(id: string, after?: number): Promise<CaptraEvent[]>;
9
10
  findByIdempotencyKey(tenantId: string, key: string): Promise<RunRecord | undefined>;
@@ -13,6 +14,23 @@ export declare class InMemoryRunStore implements RunStore {
13
14
  create(input: CreateRun): Promise<RunRecord>;
14
15
  get(id: string): Promise<RunRecord | undefined>;
15
16
  update(id: string, patch: Partial<RunRecord>): Promise<void>;
17
+ compareAndSet(id: string, expected: readonly RunRecord['status'][], patch: Partial<RunRecord>): Promise<{
18
+ id: string;
19
+ updatedAt: number;
20
+ app: string;
21
+ appVersion: string;
22
+ capability: string;
23
+ status: import("./protocol.js").RunStatus;
24
+ identity: import("./core.js").ExecutionIdentity;
25
+ input: unknown;
26
+ validatedInput?: unknown;
27
+ output?: unknown;
28
+ approval?: "pending" | "approved" | "rejected";
29
+ approvalIdentity?: import("./core.js").ExecutionIdentity;
30
+ error?: string;
31
+ idempotencyKey?: string;
32
+ createdAt: number;
33
+ } | undefined>;
16
34
  appendEvent(runId: string, input: Omit<CaptraEvent, 'id' | 'protocol' | 'runId' | 'sequence' | 'at'>): Promise<CaptraEvent>;
17
35
  events(id: string, after?: number): Promise<CaptraEvent[]>;
18
36
  findByIdempotencyKey(tenantId: string, key: string): Promise<RunRecord | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"stores.d.ts","sourceRoot":"","sources":["../src/stores.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAA;AACzF,MAAM,MAAM,SAAS,GAAC,IAAI,CAAC,SAAS,EAAC,IAAI,GAAC,QAAQ,GAAC,WAAW,GAAC,WAAW,CAAC,CAAA;AAC3E,MAAM,WAAW,QAAQ;IAAG,MAAM,CAAC,KAAK,EAAC,SAAS,GAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAAC,GAAG,CAAC,EAAE,EAAC,MAAM,GAAE,OAAO,CAAC,SAAS,GAAC,SAAS,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,EAAC,MAAM,EAAC,KAAK,EAAC,OAAO,CAAC,SAAS,CAAC,GAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,WAAW,CAAC,EAAE,EAAC,MAAM,EAAC,KAAK,EAAC,IAAI,CAAC,WAAW,EAAC,IAAI,GAAC,UAAU,GAAC,OAAO,GAAC,UAAU,GAAC,IAAI,CAAC,GAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,EAAC,MAAM,EAAC,KAAK,CAAC,EAAC,MAAM,GAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAAC,oBAAoB,CAAC,QAAQ,EAAC,MAAM,EAAC,GAAG,EAAC,MAAM,GAAE,OAAO,CAAC,SAAS,GAAC,SAAS,CAAC,CAAA;CAAE;AACna,qBAAa,gBAAiB,YAAW,QAAQ;;IAEzC,MAAM,CAAC,KAAK,EAAC,SAAS;IACtB,GAAG,CAAC,EAAE,EAAC,MAAM;IACb,MAAM,CAAC,EAAE,EAAC,MAAM,EAAC,KAAK,EAAC,OAAO,CAAC,SAAS,CAAC;IACzC,WAAW,CAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAC,IAAI,CAAC,WAAW,EAAC,IAAI,GAAC,UAAU,GAAC,OAAO,GAAC,UAAU,GAAC,IAAI,CAAC;IACxF,MAAM,CAAC,EAAE,EAAC,MAAM,EAAC,KAAK,SAAE;IACxB,oBAAoB,CAAC,QAAQ,EAAC,MAAM,EAAC,GAAG,EAAC,MAAM;CACtD"}
1
+ {"version":3,"file":"stores.d.ts","sourceRoot":"","sources":["../src/stores.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAA;AACzF,MAAM,MAAM,SAAS,GAAC,IAAI,CAAC,SAAS,EAAC,IAAI,GAAC,QAAQ,GAAC,WAAW,GAAC,WAAW,CAAC,CAAA;AAC3E,MAAM,WAAW,QAAQ;IAAG,MAAM,CAAC,KAAK,EAAC,SAAS,GAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAAC,GAAG,CAAC,EAAE,EAAC,MAAM,GAAE,OAAO,CAAC,SAAS,GAAC,SAAS,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,EAAC,MAAM,EAAC,KAAK,EAAC,OAAO,CAAC,SAAS,CAAC,GAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,aAAa,CAAC,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,SAAS,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAC,KAAK,EAAC,OAAO,CAAC,SAAS,CAAC,GAAE,OAAO,CAAC,SAAS,GAAC,SAAS,CAAC,CAAC;IAAC,WAAW,CAAC,EAAE,EAAC,MAAM,EAAC,KAAK,EAAC,IAAI,CAAC,WAAW,EAAC,IAAI,GAAC,UAAU,GAAC,OAAO,GAAC,UAAU,GAAC,IAAI,CAAC,GAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,EAAC,MAAM,EAAC,KAAK,CAAC,EAAC,MAAM,GAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAAC,oBAAoB,CAAC,QAAQ,EAAC,MAAM,EAAC,GAAG,EAAC,MAAM,GAAE,OAAO,CAAC,SAAS,GAAC,SAAS,CAAC,CAAA;CAAE;AAC3hB,qBAAa,gBAAiB,YAAW,QAAQ;;IAEzC,MAAM,CAAC,KAAK,EAAC,SAAS;IACtB,GAAG,CAAC,EAAE,EAAC,MAAM;IACb,MAAM,CAAC,EAAE,EAAC,MAAM,EAAC,KAAK,EAAC,OAAO,CAAC,SAAS,CAAC;IACzC,aAAa,CAAC,EAAE,EAAC,MAAM,EAAC,QAAQ,EAAC,SAAS,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAC,KAAK,EAAC,OAAO,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;;;IACxF,WAAW,CAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAC,IAAI,CAAC,WAAW,EAAC,IAAI,GAAC,UAAU,GAAC,OAAO,GAAC,UAAU,GAAC,IAAI,CAAC;IACxF,MAAM,CAAC,EAAE,EAAC,MAAM,EAAC,KAAK,SAAE;IACxB,oBAAoB,CAAC,QAAQ,EAAC,MAAM,EAAC,GAAG,EAAC,MAAM;CACtD"}
package/dist/stores.js CHANGED
@@ -6,6 +6,9 @@ export class InMemoryRunStore {
6
6
  async get(id) { return this.#runs.get(id); }
7
7
  async update(id, patch) { const run = this.#runs.get(id); if (!run)
8
8
  throw new Error(`Unknown run: ${id}`); this.#runs.set(id, { ...run, ...patch, id, updatedAt: Date.now() }); }
9
+ async compareAndSet(id, expected, patch) { const run = this.#runs.get(id); if (!run)
10
+ throw new Error(`Unknown run: ${id}`); if (!expected.includes(run.status))
11
+ return; const updated = { ...run, ...patch, id, updatedAt: Date.now() }; this.#runs.set(id, updated); return updated; }
9
12
  async appendEvent(runId, input) { const list = this.#events.get(runId); if (!list)
10
13
  throw new Error(`Unknown run: ${runId}`); const event = { ...input, id: crypto.randomUUID(), protocol: CAPTRA_PROTOCOL_VERSION, runId, sequence: list.length + 1, at: Date.now() }; list.push(event); return event; }
11
14
  async events(id, after = 0) { return (this.#events.get(id) ?? []).filter(event => event.sequence > after); }
@@ -1 +1 @@
1
- {"version":3,"file":"stores.js","sourceRoot":"","sources":["../src/stores.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAoC,MAAM,eAAe,CAAA;AAGzF,MAAM,OAAO,gBAAgB;IAClB,KAAK,GAAC,IAAI,GAAG,EAAoB,CAAC;IAAU,OAAO,GAAC,IAAI,GAAG,EAAwB,CAAA;IAC5F,KAAK,CAAC,MAAM,CAAC,KAAe,IAAG,MAAM,GAAG,GAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,GAAG,GAAW,EAAC,GAAG,KAAK,EAAC,EAAE,EAAC,MAAM,CAAC,UAAU,EAAE,EAAC,MAAM,EAAC,SAAS,EAAC,SAAS,EAAC,GAAG,EAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAC,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAA,CAAC,CAAC;IAC9N,KAAK,CAAC,GAAG,CAAC,EAAS,IAAG,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA,CAAC,CAAC;IACjD,KAAK,CAAC,MAAM,CAAC,EAAS,EAAC,KAAwB,IAAG,MAAM,GAAG,GAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAG,CAAC,GAAG;QAAC,MAAM,IAAI,KAAK,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAC,EAAC,GAAG,GAAG,EAAC,GAAG,KAAK,EAAC,EAAE,EAAC,SAAS,EAAC,IAAI,CAAC,GAAG,EAAE,EAAC,CAAC,CAAA,CAAC,CAAC;IAC7L,KAAK,CAAC,WAAW,CAAC,KAAY,EAAC,KAA+D,IAAG,MAAM,IAAI,GAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAG,CAAC,IAAI;QAAC,MAAM,IAAI,KAAK,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,GAAa,EAAC,GAAG,KAAK,EAAC,EAAE,EAAC,MAAM,CAAC,UAAU,EAAE,EAAC,QAAQ,EAAC,uBAAuB,EAAC,KAAK,EAAC,QAAQ,EAAC,IAAI,CAAC,MAAM,GAAC,CAAC,EAAC,EAAE,EAAC,IAAI,CAAC,GAAG,EAAE,EAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,CAAA,CAAC,CAAC;IAC/V,KAAK,CAAC,MAAM,CAAC,EAAS,EAAC,KAAK,GAAC,CAAC,IAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAA,EAAE,CAAA,KAAK,CAAC,QAAQ,GAAC,KAAK,CAAC,CAAA,CAAC,CAAC;IACxG,KAAK,CAAC,oBAAoB,CAAC,QAAe,EAAC,GAAU,IAAG,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAA,EAAE,CAAA,GAAG,CAAC,QAAQ,CAAC,QAAQ,KAAG,QAAQ,IAAE,GAAG,CAAC,cAAc,KAAG,GAAG,CAAC,CAAA,CAAC,CAAC;CAChK"}
1
+ {"version":3,"file":"stores.js","sourceRoot":"","sources":["../src/stores.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAoC,MAAM,eAAe,CAAA;AAGzF,MAAM,OAAO,gBAAgB;IAClB,KAAK,GAAC,IAAI,GAAG,EAAoB,CAAC;IAAU,OAAO,GAAC,IAAI,GAAG,EAAwB,CAAA;IAC5F,KAAK,CAAC,MAAM,CAAC,KAAe,IAAG,MAAM,GAAG,GAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,GAAG,GAAW,EAAC,GAAG,KAAK,EAAC,EAAE,EAAC,MAAM,CAAC,UAAU,EAAE,EAAC,MAAM,EAAC,SAAS,EAAC,SAAS,EAAC,GAAG,EAAC,SAAS,EAAC,GAAG,EAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAC,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAA,CAAC,CAAC;IAC9N,KAAK,CAAC,GAAG,CAAC,EAAS,IAAG,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA,CAAC,CAAC;IACjD,KAAK,CAAC,MAAM,CAAC,EAAS,EAAC,KAAwB,IAAG,MAAM,GAAG,GAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAG,CAAC,GAAG;QAAC,MAAM,IAAI,KAAK,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAC,EAAC,GAAG,GAAG,EAAC,GAAG,KAAK,EAAC,EAAE,EAAC,SAAS,EAAC,IAAI,CAAC,GAAG,EAAE,EAAC,CAAC,CAAA,CAAC,CAAC;IAC7L,KAAK,CAAC,aAAa,CAAC,EAAS,EAAC,QAAuC,EAAC,KAAwB,IAAE,MAAM,GAAG,GAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA,IAAG,CAAC,GAAG;QAAC,MAAM,IAAI,KAAK,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAA,IAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;QAAC,OAAO,CAAA,MAAM,OAAO,GAAC,EAAC,GAAG,GAAG,EAAC,GAAG,KAAK,EAAC,EAAE,EAAC,SAAS,EAAC,IAAI,CAAC,GAAG,EAAE,EAAC,CAAC,CAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAC,OAAO,CAAC,CAAC,CAAA,OAAO,OAAO,CAAA,CAAA,CAAC;IACtT,KAAK,CAAC,WAAW,CAAC,KAAY,EAAC,KAA+D,IAAG,MAAM,IAAI,GAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAG,CAAC,IAAI;QAAC,MAAM,IAAI,KAAK,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,GAAa,EAAC,GAAG,KAAK,EAAC,EAAE,EAAC,MAAM,CAAC,UAAU,EAAE,EAAC,QAAQ,EAAC,uBAAuB,EAAC,KAAK,EAAC,QAAQ,EAAC,IAAI,CAAC,MAAM,GAAC,CAAC,EAAC,EAAE,EAAC,IAAI,CAAC,GAAG,EAAE,EAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,CAAA,CAAC,CAAC;IAC/V,KAAK,CAAC,MAAM,CAAC,EAAS,EAAC,KAAK,GAAC,CAAC,IAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAA,EAAE,CAAA,KAAK,CAAC,QAAQ,GAAC,KAAK,CAAC,CAAA,CAAC,CAAC;IACxG,KAAK,CAAC,oBAAoB,CAAC,QAAe,EAAC,GAAU,IAAG,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAA,EAAE,CAAA,GAAG,CAAC,QAAQ,CAAC,QAAQ,KAAG,QAAQ,IAAE,GAAG,CAAC,cAAc,KAAG,GAAG,CAAC,CAAA,CAAC,CAAC;CAChK"}
package/dist/tools.d.ts CHANGED
@@ -8,10 +8,13 @@ export type Tool<Input, Output> = {
8
8
  readonly input: ZodType<Input>;
9
9
  readonly output: ZodType<Output>;
10
10
  readonly permissions: readonly string[];
11
+ readonly effect: 'read' | 'write';
12
+ readonly idempotencyKey?: (input: Input, context: ToolContext) => string;
11
13
  readonly execute: (input: Input, context: ToolContext) => Promise<Output>;
12
14
  };
13
- export declare function defineTool<Input, Output>(definition: Omit<Tool<Input, Output>, 'kind' | 'permissions'> & {
15
+ export declare function defineTool<Input, Output>(definition: Omit<Tool<Input, Output>, 'kind' | 'permissions' | 'effect'> & {
14
16
  permissions?: readonly string[];
17
+ effect?: 'read' | 'write';
15
18
  }): Tool<Input, Output>;
16
19
  export type ToolCall = {
17
20
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAClC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAE/C,MAAM,MAAM,WAAW,GAAC,cAAc,CAAA;AACtC,MAAM,MAAM,IAAI,CAAC,KAAK,EAAC,MAAM,IAAE;IAC7B,QAAQ,CAAC,IAAI,EAAC,MAAM,CAAA;IACpB,QAAQ,CAAC,IAAI,EAAC,MAAM,CAAA;IACpB,QAAQ,CAAC,WAAW,EAAC,MAAM,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC/B,QAAQ,CAAC,WAAW,EAAC,SAAS,MAAM,EAAE,CAAA;IACtC,QAAQ,CAAC,OAAO,EAAC,CAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,WAAW,KAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CACpE,CAAA;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAC,MAAM,EAAE,UAAU,EAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAC,MAAM,CAAC,EAAC,MAAM,GAAC,aAAa,CAAC,GAAC;IAAC,WAAW,CAAC,EAAC,SAAS,MAAM,EAAE,CAAA;CAAC,GAAE,IAAI,CAAC,KAAK,EAAC,MAAM,CAAC,CAErJ;AAED,MAAM,MAAM,QAAQ,GAAC;IAAC,IAAI,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,OAAO,CAAA;CAAC,CAAA;AAChD,MAAM,WAAW,UAAU;IAAG,IAAI,CAAC,MAAM,GAAC,OAAO,EAAE,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,OAAO,GAAE,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE;AAC/F,MAAM,MAAM,aAAa,GAAC;IAAC,MAAM,CAAC,EAAC,CAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,OAAO,EAAC,OAAO,EAAC,cAAc,KAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAAA,KAAK,CAAC,EAAC,CAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,OAAO,EAAC,cAAc,KAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAAA,KAAK,CAAC,EAAC,CAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,OAAO,EAAC,OAAO,EAAC,cAAc,KAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAAC,CAAA;AAE9P,wBAAgB,gBAAgB,CAAC,KAAK,EAAC,SAAS,IAAI,CAAC,GAAG,EAAC,GAAG,CAAC,EAAE,EAAC,OAAO,EAAC,cAAc,EAAC,SAAS,CAAC,EAAC,CAAC,WAAW,EAAC,SAAS,MAAM,EAAE,KAAG,OAAO,CAAC,OAAO,CAAC,EAAC,SAAS,GAAC,aAAgB,GAAE,UAAU,CAiBzL"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAClC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAG/C,MAAM,MAAM,WAAW,GAAC,cAAc,CAAA;AACtC,MAAM,MAAM,IAAI,CAAC,KAAK,EAAC,MAAM,IAAE;IAC7B,QAAQ,CAAC,IAAI,EAAC,MAAM,CAAA;IACpB,QAAQ,CAAC,IAAI,EAAC,MAAM,CAAA;IACpB,QAAQ,CAAC,WAAW,EAAC,MAAM,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC/B,QAAQ,CAAC,WAAW,EAAC,SAAS,MAAM,EAAE,CAAA;IACtC,QAAQ,CAAC,MAAM,EAAC,MAAM,GAAC,OAAO,CAAA;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAC,CAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,WAAW,KAAG,MAAM,CAAA;IAClE,QAAQ,CAAC,OAAO,EAAC,CAAC,KAAK,EAAC,KAAK,EAAC,OAAO,EAAC,WAAW,KAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CACpE,CAAA;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAC,MAAM,EAAE,UAAU,EAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAC,MAAM,CAAC,EAAC,MAAM,GAAC,aAAa,GAAC,QAAQ,CAAC,GAAC;IAAC,WAAW,CAAC,EAAC,SAAS,MAAM,EAAE,CAAC;IAAA,MAAM,CAAC,EAAC,MAAM,GAAC,OAAO,CAAA;CAAC,GAAE,IAAI,CAAC,KAAK,EAAC,MAAM,CAAC,CAGrL;AAED,MAAM,MAAM,QAAQ,GAAC;IAAC,IAAI,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,OAAO,CAAA;CAAC,CAAA;AAChD,MAAM,WAAW,UAAU;IAAG,IAAI,CAAC,MAAM,GAAC,OAAO,EAAE,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,OAAO,GAAE,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE;AAC/F,MAAM,MAAM,aAAa,GAAC;IAAC,MAAM,CAAC,EAAC,CAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,OAAO,EAAC,OAAO,EAAC,cAAc,KAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAAA,KAAK,CAAC,EAAC,CAAC,IAAI,EAAC,MAAM,EAAC,MAAM,EAAC,OAAO,EAAC,OAAO,EAAC,cAAc,KAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAAA,KAAK,CAAC,EAAC,CAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,OAAO,EAAC,OAAO,EAAC,cAAc,KAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAAC,CAAA;AAE9P,wBAAgB,gBAAgB,CAAC,KAAK,EAAC,SAAS,IAAI,CAAC,GAAG,EAAC,GAAG,CAAC,EAAE,EAAC,OAAO,EAAC,cAAc,EAAC,SAAS,CAAC,EAAC,CAAC,WAAW,EAAC,SAAS,MAAM,EAAE,KAAG,OAAO,CAAC,OAAO,CAAC,EAAC,SAAS,GAAC,aAAgB,GAAE,UAAU,CAwBzL"}
package/dist/tools.js CHANGED
@@ -1,5 +1,8 @@
1
+ import { EffectInDoubtError } from './effects.js';
1
2
  export function defineTool(definition) {
2
- return Object.freeze({ kind: 'tool', permissions: definition.permissions ?? [], ...definition });
3
+ if (definition.effect === 'write' && !definition.idempotencyKey)
4
+ throw new Error(`Write tool ${definition.name} requires idempotencyKey`);
5
+ return Object.freeze({ kind: 'tool', permissions: definition.permissions ?? [], effect: definition.effect ?? 'read', ...definition });
3
6
  }
4
7
  export function createToolRunner(tools, context, authorize, lifecycle = {}) {
5
8
  const registry = new Map(tools.map(tool => [tool.name, tool]));
@@ -15,7 +18,25 @@ export function createToolRunner(tools, context, authorize, lifecycle = {}) {
15
18
  const span = context.telemetry.startSpan('captra.tool', { runId: context.runId, tool: name, tenantId: context.tenantId }), startedAt = Date.now();
16
19
  await context.emit({ type: 'tool.started', capability: name, detail: tool.description, data: { input: parsed } });
17
20
  try {
18
- let value = tool.output.parse(await tool.execute(parsed, context));
21
+ let value;
22
+ if (tool.effect === 'write') {
23
+ const key = tool.idempotencyKey(parsed, context), claim = await context.effects.claim(context.tenantId, tool.name, key);
24
+ if (claim.status === 'completed')
25
+ value = tool.output.parse(claim.output);
26
+ else if (claim.status === 'in_doubt')
27
+ throw new EffectInDoubtError(claim.receipt);
28
+ else
29
+ try {
30
+ value = tool.output.parse(await tool.execute(parsed, context));
31
+ await context.effects.complete(context.tenantId, tool.name, key, value);
32
+ }
33
+ catch (error) {
34
+ await context.effects.doubt(context.tenantId, tool.name, key, error instanceof Error ? error.message : 'Tool effect failed');
35
+ throw error;
36
+ }
37
+ }
38
+ else
39
+ value = tool.output.parse(await tool.execute(parsed, context));
19
40
  if (lifecycle.after)
20
41
  value = tool.output.parse(await lifecycle.after(name, value, context));
21
42
  await context.emit({ type: 'tool.completed', capability: name, detail: 'Tool call completed' });
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@captra-ai/core",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "Typed capability contracts and durable runtime for Captra.",
5
5
  "license": "MIT",
6
6
  "repository": {