@kairos-computer/core 0.1.0 → 0.1.2

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/README.md ADDED
@@ -0,0 +1,312 @@
1
+ # kai
2
+
3
+ A streamText replacement built on the AI SDK primitives. Owns the tool loop, streams to Redis, handles stop signals and message queuing mid-generation.
4
+
5
+ Uses [Effect-TS](https://effect.website) for typed errors, dependency injection, and concurrent stream management.
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ bun add @kairos-computer/core
11
+ # Redis adapter (optional)
12
+ bun add @kairos-computer/redis
13
+ ```
14
+
15
+ ## Quick Start
16
+
17
+ ```typescript
18
+ import { Agent } from "@kairos-computer/core"
19
+ import { tool, zodSchema } from "ai"
20
+ import { anthropic } from "@ai-sdk/anthropic"
21
+ import { z } from "zod"
22
+
23
+ const agent = new Agent({
24
+ model: anthropic("claude-sonnet-4-20250514"),
25
+ system: "You are a helpful assistant.",
26
+ tools: {
27
+ weather: tool({
28
+ description: "Get the weather",
29
+ inputSchema: zodSchema(z.object({ city: z.string() })),
30
+ execute: async (input) => ({ temp: 72, city: input.city }),
31
+ }),
32
+ },
33
+ })
34
+
35
+ const result = await agent.runPromise("conversation-1", [
36
+ { id: "msg-1", role: "user", parts: [{ type: "text", text: "Weather in SF?" }] },
37
+ ])
38
+
39
+ console.log(result.finishReason) // "stop"
40
+ console.log(result.steps) // [{ toolCalls: [...] }, { text: "It's 72°F in SF" }]
41
+ ```
42
+
43
+ ## How It Works
44
+
45
+ kai calls `model.doStream()` directly in a loop. Each iteration:
46
+
47
+ 1. Convert `UIMessage[]` → `LanguageModelV3Prompt` (using AI SDK's own conversion)
48
+ 2. Stream one LLM call, publish chunks to the Streaming service
49
+ 3. On `tool-calls` → execute tools (parallel), append results, continue
50
+ 4. On `stop` → check message queue for new user messages, continue if any
51
+ 5. On `length` → call `onContextOverflow` hook or fail
52
+ 6. On abort → normalize partial results, break
53
+
54
+ No `maxSteps`. No `stopCondition`. The loop runs until the model says stop, the user sends a stop signal, or an error occurs.
55
+
56
+ ## Core Concepts
57
+
58
+ ### Messages: `UIMessage`
59
+
60
+ kai uses the AI SDK's `UIMessage` type for all messages. This is the same type the frontend uses — no conversion needed between backend and frontend.
61
+
62
+ ### Tools: `ToolSet`
63
+
64
+ Define tools with `tool()` from the `ai` package. kai passes them to `model.doStream()` using the AI SDK's own `prepareToolsAndToolChoice`.
65
+
66
+ ```typescript
67
+ import { tool, zodSchema } from "ai"
68
+ import { z } from "zod"
69
+
70
+ const tools = {
71
+ search: tool({
72
+ description: "Search the web",
73
+ inputSchema: zodSchema(z.object({ query: z.string() })),
74
+ execute: async (input) => fetchResults(input.query),
75
+ }),
76
+ }
77
+ ```
78
+
79
+ ### `executeTools`
80
+
81
+ Controls whether kai executes tool calls or returns them for the caller to handle.
82
+
83
+ ```typescript
84
+ // Default: true — auto-execute all tools
85
+ executeTools: true
86
+
87
+ // Handoff pattern: stop at tool calls, let another system execute them
88
+ executeTools: false
89
+
90
+ // Custom: you control execution
91
+ executeTools: (toolCalls, tools, abortSignal) =>
92
+ Effect.succeed(toolCalls.map(tc => ({
93
+ toolCallId: tc.toolCallId,
94
+ toolName: tc.toolName,
95
+ input: tc.input,
96
+ output: myExecute(tc),
97
+ isError: false,
98
+ durationMs: 0,
99
+ })))
100
+ ```
101
+
102
+ ### `prepareStep`
103
+
104
+ Called before each LLM call. Override the model, tools, or system prompt per step.
105
+
106
+ ```typescript
107
+ prepareStep: (ctx) => {
108
+ if (ctx.stepNumber > 5) {
109
+ return { tools: { ...baseTools, ...advancedTools } }
110
+ }
111
+ return {}
112
+ }
113
+ ```
114
+
115
+ ### Streaming: `StreamChunk`
116
+
117
+ Every chunk published to the Streaming service is wrapped in a `StreamChunk`:
118
+
119
+ ```typescript
120
+ interface StreamChunk {
121
+ conversationId: string
122
+ responseId: string // correlate streaming with persisted message
123
+ chunk: UIMessageChunk // text-delta, tool-input-available, finish, etc.
124
+ seq: number // monotonic, for dedup and ordering
125
+ }
126
+ ```
127
+
128
+ The `responseId` correlates streaming chunks with the persisted message. Each assistant message in `result.messages` carries its `responseId` in `metadata.responseId`. If the loop absorbs queued user messages and generates multiple responses in one run, each response gets its own `responseId` — a `finish` chunk is emitted between them.
129
+
130
+ ## Services
131
+
132
+ kai uses four optional Effect services. Provide them via layers, or use the noop defaults.
133
+
134
+ ### Streaming
135
+
136
+ Publishes `StreamChunk` for real-time frontend updates.
137
+
138
+ ```typescript
139
+ import { Streaming } from "@kairos-computer/core"
140
+ import { Layer, Effect } from "effect"
141
+
142
+ const myStreamingLayer = Layer.succeed(Streaming, {
143
+ publish: (chunk) => Effect.promise(() => redis.publish(channel, JSON.stringify(chunk))),
144
+ })
145
+ ```
146
+
147
+ ### MessageQueue
148
+
149
+ User messages arriving mid-generation. The loop drains these between steps.
150
+
151
+ ```typescript
152
+ import { MessageQueue } from "@kairos-computer/core"
153
+
154
+ const myMqLayer = Layer.succeed(MessageQueue, {
155
+ drain: () => Effect.promise(() => readAllPendingMessages()),
156
+ wait: () => Effect.promise(() => blockForNextMessage()),
157
+ // Optional: ACK entries consumed by drain()/wait().
158
+ // Agent.run() calls this after successful persistence.
159
+ ack: () => Effect.promise(() => ackConsumedEntries()),
160
+ })
161
+ ```
162
+
163
+ ### StopSignal
164
+
165
+ External stop requests. Aborts both streaming and tool execution.
166
+
167
+ ```typescript
168
+ import { StopSignal } from "@kairos-computer/core"
169
+
170
+ const myStopLayer = Layer.succeed(StopSignal, {
171
+ check: () => Effect.promise(() => redis.getdel("stop-key").then(v => v !== null)),
172
+ wait: () => Effect.async((resume) => {
173
+ subscriber.subscribe("stop-channel")
174
+ subscriber.on("message", () => resume(Effect.void))
175
+ }),
176
+ })
177
+ ```
178
+
179
+ ### Persistence
180
+
181
+ Save/load messages. Called by the `Agent` class before and after the loop.
182
+
183
+ ```typescript
184
+ import { Persistence } from "@kairos-computer/core"
185
+
186
+ const myPersistenceLayer = Layer.succeed(Persistence, {
187
+ saveMessages: (convId, msgs) => Effect.promise(() => db.save(convId, msgs)),
188
+ loadMessages: (convId) => Effect.promise(() => db.load(convId)),
189
+ })
190
+ ```
191
+
192
+ ## Redis Adapter
193
+
194
+ `@kairos-computer/redis` provides ready-made implementations using ioredis.
195
+
196
+ ```typescript
197
+ import { RedisStreamingLayer, RedisMessageQueueLayer, RedisStopSignalLayer } from "@kairos-computer/redis"
198
+ import Redis from "ioredis"
199
+
200
+ const redis = new Redis()
201
+ const subscriber = new Redis()
202
+
203
+ const streamingLayer = RedisStreamingLayer({ redis, userId: "user-123" })
204
+ const mqLayer = RedisMessageQueueLayer({
205
+ redis,
206
+ conversationId: "conv-1",
207
+ consumerId: "agent-1",
208
+ parseMessage: (data) => JSON.parse(data.payload),
209
+ })
210
+ const stopLayer = RedisStopSignalLayer({ redis, subscriber, conversationId: "conv-1" })
211
+ ```
212
+
213
+ ## Using `runLoop` Directly
214
+
215
+ The `Agent` class is a thin wrapper. For full control, use `runLoop`:
216
+
217
+ ```typescript
218
+ import { runLoop } from "@kairos-computer/core"
219
+ import { anthropic } from "@ai-sdk/anthropic"
220
+ import { Effect, Layer } from "effect"
221
+
222
+ const result = await runLoop({
223
+ model: anthropic("claude-sonnet-4-20250514"),
224
+ conversationId: "conv-1",
225
+ responseId: "resp-abc",
226
+ system: "You are helpful.",
227
+ tools: myTools,
228
+ initialMessages: messages,
229
+ callSettings: { maxOutputTokens: 4096, temperature: 0.7 },
230
+ prepareStep: (ctx) => ({ /* per-step overrides */ }),
231
+ onContextOverflow: (msgs, usage) => Effect.succeed(compactMessages(msgs, usage)),
232
+ hooks: {
233
+ onStepStart: (n) => Effect.log(`Step ${n}`),
234
+ onStepFinish: (r) => Effect.log(`Finished: ${r.finishReason}`),
235
+ onToolCall: (tc) => Effect.log(`Calling ${tc.toolName}`),
236
+ onToolResult: (tr) => Effect.log(`${tr.toolName}: ${tr.isError ? "error" : "ok"}`),
237
+ },
238
+ }).pipe(
239
+ Effect.provide(Layer.mergeAll(streamingLayer, mqLayer, stopLayer)),
240
+ Effect.runPromise,
241
+ )
242
+ ```
243
+
244
+ ## Stop Signal Behavior
245
+
246
+ Stop aborts at every level:
247
+
248
+ - **Between steps**: `check()` polls before each LLM call
249
+ - **Mid-stream**: `wait()` fires → AbortController aborts → stream interrupted
250
+ - **Mid-tool-execution**: same AbortController passed to `tool.execute()` — tools that respect `abortSignal` bail out
251
+
252
+ Aborted tools get `output: "Stopped by user"` so the model knows not to retry them on the next turn.
253
+
254
+ ## MCP Support
255
+
256
+ MCP tools work out of the box — they're just `ToolSet` entries. Load them from `@ai-sdk/mcp` and pass to kai:
257
+
258
+ ```typescript
259
+ import { createMCPClient } from "@ai-sdk/mcp"
260
+
261
+ const mcp = await createMCPClient({ transport: myTransport })
262
+ const mcpTools = await mcp.tools()
263
+
264
+ const agent = new Agent({
265
+ model: anthropic("claude-sonnet-4-20250514"),
266
+ tools: { ...localTools, ...mcpTools },
267
+ })
268
+ ```
269
+
270
+ For dynamic tool discovery per step:
271
+
272
+ ```typescript
273
+ prepareStep: async () => {
274
+ const mcpTools = await mcp.tools()
275
+ return { tools: { ...localTools, ...mcpTools } }
276
+ }
277
+ ```
278
+
279
+ ## API Reference
280
+
281
+ ### Types
282
+
283
+ | Type | Description |
284
+ |------|-------------|
285
+ | `UIMessage` | AI SDK message type (re-exported) |
286
+ | `ToolSet` | AI SDK tool set (re-exported) |
287
+ | `StreamChunk` | Chunk + routing metadata (conversationId, responseId, seq) |
288
+ | `LoopResult` | Final result: messages, steps, totalUsage, finishReason, responseId |
289
+ | `StepResult` | Per-step: finishReason, text, toolCalls, usage, durationMs |
290
+ | `ParsedToolCall` | Tool call extracted from model response |
291
+ | `ToolCallResult` | Result of executing a tool call |
292
+ | `AgentConfig` | Configuration for the Agent class |
293
+ | `LoopConfig` | Configuration for runLoop |
294
+ | `CallSettings` | Model call settings (temperature, maxOutputTokens, etc.) |
295
+
296
+ ### `LoopFinishReason`
297
+
298
+ | Value | Meaning |
299
+ |-------|---------|
300
+ | `"stop"` | Model finished naturally |
301
+ | `"tool-calls"` | Model wants tool execution but `executeTools` is `false` |
302
+ | `"aborted"` | Stopped by external signal |
303
+ | `"error"` | Model returned an error finish reason |
304
+
305
+ ### Errors
306
+
307
+ | Error | When |
308
+ |-------|------|
309
+ | `StreamError` | `model.doStream()` fails |
310
+ | `ContextOverflowError` | `finishReason: "length"` with no `onContextOverflow` handler |
311
+ | `PersistenceError` | Persistence service fails to save/load |
312
+ | `ToolExecutionError` | Available for custom `ExecuteToolsFn` implementations |
package/dist/agent.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import type { UIMessage } from "ai";
2
2
  import { Effect, Layer } from "effect";
3
3
  import type { ContextOverflowError, PersistenceError, StreamError } from "./errors.js";
4
- import { type MessageQueue } from "./services/MessageQueue.js";
4
+ import { MessageQueue } from "./services/MessageQueue.js";
5
5
  import { Persistence } from "./services/Persistence.js";
6
6
  import { type StopSignal } from "./services/StopSignal.js";
7
7
  import { type Streaming } from "./services/Streaming.js";
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAU,MAAM,QAAQ,CAAA;AAC9C,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,EACZ,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,KAAK,YAAY,EAElB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAwB,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAC7E,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC/E,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEzD,qBAAa,KAAK;IACJ,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEvC;;;OAGG;IACH,GAAG,CACD,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,SAAS,EAAE,GACpB,MAAM,CAAC,MAAM,CACd,UAAU,EACV,WAAW,GAAG,oBAAoB,GAAG,gBAAgB,EACrD,SAAS,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU,CACpD;IAqCD;;OAEG;IACH,UAAU,CACR,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,SAAS,EAAE,EACrB,MAAM,CAAC,EAAE;QACP,SAAS,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAClC,WAAW,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QACtC,YAAY,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QACxC,UAAU,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;KACrC,GACA,OAAO,CAAC,UAAU,CAAC;CAavB"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAU,MAAM,QAAQ,CAAA;AAC9C,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EAChB,WAAW,EACZ,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,YAAY,EAAyB,MAAM,4BAA4B,CAAA;AAChF,OAAO,EAAwB,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAC7E,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC/E,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEzD,qBAAa,KAAK;IACJ,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEvC;;;OAGG;IACH,GAAG,CACD,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,SAAS,EAAE,GACpB,MAAM,CAAC,MAAM,CACd,UAAU,EACV,WAAW,GAAG,oBAAoB,GAAG,gBAAgB,EACrD,SAAS,GAAG,WAAW,GAAG,YAAY,GAAG,UAAU,CACpD;IAiDD;;OAEG;IACH,UAAU,CACR,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,SAAS,EAAE,EACrB,MAAM,CAAC,EAAE;QACP,SAAS,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAClC,WAAW,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QACtC,YAAY,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QACxC,UAAU,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;KACrC,GACA,OAAO,CAAC,UAAU,CAAC;CAavB"}
package/dist/agent.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Effect, Layer, Option } from "effect";
2
2
  import { runLoop } from "./loop.js";
3
- import { NoopMessageQueueLayer, } from "./services/MessageQueue.js";
3
+ import { MessageQueue, NoopMessageQueueLayer } from "./services/MessageQueue.js";
4
4
  import { NoopPersistenceLayer, Persistence } from "./services/Persistence.js";
5
5
  import { NoopStopSignalLayer } from "./services/StopSignal.js";
6
6
  import { NoopStreamingLayer } from "./services/Streaming.js";
@@ -17,6 +17,7 @@ export class Agent {
17
17
  const config = this.config;
18
18
  return Effect.gen(function* () {
19
19
  const persistence = yield* Effect.serviceOption(Persistence);
20
+ const messageQueue = yield* Effect.serviceOption(MessageQueue);
20
21
  const history = Option.isSome(persistence)
21
22
  ? yield* persistence.value.loadMessages(conversationId)
22
23
  : [];
@@ -34,11 +35,18 @@ export class Agent {
34
35
  callSettings: config.callSettings,
35
36
  prepareStep: config.prepareStep,
36
37
  onContextOverflow: config.onContextOverflow,
38
+ deferQueueAck: true,
37
39
  hooks: config.hooks,
38
40
  });
39
41
  if (Option.isSome(persistence)) {
40
42
  yield* persistence.value.saveMessages(conversationId, result.messages);
41
43
  }
44
+ const shouldAckQueue = result.finishReason === "stop" || result.finishReason === "tool-calls";
45
+ if (shouldAckQueue &&
46
+ Option.isSome(messageQueue) &&
47
+ messageQueue.value.ack) {
48
+ yield* messageQueue.value.ack();
49
+ }
42
50
  return result;
43
51
  });
44
52
  }
package/dist/agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAM9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAEL,qBAAqB,GACtB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAC7E,OAAO,EAAE,mBAAmB,EAAmB,MAAM,0BAA0B,CAAA;AAC/E,OAAO,EAAE,kBAAkB,EAAkB,MAAM,yBAAyB,CAAA;AAG5E,MAAM,OAAO,KAAK;IACI;IAApB,YAAoB,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAE3C;;;OAGG;IACH,GAAG,CACD,cAAsB,EACtB,QAAqB;QAMrB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QAE1B,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACzB,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAA;YAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;gBACxC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC;gBACvD,CAAC,CAAC,EAAE,CAAA;YAEN,MAAM,WAAW,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAA;YAE7C,MAAM,MAAM,GACV,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU;gBACjC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;gBACpE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAA;YAEnB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC;gBAC5B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,cAAc;gBACd,MAAM;gBACN,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,eAAe,EAAE,WAAW;gBAC5B,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;gBAC3C,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC,CAAA;YAEF,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC/B,KAAK,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;YACxE,CAAC;YAED,OAAO,MAAM,CAAA;QACf,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,UAAU,CACR,cAAsB,EACtB,QAAqB,EACrB,MAKC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAC1B,MAAM,EAAE,SAAS,IAAI,kBAAkB,EACvC,MAAM,EAAE,WAAW,IAAI,oBAAoB,EAC3C,MAAM,EAAE,YAAY,IAAI,qBAAqB,EAC7C,MAAM,EAAE,UAAU,IAAI,mBAAmB,CAC1C,CAAA;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC,IAAI,CAC5C,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EACrB,MAAM,CAAC,UAAU,CAClB,CAAA;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
package/dist/loop.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { LanguageModelV3 } from "@ai-sdk/provider";
2
- import type { ToolSet, UIMessage } from "ai";
2
+ import type { LanguageModelUsage, ToolSet, UIMessage } from "ai";
3
3
  import { Effect } from "effect";
4
4
  import { ContextOverflowError, StreamError } from "./errors.js";
5
5
  import { MessageQueue } from "./services/MessageQueue.js";
@@ -18,7 +18,12 @@ export interface LoopConfig {
18
18
  initialMessages: UIMessage[];
19
19
  callSettings?: CallSettings;
20
20
  prepareStep?: PrepareStepFn;
21
- onContextOverflow?: (messages: UIMessage[]) => Effect.Effect<UIMessage[]>;
21
+ onContextOverflow?: (messages: UIMessage[], usage: LanguageModelUsage) => Effect.Effect<UIMessage[]>;
22
+ /**
23
+ * If true, queue ACK is deferred to the caller (e.g. Agent after persistence).
24
+ * Default false: runLoop ACKs immediately on successful completion.
25
+ */
26
+ deferQueueAck?: boolean;
22
27
  hooks?: AgentHooks;
23
28
  }
24
29
  export declare function runLoop(config: LoopConfig): Effect.Effect<LoopResult, StreamError | ContextOverflowError, Streaming | MessageQueue | StopSignal>;
@@ -1 +1 @@
1
- {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAGV,OAAO,EACP,SAAS,EAEV,MAAM,IAAI,CAAA;AACX,OAAO,EAAY,MAAM,EAA6B,MAAM,QAAQ,CAAA;AAapE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAGnD,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,cAAc,EAEd,UAAU,EACV,aAAa,EAId,MAAM,YAAY,CAAA;AAMnB,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,eAAe,CAAA;IACtB,kEAAkE;IAClE,cAAc,EAAE,MAAM,CAAA;IACtB,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,YAAY,CAAC,EAAE,OAAO,GAAG,cAAc,CAAA;IACvC,eAAe,EAAE,SAAS,EAAE,CAAA;IAC5B,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,WAAW,CAAC,EAAE,aAAa,CAAA;IAC3B,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAA;IACzE,KAAK,CAAC,EAAE,UAAU,CAAA;CACnB;AA4BD,wBAAgB,OAAO,CACrB,MAAM,EAAE,UAAU,GACjB,MAAM,CAAC,MAAM,CACd,UAAU,EACV,WAAW,GAAG,oBAAoB,EAClC,SAAS,GAAG,YAAY,GAAG,UAAU,CACtC,CA2WA"}
1
+ {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAEV,kBAAkB,EAClB,OAAO,EACP,SAAS,EAEV,MAAM,IAAI,CAAA;AACX,OAAO,EAAY,MAAM,EAA6B,MAAM,QAAQ,CAAA;AAapE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE/D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAGnD,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,cAAc,EAEd,UAAU,EACV,aAAa,EAId,MAAM,YAAY,CAAA;AAMnB,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,eAAe,CAAA;IACtB,kEAAkE;IAClE,cAAc,EAAE,MAAM,CAAA;IACtB,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,YAAY,CAAC,EAAE,OAAO,GAAG,cAAc,CAAA;IACvC,eAAe,EAAE,SAAS,EAAE,CAAA;IAC5B,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,WAAW,CAAC,EAAE,aAAa,CAAA;IAC3B,iBAAiB,CAAC,EAAE,CAClB,QAAQ,EAAE,SAAS,EAAE,EACrB,KAAK,EAAE,kBAAkB,KACtB,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAA;IAC/B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,KAAK,CAAC,EAAE,UAAU,CAAA;CACnB;AA4BD,wBAAgB,OAAO,CACrB,MAAM,EAAE,UAAU,GACjB,MAAM,CAAC,MAAM,CACd,UAAU,EACV,WAAW,GAAG,oBAAoB,EAClC,SAAS,GAAG,YAAY,GAAG,UAAU,CACtC,CA2XA"}
package/dist/loop.js CHANGED
@@ -85,7 +85,7 @@ export function runLoop(config) {
85
85
  yield* config.hooks.onStepStart(stepNumber);
86
86
  // Stream one LLM call
87
87
  const stepStart = Date.now();
88
- const response = yield* streamStep(stepModel, system, tools, currentState.messages, config.callSettings, turnAbort, publisher);
88
+ const response = yield* streamStepWithRetry(stepModel, system, tools, currentState.messages, config.callSettings, turnAbort, publisher);
89
89
  const stepDuration = Date.now() - stepStart;
90
90
  yield* Ref.update(state, (s) => ({
91
91
  ...s,
@@ -244,7 +244,7 @@ export function runLoop(config) {
244
244
  else if (finishReason === "length") {
245
245
  if (config.onContextOverflow) {
246
246
  const s = yield* Ref.get(state);
247
- const compacted = yield* config.onContextOverflow(s.messages);
247
+ const compacted = yield* config.onContextOverflow(s.messages, response.usage);
248
248
  yield* Ref.update(state, (s) => ({ ...s, messages: compacted }));
249
249
  continue;
250
250
  }
@@ -275,6 +275,15 @@ export function runLoop(config) {
275
275
  finishReason: loopFinishReason,
276
276
  });
277
277
  }
278
+ // ACK queue entries only after a successful loop completion.
279
+ // Callers can defer this (e.g. to ACK only after persistence succeeds).
280
+ const shouldAckQueue = loopFinishReason === "stop" || loopFinishReason === "tool-calls";
281
+ if (shouldAckQueue &&
282
+ !config.deferQueueAck &&
283
+ Option.isSome(messageQueue) &&
284
+ messageQueue.value.ack) {
285
+ yield* messageQueue.value.ack();
286
+ }
278
287
  const final = yield* Ref.get(state);
279
288
  return {
280
289
  responseId,
@@ -288,6 +297,30 @@ export function runLoop(config) {
288
297
  // ---------------------------------------------------------------------------
289
298
  // Stream a single LLM call with stop signal support
290
299
  // ---------------------------------------------------------------------------
300
+ function streamStepWithRetry(model, system, tools, messages, callSettings, abortController, publisher) {
301
+ return Effect.gen(function* () {
302
+ const maxAttempts = Math.max(1, callSettings?.streamRetry?.maxAttempts ?? 3);
303
+ const baseDelayMs = Math.max(0, callSettings?.streamRetry?.baseDelayMs ?? 750);
304
+ const maxDelayMs = Math.max(baseDelayMs, callSettings?.streamRetry?.maxDelayMs ?? 5000);
305
+ let attempt = 1;
306
+ while (true) {
307
+ const result = yield* Effect.either(streamStep(model, system, tools, messages, callSettings, abortController, publisher));
308
+ if (result._tag === "Right") {
309
+ return result.right;
310
+ }
311
+ const error = result.left;
312
+ const shouldRetry = !abortController.signal.aborted &&
313
+ attempt < maxAttempts &&
314
+ isTransientStreamError(error);
315
+ if (!shouldRetry) {
316
+ return yield* Effect.fail(error);
317
+ }
318
+ const delayMs = Math.min(baseDelayMs * 2 ** (attempt - 1), maxDelayMs);
319
+ yield* Effect.promise(() => sleepWithAbort(delayMs, abortController.signal));
320
+ attempt++;
321
+ }
322
+ });
323
+ }
291
324
  /**
292
325
  * Stream a single LLM call. Aborts immediately when `abortController` is signaled.
293
326
  * The same AbortController is shared with tool execution at the loop level,
@@ -391,6 +424,94 @@ function isAbortError(value) {
391
424
  return true;
392
425
  return false;
393
426
  }
427
+ function isTransientStreamError(error) {
428
+ const candidates = collectErrorCandidates(error.cause);
429
+ for (const candidate of candidates) {
430
+ const statusCode = getStatusCode(candidate);
431
+ if (statusCode &&
432
+ [408, 409, 425, 429, 500, 502, 503, 504].includes(statusCode)) {
433
+ return true;
434
+ }
435
+ if (isRetryableFlag(candidate))
436
+ return true;
437
+ const message = getMessage(candidate).toLowerCase();
438
+ if (message.includes("internal server error") ||
439
+ message.includes("rate limit") ||
440
+ message.includes("temporarily unavailable") ||
441
+ message.includes("timeout") ||
442
+ message.includes("timed out") ||
443
+ message.includes("overloaded")) {
444
+ return true;
445
+ }
446
+ }
447
+ return false;
448
+ }
449
+ function collectErrorCandidates(cause) {
450
+ const out = [];
451
+ const stack = [cause];
452
+ const seen = new Set();
453
+ while (stack.length > 0) {
454
+ const current = stack.pop();
455
+ if (current === undefined || current === null)
456
+ continue;
457
+ if (typeof current === "object") {
458
+ if (seen.has(current))
459
+ continue;
460
+ seen.add(current);
461
+ }
462
+ out.push(current);
463
+ if (typeof current === "object" && current !== null) {
464
+ const maybeCause = current.cause;
465
+ if (maybeCause !== undefined)
466
+ stack.push(maybeCause);
467
+ }
468
+ }
469
+ return out;
470
+ }
471
+ function getStatusCode(value) {
472
+ if (typeof value !== "object" || value === null)
473
+ return undefined;
474
+ const statusCode = value.statusCode;
475
+ if (typeof statusCode === "number")
476
+ return statusCode;
477
+ const status = value.status;
478
+ if (typeof status === "number")
479
+ return status;
480
+ return undefined;
481
+ }
482
+ function isRetryableFlag(value) {
483
+ if (typeof value !== "object" || value === null)
484
+ return false;
485
+ return value.isRetryable === true;
486
+ }
487
+ function getMessage(value) {
488
+ if (typeof value === "string")
489
+ return value;
490
+ if (value instanceof Error)
491
+ return value.message;
492
+ if (typeof value === "object" && value !== null) {
493
+ const message = value.message;
494
+ if (typeof message === "string")
495
+ return message;
496
+ }
497
+ return "";
498
+ }
499
+ function sleepWithAbort(delayMs, signal) {
500
+ if (signal.aborted || delayMs <= 0)
501
+ return Promise.resolve();
502
+ return new Promise((resolve) => {
503
+ const timeout = setTimeout(() => {
504
+ signal.removeEventListener("abort", onAbort);
505
+ resolve();
506
+ }, delayMs);
507
+ const onAbort = () => {
508
+ clearTimeout(timeout);
509
+ signal.removeEventListener("abort", onAbort);
510
+ resolve();
511
+ };
512
+ signal.addEventListener("abort", onAbort, { once: true });
513
+ });
514
+ }
394
515
  function drainQueuedMessages(messageQueue, state) {
395
516
  return Effect.gen(function* () {
396
517
  if (Option.isNone(messageQueue))
package/dist/loop.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"loop.js","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,11 @@ declare const MessageQueue_base: Context.TagClass<MessageQueue, "kai/MessageQueu
5
5
  readonly drain: () => Effect.Effect<UIMessage[]>;
6
6
  /** Blocking: wait for the next message. */
7
7
  readonly wait: () => Effect.Effect<UIMessage>;
8
+ /**
9
+ * Optional deferred ACK hook for queue adapters that support at-least-once
10
+ * delivery. Implementations should ACK messages consumed by drain()/wait().
11
+ */
12
+ readonly ack?: () => Effect.Effect<void>;
8
13
  }>;
9
14
  export declare class MessageQueue extends MessageQueue_base {
10
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MessageQueue.d.ts","sourceRoot":"","sources":["../../src/services/MessageQueue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;;IAK3C,sEAAsE;oBACtD,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;IAChD,2CAA2C;mBAC5B,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;;AANjD,qBAAa,YAAa,SAAQ,iBAQ/B;CAAG;AAEN,eAAO,MAAM,qBAAqB,yCAGhC,CAAA"}
1
+ {"version":3,"file":"MessageQueue.d.ts","sourceRoot":"","sources":["../../src/services/MessageQueue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;;IAK3C,sEAAsE;oBACtD,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;IAChD,2CAA2C;mBAC5B,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;IAC7C;;;OAGG;mBACY,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;;AAX5C,qBAAa,YAAa,SAAQ,iBAa/B;CAAG;AAEN,eAAO,MAAM,qBAAqB,yCAGhC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"MessageQueue.js","sourceRoot":"","sources":["../../src/services/MessageQueue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAE/C,MAAM,OAAO,YAAa,SAAQ,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAQ9D;CAAG;AAEN,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE;IAC/D,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/B,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,+BAA+B;CAC1D,CAAC,CAAA"}
1
+ {"version":3,"file":"MessageQueue.js","sourceRoot":"","sources":["../../src/services/MessageQueue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAE/C,MAAM,OAAO,YAAa,SAAQ,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAa9D;CAAG;AAEN,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE;IAC/D,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/B,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,+BAA+B;CAC1D,CAAC,CAAA"}
package/dist/types.d.ts CHANGED
@@ -77,6 +77,15 @@ export interface CallSettings {
77
77
  topK?: number;
78
78
  stopSequences?: string[];
79
79
  providerOptions?: Record<string, Record<string, unknown>>;
80
+ /**
81
+ * Retry policy for transient model/API stream failures (5xx, 429, timeouts).
82
+ * Defaults: maxAttempts=3, baseDelayMs=750, maxDelayMs=5000.
83
+ */
84
+ streamRetry?: {
85
+ maxAttempts?: number;
86
+ baseDelayMs?: number;
87
+ maxDelayMs?: number;
88
+ };
80
89
  }
81
90
  /**
82
91
  * Controls how tool calls are handled:
@@ -99,7 +108,7 @@ export interface AgentConfig {
99
108
  /** Model call settings (temperature, max tokens, etc.). */
100
109
  callSettings?: CallSettings;
101
110
  /** Called when `finishReason` is `"length"`. Return compacted messages to continue. */
102
- onContextOverflow?: (messages: UIMessage[]) => Effect.Effect<UIMessage[]>;
111
+ onContextOverflow?: (messages: UIMessage[], usage: LanguageModelUsage) => Effect.Effect<UIMessage[]>;
103
112
  /** Lifecycle hooks. */
104
113
  hooks?: AgentHooks;
105
114
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kairos-computer/core",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -10,7 +10,7 @@
10
10
  "import": "./dist/index.js"
11
11
  }
12
12
  },
13
- "files": ["dist"],
13
+ "files": ["dist", "README.md"],
14
14
  "scripts": {
15
15
  "build": "tsc",
16
16
  "prepublishOnly": "tsc"