zoe-agent 0.3.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 (267) hide show
  1. package/CHANGELOG.md +154 -0
  2. package/LICENSE +96 -0
  3. package/README.md +568 -0
  4. package/dist/adapters/cli/agent.d.ts +59 -0
  5. package/dist/adapters/cli/agent.js +232 -0
  6. package/dist/adapters/cli/bootstrap.d.ts +25 -0
  7. package/dist/adapters/cli/bootstrap.js +204 -0
  8. package/dist/adapters/cli/commands/build-registry.d.ts +14 -0
  9. package/dist/adapters/cli/commands/build-registry.js +88 -0
  10. package/dist/adapters/cli/commands/clear.d.ts +7 -0
  11. package/dist/adapters/cli/commands/clear.js +10 -0
  12. package/dist/adapters/cli/commands/compact.d.ts +13 -0
  13. package/dist/adapters/cli/commands/compact.js +96 -0
  14. package/dist/adapters/cli/commands/exit.d.ts +7 -0
  15. package/dist/adapters/cli/commands/exit.js +9 -0
  16. package/dist/adapters/cli/commands/gateway.d.ts +7 -0
  17. package/dist/adapters/cli/commands/gateway.js +152 -0
  18. package/dist/adapters/cli/commands/help.d.ts +9 -0
  19. package/dist/adapters/cli/commands/help.js +12 -0
  20. package/dist/adapters/cli/commands/models.d.ts +10 -0
  21. package/dist/adapters/cli/commands/models.js +32 -0
  22. package/dist/adapters/cli/commands/registry.d.ts +70 -0
  23. package/dist/adapters/cli/commands/registry.js +111 -0
  24. package/dist/adapters/cli/commands/settings-utils.d.ts +38 -0
  25. package/dist/adapters/cli/commands/settings-utils.js +182 -0
  26. package/dist/adapters/cli/commands/settings.d.ts +9 -0
  27. package/dist/adapters/cli/commands/settings.js +395 -0
  28. package/dist/adapters/cli/commands/skills.d.ts +7 -0
  29. package/dist/adapters/cli/commands/skills.js +21 -0
  30. package/dist/adapters/cli/config-loader.d.ts +27 -0
  31. package/dist/adapters/cli/config-loader.js +48 -0
  32. package/dist/adapters/cli/docker-utils.d.ts +37 -0
  33. package/dist/adapters/cli/docker-utils.js +90 -0
  34. package/dist/adapters/cli/index.d.ts +2 -0
  35. package/dist/adapters/cli/index.js +88 -0
  36. package/dist/adapters/cli/repl.d.ts +22 -0
  37. package/dist/adapters/cli/repl.js +256 -0
  38. package/dist/adapters/cli/setup.d.ts +19 -0
  39. package/dist/adapters/cli/setup.js +613 -0
  40. package/dist/adapters/cli/system-prompts.d.ts +56 -0
  41. package/dist/adapters/cli/system-prompts.js +131 -0
  42. package/dist/adapters/cli/tui/app.d.ts +58 -0
  43. package/dist/adapters/cli/tui/app.js +314 -0
  44. package/dist/adapters/cli/tui/components/assistant-message.d.ts +5 -0
  45. package/dist/adapters/cli/tui/components/assistant-message.js +9 -0
  46. package/dist/adapters/cli/tui/components/autocomplete.d.ts +19 -0
  47. package/dist/adapters/cli/tui/components/autocomplete.js +75 -0
  48. package/dist/adapters/cli/tui/components/command-palette.d.ts +15 -0
  49. package/dist/adapters/cli/tui/components/command-palette.js +50 -0
  50. package/dist/adapters/cli/tui/components/diff-viewer.d.ts +5 -0
  51. package/dist/adapters/cli/tui/components/diff-viewer.js +109 -0
  52. package/dist/adapters/cli/tui/components/error-message.d.ts +5 -0
  53. package/dist/adapters/cli/tui/components/error-message.js +8 -0
  54. package/dist/adapters/cli/tui/components/footer.d.ts +20 -0
  55. package/dist/adapters/cli/tui/components/footer.js +19 -0
  56. package/dist/adapters/cli/tui/components/goal-status.d.ts +12 -0
  57. package/dist/adapters/cli/tui/components/goal-status.js +22 -0
  58. package/dist/adapters/cli/tui/components/info-message.d.ts +5 -0
  59. package/dist/adapters/cli/tui/components/info-message.js +8 -0
  60. package/dist/adapters/cli/tui/components/logo-banner.d.ts +7 -0
  61. package/dist/adapters/cli/tui/components/logo-banner.js +33 -0
  62. package/dist/adapters/cli/tui/components/markdown.d.ts +9 -0
  63. package/dist/adapters/cli/tui/components/markdown.js +92 -0
  64. package/dist/adapters/cli/tui/components/message-area.d.ts +19 -0
  65. package/dist/adapters/cli/tui/components/message-area.js +55 -0
  66. package/dist/adapters/cli/tui/components/permission-prompt.d.ts +13 -0
  67. package/dist/adapters/cli/tui/components/permission-prompt.js +32 -0
  68. package/dist/adapters/cli/tui/components/prompt-area.d.ts +22 -0
  69. package/dist/adapters/cli/tui/components/prompt-area.js +68 -0
  70. package/dist/adapters/cli/tui/components/text-input.d.ts +27 -0
  71. package/dist/adapters/cli/tui/components/text-input.js +142 -0
  72. package/dist/adapters/cli/tui/components/tool-call-block.d.ts +11 -0
  73. package/dist/adapters/cli/tui/components/tool-call-block.js +68 -0
  74. package/dist/adapters/cli/tui/components/user-message.d.ts +5 -0
  75. package/dist/adapters/cli/tui/components/user-message.js +8 -0
  76. package/dist/adapters/cli/tui/diff/file-write-meta.d.ts +11 -0
  77. package/dist/adapters/cli/tui/diff/file-write-meta.js +11 -0
  78. package/dist/adapters/cli/tui/diff/line-diff.d.ts +17 -0
  79. package/dist/adapters/cli/tui/diff/line-diff.js +44 -0
  80. package/dist/adapters/cli/tui/feed-serializer.d.ts +29 -0
  81. package/dist/adapters/cli/tui/feed-serializer.js +70 -0
  82. package/dist/adapters/cli/tui/file-index.d.ts +8 -0
  83. package/dist/adapters/cli/tui/file-index.js +41 -0
  84. package/dist/adapters/cli/tui/hooks/use-agent.d.ts +54 -0
  85. package/dist/adapters/cli/tui/hooks/use-agent.js +177 -0
  86. package/dist/adapters/cli/tui/hooks/use-feed.d.ts +16 -0
  87. package/dist/adapters/cli/tui/hooks/use-feed.js +25 -0
  88. package/dist/adapters/cli/tui/hooks/use-file-watcher.d.ts +10 -0
  89. package/dist/adapters/cli/tui/hooks/use-file-watcher.js +43 -0
  90. package/dist/adapters/cli/tui/hooks/use-keybindings.d.ts +16 -0
  91. package/dist/adapters/cli/tui/hooks/use-keybindings.js +25 -0
  92. package/dist/adapters/cli/tui/hooks/use-theme.d.ts +8 -0
  93. package/dist/adapters/cli/tui/hooks/use-theme.js +12 -0
  94. package/dist/adapters/cli/tui/index.d.ts +19 -0
  95. package/dist/adapters/cli/tui/index.js +206 -0
  96. package/dist/adapters/cli/tui/ink-reset.d.ts +29 -0
  97. package/dist/adapters/cli/tui/ink-reset.js +57 -0
  98. package/dist/adapters/cli/tui/layout.d.ts +15 -0
  99. package/dist/adapters/cli/tui/layout.js +15 -0
  100. package/dist/adapters/cli/tui/logo/gradient.d.ts +11 -0
  101. package/dist/adapters/cli/tui/logo/gradient.js +31 -0
  102. package/dist/adapters/cli/tui/overlays/help-dialog.d.ts +4 -0
  103. package/dist/adapters/cli/tui/overlays/help-dialog.js +26 -0
  104. package/dist/adapters/cli/tui/overlays/model-selector.d.ts +14 -0
  105. package/dist/adapters/cli/tui/overlays/model-selector.js +43 -0
  106. package/dist/adapters/cli/tui/overlays/session-selector.d.ts +35 -0
  107. package/dist/adapters/cli/tui/overlays/session-selector.js +162 -0
  108. package/dist/adapters/cli/tui/overlays/settings-overlay.d.ts +24 -0
  109. package/dist/adapters/cli/tui/overlays/settings-overlay.js +126 -0
  110. package/dist/adapters/cli/tui/session-export.d.ts +21 -0
  111. package/dist/adapters/cli/tui/session-export.js +63 -0
  112. package/dist/adapters/cli/tui/theme.d.ts +23 -0
  113. package/dist/adapters/cli/tui/theme.js +22 -0
  114. package/dist/adapters/cli/tui/types.d.ts +52 -0
  115. package/dist/adapters/cli/tui/types.js +12 -0
  116. package/dist/adapters/sdk/agent.d.ts +20 -0
  117. package/dist/adapters/sdk/agent.js +356 -0
  118. package/dist/adapters/sdk/http.d.ts +43 -0
  119. package/dist/adapters/sdk/http.js +61 -0
  120. package/dist/adapters/sdk/index.d.ts +58 -0
  121. package/dist/adapters/sdk/index.js +209 -0
  122. package/dist/adapters/sdk/settings.d.ts +18 -0
  123. package/dist/adapters/sdk/settings.js +57 -0
  124. package/dist/adapters/sdk/tools.d.ts +7 -0
  125. package/dist/adapters/sdk/tools.js +13 -0
  126. package/dist/adapters/server/auth.d.ts +53 -0
  127. package/dist/adapters/server/auth.js +168 -0
  128. package/dist/adapters/server/index.d.ts +40 -0
  129. package/dist/adapters/server/index.js +255 -0
  130. package/dist/adapters/server/rest-gateway.d.ts +13 -0
  131. package/dist/adapters/server/rest-gateway.js +218 -0
  132. package/dist/adapters/server/rest.d.ts +37 -0
  133. package/dist/adapters/server/rest.js +341 -0
  134. package/dist/adapters/server/server-core.d.ts +55 -0
  135. package/dist/adapters/server/server-core.js +121 -0
  136. package/dist/adapters/server/session-store.d.ts +81 -0
  137. package/dist/adapters/server/session-store.js +272 -0
  138. package/dist/adapters/server/settings-handlers.d.ts +24 -0
  139. package/dist/adapters/server/settings-handlers.js +360 -0
  140. package/dist/adapters/server/standalone.d.ts +19 -0
  141. package/dist/adapters/server/standalone.js +113 -0
  142. package/dist/adapters/server/websocket.d.ts +26 -0
  143. package/dist/adapters/server/websocket.js +68 -0
  144. package/dist/adapters/server/ws-handlers.d.ts +32 -0
  145. package/dist/adapters/server/ws-handlers.js +523 -0
  146. package/dist/adapters/server/ws-types.d.ts +304 -0
  147. package/dist/adapters/server/ws-types.js +7 -0
  148. package/dist/core/agent-loop.d.ts +68 -0
  149. package/dist/core/agent-loop.js +423 -0
  150. package/dist/core/config.d.ts +115 -0
  151. package/dist/core/config.js +189 -0
  152. package/dist/core/errors.d.ts +58 -0
  153. package/dist/core/errors.js +88 -0
  154. package/dist/core/hooks.d.ts +35 -0
  155. package/dist/core/hooks.js +49 -0
  156. package/dist/core/index.d.ts +23 -0
  157. package/dist/core/index.js +29 -0
  158. package/dist/core/message-convert.d.ts +41 -0
  159. package/dist/core/message-convert.js +94 -0
  160. package/dist/core/middleware/auth.d.ts +24 -0
  161. package/dist/core/middleware/auth.js +28 -0
  162. package/dist/core/middleware/logging.d.ts +23 -0
  163. package/dist/core/middleware/logging.js +28 -0
  164. package/dist/core/middleware/rate-limit.d.ts +27 -0
  165. package/dist/core/middleware/rate-limit.js +38 -0
  166. package/dist/core/middleware/semantic-tools.d.ts +10 -0
  167. package/dist/core/middleware/semantic-tools.js +43 -0
  168. package/dist/core/middleware.d.ts +48 -0
  169. package/dist/core/middleware.js +38 -0
  170. package/dist/core/permission.d.ts +25 -0
  171. package/dist/core/permission.js +50 -0
  172. package/dist/core/provider-config.d.ts +129 -0
  173. package/dist/core/provider-config.js +273 -0
  174. package/dist/core/provider-env.d.ts +39 -0
  175. package/dist/core/provider-env.js +142 -0
  176. package/dist/core/provider-resolver.d.ts +12 -0
  177. package/dist/core/provider-resolver.js +12 -0
  178. package/dist/core/session-store.d.ts +75 -0
  179. package/dist/core/session-store.js +245 -0
  180. package/dist/core/settings-manager.d.ts +57 -0
  181. package/dist/core/settings-manager.js +359 -0
  182. package/dist/core/settings-schema.d.ts +38 -0
  183. package/dist/core/settings-schema.js +171 -0
  184. package/dist/core/skill-catalog.d.ts +6 -0
  185. package/dist/core/skill-catalog.js +17 -0
  186. package/dist/core/skill-invoker.d.ts +127 -0
  187. package/dist/core/skill-invoker.js +182 -0
  188. package/dist/core/stream-accumulator.d.ts +21 -0
  189. package/dist/core/stream-accumulator.js +51 -0
  190. package/dist/core/stream-manager.d.ts +58 -0
  191. package/dist/core/stream-manager.js +212 -0
  192. package/dist/core/tool-executor.d.ts +84 -0
  193. package/dist/core/tool-executor.js +256 -0
  194. package/dist/core/types.d.ts +259 -0
  195. package/dist/core/types.js +11 -0
  196. package/dist/gateway/gateway.d.ts +52 -0
  197. package/dist/gateway/gateway.js +537 -0
  198. package/dist/gateway/index.d.ts +21 -0
  199. package/dist/gateway/index.js +31 -0
  200. package/dist/gateway/openapi-importer.d.ts +15 -0
  201. package/dist/gateway/openapi-importer.js +66 -0
  202. package/dist/gateway/semantic-scorer.d.ts +7 -0
  203. package/dist/gateway/semantic-scorer.js +24 -0
  204. package/dist/gateway/settings-adapter.d.ts +49 -0
  205. package/dist/gateway/settings-adapter.js +137 -0
  206. package/dist/gateway/tool-factory.d.ts +9 -0
  207. package/dist/gateway/tool-factory.js +414 -0
  208. package/dist/gateway/types.d.ts +68 -0
  209. package/dist/gateway/types.js +7 -0
  210. package/dist/models-catalog.js +46 -0
  211. package/dist/providers/anthropic.d.ts +22 -0
  212. package/dist/providers/anthropic.js +148 -0
  213. package/dist/providers/factory.d.ts +10 -0
  214. package/dist/providers/factory.js +25 -0
  215. package/dist/providers/openai.d.ts +15 -0
  216. package/dist/providers/openai.js +71 -0
  217. package/dist/providers/types.d.ts +48 -0
  218. package/dist/providers/types.js +1 -0
  219. package/dist/skills/args.d.ts +37 -0
  220. package/dist/skills/args.js +99 -0
  221. package/dist/skills/index.d.ts +11 -0
  222. package/dist/skills/index.js +23 -0
  223. package/dist/skills/loader.d.ts +3 -0
  224. package/dist/skills/loader.js +59 -0
  225. package/dist/skills/parser.d.ts +7 -0
  226. package/dist/skills/parser.js +152 -0
  227. package/dist/skills/registry.d.ts +13 -0
  228. package/dist/skills/registry.js +74 -0
  229. package/dist/skills/resolver.d.ts +19 -0
  230. package/dist/skills/resolver.js +116 -0
  231. package/dist/skills/types.d.ts +74 -0
  232. package/dist/skills/types.js +50 -0
  233. package/dist/tools/browser.d.ts +2 -0
  234. package/dist/tools/browser.js +68 -0
  235. package/dist/tools/core.d.ts +20 -0
  236. package/dist/tools/core.js +244 -0
  237. package/dist/tools/email.d.ts +2 -0
  238. package/dist/tools/email.js +61 -0
  239. package/dist/tools/image.d.ts +2 -0
  240. package/dist/tools/image.js +257 -0
  241. package/dist/tools/index.d.ts +2 -0
  242. package/dist/tools/index.js +88 -0
  243. package/dist/tools/interface.d.ts +22 -0
  244. package/dist/tools/interface.js +1 -0
  245. package/dist/tools/notify.d.ts +2 -0
  246. package/dist/tools/notify.js +100 -0
  247. package/dist/tools/prompt-optimizer.d.ts +2 -0
  248. package/dist/tools/prompt-optimizer.js +65 -0
  249. package/dist/tools/screenshot.d.ts +2 -0
  250. package/dist/tools/screenshot.js +184 -0
  251. package/dist/tools/search.d.ts +2 -0
  252. package/dist/tools/search.js +78 -0
  253. package/dist/tools/todos.d.ts +10 -0
  254. package/dist/tools/todos.js +50 -0
  255. package/package.json +119 -0
  256. package/skills/docker-ops/SKILL.md +329 -0
  257. package/skills/k8s-deploy/SKILL.md +397 -0
  258. package/skills/log-analyzer/SKILL.md +331 -0
  259. package/skills/speckit-analyze/SKILL.md +260 -0
  260. package/skills/speckit-checklist/SKILL.md +374 -0
  261. package/skills/speckit-clarify/SKILL.md +286 -0
  262. package/skills/speckit-constitution/SKILL.md +157 -0
  263. package/skills/speckit-implement/SKILL.md +224 -0
  264. package/skills/speckit-plan/SKILL.md +171 -0
  265. package/skills/speckit-specify/SKILL.md +346 -0
  266. package/skills/speckit-tasks/SKILL.md +215 -0
  267. package/skills/speckit-taskstoissues/SKILL.md +107 -0
@@ -0,0 +1,304 @@
1
+ /**
2
+ * Zoe Server — WebSocket Type Definitions
3
+ *
4
+ * All WS library type shims, protocol message interfaces, and context types.
5
+ * Extracted from websocket.ts for single-responsibility.
6
+ */
7
+ import type { IncomingMessage } from "http";
8
+ import type { Duplex } from "stream";
9
+ import type { ProviderType, Message, Usage, PermissionLevel } from "../../core/types.js";
10
+ export interface WS {
11
+ WebSocket: new (address: string, protocols?: string | string[]) => WebSocket;
12
+ WebSocketServer: new (options: {
13
+ noServer?: boolean;
14
+ path?: string;
15
+ }) => WSServer;
16
+ }
17
+ export interface WSServer {
18
+ on(event: "connection", cb: (ws: WebSocket, req: IncomingMessage) => void): void;
19
+ on(event: "error", cb: (err: Error) => void): void;
20
+ on(event: "headers", cb: (headers: string[], req: IncomingMessage) => void): void;
21
+ emit(event: "connection", ws: WebSocket, req: IncomingMessage): void;
22
+ handleUpgrade(req: IncomingMessage, socket: Duplex, head: Buffer, cb: (ws: WebSocket) => void): void;
23
+ close(): void;
24
+ }
25
+ export interface WebSocket {
26
+ send(data: string): void;
27
+ close(code?: number, reason?: string): void;
28
+ on(event: "message", cb: (data: Buffer) => void): void;
29
+ on(event: "close", cb: (code: number, reason: Buffer) => void): void;
30
+ on(event: "error", cb: (err: Error) => void): void;
31
+ on(event: "pong", cb: () => void): void;
32
+ ping(data?: unknown): void;
33
+ readyState: number;
34
+ }
35
+ export interface ChatMessage {
36
+ type: "chat";
37
+ id: string;
38
+ message: string;
39
+ options?: {
40
+ model?: string;
41
+ provider?: ProviderType;
42
+ tools?: string[];
43
+ maxSteps?: number;
44
+ skills?: string[];
45
+ permissionLevel?: PermissionLevel;
46
+ };
47
+ sessionId?: string;
48
+ }
49
+ export interface ToolApprovalResponse {
50
+ type: "tool_approval_response";
51
+ callId: string;
52
+ name: string;
53
+ approved: boolean;
54
+ }
55
+ export interface AbortMessage {
56
+ type: "abort";
57
+ reason?: string;
58
+ }
59
+ export interface ResumeMessage {
60
+ type: "resume";
61
+ sessionId: string;
62
+ lastMessageId?: string;
63
+ }
64
+ export interface ReconnectMessage {
65
+ type: "reconnect";
66
+ sessionId: string;
67
+ lastSeenId?: string;
68
+ }
69
+ export interface SwitchProviderMessage {
70
+ type: "switch_provider";
71
+ provider: ProviderType;
72
+ model?: string;
73
+ }
74
+ export interface ListModelsMessage {
75
+ type: "list_models";
76
+ }
77
+ export interface ListSkillsMessage {
78
+ type: "list_skills";
79
+ }
80
+ export interface PingMessage {
81
+ type: "ping";
82
+ clientTime: string;
83
+ }
84
+ export interface GetSettingsMessage {
85
+ type: "get_settings";
86
+ id?: string;
87
+ category?: string;
88
+ }
89
+ export interface UpdateSettingsMessage {
90
+ type: "update_settings";
91
+ id?: string;
92
+ settings: Record<string, any>;
93
+ }
94
+ export interface ListProvidersMessage {
95
+ type: "list_providers";
96
+ id?: string;
97
+ }
98
+ export interface SetProviderMessage {
99
+ type: "set_provider";
100
+ id?: string;
101
+ provider: {
102
+ type: string;
103
+ apiKey?: string;
104
+ baseUrl?: string;
105
+ model?: string;
106
+ };
107
+ }
108
+ export interface RemoveProviderMessage {
109
+ type: "remove_provider";
110
+ id?: string;
111
+ providerType: string;
112
+ }
113
+ export type ClientMessage = ChatMessage | ToolApprovalResponse | AbortMessage | ResumeMessage | ReconnectMessage | SwitchProviderMessage | ListModelsMessage | ListSkillsMessage | PingMessage | GetSettingsMessage | UpdateSettingsMessage | ListProvidersMessage | SetProviderMessage | RemoveProviderMessage;
114
+ export interface AckMessage {
115
+ type: "ack";
116
+ clientMsgId: string;
117
+ serverMsgId: string;
118
+ timestamp: string;
119
+ }
120
+ export interface TextDeltaMessage {
121
+ type: "text";
122
+ delta: string;
123
+ serverMsgId: string;
124
+ }
125
+ export interface ToolCallMessage {
126
+ type: "tool_call";
127
+ callId: string;
128
+ name: string;
129
+ args: object;
130
+ }
131
+ export interface ToolApprovalRequestMessage {
132
+ type: "tool_approval_request";
133
+ callId: string;
134
+ name: string;
135
+ args: object;
136
+ }
137
+ export interface ToolProgressMessage {
138
+ type: "tool_progress";
139
+ callId: string;
140
+ percentage: number;
141
+ output?: string;
142
+ }
143
+ export interface ToolResultMessage {
144
+ type: "tool_result";
145
+ callId: string;
146
+ output: string;
147
+ success: boolean;
148
+ }
149
+ export interface ProgressMessage {
150
+ type: "progress";
151
+ step: number;
152
+ totalSteps: number;
153
+ percentage: number;
154
+ activity: string;
155
+ }
156
+ export interface UsageMessage {
157
+ type: "usage";
158
+ promptTokens: number;
159
+ completionTokens: number;
160
+ cost: number;
161
+ }
162
+ export interface DoneMessage {
163
+ type: "done";
164
+ serverMsgId: string;
165
+ usage: Usage;
166
+ finishReason: string;
167
+ }
168
+ export interface SessionCreatedMessage {
169
+ type: "session_created";
170
+ sessionId: string;
171
+ expiresAt: string;
172
+ }
173
+ export interface SessionResumedMessage {
174
+ type: "session_resumed";
175
+ sessionId: string;
176
+ messages: Message[];
177
+ }
178
+ export interface ReplayMessage {
179
+ type: "replay";
180
+ messages: object[];
181
+ currentStatus: string;
182
+ }
183
+ export interface ErrorMessage {
184
+ type: "error";
185
+ code: string;
186
+ retryable: boolean;
187
+ message: string;
188
+ provider?: string;
189
+ tool?: string;
190
+ }
191
+ export interface PongMessage {
192
+ type: "pong";
193
+ serverTime: string;
194
+ }
195
+ export interface ModelsListMessage {
196
+ type: "models_list";
197
+ models: Record<string, string[]>;
198
+ }
199
+ export interface SkillsListMessage {
200
+ type: "skills_list";
201
+ skills: {
202
+ name: string;
203
+ description: string;
204
+ tags: string[];
205
+ }[];
206
+ }
207
+ export interface SettingsMessage {
208
+ type: "settings";
209
+ id?: string;
210
+ settings: Record<string, any>;
211
+ error?: {
212
+ code: string;
213
+ message: string;
214
+ };
215
+ }
216
+ export interface SettingsUpdatedMessage {
217
+ type: "settings_updated";
218
+ id?: string;
219
+ applied?: Record<string, any>;
220
+ requiresRestart?: boolean;
221
+ restartAffected?: string[];
222
+ error?: {
223
+ code: string;
224
+ message: string;
225
+ details?: Array<{
226
+ field: string;
227
+ message: string;
228
+ }>;
229
+ };
230
+ }
231
+ export interface ProvidersListMessage {
232
+ type: "providers_list";
233
+ id?: string;
234
+ providers: Record<string, any>;
235
+ }
236
+ export interface SettingsChangedMessage {
237
+ type: "settings_changed";
238
+ changedCategories: string[];
239
+ changedFields: string[];
240
+ requiresRestart: boolean;
241
+ restartAffected: string[];
242
+ timestamp: string;
243
+ }
244
+ export type ServerMessage = AckMessage | TextDeltaMessage | ToolCallMessage | ToolApprovalRequestMessage | ToolProgressMessage | ToolResultMessage | ProgressMessage | UsageMessage | DoneMessage | SessionCreatedMessage | SessionResumedMessage | ReplayMessage | ErrorMessage | PongMessage | ModelsListMessage | SkillsListMessage | SettingsMessage | SettingsUpdatedMessage | ProvidersListMessage | SettingsChangedMessage;
245
+ export interface WebSocketHandlerContext {
246
+ sessionManager: import("./session-store.js").ServerSessionManager;
247
+ streamText: (options: {
248
+ message: string;
249
+ model?: string;
250
+ provider?: ProviderType;
251
+ tools?: string[];
252
+ maxSteps?: number;
253
+ skills?: string[];
254
+ sessionId?: string;
255
+ permissionLevel?: PermissionLevel;
256
+ approveTool?: import("../../core/types.js").ApproveToolFn;
257
+ onText: (delta: string) => void;
258
+ onToolCall: (info: {
259
+ name: string;
260
+ args: Record<string, unknown>;
261
+ callId: string;
262
+ }) => void;
263
+ onToolResult: (info: {
264
+ callId: string;
265
+ output: string;
266
+ success: boolean;
267
+ }) => void;
268
+ onStep: (step: {
269
+ type: string;
270
+ content?: string;
271
+ timestamp: number;
272
+ }) => void;
273
+ onError: (error: {
274
+ code: string;
275
+ message: string;
276
+ provider?: string;
277
+ tool?: string;
278
+ }) => void;
279
+ onDone: (result: {
280
+ text: string;
281
+ usage: Usage;
282
+ finishReason: string;
283
+ }) => void;
284
+ signal?: AbortSignal;
285
+ }) => void;
286
+ listModels: () => Record<ProviderType, string[]>;
287
+ listSkills: () => {
288
+ name: string;
289
+ description: string;
290
+ tags: string[];
291
+ }[];
292
+ maxPermissionLevel?: PermissionLevel;
293
+ settingsHandlerContext?: import("./settings-handlers.js").SettingsHandlerContext;
294
+ }
295
+ export interface ConnectionState {
296
+ sessionId: string | null;
297
+ currentAbortController: AbortController | null;
298
+ activeProvider: ProviderType | null;
299
+ activeModel: string | null;
300
+ permissionLevel?: PermissionLevel;
301
+ maxPermissionLevel?: PermissionLevel;
302
+ apiKeyHash: string;
303
+ apiKey?: import("./auth.js").ApiKeyEntry;
304
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Zoe Server — WebSocket Type Definitions
3
+ *
4
+ * All WS library type shims, protocol message interfaces, and context types.
5
+ * Extracted from websocket.ts for single-responsibility.
6
+ */
7
+ export {};
@@ -0,0 +1,68 @@
1
+ /** Zoe Core — THE Agent Loop (single implementation) */
2
+ import type { Message, StepResult, ToolCall, Usage, ApproveToolFn, PermissionLevel } from "./types.js";
3
+ import type { LLMProvider } from "../providers/types.js";
4
+ import type { ToolDefinition } from "../tools/interface.js";
5
+ import type { HookExecutor } from "./hooks.js";
6
+ import type { Middleware } from "./middleware.js";
7
+ export interface ProviderFactory {
8
+ resolve(skillName?: string): Promise<{
9
+ provider: LLMProvider;
10
+ model: string;
11
+ }>;
12
+ restore(): void;
13
+ }
14
+ export interface AgentLoopOptions {
15
+ provider: LLMProvider;
16
+ model: string;
17
+ messages: Message[];
18
+ toolDefs: ToolDefinition[];
19
+ systemPrompt?: string;
20
+ skillCatalog?: string;
21
+ maxSteps: number;
22
+ hooks: HookExecutor;
23
+ signal?: AbortSignal;
24
+ config?: Record<string, unknown>;
25
+ metadata?: Record<string, unknown>;
26
+ onStep?: (step: StepResult) => void;
27
+ /** Opt into token streaming (provider.chatStream). Off → always chat(). */
28
+ stream?: boolean;
29
+ providerFactory?: ProviderFactory;
30
+ middleware?: Middleware[];
31
+ approveTool?: ApproveToolFn;
32
+ permissionLevel?: PermissionLevel;
33
+ autoConfirm?: boolean;
34
+ }
35
+ export interface AgentLoopError {
36
+ message: string;
37
+ code: string;
38
+ retryable: boolean;
39
+ provider?: string;
40
+ tool?: string;
41
+ }
42
+ export interface AgentLoopResult {
43
+ messages: Message[];
44
+ steps: StepResult[];
45
+ toolCalls: ToolCall[];
46
+ usage: Usage;
47
+ finishReason: "stop" | "max_steps" | "error" | "aborted";
48
+ error?: AgentLoopError;
49
+ }
50
+ /**
51
+ * Run the Zoe agent loop - THE single implementation.
52
+ *
53
+ * This is the canonical agent loop that all other entry points (createAgent,
54
+ * generateText, streamText, CLI Agent) will delegate to. It handles:
55
+ *
56
+ * - Multi-step reasoning with tool execution
57
+ * - Provider resolution (including per-skill switching via providerFactory)
58
+ * - System prompt injection
59
+ * - Abort signal handling
60
+ * - Hook execution
61
+ * - Usage estimation
62
+ * - Structured error reporting
63
+ * - Middleware pipeline (when provided)
64
+ *
65
+ * @param options - Agent loop configuration
66
+ * @returns AgentLoopResult with messages, steps, tool calls, usage, and finish reason
67
+ */
68
+ export declare function runAgentLoop(options: AgentLoopOptions): Promise<AgentLoopResult>;