Skip to main content

Release 0.4.14 — Slack and Chat Reliability

Released: 2026-05-20 Chart: oci://ghcr.io/cnoe-io/charts/ai-platform-engineering:0.4.14 Previous release: 0.4.13

Highlights

0.4.14 is a maintenance release focused on Slack and chat reliability. It fixes several cases where the Slack bot silently failed to respond — overthink skip logic that never fired on auto-routed channel messages, and alert integrations that put all their content inside attachment blocks. The /invoke chat endpoint gains optional conversation-history persistence, the skill scanner now returns actionable validation errors for malformed skills, and Jira agents can post internal (non-customer-visible) service desk comments.

What's New

Jira

  • Internal service desk comments — a dedicated Jira MCP tool posts Jira Service Management internal notes via the request comment API with public: false, so agents can leave internal-only notes without customer-visible comments (#1445)

Chat API

  • Configurable /invoke history persistencePOST /api/v1/chat/invoke was always ephemeral, so reusing a conversation_id carried no memory across turns. A new INVOKE_PERSIST_HISTORY env var (default false) opts into the shared MongoDB-backed runtime for multi-turn history; the endpoint also now applies config_override and returns 503 on capacity errors instead of 500 (#1449)

Bug Fixes

  • slack-bot: set is_overthink_message in _route_to_agent so the [DEFER] skip-check fires for auto-routed channel messages — previously [DEFER] was stripped to empty and a footer-only message was posted (#1466)
  • slack-bot: parse attachment.blocks in extract_message_text so the bot responds to alert integrations that post with empty text and all content nested inside attachment Block Kit (#1467)
  • escalation: use the last email match for VictorOps on-call lookup so the current on-call person is tagged when the agent reasons through multiple shifts (#1459)
  • agent-runtime: guard delete_by_key_prefix against InMemoryStore, which lacks the method and raised an AttributeError (500) on runtime init in ephemeral contexts (#1450)
  • skill-scanner: return HTTP 422 with actionable detail for malformed SKILL.md instead of a generic 500 (#1410)
  • ui: drop stale v1-schema MongoDB indexes on workflow_runs, point the workflow engine at the correct DYNAMIC_AGENTS_URL env var, and include cause code/message and target URL in streaming error messages (#1469)

Security

  • Dependency and code-scanning fixes — refreshed vulnerable Python, npm, Go, and workflow dependency pins/lockfiles; redacted sensitive output and avoided raw stack traces in code-scanning findings; removed the checked-in GitHub MCP server binary (#1473)

Breaking Changes

No breaking changes. Drop-in upgrade from 0.4.13.

Known Issues

None known at this time.

Upgrade

helm upgrade ai-platform-engineering \
oci://ghcr.io/cnoe-io/charts/ai-platform-engineering \
--version 0.4.14 \
-f your-values.yaml

Upgrade Guide: 0.4.13 → 0.4.14

Overview

0.4.14 is a drop-in upgrade — no values.yaml edits are required. There are no Helm values changes between 0.4.13 and 0.4.14.

Helm Values Changes

No Helm values changes between 0.4.13 and 0.4.14. Drop-in upgrade.

Data Migrations

No data migrations are required. As a one-time cleanup, #1469 drops stale v1-schema indexes from the workflow_runs collection automatically on startup; the operation is idempotent and no operator action is needed.

Upgrade Runbook

1. Update chart version

helm upgrade ai-platform-engineering \
oci://ghcr.io/cnoe-io/charts/ai-platform-engineering \
--version 0.4.14 \
-f your-values.yaml

2. (Optional) Enable /invoke history persistence

If you rely on multi-turn memory through POST /api/v1/chat/invoke, set INVOKE_PERSIST_HISTORY: "true" in your supervisor config. It defaults to false (ephemeral, no MongoDB writes).

3. Verify

kubectl get pods -n <namespace>