effect-assistant 0.0.0-stage → 0.2.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/LICENSE +21 -0
- package/README.md +22 -2
- package/dist/AppEvent.d.ts +111 -0
- package/dist/AppEvent.d.ts.map +1 -0
- package/dist/AppEvent.js +71 -0
- package/dist/AppEvent.js.map +1 -0
- package/dist/Assistant.d.ts +403 -0
- package/dist/Assistant.d.ts.map +1 -0
- package/dist/Assistant.js +126 -0
- package/dist/Assistant.js.map +1 -0
- package/dist/AssistantActivity.d.ts +85 -0
- package/dist/AssistantActivity.d.ts.map +1 -0
- package/dist/AssistantActivity.js +105 -0
- package/dist/AssistantActivity.js.map +1 -0
- package/dist/AssistantEngine.d.ts +116 -0
- package/dist/AssistantEngine.d.ts.map +1 -0
- package/dist/AssistantEngine.js +255 -0
- package/dist/AssistantEngine.js.map +1 -0
- package/dist/AssistantEvent.d.ts +551 -0
- package/dist/AssistantEvent.d.ts.map +1 -0
- package/dist/AssistantEvent.js +473 -0
- package/dist/AssistantEvent.js.map +1 -0
- package/dist/AssistantLoop.d.ts +173 -0
- package/dist/AssistantLoop.d.ts.map +1 -0
- package/dist/AssistantLoop.js +111 -0
- package/dist/AssistantLoop.js.map +1 -0
- package/dist/AssistantToolCall.d.ts +32 -0
- package/dist/AssistantToolCall.d.ts.map +1 -0
- package/dist/AssistantToolCall.js +37 -0
- package/dist/AssistantToolCall.js.map +1 -0
- package/dist/Block.d.ts +69 -0
- package/dist/Block.d.ts.map +1 -0
- package/dist/Block.js +39 -0
- package/dist/Block.js.map +1 -0
- package/dist/BlockKit.d.ts +180 -0
- package/dist/BlockKit.d.ts.map +1 -0
- package/dist/BlockKit.js +148 -0
- package/dist/BlockKit.js.map +1 -0
- package/dist/ChatId.d.ts +31 -0
- package/dist/ChatId.d.ts.map +1 -0
- package/dist/ChatId.js +36 -0
- package/dist/ChatId.js.map +1 -0
- package/dist/ChatLog.d.ts +109 -0
- package/dist/ChatLog.d.ts.map +1 -0
- package/dist/ChatLog.js +177 -0
- package/dist/ChatLog.js.map +1 -0
- package/dist/ChatView.d.ts +408 -0
- package/dist/ChatView.d.ts.map +1 -0
- package/dist/ChatView.js +443 -0
- package/dist/ChatView.js.map +1 -0
- package/dist/Chats.d.ts +110 -0
- package/dist/Chats.d.ts.map +1 -0
- package/dist/Chats.js +98 -0
- package/dist/Chats.js.map +1 -0
- package/dist/Compaction.d.ts +105 -0
- package/dist/Compaction.d.ts.map +1 -0
- package/dist/Compaction.js +126 -0
- package/dist/Compaction.js.map +1 -0
- package/dist/CurrentChat.d.ts +40 -0
- package/dist/CurrentChat.d.ts.map +1 -0
- package/dist/CurrentChat.js +33 -0
- package/dist/CurrentChat.js.map +1 -0
- package/dist/InputId.d.ts +38 -0
- package/dist/InputId.d.ts.map +1 -0
- package/dist/InputId.js +43 -0
- package/dist/InputId.js.map +1 -0
- package/dist/Instructions.d.ts +56 -0
- package/dist/Instructions.d.ts.map +1 -0
- package/dist/Instructions.js +50 -0
- package/dist/Instructions.js.map +1 -0
- package/dist/Memory.d.ts +190 -0
- package/dist/Memory.d.ts.map +1 -0
- package/dist/Memory.js +216 -0
- package/dist/Memory.js.map +1 -0
- package/dist/RunId.d.ts +41 -0
- package/dist/RunId.d.ts.map +1 -0
- package/dist/RunId.js +46 -0
- package/dist/RunId.js.map +1 -0
- package/dist/Skill.d.ts +72 -0
- package/dist/Skill.d.ts.map +1 -0
- package/dist/Skill.js +58 -0
- package/dist/Skill.js.map +1 -0
- package/dist/Specialist.d.ts +267 -0
- package/dist/Specialist.d.ts.map +1 -0
- package/dist/Specialist.js +119 -0
- package/dist/Specialist.js.map +1 -0
- package/dist/ToolDiscovery.d.ts +107 -0
- package/dist/ToolDiscovery.d.ts.map +1 -0
- package/dist/ToolDiscovery.js +140 -0
- package/dist/ToolDiscovery.js.map +1 -0
- package/dist/ToolFailure.d.ts +66 -0
- package/dist/ToolFailure.d.ts.map +1 -0
- package/dist/ToolFailure.js +79 -0
- package/dist/ToolFailure.js.map +1 -0
- package/dist/_virtual/_rolldown/runtime.js +13 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.js +24 -0
- package/dist/internal/chat.js +177 -0
- package/dist/internal/chat.js.map +1 -0
- package/dist/internal/events.d.ts +46 -0
- package/dist/internal/events.d.ts.map +1 -0
- package/dist/internal/events.js +65 -0
- package/dist/internal/events.js.map +1 -0
- package/dist/internal/history.js +147 -0
- package/dist/internal/history.js.map +1 -0
- package/dist/internal/instructions.js +11 -0
- package/dist/internal/instructions.js.map +1 -0
- package/dist/internal/loop.d.ts +73 -0
- package/dist/internal/loop.d.ts.map +1 -0
- package/dist/internal/loop.js +131 -0
- package/dist/internal/loop.js.map +1 -0
- package/dist/internal/schema.js +14 -0
- package/dist/internal/schema.js.map +1 -0
- package/dist/internal/skills.js +28 -0
- package/dist/internal/skills.js.map +1 -0
- package/dist/internal/specialists.js +272 -0
- package/dist/internal/specialists.js.map +1 -0
- package/dist/internal/telemetry.js +85 -0
- package/dist/internal/telemetry.js.map +1 -0
- package/dist/internal/toolkit.d.ts +62 -0
- package/dist/internal/toolkit.d.ts.map +1 -0
- package/dist/internal/toolkit.js +108 -0
- package/dist/internal/toolkit.js.map +1 -0
- package/dist/internal/tools.js +113 -0
- package/dist/internal/tools.js.map +1 -0
- package/dist/internal/turns.d.ts +64 -0
- package/dist/internal/turns.d.ts.map +1 -0
- package/dist/internal/turns.js +214 -0
- package/dist/internal/turns.js.map +1 -0
- package/dist/internal/uuid.js +45 -0
- package/dist/internal/uuid.js.map +1 -0
- package/dist/internal/writer.d.ts +12 -0
- package/dist/internal/writer.d.ts.map +1 -0
- package/package.json +52 -3
- package/src/AppEvent.ts +134 -0
- package/src/Assistant.ts +589 -0
- package/src/AssistantActivity.ts +150 -0
- package/src/AssistantEngine.ts +343 -0
- package/src/AssistantEvent.ts +569 -0
- package/src/AssistantLoop.ts +209 -0
- package/src/AssistantToolCall.ts +40 -0
- package/src/Block.ts +84 -0
- package/src/BlockKit.ts +298 -0
- package/src/ChatId.ts +36 -0
- package/src/ChatLog.ts +247 -0
- package/src/ChatView.ts +587 -0
- package/src/Chats.ts +122 -0
- package/src/Compaction.ts +207 -0
- package/src/CurrentChat.ts +47 -0
- package/src/InputId.ts +43 -0
- package/src/Instructions.ts +72 -0
- package/src/Memory.ts +276 -0
- package/src/RunId.ts +46 -0
- package/src/Skill.ts +91 -0
- package/src/Specialist.ts +355 -0
- package/src/ToolDiscovery.ts +179 -0
- package/src/ToolFailure.ts +74 -0
- package/src/index.ts +120 -0
- package/src/internal/chat.ts +323 -0
- package/src/internal/events.ts +100 -0
- package/src/internal/history.ts +294 -0
- package/src/internal/instructions.ts +9 -0
- package/src/internal/loop.ts +274 -0
- package/src/internal/schema.ts +25 -0
- package/src/internal/skills.ts +37 -0
- package/src/internal/specialists.ts +410 -0
- package/src/internal/telemetry.ts +125 -0
- package/src/internal/toolkit.ts +188 -0
- package/src/internal/tools.ts +159 -0
- package/src/internal/turns.ts +410 -0
- package/src/internal/uuid.ts +50 -0
- package/src/internal/writer.ts +12 -0
package/src/AppEvent.ts
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registers an application's own events with an assistant.
|
|
3
|
+
*
|
|
4
|
+
* An app event is a tagged schema for something the application reports into a chat, such as a
|
|
5
|
+
* workflow's progress, a webhook, a summary for compaction, or the draft the user opened.
|
|
6
|
+
* {@link make} registers one with two choices: whether storing it wakes a turn (`wakes`), and
|
|
7
|
+
* how the model reads it (`render`).
|
|
8
|
+
*
|
|
9
|
+
* @since 0.1.0
|
|
10
|
+
*/
|
|
11
|
+
import * as Predicate from "effect/Predicate"
|
|
12
|
+
import type * as Schema from "effect/Schema"
|
|
13
|
+
import * as SchemaAST from "effect/SchemaAST"
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Schema for one of the application's own events.
|
|
17
|
+
*
|
|
18
|
+
* It is a tagged struct or class (`Schema.TaggedStruct`, `Schema.TaggedClass`) that needs no
|
|
19
|
+
* services.
|
|
20
|
+
*
|
|
21
|
+
* @category models
|
|
22
|
+
* @since 0.1.0
|
|
23
|
+
*/
|
|
24
|
+
export type EventSchema = Schema.Codec<{ readonly _tag: string }, { readonly _tag: string }> & {
|
|
25
|
+
readonly fields: { readonly _tag: { readonly ast: SchemaAST.AST } }
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Describes how the model reads an event.
|
|
30
|
+
*
|
|
31
|
+
* `"json"` shows the event's tag and fields as JSON. A function shows the text it returns for the
|
|
32
|
+
* event.
|
|
33
|
+
*
|
|
34
|
+
* @category models
|
|
35
|
+
* @since 0.1.0
|
|
36
|
+
*/
|
|
37
|
+
export type Render<A> = "json" | ((event: A) => string)
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Represents one of the application's events, registered with an assistant.
|
|
41
|
+
*
|
|
42
|
+
* It holds the event's schema and tag, whether storing it wakes a turn, and how the model reads
|
|
43
|
+
* it. A `render` of `undefined` means the model doesn't read it.
|
|
44
|
+
*
|
|
45
|
+
* @category models
|
|
46
|
+
* @since 0.1.0
|
|
47
|
+
*/
|
|
48
|
+
export interface AppEvent<S extends EventSchema = EventSchema> {
|
|
49
|
+
readonly schema: S
|
|
50
|
+
readonly tag: string
|
|
51
|
+
readonly wakes: boolean
|
|
52
|
+
readonly render: Render<S["Type"]> | undefined
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Represents any registered event, for generic constraints.
|
|
57
|
+
*
|
|
58
|
+
* @category utility types
|
|
59
|
+
* @since 0.1.0
|
|
60
|
+
*/
|
|
61
|
+
export type Any = AppEvent<any>
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Extracts the type of a registered event's values.
|
|
65
|
+
*
|
|
66
|
+
* @category utility types
|
|
67
|
+
* @since 0.1.0
|
|
68
|
+
*/
|
|
69
|
+
export type Type<E extends Any> = E["schema"]["Type"]
|
|
70
|
+
|
|
71
|
+
const tagOf = (schema: EventSchema): string => {
|
|
72
|
+
const ast = schema.fields._tag.ast
|
|
73
|
+
|
|
74
|
+
if (SchemaAST.isLiteral(ast) && Predicate.isString(ast.literal)) return ast.literal
|
|
75
|
+
|
|
76
|
+
throw new Error("An app event is a tagged struct or class.")
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Registers one of the application's events with an assistant.
|
|
81
|
+
*
|
|
82
|
+
* **Details**
|
|
83
|
+
*
|
|
84
|
+
* Storing the event wakes a turn only when `wakes` is `true`; it defaults to `false`. `render`
|
|
85
|
+
* defaults to `"json"` for an event that wakes a turn. An event that doesn't wake a turn and has
|
|
86
|
+
* no `render` isn't read by the model.
|
|
87
|
+
*
|
|
88
|
+
* The schema must be a tagged struct or class whose `_tag` is a string literal; `make` throws
|
|
89
|
+
* otherwise.
|
|
90
|
+
*
|
|
91
|
+
* **Example** (Registering an event that wakes a turn)
|
|
92
|
+
*
|
|
93
|
+
* ```ts
|
|
94
|
+
* import { AppEvent, Assistant, InputId } from "effect-assistant"
|
|
95
|
+
* import * as Schema from "effect/Schema"
|
|
96
|
+
*
|
|
97
|
+
* class OrderShipped extends Schema.TaggedClass<OrderShipped>()("OrderShipped", {
|
|
98
|
+
* id: InputId.InputId,
|
|
99
|
+
* orderId: Schema.String,
|
|
100
|
+
* carrier: Schema.String
|
|
101
|
+
* }) {}
|
|
102
|
+
*
|
|
103
|
+
* export const MyAssistant = Assistant.make("my-assistant", {
|
|
104
|
+
* events: [
|
|
105
|
+
* AppEvent.make(OrderShipped, {
|
|
106
|
+
* wakes: true,
|
|
107
|
+
* render: (shipped) =>
|
|
108
|
+
* `Order ${shipped.orderId} shipped with ${shipped.carrier}. Tell the user if it matters.`
|
|
109
|
+
* })
|
|
110
|
+
* ]
|
|
111
|
+
* })
|
|
112
|
+
* ```
|
|
113
|
+
*
|
|
114
|
+
* @category constructors
|
|
115
|
+
* @since 0.1.0
|
|
116
|
+
*/
|
|
117
|
+
export const make = <S extends EventSchema>(
|
|
118
|
+
schema: S,
|
|
119
|
+
options?: {
|
|
120
|
+
/** Whether storing it starts a turn, like a user's message. Default false. */
|
|
121
|
+
readonly wakes?: boolean | undefined
|
|
122
|
+
/** How the model reads it in its history. */
|
|
123
|
+
readonly render?: Render<S["Type"]> | undefined
|
|
124
|
+
}
|
|
125
|
+
): AppEvent<S> => {
|
|
126
|
+
const wakes = options?.wakes ?? false
|
|
127
|
+
|
|
128
|
+
return {
|
|
129
|
+
schema,
|
|
130
|
+
tag: tagOf(schema),
|
|
131
|
+
wakes,
|
|
132
|
+
render: options?.render ?? (wakes ? "json" : undefined)
|
|
133
|
+
}
|
|
134
|
+
}
|