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.
package/dist/format.js ADDED
@@ -0,0 +1,101 @@
1
+ const json = (value) => {
2
+ try {
3
+ return JSON.stringify(value);
4
+ }
5
+ catch {
6
+ return String(value);
7
+ }
8
+ };
9
+ /** Flatten AI-SDK message content into something a bubble can render. */
10
+ export function contentToText(content, format) {
11
+ if (typeof content === 'string')
12
+ return content;
13
+ if (!Array.isArray(content))
14
+ return json(content);
15
+ return content
16
+ .map((part) => {
17
+ if (part?.type === 'text')
18
+ return part.text ?? '';
19
+ // Reasoning is deliberately NOT folded in here — `messageToEntries`
20
+ // lifts it into its own entry so the answer stays clean.
21
+ if (part?.type === 'tool-call') {
22
+ return format.toolCall(part.toolName ?? 'tool', part.args ?? {});
23
+ }
24
+ if (part?.type === 'tool-result')
25
+ return format.toolResult(undefined, part.result);
26
+ return '';
27
+ })
28
+ .filter(Boolean)
29
+ .join('\n');
30
+ }
31
+ /** One durable message → one entry, or null when it carries nothing to show.
32
+ * A message that is only tool activity is marked `kind: 'tool'` so a UI can
33
+ * style it apart from conversation. */
34
+ export function messageToEntry(message, format) {
35
+ const text = contentToText(message.content, format);
36
+ if (!text)
37
+ return null;
38
+ const parts = Array.isArray(message.content) ? message.content : [];
39
+ const containsText = parts.some((part) => part?.type === 'text' && part.text);
40
+ const containsToolActivity = parts.some((part) => part?.type === 'tool-call' || part?.type === 'tool-result');
41
+ return {
42
+ id: message.id,
43
+ kind: message.role === 'tool' ||
44
+ message.role === 'system' ||
45
+ (containsToolActivity && !containsText)
46
+ ? 'tool'
47
+ : 'text',
48
+ role: message.role,
49
+ text,
50
+ agentId: message.agentId ?? null,
51
+ };
52
+ }
53
+ /** The model's thinking, as persisted on a message. Providers that do not
54
+ * expose it simply have no such parts, and this returns ''. */
55
+ export function reasoningText(content) {
56
+ if (!Array.isArray(content))
57
+ return '';
58
+ return content
59
+ .filter((part) => part?.type === 'reasoning')
60
+ .map((part) => part?.text ?? part?.reasoning ?? '')
61
+ .join('');
62
+ }
63
+ /** One durable message → the entries it renders as: its thinking first, then
64
+ * the answer. Split because they stream separately and a UI folds thinking
65
+ * away, so keeping them in one bubble would make a reload look different from
66
+ * the live run. */
67
+ export function messageToEntries(message, format) {
68
+ const out = [];
69
+ const thought = reasoningText(message.content);
70
+ if (thought) {
71
+ out.push({
72
+ id: `${message.id}:reasoning`,
73
+ kind: 'reasoning',
74
+ role: message.role,
75
+ text: thought,
76
+ agentId: message.agentId ?? null,
77
+ });
78
+ }
79
+ const entry = messageToEntry(message, format);
80
+ if (entry)
81
+ out.push(entry);
82
+ return out;
83
+ }
84
+ /** The activity a thread state implies when nothing more specific is happening. */
85
+ export function stateActivity(state, labels) {
86
+ switch (state) {
87
+ case 'RUNNING':
88
+ return { phase: 'thinking', label: labels.thinking };
89
+ case 'WAITING_FOR_INPUT':
90
+ return { phase: 'waiting-input', label: labels.waitingApproval };
91
+ case 'COMPLETED':
92
+ return { phase: 'completed', label: labels.completed };
93
+ case 'CANCELLED':
94
+ return { phase: 'stopped', label: labels.stopped };
95
+ case 'FAILED':
96
+ return { phase: 'failed', label: labels.failed };
97
+ default:
98
+ return { phase: 'idle', label: labels.idle };
99
+ }
100
+ }
101
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export { useAgentThread } from './useAgentThread.js';
2
+ export type { UseAgentThread, UseAgentThreadOptions, RunOptions } from './useAgentThread.js';
3
+ export { AgentRunProvider } from './provider.js';
4
+ export type { AgentRunProviderProps } from './provider.js';
5
+ export { useAgentRunConfig, mergeConfig } from './context.js';
6
+ export { defaultRoutes, defaultLabels, defaultFormat, browserPersistence, browserEventStream, resolveConfig, withQuery, routeUrl, } from './config.js';
7
+ export type { AgentRunConfig, ResolvedConfig, AgentRoutes, Route, ActivityLabels, EntryFormat, ThreadPersistence, FetchLike, OpenStream, StreamHandlers, StreamSubscription, } from './config.js';
8
+ export { contentToText, messageToEntry, messageToEntries, reasoningText, stateActivity, } from './format.js';
9
+ export type { AgentState, AgentActivity, ActivityPhase, ChatEntry, MessageRole, PendingInput, RunResult, SnapshotMessage, SnapshotRun, StreamEvent, SubagentStatus, SubagentView, ThreadListItem, ThreadSnapshot, ThreadUsage, UsageTotals, ContextUsage, } from './types.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,YAAY,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE9D,OAAO,EACL,aAAa,EACb,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,SAAS,EACT,QAAQ,GACT,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,cAAc,EACd,cAAc,EACd,WAAW,EACX,KAAK,EACL,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,UAAU,EACV,cAAc,EACd,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,aAAa,GACd,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,UAAU,EACV,aAAa,EACb,aAAa,EACb,SAAS,EACT,WAAW,EACX,YAAY,EACZ,SAAS,EACT,eAAe,EACf,WAAW,EACX,WAAW,EACX,cAAc,EACd,YAAY,EACZ,cAAc,EACd,cAAc,EACd,WAAW,EACX,WAAW,EACX,YAAY,GACb,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export { useAgentThread } from './useAgentThread.js';
2
+ export { AgentRunProvider } from './provider.js';
3
+ export { useAgentRunConfig, mergeConfig } from './context.js';
4
+ export { defaultRoutes, defaultLabels, defaultFormat, browserPersistence, browserEventStream, resolveConfig, withQuery, routeUrl, } from './config.js';
5
+ export { contentToText, messageToEntry, messageToEntries, reasoningText, stateActivity, } from './format.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE9D,OAAO,EACL,aAAa,EACb,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,SAAS,EACT,QAAQ,GACT,MAAM,aAAa,CAAC;AAerB,OAAO,EACL,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,aAAa,GACd,MAAM,aAAa,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { ReactNode } from 'react';
2
+ import type { AgentRunConfig } from './config.js';
3
+ export interface AgentRunProviderProps {
4
+ /** Applied to every `useAgentThread` below it. A hook's own options still
5
+ * win, section by section. */
6
+ config?: AgentRunConfig;
7
+ children: ReactNode;
8
+ }
9
+ /** Set the routes, labels and transport once for the whole app instead of at
10
+ * every call site. */
11
+ export declare function AgentRunProvider({ config, children }: AgentRunProviderProps): import("react").JSX.Element;
12
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,WAAW,qBAAqB;IACpC;mCAC+B;IAC/B,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;uBACuB;AACvB,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,qBAAqB,+BAE3E"}
@@ -0,0 +1,9 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { AgentRunContext } from './context.js';
4
+ /** Set the routes, labels and transport once for the whole app instead of at
5
+ * every call site. */
6
+ export function AgentRunProvider({ config, children }) {
7
+ return _jsx(AgentRunContext.Provider, { value: config ?? null, children: children });
8
+ }
9
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAU/C;uBACuB;AACvB,MAAM,UAAU,gBAAgB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAyB;IAC1E,OAAO,KAAC,eAAe,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,IAAI,IAAI,YAAG,QAAQ,GAA4B,CAAC;AAChG,CAAC"}
@@ -0,0 +1,101 @@
1
+ /** The shapes a UI renders. Nothing here knows how the data arrived — the
2
+ * transport lives in `config.ts`, so an app can move every endpoint without
3
+ * touching a component. */
4
+ export type AgentState = 'IDLE' | 'RUNNING' | 'WAITING_FOR_INPUT' | 'CANCELLED' | 'COMPLETED' | 'FAILED';
5
+ export type MessageRole = 'user' | 'assistant' | 'system' | 'tool';
6
+ export interface ChatEntry {
7
+ id: string;
8
+ /** `reasoning` is the model's thinking, which arrives as its own stream and
9
+ * is kept apart from the answer so a UI can fold it away. */
10
+ kind: 'text' | 'tool' | 'reasoning';
11
+ role: MessageRole;
12
+ text: string;
13
+ agentId?: string | null;
14
+ }
15
+ export type ActivityPhase = 'idle' | 'loading' | 'thinking' | 'responding' | 'tool-call' | 'tool-result' | 'waiting-input' | 'completed' | 'stopped' | 'failed';
16
+ export interface AgentActivity {
17
+ phase: ActivityPhase;
18
+ label: string;
19
+ detail?: string;
20
+ }
21
+ export type SubagentStatus = 'RUNNING' | 'WAITING_FOR_INPUT' | 'COMPLETED' | 'FAILED' | 'CANCELLED';
22
+ export interface SubagentView {
23
+ agentId: string;
24
+ name: string;
25
+ /** 1 = spawned by the main agent; deeper runs nest further. */
26
+ depth: number;
27
+ status: SubagentStatus;
28
+ text: string;
29
+ /** Why it died — SUBAGENT_FAILED carries the reason. */
30
+ error?: string;
31
+ }
32
+ export interface UsageTotals {
33
+ inputTokens: number;
34
+ cachedInputTokens: number;
35
+ outputTokens: number;
36
+ totalTokens: number;
37
+ }
38
+ export interface ContextUsage {
39
+ usedTokens: number;
40
+ budgetTokens: number;
41
+ compactAtTokens: number;
42
+ messages: number;
43
+ }
44
+ export interface ThreadUsage {
45
+ tokens: UsageTotals;
46
+ context: ContextUsage;
47
+ model: string;
48
+ }
49
+ export interface PendingInput {
50
+ toolCallId: string;
51
+ toolName: string;
52
+ /** The stream that asked — null when the main agent did. */
53
+ agentId?: string | null;
54
+ /** The nested run's own name and depth, straight off the park, so a card can
55
+ * say "mailer" rather than an opaque id. */
56
+ agentName?: string;
57
+ depth?: number;
58
+ arguments: unknown;
59
+ }
60
+ export interface ThreadListItem {
61
+ id: string;
62
+ title: string;
63
+ state: AgentState;
64
+ model: string;
65
+ updatedAt: string;
66
+ }
67
+ export interface SnapshotMessage {
68
+ id: string;
69
+ role: MessageRole;
70
+ content: unknown;
71
+ agentId?: string | null;
72
+ }
73
+ export interface StreamEvent {
74
+ seq: number;
75
+ type: string;
76
+ payload: any;
77
+ }
78
+ export interface SnapshotRun {
79
+ id: string;
80
+ agent: string;
81
+ /** 0 is the dispatched run itself; nested runs are 1+. */
82
+ depth: number;
83
+ state: SubagentStatus;
84
+ }
85
+ export interface ThreadSnapshot {
86
+ thread: {
87
+ id: string;
88
+ state: AgentState;
89
+ };
90
+ messages: SnapshotMessage[];
91
+ runs: SnapshotRun[];
92
+ lastEventSeq: number;
93
+ activeEvents: StreamEvent[];
94
+ }
95
+ export interface RunResult {
96
+ accepted: boolean;
97
+ threadId?: string;
98
+ runId?: string;
99
+ error?: string;
100
+ }
101
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,5 @@
1
+ /** The shapes a UI renders. Nothing here knows how the data arrived — the
2
+ * transport lives in `config.ts`, so an app can move every endpoint without
3
+ * touching a component. */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;4BAE4B"}
@@ -0,0 +1,42 @@
1
+ import { withQuery, type AgentRunConfig } from './config.js';
2
+ import type { AgentActivity, AgentState, ChatEntry, PendingInput, RunResult, SubagentView, ThreadListItem, ThreadUsage } from './types.js';
3
+ export interface UseAgentThreadOptions extends AgentRunConfig {
4
+ /** Open this thread instead of whatever persistence remembers. */
5
+ initialThreadId?: string;
6
+ }
7
+ export interface UseAgentThread {
8
+ threadId: string | undefined;
9
+ entries: ChatEntry[];
10
+ agentState: AgentState;
11
+ activity: AgentActivity;
12
+ historyLoading: boolean;
13
+ pendingInputs: PendingInput[];
14
+ subagents: SubagentView[];
15
+ threads: ThreadListItem[];
16
+ threadsLoading: boolean;
17
+ usage: ThreadUsage | null;
18
+ loadThreads: () => Promise<void>;
19
+ loadUsage: (threadId?: string) => Promise<void>;
20
+ newThread: () => void;
21
+ selectThread: (threadId: string) => void;
22
+ deleteThread: (threadId: string) => Promise<boolean>;
23
+ run: (prompt: string, options?: RunOptions) => Promise<RunResult>;
24
+ stop: () => Promise<void>;
25
+ respondToInput: (toolCallId: string, approved: boolean, payload?: unknown) => Promise<void>;
26
+ }
27
+ export interface RunOptions {
28
+ model?: string;
29
+ /** Replace this user turn and everything it led to, then answer again. */
30
+ editMessageId?: string;
31
+ /** Anything else the run route accepts — merged into the request body. */
32
+ [key: string]: unknown;
33
+ }
34
+ /** Hydrates durable messages first, then resumes the canonical event stream at
35
+ * the snapshot cursor, so a reload — or a second tab — rebuilds the same
36
+ * conversation with the server as the only source of truth.
37
+ *
38
+ * Every endpoint, label and formatter is replaceable through the options or a
39
+ * surrounding provider; see `AgentRunConfig`. */
40
+ export declare function useAgentThread(options?: UseAgentThreadOptions): UseAgentThread;
41
+ export { withQuery };
42
+ //# sourceMappingURL=useAgentThread.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAgentThread.d.ts","sourceRoot":"","sources":["../src/useAgentThread.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,SAAS,EACT,KAAK,cAAc,EAEpB,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,SAAS,EAET,YAAY,EACZ,SAAS,EAGT,YAAY,EACZ,cAAc,EAEd,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,qBAAsB,SAAQ,cAAc;IAC3D,kEAAkE;IAClE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,aAAa,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IAClE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7F;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;kDAKkD;AAClD,wBAAgB,cAAc,CAAC,OAAO,GAAE,qBAA0B,GAAG,cAAc,CA6mBlF;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}