@koda-sl/baker-bridge 0.110.0-dev.4699b7308 → 0.110.0-dev.6beff6a4b

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 (315) hide show
  1. package/README.md +87 -46
  2. package/dist/broker/baker-api.d.ts +23 -0
  3. package/dist/broker/baker-api.d.ts.map +1 -0
  4. package/dist/broker/baker-api.js +55 -0
  5. package/dist/broker/baker-api.js.map +1 -0
  6. package/dist/broker/broker-client.d.ts +10 -0
  7. package/dist/broker/broker-client.d.ts.map +1 -0
  8. package/dist/broker/broker-client.js +60 -0
  9. package/dist/broker/broker-client.js.map +1 -0
  10. package/dist/broker/broker-process.d.ts +10 -0
  11. package/dist/broker/broker-process.d.ts.map +1 -0
  12. package/dist/broker/broker-process.js +20 -0
  13. package/dist/broker/broker-process.js.map +1 -0
  14. package/dist/broker/broker-process.test.d.ts +2 -0
  15. package/dist/broker/broker-process.test.d.ts.map +1 -0
  16. package/dist/broker/broker-process.test.js +13 -0
  17. package/dist/broker/broker-process.test.js.map +1 -0
  18. package/dist/broker/ca.d.ts +38 -0
  19. package/dist/broker/ca.d.ts.map +1 -0
  20. package/dist/broker/ca.js +80 -0
  21. package/dist/broker/ca.js.map +1 -0
  22. package/dist/broker/ca.test.d.ts +2 -0
  23. package/dist/broker/ca.test.d.ts.map +1 -0
  24. package/dist/broker/ca.test.js +58 -0
  25. package/dist/broker/ca.test.js.map +1 -0
  26. package/dist/broker/credential-cache.d.ts +24 -0
  27. package/dist/broker/credential-cache.d.ts.map +1 -0
  28. package/dist/broker/credential-cache.js +76 -0
  29. package/dist/broker/credential-cache.js.map +1 -0
  30. package/dist/broker/credential-cache.test.d.ts +2 -0
  31. package/dist/broker/credential-cache.test.d.ts.map +1 -0
  32. package/dist/broker/credential-cache.test.js +136 -0
  33. package/dist/broker/credential-cache.test.js.map +1 -0
  34. package/dist/broker/credential-text.d.ts +45 -0
  35. package/dist/broker/credential-text.d.ts.map +1 -0
  36. package/dist/broker/credential-text.js +103 -0
  37. package/dist/broker/credential-text.js.map +1 -0
  38. package/dist/broker/credential-text.test.d.ts +2 -0
  39. package/dist/broker/credential-text.test.d.ts.map +1 -0
  40. package/dist/broker/credential-text.test.js +54 -0
  41. package/dist/broker/credential-text.test.js.map +1 -0
  42. package/dist/broker/env.d.ts +21 -0
  43. package/dist/broker/env.d.ts.map +1 -0
  44. package/dist/broker/env.js +20 -0
  45. package/dist/broker/env.js.map +1 -0
  46. package/dist/broker/main.d.ts +3 -0
  47. package/dist/broker/main.d.ts.map +1 -0
  48. package/dist/broker/main.js +57 -0
  49. package/dist/broker/main.js.map +1 -0
  50. package/dist/broker/proxy.d.ts +24 -0
  51. package/dist/broker/proxy.d.ts.map +1 -0
  52. package/dist/broker/proxy.integration.test.d.ts +2 -0
  53. package/dist/broker/proxy.integration.test.d.ts.map +1 -0
  54. package/dist/broker/proxy.integration.test.js +197 -0
  55. package/dist/broker/proxy.integration.test.js.map +1 -0
  56. package/dist/broker/proxy.js +147 -0
  57. package/dist/broker/proxy.js.map +1 -0
  58. package/dist/broker/rewrite.d.ts +44 -0
  59. package/dist/broker/rewrite.d.ts.map +1 -0
  60. package/dist/broker/rewrite.js +291 -0
  61. package/dist/broker/rewrite.js.map +1 -0
  62. package/dist/broker/rewrite.test.d.ts +2 -0
  63. package/dist/broker/rewrite.test.d.ts.map +1 -0
  64. package/dist/broker/rewrite.test.js +171 -0
  65. package/dist/broker/rewrite.test.js.map +1 -0
  66. package/dist/broker/socket-service.d.ts +18 -0
  67. package/dist/broker/socket-service.d.ts.map +1 -0
  68. package/dist/broker/socket-service.js +113 -0
  69. package/dist/broker/socket-service.js.map +1 -0
  70. package/dist/broker/socket-service.test.d.ts +2 -0
  71. package/dist/broker/socket-service.test.d.ts.map +1 -0
  72. package/dist/broker/socket-service.test.js +80 -0
  73. package/dist/broker/socket-service.test.js.map +1 -0
  74. package/dist/broker/supervisor-main.d.ts +3 -0
  75. package/dist/broker/supervisor-main.d.ts.map +1 -0
  76. package/dist/broker/supervisor-main.js +70 -0
  77. package/dist/broker/supervisor-main.js.map +1 -0
  78. package/dist/broker/supervisor.d.ts +25 -0
  79. package/dist/broker/supervisor.d.ts.map +1 -0
  80. package/dist/broker/supervisor.js +88 -0
  81. package/dist/broker/supervisor.js.map +1 -0
  82. package/dist/broker/supervisor.test.d.ts +2 -0
  83. package/dist/broker/supervisor.test.d.ts.map +1 -0
  84. package/dist/broker/supervisor.test.js +161 -0
  85. package/dist/broker/supervisor.test.js.map +1 -0
  86. package/dist/broker/token-bucket.d.ts +9 -0
  87. package/dist/broker/token-bucket.d.ts.map +1 -0
  88. package/dist/broker/token-bucket.js +18 -0
  89. package/dist/broker/token-bucket.js.map +1 -0
  90. package/dist/broker/usage-reporter.d.ts +18 -0
  91. package/dist/broker/usage-reporter.d.ts.map +1 -0
  92. package/dist/broker/usage-reporter.js +31 -0
  93. package/dist/broker/usage-reporter.js.map +1 -0
  94. package/dist/broker/usage-reporter.test.d.ts +2 -0
  95. package/dist/broker/usage-reporter.test.d.ts.map +1 -0
  96. package/dist/broker/usage-reporter.test.js +20 -0
  97. package/dist/broker/usage-reporter.test.js.map +1 -0
  98. package/dist/cli.d.ts.map +1 -1
  99. package/dist/cli.js +2 -0
  100. package/dist/cli.js.map +1 -1
  101. package/dist/hono/agent-session.d.ts +3 -0
  102. package/dist/hono/agent-session.d.ts.map +1 -1
  103. package/dist/hono/agent-session.js +15 -0
  104. package/dist/hono/agent-session.js.map +1 -1
  105. package/dist/hono/agent-tasks.js +4 -4
  106. package/dist/hono/agent-tasks.js.map +1 -1
  107. package/dist/hono/agent.d.ts +2 -0
  108. package/dist/hono/agent.d.ts.map +1 -1
  109. package/dist/hono/agent.js +11 -2
  110. package/dist/hono/agent.js.map +1 -1
  111. package/dist/hono/agent.test.js +8 -2
  112. package/dist/hono/agent.test.js.map +1 -1
  113. package/dist/hono/avatar-accent.d.ts +23 -5
  114. package/dist/hono/avatar-accent.d.ts.map +1 -1
  115. package/dist/hono/avatar-accent.js +54 -63
  116. package/dist/hono/avatar-accent.js.map +1 -1
  117. package/dist/hono/avatar-accent.test.js +64 -35
  118. package/dist/hono/avatar-accent.test.js.map +1 -1
  119. package/dist/hono/avatar-casting.d.ts +1 -0
  120. package/dist/hono/avatar-casting.d.ts.map +1 -1
  121. package/dist/hono/avatar-casting.js +18 -4
  122. package/dist/hono/avatar-casting.js.map +1 -1
  123. package/dist/hono/avatar-casting.test.js +5 -0
  124. package/dist/hono/avatar-casting.test.js.map +1 -1
  125. package/dist/hono/avatar-face-question.d.ts +23 -6
  126. package/dist/hono/avatar-face-question.d.ts.map +1 -1
  127. package/dist/hono/avatar-face-question.js +48 -59
  128. package/dist/hono/avatar-face-question.js.map +1 -1
  129. package/dist/hono/avatar-face-question.test.js +46 -101
  130. package/dist/hono/avatar-face-question.test.js.map +1 -1
  131. package/dist/hono/baker-ui-tool-schemas.test.js +30 -4
  132. package/dist/hono/baker-ui-tool-schemas.test.js.map +1 -1
  133. package/dist/hono/blocking-card.d.ts +12 -0
  134. package/dist/hono/blocking-card.d.ts.map +1 -0
  135. package/dist/hono/blocking-card.js +12 -0
  136. package/dist/hono/blocking-card.js.map +1 -0
  137. package/dist/hono/bridge-job.d.ts +48 -2
  138. package/dist/hono/bridge-job.d.ts.map +1 -1
  139. package/dist/hono/bridge-job.js +205 -37
  140. package/dist/hono/bridge-job.js.map +1 -1
  141. package/dist/hono/bridge-job.test.js +344 -20
  142. package/dist/hono/bridge-job.test.js.map +1 -1
  143. package/dist/hono/check-content.d.ts +49 -0
  144. package/dist/hono/check-content.d.ts.map +1 -0
  145. package/dist/hono/check-content.js +182 -0
  146. package/dist/hono/check-content.js.map +1 -0
  147. package/dist/hono/check-content.test.d.ts +2 -0
  148. package/dist/hono/check-content.test.d.ts.map +1 -0
  149. package/dist/hono/check-content.test.js +87 -0
  150. package/dist/hono/check-content.test.js.map +1 -0
  151. package/dist/hono/connection-input.d.ts +177 -12
  152. package/dist/hono/connection-input.d.ts.map +1 -1
  153. package/dist/hono/connection-input.js +167 -14
  154. package/dist/hono/connection-input.js.map +1 -1
  155. package/dist/hono/connection-input.test.js +112 -10
  156. package/dist/hono/connection-input.test.js.map +1 -1
  157. package/dist/hono/convex.d.ts +8 -0
  158. package/dist/hono/convex.d.ts.map +1 -1
  159. package/dist/hono/convex.js +8 -0
  160. package/dist/hono/convex.js.map +1 -1
  161. package/dist/hono/convex.test.js +4 -1
  162. package/dist/hono/convex.test.js.map +1 -1
  163. package/dist/hono/credential-input.d.ts +39 -0
  164. package/dist/hono/credential-input.d.ts.map +1 -0
  165. package/dist/hono/credential-input.js +78 -0
  166. package/dist/hono/credential-input.js.map +1 -0
  167. package/dist/hono/credential-scrub.d.ts +42 -0
  168. package/dist/hono/credential-scrub.d.ts.map +1 -0
  169. package/dist/hono/credential-scrub.js +173 -0
  170. package/dist/hono/credential-scrub.js.map +1 -0
  171. package/dist/hono/credential-scrub.test.d.ts +2 -0
  172. package/dist/hono/credential-scrub.test.d.ts.map +1 -0
  173. package/dist/hono/credential-scrub.test.js +130 -0
  174. package/dist/hono/credential-scrub.test.js.map +1 -0
  175. package/dist/hono/env.d.ts +1 -0
  176. package/dist/hono/env.d.ts.map +1 -1
  177. package/dist/hono/env.js +2 -0
  178. package/dist/hono/env.js.map +1 -1
  179. package/dist/hono/flow-crypto.d.ts +2 -1
  180. package/dist/hono/flow-crypto.d.ts.map +1 -1
  181. package/dist/hono/flow-crypto.js +50 -26
  182. package/dist/hono/flow-crypto.js.map +1 -1
  183. package/dist/hono/flow-crypto.test.js +32 -0
  184. package/dist/hono/flow-crypto.test.js.map +1 -1
  185. package/dist/hono/flow-input-card-fields.test.d.ts +10 -0
  186. package/dist/hono/flow-input-card-fields.test.d.ts.map +1 -0
  187. package/dist/hono/flow-input-card-fields.test.js +26 -0
  188. package/dist/hono/flow-input-card-fields.test.js.map +1 -0
  189. package/dist/hono/flow-input-fields.test.js +1 -1
  190. package/dist/hono/flow-input-fields.test.js.map +1 -1
  191. package/dist/hono/flow-input.d.ts +23 -2
  192. package/dist/hono/flow-input.d.ts.map +1 -1
  193. package/dist/hono/flow-input.js +64 -14
  194. package/dist/hono/flow-input.js.map +1 -1
  195. package/dist/hono/flow-input.test.js +86 -11
  196. package/dist/hono/flow-input.test.js.map +1 -1
  197. package/dist/hono/jev.d.ts +16 -0
  198. package/dist/hono/jev.d.ts.map +1 -0
  199. package/dist/hono/jev.js +60 -0
  200. package/dist/hono/jev.js.map +1 -0
  201. package/dist/hono/jev.test.d.ts +2 -0
  202. package/dist/hono/jev.test.d.ts.map +1 -0
  203. package/dist/hono/jev.test.js +15 -0
  204. package/dist/hono/jev.test.js.map +1 -0
  205. package/dist/hono/knowledge-content.d.ts.map +1 -1
  206. package/dist/hono/knowledge-content.js +4 -2
  207. package/dist/hono/knowledge-content.js.map +1 -1
  208. package/dist/hono/knowledge-content.test.js +6 -5
  209. package/dist/hono/knowledge-content.test.js.map +1 -1
  210. package/dist/hono/mcp-servers.d.ts +8 -1
  211. package/dist/hono/mcp-servers.d.ts.map +1 -1
  212. package/dist/hono/mcp-servers.js +17 -6
  213. package/dist/hono/mcp-servers.js.map +1 -1
  214. package/dist/hono/mcp-servers.test.js +25 -0
  215. package/dist/hono/mcp-servers.test.js.map +1 -1
  216. package/dist/hono/model-capabilities.d.ts.map +1 -1
  217. package/dist/hono/model-capabilities.js +20 -9
  218. package/dist/hono/model-capabilities.js.map +1 -1
  219. package/dist/hono/model-capabilities.test.js +16 -8
  220. package/dist/hono/model-capabilities.test.js.map +1 -1
  221. package/dist/hono/oom-priority.agent.test.d.ts +2 -0
  222. package/dist/hono/oom-priority.agent.test.d.ts.map +1 -0
  223. package/dist/hono/oom-priority.agent.test.js +138 -0
  224. package/dist/hono/oom-priority.agent.test.js.map +1 -0
  225. package/dist/hono/oom-priority.d.ts +39 -0
  226. package/dist/hono/oom-priority.d.ts.map +1 -0
  227. package/dist/hono/oom-priority.js +138 -0
  228. package/dist/hono/oom-priority.js.map +1 -0
  229. package/dist/hono/oom-priority.test.d.ts +2 -0
  230. package/dist/hono/oom-priority.test.d.ts.map +1 -0
  231. package/dist/hono/oom-priority.test.js +52 -0
  232. package/dist/hono/oom-priority.test.js.map +1 -0
  233. package/dist/hono/openrouter-session.d.ts.map +1 -1
  234. package/dist/hono/openrouter-session.js +12 -1
  235. package/dist/hono/openrouter-session.js.map +1 -1
  236. package/dist/hono/openrouter-session.test.js +9 -3
  237. package/dist/hono/openrouter-session.test.js.map +1 -1
  238. package/dist/hono/prompt-context.d.ts +8 -1
  239. package/dist/hono/prompt-context.d.ts.map +1 -1
  240. package/dist/hono/prompt-context.js +45 -7
  241. package/dist/hono/prompt-context.js.map +1 -1
  242. package/dist/hono/prompt-context.test.js +32 -1
  243. package/dist/hono/prompt-context.test.js.map +1 -1
  244. package/dist/hono/publish-recovery.d.ts +1 -1
  245. package/dist/hono/publish-recovery.d.ts.map +1 -1
  246. package/dist/hono/publish-recovery.js +9 -6
  247. package/dist/hono/publish-recovery.js.map +1 -1
  248. package/dist/hono/publish-recovery.test.js +11 -2
  249. package/dist/hono/publish-recovery.test.js.map +1 -1
  250. package/dist/hono/relay.d.ts +10 -1
  251. package/dist/hono/relay.d.ts.map +1 -1
  252. package/dist/hono/relay.js +6 -0
  253. package/dist/hono/relay.js.map +1 -1
  254. package/dist/hono/sandbox-content.d.ts +2 -0
  255. package/dist/hono/sandbox-content.d.ts.map +1 -1
  256. package/dist/hono/sandbox-content.js +8 -4
  257. package/dist/hono/sandbox-content.js.map +1 -1
  258. package/dist/hono/sandbox-content.test.js +20 -1
  259. package/dist/hono/sandbox-content.test.js.map +1 -1
  260. package/dist/hono/server.d.ts.map +1 -1
  261. package/dist/hono/server.js +32 -0
  262. package/dist/hono/server.js.map +1 -1
  263. package/dist/hono/server.test.js +21 -1
  264. package/dist/hono/server.test.js.map +1 -1
  265. package/dist/hono/session-continuity.integration.test.js +10 -1
  266. package/dist/hono/session-continuity.integration.test.js.map +1 -1
  267. package/dist/hono/tag-fields.d.ts.map +1 -1
  268. package/dist/hono/tag-fields.js +2 -0
  269. package/dist/hono/tag-fields.js.map +1 -1
  270. package/dist/hono/tag-input.d.ts +125 -3
  271. package/dist/hono/tag-input.d.ts.map +1 -1
  272. package/dist/hono/tag-input.js +27 -17
  273. package/dist/hono/tag-input.js.map +1 -1
  274. package/dist/hono/tag-input.test.js +19 -1
  275. package/dist/hono/tag-input.test.js.map +1 -1
  276. package/dist/hono/tool-mentions.d.ts.map +1 -1
  277. package/dist/hono/tool-mentions.js +1 -0
  278. package/dist/hono/tool-mentions.js.map +1 -1
  279. package/dist/hono/tool-mentions.test.js +6 -2
  280. package/dist/hono/tool-mentions.test.js.map +1 -1
  281. package/dist/hono/types.d.ts +8 -0
  282. package/dist/hono/types.d.ts.map +1 -1
  283. package/dist/hono/workspace-script.d.ts +10 -0
  284. package/dist/hono/workspace-script.d.ts.map +1 -0
  285. package/dist/hono/workspace-script.js +19 -0
  286. package/dist/hono/workspace-script.js.map +1 -0
  287. package/dist/hono/workspace-settle.d.ts +1 -1
  288. package/dist/hono/workspace-settle.d.ts.map +1 -1
  289. package/dist/hono/workspace-settle.js +12 -8
  290. package/dist/hono/workspace-settle.js.map +1 -1
  291. package/dist/review/digest.d.ts +8 -1
  292. package/dist/review/digest.d.ts.map +1 -1
  293. package/dist/review/digest.js +10 -43
  294. package/dist/review/digest.js.map +1 -1
  295. package/dist/review/digest.test.js +11 -6
  296. package/dist/review/digest.test.js.map +1 -1
  297. package/dist/review/evidence-block.js +1 -1
  298. package/dist/review/evidence-block.js.map +1 -1
  299. package/dist/review/evidence-block.test.js +0 -10
  300. package/dist/review/evidence-block.test.js.map +1 -1
  301. package/dist/review/shell-policy.d.ts +6 -0
  302. package/dist/review/shell-policy.d.ts.map +1 -1
  303. package/dist/review/shell-policy.js +240 -72
  304. package/dist/review/shell-policy.js.map +1 -1
  305. package/dist/review/shell-policy.test.js +114 -0
  306. package/dist/review/shell-policy.test.js.map +1 -1
  307. package/package.json +9 -5
  308. package/dist/hono/latitude-telemetry.d.ts +0 -17
  309. package/dist/hono/latitude-telemetry.d.ts.map +0 -1
  310. package/dist/hono/latitude-telemetry.js +0 -52
  311. package/dist/hono/latitude-telemetry.js.map +0 -1
  312. package/dist/hono/latitude-telemetry.test.d.ts +0 -2
  313. package/dist/hono/latitude-telemetry.test.d.ts.map +0 -1
  314. package/dist/hono/latitude-telemetry.test.js +0 -18
  315. package/dist/hono/latitude-telemetry.test.js.map +0 -1
@@ -0,0 +1,49 @@
1
+ /**
2
+ * A check, as the Session's review shows it: every file of its folder beside
3
+ * the version on main, plus the shared sdk modules its scripts import.
4
+ *
5
+ * A check is `__tooling__/checks/<scope>/<slug>/`. For a company's own check
6
+ * (`extensions`) that is the whole folder. For a base check only `waivers.json`
7
+ * is the company's — the rest is the platform's and cannot change in a Session
8
+ * — so only that file is listed, with the check's manifest and README for
9
+ * context.
10
+ */
11
+ export type CheckFileStatus = "added" | "modified" | "deleted" | "unchanged";
12
+ export type CheckFile = {
13
+ /** Relative to the check's folder. */
14
+ path: string;
15
+ /** Null when deleted, binary or too large to show. */
16
+ content: string | null;
17
+ /** The file on main; null when it did not exist there (or is binary). */
18
+ baselineContent: string | null;
19
+ status: CheckFileStatus;
20
+ };
21
+ export type CheckContent = {
22
+ slug: string;
23
+ scope: "extensions" | "base";
24
+ manifest: unknown;
25
+ readme: string | null;
26
+ files: CheckFile[];
27
+ /** sdk modules the check's scripts import, as they are now. */
28
+ related: Array<{
29
+ path: string;
30
+ content: string;
31
+ }>;
32
+ };
33
+ type CheckError = {
34
+ kind: "invalid-path";
35
+ value: string;
36
+ } | {
37
+ kind: "not-found";
38
+ path: string;
39
+ };
40
+ type Result<T, E> = {
41
+ ok: true;
42
+ value: T;
43
+ } | {
44
+ ok: false;
45
+ error: E;
46
+ };
47
+ export declare function readCheck(projectRoot: string, slug: string, baseBranch: string): Promise<Result<CheckContent, CheckError>>;
48
+ export {};
49
+ //# sourceMappingURL=check-content.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-content.d.ts","sourceRoot":"","sources":["../../src/hono/check-content.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAgBH,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;AAC7E,MAAM,MAAM,SAAS,GAAG;IACtB,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,yEAAyE;IACzE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,eAAe,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,YAAY,GAAG,MAAM,CAAC;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,+DAA+D;IAC/D,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnD,CAAC;AACF,KAAK,UAAU,GAAG;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAChG,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC;AA0IrE,wBAAsB,SAAS,CAC7B,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CA6B3C"}
@@ -0,0 +1,182 @@
1
+ /**
2
+ * A check, as the Session's review shows it: every file of its folder beside
3
+ * the version on main, plus the shared sdk modules its scripts import.
4
+ *
5
+ * A check is `__tooling__/checks/<scope>/<slug>/`. For a company's own check
6
+ * (`extensions`) that is the whole folder. For a base check only `waivers.json`
7
+ * is the company's — the rest is the platform's and cannot change in a Session
8
+ * — so only that file is listed, with the check's manifest and README for
9
+ * context.
10
+ */
11
+ import { execFile } from "node:child_process";
12
+ import { readdir, readFile, stat } from "node:fs/promises";
13
+ import { join, posix } from "node:path";
14
+ import { promisify } from "node:util";
15
+ const execFileAsync = promisify(execFile);
16
+ const CHECKS_DIR = "__tooling__/checks";
17
+ const SDK_DIR = `${CHECKS_DIR}/sdk`;
18
+ const SLUG = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
19
+ /** Past this a file is listed without its content — nobody reviews a generated blob line by line. */
20
+ const MAX_TEXT_BYTES = 256 * 1024;
21
+ const SKIP_DIRS = new Set(["node_modules", ".cache"]);
22
+ async function git(args, cwd) {
23
+ const { stdout } = await execFileAsync("git", args, { cwd, encoding: "utf8", maxBuffer: 20 * 1024 * 1024 });
24
+ return stdout;
25
+ }
26
+ async function mergeBase(projectRoot, baseBranch) {
27
+ for (const ref of baseBranch.startsWith("origin/") ? [baseBranch] : [baseBranch, `origin/${baseBranch}`]) {
28
+ try {
29
+ return (await git(["merge-base", "HEAD", ref], projectRoot)).trim() || null;
30
+ }
31
+ catch {
32
+ // Try the next conventional base ref.
33
+ }
34
+ }
35
+ return null;
36
+ }
37
+ async function filesOnDisk(root, dir, prefix = "") {
38
+ let entries;
39
+ try {
40
+ entries = await readdir(join(root, dir), { withFileTypes: true });
41
+ }
42
+ catch {
43
+ return [];
44
+ }
45
+ const out = [];
46
+ for (const entry of entries) {
47
+ const rel = prefix ? `${prefix}/${entry.name}` : entry.name;
48
+ if (entry.isDirectory()) {
49
+ if (!SKIP_DIRS.has(entry.name))
50
+ out.push(...(await filesOnDisk(root, `${dir}/${entry.name}`, rel)));
51
+ }
52
+ else
53
+ out.push(rel);
54
+ }
55
+ return out;
56
+ }
57
+ async function filesOnBase(projectRoot, base, dir) {
58
+ if (!base)
59
+ return [];
60
+ try {
61
+ const listed = await git(["ls-tree", "-r", "--name-only", base, "--", `${dir}/`], projectRoot);
62
+ return listed
63
+ .split("\n")
64
+ .filter(Boolean)
65
+ .map((path) => path.slice(dir.length + 1));
66
+ }
67
+ catch {
68
+ return [];
69
+ }
70
+ }
71
+ function asText(bytes) {
72
+ if (bytes.length > MAX_TEXT_BYTES || bytes.includes(0))
73
+ return null;
74
+ return bytes.toString("utf8");
75
+ }
76
+ async function readWorking(projectRoot, path) {
77
+ try {
78
+ if (!(await stat(join(projectRoot, path))).isFile())
79
+ return null;
80
+ return asText(await readFile(join(projectRoot, path)));
81
+ }
82
+ catch {
83
+ return null;
84
+ }
85
+ }
86
+ async function readBase(projectRoot, base, path) {
87
+ if (!base)
88
+ return null;
89
+ try {
90
+ const { stdout } = await execFileAsync("git", ["show", `${base}:${path}`], {
91
+ cwd: projectRoot,
92
+ encoding: "buffer",
93
+ maxBuffer: 20 * 1024 * 1024,
94
+ });
95
+ return asText(stdout);
96
+ }
97
+ catch {
98
+ return null;
99
+ }
100
+ }
101
+ const IMPORT = /(?:from\s*|\bimport\s*\(?\s*)["'](\.{1,2}\/[^"']+)["']/g;
102
+ /** sdk modules the given sources import, resolved from the check's folder. */
103
+ function sdkImports(dir, files) {
104
+ const found = new Set();
105
+ for (const file of files) {
106
+ if (!file.content || !/\.(mjs|js|ts|cjs)$/.test(file.path))
107
+ continue;
108
+ for (const [, spec] of file.content.matchAll(IMPORT)) {
109
+ const target = posix.normalize(posix.join(dir, posix.dirname(file.path), spec ?? ""));
110
+ if (target.startsWith(`${SDK_DIR}/`))
111
+ found.add(target);
112
+ }
113
+ }
114
+ return [...found].sort();
115
+ }
116
+ function parseManifest(text) {
117
+ if (!text)
118
+ return null;
119
+ try {
120
+ return JSON.parse(text);
121
+ }
122
+ catch {
123
+ return null;
124
+ }
125
+ }
126
+ function fileStatus(onDisk, onBase, content, baseline) {
127
+ if (!onDisk)
128
+ return "deleted";
129
+ if (!onBase)
130
+ return "added";
131
+ return content === baseline ? "unchanged" : "modified";
132
+ }
133
+ async function readCheckFiles(projectRoot, base, dir, scope, onDisk, onBase) {
134
+ const listed = [...new Set([...onDisk, ...onBase])]
135
+ .filter((path) => scope === "extensions" || path === "waivers.json")
136
+ .sort();
137
+ const files = [];
138
+ for (const path of listed) {
139
+ const inWorktree = onDisk.includes(path);
140
+ const inBase = onBase.includes(path);
141
+ const content = inWorktree ? await readWorking(projectRoot, `${dir}/${path}`) : null;
142
+ const baselineContent = inBase ? await readBase(projectRoot, base, `${dir}/${path}`) : null;
143
+ files.push({ path, content, baselineContent, status: fileStatus(inWorktree, inBase, content, baselineContent) });
144
+ }
145
+ return files;
146
+ }
147
+ /** The current file, else the one on main — for a check the Session deleted. */
148
+ async function readEither(projectRoot, base, path) {
149
+ return (await readWorking(projectRoot, path)) ?? (await readBase(projectRoot, base, path));
150
+ }
151
+ export async function readCheck(projectRoot, slug, baseBranch) {
152
+ if (!SLUG.test(slug))
153
+ return { ok: false, error: { kind: "invalid-path", value: slug } };
154
+ const base = await mergeBase(projectRoot, baseBranch);
155
+ for (const scope of ["extensions", "base"]) {
156
+ const dir = `${CHECKS_DIR}/${scope}/${slug}`;
157
+ const onDisk = await filesOnDisk(projectRoot, dir);
158
+ const onBase = await filesOnBase(projectRoot, base, dir);
159
+ if (onDisk.length === 0 && onBase.length === 0)
160
+ continue;
161
+ const files = await readCheckFiles(projectRoot, base, dir, scope, onDisk, onBase);
162
+ const related = [];
163
+ for (const path of sdkImports(dir, files)) {
164
+ const content = await readWorking(projectRoot, path);
165
+ if (content !== null)
166
+ related.push({ path, content });
167
+ }
168
+ return {
169
+ ok: true,
170
+ value: {
171
+ slug,
172
+ scope,
173
+ manifest: parseManifest(await readEither(projectRoot, base, `${dir}/check.json`)),
174
+ readme: await readEither(projectRoot, base, `${dir}/README.md`),
175
+ files,
176
+ related,
177
+ },
178
+ };
179
+ }
180
+ return { ok: false, error: { kind: "not-found", path: `${CHECKS_DIR}/extensions/${slug}` } };
181
+ }
182
+ //# sourceMappingURL=check-content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-content.js","sourceRoot":"","sources":["../../src/hono/check-content.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=check-content.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-content.test.d.ts","sourceRoot":"","sources":["../../src/hono/check-content.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,87 @@
1
+ import { execFile } from "node:child_process";
2
+ import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises";
3
+ import { tmpdir } from "node:os";
4
+ import { dirname, join } from "node:path";
5
+ import { promisify } from "node:util";
6
+ import { afterEach, beforeEach, describe, expect, it } from "vitest";
7
+ import { readCheck } from "./check-content.js";
8
+ const execFileAsync = promisify(execFile);
9
+ let dir;
10
+ async function git(...args) {
11
+ await execFileAsync("git", args, { cwd: dir });
12
+ }
13
+ async function write(path, content) {
14
+ await mkdir(dirname(join(dir, path)), { recursive: true });
15
+ await writeFile(join(dir, path), content, "utf-8");
16
+ }
17
+ const EXT = "__tooling__/checks/extensions/guard-copy";
18
+ beforeEach(async () => {
19
+ dir = await mkdtemp(join(tmpdir(), "baker-check-content-"));
20
+ await git("init", "-b", "main");
21
+ await git("config", "user.email", "test@example.com");
22
+ await git("config", "user.name", "Test User");
23
+ });
24
+ afterEach(async () => {
25
+ await rm(dir, { recursive: true, force: true });
26
+ });
27
+ describe("readCheck", () => {
28
+ it("returns every file of a company check with its version on main, and what it uses from the sdk", async () => {
29
+ await write("__tooling__/checks/sdk/guard-utils.mjs", "export function allow() {}\n");
30
+ await write(`${EXT}/check.json`, JSON.stringify({ name: "guard-copy", summary: "Old summary." }));
31
+ await write(`${EXT}/words.mjs`, "export const words = [];\n");
32
+ await git("add", ".");
33
+ await git("commit", "-m", "baseline");
34
+ await git("checkout", "-b", "chat/test");
35
+ await write(`${EXT}/check.json`, JSON.stringify({ name: "guard-copy", summary: "Refuses competitor names." }));
36
+ await write(`${EXT}/guard-copy.mjs`, 'import { allow } from "../../sdk/guard-utils.mjs";\nallow();\n');
37
+ await write(`${EXT}/README.md`, "# guard-copy\n");
38
+ await rm(join(dir, EXT, "words.mjs"));
39
+ const result = await readCheck(dir, "guard-copy", "main");
40
+ expect(result).toMatchObject({
41
+ ok: true,
42
+ value: {
43
+ slug: "guard-copy",
44
+ scope: "extensions",
45
+ manifest: { summary: "Refuses competitor names." },
46
+ readme: "# guard-copy\n",
47
+ related: [{ path: "__tooling__/checks/sdk/guard-utils.mjs", content: "export function allow() {}\n" }],
48
+ },
49
+ });
50
+ const files = result.ok ? result.value.files : [];
51
+ expect(files.map((f) => [f.path, f.status])).toEqual([
52
+ ["README.md", "added"],
53
+ ["check.json", "modified"],
54
+ ["guard-copy.mjs", "added"],
55
+ ["words.mjs", "deleted"],
56
+ ]);
57
+ expect(files.find((f) => f.path === "check.json")?.baselineContent).toContain("Old summary.");
58
+ expect(files.find((f) => f.path === "words.mjs")).toMatchObject({
59
+ content: null,
60
+ baselineContent: "export const words = [];\n",
61
+ });
62
+ });
63
+ it("shows only the waivers of a base check, the one file there that is the company's", async () => {
64
+ await write("__tooling__/checks/base/a11y-audit/check.json", JSON.stringify({ name: "a11y-audit", summary: "WCAG." }));
65
+ await write("__tooling__/checks/base/a11y-audit/a11y-audit.mjs", "// base code\n");
66
+ await write("__tooling__/checks/base/a11y-audit/waivers.json", "[]\n");
67
+ await git("add", ".");
68
+ await git("commit", "-m", "baseline");
69
+ await write("__tooling__/checks/base/a11y-audit/waivers.json", '[{"path":"dist/x/index.html"}]\n');
70
+ const result = await readCheck(dir, "a11y-audit", "main");
71
+ expect(result.ok && result.value.scope).toBe("base");
72
+ expect(result.ok && result.value.files.map((f) => [f.path, f.status])).toEqual([["waivers.json", "modified"]]);
73
+ });
74
+ it("refuses a slug that could leave the checks folder", async () => {
75
+ await expect(readCheck(dir, "../../etc", "main")).resolves.toEqual({
76
+ ok: false,
77
+ error: { kind: "invalid-path", value: "../../etc" },
78
+ });
79
+ });
80
+ it("says a check that exists nowhere is not found", async () => {
81
+ await expect(readCheck(dir, "nothing-here", "main")).resolves.toMatchObject({
82
+ ok: false,
83
+ error: { kind: "not-found" },
84
+ });
85
+ });
86
+ });
87
+ //# sourceMappingURL=check-content.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-content.test.js","sourceRoot":"","sources":["../../src/hono/check-content.test.ts"],"names":[],"mappings":"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"}
@@ -12,11 +12,13 @@ export declare const CONNECTION_INPUT_TOOL_NAME = "mcp__baker_ui__request_connec
12
12
  * backend: a platform live in one and missing from another is a door that
13
13
  * looks open from one side only.
14
14
  */
15
- export declare const CONNECTION_PLATFORMS: readonly ["google-ads", "linkedin", "meta", "google-analytics", "google-search-console", "google-tag-manager", "x-ads", "hubspot", "google-drive", "highlevel", "pipedrive", "calendly", "savvycal"];
15
+ export declare const CONNECTION_PLATFORMS: readonly ["google-ads", "linkedin", "meta", "google-analytics", "google-search-console", "google-tag-manager", "x-ads", "hubspot", "google-drive", "highlevel", "pipedrive", "calendly", "savvycal", "activecampaign", "chatgpt-ads", "shopify"];
16
16
  export type ConnectionPlatform = (typeof CONNECTION_PLATFORMS)[number];
17
- declare const connectionRequestShape: z.ZodObject<{
17
+ declare const connectionRequestShape: z.ZodUnion<readonly [z.ZodObject<{
18
18
  platform: z.ZodEnum<{
19
+ activecampaign: "activecampaign";
19
20
  calendly: "calendly";
21
+ "chatgpt-ads": "chatgpt-ads";
20
22
  "google-ads": "google-ads";
21
23
  "google-analytics": "google-analytics";
22
24
  "google-drive": "google-drive";
@@ -28,14 +30,40 @@ declare const connectionRequestShape: z.ZodObject<{
28
30
  meta: "meta";
29
31
  pipedrive: "pipedrive";
30
32
  savvycal: "savvycal";
33
+ shopify: "shopify";
31
34
  "x-ads": "x-ads";
32
35
  }>;
33
36
  reason: z.ZodString;
34
- }, z.core.$strip>;
37
+ choose: z.ZodOptional<z.ZodLiteral<"media-folder">>;
38
+ pick: z.ZodOptional<z.ZodBoolean>;
39
+ }, z.core.$strip>, z.ZodObject<{
40
+ app: z.ZodString;
41
+ reason: z.ZodString;
42
+ }, z.core.$strip>, z.ZodObject<{
43
+ server: z.ZodObject<{
44
+ name: z.ZodString;
45
+ url: z.ZodString;
46
+ auth: z.ZodOptional<z.ZodEnum<{
47
+ key: "key";
48
+ none: "none";
49
+ "sign-in": "sign-in";
50
+ }>>;
51
+ keyHeader: z.ZodOptional<z.ZodString>;
52
+ scope: z.ZodOptional<z.ZodEnum<{
53
+ company: "company";
54
+ org: "org";
55
+ user: "user";
56
+ user_org: "user_org";
57
+ }>>;
58
+ }, z.core.$strip>;
59
+ reason: z.ZodString;
60
+ }, z.core.$strip>]>;
35
61
  export declare const connectionInputToolShape: {
36
- connections: z.ZodArray<z.ZodObject<{
62
+ connections: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
37
63
  platform: z.ZodEnum<{
64
+ activecampaign: "activecampaign";
38
65
  calendly: "calendly";
66
+ "chatgpt-ads": "chatgpt-ads";
39
67
  "google-ads": "google-ads";
40
68
  "google-analytics": "google-analytics";
41
69
  "google-drive": "google-drive";
@@ -47,16 +75,42 @@ export declare const connectionInputToolShape: {
47
75
  meta: "meta";
48
76
  pipedrive: "pipedrive";
49
77
  savvycal: "savvycal";
78
+ shopify: "shopify";
50
79
  "x-ads": "x-ads";
51
80
  }>;
52
81
  reason: z.ZodString;
53
- }, z.core.$strip>>;
82
+ choose: z.ZodOptional<z.ZodLiteral<"media-folder">>;
83
+ pick: z.ZodOptional<z.ZodBoolean>;
84
+ }, z.core.$strip>, z.ZodObject<{
85
+ app: z.ZodString;
86
+ reason: z.ZodString;
87
+ }, z.core.$strip>, z.ZodObject<{
88
+ server: z.ZodObject<{
89
+ name: z.ZodString;
90
+ url: z.ZodString;
91
+ auth: z.ZodOptional<z.ZodEnum<{
92
+ key: "key";
93
+ none: "none";
94
+ "sign-in": "sign-in";
95
+ }>>;
96
+ keyHeader: z.ZodOptional<z.ZodString>;
97
+ scope: z.ZodOptional<z.ZodEnum<{
98
+ company: "company";
99
+ org: "org";
100
+ user: "user";
101
+ user_org: "user_org";
102
+ }>>;
103
+ }, z.core.$strip>;
104
+ reason: z.ZodString;
105
+ }, z.core.$strip>]>>;
54
106
  resolution: z.ZodOptional<z.ZodObject<{}, z.core.$catchall<z.ZodUnknown>>>;
55
107
  };
56
- export declare const connectionInputResultSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
108
+ export declare const connectionInputResultSchema: z.ZodUnion<readonly [z.ZodObject<{
57
109
  status: z.ZodLiteral<"connected">;
58
110
  platform: z.ZodEnum<{
111
+ activecampaign: "activecampaign";
59
112
  calendly: "calendly";
113
+ "chatgpt-ads": "chatgpt-ads";
60
114
  "google-ads": "google-ads";
61
115
  "google-analytics": "google-analytics";
62
116
  "google-drive": "google-drive";
@@ -68,15 +122,19 @@ export declare const connectionInputResultSchema: z.ZodDiscriminatedUnion<[z.Zod
68
122
  meta: "meta";
69
123
  pipedrive: "pipedrive";
70
124
  savvycal: "savvycal";
125
+ shopify: "shopify";
71
126
  "x-ads": "x-ads";
72
127
  }>;
73
128
  accountLabel: z.ZodOptional<z.ZodString>;
74
129
  selected: z.ZodArray<z.ZodString>;
75
130
  cannotRead: z.ZodOptional<z.ZodArray<z.ZodString>>;
131
+ mediaSourceKey: z.ZodOptional<z.ZodString>;
76
132
  }, z.core.$strip>, z.ZodObject<{
77
133
  status: z.ZodLiteral<"declined">;
78
134
  platform: z.ZodEnum<{
135
+ activecampaign: "activecampaign";
79
136
  calendly: "calendly";
137
+ "chatgpt-ads": "chatgpt-ads";
80
138
  "google-ads": "google-ads";
81
139
  "google-analytics": "google-analytics";
82
140
  "google-drive": "google-drive";
@@ -88,16 +146,48 @@ export declare const connectionInputResultSchema: z.ZodDiscriminatedUnion<[z.Zod
88
146
  meta: "meta";
89
147
  pipedrive: "pipedrive";
90
148
  savvycal: "savvycal";
149
+ shopify: "shopify";
91
150
  "x-ads": "x-ads";
92
151
  }>;
93
152
  reason: z.ZodOptional<z.ZodString>;
94
- }, z.core.$strip>], "status">;
153
+ }, z.core.$strip>, z.ZodObject<{
154
+ status: z.ZodLiteral<"connected">;
155
+ app: z.ZodString;
156
+ scope: z.ZodEnum<{
157
+ company: "company";
158
+ org: "org";
159
+ user: "user";
160
+ user_org: "user_org";
161
+ }>;
162
+ accountLabel: z.ZodOptional<z.ZodString>;
163
+ readOnly: z.ZodOptional<z.ZodBoolean>;
164
+ }, z.core.$strip>, z.ZodObject<{
165
+ status: z.ZodLiteral<"declined">;
166
+ app: z.ZodString;
167
+ reason: z.ZodOptional<z.ZodString>;
168
+ }, z.core.$strip>, z.ZodObject<{
169
+ status: z.ZodLiteral<"connected">;
170
+ server: z.ZodString;
171
+ scope: z.ZodEnum<{
172
+ company: "company";
173
+ org: "org";
174
+ user: "user";
175
+ user_org: "user_org";
176
+ }>;
177
+ problem: z.ZodOptional<z.ZodString>;
178
+ }, z.core.$strip>, z.ZodObject<{
179
+ status: z.ZodLiteral<"declined">;
180
+ server: z.ZodString;
181
+ reason: z.ZodOptional<z.ZodString>;
182
+ }, z.core.$strip>]>;
95
183
  export type ConnectionInputResult = z.infer<typeof connectionInputResultSchema>;
96
184
  export declare const connectionInputResolutionSchema: z.ZodObject<{
97
- results: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
185
+ results: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
98
186
  status: z.ZodLiteral<"connected">;
99
187
  platform: z.ZodEnum<{
188
+ activecampaign: "activecampaign";
100
189
  calendly: "calendly";
190
+ "chatgpt-ads": "chatgpt-ads";
101
191
  "google-ads": "google-ads";
102
192
  "google-analytics": "google-analytics";
103
193
  "google-drive": "google-drive";
@@ -109,15 +199,19 @@ export declare const connectionInputResolutionSchema: z.ZodObject<{
109
199
  meta: "meta";
110
200
  pipedrive: "pipedrive";
111
201
  savvycal: "savvycal";
202
+ shopify: "shopify";
112
203
  "x-ads": "x-ads";
113
204
  }>;
114
205
  accountLabel: z.ZodOptional<z.ZodString>;
115
206
  selected: z.ZodArray<z.ZodString>;
116
207
  cannotRead: z.ZodOptional<z.ZodArray<z.ZodString>>;
208
+ mediaSourceKey: z.ZodOptional<z.ZodString>;
117
209
  }, z.core.$strip>, z.ZodObject<{
118
210
  status: z.ZodLiteral<"declined">;
119
211
  platform: z.ZodEnum<{
212
+ activecampaign: "activecampaign";
120
213
  calendly: "calendly";
214
+ "chatgpt-ads": "chatgpt-ads";
121
215
  "google-ads": "google-ads";
122
216
  "google-analytics": "google-analytics";
123
217
  "google-drive": "google-drive";
@@ -129,12 +223,56 @@ export declare const connectionInputResolutionSchema: z.ZodObject<{
129
223
  meta: "meta";
130
224
  pipedrive: "pipedrive";
131
225
  savvycal: "savvycal";
226
+ shopify: "shopify";
132
227
  "x-ads": "x-ads";
133
228
  }>;
134
229
  reason: z.ZodOptional<z.ZodString>;
135
- }, z.core.$strip>], "status">>;
230
+ }, z.core.$strip>, z.ZodObject<{
231
+ status: z.ZodLiteral<"connected">;
232
+ app: z.ZodString;
233
+ scope: z.ZodEnum<{
234
+ company: "company";
235
+ org: "org";
236
+ user: "user";
237
+ user_org: "user_org";
238
+ }>;
239
+ accountLabel: z.ZodOptional<z.ZodString>;
240
+ readOnly: z.ZodOptional<z.ZodBoolean>;
241
+ }, z.core.$strip>, z.ZodObject<{
242
+ status: z.ZodLiteral<"declined">;
243
+ app: z.ZodString;
244
+ reason: z.ZodOptional<z.ZodString>;
245
+ }, z.core.$strip>, z.ZodObject<{
246
+ status: z.ZodLiteral<"connected">;
247
+ server: z.ZodString;
248
+ scope: z.ZodEnum<{
249
+ company: "company";
250
+ org: "org";
251
+ user: "user";
252
+ user_org: "user_org";
253
+ }>;
254
+ problem: z.ZodOptional<z.ZodString>;
255
+ }, z.core.$strip>, z.ZodObject<{
256
+ status: z.ZodLiteral<"declined">;
257
+ server: z.ZodString;
258
+ reason: z.ZodOptional<z.ZodString>;
259
+ }, z.core.$strip>]>>;
136
260
  }, z.core.$strip>;
137
261
  export type ConnectionInputResolution = z.infer<typeof connectionInputResolutionSchema>;
262
+ /**
263
+ * Whether the user connected something that brings MCP tools — an app or a
264
+ * server. Only then is the turn's server set reloaded: a platform is read with
265
+ * `baker` commands and adds no tool, and reloading for nothing would rewrite
266
+ * the tool list, and the prompt cache with it.
267
+ */
268
+ export declare function toolsConnected(resolution: ConnectionInputResolution): boolean;
269
+ /**
270
+ * What the user connected that the reloaded server set does not carry, by the
271
+ * name the agent knows it by. An app arrives inside its scope's managed server
272
+ * (`composio_<scope>`), which is absent when the company has managed apps
273
+ * switched off or the session for them could not be made.
274
+ */
275
+ export declare function connectedButNotLoaded(resolution: ConnectionInputResolution, loaded: readonly string[]): string[];
138
276
  /** Parse-at-boundary for the resolution posted to `POST /connection-input-decision`. */
139
277
  export declare function parseConnectionInputResolution(value: unknown): ConnectionInputResolution | null;
140
278
  export type ConnectionInputRequest = z.infer<typeof connectionRequestShape>;
@@ -142,13 +280,16 @@ export type ConnectionInputRequest = z.infer<typeof connectionRequestShape>;
142
280
  * `canUseTool` sees the RAW model input — MCP validation hasn't run yet — so the
143
281
  * requests are normalized here before anything downstream trusts them. Unknown
144
282
  * platforms (TikTok Ads, a hallucinated id) are dropped rather than shown as a
145
- * dead tab.
283
+ * dead tab. The dashboard applies the same rules (`connectionRequestsFromToolInput`)
284
+ * because it resolves tabs by index into this list.
146
285
  */
147
286
  export declare function normalizeConnectionInputToolInput(input: unknown): ConnectionInputRequest[];
148
287
  export declare function createConnectionInputTool(): import("@anthropic-ai/claude-agent-sdk").SdkMcpToolDefinition<{
149
- connections: z.ZodArray<z.ZodObject<{
288
+ connections: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
150
289
  platform: z.ZodEnum<{
290
+ activecampaign: "activecampaign";
151
291
  calendly: "calendly";
292
+ "chatgpt-ads": "chatgpt-ads";
152
293
  "google-ads": "google-ads";
153
294
  "google-analytics": "google-analytics";
154
295
  "google-drive": "google-drive";
@@ -160,10 +301,34 @@ export declare function createConnectionInputTool(): import("@anthropic-ai/claud
160
301
  meta: "meta";
161
302
  pipedrive: "pipedrive";
162
303
  savvycal: "savvycal";
304
+ shopify: "shopify";
163
305
  "x-ads": "x-ads";
164
306
  }>;
165
307
  reason: z.ZodString;
166
- }, z.core.$strip>>;
308
+ choose: z.ZodOptional<z.ZodLiteral<"media-folder">>;
309
+ pick: z.ZodOptional<z.ZodBoolean>;
310
+ }, z.core.$strip>, z.ZodObject<{
311
+ app: z.ZodString;
312
+ reason: z.ZodString;
313
+ }, z.core.$strip>, z.ZodObject<{
314
+ server: z.ZodObject<{
315
+ name: z.ZodString;
316
+ url: z.ZodString;
317
+ auth: z.ZodOptional<z.ZodEnum<{
318
+ key: "key";
319
+ none: "none";
320
+ "sign-in": "sign-in";
321
+ }>>;
322
+ keyHeader: z.ZodOptional<z.ZodString>;
323
+ scope: z.ZodOptional<z.ZodEnum<{
324
+ company: "company";
325
+ org: "org";
326
+ user: "user";
327
+ user_org: "user_org";
328
+ }>>;
329
+ }, z.core.$strip>;
330
+ reason: z.ZodString;
331
+ }, z.core.$strip>]>>;
167
332
  resolution: z.ZodOptional<z.ZodObject<{}, z.core.$catchall<z.ZodUnknown>>>;
168
333
  }>;
169
334
  export {};