@zackbart/connecta 0.15.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) hide show
  1. package/AGENTS.md +28 -15
  2. package/CHANGELOG.md +493 -0
  3. package/README.md +19 -4
  4. package/bin/connecta.mjs +44 -3
  5. package/dist/access-tokens.d.ts +0 -1
  6. package/dist/access-tokens.js +0 -1
  7. package/dist/activity.d.ts +50 -2
  8. package/dist/activity.js +34 -1
  9. package/dist/apps-shell.d.ts +0 -1
  10. package/dist/apps-shell.js +0 -1
  11. package/dist/auth/bearer.d.ts +0 -1
  12. package/dist/auth/bearer.js +0 -1
  13. package/dist/auth/clerk.d.ts +0 -1
  14. package/dist/auth/clerk.js +45 -9
  15. package/dist/auth/downstream-oauth.d.ts +0 -1
  16. package/dist/auth/downstream-oauth.js +0 -1
  17. package/dist/call-admission.d.ts +0 -1
  18. package/dist/call-admission.js +0 -1
  19. package/dist/catalog-drift.d.ts +99 -0
  20. package/dist/catalog-drift.js +251 -0
  21. package/dist/catalog-fingerprint.d.ts +0 -1
  22. package/dist/catalog-fingerprint.js +0 -1
  23. package/dist/catalog-limits.d.ts +0 -1
  24. package/dist/catalog-limits.js +0 -1
  25. package/dist/catalog-service.d.ts +0 -1
  26. package/dist/catalog-service.js +0 -1
  27. package/dist/catalog.d.ts +0 -1
  28. package/dist/catalog.js +0 -1
  29. package/dist/concurrency.d.ts +0 -1
  30. package/dist/concurrency.js +0 -1
  31. package/dist/connector-scope.d.ts +0 -1
  32. package/dist/connector-scope.js +0 -1
  33. package/dist/connectors/api.d.ts +29 -21
  34. package/dist/connectors/api.js +45 -19
  35. package/dist/connectors/guarded-fetch.d.ts +106 -0
  36. package/dist/connectors/guarded-fetch.js +289 -0
  37. package/dist/connectors/remote-mcp.d.ts +0 -1
  38. package/dist/connectors/remote-mcp.js +0 -1
  39. package/dist/credentials.d.ts +0 -1
  40. package/dist/credentials.js +0 -1
  41. package/dist/errors.d.ts +0 -1
  42. package/dist/errors.js +0 -1
  43. package/dist/execute.d.ts +0 -1
  44. package/dist/execute.js +0 -1
  45. package/dist/executor-admission.d.ts +11 -1
  46. package/dist/executor-admission.js +28 -1
  47. package/dist/executor-result.d.ts +0 -1
  48. package/dist/executor-result.js +0 -1
  49. package/dist/executors/quickjs-child.d.ts +0 -1
  50. package/dist/executors/quickjs-child.js +0 -1
  51. package/dist/executors/quickjs-protocol.d.ts +0 -1
  52. package/dist/executors/quickjs-protocol.js +0 -1
  53. package/dist/executors/quickjs-runtime.d.ts +0 -1
  54. package/dist/executors/quickjs-runtime.js +0 -1
  55. package/dist/executors/quickjs.d.ts +0 -1
  56. package/dist/executors/quickjs.js +2 -1
  57. package/dist/favicon.d.ts +0 -1
  58. package/dist/favicon.js +0 -1
  59. package/dist/index.d.ts +2 -3
  60. package/dist/index.js +24 -7
  61. package/dist/invocation.d.ts +0 -1
  62. package/dist/invocation.js +0 -1
  63. package/dist/json-schema.d.ts +0 -1
  64. package/dist/json-schema.js +0 -1
  65. package/dist/mcp-result.d.ts +0 -1
  66. package/dist/mcp-result.js +0 -1
  67. package/dist/meta-tools.d.ts +0 -1
  68. package/dist/meta-tools.js +0 -1
  69. package/dist/node.d.ts +0 -1
  70. package/dist/node.js +0 -1
  71. package/dist/operator-ui/generated.d.ts +2 -3
  72. package/dist/operator-ui/generated.js +3 -4
  73. package/dist/operator-ui/model.d.ts +10 -1
  74. package/dist/operator-ui/model.js +0 -1
  75. package/dist/operator-ui/view.d.ts +167 -0
  76. package/dist/operator-ui/view.js +270 -0
  77. package/dist/providers/cloudflare.d.ts +5 -2
  78. package/dist/providers/cloudflare.js +435 -328
  79. package/dist/providers/linear.d.ts +26 -5
  80. package/dist/providers/linear.js +32 -60
  81. package/dist/providers/mixpanel.d.ts +35 -4
  82. package/dist/providers/mixpanel.js +53 -78
  83. package/dist/providers/notion.d.ts +0 -1
  84. package/dist/providers/notion.js +87 -42
  85. package/dist/providers/stripe.d.ts +13 -1
  86. package/dist/providers/stripe.js +31 -59
  87. package/dist/registry.d.ts +34 -2
  88. package/dist/registry.js +85 -5
  89. package/dist/retired-toolkits.d.ts +0 -1
  90. package/dist/retired-toolkits.js +0 -1
  91. package/dist/routes/access-tokens.d.ts +0 -1
  92. package/dist/routes/access-tokens.js +0 -1
  93. package/dist/routes/activity.d.ts +0 -1
  94. package/dist/routes/activity.js +0 -1
  95. package/dist/routes/credentials.d.ts +0 -1
  96. package/dist/routes/credentials.js +0 -1
  97. package/dist/routes/mcp.d.ts +0 -1
  98. package/dist/routes/mcp.js +0 -1
  99. package/dist/routes/oauth.d.ts +0 -1
  100. package/dist/routes/oauth.js +0 -1
  101. package/dist/routes/shared.d.ts +2 -1
  102. package/dist/routes/shared.js +0 -1
  103. package/dist/routes/ui.d.ts +0 -1
  104. package/dist/routes/ui.js +0 -1
  105. package/dist/server.d.ts +0 -1
  106. package/dist/server.js +11 -1
  107. package/dist/skills.d.ts +0 -1
  108. package/dist/skills.js +0 -1
  109. package/dist/storage/file.d.ts +0 -1
  110. package/dist/storage/file.js +0 -1
  111. package/dist/storage/memory.d.ts +0 -1
  112. package/dist/storage/memory.js +0 -1
  113. package/dist/timeout.d.ts +0 -1
  114. package/dist/timeout.js +0 -1
  115. package/dist/tool-safety.d.ts +0 -1
  116. package/dist/tool-safety.js +0 -1
  117. package/dist/types.d.ts +45 -1
  118. package/dist/types.js +0 -1
  119. package/dist/ui.d.ts +0 -1
  120. package/dist/ui.js +13 -137
  121. package/dist/validate.d.ts +13 -15
  122. package/dist/validate.js +24 -11
  123. package/dist/version.d.ts +1 -2
  124. package/dist/version.js +1 -2
  125. package/documentation/architecture.md +186 -5
  126. package/documentation/auth.md +11 -0
  127. package/documentation/call-admission.md +142 -6
  128. package/documentation/cloudflare.md +95 -27
  129. package/documentation/code-mode.md +12 -12
  130. package/documentation/connector-guides.md +172 -5
  131. package/documentation/connectors.md +98 -7
  132. package/documentation/linear.md +26 -9
  133. package/documentation/mcp-ui-design.md +2 -2
  134. package/documentation/mixpanel.md +48 -16
  135. package/documentation/notion.md +16 -0
  136. package/documentation/operations.md +283 -5
  137. package/documentation/operator-ui.md +120 -5
  138. package/documentation/provider-audit.md +160 -0
  139. package/documentation/provider-conventions.md +631 -0
  140. package/documentation/request-admission.md +167 -5
  141. package/documentation/rich-output-design.md +1 -2
  142. package/documentation/stripe.md +27 -12
  143. package/ethos.md +14 -9
  144. package/examples/worker/README.md +96 -12
  145. package/examples/worker/src/index.ts +46 -1
  146. package/examples/worker/wrangler.jsonc +14 -1
  147. package/package.json +4 -5
  148. package/templates/node/.dockerignore +10 -0
  149. package/templates/node/.env.example +40 -3
  150. package/templates/node/AGENTS.md +11 -1
  151. package/templates/node/Dockerfile +49 -0
  152. package/templates/node/README.md +117 -2
  153. package/templates/node/docker-compose.yml +39 -0
  154. package/templates/node/package.json +1 -1
  155. package/templates/node/src/file-activity.ts +182 -0
  156. package/templates/node/src/index.ts +80 -4
  157. package/assets/connecta-clay-hero.png +0 -0
  158. package/dist/access-tokens.d.ts.map +0 -1
  159. package/dist/access-tokens.js.map +0 -1
  160. package/dist/activity.d.ts.map +0 -1
  161. package/dist/activity.js.map +0 -1
  162. package/dist/apps-shell.d.ts.map +0 -1
  163. package/dist/apps-shell.js.map +0 -1
  164. package/dist/auth/bearer.d.ts.map +0 -1
  165. package/dist/auth/bearer.js.map +0 -1
  166. package/dist/auth/clerk.d.ts.map +0 -1
  167. package/dist/auth/clerk.js.map +0 -1
  168. package/dist/auth/downstream-oauth.d.ts.map +0 -1
  169. package/dist/auth/downstream-oauth.js.map +0 -1
  170. package/dist/call-admission.d.ts.map +0 -1
  171. package/dist/call-admission.js.map +0 -1
  172. package/dist/catalog-fingerprint.d.ts.map +0 -1
  173. package/dist/catalog-fingerprint.js.map +0 -1
  174. package/dist/catalog-limits.d.ts.map +0 -1
  175. package/dist/catalog-limits.js.map +0 -1
  176. package/dist/catalog-service.d.ts.map +0 -1
  177. package/dist/catalog-service.js.map +0 -1
  178. package/dist/catalog.d.ts.map +0 -1
  179. package/dist/catalog.js.map +0 -1
  180. package/dist/concurrency.d.ts.map +0 -1
  181. package/dist/concurrency.js.map +0 -1
  182. package/dist/connector-scope.d.ts.map +0 -1
  183. package/dist/connector-scope.js.map +0 -1
  184. package/dist/connectors/api.d.ts.map +0 -1
  185. package/dist/connectors/api.js.map +0 -1
  186. package/dist/connectors/remote-mcp.d.ts.map +0 -1
  187. package/dist/connectors/remote-mcp.js.map +0 -1
  188. package/dist/credentials.d.ts.map +0 -1
  189. package/dist/credentials.js.map +0 -1
  190. package/dist/errors.d.ts.map +0 -1
  191. package/dist/errors.js.map +0 -1
  192. package/dist/execute.d.ts.map +0 -1
  193. package/dist/execute.js.map +0 -1
  194. package/dist/executor-admission.d.ts.map +0 -1
  195. package/dist/executor-admission.js.map +0 -1
  196. package/dist/executor-result.d.ts.map +0 -1
  197. package/dist/executor-result.js.map +0 -1
  198. package/dist/executors/quickjs-child.d.ts.map +0 -1
  199. package/dist/executors/quickjs-child.js.map +0 -1
  200. package/dist/executors/quickjs-protocol.d.ts.map +0 -1
  201. package/dist/executors/quickjs-protocol.js.map +0 -1
  202. package/dist/executors/quickjs-runtime.d.ts.map +0 -1
  203. package/dist/executors/quickjs-runtime.js.map +0 -1
  204. package/dist/executors/quickjs.d.ts.map +0 -1
  205. package/dist/executors/quickjs.js.map +0 -1
  206. package/dist/favicon.d.ts.map +0 -1
  207. package/dist/favicon.js.map +0 -1
  208. package/dist/index.d.ts.map +0 -1
  209. package/dist/index.js.map +0 -1
  210. package/dist/invocation.d.ts.map +0 -1
  211. package/dist/invocation.js.map +0 -1
  212. package/dist/json-schema.d.ts.map +0 -1
  213. package/dist/json-schema.js.map +0 -1
  214. package/dist/mcp-result.d.ts.map +0 -1
  215. package/dist/mcp-result.js.map +0 -1
  216. package/dist/meta-tools.d.ts.map +0 -1
  217. package/dist/meta-tools.js.map +0 -1
  218. package/dist/node.d.ts.map +0 -1
  219. package/dist/node.js.map +0 -1
  220. package/dist/operator-ui/generated.d.ts.map +0 -1
  221. package/dist/operator-ui/generated.js.map +0 -1
  222. package/dist/operator-ui/model.d.ts.map +0 -1
  223. package/dist/operator-ui/model.js.map +0 -1
  224. package/dist/providers/cloudflare.d.ts.map +0 -1
  225. package/dist/providers/cloudflare.js.map +0 -1
  226. package/dist/providers/linear.d.ts.map +0 -1
  227. package/dist/providers/linear.js.map +0 -1
  228. package/dist/providers/mixpanel.d.ts.map +0 -1
  229. package/dist/providers/mixpanel.js.map +0 -1
  230. package/dist/providers/notion.d.ts.map +0 -1
  231. package/dist/providers/notion.js.map +0 -1
  232. package/dist/providers/stripe.d.ts.map +0 -1
  233. package/dist/providers/stripe.js.map +0 -1
  234. package/dist/registry.d.ts.map +0 -1
  235. package/dist/registry.js.map +0 -1
  236. package/dist/retired-toolkits.d.ts.map +0 -1
  237. package/dist/retired-toolkits.js.map +0 -1
  238. package/dist/routes/access-tokens.d.ts.map +0 -1
  239. package/dist/routes/access-tokens.js.map +0 -1
  240. package/dist/routes/activity.d.ts.map +0 -1
  241. package/dist/routes/activity.js.map +0 -1
  242. package/dist/routes/credentials.d.ts.map +0 -1
  243. package/dist/routes/credentials.js.map +0 -1
  244. package/dist/routes/mcp.d.ts.map +0 -1
  245. package/dist/routes/mcp.js.map +0 -1
  246. package/dist/routes/oauth.d.ts.map +0 -1
  247. package/dist/routes/oauth.js.map +0 -1
  248. package/dist/routes/shared.d.ts.map +0 -1
  249. package/dist/routes/shared.js.map +0 -1
  250. package/dist/routes/ui.d.ts.map +0 -1
  251. package/dist/routes/ui.js.map +0 -1
  252. package/dist/server.d.ts.map +0 -1
  253. package/dist/server.js.map +0 -1
  254. package/dist/skills.d.ts.map +0 -1
  255. package/dist/skills.js.map +0 -1
  256. package/dist/storage/file.d.ts.map +0 -1
  257. package/dist/storage/file.js.map +0 -1
  258. package/dist/storage/memory.d.ts.map +0 -1
  259. package/dist/storage/memory.js.map +0 -1
  260. package/dist/timeout.d.ts.map +0 -1
  261. package/dist/timeout.js.map +0 -1
  262. package/dist/tool-safety.d.ts.map +0 -1
  263. package/dist/tool-safety.js.map +0 -1
  264. package/dist/types.d.ts.map +0 -1
  265. package/dist/types.js.map +0 -1
  266. package/dist/ui.d.ts.map +0 -1
  267. package/dist/ui.js.map +0 -1
  268. package/dist/validate.d.ts.map +0 -1
  269. package/dist/validate.js.map +0 -1
  270. package/dist/version.d.ts.map +0 -1
  271. package/dist/version.js.map +0 -1
  272. package/examples/node/README.md +0 -52
  273. package/examples/node/src/index.ts +0 -71
  274. package/src/access-tokens.ts +0 -289
  275. package/src/activity.ts +0 -234
  276. package/src/apps-shell.ts +0 -370
  277. package/src/auth/bearer.ts +0 -61
  278. package/src/auth/clerk.ts +0 -553
  279. package/src/auth/downstream-oauth.ts +0 -575
  280. package/src/call-admission.ts +0 -521
  281. package/src/catalog-fingerprint.ts +0 -52
  282. package/src/catalog-limits.ts +0 -11
  283. package/src/catalog-service.ts +0 -1153
  284. package/src/catalog.ts +0 -790
  285. package/src/concurrency.ts +0 -39
  286. package/src/connector-scope.ts +0 -66
  287. package/src/connectors/api.ts +0 -159
  288. package/src/connectors/remote-mcp.ts +0 -1090
  289. package/src/credentials.ts +0 -428
  290. package/src/errors.ts +0 -364
  291. package/src/execute.ts +0 -1406
  292. package/src/executor-admission.ts +0 -328
  293. package/src/executor-result.ts +0 -107
  294. package/src/executors/quickjs-child.ts +0 -172
  295. package/src/executors/quickjs-protocol.ts +0 -99
  296. package/src/executors/quickjs-runtime.ts +0 -470
  297. package/src/executors/quickjs.ts +0 -776
  298. package/src/favicon.ts +0 -53
  299. package/src/index.ts +0 -666
  300. package/src/invocation.ts +0 -655
  301. package/src/json-schema.ts +0 -11
  302. package/src/mcp-result.ts +0 -43
  303. package/src/meta-tools.ts +0 -1607
  304. package/src/node.ts +0 -206
  305. package/src/operator-ui/browser.css +0 -423
  306. package/src/operator-ui/browser.ts +0 -1281
  307. package/src/operator-ui/generated.ts +0 -4
  308. package/src/operator-ui/model.ts +0 -111
  309. package/src/providers/cloudflare.ts +0 -3803
  310. package/src/providers/linear.ts +0 -301
  311. package/src/providers/mixpanel.ts +0 -228
  312. package/src/providers/notion.ts +0 -1879
  313. package/src/providers/stripe.ts +0 -306
  314. package/src/registry.ts +0 -1085
  315. package/src/retired-toolkits.ts +0 -14
  316. package/src/routes/access-tokens.ts +0 -115
  317. package/src/routes/activity.ts +0 -215
  318. package/src/routes/credentials.ts +0 -254
  319. package/src/routes/mcp.ts +0 -429
  320. package/src/routes/oauth.ts +0 -322
  321. package/src/routes/shared.ts +0 -247
  322. package/src/routes/ui.ts +0 -152
  323. package/src/server.ts +0 -195
  324. package/src/skills.ts +0 -271
  325. package/src/storage/file.ts +0 -123
  326. package/src/storage/memory.ts +0 -44
  327. package/src/timeout.ts +0 -84
  328. package/src/tool-safety.ts +0 -15
  329. package/src/types.ts +0 -523
  330. package/src/ui.ts +0 -744
  331. package/src/validate.ts +0 -387
  332. package/src/version.ts +0 -7
@@ -1,5 +1,42 @@
1
- # Required. Use a long random value and keep it out of source control.
2
- CONNECTA_TOKEN=replace-me
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'))"
6
+ CONNECTA_TOKEN=
3
7
 
4
- # Optional. Defaults to 8787.
8
+ # Optional. Defaults to 8787. Compose publishes this port on the host too.
5
9
  PORT=8787
10
+
11
+ # Optional. The origin this deployment answers on, once it answers on more
12
+ # than this machine: downstream OAuth calls back to
13
+ # <PUBLIC_URL>/oauth/callback/<connectorId>. Defaults to http://localhost:<PORT>.
14
+ PUBLIC_URL=
15
+
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=
21
+
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.
25
+
26
+ # Operator sign-in with Clerk. Only a signed-in operator may write a credential
27
+ # or issue an access token; the bearer above is a client key, not an admin key.
28
+ # Also run `npm install @clerk/backend` — it is an optional peer.
29
+ CLERK_PUBLISHABLE_KEY=
30
+ CLERK_SECRET_KEY=
31
+
32
+ # Credential vault. Base64-encoded 32-byte AES key encrypting the values an
33
+ # operator saves at /credentials. Generate one with:
34
+ # 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
36
+ # never in source control. Losing it makes stored credentials unreadable.
37
+ CONNECTA_CREDENTIAL_KEY=
38
+
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=
@@ -6,13 +6,23 @@ This repository is deployment configuration, not a copy of Connecta itself.
6
6
  - Keep `executor: quickJsExecutor()` for the prescribed seven-tool code-first
7
7
  surface.
8
8
  - Keep credentials in environment variables or an external secret store.
9
- Never commit `.env`, `.connecta-state.json`, tokens, or credential values.
9
+ Never commit `.env`, `.connecta-state.json`, `.connecta-activity.jsonl`,
10
+ tokens, or credential values.
10
11
  - Add application logic only inside deliberate `api()` connector handlers.
11
12
  Do not copy or modify Connecta package internals here.
12
13
  - Prefer `api()` when the agent must see an exact reviewed capability surface;
13
14
  `remoteMcp()` follows the downstream server's evolving tool catalog.
15
+ - The operator surface — Clerk sign-in, credential vault, access tokens,
16
+ activity — ships as commented blocks in `src/index.ts`. Enable one by
17
+ uncommenting it and setting the variables it names in `.env`, never by
18
+ inventing a parallel configuration path. `README.md` § "Turn on the operator
19
+ surface" is the walkthrough; `src/file-activity.ts` is the deployment-owned
20
+ activity store the activity block wires.
14
21
  - Run `npm run typecheck` after configuration changes. With the server running,
15
22
  run `CONNECTA_TOKEN=... npm run doctor` before calling setup complete.
23
+ - `Dockerfile` and `docker-compose.yml` containerize *this* source; they are
24
+ the same deployment, not a second one. Configuration belongs in `.env` and
25
+ `src/index.ts`, never in a divergent container entrypoint.
16
26
 
17
27
  Do not add alternate entrypoints, policy layers, generated connector catalogs,
18
28
  or runtime connector registration. Keep the deployment small enough to review
@@ -0,0 +1,49 @@
1
+ # This deployment, containerized. The build context is this directory: the
2
+ # image installs @zackbart/connecta from the registry exactly like any other
3
+ # consumer, so nothing here depends on the Connecta repository.
4
+ #
5
+ # docker compose up -d --build
6
+ FROM node:22-slim
7
+
8
+ WORKDIR /app
9
+
10
+ # `connecta init` deliberately leaves no lockfile — it rewrites the Connecta
11
+ # version pin, and a lockfile shipped in the template would already disagree
12
+ # with it. Without one the build resolves the pin itself, which is fine but not
13
+ # reproducible. Run `npm install` on the host and commit the `package-lock.json`
14
+ # it writes: the build context then carries it and every later build takes the
15
+ # `npm ci` path. A lockfile written inside this layer stays inside the image.
16
+ # Dev dependencies stay in: tsx runs src/index.ts directly, so the deployment
17
+ # you review is the deployment that runs.
18
+ COPY package.json package-lock.json* ./
19
+ RUN if [ -f package-lock.json ]; then \
20
+ npm ci --include=dev; \
21
+ else \
22
+ npm install --include=dev --no-audit --no-fund; \
23
+ fi
24
+
25
+ COPY tsconfig.json ./
26
+ COPY src ./src
27
+
28
+ # State lives on a mounted volume. The image owns the mount point so a fresh
29
+ # named volume inherits an owner the non-root user can actually write to.
30
+ RUN mkdir -p /data && chown -R node:node /data /app
31
+ USER node
32
+
33
+ ENV NODE_ENV=production
34
+ ENV PORT=8787
35
+ ENV CONNECTA_STATE_FILE=/data/connecta-state.json
36
+ # Read only once the activity block in src/index.ts is uncommented; defaulted
37
+ # here so history lands on the volume rather than inside the container layer.
38
+ ENV CONNECTA_ACTIVITY_FILE=/data/connecta-activity.jsonl
39
+ EXPOSE 8787
40
+
41
+ # /health is always open, so the probe never carries the bearer token and
42
+ # never leaves the container.
43
+ HEALTHCHECK --interval=30s --timeout=5s --start-period=15s --retries=3 \
44
+ CMD node -e "fetch('http://127.0.0.1:'+(process.env.PORT||8787)+'/health').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"
45
+
46
+ # `node --import tsx` keeps Node itself in the foreground: no wrapper process
47
+ # swallows SIGTERM, so `docker compose down` stops the server promptly and the
48
+ # QuickJS children go with it.
49
+ CMD ["node", "--import", "tsx", "src/index.ts"]
@@ -1,6 +1,7 @@
1
1
  # Connecta deployment
2
2
 
3
- This is the prescribed small Node deployment. Install and run it:
3
+ This is the prescribed Node deployment — the only one. It runs locally from
4
+ source and, unchanged, as a container. Install and run it:
4
5
 
5
6
  ```sh
6
7
  npm install
@@ -10,12 +11,107 @@ CONNECTA_TOKEN=dev-token npm start
10
11
  Then point an MCP client at `http://localhost:8787/mcp` with
11
12
  `Authorization: Bearer dev-token`.
12
13
 
14
+ ## Run it in Docker
15
+
16
+ Same source, same configuration, one long-lived service:
17
+
18
+ ```sh
19
+ cp .env.example .env
20
+ # edit .env — set CONNECTA_TOKEN to a long random value
21
+
22
+ docker compose up -d --build
23
+ ```
24
+
25
+ `CONNECTA_TOKEN` ships empty on purpose: `up` fails on it until you set it,
26
+ rather than starting a deployment whose bearer is a value published in this
27
+ template. Everything else in `.env.example` has a working default.
28
+
29
+ Compose reads `.env`, publishes `PORT` (8787 by default), and keeps state on
30
+ the named volume `connecta-state`, mounted at `/data`. `docker compose down`
31
+ stops the service and keeps state; `down -v` wipes it. `/health` is always
32
+ open, so the container's health probe never carries the bearer token.
33
+
34
+ A build with no lockfile in the context resolves the pinned Connecta version
35
+ itself, and a lockfile npm writes inside the image never reaches this project.
36
+ So commit the `package-lock.json` that the `npm install` above wrote on this
37
+ machine: from then on the build context carries it and every build takes the
38
+ reproducible `npm ci` path.
39
+
40
+ ## Turn on the operator surface
41
+
42
+ Out of the box this deployment serves the seven-tool MCP surface and a
43
+ read-only operator UI: open `http://localhost:8787/`, paste the bearer, and you
44
+ get Connections. The other three pages are configuration away, and each one is
45
+ a commented block in `src/index.ts` — uncomment it, set the variables it names
46
+ in `.env`, restart. Do them in this order; the last two lean on the first, and
47
+ Credentials wants one thing more than a block, called out in step 2.
48
+
49
+ **1. Operator sign-in (Clerk).** A bearer token is a client key. It may call
50
+ tools and read connector status, but it may not write a credential or issue an
51
+ access token — that would make one shared secret a deployment-admin key. An
52
+ interactive identity is what unlocks the actionable half:
53
+
54
+ ```sh
55
+ npm install @clerk/backend # optional peer; it does not install with Connecta
56
+ ```
57
+
58
+ Set `CLERK_PUBLISHABLE_KEY` and `CLERK_SECRET_KEY`, uncomment the `clerkAuth`
59
+ import, the two `process.env.CLERK_*` reads, and the `clerkAuth({ … })` entry in
60
+ `auth`. Enable Dynamic Client Registration on the Clerk instance (OAuth
61
+ Applications → DCR) if MCP clients should sign in through it too, and set
62
+ `PUBLIC_URL` first — Clerk redirects back to it.
63
+
64
+ **2. Credential vault.** Uncomment `credentials` and set
65
+ `CONNECTA_CREDENTIAL_KEY` to a base64 32-byte AES key:
66
+
67
+ ```sh
68
+ node -e "console.log(crypto.randomBytes(32).toString('base64'))"
69
+ ```
70
+
71
+ Every connector that declares a `credential` slot then becomes editable at
72
+ `/credentials`, with values encrypted in the state file. The shipped `time`
73
+ connector declares none — telling the time needs no secret — so the key alone
74
+ leaves the page hidden, which is the honest state for a page with nothing on
75
+ it. Add `credential: { label: "API token" }` to an `api()` connector (the
76
+ commented shape is in `src/index.ts`) and read it in a handler with
77
+ `await ctx.credential?.get()`, or use a provider connector such as `notion()`,
78
+ which declares its own; Credentials appears for a signed-in operator on the
79
+ next restart. Keep the key anywhere
80
+ except that file — it is the only thing standing between a copied state file
81
+ and the secrets in it — and note that losing it makes stored values
82
+ unreadable. A saved replacement takes effect on the next call; nothing
83
+ restarts, and the deployment never probes a credential to see whether it still
84
+ works. It fails at use, loudly, and the agent is routed to `/credentials`.
85
+
86
+ **3. Access tokens.** Uncomment `accessTokens: {}`. A signed-in operator can
87
+ then mint named, revocable Bearer tokens at `/tokens` for header-capable
88
+ clients that will not do OAuth. Secrets are shown once and only their hashes
89
+ are stored, so a lost token is reissued, never recovered.
90
+
91
+ **4. Activity.** Uncomment the `activity` block and the `fileActivityStore`
92
+ import. `/activity` then answers with who called what, when, how long it took,
93
+ and whether it worked — never arguments, results, generated code, or raw error
94
+ messages, because the store is never handed one. `src/file-activity.ts` is
95
+ yours: it appends a line per call and rewrites the log down to the newest 5,000
96
+ events once it runs a slack window past that, so the file holds a few hundred
97
+ more than the ceiling between rewrites rather than being rewritten on every
98
+ call. That is a retention policy chosen for a single container and worth
99
+ revisiting for anything busier. In Docker the log lands on the same volume as
100
+ the state file.
101
+
102
+ None of this changes what agents can reach. Operator pages manage the
103
+ authentication material behind capabilities this file already declares; the
104
+ connector set, the tool catalog, and its annotations are `src/index.ts`'s
105
+ business and stay that way.
106
+
13
107
  ## Deployment contract
14
108
 
15
109
  - Edit `src/index.ts` for connectors, auth, storage, and the public URL.
16
110
  - Keep the required `executor: quickJsExecutor()` configuration; a deployment
17
111
  without an executor refuses to boot.
18
112
  - Keep secrets in environment variables or an external secret store.
113
+ - Set `PUBLIC_URL` once this deployment is reachable from somewhere other than
114
+ this machine: downstream OAuth calls back to it.
19
115
  - Add application code only inside deliberate `api()` connector handlers.
20
116
  - Do not copy Connecta package internals into this deployment.
21
117
  - `AGENTS.md` is the canonical convention file; `CLAUDE.md` points to it.
@@ -24,7 +120,7 @@ Verify a change with:
24
120
 
25
121
  ```sh
26
122
  npm run typecheck
27
- # In another terminal, while npm start is running:
123
+ # In another terminal, while the server is running (npm start or compose):
28
124
  CONNECTA_TOKEN=dev-token npm run doctor
29
125
  ```
30
126
 
@@ -32,3 +128,22 @@ Doctor checks health, the executor, and the exact prescribed seven-tool
32
128
  model-facing surface by running a harmless sandbox program. It reads the bearer
33
129
  from `CONNECTA_TOKEN`; it never accepts the secret as a command-line argument.
34
130
  Remote URLs must use HTTPS.
131
+
132
+ A fully-wired deployment reports exactly the same line as a bare one —
133
+ connector count, QuickJS executed, seven tools, plus any catalog drift:
134
+
135
+ ```text
136
+ Connecta doctor passed: 1 connector(s), QuickJS executed, prescribed seven-tool surface.
137
+ ```
138
+
139
+ `QuickJS` is this deployment's sandbox, reported by the deployment itself —
140
+ swap the executor and doctor names the one that actually ran the program.
141
+
142
+ That is deliberate. Doctor holds a bearer, and a bearer learns the model-facing
143
+ surface, not the deployment's configuration topology: whether this deployment
144
+ issues access tokens or keeps a credential vault is operator data, and a client
145
+ key is not an operator. Confirm the operator surface the way an operator will —
146
+ sign in at `/` and check that the pages you turned on are there: Tokens and
147
+ Activity once their blocks are uncommented, and Credentials once the vault has
148
+ a connector credential slot to show. The nav lists a page only when this
149
+ deployment can serve it, so an absent page is a report, not a fault.
@@ -0,0 +1,39 @@
1
+ # One service, no database: state is the fileStorage JSON on a named volume.
2
+ #
3
+ # cp .env.example .env # then set CONNECTA_TOKEN
4
+ # docker compose up -d --build
5
+ #
6
+ # Compose reads `.env` from this directory, so one file configures both the
7
+ # build and the container.
8
+
9
+ services:
10
+ connecta:
11
+ build: .
12
+ # An init process reaps the QuickJS children a program leaves behind.
13
+ init: true
14
+ ports:
15
+ - "${PORT:-8787}:${PORT:-8787}"
16
+ environment:
17
+ # Refuse to start without inbound auth — the same rule src/index.ts
18
+ # enforces, stated early enough that `up` fails before the build.
19
+ CONNECTA_TOKEN: ${CONNECTA_TOKEN:?set CONNECTA_TOKEN in .env}
20
+ PORT: ${PORT:-8787}
21
+ # Downstream OAuth calls back to this origin. Unset is fine until this
22
+ # deployment is reachable from somewhere other than this machine.
23
+ PUBLIC_URL: ${PUBLIC_URL:-}
24
+ # Keep the state file under /data so it lands on the volume below.
25
+ CONNECTA_STATE_FILE: ${CONNECTA_STATE_FILE:-/data/connecta-state.json}
26
+ # Operator surface. Passed through so the matching blocks in
27
+ # src/index.ts work in the container the moment they are uncommented;
28
+ # until then these are unread. The activity log joins the state file on
29
+ # the volume for the same reason it does.
30
+ CLERK_PUBLISHABLE_KEY: ${CLERK_PUBLISHABLE_KEY:-}
31
+ CLERK_SECRET_KEY: ${CLERK_SECRET_KEY:-}
32
+ CONNECTA_CREDENTIAL_KEY: ${CONNECTA_CREDENTIAL_KEY:-}
33
+ CONNECTA_ACTIVITY_FILE: ${CONNECTA_ACTIVITY_FILE:-/data/connecta-activity.jsonl}
34
+ volumes:
35
+ - connecta-state:/data
36
+ restart: unless-stopped
37
+
38
+ volumes:
39
+ connecta-state:
@@ -12,7 +12,7 @@
12
12
  "typecheck": "tsc --noEmit"
13
13
  },
14
14
  "dependencies": {
15
- "@zackbart/connecta": "0.15.0",
15
+ "@zackbart/connecta": "0.16.0",
16
16
  "quickjs-emscripten": "0.32.0"
17
17
  },
18
18
  "devDependencies": {
@@ -0,0 +1,182 @@
1
+ /**
2
+ * Payload-free tool activity, kept in a JSON-lines file beside the state file.
3
+ *
4
+ * Deployment-owned on purpose: Connecta ships the `ActivityStore` contract, not
5
+ * a backend, because retention is a decision only the operator can make. This
6
+ * is the Node counterpart of the Worker example's D1 store, sized for one
7
+ * container rather than a fleet — a write appends one line, and the log is
8
+ * bounded by a count of events instead of by age, so nothing has to be
9
+ * scheduled.
10
+ *
11
+ * Nothing wires it by default. `src/index.ts` carries the commented lines that
12
+ * turn it on; README.md § "Turn on the operator surface" explains why they are
13
+ * commented.
14
+ */
15
+ import {
16
+ appendFileSync,
17
+ chmodSync,
18
+ existsSync,
19
+ mkdirSync,
20
+ readFileSync,
21
+ renameSync,
22
+ writeFileSync,
23
+ } from "node:fs";
24
+ import { dirname } from "node:path";
25
+ import type {
26
+ ActivityPage,
27
+ ActivityStore,
28
+ ToolCallActivityEvent,
29
+ } from "@zackbart/connecta";
30
+ import { InvalidActivityCursorError } from "@zackbart/connecta";
31
+
32
+ /**
33
+ * Events allowed past `maxEvents` before the log is rewritten. Trimming on the
34
+ * write that first crosses the ceiling would rewrite the whole file on every
35
+ * call from then on; this pays that cost once per slack window instead.
36
+ */
37
+ const COMPACTION_SLACK = 500;
38
+
39
+ export interface FileActivityOptions {
40
+ /** Newest events retained after a compaction. Default 5,000. */
41
+ maxEvents?: number;
42
+ }
43
+
44
+ /** Newest first, with the id breaking ties inside a millisecond. */
45
+ function newestFirst(
46
+ a: ToolCallActivityEvent,
47
+ b: ToolCallActivityEvent,
48
+ ): number {
49
+ const byTime = Date.parse(b.occurredAt) - Date.parse(a.occurredAt);
50
+ return byTime !== 0 ? byTime : b.id.localeCompare(a.id);
51
+ }
52
+
53
+ function encodeCursor(event: ToolCallActivityEvent): string {
54
+ return Buffer.from(`${Date.parse(event.occurredAt)}:${event.id}`).toString(
55
+ "base64",
56
+ );
57
+ }
58
+
59
+ function decodeCursor(value: string): { occurredAtMs: number; id: string } {
60
+ const decoded = Buffer.from(value, "base64").toString("utf8");
61
+ const separator = decoded.indexOf(":");
62
+ const occurredAtMs = Number(decoded.slice(0, separator));
63
+ const id = decoded.slice(separator + 1);
64
+ if (separator < 1 || !Number.isSafeInteger(occurredAtMs) || !id) {
65
+ throw new InvalidActivityCursorError();
66
+ }
67
+ return { occurredAtMs, id };
68
+ }
69
+
70
+ /** Strictly older than the cursor position, in the order above. */
71
+ function isBefore(
72
+ event: ToolCallActivityEvent,
73
+ position: { occurredAtMs: number; id: string },
74
+ ): boolean {
75
+ const occurredAtMs = Date.parse(event.occurredAt);
76
+ if (occurredAtMs !== position.occurredAtMs) {
77
+ return occurredAtMs < position.occurredAtMs;
78
+ }
79
+ return event.id.localeCompare(position.id) < 0;
80
+ }
81
+
82
+ /**
83
+ * One append-only record per completed downstream call. Events carry no
84
+ * arguments, results, generated code, or raw error messages — the store never
85
+ * has a payload to leak. Writes are best-effort by contract: a throw here is
86
+ * logged by Connecta and never reaches the tool result.
87
+ */
88
+ export function fileActivityStore(
89
+ path: string,
90
+ opts: FileActivityOptions = {},
91
+ ): ActivityStore {
92
+ const maxEvents = Math.max(1, Math.trunc(opts.maxEvents ?? 5_000));
93
+ // Activity records who called what, so it is owner-only like the state file.
94
+ const tighten = () => {
95
+ try {
96
+ chmodSync(path, 0o600);
97
+ } catch {
98
+ // Non-POSIX filesystem or a race on the file — leave the mode as-is.
99
+ }
100
+ };
101
+ let events: ToolCallActivityEvent[] = [];
102
+ // Damage found at load that the file itself still carries: a dropped line, or
103
+ // a last line with no newline after it. Both are repaired by rewriting the
104
+ // file from what parsed, because the alternative is appending onto a
105
+ // fragment and losing the *next* event too — one that never had anything
106
+ // wrong with it.
107
+ let repairNeeded = false;
108
+ if (existsSync(path)) {
109
+ tighten();
110
+ // A half-written trailing line is the normal cost of an append log, and
111
+ // one unreadable line is not a reason to lose the history above it. Unlike
112
+ // the state file there is nothing irreplaceable here — this is a record of
113
+ // calls that already happened — so damaged lines are dropped, loudly.
114
+ const raw = readFileSync(path, "utf8");
115
+ const lines = raw.split("\n").filter(Boolean);
116
+ let dropped = 0;
117
+ for (const line of lines) {
118
+ try {
119
+ events.push(JSON.parse(line) as ToolCallActivityEvent);
120
+ } catch {
121
+ dropped += 1;
122
+ }
123
+ }
124
+ if (dropped > 0) {
125
+ console.error(
126
+ `[connecta] activity log ${path}: dropped ${dropped} unreadable ` +
127
+ `line(s) of ${lines.length}.`,
128
+ );
129
+ }
130
+ repairNeeded = dropped > 0 || (raw.length > 0 && !raw.endsWith("\n"));
131
+ }
132
+ const ensureDirectory = () => {
133
+ const dir = dirname(path);
134
+ if (dir) mkdirSync(dir, { recursive: true, mode: 0o700 });
135
+ };
136
+ const compact = () => {
137
+ events = [...events].sort(newestFirst).slice(0, maxEvents);
138
+ ensureDirectory();
139
+ const tmp = `${path}.tmp`;
140
+ // 0o600 on the temp file; the rename preserves it, so the live log is
141
+ // never briefly world-readable.
142
+ writeFileSync(
143
+ tmp,
144
+ events.map((event) => `${JSON.stringify(event)}\n`).join(""),
145
+ { mode: 0o600 },
146
+ );
147
+ renameSync(tmp, path);
148
+ tighten();
149
+ };
150
+ // Repair before the first append rather than at the next restart: the
151
+ // fragment is on disk until something rewrites the file, and an append onto
152
+ // it corrupts a good event into an unreadable line.
153
+ if (repairNeeded) compact();
154
+ return {
155
+ record(event) {
156
+ events.push(event);
157
+ if (events.length > maxEvents + COMPACTION_SLACK) {
158
+ compact();
159
+ return;
160
+ }
161
+ ensureDirectory();
162
+ appendFileSync(path, `${JSON.stringify(event)}\n`, { mode: 0o600 });
163
+ tighten();
164
+ },
165
+
166
+ async list({ cursor, limit }): Promise<ActivityPage> {
167
+ const boundedLimit = Math.min(100, Math.max(1, Math.trunc(limit)));
168
+ const position = cursor ? decodeCursor(cursor) : undefined;
169
+ const ordered = [...events]
170
+ .sort(newestFirst)
171
+ .filter((event) => !position || isBefore(event, position));
172
+ const visible = ordered.slice(0, boundedLimit);
173
+ const last = visible.at(-1);
174
+ return {
175
+ events: visible,
176
+ ...(ordered.length > visible.length && last
177
+ ? { nextCursor: encodeCursor(last) }
178
+ : {}),
179
+ };
180
+ },
181
+ };
182
+ }
@@ -4,10 +4,30 @@
4
4
  * Keep this file as deployment configuration: connectors, authentication,
5
5
  * storage, and public origin. Add application logic only inside deliberate
6
6
  * api() connector handlers.
7
+ *
8
+ * The operator surface — sign-in, credential vault, access tokens, activity —
9
+ * ships here as commented configuration, because each half needs a secret or a
10
+ * retention decision this file cannot make for you. Uncomment the block you
11
+ * want; README.md § "Turn on the operator surface" walks through all four.
12
+ *
13
+ * Environment (see .env.example):
14
+ * CONNECTA_TOKEN required inbound bearer token
15
+ * PORT listen port (default 8787)
16
+ * PUBLIC_URL public origin; downstream OAuth calls back to it
17
+ * CONNECTA_STATE_FILE fileStorage path (the container points it at /data)
18
+ * CLERK_PUBLISHABLE_KEY operator sign-in, once the Clerk block is on
19
+ * CLERK_SECRET_KEY operator sign-in, once the Clerk block is on
20
+ * CONNECTA_CREDENTIAL_KEY vault key, once the credentials block is on
21
+ * CONNECTA_ACTIVITY_FILE activity log, once the activity block is on
7
22
  */
8
23
  import { api, bearerToken, createConnecta } from "@zackbart/connecta";
9
24
  import { fileStorage, listen } from "@zackbart/connecta/node";
10
25
  import { quickJsExecutor } from "@zackbart/connecta/quickjs";
26
+ // Operator sign-in. Needs `npm install @clerk/backend` — it is an optional
27
+ // peer, so it does not install with Connecta.
28
+ // import { clerkAuth } from "@zackbart/connecta/auth/clerk";
29
+ // Payload-free activity history, kept beside the state file.
30
+ // import { fileActivityStore } from "./file-activity.js";
11
31
 
12
32
  const token = process.env.CONNECTA_TOKEN;
13
33
  if (!token) {
@@ -16,16 +36,72 @@ if (!token) {
16
36
  );
17
37
  }
18
38
  const port = Number(process.env.PORT ?? 8787);
39
+ // Empty is unset: an untouched `.env` passes through Compose as "", and an
40
+ // empty state path or public origin is worse than the local default.
41
+ const stateFile = process.env.CONNECTA_STATE_FILE || "./.connecta-state.json";
42
+ const publicUrl = process.env.PUBLIC_URL || `http://localhost:${port}`;
43
+
44
+ // Operator sign-in. A bearer token is a client key: it may call tools and read
45
+ // connector status, but only a Clerk-authenticated operator may write a
46
+ // credential or issue an access token. Without this block the operator pages
47
+ // still render — an operator pastes the bearer to read them — and Credentials
48
+ // and Tokens stay read-only.
49
+ // const clerkPublishableKey = process.env.CLERK_PUBLISHABLE_KEY;
50
+ // const clerkSecretKey = process.env.CLERK_SECRET_KEY;
51
+ // if (!clerkPublishableKey || !clerkSecretKey) {
52
+ // throw new Error(
53
+ // "Operator sign-in needs CLERK_PUBLISHABLE_KEY and CLERK_SECRET_KEY.",
54
+ // );
55
+ // }
19
56
 
20
57
  const connecta = createConnecta({
21
- storage: fileStorage("./.connecta-state.json"),
22
- auth: bearerToken(token, { subjectId: "operator" }),
23
- publicUrl: `http://localhost:${port}`,
58
+ storage: fileStorage(stateFile),
59
+ auth: [
60
+ bearerToken(token, { subjectId: "operator" }),
61
+ // clerkAuth({
62
+ // publishableKey: clerkPublishableKey,
63
+ // secretKey: clerkSecretKey,
64
+ // publicUrl,
65
+ // // Restrict who may sign in — or use `gate` for anything a domain
66
+ // // cannot express. Absent, every authenticated Clerk user is admitted.
67
+ // // allowedDomains: ["acme.com"],
68
+ // }),
69
+ ],
70
+ publicUrl,
24
71
  // Required: model-written programs run in a bounded QuickJS child.
25
72
  executor: quickJsExecutor(),
73
+ // Credential vault. A connector that declares a `credential` slot becomes
74
+ // editable at /credentials, and its value is encrypted in the state file
75
+ // with this key — so keep the key out of that file and out of source:
76
+ // node -e "console.log(crypto.randomBytes(32).toString('base64'))"
77
+ // Rotating a credential takes effect on the next call; no restart.
78
+ // credentials: { encryptionKey: process.env.CONNECTA_CREDENTIAL_KEY },
79
+ //
80
+ // Named, revocable Bearer tokens for MCP clients, issued at /tokens by a
81
+ // signed-in operator. Secrets are shown once; only their hashes are stored.
82
+ // Requires the Clerk block above — there is nobody to authorize issuance
83
+ // otherwise.
84
+ // accessTokens: {},
85
+ //
86
+ // Payload-free activity history at /activity: who called what, when, how
87
+ // long it took, and whether it worked. Never arguments, results, generated
88
+ // code, or raw error messages. Commented because retention is yours to
89
+ // choose — see src/file-activity.ts.
90
+ // activity: {
91
+ // store: fileActivityStore(
92
+ // process.env.CONNECTA_ACTIVITY_FILE || "./.connecta-activity.jsonl",
93
+ // ),
94
+ // deploymentId: "production",
95
+ // },
26
96
  connectors: [
27
97
  api("time", {
28
98
  description: "Time — current timestamp",
99
+ // /credentials lists connectors, not deployments: the page stays hidden
100
+ // until at least one connector declares a slot, vault or no vault. A
101
+ // connector that needs an operator-managed secret adds one here —
102
+ // credential: { label: "API token" },
103
+ // — and reads it inside a handler with `await ctx.credential?.get()`.
104
+ // Telling the time needs no secret, so this one declares nothing.
29
105
  tools: [
30
106
  {
31
107
  name: "get_now",
@@ -40,4 +116,4 @@ const connecta = createConnecta({
40
116
  });
41
117
 
42
118
  listen(connecta, port);
43
- console.log(`connecta listening on http://localhost:${port}/mcp`);
119
+ console.log(`connecta listening on port ${port}; MCP at ${publicUrl}/mcp`);
Binary file
@@ -1 +0,0 @@
1
- {"version":3,"file":"access-tokens.d.ts","sourceRoot":"","sources":["../src/access-tokens.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AA6BrE,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,mBAAmB,CAAC;CAClC;AAyGD;;;;GAIG;AACH,qBAAa,kBAAkB;IAK3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJ1B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAGhB,OAAO,EAAE,SAAS,EACnC,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO;YAgCxB,IAAI;IAKZ,IAAI,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IActC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAoCrE,MAAM,CACV,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAQhC,MAAM,CACV,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAexB,SAAS;CAgBxB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"access-tokens.js","sourceRoot":"","sources":["../src/access-tokens.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../src/activity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAqBzC,MAAM,MAAM,kBAAkB,GAC1B,WAAW,GACX,uBAAuB,GAMvB,YAAY,GACZ,cAAc,CAAC;AAEnB,MAAM,MAAM,eAAe,GACvB,SAAS,GACT,OAAO,GACP,SAAS,GACT,WAAW,CAAC;AAEhB,MAAM,MAAM,aAAa,GACrB,gBAAgB,GAChB,cAAc,GACd,qBAAqB,GACrB,eAAe,GACf,kBAAkB,CAAC;AAEvB,gFAAgF;AAChF,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,GAAG,SAAS,GACvB,aAAa,GAAG,SAAS,CAiB3B;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,CAAC,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,aAAa,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,EAAE,eAAe,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,qBAAqB,EAAE,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,0EAA0E;AAC1E,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC,GAAG;IACrE,KAAK,EAAE,iBAAiB,CAAC;CAC1B,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,iFAAiF;AACjF,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D;AAED,uEAAuE;AACvE,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,OAAO,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC1E;AAED,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,IAAI,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED,iFAAiF;AACjF,qBAAa,0BAA2B,SAAQ,KAAK;IAC1C,IAAI,SAAgC;;CAK9C;AAED,MAAM,MAAM,gBAAgB,GAAG,CAC7B,KAAK,EAAE,aAAa,KACjB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhC,gFAAgF;AAChF,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAC5C,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,qBAAqB,EACnB,aAAa,GACb,UAAU,GACV,SAAS,GACT,QAAQ,GACR,SAAS,GACT,YAAY,GACZ,UAAU,GACV,WAAW,GACX,UAAU,CACb,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,sBAAsB,GAAG,SAAS,EAC3C,KAAK,EAAE,kBAAkB,GACxB,IAAI,CAsCN"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"activity.js","sourceRoot":"","sources":["../src/activity.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"apps-shell.d.ts","sourceRoot":"","sources":["../src/apps-shell.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,uEAAuE;AACvE,eAAO,MAAM,uBAAuB,gCAAgC,CAAC;AAErE,+DAA+D;AAC/D,eAAO,MAAM,oBAAoB,8BAA8B,CAAC;AAEhE;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,gBAAgB,CAAC;AAEjD,gEAAgE;AAChE,eAAO,MAAM,kBAAkB,+BAA+B,CAAC;AAE/D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,qBAAqB,07ZAsUjC,CAAC"}