diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 83fe50c7..6987c3d3 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -6,13 +6,13 @@ "url": "https://github.com/jjackson" }, "metadata": { - "version": "0.13.328" + "version": "0.13.330" }, "plugins": [ { "name": "ace", "source": "./", - "version": "0.13.328", + "version": "0.13.330", "description": "AI Connect Engine — orchestrates the CRISPR-Connect lifecycle from idea through app building, Connect setup, LLO management, and closeout" } ] diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 028d6930..13ae57c7 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "ace", - "version": "0.13.328", + "version": "0.13.330", "description": "AI Connect Engine — orchestrates the CRISPR-Connect lifecycle from idea through app building, Connect setup, LLO management, and closeout", "author": { "name": "Jonathan Jackson", diff --git a/CHANGELOG.md b/CHANGELOG.md index 90558a55..3c26c167 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,16 @@ All notable changes to the ACE plugin will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and the plugin follows [semantic versioning](https://semver.org/spec/v2.0.0.html). +## 0.13.330 — 2026-05-22 + +**Update MCP registration-coverage snapshots; register 5 orphan OCS authoring atoms.** + +The `test/mcp/registration-coverage.test.ts` snapshot test had drifted: atoms were added to the connect, ocs, and google-drive MCP servers without updating the expected-count snapshots, and 5 newer OCS authoring atoms (`create_chatbot`, `link_action_to_node`, `add_custom_action`, `add_chatbot_event`, `add_pipeline_node`) were registered on the server but missing from `mcp/ocs/capability-map.ts`, breaking the "every prefixed server tool has a capability-map entry (no orphan atoms)" invariant. + +Snapshot bumps: connect 30 → 47, ocs 27 → 32, google-drive 31 → 32. Added the 5 orphan atoms to the OCS capability-map under the Authoring section with PLAYWRIGHT backend annotations describing their CSRF-protected form views (none yet exposed as first-class REST endpoints). Suite now 1314/1314 passing locally. + +(Note: `## 0.13.329` was the prior CHANGELOG entry for the idea.md cleanup; main's `VERSION` lagged by one bump due to a merge race in PR #402, so this PR jumps to `0.13.330` to bring VERSION + CHANGELOG back in sync.) + ## 0.13.329 — 2026-05-22 **Retire `idea.md` / `--idea` operator-seed pathway.** diff --git a/VERSION b/VERSION index dc9b385f..8bf173bc 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.13.328 +0.13.330 diff --git a/mcp/ocs/capability-map.ts b/mcp/ocs/capability-map.ts index e5f4d08a..2793c2f2 100644 --- a/mcp/ocs/capability-map.ts +++ b/mcp/ocs/capability-map.ts @@ -6,10 +6,15 @@ export interface CapabilityRoute { } export type Capability = - // Authoring (15) + // Authoring (20) | 'clone_chatbot' + | 'create_chatbot' | 'set_chatbot_system_prompt' | 'set_chatbot_pipeline' + | 'add_pipeline_node' + | 'add_custom_action' + | 'link_action_to_node' + | 'add_chatbot_event' | 'create_collection' | 'upload_collection_files' | 'wait_for_collection_indexing' @@ -39,8 +44,13 @@ export type Capability = export const CAPABILITY_MAP: Record = { // Authoring clone_chatbot: { backend: 'PLAYWRIGHT', restTarget: 'POST /api/experiments/' }, + create_chatbot: { backend: 'PLAYWRIGHT', restTarget: 'POST /api/experiments/ (not yet shipped — CSRF-protected ChatbotForm only)' }, set_chatbot_system_prompt: { backend: 'PLAYWRIGHT', restTarget: 'PATCH /api/experiments/{id}/prompt/' }, set_chatbot_pipeline: { backend: 'PLAYWRIGHT', restTarget: 'PATCH /api/experiments/{id}/pipeline/' }, + add_pipeline_node: { backend: 'PLAYWRIGHT', restTarget: 'PATCH /api/pipelines/{id}/nodes/ (not yet shipped — GET/POST pipeline JSON at /pipelines/data/{id}/)' }, + add_custom_action: { backend: 'PLAYWRIGHT', restTarget: 'POST /api/custom_actions/ (not yet shipped — CSRF-protected CustomActionForm only)' }, + link_action_to_node: { backend: 'PLAYWRIGHT', restTarget: 'PATCH /api/pipelines/{id}/nodes/{node_id}/ (not yet shipped — appends to data.params.custom_actions)' }, + add_chatbot_event: { backend: 'PLAYWRIGHT', restTarget: 'POST /api/experiments/{id}/events/ (not yet shipped — CSRF-protected combined-form view)' }, create_collection: { backend: 'PLAYWRIGHT', restTarget: 'POST /api/collections/' }, upload_collection_files: { backend: 'PLAYWRIGHT', restTarget: 'POST /api/collections/{id}/files/' }, wait_for_collection_indexing: { backend: 'PLAYWRIGHT', restTarget: 'GET /api/collections/{id}/files/{fid}/status/' }, diff --git a/package.json b/package.json index 976a6d37..eddbfdad 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ace", - "version": "0.13.328", + "version": "0.13.330", "description": "AI Connect Engine - orchestrator for building Connect Opps using AI", "type": "module", "scripts": { diff --git a/test/mcp/registration-coverage.test.ts b/test/mcp/registration-coverage.test.ts index 78db4b91..4b5fbe21 100644 --- a/test/mcp/registration-coverage.test.ts +++ b/test/mcp/registration-coverage.test.ts @@ -60,7 +60,7 @@ interface ServerSpec { const SERVERS: Record = { connect: { file: 'mcp/connect-server.ts', - expectedCount: 30, + expectedCount: 47, // `connect_*` are Connect atoms; `commcare_*` are CommCare HQ atoms // (build/release/upload-multimedia) registered alongside because they // close the LLO-deploy loop through the same MCP. @@ -71,7 +71,7 @@ const SERVERS: Record = { }, ocs: { file: 'mcp/ocs-server.ts', - expectedCount: 27, + expectedCount: 32, allowedPrefixes: ['ocs_'], capabilityMap: OCS_MAP, capabilityPrefix: 'ocs_', @@ -87,7 +87,7 @@ const SERVERS: Record = { }, 'google-drive': { file: 'mcp/google-drive-server.ts', - expectedCount: 31, + expectedCount: 32, // gdrive bridges four Google APIs — one prefix per surface plus two // custom helpers that aren't in any one namespace. allowedPrefixes: [