Changes in version 1.4.12 - Exported a small, stable "extension API" so that companion provider packages (such as aisdk.providers) can build on the core HTTP and image-handling machinery without reaching into the aisdk namespace: api_endpoint_urls(), post_to_api(), post_multipart_to_api(), finalize_image_artifacts(), materialize_image_upload(), normalize_image_input_for_json() and normalize_image_input_to_url_like(). These are documented with \keyword{internal} (kept out of the main help index) and are intended for package authors rather than end users; their behaviour is unchanged. - When a model ID names a provider that lives in a companion package (e.g. deepseek:..., kimi:...) but that package is not installed, the provider registry now offers to install it in interactive sessions and, in non-interactive sessions, fails with a clear hint naming the package to install. Resolution of already-available providers is unchanged. Changes in version 1.4.11 (2026-05-30) - Removed wall-clock elapsed-time assertions from two r_eval rejection/abort tests in tests/testthat/test-r-introspect-tools.R. The tests now rely solely on the structured output (the REJECTED status and the subprocess refusal marker), which already distinguishes an immediate rejection from a timeout wait. The previous expect_lt(elapsed, ...) thresholds were unreliable on loaded CRAN build machines (a library(aisdk) subprocess start alone exceeded the 5s bound on the Fedora check farm) and are exactly the kind of timing test that "Writing R Extensions" advises against. - Removed stray Rplots*.pdf plot artifacts that had been committed under tests/testthat/. Changes in version 1.4.10 (2026-05-29) - Skip r_eval process-tree-reaping test on CRAN (it polls pgrep for sh + sleep grandchildren that the Linux kernel may reparent to PID 1 before processx::kill_tree() can finish; the TIMEOUT user-visible behaviour is exercised by a separate test). Changes in version 1.4.9 - Layered architecture (Specification, Utilities, Providers, Core) with R6 classes for Agent, Tool, Skill, Computer, and Telemetry. - Unified interface to multiple AI model providers (e.g. 'OpenAI', 'Anthropic'), with request interception, robust error handling, and exponential retry delays. - Local small language model inference, distributed 'MCP' ecosystem, multi-agent orchestration, progressive knowledge loading through skills, and a global skill store for sharing AI capabilities. - Optional companion packages (aisdk.channels for Feishu/messaging integration, aisdk.skills for skill-forge tooling) are detected at runtime and degrade gracefully when not installed.