@zackbart/connecta 0.28.1 → 0.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +855 -5
- package/README.md +125 -116
- package/bin/connecta.mjs +121 -139
- package/bin/meta-tool-names.d.mts +2 -0
- package/bin/meta-tool-names.mjs +9 -0
- package/bin/version.mjs +3 -0
- package/dist/access-tokens.js +53 -63
- package/dist/activity-request.js +8 -0
- package/dist/activity.d.ts +76 -42
- package/dist/activity.js +110 -42
- package/dist/argument-redaction.js +230 -0
- package/dist/auth/clerk-sdk/client.d.ts +65 -0
- package/dist/auth/clerk-sdk/client.js +5 -0
- package/dist/auth/clerk-sdk/generated.js +1845 -0
- package/dist/auth/clerk-transport.js +19 -0
- package/dist/auth/clerk.d.ts +17 -7
- package/dist/auth/clerk.js +189 -107
- package/dist/auth/cloudflare-access.js +25 -26
- package/dist/auth/downstream-client-metadata.d.ts +29 -0
- package/dist/auth/downstream-client-metadata.js +133 -0
- package/dist/auth/downstream-oauth.js +1584 -1580
- package/dist/auth/downstream-revocation.js +106 -0
- package/dist/auth/oauth-token-response.js +231 -0
- package/dist/auth/oauth-v2-migration.js +116 -0
- package/dist/auth/static-oauth.js +93 -71
- package/dist/auth-elicitation.js +288 -0
- package/dist/authorization-handoff.js +111 -0
- package/dist/branding.d.ts +8 -16
- package/dist/branding.js +26 -59
- package/dist/byte-read-response.js +39 -0
- package/dist/call-admission.js +12 -16
- package/dist/catalog-cache.js +739 -0
- package/dist/catalog-drift.d.ts +50 -15
- package/dist/catalog-drift.js +365 -128
- package/dist/catalog-fingerprint.js +2 -4
- package/dist/catalog-freshness.js +13 -0
- package/dist/catalog-limits.js +2 -2
- package/dist/catalog-service.js +409 -225
- package/dist/catalog.js +43 -84
- package/dist/concurrency.js +3 -4
- package/dist/config-defaults.d.ts +39 -0
- package/dist/config-defaults.js +46 -0
- package/dist/config-schema.d.ts +181 -0
- package/dist/config-schema.js +435 -0
- package/dist/config-value-sources.js +102 -0
- package/dist/config.d.ts +633 -0
- package/dist/config.js +508 -0
- package/dist/connector-access.d.ts +1 -0
- package/dist/connector-access.js +13 -15
- package/dist/connector-caller.d.ts +8 -0
- package/dist/connector-caller.js +15 -6
- package/dist/connector-scope.js +1 -1
- package/dist/connectors/api-connector.d.ts +59 -7
- package/dist/connectors/api-connector.js +106 -19
- package/dist/connectors/api.js +4 -1
- package/dist/connectors/guarded-fetch.d.ts +144 -0
- package/dist/connectors/guarded-fetch.js +87 -38
- package/dist/connectors/negotiation-cache.js +46 -0
- package/dist/connectors/option-shapes.js +27 -0
- package/dist/connectors/remote-mcp.d.ts +30 -4
- package/dist/connectors/remote-mcp.js +1774 -320
- package/dist/connectors/resource-uri.js +335 -0
- package/dist/credential-contract.d.ts +10 -0
- package/dist/credential-rules.js +1 -3
- package/dist/credential-url.js +108 -0
- package/dist/credentials.d.ts +6 -1
- package/dist/credentials.js +27 -18
- package/dist/d1.d.ts +130 -0
- package/dist/d1.js +290 -0
- package/dist/describe-config.d.ts +165 -0
- package/dist/describe-config.js +315 -0
- package/dist/described.js +106 -0
- package/dist/downstream-input-context.js +128 -0
- package/dist/downstream-input.js +325 -0
- package/dist/errors.d.ts +132 -31
- package/dist/errors.js +175 -87
- package/dist/execute.js +798 -318
- package/dist/executor-admission.d.ts +1 -0
- package/dist/executor-admission.js +11 -15
- package/dist/executor-contract.d.ts +20 -0
- package/dist/executor-contract.js +48 -0
- package/dist/executor-result.js +30 -13
- package/dist/executors/quickjs-child.js +15 -9
- package/dist/executors/quickjs-protocol.js +5 -6
- package/dist/executors/quickjs-runtime.js +152 -59
- package/dist/executors/quickjs.js +49 -39
- package/dist/favicon.js +1 -2
- package/dist/fix-prompt.js +1 -3
- package/dist/guest-runtime.js +238 -0
- package/dist/guest-types.d.ts +218 -0
- package/dist/guest-types.js +1 -0
- package/dist/html-security.js +24 -0
- package/dist/identity.js +1 -3
- package/dist/inbound-credential.js +52 -0
- package/dist/index.d.ts +24 -256
- package/dist/index.js +65 -478
- package/dist/invocation-auth.js +69 -0
- package/dist/invocation.js +262 -79
- package/dist/json-schema.d.ts +1 -1
- package/dist/mcp-client-context.js +35 -0
- package/dist/mcp-result.js +11 -7
- package/dist/meta-output.js +61 -0
- package/dist/meta-tool-names.d.ts +2 -0
- package/dist/meta-tool-names.js +3 -0
- package/dist/meta-tools.js +419 -272
- package/dist/module-contracts.d.ts +8 -23
- package/dist/node.d.ts +0 -2
- package/dist/node.js +2 -2
- package/dist/oauth-callback-outcome.js +1 -3
- package/dist/oauth-handoff.js +194 -0
- package/dist/oauth-sealing.js +20 -0
- package/dist/operator-record.d.ts +137 -0
- package/dist/operator-record.js +420 -0
- package/dist/operator-ui/assets.js +31 -0
- package/dist/operator-ui/contract.d.ts +72 -0
- package/dist/operator-ui/contract.js +1 -0
- package/dist/operator-ui/fix-prompts.d.ts +18 -0
- package/dist/operator-ui/generated.js +5 -4
- package/dist/operator-ui/model.d.ts +12 -87
- package/dist/operator-ui/model.js +2 -9
- package/dist/operator-ui/setup-commands.js +1 -3
- package/dist/operator-ui/view.d.ts +323 -0
- package/dist/operator-ui/view.js +62 -189
- package/dist/page-styles.js +2 -3
- package/dist/program-result.js +5 -0
- package/dist/program-source.js +14 -2
- package/dist/{exempt-writes.js → program-writes.js} +60 -19
- package/dist/provider.d.ts +142 -0
- package/dist/provider.js +187 -0
- package/dist/providers/_shared/google/result-size.js +57 -0
- package/dist/providers/_shared/google/service-account.d.ts +58 -0
- package/dist/providers/_shared/google/service-account.js +500 -0
- package/dist/providers/_shared/google/workspace.d.ts +276 -0
- package/dist/providers/_shared/google/workspace.js +518 -0
- package/dist/providers/_shared/request-token.js +83 -0
- package/dist/providers/{basecamp.d.ts → basecamp/index.d.ts} +6 -28
- package/dist/providers/basecamp/index.js +997 -0
- package/dist/providers/basecamp/skill.generated.js +9 -0
- package/dist/providers/{breeze.d.ts → breeze/index.d.ts} +2 -2
- package/dist/providers/{breeze.js → breeze/index.js} +184 -140
- package/dist/providers/breeze/skill.generated.js +9 -0
- package/dist/providers/{ccb.d.ts → ccb/index.d.ts} +2 -2
- package/dist/providers/{ccb.js → ccb/index.js} +271 -116
- package/dist/providers/ccb/skill.generated.js +9 -0
- package/dist/providers/{cloudflare.d.ts → cloudflare/index.d.ts} +8 -7
- package/dist/providers/{cloudflare.js → cloudflare/index.js} +171 -738
- package/dist/providers/cloudflare/skill.generated.js +10 -0
- package/dist/providers/docs/index.d.ts +54 -0
- package/dist/providers/docs/index.js +1237 -0
- package/dist/providers/docs/skill.generated.js +9 -0
- package/dist/providers/drive/index.d.ts +53 -0
- package/dist/providers/drive/index.js +1523 -0
- package/dist/providers/drive/skill.generated.js +9 -0
- package/dist/providers/forms/index.d.ts +54 -0
- package/dist/providers/forms/index.js +1217 -0
- package/dist/providers/forms/skill.generated.js +11 -0
- package/dist/providers/github/auth.d.ts +32 -0
- package/dist/providers/github/auth.js +361 -0
- package/dist/providers/github/hosted.js +218 -0
- package/dist/providers/github/index.d.ts +13 -0
- package/dist/providers/github/index.js +140 -0
- package/dist/providers/github/key.js +100 -0
- package/dist/providers/github/rest.js +321 -0
- package/dist/providers/github/scope.d.ts +29 -0
- package/dist/providers/github/scope.js +124 -0
- package/dist/providers/github/skill.generated.js +8 -0
- package/dist/providers/gmail/index.d.ts +51 -0
- package/dist/providers/gmail/index.js +1436 -0
- package/dist/providers/gmail/skill.generated.js +9 -0
- package/dist/providers/infisical/index.d.ts +7 -0
- package/dist/providers/infisical/index.js +713 -0
- package/dist/providers/infisical/skill.generated.js +8 -0
- package/dist/providers/{linear.d.ts → linear/index.d.ts} +11 -14
- package/dist/providers/linear/index.js +352 -0
- package/dist/providers/linear/skill.generated.js +8 -0
- package/dist/providers/{mixpanel.d.ts → mixpanel/index.d.ts} +5 -10
- package/dist/providers/mixpanel/index.js +416 -0
- package/dist/providers/mixpanel/skill.generated.js +9 -0
- package/dist/providers/{notion.d.ts → notion/index.d.ts} +8 -8
- package/dist/providers/{notion.js → notion/index.js} +226 -239
- package/dist/providers/notion/skill.generated.js +10 -0
- package/dist/providers/{overflow.d.ts → overflow/index.d.ts} +2 -2
- package/dist/providers/{overflow.js → overflow/index.js} +74 -111
- package/dist/providers/overflow/skill.generated.js +8 -0
- package/dist/providers/{planning-center.d.ts → planning-center/index.d.ts} +2 -2
- package/dist/providers/{planning-center.js → planning-center/index.js} +264 -104
- package/dist/providers/planning-center/skill.generated.js +10 -0
- package/dist/providers/{revenuecat.d.ts → revenuecat/index.d.ts} +5 -10
- package/dist/providers/revenuecat/index.js +557 -0
- package/dist/providers/revenuecat/skill.generated.js +11 -0
- package/dist/providers/sheets/index.d.ts +54 -0
- package/dist/providers/sheets/index.js +1237 -0
- package/dist/providers/sheets/skill.generated.js +10 -0
- package/dist/providers/slides/index.d.ts +53 -0
- package/dist/providers/slides/index.js +2645 -0
- package/dist/providers/slides/skill.generated.js +9 -0
- package/dist/providers/{stripe.d.ts → stripe/index.d.ts} +5 -12
- package/dist/providers/stripe/index.js +266 -0
- package/dist/providers/stripe/skill.generated.js +11 -0
- package/dist/providers/{tithely.d.ts → tithely/index.d.ts} +2 -2
- package/dist/providers/{tithely.js → tithely/index.js} +60 -91
- package/dist/providers/tithely/skill.generated.js +8 -0
- package/dist/providers/{vercel.d.ts → vercel/index.d.ts} +8 -8
- package/dist/providers/vercel/index.js +1038 -0
- package/dist/providers/vercel/mcp-ownership.js +212 -0
- package/dist/providers/vercel/skill.generated.js +11 -0
- package/dist/registry.d.ts +110 -171
- package/dist/registry.js +588 -927
- package/dist/request-state.js +21 -0
- package/dist/resource-read.js +103 -0
- package/dist/result-shapes.js +17 -49
- package/dist/retired-toolkits.js +1 -1
- package/dist/routes/access-tokens.js +3 -6
- package/dist/routes/activity-context.js +21 -0
- package/dist/routes/activity-disclosure.js +40 -0
- package/dist/routes/activity.js +59 -21
- package/dist/routes/actor-labels.js +3 -50
- package/dist/routes/connect.js +221 -0
- package/dist/routes/credentials.js +15 -27
- package/dist/routes/mcp.js +365 -130
- package/dist/routes/oauth-client-metadata.js +15 -0
- package/dist/routes/oauth-management.js +45 -107
- package/dist/routes/oauth.js +110 -57
- package/dist/routes/operator.js +3 -3
- package/dist/routes/shared.d.ts +25 -64
- package/dist/routes/shared.js +160 -80
- package/dist/routes/skills.js +30 -0
- package/dist/routes/ui-config.js +225 -0
- package/dist/routes/ui-data.js +40 -35
- package/dist/routes/ui.js +66 -56
- package/dist/runtime/admission.js +4 -2
- package/dist/runtime/call-admission.js +3 -1
- package/dist/runtime/connector-scope.js +1 -4
- package/dist/runtime/run.js +10 -39
- package/dist/runtime/services.js +12 -117
- package/dist/runtime/shared-read.js +1 -3
- package/dist/runtime/storage.js +8 -1
- package/dist/sent-secrets.d.ts +93 -0
- package/dist/sent-secrets.js +1013 -0
- package/dist/server.js +28 -71
- package/dist/skills.js +416 -174
- package/dist/sqlite.d.ts +48 -0
- package/dist/sqlite.js +181 -0
- package/dist/storage/keys.js +443 -0
- package/dist/storage/memory.js +16 -4
- package/dist/storage/sql.d.ts +66 -0
- package/dist/storage/sql.js +543 -0
- package/dist/timeout.js +4 -2
- package/dist/tool-name.js +17 -0
- package/dist/tool-safety.d.ts +9 -35
- package/dist/tool-safety.js +20 -40
- package/dist/types.d.ts +336 -56
- package/dist/types.js +0 -1
- package/dist/ui.d.ts +7 -19
- package/dist/ui.js +76 -90
- package/dist/url-safety.js +3 -6
- package/dist/usage-guide.js +146 -0
- package/dist/validate.d.ts +7 -0
- package/dist/validate.js +309 -47
- package/dist/version.d.ts +1 -7
- package/dist/version.js +3 -7
- package/dist/worker.d.ts +11 -0
- package/dist/worker.js +435 -0
- package/documentation/README.md +63 -0
- package/documentation/architecture.md +696 -231
- package/documentation/auth.md +1069 -546
- package/documentation/code-mode.md +662 -356
- package/documentation/deploying.md +146 -0
- package/documentation/integrating.md +159 -0
- package/documentation/meta-tools.md +570 -216
- package/documentation/operating.md +135 -0
- package/documentation/operator-tests.md +97 -0
- package/documentation/operator-ui.md +132 -0
- package/documentation/provider-migration-0.29.md +65 -0
- package/examples/worker/AGENTS.md +34 -12
- package/examples/worker/README.md +293 -255
- package/examples/worker/kv-to-d1.wrangler.jsonc +26 -0
- package/examples/worker/scripts/copy-kv-to-d1.mjs +162 -0
- package/examples/worker/src/connecta.config.ts +151 -0
- package/examples/worker/src/index.ts +14 -197
- package/examples/worker/wrangler.jsonc +15 -35
- package/package.json +126 -54
- package/templates/node/.dockerignore +1 -2
- package/templates/node/.env.example +20 -21
- package/templates/node/AGENTS.md +21 -17
- package/templates/node/Dockerfile +3 -5
- package/templates/node/README.md +140 -58
- package/templates/node/docker-compose.yml +11 -12
- package/templates/node/package.json +4 -2
- package/templates/node/src/connecta.config.ts +119 -0
- package/templates/node/src/index.ts +9 -154
- package/templates/node/src/provision-token.ts +17 -0
- package/AGENTS.md +0 -170
- package/dist/artifacts/connector.d.ts +0 -58
- package/dist/artifacts/connector.js +0 -730
- package/dist/artifacts/document.js +0 -86
- package/dist/artifacts/guide.js +0 -140
- package/dist/artifacts/html-scan.js +0 -329
- package/dist/artifacts/json.js +0 -78
- package/dist/artifacts/kv-store.d.ts +0 -20
- package/dist/artifacts/kv-store.js +0 -140
- package/dist/artifacts/markdown.js +0 -478
- package/dist/artifacts/module.d.ts +0 -37
- package/dist/artifacts/module.js +0 -66
- package/dist/artifacts/operations.d.ts +0 -197
- package/dist/artifacts/operations.js +0 -1002
- package/dist/artifacts/refresh.d.ts +0 -55
- package/dist/artifacts/refresh.js +0 -236
- package/dist/artifacts/routes.js +0 -206
- package/dist/artifacts/types.d.ts +0 -214
- package/dist/artifacts/types.js +0 -22
- package/dist/artifacts/validate.d.ts +0 -62
- package/dist/artifacts/validate.js +0 -651
- package/dist/artifacts.d.ts +0 -6
- package/dist/artifacts.js +0 -9
- package/dist/auth/bearer.d.ts +0 -11
- package/dist/auth/bearer.js +0 -50
- package/dist/providers/basecamp.js +0 -445
- package/dist/providers/linear.js +0 -217
- package/dist/providers/mixpanel.js +0 -247
- package/dist/providers/revenuecat.js +0 -317
- package/dist/providers/stripe.js +0 -253
- package/dist/providers/vercel.js +0 -1253
- package/dist/storage/file.d.ts +0 -15
- package/dist/storage/file.js +0 -455
- package/ethos.md +0 -93
- package/examples/worker/src/cloudflare-kv.ts +0 -43
- package/examples/worker/src/d1-activity-row.ts +0 -155
- package/examples/worker/src/d1-activity.ts +0 -147
- package/examples/worker/src/d1-storage.ts +0 -138
- package/examples/worker/src/r2-artifact-blobs.ts +0 -29
- package/templates/node/src/file-activity.ts +0 -182
package/README.md
CHANGED
|
@@ -2,129 +2,144 @@
|
|
|
2
2
|
|
|
3
3
|

|
|
4
4
|
|
|
5
|
-
One
|
|
6
|
-
|
|
5
|
+
One connection between your agent and the services you choose.
|
|
6
|
+
|
|
7
|
+
Connecta brings your MCP servers and HTTP APIs together behind one endpoint.
|
|
8
|
+
Connect your agent once, then choose which integrations it can use. You run
|
|
9
|
+
Connecta yourself, on your own machine or infrastructure.
|
|
7
10
|
|
|
8
11
|
## The mental model
|
|
9
12
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
4. If the agent wants to change something — create, update, delete — it
|
|
21
|
-
cannot do that from a program, unless your config exempts that tool. The
|
|
22
|
-
program refuses the write before anything is sent and hands back the exact
|
|
23
|
-
call; the agent makes it through `call_destructive_tool`, one visible call
|
|
24
|
-
your MCP client can put in front of you first.
|
|
25
|
-
|
|
26
|
-
Credentials never leave the server. The program never sees them, and neither
|
|
27
|
-
does the agent.
|
|
13
|
+
Ask your agent to find open issues, compare them with customer feedback, or
|
|
14
|
+
prepare a report. Connecta gives it a small set of tools for finding and using
|
|
15
|
+
the services you connected, without loading every service's tool definitions
|
|
16
|
+
into the conversation.
|
|
17
|
+
|
|
18
|
+
The agent writes a short program that runs in a sandbox beside those
|
|
19
|
+
integrations. It can gather results, combine them, and return the parts that
|
|
20
|
+
answer your question. Fifty issues can become a short list grouped by owner
|
|
21
|
+
before the result reaches the conversation. The agent writes the code; you
|
|
22
|
+
ask for the work.
|
|
28
23
|
|
|
29
24
|
```mermaid
|
|
30
|
-
flowchart
|
|
31
|
-
|
|
25
|
+
flowchart LR
|
|
26
|
+
Agent["Your agent"] <-->|"One connection"| Connecta["Your Connecta deployment"]
|
|
27
|
+
Connecta <--> Work["Work tools<br/>Linear, GitHub, Notion"]
|
|
28
|
+
Connecta <--> Business["Business services<br/>Stripe, RevenueCat, Mixpanel"]
|
|
29
|
+
Connecta <--> Yours["Your other services<br/>Remote MCP servers and HTTP APIs"]
|
|
32
30
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
Explicit["call_destructive_tool<br/>one visible call per write<br/>your client can ask you first"]
|
|
36
|
-
end
|
|
31
|
+
style Connecta fill:#e0e7ff,stroke:#4338ca,color:#1e1b4b,stroke-width:2px
|
|
32
|
+
```
|
|
37
33
|
|
|
38
|
-
|
|
34
|
+
You choose which services to connect and who can use them. Your agent keeps
|
|
35
|
+
the same connection as those services change.
|
|
39
36
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
37
|
+
## From a question to an answer
|
|
38
|
+
|
|
39
|
+
Say you ask, "Which open issues affect our highest-value customers?" Your agent
|
|
40
|
+
can gather information from your issue tracker and customer records, combine
|
|
41
|
+
it inside Connecta, and bring back a focused answer.
|
|
45
42
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
43
|
+
```mermaid
|
|
44
|
+
flowchart TB
|
|
45
|
+
Question["You ask a question"] --> Plan["Your agent works out what to look up"]
|
|
46
|
+
Plan --> Gather["A program in Connecta gathers the relevant records"]
|
|
47
|
+
Gather --> Tracker["Open issues from your tracker"]
|
|
48
|
+
Gather --> Customers["Customer records from a connected service"]
|
|
49
|
+
Tracker --> Combine["The program matches, filters, and groups the results"]
|
|
50
|
+
Customers --> Combine
|
|
51
|
+
Combine --> Answer["Your agent explains the answer"]
|
|
52
|
+
|
|
53
|
+
style Combine fill:#e0e7ff,stroke:#4338ca,color:#1e1b4b,stroke-width:2px
|
|
54
|
+
style Answer fill:#dcfce7,stroke:#15803d,color:#14532d
|
|
57
55
|
```
|
|
58
56
|
|
|
59
|
-
|
|
57
|
+
The records are an example; the available information depends on the services
|
|
58
|
+
and access you have configured. Processing results inside Connecta keeps the
|
|
59
|
+
conversation focused on the answer.
|
|
60
60
|
|
|
61
61
|
## What you can do with it
|
|
62
62
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
and
|
|
63
|
+
Connect hosted MCP services, add an internal HTTP API, and let the agent work
|
|
64
|
+
across them in one task. Changing your connected services does not require
|
|
65
|
+
changing the agent's connection. Your deployment decides which services and
|
|
66
|
+
operations each caller can reach.
|
|
67
|
+
|
|
68
|
+
Connecta includes maintained connections for <!-- providers:start -->Basecamp, Breeze ChMS, Church Community Builder, Cloudflare, GitHub, Gmail, Google Docs, Google Drive, Google Forms, Google Sheets, Google Slides, Infisical, Linear, Mixpanel, Notion, Overflow, Planning Center, RevenueCat, Stripe, Tithe.ly, and Vercel<!-- providers:end -->.
|
|
69
|
+
Each connection has its own setup guide.
|
|
70
|
+
Notion, Vercel, and Cloudflare offer hosted MCP connections and selected HTTP
|
|
71
|
+
API capabilities. You can also connect other remote MCP servers or define the
|
|
72
|
+
operations you need from an HTTP API.
|
|
73
|
+
|
|
74
|
+
Google Workspace connections use the account your deployment assigns to each
|
|
75
|
+
signed-in person. A Workspace administrator authorizes them for your domain.
|
|
76
|
+
Gmail reads mail and writes drafts, but does not send mail. Google Drive can
|
|
77
|
+
read, write, and share files, but does not permanently delete them. Available
|
|
78
|
+
operations and account access depend on the integration and your deployment.
|
|
79
|
+
|
|
80
|
+
Large results need not fill the conversation. The agent can filter and
|
|
81
|
+
summarize them in its program, or read a large result in smaller pieces.
|
|
82
|
+
|
|
83
|
+
## Writes, credentials, and access
|
|
84
|
+
|
|
85
|
+
Connecta distinguishes reads from writes. By default, programs can read, and
|
|
86
|
+
each change uses a separate visible tool call. Your agent's host controls
|
|
87
|
+
whether it asks for approval. You can explicitly allow programs to make
|
|
88
|
+
changes too; the host then sees the program tool as a write. This choice does
|
|
89
|
+
not give a caller access to additional services.
|
|
90
|
+
|
|
91
|
+
```mermaid
|
|
92
|
+
flowchart TB
|
|
93
|
+
Change["Your agent wants to change something"] --> Choice{"Are programs allowed<br/>to make changes?"}
|
|
94
|
+
Choice -->|"Default: no"| Separate["A separate visible call for each change"]
|
|
95
|
+
Choice -->|"Explicit choice: yes"| Program["A program that can make changes"]
|
|
96
|
+
Separate --> Host["Your agent's host handles approval"]
|
|
97
|
+
Program --> Host
|
|
98
|
+
Host --> Access["Connecta checks the caller's access"]
|
|
99
|
+
Access --> Services["The connected service receives the change"]
|
|
100
|
+
|
|
101
|
+
style Host fill:#fef3c7,stroke:#b45309,color:#78350f
|
|
102
|
+
style Access fill:#e0e7ff,stroke:#4338ca,color:#1e1b4b,stroke-width:2px
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Connecta handles integration credentials on the server. Its sandbox does not
|
|
106
|
+
receive them. Optional encrypted storage protects saved credentials. Connections can use
|
|
107
|
+
shared credentials or a person's own account, with access rules set by the
|
|
108
|
+
deployment owner. Permission to use a connection is separate from permission
|
|
109
|
+
to manage its credentials.
|
|
110
|
+
|
|
111
|
+
People sign in through Clerk on Node or Cloudflare Access on Workers. Machine
|
|
112
|
+
clients use tokens issued by your Connecta deployment. A deployment can serve
|
|
113
|
+
several people within one tenant, each with the access you assign.
|
|
114
|
+
|
|
115
|
+
## A place to see your connections
|
|
116
|
+
|
|
117
|
+
The optional operator UI shows connected services, available tools, access,
|
|
118
|
+
and configuration. Authorized people can connect accounts, manage credentials,
|
|
119
|
+
and issue client tokens. Optional activity history shows who called what,
|
|
120
|
+
when, and whether it worked, without recording arguments, results, or program
|
|
121
|
+
code. The UI's controls follow the signed-in person's permissions.
|
|
122
|
+
|
|
123
|
+
Your agent or developer changes the integrations and access rules in deployment
|
|
124
|
+
code. The UI helps you inspect them and manage authentication.
|
|
125
|
+
|
|
126
|
+
## Where it runs
|
|
127
|
+
|
|
128
|
+
Run Connecta locally or on a server with Node, including in Docker, or host it
|
|
129
|
+
on Cloudflare Workers. Both offer the same agent tools. Running programs on
|
|
130
|
+
Workers requires Cloudflare's Workers Paid plan.
|
|
119
131
|
|
|
120
132
|
## Getting started
|
|
121
133
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
134
|
+
Give your agent the [agent documentation](./documentation/README.md) and ask it
|
|
135
|
+
to set up Connecta with the integrations you want. Tell it where you want to
|
|
136
|
+
run it and who should have access. The setup guides cover Node, Docker, and
|
|
137
|
+
Cloudflare Workers, including connecting your agent client.
|
|
138
|
+
|
|
139
|
+
<a id="existing-client-tokens"></a>
|
|
140
|
+
|
|
141
|
+
For an existing deployment, ask your agent to follow the
|
|
142
|
+
[upgrade guidance](./documentation/deploying.md#upgrade-an-existing-deployment).
|
|
128
143
|
|
|
129
144
|
## Status
|
|
130
145
|
|
|
@@ -132,13 +147,7 @@ Built for its author's deployments first and published openly. Breaking
|
|
|
132
147
|
changes are expected before 1.0. See the [changelog](./CHANGELOG.md) and
|
|
133
148
|
[security policy](./SECURITY.md).
|
|
134
149
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
`accessTokens: true` with `accessTokens: accessTokens(storage)`, and keep the
|
|
140
|
-
same persistent storage namespace and identity/tool/pool grant rules. Enable
|
|
141
|
-
`identity.accessTokenManagement` only for the interactive operators who should
|
|
142
|
-
manage tokens. New issuance needs storage with atomic `compareAndSet`; older
|
|
143
|
-
storage adapters can still verify existing tokens. See the package's
|
|
144
|
-
`documentation/auth.md` for the migration and storage requirements.
|
|
150
|
+
The [principles](https://github.com/zackbart/connecta/blob/main/PRINCIPLES.md)
|
|
151
|
+
state the goals and tested rules. [Decision records](https://github.com/zackbart/connecta/tree/main/decisions)
|
|
152
|
+
explain past choices. [GitHub issues](https://github.com/zackbart/connecta/issues)
|
|
153
|
+
track planned work; a plan is not a shipped feature.
|