@roj-ai/sdk 0.1.35 → 0.1.36

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 (61) hide show
  1. package/dist/core/agents/agent.d.ts.map +1 -1
  2. package/dist/core/agents/agent.js +7 -3
  3. package/dist/core/agents/agent.js.map +1 -1
  4. package/dist/core/agents/state.d.ts +24 -0
  5. package/dist/core/agents/state.d.ts.map +1 -1
  6. package/dist/core/agents/state.js.map +1 -1
  7. package/dist/core/context/state.d.ts.map +1 -1
  8. package/dist/core/context/state.js +4 -0
  9. package/dist/core/context/state.js.map +1 -1
  10. package/dist/core/llm/anthropic.d.ts.map +1 -1
  11. package/dist/core/llm/anthropic.js +49 -8
  12. package/dist/core/llm/anthropic.js.map +1 -1
  13. package/dist/core/llm/model-shortlist-live.test.d.ts +35 -0
  14. package/dist/core/llm/model-shortlist-live.test.d.ts.map +1 -0
  15. package/dist/core/llm/model-shortlist-live.test.js +452 -0
  16. package/dist/core/llm/model-shortlist-live.test.js.map +1 -0
  17. package/dist/core/llm/openrouter-mapping.test.js +18 -0
  18. package/dist/core/llm/openrouter-mapping.test.js.map +1 -1
  19. package/dist/core/llm/openrouter.d.ts.map +1 -1
  20. package/dist/core/llm/openrouter.js +20 -11
  21. package/dist/core/llm/openrouter.js.map +1 -1
  22. package/dist/core/llm/provider.d.ts +34 -3
  23. package/dist/core/llm/provider.d.ts.map +1 -1
  24. package/dist/core/llm/provider.js.map +1 -1
  25. package/dist/core/llm/reasoning-details.test.d.ts +2 -0
  26. package/dist/core/llm/reasoning-details.test.d.ts.map +1 -0
  27. package/dist/core/llm/reasoning-details.test.js +144 -0
  28. package/dist/core/llm/reasoning-details.test.js.map +1 -0
  29. package/dist/core/llm/state.d.ts +2 -0
  30. package/dist/core/llm/state.d.ts.map +1 -1
  31. package/dist/core/llm/state.js +11 -0
  32. package/dist/core/llm/state.js.map +1 -1
  33. package/dist/core/llm/thinking-blocks.test.d.ts +2 -0
  34. package/dist/core/llm/thinking-blocks.test.d.ts.map +1 -0
  35. package/dist/core/llm/thinking-blocks.test.js +291 -0
  36. package/dist/core/llm/thinking-blocks.test.js.map +1 -0
  37. package/dist/core/reasoning-round-trip.integration.test.d.ts +2 -0
  38. package/dist/core/reasoning-round-trip.integration.test.d.ts.map +1 -0
  39. package/dist/core/reasoning-round-trip.integration.test.js +150 -0
  40. package/dist/core/reasoning-round-trip.integration.test.js.map +1 -0
  41. package/dist/core/sessions/state.d.ts.map +1 -1
  42. package/dist/core/sessions/state.js +5 -0
  43. package/dist/core/sessions/state.js.map +1 -1
  44. package/dist/index.d.ts +1 -0
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js.map +1 -1
  47. package/package.json +3 -3
  48. package/src/core/agents/agent.ts +9 -3
  49. package/src/core/agents/state.ts +26 -0
  50. package/src/core/context/state.ts +4 -0
  51. package/src/core/llm/anthropic.ts +71 -10
  52. package/src/core/llm/model-shortlist-live.test.ts +577 -0
  53. package/src/core/llm/openrouter-mapping.test.ts +24 -0
  54. package/src/core/llm/openrouter.ts +28 -12
  55. package/src/core/llm/provider.ts +44 -3
  56. package/src/core/llm/reasoning-details.test.ts +177 -0
  57. package/src/core/llm/state.ts +12 -0
  58. package/src/core/llm/thinking-blocks.test.ts +345 -0
  59. package/src/core/reasoning-round-trip.integration.test.ts +188 -0
  60. package/src/core/sessions/state.ts +5 -0
  61. package/src/index.ts +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@roj-ai/sdk",
3
- "version": "0.1.35",
3
+ "version": "0.1.36",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "exports": {
@@ -135,9 +135,9 @@
135
135
  "type-check": "tsc --noEmit"
136
136
  },
137
137
  "dependencies": {
138
- "@roj-ai/transport": "^0.1.35",
138
+ "@roj-ai/transport": "^0.1.36",
139
139
  "@hono/zod-validator": "0.7.6",
140
- "hono": "4.12.5",
140
+ "hono": "4.13.1",
141
141
  "ignore": "7.0.5",
142
142
  "tokenx": "^1.3.0",
143
143
  "uuidv7": "^1.1.0",
@@ -10,7 +10,7 @@
10
10
  import z from 'zod/v4'
11
11
  import { DebounceCallback } from '~/core/agents/debounce.js'
12
12
  import type { AgentId } from '~/core/agents/schema.js'
13
- import type { AgentState, HandlerResult } from '~/core/agents/state.js'
13
+ import type { AgentState, HandlerResult, ReasoningDetails, ThinkingBlocks } from '~/core/agents/state.js'
14
14
  import { agentEvents } from '~/core/agents/state.js'
15
15
  import { withSessionId } from '~/core/events/test-helpers.js'
16
16
  import type { FileStore } from '~/core/file-store/types.js'
@@ -810,7 +810,7 @@ export class Agent {
810
810
  if (afterResult !== null) {
811
811
  if (afterResult.action === 'pause') {
812
812
  // Commit the turn before pausing so pendingMessages move to conversationHistory.
813
- await this.emitInferenceCompleted(response, llmCallId, llmResponse.value.metrics)
813
+ await this.emitInferenceCompleted(response, llmCallId, llmResponse.value.metrics, llmResponse.value.reasoningDetails, llmResponse.value.thinkingBlocks)
814
814
  await this.consumeDequeuedTokens(pluginDequeued)
815
815
  await this.emitHandlerPause(afterResult.reason)
816
816
  return
@@ -844,7 +844,9 @@ export class Agent {
844
844
 
845
845
  // 4d. Inference completed
846
846
  // Tool calls will be executed in the next continue() cycle
847
- await this.emitInferenceCompleted(response, llmCallId, llmResponse.value.metrics)
847
+ // Reasoning travels beside `response`, not inside it: an afterInference handler may
848
+ // rewrite the text, but the blocks stay the model's own and go back untouched.
849
+ await this.emitInferenceCompleted(response, llmCallId, llmResponse.value.metrics, llmResponse.value.reasoningDetails, llmResponse.value.thinkingBlocks)
848
850
 
849
851
  // Consume dequeue tokens after the commit: a crash in the gap re-delivers the
850
852
  // message on restart (at-least-once) instead of dropping it (consume-first
@@ -869,6 +871,8 @@ export class Agent {
869
871
  cachedTokens?: number
870
872
  cacheWriteTokens?: number
871
873
  },
874
+ reasoningDetails?: ReasoningDetails,
875
+ thinkingBlocks?: ThinkingBlocks,
872
876
  ): Promise<void> {
873
877
  await this.store.emit(withSessionId(
874
878
  this.store.sessionId,
@@ -882,6 +886,8 @@ export class Agent {
882
886
  name: tc.name,
883
887
  input: tc.input,
884
888
  })),
889
+ reasoningDetails,
890
+ thinkingBlocks,
885
891
  },
886
892
  metrics: metrics ?? {
887
893
  promptTokens: 0,
@@ -136,6 +136,28 @@ export interface UserLLMMessage {
136
136
  cacheControl?: LLMMessageCacheControl
137
137
  }
138
138
 
139
+ /**
140
+ * Provider chain-of-thought blocks, kept opaque (OpenRouter `reasoning_details`).
141
+ *
142
+ * The provider requires the exact sequence it produced to come back verbatim, so
143
+ * these are never parsed, reordered or normalized — only stored and echoed. The
144
+ * shape is provider- and model-specific and changes without notice; nothing in
145
+ * the SDK may depend on it.
146
+ */
147
+ export type ReasoningDetails = unknown[]
148
+
149
+ /**
150
+ * Anthropic extended-thinking blocks (`thinking` and `redacted_thinking`), kept opaque
151
+ * for the same reason as {@link ReasoningDetails}: each carries a `signature` the API
152
+ * verifies, so an edited block is worse than a missing one.
153
+ *
154
+ * Deliberately a separate field rather than sharing `reasoningDetails`. A session can
155
+ * change model mid-conversation, so one field would eventually put Anthropic-shaped
156
+ * blocks in front of OpenRouter or the reverse. Two fields make that case degrade to
157
+ * "absent", which both providers accept, instead of "wrong shape", which neither does.
158
+ */
159
+ export type ThinkingBlocks = unknown[]
160
+
139
161
  /**
140
162
  * Assistant message - LLM response.
141
163
  */
@@ -143,6 +165,10 @@ export interface AssistantLLMMessage {
143
165
  role: 'assistant'
144
166
  content: string
145
167
  toolCalls?: ToolCall[]
168
+ /** Reasoning blocks to echo back on later requests, so the model keeps its chain of thought across tool calls. */
169
+ reasoningDetails?: ReasoningDetails
170
+ /** Anthropic thinking blocks to replay on later requests. Required by the API during tool use. */
171
+ thinkingBlocks?: ThinkingBlocks
146
172
  /** Marks this message as a prompt cache breakpoint. */
147
173
  cacheControl?: LLMMessageCacheControl
148
174
  }
@@ -56,6 +56,10 @@ export const compactedConversationMessageSchema: z4.ZodType<LLMMessage> = z4.dis
56
56
  name: z4.string(),
57
57
  input: z4.unknown(),
58
58
  })).optional(),
59
+ /** Opaque provider reasoning blocks — retained turns keep them, see ReasoningDetails. */
60
+ reasoningDetails: z4.array(z4.unknown()).optional(),
61
+ /** Anthropic thinking blocks — same. */
62
+ thinkingBlocks: z4.array(z4.unknown()).optional(),
59
63
  cacheControl: cacheControlSchema.optional(),
60
64
  }),
61
65
  z4.object({
@@ -48,6 +48,14 @@ interface AnthropicTextBlock {
48
48
  interface AnthropicThinkingBlock {
49
49
  type: 'thinking'
50
50
  thinking: string
51
+ /** Verified by the API when the block is replayed. An edited block is rejected. */
52
+ signature: string
53
+ }
54
+
55
+ /** Thinking the API withheld. Opaque, and must still be replayed — see AnthropicThinkingBlock. */
56
+ interface AnthropicRedactedThinkingBlock {
57
+ type: 'redacted_thinking'
58
+ data: string
51
59
  }
52
60
 
53
61
  interface AnthropicToolUseBlock {
@@ -57,7 +65,29 @@ interface AnthropicToolUseBlock {
57
65
  input: unknown
58
66
  }
59
67
 
60
- type AnthropicContentBlock = AnthropicTextBlock | AnthropicThinkingBlock | AnthropicToolUseBlock
68
+ type AnthropicContentBlock =
69
+ | AnthropicTextBlock
70
+ | AnthropicThinkingBlock
71
+ | AnthropicRedactedThinkingBlock
72
+ | AnthropicToolUseBlock
73
+
74
+ const isThinkingBlock = (block: AnthropicContentBlock): block is AnthropicThinkingBlock | AnthropicRedactedThinkingBlock =>
75
+ block.type === 'thinking' || block.type === 'redacted_thinking'
76
+
77
+ /**
78
+ * Narrow a stored block back to a thinking block on the way out.
79
+ *
80
+ * `AssistantLLMMessage.thinkingBlocks` is `unknown[]` — the domain layer does not model
81
+ * provider shapes. This provider wrote those blocks, so it is entitled to recognise them,
82
+ * but it validates every field it declares rather than assuming. Anything else the API
83
+ * added travels along untouched, because the block is passed by reference and never rebuilt.
84
+ */
85
+ const isEchoableThinkingBlock = (value: unknown): value is AnthropicThinkingBlock | AnthropicRedactedThinkingBlock => {
86
+ if (typeof value !== 'object' || value === null || !('type' in value)) return false
87
+ if (value.type === 'thinking') return 'thinking' in value && 'signature' in value && typeof value.signature === 'string'
88
+ if (value.type === 'redacted_thinking') return 'data' in value && typeof value.data === 'string'
89
+ return false
90
+ }
61
91
 
62
92
  interface AnthropicMessageResponse {
63
93
  id: string
@@ -121,31 +151,46 @@ interface AnthropicToolResultBlockParam {
121
151
  cache_control?: AnthropicCacheControl
122
152
  }
123
153
 
124
- type AnthropicContentBlockParam =
154
+ /** Blocks the API accepts `cache_control` on — everything except a replayed thinking block. */
155
+ type AnthropicCacheableBlockParam =
125
156
  | AnthropicTextBlockParam
126
157
  | AnthropicImageBlockParam
127
158
  | AnthropicToolUseBlockParam
128
159
  | AnthropicToolResultBlockParam
129
160
 
161
+ type AnthropicContentBlockParam =
162
+ | AnthropicCacheableBlockParam
163
+ | AnthropicThinkingBlock
164
+ | AnthropicRedactedThinkingBlock
165
+
166
+ const isCacheableBlock = (block: AnthropicContentBlockParam): block is AnthropicCacheableBlockParam =>
167
+ block.type !== 'thinking' && block.type !== 'redacted_thinking'
168
+
130
169
  interface AnthropicMessageParam {
131
170
  role: 'user' | 'assistant'
132
171
  content: string | AnthropicContentBlockParam[]
133
172
  }
134
173
 
135
174
  /**
136
- * Add `cache_control` to the LAST content block of an AnthropicMessageParam,
137
- * regardless of block type. Converts string content to a single text block
138
- * first so the mark has a place to live. Mutates in place so the cache
139
- * breakpoint survives subsequent `mergeConsecutiveMessages`.
175
+ * Add `cache_control` to the LAST content block of an AnthropicMessageParam that can carry
176
+ * it. Converts string content to a single text block first so the mark has a place to live.
177
+ * Mutates in place so the cache breakpoint survives subsequent `mergeConsecutiveMessages`.
178
+ *
179
+ * Thinking blocks are skipped: they are replayed byte-for-byte and the API rejects an extra
180
+ * key on them. They lead the assistant message, so the only case where none of the blocks is
181
+ * cacheable is a message made of nothing but thinking — which then gets no breakpoint.
140
182
  */
141
183
  function applyCacheControlToLastBlock(msg: AnthropicMessageParam, cacheControl: AnthropicCacheControl): void {
142
184
  if (typeof msg.content === 'string') {
143
185
  msg.content = [{ type: 'text', text: msg.content, cache_control: cacheControl }]
144
186
  return
145
187
  }
146
- if (msg.content.length === 0) return
147
- const lastIdx = msg.content.length - 1
148
- msg.content[lastIdx] = { ...msg.content[lastIdx], cache_control: cacheControl }
188
+ for (let i = msg.content.length - 1; i >= 0; i--) {
189
+ const block = msg.content[i]
190
+ if (!isCacheableBlock(block)) continue
191
+ msg.content[i] = { ...block, cache_control: cacheControl }
192
+ return
193
+ }
149
194
  }
150
195
 
151
196
  interface AnthropicToolParam {
@@ -283,7 +328,11 @@ export class AnthropicProvider implements RoutableLLMProvider {
283
328
  .map((block) => block.text)
284
329
  .join('')
285
330
 
286
- const reasoning = data.content
331
+ // Kept whole, in order, signatures included: the API verifies them on replay.
332
+ // `redacted_thinking` has no readable text but still has to travel.
333
+ const thinkingBlocks = data.content.filter(isThinkingBlock)
334
+
335
+ const reasoning = thinkingBlocks
287
336
  .filter((block): block is AnthropicThinkingBlock => block.type === 'thinking')
288
337
  .map((block) => block.thinking)
289
338
  .join('')
@@ -315,6 +364,8 @@ export class AnthropicProvider implements RoutableLLMProvider {
315
364
  metrics,
316
365
  providerRequestId: data.id,
317
366
  reasoning: reasoning || undefined,
367
+ // Normalized to undefined so an empty array never reaches the wire on the way back.
368
+ thinkingBlocks: thinkingBlocks.length > 0 ? thinkingBlocks : undefined,
318
369
  })
319
370
  } catch (error) {
320
371
  return Err(this.mapError(error))
@@ -399,6 +450,16 @@ export class AnthropicProvider implements RoutableLLMProvider {
399
450
  }
400
451
  case 'assistant': {
401
452
  const contentBlocks: AnthropicContentBlockParam[] = []
453
+ // Thinking goes first — the API requires the block order the model produced, and
454
+ // during tool use it requires the blocks to be there at all. All or nothing: a
455
+ // partial sequence is rejected, so anything unrecognisable drops the whole set
456
+ // rather than sending a truncated one.
457
+ const thinking = msg.thinkingBlocks ?? []
458
+ if (thinking.length > 0 && thinking.every(isEchoableThinkingBlock)) {
459
+ contentBlocks.push(...thinking)
460
+ } else if (thinking.length > 0) {
461
+ this.logger?.warn('Dropping unrecognisable thinking blocks from an assistant message', { count: thinking.length })
462
+ }
402
463
  if (msg.content) {
403
464
  contentBlocks.push({ type: 'text', text: msg.content })
404
465
  }