@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 +11 -3
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +43 -8
- package/dist/agent.js.map +1 -1
- package/dist/budgets.d.ts +56 -0
- package/dist/budgets.d.ts.map +1 -0
- package/dist/budgets.js +62 -0
- package/dist/budgets.js.map +1 -0
- package/dist/core.d.ts +25 -5
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +61 -22
- package/dist/core.js.map +1 -1
- package/dist/effects.d.ts +36 -0
- package/dist/effects.d.ts.map +1 -0
- package/dist/effects.js +21 -0
- package/dist/effects.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/manifest.d.ts +1 -1
- package/dist/models.d.ts +9 -4
- package/dist/models.d.ts.map +1 -1
- package/dist/models.js.map +1 -1
- package/dist/protocol.d.ts +2 -1
- package/dist/protocol.d.ts.map +1 -1
- package/dist/stores.d.ts +18 -0
- package/dist/stores.d.ts.map +1 -1
- package/dist/stores.js +3 -0
- package/dist/stores.js.map +1 -1
- package/dist/tools.d.ts +4 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +23 -2
- package/dist/tools.js.map +1 -1
- package/package.json +1 -1
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?:
|
|
29
|
+
approval?: ApprovalPolicy;
|
|
22
30
|
idempotent?: boolean;
|
|
23
31
|
policy?: ExecutionPolicy;
|
|
24
32
|
budget?: AgentBudget;
|
package/dist/agent.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
-
|
|
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
|
-
|
|
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;
|
|
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"}
|
package/dist/budgets.js
ADDED
|
@@ -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
|
|
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:
|
|
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?:
|
|
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
|
|
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
|
};
|
package/dist/core.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAClC,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAClG,OAAO,EAAoB,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC3D,OAAO,EAAoB,KAAK,IAAI,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAA0B,KAAK,eAAe,EAAC,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACnG,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;
|
|
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:
|
|
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
|
|
90
|
-
await runs.
|
|
91
|
-
|
|
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(
|
|
115
|
+
return resultFor(waiting, capability);
|
|
96
116
|
}
|
|
97
|
-
await runs.
|
|
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.
|
|
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(
|
|
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
|
-
|
|
119
|
-
|
|
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`);
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
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}`);
|
|
171
|
-
throw new Error(`Run ${runId} cannot be cancelled`);
|
|
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"}
|
package/dist/effects.js
ADDED
|
@@ -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
package/dist/index.d.ts.map
CHANGED
|
@@ -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
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"}
|
package/dist/manifest.d.ts
CHANGED
|
@@ -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: "
|
|
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
|
};
|
package/dist/models.d.ts.map
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
|
package/dist/models.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"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"}
|
package/dist/protocol.d.ts
CHANGED
|
@@ -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;
|
package/dist/protocol.d.ts.map
CHANGED
|
@@ -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;
|
|
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>;
|
package/dist/stores.d.ts.map
CHANGED
|
@@ -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;
|
|
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); }
|
package/dist/stores.js.map
CHANGED
|
@@ -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":"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"}
|
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;
|
package/dist/tools.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
-
|
|
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
|
|
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":"
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAejD,MAAM,UAAU,UAAU,CAAe,UAAyH;IAChK,IAAG,UAAU,CAAC,MAAM,KAAG,OAAO,IAAE,CAAC,UAAU,CAAC,cAAc;QAAC,MAAM,IAAI,KAAK,CAAC,cAAc,UAAU,CAAC,IAAI,0BAA0B,CAAC,CAAA;IACnI,OAAO,MAAM,CAAC,MAAM,CAAC,EAAC,IAAI,EAAC,MAAe,EAAC,WAAW,EAAC,UAAU,CAAC,WAAW,IAAE,EAAE,EAAC,MAAM,EAAC,UAAU,CAAC,MAAM,IAAE,MAAM,EAAC,GAAG,UAAU,EAAC,CAAC,CAAA;AACpI,CAAC;AAMD,MAAM,UAAU,gBAAgB,CAAC,KAA8B,EAAC,OAAsB,EAAC,SAA4D,EAAC,YAAwB,EAAE;IAC5K,MAAM,QAAQ,GAAC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAA,EAAE,CAAA,CAAC,IAAI,CAAC,IAAI,EAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACzD,OAAO,EAAC,KAAK,CAAC,IAAI,CAAS,IAAW,EAAC,KAAa;YAClD,MAAM,IAAI,GAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAC7B,IAAG,CAAC,IAAI;gBAAC,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAA;YACjD,IAAG,SAAS,IAAE,CAAC,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAAC,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAA;YACpG,IAAI,MAAM,GAAS,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAAA,IAAG,SAAS,CAAC,MAAM;gBAAC,MAAM,GAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,SAAS,CAAC,MAAM,CAAC,IAAI,EAAC,MAAM,EAAC,OAAO,CAAC,CAAC,CAAA;YACnI,MAAM,IAAI,GAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,EAAC,EAAC,KAAK,EAAC,OAAO,CAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC,QAAQ,EAAC,OAAO,CAAC,QAAQ,EAAC,CAAC,EAAC,SAAS,GAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAAA,MAAM,OAAO,CAAC,IAAI,CAAC,EAAC,IAAI,EAAC,cAAc,EAAC,UAAU,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,CAAC,WAAW,EAAC,IAAI,EAAC,EAAC,KAAK,EAAC,MAAM,EAAC,EAAC,CAAC,CAAA;YAC1O,IAAG,CAAC;gBACF,IAAI,KAAa,CAAA;gBACjB,IAAG,IAAI,CAAC,MAAM,KAAG,OAAO,EAAC,CAAC;oBACxB,MAAM,GAAG,GAAC,IAAI,CAAC,cAAe,CAAC,MAAM,EAAC,OAAO,CAAC,EAAC,KAAK,GAAC,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAC,IAAI,CAAC,IAAI,EAAC,GAAG,CAAC,CAAA;oBAChH,IAAG,KAAK,CAAC,MAAM,KAAG,WAAW;wBAAC,KAAK,GAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;yBAC9D,IAAG,KAAK,CAAC,MAAM,KAAG,UAAU;wBAAC,MAAM,IAAI,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;;wBACxE,IAAG,CAAC;4BAAA,KAAK,GAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAC,OAAO,CAAC,CAAC,CAAC;4BAAA,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAC,IAAI,CAAC,IAAI,EAAC,GAAG,EAAC,KAAK,CAAC,CAAA;wBAAA,CAAC;wBAAA,OAAM,KAAK,EAAC,CAAC;4BAAA,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAC,IAAI,CAAC,IAAI,EAAC,GAAG,EAAC,KAAK,YAAY,KAAK,CAAA,CAAC,CAAA,KAAK,CAAC,OAAO,CAAA,CAAC,CAAA,oBAAoB,CAAC,CAAC;4BAAA,MAAM,KAAK,CAAA;wBAAA,CAAC;gBAC3R,CAAC;;oBAAK,KAAK,GAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAC,OAAO,CAAC,CAAC,CAAA;gBACjE,IAAG,SAAS,CAAC,KAAK;oBAAC,KAAK,GAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,SAAS,CAAC,KAAK,CAAC,IAAI,EAAC,KAAK,EAAC,OAAO,CAAC,CAAC,CAAA;gBACrF,MAAM,OAAO,CAAC,IAAI,CAAC,EAAC,IAAI,EAAC,gBAAgB,EAAC,UAAU,EAAC,IAAI,EAAC,MAAM,EAAC,qBAAqB,EAAC,CAAC,CAAC;gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAC,WAAW,CAAC,CAAC;gBAAA,IAAI,CAAC,GAAG,EAAE,CAAC;gBAAA,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,sBAAsB,EAAC,IAAI,CAAC,GAAG,EAAE,GAAC,SAAS,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,MAAM,EAAC,WAAW,EAAC,CAAC,CAAA;gBACrP,OAAO,KAAe,CAAA;YACxB,CAAC;YAAA,OAAM,KAAK,EAAC,CAAC;gBACZ,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAC,KAAK,EAAC,OAAO,CAAC,CAAC;gBAAA,MAAM,OAAO,CAAC,IAAI,CAAC,EAAC,IAAI,EAAC,aAAa,EAAC,UAAU,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,YAAY,KAAK,CAAA,CAAC,CAAA,KAAK,CAAC,OAAO,CAAA,CAAC,CAAA,kBAAkB,EAAC,CAAC,CAAC;gBAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAC,QAAQ,CAAC,CAAC;gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAAA,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,sBAAsB,EAAC,CAAC,EAAC,EAAC,IAAI,EAAC,IAAI,EAAC,CAAC,CAAA;gBAC1R,MAAM,KAAK,CAAA;YACb,CAAC;QACH,CAAC,EAAC,CAAA;AACJ,CAAC"}
|