use-agentenkit 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.
@@ -0,0 +1,572 @@
1
+ 'use client';
2
+ import { useCallback, useEffect, useRef, useState } from 'react';
3
+ import { resolveConfig, routeUrl, withQuery, } from './config.js';
4
+ import { mergeConfig, useAgentRunConfig } from './context.js';
5
+ import { messageToEntries, messageToEntry, stateActivity } from './format.js';
6
+ /** Hydrates durable messages first, then resumes the canonical event stream at
7
+ * the snapshot cursor, so a reload — or a second tab — rebuilds the same
8
+ * conversation with the server as the only source of truth.
9
+ *
10
+ * Every endpoint, label and formatter is replaceable through the options or a
11
+ * surrounding provider; see `AgentRunConfig`. */
12
+ export function useAgentThread(options = {}) {
13
+ const { initialThreadId, ...config } = options;
14
+ // Provider first, own options over it. Resolved every render rather than
15
+ // memoized: the options object is almost always an inline literal, so a
16
+ // dependency array on it would either churn or go stale.
17
+ const resolved = resolveConfig(mergeConfig(useAgentRunConfig(), config));
18
+ // Callbacks below must stay stable across renders, so they read config from
19
+ // a ref instead of listing it in deps. A route changed after mount therefore
20
+ // applies to the NEXT request; an open stream keeps the URL it has.
21
+ const cfgRef = useRef(resolved);
22
+ cfgRef.current = resolved;
23
+ const [threadId, setThreadId] = useState(initialThreadId);
24
+ const [entries, setEntries] = useState([]);
25
+ const [agentState, setAgentState] = useState('IDLE');
26
+ const [activity, setActivity] = useState(() => stateActivity('IDLE', resolved.labels));
27
+ const [historyLoading, setHistoryLoading] = useState(false);
28
+ // A parent step can park several nested runs at once, so the run waits on a
29
+ // SET of approvals — the thread resumes when the last one is answered.
30
+ const [pendingInputs, setPendingInputs] = useState([]);
31
+ const [subagents, setSubagents] = useState([]);
32
+ const [threads, setThreads] = useState([]);
33
+ const [threadsLoading, setThreadsLoading] = useState(resolved.loadThreadsOnMount);
34
+ const [usage, setUsage] = useState(null);
35
+ const threadRef = useRef(threadId);
36
+ threadRef.current = threadId;
37
+ /** Tool calls already visible from the durable messages. The snapshot's
38
+ * activeEvents can replay the same step's chunks, so without this a
39
+ * reconnect renders a finished tool call twice. */
40
+ const seenToolCalls = useRef(new Set());
41
+ /** One place where the caller's headers and fetch are applied. */
42
+ const request = useCallback(async (url, init = {}) => {
43
+ const cfg = cfgRef.current;
44
+ const extra = await cfg.headers();
45
+ return cfg.fetch(url, {
46
+ ...init,
47
+ headers: { ...Object.fromEntries(new Headers(extra).entries()), ...(init.headers ?? {}) },
48
+ });
49
+ }, []);
50
+ const postJson = useCallback((url, body) => request(url, {
51
+ method: 'POST',
52
+ headers: { 'Content-Type': 'application/json' },
53
+ body: JSON.stringify(body),
54
+ }), [request]);
55
+ /** Tokens spent and context load. Read after hydration and again whenever a
56
+ * run ends — both only change when a run writes. */
57
+ const loadUsage = useCallback(async (id) => {
58
+ const cfg = cfgRef.current;
59
+ const target = id ?? threadRef.current;
60
+ if (!target)
61
+ return;
62
+ try {
63
+ const res = await request(routeUrl(cfg.routes.usage, { threadId: target }, cfg.baseUrl));
64
+ if (!res.ok)
65
+ return;
66
+ const data = (await res.json());
67
+ if (threadRef.current === target)
68
+ setUsage(data);
69
+ }
70
+ catch {
71
+ // usage is a read-only extra — never break the conversation over it
72
+ }
73
+ }, [request]);
74
+ /** Thread picker / sidebar: best-effort refresh, most recent first. */
75
+ const loadThreads = useCallback(async () => {
76
+ const cfg = cfgRef.current;
77
+ try {
78
+ setThreadsLoading(true);
79
+ const res = await request(cfg.baseUrl + cfg.routes.threads);
80
+ if (!res.ok)
81
+ return;
82
+ const data = await res.json();
83
+ setThreads(data.threads ?? []);
84
+ }
85
+ catch {
86
+ // sidebar is best-effort — ignore transport errors
87
+ }
88
+ finally {
89
+ setThreadsLoading(false);
90
+ }
91
+ }, [request]);
92
+ useEffect(() => {
93
+ if (!resolved.loadThreadsOnMount)
94
+ return;
95
+ void loadThreads();
96
+ }, [loadThreads, resolved.loadThreadsOnMount]);
97
+ /** Slow-cadence sidebar refresh: other tabs (or the worker) can flip thread
98
+ * states without this tab seeing the event. */
99
+ useEffect(() => {
100
+ const every = resolved.threadsRefreshMs;
101
+ if (every === false)
102
+ return;
103
+ const id = setInterval(() => void loadThreads(), every);
104
+ return () => clearInterval(id);
105
+ }, [loadThreads, resolved.threadsRefreshMs]);
106
+ /** Start a new thread: clear the pointer so the next run creates one. */
107
+ const newThread = useCallback(() => {
108
+ setThreadId(undefined);
109
+ setEntries([]);
110
+ setSubagents([]);
111
+ setPendingInputs([]);
112
+ setUsage(null);
113
+ setAgentState('IDLE');
114
+ setActivity(stateActivity('IDLE', cfgRef.current.labels));
115
+ cfgRef.current.persistence?.clear();
116
+ }, []);
117
+ /** Select an existing thread — hydration and stream resume run in the
118
+ * threadId effect below. */
119
+ const selectThread = useCallback((id) => {
120
+ setThreadId(id);
121
+ }, []);
122
+ /** Delete a thread: the platform cascades messages, events, usage and runs.
123
+ * If it is the open thread, reset the view; 404 counts as success (someone
124
+ * in another tab beat us to it). */
125
+ const deleteThread = useCallback(async (id) => {
126
+ const cfg = cfgRef.current;
127
+ try {
128
+ const res = await request(routeUrl(cfg.routes.deleteThread, { threadId: id }, cfg.baseUrl), { method: 'DELETE' });
129
+ if (!res.ok && res.status !== 404)
130
+ return false;
131
+ if (threadRef.current === id)
132
+ newThread();
133
+ void loadThreads();
134
+ return true;
135
+ }
136
+ catch {
137
+ return false;
138
+ }
139
+ }, [newThread, loadThreads, request]);
140
+ // Recover the last thread when the caller named none.
141
+ useEffect(() => {
142
+ if (initialThreadId || threadRef.current)
143
+ return;
144
+ const recovered = cfgRef.current.persistence?.load();
145
+ if (recovered)
146
+ setThreadId(recovered);
147
+ }, [initialThreadId]);
148
+ const applyEvent = useCallback((data) => {
149
+ const cfg = cfgRef.current;
150
+ const { labels, format } = cfg;
151
+ const p = data.payload ?? {};
152
+ // The app sees every event first, and can claim it.
153
+ if (cfg.onEvent?.(data) === true)
154
+ return;
155
+ switch (data.type) {
156
+ case 'STATE_CHANGE': {
157
+ const nextState = p.state;
158
+ setAgentState(nextState);
159
+ if (nextState === 'RUNNING') {
160
+ // The park was resolved: every child that was waiting is re-entered
161
+ // where it stopped.
162
+ setSubagents((prev) => prev.map((s) => s.status === 'WAITING_FOR_INPUT' ? { ...s, status: 'RUNNING' } : s));
163
+ }
164
+ setActivity((current) => {
165
+ if (nextState === 'RUNNING' &&
166
+ ['thinking', 'responding', 'tool-call', 'tool-result'].includes(current.phase)) {
167
+ return current;
168
+ }
169
+ return stateActivity(nextState, labels);
170
+ });
171
+ if (nextState !== 'WAITING_FOR_INPUT')
172
+ setPendingInputs([]);
173
+ // Terminal states land in the durable thread row — refresh the
174
+ // sidebar so it stops claiming a finished run is still RUNNING.
175
+ if (nextState === 'COMPLETED' || nextState === 'FAILED' || nextState === 'CANCELLED') {
176
+ void loadThreads();
177
+ void loadUsage();
178
+ }
179
+ break;
180
+ }
181
+ // Another client sent a message on this thread. The sending client
182
+ // added it to its own state before the request went out, so this is
183
+ // where every OTHER one learns what was asked.
184
+ case 'MESSAGE_APPENDED': {
185
+ const entry = messageToEntry({
186
+ id: String(p.id),
187
+ role: p.role,
188
+ content: p.content,
189
+ agentId: (p.agentId ?? null),
190
+ }, format);
191
+ if (!entry)
192
+ break;
193
+ setEntries((prev) => {
194
+ // Already have it — a replayed event, or our own optimistic copy
195
+ // now confirmed. Replace the optimistic one so the real id lands
196
+ // (editing a message needs it), otherwise it would show twice.
197
+ if (prev.some((e) => e.id === entry.id))
198
+ return prev;
199
+ const optimistic = prev.findIndex((e) => e.id.startsWith('optimistic:user:') && e.text === entry.text);
200
+ if (optimistic !== -1) {
201
+ const next = [...prev];
202
+ next[optimistic] = entry;
203
+ return next;
204
+ }
205
+ return [...prev, entry];
206
+ });
207
+ break;
208
+ }
209
+ // An edit dropped that turn and everything after it. The editing client
210
+ // already truncated its own view; this is for the others.
211
+ case 'MESSAGES_DROPPED': {
212
+ setEntries((prev) => {
213
+ const at = prev.findIndex((e) => e.id === p.fromMessageId);
214
+ return at === -1 ? prev : prev.slice(0, at);
215
+ });
216
+ break;
217
+ }
218
+ case 'CHUNK': {
219
+ if (p?.type === 'text-delta' && typeof p.textDelta === 'string') {
220
+ setActivity({ phase: 'responding', label: labels.responding });
221
+ setEntries((prev) => {
222
+ const last = prev.at(-1);
223
+ if (last?.kind === 'text' && last.id.startsWith('live:assistant:') && !last.agentId) {
224
+ return [...prev.slice(0, -1), { ...last, text: last.text + p.textDelta }];
225
+ }
226
+ return [
227
+ ...prev,
228
+ {
229
+ id: `live:assistant:${data.seq}`,
230
+ kind: 'text',
231
+ role: 'assistant',
232
+ text: p.textDelta,
233
+ },
234
+ ];
235
+ });
236
+ }
237
+ else if (p?.type === 'reasoning') {
238
+ // The model's thinking, streamed like the answer but kept apart so
239
+ // a UI can show it live and fold it away after. Providers that do
240
+ // not expose reasoning never send these.
241
+ setActivity({ phase: 'thinking', label: labels.thinking });
242
+ if (typeof p.textDelta === 'string' && p.textDelta) {
243
+ setEntries((prev) => {
244
+ const last = prev.at(-1);
245
+ if (last?.kind === 'reasoning' && last.id.startsWith('live:reasoning:')) {
246
+ return [...prev.slice(0, -1), { ...last, text: last.text + p.textDelta }];
247
+ }
248
+ return [
249
+ ...prev,
250
+ {
251
+ id: `live:reasoning:${data.seq}`,
252
+ kind: 'reasoning',
253
+ role: 'assistant',
254
+ text: p.textDelta,
255
+ },
256
+ ];
257
+ });
258
+ }
259
+ }
260
+ else if (p?.type === 'source') {
261
+ setActivity({ phase: 'thinking', label: labels.reviewingSources });
262
+ }
263
+ else if (p?.type === 'tool-call-streaming-start' || p?.type === 'tool-call-delta') {
264
+ setActivity({
265
+ phase: 'tool-call',
266
+ label: labels.preparingToolCall,
267
+ detail: p.toolName,
268
+ });
269
+ }
270
+ else if (p?.type === 'tool-call') {
271
+ if (p.toolCallId && seenToolCalls.current.has(p.toolCallId))
272
+ break; // already durable
273
+ if (p.toolCallId)
274
+ seenToolCalls.current.add(p.toolCallId);
275
+ setActivity({ phase: 'tool-call', label: labels.callingTool, detail: p.toolName });
276
+ setEntries((prev) => [
277
+ ...prev,
278
+ {
279
+ id: `live:tool-call:${data.seq}`,
280
+ kind: 'tool',
281
+ role: 'tool',
282
+ text: format.toolCall(p.toolName, p.args ?? {}),
283
+ },
284
+ ]);
285
+ }
286
+ else if (p?.type === 'tool-result') {
287
+ // The park sentinel is an internal marker, not a result — it is
288
+ // never persisted and must never be shown.
289
+ if (p.result && typeof p.result === 'object' && '__hitl_parked__' in p.result)
290
+ break;
291
+ if (p.toolCallId && seenToolCalls.current.has(p.toolCallId))
292
+ break; // already durable
293
+ if (p.toolCallId)
294
+ seenToolCalls.current.add(p.toolCallId);
295
+ setActivity({ phase: 'tool-result', label: labels.toolCompleted, detail: p.toolName });
296
+ setEntries((prev) => [
297
+ ...prev,
298
+ {
299
+ id: `live:tool-result:${data.seq}`,
300
+ kind: 'tool',
301
+ role: 'tool',
302
+ text: format.toolResult(p.toolName, p.result),
303
+ },
304
+ ]);
305
+ }
306
+ break;
307
+ }
308
+ case 'INPUT_REQUIRED':
309
+ setAgentState('WAITING_FOR_INPUT');
310
+ setActivity({
311
+ phase: 'waiting-input',
312
+ label: labels.waitingApproval,
313
+ detail: p.toolName,
314
+ });
315
+ setPendingInputs((prev) => prev.some((r) => r.toolCallId === p.toolCallId)
316
+ ? prev // replayed on reconnect
317
+ : [
318
+ ...prev,
319
+ {
320
+ toolCallId: p.toolCallId,
321
+ toolName: p.toolName,
322
+ agentId: p.agentId ?? null,
323
+ agentName: p.nested?.name,
324
+ depth: p.nested?.depth,
325
+ arguments: p.arguments,
326
+ },
327
+ ]);
328
+ // The child that asked is suspended, not working.
329
+ if (p.agentId) {
330
+ setSubagents((prev) => prev.map((s) => s.agentId === p.agentId ? { ...s, status: 'WAITING_FOR_INPUT' } : s));
331
+ }
332
+ break;
333
+ case 'INPUT_EXPIRED':
334
+ // Only this request expired; any sibling approval is still open.
335
+ setPendingInputs((prev) => prev.filter((r) => r.toolCallId !== p.toolCallId));
336
+ setActivity({ phase: 'failed', label: labels.approvalExpired });
337
+ break;
338
+ case 'SUBAGENT_STARTED':
339
+ setActivity({ phase: 'tool-call', label: labels.subagentWorking, detail: p.name });
340
+ setEntries((prev) => [
341
+ ...prev,
342
+ {
343
+ id: `live:subagent:${p.agentId}:${data.seq}`,
344
+ kind: 'tool',
345
+ role: 'tool',
346
+ text: format.subagentStarted(p.name),
347
+ },
348
+ ]);
349
+ setSubagents((prev) => prev.some((s) => s.agentId === p.agentId)
350
+ ? // Already hydrated from its persisted turns — name it.
351
+ prev.map((s) => s.agentId === p.agentId ? { ...s, name: p.name, depth: p.depth ?? s.depth } : s)
352
+ : [
353
+ ...prev,
354
+ {
355
+ agentId: p.agentId,
356
+ name: p.name,
357
+ depth: p.depth ?? 1,
358
+ status: 'RUNNING',
359
+ text: '',
360
+ },
361
+ ]);
362
+ break;
363
+ case 'SUBAGENT_CHUNK':
364
+ setSubagents((prev) => prev.map((s) => s.agentId === p.agentId ? { ...s, text: s.text + (p.chunk?.textDelta ?? '') } : s));
365
+ break;
366
+ case 'SUBAGENT_COMPLETED':
367
+ setActivity({ phase: 'tool-result', label: labels.subagentCompleted, detail: p.name });
368
+ setSubagents((prev) => prev.map((s) => (s.agentId === p.agentId ? { ...s, status: 'COMPLETED' } : s)));
369
+ break;
370
+ case 'SUBAGENT_FAILED':
371
+ setSubagents((prev) => prev.map((s) => s.agentId === p.agentId
372
+ ? { ...s, status: p.state ?? 'FAILED', error: p.error }
373
+ : s));
374
+ break;
375
+ }
376
+ }, [loadThreads, loadUsage]);
377
+ useEffect(() => {
378
+ if (!threadId)
379
+ return;
380
+ const cfg = cfgRef.current;
381
+ cfg.persistence?.save(threadId);
382
+ let cancelled = false;
383
+ let stream;
384
+ setHistoryLoading(true);
385
+ setActivity({ phase: 'loading', label: cfg.labels.loading });
386
+ void (async () => {
387
+ try {
388
+ const res = await request(routeUrl(cfg.routes.history, { threadId }, cfg.baseUrl));
389
+ if (res.status === 404) {
390
+ cfg.persistence?.clear();
391
+ setThreadId(undefined);
392
+ setEntries([]);
393
+ setUsage(null);
394
+ setAgentState('IDLE');
395
+ setActivity(stateActivity('IDLE', cfg.labels));
396
+ return;
397
+ }
398
+ if (!res.ok)
399
+ throw new Error(`History request failed (${res.status})`);
400
+ const snapshot = (await res.json());
401
+ if (cancelled)
402
+ return;
403
+ // A nested run's turns live in the same log under its own agentId.
404
+ // They are its transcript, not the main conversation's.
405
+ const mainMessages = snapshot.messages.filter((m) => (m.agentId ?? null) === null);
406
+ setEntries(mainMessages.flatMap((m) => messageToEntries(m, cfg.format)));
407
+ // Rebuild each child's card from what it actually wrote, so a reload
408
+ // does not lose a subagent's output.
409
+ seenToolCalls.current = new Set(snapshot.messages.flatMap((m) => (Array.isArray(m.content) ? m.content : [])
410
+ .map((part) => part?.toolCallId)
411
+ .filter((id) => typeof id === 'string')));
412
+ // Name, depth and final state come from the durable run rows; the
413
+ // SUBAGENT_* events only replay while a run is unfinished, so on a
414
+ // completed thread they are all a client has.
415
+ const byAgent = new Map(
416
+ // Nested runs only: depth 0 is this thread's own dispatched run,
417
+ // which the transcript already represents.
418
+ (snapshot.runs ?? [])
419
+ .filter((r) => r.depth > 0)
420
+ .map((r) => [
421
+ r.id,
422
+ { agentId: r.id, name: r.agent, depth: r.depth, status: r.state, text: '' },
423
+ ]));
424
+ for (const m of snapshot.messages) {
425
+ const id = m.agentId ?? null;
426
+ if (id === null)
427
+ continue;
428
+ const view = byAgent.get(id) ?? {
429
+ agentId: id,
430
+ name: id.slice(0, 8),
431
+ depth: 1,
432
+ status: 'RUNNING',
433
+ text: '',
434
+ };
435
+ if (m.role === 'assistant') {
436
+ const text = messageToEntry(m, cfg.format)?.text ?? '';
437
+ if (text)
438
+ view.text = view.text ? `${view.text}\n${text}` : text;
439
+ }
440
+ byAgent.set(id, view);
441
+ }
442
+ // Trailing break so live deltas from a resumed child start on their
443
+ // own line instead of running into what it already wrote.
444
+ for (const view of byAgent.values())
445
+ if (view.text)
446
+ view.text += '\n';
447
+ setSubagents([...byAgent.values()]);
448
+ setPendingInputs([]);
449
+ void loadUsage(threadId);
450
+ setAgentState(snapshot.thread.state);
451
+ setActivity(stateActivity(snapshot.thread.state, cfg.labels));
452
+ for (const event of snapshot.activeEvents)
453
+ applyEvent(event);
454
+ stream = cfg.openStream(routeUrl(cfg.routes.stream, { threadId, since: snapshot.lastEventSeq }, cfg.baseUrl), {
455
+ onMessage: (raw) => applyEvent(JSON.parse(raw)),
456
+ onError: () => {
457
+ // EventSource reconnects on its own; keep the last meaningful
458
+ // activity instead of presenting a transient network failure.
459
+ },
460
+ });
461
+ }
462
+ catch (error) {
463
+ if (cancelled)
464
+ return;
465
+ setAgentState('FAILED');
466
+ setActivity({
467
+ phase: 'failed',
468
+ label: cfgRef.current.labels.loadFailed,
469
+ detail: error instanceof Error ? error.message : String(error),
470
+ });
471
+ }
472
+ finally {
473
+ if (!cancelled)
474
+ setHistoryLoading(false);
475
+ }
476
+ })();
477
+ return () => {
478
+ cancelled = true;
479
+ stream?.close();
480
+ };
481
+ }, [applyEvent, loadUsage, request, threadId]);
482
+ const run = useCallback(async (prompt, options = {}) => {
483
+ const cfg = cfgRef.current;
484
+ const { model = cfg.defaultModel, editMessageId, ...rest } = options;
485
+ setEntries((prev) => {
486
+ // An edit replaces that turn and everything it led to, mirroring what
487
+ // the server is about to do to the durable history.
488
+ const at = editMessageId ? prev.findIndex((e) => e.id === editMessageId) : -1;
489
+ const kept = at === -1 ? prev : prev.slice(0, at);
490
+ return [
491
+ ...kept,
492
+ { id: `optimistic:user:${Date.now()}`, kind: 'text', role: 'user', text: prompt },
493
+ ];
494
+ });
495
+ setSubagents([]);
496
+ setPendingInputs([]);
497
+ setAgentState('RUNNING');
498
+ setActivity({ phase: 'thinking', label: cfg.labels.thinking });
499
+ try {
500
+ const response = await postJson(cfg.baseUrl + cfg.routes.run, {
501
+ threadId: threadRef.current,
502
+ prompt,
503
+ model,
504
+ editMessageId,
505
+ ...rest,
506
+ });
507
+ const data = (await response.json());
508
+ if (!response.ok || !data.accepted) {
509
+ throw new Error(data.error ?? `Run request failed (${response.status})`);
510
+ }
511
+ if (data.threadId)
512
+ setThreadId(data.threadId);
513
+ void loadThreads(); // the sidebar reflects a new thread immediately
514
+ return data;
515
+ }
516
+ catch (error) {
517
+ setAgentState('FAILED');
518
+ setActivity({
519
+ phase: 'failed',
520
+ label: cfg.labels.runFailed,
521
+ detail: error instanceof Error ? error.message : String(error),
522
+ });
523
+ return { accepted: false, threadId: threadRef.current, error: String(error) };
524
+ }
525
+ }, [loadThreads, postJson]);
526
+ const stop = useCallback(async () => {
527
+ if (!threadRef.current)
528
+ return;
529
+ const cfg = cfgRef.current;
530
+ await postJson(cfg.baseUrl + cfg.routes.stop, { threadId: threadRef.current });
531
+ }, [postJson]);
532
+ const respondToInput = useCallback(async (toolCallId, approved, payload) => {
533
+ if (!threadRef.current)
534
+ return;
535
+ const cfg = cfgRef.current;
536
+ // Drop this card straight away; the run only moves once the LAST open
537
+ // approval is answered, so the others stay on screen.
538
+ setPendingInputs((prev) => prev.filter((r) => r.toolCallId !== toolCallId));
539
+ setActivity({
540
+ phase: 'thinking',
541
+ label: approved ? cfg.labels.approvalSent : cfg.labels.requestDenied,
542
+ });
543
+ await postJson(cfg.baseUrl + cfg.routes.respond, {
544
+ threadId: threadRef.current,
545
+ toolCallId,
546
+ approved,
547
+ payload,
548
+ });
549
+ }, [postJson]);
550
+ return {
551
+ threadId,
552
+ entries,
553
+ agentState,
554
+ activity,
555
+ historyLoading,
556
+ pendingInputs,
557
+ subagents,
558
+ threads,
559
+ threadsLoading,
560
+ usage,
561
+ loadThreads,
562
+ loadUsage,
563
+ newThread,
564
+ selectThread,
565
+ deleteThread,
566
+ run,
567
+ stop,
568
+ respondToInput,
569
+ };
570
+ }
571
+ export { withQuery };
572
+ //# sourceMappingURL=useAgentThread.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAgentThread.js","sourceRoot":"","sources":["../src/useAgentThread.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "use-agentenkit",
3
+ "version": "0.1.0",
4
+ "description": "React hook for agentenkit \u2014 durable threads, live streaming, human-in-the-loop approvals and nested runs, with every route and label under your control.",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/eadwinCode/agentic-kit.git",
9
+ "directory": "packages/use-agentenkit"
10
+ },
11
+ "homepage": "https://eadwincode.github.io/agentic-kit/",
12
+ "bugs": {
13
+ "url": "https://github.com/eadwinCode/agentic-kit/issues"
14
+ },
15
+ "type": "module",
16
+ "main": "./dist/index.js",
17
+ "types": "./dist/index.d.ts",
18
+ "exports": {
19
+ ".": {
20
+ "types": "./dist/index.d.ts",
21
+ "import": "./dist/index.js",
22
+ "default": "./dist/index.js"
23
+ }
24
+ },
25
+ "files": [
26
+ "dist"
27
+ ],
28
+ "scripts": {
29
+ "typecheck": "tsc --noEmit",
30
+ "build": "tsc -p tsconfig.build.json",
31
+ "prepublishOnly": "bun run typecheck && bun run build",
32
+ "test": "bun test"
33
+ },
34
+ "peerDependencies": {
35
+ "react": ">=18.0.0"
36
+ },
37
+ "devDependencies": {
38
+ "@types/react": "^18.3.0",
39
+ "typescript": "^5.6.3"
40
+ },
41
+ "keywords": [
42
+ "react",
43
+ "hooks",
44
+ "ai",
45
+ "agents",
46
+ "streaming",
47
+ "human-in-the-loop"
48
+ ]
49
+ }