@falai/agent 4.0.0-alpha.2 → 4.0.0-alpha.20
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 +5 -3
- package/dist/cjs/core/Agent.d.ts +8 -1
- package/dist/cjs/core/Agent.d.ts.map +1 -1
- package/dist/cjs/core/Agent.js +18 -0
- package/dist/cjs/core/Agent.js.map +1 -1
- package/dist/cjs/core/CompactionEngine.d.ts.map +1 -1
- package/dist/cjs/core/CompactionEngine.js +8 -3
- package/dist/cjs/core/CompactionEngine.js.map +1 -1
- package/dist/cjs/core/FlowSpec.d.ts +21 -2
- package/dist/cjs/core/FlowSpec.d.ts.map +1 -1
- package/dist/cjs/core/FlowSpec.js +324 -51
- package/dist/cjs/core/FlowSpec.js.map +1 -1
- package/dist/cjs/core/Migrate.d.ts.map +1 -1
- package/dist/cjs/core/Migrate.js +3 -1
- package/dist/cjs/core/Migrate.js.map +1 -1
- package/dist/cjs/core/Prompt.d.ts +16 -0
- package/dist/cjs/core/Prompt.d.ts.map +1 -1
- package/dist/cjs/core/Prompt.js +46 -1
- package/dist/cjs/core/Prompt.js.map +1 -1
- package/dist/cjs/core/Runner.d.ts +37 -4
- package/dist/cjs/core/Runner.d.ts.map +1 -1
- package/dist/cjs/core/Runner.js +269 -74
- package/dist/cjs/core/Runner.js.map +1 -1
- package/dist/cjs/core/Speak.d.ts.map +1 -1
- package/dist/cjs/core/Speak.js +50 -19
- package/dist/cjs/core/Speak.js.map +1 -1
- package/dist/cjs/core/Understand.d.ts +4 -3
- package/dist/cjs/core/Understand.d.ts.map +1 -1
- package/dist/cjs/core/Understand.js +22 -51
- package/dist/cjs/core/Understand.js.map +1 -1
- package/dist/cjs/core/contracts.d.ts +11 -6
- package/dist/cjs/core/contracts.d.ts.map +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/persistence/OpenSearchStore.d.ts +2 -1
- package/dist/cjs/persistence/OpenSearchStore.d.ts.map +1 -1
- package/dist/cjs/persistence/OpenSearchStore.js +2 -2
- package/dist/cjs/persistence/OpenSearchStore.js.map +1 -1
- package/dist/cjs/persistence/RedisStore.d.ts +1 -1
- package/dist/cjs/persistence/RedisStore.d.ts.map +1 -1
- package/dist/cjs/providers/AnthropicProvider.d.ts +2 -5
- package/dist/cjs/providers/AnthropicProvider.d.ts.map +1 -1
- package/dist/cjs/providers/AnthropicProvider.js +3 -4
- package/dist/cjs/providers/AnthropicProvider.js.map +1 -1
- package/dist/cjs/providers/DeepSeekProvider.d.ts.map +1 -1
- package/dist/cjs/providers/DeepSeekProvider.js +3 -4
- package/dist/cjs/providers/DeepSeekProvider.js.map +1 -1
- package/dist/cjs/providers/FallbackAiProvider.js +1 -1
- package/dist/cjs/providers/FallbackAiProvider.js.map +1 -1
- package/dist/cjs/providers/GeminiProvider.d.ts +1 -2
- package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/cjs/providers/GeminiProvider.js +3 -4
- package/dist/cjs/providers/GeminiProvider.js.map +1 -1
- package/dist/cjs/providers/GenericOpenAICompatibleProvider.js +4 -4
- package/dist/cjs/providers/GenericOpenAICompatibleProvider.js.map +1 -1
- package/dist/cjs/providers/OpenAIProvider.d.ts.map +1 -1
- package/dist/cjs/providers/OpenAIProvider.js +3 -4
- package/dist/cjs/providers/OpenAIProvider.js.map +1 -1
- package/dist/cjs/providers/OpenRouterProvider.d.ts.map +1 -1
- package/dist/cjs/providers/OpenRouterProvider.js +4 -3
- package/dist/cjs/providers/OpenRouterProvider.js.map +1 -1
- package/dist/cjs/providers/ProviderAdapter.d.ts +15 -10
- package/dist/cjs/providers/ProviderAdapter.d.ts.map +1 -1
- package/dist/cjs/providers/ProviderAdapter.js +8 -3
- package/dist/cjs/providers/ProviderAdapter.js.map +1 -1
- package/dist/cjs/providers/ZaiProvider.js +1 -1
- package/dist/cjs/providers/ZaiProvider.js.map +1 -1
- package/dist/cjs/types/agent.d.ts +19 -4
- package/dist/cjs/types/agent.d.ts.map +1 -1
- package/dist/cjs/types/ai.d.ts +4 -6
- package/dist/cjs/types/ai.d.ts.map +1 -1
- package/dist/cjs/types/compaction.d.ts +1 -0
- package/dist/cjs/types/compaction.d.ts.map +1 -1
- package/dist/cjs/types/errors.d.ts +4 -9
- package/dist/cjs/types/errors.d.ts.map +1 -1
- package/dist/cjs/types/errors.js +12 -12
- package/dist/cjs/types/errors.js.map +1 -1
- package/dist/cjs/types/flow.d.ts +15 -1
- package/dist/cjs/types/flow.d.ts.map +1 -1
- package/dist/cjs/types/history.d.ts +0 -7
- package/dist/cjs/types/history.d.ts.map +1 -1
- package/dist/cjs/types/index.d.ts +2 -2
- package/dist/cjs/types/index.d.ts.map +1 -1
- package/dist/cjs/types/session.d.ts +4 -2
- package/dist/cjs/types/session.d.ts.map +1 -1
- package/dist/cjs/utils/clock.js +1 -1
- package/dist/cjs/utils/clock.js.map +1 -1
- package/dist/cjs/utils/outcomes.d.ts +1 -0
- package/dist/cjs/utils/outcomes.d.ts.map +1 -1
- package/dist/cjs/utils/outcomes.js +1 -0
- package/dist/cjs/utils/outcomes.js.map +1 -1
- package/dist/cjs/utils/phrases.d.ts +25 -0
- package/dist/cjs/utils/phrases.d.ts.map +1 -0
- package/dist/cjs/utils/phrases.js +38 -0
- package/dist/cjs/utils/phrases.js.map +1 -0
- package/dist/cjs/utils/schema.d.ts +3 -12
- package/dist/cjs/utils/schema.d.ts.map +1 -1
- package/dist/cjs/utils/schema.js +3 -43
- package/dist/cjs/utils/schema.js.map +1 -1
- package/dist/cjs/utils/template.d.ts +8 -0
- package/dist/cjs/utils/template.d.ts.map +1 -1
- package/dist/cjs/utils/template.js +47 -3
- package/dist/cjs/utils/template.js.map +1 -1
- package/dist/core/Agent.d.ts +8 -1
- package/dist/core/Agent.d.ts.map +1 -1
- package/dist/core/Agent.js +19 -1
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/CompactionEngine.d.ts.map +1 -1
- package/dist/core/CompactionEngine.js +8 -3
- package/dist/core/CompactionEngine.js.map +1 -1
- package/dist/core/FlowSpec.d.ts +21 -2
- package/dist/core/FlowSpec.d.ts.map +1 -1
- package/dist/core/FlowSpec.js +323 -52
- package/dist/core/FlowSpec.js.map +1 -1
- package/dist/core/Migrate.d.ts.map +1 -1
- package/dist/core/Migrate.js +3 -1
- package/dist/core/Migrate.js.map +1 -1
- package/dist/core/Prompt.d.ts +16 -0
- package/dist/core/Prompt.d.ts.map +1 -1
- package/dist/core/Prompt.js +44 -1
- package/dist/core/Prompt.js.map +1 -1
- package/dist/core/Runner.d.ts +37 -4
- package/dist/core/Runner.d.ts.map +1 -1
- package/dist/core/Runner.js +270 -75
- package/dist/core/Runner.js.map +1 -1
- package/dist/core/Speak.d.ts.map +1 -1
- package/dist/core/Speak.js +51 -20
- package/dist/core/Speak.js.map +1 -1
- package/dist/core/Understand.d.ts +4 -3
- package/dist/core/Understand.d.ts.map +1 -1
- package/dist/core/Understand.js +22 -51
- package/dist/core/Understand.js.map +1 -1
- package/dist/core/contracts.d.ts +11 -6
- package/dist/core/contracts.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/persistence/OpenSearchStore.d.ts +2 -1
- package/dist/persistence/OpenSearchStore.d.ts.map +1 -1
- package/dist/persistence/OpenSearchStore.js +2 -2
- package/dist/persistence/OpenSearchStore.js.map +1 -1
- package/dist/persistence/RedisStore.d.ts +1 -1
- package/dist/persistence/RedisStore.d.ts.map +1 -1
- package/dist/providers/AnthropicProvider.d.ts +2 -5
- package/dist/providers/AnthropicProvider.d.ts.map +1 -1
- package/dist/providers/AnthropicProvider.js +3 -4
- package/dist/providers/AnthropicProvider.js.map +1 -1
- package/dist/providers/DeepSeekProvider.d.ts.map +1 -1
- package/dist/providers/DeepSeekProvider.js +3 -4
- package/dist/providers/DeepSeekProvider.js.map +1 -1
- package/dist/providers/FallbackAiProvider.js +1 -1
- package/dist/providers/FallbackAiProvider.js.map +1 -1
- package/dist/providers/GeminiProvider.d.ts +1 -2
- package/dist/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/providers/GeminiProvider.js +3 -4
- package/dist/providers/GeminiProvider.js.map +1 -1
- package/dist/providers/GenericOpenAICompatibleProvider.js +4 -4
- package/dist/providers/GenericOpenAICompatibleProvider.js.map +1 -1
- package/dist/providers/OpenAIProvider.d.ts.map +1 -1
- package/dist/providers/OpenAIProvider.js +3 -4
- package/dist/providers/OpenAIProvider.js.map +1 -1
- package/dist/providers/OpenRouterProvider.d.ts.map +1 -1
- package/dist/providers/OpenRouterProvider.js +4 -3
- package/dist/providers/OpenRouterProvider.js.map +1 -1
- package/dist/providers/ProviderAdapter.d.ts +15 -10
- package/dist/providers/ProviderAdapter.d.ts.map +1 -1
- package/dist/providers/ProviderAdapter.js +8 -3
- package/dist/providers/ProviderAdapter.js.map +1 -1
- package/dist/providers/ZaiProvider.js +1 -1
- package/dist/providers/ZaiProvider.js.map +1 -1
- package/dist/types/agent.d.ts +19 -4
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/ai.d.ts +4 -6
- package/dist/types/ai.d.ts.map +1 -1
- package/dist/types/compaction.d.ts +1 -0
- package/dist/types/compaction.d.ts.map +1 -1
- package/dist/types/errors.d.ts +4 -9
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/errors.js +12 -12
- package/dist/types/errors.js.map +1 -1
- package/dist/types/flow.d.ts +15 -1
- package/dist/types/flow.d.ts.map +1 -1
- package/dist/types/history.d.ts +0 -7
- package/dist/types/history.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/session.d.ts +4 -2
- package/dist/types/session.d.ts.map +1 -1
- package/dist/utils/clock.js +1 -1
- package/dist/utils/clock.js.map +1 -1
- package/dist/utils/outcomes.d.ts +1 -0
- package/dist/utils/outcomes.d.ts.map +1 -1
- package/dist/utils/outcomes.js +1 -0
- package/dist/utils/outcomes.js.map +1 -1
- package/dist/utils/phrases.d.ts +25 -0
- package/dist/utils/phrases.d.ts.map +1 -0
- package/dist/utils/phrases.js +35 -0
- package/dist/utils/phrases.js.map +1 -0
- package/dist/utils/schema.d.ts +3 -12
- package/dist/utils/schema.d.ts.map +1 -1
- package/dist/utils/schema.js +3 -42
- package/dist/utils/schema.js.map +1 -1
- package/dist/utils/template.d.ts +8 -0
- package/dist/utils/template.d.ts.map +1 -1
- package/dist/utils/template.js +47 -3
- package/dist/utils/template.js.map +1 -1
- package/docs/concepts/architecture.md +3 -3
- package/docs/concepts/collection.md +40 -5
- package/docs/concepts/pipeline.md +12 -10
- package/docs/concepts/runs-and-waits.md +2 -2
- package/docs/guides/actions-and-events.md +2 -2
- package/docs/guides/branching.md +4 -2
- package/docs/guides/compaction.md +2 -2
- package/docs/guides/conditions.md +1 -1
- package/docs/guides/error-handling.md +3 -1
- package/docs/guides/flow-control.md +4 -2
- package/docs/guides/persistence.md +2 -2
- package/docs/guides/testing.md +1 -1
- package/docs/guides/triggers.md +5 -5
- package/docs/migration/v3-to-v4.md +16 -11
- package/docs/reference/actions-events-conditions.md +2 -2
- package/docs/reference/agent.md +11 -7
- package/docs/reference/branches.md +1 -1
- package/docs/reference/errors.md +10 -7
- package/docs/reference/fields.md +5 -3
- package/docs/reference/flow-spec.md +36 -9
- package/docs/reference/flow.md +8 -3
- package/docs/reference/outcomes.md +3 -2
- package/docs/reference/providers.md +2 -0
- package/docs/reference/session.md +2 -0
- package/docs/reference/step.md +8 -5
- package/docs/reference/stores.md +5 -3
- package/docs/reference/trigger.md +24 -4
- package/docs/rfc/v4-one-flow.md +7 -5
- package/docs/start/01-install.md +5 -3
- package/docs/start/04-add-tools.md +1 -1
- package/docs/start/05-go-to-production.md +18 -1
- package/examples/05-branches.ts +1 -1
- package/examples/06-triggers-and-waits.ts +4 -3
- package/package.json +5 -3
- package/src/core/Agent.ts +23 -2
- package/src/core/CompactionEngine.ts +10 -3
- package/src/core/FlowSpec.ts +352 -60
- package/src/core/Migrate.ts +2 -1
- package/src/core/Prompt.ts +47 -1
- package/src/core/Runner.ts +266 -71
- package/src/core/Speak.ts +53 -19
- package/src/core/Understand.ts +17 -50
- package/src/core/contracts.ts +11 -4
- package/src/index.ts +1 -1
- package/src/persistence/OpenSearchStore.ts +3 -2
- package/src/persistence/RedisStore.ts +1 -1
- package/src/providers/AnthropicProvider.ts +4 -9
- package/src/providers/DeepSeekProvider.ts +2 -4
- package/src/providers/FallbackAiProvider.ts +1 -1
- package/src/providers/GeminiProvider.ts +3 -6
- package/src/providers/GenericOpenAICompatibleProvider.ts +4 -4
- package/src/providers/OpenAIProvider.ts +3 -4
- package/src/providers/OpenRouterProvider.ts +4 -2
- package/src/providers/ProviderAdapter.ts +18 -13
- package/src/providers/ZaiProvider.ts +1 -1
- package/src/types/agent.ts +20 -5
- package/src/types/ai.ts +4 -6
- package/src/types/compaction.ts +1 -0
- package/src/types/errors.ts +11 -12
- package/src/types/flow.ts +15 -1
- package/src/types/history.ts +0 -10
- package/src/types/index.ts +1 -1
- package/src/types/session.ts +4 -1
- package/src/utils/clock.ts +1 -1
- package/src/utils/outcomes.ts +1 -0
- package/src/utils/phrases.ts +40 -0
- package/src/utils/schema.ts +3 -48
- package/src/utils/template.ts +46 -3
- package/dist/cjs/providers/index.d.ts +0 -26
- package/dist/cjs/providers/index.d.ts.map +0 -1
- package/dist/cjs/providers/index.js +0 -30
- package/dist/cjs/providers/index.js.map +0 -1
- package/dist/cjs/utils/clone.d.ts +0 -8
- package/dist/cjs/utils/clone.d.ts.map +0 -1
- package/dist/cjs/utils/clone.js +0 -32
- package/dist/cjs/utils/clone.js.map +0 -1
- package/dist/cjs/utils/index.d.ts +0 -9
- package/dist/cjs/utils/index.d.ts.map +0 -1
- package/dist/cjs/utils/index.js +0 -29
- package/dist/cjs/utils/index.js.map +0 -1
- package/dist/providers/index.d.ts +0 -26
- package/dist/providers/index.d.ts.map +0 -1
- package/dist/providers/index.js +0 -17
- package/dist/providers/index.js.map +0 -1
- package/dist/utils/clone.d.ts +0 -8
- package/dist/utils/clone.d.ts.map +0 -1
- package/dist/utils/clone.js +0 -29
- package/dist/utils/clone.js.map +0 -1
- package/dist/utils/index.d.ts +0 -9
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -9
- package/dist/utils/index.js.map +0 -1
- package/src/providers/index.ts +0 -38
- package/src/utils/clone.ts +0 -34
- package/src/utils/index.ts +0 -18
package/src/types/ai.ts
CHANGED
|
@@ -8,12 +8,10 @@ import type { HistoryItem } from "./history.js";
|
|
|
8
8
|
/**
|
|
9
9
|
* How hard the model thinks before answering.
|
|
10
10
|
*
|
|
11
|
-
*
|
|
12
|
-
* "
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* that need them get them switched on whenever an effort is set, which is the
|
|
16
|
-
* only setting that ever produced reasoning output.
|
|
11
|
+
* `@providerkit/core`'s effort union, which every provider speaks: "none" |
|
|
12
|
+
* "low" | "medium" | "high" | "max". Absent means the provider's own default
|
|
13
|
+
* and is never sent. The shapes that need a thought summary switched on get it
|
|
14
|
+
* whenever an effort is set, so there is no separate setting for it.
|
|
17
15
|
*/
|
|
18
16
|
export interface ReasoningConfig {
|
|
19
17
|
effort?: Effort;
|
package/src/types/compaction.ts
CHANGED
|
@@ -9,6 +9,7 @@ import type { HistoryItem } from "./history.js";
|
|
|
9
9
|
* Configuration for the compaction engine.
|
|
10
10
|
*
|
|
11
11
|
* Validation constraints:
|
|
12
|
+
* - `maxTokens` must be > 0
|
|
12
13
|
* - `compactionThreshold` must be between 0.5 and 0.95
|
|
13
14
|
* - `preserveRecentCount` must be >= 2
|
|
14
15
|
* - `maxToolResultChars` must be > 0
|
package/src/types/errors.ts
CHANGED
|
@@ -5,16 +5,11 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* The normalized provider failure, and the kinds it comes in.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* fixes them, where this package had eight — so a caller can now tell an
|
|
8
|
+
* `ProviderError` comes from `@providerkit/core` and is re-exported here. Its
|
|
9
|
+
* thirteen kinds are named by what fixes them, so a caller can tell an
|
|
11
10
|
* exhausted balance from a per-minute throttle, a plan that never included the
|
|
12
|
-
* API from a wrong key, and an outgrown context window from a bad request.
|
|
13
|
-
*
|
|
14
|
-
* Breaking: the kind lives on `error.kind`, not `error.code`, and the spellings
|
|
15
|
-
* changed with the taxonomy (`rate_limited` is `rate`, `overloaded` is
|
|
16
|
-
* `overload`, `invalid_request` splits into `invalid`, `context`, `model` and
|
|
17
|
-
* `content`). `schema_rejected` is gone: nothing ever produced it.
|
|
11
|
+
* API from a wrong key, and an outgrown context window from a bad request. The
|
|
12
|
+
* kind lives on `error.kind`.
|
|
18
13
|
*/
|
|
19
14
|
export { ProviderError } from "@providerkit/core";
|
|
20
15
|
export type { ErrorKind } from "@providerkit/core";
|
|
@@ -33,9 +28,13 @@ export class SessionConflictError extends Error {
|
|
|
33
28
|
public readonly actualVersion: number | undefined,
|
|
34
29
|
) {
|
|
35
30
|
super(
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
31
|
+
// A row that vanished between load and save (a TTL expiry, a delete) is not a race.
|
|
32
|
+
actualVersion === undefined && expectedVersion > 0
|
|
33
|
+
? `[SessionConflictError] Session "${sessionId}" is gone from the store: it was at version ${expectedVersion} ` +
|
|
34
|
+
`and has since been deleted or expired. Load it again; a load that finds nothing starts a new conversation.`
|
|
35
|
+
: `[SessionConflictError] Session "${sessionId}" was modified concurrently: ` +
|
|
36
|
+
`expected version ${expectedVersion}, found ${actualVersion ?? 'none'}. ` +
|
|
37
|
+
`Reload the session and retry the operation.`
|
|
39
38
|
);
|
|
40
39
|
this.name = 'SessionConflictError';
|
|
41
40
|
}
|
package/src/types/flow.ts
CHANGED
|
@@ -45,6 +45,8 @@ export interface ScalarDef<T extends ScalarType = ScalarType> {
|
|
|
45
45
|
|
|
46
46
|
/** One collectable field, authored once on the agent. */
|
|
47
47
|
export interface FieldDef<T extends ScalarType = ScalarType> extends ScalarDef<T> {
|
|
48
|
+
/** The name a person reads, in an editor or next to a collected value. The model never sees it. */
|
|
49
|
+
label?: string;
|
|
48
50
|
/** How the AI should ask for this field when a step collects it. */
|
|
49
51
|
ask?: string;
|
|
50
52
|
/**
|
|
@@ -185,6 +187,12 @@ export type TalkStep<C = unknown, D = unknown> = (
|
|
|
185
187
|
) & {
|
|
186
188
|
/** Per-flow wording for a field; the field's own `ask` is the default. */
|
|
187
189
|
ask?: Partial<Record<keyof D & string, string>>;
|
|
190
|
+
/**
|
|
191
|
+
* A fixed first question, sent word for word with no model call when the step
|
|
192
|
+
* first asks: every field it collects is still unknown and none was asked yet.
|
|
193
|
+
* Any later ask is the AI's own wording. Needs `collect`.
|
|
194
|
+
*/
|
|
195
|
+
question?: Template;
|
|
188
196
|
/** Times a field may be asked before it is skipped. Default 3. */
|
|
189
197
|
maxAsks?: number;
|
|
190
198
|
branches?: Branch<C, D>[];
|
|
@@ -253,9 +261,15 @@ export interface Flow<C = unknown, D = unknown> {
|
|
|
253
261
|
anchor?: string;
|
|
254
262
|
/** Re-checked whenever the run moves. Default: the trigger's `if`. */
|
|
255
263
|
while?: Pred<C, D>;
|
|
264
|
+
/**
|
|
265
|
+
* The data this flow needs, as agent field slugs. Its talk steps' `collect`
|
|
266
|
+
* says which of it to ask, and in what order; a field no step asks is still
|
|
267
|
+
* noted whenever the lead gives it while the flow holds the conversation.
|
|
268
|
+
*/
|
|
269
|
+
collect?: (keyof D & string)[];
|
|
256
270
|
clearOnStart?: (keyof D & string)[];
|
|
257
271
|
steps: Step<C, D>[];
|
|
258
|
-
/** What the run does after its last step. Default `'end'`. */
|
|
272
|
+
/** What the run does after its last step. Default `'end'`. `'stay'`: the last talk step the run took answers every later message. */
|
|
259
273
|
onEnd?: "end" | "stay" | "reset";
|
|
260
274
|
instructions?: Instruction<C, D>[];
|
|
261
275
|
tools?: string[];
|
package/src/types/history.ts
CHANGED
|
@@ -176,13 +176,3 @@ export interface Event<
|
|
|
176
176
|
/** Unique event identifier */
|
|
177
177
|
id?: string;
|
|
178
178
|
}
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* An emitted event (staged for inclusion)
|
|
182
|
-
*/
|
|
183
|
-
export interface EmittedEvent<
|
|
184
|
-
TData = MessageEventData | ToolEventData | StatusEventData
|
|
185
|
-
> extends Event<TData> {
|
|
186
|
-
/** Whether this event has been committed */
|
|
187
|
-
committed?: boolean;
|
|
188
|
-
}
|
package/src/types/index.ts
CHANGED
|
@@ -10,6 +10,7 @@ export type {
|
|
|
10
10
|
EndReason,
|
|
11
11
|
Idle,
|
|
12
12
|
OutboundMessage,
|
|
13
|
+
PendingWakesInput,
|
|
13
14
|
ScheduleEntry,
|
|
14
15
|
Silenced,
|
|
15
16
|
TurnBase,
|
|
@@ -84,7 +85,6 @@ export type {
|
|
|
84
85
|
|
|
85
86
|
export type {
|
|
86
87
|
AssistantHistoryItem,
|
|
87
|
-
EmittedEvent,
|
|
88
88
|
Event,
|
|
89
89
|
History,
|
|
90
90
|
HistoryItem,
|
package/src/types/session.ts
CHANGED
|
@@ -28,6 +28,8 @@ export interface Run {
|
|
|
28
28
|
startedAt: string;
|
|
29
29
|
/** Set while `suspended`; the most recently suspended run resumes first. */
|
|
30
30
|
suspendedAt?: string;
|
|
31
|
+
/** Set once an `onEnd: 'stay'` run has finished its steps: it sits on its last talk step and answers every message from there. Any other move clears it. */
|
|
32
|
+
staying?: true;
|
|
31
33
|
waiting?: {
|
|
32
34
|
kind: "timer" | "event";
|
|
33
35
|
/** The wake key; only a `wake` equal to it is honoured. */
|
|
@@ -75,6 +77,7 @@ export type StepOutcomeCode =
|
|
|
75
77
|
| "silenced"
|
|
76
78
|
// A step
|
|
77
79
|
| "already-known"
|
|
80
|
+
| "asked-fixed"
|
|
78
81
|
| "another-reply"
|
|
79
82
|
| "already-sent"
|
|
80
83
|
| "branch"
|
|
@@ -124,7 +127,7 @@ export interface StepOutcome {
|
|
|
124
127
|
export interface Session<D = unknown> {
|
|
125
128
|
id: string;
|
|
126
129
|
v: 4;
|
|
127
|
-
/** Optimistic-concurrency version;
|
|
130
|
+
/** Optimistic-concurrency version. A turn leaves it unchanged; `Store.save` bumps it and returns the saved session. */
|
|
128
131
|
version: number;
|
|
129
132
|
data: Partial<D>;
|
|
130
133
|
/** Live runs only. */
|
package/src/utils/clock.ts
CHANGED
|
@@ -34,7 +34,7 @@ export function fakeClock(iso: string): FakeClock {
|
|
|
34
34
|
|
|
35
35
|
function parseIso(iso: string): number {
|
|
36
36
|
const ms = Date.parse(iso);
|
|
37
|
-
if (Number.isNaN(ms)) throw new Error(`fakeClock
|
|
37
|
+
if (Number.isNaN(ms)) throw new Error(`[fakeClock] "${iso}" is not a date: Date.parse cannot read it. Pass ISO text, e.g. "2026-09-20T10:00:00.000Z".`);
|
|
38
38
|
return ms;
|
|
39
39
|
}
|
|
40
40
|
|
package/src/utils/outcomes.ts
CHANGED
|
@@ -28,6 +28,7 @@ export const OUTCOME_MESSAGES = {
|
|
|
28
28
|
silenced: "the host cannot speak right now",
|
|
29
29
|
|
|
30
30
|
"already-known": "every field this step collects is known",
|
|
31
|
+
"asked-fixed": "the step's fixed question went out word for word",
|
|
31
32
|
"another-reply": "another run already answered this turn",
|
|
32
33
|
"already-sent": "this message was already sent once",
|
|
33
34
|
branch: "a branch of this step fired",
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Splitting an AI-judged phrase list into what counts and what rules it out.
|
|
3
|
+
*
|
|
4
|
+
* A trigger's phrases are alternatives: one match is enough. That makes the
|
|
5
|
+
* list useless for saying "but not this" — and "but not this" is what keeps a
|
|
6
|
+
* classifier honest. A customer answering "pode sim" to an offer of a meeting
|
|
7
|
+
* is agreeing to the meeting, not asking for a human, and without a way to say
|
|
8
|
+
* so every cheerful yes reads as a handoff request.
|
|
9
|
+
*
|
|
10
|
+
* So a phrase that opens with `!` is an exclusion: it does not make the trigger
|
|
11
|
+
* fire, it stops it. Exclusions win over matches, and the model is told both
|
|
12
|
+
* lists separately.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
export interface Phrases {
|
|
16
|
+
/** Any one of these makes it true. */
|
|
17
|
+
counts: string[];
|
|
18
|
+
/** Any one of these makes it false, whatever matched. */
|
|
19
|
+
excludes: string[];
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Split a phrase list on the leading `!`. Blank entries and a bare `"!"` are
|
|
24
|
+
* dropped: they would render as an empty bullet and mean nothing to the model.
|
|
25
|
+
*/
|
|
26
|
+
export function splitPhrases(phrases: readonly string[]): Phrases {
|
|
27
|
+
const counts: string[] = [];
|
|
28
|
+
const excludes: string[] = [];
|
|
29
|
+
for (const phrase of phrases) {
|
|
30
|
+
const trimmed = phrase.trim();
|
|
31
|
+
if (!trimmed) continue;
|
|
32
|
+
if (trimmed.startsWith("!")) {
|
|
33
|
+
const body = trimmed.slice(1).trim();
|
|
34
|
+
if (body) excludes.push(body);
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
counts.push(trimmed);
|
|
38
|
+
}
|
|
39
|
+
return { counts, excludes };
|
|
40
|
+
}
|
package/src/utils/schema.ts
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
* how a raw extracted value becomes a typed one.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { FlowConfigurationError } from "../types/errors.js";
|
|
7
6
|
import type { FieldDef, FieldDefs, ParamDef, ParamDefs, ScalarDef } from "../types/flow.js";
|
|
8
7
|
import type { StructuredSchema } from "../types/schema.js";
|
|
9
8
|
|
|
@@ -34,8 +33,8 @@ export type Coerced = { ok: true; value: string | number | boolean } | { ok: fal
|
|
|
34
33
|
|
|
35
34
|
/**
|
|
36
35
|
* Turn a raw value from the model into the field's type. Strings are coerced
|
|
37
|
-
* to numbers and booleans; enum membership is enforced.
|
|
38
|
-
*
|
|
36
|
+
* to numbers and booleans; enum membership is enforced. Returns the coerced
|
|
37
|
+
* value, or the code saying why it was rejected (`bad-value`, `not-in-enum`).
|
|
39
38
|
*/
|
|
40
39
|
export function coerceField(def: ScalarDef, raw: unknown): Coerced {
|
|
41
40
|
const value = coerceScalar(def, raw);
|
|
@@ -76,7 +75,7 @@ export interface WireOptions {
|
|
|
76
75
|
|
|
77
76
|
/**
|
|
78
77
|
* The JSON schema a provider sees: an allow-list of JSON-schema keys, with
|
|
79
|
-
* `ask`, `extract` and `optional` stripped. Closed (`additionalProperties:
|
|
78
|
+
* `label`, `ask`, `extract` and `optional` stripped. Closed (`additionalProperties:
|
|
80
79
|
* false`); every property required unless a parameter says `optional`.
|
|
81
80
|
*/
|
|
82
81
|
export function toWireSchema(defs: FieldDefs | ParamDefs, options: WireOptions = {}): StructuredSchema {
|
|
@@ -99,47 +98,3 @@ function wireProperty(def: FieldDef | ParamDef, nullable: boolean): StructuredSc
|
|
|
99
98
|
if (nullable) out.type = [def.type, "null"];
|
|
100
99
|
return out;
|
|
101
100
|
}
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Merge field rows authored per flow into the agent's one field set. Two
|
|
105
|
-
* rows for one slug must agree on type and enum; the first non-empty `ask`
|
|
106
|
-
* and `description` win.
|
|
107
|
-
*/
|
|
108
|
-
export function buildSchema(groups: Array<{ id: string; fields: FieldDefs }>): FieldDefs {
|
|
109
|
-
const merged: FieldDefs = {};
|
|
110
|
-
const owner: Record<string, string> = {};
|
|
111
|
-
for (const group of groups) {
|
|
112
|
-
for (const [slug, def] of Object.entries(group.fields)) {
|
|
113
|
-
const seen = merged[slug];
|
|
114
|
-
if (!seen) {
|
|
115
|
-
merged[slug] = { ...def };
|
|
116
|
-
owner[slug] = group.id;
|
|
117
|
-
continue;
|
|
118
|
-
}
|
|
119
|
-
if (seen.type !== def.type) {
|
|
120
|
-
throw new FlowConfigurationError(
|
|
121
|
-
`[FlowConfigurationError] field "${slug}" has two types: "${seen.type}" in "${owner[slug]}", ` +
|
|
122
|
-
`"${def.type}" in "${group.id}". Give one slug one type.`,
|
|
123
|
-
);
|
|
124
|
-
}
|
|
125
|
-
if (seen.enum && def.enum && !sameList(seen.enum, def.enum)) {
|
|
126
|
-
throw new FlowConfigurationError(
|
|
127
|
-
`[FlowConfigurationError] field "${slug}" has two option lists: in "${owner[slug]}" and "${group.id}". ` +
|
|
128
|
-
`Give one slug one list.`,
|
|
129
|
-
);
|
|
130
|
-
}
|
|
131
|
-
merged[slug] = {
|
|
132
|
-
...seen,
|
|
133
|
-
enum: seen.enum ?? def.enum,
|
|
134
|
-
ask: seen.ask ?? def.ask,
|
|
135
|
-
description: seen.description ?? def.description,
|
|
136
|
-
extract: seen.extract ?? def.extract,
|
|
137
|
-
};
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
return merged;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
function sameList(a: readonly (string | number)[], b: readonly (string | number)[]): boolean {
|
|
144
|
-
return a.length === b.length && a.every((v, i) => v === b[i]);
|
|
145
|
-
}
|
package/src/utils/template.ts
CHANGED
|
@@ -5,6 +5,14 @@
|
|
|
5
5
|
* per-turn context) and `input` (the run's trigger payload). A path that
|
|
6
6
|
* resolves to nothing keeps its placeholder, so a typo stays visible instead
|
|
7
7
|
* of vanishing into an empty string.
|
|
8
|
+
*
|
|
9
|
+
* A path the host answered with nothing is a different case: it knows the
|
|
10
|
+
* field and knows it is blank. Then the placeholder goes and `tidy` closes the
|
|
11
|
+
* gap it left, so "Ola {{context.lead.name}}, tudo bem?" sends "Ola, tudo bem?"
|
|
12
|
+
* and never "Ola , tudo bem?". Two things count as blank: an empty string, and
|
|
13
|
+
* a path that walks THROUGH a null — `context.lead` being `null` means there
|
|
14
|
+
* is no lead, so "the lead's name" is blank, not mistyped. A null at the end of
|
|
15
|
+
* a path is still unknown: a field that collected nothing keeps its braces.
|
|
8
16
|
*/
|
|
9
17
|
|
|
10
18
|
export interface TemplateScope {
|
|
@@ -15,11 +23,45 @@ export interface TemplateScope {
|
|
|
15
23
|
|
|
16
24
|
const PLACEHOLDER = /\{\{\s*([^}\s]+)\s*\}\}/g;
|
|
17
25
|
|
|
26
|
+
/** The path ran into a `null` on its way down: the container the host named is absent. */
|
|
27
|
+
const ABSENT = Symbol("absent");
|
|
28
|
+
|
|
18
29
|
export function render(template: string, scope: TemplateScope): string {
|
|
19
|
-
|
|
30
|
+
let emptied = false;
|
|
31
|
+
const out = template.replace(PLACEHOLDER, (match, path: string) => {
|
|
20
32
|
const value = lookup(scope, path.split("."));
|
|
21
|
-
|
|
33
|
+
if (value === ABSENT) {
|
|
34
|
+
emptied = true;
|
|
35
|
+
return "";
|
|
36
|
+
}
|
|
37
|
+
if (value === undefined || value === null) return match;
|
|
38
|
+
const text = stringify(value);
|
|
39
|
+
if (text === "") emptied = true;
|
|
40
|
+
return text;
|
|
22
41
|
});
|
|
42
|
+
return emptied ? tidy(out) : out;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Close the hole an empty value leaves: a doubled space, a space before
|
|
47
|
+
* punctuation, a comma left before the end of a sentence or before another
|
|
48
|
+
* comma ("Oi, {{name}}!" gives "Oi!", not "Oi,!"; "Oi, {{name}}, tudo bem?"
|
|
49
|
+
* gives "Oi, tudo bem?", not "Oi,, tudo bem?"), punctuation stranded at the
|
|
50
|
+
* start of a line ("{{greeting}}, {{name}}! Tudo bem?" gives "Tudo bem?"), a
|
|
51
|
+
* space at the end of a line.
|
|
52
|
+
*
|
|
53
|
+
* Deliberately narrow. It only runs on a string where something substituted to
|
|
54
|
+
* "", and it only collapses a run of spaces that follows a visible character,
|
|
55
|
+
* so indentation in a markdown list survives. A line that is only punctuation
|
|
56
|
+
* keeps it, so a message never renders to nothing.
|
|
57
|
+
*/
|
|
58
|
+
function tidy(text: string): string {
|
|
59
|
+
return text
|
|
60
|
+
.replace(/(?<=\S)[ \t]{2,}/g, " ")
|
|
61
|
+
.replace(/ +([,.;:!?\u2026])/g, "$1")
|
|
62
|
+
.replace(/[,;]+(?=[,;.!?\u2026])/g, "")
|
|
63
|
+
.replace(/^([ \t]*)[,;:!?]+[ \t]+(?=\S)/gm, "$1")
|
|
64
|
+
.replace(/[ \t]+$/gm, "");
|
|
23
65
|
}
|
|
24
66
|
|
|
25
67
|
/** `render` over every string inside a value, recursively. Non-strings pass through. */
|
|
@@ -37,7 +79,8 @@ export function renderDeep<T>(value: T, scope: TemplateScope): T {
|
|
|
37
79
|
function lookup(root: unknown, keys: string[]): unknown {
|
|
38
80
|
let current = root;
|
|
39
81
|
for (const key of keys) {
|
|
40
|
-
if (current === null
|
|
82
|
+
if (current === null) return ABSENT;
|
|
83
|
+
if (typeof current !== "object") return undefined;
|
|
41
84
|
current = (current as Record<string, unknown>)[key];
|
|
42
85
|
}
|
|
43
86
|
return current;
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AI provider exports.
|
|
3
|
-
*
|
|
4
|
-
* Every provider here is a thin binding over `@providerkit/core`: the vendor
|
|
5
|
-
* knowledge lives in that package, and these classes supply the naming,
|
|
6
|
-
* capabilities and construction this framework's seam expects.
|
|
7
|
-
*/
|
|
8
|
-
export { AnthropicProvider } from "./AnthropicProvider.js";
|
|
9
|
-
export type { AnthropicProviderOptions } from "./AnthropicProvider.js";
|
|
10
|
-
export { GeminiProvider } from "./GeminiProvider.js";
|
|
11
|
-
export type { GeminiProviderOptions } from "./GeminiProvider.js";
|
|
12
|
-
export { OpenAIProvider } from "./OpenAIProvider.js";
|
|
13
|
-
export type { OpenAIProviderOptions } from "./OpenAIProvider.js";
|
|
14
|
-
export { OpenRouterProvider } from "./OpenRouterProvider.js";
|
|
15
|
-
export type { OpenRouterProviderOptions } from "./OpenRouterProvider.js";
|
|
16
|
-
export { DeepSeekProvider } from "./DeepSeekProvider.js";
|
|
17
|
-
export type { DeepSeekProviderOptions } from "./DeepSeekProvider.js";
|
|
18
|
-
export { OpenAICompatibleProvider } from "./OpenAICompatibleProvider.js";
|
|
19
|
-
export type { JsonWithTools, OpenAICompatibleProviderInit, StructuredOutputMode, } from "./OpenAICompatibleProvider.js";
|
|
20
|
-
export { createOpenAICompatibleProvider } from "./GenericOpenAICompatibleProvider.js";
|
|
21
|
-
export type { OpenAICompatibleOptions } from "./GenericOpenAICompatibleProvider.js";
|
|
22
|
-
export { ProviderAdapter, resolveRetryConfig } from "./ProviderAdapter.js";
|
|
23
|
-
export type { ProviderAdapterInit, RequestConfig, RetryConfig } from "./ProviderAdapter.js";
|
|
24
|
-
export { ZaiProvider } from "./ZaiProvider.js";
|
|
25
|
-
export type { ZaiProviderOptions } from "./ZaiProvider.js";
|
|
26
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAEvE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAErE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,YAAY,EACV,aAAa,EACb,4BAA4B,EAC5B,oBAAoB,GACrB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AACtF,YAAY,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAEpF,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC3E,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE5F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* AI provider exports.
|
|
4
|
-
*
|
|
5
|
-
* Every provider here is a thin binding over `@providerkit/core`: the vendor
|
|
6
|
-
* knowledge lives in that package, and these classes supply the naming,
|
|
7
|
-
* capabilities and construction this framework's seam expects.
|
|
8
|
-
*/
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.ZaiProvider = exports.resolveRetryConfig = exports.ProviderAdapter = exports.createOpenAICompatibleProvider = exports.OpenAICompatibleProvider = exports.DeepSeekProvider = exports.OpenRouterProvider = exports.OpenAIProvider = exports.GeminiProvider = exports.AnthropicProvider = void 0;
|
|
11
|
-
var AnthropicProvider_js_1 = require("./AnthropicProvider.js");
|
|
12
|
-
Object.defineProperty(exports, "AnthropicProvider", { enumerable: true, get: function () { return AnthropicProvider_js_1.AnthropicProvider; } });
|
|
13
|
-
var GeminiProvider_js_1 = require("./GeminiProvider.js");
|
|
14
|
-
Object.defineProperty(exports, "GeminiProvider", { enumerable: true, get: function () { return GeminiProvider_js_1.GeminiProvider; } });
|
|
15
|
-
var OpenAIProvider_js_1 = require("./OpenAIProvider.js");
|
|
16
|
-
Object.defineProperty(exports, "OpenAIProvider", { enumerable: true, get: function () { return OpenAIProvider_js_1.OpenAIProvider; } });
|
|
17
|
-
var OpenRouterProvider_js_1 = require("./OpenRouterProvider.js");
|
|
18
|
-
Object.defineProperty(exports, "OpenRouterProvider", { enumerable: true, get: function () { return OpenRouterProvider_js_1.OpenRouterProvider; } });
|
|
19
|
-
var DeepSeekProvider_js_1 = require("./DeepSeekProvider.js");
|
|
20
|
-
Object.defineProperty(exports, "DeepSeekProvider", { enumerable: true, get: function () { return DeepSeekProvider_js_1.DeepSeekProvider; } });
|
|
21
|
-
var OpenAICompatibleProvider_js_1 = require("./OpenAICompatibleProvider.js");
|
|
22
|
-
Object.defineProperty(exports, "OpenAICompatibleProvider", { enumerable: true, get: function () { return OpenAICompatibleProvider_js_1.OpenAICompatibleProvider; } });
|
|
23
|
-
var GenericOpenAICompatibleProvider_js_1 = require("./GenericOpenAICompatibleProvider.js");
|
|
24
|
-
Object.defineProperty(exports, "createOpenAICompatibleProvider", { enumerable: true, get: function () { return GenericOpenAICompatibleProvider_js_1.createOpenAICompatibleProvider; } });
|
|
25
|
-
var ProviderAdapter_js_1 = require("./ProviderAdapter.js");
|
|
26
|
-
Object.defineProperty(exports, "ProviderAdapter", { enumerable: true, get: function () { return ProviderAdapter_js_1.ProviderAdapter; } });
|
|
27
|
-
Object.defineProperty(exports, "resolveRetryConfig", { enumerable: true, get: function () { return ProviderAdapter_js_1.resolveRetryConfig; } });
|
|
28
|
-
var ZaiProvider_js_1 = require("./ZaiProvider.js");
|
|
29
|
-
Object.defineProperty(exports, "ZaiProvider", { enumerable: true, get: function () { return ZaiProvider_js_1.ZaiProvider; } });
|
|
30
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,+DAA2D;AAAlD,yHAAA,iBAAiB,OAAA;AAG1B,yDAAqD;AAA5C,mHAAA,cAAc,OAAA;AAGvB,yDAAqD;AAA5C,mHAAA,cAAc,OAAA;AAGvB,iEAA6D;AAApD,2HAAA,kBAAkB,OAAA;AAG3B,6DAAyD;AAAhD,uHAAA,gBAAgB,OAAA;AAGzB,6EAAyE;AAAhE,uIAAA,wBAAwB,OAAA;AAOjC,2FAAsF;AAA7E,oJAAA,8BAA8B,OAAA;AAGvC,2DAA2E;AAAlE,qHAAA,eAAe,OAAA;AAAE,wHAAA,kBAAkB,OAAA;AAG5C,mDAA+C;AAAtC,6GAAA,WAAW,OAAA"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Deep clone utility to avoid adding large dependencies like lodash.
|
|
3
|
-
* Handles objects, arrays, dates, and primitives.
|
|
4
|
-
* @param obj - The object to clone
|
|
5
|
-
* @returns A deep copy of the object
|
|
6
|
-
*/
|
|
7
|
-
export declare function cloneDeep<T>(obj: T): T;
|
|
8
|
-
//# sourceMappingURL=clone.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clone.d.ts","sourceRoot":"","sources":["../../../src/utils/clone.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CA0BtC"}
|
package/dist/cjs/utils/clone.js
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.cloneDeep = cloneDeep;
|
|
4
|
-
/**
|
|
5
|
-
* Deep clone utility to avoid adding large dependencies like lodash.
|
|
6
|
-
* Handles objects, arrays, dates, and primitives.
|
|
7
|
-
* @param obj - The object to clone
|
|
8
|
-
* @returns A deep copy of the object
|
|
9
|
-
*/
|
|
10
|
-
function cloneDeep(obj) {
|
|
11
|
-
if (obj === null || typeof obj !== "object") {
|
|
12
|
-
return obj;
|
|
13
|
-
}
|
|
14
|
-
if (obj instanceof Date) {
|
|
15
|
-
return new Date(obj.getTime());
|
|
16
|
-
}
|
|
17
|
-
if (Array.isArray(obj)) {
|
|
18
|
-
const arrCopy = [];
|
|
19
|
-
for (let i = 0; i < obj.length; i++) {
|
|
20
|
-
arrCopy[i] = cloneDeep(obj[i]);
|
|
21
|
-
}
|
|
22
|
-
return arrCopy;
|
|
23
|
-
}
|
|
24
|
-
const objCopy = {};
|
|
25
|
-
for (const key in obj) {
|
|
26
|
-
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
27
|
-
objCopy[key] = cloneDeep(obj[key]);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
return objCopy;
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=clone.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clone.js","sourceRoot":"","sources":["../../../src/utils/clone.ts"],"names":[],"mappings":";;AAOA,8BA0BC;AAhCD;;;;;GAKG;AACH,SAAgB,SAAS,CAAI,GAAM;IACjC,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5C,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,GAAG,YAAY,IAAI,EAAE,CAAC;QACxB,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAM,CAAC;IACtC,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,OAAO,GAAc,EAAE,CAAC;QAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAEpC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,OAAY,CAAC;IACtB,CAAC;IAED,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,CAAE,GAA+B,CAAC,GAAG,CAAC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,OAAO,OAAY,CAAC;AACtB,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Utility functions and helpers
|
|
3
|
-
*/
|
|
4
|
-
export { cloneDeep } from "./clone.js";
|
|
5
|
-
export { assertUsableCompletion, effectiveMessageText } from "./completion.js";
|
|
6
|
-
export { assistantMessage, eventsToHistory, eventToHistoryItem, historyItemToEvent, historyToEvents, systemMessage, toolMessage, userMessage, } from "./history.js";
|
|
7
|
-
export { extractEmbeddedJSONObject, isJSONShaped, parseJSONResponse, tryParseJSONResponse } from "./json.js";
|
|
8
|
-
export { logger, LoggerLevel } from "./logger.js";
|
|
9
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,WAAW,EACX,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,yBAAyB,EAAE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAC7G,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/cjs/utils/index.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Utility functions and helpers
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.LoggerLevel = exports.logger = exports.tryParseJSONResponse = exports.parseJSONResponse = exports.isJSONShaped = exports.extractEmbeddedJSONObject = exports.userMessage = exports.toolMessage = exports.systemMessage = exports.historyToEvents = exports.historyItemToEvent = exports.eventToHistoryItem = exports.eventsToHistory = exports.assistantMessage = exports.effectiveMessageText = exports.assertUsableCompletion = exports.cloneDeep = void 0;
|
|
7
|
-
var clone_js_1 = require("./clone.js");
|
|
8
|
-
Object.defineProperty(exports, "cloneDeep", { enumerable: true, get: function () { return clone_js_1.cloneDeep; } });
|
|
9
|
-
var completion_js_1 = require("./completion.js");
|
|
10
|
-
Object.defineProperty(exports, "assertUsableCompletion", { enumerable: true, get: function () { return completion_js_1.assertUsableCompletion; } });
|
|
11
|
-
Object.defineProperty(exports, "effectiveMessageText", { enumerable: true, get: function () { return completion_js_1.effectiveMessageText; } });
|
|
12
|
-
var history_js_1 = require("./history.js");
|
|
13
|
-
Object.defineProperty(exports, "assistantMessage", { enumerable: true, get: function () { return history_js_1.assistantMessage; } });
|
|
14
|
-
Object.defineProperty(exports, "eventsToHistory", { enumerable: true, get: function () { return history_js_1.eventsToHistory; } });
|
|
15
|
-
Object.defineProperty(exports, "eventToHistoryItem", { enumerable: true, get: function () { return history_js_1.eventToHistoryItem; } });
|
|
16
|
-
Object.defineProperty(exports, "historyItemToEvent", { enumerable: true, get: function () { return history_js_1.historyItemToEvent; } });
|
|
17
|
-
Object.defineProperty(exports, "historyToEvents", { enumerable: true, get: function () { return history_js_1.historyToEvents; } });
|
|
18
|
-
Object.defineProperty(exports, "systemMessage", { enumerable: true, get: function () { return history_js_1.systemMessage; } });
|
|
19
|
-
Object.defineProperty(exports, "toolMessage", { enumerable: true, get: function () { return history_js_1.toolMessage; } });
|
|
20
|
-
Object.defineProperty(exports, "userMessage", { enumerable: true, get: function () { return history_js_1.userMessage; } });
|
|
21
|
-
var json_js_1 = require("./json.js");
|
|
22
|
-
Object.defineProperty(exports, "extractEmbeddedJSONObject", { enumerable: true, get: function () { return json_js_1.extractEmbeddedJSONObject; } });
|
|
23
|
-
Object.defineProperty(exports, "isJSONShaped", { enumerable: true, get: function () { return json_js_1.isJSONShaped; } });
|
|
24
|
-
Object.defineProperty(exports, "parseJSONResponse", { enumerable: true, get: function () { return json_js_1.parseJSONResponse; } });
|
|
25
|
-
Object.defineProperty(exports, "tryParseJSONResponse", { enumerable: true, get: function () { return json_js_1.tryParseJSONResponse; } });
|
|
26
|
-
var logger_js_1 = require("./logger.js");
|
|
27
|
-
Object.defineProperty(exports, "logger", { enumerable: true, get: function () { return logger_js_1.logger; } });
|
|
28
|
-
Object.defineProperty(exports, "LoggerLevel", { enumerable: true, get: function () { return logger_js_1.LoggerLevel; } });
|
|
29
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,uCAAuC;AAA9B,qGAAA,SAAS,OAAA;AAClB,iDAA+E;AAAtE,uHAAA,sBAAsB,OAAA;AAAE,qHAAA,oBAAoB,OAAA;AACrD,2CASsB;AARpB,8GAAA,gBAAgB,OAAA;AAChB,6GAAA,eAAe,OAAA;AACf,gHAAA,kBAAkB,OAAA;AAClB,gHAAA,kBAAkB,OAAA;AAClB,6GAAA,eAAe,OAAA;AACf,2GAAA,aAAa,OAAA;AACb,yGAAA,WAAW,OAAA;AACX,yGAAA,WAAW,OAAA;AAEb,qCAA6G;AAApG,oHAAA,yBAAyB,OAAA;AAAE,uGAAA,YAAY,OAAA;AAAE,4GAAA,iBAAiB,OAAA;AAAE,+GAAA,oBAAoB,OAAA;AACzF,yCAAkD;AAAzC,mGAAA,MAAM,OAAA;AAAE,wGAAA,WAAW,OAAA"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AI provider exports.
|
|
3
|
-
*
|
|
4
|
-
* Every provider here is a thin binding over `@providerkit/core`: the vendor
|
|
5
|
-
* knowledge lives in that package, and these classes supply the naming,
|
|
6
|
-
* capabilities and construction this framework's seam expects.
|
|
7
|
-
*/
|
|
8
|
-
export { AnthropicProvider } from "./AnthropicProvider.js";
|
|
9
|
-
export type { AnthropicProviderOptions } from "./AnthropicProvider.js";
|
|
10
|
-
export { GeminiProvider } from "./GeminiProvider.js";
|
|
11
|
-
export type { GeminiProviderOptions } from "./GeminiProvider.js";
|
|
12
|
-
export { OpenAIProvider } from "./OpenAIProvider.js";
|
|
13
|
-
export type { OpenAIProviderOptions } from "./OpenAIProvider.js";
|
|
14
|
-
export { OpenRouterProvider } from "./OpenRouterProvider.js";
|
|
15
|
-
export type { OpenRouterProviderOptions } from "./OpenRouterProvider.js";
|
|
16
|
-
export { DeepSeekProvider } from "./DeepSeekProvider.js";
|
|
17
|
-
export type { DeepSeekProviderOptions } from "./DeepSeekProvider.js";
|
|
18
|
-
export { OpenAICompatibleProvider } from "./OpenAICompatibleProvider.js";
|
|
19
|
-
export type { JsonWithTools, OpenAICompatibleProviderInit, StructuredOutputMode, } from "./OpenAICompatibleProvider.js";
|
|
20
|
-
export { createOpenAICompatibleProvider } from "./GenericOpenAICompatibleProvider.js";
|
|
21
|
-
export type { OpenAICompatibleOptions } from "./GenericOpenAICompatibleProvider.js";
|
|
22
|
-
export { ProviderAdapter, resolveRetryConfig } from "./ProviderAdapter.js";
|
|
23
|
-
export type { ProviderAdapterInit, RequestConfig, RetryConfig } from "./ProviderAdapter.js";
|
|
24
|
-
export { ZaiProvider } from "./ZaiProvider.js";
|
|
25
|
-
export type { ZaiProviderOptions } from "./ZaiProvider.js";
|
|
26
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAEvE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAErE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,YAAY,EACV,aAAa,EACb,4BAA4B,EAC5B,oBAAoB,GACrB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AACtF,YAAY,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAEpF,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC3E,YAAY,EAAE,mBAAmB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE5F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/providers/index.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AI provider exports.
|
|
3
|
-
*
|
|
4
|
-
* Every provider here is a thin binding over `@providerkit/core`: the vendor
|
|
5
|
-
* knowledge lives in that package, and these classes supply the naming,
|
|
6
|
-
* capabilities and construction this framework's seam expects.
|
|
7
|
-
*/
|
|
8
|
-
export { AnthropicProvider } from "./AnthropicProvider.js";
|
|
9
|
-
export { GeminiProvider } from "./GeminiProvider.js";
|
|
10
|
-
export { OpenAIProvider } from "./OpenAIProvider.js";
|
|
11
|
-
export { OpenRouterProvider } from "./OpenRouterProvider.js";
|
|
12
|
-
export { DeepSeekProvider } from "./DeepSeekProvider.js";
|
|
13
|
-
export { OpenAICompatibleProvider } from "./OpenAICompatibleProvider.js";
|
|
14
|
-
export { createOpenAICompatibleProvider } from "./GenericOpenAICompatibleProvider.js";
|
|
15
|
-
export { ProviderAdapter, resolveRetryConfig } from "./ProviderAdapter.js";
|
|
16
|
-
export { ZaiProvider } from "./ZaiProvider.js";
|
|
17
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG3D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAOzE,OAAO,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AAGtF,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG3E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/utils/clone.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Deep clone utility to avoid adding large dependencies like lodash.
|
|
3
|
-
* Handles objects, arrays, dates, and primitives.
|
|
4
|
-
* @param obj - The object to clone
|
|
5
|
-
* @returns A deep copy of the object
|
|
6
|
-
*/
|
|
7
|
-
export declare function cloneDeep<T>(obj: T): T;
|
|
8
|
-
//# sourceMappingURL=clone.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clone.d.ts","sourceRoot":"","sources":["../../src/utils/clone.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CA0BtC"}
|