@abassey/aid 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 (53) hide show
  1. package/dist/agents/index.cjs +741 -0
  2. package/dist/agents/index.d.cts +78 -0
  3. package/dist/agents/index.d.ts +78 -0
  4. package/dist/agents/index.js +741 -0
  5. package/dist/ai-AWJOUXFM.js +9 -0
  6. package/dist/ai-DOAYJKKI.cjs +9 -0
  7. package/dist/chunk-2TNYBUNK.js +124 -0
  8. package/dist/chunk-3LGKZRGY.cjs +124 -0
  9. package/dist/chunk-AUR2BBB5.cjs +1436 -0
  10. package/dist/chunk-IJLTRQF4.cjs +276 -0
  11. package/dist/chunk-JPD7UBAZ.js +58 -0
  12. package/dist/chunk-M4RQALTT.js +276 -0
  13. package/dist/chunk-NB65IHJE.cjs +58 -0
  14. package/dist/chunk-YNIEOBDF.js +1436 -0
  15. package/dist/client/index.cjs +18 -0
  16. package/dist/client/index.d.cts +8 -0
  17. package/dist/client/index.d.ts +8 -0
  18. package/dist/client/index.js +18 -0
  19. package/dist/errors-CUVTnseb.d.ts +13 -0
  20. package/dist/errors-CgCce4cK.d.cts +158 -0
  21. package/dist/errors-CgCce4cK.d.ts +158 -0
  22. package/dist/errors-zAPbTlpe.d.cts +13 -0
  23. package/dist/eval/index.cjs +308 -0
  24. package/dist/eval/index.d.cts +106 -0
  25. package/dist/eval/index.d.ts +106 -0
  26. package/dist/eval/index.js +308 -0
  27. package/dist/index.cjs +35 -0
  28. package/dist/index.d.cts +107 -0
  29. package/dist/index.d.ts +107 -0
  30. package/dist/index.js +35 -0
  31. package/dist/middleware/index.cjs +201 -0
  32. package/dist/middleware/index.d.cts +36 -0
  33. package/dist/middleware/index.d.ts +36 -0
  34. package/dist/middleware/index.js +201 -0
  35. package/dist/observability/index.cjs +147 -0
  36. package/dist/observability/index.d.cts +30 -0
  37. package/dist/observability/index.d.ts +30 -0
  38. package/dist/observability/index.js +147 -0
  39. package/dist/react/index.cjs +253 -0
  40. package/dist/react/index.d.cts +64 -0
  41. package/dist/react/index.d.ts +64 -0
  42. package/dist/react/index.js +253 -0
  43. package/dist/serve/index.cjs +545 -0
  44. package/dist/serve/index.d.cts +69 -0
  45. package/dist/serve/index.d.ts +69 -0
  46. package/dist/serve/index.js +545 -0
  47. package/dist/types-BJReASS-.d.cts +196 -0
  48. package/dist/types-BJReASS-.d.ts +196 -0
  49. package/dist/types-CguX3F16.d.cts +173 -0
  50. package/dist/types-CrFH-_qp.d.cts +68 -0
  51. package/dist/types-DvdzPmW0.d.ts +173 -0
  52. package/dist/types-qfE32ADy.d.ts +68 -0
  53. package/package.json +144 -0
@@ -0,0 +1,253 @@
1
+ import {
2
+ AidClient,
3
+ AidClientError
4
+ } from "../chunk-M4RQALTT.js";
5
+
6
+ // src/react/context.ts
7
+ import { createContext, useContext, useMemo } from "react";
8
+ import { createElement } from "react";
9
+ var AidContext = createContext(null);
10
+ function AidProvider({ baseUrl, client, children }) {
11
+ const aidClient = useMemo(() => {
12
+ if (client) return client;
13
+ if (baseUrl) return new AidClient({ baseUrl });
14
+ throw new Error("AidProvider requires either baseUrl or client prop");
15
+ }, [baseUrl, client]);
16
+ return createElement(AidContext.Provider, { value: aidClient }, children);
17
+ }
18
+ function useAidClient() {
19
+ const client = useContext(AidContext);
20
+ if (!client) {
21
+ throw new Error("useAidClient must be used within an AidProvider");
22
+ }
23
+ return client;
24
+ }
25
+
26
+ // src/react/use-ai.ts
27
+ import { useState, useCallback, useRef, useEffect } from "react";
28
+ function useAi(initialPrompt, options) {
29
+ const client = useAidClient();
30
+ const [data, setData] = useState(null);
31
+ const [loading, setLoading] = useState(false);
32
+ const [error, setError] = useState(null);
33
+ const abortRef = useRef(null);
34
+ const run = useCallback(
35
+ async (prompt, runOptions) => {
36
+ abortRef.current?.abort();
37
+ const controller = new AbortController();
38
+ abortRef.current = controller;
39
+ setLoading(true);
40
+ setError(null);
41
+ try {
42
+ const response = await client.ai(prompt, { ...options, ...runOptions, signal: controller.signal });
43
+ if (!controller.signal.aborted) {
44
+ setData(response);
45
+ }
46
+ } catch (err) {
47
+ if (!controller.signal.aborted) {
48
+ setData(null);
49
+ setError(err);
50
+ }
51
+ } finally {
52
+ if (!controller.signal.aborted) {
53
+ setLoading(false);
54
+ }
55
+ }
56
+ },
57
+ [client, options]
58
+ );
59
+ useEffect(() => {
60
+ if (initialPrompt) {
61
+ run(initialPrompt);
62
+ }
63
+ }, [initialPrompt]);
64
+ useEffect(() => {
65
+ return () => {
66
+ abortRef.current?.abort();
67
+ };
68
+ }, []);
69
+ return { data, loading, error, run };
70
+ }
71
+
72
+ // src/react/use-stream.ts
73
+ import { useState as useState2, useCallback as useCallback2, useRef as useRef2, useEffect as useEffect2 } from "react";
74
+ function useStream() {
75
+ const client = useAidClient();
76
+ const [text, setText] = useState2("");
77
+ const [loading, setLoading] = useState2(false);
78
+ const [error, setError] = useState2(null);
79
+ const [tokens, setTokens] = useState2(null);
80
+ const [cost, setCost] = useState2(null);
81
+ const abortRef = useRef2(null);
82
+ const stop = useCallback2(() => {
83
+ abortRef.current?.abort();
84
+ abortRef.current = null;
85
+ setLoading(false);
86
+ }, []);
87
+ const start = useCallback2(
88
+ (prompt, options) => {
89
+ abortRef.current?.abort();
90
+ const controller = new AbortController();
91
+ abortRef.current = controller;
92
+ setText("");
93
+ setError(null);
94
+ setTokens(null);
95
+ setCost(null);
96
+ setLoading(true);
97
+ (async () => {
98
+ try {
99
+ for await (const chunk of client.stream(prompt, { ...options, signal: controller.signal })) {
100
+ if (controller.signal.aborted) break;
101
+ if (chunk.type === "text") {
102
+ setText(chunk.text);
103
+ } else if (chunk.type === "done") {
104
+ setText(chunk.text);
105
+ if (chunk.tokens) setTokens(chunk.tokens);
106
+ if (chunk.cost != null) setCost(chunk.cost);
107
+ } else if (chunk.type === "error") {
108
+ setError(new AidClientError(chunk.code ?? "unknown", chunk.message ?? "Stream error", 0));
109
+ }
110
+ }
111
+ } catch (err) {
112
+ if (!controller.signal.aborted) {
113
+ setError(err);
114
+ }
115
+ } finally {
116
+ if (!controller.signal.aborted) {
117
+ setLoading(false);
118
+ }
119
+ }
120
+ })();
121
+ },
122
+ [client]
123
+ );
124
+ useEffect2(() => {
125
+ return () => {
126
+ abortRef.current?.abort();
127
+ };
128
+ }, []);
129
+ return { text, loading, start, stop, tokens, cost, error };
130
+ }
131
+
132
+ // src/react/use-chat.ts
133
+ import { useState as useState3, useCallback as useCallback3, useRef as useRef3, useEffect as useEffect3 } from "react";
134
+ var idCounter = 0;
135
+ function generateId() {
136
+ if (typeof crypto !== "undefined" && crypto.randomUUID) {
137
+ return crypto.randomUUID();
138
+ }
139
+ return `msg-${++idCounter}`;
140
+ }
141
+ function useChat(options) {
142
+ const client = useAidClient();
143
+ const [messages, setMessages] = useState3([]);
144
+ const [loading, setLoading] = useState3(false);
145
+ const [error, setError] = useState3(null);
146
+ const [input, setInput] = useState3("");
147
+ const chatRef = useRef3(null);
148
+ const getChat = useCallback3(() => {
149
+ if (!chatRef.current) {
150
+ chatRef.current = client.chat(options);
151
+ }
152
+ return chatRef.current;
153
+ }, [client, options]);
154
+ const send = useCallback3(
155
+ async (message) => {
156
+ const chat = getChat();
157
+ const userMsg = { role: "user", content: message, id: generateId() };
158
+ setMessages((prev) => [...prev, userMsg]);
159
+ setLoading(true);
160
+ setError(null);
161
+ try {
162
+ const response = await chat.send(message);
163
+ const assistantMsg = { role: "assistant", content: response.text, id: generateId() };
164
+ setMessages((prev) => [...prev, assistantMsg]);
165
+ } catch (err) {
166
+ setError(err);
167
+ } finally {
168
+ setLoading(false);
169
+ }
170
+ },
171
+ [getChat]
172
+ );
173
+ const clear = useCallback3(() => {
174
+ setMessages([]);
175
+ setError(null);
176
+ setInput("");
177
+ if (chatRef.current) {
178
+ chatRef.current.destroy().catch(() => {
179
+ });
180
+ chatRef.current = null;
181
+ }
182
+ }, []);
183
+ useEffect3(() => {
184
+ return () => {
185
+ chatRef.current?.destroy().catch(() => {
186
+ });
187
+ };
188
+ }, []);
189
+ return { messages, send, loading, error, input, setInput, clear };
190
+ }
191
+
192
+ // src/react/use-agent.ts
193
+ import { useState as useState4, useCallback as useCallback4, useRef as useRef4, useEffect as useEffect4 } from "react";
194
+ function useAgent(agentName) {
195
+ const client = useAidClient();
196
+ const [result, setResult] = useState4(null);
197
+ const [steps, setSteps] = useState4([]);
198
+ const [loading, setLoading] = useState4(false);
199
+ const [error, setError] = useState4(null);
200
+ const abortRef = useRef4(null);
201
+ const run = useCallback4(
202
+ (task) => {
203
+ abortRef.current?.abort();
204
+ const controller = new AbortController();
205
+ abortRef.current = controller;
206
+ setResult(null);
207
+ setSteps([]);
208
+ setError(null);
209
+ setLoading(true);
210
+ (async () => {
211
+ try {
212
+ for await (const event of client.agentStream(agentName, task, { signal: controller.signal })) {
213
+ if (controller.signal.aborted) break;
214
+ if (event.type === "done") {
215
+ setResult({
216
+ text: event.text ?? "",
217
+ model: "",
218
+ tokens: event.tokens ?? { input: 0, output: 0, total: 0 },
219
+ cost: event.cost ?? 0,
220
+ steps: event.steps ?? 0
221
+ });
222
+ } else {
223
+ setSteps((prev) => [...prev, event]);
224
+ }
225
+ }
226
+ } catch (err) {
227
+ if (!controller.signal.aborted) {
228
+ setError(err);
229
+ }
230
+ } finally {
231
+ if (!controller.signal.aborted) {
232
+ setLoading(false);
233
+ }
234
+ }
235
+ })();
236
+ },
237
+ [client, agentName]
238
+ );
239
+ useEffect4(() => {
240
+ return () => {
241
+ abortRef.current?.abort();
242
+ };
243
+ }, []);
244
+ return { result, steps, loading, error, run };
245
+ }
246
+ export {
247
+ AidProvider,
248
+ useAgent,
249
+ useAi,
250
+ useAidClient,
251
+ useChat,
252
+ useStream
253
+ };