Skip to content

2.0.0

Latest

Choose a tag to compare

@coremedia-ci coremedia-ci released this 18 Aug 07:12
b00818e

What's Changed

Requires: KIO plugin ≥ 2.0.0

✨ New Features

Multi-Agent Architecture with Parallel Execution

The KIO backend now uses an orchestrator/agent model. An orchestrator handles the
conversation and delegates focused subtasks to specialized agents, including running
several agents in parallel for bulk/multi-item requests (for example, "optimize SEO for
the selected articles") or independent operations on the same content item. This can
significantly speed up bulk and multi-item requests.

Bulk Operations and Parallel Execution

  • kio.backend.max-parallel-agents-per-request: new property (default 3) capping how
    many agents may run in parallel for a single bulk/multi-item request. The main lever for
    tuning response time vs. AI resource (token) consumption.
  • kio.backend.max-bulk-items: new property (default 50) capping the total number of
    content items accepted for a single bulk operation, independent of how many run in parallel.

Prompt Caching

A multi-agent system adds some token overhead, and parallel execution can raise usage further.
KIO offsets this with substantially improved prompt caching, which now serves roughly 90% of
all input tokens from the provider cache, up substantially from before:

  • OpenAI/Azure: improved from about 60% to about 90% of input tokens served from cache.
  • Bedrock Converse (Anthropic Claude): prompt caching is now enabled at all, going from no
    caching to roughly 85%.

Caching applies to the prefix shared by all requests (the system prompt and the tool
definitions), so it pays off most in multi-user installations. Cached tokens are reported
separately in the Debug Output.

Insights

The Debug Output now reports token usage and duration per agent call, per tool call, and as a
total summary for the whole request. This helps administrators and playbook/tool developers
understand and optimize the cost of a request, in particular when developing custom playbooks
or integrating tools via MCP. Insights were previously an internal-only feature; they are now
part of the regular debug output and are switched on together with it.

Per-Site Usage Tracking

KIO usage can now be tracked per site. The existing metric can be parameterized with a site ID to report usage for a specific site.
To track global usage, aggregation needs to be handled by the metrics consumer.

Incoming Links Tool

KIO can now list content items that link to a given content item, optionally filtered by
document type or the referencing property. This supports tasks such as reviewing or
clearing incoming links before unpublishing or deleting content.

🐛 Bug Fixes

  • [AI-782]: Fixed confirming pending CMS changes: with Auto Apply Content Changes
    switched off, not all previously determined properties were always used when writing the
    confirmed change, which could lead to errors. Confirmed changes are now applied completely
    and correctly.
  • [AI-823]: Fixed incorrect token-usage reporting for Amazon Bedrock prompt caching.
  • [AI-633]: Fixed KIO continuing to process a request after the client canceled it.
  • [AI-676]: Fixed ReadContentTool confusing content name and ID.
  • [AI-677]: Fixed page grids not being correctly initialized on newly created pages.
  • [AI-759]: Fixed copying content incorrectly copying a folder or its children instead of
    the requested content.
  • [AI-877]: Fixed KIO not properly recognizing non-content items (e.g. folders) selected in
    the Library as context.
  • [AI-793]: Fixed KIO redundantly restating a pending decision in chat text in addition to
    the decision buttons.
  • [AI-857]: Content with deleted references can now be read instead of failing.
  • [AI-870]: Placements without an explicit editable flag are now read correctly.

Validated Models

  • OpenAI GPT-5.6-Terra, GPT-5.4-Nano (for image extraction)
  • Azure AI GPT-5.6-Terra
  • Anthropic Claude Sonnet 4.6 via Amazon Bedrock Converse

Note: For KIO Backend >= 2.0.0, OpenAI/Azure AI GPT-5.6-Terra is recommended over
Anthropic Claude Sonnet 4.6, as it delivers significantly faster response times. Claude
Sonnet 4.6 remains a validated option but is comparatively slower. See
Supported LLM Providers
for the full compatibility matrix.

⚠️ Action Required: Breaking Changes

  • Requires KIO plugin >= 2.0.0. This backend release requires the matching
    KIO plugin 2.0.0
    or later, released at the same time. Upgrade the KIO plugin together with the backend.
  • GitHub playbook connector removed. The GithubPlaybookConnector, deprecated since KIO
    Backend 1.7.0, has been removed, and the coremedia-contributions/kio-playground repository
    is archived and no longer supported as a playbook source. To migrate:
    1. Copy any custom playbooks still loaded via the GitHub connector to the CoreMedia Content
      Repository (global CMS path, site, or user home).
    2. Remove all kio.backend.playbooks.github.* properties from your configuration. They
      are no longer supported and will be ignored.
    3. Manage bundled CoreMedia Playbooks directly in the KIO sidebar under
      Settings – Playbooks.
    4. Review all custom playbooks after upgrading. More details in the Playbooks section below.
  • Default LLM models have changed for OpenAI/Azure and Bedrock Converse example
    configurations. Review your pinned model configuration before upgrading. See
    Validated Models
    for the full compatibility matrix.
  • Updated configuration for Azure OpenAI: with the Spring AI update to >= 2.0.0-M5,
    Spring now reuses the OpenAI configuration properties (spring.ai.openai.*) for OpenAI
    via Microsoft Azure as well; the previous dedicated spring.ai.azure.openai.* properties
    are no longer used. OpenAI now also has its own dedicated Spring profile instead of being
    part of the "default" profile. Update your Azure configuration accordingly. See
    Validated Models
    for the updated configuration.
  • enableInsights user preference removed. Insights are now part of the debug output and are
    controlled solely by the enableDebugOutput preference. Enable debug output wherever you
    previously relied on enableInsights.
  • Usage metrics are now reported per site. The kio.chat.request and kio.chat.stream metrics
    carry an additional site tag, using site=<NONE> for requests without a preferred site.
    Self-managed deployments that evaluate these metrics themselves need to aggregate over the site
    tag wherever global usage was previously read from a single series, for example in dashboards,
    alerts, or exports. For CoreMedia-managed deployments, no action is required; per-site usage will
    soon be available through CoreMedia-provided dashboards.

Playbooks

Recommendation: If your project maintains custom playbooks (site-, user-, or CMS-based),
review and re-test them after upgrading, especially any playbook that overrides or extends
optimize-seo, optimize-geo, create-article, create-page, or assign-tags. Also verify
custom playbooks still resolve as expected after migrating away from the GitHub connector (see
Action Required: Breaking Changes above).

The bundled CoreMedia Playbooks received the following behavior changes in this release:

create-article

  • Changed: The htmlDescription property is now limited to 140 characters instead of 400.

assign-tags

  • Changed: Finding Subject and Location tags now spells out exactly how to look them up: the
    playbook runs specific taxonomy queries for the Subject and Location taxonomy folders rather
    than a vaguely worded lookup. The tag search now asks only for the tag id and name instead of
    every field, and no longer repeats the full taxonomy listings in its reasoning or output. Before
    searching for a location tag, the playbook first checks the content itself for an explicitly
    named place; if none is named, it skips the location lookup entirely instead of scanning the
    full location taxonomy every time. Location tags are now chosen only when they match an
    explicitly named place in the content.
  • Fixed: Subject and Location tags are linked to the content only when tags were actually found
    and chosen; when no matching tags exist, the playbook skips the linking step instead of applying
    an empty selection.

create-page

  • Added: Layout handling: if no layout is specified, the playbook reads the available layouts
    and asks the user to pick one; if a layout is specified, it verifies the layout exists and asks
    again when unsure. After the page is created, it initializes the page grid with the selected
    layout. Folder selection now falls back to a folder-resolution step when no repository path is
    provided.
  • Changed: The playbook is more insistent about asking the user for the page topic when none has
    been provided, rather than proceeding without one.

optimize-geo

  • Changed: Eligibility now depends strictly on top-level content properties. Text nested inside
    other structures (for example, fields within a settings/struct property) no longer counts as
    something to optimize. Generating the keywords list is now mandatory whenever the property
    exists, even when every other property is already GEO-compliant. The htmlDescription property
    is now limited to 140 characters instead of 400.
  • Fixed: When the content type has none of the supported top-level text properties, the playbook
    now stops without modifying anything, instead of touching nested fields.

optimize-seo

  • Changed: Content analysis now separates the tools by data type: text and property values are
    read with the standard content reader, and embedded pictures, videos, or other media are analyzed
    with the image-description tool. Using the image-description tool is now required before
    generating alt text, detail text, or keywords for content that contains media. The
    htmlDescription property is now limited to 140 characters instead of 400.
  • Fixed: Optimizing a picture is now fully self-contained within this playbook: it analyzes the
    image itself and writes only the SEO-relevant properties (alt text, limited to 100 characters,
    and detail text) without invoking any other playbook or touching unrelated properties like the
    picture's title.

extract-image-metadata

  • Changed: Clarifies that image blob data (the data property) is intentionally left out of
    content reads and may look empty or appear as a placeholder; this does not mean the image is
    missing, so the playbook always calls the image-description tool directly instead of checking
    whether the blob looks populated.
  • Removed: Dropped the unused system-prompt parameter from the image-description tool call.

getting-started

  • Changed: The playbook now explicitly instructs KIO not to call sub-agents or use tools while
    running it, so the getting-started walkthrough is produced directly.