@zackbart/connecta 0.28.1 → 0.29.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 (319) hide show
  1. package/CHANGELOG.md +788 -5
  2. package/README.md +62 -42
  3. package/bin/connecta.mjs +110 -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/auth/clerk-sdk/client.d.ts +65 -0
  12. package/dist/auth/clerk-sdk/client.js +5 -0
  13. package/dist/auth/clerk-sdk/generated.js +1845 -0
  14. package/dist/auth/clerk-transport.js +19 -0
  15. package/dist/auth/clerk.d.ts +17 -7
  16. package/dist/auth/clerk.js +189 -107
  17. package/dist/auth/cloudflare-access.js +25 -26
  18. package/dist/auth/downstream-client-metadata.d.ts +29 -0
  19. package/dist/auth/downstream-client-metadata.js +133 -0
  20. package/dist/auth/downstream-oauth.js +1584 -1580
  21. package/dist/auth/downstream-revocation.js +106 -0
  22. package/dist/auth/oauth-token-response.js +231 -0
  23. package/dist/auth/oauth-v2-migration.js +116 -0
  24. package/dist/auth/static-oauth.js +93 -71
  25. package/dist/auth-elicitation.js +283 -0
  26. package/dist/branding.d.ts +8 -16
  27. package/dist/branding.js +26 -59
  28. package/dist/byte-read-response.js +39 -0
  29. package/dist/call-admission.js +12 -16
  30. package/dist/catalog-cache.js +739 -0
  31. package/dist/catalog-drift.d.ts +50 -15
  32. package/dist/catalog-drift.js +365 -128
  33. package/dist/catalog-fingerprint.js +2 -4
  34. package/dist/catalog-freshness.js +13 -0
  35. package/dist/catalog-limits.js +2 -2
  36. package/dist/catalog-service.js +368 -224
  37. package/dist/catalog.js +43 -84
  38. package/dist/concurrency.js +3 -4
  39. package/dist/config-defaults.d.ts +39 -0
  40. package/dist/config-defaults.js +46 -0
  41. package/dist/config-schema.d.ts +181 -0
  42. package/dist/config-schema.js +435 -0
  43. package/dist/config-value-sources.js +102 -0
  44. package/dist/config.d.ts +631 -0
  45. package/dist/config.js +503 -0
  46. package/dist/connector-access.d.ts +1 -0
  47. package/dist/connector-access.js +13 -15
  48. package/dist/connector-caller.d.ts +8 -0
  49. package/dist/connector-caller.js +15 -6
  50. package/dist/connector-scope.js +1 -1
  51. package/dist/connectors/api-connector.d.ts +59 -7
  52. package/dist/connectors/api-connector.js +106 -19
  53. package/dist/connectors/api.js +4 -1
  54. package/dist/connectors/guarded-fetch.d.ts +144 -0
  55. package/dist/connectors/guarded-fetch.js +84 -35
  56. package/dist/connectors/negotiation-cache.js +46 -0
  57. package/dist/connectors/option-shapes.js +27 -0
  58. package/dist/connectors/remote-mcp.d.ts +30 -4
  59. package/dist/connectors/remote-mcp.js +1774 -320
  60. package/dist/connectors/resource-uri.js +335 -0
  61. package/dist/credential-contract.d.ts +10 -0
  62. package/dist/credential-rules.js +1 -3
  63. package/dist/credential-url.js +108 -0
  64. package/dist/credentials.d.ts +6 -1
  65. package/dist/credentials.js +27 -18
  66. package/dist/d1.d.ts +130 -0
  67. package/dist/d1.js +290 -0
  68. package/dist/describe-config.d.ts +165 -0
  69. package/dist/describe-config.js +315 -0
  70. package/dist/described.js +106 -0
  71. package/dist/downstream-input-context.js +119 -0
  72. package/dist/downstream-input.js +323 -0
  73. package/dist/errors.d.ts +97 -20
  74. package/dist/errors.js +158 -80
  75. package/dist/execute.js +453 -305
  76. package/dist/executor-admission.d.ts +1 -0
  77. package/dist/executor-admission.js +11 -15
  78. package/dist/executor-contract.d.ts +20 -0
  79. package/dist/executor-contract.js +48 -0
  80. package/dist/executor-result.js +24 -9
  81. package/dist/executors/quickjs-child.js +3 -4
  82. package/dist/executors/quickjs-runtime.js +147 -59
  83. package/dist/executors/quickjs.js +29 -35
  84. package/dist/favicon.js +1 -2
  85. package/dist/fix-prompt.js +1 -3
  86. package/dist/guest-runtime.js +188 -0
  87. package/dist/guest-types.d.ts +176 -0
  88. package/dist/guest-types.js +1 -0
  89. package/dist/html-security.js +24 -0
  90. package/dist/identity.js +1 -3
  91. package/dist/inbound-credential.js +52 -0
  92. package/dist/index.d.ts +24 -256
  93. package/dist/index.js +65 -478
  94. package/dist/invocation-auth.js +69 -0
  95. package/dist/invocation.js +230 -73
  96. package/dist/json-schema.d.ts +1 -1
  97. package/dist/mcp-client-context.js +35 -0
  98. package/dist/mcp-result.js +11 -7
  99. package/dist/meta-output.js +76 -0
  100. package/dist/meta-tool-names.d.ts +2 -0
  101. package/dist/meta-tool-names.js +3 -0
  102. package/dist/meta-tools.js +285 -209
  103. package/dist/module-contracts.d.ts +8 -23
  104. package/dist/node.d.ts +0 -2
  105. package/dist/node.js +2 -2
  106. package/dist/oauth-callback-outcome.js +1 -3
  107. package/dist/oauth-handoff.js +117 -0
  108. package/dist/oauth-sealing.js +20 -0
  109. package/dist/operator-record.d.ts +137 -0
  110. package/dist/operator-record.js +420 -0
  111. package/dist/operator-ui/assets.js +31 -0
  112. package/dist/operator-ui/contract.d.ts +72 -0
  113. package/dist/operator-ui/contract.js +1 -0
  114. package/dist/operator-ui/fix-prompts.d.ts +18 -0
  115. package/dist/operator-ui/generated.js +5 -4
  116. package/dist/operator-ui/model.d.ts +12 -87
  117. package/dist/operator-ui/model.js +2 -9
  118. package/dist/operator-ui/setup-commands.js +1 -3
  119. package/dist/operator-ui/view.d.ts +323 -0
  120. package/dist/operator-ui/view.js +62 -189
  121. package/dist/page-styles.js +2 -3
  122. package/dist/program-source.js +14 -2
  123. package/dist/{exempt-writes.js → program-writes.js} +55 -18
  124. package/dist/provider.d.ts +142 -0
  125. package/dist/provider.js +187 -0
  126. package/dist/providers/_shared/google/result-size.js +57 -0
  127. package/dist/providers/_shared/google/service-account.d.ts +58 -0
  128. package/dist/providers/_shared/google/service-account.js +500 -0
  129. package/dist/providers/_shared/google/workspace.d.ts +276 -0
  130. package/dist/providers/_shared/google/workspace.js +518 -0
  131. package/dist/providers/{basecamp.d.ts → basecamp/index.d.ts} +6 -28
  132. package/dist/providers/basecamp/index.js +997 -0
  133. package/dist/providers/basecamp/skill.generated.js +9 -0
  134. package/dist/providers/{breeze.d.ts → breeze/index.d.ts} +2 -2
  135. package/dist/providers/{breeze.js → breeze/index.js} +184 -140
  136. package/dist/providers/breeze/skill.generated.js +9 -0
  137. package/dist/providers/{ccb.d.ts → ccb/index.d.ts} +2 -2
  138. package/dist/providers/{ccb.js → ccb/index.js} +271 -116
  139. package/dist/providers/ccb/skill.generated.js +9 -0
  140. package/dist/providers/{cloudflare.d.ts → cloudflare/index.d.ts} +8 -7
  141. package/dist/providers/{cloudflare.js → cloudflare/index.js} +171 -738
  142. package/dist/providers/cloudflare/skill.generated.js +10 -0
  143. package/dist/providers/docs/index.d.ts +54 -0
  144. package/dist/providers/docs/index.js +1237 -0
  145. package/dist/providers/docs/skill.generated.js +9 -0
  146. package/dist/providers/drive/index.d.ts +53 -0
  147. package/dist/providers/drive/index.js +1523 -0
  148. package/dist/providers/drive/skill.generated.js +9 -0
  149. package/dist/providers/forms/index.d.ts +54 -0
  150. package/dist/providers/forms/index.js +1217 -0
  151. package/dist/providers/forms/skill.generated.js +11 -0
  152. package/dist/providers/github/auth.d.ts +32 -0
  153. package/dist/providers/github/auth.js +361 -0
  154. package/dist/providers/github/hosted.js +218 -0
  155. package/dist/providers/github/index.d.ts +13 -0
  156. package/dist/providers/github/index.js +140 -0
  157. package/dist/providers/github/key.js +100 -0
  158. package/dist/providers/github/rest.js +321 -0
  159. package/dist/providers/github/scope.d.ts +29 -0
  160. package/dist/providers/github/scope.js +124 -0
  161. package/dist/providers/github/skill.generated.js +8 -0
  162. package/dist/providers/gmail/index.d.ts +51 -0
  163. package/dist/providers/gmail/index.js +1436 -0
  164. package/dist/providers/gmail/skill.generated.js +9 -0
  165. package/dist/providers/{linear.d.ts → linear/index.d.ts} +11 -14
  166. package/dist/providers/linear/index.js +352 -0
  167. package/dist/providers/linear/skill.generated.js +8 -0
  168. package/dist/providers/{mixpanel.d.ts → mixpanel/index.d.ts} +5 -10
  169. package/dist/providers/mixpanel/index.js +416 -0
  170. package/dist/providers/mixpanel/skill.generated.js +9 -0
  171. package/dist/providers/{notion.d.ts → notion/index.d.ts} +8 -8
  172. package/dist/providers/{notion.js → notion/index.js} +226 -239
  173. package/dist/providers/notion/skill.generated.js +10 -0
  174. package/dist/providers/{overflow.d.ts → overflow/index.d.ts} +2 -2
  175. package/dist/providers/{overflow.js → overflow/index.js} +74 -111
  176. package/dist/providers/overflow/skill.generated.js +8 -0
  177. package/dist/providers/{planning-center.d.ts → planning-center/index.d.ts} +2 -2
  178. package/dist/providers/{planning-center.js → planning-center/index.js} +264 -104
  179. package/dist/providers/planning-center/skill.generated.js +10 -0
  180. package/dist/providers/{revenuecat.d.ts → revenuecat/index.d.ts} +5 -10
  181. package/dist/providers/revenuecat/index.js +557 -0
  182. package/dist/providers/revenuecat/skill.generated.js +11 -0
  183. package/dist/providers/sheets/index.d.ts +54 -0
  184. package/dist/providers/sheets/index.js +1237 -0
  185. package/dist/providers/sheets/skill.generated.js +10 -0
  186. package/dist/providers/slides/index.d.ts +53 -0
  187. package/dist/providers/slides/index.js +2645 -0
  188. package/dist/providers/slides/skill.generated.js +9 -0
  189. package/dist/providers/{stripe.d.ts → stripe/index.d.ts} +5 -12
  190. package/dist/providers/stripe/index.js +266 -0
  191. package/dist/providers/stripe/skill.generated.js +11 -0
  192. package/dist/providers/{tithely.d.ts → tithely/index.d.ts} +2 -2
  193. package/dist/providers/{tithely.js → tithely/index.js} +60 -91
  194. package/dist/providers/tithely/skill.generated.js +8 -0
  195. package/dist/providers/{vercel.d.ts → vercel/index.d.ts} +8 -8
  196. package/dist/providers/vercel/index.js +1038 -0
  197. package/dist/providers/vercel/mcp-ownership.js +212 -0
  198. package/dist/providers/vercel/skill.generated.js +11 -0
  199. package/dist/registry.d.ts +108 -171
  200. package/dist/registry.js +513 -925
  201. package/dist/request-state.js +21 -0
  202. package/dist/resource-read.js +100 -0
  203. package/dist/result-shapes.js +17 -49
  204. package/dist/retired-toolkits.js +1 -1
  205. package/dist/routes/access-tokens.js +3 -6
  206. package/dist/routes/activity-context.js +21 -0
  207. package/dist/routes/activity-disclosure.js +40 -0
  208. package/dist/routes/activity.js +59 -21
  209. package/dist/routes/actor-labels.js +3 -50
  210. package/dist/routes/connect.js +221 -0
  211. package/dist/routes/credentials.js +15 -27
  212. package/dist/routes/mcp.js +356 -130
  213. package/dist/routes/oauth-client-metadata.js +15 -0
  214. package/dist/routes/oauth-management.js +45 -107
  215. package/dist/routes/oauth.js +110 -57
  216. package/dist/routes/operator.js +3 -3
  217. package/dist/routes/shared.d.ts +25 -64
  218. package/dist/routes/shared.js +160 -80
  219. package/dist/routes/skills.js +30 -0
  220. package/dist/routes/ui-config.js +225 -0
  221. package/dist/routes/ui-data.js +40 -35
  222. package/dist/routes/ui.js +66 -56
  223. package/dist/runtime/admission.js +4 -2
  224. package/dist/runtime/call-admission.js +3 -1
  225. package/dist/runtime/connector-scope.js +1 -4
  226. package/dist/runtime/run.js +10 -39
  227. package/dist/runtime/services.js +12 -117
  228. package/dist/runtime/shared-read.js +1 -3
  229. package/dist/runtime/storage.js +8 -1
  230. package/dist/sent-secrets.d.ts +52 -0
  231. package/dist/sent-secrets.js +474 -0
  232. package/dist/server.js +28 -71
  233. package/dist/skills.js +406 -174
  234. package/dist/sqlite.d.ts +48 -0
  235. package/dist/sqlite.js +166 -0
  236. package/dist/storage/keys.js +428 -0
  237. package/dist/storage/memory.js +7 -0
  238. package/dist/storage/sql.d.ts +66 -0
  239. package/dist/storage/sql.js +534 -0
  240. package/dist/timeout.js +4 -2
  241. package/dist/tool-name.js +17 -0
  242. package/dist/tool-safety.d.ts +9 -35
  243. package/dist/tool-safety.js +20 -40
  244. package/dist/types.d.ts +320 -54
  245. package/dist/types.js +0 -1
  246. package/dist/ui.d.ts +7 -19
  247. package/dist/ui.js +76 -90
  248. package/dist/url-safety.js +3 -6
  249. package/dist/usage-guide.js +137 -0
  250. package/dist/validate.d.ts +7 -0
  251. package/dist/validate.js +309 -47
  252. package/dist/version.d.ts +1 -7
  253. package/dist/version.js +3 -7
  254. package/dist/worker.d.ts +11 -0
  255. package/dist/worker.js +434 -0
  256. package/documentation/architecture.md +664 -231
  257. package/documentation/auth.md +936 -546
  258. package/documentation/code-mode.md +501 -312
  259. package/documentation/meta-tools.md +449 -200
  260. package/documentation/operator-tests.md +93 -0
  261. package/documentation/provider-migration-0.29.md +60 -0
  262. package/examples/worker/AGENTS.md +34 -12
  263. package/examples/worker/README.md +286 -255
  264. package/examples/worker/kv-to-d1.wrangler.jsonc +26 -0
  265. package/examples/worker/scripts/copy-kv-to-d1.mjs +162 -0
  266. package/examples/worker/src/connecta.config.ts +151 -0
  267. package/examples/worker/src/index.ts +14 -197
  268. package/examples/worker/wrangler.jsonc +15 -35
  269. package/package.json +120 -54
  270. package/templates/node/.dockerignore +1 -2
  271. package/templates/node/.env.example +20 -21
  272. package/templates/node/AGENTS.md +21 -17
  273. package/templates/node/Dockerfile +3 -5
  274. package/templates/node/README.md +133 -58
  275. package/templates/node/docker-compose.yml +11 -12
  276. package/templates/node/package.json +4 -2
  277. package/templates/node/src/connecta.config.ts +119 -0
  278. package/templates/node/src/index.ts +9 -154
  279. package/templates/node/src/provision-token.ts +17 -0
  280. package/AGENTS.md +0 -170
  281. package/dist/artifacts/connector.d.ts +0 -58
  282. package/dist/artifacts/connector.js +0 -730
  283. package/dist/artifacts/document.js +0 -86
  284. package/dist/artifacts/guide.js +0 -140
  285. package/dist/artifacts/html-scan.js +0 -329
  286. package/dist/artifacts/json.js +0 -78
  287. package/dist/artifacts/kv-store.d.ts +0 -20
  288. package/dist/artifacts/kv-store.js +0 -140
  289. package/dist/artifacts/markdown.js +0 -478
  290. package/dist/artifacts/module.d.ts +0 -37
  291. package/dist/artifacts/module.js +0 -66
  292. package/dist/artifacts/operations.d.ts +0 -197
  293. package/dist/artifacts/operations.js +0 -1002
  294. package/dist/artifacts/refresh.d.ts +0 -55
  295. package/dist/artifacts/refresh.js +0 -236
  296. package/dist/artifacts/routes.js +0 -206
  297. package/dist/artifacts/types.d.ts +0 -214
  298. package/dist/artifacts/types.js +0 -22
  299. package/dist/artifacts/validate.d.ts +0 -62
  300. package/dist/artifacts/validate.js +0 -651
  301. package/dist/artifacts.d.ts +0 -6
  302. package/dist/artifacts.js +0 -9
  303. package/dist/auth/bearer.d.ts +0 -11
  304. package/dist/auth/bearer.js +0 -50
  305. package/dist/providers/basecamp.js +0 -445
  306. package/dist/providers/linear.js +0 -217
  307. package/dist/providers/mixpanel.js +0 -247
  308. package/dist/providers/revenuecat.js +0 -317
  309. package/dist/providers/stripe.js +0 -253
  310. package/dist/providers/vercel.js +0 -1253
  311. package/dist/storage/file.d.ts +0 -15
  312. package/dist/storage/file.js +0 -455
  313. package/ethos.md +0 -93
  314. package/examples/worker/src/cloudflare-kv.ts +0 -43
  315. package/examples/worker/src/d1-activity-row.ts +0 -155
  316. package/examples/worker/src/d1-activity.ts +0 -147
  317. package/examples/worker/src/d1-storage.ts +0 -138
  318. package/examples/worker/src/r2-artifact-blobs.ts +0 -29
  319. 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.29.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,85 @@
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"
81
111
  },
82
112
  "./providers/linear": {
83
- "types": "./dist/providers/linear.d.ts",
84
- "import": "./dist/providers/linear.js"
113
+ "types": "./dist/providers/linear/index.d.ts",
114
+ "import": "./dist/providers/linear/index.js"
85
115
  },
86
116
  "./providers/mixpanel": {
87
- "types": "./dist/providers/mixpanel.d.ts",
88
- "import": "./dist/providers/mixpanel.js"
117
+ "types": "./dist/providers/mixpanel/index.d.ts",
118
+ "import": "./dist/providers/mixpanel/index.js"
89
119
  },
90
120
  "./providers/notion": {
91
- "types": "./dist/providers/notion.d.ts",
92
- "import": "./dist/providers/notion.js"
121
+ "types": "./dist/providers/notion/index.d.ts",
122
+ "import": "./dist/providers/notion/index.js"
93
123
  },
94
- "./providers/revenuecat": {
95
- "types": "./dist/providers/revenuecat.d.ts",
96
- "import": "./dist/providers/revenuecat.js"
124
+ "./providers/overflow": {
125
+ "types": "./dist/providers/overflow/index.d.ts",
126
+ "import": "./dist/providers/overflow/index.js"
97
127
  },
98
- "./providers/stripe": {
99
- "types": "./dist/providers/stripe.d.ts",
100
- "import": "./dist/providers/stripe.js"
128
+ "./providers/planning-center": {
129
+ "types": "./dist/providers/planning-center/index.d.ts",
130
+ "import": "./dist/providers/planning-center/index.js"
101
131
  },
102
- "./providers/vercel": {
103
- "types": "./dist/providers/vercel.d.ts",
104
- "import": "./dist/providers/vercel.js"
132
+ "./providers/revenuecat": {
133
+ "types": "./dist/providers/revenuecat/index.d.ts",
134
+ "import": "./dist/providers/revenuecat/index.js"
105
135
  },
106
- "./providers/ccb": {
107
- "types": "./dist/providers/ccb.d.ts",
108
- "import": "./dist/providers/ccb.js"
136
+ "./providers/sheets": {
137
+ "types": "./dist/providers/sheets/index.d.ts",
138
+ "import": "./dist/providers/sheets/index.js"
109
139
  },
110
- "./providers/planning-center": {
111
- "types": "./dist/providers/planning-center.d.ts",
112
- "import": "./dist/providers/planning-center.js"
140
+ "./providers/slides": {
141
+ "types": "./dist/providers/slides/index.d.ts",
142
+ "import": "./dist/providers/slides/index.js"
113
143
  },
114
- "./providers/overflow": {
115
- "types": "./dist/providers/overflow.d.ts",
116
- "import": "./dist/providers/overflow.js"
144
+ "./providers/stripe": {
145
+ "types": "./dist/providers/stripe/index.d.ts",
146
+ "import": "./dist/providers/stripe/index.js"
117
147
  },
118
148
  "./providers/tithely": {
119
- "types": "./dist/providers/tithely.d.ts",
120
- "import": "./dist/providers/tithely.js"
149
+ "types": "./dist/providers/tithely/index.d.ts",
150
+ "import": "./dist/providers/tithely/index.js"
151
+ },
152
+ "./providers/vercel": {
153
+ "types": "./dist/providers/vercel/index.d.ts",
154
+ "import": "./dist/providers/vercel/index.js"
121
155
  },
122
156
  "./ui": {
123
157
  "types": "./dist/ui.d.ts",
@@ -131,28 +165,27 @@
131
165
  "types": "./dist/activity.d.ts",
132
166
  "import": "./dist/activity.js"
133
167
  },
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
168
  "./auth/access-tokens": {
143
169
  "types": "./dist/access-tokens.d.ts",
144
170
  "import": "./dist/access-tokens.js"
171
+ },
172
+ "./worker": {
173
+ "types": "./dist/worker.d.ts",
174
+ "import": "./dist/worker.js"
145
175
  }
146
176
  },
147
177
  "scripts": {
148
178
  "clean": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"",
149
179
  "build:operator-ui": "node scripts/build-operator-ui.mjs",
150
180
  "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",
181
+ "check:clerk-sdk": "node scripts/build-clerk-sdk.mjs --check",
182
+ "build": "npm run providers:generate && npm run clean && tsc -p tsconfig.build.json && node scripts/prune-declarations.mjs",
152
183
  "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.operator-ui.json --noEmit",
153
184
  "test": "vitest run",
154
185
  "test:browser:install": "playwright install chromium",
155
186
  "test:browser": "playwright test",
187
+ "test:browser:snapshots": "node scripts/update-operator-snapshots.mjs",
188
+ "pretest:browser:snapshots": "npm run build:operator-ui",
156
189
  "test:node": "vitest run --project node",
157
190
  "test:workers": "vitest run --project workers",
158
191
  "check:docs": "node scripts/check-doc-links.mjs",
@@ -170,15 +203,33 @@
170
203
  "eval:smoke": "tsx eval/run-smoke.ts",
171
204
  "eval:perf": "tsx eval/run-perf.ts",
172
205
  "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",
206
+ "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",
207
+ "check:fast": "node scripts/check-fast.mjs",
208
+ "check": "npm run check:core && npm run test:browser",
174
209
  "release:check": "npm run check && npm run check:security && npm run check:package",
175
- "prepack": "npm run check"
210
+ "prepack": "npm run check",
211
+ "check:changes": "node scripts/changelog.mjs --check && node scripts/check-node-suites.mjs && node --test scripts/changelog.test.mjs",
212
+ "changelog:assemble": "node scripts/changelog.mjs",
213
+ "providers:generate": "tsx scripts/generate-providers.mjs",
214
+ "check:providers-generated": "tsx scripts/generate-providers.mjs --check",
215
+ "prebuild": "node scripts/generate-version.mjs && npm run build:operator-ui",
216
+ "pretest": "node scripts/generate-version.mjs && npm run build:operator-ui",
217
+ "pretest:node": "node scripts/generate-version.mjs && npm run build:operator-ui",
218
+ "pretest:workers": "node scripts/generate-version.mjs && npm run build:operator-ui",
219
+ "pretest:browser": "npm run build:operator-ui",
220
+ "pretypecheck": "node scripts/generate-version.mjs && npm run build:operator-ui",
221
+ "precheck:bundle": "npm run build:operator-ui",
222
+ "precheck:fast": "npm run check:operator-ui",
223
+ "eval:regrade": "tsx eval/regrade.ts",
224
+ "format": "oxfmt --write .",
225
+ "format:check": "oxfmt --check ."
176
226
  },
177
227
  "dependencies": {
178
228
  "@cfworker/json-schema": "^4.1.1",
179
- "@modelcontextprotocol/client": "2.0.0",
180
- "@modelcontextprotocol/server": "2.0.0",
181
- "effect": "4.0.0",
229
+ "@modelcontextprotocol/client": "2.3.1",
230
+ "@modelcontextprotocol/server": "2.3.1",
231
+ "acorn": "^8.19.0",
232
+ "effect": "^4.0.0",
182
233
  "zod": "^4.4.3"
183
234
  },
184
235
  "peerDependencies": {
@@ -198,17 +249,32 @@
198
249
  }
199
250
  },
200
251
  "devDependencies": {
201
- "@clerk/backend": "^3.12.0",
252
+ "@clerk/backend": "3.12.0",
202
253
  "@cloudflare/codemode": "^0.5.0",
203
254
  "@cloudflare/vitest-pool-workers": "^0.18.8",
204
255
  "@cloudflare/workers-types": "^4.20250101.0 || ^5.0.0",
256
+ "@fontsource-variable/inter": "^5.3.0",
205
257
  "@playwright/test": "^1.62.0",
258
+ "@radix-ui/react-dialog": "^1.2.0",
259
+ "@radix-ui/react-slot": "^1.4.0",
260
+ "@radix-ui/react-tabs": "^1.1.22",
261
+ "@tailwindcss/node": "^4.3.3",
262
+ "@tailwindcss/oxide": "^4.3.3",
263
+ "@tanstack/react-query": "^5.104.1",
264
+ "@tanstack/react-router": "^1.170.41",
265
+ "@tanstack/react-table": "^8.21.3",
206
266
  "@types/node": "^22.0.0",
267
+ "@types/react": "^19.3.0",
268
+ "@types/react-dom": "^19.3.0",
269
+ "cmdk": "^1.1.1",
207
270
  "esbuild": "^0.28.0",
208
271
  "knip": "^6.29.0",
272
+ "oxfmt": "0.72.0",
209
273
  "oxlint": "^1.76.0",
210
- "preact": "^10.29.8",
211
274
  "quickjs-emscripten": "^0.32.0",
275
+ "react": "^19.3.0",
276
+ "react-dom": "^19.3.0",
277
+ "tailwindcss": "^4.3.3",
212
278
  "tsx": "^4.23.1",
213
279
  "typescript": "^5.9.3",
214
280
  "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