@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.
Files changed (75) hide show
  1. package/AiChat/package.json +6 -0
  2. package/AiError/package.json +6 -0
  3. package/AiInput/package.json +6 -0
  4. package/AiResponse/package.json +6 -0
  5. package/AiRole/package.json +6 -0
  6. package/AiToolkit/package.json +6 -0
  7. package/Completions/package.json +6 -0
  8. package/LICENSE +21 -0
  9. package/README.md +1 -0
  10. package/Tokenizer/package.json +6 -0
  11. package/dist/cjs/AiChat.js +151 -0
  12. package/dist/cjs/AiChat.js.map +1 -0
  13. package/dist/cjs/AiError.js +41 -0
  14. package/dist/cjs/AiError.js.map +1 -0
  15. package/dist/cjs/AiInput.js +349 -0
  16. package/dist/cjs/AiInput.js.map +1 -0
  17. package/dist/cjs/AiResponse.js +295 -0
  18. package/dist/cjs/AiResponse.js.map +1 -0
  19. package/dist/cjs/AiRole.js +106 -0
  20. package/dist/cjs/AiRole.js.map +1 -0
  21. package/dist/cjs/AiToolkit.js +132 -0
  22. package/dist/cjs/AiToolkit.js.map +1 -0
  23. package/dist/cjs/Completions.js +217 -0
  24. package/dist/cjs/Completions.js.map +1 -0
  25. package/dist/cjs/Tokenizer.js +59 -0
  26. package/dist/cjs/Tokenizer.js.map +1 -0
  27. package/dist/cjs/index.js +25 -0
  28. package/dist/cjs/index.js.map +1 -0
  29. package/dist/dts/AiChat.d.ts +73 -0
  30. package/dist/dts/AiChat.d.ts.map +1 -0
  31. package/dist/dts/AiError.d.ts +38 -0
  32. package/dist/dts/AiError.d.ts.map +1 -0
  33. package/dist/dts/AiInput.d.ts +283 -0
  34. package/dist/dts/AiInput.d.ts.map +1 -0
  35. package/dist/dts/AiResponse.d.ts +235 -0
  36. package/dist/dts/AiResponse.d.ts.map +1 -0
  37. package/dist/dts/AiRole.d.ts +111 -0
  38. package/dist/dts/AiRole.d.ts.map +1 -0
  39. package/dist/dts/AiToolkit.d.ts +158 -0
  40. package/dist/dts/AiToolkit.d.ts.map +1 -0
  41. package/dist/dts/Completions.d.ts +104 -0
  42. package/dist/dts/Completions.d.ts.map +1 -0
  43. package/dist/dts/Tokenizer.d.ts +34 -0
  44. package/dist/dts/Tokenizer.d.ts.map +1 -0
  45. package/dist/dts/index.d.ts +33 -0
  46. package/dist/dts/index.d.ts.map +1 -0
  47. package/dist/esm/AiChat.js +139 -0
  48. package/dist/esm/AiChat.js.map +1 -0
  49. package/dist/esm/AiError.js +31 -0
  50. package/dist/esm/AiError.js.map +1 -0
  51. package/dist/esm/AiInput.js +332 -0
  52. package/dist/esm/AiInput.js.map +1 -0
  53. package/dist/esm/AiResponse.js +281 -0
  54. package/dist/esm/AiResponse.js.map +1 -0
  55. package/dist/esm/AiRole.js +93 -0
  56. package/dist/esm/AiRole.js.map +1 -0
  57. package/dist/esm/AiToolkit.js +123 -0
  58. package/dist/esm/AiToolkit.js.map +1 -0
  59. package/dist/esm/Completions.js +206 -0
  60. package/dist/esm/Completions.js.map +1 -0
  61. package/dist/esm/Tokenizer.js +48 -0
  62. package/dist/esm/Tokenizer.js.map +1 -0
  63. package/dist/esm/index.js +33 -0
  64. package/dist/esm/index.js.map +1 -0
  65. package/dist/esm/package.json +4 -0
  66. package/package.json +100 -0
  67. package/src/AiChat.ts +274 -0
  68. package/src/AiError.ts +38 -0
  69. package/src/AiInput.ts +456 -0
  70. package/src/AiResponse.ts +343 -0
  71. package/src/AiRole.ts +122 -0
  72. package/src/AiToolkit.ts +314 -0
  73. package/src/Completions.ts +354 -0
  74. package/src/Tokenizer.ts +78 -0
  75. package/src/index.ts +39 -0
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../dist/cjs/AiChat.js",
3
+ "module": "../dist/esm/AiChat.js",
4
+ "types": "../dist/dts/AiChat.d.ts",
5
+ "sideEffects": []
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../dist/cjs/AiError.js",
3
+ "module": "../dist/esm/AiError.js",
4
+ "types": "../dist/dts/AiError.d.ts",
5
+ "sideEffects": []
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../dist/cjs/AiInput.js",
3
+ "module": "../dist/esm/AiInput.js",
4
+ "types": "../dist/dts/AiInput.d.ts",
5
+ "sideEffects": []
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../dist/cjs/AiResponse.js",
3
+ "module": "../dist/esm/AiResponse.js",
4
+ "types": "../dist/dts/AiResponse.d.ts",
5
+ "sideEffects": []
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../dist/cjs/AiRole.js",
3
+ "module": "../dist/esm/AiRole.js",
4
+ "types": "../dist/dts/AiRole.d.ts",
5
+ "sideEffects": []
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../dist/cjs/AiToolkit.js",
3
+ "module": "../dist/esm/AiToolkit.js",
4
+ "types": "../dist/dts/AiToolkit.d.ts",
5
+ "sideEffects": []
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../dist/cjs/Completions.js",
3
+ "module": "../dist/esm/Completions.js",
4
+ "types": "../dist/dts/Completions.d.ts",
5
+ "sideEffects": []
6
+ }
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023 Effectful Technologies Inc
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1 @@
1
+ # @effect/ai
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../dist/cjs/Tokenizer.js",
3
+ "module": "../dist/esm/Tokenizer.js",
4
+ "types": "../dist/dts/Tokenizer.d.ts",
5
+ "sideEffects": []
6
+ }
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.fromJson = exports.fromInput = exports.fromExport = exports.empty = exports.AiChat = void 0;
7
+ var Schema = _interopRequireWildcard(require("@effect/schema/Schema"));
8
+ var Channel = _interopRequireWildcard(require("effect/Channel"));
9
+ var Chunk = _interopRequireWildcard(require("effect/Chunk"));
10
+ var Effect = _interopRequireWildcard(require("effect/Effect"));
11
+ var Ref = _interopRequireWildcard(require("effect/Ref"));
12
+ var Stream = _interopRequireWildcard(require("effect/Stream"));
13
+ var AiInput = _interopRequireWildcard(require("./AiInput.js"));
14
+ var _AiResponse = require("./AiResponse.js");
15
+ var _Completions = require("./Completions.js");
16
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
17
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
+ /**
19
+ * @since 1.0.0
20
+ * @category tags
21
+ */
22
+ class AiChat extends /*#__PURE__*/Effect.Tag("@effect/ai/AiChat")() {}
23
+ /**
24
+ * @since 1.0.0
25
+ * @category constructors
26
+ */
27
+ exports.AiChat = AiChat;
28
+ const fromInput = input => Ref.make(AiInput.make(input)).pipe(Effect.bindTo("historyRef"), Effect.bind("completions", () => _Completions.Completions), Effect.map(({
29
+ completions,
30
+ historyRef
31
+ }) => new AiChatImpl(historyRef, completions)));
32
+ exports.fromInput = fromInput;
33
+ class AiChatImpl {
34
+ historyRef;
35
+ completions;
36
+ semaphore = /*#__PURE__*/Effect.unsafeMakeSemaphore(1);
37
+ constructor(historyRef, completions) {
38
+ this.historyRef = historyRef;
39
+ this.completions = completions;
40
+ }
41
+ get history() {
42
+ return Ref.get(this.historyRef);
43
+ }
44
+ get export() {
45
+ return Ref.get(this.historyRef).pipe(Effect.flatMap(Schema.encode(AiInput.Schema)), Effect.orDie);
46
+ }
47
+ get exportJson() {
48
+ return Ref.get(this.historyRef).pipe(Effect.flatMap(Schema.encode(AiInput.SchemaJson)), Effect.orDie);
49
+ }
50
+ send(input) {
51
+ const newParts = AiInput.make(input);
52
+ return Ref.get(this.historyRef).pipe(Effect.flatMap(parts => {
53
+ const allParts = Chunk.appendAll(parts, newParts);
54
+ return this.completions.create(allParts).pipe(Effect.tap(response => {
55
+ const responseParts = AiInput.make(response);
56
+ return Ref.set(this.historyRef, Chunk.appendAll(allParts, responseParts));
57
+ }));
58
+ }), this.semaphore.withPermits(1), Effect.withSpan("AiChat.send", {
59
+ attributes: {
60
+ input
61
+ },
62
+ captureStackTrace: false
63
+ }));
64
+ }
65
+ stream(input) {
66
+ return Stream.suspend(() => {
67
+ let combined = _AiResponse.AiResponse.empty;
68
+ 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 => {
69
+ combined = combined.concat(chunk);
70
+ return chunk;
71
+ }), Stream.toChannel), parts => Effect.zipRight(Ref.set(this.historyRef, Chunk.appendAll(parts, AiInput.make(combined))), this.semaphore.release(1))));
72
+ }).pipe(Stream.withSpan("AiChat.stream", {
73
+ attributes: {
74
+ input
75
+ },
76
+ captureStackTrace: false
77
+ }));
78
+ }
79
+ structured(schema, input) {
80
+ const newParts = AiInput.make(input);
81
+ return Ref.get(this.historyRef).pipe(Effect.flatMap(parts => {
82
+ const allParts = Chunk.appendAll(parts, newParts);
83
+ return this.completions.structured({
84
+ input: allParts,
85
+ schema
86
+ }).pipe(Effect.flatMap(response => {
87
+ const responseParts = AiInput.make(response);
88
+ return Effect.as(Ref.set(this.historyRef, Chunk.appendAll(allParts, responseParts)), response.unsafeValue);
89
+ }));
90
+ }), this.semaphore.withPermits(1), Effect.withSpan("AiChat.structured", {
91
+ attributes: {
92
+ input,
93
+ schema: schema._tag ?? schema.identifier
94
+ },
95
+ captureStackTrace: false
96
+ }));
97
+ }
98
+ toolkit(options) {
99
+ const newParts = AiInput.make(options.input);
100
+ return Ref.get(this.historyRef).pipe(Effect.flatMap(parts => {
101
+ const allParts = Chunk.appendAll(parts, newParts);
102
+ return this.completions.toolkit({
103
+ ...options,
104
+ input: allParts
105
+ }).pipe(Effect.tap(response => {
106
+ const responseParts = AiInput.make(response);
107
+ return Ref.set(this.historyRef, Chunk.appendAll(allParts, responseParts));
108
+ }));
109
+ }), this.semaphore.withPermits(1), Effect.withSpan("AiChat.toolkit", {
110
+ attributes: {
111
+ input: options.input
112
+ },
113
+ captureStackTrace: false
114
+ }));
115
+ }
116
+ toolkitStream(options) {
117
+ return Stream.suspend(() => {
118
+ let combined = _AiResponse.WithResolved.empty;
119
+ 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({
120
+ ...options,
121
+ input: parts
122
+ }).pipe(Stream.map(chunk => {
123
+ combined = combined.concat(chunk);
124
+ return chunk;
125
+ }), Stream.toChannel), parts => Effect.zipRight(Ref.set(this.historyRef, Chunk.appendAll(parts, AiInput.make(combined))), this.semaphore.release(1))));
126
+ }).pipe(Stream.withSpan("AiChat.toolkitStream", {
127
+ attributes: {
128
+ input: options.input
129
+ },
130
+ captureStackTrace: false
131
+ }));
132
+ }
133
+ }
134
+ /**
135
+ * @since 1.0.0
136
+ * @category constructors
137
+ */
138
+ const empty = exports.empty = /*#__PURE__*/fromInput(AiInput.empty);
139
+ /**
140
+ * @since 1.0.0
141
+ * @category constructors
142
+ */
143
+ const fromExport = data => Schema.decodeUnknown(AiInput.Schema)(data).pipe(Effect.flatMap(fromInput));
144
+ /**
145
+ * @since 1.0.0
146
+ * @category constructors
147
+ */
148
+ exports.fromExport = fromExport;
149
+ const fromJson = data => Schema.decode(AiInput.SchemaJson)(data).pipe(Effect.flatMap(fromInput));
150
+ exports.fromJson = fromJson;
151
+ //# sourceMappingURL=AiChat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AiChat.js","names":["Schema","_interopRequireWildcard","require","Channel","Chunk","Effect","Ref","Stream","AiInput","_AiResponse","_Completions","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","AiChat","Tag","exports","fromInput","input","make","pipe","bindTo","bind","Completions","map","completions","historyRef","AiChatImpl","semaphore","unsafeMakeSemaphore","constructor","history","export","flatMap","encode","orDie","exportJson","SchemaJson","send","newParts","parts","allParts","appendAll","create","tap","response","responseParts","withPermits","withSpan","attributes","captureStackTrace","stream","suspend","combined","AiResponse","empty","fromChannel","acquireUseRelease","take","zipRight","chunk","concat","toChannel","release","structured","schema","as","unsafeValue","_tag","identifier","toolkit","options","toolkitStream","WithResolved","fromExport","data","decodeUnknown","fromJson","decode"],"sources":["../../src/AiChat.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.TypeId = exports.AiError = void 0;
7
+ var Schema = _interopRequireWildcard(require("@effect/schema/Schema"));
8
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
9
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
10
+ /**
11
+ * @since 1.0.0
12
+ */
13
+
14
+ /**
15
+ * @since 1.0.0
16
+ * @category type ids
17
+ */
18
+ const TypeId = exports.TypeId = /*#__PURE__*/Symbol("@effect/ai/AiError");
19
+ /**
20
+ * @since 1.0.0
21
+ * @category errors
22
+ */
23
+ class AiError extends /*#__PURE__*/Schema.TaggedError("@effect/ai/AiError")("AiError", {
24
+ module: Schema.String,
25
+ method: Schema.String,
26
+ description: Schema.String,
27
+ cause: /*#__PURE__*/Schema.optional(Schema.Defect)
28
+ }) {
29
+ /**
30
+ * @since 1.0.0
31
+ */
32
+ [TypeId] = TypeId;
33
+ /**
34
+ * @since 1.0.0
35
+ */
36
+ get message() {
37
+ return `${this.module}.${this.method}: ${this.description}`;
38
+ }
39
+ }
40
+ exports.AiError = AiError;
41
+ //# sourceMappingURL=AiError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AiError.js","names":["Schema","_interopRequireWildcard","require","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","TypeId","exports","Symbol","AiError","TaggedError","module","String","method","description","cause","optional","Defect","message"],"sources":["../../src/AiError.ts"],"sourcesContent":[null],"mappings":";;;;;;AAGA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAA+C,SAAAC,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAH/C;;;;AAKA;;;;AAIO,MAAMW,MAAM,GAAAC,OAAA,CAAAD,MAAA,gBAAkBE,MAAM,CAAC,oBAAoB,CAAC;AAQjE;;;;AAIM,MAAOC,OAAQ,sBAAQ1B,MAAM,CAAC2B,WAAW,CAAU,oBAAoB,CAAC,CAAC,SAAS,EAAE;EACxFC,MAAM,EAAE5B,MAAM,CAAC6B,MAAM;EACrBC,MAAM,EAAE9B,MAAM,CAAC6B,MAAM;EACrBE,WAAW,EAAE/B,MAAM,CAAC6B,MAAM;EAC1BG,KAAK,eAAEhC,MAAM,CAACiC,QAAQ,CAACjC,MAAM,CAACkC,MAAM;CACrC,CAAC;EACA;;;EAGS,CAACX,MAAM,IAAYA,MAAM;EAClC;;;EAGA,IAAIY,OAAOA,CAAA;IACT,OAAO,GAAG,IAAI,CAACP,MAAM,IAAI,IAAI,CAACE,MAAM,KAAK,IAAI,CAACC,WAAW,EAAE;EAC7D","ignoreList":[]}
@@ -0,0 +1,349 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.provideSystem = exports.make = exports.isPart = exports.empty = exports.ToolCallResolvedPart = exports.ToolCallPart = exports.TextPart = exports.SystemInstruction = exports.SchemaJson = exports.Schema = exports.PartTypeId = exports.Part = exports.MessageTypeId = exports.Message = exports.ImageUrlPart = exports.ImageQuality = exports.ImagePart = exports.Base64DataUrl = void 0;
7
+ var FileSystem = _interopRequireWildcard(require("@effect/platform/FileSystem"));
8
+ var Path = _interopRequireWildcard(require("@effect/platform/Path"));
9
+ var ParseResult = _interopRequireWildcard(require("@effect/schema/ParseResult"));
10
+ var Schema_ = _interopRequireWildcard(require("@effect/schema/Schema"));
11
+ var Chunk = _interopRequireWildcard(require("effect/Chunk"));
12
+ var Context = _interopRequireWildcard(require("effect/Context"));
13
+ var Effect = _interopRequireWildcard(require("effect/Effect"));
14
+ var Encoding = _interopRequireWildcard(require("effect/Encoding"));
15
+ var _Function = require("effect/Function");
16
+ var Option = _interopRequireWildcard(require("effect/Option"));
17
+ var Predicate = _interopRequireWildcard(require("effect/Predicate"));
18
+ var _AiResponse = require("./AiResponse.js");
19
+ var AiRole = _interopRequireWildcard(require("./AiRole.js"));
20
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
21
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
22
+ const constDisableValidation = {
23
+ disableValidation: true
24
+ };
25
+ /**
26
+ * @since 1.0.0
27
+ * @category parts
28
+ */
29
+ const PartTypeId = exports.PartTypeId = /*#__PURE__*/Symbol("@effect/ai/AiInput/Part");
30
+ /**
31
+ * @since 1.0.0
32
+ * @category parts
33
+ */
34
+ class TextPart extends /*#__PURE__*/Schema_.TaggedClass("@effect/ai/AiInput/TextPart")("Text", {
35
+ content: Schema_.String
36
+ }) {
37
+ /**
38
+ * @since 1.0.0
39
+ */
40
+ [PartTypeId] = PartTypeId;
41
+ /**
42
+ * @since 1.0.0
43
+ */
44
+ static fromContent(content) {
45
+ return new TextPart({
46
+ content
47
+ }, constDisableValidation);
48
+ }
49
+ }
50
+ /**
51
+ * @since 1.0.0
52
+ * @category parts
53
+ */
54
+ exports.TextPart = TextPart;
55
+ const ImageQuality = exports.ImageQuality = /*#__PURE__*/Schema_.Literal("low", "high", "auto");
56
+ /**
57
+ * @since 1.0.0
58
+ * @category parts
59
+ */
60
+ class ImageUrlPart extends /*#__PURE__*/Schema_.TaggedClass("@effect/ai/AiInput/ImageUrlPart")("ImageUrl", {
61
+ url: Schema_.String,
62
+ quality: /*#__PURE__*/ImageQuality.pipe(Schema_.propertySignature, /*#__PURE__*/Schema_.withConstructorDefault(() => "auto"))
63
+ }) {
64
+ /**
65
+ * @since 1.0.0
66
+ */
67
+ [PartTypeId] = PartTypeId;
68
+ }
69
+ exports.ImageUrlPart = ImageUrlPart;
70
+ const base64ContentTypeRegex = /^data:(.*?);base64$/;
71
+ /**
72
+ * @since 1.0.0
73
+ * @category base64
74
+ */
75
+ const Base64DataUrl = exports.Base64DataUrl = /*#__PURE__*/Schema_.transformOrFail( /*#__PURE__*/Schema_.String.annotations({
76
+ title: "Base64 Data URL",
77
+ description: "A base64 data URL"
78
+ }), /*#__PURE__*/Schema_.Struct({
79
+ data: Schema_.Uint8ArrayFromSelf,
80
+ contentType: Schema_.String
81
+ }), {
82
+ decode(base64Url, _, ast) {
83
+ const commaIndex = base64Url.indexOf(",");
84
+ if (commaIndex === -1) {
85
+ return ParseResult.fail(new ParseResult.Type(ast, base64Url));
86
+ }
87
+ const header = base64Url.slice(0, commaIndex);
88
+ const data = base64Url.slice(commaIndex + 1);
89
+ const contentType = base64ContentTypeRegex.exec(header);
90
+ if (contentType === null) {
91
+ return ParseResult.fail(new ParseResult.Type(ast, base64Url));
92
+ }
93
+ return Encoding.decodeBase64(data).pipe(ParseResult.mapError(_ => new ParseResult.Type(ast, base64Url)), ParseResult.map(data => ({
94
+ data,
95
+ contentType: contentType[1]
96
+ })));
97
+ },
98
+ encode({
99
+ contentType,
100
+ data
101
+ }) {
102
+ const base64 = Encoding.encodeBase64(data);
103
+ return ParseResult.succeed(`data:${contentType};base64,${base64}`);
104
+ }
105
+ });
106
+ /**
107
+ * @since 1.0.0
108
+ * @category parts
109
+ */
110
+ class ImagePart extends /*#__PURE__*/Schema_.TaggedClass("@effect/ai/AiInput/ImagePart")("Image", {
111
+ image: Base64DataUrl,
112
+ quality: /*#__PURE__*/ImageQuality.pipe(Schema_.propertySignature, /*#__PURE__*/Schema_.withConstructorDefault(() => "auto"))
113
+ }) {
114
+ /**
115
+ * @since 1.0.0
116
+ */
117
+ [PartTypeId] = PartTypeId;
118
+ /**
119
+ * @since 1.0.0
120
+ */
121
+ static fromPath(path, quality = "auto") {
122
+ return FileSystem.FileSystem.pipe(Effect.bindTo("fs"), Effect.bind("Path", () => Path.Path), Effect.bind("data", ({
123
+ fs
124
+ }) => fs.readFile(path)), Effect.map(({
125
+ Path,
126
+ data
127
+ }) => {
128
+ const ext = Path.extname(path);
129
+ let contentType;
130
+ switch (ext) {
131
+ case ".jpg":
132
+ case ".jpeg":
133
+ {
134
+ contentType = "image/jpeg";
135
+ break;
136
+ }
137
+ default:
138
+ {
139
+ if (ext.startsWith(".")) {
140
+ contentType = `image/${ext.slice(1)}`;
141
+ } else {
142
+ contentType = "image/png";
143
+ }
144
+ break;
145
+ }
146
+ }
147
+ return new ImagePart({
148
+ image: {
149
+ data,
150
+ contentType
151
+ },
152
+ quality
153
+ }, constDisableValidation);
154
+ }));
155
+ }
156
+ get asDataUri() {
157
+ const base64 = Encoding.encodeBase64(this.image.data);
158
+ return `data:${this.image.contentType};base64,${base64}`;
159
+ }
160
+ }
161
+ /**
162
+ * @since 1.0.0
163
+ * @category parts
164
+ */
165
+ exports.ImagePart = ImagePart;
166
+ class ToolCallPart extends /*#__PURE__*/Schema_.TaggedClass("@effect/ai/AiInput/ToolCallPart")("ToolCall", {
167
+ id: _AiResponse.ToolCallId,
168
+ name: Schema_.String,
169
+ params: Schema_.Unknown
170
+ }) {
171
+ /**
172
+ * @since 1.0.0
173
+ */
174
+ [PartTypeId] = PartTypeId;
175
+ }
176
+ /**
177
+ * @since 1.0.0
178
+ * @category parts
179
+ */
180
+ exports.ToolCallPart = ToolCallPart;
181
+ class ToolCallResolvedPart extends /*#__PURE__*/Schema_.TaggedClass("@effect/ai/AiInput/ToolCallResolvedPart")("ToolCallResolved", {
182
+ toolCallId: _AiResponse.ToolCallId,
183
+ value: Schema_.Unknown
184
+ }) {
185
+ /**
186
+ * @since 1.0.0
187
+ */
188
+ [PartTypeId] = PartTypeId;
189
+ }
190
+ /**
191
+ * @since 1.0.0
192
+ * @category parts
193
+ */
194
+ exports.ToolCallResolvedPart = ToolCallResolvedPart;
195
+ const isPart = u => Predicate.hasProperty(u, PartTypeId);
196
+ /**
197
+ * @since 1.0.0
198
+ * @category parts
199
+ */
200
+ exports.isPart = isPart;
201
+ const Part = exports.Part = /*#__PURE__*/Schema_.Union(TextPart, ToolCallPart, ToolCallResolvedPart, ImagePart, ImageUrlPart);
202
+ /**
203
+ * @since 1.0.0
204
+ * @category message
205
+ */
206
+ const MessageTypeId = exports.MessageTypeId = /*#__PURE__*/Symbol("@effect/ai/AiInput/Message");
207
+ /**
208
+ * @since 1.0.0
209
+ * @category message
210
+ */
211
+ class Message extends /*#__PURE__*/Schema_.Class("@effect/ai/AiInput/Message")({
212
+ role: AiRole.AiRole,
213
+ parts: /*#__PURE__*/Schema_.Chunk(Part)
214
+ }) {
215
+ /**
216
+ * @since 1.0.0
217
+ */
218
+ [MessageTypeId] = MessageTypeId;
219
+ /**
220
+ * @since 1.0.0
221
+ */
222
+ static is(u) {
223
+ return Predicate.hasProperty(u, MessageTypeId);
224
+ }
225
+ /**
226
+ * @since 1.0.0
227
+ */
228
+ static fromInput(input, role = AiRole.user) {
229
+ if (typeof input === "string") {
230
+ return new Message({
231
+ role,
232
+ parts: Chunk.of(TextPart.fromContent(input))
233
+ }, constDisableValidation);
234
+ } else if (isPart(input)) {
235
+ return new Message({
236
+ role,
237
+ parts: Chunk.of(input)
238
+ }, constDisableValidation);
239
+ }
240
+ return new Message({
241
+ role,
242
+ parts: Chunk.fromIterable(input)
243
+ }, constDisableValidation);
244
+ }
245
+ /**
246
+ * @since 1.0.0
247
+ */
248
+ static fromResponse(response) {
249
+ if (Chunk.isEmpty(response.parts)) {
250
+ return Option.none();
251
+ }
252
+ return Option.some(new Message({
253
+ role: response.role,
254
+ parts: Chunk.map(response.parts, part => {
255
+ switch (part._tag) {
256
+ case "Text":
257
+ {
258
+ return TextPart.fromContent(part.content);
259
+ }
260
+ case "ToolCall":
261
+ {
262
+ return new ToolCallPart(part, constDisableValidation);
263
+ }
264
+ case "ImageUrl":
265
+ {
266
+ return new ImageUrlPart(part, constDisableValidation);
267
+ }
268
+ }
269
+ })
270
+ }, constDisableValidation));
271
+ }
272
+ /**
273
+ * @since 1.0.0
274
+ */
275
+ static fromWithResolved(response) {
276
+ const toolParts = [];
277
+ for (const [toolCallId, value] of response.encoded) {
278
+ toolParts.push(new ToolCallResolvedPart({
279
+ toolCallId,
280
+ value
281
+ }, constDisableValidation));
282
+ }
283
+ const toolPartsChunk = Chunk.unsafeFromArray(toolParts);
284
+ return Option.match(Message.fromResponse(response.response), {
285
+ onNone: () => new Message({
286
+ role: AiRole.model,
287
+ parts: toolPartsChunk
288
+ }, constDisableValidation),
289
+ onSome: message => new Message({
290
+ role: message.role,
291
+ parts: Chunk.appendAll(message.parts, toolPartsChunk)
292
+ }, constDisableValidation)
293
+ });
294
+ }
295
+ }
296
+ /**
297
+ * @since 1.0.0
298
+ * @category constructors
299
+ */
300
+ exports.Message = Message;
301
+ const make = (input, options) => {
302
+ if (typeof input !== "string" && Predicate.isIterable(input)) {
303
+ const chunk = Chunk.fromIterable(input);
304
+ if (Chunk.isEmpty(chunk)) {
305
+ return chunk;
306
+ } else if (Message.is(Chunk.unsafeHead(chunk))) {
307
+ return chunk;
308
+ }
309
+ return Chunk.of(Message.fromInput(chunk, options?.role));
310
+ } else if (_AiResponse.AiResponse.is(input)) {
311
+ return Option.match(Message.fromResponse(input), {
312
+ onNone: Chunk.empty,
313
+ onSome: Chunk.of
314
+ });
315
+ } else if (_AiResponse.WithResolved.is(input)) {
316
+ return Chunk.of(Message.fromWithResolved(input));
317
+ } else if (Message.is(input)) {
318
+ return Chunk.of(input);
319
+ }
320
+ return Chunk.of(Message.fromInput(input, options?.role));
321
+ };
322
+ /**
323
+ * @since 1.0.0
324
+ * @category constructors
325
+ */
326
+ exports.make = make;
327
+ const empty = exports.empty = /*#__PURE__*/Chunk.empty();
328
+ /**
329
+ * @since 1.0.0
330
+ * @category schemas
331
+ */
332
+ const Schema = exports.Schema = /*#__PURE__*/Schema_.Chunk(Message);
333
+ /**
334
+ * @since 1.0.0
335
+ * @category schemas
336
+ */
337
+ const SchemaJson = exports.SchemaJson = /*#__PURE__*/Schema_.parseJson(Schema);
338
+ /**
339
+ * @since 1.0.0
340
+ * @category system
341
+ */
342
+ class SystemInstruction extends /*#__PURE__*/Context.Tag("@effect/ai/AiInput/SystemInstruction")() {}
343
+ /**
344
+ * @since 1.0.0
345
+ * @category system
346
+ */
347
+ exports.SystemInstruction = SystemInstruction;
348
+ const provideSystem = exports.provideSystem = /*#__PURE__*/(0, _Function.dual)(2, (effect, input) => Effect.provideService(effect, SystemInstruction, input));
349
+ //# sourceMappingURL=AiInput.js.map