Files
PaperClipAI/packages/shared/src/app-definitions.generated.ts
T
DottaandPaperclip 18dac1e1ef feat(connections): add experimental memory providers and remote MCP access (#13942)
## Thinking Path

> - Paperclip manages AI agents and their work.
> - Connections give agents governed access to external tools.
> - Agents need durable memory across tasks and execution environments.
> - Mem0, Zep, Supermemory, Cognee, and Honcho provide hosted memory
tools.
> - This pull request adds their setup flows behind an experimental
toggle.
> - It also delivers assigned MCP tools through the native remote Codex
runner.
> - Operators can connect a provider once and use the same governed
tools locally or in Daytona.

## Linked Issues or Issue Description

**Problem or motivation**

The Apps catalog lacks a complete set of memory providers. Remote native
Codex agents also need access to assigned managed MCP tools without
receiving provider credentials.

**Proposed solution**

Add five memory connectors behind the disabled-by-default Experimental
memory connectors setting. Use the existing connection setup and
permissions UI. Default their tools to Allowed. Preserve company
boundaries, operator permission changes, provider scopes, and audit
attribution.

**Alternatives considered**

Direct provider credentials in each sandbox would duplicate setup and
bypass the managed gateway. The remote runner instead uses its existing
protocol channel to call the gateway on the server.

**Roadmap alignment**

This maintainer-requested experiment supports the Memory / Knowledge and
Connected Apps roadmap areas. It adds provider connections without
introducing a separate memory UI. Related connector authoring
documentation is tracked in #13692; no duplicate memory-provider
implementation was found.

## What Changed

- Add provider definitions, official branding, and the experimental
setting for all five providers.
- Use OAuth for Zep and Supermemory, API credentials for Mem0 and
Honcho, and a bundled Cloud API bridge for Cognee with no runtime
downloads or subprocesses.
- Default memory tools to Allowed and classify destructive actions
explicitly.
- Fix personal remote credential resolution and propagate provider tool
errors.
- Relay assigned managed MCP tools to remote native Codex through the
runner protocol. Recheck current authority for each call and rotate
stale tool contracts.
- Add 21 Storybook states and complete OAuth walkthrough fixtures.
- Document provider research, sanitized tool inventory, and live local
and Daytona proof.

## Verification

- Passed workspace typecheck: `pnpm -r typecheck`.
- Passed production build: `pnpm build`.
- Full local `pnpm test:run`: 13,273 passed, with failures from
process/readiness timeouts under parallel load. Reran all 16 affected
suites with one worker: 456 passed, leaving two macOS `/var` versus
`/private/var` path assertions. Both passed with `TMPDIR=/private/tmp`.
No test failures remain unverified. Latest-head remote CI passes all 54
checks (two optional Storybook jobs skipped). Greptile is 5/5 with no
unresolved findings.
- Latest Cognee gateway regression: 71 passed, including public
deployment without a runtime host and immediate recovery after a
provider error. Bundled bridge tests: 25 passed.
- Browser setup and real agent tasks exercised all five providers. Mem0,
Cognee, Zep, and Honcho have successful store/retrieve proof.
- Supermemory now has scoped read/write consent. Local storage and real
Daytona write, document read, and semantic recall passed; indexing
completion was verified before claiming success.
- All five providers were exercised through a real Daytona sandbox and
its native runner MCP relay. Provider credentials remained on the
server. The final bundled Cognee bridge also passed a fresh Daytona
store/recall run. All disposable sandboxes were removed and verified
absent after testing.
- Storybook is rebuilt and contains the experimental toggle, catalog,
setup, permissions, and error states. The Zep and Supermemory access
steps advance correctly.

## Risks

- Provider OAuth scopes and plan limits remain independent of Paperclip
tool permissions. An Allowed tool can still be rejected by the provider.
- Providers can queue memory indexing; save acceptance does not prove
that semantic recall is ready.
- Remote tool contracts must stay synchronized with current connection
authority. Regression tests cover revocation and stale contracts.
- This change has no database migration. Existing connections remain
usable when the experimental catalog toggle is disabled.

## Model Used

OpenAI Codex, GPT-6 Astra (`gpt-6-astra`), with reasoning, repository
edits, code execution, and browser automation. The exact context window
size is not exposed in this session. Live acceptance agents used
`gpt-5.6-sol`.

## Checklist

- [x] I have included a thinking path that traces from project context
to this change
- [x] I have specified the model used (with version and capability
details)
- [x] I have checked ROADMAP.md and confirmed this PR does not duplicate
planned core work
- [x] I have searched GitHub for duplicate or related PRs and linked
them above
- [x] I have either (a) linked existing issues with `Fixes: #` / `Closes
#` / `Refs #` OR (b) described the issue in-PR following the relevant
issue template
- [x] I have not referenced internal/instance-local Paperclip issues or
links (only public GitHub `#NNN` / `github.com/paperclipai/paperclip`
URLs)
- [x] My branch name describes the change (e.g. `docs/...`, `fix/...`)
and contains no internal Paperclip ticket id or instance-derived details
- [x] I have run tests locally and they pass
- [x] I have added or updated tests where applicable
- [x] I have updated relevant documentation to reflect my changes
- [x] I have considered and documented any risks above
- [x] All Paperclip CI gates are green
- [x] Greptile is 5/5 with no open P2s, recommendations, or follow-ups
- [x] I will address all Greptile and reviewer comments before
requesting merge

---------

Co-authored-by: Paperclip <noreply@paperclip.ing>
2026-09-24 15:54:38 -05:00

82 lines
6.0 KiB
TypeScript

import a0 from "./app-definitions/agentmail.json" with { type: "json" };
import a1 from "./app-definitions/zapier.json" with { type: "json" };
import a2 from "./app-definitions/arcade.json" with { type: "json" };
import a3 from "./app-definitions/executor.json" with { type: "json" };
import a4 from "./app-definitions/railway.json" with { type: "json" };
import a5 from "./app-definitions/github.json" with { type: "json" };
import a6 from "./app-definitions/slack.json" with { type: "json" };
import a7 from "./app-definitions/microsoft-teams.json" with { type: "json" };
import a8 from "./app-definitions/imessage-photon.json" with { type: "json" };
import a9 from "./app-definitions/telegram.json" with { type: "json" };
import a10 from "./app-definitions/discord.json" with { type: "json" };
import a11 from "./app-definitions/notion.json" with { type: "json" };
import a12 from "./app-definitions/posthog.json" with { type: "json" };
import a13 from "./app-definitions/linear.json" with { type: "json" };
import a14 from "./app-definitions/context7.json" with { type: "json" };
import a15 from "./app-definitions/shopify.json" with { type: "json" };
import a16 from "./app-definitions/composio.json" with { type: "json" };
import a17 from "./app-definitions/oauth-generic.json" with { type: "json" };
import a18 from "./app-definitions/api-key-generic.json" with { type: "json" };
import a19 from "./app-definitions/sentry.json" with { type: "json" };
import a20 from "./app-definitions/vercel.json" with { type: "json" };
import a21 from "./app-definitions/anthropic.json" with { type: "json" };
import a22 from "./app-definitions/cognee.json" with { type: "json" };
import a23 from "./app-definitions/jira.json" with { type: "json" };
import a24 from "./app-definitions/airtable.json" with { type: "json" };
import a25 from "./app-definitions/beehiiv.json" with { type: "json" };
import a26 from "./app-definitions/bitly.json" with { type: "json" };
import a27 from "./app-definitions/candid.json" with { type: "json" };
import a28 from "./app-definitions/cloudflare.json" with { type: "json" };
import a29 from "./app-definitions/cloudinary.json" with { type: "json" };
import a30 from "./app-definitions/coda.json" with { type: "json" };
import a31 from "./app-definitions/hugging-face.json" with { type: "json" };
import a32 from "./app-definitions/kernel.json" with { type: "json" };
import a33 from "./app-definitions/local-falcon.json" with { type: "json" };
import a34 from "./app-definitions/make.json" with { type: "json" };
import a35 from "./app-definitions/manufact.json" with { type: "json" };
import a36 from "./app-definitions/miro.json" with { type: "json" };
import a37 from "./app-definitions/netlify.json" with { type: "json" };
import a38 from "./app-definitions/oreilly.json" with { type: "json" };
import a39 from "./app-definitions/planetscale.json" with { type: "json" };
import a40 from "./app-definitions/resend.json" with { type: "json" };
import a41 from "./app-definitions/ticktick.json" with { type: "json" };
import a42 from "./app-definitions/todoist.json" with { type: "json" };
import a43 from "./app-definitions/webflow.json" with { type: "json" };
import a44 from "./app-definitions/wix.json" with { type: "json" };
import a45 from "./app-definitions/brex.json" with { type: "json" };
import a46 from "./app-definitions/clickhouse.json" with { type: "json" };
import a47 from "./app-definitions/egnyte.json" with { type: "json" };
import a48 from "./app-definitions/embat.json" with { type: "json" };
import a49 from "./app-definitions/mixpanel.json" with { type: "json" };
import a50 from "./app-definitions/postman.json" with { type: "json" };
import a51 from "./app-definitions/razorpay.json" with { type: "json" };
import a52 from "./app-definitions/sanity.json" with { type: "json" };
import a53 from "./app-definitions/stripe.json" with { type: "json" };
import a54 from "./app-definitions/supabase.json" with { type: "json" };
import a55 from "./app-definitions/ticket-tailor.json" with { type: "json" };
import a56 from "./app-definitions/asana.json" with { type: "json" };
import a57 from "./app-definitions/box.json" with { type: "json" };
import a58 from "./app-definitions/mem0.json" with { type: "json" };
import a59 from "./app-definitions/pagerduty.json" with { type: "json" };
import a60 from "./app-definitions/similarweb.json" with { type: "json" };
import a61 from "./app-definitions/xero.json" with { type: "json" };
import a62 from "./app-definitions/youcom.json" with { type: "json" };
import a63 from "./app-definitions/fireflies.json" with { type: "json" };
import a64 from "./app-definitions/zep.json" with { type: "json" };
import a65 from "./app-definitions/supermemory.json" with { type: "json" };
import a66 from "./app-definitions/honcho.json" with { type: "json" };
import a67 from "./app-definitions/gmail.json" with { type: "json" };
import a68 from "./app-definitions/google-drive.json" with { type: "json" };
import a69 from "./app-definitions/google-docs.json" with { type: "json" };
import a70 from "./app-definitions/google-sheets.json" with { type: "json" };
import a71 from "./app-definitions/google-slides.json" with { type: "json" };
import a72 from "./app-definitions/google-calendar.json" with { type: "json" };
import a73 from "./app-definitions/google-chat.json" with { type: "json" };
import a74 from "./app-definitions/google-people.json" with { type: "json" };
import a75 from "./app-definitions/google-workspace-search.json" with { type: "json" };
import a76 from "./app-definitions/openai.json" with { type: "json" };
import a77 from "./app-definitions/openrouter.json" with { type: "json" };
import a78 from "./app-definitions/xai.json" with { type: "json" };
import type { AppDefinition } from "./types/app-definition.js";
export const APP_DEFINITIONS=[a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32,a33,a34,a35,a36,a37,a38,a39,a40,a41,a42,a43,a44,a45,a46,a47,a48,a49,a50,a51,a52,a53,a54,a55,a56,a57,a58,a59,a60,a61,a62,a63,a64,a65,a66,a67,a68,a69,a70,a71,a72,a73,a74,a75,a76,a77,a78] as AppDefinition[];