@koda-sl/baker-bridge 0.109.0-dev.9779e8b49 → 0.109.0-dev.d6e55699d

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 +89 -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 +202 -34
  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 +165 -12
  152. package/dist/hono/connection-input.d.ts.map +1 -1
  153. package/dist/hono/connection-input.js +160 -18
  154. package/dist/hono/connection-input.js.map +1 -1
  155. package/dist/hono/connection-input.test.js +89 -9
  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 +63 -14
  194. package/dist/hono/flow-input.js.map +1 -1
  195. package/dist/hono/flow-input.test.js +67 -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 +124 -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 +5 -0
  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,12 @@ 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", "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
19
  calendly: "calendly";
20
+ "chatgpt-ads": "chatgpt-ads";
20
21
  "google-ads": "google-ads";
21
22
  "google-analytics": "google-analytics";
22
23
  "google-drive": "google-drive";
@@ -28,15 +29,39 @@ declare const connectionRequestShape: z.ZodObject<{
28
29
  meta: "meta";
29
30
  pipedrive: "pipedrive";
30
31
  savvycal: "savvycal";
32
+ shopify: "shopify";
31
33
  "x-ads": "x-ads";
32
34
  }>;
33
35
  reason: z.ZodString;
34
36
  choose: z.ZodOptional<z.ZodLiteral<"media-folder">>;
35
- }, z.core.$strip>;
37
+ pick: z.ZodOptional<z.ZodBoolean>;
38
+ }, z.core.$strip>, z.ZodObject<{
39
+ app: z.ZodString;
40
+ reason: z.ZodString;
41
+ }, z.core.$strip>, z.ZodObject<{
42
+ server: z.ZodObject<{
43
+ name: z.ZodString;
44
+ url: z.ZodString;
45
+ auth: z.ZodOptional<z.ZodEnum<{
46
+ key: "key";
47
+ none: "none";
48
+ "sign-in": "sign-in";
49
+ }>>;
50
+ keyHeader: z.ZodOptional<z.ZodString>;
51
+ scope: z.ZodOptional<z.ZodEnum<{
52
+ company: "company";
53
+ org: "org";
54
+ user: "user";
55
+ user_org: "user_org";
56
+ }>>;
57
+ }, z.core.$strip>;
58
+ reason: z.ZodString;
59
+ }, z.core.$strip>]>;
36
60
  export declare const connectionInputToolShape: {
37
- connections: z.ZodArray<z.ZodObject<{
61
+ connections: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
38
62
  platform: z.ZodEnum<{
39
63
  calendly: "calendly";
64
+ "chatgpt-ads": "chatgpt-ads";
40
65
  "google-ads": "google-ads";
41
66
  "google-analytics": "google-analytics";
42
67
  "google-drive": "google-drive";
@@ -48,17 +73,41 @@ export declare const connectionInputToolShape: {
48
73
  meta: "meta";
49
74
  pipedrive: "pipedrive";
50
75
  savvycal: "savvycal";
76
+ shopify: "shopify";
51
77
  "x-ads": "x-ads";
52
78
  }>;
53
79
  reason: z.ZodString;
54
80
  choose: z.ZodOptional<z.ZodLiteral<"media-folder">>;
55
- }, z.core.$strip>>;
81
+ pick: z.ZodOptional<z.ZodBoolean>;
82
+ }, z.core.$strip>, z.ZodObject<{
83
+ app: z.ZodString;
84
+ reason: z.ZodString;
85
+ }, z.core.$strip>, z.ZodObject<{
86
+ server: z.ZodObject<{
87
+ name: z.ZodString;
88
+ url: z.ZodString;
89
+ auth: z.ZodOptional<z.ZodEnum<{
90
+ key: "key";
91
+ none: "none";
92
+ "sign-in": "sign-in";
93
+ }>>;
94
+ keyHeader: z.ZodOptional<z.ZodString>;
95
+ scope: z.ZodOptional<z.ZodEnum<{
96
+ company: "company";
97
+ org: "org";
98
+ user: "user";
99
+ user_org: "user_org";
100
+ }>>;
101
+ }, z.core.$strip>;
102
+ reason: z.ZodString;
103
+ }, z.core.$strip>]>>;
56
104
  resolution: z.ZodOptional<z.ZodObject<{}, z.core.$catchall<z.ZodUnknown>>>;
57
105
  };
58
- export declare const connectionInputResultSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
106
+ export declare const connectionInputResultSchema: z.ZodUnion<readonly [z.ZodObject<{
59
107
  status: z.ZodLiteral<"connected">;
60
108
  platform: z.ZodEnum<{
61
109
  calendly: "calendly";
110
+ "chatgpt-ads": "chatgpt-ads";
62
111
  "google-ads": "google-ads";
63
112
  "google-analytics": "google-analytics";
64
113
  "google-drive": "google-drive";
@@ -70,6 +119,7 @@ export declare const connectionInputResultSchema: z.ZodDiscriminatedUnion<[z.Zod
70
119
  meta: "meta";
71
120
  pipedrive: "pipedrive";
72
121
  savvycal: "savvycal";
122
+ shopify: "shopify";
73
123
  "x-ads": "x-ads";
74
124
  }>;
75
125
  accountLabel: z.ZodOptional<z.ZodString>;
@@ -80,6 +130,7 @@ export declare const connectionInputResultSchema: z.ZodDiscriminatedUnion<[z.Zod
80
130
  status: z.ZodLiteral<"declined">;
81
131
  platform: z.ZodEnum<{
82
132
  calendly: "calendly";
133
+ "chatgpt-ads": "chatgpt-ads";
83
134
  "google-ads": "google-ads";
84
135
  "google-analytics": "google-analytics";
85
136
  "google-drive": "google-drive";
@@ -91,16 +142,47 @@ export declare const connectionInputResultSchema: z.ZodDiscriminatedUnion<[z.Zod
91
142
  meta: "meta";
92
143
  pipedrive: "pipedrive";
93
144
  savvycal: "savvycal";
145
+ shopify: "shopify";
94
146
  "x-ads": "x-ads";
95
147
  }>;
96
148
  reason: z.ZodOptional<z.ZodString>;
97
- }, z.core.$strip>], "status">;
149
+ }, z.core.$strip>, z.ZodObject<{
150
+ status: z.ZodLiteral<"connected">;
151
+ app: z.ZodString;
152
+ scope: z.ZodEnum<{
153
+ company: "company";
154
+ org: "org";
155
+ user: "user";
156
+ user_org: "user_org";
157
+ }>;
158
+ accountLabel: z.ZodOptional<z.ZodString>;
159
+ readOnly: z.ZodOptional<z.ZodBoolean>;
160
+ }, z.core.$strip>, z.ZodObject<{
161
+ status: z.ZodLiteral<"declined">;
162
+ app: z.ZodString;
163
+ reason: z.ZodOptional<z.ZodString>;
164
+ }, z.core.$strip>, z.ZodObject<{
165
+ status: z.ZodLiteral<"connected">;
166
+ server: z.ZodString;
167
+ scope: z.ZodEnum<{
168
+ company: "company";
169
+ org: "org";
170
+ user: "user";
171
+ user_org: "user_org";
172
+ }>;
173
+ problem: z.ZodOptional<z.ZodString>;
174
+ }, z.core.$strip>, z.ZodObject<{
175
+ status: z.ZodLiteral<"declined">;
176
+ server: z.ZodString;
177
+ reason: z.ZodOptional<z.ZodString>;
178
+ }, z.core.$strip>]>;
98
179
  export type ConnectionInputResult = z.infer<typeof connectionInputResultSchema>;
99
180
  export declare const connectionInputResolutionSchema: z.ZodObject<{
100
- results: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
181
+ results: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
101
182
  status: z.ZodLiteral<"connected">;
102
183
  platform: z.ZodEnum<{
103
184
  calendly: "calendly";
185
+ "chatgpt-ads": "chatgpt-ads";
104
186
  "google-ads": "google-ads";
105
187
  "google-analytics": "google-analytics";
106
188
  "google-drive": "google-drive";
@@ -112,6 +194,7 @@ export declare const connectionInputResolutionSchema: z.ZodObject<{
112
194
  meta: "meta";
113
195
  pipedrive: "pipedrive";
114
196
  savvycal: "savvycal";
197
+ shopify: "shopify";
115
198
  "x-ads": "x-ads";
116
199
  }>;
117
200
  accountLabel: z.ZodOptional<z.ZodString>;
@@ -122,6 +205,7 @@ export declare const connectionInputResolutionSchema: z.ZodObject<{
122
205
  status: z.ZodLiteral<"declined">;
123
206
  platform: z.ZodEnum<{
124
207
  calendly: "calendly";
208
+ "chatgpt-ads": "chatgpt-ads";
125
209
  "google-ads": "google-ads";
126
210
  "google-analytics": "google-analytics";
127
211
  "google-drive": "google-drive";
@@ -133,12 +217,56 @@ export declare const connectionInputResolutionSchema: z.ZodObject<{
133
217
  meta: "meta";
134
218
  pipedrive: "pipedrive";
135
219
  savvycal: "savvycal";
220
+ shopify: "shopify";
136
221
  "x-ads": "x-ads";
137
222
  }>;
138
223
  reason: z.ZodOptional<z.ZodString>;
139
- }, z.core.$strip>], "status">>;
224
+ }, z.core.$strip>, z.ZodObject<{
225
+ status: z.ZodLiteral<"connected">;
226
+ app: z.ZodString;
227
+ scope: z.ZodEnum<{
228
+ company: "company";
229
+ org: "org";
230
+ user: "user";
231
+ user_org: "user_org";
232
+ }>;
233
+ accountLabel: z.ZodOptional<z.ZodString>;
234
+ readOnly: z.ZodOptional<z.ZodBoolean>;
235
+ }, z.core.$strip>, z.ZodObject<{
236
+ status: z.ZodLiteral<"declined">;
237
+ app: z.ZodString;
238
+ reason: z.ZodOptional<z.ZodString>;
239
+ }, z.core.$strip>, z.ZodObject<{
240
+ status: z.ZodLiteral<"connected">;
241
+ server: z.ZodString;
242
+ scope: z.ZodEnum<{
243
+ company: "company";
244
+ org: "org";
245
+ user: "user";
246
+ user_org: "user_org";
247
+ }>;
248
+ problem: z.ZodOptional<z.ZodString>;
249
+ }, z.core.$strip>, z.ZodObject<{
250
+ status: z.ZodLiteral<"declined">;
251
+ server: z.ZodString;
252
+ reason: z.ZodOptional<z.ZodString>;
253
+ }, z.core.$strip>]>>;
140
254
  }, z.core.$strip>;
141
255
  export type ConnectionInputResolution = z.infer<typeof connectionInputResolutionSchema>;
256
+ /**
257
+ * Whether the user connected something that brings MCP tools — an app or a
258
+ * server. Only then is the turn's server set reloaded: a platform is read with
259
+ * `baker` commands and adds no tool, and reloading for nothing would rewrite
260
+ * the tool list, and the prompt cache with it.
261
+ */
262
+ export declare function toolsConnected(resolution: ConnectionInputResolution): boolean;
263
+ /**
264
+ * What the user connected that the reloaded server set does not carry, by the
265
+ * name the agent knows it by. An app arrives inside its scope's managed server
266
+ * (`composio_<scope>`), which is absent when the company has managed apps
267
+ * switched off or the session for them could not be made.
268
+ */
269
+ export declare function connectedButNotLoaded(resolution: ConnectionInputResolution, loaded: readonly string[]): string[];
142
270
  /** Parse-at-boundary for the resolution posted to `POST /connection-input-decision`. */
143
271
  export declare function parseConnectionInputResolution(value: unknown): ConnectionInputResolution | null;
144
272
  export type ConnectionInputRequest = z.infer<typeof connectionRequestShape>;
@@ -146,13 +274,15 @@ export type ConnectionInputRequest = z.infer<typeof connectionRequestShape>;
146
274
  * `canUseTool` sees the RAW model input — MCP validation hasn't run yet — so the
147
275
  * requests are normalized here before anything downstream trusts them. Unknown
148
276
  * platforms (TikTok Ads, a hallucinated id) are dropped rather than shown as a
149
- * dead tab.
277
+ * dead tab. The dashboard applies the same rules (`connectionRequestsFromToolInput`)
278
+ * because it resolves tabs by index into this list.
150
279
  */
151
280
  export declare function normalizeConnectionInputToolInput(input: unknown): ConnectionInputRequest[];
152
281
  export declare function createConnectionInputTool(): import("@anthropic-ai/claude-agent-sdk").SdkMcpToolDefinition<{
153
- connections: z.ZodArray<z.ZodObject<{
282
+ connections: z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
154
283
  platform: z.ZodEnum<{
155
284
  calendly: "calendly";
285
+ "chatgpt-ads": "chatgpt-ads";
156
286
  "google-ads": "google-ads";
157
287
  "google-analytics": "google-analytics";
158
288
  "google-drive": "google-drive";
@@ -164,11 +294,34 @@ export declare function createConnectionInputTool(): import("@anthropic-ai/claud
164
294
  meta: "meta";
165
295
  pipedrive: "pipedrive";
166
296
  savvycal: "savvycal";
297
+ shopify: "shopify";
167
298
  "x-ads": "x-ads";
168
299
  }>;
169
300
  reason: z.ZodString;
170
301
  choose: z.ZodOptional<z.ZodLiteral<"media-folder">>;
171
- }, z.core.$strip>>;
302
+ pick: z.ZodOptional<z.ZodBoolean>;
303
+ }, z.core.$strip>, z.ZodObject<{
304
+ app: z.ZodString;
305
+ reason: z.ZodString;
306
+ }, z.core.$strip>, z.ZodObject<{
307
+ server: z.ZodObject<{
308
+ name: z.ZodString;
309
+ url: z.ZodString;
310
+ auth: z.ZodOptional<z.ZodEnum<{
311
+ key: "key";
312
+ none: "none";
313
+ "sign-in": "sign-in";
314
+ }>>;
315
+ keyHeader: z.ZodOptional<z.ZodString>;
316
+ scope: z.ZodOptional<z.ZodEnum<{
317
+ company: "company";
318
+ org: "org";
319
+ user: "user";
320
+ user_org: "user_org";
321
+ }>>;
322
+ }, z.core.$strip>;
323
+ reason: z.ZodString;
324
+ }, z.core.$strip>]>>;
172
325
  resolution: z.ZodOptional<z.ZodObject<{}, z.core.$catchall<z.ZodUnknown>>>;
173
326
  }>;
174
327
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"connection-input.d.ts","sourceRoot":"","sources":["../../src/hono/connection-input.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,0BAA0B,sCAAsC,CAAC;AAE9E;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oBAAoB,YAC/B,YAAY,EACZ,UAAU,EACV,MAAM,EACN,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,OAAO,EACP,SAAS,EACT,cAAc,EACd,WAAW,EACX,WAAW,EACX,UAAU,EACV,UAAU,CACF,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvE,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;iBAW1B,CAAC;AAEH,eAAO,MAAM,wBAAwB;IACnC,WAAW;;;;;;;;;;;;;;;;;;;IAKX,UAAU;CAKX,CAAC;AAIF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BAkBtC,CAAC;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA8D,CAAC;AAC3G,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAExF,wFAAwF;AACxF,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,yBAAyB,GAAG,IAAI,CAG/F;AAED,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAE5E;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,EAAE,CAmB1F;AAUD,wBAAgB,yBAAyB;;;;;;;;;;;;;;;;;;;;;GAUxC"}
1
+ {"version":3,"file":"connection-input.d.ts","sourceRoot":"","sources":["../../src/hono/connection-input.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,0BAA0B,sCAAsC,CAAC;AAE9E;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oBAAoB,YAC/B,YAAY,EACZ,UAAU,EACV,MAAM,EACN,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,OAAO,EACP,SAAS,EACT,cAAc,EACd,WAAW,EACX,WAAW,EACX,UAAU,EACV,UAAU,EACV,aAAa,EACb,SAAS,CACD,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAmFvE,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAAuE,CAAC;AAEpG,eAAO,MAAM,wBAAwB;IACnC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKX,UAAU;CAKX,CAAC;AAIF,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAkCtC,CAAC;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA8D,CAAC;AAC3G,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,+BAA+B,CAAC,CAAC;AAExF;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,yBAAyB,GAAG,OAAO,CAE7E;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,yBAAyB,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAOhH;AAED,wFAAwF;AACxF,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,yBAAyB,GAAG,IAAI,CAG/F;AAED,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AA6B5E;;;;;;GAMG;AACH,wBAAgB,iCAAiC,CAAC,KAAK,EAAE,OAAO,GAAG,sBAAsB,EAAE,CAoB1F;AAeD,wBAAgB,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAYxC"}