@zackbart/connecta 0.7.9 → 0.8.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.
Files changed (180) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/README.md +67 -144
  3. package/dist/auth/bearer.d.ts +1 -1
  4. package/dist/auth/bearer.js +4 -4
  5. package/dist/auth/bearer.js.map +1 -1
  6. package/dist/auth/clerk.d.ts +1 -1
  7. package/dist/auth/clerk.js +1 -1
  8. package/dist/call-admission.d.ts.map +1 -1
  9. package/dist/call-admission.js +9 -3
  10. package/dist/call-admission.js.map +1 -1
  11. package/dist/catalog-fingerprint.d.ts +20 -0
  12. package/dist/catalog-fingerprint.d.ts.map +1 -0
  13. package/dist/catalog-fingerprint.js +34 -0
  14. package/dist/catalog-fingerprint.js.map +1 -0
  15. package/dist/catalog-limits.d.ts +10 -0
  16. package/dist/catalog-limits.d.ts.map +1 -0
  17. package/dist/catalog-limits.js +10 -0
  18. package/dist/catalog-limits.js.map +1 -0
  19. package/dist/catalog-service.d.ts +138 -0
  20. package/dist/catalog-service.d.ts.map +1 -0
  21. package/dist/catalog-service.js +407 -0
  22. package/dist/catalog-service.js.map +1 -0
  23. package/dist/catalog.js +2 -2
  24. package/dist/catalog.js.map +1 -1
  25. package/dist/concurrency.d.ts +4 -0
  26. package/dist/concurrency.d.ts.map +1 -0
  27. package/dist/concurrency.js +31 -0
  28. package/dist/concurrency.js.map +1 -0
  29. package/dist/connectors/api.d.ts.map +1 -1
  30. package/dist/connectors/api.js +22 -12
  31. package/dist/connectors/api.js.map +1 -1
  32. package/dist/connectors/remote-mcp.d.ts.map +1 -1
  33. package/dist/connectors/remote-mcp.js +44 -19
  34. package/dist/connectors/remote-mcp.js.map +1 -1
  35. package/dist/credential-health.d.ts +0 -22
  36. package/dist/credential-health.d.ts.map +1 -1
  37. package/dist/credential-health.js +14 -10
  38. package/dist/credential-health.js.map +1 -1
  39. package/dist/credentials.d.ts +3 -2
  40. package/dist/credentials.d.ts.map +1 -1
  41. package/dist/errors.d.ts +1 -1
  42. package/dist/errors.d.ts.map +1 -1
  43. package/dist/errors.js.map +1 -1
  44. package/dist/execute.d.ts +9 -8
  45. package/dist/execute.d.ts.map +1 -1
  46. package/dist/execute.js +144 -321
  47. package/dist/execute.js.map +1 -1
  48. package/dist/executor-result.d.ts +0 -3
  49. package/dist/executor-result.d.ts.map +1 -1
  50. package/dist/executor-result.js +2 -2
  51. package/dist/executor-result.js.map +1 -1
  52. package/dist/executors/quickjs-child.js +3 -3
  53. package/dist/executors/quickjs-child.js.map +1 -1
  54. package/dist/executors/quickjs-protocol.d.ts +4 -1
  55. package/dist/executors/quickjs-protocol.d.ts.map +1 -1
  56. package/dist/executors/quickjs-runtime.d.ts.map +1 -1
  57. package/dist/executors/quickjs-runtime.js +7 -2
  58. package/dist/executors/quickjs-runtime.js.map +1 -1
  59. package/dist/executors/quickjs.d.ts.map +1 -1
  60. package/dist/executors/quickjs.js +4 -1
  61. package/dist/executors/quickjs.js.map +1 -1
  62. package/dist/favicon.js +2 -2
  63. package/dist/favicon.js.map +1 -1
  64. package/dist/index.d.ts +5 -0
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +44 -17
  67. package/dist/index.js.map +1 -1
  68. package/dist/invocation.d.ts +96 -0
  69. package/dist/invocation.d.ts.map +1 -0
  70. package/dist/invocation.js +369 -0
  71. package/dist/invocation.js.map +1 -0
  72. package/dist/meta-tools.d.ts +8 -86
  73. package/dist/meta-tools.d.ts.map +1 -1
  74. package/dist/meta-tools.js +145 -583
  75. package/dist/meta-tools.js.map +1 -1
  76. package/dist/operator-ui/generated.d.ts +3 -0
  77. package/dist/operator-ui/generated.d.ts.map +1 -0
  78. package/dist/operator-ui/generated.js +5 -0
  79. package/dist/operator-ui/generated.js.map +1 -0
  80. package/dist/operator-ui/model.d.ts +94 -0
  81. package/dist/operator-ui/model.d.ts.map +1 -0
  82. package/dist/operator-ui/model.js +28 -0
  83. package/dist/operator-ui/model.js.map +1 -0
  84. package/dist/registry.d.ts +22 -6
  85. package/dist/registry.d.ts.map +1 -1
  86. package/dist/registry.js +328 -35
  87. package/dist/registry.js.map +1 -1
  88. package/dist/routes/activity.d.ts +3 -0
  89. package/dist/routes/activity.d.ts.map +1 -0
  90. package/dist/routes/activity.js +173 -0
  91. package/dist/routes/activity.js.map +1 -0
  92. package/dist/routes/credentials.d.ts +3 -0
  93. package/dist/routes/credentials.d.ts.map +1 -0
  94. package/dist/routes/credentials.js +181 -0
  95. package/dist/routes/credentials.js.map +1 -0
  96. package/dist/routes/mcp.d.ts +8 -0
  97. package/dist/routes/mcp.d.ts.map +1 -0
  98. package/dist/routes/mcp.js +383 -0
  99. package/dist/routes/mcp.js.map +1 -0
  100. package/dist/routes/oauth.d.ts +4 -0
  101. package/dist/routes/oauth.d.ts.map +1 -0
  102. package/dist/routes/oauth.js +268 -0
  103. package/dist/routes/oauth.js.map +1 -0
  104. package/dist/routes/shared.d.ts +97 -0
  105. package/dist/routes/shared.d.ts.map +1 -0
  106. package/dist/routes/shared.js +199 -0
  107. package/dist/routes/shared.js.map +1 -0
  108. package/dist/routes/ui.d.ts +3 -0
  109. package/dist/routes/ui.d.ts.map +1 -0
  110. package/dist/routes/ui.js +122 -0
  111. package/dist/routes/ui.js.map +1 -0
  112. package/dist/server.d.ts +9 -40
  113. package/dist/server.d.ts.map +1 -1
  114. package/dist/server.js +63 -1293
  115. package/dist/server.js.map +1 -1
  116. package/dist/skills.d.ts +0 -15
  117. package/dist/skills.d.ts.map +1 -1
  118. package/dist/skills.js +6 -5
  119. package/dist/skills.js.map +1 -1
  120. package/dist/storage/file.d.ts.map +1 -1
  121. package/dist/storage/file.js +3 -1
  122. package/dist/storage/file.js.map +1 -1
  123. package/dist/storage/memory.d.ts.map +1 -1
  124. package/dist/storage/memory.js +3 -1
  125. package/dist/storage/memory.js.map +1 -1
  126. package/dist/toolkits.d.ts +0 -22
  127. package/dist/toolkits.d.ts.map +1 -1
  128. package/dist/toolkits.js +2 -2
  129. package/dist/toolkits.js.map +1 -1
  130. package/dist/types.d.ts +9 -2
  131. package/dist/types.d.ts.map +1 -1
  132. package/dist/ui.d.ts +3 -93
  133. package/dist/ui.d.ts.map +1 -1
  134. package/dist/ui.js +26 -1393
  135. package/dist/ui.js.map +1 -1
  136. package/dist/version.d.ts +1 -1
  137. package/dist/version.js +1 -1
  138. package/package.json +15 -8
  139. package/src/auth/bearer.ts +4 -4
  140. package/src/auth/clerk.ts +1 -1
  141. package/src/call-admission.ts +8 -5
  142. package/src/catalog-fingerprint.ts +52 -0
  143. package/src/catalog-limits.ts +11 -0
  144. package/src/catalog-service.ts +601 -0
  145. package/src/catalog.ts +2 -2
  146. package/src/concurrency.ts +39 -0
  147. package/src/connectors/api.ts +22 -12
  148. package/src/connectors/remote-mcp.ts +52 -22
  149. package/src/credential-health.ts +13 -10
  150. package/src/credentials.ts +2 -2
  151. package/src/errors.ts +1 -1
  152. package/src/execute.ts +194 -409
  153. package/src/executor-result.ts +2 -2
  154. package/src/executors/quickjs-child.ts +8 -4
  155. package/src/executors/quickjs-protocol.ts +1 -1
  156. package/src/executors/quickjs-runtime.ts +5 -1
  157. package/src/executors/quickjs.ts +11 -8
  158. package/src/favicon.ts +2 -2
  159. package/src/index.ts +49 -17
  160. package/src/invocation.ts +527 -0
  161. package/src/meta-tools.ts +366 -906
  162. package/src/operator-ui/browser.css +413 -0
  163. package/src/operator-ui/browser.ts +1121 -0
  164. package/src/operator-ui/generated.ts +4 -0
  165. package/src/operator-ui/model.ts +127 -0
  166. package/src/registry.ts +434 -44
  167. package/src/routes/activity.ts +220 -0
  168. package/src/routes/credentials.ts +266 -0
  169. package/src/routes/mcp.ts +485 -0
  170. package/src/routes/oauth.ts +328 -0
  171. package/src/routes/shared.ts +330 -0
  172. package/src/routes/ui.ts +153 -0
  173. package/src/server.ts +66 -1703
  174. package/src/skills.ts +6 -5
  175. package/src/storage/file.ts +3 -1
  176. package/src/storage/memory.ts +3 -1
  177. package/src/toolkits.ts +2 -2
  178. package/src/types.ts +9 -2
  179. package/src/ui.ts +52 -1493
  180. package/src/version.ts +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,54 @@
2
2
 
3
3
  All notable changes to this package are documented here.
4
4
 
5
+ ## 0.8.0 — 2026-07-28
6
+
7
+ 0.8.0 is consolidation before capability growth (#157): the semantics that were
8
+ independently implemented across call paths — invocation, catalog access,
9
+ discovery bounds, timeouts — now live in shared services, the oversized modules
10
+ (`server.ts`, the operator UI) are split into typed, tested units, and the dev
11
+ loop gained correctness-only linting, an unused-code gate, strict indexed and
12
+ optional property checks, and an automated Workers test-partition guard. A
13
+ deployment can take this release without touching its config: entrypoints,
14
+ options, storage formats, and the tool surface are unchanged. The docs were
15
+ restructured — the old numbered manual is retired in favor of a terse
16
+ [`ethos.md`](./ethos.md) and stub guides in `documentation/` — and the
17
+ temporary `@hono/node-server` override is gone now that the SDK (1.30.0)
18
+ depends on a patched version upstream.
19
+
20
+ ### Added
21
+
22
+ - **`ethos.md`** — what connecta is, what it refuses to be, a decisions table,
23
+ and the invariants, each enforced or reviewer-owned (#175, PR #180). CI caps
24
+ its length; terseness is the point.
25
+ - **Route-contract and operator-UI browser tests** pinning server behavior
26
+ before extraction (#148 PR #168, #149 PR #169).
27
+ - **Automated Workers test-partition guard** — every suite must be classified
28
+ portable or Node-bound, with a reason (#150, PR #161).
29
+
30
+ ### Changed
31
+
32
+ - **Tool invocation and catalog access are shared services** used by direct,
33
+ batch, and code-mode paths alike (#144, PR #162); code-mode dispatch is lazy
34
+ (#145, PR #163); catalog discovery is deduplicated and bounded (#146,
35
+ PR #164); persisted catalogs are chunked with bounded I/O (#147/#167,
36
+ PRs #166/#172).
37
+ - **`server.ts` is a composition root** over extracted route modules (#148,
38
+ PR #170); the operator UI is typed, bundled browser source (#149, PR #169).
39
+ - **Strict indexed access and exact optional property types** are on across
40
+ src and tests (#151, PR #181); Oxlint correctness and Knip unused-code gates
41
+ run in `npm run check` (#155, PR #171).
42
+ - **`@modelcontextprotocol/sdk` 1.30.0** with the `@hono/node-server` override
43
+ removed (#40, PR #174).
44
+ - **Docs restructure** — `docs/` retired; `README.md` is a short overview and
45
+ per-subsystem guides will be rewritten in `documentation/` (#175, PR #180).
46
+ Toolkits (#178) and proactive credential liveness (#179) are recorded as
47
+ retired decisions; their code remains in this release pending removal.
48
+
49
+ ### Fixed
50
+
51
+ - Nothing user-visible; behavior-preserving consolidation throughout.
52
+
5
53
  ## 0.7.9 — 2026-07-28
6
54
 
7
55
  0.7.9 adds opt-in, connector-scoped admission for downstream tool calls. Direct
package/README.md CHANGED
@@ -2,130 +2,59 @@
2
2
 
3
3
  ![A monochrome clay Connecta hub joining many tools](./assets/connecta-clay-hero.png)
4
4
 
5
- One MCP endpoint in front of all your connectors. Agents see nine tools instead
6
- of hundreds, and each client is configured once instead of once per integration.
5
+ One MCP endpoint in front of every integration you've deliberately chosen.
6
+ Agents see a handful of meta-tools instead of hundreds of definitions, and each
7
+ client is configured once instead of once per integration.
7
8
 
8
9
  ## The problem
9
10
 
10
- An agent connected to N MCP servers pays for all N before it does anything. Every
11
- server's tool list is injected into the context window at connect time — hundreds
12
- of definitions and their schemas, nearly all irrelevant to the task actually at
13
- hand. That budget is spent whether the model calls one of them or none, and it
14
- comes out of the same window the work needs.
15
-
16
- The second cost is configuration. Every client — Claude, Cursor, whatever comes
17
- next — has to be pointed at each server separately, with its own auth for each.
18
- Adding an integration means touching every client; rotating one token means
19
- finding every place it was pasted.
11
+ An agent connected to N MCP servers pays for all N before it does anything:
12
+ every server's full tool list lands in the context window at connect time,
13
+ nearly all of it irrelevant to the task at hand. The second cost is
14
+ configuration every client has to be pointed at every server separately,
15
+ each with its own auth, and rotating one token means finding every place it
16
+ was pasted.
20
17
 
21
18
  ## What connecta is
22
19
 
23
- One MCP endpoint you deploy — Cloudflare Worker, Node, or Docker — that
24
- aggregates your downstream connectors behind a fixed set of **nine meta-tools**.
25
- A connector is either a remote MCP server that connecta proxies, or a plain HTTP
26
- API with hand-written tool definitions and a fetch handler.
20
+ One MCP endpoint you deploy — a Cloudflare Worker or a Node process in a
21
+ Docker stack, same code either way aggregating your downstream connectors
22
+ behind a small, fixed set of meta-tools. A connector is either a remote MCP
23
+ server that connecta proxies, or a plain HTTP API with hand-written tool
24
+ definitions and a fetch handler. Both come out identical: same two-segment
25
+ addresses (`<connectorId>.<toolName>`), same catalog, same safety rules.
27
26
 
28
27
  ```
29
28
  ┌── remoteMcp("notion") → mcp.notion.com
30
29
  Claude / Cursor ── MCP ──▶ connecta ───┼── remoteMcp("linear") → mcp.linear.app
31
- sees 9 tools /mcp ├── api("resend") → fetch(...)
30
+ sees 9 tools /mcp ├── api("resend") → fetch(...)
32
31
  └── api("internal") → fetch(...)
33
32
  ```
34
33
 
35
- Rather than receiving every tool up front, the agent discovers what it needs.
36
- `search_tools` returns ranked matches for a query and `describe_tools` returns
37
- schemas compact by default, raw JSON Schema on request — for only the
38
- addresses it is about to call. `call_tool`,
39
- `batch_call`, and `call_destructive_tool` invoke them by address
40
- (`<connectorId>.<toolName>`). `list_connectors` reports what exists and whether
41
- it is reachable, `authorize_connector` starts a downstream OAuth flow,
42
- `get_result` pages through a result too large to return inline, and `skills`
43
- hands the model a short guide to choosing among the rest.
44
-
45
- That is the entire surface. The agent's context holds nine tool definitions
46
- whether ten tools sit behind them or a thousand and the client holds one URL
47
- and one credential, no matter how many services that URL fans out to.
48
-
49
- An optional tenth meta-tool, `execute_code`, runs model-written async JavaScript
50
- in a sandbox with no network, filesystem, or environment access only the
51
- explicitly read-only tools as callable globals — turning a loop, a join across
52
- connectors, or a filter over a large response into one round trip instead of a
53
- dozen. The built-in Node executor runs QuickJS in bounded, replaceable child
54
- processes so guest CPU never occupies the HTTP event loop. Configure no
55
- `executor` and connecta is exactly the nine-tool server.
56
-
57
- ## Why it's shaped this way
58
-
59
- **Config as code, one deployment per tenant.** Connectors are declared in
60
- TypeScript. Adding one is a code change and a deploy — no database of
61
- integrations, no registration API, no runtime admin. A deployment is a small
62
- config file you can read in one sitting and review in a pull request, not a
63
- platform to administer.
64
-
65
- **Credentials stay server-side.** Downstream tokens live in an AES-GCM encrypted
66
- vault over the deployment's own storage, with the key held outside it. A
67
- connector reaches its own credential through `ctx.credential`; the operator
68
- pages, meta-tools, and code sandbox never expose a secret value. Rotating a token
69
- at `/credentials` is an operator action rather than a redeploy — though writing
70
- to the vault is deliberately narrower than everything else, requiring a
71
- Clerk-authenticated operator on a same-origin request, so a bearer-only
72
- deployment cannot administer credentials from the browser. Which tools exist
73
- is still code either way.
74
-
75
- **Read-only is fail-closed.** Only tools explicitly annotated `readOnlyHint:
76
- true` are reachable through `call_tool`, `batch_call`, and the sandbox. Missing,
77
- false, or contradictory annotations do not get the benefit of the doubt: they
78
- require `call_destructive_tool`, which is itself annotated so the MCP host can
79
- put the question to a human. Connecta makes the boundary visible; approval is
80
- the host's job.
81
-
82
- **Toolkits scope what a team sees.** A deployment belongs to an org; a toolkit
83
- is a named view over its registry for one group inside that org — support sees
84
- Zendesk and Notion, exec also sees Gmail. A client selects one with
85
- `?toolkit=support` on the MCP URL, and a credential can be bound so it opens
86
- that view and nothing else. Inside a scoped session an out-of-scope address
87
- fails exactly as a nonexistent one does. Two teams, one deployment. Who gets in
88
- at all is the prior question: a static bearer token, or Clerk — where
89
- `allowedDomains: ["acme.com"]` admits anyone whose verified primary email is on
90
- your domain without enumerating users, and a `gate` hook handles what a domain
91
- rule cannot express. Both fail closed, and each one configured must pass.
92
-
93
- **Activity records the fact, not the payload.** The optional activity store logs
94
- which resolved tool ran, for whom, and how it went — never arguments, results,
95
- generated code, search text, or raw error messages. The exclusion is structural
96
- rather than a redaction pass: the event type has nowhere to put a payload, which
97
- is what keeps an operations log from becoming something worth stealing.
98
-
99
- **Operator pages that cannot administer the deployment.** Connections at `GET /`
100
- shows connector health, tool counts, downstream authorization links, and a
101
- read-only map of the toolkit views declared in deployment config;
102
- `/credentials` rotates stored secrets; and `/activity` shows the optional
103
- payload-free ledger. They share one data-free shell with no build step and use
104
- authenticated private APIs for deployment data. They cannot add a connector,
105
- change policy, or alter what an agent may call. Credentials connecta stores are
106
- also probed for liveness
107
- proactively — using each connector's own test or status hook, never a downstream
108
- tool call — so a dead token surfaces as `auth_required` with the URL to open on
109
- Connections and in `list_connectors` before an agent's real call trips over it.
110
-
111
- ## When not to use it
112
-
113
- Connecta is deliberately small, and declines several tempting shapes.
114
- It is **not multi-tenant** — one deployment is one tenant, with one registry and
115
- one credential store, and toolkits are scoped views rather than tenants. There
116
- is **no policy engine**, no approvals, and no pauses — access decisions are
117
- fixed ones connecta already knows how to answer (is this tool read-only, may
118
- this credential open this toolkit), not rules you author. There is **no runtime
119
- administration** — you cannot add a connector from a browser or an API. It
120
- aggregates **tools only**, not MCP resources or prompts, and it will not ingest
121
- a **GraphQL** schema, because generating hundreds of low-quality tool
122
- definitions is the problem the nine meta-tools exist to solve. OpenAPI is a
123
- softer no: not built in today, not refused either, and tracked as
124
- [issue #26](https://github.com/zackbart/connecta/issues/26). If you want a
125
- hosted multi-tenant integration platform with an approval workflow, this is the
126
- wrong shape; the
127
- [non-goals](https://github.com/zackbart/connecta/blob/main/docs/decisions.md#non-goals)
128
- say so at more length.
34
+ Rather than receiving every tool up front, the agent discovers what it needs:
35
+ `search_tools` ranks matches, `describe_tools` returns schemas for only the
36
+ addresses about to be called, and `call_tool` / `batch_call` /
37
+ `call_destructive_tool` invoke them by address. `list_connectors` reports what
38
+ exists, `authorize_connector` starts a downstream OAuth flow, `get_result`
39
+ pages through oversized results, and `skills` hands the model a short guide to
40
+ the rest. The agent's context holds nine tool definitions whether ten tools
41
+ sit behind them or a thousand.
42
+
43
+ An optional tenth, `execute_code`, runs model-written JavaScript in a sandbox
44
+ with no network, filesystem, or environment access only the explicitly
45
+ read-only tools as callable globals turning a loop or a cross-connector join
46
+ into one round trip. Configure no executor and connecta is exactly the
47
+ nine-tool server.
48
+
49
+ Three properties are load-bearing enough to name here; the rest live in the
50
+ [ethos](./ethos.md). **Read-only is fail-closed**: only tools explicitly
51
+ annotated read-only are reachable through `call_tool`, `batch_call`, and the
52
+ sandbox everything else crosses `call_destructive_tool`, which is annotated
53
+ so the MCP host can ask a human. **Credentials stay server-side**: downstream
54
+ tokens live in an encrypted vault, rotated from an operator page rather than a
55
+ redeploy, and no surface ever returns a secret. **Config is code**: adding a
56
+ connector is an edit and a deploy — no registration API, no admin UI, one
57
+ small file you can review in a pull request.
129
58
 
130
59
  ## Getting started
131
60
 
@@ -164,42 +93,36 @@ listen(connecta, 8787); // MCP at /mcp; Connections at http://localhost:8787/
164
93
  ```
165
94
 
166
95
  Point an MCP client at `http://localhost:8787/mcp` with an
167
- `Authorization: Bearer` header and it will see the nine meta-tools, with
168
- `time.get_now` discoverable through `search_tools`.
96
+ `Authorization: Bearer` header and `time.get_now` is discoverable through
97
+ `search_tools`.
169
98
 
170
99
  Runnable deployments live in
171
100
  [`examples/`](https://github.com/zackbart/connecta/tree/main/examples):
172
- [`worker/`](https://github.com/zackbart/connecta/tree/main/examples/worker) is a
173
- free-tier-compatible Cloudflare Worker with KV and D1 adapters, and the template
174
- to copy for a real deployment; adding one Worker Loader binding opts it into
175
- paid Dynamic Worker code mode without changing its TypeScript;
176
- [`node/`](https://github.com/zackbart/connecta/tree/main/examples/node) adds
177
- toolkits and code mode to the server above;
178
- [`docker/`](https://github.com/zackbart/connecta/tree/main/examples/docker) is a
179
- single-service compose stack. Anything beyond the core is installed only by the
180
- deployments that use it: `@clerk/backend` and `quickjs-emscripten` are optional
181
- peer dependencies, reached through the `/auth/clerk` and `/quickjs` subpaths,
182
- and a Worker using code mode brings its own `@cloudflare/codemode`. Connecta
183
- ships no service-specific connectors:
184
- endpoint, credential, and tool choices stay in your project, declared with
185
- `remoteMcp()` and `api()`.
101
+ [`worker/`](https://github.com/zackbart/connecta/tree/main/examples/worker) is
102
+ a free-tier-compatible Cloudflare Worker with KV and D1 adapters and the
103
+ template to copy for a real deployment;
104
+ [`node/`](https://github.com/zackbart/connecta/tree/main/examples/node) extends
105
+ the server above;
106
+ [`docker/`](https://github.com/zackbart/connecta/tree/main/examples/docker) is
107
+ a single-service compose stack. Anything beyond the core is installed only by
108
+ the deployments that use it `@clerk/backend` and `quickjs-emscripten` are
109
+ optional peers behind the `/auth/clerk` and `/quickjs` subpaths — and connecta
110
+ ships no service-specific connectors: endpoint, credential, and tool choices
111
+ stay in your project, declared with `remoteMcp()` and `api()`.
112
+
113
+ A candid note on maturity: connecta is built for its author's deployments
114
+ first and published openly. Breaking changes are cheap and the version number
115
+ signals change, not stability — the [ethos](./ethos.md) says so on purpose.
186
116
 
187
117
  ## Learn more
188
118
 
189
- - **[Documentation](https://github.com/zackbart/connecta/blob/main/docs/documentation.md)**
190
- the reference index for architecture, connectors, inbound auth and
191
- downstream OAuth, storage, Clerk setup, testing, and troubleshooting. Start
192
- with the [meta-tools reference](https://github.com/zackbart/connecta/blob/main/docs/meta-tools.md#meta-tools-reference),
193
- the [config options](https://github.com/zackbart/connecta/blob/main/docs/operations.md#running-it),
194
- [request admission](https://github.com/zackbart/connecta/blob/main/docs/request-admission.md#request-admission-and-backpressure),
195
- [code mode](https://github.com/zackbart/connecta/blob/main/docs/code-mode.md#code-mode-execute_code),
196
- [toolkits](https://github.com/zackbart/connecta/blob/main/docs/toolkits.md#toolkits-scoped-views),
197
- [operator pages](https://github.com/zackbart/connecta/blob/main/docs/operator-ui.md#status-ui),
198
- or [credential health](https://github.com/zackbart/connecta/blob/main/docs/storage-and-credentials.md#credential-health-proactive-liveness-checks).
199
- - **[Decisions](https://github.com/zackbart/connecta/blob/main/docs/decisions.md)**
200
- — what connecta refuses to be, which alternatives lost and why, and the
201
- invariants a change must preserve.
202
- - **[CHANGELOG](https://github.com/zackbart/connecta/blob/main/CHANGELOG.md)** —
203
- what changed in each release.
204
- - **[SECURITY](https://github.com/zackbart/connecta/blob/main/SECURITY.md)** —
205
- supported versions and how to report a vulnerability.
119
+ - **[ethos.md](./ethos.md)** — what this is, what it refuses to be, the
120
+ decisions table, and the invariants every change must preserve. Read this
121
+ before proposing anything.
122
+ - **[documentation/](./documentation/)** — per-subsystem guides. Currently
123
+ stubs: the old manual was retired during the phase-1 docs restructure and
124
+ each guide is being rewritten as the ideas settle; prior text lives in git
125
+ history.
126
+ - **[CHANGELOG](./CHANGELOG.md)** — what changed in each release.
127
+ - **[SECURITY](./SECURITY.md)** — supported versions and how to report a
128
+ vulnerability.
@@ -9,7 +9,7 @@ export interface BearerTokenOptions extends ToolkitBindingOptions {
9
9
  * against `secret`. Checked BEFORE the Clerk gate in the server; a mismatch
10
10
  * falls through so a co-configured Clerk provider can still admit the request.
11
11
  *
12
- * `toolkits` binds the token to named toolkits (docs/toolkits.md): one
12
+ * `toolkits` binds the token to named toolkits (documentation/toolkits.md): one
13
13
  * `bearerToken(...)` per team credential, each naming the view that team may
14
14
  * open. Omit it and the token stays unbound — every declared toolkit plus the
15
15
  * full registry.
@@ -11,7 +11,7 @@ function timingSafeEqual(a, b) {
11
11
  }
12
12
  let r = 0;
13
13
  for (let i = 0; i < a.length; i++)
14
- r |= a[i] ^ b[i];
14
+ r |= (a[i] ?? 0) ^ (b[i] ?? 0);
15
15
  return r === 0;
16
16
  }
17
17
  /**
@@ -19,7 +19,7 @@ function timingSafeEqual(a, b) {
19
19
  * against `secret`. Checked BEFORE the Clerk gate in the server; a mismatch
20
20
  * falls through so a co-configured Clerk provider can still admit the request.
21
21
  *
22
- * `toolkits` binds the token to named toolkits (docs/toolkits.md): one
22
+ * `toolkits` binds the token to named toolkits (documentation/toolkits.md): one
23
23
  * `bearerToken(...)` per team credential, each naming the view that team may
24
24
  * open. Omit it and the token stays unbound — every declared toolkit plus the
25
25
  * full registry.
@@ -31,8 +31,8 @@ export function bearerToken(secret, options = {}) {
31
31
  : "bearerToken", options);
32
32
  if (toolkitBinding && !options.subjectId) {
33
33
  // A bound token stands for one team, and both surfaces that report on it —
34
- // the 403 refusal log (docs/toolkits.md) and activity events
35
- // (docs/operator-ui.md) — can only say "bearer" without a subjectId. With
34
+ // the 403 refusal log (documentation/toolkits.md) and activity events
35
+ // (documentation/operator-ui.md) — can only say "bearer" without a subjectId. With
36
36
  // several bound tokens that makes an operator unable to tell which
37
37
  // credential was refused, or whose call succeeded. console.warn (as the
38
38
  // Clerk adapter does) because an adapter is constructed before
@@ -1 +1 @@
1
- {"version":3,"file":"bearer.js","sourceRoot":"","sources":["../../src/auth/bearer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bearer.js","sourceRoot":"","sources":["../../src/auth/bearer.ts"],"names":[],"mappings":"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"}
@@ -35,7 +35,7 @@ export interface ClerkAuthOptions extends ToolkitBindingOptions {
35
35
  * `toolkits` decides WHICH view the admitted user gets.
36
36
  *
37
37
  * `toolkits` binds every user this provider admits to those toolkits
38
- * (docs/toolkits.md). For a per-team split, configure one `clerkAuth(...)` per
38
+ * (documentation/toolkits.md). For a per-team split, configure one `clerkAuth(...)` per
39
39
  * team — the same keys, a `gate` naming that team's users, and that team's
40
40
  * `toolkits`. The server tries providers in order and the first that admits the
41
41
  * user supplies the binding, so a user one gate rejects falls through to the
@@ -156,7 +156,7 @@ function emailDomain(email) {
156
156
  * `toolkits` decides WHICH view the admitted user gets.
157
157
  *
158
158
  * `toolkits` binds every user this provider admits to those toolkits
159
- * (docs/toolkits.md). For a per-team split, configure one `clerkAuth(...)` per
159
+ * (documentation/toolkits.md). For a per-team split, configure one `clerkAuth(...)` per
160
160
  * team — the same keys, a `gate` naming that team's users, and that team's
161
161
  * `toolkits`. The server tries providers in order and the first that admits the
162
162
  * user supplies the binding, so a user one gate rejects falls through to the
@@ -1 +1 @@
1
- {"version":3,"file":"call-admission.d.ts","sourceRoot":"","sources":["../src/call-admission.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"call-admission.d.ts","sourceRoot":"","sources":["../src/call-admission.ts"],"names":[],"mappings":"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"}
@@ -284,8 +284,11 @@ export class ConnectorCallAdmissionController {
284
284
  if (!budget || state.admittedAt.length === 0)
285
285
  return;
286
286
  let expired = 0;
287
- while (expired < state.admittedAt.length &&
288
- state.admittedAt[expired] + budget.windowMs <= now) {
287
+ while (expired < state.admittedAt.length) {
288
+ const admittedAt = state.admittedAt[expired];
289
+ if (admittedAt === undefined || admittedAt + budget.windowMs > now) {
290
+ break;
291
+ }
289
292
  expired++;
290
293
  }
291
294
  if (expired > 0)
@@ -296,7 +299,10 @@ export class ConnectorCallAdmissionController {
296
299
  if (!budget || state.admittedAt.length < budget.maxCalls) {
297
300
  return undefined;
298
301
  }
299
- return Math.max(0, state.admittedAt[0] + budget.windowMs - now);
302
+ const oldestAdmission = state.admittedAt[0];
303
+ if (oldestAdmission === undefined)
304
+ return undefined;
305
+ return Math.max(0, oldestAdmission + budget.windowMs - now);
300
306
  }
301
307
  evictIdlePartitions(now) {
302
308
  for (const [key, state] of this.partitions) {
@@ -1 +1 @@
1
- {"version":3,"file":"call-admission.js","sourceRoot":"","sources":["../src/call-admission.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"call-admission.js","sourceRoot":"","sources":["../src/call-admission.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { ToolDef } from "./types.js";
2
+ export interface CatalogSnapshot {
3
+ tools: ToolDef[];
4
+ /** SHA-256 over the exact serialized tool array, prefixed with its size. */
5
+ fingerprint: string;
6
+ /** UTF-8 form reused by hashing, size enforcement, and chunking. */
7
+ serializedBytes: Uint8Array;
8
+ }
9
+ /** Fingerprint an already serialized catalog without parsing/reserializing it. */
10
+ export declare function fingerprintSerializedCatalog(serializedTools: string): Promise<{
11
+ fingerprint: string;
12
+ byteLength: number;
13
+ }>;
14
+ /**
15
+ * Capture every persisted/discovered field in one deterministic snapshot.
16
+ * Object key order is allowed to cause a conservative extra write; changing
17
+ * any serialized field must change the digest.
18
+ */
19
+ export declare function snapshotCatalog(tools: ToolDef[]): Promise<CatalogSnapshot>;
20
+ //# sourceMappingURL=catalog-fingerprint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-fingerprint.d.ts","sourceRoot":"","sources":["../src/catalog-fingerprint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAI1C,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,eAAe,EAAE,UAAU,CAAC;CAC7B;AAYD,kFAAkF;AAClF,wBAAsB,4BAA4B,CAChD,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAMtD;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,OAAO,EAAE,GACf,OAAO,CAAC,eAAe,CAAC,CAW1B"}
@@ -0,0 +1,34 @@
1
+ const encoder = new TextEncoder();
2
+ async function fingerprintBytes(bytes) {
3
+ const digest = new Uint8Array(await crypto.subtle.digest("SHA-256", bytes));
4
+ const hex = [...digest]
5
+ .map((byte) => byte.toString(16).padStart(2, "0"))
6
+ .join("");
7
+ return `sha256:${bytes.byteLength}:${hex}`;
8
+ }
9
+ /** Fingerprint an already serialized catalog without parsing/reserializing it. */
10
+ export async function fingerprintSerializedCatalog(serializedTools) {
11
+ const bytes = encoder.encode(serializedTools);
12
+ return {
13
+ fingerprint: await fingerprintBytes(bytes),
14
+ byteLength: bytes.byteLength,
15
+ };
16
+ }
17
+ /**
18
+ * Capture every persisted/discovered field in one deterministic snapshot.
19
+ * Object key order is allowed to cause a conservative extra write; changing
20
+ * any serialized field must change the digest.
21
+ */
22
+ export async function snapshotCatalog(tools) {
23
+ const serializedTools = JSON.stringify(tools);
24
+ if (serializedTools === undefined) {
25
+ throw new TypeError("Tool catalog is not JSON-serializable.");
26
+ }
27
+ const bytes = encoder.encode(serializedTools);
28
+ return {
29
+ tools,
30
+ fingerprint: await fingerprintBytes(bytes),
31
+ serializedBytes: bytes,
32
+ };
33
+ }
34
+ //# sourceMappingURL=catalog-fingerprint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-fingerprint.js","sourceRoot":"","sources":["../src/catalog-fingerprint.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAUlC,KAAK,UAAU,gBAAgB,CAAC,KAAiB;IAC/C,MAAM,MAAM,GAAG,IAAI,UAAU,CAC3B,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAC7C,CAAC;IACF,MAAM,GAAG,GAAG,CAAC,GAAG,MAAM,CAAC;SACpB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SACjD,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,UAAU,KAAK,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;AAC7C,CAAC;AAED,kFAAkF;AAClF,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,eAAuB;IAEvB,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAC9C,OAAO;QACL,WAAW,EAAE,MAAM,gBAAgB,CAAC,KAAK,CAAC;QAC1C,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAgB;IAEhB,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAC9C,OAAO;QACL,KAAK;QACL,WAAW,EAAE,MAAM,gBAAgB,CAAC,KAAK,CAAC;QAC1C,eAAe,EAAE,KAAK;KACvB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ /** Complete-catalog ceiling shared by dynamically listed connector catalogs. */
2
+ export declare const MAX_CATALOG_TOOLS = 100000;
3
+ /**
4
+ * Large enough to cross a single Workers KV value boundary while keeping the
5
+ * serialized form at one quarter of a 128 MiB Worker heap.
6
+ */
7
+ export declare const MAX_SERIALIZED_CATALOG_BYTES: number;
8
+ /** Persisted values stay comfortably below platform per-value limits. */
9
+ export declare const MAX_CATALOG_CHUNK_BYTES: number;
10
+ //# sourceMappingURL=catalog-limits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-limits.d.ts","sourceRoot":"","sources":["../src/catalog-limits.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,eAAO,MAAM,iBAAiB,SAAU,CAAC;AAEzC;;;GAGG;AACH,eAAO,MAAM,4BAA4B,QAAmB,CAAC;AAE7D,yEAAyE;AACzE,eAAO,MAAM,uBAAuB,QAAc,CAAC"}
@@ -0,0 +1,10 @@
1
+ /** Complete-catalog ceiling shared by dynamically listed connector catalogs. */
2
+ export const MAX_CATALOG_TOOLS = 100_000;
3
+ /**
4
+ * Large enough to cross a single Workers KV value boundary while keeping the
5
+ * serialized form at one quarter of a 128 MiB Worker heap.
6
+ */
7
+ export const MAX_SERIALIZED_CATALOG_BYTES = 32 * 1024 * 1024;
8
+ /** Persisted values stay comfortably below platform per-value limits. */
9
+ export const MAX_CATALOG_CHUNK_BYTES = 1024 * 1024;
10
+ //# sourceMappingURL=catalog-limits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog-limits.js","sourceRoot":"","sources":["../src/catalog-limits.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC;AAEzC;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7D,yEAAyE;AACzE,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,GAAG,IAAI,CAAC"}