@deepagents/context 4.3.0 → 6.0.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/README.md +51 -7
- package/dist/browser.d.ts +5 -3
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +69 -43
- package/dist/browser.js.map +3 -3
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3615 -2905
- package/dist/index.js.map +4 -4
- package/dist/lib/advisor.d.ts +2 -2
- package/dist/lib/agent.d.ts +22 -10
- package/dist/lib/agent.d.ts.map +1 -1
- package/dist/lib/chain-summary.d.ts +8 -0
- package/dist/lib/chain-summary.d.ts.map +1 -1
- package/dist/lib/chat.d.ts +2 -2
- package/dist/lib/chat.d.ts.map +1 -1
- package/dist/lib/engine.d.ts +45 -75
- package/dist/lib/engine.d.ts.map +1 -1
- package/dist/lib/fragments/plan.d.ts +13 -0
- package/dist/lib/fragments/plan.d.ts.map +1 -0
- package/dist/lib/fragments/reminders/src/evaluate.d.ts +1 -1
- package/dist/lib/fragments/reminders/src/index.d.ts +1 -1
- package/dist/lib/fragments/reminders/src/index.d.ts.map +1 -1
- package/dist/lib/fragments/reminders/src/predicates/combinators.d.ts +8 -8
- package/dist/lib/fragments/reminders/src/predicates/combinators.d.ts.map +1 -1
- package/dist/lib/fragments/reminders/src/predicates/once.d.ts +1 -1
- package/dist/lib/fragments/reminders/src/predicates/once.d.ts.map +1 -1
- package/dist/lib/fragments/reminders/src/predicates/tool.d.ts +35 -2
- package/dist/lib/fragments/reminders/src/predicates/tool.d.ts.map +1 -1
- package/dist/lib/fragments/reminders/src/reminders.d.ts +9 -29
- package/dist/lib/fragments/reminders/src/reminders.d.ts.map +1 -1
- package/dist/lib/fragments/reminders/src/types.d.ts +42 -15
- package/dist/lib/fragments/reminders/src/types.d.ts.map +1 -1
- package/dist/lib/guardrail.d.ts +2 -2
- package/dist/lib/guardrail.d.ts.map +1 -1
- package/dist/lib/repair.d.ts +2 -2
- package/dist/lib/sandbox/agent-os-sandbox.d.ts +1 -1
- package/dist/lib/sandbox/agent-os-sandbox.d.ts.map +1 -1
- package/dist/lib/sandbox/apple-container-sandbox.d.ts +2 -0
- package/dist/lib/sandbox/apple-container-sandbox.d.ts.map +1 -1
- package/dist/lib/sandbox/bash-exception.d.ts +1 -1
- package/dist/lib/sandbox/bash-exception.d.ts.map +1 -1
- package/dist/lib/sandbox/bash-tool.d.ts +7 -42
- package/dist/lib/sandbox/bash-tool.d.ts.map +1 -1
- package/dist/lib/sandbox/container-sandbox.d.ts +2 -2
- package/dist/lib/sandbox/container-sandbox.d.ts.map +1 -1
- package/dist/lib/sandbox/daytona-sandbox.d.ts.map +1 -1
- package/dist/lib/sandbox/docker-sandbox.d.ts +2 -3
- package/dist/lib/sandbox/docker-sandbox.d.ts.map +1 -1
- package/dist/lib/sandbox/index.d.ts +0 -3
- package/dist/lib/sandbox/index.d.ts.map +1 -1
- package/dist/lib/sandbox/installers/installer.d.ts +1 -1
- package/dist/lib/sandbox/installers/installer.d.ts.map +1 -1
- package/dist/lib/sandbox/microsandbox-sandbox.d.ts.map +1 -1
- package/dist/lib/sandbox/strace/file-changes.d.ts +4 -10
- package/dist/lib/sandbox/strace/file-changes.d.ts.map +1 -1
- package/dist/lib/sandbox/types.d.ts +79 -32
- package/dist/lib/sandbox/types.d.ts.map +1 -1
- package/dist/lib/skills/fragments.d.ts +11 -10
- package/dist/lib/skills/fragments.d.ts.map +1 -1
- package/dist/lib/skills/frontmatter.d.ts +16 -0
- package/dist/lib/skills/frontmatter.d.ts.map +1 -0
- package/dist/lib/skills/index.d.ts +11 -10
- package/dist/lib/skills/index.d.ts.map +1 -1
- package/dist/lib/skills/skill-reminder.d.ts +2 -2
- package/dist/lib/skills/skill-reminder.d.ts.map +1 -1
- package/dist/lib/skills/types.d.ts +5 -23
- package/dist/lib/skills/types.d.ts.map +1 -1
- package/dist/lib/store/postgres.store.d.ts +2 -2
- package/dist/lib/store/postgres.store.d.ts.map +1 -1
- package/dist/lib/store/sqlite.store.d.ts +2 -2
- package/dist/lib/store/sqlite.store.d.ts.map +1 -1
- package/dist/lib/store/sqlserver.store.d.ts +2 -2
- package/dist/lib/store/sqlserver.store.d.ts.map +1 -1
- package/dist/lib/store/store.d.ts +5 -4
- package/dist/lib/store/store.d.ts.map +1 -1
- package/dist/lib/stream/postgres.stream-store.d.ts +2 -1
- package/dist/lib/stream/postgres.stream-store.d.ts.map +1 -1
- package/dist/lib/stream/sqlite.stream-store.d.ts +2 -1
- package/dist/lib/stream/sqlite.stream-store.d.ts.map +1 -1
- package/dist/lib/stream/stream-manager.d.ts +4 -0
- package/dist/lib/stream/stream-manager.d.ts.map +1 -1
- package/dist/lib/stream/stream-store.d.ts +16 -0
- package/dist/lib/stream/stream-store.d.ts.map +1 -1
- package/dist/lib/telemetry/console-telemetry.d.ts +8 -0
- package/dist/lib/telemetry/console-telemetry.d.ts.map +1 -0
- package/dist/lib/telemetry/create-telemetry-integration.d.ts +6 -0
- package/dist/lib/telemetry/create-telemetry-integration.d.ts.map +1 -0
- package/dist/lib/telemetry/file/file-telemetry.d.ts +9 -0
- package/dist/lib/telemetry/file/file-telemetry.d.ts.map +1 -0
- package/dist/lib/telemetry/file/index.d.ts +2 -0
- package/dist/lib/telemetry/file/index.d.ts.map +1 -0
- package/dist/lib/telemetry/file/index.js +307 -0
- package/dist/lib/telemetry/file/index.js.map +7 -0
- package/dist/lib/telemetry/index.d.ts +3 -0
- package/dist/lib/telemetry/index.d.ts.map +1 -0
- package/dist/lib/telemetry/index.js +291 -0
- package/dist/lib/telemetry/index.js.map +7 -0
- package/dist/lib/telemetry/redact-telemetry-event.d.ts +2 -0
- package/dist/lib/telemetry/redact-telemetry-event.d.ts.map +1 -0
- package/dist/lib/telemetry/safe-serialize.d.ts +8 -0
- package/dist/lib/telemetry/safe-serialize.d.ts.map +1 -0
- package/dist/lib/tracing/index.js +47 -113
- package/dist/lib/tracing/index.js.map +2 -2
- package/dist/lib/tracing/openai-traces-integration.d.ts +2 -2
- package/dist/lib/tracing/openai-traces-integration.d.ts.map +1 -1
- package/dist/lib/tracing/serialization.d.ts.map +1 -1
- package/package.json +33 -22
- package/dist/lib/sandbox/abort.d.ts +0 -24
- package/dist/lib/sandbox/abort.d.ts.map +0 -1
- package/dist/lib/sandbox/bash-meta.d.ts +0 -10
- package/dist/lib/sandbox/bash-meta.d.ts.map +0 -1
- package/dist/lib/sandbox/upload-skills.d.ts +0 -20
- package/dist/lib/sandbox/upload-skills.d.ts.map +0 -1
- package/dist/lib/sandbox/walk.d.ts +0 -17
- package/dist/lib/sandbox/walk.d.ts.map +0 -1
- package/dist/lib/skills/loader.d.ts +0 -28
- package/dist/lib/skills/loader.d.ts.map +0 -1
- package/dist/spec/test/global-setup.d.ts +0 -4
- package/dist/spec/test/global-setup.d.ts.map +0 -1
- package/dist/spec/test/helpers/sqlite-container.d.ts +0 -19
- package/dist/spec/test/helpers/sqlite-container.d.ts.map +0 -1
package/dist/lib/advisor.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { LanguageModelV4 } from '@ai-sdk/provider';
|
|
2
2
|
import { type LanguageModelUsage, type Tool } from 'ai';
|
|
3
3
|
import type { ContextFragment } from './fragments.ts';
|
|
4
|
-
export type AgentModel =
|
|
4
|
+
export type AgentModel = LanguageModelV4;
|
|
5
5
|
export type AdvisorErrorCode = 'max_uses_exceeded' | 'too_many_requests' | 'overloaded' | 'prompt_too_long' | 'execution_time_exceeded' | 'unavailable';
|
|
6
6
|
export interface AdvisorUsage {
|
|
7
7
|
calls: number;
|
package/dist/lib/agent.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { JSONObject } from '@ai-sdk/provider';
|
|
2
|
-
import { type FlexibleSchema, type GenerateTextResult, type InferSchema, Output, type StreamTextResult, type StreamTextTransform, type Tool, type ToolChoice, type ToolSet, generateText } from 'ai';
|
|
3
|
-
import { type ContextEngine } from '../index.ts';
|
|
2
|
+
import { type FlexibleSchema, type GenerateTextResult, type InferSchema, Output, type StreamTextResult, type StreamTextTransform, type Tool, type ToolChoice, type ToolSet, generateText, streamText } from 'ai';
|
|
3
|
+
import { type ContextEngine, type PrepareStepInputProvider } from '../index.ts';
|
|
4
4
|
import { type AdvisorResult, type AgentModel, type AsAdvisorOptions } from './advisor.ts';
|
|
5
5
|
import { type Guardrail } from './guardrail.ts';
|
|
6
6
|
import type { AgentSandbox } from './sandbox/types.ts';
|
|
@@ -9,7 +9,7 @@ export interface SubagentToolInput {
|
|
|
9
9
|
input: string;
|
|
10
10
|
output?: string;
|
|
11
11
|
}
|
|
12
|
-
export type OutputExtractorFn<T = string> = (output: GenerateTextResult<ToolSet, any>) => T | Promise<T>;
|
|
12
|
+
export type OutputExtractorFn<T = string> = (output: GenerateTextResult<ToolSet, any, any>) => T | Promise<T>;
|
|
13
13
|
export interface CreateAgent<CIn, COut = CIn> {
|
|
14
14
|
name: string;
|
|
15
15
|
sandbox: AgentSandbox;
|
|
@@ -18,8 +18,13 @@ export interface CreateAgent<CIn, COut = CIn> {
|
|
|
18
18
|
model?: AgentModel;
|
|
19
19
|
toolChoice?: ToolChoice<Record<string, COut>>;
|
|
20
20
|
providerOptions?: Parameters<typeof generateText>[0]['providerOptions'];
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
telemetry?: Parameters<typeof generateText>[0]['telemetry'];
|
|
22
|
+
/**
|
|
23
|
+
* Ends the agent loop. Defaults to {@link DEFAULT_STOP_WHEN}. Raise it for a
|
|
24
|
+
* long agentic run that would otherwise stop mid-task; lower it to bound cost
|
|
25
|
+
* on an untrusted prompt.
|
|
26
|
+
*/
|
|
27
|
+
stopWhen?: Parameters<typeof streamText>[0]['stopWhen'];
|
|
23
28
|
/**
|
|
24
29
|
* Guardrails to apply during streaming.
|
|
25
30
|
* Each guardrail inspects text chunks and can trigger self-correction retries.
|
|
@@ -29,7 +34,14 @@ export interface CreateAgent<CIn, COut = CIn> {
|
|
|
29
34
|
* Maximum number of retry attempts when guardrails fail (default: 3).
|
|
30
35
|
*/
|
|
31
36
|
maxGuardrailRetries?: number;
|
|
37
|
+
/** Supplies durable user input before sampling and at safe step boundaries. */
|
|
38
|
+
prepareStepInput?: PrepareStepInputProvider;
|
|
32
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Default ceiling for the agent loop. Kept in one place so the entry points
|
|
42
|
+
* cannot drift; callers override it with `stopWhen` on `agent()`.
|
|
43
|
+
*/
|
|
44
|
+
export declare const DEFAULT_STOP_WHEN: import("ai").StopCondition<any, any>;
|
|
33
45
|
declare class Agent<CIn, COut = CIn> {
|
|
34
46
|
#private;
|
|
35
47
|
readonly tools: ToolSet;
|
|
@@ -39,7 +51,7 @@ declare class Agent<CIn, COut = CIn> {
|
|
|
39
51
|
constructor(options: CreateAgent<CIn, COut>);
|
|
40
52
|
generate<COut, CIn = COut>(contextVariables: CIn, config?: {
|
|
41
53
|
abortSignal?: AbortSignal;
|
|
42
|
-
}): Promise<GenerateTextResult<ToolSet, Output.Output<string, string, unknown>>>;
|
|
54
|
+
}): Promise<GenerateTextResult<ToolSet, any, Output.Output<string, string, unknown>>>;
|
|
43
55
|
/**
|
|
44
56
|
* Stream a response from the agent.
|
|
45
57
|
*
|
|
@@ -61,14 +73,14 @@ declare class Agent<CIn, COut = CIn> {
|
|
|
61
73
|
abortSignal?: AbortSignal;
|
|
62
74
|
transform?: StreamTextTransform<ToolSet> | StreamTextTransform<ToolSet>[];
|
|
63
75
|
maxRetries?: number;
|
|
64
|
-
}): Promise<StreamTextResult<ToolSet,
|
|
76
|
+
}): Promise<StreamTextResult<ToolSet, any, any>>;
|
|
65
77
|
asTool<T = string>(props?: {
|
|
66
78
|
toolDescription?: string;
|
|
67
79
|
outputExtractor?: OutputExtractorFn<T>;
|
|
68
80
|
/** Not sent to the model; surfaces on tool call/result and UI message parts */
|
|
69
81
|
metadata?: JSONObject;
|
|
70
82
|
toModelOutput?: Tool<SubagentToolInput, T | string>['toModelOutput'];
|
|
71
|
-
}): Tool<SubagentToolInput, string | T>;
|
|
83
|
+
}): Tool<SubagentToolInput, string | T, any>;
|
|
72
84
|
asAdvisor(options?: AsAdvisorOptions): AdvisorResult;
|
|
73
85
|
clone(overrides?: Partial<CreateAgent<CIn, COut>>): Agent<CIn, COut>;
|
|
74
86
|
}
|
|
@@ -87,7 +99,7 @@ export interface StructuredOutputOptions<TSchema extends FlexibleSchema> {
|
|
|
87
99
|
*/
|
|
88
100
|
sandbox?: AgentSandbox;
|
|
89
101
|
providerOptions?: Parameters<typeof generateText>[0]['providerOptions'];
|
|
90
|
-
|
|
102
|
+
telemetry?: Parameters<typeof generateText>[0]['telemetry'];
|
|
91
103
|
tools?: ToolSet;
|
|
92
104
|
}
|
|
93
105
|
/**
|
|
@@ -123,7 +135,7 @@ export interface StructuredOutputResult<TSchema extends FlexibleSchema> {
|
|
|
123
135
|
stream<CIn>(contextVariables?: CIn, config?: {
|
|
124
136
|
abortSignal?: AbortSignal;
|
|
125
137
|
transform?: StreamTextTransform<ToolSet> | StreamTextTransform<ToolSet>[];
|
|
126
|
-
}): Promise<StreamTextResult<ToolSet, Output.Output<unknown, unknown, unknown>>>;
|
|
138
|
+
}): Promise<StreamTextResult<ToolSet, any, Output.Output<unknown, unknown, unknown>>>;
|
|
127
139
|
}
|
|
128
140
|
export declare function structuredOutput<TSchema extends FlexibleSchema>(options: StructuredOutputOptions<TSchema>): StructuredOutputResult<TSchema>;
|
|
129
141
|
export {};
|
package/dist/lib/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/lib/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,MAAM,
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/lib/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,14 @@ export interface ChainSummary {
|
|
|
8
8
|
lastMessage?: UIMessage;
|
|
9
9
|
lastAssistantMessage?: UIMessage;
|
|
10
10
|
lastAssistantMessages?: UIMessage[];
|
|
11
|
+
/**
|
|
12
|
+
* One entry per assistant REPLY: the segments a reply was carved into by
|
|
13
|
+
* firing reminders, merged back together. A reply is everything the assistant
|
|
14
|
+
* produced in answer to one real user message (synthetic reminder users do
|
|
15
|
+
* not open a new reply). Window predicates count these, so their answer does
|
|
16
|
+
* not change when an unrelated reminder starts firing.
|
|
17
|
+
*/
|
|
18
|
+
lastAssistantReplies?: UIMessage[];
|
|
11
19
|
firedOnceIds: Set<string>;
|
|
12
20
|
}
|
|
13
21
|
export declare class ChainSummaryBuilder {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain-summary.d.ts","sourceRoot":"","sources":["../../src/lib/chain-summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAEpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAKtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,oBAAoB,CAAC,EAAE,SAAS,CAAC;IACjC,qBAAqB,CAAC,EAAE,SAAS,EAAE,CAAC;IACpC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC3B;
|
|
1
|
+
{"version":3,"file":"chain-summary.d.ts","sourceRoot":"","sources":["../../src/lib/chain-summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAEpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAKtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,oBAAoB,CAAC,EAAE,SAAS,CAAC;IACjC,qBAAqB,CAAC,EAAE,SAAS,EAAE,CAAC;IACpC;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,SAAS,EAAE,CAAC;IACnC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC3B;AAWD,qBAAa,mBAAmB;;IAW9B,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI;IAmDpC,aAAa,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAQ9C,KAAK,IAAI,YAAY;CAYtB"}
|
package/dist/lib/chat.d.ts
CHANGED
|
@@ -10,9 +10,9 @@ export interface ChatAgentLike<CIn> {
|
|
|
10
10
|
abortSignal?: AbortSignal;
|
|
11
11
|
transform?: StreamTextTransform<ToolSet> | StreamTextTransform<ToolSet>[];
|
|
12
12
|
maxRetries?: number;
|
|
13
|
-
}): Promise<StreamTextResult<ToolSet,
|
|
13
|
+
}): Promise<StreamTextResult<ToolSet, any, any>>;
|
|
14
14
|
}
|
|
15
|
-
export type ChatMessageMetadata = NonNullable<Parameters<StreamTextResult<ToolSet,
|
|
15
|
+
export type ChatMessageMetadata = NonNullable<Parameters<StreamTextResult<ToolSet, any, any>['toUIMessageStream']>[0]>['messageMetadata'];
|
|
16
16
|
export declare const defaultChatMessageMetadata: NonNullable<ChatMessageMetadata>;
|
|
17
17
|
export interface ChatOptions<CIn> {
|
|
18
18
|
contextVariables?: CIn;
|
package/dist/lib/chat.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/lib/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EAExB,KAAK,OAAO,EACZ,KAAK,SAAS,EAGf,MAAM,IAAI,CAAC;AAEZ,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,MAAM,WAAW,aAAa,CAAC,GAAG;IAChC,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,CACJ,gBAAgB,EAAE,GAAG,EACrB,MAAM,CAAC,EAAE;QACP,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,SAAS,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GACA,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/lib/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EAExB,KAAK,OAAO,EACZ,KAAK,SAAS,EAGf,MAAM,IAAI,CAAC;AAEZ,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD,MAAM,WAAW,aAAa,CAAC,GAAG;IAChC,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,YAAY,CAAC;IACtB,MAAM,CACJ,gBAAgB,EAAE,GAAG,EACrB,MAAM,CAAC,EAAE;QACP,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,SAAS,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GACA,OAAO,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;CACjD;AAED,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAC3C,UAAU,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CACxE,CAAC,iBAAiB,CAAC,CAAC;AAErB,eAAO,MAAM,0BAA0B,EAAE,WAAW,CAAC,mBAAmB,CAUvE,CAAC;AAEF,MAAM,WAAW,WAAW,CAAC,GAAG;IAC9B,gBAAgB,CAAC,EAAE,GAAG,CAAC;IACvB,SAAS,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1E,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC;IACrC,eAAe,CAAC,EAAE,mBAAmB,CAAC;IACtC,sBAAsB,CAAC,EAAE,CACvB,OAAO,EAAE,SAAS,KAEhB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,SAAS,GACT,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;CAClD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,IAAI,CAAC,GAAG,EAC5B,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,EACzB,OAAO,GAAE,WAAW,CAAC,GAAG,CAAM,iIAmF/B"}
|
package/dist/lib/engine.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ import { type ContextRenderer } from './renderers/abstract.renderer.ts';
|
|
|
6
6
|
import { type ValueResolver } from './resolvers/index.ts';
|
|
7
7
|
import type { AgentSandbox } from './sandbox/types.ts';
|
|
8
8
|
import { type SaveResult } from './save/save-pipeline.ts';
|
|
9
|
-
import type {
|
|
9
|
+
import type { AvailableSkill } from './skills/types.ts';
|
|
10
10
|
import { type BranchInfo, type CheckpointInfo, ContextStore, type GraphData, type MessageData, type StoredChatData } from './store/store.ts';
|
|
11
11
|
export type { SaveResult } from './save/save-pipeline.ts';
|
|
12
12
|
export { HeadConflictError } from './save/save-pipeline.ts';
|
|
@@ -50,6 +50,11 @@ export interface ContextEngineOptions {
|
|
|
50
50
|
/** Custom resolver chain (defaults to async, generator, function, promise, iterable) */
|
|
51
51
|
resolvers?: ValueResolver[];
|
|
52
52
|
}
|
|
53
|
+
export type PrepareStepInputProvider = () => Array<UIMessage & {
|
|
54
|
+
role: 'user';
|
|
55
|
+
}> | undefined | Promise<Array<UIMessage & {
|
|
56
|
+
role: 'user';
|
|
57
|
+
}> | undefined>;
|
|
53
58
|
/**
|
|
54
59
|
* Options for context inspection.
|
|
55
60
|
*/
|
|
@@ -142,6 +147,14 @@ export declare class ContextEngine {
|
|
|
142
147
|
* Return the model-ready conversation: persisted chain plus pending fragments,
|
|
143
148
|
* with empty assistant placeholders filtered out.
|
|
144
149
|
*
|
|
150
|
+
* A pending fragment that carries the id of an already-stored message is an
|
|
151
|
+
* UPDATE to that message, not a new one — the store upserts by id, and this
|
|
152
|
+
* must agree. Both chat() and the guardrail-retry path call
|
|
153
|
+
* writeAssistantSegment for the same step, so the streamed assistant is
|
|
154
|
+
* routinely persisted while a fragment for it is still pending; appending
|
|
155
|
+
* blindly duplicated it in the prompt and broke store/prompt parity on the
|
|
156
|
+
* next turn.
|
|
157
|
+
*
|
|
145
158
|
* For id-lookup use `headMessage()` instead — that one keeps placeholders.
|
|
146
159
|
*/
|
|
147
160
|
getMessages(): Promise<UIMessage[]>;
|
|
@@ -171,7 +184,7 @@ export declare class ContextEngine {
|
|
|
171
184
|
* Add fragments to the context.
|
|
172
185
|
*
|
|
173
186
|
* - Message fragments (user/assistant) are queued for persistence
|
|
174
|
-
* - Non-message fragments
|
|
187
|
+
* - Non-message fragments are cloned so lazy resolution stays engine-local
|
|
175
188
|
*/
|
|
176
189
|
set(...fragments: ContextFragment[]): this;
|
|
177
190
|
unset(fragmentId: string): void;
|
|
@@ -194,7 +207,7 @@ export declare class ContextEngine {
|
|
|
194
207
|
* .set(role('You are helpful'), user('Hello'));
|
|
195
208
|
*
|
|
196
209
|
* const { systemPrompt, messages } = await context.resolve();
|
|
197
|
-
* await generateText({
|
|
210
|
+
* await generateText({ instructions: systemPrompt, messages });
|
|
198
211
|
* ```
|
|
199
212
|
*/
|
|
200
213
|
resolve(options: ResolveOptions): Promise<ResolveResult>;
|
|
@@ -216,62 +229,36 @@ export declare class ContextEngine {
|
|
|
216
229
|
branch?: boolean;
|
|
217
230
|
}): Promise<SaveResult>;
|
|
218
231
|
/**
|
|
219
|
-
* Build the `prepareStep` hook that injects
|
|
220
|
-
*
|
|
221
|
-
*
|
|
222
|
-
*
|
|
223
|
-
*
|
|
224
|
-
*
|
|
225
|
-
*
|
|
226
|
-
*
|
|
227
|
-
*
|
|
228
|
-
*
|
|
229
|
-
*
|
|
230
|
-
*
|
|
231
|
-
*
|
|
232
|
-
*
|
|
233
|
-
* All state is closure-local (a fresh SteerSession per call), so overlapping
|
|
234
|
-
* streams / guardrail retries never share a cursor.
|
|
235
|
-
*
|
|
236
|
-
* The session is also consumed by writeAssistantSegment, which carves the
|
|
237
|
-
* streamed assistant message into the matching `[assistant, steer, assistant]`
|
|
238
|
-
* split — so the stored chain reproduces exactly the prompt the model saw
|
|
239
|
-
* (store/prompt parity).
|
|
232
|
+
* Build the `prepareStep` hook that injects reminders between model steps.
|
|
233
|
+
* Tool-output reminders are evaluated against the preceding step's completed
|
|
234
|
+
* tool results and appended after the SDK's tool-result message. Steer
|
|
235
|
+
* reminders share the same synthetic user message when both fire together.
|
|
236
|
+
*
|
|
237
|
+
* Each eligible boundary evaluates its reminders independently. A predicate
|
|
238
|
+
* that remains true fires at every boundary; compose `once()` when a durable
|
|
239
|
+
* latch is desired. AI SDK v7 carries prepared message overrides forward to
|
|
240
|
+
* subsequent steps.
|
|
241
|
+
*
|
|
242
|
+
* Each injected input is persisted with a following assistant placeholder
|
|
243
|
+
* before prepareStep returns. writeAssistantSegment fills that placeholder,
|
|
244
|
+
* so process loss cannot make a delivered reminder eligible again and later
|
|
245
|
+
* requests reproduce the exact prompt prefix the model saw.
|
|
240
246
|
*/
|
|
241
|
-
|
|
247
|
+
createPrepareStep<TOOLS extends Record<string, Tool> = Record<string, Tool>>(options?: {
|
|
248
|
+
steer?: boolean;
|
|
249
|
+
additionalInput?: PrepareStepInputProvider;
|
|
250
|
+
sandbox?: AgentSandbox;
|
|
251
|
+
}): PrepareStepFunction<TOOLS>;
|
|
242
252
|
/**
|
|
243
|
-
* Persist the streamed assistant message
|
|
244
|
-
*
|
|
245
|
-
*
|
|
246
|
-
*
|
|
247
|
-
*
|
|
248
|
-
*
|
|
249
|
-
*
|
|
250
|
-
* is updated in place. With no active steer it degrades to a plain in-place
|
|
251
|
-
* write of the whole message to the reserved head.
|
|
253
|
+
* Persist the streamed assistant message into its reserved segment.
|
|
254
|
+
*
|
|
255
|
+
* Called from chat()'s onStepEnd/onEnd (and the guardrail path) with the
|
|
256
|
+
* cumulative response message. prepareStep has already persisted reminder
|
|
257
|
+
* boundaries and reserved the open segment id, so this only updates that
|
|
258
|
+
* segment in place with the cumulative prefix removed. With no fired reminder
|
|
259
|
+
* it writes the whole message to the original reserved head.
|
|
252
260
|
*/
|
|
253
261
|
writeAssistantSegment(message: UIMessage): Promise<void>;
|
|
254
|
-
/**
|
|
255
|
-
* Evaluate `target: 'tool-output'` reminders against a tool's raw result and
|
|
256
|
-
* return the (possibly wrapped) output.
|
|
257
|
-
*
|
|
258
|
-
* Called by the agent's tool wrapper right after each `execute()` resolves.
|
|
259
|
-
* The wrapper passes the executing `call`, surfaced as
|
|
260
|
-
* {@link WhenContext.executingTool}, so a predicate can gate on the live
|
|
261
|
-
* tool's name/input/result — the only point at which the call being wrapped
|
|
262
|
-
* is observable.
|
|
263
|
-
* The store keeps the wrapped value with a host-only marker; the model-facing
|
|
264
|
-
* projection strips that marker while preserving `result` + `systemReminder`.
|
|
265
|
-
*
|
|
266
|
-
* Returns the output unchanged when no tool-output reminder fires. Without a
|
|
267
|
-
* persisted user message there is no turn context to evaluate against
|
|
268
|
-
* (e.g. asTool forks that set a pending user without saving), so the output
|
|
269
|
-
* passes through untouched.
|
|
270
|
-
*/
|
|
271
|
-
applyToolOutputReminders(output: unknown, call?: {
|
|
272
|
-
toolName: string;
|
|
273
|
-
input: unknown;
|
|
274
|
-
}): Promise<unknown>;
|
|
275
262
|
/**
|
|
276
263
|
* Estimate token count and cost for the full context.
|
|
277
264
|
*
|
|
@@ -427,7 +414,7 @@ export declare class ContextEngine {
|
|
|
427
414
|
* @example
|
|
428
415
|
* ```ts
|
|
429
416
|
* // In onFinish callback
|
|
430
|
-
* const usage = await result.
|
|
417
|
+
* const usage = await result.usage;
|
|
431
418
|
* await context.trackUsage(usage);
|
|
432
419
|
* ```
|
|
433
420
|
*/
|
|
@@ -451,25 +438,8 @@ export declare class ContextEngine {
|
|
|
451
438
|
* @returns A new ContextEngine with copied fragments and empty message history
|
|
452
439
|
*/
|
|
453
440
|
fork(): ContextEngine;
|
|
454
|
-
/**
|
|
455
|
-
|
|
456
|
-
* Returns unified mount array where entries with `name` are individual skills.
|
|
457
|
-
*
|
|
458
|
-
* @example
|
|
459
|
-
* ```ts
|
|
460
|
-
* const context = new ContextEngine({ store, chatId, userId })
|
|
461
|
-
* .set(skills({ paths: [{ host: './skills', sandbox: '/skills' }] }));
|
|
462
|
-
*
|
|
463
|
-
* const { mounts } = context.getSkillMounts();
|
|
464
|
-
* // mounts: [{ name: 'bi-dashboards', host: './skills/bi-dashboards/SKILL.md', sandbox: '/skills/bi-dashboards/SKILL.md' }]
|
|
465
|
-
*
|
|
466
|
-
* // Extract skills only (entries with name)
|
|
467
|
-
* const skills = mounts.filter(m => m.name);
|
|
468
|
-
* ```
|
|
469
|
-
*/
|
|
470
|
-
getSkillMounts(): {
|
|
471
|
-
mounts: SkillPathMapping[];
|
|
472
|
-
};
|
|
441
|
+
/** Return the explicit skills from the first available_skills fragment. */
|
|
442
|
+
getAvailableSkills(): AvailableSkill[];
|
|
473
443
|
/**
|
|
474
444
|
* Inspect the full context state for debugging.
|
|
475
445
|
* Returns a JSON-serializable object with context information.
|
package/dist/lib/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/lib/engine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/lib/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type ContextFragment } from '../fragments.ts';
|
|
2
|
+
import type { WhenPredicate } from './reminders/src/types.ts';
|
|
3
|
+
declare function instructions(): ContextFragment;
|
|
4
|
+
declare function review(options: {
|
|
5
|
+
when: WhenPredicate;
|
|
6
|
+
}): ContextFragment;
|
|
7
|
+
export declare const plan: {
|
|
8
|
+
path: string;
|
|
9
|
+
instructions: typeof instructions;
|
|
10
|
+
review: typeof review;
|
|
11
|
+
};
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/lib/fragments/plan.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,eAAe,EAAY,MAAM,iBAAiB,CAAC;AAGjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AA8U9D,iBAAS,YAAY,IAAI,eAAe,CAEvC;AAED,iBAAS,MAAM,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GAAG,eAAe,CAKjE;AAED,eAAO,MAAM,IAAI;;;;CAAiD,CAAC"}
|
|
@@ -12,7 +12,7 @@ export interface FiredReminder {
|
|
|
12
12
|
* Each predicate and each async text resolver is isolated: a throwing/rejecting
|
|
13
13
|
* `when()` or reminder text is treated as "did not fire" and logged, never
|
|
14
14
|
* propagated. This is the single evaluation core shared by the save pipeline
|
|
15
|
-
* and
|
|
15
|
+
* and prepare-step loop, so a misbehaving user predicate can never tear down a
|
|
16
16
|
* save or an in-flight assistant turn.
|
|
17
17
|
*/
|
|
18
18
|
export declare function evaluateFiredReminders(configs: ConditionalReminder[], whenCtx: WhenContext): Promise<FiredReminder[]>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from './reminders.ts';
|
|
2
|
-
export type { BaseWhenCtx, ConditionalReminder, ReminderContext, ReminderFragment, ReminderOptions, ReminderRange, ReminderResolution, ReminderTarget, ReminderText, SyncReminderText,
|
|
2
|
+
export type { BaseWhenCtx, ConditionalReminder, ReminderContext, ReminderFragment, ReminderOptions, ReminderRange, ReminderResolution, ReminderTarget, ReminderText, SyncReminderText, SyntheticReminderMetadata, ToolOutcome, UserReminderMetadata, WhenContext, WhenPredicate, } from './types.ts';
|
|
3
3
|
export * from './evaluate.ts';
|
|
4
4
|
export * from './predicates/index.ts';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/fragments/reminders/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,YAAY,EACV,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/fragments/reminders/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,YAAY,EACV,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,yBAAyB,EACzB,WAAW,EACX,oBAAoB,EACpB,WAAW,EACX,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC"}
|
|
@@ -5,25 +5,25 @@ export declare function or(...predicates: WhenPredicate[]): AsyncWhenPredicate;
|
|
|
5
5
|
export declare function not(predicate: WhenPredicate): AsyncWhenPredicate;
|
|
6
6
|
/**
|
|
7
7
|
* Existential window: fires when `predicate` matches AT LEAST ONE of the last
|
|
8
|
-
* N assistant
|
|
8
|
+
* N assistant replies.
|
|
9
9
|
*
|
|
10
|
-
* Rebinds ONLY `lastAssistantMessage
|
|
11
|
-
* fields (currentMessage, content, turn, usage, elapsed) is a
|
|
12
|
-
* stay frozen at the outer ctx values. Intended for tool
|
|
13
|
-
* `lastAssistantLength`.
|
|
10
|
+
* Rebinds ONLY `lastAssistantMessage`, to the merged reply. Wrapping predicates
|
|
11
|
+
* that read other fields (currentMessage, content, turn, usage, elapsed) is a
|
|
12
|
+
* no-op — those stay frozen at the outer ctx values. Intended for tool
|
|
13
|
+
* predicates and `lastAssistantLength`.
|
|
14
14
|
*
|
|
15
15
|
* Short-circuits on first match. Returns false when no chain history.
|
|
16
16
|
*/
|
|
17
17
|
export declare function withinLastN(n: number, predicate: WhenPredicate): AsyncWhenPredicate;
|
|
18
18
|
/**
|
|
19
19
|
* Universal window: fires only when `predicate` matches EVERY ONE of the last
|
|
20
|
-
* N assistant
|
|
20
|
+
* N assistant replies. Use for streak detection (e.g. "no tool use in any of
|
|
21
21
|
* the last 3 replies").
|
|
22
22
|
*
|
|
23
23
|
* Rebinds ONLY `lastAssistantMessage`, same scope rules as `withinLastN`.
|
|
24
24
|
*
|
|
25
|
-
* Short-circuits on first non-match. Returns false when fewer than N
|
|
26
|
-
*
|
|
25
|
+
* Short-circuits on first non-match. Returns false when fewer than N replies
|
|
26
|
+
* exist — a streak of N requires at least N candidates.
|
|
27
27
|
*/
|
|
28
28
|
export declare function everyOfLastN(n: number, predicate: WhenPredicate): AsyncWhenPredicate;
|
|
29
29
|
//# sourceMappingURL=combinators.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combinators.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/fragments/reminders/src/predicates/combinators.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"combinators.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/fragments/reminders/src/predicates/combinators.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE9D,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAExE,wBAAgB,GAAG,CAAC,GAAG,UAAU,EAAE,aAAa,EAAE,GAAG,kBAAkB,CAOtE;AAED,wBAAgB,EAAE,CAAC,GAAG,UAAU,EAAE,aAAa,EAAE,GAAG,kBAAkB,CAOrE;AAED,wBAAgB,GAAG,CAAC,SAAS,EAAE,aAAa,GAAG,kBAAkB,CAEhE;AAgBD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CACzB,CAAC,EAAE,MAAM,EACT,SAAS,EAAE,aAAa,GACvB,kBAAkB,CAUpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,CAAC,EAAE,MAAM,EACT,SAAS,EAAE,aAAa,GACvB,kBAAkB,CAYpB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { WhenPredicate } from '../types.ts';
|
|
2
2
|
/**
|
|
3
|
-
* Durable fire-once latch
|
|
3
|
+
* Durable fire-once latch composed into a reminder's `when`.
|
|
4
4
|
*
|
|
5
5
|
* Two effects, both on `ctx` and nothing else:
|
|
6
6
|
* - READ: returns false once `id` has fired in this conversation (the persisted
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"once.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/fragments/reminders/src/predicates/once.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,
|
|
1
|
+
{"version":3,"file":"once.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/fragments/reminders/src/predicates/once.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,CAc9C"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type ToolUIPart } from 'ai';
|
|
2
|
-
import type { CountSpec, WhenPredicate } from '../types.ts';
|
|
1
|
+
import { type ToolUIPart, type UIMessage } from 'ai';
|
|
2
|
+
import type { CountSpec, ToolOutcome, WhenPredicate } from '../types.ts';
|
|
3
3
|
export type ToolNameSpec = string | ((name: string) => boolean);
|
|
4
4
|
export interface ToolCallOptions {
|
|
5
5
|
name?: ToolNameSpec;
|
|
@@ -8,9 +8,42 @@ export interface ToolCallOptions {
|
|
|
8
8
|
output?: (output: unknown) => boolean;
|
|
9
9
|
errorText?: (text: string) => boolean;
|
|
10
10
|
}
|
|
11
|
+
export interface ToolOutputOptions {
|
|
12
|
+
name?: ToolNameSpec;
|
|
13
|
+
state?: ToolOutcome['state'];
|
|
14
|
+
input?: (input: unknown) => boolean;
|
|
15
|
+
output?: (output: unknown) => boolean;
|
|
16
|
+
error?: (error: unknown) => boolean;
|
|
17
|
+
errorText?: (text: string) => boolean;
|
|
18
|
+
reason?: (reason: string | undefined) => boolean;
|
|
19
|
+
}
|
|
11
20
|
export declare function toolCall(options: ToolCallOptions): WhenPredicate;
|
|
21
|
+
/** Match the terminal tool outcome currently being evaluated. */
|
|
22
|
+
export declare function toolOutput(options?: ToolOutputOptions): WhenPredicate;
|
|
12
23
|
export declare function toolCalled(name: ToolNameSpec): WhenPredicate;
|
|
13
24
|
export declare function toolFailed(name: ToolNameSpec): WhenPredicate;
|
|
14
25
|
export declare function anyToolCalled(): WhenPredicate;
|
|
15
26
|
export declare function toolCallCount(name: ToolNameSpec, spec: CountSpec): WhenPredicate;
|
|
27
|
+
/**
|
|
28
|
+
* Match after `n` terminal tool outcomes in the current assistant segment.
|
|
29
|
+
*
|
|
30
|
+
* Steer and tool-output reminders carve the assistant reply when they fire, so
|
|
31
|
+
* the segment count restarts before delivery. The predicate itself is
|
|
32
|
+
* stateless: identical context produces an identical result.
|
|
33
|
+
*/
|
|
34
|
+
export declare function everyNToolCalls(n: number): WhenPredicate;
|
|
35
|
+
/**
|
|
36
|
+
* How many times `name` has failed in a row, counting back from the newest
|
|
37
|
+
* result. A success ends the run.
|
|
38
|
+
*
|
|
39
|
+
* Reads `lastAssistantMessages` (every assistant segment), NOT
|
|
40
|
+
* `lastAssistantMessage`: a firing reminder carves the assistant message at its
|
|
41
|
+
* boundary, so the single current message only holds the parts since the last
|
|
42
|
+
* fire and a streak read from it would reset to 1 on every fire.
|
|
43
|
+
*/
|
|
44
|
+
export declare function toolFailureStreak(ctx: {
|
|
45
|
+
lastAssistantMessages?: UIMessage[];
|
|
46
|
+
}, name: ToolNameSpec): number;
|
|
47
|
+
/** Gate on a run of consecutive failures, e.g. `toolFailedStreak('bash', { gte: 3 })`. */
|
|
48
|
+
export declare function toolFailedStreak(name: ToolNameSpec, spec: CountSpec): WhenPredicate;
|
|
16
49
|
//# sourceMappingURL=tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/fragments/reminders/src/predicates/tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/fragments/reminders/src/predicates/tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAsB,MAAM,IAAI,CAAC;AAEzE,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGzE,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC;AAEhE,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAC5B,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IACpC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IACtC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CACvC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,KAAK,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IACpC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IACtC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IACpC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC;CAClD;AAqBD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,aAAa,CAkChE;AAED,iEAAiE;AACjE,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,aAAa,CAgCzE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,CAE5D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,CAE5D;AAED,wBAAgB,aAAa,IAAI,aAAa,CAK7C;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,SAAS,GACd,aAAa,CASf;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa,CAWxD;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE;IAAE,qBAAqB,CAAC,EAAE,SAAS,EAAE,CAAA;CAAE,EAC5C,IAAI,EAAE,YAAY,GACjB,MAAM,CAUR;AAED,0FAA0F;AAC1F,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,SAAS,GACd,aAAa,CAGf"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type UIMessage } from 'ai';
|
|
2
2
|
import { type ContextFragment } from '../../../fragments.ts';
|
|
3
|
-
import type { ConditionalReminder, ReminderContext, ReminderOptions, ReminderRange, ReminderResolution, ReminderText, SyncReminderText,
|
|
3
|
+
import type { ConditionalReminder, ReminderContext, ReminderOptions, ReminderRange, ReminderResolution, ReminderText, SyncReminderText, SyntheticReminderMetadata, UserReminderMetadata } from './types.ts';
|
|
4
4
|
export declare function isConditionalReminder(fragment: ContextFragment): fragment is ContextFragment & {
|
|
5
5
|
metadata: {
|
|
6
6
|
reminder: ConditionalReminder;
|
|
@@ -10,7 +10,7 @@ export declare function getReminderRanges(metadata: Record<string, unknown> | un
|
|
|
10
10
|
/**
|
|
11
11
|
* Once-ids latched by `once()`-gated reminders folded into this user message.
|
|
12
12
|
* Persisted so a fresh engine re-reads them (the durable suppression record for
|
|
13
|
-
* user-target `once()`, mirroring synthetic
|
|
13
|
+
* user-target `once()`, mirroring synthetic reminder messages).
|
|
14
14
|
*/
|
|
15
15
|
export declare function getReminderOnceIds(message: UIMessage): string[];
|
|
16
16
|
export declare function stripTextByRanges(text: string, ranges: Array<{
|
|
@@ -42,34 +42,14 @@ export declare function applyReminderToMessage(message: UIMessage, item: {
|
|
|
42
42
|
asPart: boolean;
|
|
43
43
|
metadata?: Record<string, unknown>;
|
|
44
44
|
}, ctx: ReminderContext): UserReminderMetadata | null;
|
|
45
|
-
/**
|
|
46
|
-
* Wrap a tool's raw `execute()` result with fired reminder texts.
|
|
47
|
-
*
|
|
48
|
-
* Applied at the tool-execution boundary — before the AI SDK hands the result
|
|
49
|
-
* back to the model — so the wrapped value flows identically into the next
|
|
50
|
-
* model step and the persisted chain. The envelope shape is uniform regardless
|
|
51
|
-
* of the output type, which lets `stripReminders` undo it structurally without
|
|
52
|
-
* metadata bookkeeping.
|
|
53
|
-
*/
|
|
54
|
-
export declare function applyRemindersToToolOutput(output: unknown, texts: string[]): unknown;
|
|
55
|
-
/**
|
|
56
|
-
* Project a tool-output reminder envelope to its model-facing form: run the
|
|
57
|
-
* wrapped tool's own projection over the inner `result` (so a tool's host-only
|
|
58
|
-
* `meta` channel is still stripped), then re-attach the `systemReminder`. The
|
|
59
|
-
* envelope's own host-only `meta` marker is dropped. Returns null for anything
|
|
60
|
-
* that is not one of our envelopes, so the caller can project the raw output.
|
|
61
|
-
*/
|
|
62
|
-
export declare function toToolReminderModelOutput(output: unknown, projectResult: (result: unknown) => unknown): {
|
|
63
|
-
type: 'json';
|
|
64
|
-
value: unknown;
|
|
65
|
-
} | null;
|
|
66
45
|
export declare function mergeReminderMetadata(message: UIMessage, addedReminders: UserReminderMetadata[]): void;
|
|
67
46
|
/**
|
|
68
47
|
* Create a reminder fragment, set on the engine via `engine.set()`. The engine
|
|
69
48
|
* folds it into the model's view when its `when` fires: `user` reminders bake a
|
|
70
49
|
* `<system-reminder>` into the last user message at save; `steer` injects mid-
|
|
71
|
-
* loop; `tool-output`
|
|
72
|
-
* string` factory (self-gates by returning `''`), or a context
|
|
50
|
+
* loop; `tool-output` injects after a completed tool step. Text may be a string,
|
|
51
|
+
* a `(ctx) => string` factory (self-gates by returning `''`), or a context
|
|
52
|
+
* fragment.
|
|
73
53
|
*
|
|
74
54
|
* For `target: 'user'`, `when` is optional — omit it for an always-on
|
|
75
55
|
* instruction, or pass `once(id)` for a one-time reminder. `steer` and
|
|
@@ -95,7 +75,7 @@ export declare function applyUserRemindersToMessage(message: UIMessage, reminder
|
|
|
95
75
|
metadata?: Record<string, unknown>;
|
|
96
76
|
}>): void;
|
|
97
77
|
/**
|
|
98
|
-
* Build
|
|
78
|
+
* Build a hidden synthetic user message injected between model steps.
|
|
99
79
|
*
|
|
100
80
|
* Multiple reminder texts that fire at the same step boundary are folded into a
|
|
101
81
|
* single user message (one `<system-reminder>` text part each) so the model
|
|
@@ -103,12 +83,12 @@ export declare function applyUserRemindersToMessage(message: UIMessage, reminder
|
|
|
103
83
|
* reject. The `metadata.synthetic` marker lets the chain summary, title
|
|
104
84
|
* generation, and `stripReminders` treat these as non-conversational.
|
|
105
85
|
*/
|
|
106
|
-
export declare function
|
|
86
|
+
export declare function synthesizeReminderMessage(text: string | string[], firedAt: number, onceIds?: string[]): UIMessage & {
|
|
107
87
|
role: 'user';
|
|
108
88
|
};
|
|
109
|
-
export declare function
|
|
89
|
+
export declare function isSyntheticReminderMessage(message: UIMessage): message is UIMessage & {
|
|
110
90
|
metadata: {
|
|
111
|
-
synthetic:
|
|
91
|
+
synthetic: SyntheticReminderMetadata;
|
|
112
92
|
};
|
|
113
93
|
};
|
|
114
94
|
//# sourceMappingURL=reminders.d.ts.map
|