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,259 @@
1
+ /**
2
+ * Zoe SDK — Shared TypeScript types
3
+ *
4
+ * This file is the single source of truth for all SDK interfaces.
5
+ * Every SDK module imports from here.
6
+ */
7
+ import type { ZoeError as ZoeErrorType } from "./errors.js";
8
+ import type { Middleware } from "./middleware.js";
9
+ export type ProviderType = "openai" | "anthropic" | "glm" | "openai-compatible";
10
+ export interface MultiProviderConfig {
11
+ openai?: {
12
+ apiKey: string;
13
+ model?: string;
14
+ };
15
+ anthropic?: {
16
+ apiKey: string;
17
+ model?: string;
18
+ };
19
+ glm?: {
20
+ apiKey: string;
21
+ model?: string;
22
+ };
23
+ "openai-compatible"?: {
24
+ apiKey: string;
25
+ baseUrl: string;
26
+ model?: string;
27
+ };
28
+ default: ProviderType;
29
+ }
30
+ export type ToolRiskCategory = "safe" | "edit" | "communications" | "destructive";
31
+ export type PermissionLevel = "strict" | "moderate" | "permissive";
32
+ export interface Message {
33
+ id: string;
34
+ role: "system" | "user" | "assistant" | "tool";
35
+ content: string;
36
+ toolCalls?: ToolCall[];
37
+ toolCallId?: string;
38
+ timestamp: number;
39
+ }
40
+ export interface ToolCall {
41
+ id: string;
42
+ name: string;
43
+ arguments: Record<string, unknown>;
44
+ result?: string;
45
+ }
46
+ export interface StepResult {
47
+ type: "text" | "tool_call" | "text_delta" | "tool_progress";
48
+ content?: string;
49
+ toolCall?: {
50
+ id: string;
51
+ name: string;
52
+ args: Record<string, unknown>;
53
+ result: string;
54
+ duration: number;
55
+ };
56
+ /** For tool_progress: identifies which in-flight tool call the chunk belongs to. */
57
+ toolCallId?: string;
58
+ /** For tool_progress: the tool name + args (so the UI can render the block). */
59
+ name?: string;
60
+ args?: Record<string, unknown>;
61
+ /** Tool-specific structured payload (e.g. write_file's FileWriteMetadata) for
62
+ * adapters to render. Populated only on `tool_call` steps whose handler
63
+ * returned a ToolResult with metadata. NEVER enters message history. */
64
+ metadata?: Record<string, unknown>;
65
+ timestamp: number;
66
+ }
67
+ export interface Usage {
68
+ promptTokens: number;
69
+ completionTokens: number;
70
+ totalTokens: number;
71
+ cost: number;
72
+ }
73
+ export interface CumulativeUsage {
74
+ totalPromptTokens: number;
75
+ totalCompletionTokens: number;
76
+ totalCost: number;
77
+ requestCount: number;
78
+ }
79
+ export interface UserToolDefinition {
80
+ name?: string;
81
+ description: string;
82
+ parameters: unknown;
83
+ execute: (args: unknown, context: ToolContext) => Promise<string | ToolResult>;
84
+ }
85
+ export interface ToolContext {
86
+ onUpdate?: (progress: {
87
+ percentage?: number;
88
+ message?: string;
89
+ }) => void;
90
+ signal?: AbortSignal;
91
+ config?: Record<string, unknown>;
92
+ }
93
+ export interface ToolResult {
94
+ output: string;
95
+ success: boolean;
96
+ metadata?: Record<string, unknown>;
97
+ }
98
+ export interface ApproveToolCall {
99
+ name: string;
100
+ args: Record<string, unknown>;
101
+ }
102
+ /**
103
+ * Adapter-provided callback invoked before every tool execution.
104
+ * Return `true` to approve, `false` to deny (the tool is skipped
105
+ * and "User denied tool execution" is returned as the tool output).
106
+ *
107
+ * Each adapter implements its own UX:
108
+ * - CLI: inquirer prompt (with ESC interrupt suspended)
109
+ * - SDK: user-supplied callback or auto-approve
110
+ * - Server: WebSocket round-trip to client
111
+ */
112
+ export type ApproveToolFn = (call: ApproveToolCall) => Promise<boolean>;
113
+ export interface Hooks {
114
+ beforeToolCall?: (call: {
115
+ name: string;
116
+ args: Record<string, unknown>;
117
+ }) => void | Promise<void>;
118
+ afterToolCall?: (result: {
119
+ name: string;
120
+ output: string;
121
+ duration: number;
122
+ }) => void | Promise<void>;
123
+ onStep?: (step: StepResult) => void | Promise<void>;
124
+ onError?: (error: ZoeErrorType) => void | Promise<void>;
125
+ onFinish?: (result: GenerateTextResult) => void | Promise<void>;
126
+ }
127
+ export interface GenerateTextOptions {
128
+ model?: string;
129
+ provider?: ProviderType;
130
+ systemPrompt?: string;
131
+ tools?: string[] | UserToolDefinition[];
132
+ skills?: string[];
133
+ maxSteps?: number;
134
+ temperature?: number;
135
+ maxTokens?: number;
136
+ output?: unknown;
137
+ hooks?: Hooks;
138
+ signal?: AbortSignal;
139
+ config?: Record<string, unknown>;
140
+ metadata?: Record<string, unknown>;
141
+ middleware?: Middleware[];
142
+ approveTool?: ApproveToolFn;
143
+ permissionLevel?: PermissionLevel;
144
+ }
145
+ export interface GenerateTextResult {
146
+ text: string;
147
+ data?: unknown;
148
+ error?: {
149
+ message: string;
150
+ issues: unknown;
151
+ };
152
+ steps: StepResult[];
153
+ toolCalls: ToolCall[];
154
+ usage: Usage;
155
+ finishReason: "stop" | "length" | "max_steps" | "error";
156
+ messages: Message[];
157
+ }
158
+ export interface StreamTextOptions extends GenerateTextOptions {
159
+ onText?: (delta: string) => void;
160
+ onToolCall?: (tool: {
161
+ name: string;
162
+ args: Record<string, unknown>;
163
+ callId: string;
164
+ }) => void;
165
+ onToolResult?: (result: {
166
+ callId: string;
167
+ output: string;
168
+ success: boolean;
169
+ }) => void;
170
+ onStep?: (step: StepResult) => void;
171
+ onError?: (error: ZoeErrorType) => void;
172
+ }
173
+ export interface StreamTextResult {
174
+ textStream: AsyncIterable<string>;
175
+ steps: AsyncIterable<StepResult>;
176
+ fullText: Promise<string>;
177
+ usage: Promise<Usage>;
178
+ finishReason: Promise<string>;
179
+ abort: () => void;
180
+ toResponse: () => Response;
181
+ toSSEStream: () => ReadableStream;
182
+ }
183
+ export interface AgentCreateOptions {
184
+ model?: string;
185
+ provider?: ProviderType;
186
+ systemPrompt?: string;
187
+ tools?: string[] | UserToolDefinition[];
188
+ skills?: string[];
189
+ maxSteps?: number;
190
+ permissionLevel?: PermissionLevel;
191
+ persist?: string | PersistenceBackend | PersistenceConfig | SessionStore;
192
+ hooks?: Hooks;
193
+ config?: Record<string, unknown>;
194
+ metadata?: Record<string, unknown>;
195
+ middleware?: Middleware[];
196
+ approveTool?: ApproveToolFn;
197
+ }
198
+ export interface SdkAgent {
199
+ chat(message: string): Promise<AgentResponse>;
200
+ chatStream(message: string, options?: StreamTextOptions): Promise<StreamTextResult>;
201
+ switchProvider(provider: ProviderType, model?: string): Promise<void>;
202
+ setSystemPrompt(prompt: string): void;
203
+ setTools(tools: string[]): void;
204
+ abort(): void;
205
+ clear(): void;
206
+ getHistory(): Message[];
207
+ getUsage(): CumulativeUsage;
208
+ }
209
+ export interface AgentResponse {
210
+ text: string;
211
+ toolCalls: ToolCall[];
212
+ usage: Usage;
213
+ }
214
+ /**
215
+ * Composable persistence backend. Implementations handle raw storage
216
+ * (file system, Redis, SQLite, etc.). Server-specific metadata (TTL,
217
+ * apiKeyHash) flows through the `metadata` field on `SessionData`.
218
+ */
219
+ export interface PersistenceBackend {
220
+ /** Brand discriminator to distinguish from SessionStore */
221
+ __persistenceBackend: true;
222
+ save(id: string, data: SessionData): Promise<void>;
223
+ load(id: string): Promise<SessionData | null>;
224
+ delete(id: string): Promise<void>;
225
+ list(): Promise<string[]>;
226
+ }
227
+ /**
228
+ * Configuration object for creating a persistence backend via the factory.
229
+ * `type` selects the backend; remaining keys are backend-specific options.
230
+ */
231
+ export interface PersistenceConfig {
232
+ type: string;
233
+ [key: string]: unknown;
234
+ }
235
+ /**
236
+ * @deprecated Use `PersistenceBackend` instead. Kept for backward compatibility.
237
+ */
238
+ export interface SessionStore {
239
+ save(sessionId: string, messages: Message[]): Promise<void>;
240
+ load(sessionId: string): Promise<Message[] | null>;
241
+ delete(sessionId: string): Promise<void>;
242
+ list(): Promise<string[]>;
243
+ }
244
+ export interface SessionData {
245
+ id: string;
246
+ messages: Message[];
247
+ createdAt: number;
248
+ updatedAt: number;
249
+ provider?: ProviderType;
250
+ model?: string;
251
+ /** Arbitrary metadata for backends or consumers (e.g., TTL, apiKeyHash). */
252
+ metadata?: Record<string, unknown>;
253
+ }
254
+ export interface SkillMetadata {
255
+ name: string;
256
+ description: string;
257
+ tags: string[];
258
+ }
259
+ export { ZoeError, ProviderError, ToolError, MaxStepsError, AbortedError } from "./errors.js";
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Zoe SDK — Shared TypeScript types
3
+ *
4
+ * This file is the single source of truth for all SDK interfaces.
5
+ * Every SDK module imports from here.
6
+ */
7
+ // ── Errors ────────────────────────────────────────────────────────────
8
+ // Error classes live in ./errors.ts. We re-export them here so that
9
+ // existing consumers that import { ZoeError } from "./types.js"
10
+ // continue to compile without changes.
11
+ export { ZoeError, ProviderError, ToolError, MaxStepsError, AbortedError } from "./errors.js";
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Zoe Gateway — MCPGateway engine
3
+ *
4
+ * Core engine that manages MCP and REST targets, routes requests,
5
+ * and exposes injectable tools for the agent loop.
6
+ */
7
+ import type { ToolModule } from '../tools/interface.js';
8
+ import { GatewaySettingsAdapter } from './settings-adapter.js';
9
+ import type { AuditRecord, GatewayConfig, GatewayHooks, Target } from './types.js';
10
+ export declare class MCPGateway {
11
+ private targets;
12
+ private mcpClients;
13
+ private auditLogs;
14
+ private routes;
15
+ private adminTargets;
16
+ private injectableToolsCache;
17
+ private invalidateToolsCache;
18
+ private settings;
19
+ private config;
20
+ private hooks;
21
+ constructor(settings: GatewaySettingsAdapter, config: GatewayConfig, hooks?: GatewayHooks);
22
+ initialize(): Promise<void>;
23
+ shutdown(): Promise<void>;
24
+ private audit;
25
+ getAuditLogs(targetFilter?: string, limit?: number): AuditRecord[];
26
+ getUsageSummary(): Record<string, {
27
+ calls: number;
28
+ errors: number;
29
+ }>;
30
+ registerTarget(name: string, target: Target, isAdmin?: boolean): Promise<void>;
31
+ unregisterTarget(name: string): Promise<boolean>;
32
+ toggleTarget(name: string, enabled: boolean): Promise<boolean>;
33
+ getTargets(): Record<string, Target>;
34
+ addRoute(pattern: string, target: string, priority: number): Promise<void>;
35
+ removeRoute(pattern: string, target: string): Promise<void>;
36
+ routeRequest(request: string): string;
37
+ private connectMcpClient;
38
+ callMcpTool(agent: string, targetName: string, toolName: string, args: Record<string, unknown>): Promise<any>;
39
+ callRest(agent: string, targetName: string, reqPath: string, method: string, query?: Record<string, string>, body?: unknown): Promise<any>;
40
+ readResource(agent: string, targetName: string, uri: string): Promise<any>;
41
+ getPrompt(agent: string, targetName: string, name: string, args?: Record<string, string>): Promise<any>;
42
+ getRoutes(): Array<{
43
+ pattern: string;
44
+ target: string;
45
+ priority: number;
46
+ }>;
47
+ listCredentialKeys(): string[];
48
+ setCredential(key: string, value: string): Promise<void>;
49
+ deleteCredential(key: string): Promise<void>;
50
+ getInjectableTools(): ToolModule[];
51
+ private buildInjectableTools;
52
+ }