liminal 0.5.17 → 0.7.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/CHANGELOG.md +12 -0
- package/Context.ts +8 -47
- package/L.ts +4 -0
- package/assistant.ts +52 -0
- package/dist/Context.d.ts +13 -30
- package/dist/Context.js +9 -22
- package/dist/Context.js.map +1 -1
- package/dist/L.d.ts +4 -0
- package/dist/L.js +5 -0
- package/dist/L.js.map +1 -0
- package/dist/assistant.d.ts +9 -0
- package/dist/assistant.js +44 -0
- package/dist/assistant.js.map +1 -0
- package/dist/index.d.ts +2 -14
- package/dist/index.js +2 -14
- package/dist/index.js.map +1 -1
- package/dist/messages.d.ts +4 -0
- package/dist/messages.js +5 -0
- package/dist/messages.js.map +1 -0
- package/dist/set.d.ts +3 -0
- package/dist/set.js +11 -0
- package/dist/set.js.map +1 -0
- package/dist/strand.d.ts +15 -0
- package/dist/strand.js +19 -0
- package/dist/strand.js.map +1 -0
- package/dist/todo.test.js +3 -0
- package/dist/todo.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/user.d.ts +6 -0
- package/dist/user.js +16 -0
- package/dist/user.js.map +1 -0
- package/dist/util/JSONValue.d.ts +0 -3
- package/dist/util/JSONValue.js +1 -31
- package/dist/util/JSONValue.js.map +1 -1
- package/index.ts +2 -14
- package/messages.ts +6 -0
- package/package.json +4 -3
- package/set.ts +11 -0
- package/strand.ts +38 -0
- package/todo.test.ts +3 -0
- package/user.ts +22 -0
- package/util/JSONValue.ts +0 -30
- package/Adapter.ts +0 -27
- package/AdapterRegistry.ts +0 -78
- package/Config.ts +0 -13
- package/Definition.ts +0 -48
- package/EventBase.ts +0 -23
- package/Handler.ts +0 -4
- package/L/L.ts +0 -24
- package/L/all.ts +0 -39
- package/L/assistant.ts +0 -28
- package/L/catch.ts +0 -38
- package/L/continuation.ts +0 -14
- package/L/emit.ts +0 -16
- package/L/focus.ts +0 -17
- package/L/infer.ts +0 -34
- package/L/message.ts +0 -16
- package/L/reflect.ts +0 -13
- package/L/run.ts +0 -29
- package/L/schema/_schema_common.ts +0 -30
- package/L/schema/anyOf.ts +0 -10
- package/L/schema/array.ts +0 -13
- package/L/schema/boolean.ts +0 -8
- package/L/schema/const.ts +0 -18
- package/L/schema/enum.ts +0 -18
- package/L/schema/integer.ts +0 -6
- package/L/schema/null.ts +0 -8
- package/L/schema/number.ts +0 -8
- package/L/schema/object.ts +0 -21
- package/L/schema/string.ts +0 -11
- package/L/strand.ts +0 -22
- package/L/stream.ts +0 -16
- package/L/system.ts +0 -19
- package/L/user.ts +0 -19
- package/LEvent.ts +0 -61
- package/LiminalAssertionError.ts +0 -19
- package/Message.ts +0 -16
- package/Rune.test.ts +0 -5
- package/Rune.ts +0 -60
- package/Schema.ts +0 -185
- package/Strand.ts +0 -284
- package/Tool.ts +0 -26
- package/TypeAdapter.ts +0 -3
- package/dist/Adapter.d.ts +0 -18
- package/dist/Adapter.js +0 -13
- package/dist/Adapter.js.map +0 -1
- package/dist/AdapterRegistry.d.ts +0 -27
- package/dist/AdapterRegistry.js +0 -62
- package/dist/AdapterRegistry.js.map +0 -1
- package/dist/Config.d.ts +0 -12
- package/dist/Config.js +0 -2
- package/dist/Config.js.map +0 -1
- package/dist/Definition.d.ts +0 -24
- package/dist/Definition.js +0 -29
- package/dist/Definition.js.map +0 -1
- package/dist/EventBase.d.ts +0 -11
- package/dist/EventBase.js +0 -16
- package/dist/EventBase.js.map +0 -1
- package/dist/Handler.d.ts +0 -3
- package/dist/Handler.js +0 -2
- package/dist/Handler.js.map +0 -1
- package/dist/L/L.d.ts +0 -24
- package/dist/L/L.js +0 -25
- package/dist/L/L.js.map +0 -1
- package/dist/L/all.d.ts +0 -14
- package/dist/L/all.js +0 -20
- package/dist/L/all.js.map +0 -1
- package/dist/L/assistant.d.ts +0 -11
- package/dist/L/assistant.js +0 -15
- package/dist/L/assistant.js.map +0 -1
- package/dist/L/catch.d.ts +0 -16
- package/dist/L/catch.js +0 -25
- package/dist/L/catch.js.map +0 -1
- package/dist/L/continuation.d.ts +0 -4
- package/dist/L/continuation.js +0 -13
- package/dist/L/continuation.js.map +0 -1
- package/dist/L/emit.d.ts +0 -7
- package/dist/L/emit.js +0 -15
- package/dist/L/emit.js.map +0 -1
- package/dist/L/focus.d.ts +0 -8
- package/dist/L/focus.js +0 -14
- package/dist/L/focus.js.map +0 -1
- package/dist/L/infer.d.ts +0 -8
- package/dist/L/infer.js +0 -30
- package/dist/L/infer.js.map +0 -1
- package/dist/L/message.d.ts +0 -8
- package/dist/L/message.js +0 -14
- package/dist/L/message.js.map +0 -1
- package/dist/L/reflect.d.ts +0 -5
- package/dist/L/reflect.js +0 -11
- package/dist/L/reflect.js.map +0 -1
- package/dist/L/run.d.ts +0 -14
- package/dist/L/run.js +0 -16
- package/dist/L/run.js.map +0 -1
- package/dist/L/schema/_schema_common.d.ts +0 -6
- package/dist/L/schema/_schema_common.js +0 -20
- package/dist/L/schema/_schema_common.js.map +0 -1
- package/dist/L/schema/anyOf.d.ts +0 -5
- package/dist/L/schema/anyOf.js +0 -5
- package/dist/L/schema/anyOf.js.map +0 -1
- package/dist/L/schema/array.d.ts +0 -5
- package/dist/L/schema/array.js +0 -8
- package/dist/L/schema/array.js.map +0 -1
- package/dist/L/schema/boolean.d.ts +0 -6
- package/dist/L/schema/boolean.js +0 -4
- package/dist/L/schema/boolean.js.map +0 -1
- package/dist/L/schema/const.d.ts +0 -8
- package/dist/L/schema/const.js +0 -10
- package/dist/L/schema/const.js.map +0 -1
- package/dist/L/schema/enum.d.ts +0 -8
- package/dist/L/schema/enum.js +0 -10
- package/dist/L/schema/enum.js.map +0 -1
- package/dist/L/schema/integer.d.ts +0 -5
- package/dist/L/schema/integer.js +0 -3
- package/dist/L/schema/integer.js.map +0 -1
- package/dist/L/schema/null.d.ts +0 -6
- package/dist/L/schema/null.js +0 -4
- package/dist/L/schema/null.js.map +0 -1
- package/dist/L/schema/number.d.ts +0 -6
- package/dist/L/schema/number.js +0 -4
- package/dist/L/schema/number.js.map +0 -1
- package/dist/L/schema/object.d.ts +0 -9
- package/dist/L/schema/object.js +0 -12
- package/dist/L/schema/object.js.map +0 -1
- package/dist/L/schema/string.d.ts +0 -8
- package/dist/L/schema/string.js +0 -4
- package/dist/L/schema/string.js.map +0 -1
- package/dist/L/strand.d.ts +0 -9
- package/dist/L/strand.js +0 -16
- package/dist/L/strand.js.map +0 -1
- package/dist/L/stream.d.ts +0 -4
- package/dist/L/stream.js +0 -15
- package/dist/L/stream.js.map +0 -1
- package/dist/L/system.d.ts +0 -4
- package/dist/L/system.js +0 -9
- package/dist/L/system.js.map +0 -1
- package/dist/L/user.d.ts +0 -4
- package/dist/L/user.js +0 -9
- package/dist/L/user.js.map +0 -1
- package/dist/LEvent.d.ts +0 -68
- package/dist/LEvent.js +0 -50
- package/dist/LEvent.js.map +0 -1
- package/dist/LiminalAssertionError.d.ts +0 -8
- package/dist/LiminalAssertionError.js +0 -20
- package/dist/LiminalAssertionError.js.map +0 -1
- package/dist/Message.d.ts +0 -14
- package/dist/Message.js +0 -2
- package/dist/Message.js.map +0 -1
- package/dist/Rune.d.ts +0 -46
- package/dist/Rune.js +0 -11
- package/dist/Rune.js.map +0 -1
- package/dist/Rune.test.js +0 -5
- package/dist/Rune.test.js.map +0 -1
- package/dist/Schema.d.ts +0 -46
- package/dist/Schema.js +0 -130
- package/dist/Schema.js.map +0 -1
- package/dist/Strand.d.ts +0 -81
- package/dist/Strand.js +0 -200
- package/dist/Strand.js.map +0 -1
- package/dist/Tool.d.ts +0 -10
- package/dist/Tool.js +0 -19
- package/dist/Tool.js.map +0 -1
- package/dist/TypeAdapter.d.ts +0 -1
- package/dist/TypeAdapter.js +0 -3
- package/dist/TypeAdapter.js.map +0 -1
- package/dist/errors.d.ts +0 -9
- package/dist/errors.js +0 -11
- package/dist/errors.js.map +0 -1
- package/dist/util/EnsureNarrow.d.ts +0 -1
- package/dist/util/EnsureNarrow.js +0 -2
- package/dist/util/EnsureNarrow.js.map +0 -1
- package/dist/util/attachCustomInspect.d.ts +0 -1
- package/dist/util/attachCustomInspect.js +0 -11
- package/dist/util/attachCustomInspect.js.map +0 -1
- package/errors.ts +0 -12
- package/util/EnsureNarrow.ts +0 -1
- package/util/attachCustomInspect.ts +0 -14
- /package/dist/{Rune.test.d.ts → todo.test.d.ts} +0 -0
package/CHANGELOG.md
CHANGED
package/Context.ts
CHANGED
|
@@ -1,49 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
1
|
+
import * as AiInput from "@effect/ai/AiInput"
|
|
2
|
+
import * as AiToolkit from "@effect/ai/AiToolkit"
|
|
3
|
+
import * as Context from "effect/Context"
|
|
4
|
+
import * as Ref from "effect/Ref"
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
* Context represents the execution environment for a Strand.
|
|
8
|
-
*
|
|
9
|
-
* It holds all the stateful components needed during strand execution:
|
|
10
|
-
* - Message history.
|
|
11
|
-
* - Event handler for processing events.
|
|
12
|
-
* - Model registry for tracking available language models.
|
|
13
|
-
* - Available tools for model-driven function calling.
|
|
14
|
-
*/
|
|
15
|
-
export interface Context {
|
|
16
|
-
/** Event handler for processing events during strand execution. */
|
|
17
|
-
readonly handler: Handler | undefined
|
|
18
|
-
/** Registry of available models for inference. */
|
|
19
|
-
readonly adapters: AdapterRegistry
|
|
20
|
-
/** Accumulated message history. */
|
|
21
|
-
readonly messages: Array<Message>
|
|
22
|
-
/** Set of tools available to the models. */
|
|
23
|
-
readonly tools: Set<Tool>
|
|
24
|
-
/** Creates a copy of the current `Context` for child strands. */
|
|
25
|
-
clone(): Context
|
|
26
|
-
}
|
|
6
|
+
export class MessagesRef extends Context.Tag("liminal/Messages")<MessagesRef, Ref.Ref<Array<AiInput.Message>>>() {}
|
|
27
7
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
* @returns A newly created Context.
|
|
32
|
-
*/
|
|
33
|
-
export function Context(context?: Omit<Context, "clone">): Context {
|
|
34
|
-
return {
|
|
35
|
-
handler: context?.handler,
|
|
36
|
-
adapters: context?.adapters?.clone() ?? new AdapterRegistry(),
|
|
37
|
-
messages: [...(context?.messages ?? [])],
|
|
38
|
-
tools: new Set(context?.tools),
|
|
39
|
-
clone(): Context {
|
|
40
|
-
return {
|
|
41
|
-
handler: this.handler,
|
|
42
|
-
adapters: this.adapters.clone(),
|
|
43
|
-
messages: [...this.messages],
|
|
44
|
-
tools: new Set(this.tools),
|
|
45
|
-
clone: this.clone,
|
|
46
|
-
}
|
|
47
|
-
},
|
|
48
|
-
}
|
|
49
|
-
}
|
|
8
|
+
export class System extends Context.Tag("liminal/System")<System, string | undefined>() {}
|
|
9
|
+
|
|
10
|
+
export class Toolkit extends Context.Tag("liminal/Tools")<Toolkit, AiToolkit.AiToolkit<any> | undefined>() {}
|
package/L.ts
ADDED
package/assistant.ts
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { AiError } from "@effect/ai/AiError"
|
|
2
|
+
import * as AiInput from "@effect/ai/AiInput"
|
|
3
|
+
import * as AiLanguageModel from "@effect/ai/AiLanguageModel"
|
|
4
|
+
import * as Effect from "effect/Effect"
|
|
5
|
+
import * as Option from "effect/Option"
|
|
6
|
+
import * as Ref from "effect/Ref"
|
|
7
|
+
import type * as Schema from "effect/Schema"
|
|
8
|
+
import { MessagesRef, System, Toolkit } from "./Context.ts"
|
|
9
|
+
|
|
10
|
+
export const assistant: {
|
|
11
|
+
(): Effect.Effect<string, AiError, AiLanguageModel.AiLanguageModel | MessagesRef | System>
|
|
12
|
+
<O, I>(
|
|
13
|
+
schema: Schema.Schema<O, I, never>,
|
|
14
|
+
): Effect.Effect<O, AiError, AiLanguageModel.AiLanguageModel | MessagesRef | System>
|
|
15
|
+
} = Effect.fn(function*(schema?: Schema.Schema<any>) {
|
|
16
|
+
const model = yield* AiLanguageModel.AiLanguageModel
|
|
17
|
+
const messagesRef = yield* MessagesRef
|
|
18
|
+
const toolkitOption = yield* Effect.serviceOption(Toolkit)
|
|
19
|
+
const prompt = yield* Ref.get(messagesRef)
|
|
20
|
+
const system = yield* System
|
|
21
|
+
if (schema) {
|
|
22
|
+
const response = yield* model.generateObject({
|
|
23
|
+
system,
|
|
24
|
+
schema,
|
|
25
|
+
prompt,
|
|
26
|
+
})
|
|
27
|
+
const { value, text } = response
|
|
28
|
+
yield* appendMessage(text)
|
|
29
|
+
return value
|
|
30
|
+
}
|
|
31
|
+
const response = yield* model.generateText({
|
|
32
|
+
system,
|
|
33
|
+
prompt,
|
|
34
|
+
...Option.isSome(toolkitOption)
|
|
35
|
+
? toolkitOption.value
|
|
36
|
+
? { toolkit: toolkitOption.value }
|
|
37
|
+
: {}
|
|
38
|
+
: {},
|
|
39
|
+
})
|
|
40
|
+
const { text } = response
|
|
41
|
+
yield* appendMessage(text)
|
|
42
|
+
return text
|
|
43
|
+
|
|
44
|
+
function* appendMessage(text: string) {
|
|
45
|
+
yield* Ref.update(messagesRef, (prev) => [
|
|
46
|
+
...prev,
|
|
47
|
+
new AiInput.AssistantMessage({
|
|
48
|
+
parts: [new AiInput.TextPart({ text })],
|
|
49
|
+
}),
|
|
50
|
+
])
|
|
51
|
+
}
|
|
52
|
+
})
|
package/dist/Context.d.ts
CHANGED
|
@@ -1,31 +1,14 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
*
|
|
8
|
-
* It holds all the stateful components needed during strand execution:
|
|
9
|
-
* - Message history.
|
|
10
|
-
* - Event handler for processing events.
|
|
11
|
-
* - Model registry for tracking available language models.
|
|
12
|
-
* - Available tools for model-driven function calling.
|
|
13
|
-
*/
|
|
14
|
-
export interface Context {
|
|
15
|
-
/** Event handler for processing events during strand execution. */
|
|
16
|
-
readonly handler: Handler | undefined;
|
|
17
|
-
/** Registry of available models for inference. */
|
|
18
|
-
readonly adapters: AdapterRegistry;
|
|
19
|
-
/** Accumulated message history. */
|
|
20
|
-
readonly messages: Array<Message>;
|
|
21
|
-
/** Set of tools available to the models. */
|
|
22
|
-
readonly tools: Set<Tool>;
|
|
23
|
-
/** Creates a copy of the current `Context` for child strands. */
|
|
24
|
-
clone(): Context;
|
|
1
|
+
import * as AiInput from "@effect/ai/AiInput";
|
|
2
|
+
import * as AiToolkit from "@effect/ai/AiToolkit";
|
|
3
|
+
import * as Context from "effect/Context";
|
|
4
|
+
import * as Ref from "effect/Ref";
|
|
5
|
+
declare const MessagesRef_base: Context.TagClass<MessagesRef, "liminal/Messages", Ref.Ref<(AiInput.UserMessage | AiInput.AssistantMessage | AiInput.ToolMessage)[]>>;
|
|
6
|
+
export declare class MessagesRef extends MessagesRef_base {
|
|
25
7
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
8
|
+
declare const System_base: Context.TagClass<System, "liminal/System", string | undefined>;
|
|
9
|
+
export declare class System extends System_base {
|
|
10
|
+
}
|
|
11
|
+
declare const Toolkit_base: Context.TagClass<Toolkit, "liminal/Tools", AiToolkit.AiToolkit<any> | undefined>;
|
|
12
|
+
export declare class Toolkit extends Toolkit_base {
|
|
13
|
+
}
|
|
14
|
+
export {};
|
package/dist/Context.js
CHANGED
|
@@ -1,24 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
adapters: context?.adapters?.clone() ?? new AdapterRegistry(),
|
|
11
|
-
messages: [...(context?.messages ?? [])],
|
|
12
|
-
tools: new Set(context?.tools),
|
|
13
|
-
clone() {
|
|
14
|
-
return {
|
|
15
|
-
handler: this.handler,
|
|
16
|
-
adapters: this.adapters.clone(),
|
|
17
|
-
messages: [...this.messages],
|
|
18
|
-
tools: new Set(this.tools),
|
|
19
|
-
clone: this.clone,
|
|
20
|
-
};
|
|
21
|
-
},
|
|
22
|
-
};
|
|
1
|
+
import * as AiInput from "@effect/ai/AiInput";
|
|
2
|
+
import * as AiToolkit from "@effect/ai/AiToolkit";
|
|
3
|
+
import * as Context from "effect/Context";
|
|
4
|
+
import * as Ref from "effect/Ref";
|
|
5
|
+
export class MessagesRef extends Context.Tag("liminal/Messages")() {
|
|
6
|
+
}
|
|
7
|
+
export class System extends Context.Tag("liminal/System")() {
|
|
8
|
+
}
|
|
9
|
+
export class Toolkit extends Context.Tag("liminal/Tools")() {
|
|
23
10
|
}
|
|
24
11
|
//# sourceMappingURL=Context.js.map
|
package/dist/Context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Context.js","sourceRoot":"","sources":["../Context.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Context.js","sourceRoot":"","sources":["../Context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,GAAG,MAAM,YAAY,CAAA;AAEjC,MAAM,OAAO,WAAY,SAAQ,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAgD;CAAG;AAEnH,MAAM,OAAO,MAAO,SAAQ,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAA8B;CAAG;AAE1F,MAAM,OAAO,OAAQ,SAAQ,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAiD;CAAG"}
|
package/dist/L.d.ts
ADDED
package/dist/L.js
ADDED
package/dist/L.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"L.js","sourceRoot":"","sources":["../L.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AiError } from "@effect/ai/AiError";
|
|
2
|
+
import * as AiLanguageModel from "@effect/ai/AiLanguageModel";
|
|
3
|
+
import * as Effect from "effect/Effect";
|
|
4
|
+
import type * as Schema from "effect/Schema";
|
|
5
|
+
import { MessagesRef, System } from "./Context.ts";
|
|
6
|
+
export declare const assistant: {
|
|
7
|
+
(): Effect.Effect<string, AiError, AiLanguageModel.AiLanguageModel | MessagesRef | System>;
|
|
8
|
+
<O, I>(schema: Schema.Schema<O, I, never>): Effect.Effect<O, AiError, AiLanguageModel.AiLanguageModel | MessagesRef | System>;
|
|
9
|
+
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import * as AiInput from "@effect/ai/AiInput";
|
|
2
|
+
import * as AiLanguageModel from "@effect/ai/AiLanguageModel";
|
|
3
|
+
import * as Effect from "effect/Effect";
|
|
4
|
+
import * as Option from "effect/Option";
|
|
5
|
+
import * as Ref from "effect/Ref";
|
|
6
|
+
import { MessagesRef, System, Toolkit } from "./Context.js";
|
|
7
|
+
export const assistant = Effect.fn(function* (schema) {
|
|
8
|
+
const model = yield* AiLanguageModel.AiLanguageModel;
|
|
9
|
+
const messagesRef = yield* MessagesRef;
|
|
10
|
+
const toolkitOption = yield* Effect.serviceOption(Toolkit);
|
|
11
|
+
const prompt = yield* Ref.get(messagesRef);
|
|
12
|
+
const system = yield* System;
|
|
13
|
+
if (schema) {
|
|
14
|
+
const response = yield* model.generateObject({
|
|
15
|
+
system,
|
|
16
|
+
schema,
|
|
17
|
+
prompt,
|
|
18
|
+
});
|
|
19
|
+
const { value, text } = response;
|
|
20
|
+
yield* appendMessage(text);
|
|
21
|
+
return value;
|
|
22
|
+
}
|
|
23
|
+
const response = yield* model.generateText({
|
|
24
|
+
system,
|
|
25
|
+
prompt,
|
|
26
|
+
...Option.isSome(toolkitOption)
|
|
27
|
+
? toolkitOption.value
|
|
28
|
+
? { toolkit: toolkitOption.value }
|
|
29
|
+
: {}
|
|
30
|
+
: {},
|
|
31
|
+
});
|
|
32
|
+
const { text } = response;
|
|
33
|
+
yield* appendMessage(text);
|
|
34
|
+
return text;
|
|
35
|
+
function* appendMessage(text) {
|
|
36
|
+
yield* Ref.update(messagesRef, (prev) => [
|
|
37
|
+
...prev,
|
|
38
|
+
new AiInput.AssistantMessage({
|
|
39
|
+
parts: [new AiInput.TextPart({ text })],
|
|
40
|
+
}),
|
|
41
|
+
]);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
//# sourceMappingURL=assistant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assistant.js","sourceRoot":"","sources":["../assistant.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,eAAe,MAAM,4BAA4B,CAAA;AAC7D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,GAAG,MAAM,YAAY,CAAA;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAE3D,MAAM,CAAC,MAAM,SAAS,GAKlB,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAC,MAA2B;IACjD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,eAAe,CAAA;IACpD,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,WAAW,CAAA;IACtC,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAA;IAC5B,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;YAC3C,MAAM;YACN,MAAM;YACN,MAAM;SACP,CAAC,CAAA;QACF,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAA;QAChC,KAAK,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QAC1B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;QACzC,MAAM;QACN,MAAM;QACN,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;YAC7B,CAAC,CAAC,aAAa,CAAC,KAAK;gBACnB,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,KAAK,EAAE;gBAClC,CAAC,CAAC,EAAE;YACN,CAAC,CAAC,EAAE;KACP,CAAC,CAAA;IACF,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAA;IACzB,KAAK,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;IAC1B,OAAO,IAAI,CAAA;IAEX,QAAQ,CAAC,CAAC,aAAa,CAAC,IAAY;QAClC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;YACvC,GAAG,IAAI;YACP,IAAI,OAAO,CAAC,gBAAgB,CAAC;gBAC3B,KAAK,EAAE,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;aACxC,CAAC;SACH,CAAC,CAAA;IACJ,CAAC;AACH,CAAC,CAAC,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,15 +1,3 @@
|
|
|
1
|
-
export * from "./Adapter.ts";
|
|
2
|
-
export * from "./AdapterRegistry.ts";
|
|
3
|
-
export * from "./Config.ts";
|
|
4
1
|
export * from "./Context.ts";
|
|
5
|
-
export * from "./
|
|
6
|
-
export * from "./
|
|
7
|
-
export * as L from "./L/L.ts";
|
|
8
|
-
export * from "./LEvent.ts";
|
|
9
|
-
export * from "./LiminalAssertionError.ts";
|
|
10
|
-
export * from "./Message.ts";
|
|
11
|
-
export * from "./Rune.ts";
|
|
12
|
-
export * from "./Schema.ts";
|
|
13
|
-
export * from "./Strand.ts";
|
|
14
|
-
export * from "./Tool.ts";
|
|
15
|
-
export * from "./TypeAdapter.ts";
|
|
2
|
+
export * as L from "./L.ts";
|
|
3
|
+
export * from "./strand.ts";
|
package/dist/index.js
CHANGED
|
@@ -1,16 +1,4 @@
|
|
|
1
|
-
export * from "./Adapter.js";
|
|
2
|
-
export * from "./AdapterRegistry.js";
|
|
3
|
-
export * from "./Config.js";
|
|
4
1
|
export * from "./Context.js";
|
|
5
|
-
export * from "./
|
|
6
|
-
export * from "./
|
|
7
|
-
export * as L from "./L/L.js";
|
|
8
|
-
export * from "./LEvent.js";
|
|
9
|
-
export * from "./LiminalAssertionError.js";
|
|
10
|
-
export * from "./Message.js";
|
|
11
|
-
export * from "./Rune.js";
|
|
12
|
-
export * from "./Schema.js";
|
|
13
|
-
export * from "./Strand.js";
|
|
14
|
-
export * from "./Tool.js";
|
|
15
|
-
export * from "./TypeAdapter.js";
|
|
2
|
+
export * as L from "./L.js";
|
|
3
|
+
export * from "./strand.js";
|
|
16
4
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAA;AAC3B,cAAc,aAAa,CAAA"}
|
package/dist/messages.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../messages.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,GAAG,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1C,MAAM,CAAC,MAAM,QAAQ,GAAsD,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA"}
|
package/dist/set.d.ts
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import { MessagesRef } from "./Context.ts";
|
|
3
|
+
export declare const set: (messages: Iterable<import("@effect/ai/AiInput").UserMessage | import("@effect/ai/AiInput").AssistantMessage | import("@effect/ai/AiInput").ToolMessage>) => Effect.Effect<(import("@effect/ai/AiInput").UserMessage | import("@effect/ai/AiInput").AssistantMessage | import("@effect/ai/AiInput").ToolMessage)[], never, MessagesRef>;
|
package/dist/set.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Message } from "@effect/ai/AiInput";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import * as Ref from "effect/Ref";
|
|
4
|
+
import { MessagesRef } from "./Context.js";
|
|
5
|
+
export const set = Effect.fn(function* (messages) {
|
|
6
|
+
const messagesRef = yield* MessagesRef;
|
|
7
|
+
const previous = yield* Ref.get(messagesRef);
|
|
8
|
+
yield* Ref.set(messagesRef, [...messages]);
|
|
9
|
+
return previous;
|
|
10
|
+
});
|
|
11
|
+
//# sourceMappingURL=set.js.map
|
package/dist/set.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set.js","sourceRoot":"","sources":["../set.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,GAAG,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1C,MAAM,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAC,QAA2B;IAChE,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,WAAW,CAAA;IACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IAC5C,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAA;IAC1C,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAC,CAAA"}
|
package/dist/strand.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as AiInput from "@effect/ai/AiInput";
|
|
2
|
+
import * as AiTool from "@effect/ai/AiTool";
|
|
3
|
+
import type * as AiToolkit from "@effect/ai/AiToolkit";
|
|
4
|
+
import * as Effect from "effect/Effect";
|
|
5
|
+
import { MessagesRef, System } from "./Context.ts";
|
|
6
|
+
export interface StrandOptions<in out Tool extends AiTool.Any> {
|
|
7
|
+
/** The system prompt. */
|
|
8
|
+
system?: string | undefined;
|
|
9
|
+
/** The initial list of AI input messages. */
|
|
10
|
+
messages?: Iterable<AiInput.Message> | undefined;
|
|
11
|
+
/** The tools to use for by strand. */
|
|
12
|
+
toolkit?: AiToolkit.AiToolkit<Tool> | undefined;
|
|
13
|
+
}
|
|
14
|
+
/** Create an isolated clone of the current conversation to provide for an effect. */
|
|
15
|
+
export declare const strand: <HE = never, T extends AiTool.Any = never>(options?: StrandOptions<T>) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E | HE, Exclude<R, MessagesRef | System> | T>;
|
package/dist/strand.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as AiInput from "@effect/ai/AiInput";
|
|
2
|
+
import * as AiTool from "@effect/ai/AiTool";
|
|
3
|
+
import * as Effect from "effect/Effect";
|
|
4
|
+
import * as Option from "effect/Option";
|
|
5
|
+
import * as Ref from "effect/Ref";
|
|
6
|
+
import { MessagesRef, System, Toolkit } from "./Context.js";
|
|
7
|
+
/** Create an isolated clone of the current conversation to provide for an effect. */
|
|
8
|
+
export const strand = (options) => (effect) => Effect.gen(function* () {
|
|
9
|
+
const messagesRef = options?.messages
|
|
10
|
+
? Ref.unsafeMake([...options.messages])
|
|
11
|
+
: yield* Option.match(yield* Effect.serviceOption(MessagesRef), {
|
|
12
|
+
*onSome(ref) {
|
|
13
|
+
return Ref.unsafeMake([...yield* Ref.get(ref)]);
|
|
14
|
+
},
|
|
15
|
+
onNone: () => Ref.make([]),
|
|
16
|
+
});
|
|
17
|
+
return yield* (effect.pipe(Effect.provideService(MessagesRef, messagesRef), Effect.provideService(System, options?.system), Effect.provideService(Toolkit, options?.toolkit)));
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=strand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strand.js","sourceRoot":"","sources":["../strand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAE3C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,GAAG,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAW3D,qFAAqF;AACrF,MAAM,CAAC,MAAM,MAAM,GAImD,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAC5F,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,WAAW,GAAG,OAAO,EAAE,QAAQ;QACnC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE;YAC9D,CAAC,MAAM,CAAC,GAAG;gBACT,OAAO,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YACjD,CAAC;YACD,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAA4B,CAAC;SACrD,CAAC,CAAA;IACJ,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CACxB,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,EAC/C,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAC9C,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CACjD,CAAC,CAAA;AACJ,CAAC,CAAU,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"todo.test.js","sourceRoot":"","sources":["../todo.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE3B,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA"}
|