effect-assistant 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/Assistant.d.ts +74 -28
- package/dist/Assistant.d.ts.map +1 -1
- package/dist/Assistant.js +11 -4
- package/dist/Assistant.js.map +1 -1
- package/dist/AssistantActivity.d.ts +10 -16
- package/dist/AssistantActivity.d.ts.map +1 -1
- package/dist/AssistantActivity.js +11 -4
- package/dist/AssistantActivity.js.map +1 -1
- package/dist/AssistantEngine.d.ts +39 -1
- package/dist/AssistantEngine.d.ts.map +1 -1
- package/dist/AssistantEngine.js +81 -28
- package/dist/AssistantEngine.js.map +1 -1
- package/dist/AssistantEvent.d.ts +52 -70
- package/dist/AssistantEvent.d.ts.map +1 -1
- package/dist/AssistantEvent.js +28 -57
- package/dist/AssistantEvent.js.map +1 -1
- package/dist/AssistantLoop.d.ts +7 -5
- package/dist/AssistantLoop.d.ts.map +1 -1
- package/dist/AssistantLoop.js +6 -3
- package/dist/AssistantLoop.js.map +1 -1
- package/dist/Block.js.map +1 -1
- package/dist/BlockKit.d.ts +14 -18
- package/dist/BlockKit.d.ts.map +1 -1
- package/dist/BlockKit.js +4 -7
- package/dist/BlockKit.js.map +1 -1
- package/dist/ChatLog.js +1 -1
- package/dist/Compaction.d.ts +8 -4
- package/dist/Compaction.d.ts.map +1 -1
- package/dist/Compaction.js +12 -15
- package/dist/Compaction.js.map +1 -1
- package/dist/CurrentChat.d.ts +2 -1
- package/dist/CurrentChat.d.ts.map +1 -1
- package/dist/CurrentChat.js.map +1 -1
- package/dist/Instructions.js +1 -1
- package/dist/Skill.d.ts +33 -0
- package/dist/Skill.d.ts.map +1 -1
- package/dist/Skill.js +27 -1
- package/dist/Skill.js.map +1 -1
- package/dist/Specialist.d.ts +4 -1
- package/dist/Specialist.d.ts.map +1 -1
- package/dist/Specialist.js.map +1 -1
- package/dist/Timeline.d.ts +482 -0
- package/dist/Timeline.d.ts.map +1 -0
- package/dist/Timeline.js +572 -0
- package/dist/Timeline.js.map +1 -0
- package/dist/ToolDiscovery.d.ts +4 -5
- package/dist/ToolDiscovery.d.ts.map +1 -1
- package/dist/ToolDiscovery.js +5 -4
- package/dist/ToolDiscovery.js.map +1 -1
- package/dist/ToolFailure.d.ts +1 -1
- package/dist/ToolFailure.js +1 -1
- package/dist/ToolFailure.js.map +1 -1
- package/dist/index.d.ts +2 -5
- package/dist/index.js +4 -7
- package/dist/internal/chat.js +11 -37
- package/dist/internal/chat.js.map +1 -1
- package/dist/internal/events.d.ts +15 -16
- package/dist/internal/events.d.ts.map +1 -1
- package/dist/internal/events.js +29 -28
- package/dist/internal/events.js.map +1 -1
- package/dist/internal/history.js +26 -58
- package/dist/internal/history.js.map +1 -1
- package/dist/internal/input.js +7 -0
- package/dist/internal/input.js.map +1 -0
- package/dist/internal/loop.d.ts +2 -2
- package/dist/internal/loop.d.ts.map +1 -1
- package/dist/internal/loop.js +21 -56
- package/dist/internal/loop.js.map +1 -1
- package/dist/internal/skills.js +6 -1
- package/dist/internal/skills.js.map +1 -1
- package/dist/internal/specialists.js +7 -7
- package/dist/internal/specialists.js.map +1 -1
- package/dist/internal/toolkit.d.ts +6 -20
- package/dist/internal/toolkit.d.ts.map +1 -1
- package/dist/internal/toolkit.js +10 -31
- package/dist/internal/toolkit.js.map +1 -1
- package/dist/internal/tools.js +2 -21
- package/dist/internal/tools.js.map +1 -1
- package/dist/internal/turns.d.ts.map +1 -1
- package/dist/internal/turns.js +24 -43
- package/dist/internal/turns.js.map +1 -1
- package/package.json +3 -2
- package/src/Assistant.ts +75 -29
- package/src/AssistantActivity.ts +11 -18
- package/src/AssistantEngine.ts +110 -43
- package/src/AssistantEvent.ts +46 -74
- package/src/AssistantLoop.ts +7 -5
- package/src/Block.ts +1 -1
- package/src/BlockKit.ts +18 -31
- package/src/Compaction.ts +8 -21
- package/src/CurrentChat.ts +2 -1
- package/src/Skill.ts +34 -1
- package/src/Specialist.ts +4 -1
- package/src/Timeline.ts +861 -0
- package/src/ToolDiscovery.ts +5 -13
- package/src/ToolFailure.ts +1 -1
- package/src/index.ts +5 -20
- package/src/internal/chat.ts +8 -57
- package/src/internal/events.ts +43 -43
- package/src/internal/history.ts +36 -101
- package/src/internal/input.ts +3 -0
- package/src/internal/loop.ts +31 -101
- package/src/internal/skills.ts +11 -0
- package/src/internal/specialists.ts +6 -9
- package/src/internal/toolkit.ts +17 -60
- package/src/internal/tools.ts +2 -53
- package/src/internal/turns.ts +37 -79
- package/dist/AppEvent.d.ts +0 -111
- package/dist/AppEvent.d.ts.map +0 -1
- package/dist/AppEvent.js +0 -71
- package/dist/AppEvent.js.map +0 -1
- package/dist/ChatView.d.ts +0 -459
- package/dist/ChatView.d.ts.map +0 -1
- package/dist/ChatView.js +0 -496
- package/dist/ChatView.js.map +0 -1
- package/dist/Decision.d.ts +0 -145
- package/dist/Decision.d.ts.map +0 -1
- package/dist/Decision.js +0 -178
- package/dist/Decision.js.map +0 -1
- package/dist/DecisionId.d.ts +0 -37
- package/dist/DecisionId.d.ts.map +0 -1
- package/dist/DecisionId.js +0 -44
- package/dist/DecisionId.js.map +0 -1
- package/dist/internal/decisions.js +0 -66
- package/dist/internal/decisions.js.map +0 -1
- package/src/AppEvent.ts +0 -134
- package/src/ChatView.ts +0 -658
- package/src/Decision.ts +0 -241
- package/src/DecisionId.ts +0 -46
- package/src/internal/decisions.ts +0 -131
package/src/Skill.ts
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @since 0.1.0
|
|
9
9
|
*/
|
|
10
|
+
import type * as Tool from "effect/ai/Tool"
|
|
10
11
|
import type * as Instructions from "./Instructions.ts"
|
|
11
12
|
|
|
12
13
|
/**
|
|
@@ -23,6 +24,11 @@ export interface Skill<R = never> {
|
|
|
23
24
|
readonly description: string
|
|
24
25
|
/** Text, or an Effect resolved each time the skill is loaded. */
|
|
25
26
|
readonly instructions: Instructions.Instructions<R>
|
|
27
|
+
/**
|
|
28
|
+
* The tools its instructions use. A loop offers the skill only when its toolkit has every one of
|
|
29
|
+
* them, matched by name. Unset, a loop always offers it.
|
|
30
|
+
*/
|
|
31
|
+
readonly tools?: ReadonlyArray<Tool.Any> | undefined
|
|
26
32
|
}
|
|
27
33
|
|
|
28
34
|
/**
|
|
@@ -34,6 +40,11 @@ export interface Skill<R = never> {
|
|
|
34
40
|
* the skill. The instructions are text, or an Effect that is resolved each time the skill is
|
|
35
41
|
* loaded.
|
|
36
42
|
*
|
|
43
|
+
* `tools` lists the tools the instructions use. A loop whose toolkit lacks any of them, matched by
|
|
44
|
+
* name, leaves the skill out of its catalog and of `load_skill`, so a loop that gets its tools per
|
|
45
|
+
* user (by role, say) never offers a playbook it can't follow. A tool that only `ToolDiscovery`
|
|
46
|
+
* finds isn't in the toolkit, so it doesn't count. Without `tools`, every loop offers the skill.
|
|
47
|
+
*
|
|
37
48
|
* **Example** (Defining a playbook for ordering campaigns)
|
|
38
49
|
*
|
|
39
50
|
* ```ts
|
|
@@ -51,6 +62,26 @@ export interface Skill<R = never> {
|
|
|
51
62
|
* )
|
|
52
63
|
* ```
|
|
53
64
|
*
|
|
65
|
+
* **Example** (Offering a skill only with the tools it uses)
|
|
66
|
+
*
|
|
67
|
+
* ```ts
|
|
68
|
+
* import { Skill } from "effect-assistant"
|
|
69
|
+
* import * as Tool from "effect/ai/Tool"
|
|
70
|
+
* import * as Schema from "effect/Schema"
|
|
71
|
+
*
|
|
72
|
+
* const StartCampaign = Tool.make("start_campaign", {
|
|
73
|
+
* parameters: Schema.Struct({ campaignId: Schema.String, budget: Schema.Finite }),
|
|
74
|
+
* success: Schema.String
|
|
75
|
+
* })
|
|
76
|
+
*
|
|
77
|
+
* // Left out of a loop whose toolkit has no start_campaign, like a viewer's.
|
|
78
|
+
* const orderingCampaigns = Skill.make("Ordering a campaign", {
|
|
79
|
+
* description: "Use when the user wants to order or start a campaign.",
|
|
80
|
+
* instructions: "When you know who it should reach and the budget, call start_campaign.",
|
|
81
|
+
* tools: [StartCampaign]
|
|
82
|
+
* })
|
|
83
|
+
* ```
|
|
84
|
+
*
|
|
54
85
|
* @category constructors
|
|
55
86
|
* @since 0.1.0
|
|
56
87
|
*/
|
|
@@ -61,8 +92,10 @@ export const make = <R = never>(
|
|
|
61
92
|
readonly description: string
|
|
62
93
|
/** Text, or an Effect resolved each time the skill is loaded. */
|
|
63
94
|
readonly instructions: Instructions.Instructions<R>
|
|
95
|
+
/** The tools its instructions use: a loop whose toolkit lacks one leaves the skill out. */
|
|
96
|
+
readonly tools?: ReadonlyArray<Tool.Any> | undefined
|
|
64
97
|
}
|
|
65
|
-
): Skill<R> => ({ name, description: options.description, instructions: options.instructions })
|
|
98
|
+
): Skill<R> => ({ name, description: options.description, instructions: options.instructions, tools: options.tools })
|
|
66
99
|
|
|
67
100
|
/**
|
|
68
101
|
* Extracts the services that skills need when they're loaded.
|
package/src/Specialist.ts
CHANGED
|
@@ -127,7 +127,10 @@ export interface LoopOptions<T extends Record<string, Tool.Any> = Record<never,
|
|
|
127
127
|
readonly instructions: string | Instructions.Resolved
|
|
128
128
|
/** The loop's tools, as a native toolkit whose handlers come from the layer. */
|
|
129
129
|
readonly toolkit?: Toolkit.Toolkit<T> | undefined
|
|
130
|
-
/**
|
|
130
|
+
/**
|
|
131
|
+
* Playbooks, listed as a catalog in the prompt and loaded with `load_skill` when one matches. A
|
|
132
|
+
* skill made with `tools` is left out when the toolkit lacks one of them.
|
|
133
|
+
*/
|
|
131
134
|
readonly skills?: ReadonlyArray<Skill<RS>> | undefined
|
|
132
135
|
/** The model calls allowed per brief. Defaults to 8. */
|
|
133
136
|
readonly maxSteps?: number | undefined
|