@effect/ai 0.1.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/AiChat/package.json +6 -0
- package/AiError/package.json +6 -0
- package/AiInput/package.json +6 -0
- package/AiResponse/package.json +6 -0
- package/AiRole/package.json +6 -0
- package/AiToolkit/package.json +6 -0
- package/Completions/package.json +6 -0
- package/LICENSE +21 -0
- package/README.md +1 -0
- package/Tokenizer/package.json +6 -0
- package/dist/cjs/AiChat.js +151 -0
- package/dist/cjs/AiChat.js.map +1 -0
- package/dist/cjs/AiError.js +41 -0
- package/dist/cjs/AiError.js.map +1 -0
- package/dist/cjs/AiInput.js +349 -0
- package/dist/cjs/AiInput.js.map +1 -0
- package/dist/cjs/AiResponse.js +295 -0
- package/dist/cjs/AiResponse.js.map +1 -0
- package/dist/cjs/AiRole.js +106 -0
- package/dist/cjs/AiRole.js.map +1 -0
- package/dist/cjs/AiToolkit.js +132 -0
- package/dist/cjs/AiToolkit.js.map +1 -0
- package/dist/cjs/Completions.js +217 -0
- package/dist/cjs/Completions.js.map +1 -0
- package/dist/cjs/Tokenizer.js +59 -0
- package/dist/cjs/Tokenizer.js.map +1 -0
- package/dist/cjs/index.js +25 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/dts/AiChat.d.ts +73 -0
- package/dist/dts/AiChat.d.ts.map +1 -0
- package/dist/dts/AiError.d.ts +38 -0
- package/dist/dts/AiError.d.ts.map +1 -0
- package/dist/dts/AiInput.d.ts +283 -0
- package/dist/dts/AiInput.d.ts.map +1 -0
- package/dist/dts/AiResponse.d.ts +235 -0
- package/dist/dts/AiResponse.d.ts.map +1 -0
- package/dist/dts/AiRole.d.ts +111 -0
- package/dist/dts/AiRole.d.ts.map +1 -0
- package/dist/dts/AiToolkit.d.ts +158 -0
- package/dist/dts/AiToolkit.d.ts.map +1 -0
- package/dist/dts/Completions.d.ts +104 -0
- package/dist/dts/Completions.d.ts.map +1 -0
- package/dist/dts/Tokenizer.d.ts +34 -0
- package/dist/dts/Tokenizer.d.ts.map +1 -0
- package/dist/dts/index.d.ts +33 -0
- package/dist/dts/index.d.ts.map +1 -0
- package/dist/esm/AiChat.js +139 -0
- package/dist/esm/AiChat.js.map +1 -0
- package/dist/esm/AiError.js +31 -0
- package/dist/esm/AiError.js.map +1 -0
- package/dist/esm/AiInput.js +332 -0
- package/dist/esm/AiInput.js.map +1 -0
- package/dist/esm/AiResponse.js +281 -0
- package/dist/esm/AiResponse.js.map +1 -0
- package/dist/esm/AiRole.js +93 -0
- package/dist/esm/AiRole.js.map +1 -0
- package/dist/esm/AiToolkit.js +123 -0
- package/dist/esm/AiToolkit.js.map +1 -0
- package/dist/esm/Completions.js +206 -0
- package/dist/esm/Completions.js.map +1 -0
- package/dist/esm/Tokenizer.js +48 -0
- package/dist/esm/Tokenizer.js.map +1 -0
- package/dist/esm/index.js +33 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +4 -0
- package/package.json +100 -0
- package/src/AiChat.ts +274 -0
- package/src/AiError.ts +38 -0
- package/src/AiInput.ts +456 -0
- package/src/AiResponse.ts +343 -0
- package/src/AiRole.ts +122 -0
- package/src/AiToolkit.ts +314 -0
- package/src/Completions.ts +354 -0
- package/src/Tokenizer.ts +78 -0
- package/src/index.ts +39 -0
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import type * as Schema from "@effect/schema/Schema";
|
|
5
|
+
import type * as Serializable from "@effect/schema/Serializable";
|
|
6
|
+
import * as Context from "effect/Context";
|
|
7
|
+
import * as Effect from "effect/Effect";
|
|
8
|
+
import * as HashMap from "effect/HashMap";
|
|
9
|
+
import * as Inspectable from "effect/Inspectable";
|
|
10
|
+
import * as Layer from "effect/Layer";
|
|
11
|
+
import type { Scope } from "effect/Scope";
|
|
12
|
+
import type * as Types from "effect/Types";
|
|
13
|
+
/**
|
|
14
|
+
* @since 1.0.0
|
|
15
|
+
* @category type ids
|
|
16
|
+
*/
|
|
17
|
+
export declare const TypeId: unique symbol;
|
|
18
|
+
/**
|
|
19
|
+
* @since 1.0.0
|
|
20
|
+
* @category type ids
|
|
21
|
+
*/
|
|
22
|
+
export type TypeId = typeof TypeId;
|
|
23
|
+
/**
|
|
24
|
+
* @since 1.0.0
|
|
25
|
+
* @category models
|
|
26
|
+
*/
|
|
27
|
+
export interface AiToolkit<in out Tools extends Tool.AnySchema> extends Effect.Effect<Handlers<Tools>, never, Tool.Services<Tools> | Registry>, Inspectable.Inspectable {
|
|
28
|
+
readonly [TypeId]: TypeId;
|
|
29
|
+
readonly tools: HashMap.HashMap<string, Tools>;
|
|
30
|
+
readonly add: <S extends Tool.AnySchema>(tool: S) => AiToolkit<Tools | S>;
|
|
31
|
+
readonly addAll: <ToAdd extends ReadonlyArray<Tool.AnySchema>>(...tools: ToAdd) => AiToolkit<Tools | ToAdd[number]>;
|
|
32
|
+
readonly concat: <T extends Tool.AnySchema>(that: AiToolkit<T>) => AiToolkit<Tools | T>;
|
|
33
|
+
readonly implement: <R, EX = never, RX = never>(f: (handlers: Handlers<Tools>) => Handlers<never, R> | Effect.Effect<Handlers<never, R>, EX, RX>) => Layer.Layer<Tool.ServiceFromTag<Tools["_tag"]> | Registry, EX, R | RX>;
|
|
34
|
+
readonly implementScoped: <R, EX = never, RX = never>(f: (handlers: Handlers<Tools>) => Handlers<never, R> | Effect.Effect<Handlers<never, R>, EX, RX>) => Layer.Layer<Tool.ServiceFromTag<Tools["_tag"]> | Registry, EX, Exclude<R | RX, Scope>>;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* @since 1.0.0
|
|
38
|
+
* @category models
|
|
39
|
+
*/
|
|
40
|
+
export declare namespace AiToolkit {
|
|
41
|
+
/**
|
|
42
|
+
* @since 1.0.0
|
|
43
|
+
* @category models
|
|
44
|
+
*/
|
|
45
|
+
type Tools<A> = A extends AiToolkit<infer Tools> ? Tools : never;
|
|
46
|
+
/**
|
|
47
|
+
* @since 1.0.0
|
|
48
|
+
* @category models
|
|
49
|
+
*/
|
|
50
|
+
type SuccessSchema<A> = A extends AiToolkit<infer Tools> ? Tools["success"] : never;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* @since 1.0.0
|
|
54
|
+
* @category tool
|
|
55
|
+
*/
|
|
56
|
+
export declare namespace Tool {
|
|
57
|
+
/**
|
|
58
|
+
* @since 1.0.0
|
|
59
|
+
* @category tool
|
|
60
|
+
*/
|
|
61
|
+
interface AnySchema {
|
|
62
|
+
readonly [Schema.TypeId]: any;
|
|
63
|
+
readonly _tag: string;
|
|
64
|
+
readonly Type: Serializable.SerializableWithResult.All;
|
|
65
|
+
readonly success: Schema.Schema.Any;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* @since 1.0.0
|
|
69
|
+
* @category tool
|
|
70
|
+
*/
|
|
71
|
+
type Success<Tool extends AnySchema> = Serializable.WithResult.Success<Tool["Type"]>;
|
|
72
|
+
/**
|
|
73
|
+
* @since 1.0.0
|
|
74
|
+
* @category tool
|
|
75
|
+
*/
|
|
76
|
+
type Failure<Tool extends AnySchema> = Serializable.WithResult.Failure<Tool["Type"]>;
|
|
77
|
+
/**
|
|
78
|
+
* @since 1.0.0
|
|
79
|
+
* @category tool
|
|
80
|
+
*/
|
|
81
|
+
type Context<Tool extends AnySchema> = Serializable.WithResult.Context<Tool["Type"]>;
|
|
82
|
+
/**
|
|
83
|
+
* @since 1.0.0
|
|
84
|
+
* @category tool
|
|
85
|
+
*/
|
|
86
|
+
type Handler<Tool extends AnySchema, R> = (params: Tool["Type"]) => Effect.Effect<Success<Tool>, Failure<Tool>, R>;
|
|
87
|
+
/**
|
|
88
|
+
* @since 1.0.0
|
|
89
|
+
* @category tool
|
|
90
|
+
*/
|
|
91
|
+
type HandlerAny = (params: any) => Effect.Effect<any, any, any>;
|
|
92
|
+
/**
|
|
93
|
+
* @since 1.0.0
|
|
94
|
+
* @category tool
|
|
95
|
+
*/
|
|
96
|
+
interface Service<Tag extends string> {
|
|
97
|
+
readonly _: unique symbol;
|
|
98
|
+
readonly name: Types.Invariant<Tag>;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* @since 1.0.0
|
|
102
|
+
* @category tool
|
|
103
|
+
*/
|
|
104
|
+
type ServiceFromTag<Tag extends string> = Tag extends infer T ? T extends string ? Service<T> : never : never;
|
|
105
|
+
/**
|
|
106
|
+
* @since 1.0.0
|
|
107
|
+
* @category tool
|
|
108
|
+
*/
|
|
109
|
+
type Services<Tools extends AnySchema> = ServiceFromTag<Tools["_tag"]>;
|
|
110
|
+
}
|
|
111
|
+
declare const Registry_base: Context.TagClass<Registry, "@effect/ai/AiToolkit/Registry", Map<Tool.AnySchema, Tool.HandlerAny>>;
|
|
112
|
+
/**
|
|
113
|
+
* @since 1.0.0
|
|
114
|
+
* @category registry
|
|
115
|
+
*/
|
|
116
|
+
export declare class Registry extends Registry_base {
|
|
117
|
+
static readonly Live: Layer.Layer<Registry>;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* @since 1.0.0
|
|
121
|
+
* @category constructors
|
|
122
|
+
*/
|
|
123
|
+
export declare const empty: AiToolkit<never>;
|
|
124
|
+
/**
|
|
125
|
+
* @since 1.0.0
|
|
126
|
+
* @category handlers
|
|
127
|
+
*/
|
|
128
|
+
export declare const HandlersTypeId: unique symbol;
|
|
129
|
+
/**
|
|
130
|
+
* @since 1.0.0
|
|
131
|
+
* @category handlers
|
|
132
|
+
*/
|
|
133
|
+
export type HandlersTypeId = typeof HandlersTypeId;
|
|
134
|
+
/**
|
|
135
|
+
* @since 1.0.0
|
|
136
|
+
* @category handlers
|
|
137
|
+
*/
|
|
138
|
+
export interface Handlers<in out Tools extends Tool.AnySchema, R = never> {
|
|
139
|
+
readonly [HandlersTypeId]: Handlers.Variance<Tools>;
|
|
140
|
+
readonly toolkit: AiToolkit<Tools>;
|
|
141
|
+
readonly handlers: HashMap.HashMap<string, Tool.Handler<any, R>>;
|
|
142
|
+
readonly handle: <Tag extends Types.Tags<Tools>, RH>(tag: Tag, f: Tool.Handler<Types.ExtractTag<Tools, Tag>, RH>) => Handlers<Types.ExcludeTag<Tools, Tag>, R | RH | Tool.Context<Types.ExtractTag<Tools, Tag>>>;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* @since 1.0.0
|
|
146
|
+
* @category handlers
|
|
147
|
+
*/
|
|
148
|
+
export declare namespace Handlers {
|
|
149
|
+
/**
|
|
150
|
+
* @since 1.0.0
|
|
151
|
+
* @category handlers
|
|
152
|
+
*/
|
|
153
|
+
interface Variance<Tools extends Tool.AnySchema> {
|
|
154
|
+
readonly _Tools: Types.Invariant<Tools>;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
export {};
|
|
158
|
+
//# sourceMappingURL=AiToolkit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AiToolkit.d.ts","sourceRoot":"","sources":["../../src/AiToolkit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as JsonSchema from "@effect/platform/OpenApiJsonSchema";
|
|
5
|
+
import * as Schema from "@effect/schema/Schema";
|
|
6
|
+
import * as Chunk from "effect/Chunk";
|
|
7
|
+
import * as Context from "effect/Context";
|
|
8
|
+
import * as Effect from "effect/Effect";
|
|
9
|
+
import * as Option from "effect/Option";
|
|
10
|
+
import * as Stream from "effect/Stream";
|
|
11
|
+
import type { Concurrency } from "effect/Types";
|
|
12
|
+
import { AiError } from "./AiError.js";
|
|
13
|
+
import type { Message } from "./AiInput.js";
|
|
14
|
+
import * as AiInput from "./AiInput.js";
|
|
15
|
+
import type { AiResponse } from "./AiResponse.js";
|
|
16
|
+
import { WithResolved } from "./AiResponse.js";
|
|
17
|
+
import type * as AiToolkit from "./AiToolkit.js";
|
|
18
|
+
declare const Completions_base: Context.TagClass<Completions, "@effect/ai/Completions", Completions.Service>;
|
|
19
|
+
/**
|
|
20
|
+
* @since 1.0.0
|
|
21
|
+
* @category tags
|
|
22
|
+
*/
|
|
23
|
+
export declare class Completions extends Completions_base {
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* @since 1.0.0
|
|
27
|
+
* @category models
|
|
28
|
+
*/
|
|
29
|
+
export declare namespace Completions {
|
|
30
|
+
/**
|
|
31
|
+
* @since 1.0.0
|
|
32
|
+
* @models
|
|
33
|
+
*/
|
|
34
|
+
interface StructuredSchema<A, I, R> extends Schema.Schema<A, I, R> {
|
|
35
|
+
readonly _tag?: string;
|
|
36
|
+
readonly identifier: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* @since 1.0.0
|
|
40
|
+
* @models
|
|
41
|
+
*/
|
|
42
|
+
interface Service {
|
|
43
|
+
readonly create: (input: AiInput.Input) => Effect.Effect<AiResponse, AiError>;
|
|
44
|
+
readonly stream: (input: AiInput.Input) => Stream.Stream<AiResponse, AiError>;
|
|
45
|
+
readonly structured: <A, I, R>(options: {
|
|
46
|
+
readonly input: AiInput.Input;
|
|
47
|
+
readonly schema: StructuredSchema<A, I, R>;
|
|
48
|
+
}) => Effect.Effect<WithResolved<A>, AiError, R>;
|
|
49
|
+
readonly toolkit: <Tools extends AiToolkit.Tool.AnySchema>(options: {
|
|
50
|
+
readonly input: AiInput.Input;
|
|
51
|
+
readonly tools: AiToolkit.Handlers<Tools>;
|
|
52
|
+
readonly required?: Tools["_tag"] | boolean | undefined;
|
|
53
|
+
readonly concurrency?: Concurrency | undefined;
|
|
54
|
+
}) => Effect.Effect<WithResolved<AiToolkit.Tool.Success<Tools>>, AiError | AiToolkit.Tool.Failure<Tools>, AiToolkit.Tool.Context<Tools>>;
|
|
55
|
+
readonly toolkitStream: <Tools extends AiToolkit.Tool.AnySchema>(options: {
|
|
56
|
+
readonly input: AiInput.Input;
|
|
57
|
+
readonly tools: AiToolkit.Handlers<Tools>;
|
|
58
|
+
readonly required?: Tools["_tag"] | boolean | undefined;
|
|
59
|
+
readonly concurrency?: Concurrency | undefined;
|
|
60
|
+
}) => Stream.Stream<WithResolved<AiToolkit.Tool.Success<Tools>>, AiError | AiToolkit.Tool.Failure<Tools>, AiToolkit.Tool.Context<Tools>>;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* @since 1.0.0
|
|
65
|
+
* @category models
|
|
66
|
+
*/
|
|
67
|
+
export interface CompletionOptions {
|
|
68
|
+
readonly system: Option.Option<string>;
|
|
69
|
+
readonly input: Chunk.NonEmptyChunk<Message>;
|
|
70
|
+
readonly tools: Array<{
|
|
71
|
+
readonly name: string;
|
|
72
|
+
readonly description: string;
|
|
73
|
+
readonly parameters: JsonSchema.JsonSchema;
|
|
74
|
+
}>;
|
|
75
|
+
readonly required: boolean | string;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* @since 1.0.0
|
|
79
|
+
* @category constructors
|
|
80
|
+
*/
|
|
81
|
+
export declare const make: (options: {
|
|
82
|
+
readonly create: (options: {
|
|
83
|
+
readonly system: Option.Option<string>;
|
|
84
|
+
readonly input: Chunk.NonEmptyChunk<Message>;
|
|
85
|
+
readonly tools: Array<{
|
|
86
|
+
readonly name: string;
|
|
87
|
+
readonly description: string;
|
|
88
|
+
readonly parameters: JsonSchema.JsonSchema;
|
|
89
|
+
}>;
|
|
90
|
+
readonly required: boolean | string;
|
|
91
|
+
}) => Effect.Effect<AiResponse, AiError>;
|
|
92
|
+
readonly stream: (options: {
|
|
93
|
+
readonly system: Option.Option<string>;
|
|
94
|
+
readonly input: Chunk.NonEmptyChunk<Message>;
|
|
95
|
+
readonly tools: Array<{
|
|
96
|
+
readonly name: string;
|
|
97
|
+
readonly description: string;
|
|
98
|
+
readonly parameters: JsonSchema.JsonSchema;
|
|
99
|
+
}>;
|
|
100
|
+
readonly required: boolean | string;
|
|
101
|
+
}) => Stream.Stream<AiResponse, AiError>;
|
|
102
|
+
}) => Effect.Effect<Completions.Service>;
|
|
103
|
+
export {};
|
|
104
|
+
//# sourceMappingURL=Completions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Completions.d.ts","sourceRoot":"","sources":["../../src/Completions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as Context from "effect/Context";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import type { AiError } from "./AiError.js";
|
|
4
|
+
import * as AiInput from "./AiInput.js";
|
|
5
|
+
declare const Tokenizer_base: Context.TagClass<Tokenizer, "@effect/ai/Tokenizer", Tokenizer.Service>;
|
|
6
|
+
/**
|
|
7
|
+
* @since 1.0.0
|
|
8
|
+
* @category tags
|
|
9
|
+
*/
|
|
10
|
+
export declare class Tokenizer extends Tokenizer_base {
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* @since 1.0.0
|
|
14
|
+
* @category models
|
|
15
|
+
*/
|
|
16
|
+
export declare namespace Tokenizer {
|
|
17
|
+
/**
|
|
18
|
+
* @since 1.0.0
|
|
19
|
+
* @models
|
|
20
|
+
*/
|
|
21
|
+
interface Service {
|
|
22
|
+
readonly tokenize: (content: AiInput.Input) => Effect.Effect<Array<number>, AiError>;
|
|
23
|
+
readonly truncate: (content: AiInput.Input, tokens: number) => Effect.Effect<AiInput.Input, AiError>;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* @since 1.0.0
|
|
28
|
+
* @category constructors
|
|
29
|
+
*/
|
|
30
|
+
export declare const make: (options: {
|
|
31
|
+
readonly tokenize: (content: AiInput.AiInput) => Effect.Effect<Array<number>, AiError>;
|
|
32
|
+
}) => Tokenizer.Service;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=Tokenizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tokenizer.d.ts","sourceRoot":"","sources":["../../src/Tokenizer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAE3C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;;AAEvC;;;GAGG;AACH,qBAAa,SAAU,SAAQ,cAG5B;CAAG;AAEN;;;GAGG;AACH,MAAM,CAAC,OAAO,WAAW,SAAS,CAAC;IACjC;;;OAGG;IACH,UAAiB,OAAO;QACtB,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAA;QACpF,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;KACrG;CACF;AAED;;;GAGG;AACH,eAAO,MAAM,IAAI,YAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAA;CACvF,KAAG,SAAS,CAAC,OAQV,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
export * as AiChat from "./AiChat.js";
|
|
5
|
+
/**
|
|
6
|
+
* @since 1.0.0
|
|
7
|
+
*/
|
|
8
|
+
export * as AiError from "./AiError.js";
|
|
9
|
+
/**
|
|
10
|
+
* @since 1.0.0
|
|
11
|
+
*/
|
|
12
|
+
export * as AiInput from "./AiInput.js";
|
|
13
|
+
/**
|
|
14
|
+
* @since 1.0.0
|
|
15
|
+
*/
|
|
16
|
+
export * as AiResponse from "./AiResponse.js";
|
|
17
|
+
/**
|
|
18
|
+
* @since 1.0.0
|
|
19
|
+
*/
|
|
20
|
+
export * as AiRole from "./AiRole.js";
|
|
21
|
+
/**
|
|
22
|
+
* @since 1.0.0
|
|
23
|
+
*/
|
|
24
|
+
export * as AiToolkit from "./AiToolkit.js";
|
|
25
|
+
/**
|
|
26
|
+
* @since 1.0.0
|
|
27
|
+
*/
|
|
28
|
+
export * as Completions from "./Completions.js";
|
|
29
|
+
/**
|
|
30
|
+
* @since 1.0.0
|
|
31
|
+
*/
|
|
32
|
+
export * as Tokenizer from "./Tokenizer.js";
|
|
33
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;GAEG;AACH,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA;AAEvC;;GAEG;AACH,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C;;GAEG;AACH,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAE/C;;GAEG;AACH,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import * as Schema from "@effect/schema/Schema";
|
|
2
|
+
import * as Channel from "effect/Channel";
|
|
3
|
+
import * as Chunk from "effect/Chunk";
|
|
4
|
+
import * as Effect from "effect/Effect";
|
|
5
|
+
import * as Ref from "effect/Ref";
|
|
6
|
+
import * as Stream from "effect/Stream";
|
|
7
|
+
import * as AiInput from "./AiInput.js";
|
|
8
|
+
import { AiResponse, WithResolved } from "./AiResponse.js";
|
|
9
|
+
import { Completions } from "./Completions.js";
|
|
10
|
+
/**
|
|
11
|
+
* @since 1.0.0
|
|
12
|
+
* @category tags
|
|
13
|
+
*/
|
|
14
|
+
export class AiChat extends /*#__PURE__*/Effect.Tag("@effect/ai/AiChat")() {}
|
|
15
|
+
/**
|
|
16
|
+
* @since 1.0.0
|
|
17
|
+
* @category constructors
|
|
18
|
+
*/
|
|
19
|
+
export const fromInput = input => Ref.make(AiInput.make(input)).pipe(Effect.bindTo("historyRef"), Effect.bind("completions", () => Completions), Effect.map(({
|
|
20
|
+
completions,
|
|
21
|
+
historyRef
|
|
22
|
+
}) => new AiChatImpl(historyRef, completions)));
|
|
23
|
+
class AiChatImpl {
|
|
24
|
+
historyRef;
|
|
25
|
+
completions;
|
|
26
|
+
semaphore = /*#__PURE__*/Effect.unsafeMakeSemaphore(1);
|
|
27
|
+
constructor(historyRef, completions) {
|
|
28
|
+
this.historyRef = historyRef;
|
|
29
|
+
this.completions = completions;
|
|
30
|
+
}
|
|
31
|
+
get history() {
|
|
32
|
+
return Ref.get(this.historyRef);
|
|
33
|
+
}
|
|
34
|
+
get export() {
|
|
35
|
+
return Ref.get(this.historyRef).pipe(Effect.flatMap(Schema.encode(AiInput.Schema)), Effect.orDie);
|
|
36
|
+
}
|
|
37
|
+
get exportJson() {
|
|
38
|
+
return Ref.get(this.historyRef).pipe(Effect.flatMap(Schema.encode(AiInput.SchemaJson)), Effect.orDie);
|
|
39
|
+
}
|
|
40
|
+
send(input) {
|
|
41
|
+
const newParts = AiInput.make(input);
|
|
42
|
+
return Ref.get(this.historyRef).pipe(Effect.flatMap(parts => {
|
|
43
|
+
const allParts = Chunk.appendAll(parts, newParts);
|
|
44
|
+
return this.completions.create(allParts).pipe(Effect.tap(response => {
|
|
45
|
+
const responseParts = AiInput.make(response);
|
|
46
|
+
return Ref.set(this.historyRef, Chunk.appendAll(allParts, responseParts));
|
|
47
|
+
}));
|
|
48
|
+
}), this.semaphore.withPermits(1), Effect.withSpan("AiChat.send", {
|
|
49
|
+
attributes: {
|
|
50
|
+
input
|
|
51
|
+
},
|
|
52
|
+
captureStackTrace: false
|
|
53
|
+
}));
|
|
54
|
+
}
|
|
55
|
+
stream(input) {
|
|
56
|
+
return Stream.suspend(() => {
|
|
57
|
+
let combined = AiResponse.empty;
|
|
58
|
+
return Stream.fromChannel(Channel.acquireUseRelease(this.semaphore.take(1).pipe(Effect.zipRight(Ref.get(this.historyRef)), Effect.map(Chunk.appendAll(AiInput.make(input)))), parts => this.completions.stream(parts).pipe(Stream.map(chunk => {
|
|
59
|
+
combined = combined.concat(chunk);
|
|
60
|
+
return chunk;
|
|
61
|
+
}), Stream.toChannel), parts => Effect.zipRight(Ref.set(this.historyRef, Chunk.appendAll(parts, AiInput.make(combined))), this.semaphore.release(1))));
|
|
62
|
+
}).pipe(Stream.withSpan("AiChat.stream", {
|
|
63
|
+
attributes: {
|
|
64
|
+
input
|
|
65
|
+
},
|
|
66
|
+
captureStackTrace: false
|
|
67
|
+
}));
|
|
68
|
+
}
|
|
69
|
+
structured(schema, input) {
|
|
70
|
+
const newParts = AiInput.make(input);
|
|
71
|
+
return Ref.get(this.historyRef).pipe(Effect.flatMap(parts => {
|
|
72
|
+
const allParts = Chunk.appendAll(parts, newParts);
|
|
73
|
+
return this.completions.structured({
|
|
74
|
+
input: allParts,
|
|
75
|
+
schema
|
|
76
|
+
}).pipe(Effect.flatMap(response => {
|
|
77
|
+
const responseParts = AiInput.make(response);
|
|
78
|
+
return Effect.as(Ref.set(this.historyRef, Chunk.appendAll(allParts, responseParts)), response.unsafeValue);
|
|
79
|
+
}));
|
|
80
|
+
}), this.semaphore.withPermits(1), Effect.withSpan("AiChat.structured", {
|
|
81
|
+
attributes: {
|
|
82
|
+
input,
|
|
83
|
+
schema: schema._tag ?? schema.identifier
|
|
84
|
+
},
|
|
85
|
+
captureStackTrace: false
|
|
86
|
+
}));
|
|
87
|
+
}
|
|
88
|
+
toolkit(options) {
|
|
89
|
+
const newParts = AiInput.make(options.input);
|
|
90
|
+
return Ref.get(this.historyRef).pipe(Effect.flatMap(parts => {
|
|
91
|
+
const allParts = Chunk.appendAll(parts, newParts);
|
|
92
|
+
return this.completions.toolkit({
|
|
93
|
+
...options,
|
|
94
|
+
input: allParts
|
|
95
|
+
}).pipe(Effect.tap(response => {
|
|
96
|
+
const responseParts = AiInput.make(response);
|
|
97
|
+
return Ref.set(this.historyRef, Chunk.appendAll(allParts, responseParts));
|
|
98
|
+
}));
|
|
99
|
+
}), this.semaphore.withPermits(1), Effect.withSpan("AiChat.toolkit", {
|
|
100
|
+
attributes: {
|
|
101
|
+
input: options.input
|
|
102
|
+
},
|
|
103
|
+
captureStackTrace: false
|
|
104
|
+
}));
|
|
105
|
+
}
|
|
106
|
+
toolkitStream(options) {
|
|
107
|
+
return Stream.suspend(() => {
|
|
108
|
+
let combined = WithResolved.empty;
|
|
109
|
+
return Stream.fromChannel(Channel.acquireUseRelease(this.semaphore.take(1).pipe(Effect.zipRight(Ref.get(this.historyRef)), Effect.map(Chunk.appendAll(AiInput.make(options.input)))), parts => this.completions.toolkitStream({
|
|
110
|
+
...options,
|
|
111
|
+
input: parts
|
|
112
|
+
}).pipe(Stream.map(chunk => {
|
|
113
|
+
combined = combined.concat(chunk);
|
|
114
|
+
return chunk;
|
|
115
|
+
}), Stream.toChannel), parts => Effect.zipRight(Ref.set(this.historyRef, Chunk.appendAll(parts, AiInput.make(combined))), this.semaphore.release(1))));
|
|
116
|
+
}).pipe(Stream.withSpan("AiChat.toolkitStream", {
|
|
117
|
+
attributes: {
|
|
118
|
+
input: options.input
|
|
119
|
+
},
|
|
120
|
+
captureStackTrace: false
|
|
121
|
+
}));
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* @since 1.0.0
|
|
126
|
+
* @category constructors
|
|
127
|
+
*/
|
|
128
|
+
export const empty = /*#__PURE__*/fromInput(AiInput.empty);
|
|
129
|
+
/**
|
|
130
|
+
* @since 1.0.0
|
|
131
|
+
* @category constructors
|
|
132
|
+
*/
|
|
133
|
+
export const fromExport = data => Schema.decodeUnknown(AiInput.Schema)(data).pipe(Effect.flatMap(fromInput));
|
|
134
|
+
/**
|
|
135
|
+
* @since 1.0.0
|
|
136
|
+
* @category constructors
|
|
137
|
+
*/
|
|
138
|
+
export const fromJson = data => Schema.decode(AiInput.SchemaJson)(data).pipe(Effect.flatMap(fromInput));
|
|
139
|
+
//# sourceMappingURL=AiChat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AiChat.js","names":["Schema","Channel","Chunk","Effect","Ref","Stream","AiInput","AiResponse","WithResolved","Completions","AiChat","Tag","fromInput","input","make","pipe","bindTo","bind","map","completions","historyRef","AiChatImpl","semaphore","unsafeMakeSemaphore","constructor","history","get","export","flatMap","encode","orDie","exportJson","SchemaJson","send","newParts","parts","allParts","appendAll","create","tap","response","responseParts","set","withPermits","withSpan","attributes","captureStackTrace","stream","suspend","combined","empty","fromChannel","acquireUseRelease","take","zipRight","chunk","concat","toChannel","release","structured","schema","as","unsafeValue","_tag","identifier","toolkit","options","toolkitStream","fromExport","data","decodeUnknown","fromJson","decode"],"sources":["../../src/AiChat.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as Schema from "@effect/schema/Schema";
|
|
5
|
+
/**
|
|
6
|
+
* @since 1.0.0
|
|
7
|
+
* @category type ids
|
|
8
|
+
*/
|
|
9
|
+
export const TypeId = /*#__PURE__*/Symbol("@effect/ai/AiError");
|
|
10
|
+
/**
|
|
11
|
+
* @since 1.0.0
|
|
12
|
+
* @category errors
|
|
13
|
+
*/
|
|
14
|
+
export class AiError extends /*#__PURE__*/Schema.TaggedError("@effect/ai/AiError")("AiError", {
|
|
15
|
+
module: Schema.String,
|
|
16
|
+
method: Schema.String,
|
|
17
|
+
description: Schema.String,
|
|
18
|
+
cause: /*#__PURE__*/Schema.optional(Schema.Defect)
|
|
19
|
+
}) {
|
|
20
|
+
/**
|
|
21
|
+
* @since 1.0.0
|
|
22
|
+
*/
|
|
23
|
+
[TypeId] = TypeId;
|
|
24
|
+
/**
|
|
25
|
+
* @since 1.0.0
|
|
26
|
+
*/
|
|
27
|
+
get message() {
|
|
28
|
+
return `${this.module}.${this.method}: ${this.description}`;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=AiError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AiError.js","names":["Schema","TypeId","Symbol","AiError","TaggedError","module","String","method","description","cause","optional","Defect","message"],"sources":["../../src/AiError.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,MAAM,MAAM,uBAAuB;AAE/C;;;;AAIA,OAAO,MAAMC,MAAM,gBAAkBC,MAAM,CAAC,oBAAoB,CAAC;AAQjE;;;;AAIA,OAAM,MAAOC,OAAQ,sBAAQH,MAAM,CAACI,WAAW,CAAU,oBAAoB,CAAC,CAAC,SAAS,EAAE;EACxFC,MAAM,EAAEL,MAAM,CAACM,MAAM;EACrBC,MAAM,EAAEP,MAAM,CAACM,MAAM;EACrBE,WAAW,EAAER,MAAM,CAACM,MAAM;EAC1BG,KAAK,eAAET,MAAM,CAACU,QAAQ,CAACV,MAAM,CAACW,MAAM;CACrC,CAAC;EACA;;;EAGS,CAACV,MAAM,IAAYA,MAAM;EAClC;;;EAGA,IAAIW,OAAOA,CAAA;IACT,OAAO,GAAG,IAAI,CAACP,MAAM,IAAI,IAAI,CAACE,MAAM,KAAK,IAAI,CAACC,WAAW,EAAE;EAC7D","ignoreList":[]}
|