Skip to content

Add live artifacts and Composio connector catalog#381

Open
mrcfps wants to merge 128 commits intomainfrom
feature/live-artifacts-spec
Open

Add live artifacts and Composio connector catalog#381
mrcfps wants to merge 128 commits intomainfrom
feature/live-artifacts-spec

Conversation

@mrcfps
Copy link
Copy Markdown
Contributor

@mrcfps mrcfps commented May 3, 2026

Summary

  • Add live artifact contracts, daemon store/routes/CLI tooling, MCP/tool-token integration, and refresh support.
  • Add Composio-backed connector catalog, credential/config flows, connector tool execution, and connector browsing UI.
  • Update web file/artifact surfaces, i18n strings, specs, and tests for the new live artifact + connector workflows.

Validation

  • pnpm install
  • pnpm typecheck
  • pnpm test

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ac920ae57e

ℹ️ 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".

Comment thread apps/daemon/src/connectors/routes.ts Outdated
mrcfps added 4 commits May 4, 2026 21:41
Avoid marking refresh candidates failed after snapshot or state persistence errors by deferring live artifact mutations until the durable refresh metadata is written. Also align connector OAuth callback host validation with daemon loopback handling.\n\nGenerated-By: looper 0.5.4 (runner=fixer, agent=opencode)
…s-spec

Generated-By: looper 0.5.4 (runner=fixer, agent=opencode)
Generated-By: looper 0.5.4 (runner=fixer, agent=opencode)
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ee1c94cbd6

ℹ️ 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".

Comment thread apps/daemon/src/connectors/routes.ts Outdated
Comment thread apps/daemon/src/connectors/service.ts Outdated
Require loopback daemon validation before connector connect side effects and only clear provider-owned connector statuses during credential reset.

Generated-By: looper 0.5.4 (runner=fixer, agent=opencode)
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e9984f90cc

ℹ️ 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".

Comment thread apps/daemon/src/connectors/routes.ts Outdated
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e9984f90cc

ℹ️ 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".

Comment thread apps/daemon/src/connectors/routes.ts Outdated
@chatgpt-codex-connector
Copy link
Copy Markdown

💡 Codex Review

app.delete('/api/connectors/:connectorId/connection', async (req: Request, res: Response) => {

P2 Badge Gate connector disconnect behind local-daemon checks

Apply requireLocalDaemonRequest to the disconnect route as well. DELETE /api/connectors/:connectorId/connection currently executes without the loopback peer/host validation used on connect/refresh endpoints, so in deployments started with a non-loopback bind (for example --host 0.0.0.0), any network client that can reach the daemon can forcibly disconnect connectors and clear stored credentials. This is a state-changing endpoint and should use the same local-only guard as other connector mutation routes.

ℹ️ 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".

1 similar comment
@chatgpt-codex-connector
Copy link
Copy Markdown

💡 Codex Review

app.delete('/api/connectors/:connectorId/connection', async (req: Request, res: Response) => {

P2 Badge Gate connector disconnect behind local-daemon checks

Apply requireLocalDaemonRequest to the disconnect route as well. DELETE /api/connectors/:connectorId/connection currently executes without the loopback peer/host validation used on connect/refresh endpoints, so in deployments started with a non-loopback bind (for example --host 0.0.0.0), any network client that can reach the daemon can forcibly disconnect connectors and clear stored credentials. This is a state-changing endpoint and should use the same local-only guard as other connector mutation routes.

ℹ️ 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".

mrcfps added 2 commits May 4, 2026 23:51
Require local daemon request validation before connector disconnect side effects.

Generated-By: looper 0.5.4 (runner=fixer, agent=opencode)
Generated-By: looper 0.5.4 (runner=fixer, agent=opencode)
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 21c16a94f8

ℹ️ 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".

Comment thread apps/daemon/src/server.ts Outdated
Generated-By: looper 0.5.4 (runner=fixer, agent=opencode)
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: dd26a38486

ℹ️ 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".

Comment thread apps/daemon/src/cli.ts
Route the live-artifacts MCP server before the generic MCP CLI so od mcp live-artifacts starts the dedicated server instead of failing generic argument parsing.\n\nGenerated-By: looper 0.5.4 (runner=fixer, agent=opencode)
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f6b299c549

ℹ️ 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".

Comment thread apps/daemon/src/connectors/service.ts
mrcfps added 2 commits May 5, 2026 01:02
Allow JSON Schema integer connector inputs while preserving fractional-value validation so generated connector tool schemas accept valid page sizes and limits.

Generated-By: looper 0.5.4 (runner=fixer, agent=opencode)
Generated-By: looper 0.5.4 (runner=fixer, agent=opencode)
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 3b2017beb0

ℹ️ 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".

Comment thread packages/contracts/src/errors.ts
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a4c0aa887f

ℹ️ 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".

Comment on lines +150 to +151
if (name === 'live_artifacts_create') {
return await requestJson('/api/tools/live-artifacts/create', { method: 'POST', body: JSON.stringify({ input: args.input ?? {} }) });
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Forward template/provenance fields for MCP artifact writes

The MCP bridge only posts {"input": ...} for live_artifacts_create (and similarly nests only artifactId + input for update), but the daemon tool routes read templateHtml/provenanceJson from the top-level request body. Because the MCP tool schemas also set additionalProperties: false at the top level, MCP callers cannot pass those fields at all, so ACP/MCP artifact create-update flows cannot persist custom template.html or provenance.json and silently fall back to defaults.

Useful? React with 👍 / 👎.

Comment on lines +969 to +970
await writeLiveArtifactRefreshState(paths, nextState);
await Promise.all([
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Persist refresh state only after artifact files are durable

This records lastCommittedRefreshId before writing artifact.json, data.json, preview HTML, and provenance files. If any of those atomic writes fail (e.g., disk full or permission error), the refresh is still marked committed in refresh state and then handled as failed upstream, leaving commit metadata out of sync with live artifact files and skewing stale/ordering logic that relies on lastCommittedRefreshId.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature New feature or enhancement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants