@multiplayer-app/ai-agent-react 0.0.1-beta.1

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 (139) hide show
  1. package/README.md +453 -0
  2. package/dist/ai-agent-react.cjs.js +8623 -0
  3. package/dist/ai-agent-react.cjs.js.map +1 -0
  4. package/dist/ai-agent-react.es.js +92883 -0
  5. package/dist/ai-agent-react.es.js.map +1 -0
  6. package/dist/components/Attachments/Attachments.d.ts +9 -0
  7. package/dist/components/Attachments/Attachments.d.ts.map +1 -0
  8. package/dist/components/Attachments/index.d.ts +2 -0
  9. package/dist/components/Attachments/index.d.ts.map +1 -0
  10. package/dist/components/ChatWindow/AgentControls/AgentControls.d.ts +5 -0
  11. package/dist/components/ChatWindow/AgentControls/AgentControls.d.ts.map +1 -0
  12. package/dist/components/ChatWindow/AgentControls/index.d.ts +4 -0
  13. package/dist/components/ChatWindow/AgentControls/index.d.ts.map +1 -0
  14. package/dist/components/ChatWindow/Attachments/AttachmentChips.d.ts +1 -0
  15. package/dist/components/ChatWindow/Attachments/AttachmentChips.d.ts.map +1 -0
  16. package/dist/components/ChatWindow/ChatContentContainer/ChatContentContainer.d.ts +7 -0
  17. package/dist/components/ChatWindow/ChatContentContainer/ChatContentContainer.d.ts.map +1 -0
  18. package/dist/components/ChatWindow/ChatContentContainer/index.d.ts +4 -0
  19. package/dist/components/ChatWindow/ChatContentContainer/index.d.ts.map +1 -0
  20. package/dist/components/ChatWindow/ChatHistoryPanel/ChatHistory/ChatHistory.d.ts +3 -0
  21. package/dist/components/ChatWindow/ChatHistoryPanel/ChatHistory/ChatHistory.d.ts.map +1 -0
  22. package/dist/components/ChatWindow/ChatHistoryPanel/ChatHistory/indext.d.ts +2 -0
  23. package/dist/components/ChatWindow/ChatHistoryPanel/ChatHistory/indext.d.ts.map +1 -0
  24. package/dist/components/ChatWindow/ChatHistoryPanel/ChatHistoryPanel.d.ts +5 -0
  25. package/dist/components/ChatWindow/ChatHistoryPanel/ChatHistoryPanel.d.ts.map +1 -0
  26. package/dist/components/ChatWindow/ChatHistoryPanel/index.d.ts +4 -0
  27. package/dist/components/ChatWindow/ChatHistoryPanel/index.d.ts.map +1 -0
  28. package/dist/components/ChatWindow/ChatWindow.d.ts +7 -0
  29. package/dist/components/ChatWindow/ChatWindow.d.ts.map +1 -0
  30. package/dist/components/ChatWindow/Composer/Composer.d.ts +7 -0
  31. package/dist/components/ChatWindow/Composer/Composer.d.ts.map +1 -0
  32. package/dist/components/ChatWindow/Composer/ComposerInputRow.d.ts +15 -0
  33. package/dist/components/ChatWindow/Composer/ComposerInputRow.d.ts.map +1 -0
  34. package/dist/components/ChatWindow/Composer/ComposerQueue.d.ts +10 -0
  35. package/dist/components/ChatWindow/Composer/ComposerQueue.d.ts.map +1 -0
  36. package/dist/components/ChatWindow/Composer/ModelSelector.d.ts +3 -0
  37. package/dist/components/ChatWindow/Composer/ModelSelector.d.ts.map +1 -0
  38. package/dist/components/ChatWindow/Composer/index.d.ts +3 -0
  39. package/dist/components/ChatWindow/Composer/index.d.ts.map +1 -0
  40. package/dist/components/ChatWindow/Composer/types.d.ts +13 -0
  41. package/dist/components/ChatWindow/Composer/types.d.ts.map +1 -0
  42. package/dist/components/ChatWindow/ContextControls/ContextControls.d.ts +3 -0
  43. package/dist/components/ChatWindow/ContextControls/ContextControls.d.ts.map +1 -0
  44. package/dist/components/ChatWindow/ContextControls/index.d.ts +2 -0
  45. package/dist/components/ChatWindow/ContextControls/index.d.ts.map +1 -0
  46. package/dist/components/ChatWindow/MessageList/Message/MarkdownComponents.d.ts +4 -0
  47. package/dist/components/ChatWindow/MessageList/Message/MarkdownComponents.d.ts.map +1 -0
  48. package/dist/components/ChatWindow/MessageList/Message/MessageActions.d.ts +7 -0
  49. package/dist/components/ChatWindow/MessageList/Message/MessageActions.d.ts.map +1 -0
  50. package/dist/components/ChatWindow/MessageList/Message/MessageAttachments.d.ts +7 -0
  51. package/dist/components/ChatWindow/MessageList/Message/MessageAttachments.d.ts.map +1 -0
  52. package/dist/components/ChatWindow/MessageList/Message/MessageAvatar.d.ts +9 -0
  53. package/dist/components/ChatWindow/MessageList/Message/MessageAvatar.d.ts.map +1 -0
  54. package/dist/components/ChatWindow/MessageList/Message/MessageBubble.d.ts +8 -0
  55. package/dist/components/ChatWindow/MessageList/Message/MessageBubble.d.ts.map +1 -0
  56. package/dist/components/ChatWindow/MessageList/Message/MessageCodeBlock.d.ts +8 -0
  57. package/dist/components/ChatWindow/MessageList/Message/MessageCodeBlock.d.ts.map +1 -0
  58. package/dist/components/ChatWindow/MessageList/Message/MessageContent.d.ts +9 -0
  59. package/dist/components/ChatWindow/MessageList/Message/MessageContent.d.ts.map +1 -0
  60. package/dist/components/ChatWindow/MessageList/Message/MessageHeader.d.ts +10 -0
  61. package/dist/components/ChatWindow/MessageList/Message/MessageHeader.d.ts.map +1 -0
  62. package/dist/components/ChatWindow/MessageList/Message/MessageTypingAnimation.d.ts +3 -0
  63. package/dist/components/ChatWindow/MessageList/Message/MessageTypingAnimation.d.ts.map +1 -0
  64. package/dist/components/ChatWindow/MessageList/Message/ReasoningPanel.d.ts +11 -0
  65. package/dist/components/ChatWindow/MessageList/Message/ReasoningPanel.d.ts.map +1 -0
  66. package/dist/components/ChatWindow/MessageList/Message/index.d.ts +7 -0
  67. package/dist/components/ChatWindow/MessageList/Message/index.d.ts.map +1 -0
  68. package/dist/components/ChatWindow/MessageList/MessageGroup.d.ts +10 -0
  69. package/dist/components/ChatWindow/MessageList/MessageGroup.d.ts.map +1 -0
  70. package/dist/components/ChatWindow/MessageList/MessageList.d.ts +3 -0
  71. package/dist/components/ChatWindow/MessageList/MessageList.d.ts.map +1 -0
  72. package/dist/components/ChatWindow/MessageList/ToolCallCard.d.ts +10 -0
  73. package/dist/components/ChatWindow/MessageList/ToolCallCard.d.ts.map +1 -0
  74. package/dist/components/ChatWindow/MessageList/index.d.ts +3 -0
  75. package/dist/components/ChatWindow/MessageList/index.d.ts.map +1 -0
  76. package/dist/components/ChatWindow/ToolShelf/ToolShelf.d.ts +8 -0
  77. package/dist/components/ChatWindow/ToolShelf/ToolShelf.d.ts.map +1 -0
  78. package/dist/components/ChatWindow/ToolShelf/index.d.ts +3 -0
  79. package/dist/components/ChatWindow/ToolShelf/index.d.ts.map +1 -0
  80. package/dist/components/ChatWindow/index.d.ts +7 -0
  81. package/dist/components/ChatWindow/index.d.ts.map +1 -0
  82. package/dist/components/ui/CopyButton/CopyButton.d.ts +6 -0
  83. package/dist/components/ui/CopyButton/CopyButton.d.ts.map +1 -0
  84. package/dist/components/ui/CopyButton/index.d.ts +2 -0
  85. package/dist/components/ui/CopyButton/index.d.ts.map +1 -0
  86. package/dist/components/ui/Dropdown/Dropdown.d.ts +25 -0
  87. package/dist/components/ui/Dropdown/Dropdown.d.ts.map +1 -0
  88. package/dist/components/ui/Dropdown/index.d.ts +2 -0
  89. package/dist/components/ui/Dropdown/index.d.ts.map +1 -0
  90. package/dist/components/ui/IconButton/IconButton.d.ts +18 -0
  91. package/dist/components/ui/IconButton/IconButton.d.ts.map +1 -0
  92. package/dist/components/ui/IconButton/index.d.ts +2 -0
  93. package/dist/components/ui/IconButton/index.d.ts.map +1 -0
  94. package/dist/config/types.d.ts +523 -0
  95. package/dist/config/types.d.ts.map +1 -0
  96. package/dist/context/AgentProvider.d.ts +13 -0
  97. package/dist/context/AgentProvider.d.ts.map +1 -0
  98. package/dist/context/SocketProvider.d.ts +14 -0
  99. package/dist/context/SocketProvider.d.ts.map +1 -0
  100. package/dist/hooks/useAutoScroll.d.ts +42 -0
  101. package/dist/hooks/useAutoScroll.d.ts.map +1 -0
  102. package/dist/hooks/useChatBootstrap.d.ts +2 -0
  103. package/dist/hooks/useChatBootstrap.d.ts.map +1 -0
  104. package/dist/hooks/useChatSendController.d.ts +18 -0
  105. package/dist/hooks/useChatSendController.d.ts.map +1 -0
  106. package/dist/hooks/useDeleteChat.d.ts +6 -0
  107. package/dist/hooks/useDeleteChat.d.ts.map +1 -0
  108. package/dist/hooks/useModels.d.ts +4 -0
  109. package/dist/hooks/useModels.d.ts.map +1 -0
  110. package/dist/index.d.ts +11 -0
  111. package/dist/index.d.ts.map +1 -0
  112. package/dist/runtime/AgentRuntime.d.ts +30 -0
  113. package/dist/runtime/AgentRuntime.d.ts.map +1 -0
  114. package/dist/runtime/ToolRegistry.d.ts +20 -0
  115. package/dist/runtime/ToolRegistry.d.ts.map +1 -0
  116. package/dist/runtime/transports/AgentTransport.d.ts +49 -0
  117. package/dist/runtime/transports/AgentTransport.d.ts.map +1 -0
  118. package/dist/runtime/transports/ChatStorage.d.ts +18 -0
  119. package/dist/runtime/transports/ChatStorage.d.ts.map +1 -0
  120. package/dist/runtime/transports/DirectTransport.d.ts +71 -0
  121. package/dist/runtime/transports/DirectTransport.d.ts.map +1 -0
  122. package/dist/runtime/transports/ProxyTransport.d.ts +46 -0
  123. package/dist/runtime/transports/ProxyTransport.d.ts.map +1 -0
  124. package/dist/runtime/types.d.ts +2 -0
  125. package/dist/runtime/types.d.ts.map +1 -0
  126. package/dist/state/useAgentStore.d.ts +61 -0
  127. package/dist/state/useAgentStore.d.ts.map +1 -0
  128. package/dist/style.css +10 -0
  129. package/dist/theme/AgentThemeProvider.d.ts +10 -0
  130. package/dist/theme/AgentThemeProvider.d.ts.map +1 -0
  131. package/dist/theme/defaultTheme.d.ts +5 -0
  132. package/dist/theme/defaultTheme.d.ts.map +1 -0
  133. package/dist/utils/guestUserId.d.ts +6 -0
  134. package/dist/utils/guestUserId.d.ts.map +1 -0
  135. package/dist/utils/modelSelection.d.ts +22 -0
  136. package/dist/utils/modelSelection.d.ts.map +1 -0
  137. package/dist/utils/normalizeUrl.d.ts +3 -0
  138. package/dist/utils/normalizeUrl.d.ts.map +1 -0
  139. package/package.json +77 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { StoreApi } from 'zustand';
2
+ import { QueryClient } from '@tanstack/react-query';
3
+ import { AgentFrontendConfig, AgentToolDefinition, ToolRendererComponent, ValidatedAgentFrontendConfig } from '../config/types';
4
+ import { AgentTransport } from './transports/AgentTransport';
5
+ import { ToolRegistry } from './ToolRegistry';
6
+ import { AgentToolCall } from './types';
7
+ import { AgentStore } from '../state/useAgentStore';
8
+
9
+ export declare class AgentRuntime {
10
+ private readonly rawConfig;
11
+ readonly config: ValidatedAgentFrontendConfig;
12
+ readonly transport: AgentTransport;
13
+ readonly tools: ToolRegistry;
14
+ readonly queryClient: QueryClient;
15
+ private readonly toolRendererMap;
16
+ private storeRef?;
17
+ constructor(rawConfig: AgentFrontendConfig);
18
+ get defaultContextKey(): string;
19
+ get store(): StoreApi<AgentStore>;
20
+ attachStore(store: StoreApi<AgentStore>): void;
21
+ registerTool(tool: AgentToolDefinition): void;
22
+ registerToolRenderer(toolName: string, renderer: ToolRendererComponent): void;
23
+ getToolRenderer(call: AgentToolCall): ToolRendererComponent | undefined;
24
+ private ensureStore;
25
+ private resolveChatId;
26
+ private buildToolContext;
27
+ private writeToolCall;
28
+ private invokeTool;
29
+ }
30
+ //# sourceMappingURL=AgentRuntime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentRuntime.d.ts","sourceRoot":"","sources":["../../src/runtime/AgentRuntime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EAEnB,qBAAqB,EACrB,4BAA4B,EAC7B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAGlE,OAAO,EAAE,YAAY,EAA0B,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,qBAAa,YAAY;IAQX,OAAO,CAAC,QAAQ,CAAC,SAAS;IAPtC,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAC;IAC9C,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA4C;IAC5E,OAAO,CAAC,QAAQ,CAAC,CAAuB;gBAEX,SAAS,EAAE,mBAAmB;IA6C3D,IAAI,iBAAiB,WAEpB;IAED,IAAI,KAAK,IAAI,QAAQ,CAAC,UAAU,CAAC,CAKhC;IAED,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC;IAIvC,YAAY,CAAC,IAAI,EAAE,mBAAmB;IAItC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,qBAAqB;IAItE,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,qBAAqB,GAAG,SAAS;IAIvE,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,aAAa;YAKP,UAAU;CA4BzB"}
@@ -0,0 +1,20 @@
1
+ import { AgentToolDefinition, AgentToolInvoke } from '../config/types';
2
+ import { AgentToolCall } from './types';
3
+
4
+ export interface ToolInvokeOptions {
5
+ chatId?: string;
6
+ }
7
+ type ToolInvokeDelegate = (name: string, input: Record<string, unknown>, options?: ToolInvokeOptions) => Promise<AgentToolCall>;
8
+ export declare class ToolRegistry {
9
+ private readonly tools;
10
+ private invokeDelegate?;
11
+ constructor(definitions?: AgentToolDefinition[]);
12
+ bindInvoke(delegate: ToolInvokeDelegate): void;
13
+ invoke(name: string, input?: Record<string, unknown>, options?: ToolInvokeOptions): Promise<AgentToolCall>;
14
+ register(definition: AgentToolDefinition): void;
15
+ list(): AgentToolDefinition[];
16
+ get(name: string): AgentToolDefinition | undefined;
17
+ execute(name: string, input: Record<string, unknown>, ctx: Parameters<AgentToolInvoke>[1], existingCall?: AgentToolCall): Promise<AgentToolCall>;
18
+ }
19
+ export {};
20
+ //# sourceMappingURL=ToolRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolRegistry.d.ts","sourceRoot":"","sources":["../../src/runtime/ToolRegistry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAElE,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,kBAAkB,GAAG,CACxB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,CAAC,EAAE,iBAAiB,KACxB,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5B,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0C;IAChE,OAAO,CAAC,cAAc,CAAC,CAAqB;gBAEhC,WAAW,CAAC,EAAE,mBAAmB,EAAE;IAI/C,UAAU,CAAC,QAAQ,EAAE,kBAAkB;IAIvC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB;IAOrF,QAAQ,CAAC,UAAU,EAAE,mBAAmB;IAIxC,IAAI;IAIJ,GAAG,CAAC,IAAI,EAAE,MAAM;IAIV,OAAO,CACX,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,GAAG,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EACnC,YAAY,CAAC,EAAE,aAAa,GAC3B,OAAO,CAAC,aAAa,CAAC;CAyB1B"}
@@ -0,0 +1,49 @@
1
+ import { AgentChatResponse, AgentProcessSummary, AgentArtifact, SendMessagePayload, StreamChunk } from '../types';
2
+ import { ModelOption } from '@multiplayer-app/ai-agent-types';
3
+
4
+ export interface StreamMessageOptions {
5
+ /**
6
+ * Stable key used to identify/cancel a specific in-flight stream.
7
+ * Typically the chat id. For unsaved/new chats you may use a placeholder key.
8
+ */
9
+ streamKey?: string;
10
+ }
11
+ export interface AgentTransport {
12
+ sendMessage(payload: SendMessagePayload): Promise<AgentChatResponse>;
13
+ streamMessage(payload: SendMessagePayload, onChunk: (chunk: StreamChunk) => void, options?: StreamMessageOptions): Promise<AgentChatResponse | void>;
14
+ /**
15
+ * Cancels a specific stream if `streamKey` is provided; otherwise cancels all active streams.
16
+ */
17
+ cancelStream?(streamKey?: string): void;
18
+ listChats(params?: {
19
+ contextKey?: string;
20
+ limit?: number;
21
+ userId?: string;
22
+ sortField?: string;
23
+ sortOrder?: 'asc' | 'desc';
24
+ }): Promise<AgentChatResponse[]>;
25
+ getChat(chatId: string): Promise<AgentChatResponse>;
26
+ deleteChat(chatId: string): Promise<void>;
27
+ listAgents(): Promise<AgentProcessSummary[]>;
28
+ controlAgent(options: {
29
+ id: string;
30
+ action: 'stop' | 'resume' | 'retry';
31
+ }): Promise<AgentProcessSummary>;
32
+ listArtifacts(chatId: string): Promise<AgentArtifact[]>;
33
+ /**
34
+ * Fetch available models from the backend.
35
+ * Returns empty array for DirectTransport (models come from config).
36
+ */
37
+ listModels?(): Promise<ModelOption[]>;
38
+ /**
39
+ * Optionally generate a human-friendly title for a new chat based on the first user message.
40
+ * Implementations may call an LLM, a backend service, or use local heuristics.
41
+ */
42
+ generateTitle?(input: {
43
+ content: string;
44
+ contextKey: string;
45
+ userId?: string;
46
+ strategy?: 'local' | 'llm';
47
+ }): Promise<string>;
48
+ }
49
+ //# sourceMappingURL=AgentTransport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentTransport.d.ts","sourceRoot":"","sources":["../../../src/runtime/transports/AgentTransport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEnE,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACrE,aAAa,CACX,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,EACrC,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IACrC;;OAEG;IACH,YAAY,CAAC,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,SAAS,CAAC,MAAM,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC3J,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACpD,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,UAAU,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC7C,YAAY,CAAC,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACzG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;IACxD;;;OAGG;IACH,UAAU,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACtC;;;OAGG;IACH,aAAa,CAAC,CAAC,KAAK,EAAE;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;KAC5B,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACrB"}
@@ -0,0 +1,18 @@
1
+ import { AgentChatResponse } from '../types';
2
+
3
+ declare class ChatStorage {
4
+ private db;
5
+ private initPromise;
6
+ private init;
7
+ saveChat(chat: AgentChatResponse): Promise<void>;
8
+ getChat(chatId: string): Promise<AgentChatResponse | null>;
9
+ listChats(filter?: {
10
+ contextKey?: string;
11
+ userId?: string;
12
+ }): Promise<AgentChatResponse[]>;
13
+ deleteChat(chatId: string): Promise<void>;
14
+ clearAll(): Promise<void>;
15
+ }
16
+ export declare const chatStorage: ChatStorage;
17
+ export {};
18
+ //# sourceMappingURL=ChatStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatStorage.d.ts","sourceRoot":"","sources":["../../../src/runtime/transports/ChatStorage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAO7D,cAAM,WAAW;IACf,OAAO,CAAC,EAAE,CAA4B;IACtC,OAAO,CAAC,WAAW,CAA8B;YAEnC,IAAI;IAyCZ,QAAQ,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAchD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAc1D,SAAS,CAAC,MAAM,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA6B1F,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAczC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAahC;AAED,eAAO,MAAM,WAAW,aAAoB,CAAC"}
@@ -0,0 +1,71 @@
1
+ import { AgentChatResponse, StreamChunk, AgentArtifact, SendMessagePayload, AgentProcessSummary } from '../types';
2
+ import { ToolRegistry } from '../ToolRegistry';
3
+ import { AgentTransport } from './AgentTransport';
4
+ import { DirectTransportConfig } from '../../config/types';
5
+ import { ModelOption } from '@multiplayer-app/ai-agent-types';
6
+
7
+ export declare class DirectTransport implements AgentTransport {
8
+ private readonly config;
9
+ private chats;
10
+ private toolRegistry?;
11
+ private streamControllers;
12
+ private contextKeys?;
13
+ private initialized;
14
+ private models?;
15
+ constructor(config: DirectTransportConfig);
16
+ /**
17
+ * Optional context key metadata used for tool filtering.
18
+ * For the legacy direct transport implementation, we simply
19
+ * store this so the runtime type-checks correctly. Tool
20
+ * selection logic can be wired to this.contextKeys in future
21
+ * without changing the public API.
22
+ */
23
+ setContextKeys(contextKeys: Array<{
24
+ key: string;
25
+ tools: string[];
26
+ }>): void;
27
+ private initializeStorage;
28
+ private generateLocalTitle;
29
+ setToolRegistry(registry: ToolRegistry): void;
30
+ setModels(models: ModelOption[]): void;
31
+ private toolsToFunctions;
32
+ private toolToFunction;
33
+ private normalizeSchema;
34
+ private normalizePropertySchema;
35
+ private extractDescription;
36
+ private endpoint;
37
+ private buildHeaders;
38
+ private clearErrorMessages;
39
+ private appendErrorMessage;
40
+ private attachChatToError;
41
+ private ensureChat;
42
+ private persistChat;
43
+ private toOpenAIMessage;
44
+ private callModel;
45
+ private generateLlmTitle;
46
+ generateTitle(input: {
47
+ content: string;
48
+ contextKey: string;
49
+ userId?: string;
50
+ strategy?: 'local' | 'llm';
51
+ }): Promise<string>;
52
+ sendMessage(payload: SendMessagePayload): Promise<AgentChatResponse>;
53
+ streamMessage(payload: SendMessagePayload, onChunk: (chunk: StreamChunk) => void, options?: {
54
+ streamKey?: string;
55
+ }): Promise<AgentChatResponse>;
56
+ listChats(params?: {
57
+ contextKey?: string;
58
+ limit?: number;
59
+ userId?: string;
60
+ sortField?: string;
61
+ sortOrder?: 'asc' | 'desc';
62
+ }): Promise<AgentChatResponse[]>;
63
+ getChat(chatId: string): Promise<AgentChatResponse>;
64
+ deleteChat(chatId: string): Promise<void>;
65
+ listAgents(): Promise<AgentProcessSummary[]>;
66
+ controlAgent(): Promise<AgentProcessSummary>;
67
+ listArtifacts(): Promise<AgentArtifact[]>;
68
+ cancelStream(streamKey?: string): void;
69
+ listModels(): Promise<ModelOption[]>;
70
+ }
71
+ //# sourceMappingURL=DirectTransport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DirectTransport.d.ts","sourceRoot":"","sources":["../../../src/runtime/transports/DirectTransport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { AgentChatResponse, AgentProcessSummary, AgentArtifact, SendMessagePayload, StreamChunk } from '../types';
2
+ import { ProxyTransportConfig } from '../../config/types';
3
+ import { ModelOption } from '@multiplayer-app/ai-agent-types';
4
+ import { AgentTransport } from './AgentTransport';
5
+
6
+ export declare class ProxyTransport implements AgentTransport {
7
+ private readonly config;
8
+ private streamControllers;
9
+ private socketId?;
10
+ constructor(config: ProxyTransportConfig);
11
+ /**
12
+ * Set the Socket.IO socket ID to exclude from Socket.IO updates
13
+ */
14
+ setSocketId(socketId: string | undefined): void;
15
+ private withHeaders;
16
+ private request;
17
+ sendMessage(payload: SendMessagePayload): Promise<AgentChatResponse>;
18
+ streamMessage(payload: SendMessagePayload, onChunk: (chunk: StreamChunk) => void, options?: {
19
+ streamKey?: string;
20
+ }): Promise<AgentChatResponse | void>;
21
+ cancelStream(streamKey?: string): void;
22
+ cancelHttpStream(streamKey?: string): void;
23
+ listChats(params?: {
24
+ contextKey?: string;
25
+ limit?: number;
26
+ userId?: string;
27
+ sortField?: string;
28
+ sortOrder?: 'asc' | 'desc';
29
+ }): Promise<AgentChatResponse[]>;
30
+ getChat(chatId: string): Promise<AgentChatResponse>;
31
+ deleteChat(chatId: string): Promise<void>;
32
+ listAgents(): Promise<AgentProcessSummary[]>;
33
+ controlAgent(options: {
34
+ id: string;
35
+ action: 'stop' | 'resume' | 'retry';
36
+ }): Promise<AgentProcessSummary>;
37
+ listArtifacts(chatId: string): Promise<AgentArtifact[]>;
38
+ generateTitle(input: {
39
+ content: string;
40
+ contextKey: string;
41
+ userId?: string;
42
+ strategy?: 'local' | 'llm';
43
+ }): Promise<string>;
44
+ listModels(): Promise<ModelOption[]>;
45
+ }
46
+ //# sourceMappingURL=ProxyTransport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProxyTransport.d.ts","sourceRoot":"","sources":["../../../src/runtime/transports/ProxyTransport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EAClB,WAAW,EACZ,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAKvD,qBAAa,cAAe,YAAW,cAAc;IAIvC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,iBAAiB,CAAsC;IAC/D,OAAO,CAAC,QAAQ,CAAC,CAAS;gBAEG,MAAM,EAAE,oBAAoB;IAEzD;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAI/C,OAAO,CAAC,WAAW;YAsBL,OAAO;IA6Bf,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAYpE,aAAa,CACjB,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,EACrC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/B,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAqFpC,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM;IAY/B,gBAAgB,CAAC,SAAS,CAAC,EAAE,MAAM;IAqB7B,SAAS,CAAC,MAAM,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAWhK,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAInD,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC,UAAU,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAI5C,YAAY,CAAC,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAOxG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAIjD,aAAa,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3H,UAAU,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;CAI3C"}
@@ -0,0 +1,2 @@
1
+ export * from '@multiplayer-app/ai-agent-types';
2
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { AgentArtifact, AgentAttachment, AgentChatResponse, AgentMessage, AgentToolCall, StreamChunk } from '@multiplayer-app/ai-agent-types';
2
+
3
+ export interface QueuedComposerMessage {
4
+ id: string;
5
+ content: string;
6
+ attachments?: AgentAttachment[];
7
+ createdAt: string;
8
+ }
9
+ export declare enum AgentStatus {
10
+ Idle = "idle",
11
+ Sending = "sending",
12
+ Streaming = "streaming"
13
+ }
14
+ export interface AgentStoreState {
15
+ contextKey: string;
16
+ activeChatId?: string;
17
+ draftChatKey: string;
18
+ chats: Record<string, AgentChatResponse>;
19
+ reasoningByChat: Record<string, string[]>;
20
+ artifactsByChat: Record<string, AgentArtifact[]>;
21
+ pendingAssistantByChat: Record<string, AgentMessage | undefined>;
22
+ messageQueueByChat: Record<string, QueuedComposerMessage[]>;
23
+ isChatHistoryOpen: boolean;
24
+ composer: {
25
+ model?: string;
26
+ temperature: number;
27
+ };
28
+ statusByChat: Record<string, AgentStatus>;
29
+ }
30
+ export interface AgentStoreActions {
31
+ setContextKey: (contextKey: string) => void;
32
+ setActiveChat: (chatId?: string) => void;
33
+ upsertChat: (chat: AgentChatResponse) => void;
34
+ hydrateChats: (chats: AgentChatResponse[]) => void;
35
+ removeChat: (chatId: string) => void;
36
+ pushReasoning: (chatId: string, fragment: string) => void;
37
+ consumeStreamChunk: (chatId: string, chunk: StreamChunk) => void;
38
+ setArtifacts: (chatId: string, artifacts: AgentArtifact[]) => void;
39
+ setComposerOptions: (options: Partial<AgentStoreState['composer']>) => void;
40
+ setChatStatus: (chatKey: string, status: AgentStatus) => void;
41
+ setPendingAssistant: (chatKey: string, message?: AgentMessage) => void;
42
+ /**
43
+ * Persist the current pending assistant message into the chat history (if it has content),
44
+ * then clear the pending slot. Used when a stream is cancelled to keep partial output.
45
+ */
46
+ commitPendingAssistant: (chatId: string) => void;
47
+ appendSystemMessage: (chatId: string, content: string) => void;
48
+ upsertToolCall: (chatId: string, call: AgentToolCall) => void;
49
+ enqueueQueuedMessage: (chatKey: string, content: string, attachments?: AgentAttachment[]) => void;
50
+ removeQueuedMessage: (chatKey: string, id: string) => void;
51
+ /**
52
+ * Move all transient per-chat state from one chat key to another (draft -> real chat id).
53
+ * This is intentionally atomic to avoid UI tearing during key switches.
54
+ */
55
+ moveChatKeyState: (fromChatKey: string, toChatKey: string) => void;
56
+ setChatHistoryOpen: (isOpen: boolean) => void;
57
+ toggleChatHistory: () => void;
58
+ }
59
+ export type AgentStore = AgentStoreState & AgentStoreActions;
60
+ export declare const createAgentStore: (initialContextKey: string) => import('zustand').UseBoundStore<import('zustand').StoreApi<AgentStore>>;
61
+ //# sourceMappingURL=useAgentStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAgentStore.d.ts","sourceRoot":"","sources":["../../src/state/useAgentStore.ts"],"names":[],"mappings":"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"}