refactor(registry): drop deprecated ai actions#2684
Conversation
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
|
✅ No security or compliance issues detected. Reviewed everything up to f6d9306. Security Overview
Detected Code Changes| Change Type | Relevant files ... (code changes summary truncated to fit VCS comment limits.) |
b3a7e3d to
8defaa6
Compare
80bbb96 to
1844014
Compare
There was a problem hiding this comment.
No issues found across 7 files
Confidence score: 5/5
- Automated review surfaced no issues in the provided summaries.
- No files require special attention.
You’re at about 97% of the monthly review limit. You may want to disable incremental reviews to conserve quota. Reviews will continue until that limit is exceeded. If you need help avoiding interruptions, please contact contact@cubic.dev.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1844014b6d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4c363c4535
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
4c363c4 to
573f218
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 573f2182e6
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
573f218 to
033a9bf
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1c407c3c07
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
4 issues found across 27 files (changes from recent commits).
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="packages/tracecat-registry/tracecat_registry/integrations/mcp/runreveal.py">
<violation number="1" location="packages/tracecat-registry/tracecat_registry/integrations/mcp/runreveal.py:20">
P2: This deprecated action still requires a mandatory OAuth secret, so missing credentials can fail execution before the deprecation error is returned. Remove required secrets from this deprecated wrapper.</violation>
</file>
<file name="packages/tracecat-registry/tracecat_registry/core/ai.py">
<violation number="1" location="packages/tracecat-registry/tracecat_registry/core/ai.py:27">
P2: These deprecated AI actions are still exposed in the registry schema but now always throw at runtime, so users can still select actions that are guaranteed to fail.</violation>
</file>
<file name="docs/migration/ai.select_fields.yml">
<violation number="1" location="docs/migration/ai.select_fields.yml:40">
P2: `min_fields`/`max_fields` are not enforced by the output schema, so the action can return an object outside the requested field-count bounds.</violation>
</file>
<file name="docs/migration/ai.slackbot.yml">
<violation number="1" location="docs/migration/ai.slackbot.yml:32">
P1: `user_prompt` can receive `inputs.event` (a dict), but `ai.agent` requires a string prompt. Serialize or extract text from the event before passing it to `user_prompt` to avoid failing the event-driven Slackbot flow.</violation>
</file>
Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.
Re-trigger cubic
033a9bf to
53bb972
Compare
1c407c3 to
2753bcb
Compare
2753bcb to
3527742
Compare
3527742 to
352af90
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 352af90834
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| args: | ||
| user_prompt: >- | ||
| Rank the following documents from most to least relevant according to this criteria: ${{ inputs.criteria_prompt }} |
There was a problem hiding this comment.
Pass model selection into ai.agent migration templates
ai.agent execution validates model_name/model_provider (or a nested model object), but this template never forwards any model fields, so the step fails during argument validation before the agent run starts. The same omission appears in docs/migration/ai.select_field.yml, docs/migration/ai.select_fields.yml, and docs/migration/ai.slackbot.yml, which makes the new migration recipes non-executable unless users manually edit them.
Useful? React with 👍 / 👎.
| You are operating in Slack channel <ChannelID>${{ inputs.channel_id }}</ChannelID>. | ||
| When posting messages, always set `channel` to `${{ inputs.channel_id }}`. |
There was a problem hiding this comment.
Use event channel/thread instead of fixed channel_id
This migrated Slackbot recipe always instructs the agent to post to inputs.channel_id, even when inputs.event is present. Legacy ai.slackbot derived channel/thread IDs from the incoming event payload, so existing event-driven workflows that pass a placeholder or static channel_id will now reply into the wrong channel (or wrong thread) after migration.
Useful? React with 👍 / 👎.
352af90 to
edb5e17
Compare
e83b7ac to
7cf4ee3
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: edb5e17f63
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| user_prompt: >- | ||
| Given this JSON object, select the single most relevant field according to this criteria: ${{ inputs.criteria_prompt }} | ||
|
|
||
| JSON: | ||
| ${{ inputs.json }} |
There was a problem hiding this comment.
Preserve flatten behavior in
ai.select_field migration recipe
The migration recipe drops the legacy flatten option and always sends the raw nested object to the model, so workflows that previously used flatten: true can no longer select fields by flattened JSONPath-style keys and will return different key/value results after migration. In the previous ai.select_field action, flatten changed the candidate key set before ranking; this template never offers that path, so migrating those workflows is not behaviorally equivalent.
Useful? React with 👍 / 👎.
edb5e17 to
f6d9306
Compare
7cf4ee3 to
5284377
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f6d93060e0
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| class ExtractFieldResult(TypedDict): | ||
| key: str | ||
| value: Any | ||
| raise NotImplementedError("Use the 'ai.agent' action instead.") |
There was a problem hiding this comment.
Keep deprecated ai ranking actions executable
Existing workflows can still resolve ai.rank_documents, ai.select_field, and ai.select_fields because they remain registered, but each action now immediately raises NotImplementedError, so runs fail at execution time instead of providing a compatibility path during migration. Fresh evidence in this commit is that the action IDs are no longer removed, yet their implementations at this call site (and the analogous ones later in the file) are hard-fail stubs.
Useful? React with 👍 / 👎.
| if ts: | ||
| await _remove_ack(channel_id, ts) | ||
| return response | ||
| raise NotImplementedError("Use the 'ai.agent' action instead.") |
There was a problem hiding this comment.
Preserve ai.slackbot runtime behavior while deprecated
The ai.slackbot action is still registered under the same public ID but now always raises NotImplementedError, which will break any existing Slackbot workflows immediately on execution. This is a production regression for users who have not yet migrated, because deprecation metadata alone does not prevent those saved workflows from running.
Useful? React with 👍 / 👎.
| ) | ||
| ], | ||
| ), | ||
| raise NotImplementedError( |
There was a problem hiding this comment.
Keep deprecated MCP tool actions callable
Deprecated MCP actions such as tools.github.mcp now resolve but unconditionally raise NotImplementedError, so previously published workflows fail as soon as they invoke these actions. Fresh evidence in this commit is that the registrations were retained with deprecation, but the implementation body at this location (mirrored in the other MCP files changed here) was replaced with a hard failure.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f6d93060e0
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| namespace: ai | ||
| name: rank_documents |
There was a problem hiding this comment.
Avoid action-ID collisions in migration templates
This migration template defines namespace: ai and name: rank_documents, which collides with the still-registered platform action ai.rank_documents in packages/tracecat-registry/tracecat_registry/core/ai.py. If a user syncs this template as a custom action, lock resolution sees the same action in multiple origins and raises RegistryError (tracecat/registry/lock/service.py checks len(matching_origins) > 1), so migrated workflows fail before execution unless they manually disambiguate origins. The same collision pattern also appears in the other migration templates (ai.select_field, ai.select_fields, ai.slackbot).
Useful? React with 👍 / 👎.

Summary by cubic
Removed deprecated AI actions and the ranking stack, consolidating everything on
ai.agent. Simplified MCP integrations to OAuth secrets and removed internal rank endpoints for a smaller, cleaner registry.Refactors
tools.*.mcp,ai.rank_documents,ai.select_field,ai.select_fields,ai.slackbot.tracecat/ai/ranker.py, SDK ranking helpers/types, tests, and/internal/agent/rank*routes/schemas.PYDANTIC_AI_REGISTRY_SECRETS; updatedai.agent/ai.actiondoc_urltohttps://code.claude.com/docs/en/agent-sdk/overview.Migration
ai.agent(and presets) withmcp_integrationsinstead oftools.<provider>.mcp; replace Slackbot and ranking/field selection with anai.agentrun or app logic.docs/migration/ai.rank_documents.yml,ai.select_field.yml,ai.select_fields.yml,ai.slackbot.yml.Written for commit f6d9306. Summary will update on new commits. Review in cubic