Skip to content

v0.6.0

Latest

Choose a tag to compare

@johanneslatzel johanneslatzel released this 23 Jun 10:14

Breaking

  • src/chats/ split into src/chat/ and src/service/; src/tools/base.ts split into tool.ts, parameter.ts, result.ts, package.ts, hook.ts — update deep imports
  • executeTool() return type changed from {result, status}[] to ToolResult[] (adds tool and optional error fields)

Features

  • reasoningEffort config (NoneXHigh), env LLM_CHAT_OPENAI_REASONING_EFFORT
  • toolChoice config (None/Auto/Required), env LLM_CHAT_OPENAI_TOOL_CHOICE
  • verbosity config (Low/Medium/High), env LLM_CHAT_OPENAI_VERBOSITY
  • ChatRole.Developer; useDeveloperRole flag maps system messages to role: developer
  • systemPrompt config string bypasses the prompt tree
  • trimMessages option strips whitespace from assistant/reasoning content
  • ToolParameterProperty sub-schemas + ObjectPropertyBuilder; recursive toJSON() for properties, required, and custom array items
  • beforeSendLoop/afterSendLoop/beforeSend/afterSend service hooks via service.hook(), reentrant-safe
  • ToolSuite.get(name); executeTool(name, args, silent); ChatService.injectToolCall()
  • reasoning_details/reasoning/reasoning_content extraction from stream deltas, priority cascade
  • Service, message, and tool hooks await async callbacks

Internal

  • Stream types extracted to src/service/stream-types.ts
  • _drainQueue() extracted — 4 inline drain blocks in send() consolidated
  • _pendingReentrant cleared each iteration, fixing infinite loop
  • ChatMessageOrigin.Hook guard prevents infinite JSON hook→queue→hook loops
  • Added p-map and openai dependencies
  • Documentation updated

Full Changelog: v0.5.0...v0.6.0