@zackbart/connecta 0.29.0 → 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 +67 -0
- package/README.md +123 -134
- package/bin/connecta.mjs +13 -2
- package/bin/version.mjs +1 -1
- package/dist/argument-redaction.js +230 -0
- package/dist/auth-elicitation.js +14 -9
- package/dist/authorization-handoff.js +111 -0
- package/dist/catalog-cache.js +2 -2
- package/dist/catalog-service.js +103 -63
- package/dist/config.d.ts +2 -0
- package/dist/config.js +12 -7
- package/dist/connectors/guarded-fetch.js +3 -3
- package/dist/connectors/negotiation-cache.js +1 -1
- package/dist/downstream-input-context.js +9 -0
- package/dist/downstream-input.js +13 -11
- package/dist/errors.d.ts +36 -12
- package/dist/errors.js +19 -9
- package/dist/execute.js +375 -43
- package/dist/executor-result.js +11 -9
- package/dist/executors/quickjs-child.js +12 -5
- package/dist/executors/quickjs-protocol.js +5 -6
- package/dist/executors/quickjs-runtime.js +6 -1
- package/dist/executors/quickjs.js +20 -4
- package/dist/guest-runtime.js +52 -2
- package/dist/guest-types.d.ts +47 -5
- package/dist/index.d.ts +1 -1
- package/dist/invocation.js +40 -14
- package/dist/meta-output.js +0 -15
- package/dist/meta-tools.js +166 -95
- package/dist/oauth-handoff.js +88 -11
- package/dist/program-result.js +5 -0
- package/dist/program-writes.js +5 -1
- package/dist/provider.d.ts +1 -1
- package/dist/providers/_shared/google/workspace.d.ts +1 -1
- package/dist/providers/_shared/request-token.js +83 -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/registry.d.ts +8 -6
- package/dist/registry.js +134 -61
- package/dist/resource-read.js +4 -1
- package/dist/routes/mcp.js +11 -2
- package/dist/sent-secrets.d.ts +54 -13
- package/dist/sent-secrets.js +770 -231
- package/dist/skills.js +26 -16
- package/dist/sqlite.js +21 -6
- package/dist/storage/keys.js +20 -5
- package/dist/storage/memory.js +9 -4
- package/dist/storage/sql.js +18 -9
- package/dist/types.d.ts +17 -3
- package/dist/usage-guide.js +49 -40
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/worker.js +2 -1
- package/documentation/README.md +63 -0
- package/documentation/architecture.md +121 -89
- package/documentation/auth.md +138 -5
- package/documentation/code-mode.md +224 -107
- package/documentation/deploying.md +146 -0
- package/documentation/integrating.md +159 -0
- package/documentation/meta-tools.md +135 -30
- package/documentation/operating.md +135 -0
- package/documentation/operator-tests.md +4 -0
- package/documentation/operator-ui.md +132 -0
- package/documentation/provider-migration-0.29.md +5 -0
- package/examples/worker/README.md +7 -0
- package/package.json +7 -1
- package/templates/node/README.md +7 -0
- package/templates/node/package.json +1 -1
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# Operating an endpoint
|
|
2
|
+
|
|
3
|
+
Use this guide as an agent connected to an existing Connecta endpoint. Setup
|
|
4
|
+
and credentials are the deployment operator's responsibility; use
|
|
5
|
+
[Deploying Connecta](./deploying.md) if you are that operator.
|
|
6
|
+
[All agent routes](./README.md) are in the index.
|
|
7
|
+
|
|
8
|
+
## Choose the call path
|
|
9
|
+
|
|
10
|
+
Connecta exposes six top-level tools. Read [the tool table](./meta-tools.md#the-six-tools)
|
|
11
|
+
for exact arguments and result envelopes. Follow the endpoint's supplied
|
|
12
|
+
instructions and `skills` usage guide for deployment-specific context.
|
|
13
|
+
|
|
14
|
+
| Work | Use |
|
|
15
|
+
| ------------------------------------------------------------------ | --------------------------------------------------------- |
|
|
16
|
+
| One known read, with usable arguments and a small result | `call_tool` |
|
|
17
|
+
| Discover a tool, chain calls, combine services, or reduce a result | `execute_code` |
|
|
18
|
+
| One write on a read-only endpoint | `call_destructive_tool` |
|
|
19
|
+
| Obtain connector instructions | `skills` with the returned guide name |
|
|
20
|
+
| Start a required authentication handoff | `authorize_connector`, using the returned recovery action |
|
|
21
|
+
|
|
22
|
+
The endpoint's trust is part of its tool descriptions. On a `trusted` endpoint,
|
|
23
|
+
programs may write within the caller's grants, and `execute_code` is annotated
|
|
24
|
+
as a write. On `read-only`, every write is a separate top-level call. The host
|
|
25
|
+
controls approval. Never change pool, identity, or trust to work around a refusal.
|
|
26
|
+
[Routing between the call surfaces](./meta-tools.md#routing-between-the-call-surfaces)
|
|
27
|
+
owns the full decision rules.
|
|
28
|
+
|
|
29
|
+
## Discover before guessing
|
|
30
|
+
|
|
31
|
+
Use two to four distinctive action/object terms for each operation, and name
|
|
32
|
+
the connector when it is obvious. Read `catalogErrors`, `absence`, classification,
|
|
33
|
+
and required inputs before selecting a result. An empty search may mean a
|
|
34
|
+
failed catalog or a service outside the caller's grants.
|
|
35
|
+
|
|
36
|
+
For normal reads, keep discovery, calls, and reduction in one program when the
|
|
37
|
+
schemas suffice; return the answer rather than catalog matches. Use top-level
|
|
38
|
+
`search_tools` for catalog inspection or to discover a write on a read-only
|
|
39
|
+
endpoint, then dispatch each write with `call_destructive_tool`. An unfamiliar
|
|
40
|
+
read result may return a bounded sample for inspection before the next program.
|
|
41
|
+
|
|
42
|
+
Use the exact returned `address`, including punctuation. A TypeScript signature
|
|
43
|
+
is guidance for writing JavaScript; do not paste types into executable code.
|
|
44
|
+
If a schema is truncated or exact constraints matter, describe the address with
|
|
45
|
+
`format: "json"`. Read a returned `guide` through `skills` or
|
|
46
|
+
`connecta.skill` before relying on provider-specific conventions.
|
|
47
|
+
[Discovery context](./meta-tools.md#discovery-context) and
|
|
48
|
+
[guest search](./code-mode.md#connectasearch) define these results.
|
|
49
|
+
|
|
50
|
+
## Call, combine, and reduce
|
|
51
|
+
|
|
52
|
+
A program is one JavaScript `async` arrow expression. It has the `connecta`
|
|
53
|
+
guest API and captured console output, with no portable imports, filesystem,
|
|
54
|
+
network access, or credentials. Downstream calls return an envelope; read its
|
|
55
|
+
`data` rather than treating the envelope as the provider's result.
|
|
56
|
+
|
|
57
|
+
This illustrative tracker has a `list_issues` read accepting `state` and
|
|
58
|
+
returning `data.nodes`. Discover its address, call it, and group the identifiers
|
|
59
|
+
in one program:
|
|
60
|
+
|
|
61
|
+
```js
|
|
62
|
+
async () => {
|
|
63
|
+
const page = await connecta.search({
|
|
64
|
+
connector: "tracker",
|
|
65
|
+
query: "list issues",
|
|
66
|
+
safety: "readOnly",
|
|
67
|
+
});
|
|
68
|
+
if (page.catalogErrors.length || page.absence) {
|
|
69
|
+
return { gap: page.catalogErrors, absence: page.absence };
|
|
70
|
+
}
|
|
71
|
+
const tool = page.tools.find(t => t.name === "list_issues");
|
|
72
|
+
if (!tool) return { gap: "list_issues unavailable" };
|
|
73
|
+
const { data, format } = await connecta.call(tool.address, {
|
|
74
|
+
state: "started",
|
|
75
|
+
});
|
|
76
|
+
if (format !== "json" || !Array.isArray(data?.nodes)) {
|
|
77
|
+
return { gap: "Expected a JSON issues collection" };
|
|
78
|
+
}
|
|
79
|
+
const byOwner = Object.create(null);
|
|
80
|
+
for (const issue of data.nodes) {
|
|
81
|
+
const owner = issue.assignee?.name ?? "unassigned";
|
|
82
|
+
(byOwner[owner] ??= []).push(issue.identifier);
|
|
83
|
+
}
|
|
84
|
+
return byOwner;
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
`tracker.list_issues` is illustrative, not a built-in address. Discover the real
|
|
89
|
+
connector's schemas and pagination before adapting this program. Keep loops and
|
|
90
|
+
parallel work bounded. [Parallel calls](./code-mode.md#parallel-calls),
|
|
91
|
+
[results and projection](./code-mode.md#results-and-projection), and
|
|
92
|
+
[cancellation and limits](./code-mode.md#cancellation-and-limits) own those rules.
|
|
93
|
+
|
|
94
|
+
Discovery may label an output schema `observed`. It records field names and
|
|
95
|
+
broad types from successful reads in bounded runtime memory, with no scalar
|
|
96
|
+
values. Treat it as evidence, not a provider contract; handle missing fields.
|
|
97
|
+
|
|
98
|
+
## Large results and resources
|
|
99
|
+
|
|
100
|
+
Direct calls may return a preview and a result handle. Page the handle through
|
|
101
|
+
`connecta.result` in a program using the returned offset and byte limits, or
|
|
102
|
+
reduce the data in the original program. Handles are short-lived and bound to
|
|
103
|
+
the admitted caller, endpoint/pool, and current grants. Never invent one or pass
|
|
104
|
+
it between identities. [Paging](./meta-tools.md#paging-with-connectaresult)
|
|
105
|
+
owns the envelope and expiry rules.
|
|
106
|
+
|
|
107
|
+
For resources, use the exposed resource inventory and `connecta.read`; do not
|
|
108
|
+
fetch an arbitrary URL. [Resource reads](./code-mode.md#connectaread) describe
|
|
109
|
+
which URIs may be read. Connector guides and native skills are described in
|
|
110
|
+
[skills](./meta-tools.md#connector-guides-and-skills).
|
|
111
|
+
|
|
112
|
+
## Recover without replaying a write
|
|
113
|
+
|
|
114
|
+
Read typed failures and their `nextAction`. Authorization recovery can point
|
|
115
|
+
to consent, operator credential setup, or deployment configuration. Discovery
|
|
116
|
+
and status do not begin consent on their own. Follow
|
|
117
|
+
[authorization recovery](./meta-tools.md#authorization-recovery),
|
|
118
|
+
[routing recovery](./meta-tools.md#routing-recovery), and
|
|
119
|
+
[argument recovery](./meta-tools.md#argument-recovery) for the specific failure.
|
|
120
|
+
|
|
121
|
+
A dispatched write is never automatically replayed. An ambiguous timeout may
|
|
122
|
+
mean the provider applied it; inspect state or ask for the missing decision
|
|
123
|
+
before issuing it again. [Retry semantics](./code-mode.md#retry-semantics) and
|
|
124
|
+
[writes](./code-mode.md#writes) describe program outcomes and write accounting.
|
|
125
|
+
|
|
126
|
+
## Implementation and evidence
|
|
127
|
+
|
|
128
|
+
The endpoint's built-in [usage skill](https://github.com/zackbart/connecta/blob/main/src/skills.ts)
|
|
129
|
+
is maintained alongside [meta-tools](https://github.com/zackbart/connecta/blob/main/src/meta-tools.ts)
|
|
130
|
+
and [execution](https://github.com/zackbart/connecta/blob/main/src/execute.ts).
|
|
131
|
+
[Usage-guide tests](https://github.com/zackbart/connecta/blob/main/test/usage-guide.test.ts),
|
|
132
|
+
[direct-call tests](https://github.com/zackbart/connecta/blob/main/test/meta-tools-call.test.ts),
|
|
133
|
+
and [guest-contract tests](https://github.com/zackbart/connecta/blob/main/test/guest-api-contract.test.ts)
|
|
134
|
+
check the contracts. Executor-specific evidence is indexed in
|
|
135
|
+
[code-mode verification](./code-mode.md#verification).
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Operator UI tests
|
|
2
2
|
|
|
3
|
+
Use this repository-maintenance guide when changing operator pages, data routes,
|
|
4
|
+
or browser evidence. Read the [operator UI contract](./operator-ui.md) first.
|
|
5
|
+
[The agent index](./README.md) routes deployment and endpoint tasks.
|
|
6
|
+
|
|
3
7
|
`test/fixtures/operator-visual.ts` owns the visual data. It builds the config,
|
|
4
8
|
live overlay, viewer, and legacy auth details through the current server routes,
|
|
5
9
|
using the types in `src/operator-ui/contract.ts` and `model.ts`. Collections use
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# Operator UI
|
|
2
|
+
|
|
3
|
+
Use this guide to enable or maintain the optional operator interface. For
|
|
4
|
+
client tool calls use [Operating an endpoint](./operating.md); for identities,
|
|
5
|
+
credential ownership, and grants use [Auth](./auth.md).
|
|
6
|
+
[All agent routes](./README.md) are in the index.
|
|
7
|
+
|
|
8
|
+
## Task routes
|
|
9
|
+
|
|
10
|
+
| Task | Read |
|
|
11
|
+
| ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
|
|
12
|
+
| Enable UI, vault, or history in a deployment | [Setup](#setup), then the platform template |
|
|
13
|
+
| Consume config, provenance, status, or activity | [Operator data contract](#operator-data-contract) |
|
|
14
|
+
| Change a UI page or data route | [Source and tests](#source-and-tests), [browser verification](./operator-tests.md) |
|
|
15
|
+
| Diagnose permission refusals | [Management permissions](./auth.md#management-permissions), [activity disclosure below](#operator-data-contract) |
|
|
16
|
+
|
|
17
|
+
## Setup
|
|
18
|
+
|
|
19
|
+
Set `ui: operatorUi()` using `@zackbart/connecta/ui`. Branding belongs in
|
|
20
|
+
`operatorUi({ branding })`; the [Node template](../templates/node/README.md#select-optional-modules)
|
|
21
|
+
and [Worker example](../examples/worker/README.md#select-optional-modules)
|
|
22
|
+
own the runnable configuration, variables, and branding shape. The UI is an
|
|
23
|
+
explicit optional import and stays outside the root package import graph.
|
|
24
|
+
|
|
25
|
+
Overview, Connectors, Tools, Access, Activity, and Config show only what the
|
|
26
|
+
caller may inspect. Connector detail tabs cover configuration, schemas,
|
|
27
|
+
authentication, activity, and diagnostics. Config labels values as default or
|
|
28
|
+
configured. Deployment code owns connectors, grants, pools, and classification;
|
|
29
|
+
the UI changes only authorized authentication material.
|
|
30
|
+
|
|
31
|
+
Install the vault for declared credential slots and activity history for
|
|
32
|
+
persisted call records. Neither module grants permission to manage or read
|
|
33
|
+
it. Credential administration, personal connection, access-token management,
|
|
34
|
+
and activity access are separate identity decisions, denied by default where
|
|
35
|
+
specified in [auth](./auth.md#management-permissions). Machine tokens never
|
|
36
|
+
grant interactive credential or token management authority.
|
|
37
|
+
|
|
38
|
+
## Operator data contract
|
|
39
|
+
|
|
40
|
+
`GET /ui/api/config`, owned by `operatorUi()`, returns `OperatorUiContract`
|
|
41
|
+
from `connecta/ui`. `src/operator-ui/contract.ts` is also the browser's type
|
|
42
|
+
source. The response has `schemaVersion: 1`, `config`, `configSources`, `live`, and `you`.
|
|
43
|
+
`config` is the construction-time `describeConfig()` snapshot, filtered to
|
|
44
|
+
visible connectors, granted tools, classification overrides, and admitted
|
|
45
|
+
pools. Pool tools are the intersection with the caller's identity grants.
|
|
46
|
+
`configSources` labels each serialized leaf as `default` or `config`, based on
|
|
47
|
+
option presence rather than equality with the default. Factory descriptions carry
|
|
48
|
+
relative `optionSources` paths so resolved module and transport defaults retain
|
|
49
|
+
their provenance. The snapshot copies only resolved values; the UI consumes
|
|
50
|
+
these presence facts separately. Its paths use connector
|
|
51
|
+
ids and pool names and are filtered after disclosure; hidden values leave no
|
|
52
|
+
provenance keys. It contains no source code or credential material.
|
|
53
|
+
Every response is private, `no-store` JSON. Only GET is allowed, with the
|
|
54
|
+
same auth gate and identity partition as `/ui/data` and `/ui/connectors/:id`.
|
|
55
|
+
|
|
56
|
+
`live.connectors` carries status and problem codes, complete registry tools
|
|
57
|
+
with their final read/write classification, catalog age in milliseconds, and
|
|
58
|
+
last-call time/outcome. Catalog descriptions and schemas are allowed for an
|
|
59
|
+
authenticated reader; grammar-failing names and addresses become `<withheld>`.
|
|
60
|
+
`auth.registrationPath` reports the selected downstream OAuth client mechanism when known.
|
|
61
|
+
Status prose, error text, credential values or suffixes, arguments, results,
|
|
62
|
+
and code are excluded. Static and unobserved catalogs have a null age;
|
|
63
|
+
persisted catalogs retain their original fetch time. Probes run with bounded
|
|
64
|
+
concurrency and the configured probe deadline, and release their scopes.
|
|
65
|
+
|
|
66
|
+
Last-call lookup requires the existing activity permission and read gate. It
|
|
67
|
+
scans up to 1,000 recent rows, filters connector/tool grants, and restricts
|
|
68
|
+
personal connectors to the caller's activity identity. Each retained fact
|
|
69
|
+
copies a validated timestamp and outcome only. A null call means unknown or
|
|
70
|
+
absent in that window, not proof of no calls. `live.activity` distinguishes
|
|
71
|
+
available, unconfigured, forbidden, and unavailable history. `you` names no
|
|
72
|
+
identity or auth material; it reports grants, root and admitted-pool trust,
|
|
73
|
+
and effective activity, token, and per-connector auth permissions.
|
|
74
|
+
|
|
75
|
+
`connecta doctor --config` fetches this authenticated contract and prints only
|
|
76
|
+
`config` as indented JSON. It requires the UI module and the existing doctor
|
|
77
|
+
authentication environment variables; it runs no diagnostic program, follows
|
|
78
|
+
no redirects, and prints no raw HTTP failure body.
|
|
79
|
+
|
|
80
|
+
The operator shell uses React, TanStack Router/Query/Table, Radix, cmdk and
|
|
81
|
+
Tailwind v4. Inter, CSS, JavaScript and dependency notices are hashed assets
|
|
82
|
+
under `/ui/assets/*`, served identically with immutable cache headers on Node
|
|
83
|
+
and Workers. HTML contains only mount points and escaped inert configuration;
|
|
84
|
+
it remains uncached. `generated.ts` is ignored and generated before build and
|
|
85
|
+
test; `check:operator-ui` detects stale assets and shared page styles. The UI
|
|
86
|
+
stays behind `./ui`, outside the root import graph. The identity-fenced store
|
|
87
|
+
owns authenticated reads and existing mutations. Overview, Connectors, connector
|
|
88
|
+
detail, Tools, Access and Config consume the typed contract. Activity retains
|
|
89
|
+
its authenticated data routes. Connector detail tabs live
|
|
90
|
+
in the URL hash; Activity filters live in the query string and apply to loaded
|
|
91
|
+
history. Both `/ui/activity` and `/ui/api/activity` require Activity access and
|
|
92
|
+
pass the optional activity `readGate`. Interactive operators and machine callers
|
|
93
|
+
admitted by `identity.activityAccess` share the same history disclosure rules.
|
|
94
|
+
Connector/tool grants and grants for the recorded pool filter each event. Shared
|
|
95
|
+
connector history can include other principals' events, with recorded request
|
|
96
|
+
IDs, validated client name/version and package version, and actor kind, ID and
|
|
97
|
+
namespace. Interactive reads may also add directory actor labels; machine reads
|
|
98
|
+
never add them. Personal connector history is owner-only: the event must have a
|
|
99
|
+
checked `principal` actor basis and actor ID/namespace matching the reader's
|
|
100
|
+
admitted principal. Rows without a provable personal owner are withheld. Activity
|
|
101
|
+
carries no arguments, results, code or raw downstream errors. The last-call
|
|
102
|
+
overlay uses the same event filter but returns only timestamp and outcome.
|
|
103
|
+
Calls group only by recorded request ids, with missing ids shown as
|
|
104
|
+
separate calls. Classification and result size are shown only when recorded. The verdict is
|
|
105
|
+
captured after registry resolution, and result size counts UTF-8 bytes of the
|
|
106
|
+
downstream value before paging or truncation. Nullable SQL columns preserve old
|
|
107
|
+
rows. Catalog changes use the same paging envelope with `kind: "catalog_drift"`,
|
|
108
|
+
`source: "catalog_refresh"` and a checked `catalog_changed` fact containing only
|
|
109
|
+
added, removed and changed tool counts. The first complete catalog is a baseline;
|
|
110
|
+
one refresh-publication hook emits each later change. It includes the request's
|
|
111
|
+
id and typed actor when available, otherwise a fresh id and system actor. No
|
|
112
|
+
names, descriptions or schemas enter the event. Private catalog changes require
|
|
113
|
+
a matching principal owner even when the connector uses shared auth. Empty credential declarations
|
|
114
|
+
report `credential_required` before running a connector status or catalog probe.
|
|
115
|
+
The Access adapter reports inbound provider kinds, admitted pools, grants, trust
|
|
116
|
+
and endpoint setup; token controls retain their existing permission gate.
|
|
117
|
+
Configuration remains in deployment code. The UI mutates only credentials,
|
|
118
|
+
OAuth connections and client tokens through the existing routes.
|
|
119
|
+
|
|
120
|
+
## Source and tests
|
|
121
|
+
|
|
122
|
+
The contract type is [contract.ts](https://github.com/zackbart/connecta/blob/main/src/operator-ui/contract.ts).
|
|
123
|
+
[UI routes](https://github.com/zackbart/connecta/blob/main/src/routes/ui.ts) and
|
|
124
|
+
[UI implementation](https://github.com/zackbart/connecta/blob/main/src/ui.ts)
|
|
125
|
+
serve the authenticated shell and data. The browser lives in
|
|
126
|
+
[src/operator-ui](https://github.com/zackbart/connecta/tree/main/src/operator-ui).
|
|
127
|
+
[UI tests](https://github.com/zackbart/connecta/blob/main/test/ui.test.ts),
|
|
128
|
+
[credential-route tests](https://github.com/zackbart/connecta/blob/main/test/ui-credentials.test.ts),
|
|
129
|
+
[config snapshot tests](https://github.com/zackbart/connecta/blob/main/test/describe-config.test.ts),
|
|
130
|
+
and [browser flows](https://github.com/zackbart/connecta/blob/main/test/browser/operator-ui.spec.ts)
|
|
131
|
+
defend filtering and behavior. Use [Operator UI tests](./operator-tests.md)
|
|
132
|
+
for the browser state matrix and Linux snapshot procedure.
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Notion, Vercel and Cloudflare migration for 0.29
|
|
2
2
|
|
|
3
|
+
Use this upgrade guide for an existing deployment.
|
|
4
|
+
[Deployment upgrades](./deploying.md#upgrade-an-existing-deployment) cover other
|
|
5
|
+
version changes; [integrating services](./integrating.md) covers new connectors.
|
|
6
|
+
[The agent index](./README.md) routes package maintenance separately.
|
|
7
|
+
|
|
3
8
|
This is the Phase 1 item 5d migration input for [Phase 5 release #709](https://github.com/zackbart/connecta/issues/709).
|
|
4
9
|
Deploy it with the consolidated 0.29 release, not while the rework is in progress.
|
|
5
10
|
BePresent and One&Many use Notion and Cloudflare; their actual grants and
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# connecta — Cloudflare Worker example
|
|
2
2
|
|
|
3
|
+
Agent setup guide for the Worker deployment.
|
|
4
|
+
For deployment choices and upgrades, use [Deploying Connecta](https://github.com/zackbart/connecta/blob/main/documentation/deploying.md).
|
|
5
|
+
For connector changes, use [Integrating services](https://github.com/zackbart/connecta/blob/main/documentation/integrating.md).
|
|
6
|
+
The [agent index](https://github.com/zackbart/connecta/blob/main/documentation/README.md) routes endpoint use and package
|
|
7
|
+
maintenance. This README and [local agent instructions](./AGENTS.md) own the
|
|
8
|
+
runnable Worker steps.
|
|
9
|
+
|
|
3
10
|
A deployable Worker that aggregates a downstream remote MCP and an in-code HTTP
|
|
4
11
|
API connector, guarded by Cloudflare Access. It uses three Cloudflare resources
|
|
5
12
|
and nothing else: one D1 database (`CONNECTA_DB`) for every piece of state, the
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zackbart/connecta",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.30.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"description": "One MCP to rule them all — a single MCP endpoint aggregating many downstream connectors behind a code-first surface of six meta-tools.",
|
|
@@ -109,6 +109,10 @@
|
|
|
109
109
|
"types": "./dist/providers/gmail/index.d.ts",
|
|
110
110
|
"import": "./dist/providers/gmail/index.js"
|
|
111
111
|
},
|
|
112
|
+
"./providers/infisical": {
|
|
113
|
+
"types": "./dist/providers/infisical/index.d.ts",
|
|
114
|
+
"import": "./dist/providers/infisical/index.js"
|
|
115
|
+
},
|
|
112
116
|
"./providers/linear": {
|
|
113
117
|
"types": "./dist/providers/linear/index.d.ts",
|
|
114
118
|
"import": "./dist/providers/linear/index.js"
|
|
@@ -221,6 +225,7 @@
|
|
|
221
225
|
"precheck:bundle": "npm run build:operator-ui",
|
|
222
226
|
"precheck:fast": "npm run check:operator-ui",
|
|
223
227
|
"eval:regrade": "tsx eval/regrade.ts",
|
|
228
|
+
"eval:compare": "tsx eval/compare.ts",
|
|
224
229
|
"format": "oxfmt --write .",
|
|
225
230
|
"format:check": "oxfmt --check ."
|
|
226
231
|
},
|
|
@@ -267,6 +272,7 @@
|
|
|
267
272
|
"@types/react": "^19.3.0",
|
|
268
273
|
"@types/react-dom": "^19.3.0",
|
|
269
274
|
"cmdk": "^1.1.1",
|
|
275
|
+
"commonmark": "^0.31.2",
|
|
270
276
|
"esbuild": "^0.28.0",
|
|
271
277
|
"knip": "^6.29.0",
|
|
272
278
|
"oxfmt": "0.72.0",
|
package/templates/node/README.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Connecta deployment
|
|
2
2
|
|
|
3
|
+
Agent setup guide for the Node deployment and its Docker packaging.
|
|
4
|
+
For cross-platform setup and upgrades, use [Deploying Connecta](https://github.com/zackbart/connecta/blob/main/documentation/deploying.md).
|
|
5
|
+
For connector changes, use [Integrating services](https://github.com/zackbart/connecta/blob/main/documentation/integrating.md).
|
|
6
|
+
The [agent index](https://github.com/zackbart/connecta/blob/main/documentation/README.md) routes endpoint use and package
|
|
7
|
+
maintenance. This README and [local agent instructions](./AGENTS.md) own the
|
|
8
|
+
runnable steps for a copied Node deployment.
|
|
9
|
+
|
|
3
10
|
This is the prescribed Node deployment. It runs locally from source and as
|
|
4
11
|
a container. Install, provision a machine token, then start it:
|
|
5
12
|
|