@zackbart/connecta 0.15.1 → 0.16.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/AGENTS.md +28 -15
- package/CHANGELOG.md +466 -0
- package/README.md +19 -4
- package/bin/connecta.mjs +44 -3
- package/dist/access-tokens.d.ts +0 -1
- package/dist/access-tokens.js +0 -1
- package/dist/activity.d.ts +50 -2
- package/dist/activity.js +34 -1
- package/dist/apps-shell.d.ts +0 -1
- package/dist/apps-shell.js +0 -1
- package/dist/auth/bearer.d.ts +0 -1
- package/dist/auth/bearer.js +0 -1
- package/dist/auth/clerk.d.ts +0 -1
- package/dist/auth/clerk.js +45 -9
- package/dist/auth/downstream-oauth.d.ts +0 -1
- package/dist/auth/downstream-oauth.js +0 -1
- package/dist/call-admission.d.ts +0 -1
- package/dist/call-admission.js +0 -1
- package/dist/catalog-drift.d.ts +99 -0
- package/dist/catalog-drift.js +251 -0
- package/dist/catalog-fingerprint.d.ts +0 -1
- package/dist/catalog-fingerprint.js +0 -1
- package/dist/catalog-limits.d.ts +0 -1
- package/dist/catalog-limits.js +0 -1
- package/dist/catalog-service.d.ts +0 -1
- package/dist/catalog-service.js +0 -1
- package/dist/catalog.d.ts +0 -1
- package/dist/catalog.js +0 -1
- package/dist/concurrency.d.ts +0 -1
- package/dist/concurrency.js +0 -1
- package/dist/connector-scope.d.ts +0 -1
- package/dist/connector-scope.js +0 -1
- package/dist/connectors/api.d.ts +29 -21
- package/dist/connectors/api.js +45 -19
- package/dist/connectors/guarded-fetch.d.ts +106 -0
- package/dist/connectors/guarded-fetch.js +289 -0
- package/dist/connectors/remote-mcp.d.ts +0 -1
- package/dist/connectors/remote-mcp.js +0 -1
- package/dist/credentials.d.ts +0 -1
- package/dist/credentials.js +0 -1
- package/dist/errors.d.ts +0 -1
- package/dist/errors.js +0 -1
- package/dist/execute.d.ts +0 -1
- package/dist/execute.js +0 -1
- package/dist/executor-admission.d.ts +11 -1
- package/dist/executor-admission.js +28 -1
- package/dist/executor-result.d.ts +0 -1
- package/dist/executor-result.js +0 -1
- package/dist/executors/quickjs-child.d.ts +0 -1
- package/dist/executors/quickjs-child.js +0 -1
- package/dist/executors/quickjs-protocol.d.ts +0 -1
- package/dist/executors/quickjs-protocol.js +0 -1
- package/dist/executors/quickjs-runtime.d.ts +0 -1
- package/dist/executors/quickjs-runtime.js +0 -1
- package/dist/executors/quickjs.d.ts +0 -1
- package/dist/executors/quickjs.js +2 -1
- package/dist/favicon.d.ts +0 -1
- package/dist/favicon.js +0 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.js +24 -7
- package/dist/invocation.d.ts +0 -1
- package/dist/invocation.js +0 -1
- package/dist/json-schema.d.ts +0 -1
- package/dist/json-schema.js +0 -1
- package/dist/mcp-result.d.ts +0 -1
- package/dist/mcp-result.js +0 -1
- package/dist/meta-tools.d.ts +0 -1
- package/dist/meta-tools.js +0 -1
- package/dist/node.d.ts +0 -1
- package/dist/node.js +0 -1
- package/dist/operator-ui/generated.d.ts +2 -3
- package/dist/operator-ui/generated.js +3 -4
- package/dist/operator-ui/model.d.ts +10 -1
- package/dist/operator-ui/model.js +0 -1
- package/dist/operator-ui/view.d.ts +167 -0
- package/dist/operator-ui/view.js +270 -0
- package/dist/providers/cloudflare.d.ts +0 -1
- package/dist/providers/cloudflare.js +250 -276
- package/dist/providers/linear.d.ts +26 -5
- package/dist/providers/linear.js +32 -61
- package/dist/providers/mixpanel.d.ts +35 -4
- package/dist/providers/mixpanel.js +53 -79
- package/dist/providers/notion.d.ts +0 -1
- package/dist/providers/notion.js +87 -42
- package/dist/providers/stripe.d.ts +13 -1
- package/dist/providers/stripe.js +31 -60
- package/dist/registry.d.ts +34 -2
- package/dist/registry.js +85 -5
- package/dist/retired-toolkits.d.ts +0 -1
- package/dist/retired-toolkits.js +0 -1
- package/dist/routes/access-tokens.d.ts +0 -1
- package/dist/routes/access-tokens.js +0 -1
- package/dist/routes/activity.d.ts +0 -1
- package/dist/routes/activity.js +0 -1
- package/dist/routes/credentials.d.ts +0 -1
- package/dist/routes/credentials.js +0 -1
- package/dist/routes/mcp.d.ts +0 -1
- package/dist/routes/mcp.js +0 -1
- package/dist/routes/oauth.d.ts +0 -1
- package/dist/routes/oauth.js +0 -1
- package/dist/routes/shared.d.ts +2 -1
- package/dist/routes/shared.js +0 -1
- package/dist/routes/ui.d.ts +0 -1
- package/dist/routes/ui.js +0 -1
- package/dist/server.d.ts +0 -1
- package/dist/server.js +11 -1
- package/dist/skills.d.ts +0 -1
- package/dist/skills.js +0 -1
- package/dist/storage/file.d.ts +0 -1
- package/dist/storage/file.js +0 -1
- package/dist/storage/memory.d.ts +0 -1
- package/dist/storage/memory.js +0 -1
- package/dist/timeout.d.ts +0 -1
- package/dist/timeout.js +0 -1
- package/dist/tool-safety.d.ts +0 -1
- package/dist/tool-safety.js +0 -1
- package/dist/types.d.ts +45 -1
- package/dist/types.js +0 -1
- package/dist/ui.d.ts +0 -1
- package/dist/ui.js +13 -137
- package/dist/validate.d.ts +13 -15
- package/dist/validate.js +24 -11
- package/dist/version.d.ts +1 -2
- package/dist/version.js +1 -2
- package/documentation/architecture.md +186 -5
- package/documentation/auth.md +11 -0
- package/documentation/call-admission.md +142 -6
- package/documentation/cloudflare.md +58 -8
- package/documentation/code-mode.md +12 -12
- package/documentation/connector-guides.md +172 -5
- package/documentation/connectors.md +89 -0
- package/documentation/linear.md +20 -2
- package/documentation/mcp-ui-design.md +2 -2
- package/documentation/mixpanel.md +42 -9
- package/documentation/notion.md +16 -0
- package/documentation/operations.md +283 -5
- package/documentation/operator-ui.md +120 -5
- package/documentation/provider-audit.md +160 -0
- package/documentation/provider-conventions.md +631 -0
- package/documentation/request-admission.md +167 -5
- package/documentation/rich-output-design.md +1 -2
- package/documentation/stripe.md +15 -0
- package/ethos.md +13 -8
- package/examples/worker/README.md +96 -12
- package/examples/worker/src/index.ts +46 -1
- package/examples/worker/wrangler.jsonc +14 -1
- package/package.json +4 -5
- package/templates/node/.dockerignore +10 -0
- package/templates/node/.env.example +40 -3
- package/templates/node/AGENTS.md +11 -1
- package/templates/node/Dockerfile +49 -0
- package/templates/node/README.md +117 -2
- package/templates/node/docker-compose.yml +39 -0
- package/templates/node/package.json +1 -1
- package/templates/node/src/file-activity.ts +182 -0
- package/templates/node/src/index.ts +80 -4
- package/assets/connecta-clay-hero.png +0 -0
- package/dist/access-tokens.d.ts.map +0 -1
- package/dist/access-tokens.js.map +0 -1
- package/dist/activity.d.ts.map +0 -1
- package/dist/activity.js.map +0 -1
- package/dist/apps-shell.d.ts.map +0 -1
- package/dist/apps-shell.js.map +0 -1
- package/dist/auth/bearer.d.ts.map +0 -1
- package/dist/auth/bearer.js.map +0 -1
- package/dist/auth/clerk.d.ts.map +0 -1
- package/dist/auth/clerk.js.map +0 -1
- package/dist/auth/downstream-oauth.d.ts.map +0 -1
- package/dist/auth/downstream-oauth.js.map +0 -1
- package/dist/call-admission.d.ts.map +0 -1
- package/dist/call-admission.js.map +0 -1
- package/dist/catalog-fingerprint.d.ts.map +0 -1
- package/dist/catalog-fingerprint.js.map +0 -1
- package/dist/catalog-limits.d.ts.map +0 -1
- package/dist/catalog-limits.js.map +0 -1
- package/dist/catalog-service.d.ts.map +0 -1
- package/dist/catalog-service.js.map +0 -1
- package/dist/catalog.d.ts.map +0 -1
- package/dist/catalog.js.map +0 -1
- package/dist/concurrency.d.ts.map +0 -1
- package/dist/concurrency.js.map +0 -1
- package/dist/connector-scope.d.ts.map +0 -1
- package/dist/connector-scope.js.map +0 -1
- package/dist/connectors/api.d.ts.map +0 -1
- package/dist/connectors/api.js.map +0 -1
- package/dist/connectors/remote-mcp.d.ts.map +0 -1
- package/dist/connectors/remote-mcp.js.map +0 -1
- package/dist/credentials.d.ts.map +0 -1
- package/dist/credentials.js.map +0 -1
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js.map +0 -1
- package/dist/execute.d.ts.map +0 -1
- package/dist/execute.js.map +0 -1
- package/dist/executor-admission.d.ts.map +0 -1
- package/dist/executor-admission.js.map +0 -1
- package/dist/executor-result.d.ts.map +0 -1
- package/dist/executor-result.js.map +0 -1
- package/dist/executors/quickjs-child.d.ts.map +0 -1
- package/dist/executors/quickjs-child.js.map +0 -1
- package/dist/executors/quickjs-protocol.d.ts.map +0 -1
- package/dist/executors/quickjs-protocol.js.map +0 -1
- package/dist/executors/quickjs-runtime.d.ts.map +0 -1
- package/dist/executors/quickjs-runtime.js.map +0 -1
- package/dist/executors/quickjs.d.ts.map +0 -1
- package/dist/executors/quickjs.js.map +0 -1
- package/dist/favicon.d.ts.map +0 -1
- package/dist/favicon.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/invocation.d.ts.map +0 -1
- package/dist/invocation.js.map +0 -1
- package/dist/json-schema.d.ts.map +0 -1
- package/dist/json-schema.js.map +0 -1
- package/dist/mcp-result.d.ts.map +0 -1
- package/dist/mcp-result.js.map +0 -1
- package/dist/meta-tools.d.ts.map +0 -1
- package/dist/meta-tools.js.map +0 -1
- package/dist/node.d.ts.map +0 -1
- package/dist/node.js.map +0 -1
- package/dist/operator-ui/generated.d.ts.map +0 -1
- package/dist/operator-ui/generated.js.map +0 -1
- package/dist/operator-ui/model.d.ts.map +0 -1
- package/dist/operator-ui/model.js.map +0 -1
- package/dist/providers/cloudflare.d.ts.map +0 -1
- package/dist/providers/cloudflare.js.map +0 -1
- package/dist/providers/linear.d.ts.map +0 -1
- package/dist/providers/linear.js.map +0 -1
- package/dist/providers/mixpanel.d.ts.map +0 -1
- package/dist/providers/mixpanel.js.map +0 -1
- package/dist/providers/notion.d.ts.map +0 -1
- package/dist/providers/notion.js.map +0 -1
- package/dist/providers/stripe.d.ts.map +0 -1
- package/dist/providers/stripe.js.map +0 -1
- package/dist/registry.d.ts.map +0 -1
- package/dist/registry.js.map +0 -1
- package/dist/retired-toolkits.d.ts.map +0 -1
- package/dist/retired-toolkits.js.map +0 -1
- package/dist/routes/access-tokens.d.ts.map +0 -1
- package/dist/routes/access-tokens.js.map +0 -1
- package/dist/routes/activity.d.ts.map +0 -1
- package/dist/routes/activity.js.map +0 -1
- package/dist/routes/credentials.d.ts.map +0 -1
- package/dist/routes/credentials.js.map +0 -1
- package/dist/routes/mcp.d.ts.map +0 -1
- package/dist/routes/mcp.js.map +0 -1
- package/dist/routes/oauth.d.ts.map +0 -1
- package/dist/routes/oauth.js.map +0 -1
- package/dist/routes/shared.d.ts.map +0 -1
- package/dist/routes/shared.js.map +0 -1
- package/dist/routes/ui.d.ts.map +0 -1
- package/dist/routes/ui.js.map +0 -1
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js.map +0 -1
- package/dist/skills.d.ts.map +0 -1
- package/dist/skills.js.map +0 -1
- package/dist/storage/file.d.ts.map +0 -1
- package/dist/storage/file.js.map +0 -1
- package/dist/storage/memory.d.ts.map +0 -1
- package/dist/storage/memory.js.map +0 -1
- package/dist/timeout.d.ts.map +0 -1
- package/dist/timeout.js.map +0 -1
- package/dist/tool-safety.d.ts.map +0 -1
- package/dist/tool-safety.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/ui.d.ts.map +0 -1
- package/dist/ui.js.map +0 -1
- package/dist/validate.d.ts.map +0 -1
- package/dist/validate.js.map +0 -1
- package/dist/version.d.ts.map +0 -1
- package/dist/version.js.map +0 -1
- package/examples/node/README.md +0 -52
- package/examples/node/src/index.ts +0 -71
- package/src/access-tokens.ts +0 -289
- package/src/activity.ts +0 -234
- package/src/apps-shell.ts +0 -370
- package/src/auth/bearer.ts +0 -61
- package/src/auth/clerk.ts +0 -553
- package/src/auth/downstream-oauth.ts +0 -575
- package/src/call-admission.ts +0 -521
- package/src/catalog-fingerprint.ts +0 -52
- package/src/catalog-limits.ts +0 -11
- package/src/catalog-service.ts +0 -1153
- package/src/catalog.ts +0 -790
- package/src/concurrency.ts +0 -39
- package/src/connector-scope.ts +0 -66
- package/src/connectors/api.ts +0 -159
- package/src/connectors/remote-mcp.ts +0 -1090
- package/src/credentials.ts +0 -428
- package/src/errors.ts +0 -364
- package/src/execute.ts +0 -1406
- package/src/executor-admission.ts +0 -328
- package/src/executor-result.ts +0 -107
- package/src/executors/quickjs-child.ts +0 -172
- package/src/executors/quickjs-protocol.ts +0 -99
- package/src/executors/quickjs-runtime.ts +0 -470
- package/src/executors/quickjs.ts +0 -776
- package/src/favicon.ts +0 -53
- package/src/index.ts +0 -666
- package/src/invocation.ts +0 -655
- package/src/json-schema.ts +0 -11
- package/src/mcp-result.ts +0 -43
- package/src/meta-tools.ts +0 -1607
- package/src/node.ts +0 -206
- package/src/operator-ui/browser.css +0 -423
- package/src/operator-ui/browser.ts +0 -1281
- package/src/operator-ui/generated.ts +0 -4
- package/src/operator-ui/model.ts +0 -111
- package/src/providers/cloudflare.ts +0 -3999
- package/src/providers/linear.ts +0 -302
- package/src/providers/mixpanel.ts +0 -229
- package/src/providers/notion.ts +0 -1879
- package/src/providers/stripe.ts +0 -307
- package/src/registry.ts +0 -1085
- package/src/retired-toolkits.ts +0 -14
- package/src/routes/access-tokens.ts +0 -115
- package/src/routes/activity.ts +0 -215
- package/src/routes/credentials.ts +0 -254
- package/src/routes/mcp.ts +0 -429
- package/src/routes/oauth.ts +0 -322
- package/src/routes/shared.ts +0 -247
- package/src/routes/ui.ts +0 -152
- package/src/server.ts +0 -195
- package/src/skills.ts +0 -271
- package/src/storage/file.ts +0 -123
- package/src/storage/memory.ts +0 -44
- package/src/timeout.ts +0 -84
- package/src/tool-safety.ts +0 -15
- package/src/types.ts +0 -523
- package/src/ui.ts +0 -744
- package/src/validate.ts +0 -387
- package/src/version.ts +0 -7
package/templates/node/AGENTS.md
CHANGED
|
@@ -6,13 +6,23 @@ This repository is deployment configuration, not a copy of Connecta itself.
|
|
|
6
6
|
- Keep `executor: quickJsExecutor()` for the prescribed seven-tool code-first
|
|
7
7
|
surface.
|
|
8
8
|
- Keep credentials in environment variables or an external secret store.
|
|
9
|
-
Never commit `.env`, `.connecta-state.json`,
|
|
9
|
+
Never commit `.env`, `.connecta-state.json`, `.connecta-activity.jsonl`,
|
|
10
|
+
tokens, or credential values.
|
|
10
11
|
- Add application logic only inside deliberate `api()` connector handlers.
|
|
11
12
|
Do not copy or modify Connecta package internals here.
|
|
12
13
|
- Prefer `api()` when the agent must see an exact reviewed capability surface;
|
|
13
14
|
`remoteMcp()` follows the downstream server's evolving tool catalog.
|
|
15
|
+
- The operator surface — Clerk sign-in, credential vault, access tokens,
|
|
16
|
+
activity — ships as commented blocks in `src/index.ts`. Enable one by
|
|
17
|
+
uncommenting it and setting the variables it names in `.env`, never by
|
|
18
|
+
inventing a parallel configuration path. `README.md` § "Turn on the operator
|
|
19
|
+
surface" is the walkthrough; `src/file-activity.ts` is the deployment-owned
|
|
20
|
+
activity store the activity block wires.
|
|
14
21
|
- Run `npm run typecheck` after configuration changes. With the server running,
|
|
15
22
|
run `CONNECTA_TOKEN=... npm run doctor` before calling setup complete.
|
|
23
|
+
- `Dockerfile` and `docker-compose.yml` containerize *this* source; they are
|
|
24
|
+
the same deployment, not a second one. Configuration belongs in `.env` and
|
|
25
|
+
`src/index.ts`, never in a divergent container entrypoint.
|
|
16
26
|
|
|
17
27
|
Do not add alternate entrypoints, policy layers, generated connector catalogs,
|
|
18
28
|
or runtime connector registration. Keep the deployment small enough to review
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# This deployment, containerized. The build context is this directory: the
|
|
2
|
+
# image installs @zackbart/connecta from the registry exactly like any other
|
|
3
|
+
# consumer, so nothing here depends on the Connecta repository.
|
|
4
|
+
#
|
|
5
|
+
# docker compose up -d --build
|
|
6
|
+
FROM node:22-slim
|
|
7
|
+
|
|
8
|
+
WORKDIR /app
|
|
9
|
+
|
|
10
|
+
# `connecta init` deliberately leaves no lockfile — it rewrites the Connecta
|
|
11
|
+
# version pin, and a lockfile shipped in the template would already disagree
|
|
12
|
+
# with it. Without one the build resolves the pin itself, which is fine but not
|
|
13
|
+
# reproducible. Run `npm install` on the host and commit the `package-lock.json`
|
|
14
|
+
# it writes: the build context then carries it and every later build takes the
|
|
15
|
+
# `npm ci` path. A lockfile written inside this layer stays inside the image.
|
|
16
|
+
# Dev dependencies stay in: tsx runs src/index.ts directly, so the deployment
|
|
17
|
+
# you review is the deployment that runs.
|
|
18
|
+
COPY package.json package-lock.json* ./
|
|
19
|
+
RUN if [ -f package-lock.json ]; then \
|
|
20
|
+
npm ci --include=dev; \
|
|
21
|
+
else \
|
|
22
|
+
npm install --include=dev --no-audit --no-fund; \
|
|
23
|
+
fi
|
|
24
|
+
|
|
25
|
+
COPY tsconfig.json ./
|
|
26
|
+
COPY src ./src
|
|
27
|
+
|
|
28
|
+
# State lives on a mounted volume. The image owns the mount point so a fresh
|
|
29
|
+
# named volume inherits an owner the non-root user can actually write to.
|
|
30
|
+
RUN mkdir -p /data && chown -R node:node /data /app
|
|
31
|
+
USER node
|
|
32
|
+
|
|
33
|
+
ENV NODE_ENV=production
|
|
34
|
+
ENV PORT=8787
|
|
35
|
+
ENV CONNECTA_STATE_FILE=/data/connecta-state.json
|
|
36
|
+
# Read only once the activity block in src/index.ts is uncommented; defaulted
|
|
37
|
+
# here so history lands on the volume rather than inside the container layer.
|
|
38
|
+
ENV CONNECTA_ACTIVITY_FILE=/data/connecta-activity.jsonl
|
|
39
|
+
EXPOSE 8787
|
|
40
|
+
|
|
41
|
+
# /health is always open, so the probe never carries the bearer token and
|
|
42
|
+
# never leaves the container.
|
|
43
|
+
HEALTHCHECK --interval=30s --timeout=5s --start-period=15s --retries=3 \
|
|
44
|
+
CMD node -e "fetch('http://127.0.0.1:'+(process.env.PORT||8787)+'/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"
|
|
45
|
+
|
|
46
|
+
# `node --import tsx` keeps Node itself in the foreground: no wrapper process
|
|
47
|
+
# swallows SIGTERM, so `docker compose down` stops the server promptly and the
|
|
48
|
+
# QuickJS children go with it.
|
|
49
|
+
CMD ["node", "--import", "tsx", "src/index.ts"]
|
package/templates/node/README.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# Connecta deployment
|
|
2
2
|
|
|
3
|
-
This is the prescribed
|
|
3
|
+
This is the prescribed Node deployment — the only one. It runs locally from
|
|
4
|
+
source and, unchanged, as a container. Install and run it:
|
|
4
5
|
|
|
5
6
|
```sh
|
|
6
7
|
npm install
|
|
@@ -10,12 +11,107 @@ CONNECTA_TOKEN=dev-token npm start
|
|
|
10
11
|
Then point an MCP client at `http://localhost:8787/mcp` with
|
|
11
12
|
`Authorization: Bearer dev-token`.
|
|
12
13
|
|
|
14
|
+
## Run it in Docker
|
|
15
|
+
|
|
16
|
+
Same source, same configuration, one long-lived service:
|
|
17
|
+
|
|
18
|
+
```sh
|
|
19
|
+
cp .env.example .env
|
|
20
|
+
# edit .env — set CONNECTA_TOKEN to a long random value
|
|
21
|
+
|
|
22
|
+
docker compose up -d --build
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
`CONNECTA_TOKEN` ships empty on purpose: `up` fails on it until you set it,
|
|
26
|
+
rather than starting a deployment whose bearer is a value published in this
|
|
27
|
+
template. Everything else in `.env.example` has a working default.
|
|
28
|
+
|
|
29
|
+
Compose reads `.env`, publishes `PORT` (8787 by default), and keeps state on
|
|
30
|
+
the named volume `connecta-state`, mounted at `/data`. `docker compose down`
|
|
31
|
+
stops the service and keeps state; `down -v` wipes it. `/health` is always
|
|
32
|
+
open, so the container's health probe never carries the bearer token.
|
|
33
|
+
|
|
34
|
+
A build with no lockfile in the context resolves the pinned Connecta version
|
|
35
|
+
itself, and a lockfile npm writes inside the image never reaches this project.
|
|
36
|
+
So commit the `package-lock.json` that the `npm install` above wrote on this
|
|
37
|
+
machine: from then on the build context carries it and every build takes the
|
|
38
|
+
reproducible `npm ci` path.
|
|
39
|
+
|
|
40
|
+
## Turn on the operator surface
|
|
41
|
+
|
|
42
|
+
Out of the box this deployment serves the seven-tool MCP surface and a
|
|
43
|
+
read-only operator UI: open `http://localhost:8787/`, paste the bearer, and you
|
|
44
|
+
get Connections. The other three pages are configuration away, and each one is
|
|
45
|
+
a commented block in `src/index.ts` — uncomment it, set the variables it names
|
|
46
|
+
in `.env`, restart. Do them in this order; the last two lean on the first, and
|
|
47
|
+
Credentials wants one thing more than a block, called out in step 2.
|
|
48
|
+
|
|
49
|
+
**1. Operator sign-in (Clerk).** A bearer token is a client key. It may call
|
|
50
|
+
tools and read connector status, but it may not write a credential or issue an
|
|
51
|
+
access token — that would make one shared secret a deployment-admin key. An
|
|
52
|
+
interactive identity is what unlocks the actionable half:
|
|
53
|
+
|
|
54
|
+
```sh
|
|
55
|
+
npm install @clerk/backend # optional peer; it does not install with Connecta
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Set `CLERK_PUBLISHABLE_KEY` and `CLERK_SECRET_KEY`, uncomment the `clerkAuth`
|
|
59
|
+
import, the two `process.env.CLERK_*` reads, and the `clerkAuth({ … })` entry in
|
|
60
|
+
`auth`. Enable Dynamic Client Registration on the Clerk instance (OAuth
|
|
61
|
+
Applications → DCR) if MCP clients should sign in through it too, and set
|
|
62
|
+
`PUBLIC_URL` first — Clerk redirects back to it.
|
|
63
|
+
|
|
64
|
+
**2. Credential vault.** Uncomment `credentials` and set
|
|
65
|
+
`CONNECTA_CREDENTIAL_KEY` to a base64 32-byte AES key:
|
|
66
|
+
|
|
67
|
+
```sh
|
|
68
|
+
node -e "console.log(crypto.randomBytes(32).toString('base64'))"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Every connector that declares a `credential` slot then becomes editable at
|
|
72
|
+
`/credentials`, with values encrypted in the state file. The shipped `time`
|
|
73
|
+
connector declares none — telling the time needs no secret — so the key alone
|
|
74
|
+
leaves the page hidden, which is the honest state for a page with nothing on
|
|
75
|
+
it. Add `credential: { label: "API token" }` to an `api()` connector (the
|
|
76
|
+
commented shape is in `src/index.ts`) and read it in a handler with
|
|
77
|
+
`await ctx.credential?.get()`, or use a provider connector such as `notion()`,
|
|
78
|
+
which declares its own; Credentials appears for a signed-in operator on the
|
|
79
|
+
next restart. Keep the key anywhere
|
|
80
|
+
except that file — it is the only thing standing between a copied state file
|
|
81
|
+
and the secrets in it — and note that losing it makes stored values
|
|
82
|
+
unreadable. A saved replacement takes effect on the next call; nothing
|
|
83
|
+
restarts, and the deployment never probes a credential to see whether it still
|
|
84
|
+
works. It fails at use, loudly, and the agent is routed to `/credentials`.
|
|
85
|
+
|
|
86
|
+
**3. Access tokens.** Uncomment `accessTokens: {}`. A signed-in operator can
|
|
87
|
+
then mint named, revocable Bearer tokens at `/tokens` for header-capable
|
|
88
|
+
clients that will not do OAuth. Secrets are shown once and only their hashes
|
|
89
|
+
are stored, so a lost token is reissued, never recovered.
|
|
90
|
+
|
|
91
|
+
**4. Activity.** Uncomment the `activity` block and the `fileActivityStore`
|
|
92
|
+
import. `/activity` then answers with who called what, when, how long it took,
|
|
93
|
+
and whether it worked — never arguments, results, generated code, or raw error
|
|
94
|
+
messages, because the store is never handed one. `src/file-activity.ts` is
|
|
95
|
+
yours: it appends a line per call and rewrites the log down to the newest 5,000
|
|
96
|
+
events once it runs a slack window past that, so the file holds a few hundred
|
|
97
|
+
more than the ceiling between rewrites rather than being rewritten on every
|
|
98
|
+
call. That is a retention policy chosen for a single container and worth
|
|
99
|
+
revisiting for anything busier. In Docker the log lands on the same volume as
|
|
100
|
+
the state file.
|
|
101
|
+
|
|
102
|
+
None of this changes what agents can reach. Operator pages manage the
|
|
103
|
+
authentication material behind capabilities this file already declares; the
|
|
104
|
+
connector set, the tool catalog, and its annotations are `src/index.ts`'s
|
|
105
|
+
business and stay that way.
|
|
106
|
+
|
|
13
107
|
## Deployment contract
|
|
14
108
|
|
|
15
109
|
- Edit `src/index.ts` for connectors, auth, storage, and the public URL.
|
|
16
110
|
- Keep the required `executor: quickJsExecutor()` configuration; a deployment
|
|
17
111
|
without an executor refuses to boot.
|
|
18
112
|
- Keep secrets in environment variables or an external secret store.
|
|
113
|
+
- Set `PUBLIC_URL` once this deployment is reachable from somewhere other than
|
|
114
|
+
this machine: downstream OAuth calls back to it.
|
|
19
115
|
- Add application code only inside deliberate `api()` connector handlers.
|
|
20
116
|
- Do not copy Connecta package internals into this deployment.
|
|
21
117
|
- `AGENTS.md` is the canonical convention file; `CLAUDE.md` points to it.
|
|
@@ -24,7 +120,7 @@ Verify a change with:
|
|
|
24
120
|
|
|
25
121
|
```sh
|
|
26
122
|
npm run typecheck
|
|
27
|
-
# In another terminal, while npm start
|
|
123
|
+
# In another terminal, while the server is running (npm start or compose):
|
|
28
124
|
CONNECTA_TOKEN=dev-token npm run doctor
|
|
29
125
|
```
|
|
30
126
|
|
|
@@ -32,3 +128,22 @@ Doctor checks health, the executor, and the exact prescribed seven-tool
|
|
|
32
128
|
model-facing surface by running a harmless sandbox program. It reads the bearer
|
|
33
129
|
from `CONNECTA_TOKEN`; it never accepts the secret as a command-line argument.
|
|
34
130
|
Remote URLs must use HTTPS.
|
|
131
|
+
|
|
132
|
+
A fully-wired deployment reports exactly the same line as a bare one —
|
|
133
|
+
connector count, QuickJS executed, seven tools, plus any catalog drift:
|
|
134
|
+
|
|
135
|
+
```text
|
|
136
|
+
Connecta doctor passed: 1 connector(s), QuickJS executed, prescribed seven-tool surface.
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
`QuickJS` is this deployment's sandbox, reported by the deployment itself —
|
|
140
|
+
swap the executor and doctor names the one that actually ran the program.
|
|
141
|
+
|
|
142
|
+
That is deliberate. Doctor holds a bearer, and a bearer learns the model-facing
|
|
143
|
+
surface, not the deployment's configuration topology: whether this deployment
|
|
144
|
+
issues access tokens or keeps a credential vault is operator data, and a client
|
|
145
|
+
key is not an operator. Confirm the operator surface the way an operator will —
|
|
146
|
+
sign in at `/` and check that the pages you turned on are there: Tokens and
|
|
147
|
+
Activity once their blocks are uncommented, and Credentials once the vault has
|
|
148
|
+
a connector credential slot to show. The nav lists a page only when this
|
|
149
|
+
deployment can serve it, so an absent page is a report, not a fault.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# One service, no database: state is the fileStorage JSON on a named volume.
|
|
2
|
+
#
|
|
3
|
+
# cp .env.example .env # then set CONNECTA_TOKEN
|
|
4
|
+
# docker compose up -d --build
|
|
5
|
+
#
|
|
6
|
+
# Compose reads `.env` from this directory, so one file configures both the
|
|
7
|
+
# build and the container.
|
|
8
|
+
|
|
9
|
+
services:
|
|
10
|
+
connecta:
|
|
11
|
+
build: .
|
|
12
|
+
# An init process reaps the QuickJS children a program leaves behind.
|
|
13
|
+
init: true
|
|
14
|
+
ports:
|
|
15
|
+
- "${PORT:-8787}:${PORT:-8787}"
|
|
16
|
+
environment:
|
|
17
|
+
# Refuse to start without inbound auth — the same rule src/index.ts
|
|
18
|
+
# enforces, stated early enough that `up` fails before the build.
|
|
19
|
+
CONNECTA_TOKEN: ${CONNECTA_TOKEN:?set CONNECTA_TOKEN in .env}
|
|
20
|
+
PORT: ${PORT:-8787}
|
|
21
|
+
# Downstream OAuth calls back to this origin. Unset is fine until this
|
|
22
|
+
# deployment is reachable from somewhere other than this machine.
|
|
23
|
+
PUBLIC_URL: ${PUBLIC_URL:-}
|
|
24
|
+
# Keep the state file under /data so it lands on the volume below.
|
|
25
|
+
CONNECTA_STATE_FILE: ${CONNECTA_STATE_FILE:-/data/connecta-state.json}
|
|
26
|
+
# Operator surface. Passed through so the matching blocks in
|
|
27
|
+
# src/index.ts work in the container the moment they are uncommented;
|
|
28
|
+
# until then these are unread. The activity log joins the state file on
|
|
29
|
+
# the volume for the same reason it does.
|
|
30
|
+
CLERK_PUBLISHABLE_KEY: ${CLERK_PUBLISHABLE_KEY:-}
|
|
31
|
+
CLERK_SECRET_KEY: ${CLERK_SECRET_KEY:-}
|
|
32
|
+
CONNECTA_CREDENTIAL_KEY: ${CONNECTA_CREDENTIAL_KEY:-}
|
|
33
|
+
CONNECTA_ACTIVITY_FILE: ${CONNECTA_ACTIVITY_FILE:-/data/connecta-activity.jsonl}
|
|
34
|
+
volumes:
|
|
35
|
+
- connecta-state:/data
|
|
36
|
+
restart: unless-stopped
|
|
37
|
+
|
|
38
|
+
volumes:
|
|
39
|
+
connecta-state:
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Payload-free tool activity, kept in a JSON-lines file beside the state file.
|
|
3
|
+
*
|
|
4
|
+
* Deployment-owned on purpose: Connecta ships the `ActivityStore` contract, not
|
|
5
|
+
* a backend, because retention is a decision only the operator can make. This
|
|
6
|
+
* is the Node counterpart of the Worker example's D1 store, sized for one
|
|
7
|
+
* container rather than a fleet — a write appends one line, and the log is
|
|
8
|
+
* bounded by a count of events instead of by age, so nothing has to be
|
|
9
|
+
* scheduled.
|
|
10
|
+
*
|
|
11
|
+
* Nothing wires it by default. `src/index.ts` carries the commented lines that
|
|
12
|
+
* turn it on; README.md § "Turn on the operator surface" explains why they are
|
|
13
|
+
* commented.
|
|
14
|
+
*/
|
|
15
|
+
import {
|
|
16
|
+
appendFileSync,
|
|
17
|
+
chmodSync,
|
|
18
|
+
existsSync,
|
|
19
|
+
mkdirSync,
|
|
20
|
+
readFileSync,
|
|
21
|
+
renameSync,
|
|
22
|
+
writeFileSync,
|
|
23
|
+
} from "node:fs";
|
|
24
|
+
import { dirname } from "node:path";
|
|
25
|
+
import type {
|
|
26
|
+
ActivityPage,
|
|
27
|
+
ActivityStore,
|
|
28
|
+
ToolCallActivityEvent,
|
|
29
|
+
} from "@zackbart/connecta";
|
|
30
|
+
import { InvalidActivityCursorError } from "@zackbart/connecta";
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Events allowed past `maxEvents` before the log is rewritten. Trimming on the
|
|
34
|
+
* write that first crosses the ceiling would rewrite the whole file on every
|
|
35
|
+
* call from then on; this pays that cost once per slack window instead.
|
|
36
|
+
*/
|
|
37
|
+
const COMPACTION_SLACK = 500;
|
|
38
|
+
|
|
39
|
+
export interface FileActivityOptions {
|
|
40
|
+
/** Newest events retained after a compaction. Default 5,000. */
|
|
41
|
+
maxEvents?: number;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/** Newest first, with the id breaking ties inside a millisecond. */
|
|
45
|
+
function newestFirst(
|
|
46
|
+
a: ToolCallActivityEvent,
|
|
47
|
+
b: ToolCallActivityEvent,
|
|
48
|
+
): number {
|
|
49
|
+
const byTime = Date.parse(b.occurredAt) - Date.parse(a.occurredAt);
|
|
50
|
+
return byTime !== 0 ? byTime : b.id.localeCompare(a.id);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function encodeCursor(event: ToolCallActivityEvent): string {
|
|
54
|
+
return Buffer.from(`${Date.parse(event.occurredAt)}:${event.id}`).toString(
|
|
55
|
+
"base64",
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function decodeCursor(value: string): { occurredAtMs: number; id: string } {
|
|
60
|
+
const decoded = Buffer.from(value, "base64").toString("utf8");
|
|
61
|
+
const separator = decoded.indexOf(":");
|
|
62
|
+
const occurredAtMs = Number(decoded.slice(0, separator));
|
|
63
|
+
const id = decoded.slice(separator + 1);
|
|
64
|
+
if (separator < 1 || !Number.isSafeInteger(occurredAtMs) || !id) {
|
|
65
|
+
throw new InvalidActivityCursorError();
|
|
66
|
+
}
|
|
67
|
+
return { occurredAtMs, id };
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/** Strictly older than the cursor position, in the order above. */
|
|
71
|
+
function isBefore(
|
|
72
|
+
event: ToolCallActivityEvent,
|
|
73
|
+
position: { occurredAtMs: number; id: string },
|
|
74
|
+
): boolean {
|
|
75
|
+
const occurredAtMs = Date.parse(event.occurredAt);
|
|
76
|
+
if (occurredAtMs !== position.occurredAtMs) {
|
|
77
|
+
return occurredAtMs < position.occurredAtMs;
|
|
78
|
+
}
|
|
79
|
+
return event.id.localeCompare(position.id) < 0;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* One append-only record per completed downstream call. Events carry no
|
|
84
|
+
* arguments, results, generated code, or raw error messages — the store never
|
|
85
|
+
* has a payload to leak. Writes are best-effort by contract: a throw here is
|
|
86
|
+
* logged by Connecta and never reaches the tool result.
|
|
87
|
+
*/
|
|
88
|
+
export function fileActivityStore(
|
|
89
|
+
path: string,
|
|
90
|
+
opts: FileActivityOptions = {},
|
|
91
|
+
): ActivityStore {
|
|
92
|
+
const maxEvents = Math.max(1, Math.trunc(opts.maxEvents ?? 5_000));
|
|
93
|
+
// Activity records who called what, so it is owner-only like the state file.
|
|
94
|
+
const tighten = () => {
|
|
95
|
+
try {
|
|
96
|
+
chmodSync(path, 0o600);
|
|
97
|
+
} catch {
|
|
98
|
+
// Non-POSIX filesystem or a race on the file — leave the mode as-is.
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
let events: ToolCallActivityEvent[] = [];
|
|
102
|
+
// Damage found at load that the file itself still carries: a dropped line, or
|
|
103
|
+
// a last line with no newline after it. Both are repaired by rewriting the
|
|
104
|
+
// file from what parsed, because the alternative is appending onto a
|
|
105
|
+
// fragment and losing the *next* event too — one that never had anything
|
|
106
|
+
// wrong with it.
|
|
107
|
+
let repairNeeded = false;
|
|
108
|
+
if (existsSync(path)) {
|
|
109
|
+
tighten();
|
|
110
|
+
// A half-written trailing line is the normal cost of an append log, and
|
|
111
|
+
// one unreadable line is not a reason to lose the history above it. Unlike
|
|
112
|
+
// the state file there is nothing irreplaceable here — this is a record of
|
|
113
|
+
// calls that already happened — so damaged lines are dropped, loudly.
|
|
114
|
+
const raw = readFileSync(path, "utf8");
|
|
115
|
+
const lines = raw.split("\n").filter(Boolean);
|
|
116
|
+
let dropped = 0;
|
|
117
|
+
for (const line of lines) {
|
|
118
|
+
try {
|
|
119
|
+
events.push(JSON.parse(line) as ToolCallActivityEvent);
|
|
120
|
+
} catch {
|
|
121
|
+
dropped += 1;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (dropped > 0) {
|
|
125
|
+
console.error(
|
|
126
|
+
`[connecta] activity log ${path}: dropped ${dropped} unreadable ` +
|
|
127
|
+
`line(s) of ${lines.length}.`,
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
repairNeeded = dropped > 0 || (raw.length > 0 && !raw.endsWith("\n"));
|
|
131
|
+
}
|
|
132
|
+
const ensureDirectory = () => {
|
|
133
|
+
const dir = dirname(path);
|
|
134
|
+
if (dir) mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
135
|
+
};
|
|
136
|
+
const compact = () => {
|
|
137
|
+
events = [...events].sort(newestFirst).slice(0, maxEvents);
|
|
138
|
+
ensureDirectory();
|
|
139
|
+
const tmp = `${path}.tmp`;
|
|
140
|
+
// 0o600 on the temp file; the rename preserves it, so the live log is
|
|
141
|
+
// never briefly world-readable.
|
|
142
|
+
writeFileSync(
|
|
143
|
+
tmp,
|
|
144
|
+
events.map((event) => `${JSON.stringify(event)}\n`).join(""),
|
|
145
|
+
{ mode: 0o600 },
|
|
146
|
+
);
|
|
147
|
+
renameSync(tmp, path);
|
|
148
|
+
tighten();
|
|
149
|
+
};
|
|
150
|
+
// Repair before the first append rather than at the next restart: the
|
|
151
|
+
// fragment is on disk until something rewrites the file, and an append onto
|
|
152
|
+
// it corrupts a good event into an unreadable line.
|
|
153
|
+
if (repairNeeded) compact();
|
|
154
|
+
return {
|
|
155
|
+
record(event) {
|
|
156
|
+
events.push(event);
|
|
157
|
+
if (events.length > maxEvents + COMPACTION_SLACK) {
|
|
158
|
+
compact();
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
ensureDirectory();
|
|
162
|
+
appendFileSync(path, `${JSON.stringify(event)}\n`, { mode: 0o600 });
|
|
163
|
+
tighten();
|
|
164
|
+
},
|
|
165
|
+
|
|
166
|
+
async list({ cursor, limit }): Promise<ActivityPage> {
|
|
167
|
+
const boundedLimit = Math.min(100, Math.max(1, Math.trunc(limit)));
|
|
168
|
+
const position = cursor ? decodeCursor(cursor) : undefined;
|
|
169
|
+
const ordered = [...events]
|
|
170
|
+
.sort(newestFirst)
|
|
171
|
+
.filter((event) => !position || isBefore(event, position));
|
|
172
|
+
const visible = ordered.slice(0, boundedLimit);
|
|
173
|
+
const last = visible.at(-1);
|
|
174
|
+
return {
|
|
175
|
+
events: visible,
|
|
176
|
+
...(ordered.length > visible.length && last
|
|
177
|
+
? { nextCursor: encodeCursor(last) }
|
|
178
|
+
: {}),
|
|
179
|
+
};
|
|
180
|
+
},
|
|
181
|
+
};
|
|
182
|
+
}
|
|
@@ -4,10 +4,30 @@
|
|
|
4
4
|
* Keep this file as deployment configuration: connectors, authentication,
|
|
5
5
|
* storage, and public origin. Add application logic only inside deliberate
|
|
6
6
|
* api() connector handlers.
|
|
7
|
+
*
|
|
8
|
+
* The operator surface — sign-in, credential vault, access tokens, activity —
|
|
9
|
+
* ships here as commented configuration, because each half needs a secret or a
|
|
10
|
+
* retention decision this file cannot make for you. Uncomment the block you
|
|
11
|
+
* want; README.md § "Turn on the operator surface" walks through all four.
|
|
12
|
+
*
|
|
13
|
+
* Environment (see .env.example):
|
|
14
|
+
* CONNECTA_TOKEN required inbound bearer token
|
|
15
|
+
* PORT listen port (default 8787)
|
|
16
|
+
* PUBLIC_URL public origin; downstream OAuth calls back to it
|
|
17
|
+
* CONNECTA_STATE_FILE fileStorage path (the container points it at /data)
|
|
18
|
+
* CLERK_PUBLISHABLE_KEY operator sign-in, once the Clerk block is on
|
|
19
|
+
* CLERK_SECRET_KEY operator sign-in, once the Clerk block is on
|
|
20
|
+
* CONNECTA_CREDENTIAL_KEY vault key, once the credentials block is on
|
|
21
|
+
* CONNECTA_ACTIVITY_FILE activity log, once the activity block is on
|
|
7
22
|
*/
|
|
8
23
|
import { api, bearerToken, createConnecta } from "@zackbart/connecta";
|
|
9
24
|
import { fileStorage, listen } from "@zackbart/connecta/node";
|
|
10
25
|
import { quickJsExecutor } from "@zackbart/connecta/quickjs";
|
|
26
|
+
// Operator sign-in. Needs `npm install @clerk/backend` — it is an optional
|
|
27
|
+
// peer, so it does not install with Connecta.
|
|
28
|
+
// import { clerkAuth } from "@zackbart/connecta/auth/clerk";
|
|
29
|
+
// Payload-free activity history, kept beside the state file.
|
|
30
|
+
// import { fileActivityStore } from "./file-activity.js";
|
|
11
31
|
|
|
12
32
|
const token = process.env.CONNECTA_TOKEN;
|
|
13
33
|
if (!token) {
|
|
@@ -16,16 +36,72 @@ if (!token) {
|
|
|
16
36
|
);
|
|
17
37
|
}
|
|
18
38
|
const port = Number(process.env.PORT ?? 8787);
|
|
39
|
+
// Empty is unset: an untouched `.env` passes through Compose as "", and an
|
|
40
|
+
// empty state path or public origin is worse than the local default.
|
|
41
|
+
const stateFile = process.env.CONNECTA_STATE_FILE || "./.connecta-state.json";
|
|
42
|
+
const publicUrl = process.env.PUBLIC_URL || `http://localhost:${port}`;
|
|
43
|
+
|
|
44
|
+
// Operator sign-in. A bearer token is a client key: it may call tools and read
|
|
45
|
+
// connector status, but only a Clerk-authenticated operator may write a
|
|
46
|
+
// credential or issue an access token. Without this block the operator pages
|
|
47
|
+
// still render — an operator pastes the bearer to read them — and Credentials
|
|
48
|
+
// and Tokens stay read-only.
|
|
49
|
+
// const clerkPublishableKey = process.env.CLERK_PUBLISHABLE_KEY;
|
|
50
|
+
// const clerkSecretKey = process.env.CLERK_SECRET_KEY;
|
|
51
|
+
// if (!clerkPublishableKey || !clerkSecretKey) {
|
|
52
|
+
// throw new Error(
|
|
53
|
+
// "Operator sign-in needs CLERK_PUBLISHABLE_KEY and CLERK_SECRET_KEY.",
|
|
54
|
+
// );
|
|
55
|
+
// }
|
|
19
56
|
|
|
20
57
|
const connecta = createConnecta({
|
|
21
|
-
storage: fileStorage(
|
|
22
|
-
auth:
|
|
23
|
-
|
|
58
|
+
storage: fileStorage(stateFile),
|
|
59
|
+
auth: [
|
|
60
|
+
bearerToken(token, { subjectId: "operator" }),
|
|
61
|
+
// clerkAuth({
|
|
62
|
+
// publishableKey: clerkPublishableKey,
|
|
63
|
+
// secretKey: clerkSecretKey,
|
|
64
|
+
// publicUrl,
|
|
65
|
+
// // Restrict who may sign in — or use `gate` for anything a domain
|
|
66
|
+
// // cannot express. Absent, every authenticated Clerk user is admitted.
|
|
67
|
+
// // allowedDomains: ["acme.com"],
|
|
68
|
+
// }),
|
|
69
|
+
],
|
|
70
|
+
publicUrl,
|
|
24
71
|
// Required: model-written programs run in a bounded QuickJS child.
|
|
25
72
|
executor: quickJsExecutor(),
|
|
73
|
+
// Credential vault. A connector that declares a `credential` slot becomes
|
|
74
|
+
// editable at /credentials, and its value is encrypted in the state file
|
|
75
|
+
// with this key — so keep the key out of that file and out of source:
|
|
76
|
+
// node -e "console.log(crypto.randomBytes(32).toString('base64'))"
|
|
77
|
+
// Rotating a credential takes effect on the next call; no restart.
|
|
78
|
+
// credentials: { encryptionKey: process.env.CONNECTA_CREDENTIAL_KEY },
|
|
79
|
+
//
|
|
80
|
+
// Named, revocable Bearer tokens for MCP clients, issued at /tokens by a
|
|
81
|
+
// signed-in operator. Secrets are shown once; only their hashes are stored.
|
|
82
|
+
// Requires the Clerk block above — there is nobody to authorize issuance
|
|
83
|
+
// otherwise.
|
|
84
|
+
// accessTokens: {},
|
|
85
|
+
//
|
|
86
|
+
// Payload-free activity history at /activity: who called what, when, how
|
|
87
|
+
// long it took, and whether it worked. Never arguments, results, generated
|
|
88
|
+
// code, or raw error messages. Commented because retention is yours to
|
|
89
|
+
// choose — see src/file-activity.ts.
|
|
90
|
+
// activity: {
|
|
91
|
+
// store: fileActivityStore(
|
|
92
|
+
// process.env.CONNECTA_ACTIVITY_FILE || "./.connecta-activity.jsonl",
|
|
93
|
+
// ),
|
|
94
|
+
// deploymentId: "production",
|
|
95
|
+
// },
|
|
26
96
|
connectors: [
|
|
27
97
|
api("time", {
|
|
28
98
|
description: "Time — current timestamp",
|
|
99
|
+
// /credentials lists connectors, not deployments: the page stays hidden
|
|
100
|
+
// until at least one connector declares a slot, vault or no vault. A
|
|
101
|
+
// connector that needs an operator-managed secret adds one here —
|
|
102
|
+
// credential: { label: "API token" },
|
|
103
|
+
// — and reads it inside a handler with `await ctx.credential?.get()`.
|
|
104
|
+
// Telling the time needs no secret, so this one declares nothing.
|
|
29
105
|
tools: [
|
|
30
106
|
{
|
|
31
107
|
name: "get_now",
|
|
@@ -40,4 +116,4 @@ const connecta = createConnecta({
|
|
|
40
116
|
});
|
|
41
117
|
|
|
42
118
|
listen(connecta, port);
|
|
43
|
-
console.log(`connecta listening on
|
|
119
|
+
console.log(`connecta listening on port ${port}; MCP at ${publicUrl}/mcp`);
|
|
Binary file
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"access-tokens.d.ts","sourceRoot":"","sources":["../src/access-tokens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AA6BrE,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,mBAAmB,CAAC;CAClC;AAyGD;;;;GAIG;AACH,qBAAa,kBAAkB;IAK3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJ1B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAGhB,OAAO,EAAE,SAAS,EACnC,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO;YAgCxB,IAAI;IAKZ,IAAI,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IActC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAoCrE,MAAM,CACV,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAQhC,MAAM,CACV,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAexB,SAAS;CAgBxB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"access-tokens.js","sourceRoot":"","sources":["../src/access-tokens.ts"],"names":[],"mappings":"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"}
|
package/dist/activity.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../src/activity.ts"],"names":[],"mappings":"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"}
|
package/dist/activity.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"activity.js","sourceRoot":"","sources":["../src/activity.ts"],"names":[],"mappings":"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"}
|
package/dist/apps-shell.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"apps-shell.d.ts","sourceRoot":"","sources":["../src/apps-shell.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,uEAAuE;AACvE,eAAO,MAAM,uBAAuB,gCAAgC,CAAC;AAErE,+DAA+D;AAC/D,eAAO,MAAM,oBAAoB,8BAA8B,CAAC;AAEhE;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,gBAAgB,CAAC;AAEjD,gEAAgE;AAChE,eAAO,MAAM,kBAAkB,+BAA+B,CAAC;AAE/D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB,07ZAsUjC,CAAC"}
|
package/dist/apps-shell.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"apps-shell.js","sourceRoot":"","sources":["../src/apps-shell.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,uEAAuE;AACvE,MAAM,CAAC,MAAM,uBAAuB,GAAG,6BAA6B,CAAC;AAErE,+DAA+D;AAC/D,MAAM,CAAC,MAAM,oBAAoB,GAAG,2BAA2B,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAC;AAEjD,gEAAgE;AAChE,MAAM,CAAC,MAAM,kBAAkB,GAAG,4BAA4B,CAAC;AAE/D;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsUpC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bearer.d.ts","sourceRoot":"","sources":["../../src/auth/bearer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,WAAW,EAAE,MAAM,aAAa,CAAC;AAiB3D,MAAM,WAAW,kBAAkB;IACjC,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,kBAAuB,GAC/B,WAAW,CA6Bb"}
|
package/dist/auth/bearer.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bearer.js","sourceRoot":"","sources":["../../src/auth/bearer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AAGvE,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAElC,qFAAqF;AACrF,SAAS,eAAe,CAAC,CAAa,EAAE,CAAa;IACnD,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3D,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC;AAOD;;;;GAIG;AACH,MAAM,UAAU,WAAW,CACzB,MAAc,EACd,UAA8B,EAAE;IAEhC,6BAA6B,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3C,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,SAAS,CAAC,OAAO;YACf,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;YAC1D,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9C,IAAI,KAAK,IAAI,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC;gBACpE,OAAO;oBACL,EAAE,EAAE,IAAI;oBACR,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC/D,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,QAAQ,EAAE,IAAI,QAAQ,CACpB,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,EACzC;oBACE,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE;wBACP,cAAc,EAAE,kBAAkB;wBAClC,kBAAkB,EAAE,QAAQ;qBAC7B;iBACF,CACF;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/auth/clerk.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clerk.d.ts","sourceRoot":"","sources":["../../src/auth/clerk.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,KAAK,EAAc,WAAW,EAAE,MAAM,aAAa,CAAC;AAE3D,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAGxD,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,8EAA8E;IAC9E,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1E,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAsMD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,WAAW,CAyT7D"}
|