@zackbart/connecta 0.28.1 → 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) hide show
  1. package/CHANGELOG.md +855 -5
  2. package/README.md +125 -116
  3. package/bin/connecta.mjs +121 -139
  4. package/bin/meta-tool-names.d.mts +2 -0
  5. package/bin/meta-tool-names.mjs +9 -0
  6. package/bin/version.mjs +3 -0
  7. package/dist/access-tokens.js +53 -63
  8. package/dist/activity-request.js +8 -0
  9. package/dist/activity.d.ts +76 -42
  10. package/dist/activity.js +110 -42
  11. package/dist/argument-redaction.js +230 -0
  12. package/dist/auth/clerk-sdk/client.d.ts +65 -0
  13. package/dist/auth/clerk-sdk/client.js +5 -0
  14. package/dist/auth/clerk-sdk/generated.js +1845 -0
  15. package/dist/auth/clerk-transport.js +19 -0
  16. package/dist/auth/clerk.d.ts +17 -7
  17. package/dist/auth/clerk.js +189 -107
  18. package/dist/auth/cloudflare-access.js +25 -26
  19. package/dist/auth/downstream-client-metadata.d.ts +29 -0
  20. package/dist/auth/downstream-client-metadata.js +133 -0
  21. package/dist/auth/downstream-oauth.js +1584 -1580
  22. package/dist/auth/downstream-revocation.js +106 -0
  23. package/dist/auth/oauth-token-response.js +231 -0
  24. package/dist/auth/oauth-v2-migration.js +116 -0
  25. package/dist/auth/static-oauth.js +93 -71
  26. package/dist/auth-elicitation.js +288 -0
  27. package/dist/authorization-handoff.js +111 -0
  28. package/dist/branding.d.ts +8 -16
  29. package/dist/branding.js +26 -59
  30. package/dist/byte-read-response.js +39 -0
  31. package/dist/call-admission.js +12 -16
  32. package/dist/catalog-cache.js +739 -0
  33. package/dist/catalog-drift.d.ts +50 -15
  34. package/dist/catalog-drift.js +365 -128
  35. package/dist/catalog-fingerprint.js +2 -4
  36. package/dist/catalog-freshness.js +13 -0
  37. package/dist/catalog-limits.js +2 -2
  38. package/dist/catalog-service.js +409 -225
  39. package/dist/catalog.js +43 -84
  40. package/dist/concurrency.js +3 -4
  41. package/dist/config-defaults.d.ts +39 -0
  42. package/dist/config-defaults.js +46 -0
  43. package/dist/config-schema.d.ts +181 -0
  44. package/dist/config-schema.js +435 -0
  45. package/dist/config-value-sources.js +102 -0
  46. package/dist/config.d.ts +633 -0
  47. package/dist/config.js +508 -0
  48. package/dist/connector-access.d.ts +1 -0
  49. package/dist/connector-access.js +13 -15
  50. package/dist/connector-caller.d.ts +8 -0
  51. package/dist/connector-caller.js +15 -6
  52. package/dist/connector-scope.js +1 -1
  53. package/dist/connectors/api-connector.d.ts +59 -7
  54. package/dist/connectors/api-connector.js +106 -19
  55. package/dist/connectors/api.js +4 -1
  56. package/dist/connectors/guarded-fetch.d.ts +144 -0
  57. package/dist/connectors/guarded-fetch.js +87 -38
  58. package/dist/connectors/negotiation-cache.js +46 -0
  59. package/dist/connectors/option-shapes.js +27 -0
  60. package/dist/connectors/remote-mcp.d.ts +30 -4
  61. package/dist/connectors/remote-mcp.js +1774 -320
  62. package/dist/connectors/resource-uri.js +335 -0
  63. package/dist/credential-contract.d.ts +10 -0
  64. package/dist/credential-rules.js +1 -3
  65. package/dist/credential-url.js +108 -0
  66. package/dist/credentials.d.ts +6 -1
  67. package/dist/credentials.js +27 -18
  68. package/dist/d1.d.ts +130 -0
  69. package/dist/d1.js +290 -0
  70. package/dist/describe-config.d.ts +165 -0
  71. package/dist/describe-config.js +315 -0
  72. package/dist/described.js +106 -0
  73. package/dist/downstream-input-context.js +128 -0
  74. package/dist/downstream-input.js +325 -0
  75. package/dist/errors.d.ts +132 -31
  76. package/dist/errors.js +175 -87
  77. package/dist/execute.js +798 -318
  78. package/dist/executor-admission.d.ts +1 -0
  79. package/dist/executor-admission.js +11 -15
  80. package/dist/executor-contract.d.ts +20 -0
  81. package/dist/executor-contract.js +48 -0
  82. package/dist/executor-result.js +30 -13
  83. package/dist/executors/quickjs-child.js +15 -9
  84. package/dist/executors/quickjs-protocol.js +5 -6
  85. package/dist/executors/quickjs-runtime.js +152 -59
  86. package/dist/executors/quickjs.js +49 -39
  87. package/dist/favicon.js +1 -2
  88. package/dist/fix-prompt.js +1 -3
  89. package/dist/guest-runtime.js +238 -0
  90. package/dist/guest-types.d.ts +218 -0
  91. package/dist/guest-types.js +1 -0
  92. package/dist/html-security.js +24 -0
  93. package/dist/identity.js +1 -3
  94. package/dist/inbound-credential.js +52 -0
  95. package/dist/index.d.ts +24 -256
  96. package/dist/index.js +65 -478
  97. package/dist/invocation-auth.js +69 -0
  98. package/dist/invocation.js +262 -79
  99. package/dist/json-schema.d.ts +1 -1
  100. package/dist/mcp-client-context.js +35 -0
  101. package/dist/mcp-result.js +11 -7
  102. package/dist/meta-output.js +61 -0
  103. package/dist/meta-tool-names.d.ts +2 -0
  104. package/dist/meta-tool-names.js +3 -0
  105. package/dist/meta-tools.js +419 -272
  106. package/dist/module-contracts.d.ts +8 -23
  107. package/dist/node.d.ts +0 -2
  108. package/dist/node.js +2 -2
  109. package/dist/oauth-callback-outcome.js +1 -3
  110. package/dist/oauth-handoff.js +194 -0
  111. package/dist/oauth-sealing.js +20 -0
  112. package/dist/operator-record.d.ts +137 -0
  113. package/dist/operator-record.js +420 -0
  114. package/dist/operator-ui/assets.js +31 -0
  115. package/dist/operator-ui/contract.d.ts +72 -0
  116. package/dist/operator-ui/contract.js +1 -0
  117. package/dist/operator-ui/fix-prompts.d.ts +18 -0
  118. package/dist/operator-ui/generated.js +5 -4
  119. package/dist/operator-ui/model.d.ts +12 -87
  120. package/dist/operator-ui/model.js +2 -9
  121. package/dist/operator-ui/setup-commands.js +1 -3
  122. package/dist/operator-ui/view.d.ts +323 -0
  123. package/dist/operator-ui/view.js +62 -189
  124. package/dist/page-styles.js +2 -3
  125. package/dist/program-result.js +5 -0
  126. package/dist/program-source.js +14 -2
  127. package/dist/{exempt-writes.js → program-writes.js} +60 -19
  128. package/dist/provider.d.ts +142 -0
  129. package/dist/provider.js +187 -0
  130. package/dist/providers/_shared/google/result-size.js +57 -0
  131. package/dist/providers/_shared/google/service-account.d.ts +58 -0
  132. package/dist/providers/_shared/google/service-account.js +500 -0
  133. package/dist/providers/_shared/google/workspace.d.ts +276 -0
  134. package/dist/providers/_shared/google/workspace.js +518 -0
  135. package/dist/providers/_shared/request-token.js +83 -0
  136. package/dist/providers/{basecamp.d.ts → basecamp/index.d.ts} +6 -28
  137. package/dist/providers/basecamp/index.js +997 -0
  138. package/dist/providers/basecamp/skill.generated.js +9 -0
  139. package/dist/providers/{breeze.d.ts → breeze/index.d.ts} +2 -2
  140. package/dist/providers/{breeze.js → breeze/index.js} +184 -140
  141. package/dist/providers/breeze/skill.generated.js +9 -0
  142. package/dist/providers/{ccb.d.ts → ccb/index.d.ts} +2 -2
  143. package/dist/providers/{ccb.js → ccb/index.js} +271 -116
  144. package/dist/providers/ccb/skill.generated.js +9 -0
  145. package/dist/providers/{cloudflare.d.ts → cloudflare/index.d.ts} +8 -7
  146. package/dist/providers/{cloudflare.js → cloudflare/index.js} +171 -738
  147. package/dist/providers/cloudflare/skill.generated.js +10 -0
  148. package/dist/providers/docs/index.d.ts +54 -0
  149. package/dist/providers/docs/index.js +1237 -0
  150. package/dist/providers/docs/skill.generated.js +9 -0
  151. package/dist/providers/drive/index.d.ts +53 -0
  152. package/dist/providers/drive/index.js +1523 -0
  153. package/dist/providers/drive/skill.generated.js +9 -0
  154. package/dist/providers/forms/index.d.ts +54 -0
  155. package/dist/providers/forms/index.js +1217 -0
  156. package/dist/providers/forms/skill.generated.js +11 -0
  157. package/dist/providers/github/auth.d.ts +32 -0
  158. package/dist/providers/github/auth.js +361 -0
  159. package/dist/providers/github/hosted.js +218 -0
  160. package/dist/providers/github/index.d.ts +13 -0
  161. package/dist/providers/github/index.js +140 -0
  162. package/dist/providers/github/key.js +100 -0
  163. package/dist/providers/github/rest.js +321 -0
  164. package/dist/providers/github/scope.d.ts +29 -0
  165. package/dist/providers/github/scope.js +124 -0
  166. package/dist/providers/github/skill.generated.js +8 -0
  167. package/dist/providers/gmail/index.d.ts +51 -0
  168. package/dist/providers/gmail/index.js +1436 -0
  169. package/dist/providers/gmail/skill.generated.js +9 -0
  170. package/dist/providers/infisical/index.d.ts +7 -0
  171. package/dist/providers/infisical/index.js +713 -0
  172. package/dist/providers/infisical/skill.generated.js +8 -0
  173. package/dist/providers/{linear.d.ts → linear/index.d.ts} +11 -14
  174. package/dist/providers/linear/index.js +352 -0
  175. package/dist/providers/linear/skill.generated.js +8 -0
  176. package/dist/providers/{mixpanel.d.ts → mixpanel/index.d.ts} +5 -10
  177. package/dist/providers/mixpanel/index.js +416 -0
  178. package/dist/providers/mixpanel/skill.generated.js +9 -0
  179. package/dist/providers/{notion.d.ts → notion/index.d.ts} +8 -8
  180. package/dist/providers/{notion.js → notion/index.js} +226 -239
  181. package/dist/providers/notion/skill.generated.js +10 -0
  182. package/dist/providers/{overflow.d.ts → overflow/index.d.ts} +2 -2
  183. package/dist/providers/{overflow.js → overflow/index.js} +74 -111
  184. package/dist/providers/overflow/skill.generated.js +8 -0
  185. package/dist/providers/{planning-center.d.ts → planning-center/index.d.ts} +2 -2
  186. package/dist/providers/{planning-center.js → planning-center/index.js} +264 -104
  187. package/dist/providers/planning-center/skill.generated.js +10 -0
  188. package/dist/providers/{revenuecat.d.ts → revenuecat/index.d.ts} +5 -10
  189. package/dist/providers/revenuecat/index.js +557 -0
  190. package/dist/providers/revenuecat/skill.generated.js +11 -0
  191. package/dist/providers/sheets/index.d.ts +54 -0
  192. package/dist/providers/sheets/index.js +1237 -0
  193. package/dist/providers/sheets/skill.generated.js +10 -0
  194. package/dist/providers/slides/index.d.ts +53 -0
  195. package/dist/providers/slides/index.js +2645 -0
  196. package/dist/providers/slides/skill.generated.js +9 -0
  197. package/dist/providers/{stripe.d.ts → stripe/index.d.ts} +5 -12
  198. package/dist/providers/stripe/index.js +266 -0
  199. package/dist/providers/stripe/skill.generated.js +11 -0
  200. package/dist/providers/{tithely.d.ts → tithely/index.d.ts} +2 -2
  201. package/dist/providers/{tithely.js → tithely/index.js} +60 -91
  202. package/dist/providers/tithely/skill.generated.js +8 -0
  203. package/dist/providers/{vercel.d.ts → vercel/index.d.ts} +8 -8
  204. package/dist/providers/vercel/index.js +1038 -0
  205. package/dist/providers/vercel/mcp-ownership.js +212 -0
  206. package/dist/providers/vercel/skill.generated.js +11 -0
  207. package/dist/registry.d.ts +110 -171
  208. package/dist/registry.js +588 -927
  209. package/dist/request-state.js +21 -0
  210. package/dist/resource-read.js +103 -0
  211. package/dist/result-shapes.js +17 -49
  212. package/dist/retired-toolkits.js +1 -1
  213. package/dist/routes/access-tokens.js +3 -6
  214. package/dist/routes/activity-context.js +21 -0
  215. package/dist/routes/activity-disclosure.js +40 -0
  216. package/dist/routes/activity.js +59 -21
  217. package/dist/routes/actor-labels.js +3 -50
  218. package/dist/routes/connect.js +221 -0
  219. package/dist/routes/credentials.js +15 -27
  220. package/dist/routes/mcp.js +365 -130
  221. package/dist/routes/oauth-client-metadata.js +15 -0
  222. package/dist/routes/oauth-management.js +45 -107
  223. package/dist/routes/oauth.js +110 -57
  224. package/dist/routes/operator.js +3 -3
  225. package/dist/routes/shared.d.ts +25 -64
  226. package/dist/routes/shared.js +160 -80
  227. package/dist/routes/skills.js +30 -0
  228. package/dist/routes/ui-config.js +225 -0
  229. package/dist/routes/ui-data.js +40 -35
  230. package/dist/routes/ui.js +66 -56
  231. package/dist/runtime/admission.js +4 -2
  232. package/dist/runtime/call-admission.js +3 -1
  233. package/dist/runtime/connector-scope.js +1 -4
  234. package/dist/runtime/run.js +10 -39
  235. package/dist/runtime/services.js +12 -117
  236. package/dist/runtime/shared-read.js +1 -3
  237. package/dist/runtime/storage.js +8 -1
  238. package/dist/sent-secrets.d.ts +93 -0
  239. package/dist/sent-secrets.js +1013 -0
  240. package/dist/server.js +28 -71
  241. package/dist/skills.js +416 -174
  242. package/dist/sqlite.d.ts +48 -0
  243. package/dist/sqlite.js +181 -0
  244. package/dist/storage/keys.js +443 -0
  245. package/dist/storage/memory.js +16 -4
  246. package/dist/storage/sql.d.ts +66 -0
  247. package/dist/storage/sql.js +543 -0
  248. package/dist/timeout.js +4 -2
  249. package/dist/tool-name.js +17 -0
  250. package/dist/tool-safety.d.ts +9 -35
  251. package/dist/tool-safety.js +20 -40
  252. package/dist/types.d.ts +336 -56
  253. package/dist/types.js +0 -1
  254. package/dist/ui.d.ts +7 -19
  255. package/dist/ui.js +76 -90
  256. package/dist/url-safety.js +3 -6
  257. package/dist/usage-guide.js +146 -0
  258. package/dist/validate.d.ts +7 -0
  259. package/dist/validate.js +309 -47
  260. package/dist/version.d.ts +1 -7
  261. package/dist/version.js +3 -7
  262. package/dist/worker.d.ts +11 -0
  263. package/dist/worker.js +435 -0
  264. package/documentation/README.md +63 -0
  265. package/documentation/architecture.md +696 -231
  266. package/documentation/auth.md +1069 -546
  267. package/documentation/code-mode.md +662 -356
  268. package/documentation/deploying.md +146 -0
  269. package/documentation/integrating.md +159 -0
  270. package/documentation/meta-tools.md +570 -216
  271. package/documentation/operating.md +135 -0
  272. package/documentation/operator-tests.md +97 -0
  273. package/documentation/operator-ui.md +132 -0
  274. package/documentation/provider-migration-0.29.md +65 -0
  275. package/examples/worker/AGENTS.md +34 -12
  276. package/examples/worker/README.md +293 -255
  277. package/examples/worker/kv-to-d1.wrangler.jsonc +26 -0
  278. package/examples/worker/scripts/copy-kv-to-d1.mjs +162 -0
  279. package/examples/worker/src/connecta.config.ts +151 -0
  280. package/examples/worker/src/index.ts +14 -197
  281. package/examples/worker/wrangler.jsonc +15 -35
  282. package/package.json +126 -54
  283. package/templates/node/.dockerignore +1 -2
  284. package/templates/node/.env.example +20 -21
  285. package/templates/node/AGENTS.md +21 -17
  286. package/templates/node/Dockerfile +3 -5
  287. package/templates/node/README.md +140 -58
  288. package/templates/node/docker-compose.yml +11 -12
  289. package/templates/node/package.json +4 -2
  290. package/templates/node/src/connecta.config.ts +119 -0
  291. package/templates/node/src/index.ts +9 -154
  292. package/templates/node/src/provision-token.ts +17 -0
  293. package/AGENTS.md +0 -170
  294. package/dist/artifacts/connector.d.ts +0 -58
  295. package/dist/artifacts/connector.js +0 -730
  296. package/dist/artifacts/document.js +0 -86
  297. package/dist/artifacts/guide.js +0 -140
  298. package/dist/artifacts/html-scan.js +0 -329
  299. package/dist/artifacts/json.js +0 -78
  300. package/dist/artifacts/kv-store.d.ts +0 -20
  301. package/dist/artifacts/kv-store.js +0 -140
  302. package/dist/artifacts/markdown.js +0 -478
  303. package/dist/artifacts/module.d.ts +0 -37
  304. package/dist/artifacts/module.js +0 -66
  305. package/dist/artifacts/operations.d.ts +0 -197
  306. package/dist/artifacts/operations.js +0 -1002
  307. package/dist/artifacts/refresh.d.ts +0 -55
  308. package/dist/artifacts/refresh.js +0 -236
  309. package/dist/artifacts/routes.js +0 -206
  310. package/dist/artifacts/types.d.ts +0 -214
  311. package/dist/artifacts/types.js +0 -22
  312. package/dist/artifacts/validate.d.ts +0 -62
  313. package/dist/artifacts/validate.js +0 -651
  314. package/dist/artifacts.d.ts +0 -6
  315. package/dist/artifacts.js +0 -9
  316. package/dist/auth/bearer.d.ts +0 -11
  317. package/dist/auth/bearer.js +0 -50
  318. package/dist/providers/basecamp.js +0 -445
  319. package/dist/providers/linear.js +0 -217
  320. package/dist/providers/mixpanel.js +0 -247
  321. package/dist/providers/revenuecat.js +0 -317
  322. package/dist/providers/stripe.js +0 -253
  323. package/dist/providers/vercel.js +0 -1253
  324. package/dist/storage/file.d.ts +0 -15
  325. package/dist/storage/file.js +0 -455
  326. package/ethos.md +0 -93
  327. package/examples/worker/src/cloudflare-kv.ts +0 -43
  328. package/examples/worker/src/d1-activity-row.ts +0 -155
  329. package/examples/worker/src/d1-activity.ts +0 -147
  330. package/examples/worker/src/d1-storage.ts +0 -138
  331. package/examples/worker/src/r2-artifact-blobs.ts +0 -29
  332. package/templates/node/src/file-activity.ts +0 -182
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@zackbart/connecta",
3
- "version": "0.28.1",
3
+ "version": "0.30.0",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
- "description": "One MCP to rule them all — a single MCP endpoint aggregating many downstream connectors behind a code-first surface of seven meta-tools.",
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.",
7
7
  "license": "MIT",
8
8
  "engines": {
9
- "node": ">=22.0.0"
9
+ "node": ">=22.13.0"
10
10
  },
11
11
  "publishConfig": {
12
12
  "access": "public"
@@ -34,8 +34,6 @@
34
34
  "documentation",
35
35
  "examples/worker",
36
36
  "templates",
37
- "AGENTS.md",
38
- "ethos.md",
39
37
  "README.md",
40
38
  "CHANGELOG.md",
41
39
  "SECURITY.md",
@@ -51,6 +49,14 @@
51
49
  "types": "./dist/node.d.ts",
52
50
  "import": "./dist/node.js"
53
51
  },
52
+ "./sqlite": {
53
+ "types": "./dist/sqlite.d.ts",
54
+ "import": "./dist/sqlite.js"
55
+ },
56
+ "./d1": {
57
+ "types": "./dist/d1.d.ts",
58
+ "import": "./dist/d1.js"
59
+ },
54
60
  "./json-schema": {
55
61
  "types": "./dist/json-schema.d.ts",
56
62
  "import": "./dist/json-schema.js"
@@ -67,57 +73,89 @@
67
73
  "types": "./dist/auth/cloudflare-access.d.ts",
68
74
  "import": "./dist/auth/cloudflare-access.js"
69
75
  },
76
+ "./providers/basecamp": {
77
+ "types": "./dist/providers/basecamp/index.d.ts",
78
+ "import": "./dist/providers/basecamp/index.js"
79
+ },
70
80
  "./providers/breeze": {
71
- "types": "./dist/providers/breeze.d.ts",
72
- "import": "./dist/providers/breeze.js"
81
+ "types": "./dist/providers/breeze/index.d.ts",
82
+ "import": "./dist/providers/breeze/index.js"
73
83
  },
74
- "./providers/basecamp": {
75
- "types": "./dist/providers/basecamp.d.ts",
76
- "import": "./dist/providers/basecamp.js"
84
+ "./providers/ccb": {
85
+ "types": "./dist/providers/ccb/index.d.ts",
86
+ "import": "./dist/providers/ccb/index.js"
77
87
  },
78
88
  "./providers/cloudflare": {
79
- "types": "./dist/providers/cloudflare.d.ts",
80
- "import": "./dist/providers/cloudflare.js"
89
+ "types": "./dist/providers/cloudflare/index.d.ts",
90
+ "import": "./dist/providers/cloudflare/index.js"
91
+ },
92
+ "./providers/docs": {
93
+ "types": "./dist/providers/docs/index.d.ts",
94
+ "import": "./dist/providers/docs/index.js"
95
+ },
96
+ "./providers/drive": {
97
+ "types": "./dist/providers/drive/index.d.ts",
98
+ "import": "./dist/providers/drive/index.js"
99
+ },
100
+ "./providers/forms": {
101
+ "types": "./dist/providers/forms/index.d.ts",
102
+ "import": "./dist/providers/forms/index.js"
103
+ },
104
+ "./providers/github": {
105
+ "types": "./dist/providers/github/index.d.ts",
106
+ "import": "./dist/providers/github/index.js"
107
+ },
108
+ "./providers/gmail": {
109
+ "types": "./dist/providers/gmail/index.d.ts",
110
+ "import": "./dist/providers/gmail/index.js"
111
+ },
112
+ "./providers/infisical": {
113
+ "types": "./dist/providers/infisical/index.d.ts",
114
+ "import": "./dist/providers/infisical/index.js"
81
115
  },
82
116
  "./providers/linear": {
83
- "types": "./dist/providers/linear.d.ts",
84
- "import": "./dist/providers/linear.js"
117
+ "types": "./dist/providers/linear/index.d.ts",
118
+ "import": "./dist/providers/linear/index.js"
85
119
  },
86
120
  "./providers/mixpanel": {
87
- "types": "./dist/providers/mixpanel.d.ts",
88
- "import": "./dist/providers/mixpanel.js"
121
+ "types": "./dist/providers/mixpanel/index.d.ts",
122
+ "import": "./dist/providers/mixpanel/index.js"
89
123
  },
90
124
  "./providers/notion": {
91
- "types": "./dist/providers/notion.d.ts",
92
- "import": "./dist/providers/notion.js"
125
+ "types": "./dist/providers/notion/index.d.ts",
126
+ "import": "./dist/providers/notion/index.js"
93
127
  },
94
- "./providers/revenuecat": {
95
- "types": "./dist/providers/revenuecat.d.ts",
96
- "import": "./dist/providers/revenuecat.js"
128
+ "./providers/overflow": {
129
+ "types": "./dist/providers/overflow/index.d.ts",
130
+ "import": "./dist/providers/overflow/index.js"
97
131
  },
98
- "./providers/stripe": {
99
- "types": "./dist/providers/stripe.d.ts",
100
- "import": "./dist/providers/stripe.js"
132
+ "./providers/planning-center": {
133
+ "types": "./dist/providers/planning-center/index.d.ts",
134
+ "import": "./dist/providers/planning-center/index.js"
101
135
  },
102
- "./providers/vercel": {
103
- "types": "./dist/providers/vercel.d.ts",
104
- "import": "./dist/providers/vercel.js"
136
+ "./providers/revenuecat": {
137
+ "types": "./dist/providers/revenuecat/index.d.ts",
138
+ "import": "./dist/providers/revenuecat/index.js"
105
139
  },
106
- "./providers/ccb": {
107
- "types": "./dist/providers/ccb.d.ts",
108
- "import": "./dist/providers/ccb.js"
140
+ "./providers/sheets": {
141
+ "types": "./dist/providers/sheets/index.d.ts",
142
+ "import": "./dist/providers/sheets/index.js"
109
143
  },
110
- "./providers/planning-center": {
111
- "types": "./dist/providers/planning-center.d.ts",
112
- "import": "./dist/providers/planning-center.js"
144
+ "./providers/slides": {
145
+ "types": "./dist/providers/slides/index.d.ts",
146
+ "import": "./dist/providers/slides/index.js"
113
147
  },
114
- "./providers/overflow": {
115
- "types": "./dist/providers/overflow.d.ts",
116
- "import": "./dist/providers/overflow.js"
148
+ "./providers/stripe": {
149
+ "types": "./dist/providers/stripe/index.d.ts",
150
+ "import": "./dist/providers/stripe/index.js"
117
151
  },
118
152
  "./providers/tithely": {
119
- "types": "./dist/providers/tithely.d.ts",
120
- "import": "./dist/providers/tithely.js"
153
+ "types": "./dist/providers/tithely/index.d.ts",
154
+ "import": "./dist/providers/tithely/index.js"
155
+ },
156
+ "./providers/vercel": {
157
+ "types": "./dist/providers/vercel/index.d.ts",
158
+ "import": "./dist/providers/vercel/index.js"
121
159
  },
122
160
  "./ui": {
123
161
  "types": "./dist/ui.d.ts",
@@ -131,28 +169,27 @@
131
169
  "types": "./dist/activity.d.ts",
132
170
  "import": "./dist/activity.js"
133
171
  },
134
- "./auth/bearer": {
135
- "types": "./dist/auth/bearer.d.ts",
136
- "import": "./dist/auth/bearer.js"
137
- },
138
- "./artifacts": {
139
- "types": "./dist/artifacts.d.ts",
140
- "import": "./dist/artifacts.js"
141
- },
142
172
  "./auth/access-tokens": {
143
173
  "types": "./dist/access-tokens.d.ts",
144
174
  "import": "./dist/access-tokens.js"
175
+ },
176
+ "./worker": {
177
+ "types": "./dist/worker.d.ts",
178
+ "import": "./dist/worker.js"
145
179
  }
146
180
  },
147
181
  "scripts": {
148
182
  "clean": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"",
149
183
  "build:operator-ui": "node scripts/build-operator-ui.mjs",
150
184
  "check:operator-ui": "node scripts/build-operator-ui.mjs --check",
151
- "build": "npm run build:operator-ui && npm run clean && tsc -p tsconfig.build.json && node scripts/prune-declarations.mjs",
185
+ "check:clerk-sdk": "node scripts/build-clerk-sdk.mjs --check",
186
+ "build": "npm run providers:generate && npm run clean && tsc -p tsconfig.build.json && node scripts/prune-declarations.mjs",
152
187
  "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.operator-ui.json --noEmit",
153
188
  "test": "vitest run",
154
189
  "test:browser:install": "playwright install chromium",
155
190
  "test:browser": "playwright test",
191
+ "test:browser:snapshots": "node scripts/update-operator-snapshots.mjs",
192
+ "pretest:browser:snapshots": "npm run build:operator-ui",
156
193
  "test:node": "vitest run --project node",
157
194
  "test:workers": "vitest run --project workers",
158
195
  "check:docs": "node scripts/check-doc-links.mjs",
@@ -170,15 +207,34 @@
170
207
  "eval:smoke": "tsx eval/run-smoke.ts",
171
208
  "eval:perf": "tsx eval/run-perf.ts",
172
209
  "eval:report": "tsx eval/report.ts",
173
- "check": "npm run check:docs && npm run check:operator-ui && npm run check:lint && npm run check:unused && npm run typecheck && npm run test && npm run test:browser && npm run build && npm run check:declarations && npm run check:bundle && npm run check:examples",
210
+ "check:core": "npm run format:check && npm run check:providers-generated && npm run check:docs && npm run check:changes && npm run check:operator-ui && npm run check:clerk-sdk && npm run check:lint && npm run check:unused && npm run typecheck && npm run test && npm run build && npm run check:declarations && npm run check:bundle && npm run check:examples",
211
+ "check:fast": "node scripts/check-fast.mjs",
212
+ "check": "npm run check:core && npm run test:browser",
174
213
  "release:check": "npm run check && npm run check:security && npm run check:package",
175
- "prepack": "npm run check"
214
+ "prepack": "npm run check",
215
+ "check:changes": "node scripts/changelog.mjs --check && node scripts/check-node-suites.mjs && node --test scripts/changelog.test.mjs",
216
+ "changelog:assemble": "node scripts/changelog.mjs",
217
+ "providers:generate": "tsx scripts/generate-providers.mjs",
218
+ "check:providers-generated": "tsx scripts/generate-providers.mjs --check",
219
+ "prebuild": "node scripts/generate-version.mjs && npm run build:operator-ui",
220
+ "pretest": "node scripts/generate-version.mjs && npm run build:operator-ui",
221
+ "pretest:node": "node scripts/generate-version.mjs && npm run build:operator-ui",
222
+ "pretest:workers": "node scripts/generate-version.mjs && npm run build:operator-ui",
223
+ "pretest:browser": "npm run build:operator-ui",
224
+ "pretypecheck": "node scripts/generate-version.mjs && npm run build:operator-ui",
225
+ "precheck:bundle": "npm run build:operator-ui",
226
+ "precheck:fast": "npm run check:operator-ui",
227
+ "eval:regrade": "tsx eval/regrade.ts",
228
+ "eval:compare": "tsx eval/compare.ts",
229
+ "format": "oxfmt --write .",
230
+ "format:check": "oxfmt --check ."
176
231
  },
177
232
  "dependencies": {
178
233
  "@cfworker/json-schema": "^4.1.1",
179
- "@modelcontextprotocol/client": "2.0.0",
180
- "@modelcontextprotocol/server": "2.0.0",
181
- "effect": "4.0.0",
234
+ "@modelcontextprotocol/client": "2.3.1",
235
+ "@modelcontextprotocol/server": "2.3.1",
236
+ "acorn": "^8.19.0",
237
+ "effect": "^4.0.0",
182
238
  "zod": "^4.4.3"
183
239
  },
184
240
  "peerDependencies": {
@@ -198,17 +254,33 @@
198
254
  }
199
255
  },
200
256
  "devDependencies": {
201
- "@clerk/backend": "^3.12.0",
257
+ "@clerk/backend": "3.12.0",
202
258
  "@cloudflare/codemode": "^0.5.0",
203
259
  "@cloudflare/vitest-pool-workers": "^0.18.8",
204
260
  "@cloudflare/workers-types": "^4.20250101.0 || ^5.0.0",
261
+ "@fontsource-variable/inter": "^5.3.0",
205
262
  "@playwright/test": "^1.62.0",
263
+ "@radix-ui/react-dialog": "^1.2.0",
264
+ "@radix-ui/react-slot": "^1.4.0",
265
+ "@radix-ui/react-tabs": "^1.1.22",
266
+ "@tailwindcss/node": "^4.3.3",
267
+ "@tailwindcss/oxide": "^4.3.3",
268
+ "@tanstack/react-query": "^5.104.1",
269
+ "@tanstack/react-router": "^1.170.41",
270
+ "@tanstack/react-table": "^8.21.3",
206
271
  "@types/node": "^22.0.0",
272
+ "@types/react": "^19.3.0",
273
+ "@types/react-dom": "^19.3.0",
274
+ "cmdk": "^1.1.1",
275
+ "commonmark": "^0.31.2",
207
276
  "esbuild": "^0.28.0",
208
277
  "knip": "^6.29.0",
278
+ "oxfmt": "0.72.0",
209
279
  "oxlint": "^1.76.0",
210
- "preact": "^10.29.8",
211
280
  "quickjs-emscripten": "^0.32.0",
281
+ "react": "^19.3.0",
282
+ "react-dom": "^19.3.0",
283
+ "tailwindcss": "^4.3.3",
212
284
  "tsx": "^4.23.1",
213
285
  "typescript": "^5.9.3",
214
286
  "vitest": "^4.1.6",
@@ -3,8 +3,7 @@
3
3
  node_modules
4
4
  .git
5
5
  .env
6
- .connecta-state.json
7
- .connecta-activity.jsonl
6
+ .connecta.sqlite*
8
7
  *.log
9
8
  Dockerfile
10
9
  docker-compose.yml
@@ -1,8 +1,6 @@
1
- # Required, and deliberately empty. Both Compose and src/index.ts refuse to
2
- # start while it is, so a copied .env cannot become a running deployment on a
3
- # placeholder printed in this template. Use a long random value and keep it out
4
- # of source control:
5
- # node -e "console.log(crypto.randomBytes(32).toString('base64url'))"
1
+ # Client/doctor credential only. Provision a stored cta_ token with the trusted
2
+ # local command in README.md. This variable never configures server auth and
3
+ # is not passed to the container. An empty database refuses all machine clients.
6
4
  CONNECTA_TOKEN=
7
5
 
8
6
  # Optional. Defaults to 8787. Compose publishes this port on the host too.
@@ -13,30 +11,31 @@ PORT=8787
13
11
  # <PUBLIC_URL>/oauth/callback/<connectorId>. Defaults to http://localhost:<PORT>.
14
12
  PUBLIC_URL=
15
13
 
16
- # Optional. Where fileStorage keeps downstream-OAuth tokens and catalogs.
17
- # Defaults to ./.connecta-state.json locally and /data/connecta-state.json in
18
- # the container — keep the container path under /data so state lands on the
19
- # named volume and survives a rebuild.
20
- CONNECTA_STATE_FILE=
14
+ # Optional. The one SQLite file that holds every piece of state: downstream
15
+ # OAuth grants, sealed credentials, catalogs, access tokens, and activity.
16
+ # Defaults to ./.connecta.sqlite locally and /data/connecta.sqlite in the
17
+ # container — keep the container path under /data so state lands on the named
18
+ # volume and survives a rebuild.
19
+ CONNECTA_DATABASE=
21
20
 
22
- # --- Operator surface ---------------------------------------------------
23
- # Each of these is read only once the matching block in src/index.ts is
24
- # uncommented. Setting one on its own changes nothing.
21
+ # --- Optional modules ---------------------------------------------------
22
+ # Each switches on the matching module in src/connecta.config.ts when set and
23
+ # leaves it off when empty. Nothing here needs a source edit.
25
24
 
26
- # Operator sign-in with Clerk. Only a signed-in operator may write a
27
- # credential; the bearer above is a client key, not an admin key.
28
- # Also run `npm install @clerk/backend` — it is an optional peer.
25
+ # Operator sign-in with Clerk. Set both, or neither. Only a signed-in operator
26
+ # may write a credential; machine access tokens grant no interactive authority.
29
27
  CLERK_PUBLISHABLE_KEY=
30
28
  CLERK_SECRET_KEY=
31
29
 
32
30
  # Credential vault. Base64-encoded 32-byte AES key encrypting the values an
33
31
  # operator saves inside a connection on /. Generate one with:
34
32
  # node -e "console.log(crypto.randomBytes(32).toString('base64'))"
35
- # Keep it here or in a secret store — never in the state file it protects, and
33
+ # Keep it here or in a secret store — never in the database it protects, and
36
34
  # never in source control. Losing it makes stored credentials unreadable.
37
35
  CONNECTA_CREDENTIAL_KEY=
38
36
 
39
- # Payload-free activity history. Defaults to ./.connecta-activity.jsonl locally
40
- # and /data/connecta-activity.jsonl in the container — same reasoning as the
41
- # state file: keep it under /data so history survives a rebuild.
42
- CONNECTA_ACTIVITY_FILE=
37
+ # Payload-free activity history at /activity, in the database above. Set to
38
+ # "on". Rows older than 90 days are pruned as new ones are written; change
39
+ # `retentionDays` in src/connecta.config.ts to keep more or less.
40
+ CONNECTA_ACTIVITY=
41
+
@@ -2,36 +2,40 @@
2
2
 
3
3
  This repository is deployment configuration, not a copy of Connecta itself.
4
4
 
5
- - Edit `src/index.ts` for connectors, authentication, storage, and public URL.
6
- - Keep `executor: quickJsExecutor()` for the prescribed seven-tool code-first
7
- surface. Programs run read-only tools and any writes `execute.approval`
8
- exempts; every other write is its own `call_destructive_tool` call, which
9
- the MCP host asks about.
5
+ - Edit `src/connecta.config.ts` for connectors, authentication, storage, public
6
+ URL, and optional modules. `src/index.ts` only starts it.
7
+ - Keep `executor: quickJsExecutor()` for the prescribed six-tool code-first
8
+ surface. Root and named pools default to `trust: "read-only"`: programs
9
+ may read, and writes use `call_destructive_tool`. Explicit `trusted` pools
10
+ also permit program writes and annotate `execute_code` as a write. Approval
11
+ belongs to the MCP host. Do not configure the removed `execute.approval`.
10
12
  - Keep credentials in environment variables or an external secret store.
11
- Never commit `.env`, `.connecta-state.json`, `.connecta-activity.jsonl`,
13
+ Never commit `.env`, `.connecta.sqlite` (and its `-wal`/`-shm` files),
12
14
  tokens, or credential values.
13
15
  - Add application logic only inside deliberate `api()` connector handlers.
14
16
  Do not copy or modify Connecta package internals here.
15
17
  - Prefer `api()` when the agent must see an exact reviewed capability surface;
16
18
  `remoteMcp()` follows the downstream server's evolving tool catalog.
17
- - The UI, encrypted credential vault, and activity history use explicit module
18
- imports and typed `ui`, `vault`, and `activity` options in `src/index.ts`.
19
- Follow README "Select optional modules". Auth management requires explicit
19
+ - Optional modules (Clerk sign-in, credential vault, activity history) are type-checked code in `src/connecta.config.ts`, switched on by
20
+ their environment variables. Follow README "Select optional modules". Auth management requires explicit
20
21
  `credentialAdministration` or `personalConnection` permissions; visibility
21
- alone never grants it. Configured bearer auth is a client option, not a human
22
- management identity. Connecta-issued access tokens are removed.
23
- `src/file-activity.ts` remains the deployment-owned history store.
22
+ alone never grants it. Clerk supplies human identity; `cta_` access tokens cover machine clients.
23
+ Keep `accessTokens(storage)` installed even before the first token exists.
24
+ Bootstrap machines with `npm run provision-token -- "machine-name"` against
25
+ the same database the server uses. `CONNECTA_TOKEN` is only for clients and
26
+ doctor; never add a configured static bearer or an open startup mode.
27
+ All state, activity included, lives in the one SQLite file `CONNECTA_DATABASE`
28
+ names, through `@zackbart/connecta/sqlite`.
24
29
  - Brand the operator UI in `operatorUi({ branding })`: product and owner names,
25
30
  description, favicon, and `theme` (`accent`, `radius`, `fontFamily`,
26
31
  `monoFamily`, `colorScheme`). Ask the deployment's owner for their brand
27
- rather than leaving the default. The commented block above
28
- `ui: operatorUi()` in `src/index.ts` shows the shape; README "Select optional
29
- modules" covers the rest.
32
+ rather than leaving the default. README "Select optional modules" shows the
33
+ shape.
30
34
  - Run `npm run typecheck` after configuration changes. With the server running,
31
35
  run `CONNECTA_TOKEN=... npm run doctor` before calling setup complete.
32
- - `Dockerfile` and `docker-compose.yml` containerize *this* source; they are
36
+ - `Dockerfile` and `docker-compose.yml` containerize _this_ source; they are
33
37
  the same deployment, not a second one. Configuration belongs in `.env` and
34
- `src/index.ts`, never in a divergent container entrypoint.
38
+ `src/connecta.config.ts`, never in a divergent container entrypoint.
35
39
  - Moving this deployment to a newer Connecta is its own procedure, and it is
36
40
  not a re-`init` — `connecta init` refuses to merge into an existing path on
37
41
  purpose. Bump the exact `@zackbart/connecta` pin in `package.json`, then read
@@ -2,7 +2,8 @@
2
2
  # image installs @zackbart/connecta from the registry exactly like any other
3
3
  # consumer, so nothing here depends on the Connecta repository.
4
4
  #
5
- # docker compose up -d --build
5
+ # Provision a stored machine token on the volume first; README.md gives the
6
+ # exact build, provisioning, and startup commands. Empty storage is fail-closed.
6
7
  FROM node:22-slim
7
8
 
8
9
  WORKDIR /app
@@ -32,10 +33,7 @@ USER node
32
33
 
33
34
  ENV NODE_ENV=production
34
35
  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
36
+ ENV CONNECTA_DATABASE=/data/connecta.sqlite
39
37
  EXPOSE 8787
40
38
 
41
39
  # /health is always open, so the probe never carries the bearer token and